modelsim仿真含Xilinx原语代码块
很早之前笔者已经写过关于modelsim仿真的文章了,不过之前笔者做的仿真都是有现成代码块的仿真。对于那些使用原语的代码块进行仿真时则需要产生相关的仿真库,笔者这里使用modeltech64_2020.4,Vivado 2020.1。由于vivado产生的仿真库生成对应一些modelsim的版本,版本不匹配貌似在生成仿真库过程会报错,笔者也遇到过多次,所以笔者这里就使用仿真成功过的modelsim版本及Vivado版本。
一、生成仿真库步骤
1.打开vivado,先点击Tools,接着选择Compile Simulation Libraries...

2.先选择仿真库存放的路径地址,接着点击下方的Compile,之后便跳出Initializing project...的显示框


3.此时查看Tcl Console可以查看编译的信息,之后需要等待一段较长的时间。

4.编译成功后,Tcl Console显示如下:

二、编写好modelsim的.do文件
下面的代码中把上面步骤生成的仿真库添加进来,第10行-L F:/vivado2020_lib/xpm就是起到了这个作用,这里需要对含xpm_fifo_sync原语的代码块进行仿真,所以后面是xpm。需要注意的是如果10行中的代码用旧版本的vsim -novopt work.Uart_sim -L F:/vivado2020_lib/xpm work.glbl,就会出现下图2中的错误,这是新版本modelsim需要注意的事。-voptargs="+acc"是允许自动优化,可加可不加。
1 #删除work工作目录
2 quit -sim
3 .main clear
4
5 vlib work
6 vlog -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF *.sv
7 vlog -cover sbctf -coveropt 3 ../rtl/*.v
8 vlog -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF ../glbl/glbl.v
9
10 vsim -voptargs="+acc" work.Uart_sim -L F:/vivado2020_lib/xpm work.glbl
11 #观察DUT的信号波形
12 add wave -position insertpoint sim:/Uart_sim/u_AXI4_UART/u_Uart_tx/*
13 view -new wave
14 add wave -position insertpoint sim:/Uart_sim/u_AXI4_UART/u_Uart_rx/*
15
16 run 10ms

三、直接点击run.bat,自动仿真完成
代码用的是前面UART的相关代码《基于Axi4_lite的UART串口Verilog代码实现》。仿真完成如下:

modelsim仿真含Xilinx原语代码块的更多相关文章
- Vivado级联Modelsim仿真Re-launch问题
前两天在群里看到有朋友说Vivado级联Modelsim仿真出现修改设计代码后重新run do文件,波形没有随着代码修改而改变,这个问题博主之前没有注意到,因为把Vivado和Modelsim级联好后 ...
- 87.在ModelSim中添加Xilinx ISE仿真库
在ModelSim中添加Xilinx ISE仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下.如作者是安装在D:\softwares\ ...
- 在ModelSim中添加Xilinx仿真库
在ModelSim中添加Xilinx仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下.如作者是安装在D:\softwares\Mode ...
- 加快modelsim仿真速度的方法(原创)
①仿真精度越高,仿真效率月底. 仿真时采用`timescale 1ns/1ns比采用1ns/100ps的仿真效率高 simulation was two billion ns. ②clock gene ...
- ModelSim仿真入门
ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...
- 【黑金原创教程】【Modelsim】【第一章】Modelsim仿真的扫盲文
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- Java static 静态代码块执行分析
假设有这样一个类: public class Utils { static { Log.i("static","isLoad!"); } public stat ...
- 用Modelsim仿真QuartusII综合后网表时库的添加方法(转)
这两天做综合后仿真,发现FPGA器件库又不会加了,无奈上网找方法.说起来不好意思,很早就接触Modelsim这个仿真软件了,可是没有好好琢磨.把这两天找的方法贴出来,再加上自己的理解,以后忘了可以上博 ...
- modelsim 仿真时出现无限迭代(iteration reach limitation)的原因及其解决办法
modelsim 仿真时出现无限迭代(iteration reach limitation) 出现这种故障的原因: 一般都是代码里出现的组合逻辑无限循环或者组合逻辑A产生signal_A,signa ...
- modelsim仿真时让状态机波形显示状态的名字
在使用Verilog编写有限状态机等逻辑的时候,状态机的各个状态通常以参数表示(如IDLE等).当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进制编码的形式显示,如下面所示,这种显示 ...
随机推荐
- JZOJ 2020.02.25【NOIP提高组】模拟A 组
闲话 难度似乎比之前的简单了一些 但是难的题还是很难(我太菜了) 总结 针对三个题,先罗列正解所涉及的算法:字符哈希,组合数学,点分治 最后一个不会 组合数学?还好吧 字符哈希? 放在 \(T1\) ...
- CCRD_TOC_2008年第2期
中信国健临床通讯 2008年第2期 目 录 类风湿关节炎 1. 纵向分析TEMPO数据:放射学损伤程度和进展速率决定了关节物理功能 van der Heijde D, et al. Ann Rhe ...
- 爆肝200+小时,总结出的 Creator 3.x 入门修炼指南!全免费
大家好,我是晓衡! 为了写这篇文章,给支持公众号的读者们一个交代,我准备了200+小时,公众号断更11天.我决定,不再选择逃避,不想再欺骗自己了. 2023新年开工,不到十天时间,接二连三有小伙伴找到 ...
- python中的字符串的常用方法介绍
a = "alxe Li 金角大王" #创建一个字符串来演示方法的功能结果.一下都使用这个字符串演示. 首先要了解的常识性的知识点是:字符串是不可变的序列.所有对字符串的内 ...
- 【PyQt5学习-02-】PyQt5 库的结构
1.pyqt5模块 pyqt5模块(module)文档 https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.html q ...
- WGCMS 奇迹网站系统 介绍[V2023.2.2]
智鹏网站系统,请勿用作非法用途 权利和义务: 程序仅限学习技术使用,未经官方许可不得用于商业! 程序售价500元一套,绑定域名,不限制端口.如绑定:xx.com,则www.xx.com.mu.xx.c ...
- 自己写的垃圾shell
#!/bin/bash echo -e "deb https://mirrors.aliyun.com/ubuntu/ trusty main restricted universe mul ...
- PHP面向对象(二)
构造函数 PHP 5 允行开发者在一个类中定义一个方法作为构造函数.具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作. 代码如下: <?php//类的 ...
- EF和dapper
EF:重量级ORM的代表 优点: 1.不关心sql怎么写, 2.开发速度快,和linq结合,有效提高开发效率 3.code first,代码优先,不用关心数据库结构,代码先行. 4.跨数据库,只需要把 ...
- MySQL 增加timestamp 列都是000000的时间
问题: 在MySQL 用工具navicat 给表增加 类型为 timestamp 的列的时候 默认值没有具体设置 默认值使用当前时间 CURRENT_TIMESTAMP 函数 导致生成的默认是0000 ...