2015-10-26 82 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塊都會重新開始執行語句。

相關問題