在数字电路设计中(verilog or vhdl),modelsim是常用的仿真工具。当我们仿真大型的工程时,往往需要保留仿真波形,以便分析和以后查看。这就需要学习在modelsim里面如何保存仿真波形及调用波形。
为了方便以后察看仿真结果,可以将仿真波形保存在.wlf文件中:
一。保存过程:
1.完成仿真波形
2.切换到sim视窗
3.点击保存图标,可以直接保存为.wlf文件
二。打开过程
1.打开modelsim
2 file菜单打开.wlf文件(要在文件类型中选择.wlf类型)
3.确定之后出现sim视窗
4.选中窗口中的测试文件名右击————add wave即可在wave窗口打开该测试坡形。
三。也可以将波形保存为.do文件
do文件记录了仿真的过程和加载的各种库。
do文件的保存过程:
file——》save format——》d:/modeltech_6.5b/examples/wave.do 可以更改do文件名称和存放目录
2.do文件的加载:
file——》load(注意要在sim视窗下)。打开之后貌似只显示出仿真过程代码,没法显示波形。
modelsim保存仿真结果,以及打开保存的仿真结果的波形wlf文件(经过实验,真实可用)
1、在wave界面,将仿真波形保存为 .do文件(信号列表文件)。
2、切换左边任务栏至“sim”,,点击保存,给将要保存的 .wlf文件(波形文件)命名为自己想要的名字,默认为vsim.wlf。
(wlf文件为modelsim的wave log file文件格式)
3、保存,ok,关闭modelsim(注意,必须关闭modelsim,否则打开wlf文件的时候,会提示未正常关闭,无法打开)。
4、重启modelsim,open 之前保存的 .wlf文件,然后 load 对应的 .do文件。
也可以使用命令行的格式打开此波形文件,举例如下:vsim -view wave.wlf -do run.do。
do文件记录了仿真的过程和加载的各种库。
do文件的保存过程:
file——》save format——》d:/modeltech_6.5b/examples/run_wave.do 可以更改do文件名称和存放目录,一般保存在仿真目录中。
2.在仿真路径中找到文件vsim.wlf打开,再命令窗口输入:do run_wave.do
具体操作:
1.打开modelsim se :切换目录到仿真工程下。
2.命令行输入:openfile vsim.wlf
3.命令行输入:do run_wave.do(上次保存的wave.do文件)
参考:
保留仿真后的波形,步骤如下:
1.点击file菜单下的save format,保存为.do格式文件
2.下次打开modelsim后,在控制台输入do wave.do命令后,即可看到上次仿真的波形图
此外,点击向上箭头的按键可以重复输入上次命令。
怎么样保存仿真的完整波形(不是printscreen),file》export》image好象和截屏的功能一样,只能保存一部分波形,怎么样保存成modelsim认识的波形,下次看的时候只需要打开这个波形图,不需要重新仿真,这个在vcs中可以的,用vcd文件,好像modelsim也支持dump vcd的,不知道具体怎么做,怎样保存,怎么样打开?
使用“dataset save sim filename.wlf ”保存仿真波形,
filename.wlf文件的名字可以自己任意取。打开时候直接,open filename.wlf文件就可以了。
直接通过open找到.wlf文件,打开就可以了。
保存wlf,下一次只要直接打开它就可以了。但是有这样的情况出现,如果在保存wlf前,你改动了某些信号的位置,下一次打开是会回到原先的位置,此时你可以把do文件一起保存,在下一次打开wlf文件后,再打开do文件,你先前的顺序就会回来
波形信号的保存:有时,在波形窗口内拖放了较多的信号,可以保存起来以后调入。在wave窗口,file -》 save format,保存成*.do文件。以后需要调入时,在modelsim主窗口命令行内执行:do *.do即可
modelsim中寄存器组值查看工具
在modelsim中,当定义了寄存器数组(例如:reg [7:0] ram [0:127]),可以通过memory list工具查看仿真时的值。步骤:
1.定义reg类型,例如ram
module ram_1024byte
#(parameter data_width = 16, parameter addr_width = 8)
(
input [(data_width-1):0] data,
input [(addr_width-1):0] read_addr, write_addr,
input we, clk,
output reg [(data_width-1):0] q
);
// declare the ram variable
reg [data_width-1:0] ram[0:(2**addr_width-1)];
// initiation
initial
begin
$readmemh(“。。/dev/ram_init.dat”, ram);
end
// read and write operation
always @ (posedge clk)
begin
// write
if (we)
ram[write_addr] 《= data;
// read (if read_addr == write_addr, return old data)。 to return
// new data, use = (blocking write) rather than 《= (non-blocking write)
// in the write assignment. note: new data may require extra bypass
// logic around the ram.
q 《= ram[read_addr];
end
endmodule
2.仿真
新建工程-》编译-》仿真(without optimization)
view-》memory list,便可以查看ram中寄存器的值
防爆型温湿度检测仪
通过智能镜面显示屏来构建一个智能化的新空间
OPPOR11Plus才是真的神器!6月30日10:00开售,你准备好了嘛?
英飞凌科技推首款ISOFACE双通道数字隔离器 可与其它产品组合实现引脚兼容
制造业数字化转型以数据为驱动力方式进行优化
modelsim保存波形操作方法解析
安防视频监控行业竞争激烈,预计2020年我国视频监控市场规模将达907亿元
外置显卡Wolfe让你的MacBook秒变游戏本
教程:在ArkUI开发框架中实现马赛克处理功能
今天来介绍一下芯片ACPL
LOG101/LOG104偏流调零电路
关于霍尼韦尔年度十大优秀数字医疗解决方案的分析和应用
联想:PC业务绝对主力,移动和数据中心业务表现平庸
碳云智能成立半年估值65亿_碳云智能融资情况
引领站点开放的政策和生态的的地区,将在5G建设中获得优势
使用 NVIDIA Isaac 仿真并定位 Husky 机器人
exynos880是什么处理器相当于骁龙多少
不同品牌的电容器可以一起使用吗?
2022年新能源汽车行业研究报告
什么是工业4.0_中国实现工业4.0的优劣势