| 查看: 382 | 回复: 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 ] |
» 猜你喜欢
资源与环境 调剂申请(333分)
已经有7人回复
306求0703调剂一志愿华中师范
已经有11人回复
【考研调剂】化学专业 281分,一志愿四川大学,诚心求调剂
已经有14人回复
0703化学调剂,求导师收
已经有6人回复
求调剂
已经有5人回复
070300化学求调剂
已经有9人回复
300分,材料,求调剂,英一数二
已经有3人回复
材料学硕,求调剂
已经有7人回复
289求调剂
已经有5人回复
求调剂
已经有7人回复













回复此楼