时序约束高级进阶使用详解二:Set_Min_Delay

目录

一、前言

二、设计示例

2.1 示例代码

2.2 时序约束

三、Set_min_delay

3.1 start points

3.1.1 对象有效性

3.1.2 边沿有效性

3.1.3 start point非有效起点

3.2 Through points

3.2.1 约束对象为Cells

3.2.2 约束对象为Cell pin/Net

3.3 to points

3.4 rise/fall

3.5 Reset path

3.6 多对象设置

​3.7 Max_delay 与 Min_deay


一、前言

    关于Set_max_delay/Set_min_delay的基础用法之前的文章已进行过简单的介绍,主要作用就是修改时序路径默认的setup/recovery或hold/removal时间要求,本章将对约束Set_min_delay的一些细节使用进行解释。

二、设计示例

    以一个简单的3个触发器为例,包含同步时钟路径和异步时钟路径,以异步时钟路径为主

2.1 示例代码

module MAX_MIN(d1,clk1,clk2,ce,ff3);
input d1,clk1,clk2,ce;
output ff3;
reg ff1,ff2,ff3;
wire bus;
always@(posedge clk1,negedge ce)
begin
if(!ce)
begin
ff1<=0;
end
else begin
ff1<=d1;end
endalways@(posedge clk2,negedge ce)
begin
if(!ce)
ff2<=0;
else begin
ff2<=ff1;
end
endassign bus=ff2+ff1;
always@(posedge clk2)
begin
if(!ce)ff3<=0;else beginff3<=bus;end
end
endmodule

连接关系如下图,clk1中同步时序路径下,ff1_reg到ff2_reg,clk1与clk2的异步时序路径中,ff1_reg和ff2_reg逻辑运算后输出到ff3_reg

2.2 时序约束

此处主要是主时钟约束

create_clock -period 10.000 -name clk1 -waveform {0.000 5.000} -add [get_ports clk1]
create_clock -period 8.000 -name clk2 -waveform {0.000 4.000} -add [get_ports clk2]

三、Set_min_delay

Set_min_delay约束的设置中,不仅可以指定起点,中间点,终点,还可以设置对应单元生效的上升沿或下降沿,生成时序报告时建议将配置nworst和max path设大,可报告出所有路径

3.1 start points

start points为set_mix_delay约束的时序路径起点,需为时序路径的有效起点,可为Clock,Cell,Cells pin,IO port

3.1.1 对象有效性

以clock为clk2为例,设置约束如下

set_min_delay -rise_from [get_clocks clk2] 1.111

只有以clk2为源时钟,并且上升沿触发的时序路径约束才会生效

源时钟为clk1,目的时钟为clk2的不属于约束范围

3.1.2 边沿有效性

对源时钟为clk1,下降沿的路径设置min_delay

set_min_delay -fall_from [get_clocks clk1] 1.111

下面ff1_reg到ff2_reg的路径因为clk1为上升沿,因此min_delay约束不生效

将约束设置为clk1的上升沿有效

set_min_delay -rise_from [get_clocks clk1] 1.111

此时约束生效

3.1.3 start point非有效起点

将ff1_reg/D设置为min_delay的起点,因为ff1_reg/D不是有效的时序路径起点,约束不会生效

set_min_delay -from [get_pins ff1_reg/D] 1.111

同时有对应的告警

如果将ff1_reg/C设置为max_delay的起点,同时上升沿有效

set_min_delay -rise_from [get_pins ff1_reg/C] 1.111

以path29的结果看出,符合上述约束条件,因此约束生效

3.2 Through points

3.2.1 约束对象为Cells

约束对象为Cell时,设置的Transition边沿是直接对该单元的相应边沿生效,查看的路径都是ff1_reg到ff3_reg的时序路径

a)以经过中间的组合逻辑ff3_i_1(LUT2)为例,Transition默认为rise/fall,即上升沿下降沿都支持,在Transition为默认值时,约束命令如下

set_min_delay -through [get_cells ff3_i_1] 1.111

查看对应的时序报告结果,此时ff3_i_1使用为上升沿时约束生效

查看ff3_i_1为下降沿时的路径,约束依旧生效

b)修改约束,指定Transition为下降沿fall_through

set_min_delay -fall_through [get_cells ff3_i_1] 1.111

此时时序路径中ff3_i_1为下降沿的4条路径,约束生效

ff1_reg到ff3_reg的另外4条路径中因为ff3_i_1为上升沿,故约束不生效

3.2.2 约束对象为Cell pin/Net

当through point的对象更加具体,如为pin时,此时Transition是体现在对应对象的时序边沿上

a)修改约束对象为pin,指定ff3_i_1/I0为下降沿fall_through

set_min_delay -fall_through [get_pins ff3_i_1/I0] 1.111

时序报告中,ff2_reg到ff3_reg中约束生效的4条路径中,ff3_i_1前面连接的ff2_reg都为下降沿触发

对于另外4条ff2_reg到ff3_reg约束未生效的的时序路径中,ff2_reg为上升沿触发,故不属于约束生效的范围

3.3 to points

to points的与start points的使用相同,可参见start piont的介绍

3.4 rise/fall

在options中勾选Only rising/falljing path delays are to be constrained,下拉框中选择rising/falling可对约束路径设置边沿生效,边沿为终点数据端口的边沿

以下列约束rise为例

set_min_delay -rise -from [get_clocks clk1] 2.222

第29号路径生效,对应data path中ff2_reg/D的边沿为上升沿

第17号路径中,data path中 ff2_reg/D的边沿为下降沿,故不生效

3.5 Reset path

Set min delay约束中存在一个配置项"Remove existing path exceptions before setting path delays",即约束的路径上如果已存在max_delay时序约束时是否被新的覆盖

以如下两条约束为例,

set_min_delay -from [get_clocks clk1] -to [get_clocks clk2] 1.111
set_min_delay -from [get_clocks clk1] 2.222

第二条max_delay无reset_path时,尽管第二条是后加的,但生效的是第一条约束1.111

如果第二条约束添加-reset_path,则会覆盖第一条的约束

set_min_delay -from [get_clocks clk1] -to [get_clocks clk2] 1.111
set_min_delay -reset_path -from [get_clocks clk1] 2.222

报告结果如下图

3.6 多对象设置

    start/through/to中也可以同时设置多个对象,将同时生效。如下图中对from为ff1_reg/C和ff2_reg/C的时序路径都设置max delay为2.222ns

set_min_delay -from [get_pins {ff1_reg/C ff2_reg/C}] 2.222

相关路径都将生效

​3.7 Max_delay 与 Min_deay

set_max_delay和set_min_delay的使用较多共同之处,下面对其它们的特点进行总结

1)set_max_delay为约束setup/recovery的requirement时间,set_min_delay为约束hold/removal的requirement时间,二者相互独立

2)set_max_delay支持通过设置datapath only只考虑发起时钟的数据路径延迟,set_min_delay不支持

3)set_max_delay如果设置了datapath only,则不会对对应的路径进行hold分析,即不存在hold路径

4)set_max_delay如果设置了datapath only,必须设置from对象

5)set_max_delay/set_min_delay不适合用于输入端口/输出端口到对应时序单元的路径约束,输入端口/输出端口的约束应使用set_input_delay/set_output_delay

6)set_max_delay/set_min_delay如果约束的不是有效的起点或终点,会出现时序分段现象,即该位置的前面(from)或后面(to)的时序传播会断开,使约束的位置称为有效的起点或终点,其他经过约束位置的路径全部受影响

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

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

相关文章

2025-4-12-C++ 学习 XOR 三元组 异或 急转弯问题

C的学习必须更加精进一些&#xff0c;对于好多的函数和库的了解必须深入一些。 文章目录 3513. 不同 XOR 三元组的数目 I题解代码 3514. 不同 XOR 三元组的数目 II题解代码 晚上&#xff0c;10点半&#xff0c;参加了LC的竞赛&#xff0c;ok了一道&#xff0c;哈哈~   第二道…

图像形态学操作对比(Opencv)

形态学基于图像的形状进行操作&#xff0c;用于处理二值化图像&#xff0c;主要包括腐蚀和膨胀两种基本操作。这些操作通常用于去除噪声、分隔或连接相邻的元素以及寻找图像中显著的最大点和最小点。 1. 形态学操作 import cv2 import numpy as np import matplotlib.pyplot …

sql 向Java的映射

优化建议&#xff0c;可以在SQL中控制它的类型 在 MyBatis 中&#xff0c;如果返回值类型设置为 java.util.Map&#xff0c;默认情况下可以返回 多行多列的数据

excel中的VBA指令示例(一)

示例注释&#xff1a; Sub 宏1() sub是宏开头&#xff0c;宏1是宏的名称&#xff0c;自定义&#xff0c;在按钮中可指定用某个宏 后面是注释 Sheets("装配材料").Select ‘选择表 装配材料 Ce…

【Linux C】简单bash设计

主要功能 循环提示用户输入命令&#xff08;minibash$&#xff09;。创建子进程&#xff08;fork()&#xff09;执行命令&#xff08;execlp&#xff09;。父进程等待子进程结束&#xff08;waitpid&#xff09;。关键问题 参数处理缺失&#xff1a;scanf("%s", buf)…

【vue】基础

一、vi-if 1.1基本使用 必须绑定大盒子包住的代码&#xff0c;使用id或者class都可以进行绑定 new Vue({ el:"#id" el:".class" }) 1.2v-if和v-show的区别 v-show会渲染&#xff0c;但是不显示&#xff0c;v-if不渲染不显示 1.3vue实例的作用范围 必须包…

【数据结构_5】链表(模拟实现以及leetcode上链表相关的题目)

书接上文&#xff0c;继续编写链表的功能 4.链表的中间插入 在链表中&#xff0c;本身是没有下标这样的概念的&#xff0c;不像顺序表&#xff0c;顺序表根据下标访问元素&#xff0c;O(1)复杂度。链表需要遍历之后找到正确的位置才能进行插入&#xff0c;为O&#xff08;N&a…

C语言的发展史

一、起源 C语言的起源可以追溯到20世纪60年代末期。其前身是BCPL&#xff08;Basic Combined Programming Language&#xff09;语言&#xff0c;由剑桥大学的Martin Richards于1967年在CPL语言的基础上简化而来。1970年&#xff0c;美国贝尔实验室的Ken Thompson以BCPL语言为…

深入解析栈式虚拟机与反向波兰表示法

1.1 什么是虚拟机&#xff1f; 虚拟机&#xff08;Virtual Machine, VM&#xff09;是一种软件实现的计算机系统&#xff0c;提供与物理计算机相类似的环境&#xff0c;但在软件层面运行。虚拟机的存在简化了跨平台兼容性、资源管理以及安全隔离等问题。 1.2 栈式虚拟机的架构…

ubuntu 系统安装Mysql

安装 mysql sudo apt update sudo apt install mysql-server 启动服务 sudo systemctl start mysql 设置为开机自启 sudo systemctl enable mysql 查看服务状态 &#xff08;看到类似“active (running)”的状态信息代表成功&#xff09; sudo systemctl status mysql …

《前端面试题之 CSS篇(第一集)》

目录 1、CSS的盒模型2、CSS选择器及其优先级3、隐藏元素的方法有那些4、px、em、rem的区别及使用场景5、重排、重绘有什么区别6、水平垂直居中的实现7、CSS中可继承与不可继承属性有哪些8、Sass、Less 是什么&#xff1f;为什么要使用他们&#xff1f;9、CSS预处理器/后处理器是…

HTTP:四.HTTP连接

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本数据的应用层协议。它是互联网上最常用的协议,用于在客户端和服务器之间传输数据。HTTP协议通常用于从Web服务器传输网页和文件到客户端浏览器,并支持其他用途,如传输API数据和传输文件。 HTTP连接是指客户端向服务…

opencv 识别运动物体

import cv2 import numpy as npcap cv2.VideoCapture(video.mp4) try:import cv2backSub cv2.createBackgroundSubtractorMOG2() except AttributeError:backSub cv2.bgsegm.createBackgroundSubtractorMOG()#形态学kernel kernel cv2.getStructuringElement(cv2.MORPH_REC…

要查看 ​​指定 Pod 的资源限制(CPU/内存)

要查看 指定 Pod 的资源限制&#xff08;CPU/内存&#xff09;&#xff0c;可以通过以下 kubectl 命令实现&#xff1a; 1. 快速查看某个 Pod 的资源限制 kubectl get pod <pod-name> -o jsonpath{.spec.containers[*].resources} | jq输出示例&#xff1a; {"lim…

信息安全管理与评估广东省2023省赛正式赛题

任务1&#xff1a;网络平台搭建(60分) 题号 网络需求 1 根据网络拓扑图所示&#xff0c;按照IP地址参数表&#xff0c;对DCFW的名称、各接口IP地址进行配置。&#xff08;10分&#xff09; 2 根据网络拓扑图所示&#xff0c;按照IP地址参数表&#xff0c;对DCRS的名称进…

IBM Rational Software Architect安装感受及使用初体验

1 安装感受 最近准备用UML 2.0绘制模型图。在读UML创始人之一Grady Booch写的书《Object-Oriented Analysis and Design with Applications》&#xff08;第3版&#xff09;1时&#xff0c;发现书中用的UML工具之一为IBM Rational Software Architect&#xff08;RSA&#xff…

接听电话,手机靠近耳朵后拿开,挂断电话,设备自动锁屏

目录 一、问题分析/需求分析 二、解决方案 一、问题分析/需求分析 先说一下大致流程: 首先是打电话过程会启动PROXIMITY(接近光传感器)用于监听手机是否到耳边,当手机到耳边时进行灭屏处理,灭屏过程中会调用到锁屏,所以最终会导致锁屏 详细流程分析: 首先根据日志看…

21天Python计划:零障碍学语法(更新完毕)

目录 序号标题链接day1Python下载和开发工具介绍https://blog.csdn.net/XiaoRungen/article/details/146583769?spm1001.2014.3001.5501day2数据类型、字符编码、文件处理https://blog.csdn.net/XiaoRungen/article/details/146603325?spm1011.2415.3001.5331day3基础语法与…

Honor of Kings (S39) 13-win streak

Honor of Kings (S39) 13-win streak S39赛季13连胜&#xff0c;庄周&#xff0c;廉颇硬辅助&#xff0c;对面有回血就先出红莲斗盆&#xff0c;有遇到马克没带净化的&#xff0c;出【冰霜冲击】破他大招 S39&#xff0c;庄周廉颇前排硬辅助全肉全堆血13连胜_哔哩哔哩bilibi…

AI技术实战:从零搭建图像分类系统全流程详解

AI技术实战&#xff1a;从零搭建图像分类系统全流程详解 人工智能学习 https://www.captainbed.cn/ccc 前言 本文将以图像分类任务为切入点&#xff0c;手把手教你完成AI模型从数据准备到工业部署的全链路开发。通过一个完整的Kaggle猫狗分类项目&#xff08;代码兼容PyTorch…