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

Design Compiler:时钟树在综合时的特性

相关阅读

Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482


        有一类信号由于其自身高扇出的特性,需要使用树形结构来满足其DRC/时序约束的要求,比如时钟(复位、扫描使能等),本文就将讨论时钟树在综合时的特性。

        由于综合工具不进行时钟树综合(Clock Tree Synthesis, CTS),在使用物理实现工具进行时钟树综合前,设计中所有的时钟都是理想时钟,其时钟偏移、时钟抖动、时钟延迟、时钟转换时间由set_clock_uncertainty、set_clock_latency、set_clock_transition命令直接设置,与触发器时钟引脚直接相连的时钟路径上的DRC约束不会被检查,下面展示了一个简单的例子。

图1 简单的例子(综合前)

dc_shell> set_max_capacitance 0.0000001 [get_ports clk]
dc_shell> create_clock -period 10 [get_ports clk] // 必须定义时钟,否则无法识别时钟路径
dc_shell> compile
dc_shell> report_net [get_nets clk]****************************************
Report : net
Design : dff
Version: W-2024.09-SP2
Date   : Thu Nov  6 16:46:58 2025
****************************************Operating Conditions: fast   Library: fast
Wire Load Model Mode: topAttributes:dr - drc disabledNet                 Fanout     Fanin      Load   Resistance    Pins   Attributes
--------------------------------------------------------------------------------
clk                     16         1      0.03         0.00      17   dr
--------------------------------------------------------------------------------
Total 1 nets            16         1      0.03         0.00      17
Maximum                 16         1      0.03         0.00      17
Average              16.00      1.00      0.03         0.00   17.00
dc_shell> report_constraint -max_capacitance****************************************
Report : constraint-max_capacitance
Design : dff
Version: W-2024.09-SP2
Date   : Thu Nov  6 16:44:19 2025
****************************************Constraint                                       Cost-----------------------------------------------------max_capacitance                                  0.00 (MET)

图2 简单的例子(综合后)

        从上面的例子中可以看出,即使线网clk不满足DRC约束的要求,综合工具在综合时也并没有插入缓冲器来进行修复,代价函数中也并没有包含DRC违例。

        但是在某些情况下,综合工具还是会在时钟路径上插入缓冲器,对于那些与触发器时钟引脚不直接相连的时钟路径就是如此,如图3所示。

图3 时钟路径上的DRC修复

        在这种情况下,推荐使用set_auto_disable_drc_nets -on_clock_network true命令进行设置,这样整个时钟路径都会被禁止DRC约束检查,如图4所示。

图4 禁止整个时钟路径上的DRC约束检查

        除了set_auto_disable_drc_nets命令之外,还有两个命令可以用来禁止缓冲器插入,但它们或多或少存在一些问题,下面将分别讨论。

set_dont_touch_network

        有关set_dont_touch_network命令的详细介绍,可见下面这篇博客。

SDC命令详解:使用set_dont_touch_network命令进行约束https://blog.csdn.net/weixin_45791458/article/details/154078168?spm=1001.2014.3001.5501        set_dont_touch_network命令可以将当前设计中的一组端口、引脚或时钟标记为dont_touch网络源(设置端口、引脚或时钟对象的dont_touch_network属性为true),且dont_touch属性会沿着组合逻辑进行传播,这会阻止对整个时钟路径进行逻辑的添加、删除或尺寸调整,从而禁止缓冲器插入。

        但是该命令无法禁止整个时钟路径上的DRC约束检查,因此综合工具会报告出现DRC违例。

        该命令还有一些副作用,它可能会影响一些数据路径(在时钟作为数据使用的情况下)的优化,详细介绍可见下面这篇博客。

静态时序分析:时钟标记(作为数据使用的时钟)及其分析方式https://chenzhang.blog.csdn.net/article/details/146268285

set_ideal_network

        有关set_ideal_network命令的详细介绍,可见下面这篇博客。

SDC命令详解:使用set_ideal_network命令进行约束https://blog.csdn.net/weixin_45791458/article/details/146082417?spm=1001.2014.3001.5501        set_ideal_network命令可以将当前设计中的一组端口或引脚标记为理想网络源(设置端口或引脚对象的ideal_network_source属性为true),且在一定情况下,理想属性会沿着组合逻辑进行传播,所有理想网络中的单元和线网都会被设置dont_touch属性,这会阻止对整个时钟路径进行逻辑的添加、删除或尺寸调整,从而禁止缓冲器插入,同时理想网络也会被禁止DRC约束检查。

        与set_dont_touch_network命令类似,该命令的副作用也是可能会影响一些数据路径(在时钟作为数据使用的情况下)的优化。

        下面针对这个副作用给出一个简单的例子。

图5 针对副作用的简单例子(综合前)

        从上面的例子中可以看出,设计的时钟端口不仅连接到了触发器时钟引脚,还连接到了触发器的数据引脚,因此时钟作为数据使用了。        

        下面展示了使用set_dont_touch_network命令进行约束的结果,由于数据路径上的扇出过大,综合工具报告出现了DRC违例。

dc_shell> set_max_fanout 2 [current_design]
dc_shell> create_clock -period 10 [get_ports clk] // 必须定义时钟,否则无法识别时钟路径
dc_shell> set_dont_touch_network [get_ports clk]
dc_shell> compile
dc_shell> report_constraint -max_fanout****************************************
Report : constraint-max_fanout
Design : simple_register
Version: W-2024.09-SP2
Date   : Thu Nov  6 18:53:14 2025
****************************************Constraint                                       Cost-----------------------------------------------------max_fanout                                       1.00 (VIOLATED)

图6 使用set_dont_touch_network命令约束的综合结果

        下面展示了使用set_ideal_network命令进行约束的结果。

dc_shell> set_max_fanout 2 [current_design]
dc_shell> create_clock -period 10 [get_ports clk] // 必须定义时钟,否则无法识别时钟路径
dc_shell> set_ideal_network [get_ports clk]
dc_shell> set_ideal_network [get_ports d]  // 为了传播理想属性
dc_shell> compile
dc_shell> report_constraint -max_fanout****************************************
Report : constraint-max_fanout
Design : simple_register
Version: W-2024.09-SP2
Date   : Thu Nov  6 19:15:12 2025
****************************************Constraint                                       Cost-----------------------------------------------------max_fanout                                       0.00 (MET)

图7 使用set_ideal_network命令约束的综合结果

        下面展示了使用set_auto_disable_drc_nets命令进行约束的结果。

dc_shell> set_max_fanout 2 [current_design]
dc_shell> create_clock -period 10 [get_ports clk] // 必须定义时钟,否则无法识别时钟路径
dc_shell> set_auto_disable_drc_nets -on_clock_network true
dc_shell> compile
dc_shell> report_constraint -max_fanout

图8 使用set_auto_disable_drc_nets命令约束的综合结果

http://www.dtcms.com/a/576918.html

相关文章:

  • 阿里云 icp app备案
  • 算法基础篇:(二)基础算法之高精度:突破数据极限
  • 香港100G高防服务器的防御力如何?
  • 网站文章怎么做分享qq网站建设步骤详解视频教程
  • 开发者实践:机器人集群的 API 对接与 MQTT 边缘调度解耦
  • 百日挑战——单词篇(第十五天)
  • 中国SIP中继类型
  • Kubernetes 原生滚动更新(Rolling Update)完整实践指南
  • 沈阳做企业网站哪家好网架提升公司
  • [N_151]基于微信小程序校园学生活动管理平台
  • Stager贴花工作流:告别Painter的“烘焙式”贴图
  • Linux 开发语言选择指南:不同场景该用哪种?
  • h5网站动画怎么做的重庆企业网络推广价格
  • 免费创建网站带咨询的免费企业网站程序asp
  • css 宽度屏幕50%,高度等于宽度的50%,窗口变化,比例不变(宽度百分比,高度等比例自适应)
  • Photoshop通道的应用
  • VUE3+element-plus 循环列表中图标由后台动态添加
  • LangFlow前端源码深度解析:核心模块与关键实现
  • 从 Rust 到 Flutter:嵌入式图形与构建工具全景指南
  • 转折·融合·重构——2025十大新兴技术驱动系统变革与全球挑战应对
  • IP地址、子网掩码与网段:网络划分的核心概念
  • 怎样才能在百度搜索到自己的网站wordpress去掉分类栏目前缀
  • 视频孪生与空间智能:重构物理世界的时空认知范式
  • Rust 练习册 11 :可变变量与可变引用详解
  • 在VSCode中:解决终端输出中文乱码问题
  • MATLAB基于BNT工具箱的多输入分类预测
  • 【主流开发语言深度对比】Python/Go/Java/JS/Rust/C++评测
  • 从开发到部署
  • 【无标题】Vscode 报错 got bad result from install script无法远程链接服务器
  • 基于Linux的TCP服务端客户端通信(一)