STA环境

第十章 鲁棒性检查(下) 本章节将介绍特殊的STA分析,例如时间借用(time borrowing)、时钟门控(clock gating)和非时序(non-sequential)检查。此外,还介绍了高级STA概念,例如片上变化(on-chip variation)、统计时序(statistical timing)以及功耗和时序之间的折中。 阅读详情

本文介绍在执行静态时序分析(Static Timing Analysis, STA)前需要配置的环境,并附上设计约束(Synopsys Design Constraints, SDC)如何描述

aaaaaaaa585 - vivado - 优快云专栏


1. CMOS逻辑门

CMOS逻辑门使用NMOS和PMOS晶体管搭建而成。如下图给出了CMOS非门的示例。

什么是MOS晶体管?MOS晶体管工作原理和VI特性详解

CMOS非门有两种稳定状态,具体取决于输入的电平状态。

当输入A为低电平(Vss或逻辑0)时,NMOS晶体管截止、PMOS晶体管导通,输出Z电平被上拉至逻辑为1的Vdd。
当输入A为高电平(Vdd或逻辑1)时,NMOS晶体管导通,而PMOS晶体管截止,输出Z电平被下拉至逻辑为0的Vss。

在这里插入图片描述
上述特性可以扩展到任何CMOS逻辑门。

在CMOS逻辑门中,输出节点通过上拉结构(由PMOS晶体管构成)连接至Vdd,并通过下拉结构(由NMOS晶体管构成)连接至Vss,来构成输出的高电平和低电平。同时上拉和下拉结构是互补的,如果上拉结构开启,则下拉结构将关闭,反之相反。以此保证输出电平只有高电平和低电平两种情况,无一例外。

基于此,可将各种CMOS逻辑门级联起来以实现更复杂的逻辑功能。

而这些CMOS逻辑门可以组合成各种基本逻辑块或称标准单元,例如与或非门、异或门、触发器等等。这些标准单元是预先设计好的,可供设计人员搭积木式的组合拼凑,实现各种功能。

2. 波形

CMOS单元电平随时间变化构成了波形,波形如下图所示,

在这里插入图片描述

但在仿真或理想情况下常将波形等效为如下的折线。

在这里插入图片描述

3. 时钟

STA环境 - 时钟

4. 时序路径

STA环境 - 时序路径

5. 外部属性

5.1. 输入端外接电阻

可通过指定输入端的外接电阻值,以计算输入端的过渡时间,反应驱动强度。理想情况下外接电阻值为0、过渡时间为0、驱动强度为无穷大

指令如下

# 指定外接电阻
set_drive 100 UCLK
set_drive -rise 3 [ all_inputs ]
set_drive -fall 2 [ all_inputs ]

# 指定输入端口类型
set_driving_cell -lib_cell INV3 -library slow [ get_ports INPB]
set_driving_cell -lib_cell INV2 -library tech13g [ all_inputs ]
set_driving_cell -lib_cell BUFFD4 -library tech90gwc [ get_ports {testmode[3]}]

# 指定输入端口过度时间
set_input_transition 0.85 [ get_ports INPC]
set_input_transition 0.6 [ all_inputs ]
set_input_transition 0.25 [ get_ports SD_DIN*]

在这里插入图片描述

5.2. 输出端外接电容

同样会影响输出端口的延迟

# 指定输出端口电容值
set_load 5 [ get_ports OUTX]
set_load 25 [ all_outputs ]
set_load -pin_load 0.007 [ get_ports {shift_write[31]}]

# 指定内部网络电容值
set_load 0.25 [ get_nets UCNT5/NET6]

在这里插入图片描述

6. SDC对象访问指令

上述主要介绍约束指令,约束指令需要指定访问对象,此处介绍对方访问指令

ug835 - vivado tcl commands
Vivado时序约束中详细的Tcl命令

6.1. 如何描述对象

介绍指令之前,先介绍如何描述对象的名称。SDC支持直接描述对象,也支持通过正则表达式、搜索条件等描述所有满足条件的对象。

直接描述对象,需要指明模块层级。

[get_pins {clk_gen_i0/clk_core_i0/CK}]

具体的模块层级可在vivado中的Open Implemention Design中查看

也可以通过限定条件描述所有满足条件的对象,下面介绍。

*

可以使用*描述该层级的子模块或对象。注意只能描述该层级,不包括更深的层级,也不能表示无层级。

# 获取顶层模块中,所有包含uart字符模块下 的所有pins
get_pins {*uart*/*}

# 获取U_UART模块中 所有子模块中名字包含rst的pins
# 注意没有获取:U_UART.rst和U_UART下子模块的子模块的rst信号
get_pins {U_UART/*/*rst*}

# 获取顶层模块的所有pins
get_pins *

-hier

加上该条件,将从工程顶层开始,在所有层次内搜索对象。如果没有该条件,则只会搜索顶层模块中,或者是current_instance约定的模块中的对象。

注意get_ports、get_clocks不能使用-hier

例如

# 所有层级下名字包含rst_global_reg的cells
get_cells -hier *rst_global_reg*

# U_CFG模块下所有层级中 名字包含rst_global_reg的cells
get_cells -hier U_CFG/*/*rst_global_reg*

关于*和-hier的区别,例如下图中。所有模块中都有一个rst信号。

在这里插入图片描述

加了-hier之后*就可以跨层级了。

# 将获取 A_i0.B_i0.rst_reg、A_i0.B_i1.rst_reg、A_i0.C_i0.rst_reg
get_cells A_i0/*/*rst_reg

# 将获取 A_i0.B_i0.rst_reg、A_i0.B_i1.rst_reg、A_i0.C_i0.rst_reg和A_i0.C_i0.D_i0.rst_reg
# 加了-hier之后此处*可代表跨层级
get_cells -hier A_i0/*/*rst_reg

# 将获取 A_i0.rst_reg、A_i0.B_i0.rst_reg、A_i0.B_i1.rst_reg、A_i0.C_i0.rst_reg和A_i0.C_i0.D_i0.rst_reg
# 加了-hier之后此处*可代表跨层级
get_cells -hier A_i0/*rst_reg

正则表达式在Vivado约束文件(xdc)中的应用

-filter

表示根据属性搜索对象,需要通过大括号将属性涵盖进来,例如

# 当前模块中所有名字带有RST的输入pin
get_pins * -filter {DIRECTION == IN && NAME =~*RST*}

# 获取所有时序逻辑单元
get_cells * -hier -filter {IS_SEQUENTIAL== 1}

实际上,pins、ports、cells的属性各不相同,但-filter常用的有包括

==等于、!=不等于、=~匹配、!~不匹配、
> < >= <=不等号、
&& ||与或逻辑符、
DIRECTION == IN; DIRECTION ==OUT输入输出、NAME名称

-of

获取对象的某个类型的对象,例如

# 获取clk_gen_i0/clk_core_i0模块的输入引脚
get_pins -of [get_cells {clk_gen_i0/clk_core_i0}] -filter {DIRECTION == IN}

# 已知引脚名获取所在模块
get_cells -of [get_pins clk_gen_i0/clk_core_i0/clk_in1_n]

# 已知模块名获取与该模块相连的网线
get_nets -of [get_cells {clk_gen_i0/clk_core_i0}]

# 已知引脚名获取与该引脚相连的网线
get_nets -of [get_pins clk_gen_i0/clk_core_i0/clk_rx]

# 已知时钟引脚获取时钟引脚对应的时钟
get_clocks -of [get_pins clk_gen_i0/clk_core_i0/clk_rx]

-regexp

使用正则表达式描述对象。

常用的规则,例如*表示匹配前面的子表达式零次或多次、.表示匹配除换行符 \n 之外的任何单字符、?表示匹配前面的子表达式零次或1次。因此可使用.*表示任意数量的任意字符

正则表达式在Vivado约束文件(xdc)中的应用

-nocase

使用-regexp正则表达式时,不区分大小写

6.2. all_clocks、get_clocks

all_clocks用于指定create_clock生成的所有时钟

# 用于本设计中所有时钟
set_propagated_clock [all_clocks]

get_clocks 用于指定生成的特定时钟。

格式如下

get_clocks [-regexp] [-nocase][-filter <arg>][-of_object] [-include_generated_clocks]

6.3. all_inputs、all_outputs、get_ports

用于指定本顶层设计的端口

get_ports [-regexp] [-nocase][-filter <arg>][-of_object] 

6.4. get_cells

用于获取综合后或者是布线后的模块、单元等内容,例如模块、LUT、FDRE等等都叫cell。

get_cells [-hier][-regexp] [-nocase][-filter <arg>][-of_object] 

可打开Open Synthesis或Open Implemention后的Netlist中查看什么是cells

6.5. get_nets

用于获取cells之间相连的网线

get_nets[-hier][-regexp] [-nocase][-filter <arg>][-of_object][-top_net_of_hierarchcial_group]

可打开Open Synthesis或Open Implemention后的Netlist中查看什么是nets。某个cell的Cell Properties中也会列出与该cell相连的Nets

6.6. get_pins

用于获取cells上面的引脚

get_pins[-hier][-regexp] [-nocase][-filter <arg>][-of_object][-leaf]

可打开Open Synthesis或Open Implemention后的Netlist中选中某个cell,其Cell Properties中也会列出该cell的Cell Pins

STA静态时序分析——配置STA环境 edge指的是DCLK的每一个边沿(既包括posedge,也包括negedge),从1开始,每遇到一个边沿,增加1因为通过这三个边沿我们就可以确定generated clock的high duration和low duration。在-edge_shift {}中,三个参数指的是下图下面那排,也就是时间。CLKDIV2的posedge在DCLK的第2个边沿,negedge在DCLK的第4个边沿,下一个posedge在DCLK的第6个边沿。 阅读详情

相关推荐

STA 静态时序分析 第七章——STA环境的配置(2)

这章节描述了如何配置静态时序分析的环境。正确的约束对于分析STA的结果十分重要。只有准确的指定设计的环境,静态时序分析才能识别出设计中所有的时序问题。准备工作包括:配置时钟、指定IO时序特征、指定伪路径以及多周期路径。下面详细介绍本章节。

Lvplus7的博客 1130

静态时序分析 第七章 配置STA环境

大部分数字设计是同步的,从上一个时钟周期计算得到的数据在有效时钟沿被锁存在触发器中,请思考图7-1所示的典型同步设计。假设待分析设计和其他同步设计交互。这意味着DUA收到受时钟约束的触发器的数据,并把数据输出给DUA之外的另一个受时钟约束的触发器。为了对设计进行STA,需要给触发器指定时钟,需要给所有到该设计的路径和离开该设计的路径进行时序约束。图7-1中的例子假设只有1个时钟,且C1、C2、C3、C4以及C5代表组合逻辑块。组合逻辑块C1和C5在要分析的设计之外。

面朝大海 1849

静态时序分析-配置STA环境

时钟源周期占空比边沿时间时钟名为SYSCLK,并在端口SCLK上定义, 周期为20ns。-waveform {上升沿, 下降沿 ...},必须指定偶数个边沿时刻,然后不断重复,未指定默认值为 {0,period/2}

sinat_41774721的博客 1096

设计约束文件SDC

数字后端设计sdc文件详解

qq_61545726的博客 2万+

Static_Timing_Analysis(STA经典).pdf

本文档为纯英介绍sta入门的资源,适合新手入门

Silly Tavern(酒馆)AI 角色扮演下载与安装教程(Windows本地部署)

SillyTavern是一款开源AI角色扮演前端工具,支持沉浸式对话和长期角色互动。本文详细介绍了在Windows系统F盘部署SillyTavern的完整流程,包括下载项目、安装Node.js和Git环境、配置路径、启动服务等关键步骤,并特别说明非系统盘路径可能遇到的npm安装问题及解决方法。成功启动后,用户可通过浏览器访问本地地址使用该工具进行AI角色扮演互动。

Tan3851的博客 1万+

(四)STA——环境

包含标准单元(门、触发器等)的时序特性信息,如传播延迟、引脚到达时间等。这些文件定义了电路中各个元件的时序要求,如输入到输出的最大传播延迟、时钟频率等。这些工具能够基于时序库和约束文件,对电路进行时序分析,以估计信号传播的延迟,识别潜在的时序问题,并生成时序报告。这些报告提供了关于电路中各个路径的时序信息,包括路径延迟、时序违规等。工程师可以根据这些报告来调整设计,以满足时序要求。时钟属性:时钟源点;时钟周期;占空比;边沿翻转时间;时钟命名:-name SYSCLK(名字可自定义,随机取);

钟树的博客 406

STM32CubeMX实战:TIM定时器中断配置避坑指南(附100ms精准定时代码)

本文深入解析STM32CubeMX配置TIM定时器中断的常见误区与避坑技巧,重点阐述时钟源、预分频器与自动重装载值的精准计算方法。通过实战案例,提供一份可直接复用的100ms精准定时中断代码模板,并分享调试验证方法,帮助开发者构建稳定可靠的嵌入式系统心跳。

grafana8visual的博客 499

STA 静态时序分析 第七章——STA环境的配置(1)

这章节描述了如何配置静态时序分析的环境。正确的约束对于分析STA的结果十分重要。只有准确的指定设计的环境,静态时序分析才能识别出设计中所有的时序问题。准备工作包括:配置时钟、指定IO时序特征、指定伪路径以及多周期路径。

Lvplus7的博客 1184

从原理到实践:详解RGBD相机深度与彩色图像对齐(D2C)算法

本文深入解析了RGBD相机深度与彩色图像对齐(D2C)算法的原理与实现。针对自组装相机中深度图与彩色图不匹配的核心痛点,文章从相机模型、坐标系变换等数学基础讲起,剖析了传统点映射算法的缺陷,并重点介绍了高效的矩形区域映射算法。该算法通过将深度像素视为矩形区域进行映射,有效解决了空洞和遮挡问题,并附有可直接复用的C++代码与优化技巧,为三维重建、机器人视觉等应用奠定坚实基础。

weixin_28363123的博客 241

用AI生成React/Vue页面?实测Locofy等5款工具,教你选最适合的

本文深度评测了2024年五大AI生成前端页面工具,包括Locofy、Builder.io等,从代码质量、可视化编辑器成本到企业级落地方案进行全面分析。通过实测数据和实战案例,揭示如何利用AI生成技术高效创建React/Vue页面,提升开发效率并优化性能。

m5n6o7的博客 606

搭建STA206x的Windows CE开发环境

如何开始第一次的STA206x Windows CE开发

norains的专栏 3931

OpenCv —— 检测车牌号(附完整源码)

OpenCv —— 检测车牌号

5598

数字IC设计学习笔记_静态时序分析STA_配置STA环境1

数字IC设计学习笔记 配置STA环境1 1. STA环境 2. 指定时钟specifying clocks 3. 生成时钟generated clocks 1. STA环境 STA环境,就是给STA指定一个正确的约束。环境应该精确,以便静态时序分析时,能够指出所有设计的时序问题。进行静态时序STA,需要设置时钟,指定IO时序特性,指定错误路径(false path) 和 多周期路径(multi-cycle path) 注意:STA主要针对同步电路。即由同一个时钟或者时钟沿驱动的电路。对于其他电路,时不做S

GloriaHuo's Blogs 2767

专为AI打造的浏览器:内存占用仅为Chrome的1/9、比Chrome快11倍(Docker部署教程,支持飞牛nas等服务器部署)

🚀 专为AI打造的无头浏览器来了! 用Zig从零构建,内存仅Chrome的1/9,速度快11倍,原生CDP协议支持Docker部署,适合爬虫、自动化测试和AI代理应用。✨

XiaoqiangClub的博客 729

Vue3 - Vite运行打包时Uncaught ReferenceError: process is not defined(解决vue3+vite报错process is not defined)

vue3,vite,vue3+vite报错,process,UncaughtReferenceError:processisnotdefined,浏览器控制台报错processisnotdefined解决方法,vue3如何解决报错,vite报错怎么办,前端打包UncaughtReferenceError:processisnotdefined,npmrunbuild打包报错,vite打包时出现错误,vue3打包运行找不到process,热更新会报错UncaughtRefer

🏆 前端领域优质创作者 7737

数字IC设计学习笔记_静态时序分析STA_配置STA环境3

数字IC设计学习笔记 配置STA环境3 1. DRC检查 2. 虚拟时钟 Virtual clocks 3. 精炼时间 1. DRC检查 STA中,经常使用的设计规则检查是 max transition 和 max capacitance。DRC检查设计中的所有端口和管脚是否满足指定的 transition time 和 capacitance。 脚本: set_max_transition set_max_capacitance 除此之外,适用于逻辑综合 DRC检查,而不适用于STA的还有: 脚本:

GloriaHuo's Blogs 1352

深度解析 Android 开发工程师岗位:技术栈、职责与面试全攻略

本文深度剖析Android开发工程师职位要求,从核心技术栈到面试准备进行全面解读。关键点包括:1)掌握Kotlin语言特性和Jetpack组件;2)具备UI开发、性能优化和逆向分析能力;3)理解MVVM架构和Room数据库;4)熟悉常用工具链和开发流程。文章提供了详细的面试题库及解析,涵盖基础概念、UI优化、架构设计等方向,并给出职业发展建议:夯实基础、拓展技术广度、培养工程素养。旨在帮助开发者系统性地准备Android岗位求职,把握移动开发领域的技术趋势。

郑伟强dev的专栏 172

静态时序分析STA——7.1 STA环境的配置(时钟设置)

静态时序分析STA的基本环境配置

weixin_51116586的博客 1435

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

第七章 配置STA环境(上)

本章节介绍了如何为静态时序分析配置环境。正确的约束对于分析STA结果很重要,只有准确指定设计环境,STA分析才能够识别出设计中的所有时序问题。STA的准备工作包括设置时钟、指定IO时序特性以及指定伪路径和多周期路径。在继续学习下一章的时序验证之前,请务必全面了解本章节。

To the beyond and infinity! 1314

IEM模型,地表粗糙度模拟

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

数字IC设计学习笔记_静态时序分析STA_配置STA环境2

数字IC设计学习笔记 配置STA环境2 1. 约束 Input path 和 Output path 2. 时序路径组Timing path groups 3. 外部属性建模 1. 约束 Input path 和 Output path 约束 Input path 对于input path的约束,主要针对于input port 2 reg 时序路径。 SDC脚本: set Tclk2q 0.9 set Tc1 0.6 set_input_delay -clock CLKA -max[expr Tclk2

GloriaHuo's Blogs 1313

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

静态时序分析STA——7.3 STA环境的配置(其他约束)

静态时序分析STA的一些常用约束

weixin_51116586的博客 912

STA环境 - 时序路径

用下面的SDC指令指定输入延迟,-max表示最长路径输入延迟(用于建立时间检查)、-min表示最短路径输入延迟(用于保持时间检查),不写则表示确定时间。信号从发起触发器(Launch Flip-Flop)D端起始,到捕获触发器(Capture Flip-Flop)D端结束构成的路径。针对跨时钟域路径有多种约束方式,如果SDC中多个约束方式存在重叠,则优先级最高的约束生效,如下图所示,约束越具体优先级越高。时序检查就是针对以上几个时序路径的,显然最具代表性的时序路径就是第2条触发器到触发器路径。

Starry__的博客 1650
上一篇: 静态时序分析(Static Timing Analysis, STA):简介及内容导航
下一篇: STA标准单元
Starry丶
博客等级 码龄7年 1058粉丝 195原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starry丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值