静态时序分析(二):赛灵思时钟约束基本概念

数字电路静态时序分析基础三 数字电路静态时序分析基础建立静态时序分析的环境1. 时钟约束1.1 建立时钟 creat_clock1.2 时钟不确定性 set_clock_uncertainty1.3 时钟延迟 set_clock_latency1.4 生成时钟 creat_generate_clcok2. 外部约束2.1 输入延时 set_input_delay2.2 输出延时 set_output_delay3. DRC4. Virtual clock5. Refining the Timing Analysis 来源:IC创新学院 阅读详情

虽然sdc大大小小有上百条命令,但实际常用的其实就那么10几条。今天我们来介绍下与时钟相关的命令。主要有以下命令:

create_clock

create_generated_clock

set_clock_uncertainty

set_clock_groups

任何sdc首先定义的都是时钟,对于一个同步电路而言,缓存器和缓存器之间的路径延迟时间必须小于一个Clock 周期(Period),也就是说,当我们确认了Clock 规格,所有缓存器间的路径的Timing Constraint 就会自动给定了。Clock规格主要包含Waveform、Uncertainty和Clock group的定义。我们把它们称为时钟的三要素,当然创建任何时钟都要检查一下这三者有没有正确定义。

create_clock

主要定义一个Clock的source源端、周期、占空比(时钟高电平与周期的比例)及信号上升沿及下降沿的时间点。

来看一个最简单的例子:

这个时钟描述成sdc语句就是:

create_clock -name SYSCLK -period 20

-waveform {0 5} [get_ports2 SCLK]

waveform后面跟上升沿和下降沿的时间

-waveform {time_rise time_falltime_rise time_fall ...}

如果没指定-period,默认的waveform为{0, period/2}

create_generated_clock

generated clocks是另外一个重要的时钟概念

generated clocks 是从master clock中取得的时钟定义。master clock就是指create_clock命令指定的时钟产生点,如图所示:

我们可以用如下命令来描述generated clocks:

#定义master clock

create_clock -name CLKP -period 10

-waveform {0 5} [get_pins UPLL0/CLKOUT]

#在Q点定义generated clock

create_generated_clock -name CLKPDIV2

-source UPLL0/CLKOUT

-master_clock CLKP -divide_by 2 [get_pins UFF0/Q]

一般我们把时钟的源头会定义成create_clock,而分频时钟则会定义为create_generated_clock. 两者的主要区别在于CTS步骤,generated clock并不会产生新的clock domain, 而且定义generated clock后,clock path的起点始终位于master clock, 这样source latency并不会重新的计算。这是定义generated clock的优点所在。

Virtual clock

这边还有一个经常用的概念就是Virtual Clock,虚拟时钟。

前面介绍的create_clock, create_generated_clock 都是real clock。而virtual clock则不挂在任何port或者pin上,只是虚拟创建出来的时钟。如下所示:

#定义虚拟时钟

create_clock -name VCLK -period 10 -waveform {0 5}

我们通常会把input/output delay挂在virtual clock上,因为input/output delay约束本来就是指片外的时钟,所以挂在虚拟时钟上较为合理。当然如果要省事情,直接挂在real clock上也是可以的。

set_clock_uncertainty

主要定义了Clock信号到时序器件的Clock端可能早到或晚到的时间。主要是用来降低jitter对有效时钟周期的影响。值得注意的是,在setup check中,clock uncertainty是代表着降低了时钟的有效周期;而在hold check中,clock uncertainty是代表着hold check所需要满足的额外margin。

来看下面一条reg2reg path. 对照着如下时钟波形图。可以写出下面的约束。

set_clock_uncertainty-from VIRTUAL_SYS_CLK

-to SYS_CLK -hold 0.05

set_clock_uncertainty -from VIRTUAL_SYS_CLK

-to SYS_CLK -setup 0.3

set_clock_uncertainty -from SYS_CLK

-to CFG_CLK -hold 0.05

set_clock_uncertainty -from SYS_CLK

-to CFG_CLK -setup 0.1

set_clock_groups

定义完时钟后,我们也需要通过设置clock group来确认各个时钟之间的关系。这是很重要的一步,因为通常我们还需要做cross domain check,如果clock group设错了,会导致整个STA检查错误。一般有三个选项:asynchronous,physically_exclusive和logically_exclusive。

asynchronous代表两个异步的clock group

physically_exclusive代表两个clock group在物理意义上相互排斥,比如在一个source pin上定义了两个时钟。

logically_exclusive代表两个clock group在逻辑上相互排斥,比如两个clock经过MUX选择器。一个简单的例子:

set_clock_groups -physically_exclusive

-group {CLK1 CLK2} -group {CLK3 CLK4}

clock group的定义异常谨慎,需要和前端再三确认。

深入解析set_input_delay与set_output_delay在FPGA时序约束中的关键作用 本文深入解析了set_input_delay与set_output_delay在FPGA时序约束中的核心作用。通过生动的工厂比喻和ADC、DDR等实战案例,详细阐述了这两个命令如何作为沟通FPGA内部与外部时序的“外交官”,确保系统级时序收敛。文章重点拆解了-max与-min参数对建立时间和保持时间检查的影响,并提供了系统同步与源同步接口的约束思路,是FPGA开发者进行稳健时序设计的必备指南。 阅读详情

相关推荐

数字IC与FPGA双线求职策略:技术栈重叠下的秋招实战指南

数字电路设计是集成电路与可编程逻辑器件的共同技术基础,其核心原理涉及RTL级描述、时序分析和状态机设计。通过Verilog/SystemVerilog等硬件描述语言,工程师能够实现从算法到硬件的高效映射,这一技术价值体现在提升系统性能、降低功耗等多方面。在应用场景上,数字IC设计侧重于ASIC流程中的低功耗和时序收敛,而FPGA开发更注重快速原型验证和系统集成。随着秋招季的到来,掌握UVM验证方法学和AMBA总线协议等热词相关的技能,成为求职者同时应对数字IC设计与FPGA岗位的关键。本文通过分析技术栈的重

weixin_34175509的博客 397

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

本文详细介绍了SDC命令中的set_clock_uncertainty命令,该命令用于指定时钟周期的不确定性,包括时钟抖动、时钟偏差和额外裕度等。文章从命令的BNF范式、参数定义、对象列表、时序分析影响等多个方面进行阐述,并通过具体示例展示了命令的使用方法和效果。特别说明了时钟间不确定度的设置、建立/保持时间的区别处理,以及多工艺角多工作模式(MCMM)下的应用注意事项。文章指出,虽然传统流程使用该命令约束时钟不确定性,但更精确的方式是结合set_clock_jitter命令进行设置。

保持终身学习的能力,温故而知新 1万+

芯片设计全流程解析:从前端RTL到后端GDSII的EDA工具实战指南

电子设计自动化是集成电路设计的核心技术支撑,它通过一系列算法和软件工具,将抽象的硬件描述语言转化为可制造的物理版图。其核心原理在于将设计流程分层自动化,涵盖逻辑综合、布局布线、时序验证等关键环节,极大地提升了设计效率和可靠性。这项技术的价值在于使数十亿晶体管规模的复杂芯片设计成为可能,是推动摩尔定律持续演进的关键生产力工具。在应用场景上,EDA工具贯穿于数字芯片设计的全生命周期,从前端的功能验证、RTL编码,到后端的物理实现与签核验证,广泛应用于处理器、通信芯片、AI加速器等各类集成电路开发。本文聚焦于芯片

weixin_34099526的博客 352

timequest静态时序分析学习笔记之命令约束

第二章约束命令 Timequest共包括13条约束命令(从timequest工具constrants下拉菜单可选的约束命令,实际不止这么多),分别是:    Creatclock    Creatgeneratedclock    Setclocklantency    Setclockuncertainty    Setclockgroups    Rem...

weixin_30291791的博客 863

AI芯片面试总结

基础书籍有哪些?重点章节以及概念? 计算机体系结构---量化研究方法; 计算机组成与设计---软硬件接口; deep learning 深度学习; python; CMOS数字集成电路 面试中可能会遇到的知识点 建立保持时间 / 亚稳态如何产生及解决 / 竞争冒险产生及解决 /低功耗设计 /时钟歪斜和抖动 及产生原因 / 同步异步的概念 / 同步复位异步复位 / 异步复位...

abcdef123456gg的博客 1万+

(70)时序约束:[set_clock_uncertainty约束1]

1.1 本节目录1.2 基本时序约束概念1.3 时序约束:[set_clock_uncertainty约束1]1.4 结束语。

m0_46498597的博客 884

时序约束优先级_深入了解时序约束以及如何利用时序约束实现FPGA 设计的最优结果...

作为赛灵思用户论坛的定期访客(见 ),我注意到新用户往往对时序收敛以及如何使用时序约束来达到时序收敛感到困惑。为帮助 FPGA设计新手实现时序收敛,让我们来深入了解时序约束以及如何利用时序约束实现FPGA 设计的最优结果。何为时序约束?为保证设计的成功,设计人员必须确保设计能在特定时限内完成指定任务。要实现这个目的,我们可将时序约束应用于连线中——从某 FPGA 元件到 FPGA 内部或 FPGA...

weixin_39987120的博客 203

(139)DC综合set_clock_uncertainty?

综合就是把行为级的RTL代码在工艺、面积、时序等约束下转换成对应的门级网表。综合是使用软件的方法来设计硬件,然后将门级电路实现与优化的工作留给综合工具的一种设计方法。它是根据一个系统逻辑功能与性能的要求,在一个包含众多结构、功能、性能均已知的逻辑元件的单元库的支持下,寻找出一个逻辑网络结构的最佳实现方案。即实现在满足设计电路的功能、速度及面积等限制条件下,将行为级描述转化为指定的技术库中单元电路的连接。

m0_46498597的博客 1372

fpga如何约束走线_手把手课堂:Xilinx FPGA设计时序约束指南

作为赛灵思用户论坛的定期访客,我注意到新用户往往对时序收敛以及如何使用时序约束来达到时序收敛感到困惑。为帮助 FPGA设计新手实现时序收敛,让我们来深入了解时序约束以及如何利用时序约束实现FPGA 设计的最优结果。何为时序约束?为保证设计的成功,设计人员必须确保设计能在特定时限内完成指定任务。要实现这个目的,我们可将时序约束应用于连线中——从某 FPGA 元件到 FPGA 内部或 FPGA 所在 ...

weixin_39966465的博客 884

(57)定义时钟约束

(57)定义时钟约束 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)定义时钟约束 5)技术交流 6)参考资料 2 时序约束引言 1)什么是静态时序分析? 通俗来说:在输入信号到输出信号中,因为经过的传输路径、寄存器、门电路等器件的时间,这个时间就是时序。开发工具不知道我们路径上的要求,我们通过时序约束来告诉开发工具,根据要求,重新规划,从而实现我们的时序要求,达到时序的收敛。 2)什么是时序收敛? 一个好的FPGA设计一定是包含两个层面:良好的代码风

m0_46498597的博客 186

Xilinx Vivado 16.4 许可证文件:确保设计工具的功能解锁

在现代电子设计自动化(EDA)领域中,FPGA(现场可编程门阵列)和SoC(系统级芯片)设计是两个至关重要的概念。它们为设计者提供了灵活而强大的工具集,能够实现定制化的硬件解决方案。FPGA以其在逻辑密度、性能和功耗方面的优势,在快速原型设计、并行处理和专用计算领域中脱颖而出。而SoC设计则更加综合,它不仅涵盖了FPGA的可编程特性,还包括了集成处理器、存储器、I/O等元素,以创建更加复杂的系统级解决方案。FPGA和SoC设计不仅仅是技术层面的突破,更代表了一种设计哲学的转变。

weixin_42601608的博客 909

FPGA系统架构设计实践6_工程实现概述

梳理Xilinx FPGA实现过程的一些重要概念。

坏孩子的诺亚方舟 946

开关电源环路学习笔记(1)-为啥要知道传递函数?

做硬件都会接触到开关电源,或多或少会接触到环路补偿。很多兄弟们也提出来让我说说这个,说明大家也都很关心,也说明这个好像有点难。 就我个人而言,我也想搞明白环路这一块,也查了一些资料,视频,不过说实话,一直都还是懵的,感觉很困难。 具体感觉就是,看资料或视频的时候,感觉好像是那么回事。但是撇开之后,就又云里雾里的感觉,总有一些想法没有找到答案。 问题 比如下面我想过的问题: 开关电源有开关,根本就不是一个线性系统,传递函数是咋弄出来的? 系统环路框图的输入量为什么不是Vin,而是参考电压V

weixin_42005993的博客 1万+

Vivado实战:在Artix-7开发板上调试GTP收发器的完整流程(附眼图测量技巧)

本文详细介绍了在Artix-7 FPGA开发板上调试GTP收发器的完整实战流程。内容涵盖从理解GTP特性、编写关键约束文件、配置IP核参数,到上板进行环回测试与信号完整性评估。重点分享了利用Vivado内置工具进行眼图测量的实战技巧,帮助硬件工程师有效诊断和优化高速串行链路性能。

weixin_29269441的博客 578

从VoLTE高清通话到5G新通话:手把手带你用Wireshark抓包分析QCI 1, 2, 5, 9的建立与切换过程

本文详细解析了从VoLTE高清通话到5G新通话的QCI(QoS Class Identifier)建立与切换过程,通过Wireshark抓包实战演示如何分析QCI 1、2、5、9的承载机制。内容涵盖QCI基础概念、实验环境搭建、VoLTE通话建立过程分析以及5G新通话中的QoS演进,为网络工程师和通信技术爱好者提供实用的技术指南和优化建议。

weixin_30788619的博客 342

骁龙X Elite笔记本重装Windows 11 Arm64系统完整指南与避坑手册

UEFI安全启动和Arm64架构是理解现代计算设备系统部署的基础。UEFI取代传统BIOS,提供了更安全的启动环境和模块化固件接口,而Arm64架构则以其高能效特性,在移动和新兴PC领域日益重要。其技术价值在于为设备带来更快的启动速度、更强的安全防护以及更优的功耗表现。在应用场景上,这直接关系到搭载高通骁龙X Elite等Arm处理器的笔记本电脑的系统安装与维护。对于这类设备,重装系统远非插入通用安装盘那么简单,核心挑战在于必须使用专为Arm64编译的Windows镜像,并需提前集成芯片组、网络等硬件的专属

weixin_33428613的博客 485

FPGA设计流程与Vivado工具实战指南

FPGA(现场可编程门阵列)作为可重构硬件核心器件,通过硬件描述语言(HDL)实现数字电路设计。其设计流程包含设计输入、功能仿真、综合实现等关键阶段,其中时序分析和功耗优化直接影响最终性能。现代工具如Vivado通过IP集成和HLS技术显著提升开发效率,特别适合图像处理和机器学习等计算密集型应用。工程实践中,模块化编码、时钟域交叉处理以及Zynq平台的PS-PL协同设计都是确保项目成功的关键要素。

weixin_29191081的博客 265

stm32F103定时器使用方法

文章目录1、STM32的Timer简介2、普通定时器TIM2-TIM52.1 时钟来源2.2 计数器模式2.3 编程步骤3、程序源代码4、总结 1、STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8个定时器。 其中TIM1和TIM8是能够产生3对PWM互补输出的高级登时其,常用于三相电机的驱动,时钟

weixin_43582209的博客 4515

XC3S200A-4VQG100C Xilinx AMD Spartan-3A FPGA

XC3S200A-4VQG100C 赛灵思 Xilinx AMD Spartan-3A 家族,是一款面向成本敏感与 I/O 密集型嵌入式应用的 SRAM 型 FPGA

2403_90082736的博客 1155

C#串口通信上位机开发实战:轻松实现硬件控制与数据交互

摘要:本文介绍如何使用C#开发串口通信上位机应用,实现与硬件设备(如传感器、PLC等)的数据交互。文章涵盖串口通信原理、开发环境配置、功能实现(串口连接管理、数据收发、实时显示)及UI设计,重点讲解SerialPort类的应用、多线程数据接收处理和错误优化。通过Windows Forms构建直观界面,帮助开发者快速掌握工业控制和自动化系统中的串口通信技术,为物联网和智能设备开发提供实用解决方案。全文约150字。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3031

数仓解惑:数据仓库常见建模方法与大数据领域建模实例综述

为什么需要数据建模? 为什么要进行数据仓库建模? 随着DT时代互联网、智能设备等信息技术的发展,数据开始井喷式的增长,如何讲这些数据进行有序、有结构地分类组织存储是我们面临的一个挑战。 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置,而不是乱糟糟的 大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑 ...

云祁QI 5850

从拆解看设计:XC7K325T-2FFG900I工业级FPGA的28nm工艺秘密与功耗控制

本文深入剖析了赛灵思XC7K325T-2FFG900I工业级FPGA的设计奥秘,重点解读其采用的28nm HKMG HPL工艺如何实现高性能与低功耗的平衡,并确保在-40°C至+100°C宽温范围内的稳定运行。文章从芯片工艺、供电网络设计、高速收发器抗干扰及工业级可靠性等维度,揭示了其应对严苛环境的核心工程哲学。

weixin_29290863的博客 346

LPDDR5 学习笔记07:读写操作详解

本文介绍了LPDDR5 SDRAM的读写操作时序规范。对于读操作,需在时钟上升沿发送读指令,经过RL延迟后输出首个有效数据,并需定期校准采样时钟以补偿时序偏移。写操作需先建立WCK2CK同步状态,WCK信号需提前驱动,并在写入数据后保持活动状态。连续读写操作中,若指令间隔超过特定阈值需重新同步。还介绍了RDQS模式,通过数据选通信号提高高速场景下的数据采集可靠性。所有操作都需满足严格的时序参数要求,包括前后导码、后缀周期等,以确保数据可靠传输。

一只豌豆象的博客 2725

从IEEE Fellow贡献看FPGA架构演进与EDA工具链设计哲学

现场可编程门阵列(FPGA)作为可编程逻辑器件的核心代表,其技术演进深刻体现了硬件架构与软件工具协同发展的工程哲学。FPGA通过查找表(LUT)和可编程布线资源实现硬件逻辑的灵活重构,其核心价值在于为数字系统设计提供了并行处理能力和硬件可重构性,广泛应用于通信加速、图像处理、原型验证和嵌入式控制等领域。现代FPGA设计高度依赖电子设计自动化(EDA)工具链,该工具链将用户的高层次硬件描述语言(如Verilog/VHDL)通过综合、布局布线等复杂步骤映射到物理硬件,其中**布局布线**算法和**时序分析**是

weixin_30652491的博客 448

液滴/液膜蒸发过程—in文件模拟-后处理分析-Ovito/Python绘图

液滴/液膜蒸发过程—in文件模拟-后处理分析-Ovito/Python绘图

Rockyoung 3325

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 静态时序分析(一):基本概念
下一篇: FPGA资源类型简介
fzhykx
博客等级 码龄9年 458粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值