前言
使用一款IDE(集成开发环境)替代传统的gvim作为编辑工具,大大提高开发效率;本系列选择DVT(Design and Verification Tool)作为C/C++的开发工具,🔗DVT是AMIQ开发的一款专门服务于IC Design Verification的IDE,基于Eclipse平台开发,支持SystemVerilog,UVM的相关特性,提供代码调用跳转,on-the-fly的语法检查,快速的代码检索,单步调试等丰富功能;
因为DVT基于Eclipse平台开发,除原生支持SystemVerilog外,安装一些插件,也可以支持版本管理工具(P4,Git) ,Perl,Python,C++,YAML等其他语言;Eclipse是一个开源的,基于Jave的可扩展开发平台;像Synopsys的🔗Euclide,ARM的🔗Development Studio,专业的SystemC开发工具🔗COSIDE,RSIC-V供应商ANDES的虚拟原型平台🔗AndeSysC,MCU供应商NXP的SDK开发工具🔗MCUXpresso都是基于Eclipse开发;
安装GNU_GCC
DVT不包含编译工具链,使用linux环境的GNU_GCC工具链;GNU_GCC可以通过module load加载IT安装的特定版本,或者安装VCS提供的VG_GNU_PACKAGE;VCS建议使用VG_GNU_PACKAGE中的GCC开发SystemC,以获得更好的兼容性;
安装步骤:
- 下载🔗vcs_gnu_2023.03,密码:csdn
安装包提供了gcc4,6,7,9版本的gcc,选择gcc9,以支持最新的SystemC和Matlab2022的runtime lib - 创建安装位置:
mkdir -p <path_to_vg_gnu_directory>/gnu ; cd <path_to_vg_gnu_directory>/gnu
- 解压安装包:
tar -zxvf linux_gcc920_default.tat.gz
- 设置环境变量:
setenv VG_GNU_PACKAGE <path_to_vg_gnu_directory>/gnu/linux
- 加载gcc9:
source $VG_GNU_PACKAGE/source_me_gcc9.csh
- 安装完成后,
gcc -v
显示9.2.0版本
至此GCC安装完成,echo $LD_LIBRARY_PATH
也会附上gcc9.2的路径;
可直接在~/.tcshrc
中加上,每次新开terminal自动加载gcc9.2:
如果直接使用$VCS_HOME/etc/systemc/acccellera_install/
下安装好的systemc lib,也可以把gcc其他版本解压安装;
strings -a <binary> | grep "GCC:"
可以查看编译时的GCC版本,最好都使用同一个GCC版本;
gcc9.2默认采用-std=c++14
的标准,向下兼容C11,所以不建议编译时额外在指定-std
版本,否则容易出现undefined referenc to
这类错误;
安装CDT插件
C/C++ Development Toolkit (CDT) 是Eclipse上专门开发C/C++语言的插件;
🔗dvt_kit_installer.sh 命令给DVT安装各类插件;安装CDT: $DVT_HOME/bin/dvt_kit_installer.sh install CPP
安装完成后显示如下:
DVT_23.1.8(Eclipse_4.22) -> Help -> About Eclipse Platform -> Installation Details :
至此,DVT上CDT插件安装完成。
如果没有DVT工具,使用开源的🔗Eclipse或者🔗VSCode也可以,只是DVT额外支持SV的开发;
编译SystemC lib
虽然各EDA仿真工具自带SystemC lib,但建议使用官方源码自行编译为lib,后期部署更加灵活;
本系列选择systemc 2.3.3版本,安装步骤如下:
- 下载systemc_2.3.3 : https://www.accellera.org/downloads/standards/systemc
- 解压:
tar -zxvf systemc-2.3.3.tar.gz
- 依次运行以下命令:
> mkdir objdir
> cd objdir
> ../configure
> gmake
> gmake check
> gmake install
> rm -rf objdir
编译后的lib放在systemc-2.3.3/lib-linux64
下
Hello World
使用systemc打印“Hello World"
-
DVT->file->new->project,选择C/C++ Project,Next
Makefile project -> Empty Project -
新建cpp和Makefile文件
Makefile:
CPP file:
// Copy from https://github.com/learnwithexamples/learnsystemc/blob/master/basic/00_hello_world/hello_world.cpp
// Learn with Examples, 2020, MIT license
#include <systemc> // include the systemC header file
using namespace sc_core; // use namespace
void hello1() { // a normal c++ function
std::cout << "Hello world using approach 1" << std::endl;
}
struct HelloWorld : sc_module { // define a systemC module
SC_CTOR(HelloWorld) {// constructor function, to be explained later
SC_METHOD(hello2); // register a member function to the kernel
}
void hello2(void) { // a function for systemC simulation kernel, void inside () can be omitted
std::cout << "Hello world using approach 2" << std::endl;
}
};
int sc_main(int, char*[]) { // entry point
hello1(); // approach #1: manually invoke a normal function
HelloWorld helloworld("helloworld"); // approach #2, instantiate a systemC module
sc_start(); // let systemC simulation kernel to invoke helloworld.hello2();
return 0;
}
- 编译和运行
点击编译后生成exe文件,再点击运行
打印结果:
至此,完成了DVT配置SystemC的开发环境;Eclipse以及CDT的详细操作以及单步调试功能,可查阅userguide。