[静态时序分析简明教程(十)]组合电路路径set_max/min_delay

news2024/10/5 17:21:24

静态时序分析简明教程-组合电路路径

    • 一、写在前面
      • 1.1 快速导航链接·
    • 二、组合电路路径
      • 2.1 SDC约束
      • 2.2 举例
    • 三、总结

一、写在前面

一个数字芯片工程师核心竞争力是什么?不同的工程师可能给出不同的答复,有些人可能提到硬件描述语言,有些人可能会提到对于特定算法和协议的理解,有些人或许会提到对于软硬件的结合划分,作者想说,这些说法,其实对也不对,硬件描述语言,翻来覆去无非是always和assign这几个语句的反复使用,而一些基础的协议算法深究起来其实也并不复杂,于作者而言,在常规的技能以外,有两项额外的技能颇为重要,其中之一便为sdc/STA的分析能力,它的重要之处在于作为桥梁建立了前端和后端的连接,虽然对于DE工程师而言,初版交付的sdc往往不甚准确,也没有办法通过这份sdc生成一份无误的timing report,但sdc的内容体现却是完完整整的将时序约束从行为级的描述映射到了gate level这样一个真实的电路层次上面。
写此专栏,一为学习记录,二为交流分享,以犒粉丝读者。

1.1 快速导航链接·

静态时序分析简明教程(一)绪论
静态时序分析简明教程(二)基础知识:建立保持时间,违例修复,时序分析路径
静态时序分析简明教程(三)备战秋招,如何看懂一个陌生的timing report
静态时序分析简明教程(四)时钟常约束
静态时序分析简明教程(五)生成时钟
静态时序分析简明教程(六)时钟组与其他时钟特性
静态时序分析简明教程(七)端口延迟
静态时序分析简明教程(八)虚假路径
静态时序分析简明教程(九)多周期路径
静态时序分析简明教程(十)组合电路路径
静态时序分析简明教程(十一)模式分析与约束管理
静态时序分析简明教程(十二)浅议tcl语言

二、组合电路路径

通常情况下的设计是reg-in, reg-out的,输入信号会被寄存后使用,同时信号也会在寄存后进行输出,这种做法的优点是有利于时序收敛,增加了时序冗余,但也存在从输入到输出的路径,没有遇到任何的寄存器,这样的路径被称为组合电路路径,我们要讨论的也是这种路径的sdc约束,下面的图片中由I1到O1的路径就是组合电路路径
在这里插入图片描述

2.1 SDC约束

我们通过限制延迟的上限和下线来约束组合逻辑电路路径,即set_max_delay和set_min_delay

set_max_delay  [-rise][-fall]
			   [-from from_list] [-to to_list]
			   [-through through_list]
			   [-rise_from rise_from_list]
			   [-rise_to rise_to_list]
			   [-rise_through rise_through_list]
			   [-fall_from fall_from_list]
			   [-fall_to fall_to_list]
			   [-fall_through fall_through_list] delay_value
			   [-comment comment_string] 
set_min_delay   [-rise] [-fall]
				[-from from_list]
				[-to to_list]
				[-through through_list]
				[-rise_from rise_from_list]
				[-rise_to rise_to_list]
				[-rise_through rise_through_list]
				[-fall_from fall_from_list]
				[-fall_to fall_to_list]
				[-fall_through fall_through_list] delay_value
				[-comment comment_string]

通常情况下,我们只需要约束set_max_delay即可,因此下面我们更多的讨论set_max_delay这个命令

2.2 举例

假如clk的周期是15ns,时钟输入后4ns后到达I1,输出O1经过3ns后才能被下一级寄存器捕获,我们需要如何约束这个电路呢?
在这里插入图片描述
通过计算,我们得出组合逻辑的最大延时是15-4-3=8ns, 同时我们也需要约束input_delay和output_delay,这里我们假如已经约束好clk为CLK,其周期为15ns,那么以下三条sdc约束就显而易见了。

set_max_delay -from [get_ports I1] - to [get_ports O1] 8.0
set_input_delay -max -clock CLK [get_ports I1] 4.0
set_output_delay _max -clock CLK [get_ports O1] 3.0

但是我们发现,起始约束好input_delay和output_delay后,不约束set_max_delay也不影响正确的STA分析,即约束好了7ns的输入输出后,剩余的时间自然的是组合逻辑电路的时间。因为假如存在寄存器的路径,涉及I1和O1,输入输出的delay约束就必不可少,因此,我们从易于维护的角度来看,推荐优先保证set_input_delay和set_output_delay规格

三、总结

组合电路路径可以使用set_input/output_delay或set_max_delay进行约束。如果路径从输入端口贯穿到输出端口,则最好使用set_input_delay和set_output_delay的组合来约束该路径。 通常,由于在大多数情况下,重点在于确保延迟小于期望值,因此,使用set_max_delay比使用 set_min_delay更频繁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/871691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-Perl - recv函数

描述 This function receives a message on SOCKET attempting to read LENGTH bytes, placing the data read into variable SCALAR.The FLAGS argument takes the same values as the recvfrom( ) system function, on which the function is based. When communicating wit…

【c语言】字符函数与字符串函数(上)

大家好呀,今天给大家分享一下字符函数和字符串函数,说起字符函数和字符串函数大家会想到哪些呢??我想到的只有求字符串长度的strlen,拷贝字符串的strcpy,字符串比较相同的strcmp,今天,我要分享给大家的是我们一些其他的…

② vue模板语法

文本绑定 普通文本渲染{{ }} 静态的文本绑定 v-html 动态的文本绑定 b-bind(:) 动态的属性绑定,可简写(比如:v-bind:id :id) 列表渲染 v-for 要有一个唯一id :key"item.id"(没有id就…

for macOS-21.1.0.3267中文直装版功能介绍及系统配置要求

FL Studio 21简称FL水果软件,全称是:Fruity Loops Studio编曲,由于其Logo长的比较像一款水果因此,在大家更多的是喜欢称他为水果萝卜,FL studio21是目前最新的版本,这是一款可以让你的计算机就像是一个全功能的录音室&…

GPT-NER:使用大型语言模型进行命名实体识别

讲在前面,chatgpt出来的时候就想过将其利用在信息抽取方面,后续也发现了不少基于这种大语言模型的信息抽取的论文,比如之前收集过的: https://github.com/cocacola-lab/GPT4IE https://github.com/RidongHan/Evaluation-of-ChatG…

p5.js 渐变填充的实现方式

theme: smartblue 本文简介 p5.js 作为一款艺术类的 canvas 库,对颜色方面的支持是挺下功夫的,比如本文要介绍的渐变方法。 lerpColor() 要实现渐变效果,可以使用 lerpColor() 方法。 lerpColor 的作用是混合两个颜色以找到一个介于它们之间的…

QGraphicsView实现简易地图5『经纬网格』

前文链接:QGraphicsView实现简易地图4『局部加载-地图漫游』 由于GCJ02 Web 墨卡托投影 纬度并不随像素等分,且两极跨度较大,因此本次演示采用的经纬网等分逻辑为等分像素。同等像素跨度之间,两级纬度变化较小,越靠近赤…

项目介绍:《WeTalk》网页聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合

目录 引言: 前言: 技术栈: 主要功能: 功能详解: 1. 用户注册与登录: 2. 添加好友 3. 实时聊天 4. 消息未读 5. 删除聊天记录 6. 删除好友 未来展望: 项目地址: 结语&am…

IDEA关闭项目,但是后台程序没有关闭进程(解决方案)

最近遇到一个很奇怪的问题,idea关闭项目后,系统进程没有杀死进程,再次执行的时候会提示端口占用,并提示Process exited with an error: 1 (Exit value: 1) 错误原因:应用程序关闭后,进程不能同步关闭 解决方…

Python 使用Hadoop 3 之HDFS 总结

Hadoop 概述 Hadoop 是一个由Apache 软件基金会开发的分布式基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。 Hadoop 实现一个分布式文件系统(Hadoop Distributed File Sy…

短肥网络的 RTT 敏感性

周二下班路上发了一则朋友圈: 长肥管道的特征和问题谈得够多了,但这里谈的是短肥管道,因为下面趋势,短肥管道才是未来大势: 云计算致使数据中心网络快速发展,而数据中心网络时延短,带宽大。CD…

尼科彻斯定理-C语言/Java

描述 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。 例如: 1^31 2^335 3^37911 4^313151719 输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。&…

代码详解——Transformer

文章目录 整体架构Modules.pyScaledDotProductAttention SubLayers.pyMultiHeadAttentionPositionwiseFeedForward Layers.pyEncoderLayerDecoderLayer Models.pyget_pad_maskget_subsequent_maskPositionalEncodingEncoderDecoderTransformer 整体架构 源码地址(py…

传输控制协议TCP

目录 TCP报文格式 TCP的特点 TCP原理: 1.确认应答机制 2.超时重传机制 3.连接管理机制 建立连接 ​编辑关闭连接 4.滑动窗口机制 ​5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答 TCP报文格式 1.源端口号:发送端的哪一个端口发出的 2.目的端口号:接收端的哪一个端…

【深度学习】遗传算法[选择、交叉、变异、初始化种群、迭代优化、几何规划排序选择、线性交叉、非均匀变异]

目录 一、遗传算法二、遗传算法概述2.1 选择2.2 交叉2.3 变异 三、遗传算法的基本步骤3.1 编码3.2 初始群体的生成3.3 适应度评估3.4 选择3.5 交叉3.6 变异3.7 总结 四、遗传算法工具箱4.1 initializega4.2 ga4.3 normGeomSelect4.4 arithXover4.5 nonUnifMutation 五、遗传算法…

【Transformer】自注意力机制Self-Attention | 各种网络归一化Normalization

1. Transformer 由来 & 特点 1.1 从NLP领域内诞生 "Transformer"是一种深度学习模型,首次在"Attention is All You Need"这篇论文中被提出,已经成为自然语言处理(NLP)领域的重要基石。这是因为Transfor…

苹果电脑 Java切换版本

效果 1、安装 Java1.8和Java11 直接官网下载并安装 2、安装后的文件 /资源库/Java/JavaVirtualMachines/ 3、修改配置文件 vi ~/.bash_profile#java export JAVA_8_HOME"/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home" alias jdk8expor…

大语言模型(LLM)与 Jupyter 连接起来了

现在,大语言模型(LLM)与 Jupyter 连接起来了! 这主要归功于一个名叫 Jupyter AI 的项目,它是官方支持的 Project Jupyter 子项目。目前该项目已经完全开源,其连接的模型主要来自 AI21、Anthropic、AWS、Co…

信号调制原理演示,模拟和数字调制技术大比拼

【中英双语字幕】信号调制原理演示,模拟和数字调制技术大比拼!_哔哩哔哩_bilibili

Filament for Android 编译搭建(基于Ubuntu20.04系统)

一、Filament 源代码下载 github下载地址: 2、安装clang 我是直接安装clang-10 Ubuntu 20.04 ,sudo apt install clang 命令默认就是clang-10 $sudo apt-get install clang-10 # 安装 AST.h 等头文件 $sudo apt-get install libclang-10-dev $sudo …