背景:最近需要用到noxim做关于noc的仿真实验,所以学习一下SystemC,这里简短的整理一下学习笔记。看的是B站的一个视频:【数字芯片验证&软硬件协同仿真】SystemC_哔哩哔哩_bilibili
正题:
SystemC根本不是一种语言,实际上是C++的库。它是以常规c语言编写的用于模拟硬件行为的类。
#include
SC_MODULE(and2){//声明了一个名叫and2的模块
sc_in
sc_in
sc_out
sc_in
void func(){
f.write(a.read()&b.read());//向输出端口f写入值,这个值是在输入端口a和b上读取的
}
SC_CTOR(and2){//实例化该and2模块以进行仿真,比如指定设计是在上升沿还是下降沿进行更改的操作,本例仅简单将a和b输入端口读入,然后将结果写入输出端口f
SC_METHOD(func);将函数转换为SC_METHOD,然后转到systemc的构造函数并添加以行为函数名称作为参数this的行SC方法
sensitive<
sensitive< sensitive< } } SystemC有三种类型的线程:SC_METHOD(),SC_THREAD(),SC_CTHREAD(). SC_METHOD():每次被触发时,完全执行一次;连续运行,适用于组合逻辑或小型顺序逻辑; SC_THREAD():一次执行,在完成后暂停,可以像while循环那样在其中放入无限循环; SC_CTHREAD():可能需要一个或多个时钟周期来执行。 sc_uint 例子:sc_unit<3> x; 声明一个位宽为3的无符号整数x 在此表中,可以看到用x描述的可能值; 如果是sc_int<3> x;int类的最高有效位是符号位,所以 所以sc_in< sc_uint<1> > a,b
还没有评论,来说两句吧...