微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > assertion 变量时间的延迟,怎么coding

assertion 变量时间的延迟,怎么coding

时间:10-02 整理:3721RD 点击:
比如说a信号上升后一段时间T后b信号拉升。
$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)

嗯,感觉靠谱

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top