vcs\verdi三步编译VIVADO库

vcs\verdi 三步联合编译 vivado库

使用vcs仿真带vivado的IP的设计的时候,经常需要联合编译,vivado的库有的是VHDL文件,这时又需要vcs进行三步编译。

文中命令均手打,可能有错,记得注意一下
若对编译选项的含义有疑问,可以参考我的另一篇文章VCS编译参数说明

第一步:vcs编译vivado库

vivado+vcs+verdi 仿真 - 知乎 (zhihu.com)

可以使用图形化界面,在vivado中直接调用vcs编译。该部分可以参考vivado+vcs+verdi 仿真 - 知乎 (zhihu.com)的第一节。

编译完成后主要得到下面几个文件:

  • synopsys_sim.setup
    • 重要,该文件指定了xilinx各个器件库的位置,vcs仿真时使用该文件索引用到的器件库。
  • compile.sh
    • 用不到,可以参考一下,这是vivado生成的调用vcs的脚本文件。

第二步:vcs 三步编译

VCS三步编译分为:

  • Analysis
    • 命令:vlogan, vhdlan
  • Elaboration
    • 命令:vcs
  • Simulation
    • 命令:./simv

VCS三步编译是将两步编译的第一步,拆分成了Analysis+Elaboration,这样做的好处是可以编译VHDL文件。

通常也只会在需要编译VHDL文件的时候,才会使用三步编译

0.仿真库设置

我们刚才使用vivaod生成了一个synopsys_sim.setup文件,该文件主要指定了Xilinx的库。

现在我们需要新建一个synopsys_sim.setup文件,告诉vcs具体的库配置。

所以一共有两个synopsys_sim.setup文件:

  1. 第一个vivado生成的,可以放在vivaod生成的目录下,不用拷贝过来
  2. 第二个是我们自己写的。
WORK > DEFAULT
DEFAULT : vcs/xil_defaultlib
OTHERS=../../../XilinxSimlib/synopsys_sim.setup
  • WORK > DEFAULT:设置vcs使用默认库DEFAULT
  • DEFAULT : vcs/xil_defaultlib:指定DEFAULT的存储路径,所以vcs/xil_defaultlib可以随意修改成你自己的路径
  • 最后一行,OTHERS指向Vivado生成的第一个synopsys_sim.setup文件路径

特别注意:我们自己写的第二个synopsys_sim.setup文件,必须放在simv仿真可执行文件的同一个目录,否则不生效。

1. Analysis

使用vlogan编译verilog和systemverilog文件,若使用的是UVM环境,需要首先编译UVM环境

若使用一条命令编译源文件和uvm环境,则uvm环境会默认在最后开始编译,这就导致前面编译源文件的时候会报错,所以必须先编译UVM环境

编译UVM

vlogan -full64 +no_notifier +v2k -v2k_generate -sverilog -ntb_opts uvm-1.2 +lint=TFIPC-L,PCWM +warn=noPISB,noPHNE,noTMR,noOBSV2G -override_timescale=1ns/100fs +cov +FSDB -V

编译verilog源文件

在编译UVM参数的基础上,加上verilog文件列表和testbench文件列表

注意需要手动在文件列表中加上glbl.v这个文件,该文件在vivado的库中。

vlogan -full64 +no_notifier +v2k -v2k_generate -sverilog -ntb_opts uvm-1.2 +lint=TFIPC-L,PCWM +warn=noPISB,noPHNE,noTMR,noOBSV2G -override_timescale=1ns/100fs +cov +FSDB -V -f ./$VLOG_FLIST -f ./$TB_FLIST

使用vhdlan编译vhdl文件,

注意不能使用-V选项,该选项会导致vhdlan不输出任何文件,导致后面的Elaboration出错。

-vhdl87 指定的是vhdl语言版本,根据需要指定

vhdlan -full64 -vhdl87 -f ./$VHDL_FLIST
2.Elaboration

使用vcs命令生成可执行仿真文件simv

必须指定两个top,除设计top外,必须有glbl

vcs -full64 +no_notifier +notimingcheck +nospecify -sverilog -ntb_opts nvm-1.2 -xprop=xmerge -debug_access+all -debug_region=cell+lib +lint=TFIPC-L,PCWM +warn=noPISB,noPHNE,noTMR,noOBSV2G +cli+3 -lca -j4 -override_timescale=1ns/100fs -P $VERDI_ARG -cc gcc -cpp g++ -assert enable_diag -top $TOP glbl
3.Simulation

$SIM_ARGS表示仿真参数,自己根据需要添加

./simv $SIM_ARGS

若需要断点调试,可以在仿真参数中加上-gui,可以调用DVE界面进行交互DEBUG。调试操作方法类似C语言的调试方法。

### Vivado 仿真的配置与使用方法 Vivado 是一款强大的集成开发环境,其内置的仿真器 Vivado Simulator 支持多种类型的仿真需求,包括功能仿真和时序仿真[^1]。为了实现高效的仿真工作流,通常需要对 Vivado 的仿真进行适当配置。 #### 一、仿真的作用 在设计过程中,如果项目涉及 Xilinx 器件原语或 IP 核,则这些组件的仿真模型会被组织为一组源文件并存储于特定的仿真中[^5]。如果没有提前将这些源文件编译为目标仿真器可识别的格式,在运行仿真时可能会报错提示缺少对应的模块定义。 #### 二、仿真的配置步骤 以下是针对不同场景下的仿真配置方式: ##### (1)基于 Vivado 自带仿真器的配置 对于 Vivado 内部自带的仿真器,无需额外手动操作来设置仿真路径。只需通过菜单 `Tools -> Run Simulation` 启动仿真即可自动加载所需资源[^1]。 ##### (2)连接 ModelSim 第三方仿真器 当选用 ModelSim 作为外部仿真工具时,需完成如下准备工作: - **创建专用目录**:在 ModelSim 安装根目录下建立一个新的子文件夹用于存放即将生成的仿真数据(例如命名为 vivadoYYYY_MM_lib),其中 YYYY 和 MM 表示当前年份月份以便版本管理[^2]; - **启动仿真编译向导**:返回到 Vivado 主界面,依次点击顶部导航条上的选项 Tools -> Compile Simulation Libraries... 打开图形化对话框; - **指定目标位置及相关参数**:在此界面上填写刚才准备好的输出地址以及其他必要字段比如所选语言种类等信息之后确认提交任务等待进程结束即完成了整个流程[^2]。 ##### (3)利用 VCS 编译仿真并与 Verdi 联合调试 另一种常见情况是采用 Synopsys 提供的产品组合——VCS 加上 Verdi 来执行更复杂的验证分析作业。此时可以借助命令行脚本形式调用 compile_simlib 工具来进行批量处理。具体语法结构如下所示: ```bash compile_simlib -language all -dir {预编译要存放的位置} -simulator vcs -library all -family all -verbose -force ``` 此命令中的各个开关分别代表不同的含义,如 `-language all` 指定支持全部可用的语言标准;而 `{}` 替代部分则应替换为你实际使用的绝对物理路径字符串[^4]。 #### 三、注意事项 无论采取哪种途径实施上述动作之前都应该仔细阅读官方文档获取最新最权威指导方针因为随着软件迭代更新某些细节可能有所变化。 --- ### 示例代码片段 下面展示一段简单的 Tcl 脚本来辅助自动化这一过程的一部分逻辑实现: ```tcl set lib_dir "/path/to/your/simulation/library" if {[file exists $lib_dir]} { puts "Library directory already exists." } else { file mkdir $lib_dir } exec compile_simlib -language verilog -dir ${lib_dir} -simulator modelsim -library xil_defaultlib -family zynq -verbose -force puts "Simulation library compilation completed successfully!" ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值