東莞網(wǎng)站制作十強seo 培訓教程
設計約束

設計約束所處環(huán)節(jié):
約束輸入
分析實現(xiàn)結(jié)果
設計優(yōu)化
設計約束分類:
物理約束:I/O接口約束(例如引腳分配、電平標準設定等物理屬性的約束)、布局約束、布線約束以及配置約束
時序約束:設計FPGA內(nèi)部的各種邏輯或走線的延時,反映系統(tǒng)的頻率和速度的約束
時序約束的目的:讓FPGA編譯工具合理地調(diào)配FPGA內(nèi)部有限的布局布線資源,盡可能地滿足設計者設定的所有時序要求(主要是將走線、邏輯電路等產(chǎn)生的延時限制在指定的范圍內(nèi))
時序約束的定義
設計者根據(jù)實際的系統(tǒng)功能,通過時序約束的方式提出時序要求;FPGA編譯工具根據(jù)設計者的時序要求,進行布局布線;編譯完成后,FPGA編譯工具還需要針對布局布線的結(jié)果,套用特定的時序模型(FPGA器件廠商能夠使用這樣的模型,對FPGA布局布線后的每一個邏輯電路和走線計算出延時信息),給出最終的時序分析和報告;設計者通過查看時序報告,確認布局布線后的時序結(jié)果是否滿足設計要求
時序過約束和時序欠約束
沒有任何設計約束的工程,編譯器的工作就如同“脫韁的野馬”般漫無目的且隨意任性;
任何的時序過約束(over-constraining,時序約束過于嚴格,超過實際設計的要求)或時序欠約束(under-constraining,時序約束過于松散,低于實際設計的要求),都可能導致時序難以收斂(即難以達到設計要求)。因此,為了達到特定應用的設計要求,設計者必須設定合適的時序約束
設計約束實例
設計需求:din1<10ns , din2<10ns , din3<20ns , din4<20ns
沒有時序約束的情況(可能滿足,也可能不滿足,不確定)
合理的時序約束
時序欠約束(din1和din2欠約束):din1<20ns , din2<20ns , din3<20ns , din4<20ns
din1或din2若被分配到>10ns的兩條普通走線,則時序違規(guī)
時序過約束(din3和din4過約束):din1<10ns , din2<10ns , din3<10ns , din4<10ns
受到實際資源限制,時序報告總是時序違規(guī)(Fail)
基于Vivado的時序約束方法
時序約束基本步驟
.xdc? ?引腳分配
Edit Constraints Sets...
Make active
右鍵constrs_2,選擇Add Sources...,add or create constraints
at7_pins? 物理約束、引腳約束
at7_timing? 時序約束
Vivado界面
SYNTHESIS
Run Synthesis
Constraints Wizard ,Define Target(存到哪個文件),再次點擊Constraints Wizard,識別時鐘,Frequency(MHz)可以設置,或使用默認
Edit Timing Constraints,Timing Constraints,Period(ns)時鐘周期
切換xdc保存文件,右鍵要保存的文件,Set as Target Constraint File,此時該文件后面就會出現(xiàn)(target)
Vivado也提供xdc約束腳本模版:
PROJECT MANAGER
Setting
Language Templates
時鐘與時鐘偏差
時序邏輯:輸出在時鐘沿的觸發(fā)下才能更新輸入的變化
組合邏輯:無需時鐘沿的觸發(fā),輸出立刻更新輸入的變化
主要差異:
組合邏輯的輸出與輸入直接相關,時序邏輯的輸出和原有狀態(tài)也有關
組合邏輯立即反應當前輸入狀態(tài),時序邏輯還必須在時鐘上升沿觸發(fā)后輸出新值
組合邏輯容易出現(xiàn)競爭、冒險現(xiàn)象(組合邏輯中,同一信號經(jīng)不同的路徑傳輸后,到達電路中的某一會合點的時間有先有后,這種現(xiàn)象稱為邏輯競爭,而因此產(chǎn)生輸出干擾脈沖的現(xiàn)象稱為冒險),時序邏輯一般不會出現(xiàn)競爭、冒險現(xiàn)象
組合邏輯的時序較難保證,時序邏輯更容易達到時序收斂,時序邏輯更可控
組合邏輯只適合簡單的電路,時序邏輯能夠勝任大規(guī)模的邏輯電路
基本時鐘模型
Tclk為一個時鐘周期(單位:秒,FPGA的時鐘周期一般為納秒級別,即ns)
時鐘的倒數(shù)1/Tclk即為時鐘頻率(單位:Hz,FPGA的時鐘頻率一般為MHz級別,1MHz=1,000,000Hz)
T1為高脈沖時間寬度,T2為低脈沖時間寬度,Tclk=T1+T2
時鐘信號的高脈沖寬度與周期之比T1/Tclk即該時鐘信號的占空比
時鐘頻率是FPGA設計性能一個很重要的指標,但是,單純的時鐘頻率并不是衡量設計性能好壞的唯一指標。FPGA設計中,還有并行結(jié)構、流水線結(jié)構等體系架構方式也是設計性能的重要影響因素。
時鐘偏差
無論是來自外部晶振的時鐘信號,還是在FPGA內(nèi)部經(jīng)過PLL產(chǎn)生的時鐘信號,它們的周期都無法保證絕對的精準,影響時鐘周期準確性的因素有很多,比如材料、工藝、溫度以及各種噪聲等。這些對時鐘周期的準確性產(chǎn)生的影響導致了時鐘的偏差。
在FPGA內(nèi)部集成的PLL,FPGA編譯工具在做時序分析時可以直接套用既有模型給出的時鐘的偏差參數(shù),作為一部分需要預留的時序余量計算在內(nèi)。而外部晶振所產(chǎn)生的時鐘信號,設計者需要指定相關的時鐘偏差參數(shù),以時序約束的方式告知FPGA編譯工具
時鐘主要參數(shù)
時鐘精度(Frequency tolerance)、時鐘溫漂(Frequency versus temperature characteristic)和時鐘抖動(jitter)
以SiTime公司的SiT8021系列晶振規(guī)格書為例
精度Initial Tolerance? -15~+15? ppm(part per million百萬分率或百萬分之幾)
100MHz也就是10ns,每個時鐘周期會產(chǎn)生的時鐘偏差為+-15*10的-6次方
抖動RMS Period Jitter 75~110ps? ?(1皮秒=1000,000納秒,1萬億分之一秒,10的-12次方秒)
溫漂Frequency Stability
時鐘抖動
晶振源固有的噪聲和干擾通常會帶來時鐘信號的周期性的偏差,稱之為始終抖動(jjitter),其單位一般是ps
FPGA時序約束分析中,也會將時鐘抖動作為時鐘不確定性(uncertainty)的一部分加以約束
建立時間和保持時間
建立時間(Setup Time,Tsu),是指在時鐘上升沿到來之前數(shù)據(jù)必須保持穩(wěn)定的時間
保持時間(Hold Time,Th),是指在時鐘上升沿到來以后得數(shù)據(jù)必須保持穩(wěn)定的時間
一個數(shù)據(jù)需要在時鐘的上升沿被鎖存,那么這個數(shù)據(jù)就必須在這個時鐘上升沿的建立時間和保持時間內(nèi)保持穩(wěn)定;換句話說,就是在這段時間內(nèi)傳輸?shù)臄?shù)據(jù)不能發(fā)生任何的變化
建立時間違規(guī)
保持時間違規(guī)
時序分析中路徑、沿和關系的定義
數(shù)據(jù)到達路徑(data arrival path),是指數(shù)據(jù)在兩個寄存器間傳輸?shù)膶嶋H路徑,由此路徑可以算出數(shù)據(jù)在兩個寄存器間傳輸?shù)膶嶋H時間
數(shù)據(jù)需求路徑(data require path),是指為了確保穩(wěn)定、可靠且有效的傳輸(即滿足相應的建立時間和保持時間要求),數(shù)據(jù)在兩個寄存器間傳輸?shù)睦碚撍钑r間的計算路徑
時鐘啟動沿和鎖存沿、建立時間關系和保持時間關系
時鐘啟動沿:傳輸?shù)皆醇拇嫫鞯臅r鐘沿
時鐘鎖存沿:傳輸?shù)侥康募拇嫫鞯臅r鐘沿
建立時間關系:
當前數(shù)據(jù)從源寄存器的時鐘啟動沿,經(jīng)過一定的延時,最終到達目的寄存器的時鐘鎖存沿,保證當前數(shù)據(jù)被鎖存的建立時間得到滿足
啟動沿從時間上看就要比鎖存早一個時鐘周期,即他們之間通常是相差一個時鐘周期的關系
保持時間關系:
當前數(shù)據(jù)從源寄存器的時鐘啟動沿,經(jīng)過一定的延時,最終達到目的寄存器的時鐘鎖存沿,保證上一個數(shù)據(jù)的保持時間得到滿足
啟動沿和鎖存沿所分別對應的時鐘其實是同一個時鐘周期由時鐘源傳輸過來的時鐘信號
寄存器到寄存器的時序路徑分析
時鐘共同路徑
系統(tǒng)同步接口與源同步接口
系統(tǒng)同步接口
FPGA與外部芯片之間的通信時鐘都由外部同一時鐘源(系統(tǒng)時鐘)產(chǎn)生時,我們稱之為系統(tǒng)同步接口
源同步接口
FPGA與外部芯片之間的通信時鐘都由源寄存器所在一側(cè)(輸出端)產(chǎn)生時,我們稱之為源同步接口