2015-10-26 81 views
0

这是一个非常困难的问题,所以我会描述我期望的效果。在使用verilog的ModelSim中,您可以在继续模拟的同时将模拟状态重置为开始吗?

说,如果我有Verilog代码,例如:

... 
/*procedure 1 generating stimuli for module 1*/; 
/*procedure 2 generating stimuli for module 1*/; 
... 

而且module_thing有两个影响未来所有的计算内部状态。是否有我可以使用的命令,例如'reset_state',它会将module_thing重置回其开始状态?

所以用Verilog:

... 
/*procedure 1 generating stimuli for module 1*/; 
reset_state; 
/*procedure 2 generating stimuli for module 1*/; 
... 

而在的ModelSim,module_thing适当的所有值的“清除”,它的第二个呼叫之前,无需重新设置模拟。

谢谢您的阅读。

+1

'module_thing'是否有复位信号?你通常如何重置'module_thing'的状态? – wilcroft

+0

您首先必须明白,模块并非像程序语言语句序列那样在程序上被调用。 ModelSim确实有一个重新启动命令,可以将时间重置为时间0,但我不认为这是您正在寻找的。 –

+0

如果由于某种原因需要重置内部状态,则可以在所需的任何模拟时间强制所有内部线返回其初始状态。但是,如果您需要硬件的这种功能,您应该采用wilcroft的建议,即采用重置线。强制建议只能用于模拟,并且如果设计变大,将需要大量复杂的脚本。 – Unn

回答

0

您无法从Verilog描述中控制时间,只能等待它通过,或者等待信号发生变化。你想像软件调用一个函数。这不是硬件的工作原理。而且您需要考虑运行用Verilog编写的硬件描述的仿真与用于调用仿真的脚本之间的区别。模拟总是从时间0开始并向前移动。时间0是当您的描述中的所有initialalways块开始执行语句时。

运行模拟的脚本可以告诉工具运行一定的模拟时间,停止,然后在时间0重新启动。但这意味着描述中的所有initialalways块都会重新开始执行语句。

相关问题