modelsim 独立仿真vivado fifo IP核

1.前言

vivado内自带仿真器,或者可以通过vivado启动第三方仿真工具,联合仿真。但是很多时候,我们希望脱离vivado,利用modelsim或者vcs等第三方仿真工具,高效地仿真。本文介绍如何利用modelsim独立仿真vivado 的IP核(以一个同步fifo为例)

2.准备工作

vivado的ip核仿真相对于altera的ip核仿真较为复杂。altera只需要在仿真的filelist中,添加altera_mf.v以及altera220_model.v,就可以方便地仿真IP核(但是比较新的quartus II 生成的IP核,比如17.0及以后,好像仿真IP核也变麻烦了)

第三方工具仿真vivado IP核,需要先在vivado中将目标器件的所有仿真库,编译到你指定的路径下,然后在modelsim仿真脚本中指定仿真库到该路径。

在A位置选择modelsim工具,B位置选择你想把编译好的仿真库放在什么路径下,C位置指定modelsim的安装路径。如果你不想编译所有器件的仿真库,可以在Family选项中选择自己想要编译的器件。编译时间较长。

3.仿真

准备好自己写的逻辑代码,代码中例化了fifo ip,准备好testbench以及modelsim仿真tcl脚本.需要注意一下三点

1.testbench中需要添加如下一行代码

glbl是xilinx的全局复位的原语,不加这一行代码,ip网表文件编译时无法调用该全局复位模块。

2.filelist中需要添加fifo的网表文件,提供fifo的底层原语,描述fifo的行为。

3.vsim指令需指定fifo ip的仿真库文件夹路径

xilinx_sim_lib就是准备工作中,编译好的仿真库所在的路径。unisims_ver是功能仿真的常用的仿真库,时序仿真可以添加simprims_ver文件夹

简单的tcl脚本如下,供参考

#退出当前仿真

quit -sim

vlib work
vmap work ./work

#编译修改后的文件,我这里把设计文件和仿真文件分开放了,所以写两个。

vlog "../rtl/*.v"
vlog "../tb/*.v"
vlog "F:/prj/prj.srcs/sources_1/ip/sync_fifo/sync_fifo_sim_netlist.v"

#开始仿真
vsim -novopt -L E:/modelsim_install/xilinx_sim_lib/unisims_ver  work.fifo_tb

#添加指定信号
add wave  \
sim:/fifo_tb/sync_fifo_wr_rd_top_inst/wr_en \
sim:/fifo_tb/sync_fifo_wr_rd_top_inst/rst_n \
sim:/fifo_tb/sync_fifo_wr_rd_top_inst/rd_en \
sim:/fifo_tb/sync_fifo_wr_rd_top_inst/fifo_data \
sim:/fifo_tb/sync_fifo_wr_rd_top_inst/cnt \
sim:/fifo_tb/sync_fifo_wr_rd_top_inst/led \
sim:/fifo_tb/sync_fifo_wr_rd_top_inst/clk
#添加顶层所有的信号
# 打开波形窗口

view wave
view structure

# 打开信号窗口

view signals

#运行xxms

run 10us

打开modelsim,更改路径到当前的仿真文件夹下,do xxx.tcl就会自动完成编译以及仿真运行

 

 

 

 

  • 8
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值