国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA時序案例之多周期路徑分析

電子設計 ? 來源:科學計算technomania ? 作者:貓叔 ? 2020-11-18 13:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

兩種時序例外

多周期路徑

上面我們講的是時鐘周期約束,默認按照單周期關系來分析數據路徑,即數據的發起沿和捕獲沿是最鄰近的一對時鐘沿。如下圖所示。

FPGA時序約束理論篇之兩種時序例外


默認情況下,保持時間的檢查是以建立時間的檢查為前提,即總是在建立時間的前一個時鐘周期確定保持時間檢查。這個也不難理解,上面的圖中,數據在時刻1的邊沿被發起,建立時間的檢查是在時刻2進行,而保持時間的檢查是在時刻1(如果這里不能理解,再回頭看我們講保持時間章節的內容),因此保持時間的檢查是在建立時間檢查的前一個時鐘沿。

但在實際的工程中,經常會碰到數據被發起后,由于路徑過長或者邏輯延遲過長要經過多個時鐘周期才能到達捕獲寄存器;又或者在數據發起的幾個周期后,后續邏輯才能使用。這時如果按照單周期路徑進行時序檢查,就會報出時序違規。因此就需要我們這一節所講的多周期路徑了。

多周期約束的語句是:

set_multicycle_path  [-setup|-hold] [-start|-end][-from ] [-to ] [-through ]

對于建立時間,num_cycles是指多周期路徑所需的時鐘周期個數;對于保持時間,num_cycles是指相對于默認的捕獲沿,實際捕獲沿應回調的周期個數。

發起沿和捕獲沿可能是同一個時鐘,也可能是兩個時鐘,參數start和end就是選擇參考時鐘是發送端還是接收端。

  • start表示參考時鐘為發送端(發端)所用時鐘,對于保持時間的分析,若后面沒有指定start或end,則默認為為-start;
  • end表示參考時鐘為捕獲端(收端)所用時鐘,對于建立時間的分析,若后面沒有指定start或end,則默認為為-end;

上面這兩句話也不難理解,因為setup-time是在下一個時鐘沿進行捕獲時的約束,因此默認是對接收端的約束;而hold-up-time是對同一個時鐘沿的約束,目的是發送端不能太快,是對發送端的約束。

對于單周期路徑來說,setup的num_cycles為1,hold的num_cycles為0.

多周期路徑要分以下幾種情況進行分析:

1. 單時鐘域

即發起時鐘和捕獲時鐘是同一個時鐘,其多周期路徑模型如下圖所示。

FPGA時序約束理論篇之兩種時序例外


單時鐘域的多周期路徑常見于帶有使能的電路中,我們以雙時鐘周期路徑為例,其實現電路如下:

FPGA時序約束理論篇之兩種時序例外


若我們沒有指定任何的約束,默認的建立/保持時間的分析就像我們上面所講的單周期路徑,如下圖所示。

FPGA時序約束理論篇之兩種時序例外


但由于我們的的數據經過了兩個時鐘周期才被捕獲,因此建立時間的分析時需要再延遲一個周期的時間。

采用如下的時序約束:

set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]

在建立時間被修改后,保持時間也會自動調整到捕獲時鐘沿的前一個時鐘沿,如下圖所示。

FPGA時序約束理論篇之兩種時序例外


很明顯,這個保持時間檢查是不對的,因為保持時間的檢查針對的是同一個時鐘沿,因此我們要把保持時間往回調一個周期,需要再增加一句約束:

set_multicycle_path 1 -hold -end -from [get_pins data0_reg/C]  -to [get_pins data1_reg/D]

這里加上-end參數是因為我們要把捕獲時鐘沿往前移,因此針對的是接收端,但由于我們這邊講的是單時鐘域,發送端和接收端的時鐘是同一個,因此-end可以省略。這樣,完整的時序約束如下:

set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
set_multicycle_path 1 -hold  -from [get_pins data0_reg/C]  -to [get_pins data1_reg/D]

約束完成后,建立保持時間檢查如下圖所示。

FPGA時序約束理論篇之兩種時序例外


在單時鐘域下,若數據經過N個周期到達,則約束示例如下:

set_multicycle_path N -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
set_multicycle_path N-1 -hold  -from [get_pins data0_reg/C]  -to [get_pins data1_reg/D]

2. 時鐘相移

FPGA時序約束理論篇之兩種時序例外


前面我們討論的是在單時鐘域下,發送端和接收端時鐘是同頻同相的,如果兩個時鐘同頻不同相怎么處理?

FPGA時序約束理論篇之兩種時序例外


如上圖所示,時鐘周期為4ns,接收端的時鐘沿比發送端晚了0.3ns,若不進行約束,建立時間只有0.3ns,時序基本不可能收斂;而保持時間則為3.7ns,過于豐富。可能有的同學對保持時間會有疑惑,3.7ns是怎么來的?還記得我們上面講的保持時間的定義么,在0ns時刻,接收端捕獲到發送的數據后,要再過3.7ns的時間發送端才會發出下一個數據,因此本次捕獲的數據最短可持續3.7ns,即保持時間為3.7ns。

因此,在這種情況下,我們應把捕獲沿向后移一個周期,約束如下:

set_multicycle_path 2 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]

對setup約束后,hold會自動向后移動一個周期,此時的建立保持時間檢查如下:


那如果接收端的時鐘比發送端的時鐘超前了怎么處理?

FPGA時序約束理論篇之兩種時序例外


同樣的,時鐘周期為4ns,但接收端時鐘超前了0.3ns,從圖中可以看出,此時setup是3.7ns,而保持時間是0.3ns。這兩個時間基本已經滿足了Xilinx器件的要求,因此無需進行約束。

3. 慢時鐘到快時鐘的多周期

當發起時鐘慢于捕獲時鐘時,我們應該如何處理?

FPGA時序約束理論篇之兩種時序例外


假設捕獲時鐘頻率是發起時鐘頻率的3倍,在沒有任何約束的情況下,Vivado默認會按照如下圖所示的建立保持時間進行分析。

FPGA時序約束理論篇之兩種時序例外


但我們可以通過約束讓建立時間的要求更容易滿足,即

set_multicycle_path 3 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]

跟上面講的一樣,設置了setup,hold會自動變化,但我們不希望hold變化,因此再增加:

set_multicycle_path 2 -hold -end -from [get_clocks CLK1] -to [get_clocks CLK2]

這里由于發起和捕獲是兩個時鐘,因此-end參數是不可省的。加上時序約束后,Vivado會按照下面的方式進行時序分析。

FPGA時序約束理論篇之兩種時序例外


4. 快時鐘到慢時鐘的多周期

當發起時鐘快于捕獲時鐘時,我們應該如何處理?

FPGA時序約束理論篇之兩種時序例外


假設發起時鐘頻率是捕獲時鐘頻率的3倍,在沒有任何約束的情況下,Vivado默認會按照如下圖所示的建立保持時間進行分析。

FPGA時序約束理論篇之兩種時序例外


同理,我們可以通過約束,讓時序條件更加寬裕。

set_multicycle_path 3 -setup -start -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path 2 -hold -from [get_clocks CLK1] -to [get_clocks CLK2]

這里的hold約束中沒有加-end參數,這樣的話默認就是-start,是因為我們把發起時鐘回調2個周期,如下圖所示。

FPGA時序約束理論篇之兩種時序例外


針對上面講的幾種多周期路徑,總結如下:

FPGA時序約束理論篇之兩種時序例外


偽路徑

什么是偽路徑?偽路徑指的是該路徑存在,但該路徑的電路功能不會發生或者無須時序約束。如果路徑上的電路不會發生,那Vivado綜合后會自動優化掉,因此我們無需考慮這種情況。

為什么要創建偽路徑?創建偽路徑可以減少工具運行優化時間,增強實現結果,避免在不需要進行時序約束的地方花較多時間而忽略了真正需要進行優化的地方。

偽路徑一般用于:
? 跨時鐘域
? 一上電就被寫入數據的寄存器
? 異步復位或測試邏輯
? 異步雙端口RAM

可以看出,偽路徑主要就是用在異步時鐘的處理上,我們上一節講的多周期路徑中,也存在跨時鐘域的情況的,但上面我們講的是兩個同步的時鐘域。

偽路徑的約束為:

set_false_path [-setup] [-hold] [-from ] [-to ] [-through ]
  • -from的節點應是有效的起始點.有效的起始點包含時鐘對象,時序單元的clock引腳,或者input(or inout)原語;
  • -to的節點應包含有效的終結點.一個有效的終結點包含時鐘對象,output(or inout)原語端口,或者時序功能單元的數據輸入端口;
  • -through的節點應包括引腳,端口,或線網.當單獨使用-through時,應注意所有路徑中包含-through節點的路徑都將被時序分析工具所忽略.

需要注意的是,-through是有先后順序的,下面的兩個約束是不同的約束:

set_false_path -through cell1/pin1 -through cell2/pin2
set_false_path -through cell2/pin2 -through cell1/pin1

因為它們經過的先后順序不同,偽路徑的約束是單向的,并非雙向的,若兩個時鐘域相互之間都有數據傳輸,則應采用如下約束:

set_false_path -from [get_clocks clk1] -to [get_clocks clk2]
set_false_path -from [get_clocks clk2] -to [get_clocks clk1]

也可以直接采用如下的方式,與上述兩行約束等效:

set_clock_groups -async -group [get_clocks clk1] -to [get_clocks clk2]

還有一些其他的約束,比如case analysis、disabling timing和bus_skew等,由于平時用的比較少,這里就不講了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1660

    文章

    22415

    瀏覽量

    636555
  • 時序約束
    +關注

    關注

    1

    文章

    120

    瀏覽量

    13965
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于友晶DE10-Nano開發板的VGA顯示控制器模塊設計

    VGA顯示控制器模塊vga_generator.v(位于DemonstrationsFPGAHDMI_TXvpg_source路徑下)可生成符合DMT(Display Monitor Timing 顯示器時序)
    的頭像 發表于 02-26 13:43 ?5315次閱讀
    基于友晶DE10-Nano開發板的VGA顯示控制器模塊設計

    輸入引腳時鐘約束_Xilinx FPGA編程技巧-常用時序約束詳解

    基本的約束方法 為了保證成功的設計,所有路徑時序要求必須能夠讓執行工具獲取。最普遍的三種路徑以及異常路徑為: 輸入路徑(Input Pa
    發表于 01-16 08:19

    鎖存器中的時間借用概念與靜態時序分析

    對于基于鎖存器的設計,靜態時序分析會應用一個稱為時間借用的概念。本篇博文解釋了時間借用的概念,若您的設計中包含鎖存器且時序報告中存在時間借用,即可適用此概念。
    的頭像 發表于 12-31 15:25 ?5508次閱讀
    鎖存器中的時間借用概念與靜態<b class='flag-5'>時序</b><b class='flag-5'>分析</b>

    數字IC/FPGA設計中的時序優化方法

    在數字IC/FPGA設計的過程中,對PPA的優化是無處不在的,也是芯片設計工程師的使命所在。此節主要將介紹performance性能的優化,如何對時序路徑進行優化,提高工作時鐘頻率。
    的頭像 發表于 12-09 10:33 ?3295次閱讀
    數字IC/<b class='flag-5'>FPGA</b>設計中的<b class='flag-5'>時序</b>優化方法

    智多晶EDA工具HqFpga軟件的主要重大進展

    圖、時序分析等。HQ支持Windows、Linux操作系統利用HQ設計套件,設計人員能夠實現高效率的FPGA工程開發與調試驗證。
    的頭像 發表于 11-08 10:15 ?3749次閱讀
    智多晶EDA工具Hq<b class='flag-5'>Fpga</b>軟件的主要重大進展

    vivado時序分析相關經驗

    改為寄存輸出。 時序分析有兩個主要路徑 Intra-clock:同時鐘之間的路徑分析,需實打實解決。(改善設計,改變綜合策略等) Inter-clock:表示跨時鐘
    發表于 10-30 06:58

    E203內核移植到FPGA開發板時出現時序違例的解決方式

    在移植內核時,用VIVADO進行綜合實現后會出現時序違例,如圖: 雖然可以上板正常進行開發,但是還是想把這些違例解決下^_^ 檢查后,發現是 apb_adv_timer 這條路徑報的違例,解決方式
    發表于 10-27 07:32

    時序約束問題的解決辦法

    slack 計算如下圖所示: 所以 slakc 為負數時,說明路徑的組合邏輯延時過長。解決辦法有兩個:第一個是降低時鐘頻率,第二個是將延時過長的組合邏輯拆成兩個或者多個時鐘周期執行。 無論 Setup
    發表于 10-24 09:55

    FPGA測試DDR帶寬跑不滿的常見原因及分析方法

    FPGA 中測試 DDR 帶寬時,帶寬無法跑滿是常見問題。下面我將從架構、時序、訪問模式、工具限制等多個維度,系統梳理導致 DDR 帶寬跑不滿的常見原因及分析方法。
    的頭像 發表于 10-15 10:17 ?1046次閱讀

    如何判斷功率分析儀的校準周期是否需要調整?

    判斷功率分析儀的校準周期是否需要調整,核心是圍繞 “ 精度穩定性風險、使用場景變化、設備狀態異常 ” 三大維度,通過 “數據驗證、環境評估、設備跟蹤” 找到周期與實際需求的不匹配點。本質是讓校準
    的頭像 發表于 09-25 17:34 ?705次閱讀

    功率分析儀的校準周期一般是多久?

    功率分析儀的校準周期并非固定統一,需結合設備精度等級、使用環境、應用場景(關鍵 / 非關鍵)、校準類型(實驗室溯源 / 現場日常)綜合確定,核心原則是 “在精度保障與成本效率間平衡”。以下是行業通用
    的頭像 發表于 09-25 17:31 ?843次閱讀

    京東:調用用戶行為API分析購買路徑,優化頁面跳轉邏輯

    ? ?在電商平臺的激烈競爭中, 用戶購買路徑的流暢性 直接影響轉化率。京東通過深度整合用戶行為API,構建了完整的購買路徑分析體系,顯著優化了頁面跳轉邏輯。以下是關鍵技術實現路徑: 一、用戶行為
    的頭像 發表于 09-18 14:38 ?668次閱讀
    京東:調用用戶行為API<b class='flag-5'>分析</b>購買<b class='flag-5'>路徑</b>,優化頁面跳轉邏輯

    FPGA時序約束之設置時鐘組

    Vivado中時序分析工具默認會分析設計中所有時鐘相關的時序路徑,除非時序約束中設置了時鐘組或f
    的頭像 發表于 04-23 09:50 ?1364次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>時序</b>約束之設置時鐘組

    TDengine 發布時序數據分析 AI 智能體 TDgpt,核心代碼開源

    2025 年 3 月 26 日,濤思數據通過線上直播形式正式發布了其新一代時序數據分析 AI 智能體——TDgpt,并同步開源其核心代碼。這一創新功能作為 TDengine 3.3.6.0 的重要
    的頭像 發表于 03-27 10:30 ?735次閱讀
    TDengine 發布<b class='flag-5'>時序數據分析</b> AI 智能體 TDgpt,核心代碼開源

    Techwiz LCD應用:LC透鏡光線追跡

    TechWiz Ray 2D和3D計算光程差和焦距,并進行高級LC分析,包括通過施加電壓進行LC指向矢分布。 (a)LC分布和光學路徑分析(關狀態) (b)LC分布和光學路徑分析(開狀態)
    發表于 03-18 08:49