資料來源
(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”在時鍾上升沿為高電平開始。