| 查看: 372 | 回复: 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人回复
基金委咋了?2026年的指南还没有出来?
已经有7人回复
国自然申请面上模板最新2026版出了吗?
已经有17人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复
Materials Today Chemistry审稿周期
已经有5人回复
溴的反应液脱色
已经有7人回复
推荐一本书
已经有12人回复
常年博士招收(双一流,工科)
已经有4人回复











回复此楼