静态时序分析-Multicycle约束

2023-11-01

        有时,前端在一些关键路径上的设计,可能会出现两个时钟周期驱动和采样一拍数据,来放松关键路径上的时序,这样的设计在STA约束过程中,如果不放松,会导致Timing违例过大,无法收敛,此时的Timing由前端逻辑实现保证,STA约束即可释放,以达到STA出口。

双Cycle驱动采样典型电路

       双Cycle的驱动和采样电路,常见的为Lunch Reg和Capture Reg在D端会带有使能所存逻辑,如图3.2.1.1所示。

图3.2.1.1 典型双cycle采样电路结构

       Lunch寄存器在使能信号EN为1时,时钟有效沿到来后,将数据采样到Q,当EN信号为0时,Q端锁存。Capture寄存器同理,在EN信号为1时,采样Lunch寄存器驱动的信号,EN为0时,锁存Q端信号。如果要做到双周期采样,EN信号的翻转应为时钟周期的二分频。该电路的时序如图3.2.1.2所示。

图3.2.1.2 双cycle电路设计时序图

       MultiCycle的设置为对部分时钟有效沿不做setup或者hold检查,帮助清理Timing Violation,针对上述两拍出一个数据的设计,STA设置如下:

set_multicycle_path 2 -setup -from lunch_reg.clk to capture_reg.d

       此时设置从lunch reg的时钟端到capture reg的数据D端为multicycle,放松setup检查一拍,如图3.2.1.3所示。

图3.2.1.3 multicycle检查点

       按照上式设定STA约束后,Setup检查会放过一个cycle做路径的setup检查,如图3.2.1.3所示,红色线为capture沿的setup检查,而对于该路径,前一个沿放过Setup检查。如果不设置hold检查,当沿的hold会在capture沿提前一个cycle做,因此如图3.2.1.3所示蓝色线为hold检查沿,此时可以发现,multicycle路径下,capture沿的前一个有效沿可放过setup/hold检查。因此需要新增hold的约束设定。

set_multicycle_path 2 -setup -from lunch_reg.clk to capture_reg.d

set_multicycle_path 1 -hold -from lunch_reg.clk to capture_reg.d

       增加设定后,对hold的检查沿如图3.2.1.4所示。

图3.2.1.4 正确的multicycle检查设定

       针对上述典型事例设定的multicycle,双沿打拍场景下,中间的沿不做timing检查,lunch沿后两个周期作为capture沿检测setup,capture沿前两个周期检测hold。

3.2.2 单Cycle采样双Cycle驱动典型电路

       在有的设计下,存在lunch沿后一个周期进行capture,此时可通过multicycle的设定放松hold检查,单cycle采样双cycle驱动电路如图3.2.2.1所示。

图3.2.2.1 单Cycle采样双Cycle驱动典型电路

       该电路下的采样驱动时序如图3.2.2.2所示。

图3.2.2.2 单Cycle采样双Cycle驱动典型电路时序

       此时multicycle应当做如下设定:

set_multicycle_path 1 -setup -from lunch_reg.clk to capture_reg.d

set_multicycle_path 1 -hold -from lunch_reg.clk to capture_reg.d

       Setup检查为lunch沿的后一个Capture Cycle,而hold检查为Capture的前两个Cycle,如图3.2.2.3所示

这种电路的设计,有助于放松hold,因为跨过一个cycle不检查hold,因此对hold会放松。

       Multicycle约束最常见的场景其实是同步时钟分频的lunch和采样问题,这类问题一般分为两类,一类是慢时钟lunch,快时钟capture,另一类是快时钟lunch,慢时钟capture。下面具体对两种场景进行multicycle分析。

慢时钟lunch快时钟capture

       举一个例子,RTL设计在慢时钟域驱动数据,在快时钟域采样数据,慢时钟是快时钟的4分频,为同步设计,此时对于快时钟,可以设置multicycle如下:

set_multicycle_path 4 -setup -end -from clk_slow to clk_fast

相关时序分析和setup/hold检查沿如图3.2.3.1所示。

图3.2.3.1 同步分频时钟setup/hold约束

       此时hold检查为capture的前一个沿,因此要该类设计还要放松hold,约束设置如下:

set_multicycle_path 4 -setup -end -from clk_slow to clk_fast

set_multicycle_path 3 -hold -end -from clk_slow to clk_fast

相关时序分析和setup检查沿如图3.2.3.2所示。

图3.2.3.2 同步分频时钟setup/hold约束

       同理,对于setup的multicycle设定以及hold的multicycle设定,放松的具体cycle可以映射到时序图检查沿上,举例如下约束:

set_multicycle_path 2 -setup -end -from clk_slow to clk_fast

set_multicycle_path 3 -hold -end -from clk_slow to clk_fast

       该约束对应的时序有效沿检查如图3.2.3.3。

图3.2.3.3 同步分频时钟setup/hold约束

3.2.4 快时钟lunch慢时钟capture

举另外一个例子,RTL设计在快时钟域驱动数据,在慢时钟域采样数据,慢时钟是快时钟的4分频,为同步设计,此时逻辑应保证信号在快时钟展宽,确保慢时钟能够采样到有效信号,此时也可以设置multicycle:

set_multicycle_path 4 -setup -start -from clk_fast to clk_slow

set_multicycle_path 3 -hold -start -from clk_fast to clk_slow

相关时序分析和setup/hold检查沿如图3.2.4.1所示。

图3.2.4.1 同步分频时钟setup/hold约束

       前端RTL设计为在慢时钟下降沿采样数据,则multicycle约束要设定为:

set_multicycle_path 2 -setup -start -from clk_fast to clk_slow

set_multicycle_path 3 -hold -start -from clk_fast to clk_slow

相关时序分析和setup检查沿如图3.2.4.2所示。

图3.2.4.2 同步分频时钟setup/hold约束

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态时序分析-Multicycle约束 的相关文章

  • FPGA零基础学习之Vivado-ROM使用教程

    FPGA零基础学习之Vivado ROM使用教程 本系列将带来FPGA的系统性学习 从最基本的数字电路基础开始 最详细操作步骤 最直白的言语描述 手把手的 傻瓜式 讲解 让电子 信息 通信类专业学生 初入职场小白及打算进阶提升的职业开发者都
  • Quartus II 安装

    本次介绍使用的 Quartus 版本为 10 1 目前 Quartus II 官网已经没有 13 1 以下版本的安装包 大家可以安装 13 1 以上版本的软件 功能都是大同小异 下载地址 FPGA Software Download Cen
  • 在vivado中使用tcl脚本(UG894)

    本文源自UG894 主要介绍如何在vivado中使用tcl脚本 1 vivado中如何获取tcl help vivado中任何自带的命令都可以通过 help 获取帮助信息 也可以直接输入 help 取得vivado命令合集 并通过 help
  • 基于单光子探测的多脉冲周期符合远距离测距

    激光测距技术通过发射主动激光信号对目标进行探测 接收由目标漫反射回来的回波信号并进行统计 处理及换算 从而得到目标的距离 速度信息 实现对目标距离信息的探测 凭借其系统简单 操作灵活 高精度等特点 被广泛运用于民用 科研及军事等各类场合 基
  • DDR的VTT有源端接和无源端接(slua886a笔记)

    DDR的VTT有源端接和无源端接 slua886a笔记 背景 对于DDR的VTT端接 一直有说法是有源端接可降低功耗 之前一直没仔细理解其中原因 现在找了些相关的资料来介绍和对比有源和无源端接 理解有源端接的优点和降低功耗的原理 主要基于读
  • Verilog中forever、repeat、while、for四类循环语句(含Verilog实例)

    当搭建FPGA逻辑时 使用循环语句可以使语句更加简洁易懂 Verilog中存在四类循环语句 如标题 几种循环语句的具体介绍和用法如下 1 forever 连续的执行语句 语法格式 forever
  • Verilog实例-AMBA(AHB)协议

    目录 一 简介 1 1 AHB 1 2 signal list 1 3 Bus interconnection 总线互联 1 4 Overview of AMBA AHB operation 1 4 1 Basic transfer 1 4
  • 【FPGA入门】第八篇、FPGA驱动VGA实现动态图像移动

    目录 第一部分 实现效果 第二部分 动态VGA显示的原理 1 将动态显示的区域提前进行赋值 2 图像块的移动是每张图片叠加后的效果 3 如何实现图像块位置的改变 第三部分 系统结构和驱动波形 1 系统的Top down结构 2 图像块移动的
  • Matlab 高斯信道下QPSK通带通信系统的简单仿真

    1 原理 2 仿真 3 总结反思 4 参考资料 1 原理 QPSK的具体内容请参考百度 QPSK的调制jie框图大致如下 QPSK信号可以采用正交调制的方式产生 如第一张图片的左半部分 I路信号与cos 信号相乘 Q 路信号与sin信号相乘
  • verilog中wire和reg类型的区别

    module counter parameter CNT MAX 25 d24 999 999 input wire sys clk input wire sys rst n output reg led out reg 24 0 cnt
  • 跨时钟域处理方法(一)——打拍

    一 说明 处理跨时钟域的数据可以分为单bit数据和多bit数据 而打拍的方法主要常见于处理单bit数据的跨时钟域问题 打拍的本质是通过添加寄存器 对输入的数据进行延拍 其主要目标是消除亚稳态的影响 常见的是打2拍 也就是添加2级寄存器 二
  • 数码管电子时钟

    文章目录 前言 一 回顾数码管 二 任务描述 三 系统框图 四 模块调用 五 模块原理图 六 工程源码 6 2 时钟计数模块代码 6 2 数码管驱动模块代码 6 3 顶层模块代码 七 仿真测试 7 1 测试代码 7 2 仿真结果 八 管脚信
  • 实验1-FPGA编程入门

    文章目录 一 认识全加器 二 输入原理图实现1位加法器 一 半加器原理图输入 二 全加器原理图输入 三 Verilog语言实现全加器 四 总结 五 资料参考 一 认识全加器 一 半加器 1 逻辑分析 如下图所示 半加器只有两个输入和两个输出
  • 【Xilinx Vivado时序分析/约束系列4】FPGA开发时序分析/约束-实验工程上手实操

    目录 建立工程 添加顶层 模块1 模块2 添加约束文件 编辑时钟约束 打开布线设计 代码代表的含义 时序报告 进行时序分析 Summary 包含了汇总的信息量 Source Clock Path 这部分是表示Tclk1的延时细节 Data
  • PAJ7620U2手势识别——配置0x00寄存器(3)

    文章目录 前言 一 为啥要配置0x00寄存器 二 配置步骤 1 单个读操作步骤图 2 模块状态转移图绘制 3 模块波形图绘制 4 上板验证 5 参考代码 总结 前言 在前面的教程中 小编带领各位读者学习了如何通过I2C协议去唤醒PAJ762
  • 【ZYNQ学习】PL第一课

    这节课讲什么 这节课的名字本来是想写为LED 但这一课里除了LED也有按键 又想换为GPIO控制 但关于PL的GPIO控制 不应该这么草率和简单 而且这一课有很多和ZYNQ或者PL关联性不强的东西要说 所以我写了删删了写改了好几遍 终于定为
  • 时序约束理解

    异步配置信息 跨时钟域 配置信息一般set max delay按照3delay来约束 2 异步回读 rst clear信号 设置set false path 放松时序约束要求 不应分析设计中的逻辑路径 因为不关心点到点时序要求
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • Vivado ILA的debug信息保存与读取

    保存 write hw ila data D Project FPGA ILA Debug Data 202401041115 ila upload hw ila data hw ila 1 读取 display hw ila data r
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573

随机推荐

  • Python:利用cv2模块识别手势

    简介 OpenCV是一个基于BSD许可 开源 发行的跨平台计算机视觉库 可以运行在Linux Windows Android和Mac OS操作系统上 它轻量级而且高效 由一系列 C 函数和少量 C 类构成 同时提供了Python Ruby
  • Java 依据文件名后缀,获取Content-Type/Mime类型

    枚举类代码MimeTypeEnum import org apache commons lang3 StringUtils import lombok Getter 依据文件后缀名返回ContentType author zzg Gette
  • Java基础--接口(Interface)

    有时必须从几个类中派生出一个子类 继承它们所有的属性和方法 但是 Java不支持多重继承 有个接口 就可以得到多重继承的效果 接口 interface 是抽象方法和常量值的定义的集合 从本质上讲 接口是一种特殊的抽象类 这种抽象类中只包含常
  • 结构方程模型

    结构方程模型 SEM 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 结构方程模型 SEM 前言 一 什么是结构方程模型 二 在LISREL中使用结构方程模型 1 LISREL介绍 2 LISREL操作 总结 前
  • 2259. 移除指定数字得到的最大结果、字符串

    版本1 class Solution public string removeDigit string number char digit 记录字符出现的位置 int pos0 1 获取第一次字符出现的位置 int i 0 for i lt
  • Keil MDK error :L6031U

    之前编译都是OK 早上重新编译遇到这个样的错误 ASM 2 axf error L6031U Could not open scatter description file ASM 2 sct No such file or directo
  • idea中解决spring配置文件命名空间(namespace)出现红色问题

    在配置dubbo项目时 开始时经常出现dubbo错误 如下图 修改方式已经出现在提示中了 具体这个更改 1 解压dubbo 2 5 4 jar这样的包 具体看你使用的版本 选择 META INF文件夹 解压要到你的目录下 见下图 2 ide
  • imaplib.abort: socket error:EOF 解决方法

    解决方法 设置重复登录 def login self serv None while True try serv imaplib IMAP4 SSL self imap server 993 r d serv login self user
  • ubuntu18安装caffe(CPU)

    1 前言 历时不知多少天 终于在自己电脑上配置好了caffe环境 2 所需环境 1 ubuntu18 04 2 python3 6 默认是只有3 6 3 安装 3 1切换清华源 cp etc apt sources list etc apt
  • chrome浏览器F12调式,修改替换js文件

    在F12模式下 有时可以直接修改js源码 Ctrl S 保存就可以了 但是有时这种方法会不起作用 这里介绍本地替换js的方式 案例 比如csdn想复制别人的一段文字并保留样式 但是字符长度大于140就不起作用了 1 通过右键定位需要修改的j
  • ELK-日志服务【redis-配置使用】

    目录 环境 1 redis配置 2 filebeat配置 3 对接logstash配置 4 验证 5 安全配置 第一种 kibana nginx访问控制 6 第二种 在ES 主节点 配置TLS 7 kibana配置密码 8 logstash
  • 晨光文具去年赚5亿,连2000元都拿来理财

    只要走出学校大门 在不多于500米半径范围内 你都能轻松找到晨光文具的门店 大到一线城市 小到三四线县城 经过20年苦心经营 晨光文具已经做到了这种格局 在这种格局背后 是晨光系7 2万家零售终端的缜密布局 20年来 在国内书写工具以及学生
  • 07:和为给定数

    总时间限制 1000ms 内存限制 65536kB 描述 给出若干个整数 询问其中是否有一对数的和等于给定的数 输入 共三行 第一行是整数n 0 lt n lt 100 000 表示有n个整数 第二行是n个整数 整数的范围是在0到10 8之
  • Linux Suse firewall 查看,关闭,启动

    查看 linux chkconfig list grep i fire 关闭 linux SuSEfirewall2 stop 启动 linux SuSEfirewall2 stop
  • 最小生成树以及Kruskal算法,Prime算法

    一 最小生成树 连通图 在无向图中 若从顶点v1到顶点v2有路径 则称顶点v1与顶点v2是连通的 如果图中任 意一对顶点都是连通的 则称此图为连通图 强连通图 在有向图中 若在每一对顶点vi和vj之间都存在一条从vi到vj的路径 也存在一条
  • 信号处理中简单实用的方法——提取信号中的包络

    一 用希尔伯特变换计算信号的包络 在求某一信号包络时用得最多的是希尔伯特变换 但并不是希尔伯特变换适用于所有信号求包络的情况 这是因为对于包络没有一个很严格的定义 在求包络时不同的情况会有不同的要求 下面将介绍用希尔伯特变换求取信号的包络
  • JVM一个类的加载过程

    七大步骤 具体过程 加载 classpath jar包 网络 某个磁盘位置下的类的class二进制字节流读进来 在内存中生成一个代表这个类的 java lang Class 对象放入元空间 此阶段我们的程序员可以干预 我们可以自定义类加载器
  • java web考试题及答案_2016JAVA-WEB期末复习题库附答案.doc

    1 当访问一个Servlet时 以下Servlet中的哪个方法先被执行 D A destroy B doGet C service D init0 2 假设在myServlet应用中有一个MyServlet类 在web xml文件中对其进行
  • 【leetcode】求两个链表的交点

    求两个链表的交点 c 借助set Definition for singly linked list struct ListNode int val ListNode next ListNode int x val x next NULL
  • 静态时序分析-Multicycle约束

    有时 前端在一些关键路径上的设计 可能会出现两个时钟周期驱动和采样一拍数据 来放松关键路径上的时序 这样的设计在STA约束过程中 如果不放松 会导致Timing违例过大 无法收敛 此时的Timing由前端逻辑实现保证 STA约束即可释放 以