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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 1259|回复: 5

[求助] VCS在sim时对异步复位同步释放的寄存器报hold的violation问题,谢谢

[复制链接]
发表于 2024-8-20 21:49:42 | 显示全部楼层
"/disk2/D23_wangyunfeng/Syn_Lib/DBH_STD_1533IL11SJ_GE1P5V_21Q2_V3.4.10/verilog/DBH_1533IL11SJ_GE1P5V.v", 2954: Timing violation in tb_Time_Top.Time_Top_inst.T1_G1_D3_RSTN_VF1_REG
    $hold( posedge CK:100000000, posedge SN:100000000, limit: 64 );

"/disk2/D23_wangyunfeng/Syn_Lib/DBH_STD_1533IL11SJ_GE1P5V_21Q2_V3.4.10/VERILOG/DBH_1533IL11SJ_GE1P5V.v", 2782: Timing violation in tb_Time_Top.Time_Top_inst.T1_G1_D3_RSTN_S1_REG
    $hold( posedge CK:100000000, posedge RN:100000000, limit: 474 );


这里报的hold violation应该就是removal violation,建议打开标准元的Verilog文件看一下。
有的标准元库Verilog文件使用合并的$recrem,有的使用分开的$removal, $recovery,有的使用$setuphold或分开的$setup, $hold,通常Verilog model会有`ifdef RECREM,让用户选择那一种方式。

这里有另一个问题,复位同步有些DFF用的是RN复位类型的,有些是SN置位类型的,需要检查一下,看一下电路。通常复位同步电路不希望工具综合,而是直接在RTL里例化。

回复 支持 反对

使用道具 举报

发表于 2024-8-20 21:51:46 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2024-8-20 22:33:09 | 显示全部楼层


   
IC牛马 发表于 2024-8-20 08:23
谢谢您的回复,我的复位电路如果例化为一个单独的模块再调用的话,综合工具也会综合,和直接写出来的是一 ...



                               
登录/注册后可看大图


这里确实用了$hold代替$removal,理论上是可以的。
如果功能没问题的话,这几个DFF的removal, recovery不报就可以了。
方法1: 改sdf,把这几个DFF的removal, recovery改成0。
方法2: 查VCS手册,命令行设置,让VCS不查这几个DFF的removal,recovery。抱歉,我不用VCS。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-9-18 02:56 , Processed in 0.016277 second(s), 5 queries , Gzip On, Redis On.

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