我想問一下系統Verilog語言中Specman e的sync
對應件是什麼。Specman e'同步'系統Verilog對應件
我知道@ event_indentifier
相當於Specman e的wait @ event
。 但是sync @ event
怎麼樣?
我想問一下系統Verilog語言中Specman e的sync
對應件是什麼。Specman e'同步'系統Verilog對應件
我知道@ event_indentifier
相當於Specman e的wait @ event
。 但是sync @ event
怎麼樣?
對於命名事件,您可以使用triggered
屬性。
event ev;
...
wait (ev.triggered);
有關完整說明,請參見2012 SystemVerilog LRM的第15.5.3章。
的IEEE 1647的13.1.1部分說
同步動作類似於等待行動,但等待行動總是要求執行前的TCM的採樣事件的至少一個週期可繼續。通過同步操作,可以在同一時間步驟繼續執行。
的1647至2008年
草案的一部分sync
當TCM達到同步動作,它的執行將被如此暫停一些其他TCM,或懸浮的TCM本身,可以被安排執行。
對於wait
當TCM到達等待行爲,其應當暫停執行,以便其他一些中藥可以調度執行。暫停的TCM本身應保持空閒,並且不得安排到發生抽樣事件的下一個 。
我想你是比較不同的事情。 SystemVerilog是仿真引擎和內核,而Specman就像內核中的附加組件或插件,用於監視和檢查您在和語言中編寫的內容。在SystemVerilog事件是爲了它的模擬事件,而Specman也爲它的TCM過程創建它自己的事件。所以在Specman,它有自己的TCM進程調度。如果你使用sync
,它可以在沒有額外週期的情況下進行同步;使用wait
並導致採樣週期至少有一個週期。當然,如果sync
和wait
不具有時間表達式,它們都使用TCM默認採樣事件並可能有一個或多個週期。
SystemVerilog也是基於事件的模擬器。它在每個時間步中都有增量循環。 您可以在http://standards.ieee.org/getieee/1800/download/1800-2012.pdf下載IEEE 1800-2012 SystemVerilog LRM,有關其調度參考算法,請參閱4.5。 但是在硬件建模中,在當前仿真時間步驟中沒有明確的wait
synx零週期延遲,因爲仿真器將自動調度要運行的靈敏度列表的過程。如果您必須比較Specman與SystemVerilog,它應該特別是SystemVerilog聲明語法。 SVA中存在##0
語法,以使斷言過程在下一個斷言表達式之前具有零循環延遲。