[VIP专享]systemc 心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. module是一个类,从sc_module扩展而来,包含其他modules以及
processes,channels and ports。
2. simulation process是由systemc kernel调度执行,它是sc_module的成员函数,并被注册登记到simulation kernel中。由此simulation kernel是这些simulation process唯一
的caller,那么这些simulation process没必要带参数和返回值了。sc_module中也可定义一些process,但这些process不被simulation kernel调用,仅仅是一些被simulation process调用的函数。
3. simulation process的registeration发生在elaboration的时候,即module的constructor执行的时候(使用SC_METHOD,SC_THREAD)。
4. SC_METHOD 是sc_module的成员函数,它没有任何参数和返回值,被simulation kernel不停的反复调用,一旦执行无延迟并执行到底。而SC_THREAD只执行一次带延迟,会挂起自己并等待。
5. static sensitivity 和dynamic sensitivity。对于动态敏感,SC_METHOD用
next_trigger(arg), SC_THREAD用wait(arg)来实现。
6. systemC的datatype由类模板以及运算符重载来实现。
supported data type = Native C++ data type + STL data type + SystemC datatype( logic, integers and fixed-point)
systemc 还提供了systemc data type 和C++ data type 之间的转化函数。所有的systemc data type都属于sc_dt namespace。
1. logic :sc_bv
注意sc_bit 被C++里面的bool取代了。
2. integer:sc_int
sc_biguint
systemC的integer比传统的C++的integer类型提供了bit操作和concatination以及可配置位宽。
3. fixed point:sc_fixed
1.DataStream d1, d2;
2.SC_FORK
3. sc_spawn( sc_bind(&dut::AXI_xmt,this,sc_ref(d1)), "p1")
4.,sc_spawn(sc_bind(&dut::PCIX_rcv,this,sc_ref(d1)),"p2")
5.,sc_spawn(sc_bind(&dut::USB2,this,sc_ref(d1)), "p3")
6.,sc_spawn(sc_bind(&dut::HT1_xtm,this,sc_ref(d2)), "p4")
7.,sc_spawn(sc_bind(&dut::HT2_rcv,this,sc_ref(d2)), "p5")
8.SC_JOIN
为了帮助有效地进行communication,引入了channel的概念。sc_prim_channel扩展出了三个primitive channel: sc_mutex, sc_semaphore, sc_fifo
sc_fifo_in_if
6)对于sc_signal
7)request update 讲解
当一个process调用write method时,write method先将值写入New value存储区域,然后调用sc_primitive_channel::request_update() method 来通知simulation kernel。当update phase 到来时,kernel 自动调用曾在evaluation phase 时请求更新(request update)的channel 中的 update()method。这个update() method不光拷贝new value 到current value,而且会解决竞争,以及notify一些事件从而唤醒某些进程。
1. Design Hierarchy
2. How to creat hierarchy
3. process间的通讯
1. 和同层process通讯是通过event以及interface. 如下
process<-->interface<-->channel<-->interface<-->process。
2. 通过port和module外部通讯
3.和同层子module通讯是通过interface。如下 process<-->interface<--->channel<--->submodule port
或者 process<-->interface<---> sc_export
Standard Interface
1. FIFO interface
sc_fifo