基于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进行仿真所要首推的方式。

 

大西瓜FPGA-->https://daxiguafpga.taobao.com

 

博客资料、代码、图片、文字等属大西瓜FPGA所有,切勿用于商业! 若引用资料、代码、图片、文字等等请注明出处,谢谢!

 

每日推送不同科技解读,原创深耕解读当下科技,敬请关注微信公众号“科乎”。

posted @   logic3  阅读(907)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示