尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Design Compiler:不可读单元的移除
相关阅读Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482简介其实在下面两篇关于Formality的文章中笔者已经介绍了不可读(unread)的概念但仅提了一句“当Design Compiler识别到不可读触发器后它会将其从设计中移除”本文旨在详细讨论Design Compiler对不可读单元的优化方式。Formality不可读(unread)的概念https://chenzhang.blog.csdn.net/article/details/145242304Formality时序变换二不可读触发器移除https://chenzhang.blog.csdn.net/article/details/145329194首先回顾一下不可读的概念不可读是一种状态单元触发器、组合逻辑门都可能位于这种状态简单来说不可读就是单元直接或间接没有驱动任何输出端口。下面以图1为例介绍不可读的概念其中单元x2的输出悬空导致单元x2、t2_reg、t1_reg、x1都被视为不可读其中后三个单元的扇出中只有不可读单元所以被认定为是间接不可读状态。图1 综合前设计默认情况下Design Compiler在综合过程中会将所有不可读单元删除因为删除它们对设计的功能没有影响并提示以下信息。Information: The register t2_reg will be removed. (OPT-1207) Information: The register t1_reg will be removed. (OPT-1207)优化控制如果用户出于一些设计原因想要保留不可读单元可以通过一些控制变量和命令完成下面将依次介绍首先介绍的是compile_delete_unloaded_sequential_cells变量和set_compile_directives命令它们很早就存在于Design Compiler中了而set_unloaded_register_removal命令较新因此最后介绍。compile_delete_unloaded_sequential_cells变量如果把compile_delete_unloaded_sequential_cells变量默认值为true设置为false则综合工具会保留不可读触发器并将其认定为是可读状态这样做的话触发器扇入的逻辑锥也就不会被认定为是间接不可读状态从而删除了图2展示了将compile_delete_unloaded_sequential_cells变量设置为false后的综合结果。从图中可以看出组合逻辑门x2被删除了而其余单元都得以保留。图2 综合后设计对应图1综合时会提示以下信息需要注意的是只有一个触发器没有驱动任何扇出才会出现OPT-109警告也就是说该警告由删除组合逻辑门x2后的触发器t2_reg触发而不是触发器t1_reg。Warning: In design dff_100_flat, there are sequential cells not driving any load. (OPT-109) Information: Use the check_design command for more information about warnings. (LINT-98)set_compile_directives命令除了保留不可读触发器不可读组合逻辑门也可以被保留set_compile_directives命令提供了-delete_unloaded_gate选项如果-delete_unloaded_gate选项指定为false则可以阻止删除不可读单元触发器、组合逻辑门并将其认定为是可读状态下面展示了该命令的用法。dcnxt_shell set_app_var compile_delete_unloaded_sequential_cells true dcnxt_shell set_compile_directives -delete_unloaded_gate false [get_cells x2]图3展示了这种情况下的综合结果。图3 综合后设计对应图1需要注意的是该命令只能用于阻止删除不可读单元而不能用于指定删除不可读触发器当compile_delete_unloaded_sequential_cells变量设置为false时即使-delete_unloaded_gate选项指定为true也无法删除不可读触发器如下所示。dcnxt_shell set_app_var compile_delete_unloaded_sequential_cells false dcnxt_shell set_compile_directives -delete_unloaded_gate true [get_cells t2_reg]图4展示了这种情况下的综合结果。图4 综合后设计对应图1set_unloaded_register_removal命令Design Compiler在2019版本推出了set_unloaded_register_removal命令该命令可以在指定触发器上设置remove_unloaded_register属性用于控制当该触发器不可读时是否删除下面展示了该命令的用法。dcnxt_shell set_unloaded_register_removal [get_cells t2_reg] true当remove_unloaded_register属性设置为false时其优先级大于compile_delete_unloaded_sequential_cells变量和set_compile_directives命令当remove_unloaded_register属性设置为true时其优先级大于compile_delete_unloaded_sequential_cells变量但小于set_compile_directives命令。下面展示了一些例子。dcnxt_shell set_app_var compile_delete_unloaded_sequential_cells true dcnxt_shell set_compile_directives -delete_unloaded_gate true [get_cells t2_reg] dcnxt_shell set_unloaded_register_removal [get_cells t2_reg] false图5展示了这种情况下的综合结果。图5 综合后设计对应图1dcnxt_shell set_app_var compile_delete_unloaded_sequential_cells false dcnxt_shell set_compile_directives -delete_unloaded_gate true [get_cells t2_reg] dcnxt_shell set_unloaded_register_removal [get_cells t2_reg] true图6展示了这种情况下的综合结果。图6 综合后设计对应图1dcnxt_shell set_app_var compile_delete_unloaded_sequential_cells false dcnxt_shell set_compile_directives -delete_unloaded_gate false [get_cells t2_reg] dcnxt_shell set_unloaded_register_removal [get_cells t2_reg] true图7展示了这种情况下的综合结果。图7 综合后设计对应图1需要注意的是以上所说的不可读单元删除的前提是该单元没有被设置dont_touch或size_only属性。即如果一个不可读单元被设置了dont_touch或size_only属性其在综合时将被保留并被认定为是可读状态这样做的话触发器扇入的逻辑锥也就不会被认定为是间接不可读状态从而删除了。边界优化正如Design Compiler边界优化(Boundary Optimization)一文中所说的不可读信息是否能跨越层次结构传播取决于是否开启了边界优化下面给出了一个例子。图8 综合前设计如果使用compile_ultra -no_boundary_optimization命令进行综合禁止边界优化则不可读信息无法从层次外部传播到内部也就是说out1_reg及其扇入的逻辑锥不会被删除如果使用compile_ultra -no_autoungroup命令进行综合禁止自动解组则综合结果如图9所示。图9 综合后设计对应图8如果想在禁用边界优化时依旧删除不可读单元可以将compile_optimize_unloaded_seq_logic_with_no_bound_opt变量默认值为false设置为true此时不可读信息可以跨越层次结构传播该功能由2016版本引入。写在最后Design Compiler NXT在2022版本推出了report_transformed_registers命令该命令可以报告工具在优化过程中对寄存器包括触发器和锁存器进行的所有变换详细内容可以参考下面的博客。SDC命令详解使用report_transformed_registers命令进行报告https://blog.csdn.net/weixin_45791458/article/details/158101563?sharetypeblogdetailsharerId158101563sharereferPCsharesourceweixin_45791458spm1011.2480.3001.8118本文只针对Design Compiler在综合时对不可读单元的优化方式有些不可读单元在RTL代码读取时就被删除了对于HDL Compiler读取RTL代码时的优化方式可以参考下面的博客。HDL Compilerhdlin_preserve_sequential变量和preserve_sequential综合指令的使用https://blog.csdn.net/weixin_45791458/article/details/158042894?sharetypeblogdetailsharerId158042894sharereferPCsharesourceweixin_45791458spm1011.2480.3001.8118
RELATED

相关推荐

OpenClaw AI智能体框架:从Docker部署到多模型调度的自动化中枢搭建指南

OpenClaw AI智能体框架:从Docker部署到多模型调度的自动化中枢搭建指南

1. 项目概述:从“赛博皇帝”到智能中枢最近在折腾一个挺有意思的项目,叫OpenClaw。这名字听起来有点怪,但如果你把它想象成一个能帮你“统领”各种AI模型和自动化任务的“赛博中枢”,是不是就带感多了?网上那个“用Ope…

📅 2026/11/3 13:54:48
Qt drawRoundRect函数深度解析:从参数原理到性能优化实战

Qt drawRoundRect函数深度解析:从参数原理到性能优化实战

1. 项目概述:为什么圆角矩形值得深究在图形界面开发里,圆角矩形几乎无处不在。从手机App的卡片、按钮,到桌面软件的窗口、面板,它柔和了界面的棱角,带来了更现代、更友好的视觉体验。作为Qt框架的开发者,QP…

📅 2026/11/3 13:55:13
基于QClaw与AI大模型构建微信智能聊天机器人:从自动化流程到场景化应用

基于QClaw与AI大模型构建微信智能聊天机器人:从自动化流程到场景化应用

1. 项目缘起:从“技术玩具”到“实用工具”的蜕变那天晚上,我正对着电脑屏幕发呆,手里摆弄着QClaw这个新上手的工具。说实话,一开始我只是把它当成一个“技术玩具”——一个能让我把各种API和逻辑串起来、实现一些自动化小功能的平…

📅 2026/8/31 21:20:41
MORE NEWS

更多资讯

📰

Buzz技术解析:从事件通知机制到用户反馈设计

我无法基于当前输入生成符合要求的博文。 原因在于:您提供的输入内容中, 项目标题仅为“buzz” ,且后续未提供任何有效信息—— 无项目正文(原始描述为空) 无关键词列表(仅显示“最新网络热词&#xf…

📰

LLM工程中的Hindsight诊断范式:构建可回溯的请求时空图谱

1. “Hindsight”不是工具名,而是LLM工程中一个被严重低估的诊断范式 你有没有遇到过这样的情况:模型API调用突然返回401 Unauthorized,但你确认API Key没改、权限没变、环境变量也reload过了;或者Docker Desktop启动失败&#xf…

📰

运筹优化在产业落地的实践与挑战

1. 项目背景与行业现状运筹优化(Operations Research)作为一门应用数学学科,在学术界已有超过80年的发展历史。从经典的线性规划、整数规划到现代的组合优化、随机优化,理论体系日趋完善。然而在产业界,真正能将运筹优…

📰

开源协作如何推动AI科研与产业创新融合

1. 开源链接科研与产业创新的时代机遇 当上海交通大学的教授在去年开源年会上展示AI for Science的最新成果时,台下坐着的不仅有学术同行,还有来自制药、材料等行业的工程师。这种场景正在成为开源社区的新常态——科研机构的前沿探索与产业界的实际需求…

📰

Paperclip:Node.js+React轻量级AI Agent开发工具链

1. “Paperclip”不是回形针:它是一套面向AI Agent开发的Node.jsReact全栈工具链 你搜“paperclip”,第一反应是办公桌抽屉里那个银色小金属片?我第一次看到这个项目名时也愣了一下——直到在GitHub trending榜上连续三天刷到它,点…

📰

AI驱动的行为溯源逆向工具:从用户操作直达原生指令

1. 这不是“反编译工具”,而是一套行为驱动的AI逆向工作流你有没有遇到过这样的场景:某款桌面应用在点击“导出PDF”按钮时,会突然弹出一个奇怪的系统级对话框,要求访问剪贴板;或者某个移动端App在后台运行时&#xff…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬