明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 166921|回复: 2

MODELSIM/仿真问题【汇总帖】

[复制链接]
发表于 2020-4-12 10:11:23 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
【教程1】modelsim/questasim 仿真教程

【教程2】看波形图的方法,请看B站视频,一共才8分钟:
【教程3】如果还想了解项目中是如何看波形的,可以看这个案例(要仔细看,要看细节,特别是老师如何对着代码和波形来看的):



【问题1】modelsim编译之后为啥按下simulate之后没有跳出波形添加的界面?
答:modelsim中的各个界面都可以再上方的View中找到,如果某个窗口不小心关掉,可以再view中找到,重新打开。

【问题2】

modelsim能显示二维数组变量波形吗?


答:定义一个xxx
TIM截图20200422162324.png


显示效果是

TIM截图20200422162353.png

【问题3】

当用modelsim在观察波形的时候,添加新的波形进去,发现没有数据,代码无改动,新添加的信号之前是有波形的,是什么原因?
答:当添加新的波形之后,需要复位,重新Run才可以的。

【问题4】

软件安装是,有一个步骤是设置环境变量,如何做?
答:在控制面板中找到“编辑系统环境变量”,
qq.png




然后再“变量名”中填入如图所示内容,再变量值中写入LICENSE.TXT文件(破解器生成的)存放的位置
qq.png




【问题5】
按照MDY看波形的技巧:时钟上升沿前看输入信号,即信号等于1后,下一个时钟沿才检查到该信号为1。但我在仿真的时候,发现是信号变1的瞬间就检查到了。
答:该问题的解答,请看如下贴子:关于在仿真软件中计数器提前计数的问题   http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=709

【问题6】

仿真的时候,一些信号出现红线,是怎么回事?
TIM图片20200515174413.png

答:仿真时出现红线,表示该信号为x态,也就是不知道是什么值。
      如果这个值不是您所想所要的,您需要定位才能找到真正的原因。
      定位的基本思路:找到产生这个信号的代码,根据代码里的条件,分析为什么是红色。
     定位的方法,可以参考如下帖子:08 定位问题能力http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=268

【问题6.2】如下图所示,时钟为什么是红色的,没有变化?



答:这个问题跟【问题6.1】是相似的,本问题是上图中的信号clk为什么是红色的。
      基本的思路是:找到这个clk的代码,看这代码执行了没有。
      由上图中的信号列表可以看到,clk是UART模块的输入,它本应来自测试文件,但测试文件有执行吗?所以根本原因是:仿真时调用的顶层模块有问题,要调用测试文件那个模块,不是设计模块。
      更多思路,请参考如下帖子:08 定位问题能力http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=268


【问题7】编写测试文件的时候,要严格模拟真实的外设情况设计激励吗?例如说,外设输出信号dout,按照时序要求是每1us变化一次,是不是意味着仿真时也要这样做?或者是下面图片的例子
F12B8735-DD87-4750-8736-6D99FA946ACD.png

答:通常来说,一般测试文件会模拟外设的情况,来设计这个激励。 但如果遇到设计复杂,评估没有必要的情况,也会简化仿真。
      例如上图中的问题,按照时序图要求,sio_din不用“赋值”。但问题是,“不用赋值”和给“0”,到底有什么不同?我们更关心的是,设计代码不要在此期间get这个值就好了。
      也就是说,这一段区域,是大家都不关心的,就没有必要去设计得复杂。
      还有一个例子:dout每1us变化一次,这是真实情况。但我在编写文件时,每个时钟都给不同的值,然后确认在我需要的时候,能不能获得到当前值,这样更能保证设计要求。
     其实,总结一点的是:我们不关心仿真文件激励做得“不够好”。我们更关心的是,在此时此种激励下,我们的设计代码对不对。这才是核心!

【问题8】
带有ip核的仿真中,会提出如下图的错误?(module "dcfifo"  is not define)? 904E5700-229C-409e-A12F-270A70E16FA2.png
答:在Quartus生成ip核的界面中,一般倒数第二页会说明本ip核涉及到的库文件,大部分常用ip核都只涉及到altera_mf.v这个库文件。这个库文件应该在Quartus的安装路径下xxxx/quartus/eda/sim_lib这个路径下。
       特别需要注意的是,ip核是由哪个Quartus生成的,仿真时就要添加对应Quartus的仿真库文件。


【问题9】

在仿真的时候,编译全部都是通过的,但是一点击simulat,就会出现“Error  loading  design”这样的错误,怎么办?
答:出现这个错误的时候,一定要往上找错误的信息,不要盯着“Error  loading  design”看,比如下面:
qq.png    红框部分才是真正需要关注的报错信息。



【问题10】
如果修改modelsim显示的进制数?例如将数据以16进制显示。
答:选中该信号,右键,有一个radix选项,在该选项里可以选择要显示的方式。


【问题11】

MODELSIM加载程序的时候提示:increasing limit to 75
TIM图片20200610171124.jpg


答:注意看图中的U1,是有很多级的U1。这个U1就是模块名或者例化名,这是因为多级嵌套调用才会出现的问题。例如,当模块ABC里面,例化了一个模块ABC,这就是自己例化了自己,就会出现问题。
所以,需要检查模块名的正确性。

【问题12】

modelsim仿真的波形前面有的是0或1,有的是st0或st1。有什么区别?
答:0和1只表示高低电平,加上st还可以表示强度,也就是表示信号的驱动能力,定义为线网类型的,比如wire,都有默认的强度,一般是(st0,st1)

【问题13】

编译出现Error: D:/shumaguan/shumaguan_test.v(20):near“initial”;syntax error ,unexpected initial,expecting ' ; ' or ' , '
答:已经提示了错误的原因,以及位置,请在第20行前后去找,一般是缺少分号或者逗号,或者是写错了

【问题14】

出现
Error deleting “msim_transcript”:permission denied.
111.jpg

答:问题原因:   同一工程Modelsim窗口多开。
      解决方法:   关闭正在运行的modelsim软件,再启动仿真。


【问题15】
想请问下为什么新创建的modelsim工程打不开

modelsim显示 : # wrong # args: should be "load file ?pkg? ?interp?"

2.png


答:解决办法:检查三个方面。

第一:Modelsim是不是真的破解好了
第二:确定是个.v文件,因为modelsim只能处理.v不能处理图形
第三:setting---simulation那里要选择modelsim altera 什么的有没有设置好。还有tools---option 那里选择modelsim.exe的路径,modelsim安装在根目录下就不会出现这种问题了。。



【问题16】

在使用modelsim进行仿真的时候,如果包含有ip核,都需要添加那些文件?
答:需要添加测试文件、待仿真文件,还有ip核的仿真库文件。


【问题17】
ip核如何仿真?仿真库文件在哪里?仿真的时候怎么用?
答:一般ip核仿真需要那些库文件,在生成的时候都会有说明,如下图所示,altera_mf就是这个ip核的仿真库,直接在Quartus的安装目录下搜索即可,然后添加到modelsim进行编译。(需要注意的是,altera_mf必须是在生成该ip核的Quartus软件下去找,搜索的时候可能会出现几个,要最大的)
qq.png
或者直接使用联合仿真,具体操作看视频:

另外,对于大型的IP核,例如MAC IP核,仅使用altera_mf.v是不够的,在生成IP的时候,会同时生成对应的仿真文件,要注意阅读数据手册的说明。


【问题18】

仿真时出现这样的提示:Error:E:/rtl/bcd_counter.v(19):   (vlog-2163) Macro`d0 is undefind
答:该提示一般是由于信号没有定义引起的,请到指定的错误行,找到相关的信号,然后再找到信号的定义,检查是否、类型定义是否正确、位宽是否正确。

【问题19】

仿真这里没有端口列表怎么办
lALPBGY16HUSzInM3c0DCg_778_221.png_720x720q90g.jpg lALPBE1XcfOmE4vNAbXNBaU_1445_437.png_720x720q90g.jpg
1、检查仿真的步骤是否正确,使用步骤:01 modelsim questasim 仿真教程
http://www.fpgabbs.cn/forum.php? ... =275&fromuid=101337
(出处: 明德扬论坛)
2、检查测试文件中是否有模块例化
3、可能因为vopt的缘故使得一些不重要的信号被modelsim自动忽略,需要添加选项-novopt,即vsim -novopt module_name
      也就是是再modelsim下面输入vsim -novopt module_name,然后回车即可,其中module_name为测试文件模块名
qq.png


【问题20】
请问以下的ii我在modelsim中一直是8,什么原因?
1.png

2.png

3.png

答:因为for语句 其实就是简化操作  等于你把ii分别带入 模块 然后展开写这样。 而不是真正的循环。

【问题21】

xilinx联合modelsim仿真时 修改比较少的时候有没有像altera里面的work restart run-all   我在library里面没有找到work选项。
答:在altera平台,默认使用的是work库,所以使用work restart run - all;在XILINX平台,默认使用的是xil_defaultlib库,所以使用 xil_defaultlib restart run - all。

【问题22】modelsim仿真带有include的.V文件时提示找不到包含的文件,我的所有文件都放在同一个路径下,并且使用的绝对路径依然报错
112.png

111.png

答:1. 注意看报错的路径里的“/”没有了,所以根本原因,是要用“/”,而不是“\”。       2. 如果提示文件找不到,请特别注意路径的格式,您可以尝试用绝对路径就试试。这里容易出错,请自己多去尝试。

【问题23】

111.png.jpg
没有信号就没办法添加,看波形
答:右键addwave添加

【问题24】modelsim10.4仿真错误Error: (vlog-7) Failed to open design unit file "XXXXX" in read mode解决办法
2.jpg.png
答:此错误消息表示尝试以读取模式打开指定的文件时出现问题。
      解决方法:      1、文件路径不对,或者文件不存在,找到对应文件放到指定文件下
      2、工作目录设置错误,设置工作目录为测试文件所在目录,并且要包含有功能文件和测试文件

【问题25】编译include文件时,提示编译的错误
微信图片_20200906212529.png
答: 一般include所用的文件,不是一个完整的module代码,它只是一个代码片段。其他代码通过include的方式,将这段代码复制到此处。
       既然不是一个完整的module,那么加到工程里编译就肯定会出错。所以这个代码是不用添加到工程里的,只要把它放在正确的路径上就可以了。
       所以解决办法是:从工程中,找到此文件,然后remove掉。

【问题26】仿真时,提示如:port "clock"not found in the connected module(8th connection)

答:该提示是说,例化代码时(上面提示前会提示哪一行出错),被例化的模块没有“clock”信号。
      上面是提示的意思,您要根据这个提示去检查,例如打开这个模块代码,看是否有clock信号,以及有没有可能拉写错误等。仔细检查了。

【问题27】我在仿真一段代码。原为两个端口,仿真没有问题,后面增加了两个端口,modelsim提示这两个端口找不到。但我在激励文件中也已经加了这两个端口,不知道是什么原因。 微信图片_20200910170003.png
答:修改代码后,需要重新编译

【问题28】每次仿真抓好信号,下次打开工程时,又要重新抓信号,好麻烦, 有没有好办法?
答:使用DO文件可以解决此问题。具体请看 02 明德扬全网公开课 http://www.FPGAbbs.cn/forum.php?mod=viewthread&tid=264
     请看第5部分,高级仿真技巧。

【问题29】modelsim仿真中的信号符号名前面的前缀有没有什么地方设置可以取消啊,只显示信号符号
111.jpg.png

答:方法一: 111.png

方法二:
112.png

【问题30】Error: (vsim-3009) [TSCALE] - Module 'test_fifo_prj' does not have a timeunit/timeprecision specification in effect, but other modules do.
答:解决办法如下:
在源程序中添加时间精度,如:`timescale 1 ns/ 1 ps,时间根据自己的情况更改
或者可以使用在vsim指令后加-supress 3009屏蔽该告警。
请学习测试文件编写课程相关内容:03 测试文件的编写
(出处: 明德扬论坛)

【问题31】老师,功能级仿真可以出结果,门级仿真出不来结果,是怎么回事呢?   
答:MDY不做门级仿真。如果要做,请按定位问题思路去解决。

【问题32】
qq.png
答:本模块里面又用了本模块作为例化,例如例如tb_tri_assignment这个模块,有一个例化,例化的模块又是本模块tb_tri_assignment,导致不断循环例化。

【问题33】请问在library中没有我的测试文件test_datain,   test_datain是我在桌面直接新建的.v文件,这要怎么解决呢?
1.jpg 3.jpg
答:把仿真工程路径设为测试文件所在路径 1.jpg
      或者重新跟着仿真教程做一遍。

【问题34】仿真的时候只能通过看波形确认结果吗?有没有其他方法?答:下面介绍一种高效仿真技巧,具体视频请看下方链接
链接:https://pan.baidu.com/s/1qRMP3d7_YRkbbXqLTwOjgw
提取码:9reg

【问题35】老师请问这个怎么改正呢?
1.jpg
答:测试文件没有输入输出port 3.jpg.png

【问题36】请问,以前用questa sim创建了一个工程,现在想重新打开那个工程。怎么操作?

答:使用软件打开.mpf格式的文件即可。

【问题37】请问如何在modelsim显示频域嘛?做了fft实验。可是是在时域的

答:modelsim只看时序的波形 不涉及频域。

【问题38】关于在仿真软件中计数器提前计数的问题
http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=709&fromuid=100105

【问题39】.VT和.V有什么区别了
答:没有什么区别,就是后缀不同。

【问题40】QUARTUS和MODELSIM联合仿真,点击如出现如下图 QQ图片20210125172129.png
答:做联合仿真时,要设置MODELSIM的路径。
1. 注意区分你安装的MODELSIM版本,是MODESLIM-ALTERA,还是MODELSIM。
2. 注意路径要设置正确,不要有中文或特殊字符。
3. 多尝试

【问题41】加载时,出现如下错误 lALPBG1Q7bR51FrMr80EVw_1111_175.png
答:大概率是软件破解或者是软件版本问题。建议重新安装modelsim,并且安装如下版本:http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=430

【问题42】编译后,出现黄色的勾勾,是什么来的?必须解决吗?
1616125043508_81D96F37-455A-43a6-9E00-5BF7AA6E7F38.png
答:MODELSIM对源代码进行编译后产生的“警告信息”。
警告信息有可能对功能产生影响,也有可能没有影响。所以要阅读“警告信息”。
在“Transcript”窗口中,有LOG信息,双击警告的信息就可以看详细了(与Error信号类似)。

【问题43】在仿真的时候,出现“半个时钟周期”信号是怎么回事?如下图。 微信图片_20210326235516.png
微信图片_20210326235552.png

答:FPGA在做功能仿真的时候,通常是如下理想的波形:数据变化和时钟上升沿是对齐的。
微信图片_20210327000053.png
上面是理想的波形。但实际上,FPGA是硬件电路来的,信号是在时钟上升沿的触发下变化的,即先有时钟上升沿,再有信号的变化。信号的变化,是稍微延迟于时钟的。因此更实际一点的波形如下图。
微信图片_20210327000025.png
我们编写测试文件的时候,是模拟数字电路的情况,因此在给激励的时候,就应该模拟上图那样给信号,比较理想的情况,是信号稍微延迟于时钟上升沿一点点,例如延迟1个单位:#1。(这个时候时钟波形就是“1个周期-1ns”,总之不是一个完整时钟周期)
但是很多情况下,有没有必要延迟上升沿一点点呢?延时多一点点(例如改为#5)也无所谓嘛,这个时候波形就像是“1个周期-5ns”(也不是一个完整周期)。反正你看代码的时候,只看时钟上升沿有效的时刻就可以了。
如果你有强迫症,那您就把那个#5改为#1,甚至改为#0.01都行,越小,越像是一个完整的周期。
BY THE WAY,其实纠结于上面问题,最根本原因,是“凭感觉来做设计”,因为觉得“看起来不是一个完整周期”(差5ns和差1ns其实都不是一个完整周期)。其实只要做过仿真,对着代码和波形多对比,是很容易找到问题所在的。

1.jpg
微信图片_20200910170003.png
微信图片_20200910170003.png




上一篇:QUARTUS问题【汇总贴】
下一篇:Image2Lcd 工具下载
发表于 2021-3-10 08:40:25 | 显示全部楼层
MODELSIM/仿真问题【汇总帖】
http://www.fpgabbs.cn/forum.php? ... 51&fromuid=9396
(出处: 明德扬论坛)
FPGA视频课程  培训班 FPGA学习资料
吴老师 18022857217(微信同号) Q1241003385

0

主题

3

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 7 天前 | 显示全部楼层
当用modelsim在观察波形的时候,添加新的波形进去幸运飞艇

,发现没有数据,代码无改动,新添加的信号之前是有波形的,是什么原因?
答:当添加新的波形之后,需要复位,重新Run才可以的。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号-1

GMT+8, 2021-4-14 18:03 , Processed in 0.540045 second(s), 19 queries , File On.

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表