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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2000|回复: 9

[求助] 发送的激励信号是在本时钟边沿还是下一个时钟边沿被捕获呀

[复制链接]
发表于 2021-2-23 10:31:40 | 显示全部楼层 |阅读模式

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

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

x
image.png image.png

RT,绿色框内是tb中在时钟边沿要发送给DUT的激励信号,vld_r是要接收这个激励信号的DFF,按道理 在本时钟边沿发送的激励信号,应该在下一个时钟边沿被下一级FF捕获才对吧,可是测试出来怎么在同一时钟边沿就捕获到了呀?

发表于 2021-2-23 11:27:03 | 显示全部楼层
换成非阻塞赋值试下,阻塞赋值更新在observed之前的NBA region,非阻塞赋值调度更新好像是在observed之后的reactive region
发表于 2021-2-23 12:42:23 | 显示全部楼层
默认是same cycle,但可以修改.
 楼主| 发表于 2021-2-23 13:37:54 | 显示全部楼层


anpengfei 发表于 2021-2-23 11:27
换成非阻塞赋值试下,阻塞赋值更新在observed之前的NBA region,非阻塞赋值调度更新好像是在observed之后的 ...


非阻塞赋值还是同一边沿更新的
 楼主| 发表于 2021-2-23 13:38:49 | 显示全部楼层


randolpha 发表于 2021-2-23 12:42
默认是same cycle,但可以修改.


怎么修改呢
发表于 2021-2-23 13:50:41 | 显示全部楼层


default input #1step ouput #0;默认输出延时是0,所以同一周期

发表于 2021-2-23 14:02:06 | 显示全部楼层


randolpha 发表于 2021-2-23 13:50
default input #1step ouput #0;默认输出延时是0,所以同一周期


这是在那个参数里面设置这个?学习下
发表于 2021-2-23 14:05:04 | 显示全部楼层


新嘴小王安子 发表于 2021-2-23 14:02
这是在那个参数里面设置这个?学习下


clocking定义里..
 楼主| 发表于 2021-2-23 15:32:10 | 显示全部楼层


anpengfei 发表于 2021-2-23 11:27
换成非阻塞赋值试下,阻塞赋值更新在observed之前的NBA region,非阻塞赋值调度更新好像是在observed之后的 ...


更正一下,你说的是对的,感谢!应该就是仿真区域的问题。但是这个tb是用verilog写的,timing region里没有Observe区。原因我猜应该是这样的:

首先在ACTIVE区执行阻塞赋值(即disp_i_xxx)和非阻塞赋值的右侧部分,但是同一层次事件没有执行顺序,从结果来看很可能是先执行了阻塞,再执行的非阻塞右侧计算(不知道不同的仿真工具会不会不一样,这里是VIVADO自带的),而我代码里非阻塞的右侧部分用的就是disp_i_xxx(即阻塞赋值部分)的结果。
接着在NBA区更新非阻塞赋值,所以成了在同一时钟变沿采样。
增加#0或者改成非阻塞赋值都可以在下一时钟沿采样。
发表于 2021-3-1 17:14:13 | 显示全部楼层


anpengfei 发表于 2021-2-23 11:27
换成非阻塞赋值试下,阻塞赋值更新在observed之前的NBA region,非阻塞赋值调度更新好像是在observed之后的 ...


这个正解,我之前也碰到这个问题,也是这样解决的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-14 00:08 , Processed in 0.023055 second(s), 7 queries , Gzip On, Redis On.

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