timing中的slack是什麼意思? (SOC) (Quartus II)(非常不错的一篇文章)

本文深入探讨了时序分析中的setuptime与holdtime的概念及其重要性。解释了slack的含义,包括setup slack与hold slack,并详细说明了如何计算这些值以确保数据能够正确地被寄存器捕获。

原文链接http://www.cnblogs.com/oomusou/archive/2010/08/04/timing_slack.html

Abstract
在分析timing時,在timing report中常會出現setup time slack與hold time slack,本文深入探討slack的意義。

Introduction
slack英文本身的意思是鬆弛,若setup time/hold time slack為正值,表示目前滿足setup time/hold time需求,並且還有多餘的時間,若slack為負值,表示目前已經不滿足setup time/hold time的需求,並且不足多少時間。

要詳細知道slack怎麼算出來的之前,須先了解一些專有名詞。

Launch Edge & Latch Edge

 slack_new00

Launch Edge:產生data的register 1所使用的clock rising edge。

Latch Edge:接收data的register 2所使用的clock rising edge,會delay Lauch Edge 1個clk。

 

Setup Time & Hold Time

slack01

Setup Time:在clk rising edge之前,data必須穩定的最短時間,若不滿足setup time,data無法敲進register。

Hold Time:在clk rising edge之後,data必須穩定的最短時間,若不滿足hold time,data無法敲進register。

Setup Time與Hold Time必須同時滿足,資料才可順利敲進register。

 

Data Arrival Time

 slack_new01

Data Arrival Time:data實際到達register 2的input D時的時間。

所以從Lauch Edge開始,經過Tclk1 (register 1的clock skew),再加上Tco(register 1的clock to output delay),再加上Tdata(組合邏輯本身的delay),即為Data Arrival Time。

 

Clock Arrival Time

slack_new02

Clock Arrival Time:clock實際到register 2 input的時間。

所以從Latch Edge開始,經過Tclk2(register 2的clock skew),即為Clock Arrival Time。

 

Data Required Time (Setup)

slack_new03

Data Required Time (Setup):為了讓資料能敲進register,最遲須在何時能準備好資料。

所以從Clock Arrival Time開始(Latch Edge + Tclk2) 減掉 Tsu ,在扣掉一下額外的不確定值,即為Data Required Time (Setup)。

 

Data Required Time (Hold)

slack_new04

Data Required Time (Hold):為了讓資料能敲進register,資料至少需維持到何時。

所以從Clock Arrival Time開始(Latch Edge + Tclk2)加上Th,再加上一些額外的不確定值,即為Data Required Time (Hold)。

 

Setup Slack

 slack_new06

講了這麼久,總算要進入主題Slack啦,先講Setup Slack,定義很簡單,只要將Data Required Time (Setup)減掉Data Arrival Time即可,也就是符合Setup Time的margin。

上面的Timing圖看起來很複雜,事實上以Lauch Edge為首導出來的只是Data Arrival Time,之前已經講過,而以Latch Edge為首導出來的是Data Required Time,之前也講過,現在只是將所有的timing都畫在一起而已。

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

 

Hold Slack

slack_new07

接下來講Hold Slack,定義也很簡單,只要將Data Arrival Time減掉Data Required Time (Hold)即可,也就是符合Hold Time的margin。

上面的timing圖比較特殊些,主要是Data Arrival Time部分,因為要找Hold Slack,所以從Next Launch Edge開始,一樣加上Tclk1 + Tco + Tdata,而從Latch Edge開始加上Tclk2時為Data Required Time (Hold),這與之前講的一樣。

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

 

Reference
Altera Quartus II Software Design Series:Timing Analysis


给定的参考引用未提及lib里timing_type的含义。在集成电路设计的标准单元库(lib)中,timing_type 用于描述不同类型的时序关系,它在时序分析和约束中起着关键作用。 常见的 timing_type 及其含义如下: - **combinational**:表示组合逻辑的时序关系。组合逻辑电路的输出仅取决于当前的输入,不涉及存储元件(如触发器)。在这种类型的时序弧中,timing_type 为 combinational 意味着信号从输入引脚到输出引脚的传播是即时的,不考虑时钟信号的影响。例如,一个简单的与门或或门的时序关系就可以用 combinational 来描述。 ```python # 示例代码展示 combinational 类型的时序弧定义 timing_arc : { timing_type : combinational; from_pin : "A"; to_pin : "Y"; rise_transition : (0.1, 0.2, 0.3); fall_transition : (0.15, 0.25, 0.35); } ``` - **setup_rising 和 setup_falling**:这两种类型用于描述触发器的建立时间约束。建立时间是指在时钟信号的有效沿(上升沿或下降沿)到来之前,数据信号必须保持稳定的最小时间。setup_rising 表示在时钟信号上升沿时的建立时间约束,而 setup_falling 则表示在时钟信号下降沿时的建立时间约束。 ```python # 示例代码展示 setup_rising 类型的时序弧定义 timing_arc : { timing_type : setup_rising; from_pin : "CLK"; to_pin : "D"; setup_time : 0.05; } ``` - **hold_rising 和 hold_falling**:这两种类型用于描述触发器的保持时间约束。保持时间是指在时钟信号的有效沿(上升沿或下降沿)到来之后,数据信号必须保持稳定的最小时间。hold_rising 表示在时钟信号上升沿时的保持时间约束,而 hold_falling 则表示在时钟信号下降沿时的保持时间约束。 ```python # 示例代码展示 hold_rising 类型的时序弧定义 timing_arc : { timing_type : hold_rising; from_pin : "CLK"; to_pin : "D"; hold_time : 0.03; } ``` - **recovery 和 removal**:这两种类型通常用于描述异步复位或置位信号的时序约束。recovery 时间是指异步信号(如复位信号)在时钟信号的有效沿之前必须释放的最小时间,以确保触发器能够正确响应时钟信号。removal 时间是指异步信号在时钟信号的有效沿之后必须保持稳定的最小时间。 ```python # 示例代码展示 recovery 类型的时序弧定义 timing_arc : { timing_type : recovery; from_pin : "RST"; to_pin : "CLK"; recovery_time : 0.04; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值