【无标题】

用modelsim仿真xilinx vivado IP

1、本例使用的modelsim和xilinx vivado的版本

复制代码
  		ModelSim: SE-64 10.5
  		Vivado:2018.3

2、在vivado里生成用modelsim调试所需要的库

为要编译的库选择一个安装文件夹:

从这个例子可以看出,这个动作也是可以通过命令来实现的:

复制代码
compile_simlib -simulator modelsim -simulator_exec_path {C:/modeltech64_10.5/win64} -family all -language all -library all -dir {D:/Xilinx/Vivado/2018.3/modelsimlib}

3、在modelsim里为生成的库添加必要的路径

复制代码
为了让modelsim能够找到vivado的IP库,有两种方法,一种是在modelsim的modelsim.ini文件里添加指向不同库的路径;还有一种方法是直接在仿真脚本do文件里申明这个路径。

3.1在modelsim.ini文件里为vivado库添加路径

modelsim.ini文件在modelsim的安装目录下,打开此文件,找到[Library]部分,如果编程语言用的是verilog,添加如下的变量:

复制代码
UNISIMS_VER = D:/Xilinx/Vivado/2018.3/modelsimlib/unisims_ver
UNIMACRO_VER = D:/Xilinx/Vivado/2018.3/modelsimlib/unimacro_ver
SIMPRIMS_VER = D:/Xilinx/Vivado/2018.3/modelsimlib/simprims_ver
SECUREIP = D:/Xilinx/Vivado/2018.3/modelsimlib/secureip

3.2在do文件里添加库

例如:(在这个例子里,为需要仿真的模块指定了具体的库)

复制代码
vlib work

vmap axi_lite_ipif_v3_0_4   D:/Xilinx/Vivado/2018.3/modelsimlib/axi_lite_ipif_v3_0_4
vmap lib_pkg_v1_0_2         D:/Xilinx/Vivado/2018.3/modelsimlib/lib_pkg_v1_0_2
vmap lib_srl_fifo_v1_0_2    D:/Xilinx/Vivado/2018.3/modelsimlib/lib_srl_fifo_v1_0_2
vmap lib_cdc_v1_0_2         D:/Xilinx/Vivado/2018.3/modelsimlib/lib_cdc_v1_0_2
vmap axi_uartlite_v2_0_23   D:/Xilinx/Vivado/2018.3/modelsimlib/axi_uartlite_v2_0_23
vmap secureip              D:/Xilinx/Vivado/2018.3/modelsimlib/secureip
vmap xpm                   D:/Xilinx/Vivado/2018.3/modelsimlib/xpm

vcom /path/to/axi_uartlite_0/sim/axi_uartlite_0.vhd

vlog /path/to/Vivado/${vivado_version}/data/verilog/src/glbl.v

vsim -c -voptargs="+acc" \\
  -L axi_lite_ipif_v3_0_4 \\
  -L lib_pkg_v1_0_2 \\
  -L lib_srl_fifo_v1_0_2 \\
  -L lib_cdc_v1_0_2 \\
  -L axi_uartlite_v2_0_23 \\
  -L secureip \\
  -L xpm \\
  glbl \\
  ${top_model} \\
  -do "run -all ; quit"

这里需要说明的是,在仿真的时候:vlog /path/to/Vivado/${vivado_version}/data/verilog/src/glbl.v是必须要的,可以采取的办法是添加一个环境变量XILINX,然后能够依据此变量找到glbl.v。

然后在do文件里用就可以用这个变量来指向glbl.v文件

例如:

复制代码
vlog $env(XILINX)/data/verilog/src/glbl.v

4、仿真

最好用编辑do脚本的方式进行仿真,例如:

复制代码
vlib work
vmap work work
vlog $env(XILINX)/data/verilog/src/glbl.v
vlog -reportprogress 300  -work work  mul_sim_netlist.v
vlog -reportprogress 300  -work work  mymul_tb.v
vsim -L work -L SECUREIP -L UNIMACRO_VER -L UNISIMS_VER -L XILINXCORELIB_VER  -novopt mymul_tb   glbl
dd wave sim:/*
run 100000

需要注意的是,这其中的mul_sim_netlist.v就是在vivado里面生成IP的时候附带的sim文件夹里的关于这个需要仿真的IP的netlist文件。

相关推荐
9527华安15 小时前
FPGA实现Aurora 64B66B图像视频点对点传输,基于GTH高速收发器,提供2套工程源码和技术支持
fpga开发·音视频·aurora·gth·高速收发器·64b66b
XINVRY-FPGA1 天前
EPM240T100I5N Altera FPGA MAX II CPLD
人工智能·嵌入式硬件·fpga开发·硬件工程·dsp开发·射频工程·fpga
第二层皮-合肥1 天前
FPGA实现ETH接口
单片机·嵌入式硬件·fpga开发
璞致电子1 天前
【PZ-ZU47DR-KFB】璞致FPGA ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常见问题说明
嵌入式硬件·fpga开发·fpga·软件无线电·sdr
陌夏微秋1 天前
FPGA硬件设计2 最小芯片系统-ZYNQ7020/7010
嵌入式硬件·fpga开发·硬件架构·硬件工程·信息与通信·智能硬件
风已经起了2 天前
FPGA学习笔记——IIC协议简介
笔记·学习·fpga开发
逐梦之程2 天前
FPGA-Vivado2017.4-建立AXI4用于单片机与FPGA之间数据互通
fpga开发
XINVRY-FPGA3 天前
10CL016YF484C8G Altera FPGA Cyclone
嵌入式硬件·网络协议·fpga开发·云计算·硬件工程·信息与通信·fpga
嵌入式-老费3 天前
产品开发实践(常见的软硬结合方式)
fpga开发
FakeOccupational4 天前
【电路笔记 通信】AXI4-Lite协议 FPGA实现 & Valid-Ready Handshake 握手协议
笔记·fpga开发