assertion 变量时间的延迟,怎么coding
时间:10-02
整理:3721RD
点击:
比如说a信号上升后一段时间T后b信号拉升。
$rose(a) |-> ##T $rose(b)
但是T这个量,在RTL中是可配的寄存器。如果直接写##T的话,由于是变量AST语法会报错。
请问怎么写比较方便呢。
$rose(a) |-> ##T $rose(b)
但是T这个量,在RTL中是可配的寄存器。如果直接写##T的话,由于是变量AST语法会报错。
请问怎么写比较方便呢。
为什么一问到技术类的问题就木有人回答呢 - -
我觉得断言自己都不知道应该多久之后检查,那怎么检查呢?所以这个地方就应该是支持常量的吧
使用interface将寄存器值通过interface传到sva的module
T做成一个interface变量
确定可以吗?我感觉通过interface,系统应该还是认为是一个变量吧。
这个信号本身是rtl里面的变量,和其他信号一样,我是通过bind连接过来的,作为assertion module的input信号
没看清楚
-> ##a
在SVA里面这个a只能是常量
你这个功能应该做成
$rose(a_pos_delay_reg_value) |-> $rose(b_pos )
1.写一个clk 计数器 clk_counter
2.rose a 记录当前周期数t1
3. first match 找到rose b记录当前周期数t2
4. 比较t2- t1与T是否相等
也可以比较绝对时间,看您的需求了
($rose(a),t1 = clk_counter) |-> first_match (##[0:`MAX] ($rose(b), t2 = clk_counter)) ##0((t2-t1) == T)
嗯,感觉靠谱