在用modelsim仿真pll 时序仿真电路时单个的信号没有在objects中列出来

利用ModelSim进行的功能仿真,综合后仿真,时序仿真_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
利用ModelSim进行的功能仿真,综合后仿真,时序仿真
上传于||文档简介
&&利​用​M​o​d​e​l​S​i​m​进​行​的​功​能​仿​真​,​综​合​后​仿​真​,​时​序​仿​真
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
你可能喜欢在用modelsim仿真时序电路时单个的信号没有在objects中列出来_百度知道
在用modelsim仿真时序电路时单个的信号没有在objects中列出来
所写的实体为entity fenpi憨碃封度莩道凤权脯护n is
PORT(clk : IN STD_LOGIC;
clr : IN STD_LOGIC;
qout : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
q:OUT STD_LOGIC);但是在用modelsim仿真时,在objects窗口中只有clk, clr,qout这些信号,没有q信号,而且每次单独出现的输出信号都没有,只有信号向量才能显示。
我有更好的答案
它是个bus格式,肯定就输出bus格式啊,你展开,就可以看见单个的信号啊
bus格式的可以展开看见单个的,但是q信号看不到!在问您下,我仿真的时候总是出这个错Iteration limit reached at time 0 ns,我修改了runtime option 也还是出错,上网查了下,人家说我是出现了回路,迭代次数太多,请教您下是怎么回事了?
查看一下你的q有没有赋值逻辑,或者中间有没有写错了的!然后yongmodelsim现实列表的时候,不要只现实端口逻辑,将设计中所有的变量都列出来,就是右键添加仿真变量那个位置选择,再看看有没有q信号
那出现Error: (vsim-3601) Iteration limit reached at time 0 ns这个错误是什么原因了?有时候还在做一个很大的迭代!怎么解决了?
说的是进入无限循环了,查看一下的敏感列表,还有always块中赋值变量,看有什么问题没Error: (vsim-3601) Iteration limit reached at time 0 nsThis error usually indicates that ModelSim is stuck in an infinite loop. In VHDL, this can happen when a signal is placed in the sensitivity list and this signal is changed in the process. The signal changes, triggering the process, which changes the signal, which again triggers the process and the cycle continues.
其他类似问题
为您推荐:
时序电路的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁(转)Modelsim时序仿真中遇到的三个问题
我很少做时序仿真(记忆中针对8051的IP core做过QuartusII下面的时序仿真,针对Samsung的一款Nand
Flash仿真模型做过Modelsim下的时序仿真)。一是因为仿真速度慢;二是因为仿真的对象是布局布线后的门级网表,许多信号都消失不见了。由于其受限的可观察性,针对布局后网表的仿真并不适用于HDL设计的开发和调试阶段;针对HDL源代码的仿真才能提供最佳的可观察性。
时序仿真不好做,但也并不是一无是处,也有其适用的领域——门级时序仿真是最接近FPGA设计在真实器件中运行行为的仿真,是最“真”的仿真——比如在设计稳定后,不关心系统的内部实现细节,仅需要验证系统对外的功能和接口时序时;比如试图通过时序仿真确认系统的时序特性是否满足要求时。&
最近,就遇到了这么一种情况:由于HDL设计中没有采用复位信号(这是个大问题),系统的初始化完全依靠FPGA器件上电后各个寄存器的缺省状态(这应该是可行的),虽然在QuartusII下进行基于波形激励的时序仿真没有问题(这是不推荐的方法,手工编辑波形很难进行大量的仿真测试),但是针对HDL源代码的功能仿真无法进行(满屏幕都是红的X,幸好后来找到了一个方法,这是后话)。无奈之下只好尝试对布局布线后的网表进行仿真,网表的功能仿真做对了,在尝试时序仿真时却遇到了个问题。
问题一:正确的instance层次化名称指定。这一问题,在Modelsim的User's
Manual\Standard Delay Format (SDF) Timing
Annotation\Troubleshooting\Specifying the Wrong
Instance下面有详细的讲解和例子。错误地指定SDF文件对应的例化模块的层次化名称,甚至是忘记指定例化模块,是用户最容易犯的错误。抄一个Modelsim给出的例子在此。
下面的Verilog代码给出了仿真顶层的testbench模块与被仿真对象myasic的包含关系。注意,myasic的例化名称是dut,相应的层次化名称是/testbench/dut。与myasic模块对应的SDF文件是myasic_8_1200mv_85c_v_slow.sdo。
myasic dut();
如果要对testbench运行Modelsim仿真,并加载myasic.sdf文件到myasic模块中,对应的命令是:
&&& vsim -sdfmax /testbench/dut=myasic_8_1200mv_85c_v_slow.sdo
如果不指定SDF文件,对应的命令是:
&&& vsim testbench
问题二:sdo文件的重复加载和存放位置。在QuartusII中可以指定生成布局布线后的网表及对应的SDF文件。生成的网表文件以.vo或.vho为类型,SDF文件以.sdo为类型。在完成对.vo或.vho文件的编译后,就可以按照上面的例子给出的命令格式启动时序仿真。这里,假设SDF文件保存在Modelsim的仿真工作目录下。
在加载过程中,会看到如下的打印信息:
# Loading instances from
myasic_8_1200mv_85c_v_slow.sdo
# Loading instances from
myasic_8_1200mv_85c_v_slow.sdo
# Loading timing data from
myasic_8_1200mv_85c_v_slow.sdo
# Loading timing data from
myasic_8_1200mv_85c_v_slow.sdo
# ** Note: (vsim-3587) SDF Backannotation Successfully
Completed.
#&&& Time: 0
ps& Iteration: 0& Region:
/testbench& File: testbench.v
在上述过程中,SDF文件被加载了两次。第一次是按照vsim命令指定的参数进行的,第二次是按照.vo文件中的
// synopsys translate_off
initial $sdf_annotate("myasic_8_1200mv_85c_v_slow.sdo");
// synopsys translate_on
语句进行的。
加载两次并不是我们的本意。采用vsim命令或者.vo文件中的$sdf_annotate都可以实现延迟参数的载入。不过,由于vsim命令方式支持更多的配置参数,建议注释掉.vo中的$sdf_annotate语句,按照vsim命令中更具体灵活的参数进行。
在上述的两种加载方式中,SDF文件的存放位置都是相对于Modelsim当前工作目录的相对路径。如果把myasic_8_1200mv_85c_v_slow.sdo文件存放在工作目录下的netlists目录中,上述的vsim命令和$sdf_annotate语句就需要修改为:
&&& vsim -sdfmax
/testbench/dut=netlists/myasic_8_1200mv_85c_v_slow.sdo testbench
&&& // synopsys translate_off
initial $sdf_annotate("netlists/myasic_8_1200mv_85c_v_slow.sdo");
// synopsys translate_on
如果没有注释掉.vo文件中的$sdf_annotate语句,就需要在vsim命令和.vo文件中同步更新SDF文件路径。如果遗忘了修改.vo文件,只修改了vsim命令参数,就会造成$sdf_annotate语句加载失败,产生错误,仿真无法进行下去:
# ** Error: (vsim-SDF-3894) myasic_8_1200mv_85c_v_slow.sdo:
Compiled SDF file was not found.
# ** Error: (vsim-7) Failed to open SDF file
"myasic_8_1200mv_85c_v_slow.sdo" in read mode.
# No such file or directory. (errno = ENOENT)
# ** Error: (vsim-SDF-3445) Failed to parse SDF file
"myasic_8_1200mv_85c_v_slow.sdo".
#&&& Time: 0
ps& Iteration: 0& Region:
/testbench& File: testbench.v
这也是我建议注释掉.vo文件中$sdf_annotate语句的原因。
问题三:采用编译后的SDF文件加快加载速度。Modelsim中提供一个编译SDF文件的命令:
&&& sdfcom netlists/myasic_8_1200mv_85c_v_slow.sdo
netlists/myasic_8_1200mv_85c_v_slow.sdf
该命令把原始的SDF文件netlists/myasic_8_1200mv_85c_v_slow.sdo编译成了netlists/myasic_8_1200mv_85c_v_slow.sdf,并采用了gzip进行压缩。原有的文件大小为15,100KB,编译和压缩后为2,482KB。
针对编译后SDF文件的vsim命令为:
&&& vsim -sdfmax
/testbench/dut=netlists/myasic_8_1200mv_85c_v_slow.sdf testbench
编译SDF文件不但减小了文件大小,还能显著加快SDF文件的加载速度。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 pll 时序仿真 的文章

 

随机推荐