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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2875|回复: 3

[求助] 后仿真的问题

[复制链接]
发表于 2013-6-6 21:36:04 | 显示全部楼层 |阅读模式

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

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

x
# ** Error: d:/Xilinx/13.4/ISE_DS/ISE/verilog/src/simprims/X_RAMB18SDP.v(401): $hold( posedge WRCLK:300130 ps, posedge DI[0] &&& di0_enable:300410 ps, 286 ps );
#    Time: 300410 ps  Iteration: 1  Instance: /tb_prachframedeinterleave/uut/\frame1de_ram300/U0/xst_blk_mem_generator/gnativebmg.native_blk_mem_gen/valid.cstr/ramloop[0].ram.r/v5_noinit.ram/SDP.WIDE_PRIM18.TDP

这是我后仿真时候modelsim提示出现的错误,明显是保持时间不够,frame1de_ram300是我例化的深度300 进出1bit的 block ram,那么WRCLK是block ram的写时钟  使用的就是系统时钟  di0_enable可能是block ram的使能信号 ena  DI[0]可能是block RAM输入数据;
我怀疑是输入block ram的数据保持时间不够,就使用了buff缓冲,进行延时,但是还是出现这个错误啊!
buff缓冲使用的是
module buffer(a,
                     b);
input a;
output b;
wire b1/*synopsys keep=1*/;

assign b1=a;
assign b = b1;
endmodule

从错误上看 是我的输入数据有错误吗? 还是哪个信号啊? 多谢大虾们指点一下啊 多谢啊
发表于 2013-6-13 19:57:53 | 显示全部楼层
你的buffer怎么没有时钟啊,如果没有时钟,buffer就没有作用了
发表于 2013-6-14 17:39:37 | 显示全部楼层
你看看发生hold violation的时间,300ns左右,这时候设计应该还没有开始工作,很可能是clock或data上发生了从x到0/1的跳变,这个hold应该不用管,除非影响到了整个仿真,如果影响到了,可以分析以下是否可以不在意这个时刻的状态,如果可以就force一下。

还有,你在设计里面例化了一个buf,这个buf会在综合之后被优化掉的,除非你用什么命令让他keep住
发表于 2013-6-14 17:42:27 | 显示全部楼层
一般来说,对于单时钟域,用altera\Xilinx\CME等的FPGA综合出来的网表做后仿,不会出现hold的violation。
hold一般会出现在多时钟域设计中跨时钟域的地方。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-14 12:09 , Processed in 0.022938 second(s), 8 queries , Gzip On, Redis On.

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