2
的方案是: 信號active
可以是1個循環,2循環,3週期或寬視config[1:0]
輸入到模塊如何寫脈衝寬度的SystemVerilog斷言時寬度是可配置
最簡單的方式,以4週期寫屬性爲:
property p_PropA;
@(posedge clk) $rose active ##config ~active;
endproperty
但它在語法上是錯誤的。 寫這個斷言的正確方法是什麼?
感謝如何[\ *]?據我瞭解[\ *]代表seq [* 0]或seq [* 1:$]。這會減少每個週期的計數,直到激活不成立。但是,然後活動可以取消後6個時鐘,計數將是負面的計數== 0檢查失敗。那是對的嗎?而且我需要確保我的模擬不會結束,直到最後一個激活解除爲止。 – wisemonkey
'seq [*]'等同於'seq [* 0:$]'(見[lrm]中的16.9.2(http://standards.ieee.org/getieee/1800/download/1800-2012)。 PDF))。是的,櫃檯可能會消極。爲了更長的脈衝給出失敗信息,可以使用:'(active && count> 0,count - )[*] ## 1(〜active && count == 0)'。你也可以用其他方式編碼(我的例子),但它們都需要本地變量。 – Greg
感謝您的解釋:) – wisemonkey