技术文档 2026年06月21日
0 收藏 0 点赞 660 浏览 2071 个字
摘要 :

在自身实际操作Vivado 2023.1版本时, 遭遇过网表反标之后时序未更新的状况, 碰到过反标失败出现报错的情形, 还遇到过反标之后功能出现异常的问题, 新手只要依照步骤一步……

在自身实际操作Vivado 2023.1版本时, 遭遇过网表反标之后时序未更新的状况, 碰到过反标失败出现报错的情形, 还遇到过反标之后功能出现异常的问题, 新手只要依照步骤一步步去进行操作, 便能够轻松躲开这类常见的问题。

反标前必须做的文件准备

首先,开启综合之后的工程, 于Tcl Console当中键入open_run synth_1, 将综合的结果予以加载。接着, 实施write_verilog -force post_synth.v以及write_sdf -force post_synth.sdf, 把网表跟SDF文件引出至工程目录之处范围里之处。留意, SDF 文件当中应该涵盖所有路径的延迟相关信息, 不要去勾选仅仅导出顶层。

新手避坑

常见出现的报错呈现为Error: [Vivado 12-1345]这种情况, 它会有所提示表明找不到某一个单元的延迟方面的信息。而其核心的原因在于你并没有勾选 -include_timing这个参数, 又或者是在进行综合起来的时候没有使能时序方面的分析。解决之道为: 于write_sdf指令之后添加上 -include.timing与 -process_corner slow, 以此强行涵盖所有工艺角的延迟。

第二个步骤, 去创建一个空的工程, 将刚刚导出的那个post_synth.v以及post_synth.sdf进行复制并放置进去。在Sources面板那里, 通过右键点击Add Sources, 选择Add or create design sources, 以此加入网表文件。随后必须要把post_synth.v设定为顶层, 不然的话反标就会出现找不到顶层模块的情况。

新手避坑

万一碰到ERROR: [VRFC 10-716], 讲模块实例化存在不匹配情况, 大多是因为网表里对综合库的单元进行了调用, 然而新工程却没有添加综合库, 解决的办法是: 在工程设置当中把xilinx_vivado_lib路径增添到Library Search Path。

反标执行与参数校准

第三步, 于Tcl Console当中输入read_sdf -load_delay yes post_synth.sdf, 随后进行report_timing -max_paths 10, 以此来检查在时序报告里是不是会显示SDF annotation: complete。最优推荐值的关键参数为: 反标之际设置-scale 1.0, 其缘由在于该数值最贴近真实的芯片延迟, 倘若设置得过大或者过小, 均会致使时序过于宽松或者过于紧凑, 进而造成仿真结果失实。

【新手避坑】

反标之后, 时序报告始终呈现 SDF annotation: incomplete 的状态, 很大概率是 SDF 文件当中的延迟数值跟网表端口不相对应。不要直接重新运行综合, 先去运行 report_sdf -file check_sdf.rpt, 查看哪些路径没有匹配成功, 手动对网表里端口的命名规范作出调整(比如让 SDF 里的 I 与网表的 IN 相对应)。

两种反标方案对比与高频报错处理

之于实操环节, 存在着的是两种常见的有关方案, 其一为方案A, 此方案所采用的方式乃是借助Vivado自身所带有的read_sdf这一操作进行一键反标, 其具备的优点在于速度快, 适宜应用于功能验证工作之中;其二为方案B, 该方案是手动凭借vcs -sdf命令于第三方仿真器内部实施反标操作, 其优点体现为具备灵活性, 能够针对每一条路径的延迟状况予以调整。若你的设计当中存在着跨时钟域逻辑, 那么方案B会更加靠谱些, 这是由于Vivado的反标有时候会遗漏掉异步路径;要是属于纯同步设计的话, 方案A会更省事些。

【新手避坑】

方案 A 完成之后, 功能仿真出现报错 X propagation, 其缘由在于 Vivado 进行反标之际未对处理 setuphold 违例予以处理。解决的办法为: 于 read_sdf 命令之后添加 -recompute_setuphold, 以此强制重新计算建立保持时间。

时刻保持高频出现的完整报错情况为: ERROR, [该报错具体代码为SDF 4 – 2], 出现了针对实例‘u_dut/u_reg’进行注释计时过程中失败的现象。

完整解决流程:

1. 使用report_hierarchy, 查看u_dut, 看其是否在网表里, 查看u_reg, 看其是否在网表里。

2. 要是不存在, 那就是在综合的时候被优化给去掉了, 然后回到综合阶段, 再加上( keep =”true” )这样的约束。

3. 要是存在着然而反标遭遇失败这种情况, 那就去运行report_delay_calc -to u_dut/u_reg/CK , 瞧瞧延迟模型是不是相匹配。

4. 在不匹配的状况之下, 于SDF文件之中, 将(PATHPULSE)这个段落进行注释处理, 而后重新运行反标。

这样的反标方式仅仅适用于那个需要单工艺角、小规模模块的时序验证。要是你的设计之中存在多个电压域, 或者使用了黑盒子, 那么反标就会遗漏掉其中的内部路径。有着简易替代方案: 转而使用xsim的-sdf模式。它能够自动处理跨越电压域的延迟反标, 不过速度会减慢一半。不要将反标过分神化, 它只不过是在早期用于定位时序瓶颈的辅助手段而已。

微信扫一扫

支付宝扫一扫

版权:
1、本网站名称:智行者IC社区
2、本站唯一官方网址:https://www.2632.net (警惕克隆站点,认准SSL证书指纹:B2:3A:...)
3、本站资源100%原创除软件资源区,侵权投诉请提交权属证明至 xiciw@qq.com (24小时响应)
4、根据《网络安全法》第48条,本站已部署区块链存证系统,所有用户行为数据将保存至2035年3月9日以备司法调取
5、资源观点不代表本站立场,禁止用于商业竞赛/学术造假,违规后果自负
6、违法信息举报奖励200-5000元,通过匿名举报通道提交证据链
7、核心资源采用阿里云OSS+IPFS双链存储,补档申请请使用工单系统
转载请注明出处:https://www.2632.net/doc/4273.html

相关推荐
2026-06-21

本人实际测验Altium Designer 22.1版本, 遭遇过铜皮推挤功能出现卡死状况、推挤无法进行、避让功能…

2026-06-21

本人实际测试了Cadence Allegro 17.4版本, 遭遇过布局时软件瞬间没了响应, 保存的文件出现丢失情况,…

2026-06-21

笔者亲自测试DDR4 2400MHz信号线, 曾遭遇信号反射致使数据时钟抖动超出标准的糟糕状况 按部就班地操…

2026-06-21

我亲自测试了Altium Designer 22.2版本, 遭遇过等长绕线时蛇形走线报错的情况, 还碰到过规则冲突致…

2026-06-21

我亲自测试嘉立创EDA专业版V9.5.0, 遭遇了阻焊桥脱落、过孔盖油不全、阻抗线偏出公差这三个严重问题…

2026-06-21

本人亲身实测了, 从硬件助理迈向技术总监的那十年真实路径, 曾踩入过, “只会画板却不懂全局”的那种…

发表评论
暂无评论

还没有评论呢,快来抢沙发~

点击联系客服

在线时间:8:00-16:00

客服QQ

870555860

客服电话

173-5410-9521

客服邮箱

xiciw@qq.com

扫描二维码

手机访问本站

头部图片