4-sva/system verilog assertion中序列/sequence的構建(1)(包含$rose,$fell,$stable,$changed等函數)


資料來源

(1)硅芯思見:【81】SVA中的$rose和$fell (qq.com)

(2)硅芯思見:【92】SVA中的內嵌函數 (qq.com)

1.簡單序列

序列s1檢查信號“a”在每個時鍾上升沿都為高電平。如果信號“a”在任何一個時鍾上升沿不為高電平,斷言將失敗。

2.邊沿定義的序列以及使用其他內嵌函數的序列

2.1邊沿定義的序列

序列s2檢查信號“a”在每一個時鍾上升沿都跳變成1。如果跳變沒有發生,斷言失敗。

 

注1:$rose是用於判斷時鍾采樣信號前后是否存在0-1或x-1或z->1的變化; $rose僅對表達式最低位的跳變變化敏感,對於非最低位信號的變化不敏感;

注2:$fell用於判斷時鍾采樣信號前后是否存在1->0或x->0或z->0的變化;

注4:$stable用於判斷信號在連續兩個采樣時鍾周期內是否保持不變;

2.2使用其他內嵌函數的序列($onehot, $onehot0, $isunknown, $countones)

(1) $onehot(expression)

注1:只要表達式最終結果中有且僅有一位為高,該函數即返回真,其他位可以是不定態或高阻態;

(2) $onehot0(expression)

注1:只要表達式最終結果中有且僅有一位為高或者沒有任何一位為高,該函數即返回真,其他位可以是不定態或高阻態;

(3) $isunknown(expression)

注1:該函數用於檢驗表達式最終結果中的各位中是否有x或者z;如果存在x或z,$isunknown就會返回真,如果不存在,$isunknown就會返回假;

(4) $countones(expression)

注1:用於獲取表達式最終結果中電平為高的位的個數;如果表達式中沒有任何一位為高電平,則$countones返回為0,如果有一位或多位為高,$countones返回為不為0的位的個數;

3.邏輯關系的序列

序列s3檢查每一個時鍾上升沿,信號“a”或者信號“b”是高電平,則斷言成功。如果兩個信號都是低電平,斷言失敗。

4.時序關系的序列

序列s4檢查信號“a”在一個給定的時鍾上升沿為高電平,如果信號“a”不是高電平,序列失敗。如果信號“a”在任何一個給定的時鍾上升沿為高電平,信號“b”應該在兩個時鍾周期后為高電平。如果信號“b” 在兩個時鍾周期后不為1,斷言失敗。注意,序列以信號“a”在時鍾上升沿為高電平開始。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM