SysytemC知识点整理

SysytemC知识点整理

码农世界 2024-06-13 后端 81 次浏览 0个评论

背景:最近需要用到noxim做关于noc的仿真实验,所以学习一下SystemC,这里简短的整理一下学习笔记。看的是B站的一个视频:【数字芯片验证&软硬件协同仿真】SystemC_哔哩哔哩_bilibili

正题:

SystemC根本不是一种语言,实际上是C++的库。它是以常规c语言编写的用于模拟硬件行为的类。

#include//头文件,用于引用system库

SC_MODULE(and2){//声明了一个名叫and2的模块

sc_in

a;

sc_in

b;//这里给这这个模块,定义了两个输入端口a和b

sc_out

f;//定义一个输出端口f

sc_in clk;//定义一个时钟信号,时钟总是一个信号位,所以用bool类型

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:   N是位宽

例子:sc_unit<3> x; 声明一个位宽为3的无符号整数x

SysytemC知识点整理

在此表中,可以看到用x描述的可能值;

如果是sc_int<3> x;int类的最高有效位是符号位,所以

SysytemC知识点整理

所以sc_in< sc_uint<1> > a,b

转载请注明来自码农世界,本文标题:《SysytemC知识点整理》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,81人围观)参与讨论

还没有评论,来说两句吧...

Top