STA | 8. SDC是如何炼成的?验收篇 - 如履薄冰

区分set_sense和set_disable_timing *应用方法:**分频时钟的寄存器不与主时钟或者主时钟下的分频时钟有timing check,则可以使用set_sense -stop_propagation 在分频器定义的寄存器的CK pin上,cts阶段分频时钟单独长tree不与主时钟sink balnace,cts之后可以用remove_sense移出set_sense后做时序分析。​比如,选择器单元存在选择输入端到输出端的时序弧,但是设计中不存在通过该单元选择端口到输出端口的时序路径,这样可以通过屏蔽该时序弧,指导时序分析跳过包含该。 阅读详情
AI摘要

本文探讨了如何在项目前期有效验证SDC的正确性,包括使用check_timing命令进行全面体检,解析report_analysis_coverage以理解未测试路径,以及利用GCA和SpyGlass确保Top和Block约束的一致性及跨时钟域的正确性。

STA是由SDC驱动的,所以SDC的完整性、正确性和一致性直接决定着综合、布局布线以及STA的有效性。

在STA系列开篇文章《STA | 0. 静态时序分析概述》就提到了其局限性,通过后仿真不但可以弥补STA方法的缺漏,而且可以很大程度上佐证SDC的正确性。特别是对于接口时序约束,牵涉到标准协议和异步关系等,后仿真如果PASS可以让SDC作者睡得更香甜些。

后仿真一般是验证团队的职能领域,需要后端提供网表和SDF,不过后仿真需要后端所提供数据的时序是有要求的,其中hold timing必须干净,setup timing最好能干净,实在不行可以通过降频让setup满足。由此可见,后仿真往往是在项目后期才能够被执行。那我们在项目前期怎么去验收SDC呢?有了标准就不至于整天提心吊胆。下面以PT为例来进行讲解,其它工具会有些许区别。

check_timing

check_timing这个命令是在对时序约束做一个深度的体检,能检查时序约束相关的各种问题,其默认检查项是有下面的这个变量控制的:

pt_shell> printvar timing_check_defaults

这个变量的工具默认值:

  • generated_clocks

    检查generated_clocks的定义是否合理,有没有源时钟,是否存在相互循环定义的情况。

  • generic

    检查是否存在unmapped的cells,这类generic cell一般是零延时,影响时序检查准确性。

  • latch_fanout

    检查电平触发latch的扇出是不是自身,有没有latch级联的情况

  • loops

    检查组合逻辑有没有反馈回路,STA对这种反馈回路是不会分析的,需要通过set_disable_timing来打断这种反馈回路

  • no_clock

    检查是否有时序单元的clock pin不在任何时钟网络上,特别留意中途是不是通过“set_sense -stop_propagation”之类的命令强制切断了时钟的传播。

  • no_input_delay

    检查Input Port是否有关联的时钟,否则相关IN2REG路径是unconstrained的。

  • partial_input_delay

    检查在set_input_delay时,是否存在只指定-min或者-max其中之一的情况

  • unconstrained_endpoints

    检查时序单元数据Pins或者Output Ports是否没有max delay约束

  • unexpandable_clocks

    检查相关的clocks之间是否可扩展,在跨两个不同频率的时钟路径上计算时序时,往往需要扩展时钟以计算相应的setup timing

  • no_driving_cell

    检查Input Port是否定义了驱动单元,工具只会在相连的net有寄生参数存在时才会产生Warning信息

  • pulse_clock_non_pulse_clock_merge

    检查pulse clock和normal clock是否共用相同时钟网络

  • pll_configuration

  • 检查PLL的配置是否存在问题。

对于check_timing报告中的Warning和Error,要仔细地检查,最好是一个Warning/Error都没有,下面的结果也挺令人赏心悦目的(仅有2个Warning需要排查):

需要注意的是,在综合阶段需要先check_design保证设计本身没有问题的情况下,再通过check_timing进行时序约束的检查。

report_analysis_coverage

report_analysis_coverage命令可以统计出有design中需要STA进行的检查有多少项,其中有多少满足(Met),有多少违反(Violated),有多少缺失检查(Untested),如下图所示:

需要特别注意的是Untested一栏,造成的原因可以有以下几类:

  • false_paths

    set_false_path 或者asynchronous/exclusive clock groups

  • user_disabled

    timing check被用户禁用了,例如set_disable_timing

  • constant_disabled

    set_case_analysis或者实际Signal已经接电源或地(Tie High/Low)

  • no_paths

    路径不存在或被切断,造成原因也可能是set_disable_timing

  • mode_disabled

    特定mode相关时序约束,在其他mode下不会检查

  • no_endpoint_clock

    endpoint没有时钟

  • no_startpoint_clock

    startpoint没有时钟

  • no_constrained_clock

    针对skew和clock separation检查,没有约束时钟

  • no_ref_clok

    针对skew和clock separation检查,没有参考时钟

  • no_clock

    针对min_pulse_width和min_period检查,没有时钟定义

  • unknown

    其它未知原因

具体可以通过以下命令来debug:

pt_shell> report_analysis_coverage -status_detail untested -check setup

需要特别强调:对于异步路径,比如false_path,case_analysis,set_disable_timing等等,每一条SDC语句都需要designer仔细review确认,签字画押。

一致性和CDC检查

对于Top,往往还需要检查Top和Block的约束的一致性,以及跨时钟域检查。这里常用两个工具:一个是PT的GCA,适合门级网表的分析。另一个是SpyGlass,常用在RTL级别。

下图是GCA一般流程:

如果要进行Top和Block约束的一致性检查,可以参考以下命令:

ptc_shell> read_verilog ./top.v
ptc_shell> link_design top
ptc_shell> source top_constraints.tcl
ptc_shell> link_design -add block1
ptc_shell> source block1_constraints.tcl
ptc_shell> set out_dir /user/abc/compare_top
ptc_shell> compare_block_to_top -block_design block1

GCA中也可以打印出跨时钟域信息,通过以下命令:

ptc_shell> report_clock_crossing

需要强调,在RTL交付前,跨时钟域的检查是非常关键的,利用SpyGlass等工具检查其是否存在时钟同步单元(synchronizer),并在需要时添加必要的约束控制跨时钟路径,避免功能错误。另外,SpyGlass也能够进行约束一致性检查,有兴趣的可以查看其用户手册。

基于PT工具的handoff&GCA check flow(DFT) 摘要:本文介绍了DFT在完成scan insertion后需要向后端提供的文件,并重点分析了sdc文件迭代中的常见问题。为减少后端工作量,提出搭建本地PT flow进行预处理的方法,包括handoff check flow(检查sdc语法和时序违例)和GCA check flow(验证命令有效性和完备性)。文章详细说明了两种check flow的搭建流程,强调通过PT工具提前发现并修复sdc问题,确保交付质量。 阅读详情

相关推荐

数字IC工程师流片经历的价值与实战指南

在数字集成电路(IC)设计领域,从RTL代码到最终硅片的实现是一个复杂且关键的工程闭环。这一过程的核心在于理解并掌握从设计、验证、综合到物理实现的完整流程,其中涉及静态时序分析(STA)、可测试性设计(DFT)等关键技术。这些技术确保了芯片在真实物理环境下的功能正确性、时序收敛和可制造性,其价值直接决定了产品的可靠性、功耗和成本。对于数字IC工程师而言,参与流片(Tape-out)是将其理论知识应用于产业实践、形成技术闭环能力的关键环节。它不仅是个人技术能力的硬性证明,更是深入理解工艺耦合、跨团队协作和项目

weixin_33720078的博客 573

GCA检查设计约束流程

Galaxy Constraint Analyzer,简称GCA,是一个专门检查设计约束的工具,现在已经集成在Prime Time中,使用起来非常方便。另外,它有GUI图形界面,用户可以很清晰地看到当前约束存在的问题以及修改方案。

qq_34326957的博客 3155

静态时序分析—set_sense

set_sense 常见用法

m0_61544122的博客 1万+

SDC命令详解:使用set_sense命令进行约束

SDC命令详解set_sense命令用于在时钟路径上存在非单调(Non Unate)单元时(比如异或门和同或门)设置时钟极性,如果想要移除极性设置,使用remove_sense命令。本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别(该命令是在SDC 2.1引入的,同时之前的set_clock_sense命令被废除)。

保持终身学习的能力,温故而知新 4044

静态时序分析(STA)基本概念

静态时序分析中常见概念(fasle Path,multicycle path等)

m0_61544122的博客 2256

stop pin/ignore pin/exclude pin/float pin

stop pin、ignore pin、exclude pin、float pin的区别

m0_61544122的博客 7296

如何在shell单元建立washer_STA | 8. SDC是如何炼成的?验收篇 如履薄冰

你好,我是老本(Benjamin)。转发需注明作者和原文链接!STA是由SDC驱动的,所以SDC的完整性、正确性和一致性直接决定着综合、布局布线以及STA的有效性。在STA系列开篇文章《STA | 0. 静态时序分析概述》就提到了其局限性,通过后仿真不但可以弥补STA方法的缺漏,而且可以很大程度上佐证SDC的正确性。特别是对于接口时序约束,牵涉到标准协议和异步关系等,后仿真如果PASS可...

weixin_40002224的博客 441

Triplet Loss调参实战:Margin选多少?距离函数用哪个?我的模型为什么训不动?

本文深入探讨了Triplet Loss调参中的关键问题,包括margin参数的选择、距离函数的比较以及模型训练不动的常见原因。通过实战案例和技术分析,提供了针对不同场景(如人脸识别、商品图像、文本匹配)的margin黄金区间,并对比了欧式距离与余弦相似度的适用场景。文章还介绍了困难样本挖掘的最新策略和模型诊断的实用清单,帮助开发者高效解决度量学习中的工程难题。

weixin_29050271的博客 413

创建DC时序约束文件

时序约束 ###1. clock # 在设计之初 并不知道设计所能跑的时钟周期能有多小; 根据DC ICC 都是多次迭代 获得最优解的原则 ; 一开始先给自己的估计值; # 对于180nm 的库来说, 由于IO pad 的限制 , 最多能跑100Mhz左右 当然单独综合core 的频率会更大一些; #一开始 我们设置5ns 一开始紧一些 可以更快的获得 设计的时钟顶; # set clock constrians create_clock -period 5 [get_ports clk] set_dont

旺旺家族的传说 3881

STM32 USART高级功能全解析:IrDA、DMA、硬件流控与低功耗唤醒

USART是嵌入式系统中最基础的串行通信外设,其核心原理在于同步/异步时序控制与数据帧收发机制。现代MCU如STM32通过深度集成IrDA调制解调、DMA直传通道、RS232/RS485硬件流控及Stop模式唤醒等扩展能力,显著提升通信可靠性、吞吐效率与能效比。其中,IrDA SIR采用RZI编码实现抗干扰红外传输,DMA通过TXE/RXNE事件驱动实现零CPU干预的连续数据流,而硬件流控(RTS/CTS/DE)和低功耗唤醒(WUF+UESM)则分别保障工业现场鲁棒性与电池级超长待机。本文围绕STM32平台

weixin_28922227的博客 211

用SPSS做信效度分析

对问卷进行Cronbach’s Alpha信度检验。如果此值高于0.8,则说明信度高;如果此值介于0.7-0.8之间,则说明信度较好;如果此值介于0.6~0.7,则说明信度可接受;如果此值小于0.6,说明信度不佳。下面利用SPSS进行分析,点击分析–标度–可靠性分析选项,选中所要分析的问卷数据或题目。得到结果,我们要看这个有用的结果,当克隆巴赫Alpha系数(也可以看标准化后的)大于0.8时候,说明问卷信度较高。

小高~的博客 1万+

PrimeTime指南——合理设置约束

确定设置的约束是否合理,并对出现的时序检查相关警告进行debug

沧海一升的博客 8179

从波形图到参数调优:一次无感BLDC电机启动失败的深度解析

本文深入解析无感BLDC电机启动失败案例,通过波形分析揭示参数不匹配和IPM保护机制触发等关键问题。详细探讨了过零点检测、PWM周期设置及强拖参数调优的底层逻辑,并分享IPM模块保护机制与实战调优技巧,最终实现99.98%的启动成功率。

weixin_29182481的博客 821

每天学命令<report_analysis_coverage>

report_analysis_coverage[pin_port_list][-check_typecheck_type_list][-exclude_untested...

Tao_ZT的博客 3600

98DX3236内核编译过程小结

0.条件(1)Marvell技术支持提供的压缩文件:GNU EABI:arm-mv5sft-linux-gnueabi_SW3.2.tar.bz2.tar.bz2armebv7-marvell-linux-gnueabi-softfp_i686_201201.tar.bz2CPSS代码:Cpss-PP-DxCh-4.2_012.zipLinux内核文件:lsp-4.2_012.zipLSP-Uni...

snaking616 1805

SAP-MM-供应商对账平台(功能集合)

(1)集成OA审批,线上核销,结果写入SAP; (2)集成SRM,线上与供应商对账确认,写入SAP; (3)集成财务付款结果确认写入,OA回传结果,定时同步SRM供应商平台。 欢迎留言交流,功能完善,如需要页面设计,请订阅专栏

qq_32198063的博客 749

STA | 5. SDC是如何炼成的?时钟定义篇 - 附create_generated_clock花式定义方法!

前面几篇文章分别介绍了,Cell Delay,Net Delay,以及Path Delay。从《STA | 3. 如何做一条合格的Path》一文中可以看出,对于同步数字电路,只要在时序单...

graymount的博客 6951

把注释掉的代码删除掉:在 SAP ABAP 团队里打造可回溯、可测试、可演进的代码库

摘要 SAP ABAP项目中常见的"注释掉代码"反模式存在严重隐患:它增加代码噪音,制造虚假安全感,并可能引发安全和合规风险。Clean ABAP指南明确建议删除这类代码,理由包括: 版本控制系统已提供完整历史回溯能力 注释代码会误导开发者,增加理解成本 临时禁用需求应通过Feature Toggle实现 必须保留的参考代码应放入$TMP等隔离区域 团队应建立自动化检查机制,将"删除注释代码"纳入工程规范,确保代码库只表达当前有效的行为逻辑。在AI时代,可以利用工具辅

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2451

set_clock_groups/Logically Exclusive/Physically Exclusive Clocks/create_clock

虽然set_clock_groups的三种形式和set_false_path的作用效果是一样的 但是这些命令是各自用在不同的场景下,比如全部用set_false_path就体现不出clk group及同异步的概念。假设一个设计中有clk_a, clk_b, clk_c, clk_d, clk_e, clk_f共六个时钟。需要显式指定generated时钟的同异步关系。套用同异步的概念,六个时钟,只有 clk_a and clk_b和clk_c and clk_d是异步的其他两两之间都是同步时钟。

cy413026的博客 1万+

TC397 EB MCAL开发从0开始系列 之 [13.1] Dma配置实战 -实现M2M数据传输(读存储写存储)

TC3XX TC397 MCAL DMA 从0搭建测试用例-实现M2M 存储到存储数据传输

yy九歌的博客 1914

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

STA学习笔记

一、时序路径 在一个时序逻辑和组合逻辑组成的电路中对于时序路径一共有4种 1.输入input →D触发器的D端 2.输入input →到输出output 3.clk → 到D触发器的D端 4.clk → 到输出output 二、STA中的三种PVT类型 1.fast 2. slow 3. typ 其中对应ss表示最坏延迟即:Vmin + Tmax 状态 此时检查 Tsetup是否能够满足。 而对于ff表示速度最快即延迟最小:Vmax + Tmin 状态 此时检查 Thold 是否能够满足时序要

qq_43823838的博客 3810

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

STA(静态时序分析)总结

STA(Static Timing Analysis,即静态时序分析)在实际FPGA设计过程中的重要性是不言而喻的,其作用是: 1、帮助分析和验证一个FPGA设计的时序是否符合要求; 2、指导fitter(布线综合器)布局布线出符合要求的结果; 简单地说,静态时序分析(STA)告诉我们电路的实际表现如何,而提供约束(SDC文件,即上面的要求)来告诉分析工具我们希望电路的表现应该是怎样。Quartus II自带的STA工具TimeQuest TA在整个FPGA设计过程中的使用流程如下图所示: 简

weixin_44348260的博客 3686

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MCU学习笔记_STA及PT工具

一、常用命令 1.restore_session restore_session xx/xx/PTsavesessions/func_hsi_ss_1p35v_125c_max/ 2.report_timing report_timing -to [get_pins u_asic_core/xx/xx/Q] -path_type full_clock_expanded -nosplit 二、专业术语 1.BC-WC(best corner-wors...

niannian18的博客 5415

pt primetime PTE-070

报告: 检测到时钟网络中的non-unate路径。 引脚“UOR/Z”中的“CLK”同时传播时钟的反相和非反相sense。(PTE-070) 此处的或门是unate 门。为什么还有这个消息? Answer: 此警告通常被误解。PTE-070警告涉及non-unate逻辑,而不是non-unate单元。 non-unate时钟逻辑是指在传播过程中时钟的两个感知器(非反转和反转)一起到达同一引脚的情况...

zt5169的博客 2789

STA-6. SDC是如何炼成的?IO约束篇 - 附Top和Block实战经验以及DDR接口时序

一般地,SDC主要分为三个部分:时钟定义,IO约束,Exception。相应地,我们也分上中下三篇进行讲解,最后还会有最重要的《验收篇》。IO约束在顶层和模块级的主要命令都是以下几个,但...

graymount的博客 4128

移除时钟/阻止时钟传播的几个思路

三种处理方法产生影响存在区别,第一种和第二种类似,阻止clkB时钟信号通过mux,传播到clkO,但是clkB仍然存在。第三种remove_clock,移除clkB的时钟属性,其所在的clock port/pin不再具有时钟属性,clkO也不能接收到clkBx信号。1.如果clk在mux输出端,可以将case值(clk_en)设为0。例:如下图的clk mux,阻止clkB。1.case值设为0。

m0_60158342的博客 1173
上一篇: STA-6. SDC是如何炼成的?IO约束篇 - 附Top和Block实战经验以及DDR接口时序
下一篇: STA | 7. SDC是如何炼成的?Exception篇 - 附MCP电路实现方法及命令优先级实例
白山头
博客等级 码龄7年 1115粉丝 104原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值