0
在systemverilog中進行數字設計時,遇到了有關賽車條件的問題。SystemVerilog註冊設計競賽規避
驅動我設計的測試臺(我無法修改)驅動輸入,使得設計中的某些寄存器由於競爭條件而無法正常工作。
下面是一個EDA-操場例子說明了所發生的事情(「之前」輸入改變時鐘確實,在時間爲15ns):
http://www.edaplayground.com/x/rWJ
有沒有一種方法,使設計(一簡單的註冊在這種情況下)抵抗這個特殊的問題?我需要的是一個像「out_data < = preponed(in_data);」或類似的東西會使輸入信號的順序變化無關緊要。
我已經閱讀了SystemVerilog LRM中的#1步驟,但我不確定如何使用它,也不知道它是否可以幫助我解決這個特定的問題。
時鐘發生器寫得不好首先。它應該是'clock =〜clock',在那裏有**阻塞**賦值。另外,如果您的輸入和時鐘同時發生變化,您會期望什麼樣的行爲? – Serge
我同意,但時鐘發生器是故意寫的,目的是爲了說明設計中如何發生競態條件。如果兩者同時改變,那麼我希望寄存器輸出可以在任何改變之前獲得輸入信號的值。 –
沒有好的方法來避免由測試臺人工創建而沒有固定後者的比賽。你需要讓你的dut不可綜合才能嘗試。即在您的in_data中添加#1ns延遲 – Serge