当前位置: 首页 > news >正文

Formality:时序变换(五)(触发器复制)

相关阅读

Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm=1001.2014.3001.5482


一、引言

时序变换在Design Compiler的首次综合和增量综合中都可能发生,它们包括:时钟门控(Clock Gating)、触发器合并(Register Merging)、触发器复制(Register Replication)、常量触发器移除(Constant Register Removal)、不可读触发器移除(Unread register removal)、流水线重定时(Pipeline Retiming)、自适应重定时(Adaptive Retiming)、相位反转(Phase Inversion)、多比特触发器组(Multibit Banking)。

合适的时序变换越多,就能获得更好的结果质量(QoR),但时序变换会无法避免地造成等价性检查的困难,因为这改变了逻辑锥的结构。虽然使用SVF文件能够解决大部分的问题(关于SVF文件的介绍,参考Design Compiler:set_svf命令以及SVF文件简介一文),但对这些时序变换的了解有助于在不使用SVF文件时进行设置和在SVF文件失效时进行调试。

本文将详细阐述时序变换中的触发器复制。

二、触发器复制

图1 触发器复制

如图1所示,在某些情况下,Design Compiler可能为了性能而复制触发器(可通过set_register_replication命令或compile_register_replication变量(对于拓扑模式)设置),随后在SVF文件中添加guide_reg_duplication命令;当Formality处理SVF文件时,将会确认guide_reg_duplication命令的有效性,如果有效(这里指的是命名相关的有效性,而不是功能相关)则将指定的触发器进行复制。

三、可能会出现的问题

问题1:guide_reg_duplication命令被Formality拒绝。

解决方案1:使用report_svf_operation -status rejected -command reg_duplication命令查看被拒绝的guide_reg_duplication命令。如果Formality提示"Cannot find reference cell",即找不到指定的触发器,这时候应该检查SVF文件中是否有改变了触发器名字的命令以及其他有关名字的设置。

问题2:实现设计中存在未匹配的触发器。

解决方案2:使用report_unmatched_points命令查看,如果是因为触发器复制失败,则该触发器驱动的所有比较点可能都失败,且失败的模式中应当复制的触发器的值相反。如果已使用verify命令进行验证,可以使用analyze points -fail命令分析失败的比较点,但这是验证后的调试方式。

四、绕开SVF文件

当本应复制的触发器因为未使用SVF文件等原因没有正确合并时,可以使用set_user_match命令进行设置,需要注意的是,该命令并不会验证设置是否与真实情况一致,也就是说如果一个不应该复制的触发器被set_user_match命令错误地设置,会导致验证错误。手动使用guide_reg_duplication命令也是可以的,Formality不会确认其有效性。

五、示例

例1 触发器复制

// 参考设计 module duplication(a, clk, z1, z2); input a, clk; output z1, z2; reg a_r1; assign z1 = a_r1; assign z2 = a_r1; always @(posedge clk) begin a_r1 <= a; end endmodule // 实现设计 module duplication( a, clk, z1, z2 ); input a, clk; output z1, z2; DFFQXL a_r1_reg ( .D(a), .CK(clk), .Q(z1) ); DFFQXL a_r1_reg_rep1 ( .D(a), .CK(clk), .Q(z2) ); endmodule

下面的图2是参考设计的原理图,图3是实现设计的原理图。

图2 参考设计的原理图

图3 实现设计的原理图

例1的匹配结果如下所示,可以看出实现设计中存在一个未匹配的比较点。

*********************************** Matching Results *********************************** 3 Compare points matched by name 0 Compare points matched by signature analysis 0 Compare points matched by topology 2 Matched primary inputs, black-box outputs 0(1) Unmatched reference(implementation) compare points 0(0) Unmatched reference(implementation) primary inputs, black-box outputs ---------------------------------------------------------------------------------------- Unmatched Objects REF IMPL ---------------------------------------------------------------------------------------- Registers 0 1 DFF 0 1 ****************************************************************************************

此时的验证失败, 被复制的触发器驱动的输出端口z2验证失败,如下所示。

********************************* Verification Results ********************************* Verification FAILED ------------------- Reference design: r:/WORK/duplication Implementation design: i:/WORK/duplication 2 Passing compare points 1 Failing compare points 0 Aborted compare points 0 Unverified compare points ---------------------------------------------------------------------------------------- Matched Compare Points BBPin Loop BBNet Cut Port DFF LAT TOTAL ---------------------------------------------------------------------------------------- Passing (equivalent) 0 0 0 0 1 1 0 2 Failing (not equivalent) 0 0 0 0 1 0 0 1 ****************************************************************************************

其中比较点z2失败的模式如图4所示,其中参考设计和实现设计的触发器值是相反的,即一个是1,另一个就是0。

图4 失败的模式

假设手动使用guide_reg_duplication命令(使用SVF文件也可),例1的SVF处理结果如下所示。

***************************** Guidance Summary ***************************** Status Command Accepted Rejected Unsupported Unprocessed Total ---------------------------------------------------------------------------- reg_duplication : 1 0 0 0 1

图5为SVF处理后(match命令可以完成这一点)的参考设计原理图。

图5 参考设计处理后的原理图

此时的验证结果如下所示,可以看出验证成功了。

********************************* Verification Results ********************************* Verification SUCCEEDED ---------------------- Reference design: r:/WORK/duplication Implementation design: i:/WORK/duplication 4 Passing compare points ---------------------------------------------------------------------------------------- Matched Compare Points BBPin Loop BBNet Cut Port DFF LAT TOTAL ---------------------------------------------------------------------------------------- Passing (equivalent) 0 0 0 0 2 2 0 4 Failing (not equivalent) 0 0 0 0 0 0 0 0 ****************************************************************************************

六、写在最后

Design Compielr中Multibit优化的解组过程与触发器复制类似,此时Design Compiler会在SVF文件中添加guide_multibit命令。

http://www.jsqmd.com/news/1161531/

相关文章:

  • 2026 寿县装修行业深度盘点:客户痛点拆解与全场景整装服务商对比指南 - 国麟测评
  • 零依赖HTML演示文稿生成器:技术决策者的颠覆性演示解决方案
  • 如何用AI股票分析系统在10分钟内建立个人智能投资助手
  • day01-704.二分查找
  • 基于SpringBoot的超市管理系统设计与实现【源码+文档+部署讲解】
  • 警惕旧金折价陷阱!2026贵金属白皮书苏州合扬原价实收无损耗 - 奢侈品交易观察员
  • 怎么结合目标岗位JD来优化简历?从ATS筛选原理到实战七步法
  • Unreal Engine角色物理终极指南:如何用KawaiiPhysics实现自然流畅的摇摆动画
  • 终极指南:3分钟掌握国家中小学智慧教育平台电子课本解析工具
  • 专业门窗密封条定制,品质保证厂家直供联系方式 - 速递信息
  • 北京华恒智信为制造业破解扁平化改革下班组长管理困境
  • DDrawCompat终极指南:三步让经典Windows游戏在现代系统重获新生
  • Noto字体终极指南:如何用800+语言支持彻底告别“豆腐块“问题
  • 2026重庆越野车改装哪家好?竞极线渝北旗舰店多车型改装方案+价格+备案指南 - 资讯焦点
  • 终极免费方案:5分钟解锁Microsoft 365完整功能,告别订阅烦恼!
  • 固安装修公司怎么选?昌遂欧派大家居官方旗舰店:欧派原厂整装+闭口合同+本地实体老店,看完这篇再决定! - 商业先知
  • 美控污泥浓度仪的四大核心优势是什么?2026 高精度工业仪表优选 - 仪表人老张
  • 影刀RPA PDF读取与内容提取实战
  • 一线观察:长期接触中发现的保定市工程造价标书代写底层现象 - 速递信息
  • 2026 年国内激光镭雕机行业主流产品综合评测:基于公开参数的多维度盘点 - 互联网科技品牌测评
  • Cursor AI生成Svelte组件后必须做的4项安全加固(XSS防护、TypeScript严格校验、$lib路径规范化、SSR兼容性验证)
  • C指针---指针数组与数组指针
  • 2026年7月天津本地本科征集报考公司推荐排行一览 - 起跑123
  • Kubernetes Secret 加密实践:ETCD 里的敏感信息不能明文存
  • CSS相关内容(七)
  • 如何在draw.io中快速创建专业C4架构图:c4-draw.io插件完全指南
  • 2026济南钻石回收市场深度调研:行情波动下的价值锚点 - 奢侈品回收中心
  • 如何快速掌握图片元数据管理:ExifToolGUI免费开源工具完整指南
  • ExifToolGUI:图像元数据管理的终极可视化解决方案
  • 2026【同城便民上门】佛山全城上门回收劳力士名表,易奢福专业鉴定当场转账结算 - 奢侈品回收实体店