SDC命令详解:使用set_sense命令进行约束
相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录时钟极性指定引脚、端口列表/集合指定类型指定正单调性指定负单调性指定停止传播指定时钟脉冲指定时钟列表/集合指定时钟叶节点Multicorner-Multimode支持简单使用set_sense命令用于在时钟路径上存在非单调(Non Unate)单元时比如异或门和同或门设置时钟极性如果想要移除极性设置使用remove_sense命令。本文针对Design Compiler但该命令同样存在于PrimeTime、IC Compiler等工具中它们大致相同略有差别该命令是在SDC 2.1引入的同时之前的set_clock_sense命令被废除。set_ideal_network命令的BNF范式有关BNF范式可以参考以往文章为set_sense pins [-type clock] [-positive] [-negative] [-stop_propagation] [-pulse pulse_type] [-clocks clock_list] [-clock_leaf] //注该命令的选项和参数顺序任意时钟极性不管是数据信号还是时钟信号都会因为路径上单元的单调性而进行翻转常见的正单调性(Positive Unate)的单元有与门和或门常见的负单调性(Negative Unate)的单元有反相器、与非门和或非门有关单调性的详细介绍可以参考下面的博客。静态时序分析时序弧以及其时序敏感单调性https://blog.csdn.net/weixin_45791458/article/details/135970796?ops_request_misc%257B%2522request%255Fid%2522%253A%2522337a2ecbb0029b40661d27bfffd8b559%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_id337a2ecbb0029b40661d27bfffd8b559biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-135970796-null-null.nonecaseutm_term%E5%8D%95%E8%B0%83%E6%80%A7spm1018.2226.3001.4450假设时钟信号源的极性为正当通过负单调性的单元时极性取反当通过正单调性的单元时极性不变。例如当时钟信号通过偶数个反相器时极性为正当时钟信号通过偶数个反相器时极性为负。图1展示了当时钟路径上存在反相器的情况。图1 时钟路径上的反相器首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟图2为clk时钟的报告可以看出上升沿在0ns而下降沿在5ns。create_clock -period 10 [get_ports clk]图2 时钟报告由于时钟路径上的反相器到达触发器的时钟信号极性为负此时的时序报告如图3所示。图3 建立时间时序报告可以从图3中看出由于时钟clk经过反相器后极性变为负时钟报告中使用了clk来表示该时钟即时钟clk的下降沿对应于clk的上升沿。图4展示了时钟路径中存在异或门的情况。图4 时钟路径上的异或门由于时钟路径上的异或门到达触发器的时钟信号极性无法确定此时的时序报告如图5所示。可以从图5中看出时钟报告中考虑了最严格的情况即在发射时钟沿与捕获时钟沿是不同极性的时钟此时时钟沿间只有5ns的间隔。指定引脚、端口列表/集合指定设置时钟极性的叶单元(Leaf Cell)的引脚或端口而不可以是层次单元的引脚。关于什么是叶单元可以参考下面的博客。静态时序分析Leaf Cell(叶单元)https://blog.csdn.net/weixin_45791458/article/details/140306133?ops_request_misc%257B%2522request%255Fid%2522%253A%252240bad359055f68892ab10388c40033dd%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_id40bad359055f68892ab10388c40033ddbiz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-140306133-null-null.nonecaseutm_termleafspm1018.2226.3001.4450如果指定的对象是一个叶单元的引脚则该引脚所属的叶单元会被设置size only属性确保其不会在综合过程中被优化掉需要注意的是此时的size_only属性是隐式设置的这与使用set_size_only命令显式设置不同无法使用report_attribute命令或get_attribute命令直接查看而只能使用report_cell命令或report_size_only命令间接查看隐式size_only属性的优先级高于显式size_only属性使用list_size_only_types命令可以列出叶单元被设置size_only属性的原因显式或隐式。对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效关于列表和集合的区别可以参考下面的博客。SDC命令详解使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571指定类型-type选项用于指定极性类型对于Design Compiler而言该选项的参数只能是clock对于PrimeTime而言该选项还可以使用data参数在本文中不讨论。指定正单调性-positive选项用于指定只有正单调性的时序弧能传播过指定引脚或端口即时钟极性不变。该选项不能和-negative、-stop_propagation、-pulse、-clock_leaf选项一起使用。指定负单调性-negative选项用于指定只有负单调性的时序弧能传播过指定引脚或端口即时钟极性改变。该选项不能和-positive、-stop_propagation、-pulse、-clock_leaf选项一起使用。指定停止传播-stop_propagation选项用于指定停止经过指定引脚或端口的时钟传播。该选项不能和-positive、-negative、-pulse、-clock_leaf选项一起使用。指定时钟脉冲-pulse选项用于指定产生脉冲它的参数可以是rise_triggered_high_pulse、rise_triggered_low_pulse、fall_triggered_high_pulse、fall_triggered_low_pulse之中的一个。该选项不能和-positive、-negative、-stop_propagation、-clock_leaf选项一起使用。时钟脉冲的类型如图6所示如果不使用set_sense -pulse命令或者set_propagated_clock命令Design Compiler无法识别时钟脉冲也就无法在触发器时钟引脚检查最小脉冲宽度约束。图6 时钟脉冲的产生对于理想时钟时钟脉冲的宽度可以使用set_clock_latency -rise/-fall分别定义而对于传播时钟时钟脉冲的宽度是由真实路径计算出来的。指定时钟列表/集合-clocks选项用于指定时钟对象列表/集合如果不指定该选项设置的时钟极性会应用于所有通过指定引脚或端口的时钟。指定时钟叶节点-clock_leaf选项用于指定停止经过指定引脚或端口的时钟传播。此选项还有一个作用是指定的引脚或端口被视为时钟使用端因此所有扇出为指定引脚或端口的时钟分支单元引脚的is_clock_used_as_clock属性都会被设置为true。该选项不能和-positive、-negative、-stop_propagation、-pulse选项一起使用。Multicorner-Multimode支持该命令仅对当前场景生效换句话说只能在当前场景设置时钟极性。关于场景的更多介绍可以参考下面的博客。Design Compiler多工艺角和多工作模式(Multicorner-Multimode, MCMM)https://blog.csdn.net/weixin_45791458/article/details/149578771?ops_request_misc%257B%2522request%255Fid%2522%253A%2522e3267dcc7cc26380435f53994dc8b9b8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_ide3267dcc7cc26380435f53994dc8b9b8biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-149578771-null-null.nonecaseutm_termMCMMspm1018.2226.3001.4450简单使用下面以图7为例说明set_sense命令的使用。图7 时钟路径上的异或门首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟。create_clock -period 10 [get_ports clk]然后使用set_sense命令设置只有正单调的时序弧能通过U4/Y引脚。set_sense -positive [get_pins U4/Y]此时的时序报告如图8所示可以看出到达触发器的时钟极性为正上升沿在0ns而下降沿在5ns。图8 建立时间时序报告

相关新闻

HarmonyOS ArkTS 实战:实现一个校园竞赛报名与项目管理应用

HarmonyOS ArkTS 实战:实现一个校园竞赛报名与项目管理应用

HarmonyOS ArkTS 实战:校园竞赛报名与项目管理完整实现 摘要项目难度:⭐⭐⭐ 中级实战 适用人群:有 ArkTS 基础、希望学习学习类应用开发的 HarmonyOS 开发者 开发环境:DevEco Studio Next / API 24 代码规模:单页面约…

2026/7/24 20:47:09 阅读更多 →
为什么说12306是技术难度最大的实时交易系统?

为什么说12306是技术难度最大的实时交易系统?

当年12306上线后经常崩溃,铁道部转而寻求IBM、阿里巴巴等业界巨头的协助,以期攻克技术难关,开出的条件是资金无上限,但务必确保问题得到圆满解决。然而,这些行业巨擘最终都婉拒了这一挑战。在后面透露出的信息显示,即便是IBM、Oracle、Sybase这样的国际领先企业,也无法满…

2026/7/24 20:47:09 阅读更多 →
NSC_BUILDER:高效管理Switch游戏文件的完整解决方案

NSC_BUILDER:高效管理Switch游戏文件的完整解决方案

NSC_BUILDER:高效管理Switch游戏文件的完整解决方案 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encryption…

2026/7/24 20:47:09 阅读更多 →

最新新闻

HarmonyOS7 视频播放:Video 组件从入门到自定义控制器

HarmonyOS7 视频播放:Video 组件从入门到自定义控制器

文章目录前言Video 组件基础自定义播放控制全屏切换手势控制进度性能优化写在最后前言 视频播放这功能,看着简单——不就是个 Video 组件嘛。但真要做得像样,自定义控制器、全屏切换、手势控进度,一个比一个折腾。HarmonyOS7 自带的 Video 组…

2026/7/24 20:57:13 阅读更多 →
3分钟解锁《鸣潮》极致体验:WaveTools工具箱全面指南

3分钟解锁《鸣潮》极致体验:WaveTools工具箱全面指南

3分钟解锁《鸣潮》极致体验:WaveTools工具箱全面指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为《鸣潮》游戏卡顿、画质模糊而烦恼吗?想要让你的高端显卡发挥全部性能&a…

2026/7/24 20:57:13 阅读更多 →
HarmonyOS7 UI 自动化测试:UiTest 框架从 0 到 1

HarmonyOS7 UI 自动化测试:UiTest 框架从 0 到 1

文章目录前言为什么要写 UI 测试UiTest 框架概览环境搭建查找组件模拟操作断言验证测试报告写在最后前言 你有没有试过改了一行代码,结果三个页面炸了?我上个月就干过这事——改了个按钮颜色,把整个订单流程搞崩了。手动测了两天才把问题找全…

2026/7/24 20:57:13 阅读更多 →
ChatGPT、Codex、Plus与Pro:AI会调用工具,为什么仍然经常把任务做错?

ChatGPT、Codex、Plus与Pro:AI会调用工具,为什么仍然经常把任务做错?

很多开发者判断AI Agent能力时,首先会看它能不能调用工具。能不能读取项目文件。 能不能运行测试命令。 能不能查询日志。 能不能修改代码。 能不能连续完成多个步骤。当ChatGPT负责理解需求,Codex进入工程环境执行任务,Plus与Pro支撑更高频、…

2026/7/24 20:57:13 阅读更多 →
任天堂Switch自制固件大气层:3步快速上手游戏优化终极指南

任天堂Switch自制固件大气层:3步快速上手游戏优化终极指南

任天堂Switch自制固件大气层:3步快速上手游戏优化终极指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 你是否还在为Switch游戏加载缓慢、系统功能受限而烦恼?大…

2026/7/24 20:57:13 阅读更多 →
魔兽争霸III终极优化插件:3分钟解决经典游戏所有兼容性问题

魔兽争霸III终极优化插件:3分钟解决经典游戏所有兼容性问题

魔兽争霸III终极优化插件:3分钟解决经典游戏所有兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争霸III在现代电…

2026/7/24 20:56:12 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻