在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3843|回复: 14

[求助] assertion断言两个信号边沿之间延时的问题 已解决

[复制链接]
发表于 2021-11-1 16:03:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 小花321 于 2021-11-2 16:20 编辑

各位大神,有没有人知道怎么写assertion断言:断言两个信号边沿之间的延时是否在确定的时间范围?这两个信号与时钟没有关系,确定的时间范围是[10ns,15ns]这种。
断言语句里面加入延时的语法是什么??谢谢!!

已解决,具体代码可以查看7楼
发表于 2021-11-1 21:27:32 | 显示全部楼层
都是以时钟cycle为单位延迟,应该没有延迟具体时间这种写法
个人觉得不应该有这种需求,时序逻辑检测不应脱离clock
延时语句 ##<cycle数>
发表于 2021-11-2 09:35:57 | 显示全部楼层
本帖最后由 A1985 于 2021-11-2 10:23 编辑

没有同步不同步,assert随便。。。用@(posedge sig1)(1,t1 = $time) |-> @(posedge sig2) (1,check_time( $time-t1 ))
 楼主| 发表于 2021-11-2 09:49:30 | 显示全部楼层


anpengfei 发表于 2021-11-1 21:27
都是以时钟cycle为单位延迟,应该没有延迟具体时间这种写法
个人觉得不应该有这种需求,时序逻辑检测不应脱 ...


谢谢你的回复,我也是找了好多资料都没找到关于断言具体延时的语法,我主要是用assertion来断言用verilog写的协议的,有些信号确实与时钟无关,但还需满足具体的延时要求,感觉还是有需求的
发表于 2021-11-2 11:17:16 | 显示全部楼层


小花321 发表于 2021-11-2 09:49
谢谢你的回复,我也是找了好多资料都没找到关于断言具体延时的语法,我主要是用assertion来断言用veril ...


这样的话要么不用assertion,换种思路
或者造一个周期满足你时间要求的时钟,作assertion检测时钟,延迟cycle数就行了

发表于 2021-11-2 11:51:14 | 显示全部楼层
我不太喜欢用断言,影响仿真效率。这种情况我一般直接拉探针,直接统计时延并加以检查。
发表于 2021-11-2 13:48:39 | 显示全部楼层
二楼说法是错误的,三楼是对的,sv 2012 版本的LRM对multi-clock有了很强的支持
具体代码如下:

`timescale 1ns/1ps
property p_time_check;
  time t1, t2;
@(posedge sig1) (1, t1=$time) |-> @(posedge sig2) (1, t2=$time, check_time(t1, t2));
endproperty


a_time_check : assert property p_time_check ;


automatic function void check_time(input time t1, input time t2);
if (t2-t1>15)
   $display("[ERROR] t1:%0d, t2:%0d", t1, t2);
else if (t2-t1<10)
   $display("[ERROR] t1:%0d, t2:%0d", t1, t2);
else
   $display("[PASS] t1:%0d, t2:%0d", t1, t2);
endfunction

发表于 2021-11-2 13:52:32 | 显示全部楼层


飞翔的马甲 发表于 2021-11-2 11:51
我不太喜欢用断言,影响仿真效率。这种情况我一般直接拉探针,直接统计时延并加以检查。 ...


有多影响效率,你统计过吗?
 楼主| 发表于 2021-11-2 16:11:56 | 显示全部楼层


ppeezz 发表于 2021-11-2 13:48
二楼说法是错误的,三楼是对的,sv 2012 版本的LRM对multi-clock有了很强的支持
具体代码如下:


谢谢你的详细代码,试了一下是正确的,问题已经解决了
 楼主| 发表于 2021-11-2 16:13:57 | 显示全部楼层


anpengfei 发表于 2021-11-2 11:17
这样的话要么不用assertion,换种思路
或者造一个周期满足你时间要求的时钟,作assertion检测时钟,延迟c ...


谢谢,试了7楼的代码,问题已经解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-28 22:17 , Processed in 0.028329 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表