基于modelsim-SE的专业进阶仿真流程
基于modelsim-SE的专业进阶仿真流程
通过《基于modelsim-SE的简单仿真流程》和《调用altera IP核的仿真流程》是否感受到仿真流程中的繁琐步骤,特别是在modelsim创建工程之后的步骤:编译、添加仿真信号、开始仿真。这三个步骤涉及到一大堆的鼠标操作,涉及到一大堆的窗口操作,由于RTL仿真过程是一个反复迭代的过程,同时要求覆盖到100%的功能测试,由此也要覆盖到所有状态机和条件判断的所有情况,由此,RTL的功能仿真功能需要不断的修改RTL代码,每次修改RTL代码都需要进行编译、添加仿真信号、开始仿真,这要是用鼠标操作这得多累人。
由此,需要采用脚本的方式编写*do文件,将编译、添加仿真信号、开始仿真这三个步骤采用脚本的方式进行,只需在脚本执行窗口输入*.do文件,并执行就可以解决以上的问题。
编写测试操作脚本
编写测试操作脚本,需要对modelsim的脚本有所了解
脚本语言 |
说明 |
vlib work |
新建工作目录 |
vmap work work |
将新建库映射到当前工作目录 |
Vlog D:/***/*.v -cover bcesxf |
Vlog:编译文件,需要文件的所在地址及文件名; -cover bcesxf:覆盖分支条件表达式语句 |
vsim -novopt work.(待测试的模块名) |
Vsim:加载仿真 -novopt:不进行优化 |
add wave -decimal /(待测试的模块名)/* |
add wave:添加仿真信号; -decimal:表示十进制有符号表示; -unsigned:表示十进制无符号; -hex:表示十六进制表示; /(待测试的模块名)/:将待测试的模块添加到单斜杠里面; *:表示整理模块里面的所有信号,也可以将*替换为具体的信号; |
run 1ms |
run 进行仿真,后面带仿真时间长度; |
本实验在《调用altera IP核的仿真流程》的实验上进行修改,使用的RTL代码、创建工程的过程和《调用altera IP核的仿真流程》一致。将步骤编译、添加仿真信号、开始仿真采用脚本的方式进行操作,编写的脚本如下(带#号为注释,注释用#号),在将脚本文件编写完成后,需要将文件保存为.do的后缀,然后保存到工程所在的文件夹,不需要包含到modelsim工程中。
#Creat a work lib vlib work #Map the work lib to current lib vmap work work #Compile the source files # -cover bcesxf 覆盖分支条件表达式语句 vlog E:/jaran/modelsim/lab2/altera_mf.v -cover bcesxf vlog E:/jaran/modelsim/lab2/rom_tst.v -cover bcesxf vlog E:/jaran/modelsim/lab2/rom_top.v -cover bcesxf vlog E:/jaran/modelsim/lab2/rom.v -cover bcesxf vlog E:/jaran/modelsim/lab2/counter.v -cover bcesxf #Start simulation vsim -novopt work.rom_tst #add wave add wave -unsigned /rom_top_1/* # add wave -hex /rom_top_1/* # add wave -hex/rom_tst/* # add wave -hex/rom_tst/clk #set run time run 1ms |
编写、保存为rom.do文件,在脚本窗口输入do rom.do,然后按下回车键。
软件便进行编译、添加仿真信号、开始仿真。
仿真信号查看
仿真完成后,波形窗口产生相应的信号,如下所示。
将rom_data显示为模拟信号会得到如下的结果,与实验《调用altera IP核的仿真流程》一致。
采用脚本的方式,解决了仿真过程繁琐的操作过程,极大地加快了仿真的过程,该方式高效便捷专业,是采用modelsim进行仿真所要首推的方式。
每日推送不同科技解读,原创深耕解读当下科技,敬请关注微信公众号“科乎”。
基于modelsim-SE的专业进阶仿真流程的更多相关文章
- 基于Modelsim的直方图统计算法仿真
一.前言 本篇主要针对牟新刚编著<基于FPGA的数字图像处理及应用>第六章第五节中直方图统计相关类容进行总结,包括代码实现及 基于Modelsim的仿真.书读百遍,其意自现. 2020-0 ...
- 基于Modelsim的视频捕获模拟仿真
一.前言 针对牟新刚编著的<基于FPGA的数字图像处理原理及应用>中第五章系统仿真中关于视频捕获模拟的例子进行补充和仿真验证,简言之,吊书袋子. 2020-02-27 21:09:05 二 ...
- 【仿真】【modelsim】:verilog功能仿真流程
一.编写verilog源文件,在diamond中编译.编写testbench文件.在diamond设置中将仿真工具设置为modelsim,运行仿真向导 二.自动进入modelsim, 编译全部 运行仿 ...
- 搭建Modelsim SE仿真环境-使用do文件仿真
本章我们介绍仿真环境搭建是基于Modelsim SE的.Modelsim有很多版本,比如说Modelsim-Altera,但是笔者还是建议大家使用Modelsim-SE,Modelsim-Altera ...
- 基于modelsim-SE的简单仿真流程—下
基于modelsim-SE的简单仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile A ...
- 基于modelsim-SE的简单仿真流程—上
基于modelsim-SE的简单仿真流程 编写RTL功能代码 要进行功能仿真,首先得用需要仿真的模块,也就是RTL功能代码,简称待测试的模块,该模块也就是在设计下载到FPGA的电路.一个电路模块想要有 ...
- Modelsim se仿真Xilinx IPcore
Modelsim se仿真Xilinx IPcore 方法:先写好do文件常规框架,根据modelsim报错再添加ise IP核库仿真文件.注:记得添加并仿真glbl.v全局控制仿真文件到sim/is ...
- Modelsim SE 仿真 ALTERA FPGA IP
Modelsim SE 仿真 ALTERA FPGA IP 最近,有几个朋友问过我是不是有新版本的Modelsim altera,其原因是 Qii 升级为新版本的,但是没配套的modelsim,没办法 ...
- Modelsim SE自动化仿真——如何将.do文件中自定义的库链接到testbench顶层模块
我们用Modelsim SE进行仿真时,为了方便,一般会编写.do文件来启动当前仿真.关于.do文件的编写,一般网上都有成型的模板,我们只要稍微改几个参数,就可以符合我们的仿真需求了.但是如果仿真时需 ...
随机推荐
- 配置Chrome支持本地(file协议)的AJAX请求
什么问题 WEB开发过程中,很多时候我们都是写一些简单的Demo,并不是开发一个完整项目,此时我们常见的操作是: 新建文件夹 新建需要的文件 在Sublime(或其他编辑器)中完成DEMO的编码 双击 ...
- SSH(Struts2+Spring+Hibernate)框架搭建流程
添加支持 我先介绍的是MyEclipse9的自带框架支持搭建过程:(完全的步骤 傻瓜式的学习..~) 首先我们来搭建一个Web项目: 一.Hibernate(数据层)的搭建: 相关描述 Ⅰ.服务器与数 ...
- .net程序部署(setupFactory进阶)
接上一篇 继续使用上一篇的project .将archive里无用的文件删除 添加我们需要的文件进来. config是一个文本文件. 注意所有文件的 destination都是 %appfolder% ...
- 从Google工程师到创业CTO,他的8项理念也许可以帮到你
Lan Langworth是前Google软件工程师.O'Reily作者,现在他是Artillery的co-founder/CTO,致力于把游戏机质量的游戏带进网页浏览器.下文是他从Google离职到 ...
- [译]Godot系列教程五 - 制作Godot编辑器插件
制作插件 下文仅针对2.1版本. 关于插件 插件是为编辑器扩展出更多有用工具的重要方式.它可以完全用GDScript和标准场景开发,甚至都不需重新加载编辑器就可生效.不像模块,你无需创建C++代码.也 ...
- 解决phalcon model在插入或更新时会自动验证非空字段
在使用phalcon的insert和update功能时,因为数据库所有的字段设置的都是NOT NULL,而phalcon的model在插入或更新之前会自动判断字段是否需要必填,因此导致有空字段时无法存 ...
- Json map
1. 返回数据形式 Class returnMsg{ boolean success; String msg; String errorMsg; } 2.问题 当msg中的数据由对象 或 集合 ...
- .NET Core 2.0版本预计于2017年春季发布
英文原文: NET Core 2.0 Planned for Spring 2017 微软项目经理 Immo Landwerth 公布了即将推出的 .NET Core 2.0 版本的细节,该版本预计于 ...
- 关于mysql字段时间类型timestamp默认值为当前时间问题
今天把应用部署到AWS上发现后台修改内容提交后程序报错,经过排查发现是更新数据的时候,有张数据表中的一个timestamp类型的字段默认值变成了"0000-00-00 00:00:00.00 ...
- 如果把带有html的标记的字符串从服务端传到页面上,需要对其进行编码。Ajax.JavaScriptStringEncode()
controller: StringBuilder s = new StringBuilder(); string a = "<script>alert('我StringBuil ...