| 查看: 376 | 回复: 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 ] |
» 猜你喜欢
天津大学招2026.09的博士生,欢迎大家推荐交流(博导是本人)
已经有9人回复
有院领导为了换新车,用横向课题经费买了俩车
已经有10人回复
同年申请2项不同项目,第1个项目里不写第2个项目的信息,可以吗
已经有5人回复
依托企业入选了国家启明计划青年人才。有无高校可以引进的。
已经有8人回复
遇见不省心的家人很难过
已经有24人回复
AI 太可怕了,写基金时,提出想法,直接生成的文字比自己想得深远,还有科学性
已经有6人回复
酰胺脱乙酰基
已经有13人回复
有时候真觉得大城市人没有县城人甚至个体户幸福
已经有10人回复













回复此楼