2016-09-07 71 views
0

我正在學習SystemVerilog聲明。我申請了SVA來檢查有效的規範。規格如下:SystemVerilog聲明有效(請求) - ack檢查?

當有效驅動(0到1)時,有效應該等於1 ,直到ack被驅動(1)。當確認無效(1到0)時,有效的 也被取消斷言(1到0)。

爲了檢查這個規範,我寫了兩個屬性(pr1和pr2)。您可以從下面的鏈接看到SVA代碼。 https://www.edaplayground.com/x/5gHd

我預計兩個屬性完全相同。然而,pr2並不像我預期的那樣工作(我預計斷言可能在50ns失效,因爲有效等於1,但在50ns時ack等於0)。

波形:https://www.edaplayground.com/w/x/u5

什麼是錯在PR2(在50ns的)?

此致

+1

'pr1'乍一看顯得正確。無論'ack'在做什麼,只要'valid'被聲明,'pr2'中的第一個後置條件就會匹配。這可能不是你想要的。 – Teajay

回答

0

按照SystemVerilog的LRM:

與一系列分鐘最小和迭代可以與 連續重複操作符[*分鐘來表示的最大最大數目的重複:最大。

在PR2您使用的重複操作,最大等於$它代表有限,但迭代的無限數量,從而valid斷言和valid下山後才ack將被檢查序列valid[*1:$]會持續多久。