数字IC设计知识点及综合题详解(提前批、秋招必刷基础题)——(二)时序分析基础(Slack、Setup、Hold、Jitter、Skew、亚稳态)异步复位,同步释放

2023-11-17

目录

一、常见名词

1.1 时钟偏移Skew

1.1.1 Skew出现的原因

1.1.2 Skew解决方法

1.2 抖动Jitter

1.2.1 Jitter出现的原因

1.2.2 时钟抖动永远存在

1.3 扇入扇出Fan-in/Fan-out

1.4 亚稳态及相关概念

1.4.1 建立时间(Setup time)

1.4.2 保持时间(Hold time)

1.4.3 setup和hold违例的危害

1.4.4 setup和hold约束关系  

1.4.5 实例分析

1.4.6 复位时间(recovery)

1.4.7 撤销时间(removal)

异步复位,同步释放:

1.5 时间裕量Slack

1.5.1 概念

        关键路径(critical path):

        到达时间(arrival time):

        需求时间(required time):

        时间裕量(slack):

1.5.2 数据到达时间(Data Arrival Time)

1.5.3 时钟到达时间(Clock Arrival Time)

1.5.4 数据建立需求时间(Data Required Time Setup)

1.5.5 数据保持需求时间(Data Required Time Hold)

1.5.6 计算Slack


一、常见名词

1.1 时钟偏移Skew

1.1.1 Skew出现的原因

因时钟线长度不同或负载不同,导致时钟到达相邻单元的时间不同,这个时间上的偏差就叫时钟偏移SKEW。  

 在上图中的Tskew=Tclk2-Tclk1

1.1.2 Skew解决方法

偏移会一直存在

Skew 问题的解决方法就是:设计中的主要信号应该走全局时钟网络

此外FPGA中延迟锁定环(Delay locked ring,DLL)也可以去SKEW,延迟锁相环由控制逻辑和延时线组成,控制逻辑将输入时钟与输出时钟进行比较,并插入延时从而使得时钟同步。

但无论如何,在STA时,仍然要考虑Skew。

1.2 抖动Jitter

1.2.1 Jitter出现的原因

    在理想情况下,一个频率固定的完美的脉冲信号(以1MHz为例)的持续时间应该恰好是1us,每500ns有一个跳变沿。但这种信号并不存在。如图所示,信号周期的长度总会有一定变化,从而导致下一个沿的到来时间不确定。这种不确定就是抖动(jitter)

1.2.2 时钟抖动永远存在

1.3 扇入扇出Fan-in/Fan-out

数字电路中,逻辑门相互连接,每个逻辑门输出端与输入端都连着大量别的单元,因此由扇入扇出表示处理外部输入以及驱动外部其他单元的能力。

1.4 亚稳态及相关概念

同步电路中:

1.4.1 建立时间(Setup time)

触发器时钟上升沿到来前数据保持稳定的时间。

1.4.2 保持时间(Hold time)

触发器时钟上升沿到来后数保持据稳定的时间。

1.4.3 setup和hold违例的危害

如上图所示,在时钟上升沿到来前后的一段时间内数据必须保持稳定,否则数据就无法写入,造成“亚稳态“输出。如果前级驱动够强劲,电路就能按照趋势变化下去,一定时间后该点的值就会变化为“正确值”,如果驱动不够强劲,电路就会恢复之前的值,最终得到何值是不可控的,所以我们要避免亚稳态。在使用DFF时,必须满足其建立时间和保持时间的要求。 

1.4.4 setup和hold约束关系  

以上图为例,假设时序如下

 在上图时序中:

  △T = Tskew

  T1 = REG1检测到时钟后内部延时(Tclk_q) + 组合逻辑延时最后到达REG2的时间(Tcomb)

  Tcycle = CLK的周期(Tclk)

  Tsu=数据在CLK2上升沿到达前维持的时间

    Tsu = Tcycle + Tskew - T1

  Th=数据在CLK上升沿到达后维持的时间

         Th = T1 – Tskew

  如果Ts>setup time(触发器),Th>hold time(触发器)则数据能正常写入,由这个条件可以看出,Tskew与T1起着关键作用,而正之前所说如果使用全局时钟则Tskew会很小,可以忽略不计。

1.4.5 实例分析

以上图为例

Tsu= Tcycle + Tskew-T1 要使Tsu最小,则Tskew最小,T1最大。

Tsu(min) = Tcycle + Tskew(min) - T1(max) = Tcycle(=15) + Tskew(min)(=2+5+2-2) - T1(max) (=11+2+9+2) = 15+2+5+2-2-11-2-9-2 = 22- 24 < Tsetup

因此发生了setup violation


异步复位时:

        除了同步电路中会产生亚稳态外(不满足Tsu和Th),在异步复位时也会产生亚稳态,这里需要提到复位时间与撤销时间。

1.4.6 复位时间(recovery)

复位信号释放(对于低电平有效的复位信号指上升沿),与紧跟其后的第一个时钟上升沿之间的最小时间

1.4.7 撤销时间(removal)

时钟信号的上升沿,与紧跟其后异步复位信号从有效到无效的最小时间。

如下图所示,异步复位信号撤销必须在复位时间和撤销时间外,否则会产生亚稳态。    

 异步复位信号撤销时间在Trecovery和Tremoval之内,则会造成亚稳态,在时钟上升沿Tco(输出延时)后会产生振荡,振荡时间为Tmet(决断时间)。

补充:

        1.只要系统中有异步元件,亚稳态就是无法避免的,亚稳态主要发生在异步信号检测、跨时钟域信号传输中。

        2.对于同步信号而言不满足Tsu和Th会产生亚稳态,对于异步信号,复位不满足Trecovery和Tremoval会产生亚稳态。

        3.随着clk频率的增加,亚稳态发生的几率是增加的。

消除亚稳态方法:

  1.对异步信号进行同步处理;

  2.使用FIFO对跨时钟域数据进行缓冲处理;

  3.复位电路采用异步复位,同步释放处理;

异步复位,同步释放:

为了避免亚稳态,让拉高的复位信号打两拍,达到与时钟clk边沿同步的目的

module asyn_reset(
	clk,
	rst_n,
	
	rst_s2
);

input clk;//时钟
input rst_n;//异步的复位信号

output reg rst_s2;//同步释放的复位信号

reg rst_s1;//中间寄存1拍

always @ (posedge clk or negedge rst_n) begin
	if(!rst_n) begin
		rst_s1 <= 1'b0;
		rst_s2 <= 1'b0;//异步复位:复位信号有效:没有打拍
	end
	else begin
		rst_s1 <= 1'b1 ;
		rst_s2 <= rst_s1;//同步释放:clk边沿触发:打了两拍
		end
end


endmodule

异步复位,同步释放的电路原理图

 

仿真代码

`timescale 1ns/100ps
module tb_asyn_reset();
	
	reg clk;//时钟
	reg rst_n;//异步的复位信号

	wire rst_s2;//同步释放的复位信号
	
	asyn_reset my_asyn_reset(clk,rst_n,rst_s2);
	
	always #5 clk = ~clk;
	
	initial begin
		clk = 0;
		rst_n = 1;
		#3;
		rst_n = 0;
		#2.5;
		rst_n = 1;
		#100;
		$stop;
	end
	
	
endmodule

1.5 时间裕量Slack

1.5.1 概念

时间裕量分析 首先需要将电路中的路径找出来

路径的起点有两种:时序器件的时钟输入端、电路的起点;

终点也有两种:时序器件的数据输入端、电路的终点。

如下图所示,一共有四种路径。 

除了路径外还有以下几个概念需要了解:

        关键路径(critical path):

                从输入到输出中延时最大的那条路径。

        到达时间(arrival time):

                信号从参考的时间起到达某特点位置的时间。

        需求时间(required time):

                信号到达的最晚的时间。

        时间裕量(slack):

                用需求时间到达时间得到的结果就是时间裕量(slack =required time- arrival time)

                如果是正数则说明路径延时满足需求,如果是负数则说明延时不满足。其中比较重要的时Hold Time Slack

计算:

仍然以该电路为例   

发射沿(Launch Edge):产生数据的REG1的clock上升沿;

锁存沿(Latch Edge):接受数据的REG2的clock的上升沿,延时Launch Edge1个时钟;

1.5.2 数据到达时间(Data Arrival Time

        Tclk1= CLK到达REG1的时间

  Tco  = REG1固定延时

  Tdata= 数据传输时间

        时序图如下:

Data Arrival Time = Launch Edge+Tclk1+Tco+Tdata 

1.5.3 时钟到达时间(Clock Arrival Time

时序图如下:

Clock Arrival Time = latch Edge+Tclk2

1.5.4 数据建立需求时间(Data Required Time Setup

       因为数据必须在Tsu之前有效,因此:

       Data Required Time Setup = Clock Arrival Time - Tsu

1.5.5 数据保持需求时间(Data Required Time Hold

       因为数据必须在Th之后才能改变,因此:

       Data Required Time Hold= Clock Arrival Time+Th

1.5.6 计算Slack

Setup Slack = Data Required Time Setup - Data Arrival Time

= Clock Arrival Time - Tsu - (Launch Edge+Tclk1+Tco+Tdata )

= (latch Edge+Tclk2) - Tsu - (Launch Edge+Tclk1+Tco+Tdata )

= (latch Edge - Launch Edge) + (Tclk2 - Tclk1) - Tsu - Tco - Tdata

即Setup Slack=Tclk + Tskew - Tsu - Tco - Tdata(=Tcomb)

若Setup Slack為正,表示Data Required Time在Data Arrival Time之後,所以一定滿足Setup Time,反之若Setup Slack為負,則表示Data Arrival Time在Data Required Time之後,所以一定無法滿足Setup Time。

Hold Slack = Data Arrival Time - Data Required Time Hold

= (next)Launch Edge+Tclk1+Tco+Tdata  - (Clock Arrival Time+Th)

= (next)Launch Edge+Tclk1+Tco+Tdata  - (latch Edge + Tclk2 + Th)

=  Tclk1 - Tclk2  +Tco +Tdata - Th

即Hold Slack=Tco +Tdata - Th - Tskew

若Hold Slack為正,表示Data Arrival Time在Data Required Time之後,所以一定滿足Hold Time,反之若Hold Slack為負,則表示Data Required Time在Data Arrival Time之後,所以一定無法滿足Hold Time。


参考文献:

(原創) timing中的slack是什麼意思? (SOC) (Quartus II) - 真 OO无双 - 博客园 (cnblogs.com)

【基础知识】时序(Slack、Setup、Hold、Jitter、Skew、亚稳态) - 要努力做超人 - 博客园 (cnblogs.com)

校招Verilog——异步复位同步释放 - 咸鱼FPGA - 博客园 (cnblogs.com)

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

数字IC设计知识点及综合题详解(提前批、秋招必刷基础题)——(二)时序分析基础(Slack、Setup、Hold、Jitter、Skew、亚稳态)异步复位,同步释放 的相关文章

  • 【读书笔记】高级FPGA设计之面积结构设计

    目录 面积结构设计 折叠流水线 基于控制的逻辑复用 资源共享 复位对面积的影响 无复位的资源 无置位的资源 无同步复位的资源 复位 RAM 利用置位 复位触发器引脚 总结 面积结构设计 本篇讨论数字设计的三个主要物理特性的第二个 面积 并分
  • 低通采样定理与带通采样定理

    一 低通 采样定理 如何从抽样信号中恢复原连续信号 在什么条件下才可以无失真地由采样信号恢复原连续信号 著名的采样定理对此作了明确的回答 采样定理在通信系统 信息传输理论 数字信号处理等方面占有十分重要的地位 该定理在连续时间信号与系统和离
  • 数字IC笔试面试常考问题及答案

    来源 知乎 链接 https zhuanlan zhihu com p 261298869 基础知识 原理务必理解透彻 锁存器的结构 DFF的结构 建立保持时间 亚稳态 STA CDC 亚稳态的成因 危害 解决方法 建立保持时间的计算 违例
  • verdi学习总结

    verdi学习总结 本篇文章关于Verdi的使用 并长期进行补充与更新 verdi简介 verdi用来查看fsdb波形进行代码的debug 使用流程 1 在tb文件中dump相应的要调试的信号 fsdbDumpvars 0 test top
  • 使用Aardvark(Total Phase)监测I2C链路

    使用Aardvark监测I2C链路 项目调试实例 1 Aardvark是Total phase公司推出的一款I2C SPI总线的调试工具 其功能包括 作为主 从设备调试I2C或SPI的相关功能 监测I2C总线上的数据 调试GPIO端口等 2
  • 【硬件架构的艺术】学习笔记(2)同步和复位

    目录 写在前面 2 同步和复位 2 1 同步设计 2 1 1 避免使用行波计数器 2 1 2 门控时钟 2 1 3 双边沿或混合边沿时钟 2 1 4 用触发器驱动另一个触发器的异步复位端 2 2 推荐的设计技术 2 2 1 避免在设计中出现
  • 建议收藏:不能不刷的100道数字IC笔/面试题!

    一 IC设计流程及相应EDA开发工具 前端设计 逻辑设计 1 规格制定 根据客户需求 具体的功能和性能要求 制定芯片规格Spec 2 详细设计 设计方案 具体实现架构 模块划分 3 HDL编码 将实际的硬件电路功能通过HDL语言描述出来 形
  • spyglass的waiver使用问题总结-工具(八)

    spyglass使用过程中waiver warning及error过程中总会出现生效不成功的问题 总结使用步骤供参考 实践出真知 解决问题就是好方法 1 在spyglass的prj中设置默认waiver文件 2 如何waiver 3 查看已
  • Grafana初步总结

    1 grafana安装及问题解决 在官网下载安装包 解压后进入bin目录双击 grafana server exe启动服务 服务启动成功默认端口3000 在浏览器输入http localhost 3000 回车进入登录界面 初始账号密码为
  • disable path和false path的作用与区别

    disable path和false path的作用与区别C 欢迎使用Markdown编辑器 链接 disable与false的相同与不同 false path 指定某一条path 工具计算delay 但不报时序 disable path
  • java进制转换工具类

    本文主要写进制转换的工具类 具体的各个方法讲解见上一篇 进制转换 进制转换工具类及算法 1 工具类 2 二进制相加 主页传送门 传送 1 工具类 进制转换是人们利用符号来计数的方法 进制转换由一组数码符号和两个基本因素 基数 与 位权 构成
  • CRC算法并行运算Verilog实现

    因为CRC循环冗余校验码的算法和硬件电路结构比较简单 所以CRC是一种在工程中常用的数据校验方法 尽管CRC简单 但在工程应用中还是有些问题会对工程师产生困惑 这篇文章将介绍一下CRC 希望对大家有所帮助 一 CRC算法介绍 CRC校验原理
  • 数字IC设计学习笔记_静态时序分析STA_ PrimeTime 基本概述

    数字IC设计学习笔记 PrimeTime 基本概述 1 PrimeTime 基本概述 2 运行模式 1 PrimeTime 基本概述 PrimeTime Synopsys公司提出的 针对于复杂的 全芯片的 门级静态时序分析的工具 可集成在逻
  • 【HDLBits 刷题 6】Circuits(2)Sequential Logic---Latches and Filp Flops

    目录 写在前面 Latches and Filp Flops Dff Dff8 Dff8r Dff8p Dff8ar Dff16e D Latch DFF1 DFF2 DFF gate Mux and DFF1 Mux and DFF2 D
  • pytorch学习总结(一)(SGD随机梯度下降、学习率调整策略、train模式)

    看了几个月的理论 总算是开始实践了 学习了几个月 这门学问中数学的应用还挺有意思的 比现在的工作有意思多了 1 torch optim SGD trainer torch optim SGD net parameters lr lr mom
  • 基于STM32c8t6的5路pwm占空比测量实验总结

    测量方式 1 正点原子例程里使用的方式 定时器通道的相关引脚输入捕获上升沿触发中断 在中断函数里 检测到上升沿之后TIM SetCounter TIMX 0 将计数器的值置零重新开始计数 同时将定时器中断触发方式切换为下降沿触发 待到下降沿
  • 【YAML 学习】

    YAML是 JSON 的超集 因此是一种用于指定分层配置数据的便捷格式 YAML YAML Ain t Markup Language 的递归首字母缩写词 是一种数据序列化语言 旨在实现人性化 并与现代编程语言一起处理常见的日常任务 YAM
  • 电力电子转战数字IC——我的IC面试(2022.10.14更新)

    目录 感谢信 HKWS10 14面试 25mins JXC10 13面试 30mins JDSK9 23面试 42mins 快速的自我介绍 介绍一下这个MCDF的项目 你这里写SV搭建的验证环境 和UVM搭建的有什么区别吗 你这里写了覆盖率
  • 【EDA Tools】Spyglass 检查 Verilog 和 SystemVerilog 混合语言及 Lint 检查

    目录 写在前面 读入设计 发现问题并解决 Lint 检查 写在前面 Spyglass可以用于检查混合设计中的语言互操作性和一致性问题 对于设计中包含多种硬件描述语言的情况 Spyglass 能够识别并解析其中的模块及其互连 并对其进行验证
  • 约束综合中的逻辑互斥时钟(Logically Exclusive Clocks)

    注 本文翻译自Constraining Logically Exclusive Clocks in Synthesis 逻辑互斥时钟的定义 逻辑互斥时钟是指设计中活跃 activate 但不彼此影响的时钟 常见的情况是 两个时钟作为一个多路

随机推荐