99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

兩種時序例外

多周期路徑

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

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


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

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

多周期約束的語句是:

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

對于建立時間,num_cycles是指多周期路徑所需的時鐘周期個數(shù);對于保持時間,num_cycles是指相對于默認的捕獲沿,實際捕獲沿應(yīng)回調(diào)的周期個數(shù)。

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

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

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

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

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

1. 單時鐘域

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

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


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

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


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

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


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

采用如下的時序約束:

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

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

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


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

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

這里加上-end參數(shù)是因為我們要把捕獲時鐘沿往前移,因此針對的是接收端,但由于我們這邊講的是單時鐘域,發(fā)送端和接收端的時鐘是同一個,因此-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時序約束理論篇之兩種時序例外


在單時鐘域下,若數(shù)據(jù)經(jīng)過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時序約束理論篇之兩種時序例外


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

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


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

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

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

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


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

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


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

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

當發(fā)起時鐘慢于捕獲時鐘時,我們應(yīng)該如何處理?

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


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

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


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

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

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

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

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

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


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

當發(fā)起時鐘快于捕獲時鐘時,我們應(yīng)該如何處理?

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


假設(shè)發(fā)起時鐘頻率是捕獲時鐘頻率的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參數(shù),這樣的話默認就是-start,是因為我們把發(fā)起時鐘回調(diào)2個周期,如下圖所示。

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


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

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


偽路徑

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

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

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

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

偽路徑的約束為:

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

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

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

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

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等,由于平時用的比較少,這里就不講了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22053

    瀏覽量

    618763
  • 時序約束
    +關(guān)注

    關(guān)注

    1

    文章

    118

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    FPGA時序約束之設(shè)置時鐘組

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

    Techwiz LCD應(yīng)用:LC透鏡光線追跡

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

    集成電路設(shè)計中靜態(tài)時序分析介紹

    Analysis,STA)是集成電路設(shè)計中的一項關(guān)鍵技術(shù),它通過分析電路中的時序關(guān)系來驗證電路是否滿足設(shè)計的時序要求。與動態(tài)仿真不同,STA不需要模擬電路的實際運行過程,而是通過分析
    的頭像 發(fā)表于 02-19 09:46 ?631次閱讀

    使用IP核和開源庫減少FPGA設(shè)計周期

    /prologue-the-2022-wilson-research-group-functional-verification-study/),70% 的 FPGA 項目落后于計劃,12% 的項目落后計劃 50% 以上。 為此,很多FPGA廠商都在自己EDA工具里嵌入I
    的頭像 發(fā)表于 01-15 10:47 ?706次閱讀
    使用IP核和開源庫減少<b class='flag-5'>FPGA</b>設(shè)計<b class='flag-5'>周期</b>

    EE-38:ADSP-2181 IDMA端口-周期竊取時序

    電子發(fā)燒友網(wǎng)站提供《EE-38:ADSP-2181 IDMA端口-周期竊取時序.pdf》資料免費下載
    發(fā)表于 01-14 17:28 ?0次下載
    EE-38:ADSP-2181 IDMA端口-<b class='flag-5'>周期</b>竊取<b class='flag-5'>時序</b>

    FPGA驅(qū)動AD芯片之實現(xiàn)與芯片通信

    概述:?利用FPGA實現(xiàn)AD芯片的時序,進一步實現(xiàn)與AD芯片數(shù)據(jù)的交互,主要熟悉FPGA時序圖的實現(xiàn),掌握時序圖轉(zhuǎn)換Verilog硬件描述
    的頭像 發(fā)表于 12-17 15:27 ?1092次閱讀
    <b class='flag-5'>FPGA</b>驅(qū)動AD芯片之實現(xiàn)與芯片通信

    Verilog vhdl fpga

    編程語言,熟悉時序約束、時序分析方法; 4.熟悉FPGA開發(fā)環(huán)境及仿真調(diào)試工具。 5.熟悉FPGA外部存儲控制器及數(shù)據(jù)傳輸接口,如E2PRO
    發(fā)表于 11-12 16:40

    TPS65950實時時鐘時序補償分析

    電子發(fā)燒友網(wǎng)站提供《TPS65950實時時鐘時序補償分析.pdf》資料免費下載
    發(fā)表于 10-29 10:01 ?0次下載
    TPS65950實時時鐘<b class='flag-5'>時序</b>補償<b class='flag-5'>分析</b>

    使用IBIS模型進行時序分析

    電子發(fā)燒友網(wǎng)站提供《使用IBIS模型進行時序分析.pdf》資料免費下載
    發(fā)表于 10-21 10:00 ?1次下載
    使用IBIS模型進行<b class='flag-5'>時序</b><b class='flag-5'>分析</b>

    高速ADC與FPGA的LVDS數(shù)據(jù)接口中避免時序誤差的設(shè)計考慮

    電子發(fā)燒友網(wǎng)站提供《高速ADC與FPGA的LVDS數(shù)據(jù)接口中避免時序誤差的設(shè)計考慮.pdf》資料免費下載
    發(fā)表于 10-15 09:50 ?6次下載
    高速ADC與<b class='flag-5'>FPGA</b>的LVDS數(shù)據(jù)接口中避免<b class='flag-5'>時序</b>誤差的設(shè)計考慮

    萊迪思FPGA器件生命周期

    電子產(chǎn)品的生命周期通常超過20年。這一事實使產(chǎn)品壽命成為FPGA器件選擇的重要標準。任何公司都不希望因為FPGA即將停產(chǎn)而匆忙進行最后一次采購或重新設(shè)計電路板。為過時的器件尋找合適的供應(yīng)商是一項復(fù)雜的工作,尤其是在原
    的頭像 發(fā)表于 09-30 10:17 ?667次閱讀
    萊迪思<b class='flag-5'>FPGA</b>器件生命<b class='flag-5'>周期</b>

    時序邏輯電路故障分析

    時序邏輯電路的主要故障分析是一個復(fù)雜而重要的課題,它涉及電路的穩(wěn)定性、可靠性以及整體性能。以下是對時序邏輯電路主要故障的全面分析,旨在幫助理解和解決這些故障。
    的頭像 發(fā)表于 08-29 11:13 ?1871次閱讀

    FPGA電源時序控制

    電子發(fā)燒友網(wǎng)站提供《FPGA電源時序控制.pdf》資料免費下載
    發(fā)表于 08-26 09:25 ?0次下載
    <b class='flag-5'>FPGA</b>電源<b class='flag-5'>時序</b>控制

    優(yōu)化 FPGA HLS 設(shè)計

    用的參考設(shè)計。該參考設(shè)計針對具有 Dual ARM? Cortex?-A9 MPCore? 的 FPGA。 我們使用 Xilinx HLS 工具來打開此設(shè)計。 它的時鐘周期為 5.00 ns,即
    發(fā)表于 08-16 19:56

    深度解析FPGA中的時序約束

    建立時間和保持時間是FPGA時序約束中兩個最基本的概念,同樣在芯片電路時序分析中也存在。
    的頭像 發(fā)表于 08-06 11:40 ?1413次閱讀
    深度解析<b class='flag-5'>FPGA</b>中的<b class='flag-5'>時序</b>約束