大話DC之setup time與hold time

2021-03-02 芯路芯語

IC代碼的綜合過程可以說就是時序分析過程,dc會將設計打散成一個個路經,這些路經上有cell延遲和net延遲,然後dc會根據你加的約束,來映射庫中符合這種延遲以及驅動的器件。從而達到綜合的目的。dc的所有時序約束基礎差不多就是setuptime 和 hold time。 可以用下面的圖片說明:

所謂setup time即建立時間,也就說數據在時鐘到來之前保持穩定所需要的時間,holdtime 即保持時間,也就是說在時鐘到來之後數據需要保持穩定的時間。在深入建立時間和保持時間之前。先了解下dc中的路經以及startpoint  ,end point。 所謂start point 就是:

1. input port(頂層設計的輸入埠)

2.clock pin of sequential cell(觸發器的clock pin)所謂的end point 就是:1 output port(頂層設計的輸出埠)

3.datapin of  sequential cell(觸發器的data pin)了解 start point 和 end point,就可以方便的了解 dc是如何將設計打散成路經,一個設計中基本的路徑分為4種,如下圖:

path1: input port to data pin of sequential cell

path2: input port to output port

path3: clock pin to data pin of next sequential cell

path4:clock pin to output port

所有的設計也就這四種類型的路徑。

另外一種就是帶反饋的,也就是本身的clock pin to data pin  。 

有了路徑的概念之後,我們可以分析更複雜的setup time 和 hold time 。 dc中對於建立時間的分析是基於路徑的最大延遲;而對於保持時間的分析是基於路徑的最小延遲。

看下面一個例子:

 這個是給定setup time 和hold time 的案例,要求算出最小時鐘周期。同理也可以給你一個周期和setup time 和hold time,計算時間裕度。 我們假設時鐘周期是20,每個觸發器的cell 延遲是1,觸發器的建立時間是1,保持時間是0.5,分析下列圖中的建立時間和保持時間的slack。

看到設計,首先要分析路徑,找出最長和最短路徑,因為dc的綜合都是根據約束而得到最短和最長路徑來進行器件選擇的。所以接下來將圖中的所有路徑標出。因為沒有前級(input_delay)和後級電路(output_delay),我們只分析圖中給出的 路徑,如下圖:

對於紅色路徑:Td=Tcell+Td4+Td5+Td6=1+4+3+1=9

對於黃色路徑:Td=Tcell+Td4+Td5+Td6+Td8=1+4+3+1+2=11

對於紫色路徑:Td=Tcell+Td1+Td2+Td3=1+2+3+2=8

對於綠色路徑:Td=Tcell+Td7+Td2+Td3=1+2+3+2=8

所以Tlongest=11,Tshortest=8

對於setup time的slack:Tclk-Tlongest-Tsetup=20-11-1=8

對於hold time的slack : Tshortest-Thold=8-0.5=7.5

對於setup time 和 hold time 的slack的計算,可以體會下面的示意:

 

對照第一副示意圖與此比較,建立時間看D2 ,保持時間看D1,因為同時把Tl和Ts放在一個圖例中,看起來可能有些誤解:)

 有空會繼續討論setup time 和hold time,下次討論將包括clock skew 和input delay,output delay在其中

相關焦點

  • 建立時間(setup time)和保持時間(hold time)詳析
    前面一期「數字前端」專題推送簡要介紹了為什麼會有建立時間(setup time)和保持時間(hold time)要求,本期就詳細介紹setup和hold的基本概念、詳細分析及其違例解決方法。1、基本概念靜態時序分析中最基本的就是setup和hold時序分析,其檢查的是觸發器時鐘端CK與數據輸入端D之間的時序關係。
  • 有趣的BGP中的Keepalive time和hold time
    我們可以通過display bgp peeripv4 verbose 命令查看keepalive time和hold time,如下圖:然後去路由器1上查看協商的hold值。路由器1上協商的hold time,為60秒,keepalive time為20秒。接下來我們再路由器2上繼續修改,hold time > 3*keepalive time。
  • FPGA建立時間(setup time)&保持時間(hold time)&競爭和冒險&毛刺
    建立時間(setup time)是指在觸發器的時鐘信號上升沿到來以前,數據穩定不變的時間,如果建立時間不夠,數據將不能在這個時鐘上升沿被打入觸發器
  • Linux時間子系統之:timekeeping
    2、全局變量static struct timekeeper timekeeper; static DEFINE_RAW_SPINLOCK(timekeeper_lock); static seqcount_t timekeeper_seq;static struct timekeeper shadow_timekeeper;timekeeper
  • Zabbix 6.0 TimescaleDB 安裝配置
    yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpmdnf -qy module disable postgresqldnf install -y postgresql13-server安裝TimescaleDB添加TimescaleDB源tee /etc/yum.repos.d/timescale_timescaledb.repo
  • ping ,time,TTL詳解
    這樣,我們就可以通過這種方法來辨別作業系統三,舉例說明C:\Documents and Settings>ping blog.51yip.comPinging blog.51yip.com [173.201.152.6] with 32 bytes of data:Reply from 173.201.152.6: bytes=32 time
  • time_wait及性能影響
    1、  什麼是time_wait?如何產生的?
  • SV | Timescale 問題小結
    背景介紹`timescale 是一條編譯指令,用於指定時間單位和時間精度,語法如下,`timescale time_unit / time_precision出現的場景基本就是如下三種情況:1.設計代碼中,SoC 項目通常會涉及多個 IP 模塊的集成,每個 IP 開發者可能會在自己的模塊中聲明 timescale,因此存在不同模塊使用不同的 timescale 問題;2. 驗證環境中,驗證頂層一般也會聲明 timescale,主要作用是生成外部環境驅動的時鐘激勵;3.
  • Python內置模塊datetime與time介紹
    # time是python內置的一個時間處理模塊,可以用來暫停程序# time模塊中時間表現的格式主要有三種:# 1、timestamp時間戳,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量# 2、struct_time時間元組,共有九個元素組# 3、format time 格式化時間,已格式化的結構使時間更具可讀性。
  • 【TIME】Biden Acts to Undo Trump Policies
    Psaki, who was a spokesperson for the State Department under President Barack Obama, plans to hold daily press briefings Monday through Friday, a stark departure from the Trump Administration, which
  • Verilog HDL 的時間尺度 `timescale
    `timescale 命令的格式如下: `timescale<時間單位>/<時間精度> 在這條命令中,時間單位參量是用來定義模塊中仿真時間和延遲時間的基準單位的。時間精度參量是用來聲明該模塊的仿真時間的精確程度的,該參量被用來對延遲時間值進行取整操作(仿真前),因此該參量又可以被稱為取整精度。
  • Python時間模塊time庫的解讀
    time() -- return current time in seconds since the Epoch as a float(返回一個以秒為單位的浮點數的時間,這個時間自Epoch開始,到當前時間為止)。2.
  • Linux下time命令進行性能分析
    今天要說的這個time命令有點不一樣,它不是一個內置的命令工具,我們上面用的time是一個bash的內置shell關鍵字而我們今天要說的這個time命令是一個強大的性能分析工具,安裝方法很簡單,直接通過yum安裝即可安裝完成後即可使用
  • DC中常用到的命令(示例)總結
    Identify glue cells in the current design     set GLUE_CELLS  [get_cells *-filter 「is_hierarchicai == false」] 5、啟動環境的配置這些設置主要是在.synopsys_dc.setup
  • 每天一個 Linux 命令(76): time 命令
    time 可以顯示的資源有四大項:Time resourcesMemory resourcesIO resourcesCommand info注意,由於某些 Shell(比如 bash)自帶了內建命令 time,並且提供的功能不全,要想使用本文描述的
  • eeglab中文教程系列(15)-Time/Frequency decomposition
    更多技術,第一時間送達1.Decomposing channel data為了檢測ERSP(event-related spectral perturbation)和ITC(inter-trial coherence) , 這裡進行如下操作:Plot > Time frequency transforms > Channel time-frequency
  • Java 8 中新的 Date 和 Time 類入門詳解
    java.time.LocalDate:  LocalDate只提供日期不提供時間信息。它是不可變類且線程安全的。  package org.smarttechie;  import java.time.LocalDate;  import java.time.temporal.ChronoUnit;  /**  * This class demonstrates JAVA 8 data and time API  * @author
  • 極具創意的遊戲設計——《Quantum League》的Time Loop
    《Quantum League》在官方介紹裡這樣寫到:Quantum League is a competitive online FPS where you are battling within a time loop. 這個time loop就是遊戲的核心機制,在三維遊戲的基礎上把時間維度作為戰鬥的核心。
  • CTFTIME年終排名出爐,中國戰隊大盤點
    CTFtime世界戰隊積分年終排行第69位。 7、****** 六星戰隊成立於2014年,主要由復旦大學的本科生和研究生組成,在首屆XCTF聯賽杭州(浙大)站選拔賽ACTF中勇奪冠軍,入圍首屆XCTF聯賽總決賽,最終獲得第六名,在第二屆XCTF國際聯賽福州站線上賽中,六星戰隊表現出色,獲得第二名,在隨後的線下決賽中位列第四,在CTFtime世界戰隊積分排行中位列第78
  • UTC/GMT 冒險特輯 | TIME ZONE
    乘坐敞開式駕駛艙雙翼飛機 an open cockpit biplane 飛躍鳳凰城的San Tan山脈 over the beautiful San Tan Mountains 第二次世界大戰 飛行員訓練飛機 2個座位 30分鐘 時光倒流75年 與天空的約會 traveling back in time