| 查看: 380 | 回复: 0 | |||
| 当前主题已经存档。 | |||
sdlj8051金虫 (著名写手)
|
[交流]
systemc系统级描述的例子
|
||
|
systemc系统级描述的例子 // signal 级信号的接口,只定义接口信号 #i nclude class adder_sig_if : public sc_module { public : sc_inout sc_inout }; // 任务级的接口 class adder_task_if : public sc_interface { public : virtual int task_do_sum(int a,int b) = 0; // 纯虚函数 }; // Transactor,它同时继承自信号级和任务级的接口 #i nclude class adder_transactor: public adder_sig_if,public adder_task_if { public: virtual int task_do_sum(int a, int b) { sig_a = a; sig_b = b; sig_ctrl = false; wait(10,SC_NS); sig_ctrl = true; wait(10,SC_NS); cout << "a = " << sig_a << "; b = " << sig_b ; //cout << "; sig_ctrl = " << sig_ctrl; cout << "; c = a + b = " << sig_c << endl; return 0; } SC_CTOR(adder_transactor) { } }; // signal级的设计 #i nclude class adder_design : public adder_sig_if { public : void get_sum() { sig_c = sig_a + sig_b; } SC_CTOR(adder_design) { SC_METHOD(get_sum); sensitive_pos << sig_ctrl; } }; // Transaction级的TestBench #i nclude class adder_test : public sc_module { public: sc_port void run_test() { while(true) { /* TestBench不涉及signal级设计的细节,而直接通过Transactor进行验证 */ transactor->task_do_sum(1,2); transactor->task_do_sum(3,4); transactor->task_do_sum(5,6); } } SC_CTOR(adder_test) { SC_THREAD(run_test); } }; #i nclude "adder_interface.h" #i nclude "adder_transactor.h" #i nclude "adder_design.h" #i nclude "adder_test.h" int sc_main(int argc,char * argv[]) { sc_signal sc_signal adder_design design("design"; design(a,b,c,ctrl); adder_transactor transactor("transactor"; transactor(a,b,c,ctrl); adder_test test("test"; test.transactor(transactor); sc_start(1000); return 0; } [ Last edited by sdlj8051 on 2006-11-1 at 10:26 ] |
» 猜你喜欢
欢迎采矿、地质、岩土、计算机、人工智能等专业的同学报考
已经有5人回复
279求调剂
已经有4人回复
284求调剂
已经有8人回复
材料复试调剂
已经有4人回复
本子写完了,给DS兄弟看了,得了92分
已经有7人回复
求调剂
已经有6人回复
材料学硕318求调剂
已经有13人回复
一志愿郑大材料学硕298分,求调剂
已经有5人回复
材料化工调剂
已经有13人回复
材料学硕318求调剂
已经有5人回复













回复此楼