在带有verilog的ModelSim中,您可以在继续仿真的同时将仿真状态重置回开始吗?

In ModelSim with verilog, can you reset the state of the simulation back to the start while continuing the simulation?

这是一个很难回答的问题,所以我将描述我想要的效果。

假设我有 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 是所有值的适当 'cleared',在第二次调用之前,无需重置模拟。

感谢阅读。

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

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