multi-language verification (一)DVT-Eclipse配置SystemC开发环境

前言

使用一款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版本,安装步骤如下:

  1. 下载systemc_2.3.3 : https://www.accellera.org/downloads/standards/systemc
  2. 解压:tar -zxvf systemc-2.3.3.tar.gz
  3. 依次运行以下命令:
> 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"

  1. DVT->file->new->project,选择C/C++ Project,Next
    在这里插入图片描述
    Makefile project -> Empty Project在这里插入图片描述

  2. 新建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;
}
  1. 编译和运行
    点击编译后生成exe文件,再点击运行
    在这里插入图片描述
    打印结果:
    在这里插入图片描述
    至此,完成了DVT配置SystemC的开发环境;Eclipse以及CDT的详细操作以及单步调试功能,可查阅userguide。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

劲仔小鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值