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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2394|回复: 4

[求助] 自己写了个SV程序,但是出现了怎么也搞不明白的错误,请大家帮帮忙~~

[复制链接]
发表于 2012-9-6 22:36:01 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 老虎阿花 于 2012-9-6 22:37 编辑

(刚写的一大段不小心给删了!!!!!!TAT!!!)
大家好,本人初学sv,自己练习写了一个发包程序(4KB:16B写命令+4064DATA+16B读命令),然后从DUT读入一段刚写的4064B数据来检查读写的数据是否一致。但是原来读出来的data_len是4064,但是有一些长度却是52239B(可从dut_test.txt查出)。我的命令格式是:8B读写指令+2B数据长度+8B读写地址

例如我的读命令是这样的:cccccccccccc0fe00000000000000006

这时候我的读出的数据长度应该是0fe0(4064)但是错误的情况是cc0f(52239),由于只有一部分是错误情况我就猜想是否是读取数据在跳变前后不确定的问题,所以我尝试着在要去取长度的时候加上1ps的延迟,但是得出的结果data_len是全都是e0e0。
(PS:我查看时序图的时候发现正确的情况下data_len是在pky_in从0f变向e0是后值开始变化的,但是我的代码里面是让data_len在pkt_in刚跳变成0f就开始变值的,怎么会这样?错误情况下是在cc跳变成0f的时候data_len变值了。。。。虽然变得值是错的= =#)
写得比较多,真的希望各位大神可以帮忙看看,到底是错在哪?还是我有什么根本性的东西没明白。。。。3QQQQQQQQQQQ!!!!鞠躬~~~~ sv程序.rar (11.68 MB, 下载次数: 54 )
发表于 2012-9-6 23:06:04 | 显示全部楼层
这个貌似和SV没关系,估计是采样的方式导致错了一个字节,没有时间细看,见谅。不过可以从分析时序和代码的角度出发,时序逻辑很容易犯这种错误。
 楼主| 发表于 2012-9-7 09:22:39 | 显示全部楼层
回复 2# gaurson


   你好,一般写实现这种要求(数据随clk跳变,数据的的读取也是随clk读取的)的采样方式是怎样的?如何才能避免这个问题?
发表于 2012-9-8 22:55:05 | 显示全部楼层
这个是个比较大的问题,一般设计的输出都是由寄存器寄存输出,所以在做功能仿真的时候,实际上输出的值应该是比当前时钟时刻晚的,但有些工具在同一时刻的事件队列处理上有不同的方式,就算暂时撇开工具的差异,你如果用同一个时钟去采样这样的输出,一般都会把数据晚一拍的。处理的方式的话,都是经验来看的,我这里没有什么共同之处,主要就是注意平台和设计在同一刻看到的数据不一定是相同的,好好分析事件队列的意义,也许才有帮助,确实是比较深的话题。
发表于 2016-4-13 17:24:18 | 显示全部楼层
看看!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-9-21 19:39 , Processed in 0.021744 second(s), 10 queries , Gzip On, Redis On.

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