時序約束(二): input delay約束和output delay約束

一、input delay約束

在千兆以太網數據收發項目中,RGMII的數據輸入方式為DDR,源同步輸入方式,可以用之前提到的分析模型進行約束。?

在時序約束原理中我們提到,input delay約束的就是發射沿lunch到數據有效的延時,根據時序圖得到:

?????????LrMax = Tco max + Td_bd max -(Tc_d + Tc_bd) ------分析建立時間時序

?????????LrMin?? = Tco min?+ Td_bd min?-(Tc_d + Tc_bd)? ------分析保持時間時序

一般在input delay分析中,我們默認Td_bd ==Tc_bd,并不考慮Tc_d。因此LrMax和LrMin就指的是上游器件輸出數據和輸出時鐘的延時。

PHY芯片datasheet中時序圖如下,圖中的TskewR==2ns是時鐘信號相對于數據信號的延時。數據線之間的SKEW未知,我們假設為0.2ns。

可以得到:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?LrMax = 2 + skew/2 = 2.1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?LrMin = 2 - skew/2 = 1.9

接下來就可以在工具中進行約束。首先,打開Open Implementation----->Edit Timing constraints。

然后選擇Set Input delay,點擊加號“+”添加約束信息。

設置參數。

? ? ? ? Clock:時鐘,選擇rx_clk。

? ? ? ? Objects:約束目標,選擇RGMII輸入信號。

? ? ? ? Delay value:延時時間。

? ? ? ? Delay value is relative to clock edge:邊沿選擇。

? ? ? ? Delay value specifies:最大最小選擇。

Delay value is relative to clock edge選擇rise,Delay value specifies選擇max,在Delay value處設置上升沿的最大、最小延時;Delay value is relative to clock edge選擇full,Delay value specifies選擇max,在Delay value處設置上升沿的最大延時;Delay value is relative to clock edge選擇rise,Delay value specifies選擇min,在Delay value處設置上升沿的最小延時。下降沿的延時最大、最小延時設置同理。

這樣就完成了input delay的約束,點擊保存,可以看到input delay約束信息已經更新到了.xdc文件中。

?重新綜合、布局布線,點擊Report Timing。

?設置要打印的時序報告的參數。設置要打印的信號。

?在option 中的設置觀察時序路徑條數和每個路徑打印多少條信息, 點擊 OK 。

?這樣就生成了時序報告。可以看到建立時間和保持時間沒有發生時序違例。

二、indelay control方式input delay約束?

?????????以上的input delay約束方式是通過PLL調整時鐘相位以達到時序要求,indelay control方式是通過對數據進行延時以滿足時序要求。

? ? ? ? 通過IDELAY2源語實現這個功能,例化該源語在ODDR模塊中,模塊輸入數據信號tx_dat[7:0]和使能信號tx_en首先進入該源語進行數據延時,源語輸出再進行ODDR轉換。

DELAYE2 #(
.CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE)
.DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN)
.HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")
.IDELAY_TYPE("FIXED"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
.IDELAY_VALUE(0), // Input delay tap setting (0-31)
.PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE.REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-
.0)..SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal)IDELAYE2_inst_dv (.CNTVALUEOUT(), // 5-bit output: Counter value output.DATAOUT(rx_ctrl_t), // 1-bit output: Delayed data output.C(1'b0), // 1-bit input: Clock input.CE(1'b0), // 1-bit input: Active high enable increment/decrement input.CINVCTRL(1'b0), // 1-bit input: Dynamic clock inversion input.CNTVALUEIN(5'd0), // 5-bit input: Counter value input.DATAIN(1'b0), // 1-bit input: Internal delay data input.IDATAIN(rx_ctrl), // 1-bit input: Data input from the I/O.INC(1'b0), // 1-bit input: Increment / Decrement tap delay input.LD(1'b0), // 1-bit input: Load IDELAY_VALUE input.LDPIPEEN(1'b0), // 1-bit input: Enable PIPELINE register to load data input.REGRST(1'b0) // 1-bit input: Active-high reset tap-delay input);IDDR #(.DDR_CLK_EDGE("SAME_EDGE_PIPELINED"), // "OPPOSITE_EDGE", "SAME_EDGE"// or "SAME_EDGE_PIPELINED".INIT_Q1(1'b0), // Initial value of Q1: 1'b0 or 1'b1.INIT_Q2(1'b0), // Initial value of Q2: 1'b0 or 1'b1.SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC") IDDR_rxctrl_inst (.Q1(rxdv), // 1-bit output for positive edge of clock.Q2(rxerr), // 1-bit output for negative edge of clock.C(rx_clk_90), // 1-bit clock input.CE(1'b1), // 1-bit clock enable input.D(rx_ctrl_t), // 1-bit DDR data input.R(1'b0), // 1-bit reset.S(1'b0) // 1-bit set);

其中IDELAY_VALUE表示設置延時大小,可以填寫的值為0~31,具體分辨率是多少每個器件并不相同,需要查看手冊。

此外,這個源語還要配合IDELAYCTRL使用:

IDELAYCTRL IDELAYCTRL_inst (.RDY(RDY), // 1-bit output: Ready output.REFCLK(sysclk), // 1-bit input: Reference clock input.RST(~locked) // 1-bit input: Active high reset input

通過調整IDELAY_VALUE的值,就可以調整數據和時鐘之間的延時,消除時序違例。當IDELAY_VALUE增大時延時增大,建立時間裕量減小,保持時間裕量增大。

三、output delay約束?

同樣使用千兆以太網數據收發中的RGMII輸出端作為約束對象。在不知道目標端的建立時間和保持時間時,可以利用數據的skew進行output delay約束。

?根據時序圖可得:

????????????????????????????????????????????????dMax = Tcycle - askew

????????????????????????????????????????????????dMin = bskew

設置SKEW 的目的是讓綜合工具知道輸出的時鐘采樣沿不能落在 SKEW 的區域?。我們可以通過調整skew的值使時鐘沿落在數據的中心位置。這里設置askew=bskew=1.5ns,則dMax = 2.5,dMin = 1.5。

這樣就可以在工具中進行約束了。首先要創建生成時鐘,告訴綜合工具tx_clk是時鐘信號。打開Open Implementation----->Edit Timing constraints,選中Creat Generated Clock,點擊加號“+”,這里設置時鐘源為PLL輸出時鐘,目標時鐘為tx_clk。

?然后選擇set Output Delay,點擊加號“+”添加約束信息。

設置參數。

? ? ? ? Clock:時鐘,選擇tx_clk。

? ? ? ? Objects:約束目標,選擇RGMII輸出信號。

? ? ? ? Delay value:延時時間。

? ? ? ? Delay value is relative to clock edge:邊沿選擇。

? ? ? ? Delay value specifies:最大最小選擇。

Delay value is relative to clock edge選擇rise,Delay value specifies選擇max,在Delay value處設置上升沿的最大、最小延時;Delay value is relative to clock edge選擇full,Delay value specifies選擇max,在Delay value處設置上升沿的最大延時;Delay value is relative to clock edge選擇rise,Delay value specifies選擇min,在Delay value處設置上升沿的最小延時。下降沿的延時最大、最小延時設置同理。

這樣就完成了output delay的約束,點擊保存,可以看到output delay約束信息已經更新到了.xdc文件中。

? 接下來我們重新綜合、布局布線,Open Implemented Design,點擊Report Timing。

設置時序報告打印參數。這里在End Points處添加。

?這樣就生成了時序報告。可以看到建立時間和保持時間沒有發生時序違例。

?

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

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

相關文章

Vue 3中 <script setup> 與生命周期鉤子函數的詳細解析

Vue 3中 <script setup> 與生命周期鉤子函數的詳細解析 Vue 3 引入了 <script setup> 語法糖&#xff0c;這是一種簡化和集成組件邏輯的新方式。盡管 <script setup> 簡化了組件的編寫&#xff0c;但仍然可以利用 Vue 提供的生命周期鉤子函數來管理組件的生…

【光伏開發】光伏項目開發流程

光伏項目作為可再生能源領域的重要組成部分&#xff0c;其開發過程涉及多個環節&#xff0c;從項目初期的可行性研究到后期的運營維護&#xff0c;每一步都至關重要。本文將按照項目確認、前期階段、中期階段、后期階段的順序&#xff0c;詳細介紹光伏項目的開發流程。 一、項…

Rust 基礎教程

Rust 編程語言教程 Rust是一門注重安全、并發和性能的系統編程語言。本文將從Rust的基本語法、常用功能到高級特性&#xff0c;詳細介紹Rust的使用方法。 目錄 簡介環境配置基礎語法 變量和常量數據類型函數控制流 所有權和借用 所有權借用 結構體和枚舉 結構體枚舉 模塊和包…

一文搞懂 java 線程池:基礎知識

你好&#xff0c;我是 shengjk1&#xff0c;多年大廠經驗&#xff0c;努力構建 通俗易懂的、好玩的編程語言教程。 歡迎關注&#xff01;你會有如下收益&#xff1a; 了解大廠經驗擁有和大廠相匹配的技術等 希望看什么&#xff0c;評論或者私信告訴我&#xff01; 文章目錄 …

Linux:網絡基礎1

文章目錄 前言1. 協議1.1 為什么要有協議&#xff1f;1.2 什么是協議&#xff1f; 2. 網絡2.1 網絡通信的問題2.2 網絡的解決方案——網絡的層狀結構2.3 網絡和系統的關系2.4 網絡傳輸基本流程2.5 簡單理解IP地址2.6 跨網絡傳輸 總結 前言 在早期的計算機發展中&#xff0c;一開…

【云計算】阿里云、騰訊云、華為云平臺數據庫對比

目錄 一、云數據庫關鍵信息調研對比 二、詳細功能 1、阿里云RDS 2、騰訊云RDS 3、華為云RDS 一、云數據庫關鍵信息調研對比 云平臺支持數據庫部署對比支持功能備注阿里云 Mysql、Postgresql等 特有數據庫&#xff1a;PolarDB&#xff0c;適配mysql 基礎-單節點賬號管…

實現漸變字體的方案

需要注意&#xff0c;這個切圖是把一整塊&#xff0c;都切出來做的。所以需要用span&#xff0c;不能是div 還有描邊的話&#xff0c;scale會有邊距縮放的問題&#xff0c;描邊就用font weight 來實現 style{{ background: "var(--Linear, linear-gradient(96deg, #fff…

【華為戰報】5月、6月HCIP考試戰報!

華為認證&#xff1a;HCIA-HCIP-HCIE 點擊查看&#xff1a; 【華為戰報】4月 HCIP考試戰報&#xff01; 【華為戰報】2月、3月HCIP考試戰報&#xff01; 【華為戰報】11月份HCIP考試戰報&#xff01; 【HCIE喜報】HCIE備考2個月絲滑通關&#xff0c;考試心得分享&#xff…

Python序列化和反序列化

一.序列化和反序列化 在Python中&#xff0c;序列化&#xff08;Serialization&#xff09;和反序列化&#xff08;Deserialization&#xff09;是處理對象數據的過程&#xff0c;主要用于對象的存儲或網絡傳輸。 序列化&#xff08;Serialization&#xff09; 序列化是將Pyth…

7.x86游戲實戰-C++實現跨進程讀寫-跨進程寫內存

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 本次游戲沒法給 內容參考于&#xff1a;微塵網絡安全 上一個內容&#xff1a;6.x86游戲實戰-C實現跨進程讀寫-通過基址讀取人物狀態標志位 上一個內容通過基…

深層神經網絡

深層神經網絡 深層神經網絡 深度神經網絡&#xff08;Deep Neural Networks&#xff0c;DNN&#xff09;可以理解為有很多隱藏層的神經網絡&#xff0c;又被稱為深度前饋網絡&#xff08;DFN&#xff09;&#xff0c;多層感知機&#xff08;Multi-Layer perceptron&#xff0c…

ghost恢復?電腦文件恢復如何操作?電腦數據恢復工具!5款!

在數字化時代&#xff0c;電腦數據的價值日益凸顯。然而&#xff0c;數據丟失、誤刪、系統崩潰等問題時有發生&#xff0c;給個人和企業帶來巨大損失。本文將為您詳細介紹Ghost恢復方法&#xff0c;同時推薦五款高效的電腦數據恢復工具&#xff0c;助您輕松應對數據丟失的困擾。…

使用歸檔實用工具怎么打不開 mac上好用的解壓軟件 歸檔實用工具打不開怎么回事 mac 歸檔實用工具 蘋果電腦好用的壓縮軟件有哪些

Mac系統自帶的 “歸檔實用工具”&#xff0c;集成在系統右鍵菜單中&#xff0c;包含了文件壓縮和壓縮包解壓功能。很多mac小伙伴會發現有些文件使用歸檔實用工具打不開。由于專利和軟件開源問題&#xff0c;該工具目前僅支持ZIP格式的壓縮和解壓。同時&#xff0c;對于一些在Wi…

深入探討數據結構:基礎理論與應用實踐

前言 數據結構是計算機科學的重要組成部分&#xff0c;是編程與算法設計的基礎。本文將系統地介紹數據結構的基礎概念、常見類型、具體實現及其在實際開發中的應用&#xff0c;幫助讀者深入理解這一核心領域。 一、數據結構的基本概念 數據結構指的是計算機中數據的組織、管…

推廣旅游卡項目,一個月創收十幾萬,為何說旅游卡項目堪稱盈利利器?

推廣旅游卡項目&#xff0c;一月個創收十幾萬&#xff0c;為何說旅游卡項目堪稱盈利利器&#xff1f; 其精髓恰在于那十六字真言&#xff1a;即時收益&#xff0c;高額利潤&#xff0c;操作簡便&#xff0c;粉絲友好。接下來&#xff0c;我將從推廣人員的視角&#xff0c;為您…

Microsoft SQL Server 2019安裝和設置用戶密碼

1、免費下載兩個安裝包 SQL2019-SSEI-Dev 地址:https://www.microsoft.com/en-us/sql-server/sql-server-downloads SSMS-Setup-CHS 地址:https://aka.ms/ssmsfullsetup 安裝具體不在闡述了&#xff0c;可以參考我這篇文章&#xff1a;SQL Server 2019安裝詳細教程 2、以W…

開發常見的http狀態碼.——400,401,403,404,500,501,503,狀態碼大全!

目錄 一. 1開頭的(臨時信息響應碼) 二. 2開頭的(成功信息碼) 三. 3開頭的(重定向信息碼) 四. 4開頭的(客戶端錯誤信息碼) 五. 5開頭的(服務器內部錯誤信息碼) 一. 1開頭的(臨時信息響應碼) 100&#xff1a;繼續請求。示意請求者應當繼續發送請求&#xff0c;客戶端返回此碼…

Cookie的默認存儲路徑以及后端如何設置

問題場景 最近在寫一個前后端分離的項目&#xff0c;需要跨域&#xff0c;前端開發同學遇到一個問題一直報錯&#xff0c;本質上就是后端返回的cookie中的sessionID在前端發送http請求時無法被請求自動攜帶&#xff0c;每次htttpRequest都被后端識別為一個新的session&#xf…

Spring MVC數據綁定和響應——數據回寫(二)JSON數據的回寫

項目中已經導入了Jackson依賴&#xff0c;可以先調用Jackson的JSON轉換的相關方法&#xff0c;將對象或集合轉換成JSON數據&#xff0c;然后通過HttpServletResponse將JSON數據寫入到輸出流中完成回寫&#xff0c;具體步驟如下。 1、修改文件DataController.java&#xff0c;在…

verilog 參數用法

參數比較運算 localparam QPLL_FBDIV_IN (QPLL_FBDIV_TOP 16) ? 10b0000100000 : (QPLL_FBDIV_TOP 20) ? 10b0000110000 :(QPLL_FBDIV_TOP 32) ? 10b0001100000 :(QPLL_FBDIV_TOP 40) ? 10b0010000000 :(QPLL_FBDIV_TOP 64) ? 10b0011100000 :(QPLL_FBDIV_TO…