vcs2018+verdi实现独立仿真带有Vivado IP核的工程

前言

在对带有Vivado IP核的工程进行仿真时,通常有联合仿真和独立仿真两种方法。前者通过在Vivado软件内部与其他仿真器联合实现仿真,但这存在很多弊端,例如每次必须同时启动两个软件,不够方便,效率也低;每次修改工程中的文件,都要重新编译整个工程;从别人那里拷贝来工程还要考虑两个软件的版本问题等等…因此独立仿真在实际工程仿真中有重要意义,本文旨在介绍如何用vcs2018+verdi实现独立仿真带有Vivado IP核的工程。

工具准备

使用工具包括vcs-mx2018、dve、verdi和Vivado 2019.2,实现环境是Ubuntu 18.04LTS。前三个软件的安装可以参考下面这篇文章,写的非常详细和全面,照着上面一步步来即可。Vivado建议使用2019.2版本,笔者曾用2018和2017版本的Vivado尝试,均会报错与vcs-2018版本不符合。关于vcs和Vivado的版本对应问题,可自行在网上搜索,必须选择对应的版本

VCS2018在Ubuntu20 18安装步骤

需要注意的是,必须用vcs-mx2018代替上述文章中安装的vcs2018,原因在于普通vcs只能编译verilog,但在后面对Vivado IP核库编译时还涉及到VHDL语言,因此必须采用vcs混合编译版即vcs-mx,否则在后续操作时会报错。安装包分享如下:

vcs-mx百度网盘
提取码:22r3

如下图,将VCS2018在Ubuntu20 18安装步骤中的安装包解压后,用vcs-mx百度网盘解压后的文件夹替代其中的vcs_vO-2018.09-SP2

并在后续安装过程中选择安装vcs_mx

请添加图片描述

vcs编译Vivado库文件

在安装完一系列软件后,首先要编译Vivado库文件,如下图所示,在Vivado的安装路径新建一个"vcs_lib“文件夹用于放编译好的一系列库文件:

请添加图片描述

接着,在Vivado的安装路径下(我这里是/tools/Xilinx/vivado/2019.2)用如下命令行的方式启动vivado,如果直接在图形化界面双击打开,编译时可能会报错。

source settings64.sh 
vivado

请添加图片描述
打开Vivado 2019.2后,点击Tools–>Compile Simulation Libraries,按下图所示配置:

请添加图片描述
其中:
Compiled library location :选择刚刚创建的vcs_lib路径,用于存放编译好的库文件
Simulator executable path:选择vcs-mx安装路径下的/bin,笔者此处为/usr/software/vcs2018/vcs-mx/O-2018.09-SP2/bin
点击Compile开始编译,经过等待,出现以下信息,error为0即说明编译成功:

请添加图片描述
接着打开之前创建的vcs_lib目录就可以看到编译好的所有库文件请添加图片描述

在这些生成的文件中,还包括一个非常重要的文件synopsys_sim.setup

在这里插入图片描述
这个文件非常重要,打开可以看到里面指明了Xilinx各个器件库的位置和绝对路径。vcs仿真时会调用这个文件来链接所有的器件库,可以说是我们实现独立仿真的”桥梁”。

请添加图片描述

使用Makefile实现仿真

以一个工程为例来实现独立仿真,可将工程文件分为两个目录,分别是rtl/和sim/,其中rtl用来存放工程代码和testbench相关文件,此处不再赘述;sim/下主要要有三个文件,分别是makefile文件,file.f(或者其他格式,作用是存放要编译的代码文件名和路径),synopsys_sim.setup文件,用于链接到vcs_lib目录下的synopsys_sim.setup文件。

file.f

file.f文件的作用是用来存放要编译的代码文件(包括RTL文件和tb文件),使用file.f文件的好处在于如果工程需要大量的增加或减少编译的文件时,可以直接在该文件里修改,而不是每次都要重新编写makefile文件。

请添加图片描述
注意:绝对路径要修改为自己的代码文件路径

synopsys_sim.setup

自定义的setup文件里需要指明vcs_lib下setup文件的绝对路径,且要放在与makefile脚本同目录的路径下。vcs参考手册对synopsys_sim.setup文件搜索路径给出详细解释,可以看到vcs编译工具在运行时会依照先后顺序从以下3个路径查找synopsys_sim.setup文件。
在这里插入图片描述

在这里插入图片描述
所以需要将synopsys_sim.setup文件放置在与makefile相同的目录下,vcs工具会自动搜索并识别IP库的位置。

makefile

关于makefile的具体语法在这里不多介绍,可在网上自行搜索学习,大体可分为三部分:compile、 elaborate、simulate

compile

compile是将硬件描述语言编译成库的过程,也正是这一过程中verilog文件可能会涉及到Xilinx的IP或者硬核,这时候就需要通过synopsys_sim.setup这个文件来指定IP库的位置。

在这里插入图片描述
执行如下指令即可实现compile过程:

make compile

在这里插入图片描述
可见生成了work文件夹。

elaborate

这一步是将compile生成的库文件,以及可能用到的Xilinx IP的库文件,生成仿真的可执行文件(此处为simv文件)。具体的脚本如下,主要需要指定设计的bench顶层(此处为TB)和全局复位的glbl模块

在这里插入图片描述
同样执行如下指令:

make elaborate

可见生成了对应的simv可执行文件:

在这里插入图片描述
此时生成的simv文件即仿真的可执行文件,想要生成波形文件fsdb有两种方法,第一种是使用dve软件,通过以下指令:

./simv -gui

打开dve可视化界面,点击start键即可生成波形文件:

在这里插入图片描述
在这里插入图片描述
另一种方法就是在makefile中编写好simulate部分,直接生成fsdb文件,见下一部分

simulate+verdi

这一步就是执行上面生成的simv.o可执行文件,进行仿真。make simulate生成适用于verdi的fsdb文件:
在这里插入图片描述

在这里插入图片描述

接着再输入:make verdi 即可用verdi打开fsdb文件查看波形啦:

在这里插入图片描述

### 如何在Vivado中使用VCS进行编译和仿真 #### 使用VCS直接仿真Vivado工程前言 为了成功地利用VCS工具来模拟由Xilinx Vivado创建的设计项目,准备阶段至关重要。这涉及到一系列配置操作,包括但不限于编译所需的VCS仿真库以及设定恰当的环境变量以确保兼容性和性能优化[^1]。 #### 编译VCS仿真库 当着手于构建用于仿真的软件模型之前,需先获取并安装Silicon Graphics International (SGI) 的Verification Compiler System (VCS),之后按照官方文档指示完成相应版本仿真器的支持文件集合——即所谓的“仿真库”的本地化部署工作。对于特定硬件描述语言(HDL)源码而言,则要额外关注其语法特性是否被所选VCS版本完全接纳和支持。 #### 设置Simulation参数 针对每一个待测设计实体,在`<project_root>/sim/`目录下建立独立的工作空间,并编写相应的顶层测试平台(TB, Test Bench)模块;随后编辑或修改既有的`.tcl`脚本文件,定义好目标架构、综合选项以及其他必要的预处理器指令等细节信息以便后续调用自动化流程处理程序时能够顺利解析这些设置项。 #### Run Simulation配置 启动实际的仿真过程前,应仔细校验所有输入条件的有效性及其相互间的一致性关系。通过命令行界面(CLI)或者图形用户界面(GUI)均可实现这一点。值得注意的是,如果计划采用批处理模式运行大批量实验案例的话,建议预先准备好一个包含全部必要参数在内的控制台可执行语句列表(通常保存在一个名为`run_sim.sh`之类的Shell脚本里),从而简化重复劳动强度的同时也提高了工作效率。 #### Makefile与执行脚本 考虑到跨平台移植性的需求,可以考虑引入GNU `make`作为辅助管理工具之一。为此目的而专门定制化的`Makefile`应当清晰地标明各个依赖对象之间的关联结构图谱,同时提供简洁易懂的操作指南供开发者快速上手实践。至于具体的执行逻辑部分则交由单独设立好的shell/bash/python等形式各异却殊途同归的小型应用程序负责落实到位。 #### 关键注意事项 鉴于某些情况下可能遇到的技术难题,比如混合信号(Mixed-Signal)/嵌入式系统(Embedded Systems)应用领域内常见的多语言协同开发场景下的互操作性挑战等问题,务必优先选用增强版VCS-MX而非标准发行包中的基础组件来进行集成调试作业,因为后者并不具备对诸如VHDL这类高级抽象层次建模语言所提供IP资源的良好支持能力[^2]。 ```bash #!/bin/bash # run_sim.sh example script to launch VCS simulation with Vivado project. source /path/to/vcs_setup.csh # Load VCS environment variables. vlogan +v2k -work work ${RTL_SOURCE_FILES} # Compile Verilog sources using vlogan compiler from Synopsys. vhdlan -full64 -f filelist.f # Compile VHDL files listed in 'filelist.f'. vcs -debug_all -R top_tb # Generate and execute the simulator executable for testbench named "top_tb". ```
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值