SystemC 学习之 Linux 安装 SystemC(一)

1、什么是 SystemC

完成一款集成电路需要设计、制造、封装和测试四个步骤。随着集成电路制造技术按照摩尔定律发展,电子系统变得越来越复杂,人们已经可以把复杂的电子系统集成到一个芯片上,这就是所谓的片上系统。

对于一个复杂的片上系统,在进行寄存器传输级设计前需要进行深入的系统级仿真,以确认设计的体系架构是否恰当、总线是否能够满足吞吐量和实时性要求以及存储器是否被浪费。所进行的这些仿真要求在芯片的仿真模型上运行大量的软件,以覆盖所需的功能。

在寄存器传输级,最广泛使用的两种语言是 VHDL 和 Verilog HDL。在设计细化阶段,原始的 C 和 C++ 描述必须手工转换成为 VHDL 或者 Verilog HDL。这种设计方法的缺点是使用不同的语言进行系统描述的不一致性以及手工编写 RTL 代码效率低下。随着系统越来越复杂和相较之下面市时间的越来越紧迫, RTL 级设计越来越不能满足设计的需求,人们迫切需要真正的系统级设计语言,即简化系统级仿真,又能够使用工具自动实现系统到 RTL 级的转换(即电子系统级综合),而不再为 RTL 所烦恼。

正是基于这些想法和需求,人们扩展了 C++ 从而发展了一种新的 IEEE 标准语言,并将这种新的语言称作 SystemC,从本质上讲,SystemC 是 C++ 的扩展库。

2、SystemC 的作用

SystemC 目前主要用于在抽象层次上对芯片进行描述和分析以及建立虚拟原型,当前 SystemC 主要用于系统建模、体系结构建模、开发事务处理级模型和验证

SystemC 可以描述纯功能模型和系统体系结构,也可以描述软硬件的具体实现,但核心是进行电子系统级设计、建模和验证

3、下载编译 SystemC(以 ubuntu 22.04 为例)

3.1 下载解压 SystemC

wget https://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.3.zip
unzip systemc-2.3.3.zip

3.2 编译 SystemC

cd systemc-2.3.3
mkdir build
cd build
cmake .. -DCMAKE_CXX_STANDARD=11 -DDISABLE_COPYRIGHT_MESSAGE=True
make -j
sudo make install

其中 -DCMAKE_CXX_STANDARD=11 表示使用 c++11 进行编译,如果不使用 c++11 编译,但是后面使用了 systemc 的例子使用了 c++11,那么编译就可能会出现问题,比如会出现下面的错误

-DDISABLE_COPYRIGHT_MESSAGE=True 表示不打印 systemc copyright 等信息

3.3 配置环境变量

当我们编译成功之后,头文件和库的路径分别在以下位置

头文件:/opt/systemc/include
动态库文件:/opt/systemc/lib 或者 /opt/systemc/lib64

至于是 /opt/systemc/lib 还是 /opt/systemc/lib64 可以 cd 到对应的目录看一下,大部分都是 /opt/systemc/lib

然后将头文件和库的路径加入到环境变量里,我这里使用的是 zsh,于是就将环境变量加入到 ~/.zshrc 里面,如果是 bash,那么就将环境变量加到 bashrc 中

export LD_LIBRARY_PATH=/opt/systemc/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=C_INCLUDE_PATH:/opt/systemc/include
export CPLUS_INCLUDE_PATH=CPLUS_INCLUDE_PATH:/opt/systemc/include
export LIBRARY_PATH=/opt/systemc/lib:$LIBRARY_PATH

添加完之后保存,然后执行 source ~/.zshrc 让环境变量立即生效

4、写一个 SystemC 程序,验证安装是否成功

// main.cpp
#include <systemc.h>

SC_MODULE (hello_world) {
    SC_CTOR (hello_world) {
        SC_THREAD(say_hello);
    }

    void say_hello() {
        cout << "Hello World SystemC" << endl;
    }

};

int sc_main(int argc, char* argv[]) {
    hello_world hello("HELLO");
    sc_start();

    return (0);
}

编译运行

g++ main.cpp -std=c++11 -lsystemc
./a.out

如果能正常编译运行,说明 SystemC 的安装已经成功了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值