2013-03-27 78 views

回答

1

對於命名事件,您可以使用triggered屬性。

event ev; 
... 
wait (ev.triggered); 

有關完整說明,請參見2012 SystemVerilog LRM的第15.5.3章。

0

的IEEE 1647的13.1.1部分說

同步動作類似於等待行動,但等待行動總是要求執行前的TCM的採樣事件的至少一個週期可繼續。通過同步操作,可以在同一時間步驟繼續執行。

的1647至2008年

草案的一部分sync

當TCM達到同步動作,它的執行將被如此暫停一些其他TCM,或懸浮的TCM本身,可以被安排執行。

對於wait

當TCM到達等待行爲,其應當暫停執行,以便其他一些中藥可以調度執行。暫停的TCM本身應保持空閒,並且不得安排到發生抽樣事件的下一個 。

我想你是比較不同的事情。 SystemVerilog是仿真引擎和內核,而Specman就像內核中的附加組件或插件,用於監視和檢查您在語言中編寫的內容。在SystemVerilog事件是爲了它的模擬事件,而Specman也爲它的TCM過程創建它自己的事件。所以在Specman,它有自己的TCM進程調度。如果你使用sync,它可以在沒有額外週期的情況下進行同步;使用wait並導致採樣週期至少有一個週期。當然,如果syncwait不具有時間表達式,它們都使用TCM默認採樣事件並可能有一個或多個週期。

SystemVerilog也是基於事件的模擬器。它在每個時間步中都有增量循環。 您可以在http://standards.ieee.org/getieee/1800/download/1800-2012.pdf下載IEEE 1800-2012 SystemVerilog LRM,有關其調度參考算法,請參閱4.5。 但是在硬件建模中,在當前仿真時間步驟中沒有明確的wait synx零週期延遲,因爲仿真器將自動調度要運行的靈敏度列表的過程。如果您必須比較SpecmanSystemVerilog,它應該特別是SystemVerilog聲明語法。 SVA中存在##0語法,以使斷言過程在下一個斷言表達式之前具有零循環延遲。