modelsim一些技巧和一些问题的解决方法(不断收集中...)

1).  ** Error: (vsim-3170) Could not find '……simulation/modelsim/rtl_work.XXXX_tb'.

问题原因:

     testbench文件名与.vt文件中module后的名字不一样,让module后的名字与testbench的名字一样即可。

 

2).  warrning :Address pointed at port A is out of bound!

    地址超过限制,问题是ram,rom或者其他的地址超过了设置的最大值后没有复位,修改一下地址的限制条件让其复位即可。

 

3).  想看内部信号的波形图,恰好又不会脚本,可以选择以下方法,亲测可用。

首先在instance中找到所需的信号,将其add to wave.此时wave显示的是no data。

然后点击simulate->restart->ok,再simulate->run->run all,即可得到新的仿真波形。

 

4).  Modelsim仿真出现大量红线

      出现红线,即是输出高阻态,在网上查过相关问题,给出的答案基本上是说输入没有初始化,并没有说的很清楚。因为我觉得输入的几个接口我明明在激励文件中已经初始化过了,但是红线依然存在,这个问题困扰了我很长时间,在最近终于找到了详细的解决方法。

      其实那些答案说的并没有错,当然先排除是仿真IP核时没有编译库的问题(因为我是联合仿真,可以避免这个问题),但并不只是初始化几个输入或者输出而已,里面的所有寄存器都需要初始化,即让他们开始都是为0或者其他确定的值,但是激励文件中并没有给出内部信号的寄存器变量或者其他变量形式给我们(我们的输出或者输入在激励文件中又会有相对应的变量),那么如何才能对它们进行初始化呢,其实很简单,如果编写Verilog习惯好的话,不会存在这样的问题的,在.v文件中的所有的时序always块中用RST信号对此always块中的所有信号初始化,然后再激励文件中对RST信号改变就可以了,如果你代码中没有其他问题,这个大量红线问题就解决了。综上所述,有一个复位信号是非常重要的。

 

ModelSim中如何指定信号的数值进制

modelsim仿真中的波形文件默认显示是二进制,而在仿真的过程中16进制的数据查看可能会更方便。

有二种方式波形文件显示的数值的进制,第一种是直接修改配置文件,第二种是使用do文件时,指定波形的显示进制

第一种方法:

可以通过修改modelsim安装目录下面的modelsim.ini文件里面的DefaultRadix 值实现

; Default radix for all windows and commands.
; Set to symbolic, ascii, binary, octal, decimal, hex, unsigned
DefaultRadix = symbolic

其默认值为symbolic,如果希望得到16进制数据显示方式,将默认值修改为hex即可。

第二种方法:

在使用do文件进行仿真时,在添加信号到波形的这一步骤中,可以指定信号的显示方式

如:

add wave  -hex /pulse_out_top_inst/Act_x   //Act_x的波形数据将会以十六进制的方式显示
add wave  -decimal /pulse_out_top_inst/Act_y  //Act_y的波形数据将会以十进制的方式显示
————————————————
版权声明:本文为CSDN博主「马中马」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/llf021421/article/details/25496807

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值