【STA】多場景時序檢查學習記錄

單周期路徑

建立時間時序檢查

在時鐘的有效沿到達觸發器之前,數據應在一定時間內保持穩定,這段時間即觸發器的建立
時間。滿足建立時間要求將確保數據可靠地被捕獲到觸發器中。
建立時間檢查是從發起觸發器中時鐘的第一個有效沿到捕獲觸發器中時鐘后面最接近的那個有效沿。
在這里插入圖片描述

觸發器到觸發器路徑

在這里插入圖片描述
建立時間檢查可以用數學公式表示:

Tlaunch + Tck2q + Tdp < Tcapture + Tcycle - Tsetup

其中Tlaunch是發起觸發器UFF0的時鐘樹延遲,Tdp是組合邏輯數據路徑的延遲,Tcycle是時鐘周期,Tcapture是捕獲觸發器UFF1的時鐘樹延遲。

觸發器間可能存在多條路徑,每條路徑均需滿足建立時間的要求,這等價于在延時最高的工作條件(PVT)下,觸發器間的最長時序路徑需要滿足建立時間的要求。因此在時序報告中建立時間用-max表示。

輸入引腳到觸發器路徑

輸入引腳數據采用虛擬時鐘發出

在這里插入圖片描述

輸入引腳數據采用實際時鐘發出

在這里插入圖片描述

觸發器到輸出引腳路徑

輸出引腳數據采用虛擬時鐘捕獲

在這里插入圖片描述

輸入引腳到輸出引腳路徑(組合邏輯路徑)

在這里插入圖片描述

保持時間時序檢查

觸發器的保持時間要求規定在時鐘的有效沿之后的指定時間段內,被鎖存的數據應保持穩定。
保持時間檢查可確保正在變化的觸發器輸出值不會傳遞到捕獲觸發器,并在捕獲觸發器有機會捕獲其原始值之前覆蓋其輸出。

在這里插入圖片描述

觸發器到觸發器路徑

在這里插入圖片描述
保持時間檢查可以用數學公式表示為:

Tlaunch + Tck2q + Tdp > Tcapture + Thold

其中Tlaunch是發起觸發器的時鐘樹延遲,Tdp是組合邏輯數據路徑中的延遲,Tcapture是捕獲觸發器的時鐘樹延遲。換句話說,由時鐘邊沿發起的數據到達捕獲觸發器D引腳所需的總時間必須大于時鐘同一邊沿到達捕獲觸發器所需的時間加上保持時間。這樣可以確保UFF1 / D保持穩定狀態,直到觸發器的時鐘引腳UFF1 / CK時鐘上升沿之后的保持時間為止。

觸發器間可能存在多條路徑,每條路徑均需滿足保持時間的要求,這等價于在延時最低的工作條件(PVT)下,觸發器間的最短時序路徑需要滿足保持時間的要求。因此在時序報告中建立時間用-min表示。

保持時間檢查需要確保:

  • 當前數據發起時鐘沿(Setup launch edge)的下一個(subsequent)時鐘沿發起的數據不被當前數據捕獲時鐘沿(Setup receiving edge)所捕獲。
  • 當前數據發起時鐘沿發起的數據不被當前數據捕獲時鐘沿的前一個(Preceding)時鐘沿所捕獲。

在這里插入圖片描述

觸發器到輸出引腳路徑

輸出引腳數據采用已知時鐘捕獲

在這里插入圖片描述

多周期路徑

兩個觸發器之間的數據路徑可能需要一個以上的時鐘周期才能傳播通過邏輯。在這種情況下,這條組合邏輯路徑會被定義為多周期路徑。這意味著設計中后繼觸發器每隔多個周期才會使用一次前級觸發器輸出引腳上的數據,而不是每個周期都使用。

create_clock -name CLKM -period 10 [get_ports CLKM]
set_multicycle_path 3 -setup -from [get_pins UFF0/Q] -to [get_pins UFF1/D]
set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D]
在這里插入圖片描述

偽路徑

  1. 利用已知/可預測時鐘對信號采樣時,盡量用多周期路徑代替偽路徑約束。

  2. 盡量不用-through復雜性高。

  3. 若要在兩個時鐘域之間設置偽路徑,使用get_clocks效率更高:

set_false_path -from [get_clocks clockA] -to [get_clocks clockB]

??代替

set_false_path -from [get_pins {regA_ * }/CK] -to [get_pins {regB_ * }/D]

半周期路徑

設計中同時具有負邊沿觸發的觸發器(有效時鐘沿為下降沿)和正邊沿觸發的觸發器(有效時鐘沿為上升沿),則設計中可能存在半周期路徑。

在這里插入圖片描述

半周期路徑的建立時間、保持時間捕獲時鐘沿與發起時鐘沿偏移均為半個時鐘周期。

撤銷時間檢查

撤銷時間檢查用于確保在有效時鐘沿與釋放異步控制信號之間有足夠的時間。類似于保持時間檢查。

在這里插入圖片描述

恢復時間檢查

恢復時間檢查用于確保異步信號變為無效狀態的時刻與下一個有效時鐘沿之間的時間間隔大于一個最
小值。類似于建立時間檢查。

在這里插入圖片描述

跨時鐘域

當數據發起觸發器和捕獲觸發器的時鐘頻率不同時,STA會首先確定一個公共基本周期(common base period)。快時鐘的時鐘周期會被延拓,以便獲得兩個時鐘的一段公共周期。

慢時鐘到快時鐘

對于nMHz的慢時鐘到4nMHz的快時鐘數據傳輸:
在這里插入圖片描述
假設該設計的目的是在CLKP的每隔第4個捕獲沿上捕獲數據,且數據發起沿后數據會發生變動,即需要將保持時間檢查一直移回到數據發起沿所在位置,對應波形圖如下:

在這里插入圖片描述

對應上述波形圖可使用的多周期約束如下。

set_multicycle_path 4 -setup -from [get_clocks CLKM] -to [get_clocks CLKP] -end
set_multicycle_path 3 -hold -from [get_clocks CLKM] -to [get_clocks CLKP] -end

其中-end表示依照捕獲時鐘沿,默認情況下-setup使用-start即發起時鐘沿,-hold使用-end即捕獲時鐘沿。使用-end時會從默認的捕獲時鐘沿開始前移指定倍數周期,使用-start會從默認的發起時鐘沿后移指定倍數周期。

快時鐘到慢時鐘

在這里插入圖片描述

如果設計能夠支持放寬建立時間檢查要求,為數據路徑提供兩個快時鐘周期,此時波形圖如下:

在這里插入圖片描述
此時多周期路徑約束如下:

set_multicycle_path 2 -setup -from [get_clocks CLKP] -to [get_clocks CLKM] -start
set_multicycle_path 1 -hold -from [get_clocks CLKP] -to [get_clocks CLKM] -start

多時鐘域

不同頻率

  • 整數倍:設計中多個時鐘的頻率是彼此的整數倍。在這種情況下,會通過計算所有相關時鐘之間的公共基本周期,以便所有時鐘同步。
  • 非整數倍:對于兩個頻率不是彼此整數倍的時鐘域之間存在數據路徑的情況,時序分析會先計算相關時鐘的公共周期,然后再將時鐘擴展到該公共周期。之后,建立時間檢查在時鐘發起沿和捕獲沿之間的最短時間內進行(根據建立時間不等式,兩沿最短時檢查最嚴格)。保持時間檢查在發起時鐘沿對應捕獲時鐘沿的前一周期與當前發起時鐘沿最小時進行。

在這里插入圖片描述

不同相位

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715882.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715882.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715882.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

理解大模型的5個關鍵公式

理解大模型的5個關鍵公式_嗶哩嗶哩_bilibili PPT&#xff1a;https://link.excalidraw.com/p/readonly/aBWlNjEckdUlrszwwo6V

基于springboot+vue的社區醫院管理系統

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

chatgpt-3的文章生成器有哪些?可以批量生成文章的生成器

GPT-3&#xff08;Generative Pre-trained Transformer 3&#xff09;作為人工智能領域的一項重大突破&#xff0c;開啟了新一代的文本生成技術。同時市面上也涌現出了一些GPT-3文章生成器&#xff0c;為用戶提供了快速、高效地生成各種類型文章的工具。本文將介紹一些中國的GP…

unity-unity2d基礎操作筆記(三)0.5.000

目標是:牢記以下137條操作,越級上升到中級階段 unity-unity2d基礎操作筆記(三) 一百零一、如何操作一個游戲物體由多個部分組成的動畫一百零二、如何使用rigidbody 2d進行物體移動一百零三、獲取游戲物體身上的組件方法一百零四、代碼控制物體朝向一百零五、不使用插件,純…

C#上位機調試經驗

1.使用Visual Studio的遠程工具 因為上位機軟件安裝在工控機上&#xff0c;不方便調試。如果直接把代碼放在工控機上&#xff0c;又不太安全。 可以在工控機上安裝一個Visual Studio的遠程工具&#xff0c;把隨身帶的筆記本電腦通過網線插在工控機上 這樣可以在筆記本上使用…

s3cmd工具使用

1. 安裝s3cmd工具 [roottestserver01 ~]# yum install s3cmd 2. 配置s3cmd, 按提示輸入相應的ak&#xff0c;sk&#xff0c;endpoint等信息 [roottestserver01 ~]# s3cmd --configure 3. s3cmd使用 [roottestserver01 ~]# s3cmd mb s3://abc &#xff08;創建一個桶&am…

python筆記_程序流程控制

A&#xff0c;順序控制 程序從上到下逐行執行 python定義變量時&#xff0c;會合法地向前引用 age 1 age2 age 1 age2 age 1 age 1 ——>錯誤&#xff0c;age應在age2之前 B&#xff0c;分支控制 1&#xff0c;單分支if 語法 if 條件表達式 &#xff1a; 代碼塊 說明…

【六】【SQL】多表查詢,笛卡爾積

笛卡爾積 笛卡爾積發生在當你在查詢中將兩個或多個表進行交叉連接&#xff08;CROSS JOIN&#xff09;或者沒有指定任何連接條件時。假設第一個表有M行&#xff0c;第二個表有N行&#xff0c;那么結果集將包含M x N個記錄。在大多數情況下&#xff0c;笛卡爾積并不是你想要的結…

數字化轉型導師堅鵬:證券公司數字化思維升級之道

證券公司數字化思維升級之道 ——數字化思維之六脈神劍 課程背景&#xff1a; 很多證券公司存在以下問題&#xff1a; 不知道數字化轉型如何改變思維模式&#xff1f; 不清楚需要建立什么樣的數字化思維&#xff1f; 不知道如何開展數字化思維提升工作&#xff1f; 課…

Redis之十:Spring Data Redis --- CrudRepository方式

SpringData Redis CrudRepository方式 Spring Data Redis 的 CrudRepository 是 Spring Data 框架中用于提供基礎 CRUD&#xff08;創建、讀取、更新和刪除&#xff09;操作的一個接口。在與 Redis 集成時&#xff0c;盡管 Redis 是一個鍵值存儲系統&#xff0c;并沒有像關系型…

華為機試真題實戰應用【算法代碼篇】-去除多余空格(附Java、C++和python代碼)

目錄 問題描述 輸入描述 輸出描述 樣例 思路解析 代碼實現

關于福彩歷史數據采集器和體彩歷史數據采集器的下載安裝說明

前段時間因為研究基于人工神經網絡&#xff08;深度學習&#xff0c;所謂的“AI”算法&#xff09;對3D開獎數據進行預測&#xff0c;開發了兩款瀏覽器插件----“福彩歷史數據采集器”和“體彩歷史數據采集器”。之所以開發這兩款插件&#xff0c;是因為不管是基于什么樣的方式…

Unity 游戲設計模式:觀察者模式

本文由 簡悅 SimpRead 轉碼&#xff0c; 原文地址 mp.weixin.qq.com 在 unity 游戲設計中&#xff0c;觀察者模式&#xff08;Observer Pattern&#xff09;有著重要的作用&#xff0c;它主要用于實現對象之間的一對多的依賴關系&#xff0c;當一個對象的狀態發生變化時&#x…

【QT+QGIS跨平臺編譯】之六十三:【QGIS_CORE跨平臺編譯】—【錯誤處理:未定義的類QgsMapLayer - QgsMapLayerModel】

文章目錄 一、未定義的類QgsMapLayer二、解決辦法 一、未定義的類QgsMapLayer 報錯&#xff1a; 二、解決辦法 QgsMapLayerModel.h文件中 ①第27行修改為&#xff1a; #include "QgsMapLayer.h" ②第23行增加&#xff1a; #include <QPointer>

Github 2024-03-03 開源項目日報Top9

根據Github Trendings的統計&#xff0c;今日(2024-03-03統計)共有9個項目上榜。根據開發語言中項目的數量&#xff0c;匯總情況如下&#xff1a; 開發語言項目數量非開發語言項目4Rust項目1C項目1Jupyter Notebook項目1Python項目1Shell項目1 任天堂Switch模擬器yuzu&#x…

將jar程序封裝為docker鏡像 shell腳本

將JAR程序封裝為Docker鏡像通常涉及編寫一個Dockerfile&#xff0c;然后使用docker build命令構建鏡像。然而&#xff0c;如果你想要通過一個shell腳本來自動化這個過程&#xff0c;你可以創建一個腳本&#xff0c;該腳本首先創建一個Dockerfile&#xff0c;然后使用docker bui…

嵌入式驅動學習第一周——linux設備管理模型

前言 現在來聊點原理性的東西——linux設備管理模型 嵌入式驅動學習專欄將詳細記錄博主學習驅動的詳細過程&#xff0c;未來預計四個月將高強度更新本專欄&#xff0c;喜歡的可以關注本博主并訂閱本專欄&#xff0c;一起討論一起學習。現在關注就是老粉啦&#xff01; 行文目錄…

編寫dockerfile掛載卷

編寫dockerfile文件 [rootwq docker-test-volume]# vim dockerfile1 [rootwq docker-test-volume]# cat dockerfile1 FROM centosVOLUME ["volume01","volume02"]CMD echo "------end------" CMD /bin/bash [rootwq docker-test-volume]#使用do…

leetcode:51.N皇后(復習)

題目理解&#xff1a;&#xff08;回溯算法&#xff09; 樹形結構——層數代表行數&#xff0c;遞歸的深度就是總行數。 代碼實現&#xff1a;

解釋Android中的Activity生命周期,以及在哪個生命周期方法中可以進行布局的初始化?

在Android中&#xff0c;Activity的生命周期是指Activity從創建到銷毀的整個過程&#xff0c;這個過程中會經歷一系列的回調方法。了解Activity的生命周期對于管理資源、處理用戶交互和確保應用的穩定性非常重要。下面是Activity生命周期的主要階段及其對應的回調方法&#xff…