|
本帖最后由 51黑黑黑 于 2016-2-23 01:24 編輯
對(duì)于Altera FPGA芯片,靜態(tài)時(shí)序分析工具為Timequest。
Timequest靜態(tài)時(shí)序分析的對(duì)象包括:
(1)寄存器和寄存器之間的路徑;
(2)I/O之間;
(3)I/O和寄存器之間的路徑;
(4)異步復(fù)位和寄存器之間的路徑。
Timequest 根據(jù) Data Arrival Time 和 Data Required Time 計(jì)算出時(shí)序余量(Slack)。當(dāng)時(shí)序余量為負(fù)值時(shí),發(fā)生時(shí)序違規(guī)(Timing Violation)。
由于時(shí)序分析是針對(duì)時(shí)鐘驅(qū)動(dòng)的電路進(jìn)行的,所以分析的對(duì)象一定是“寄存器-寄存器對(duì)”。在分析涉及到I/O的時(shí)序關(guān)系對(duì)時(shí),看似缺少一個(gè)寄存器分析對(duì)象,構(gòu)不成“寄存器-寄存器對(duì)”,其實(shí)是穿過(guò) FPGA的 I/O引腳,在FPGA外部虛擬了一個(gè)寄存器作為分析對(duì)象。
在建立、保持時(shí)間檢查中,都假設(shè)數(shù)據(jù)從launch edge開始發(fā)送,在latch edge被捕獲;launch edge和latch edge是相鄰最近的一對(duì)時(shí)鐘沿。在多周期路徑檢查中,仍然采用launch edge和latch edge的概念,但是launch edge和latch edge不再是相鄰的一對(duì)時(shí)鐘沿,而是間隔一定時(shí)鐘周期的一對(duì)時(shí)鐘沿,間隔的時(shí)鐘周期個(gè)數(shù)由用戶指定。
在同步邏輯設(shè)計(jì)中,通常都是按照單周期關(guān)系考慮數(shù)據(jù)路徑的。但是往往存在這樣的情況:一些數(shù)據(jù)不需要在下一個(gè)時(shí)鐘周期就穩(wěn)定下來(lái),可能在數(shù)據(jù)發(fā)送后幾個(gè)時(shí)鐘周期之后才起作用;一些數(shù)據(jù)經(jīng)過(guò)的路徑太復(fù)雜,延時(shí)太大,不可能在下一個(gè)時(shí)鐘周期穩(wěn)定下來(lái),必須要在數(shù)據(jù)發(fā)送后數(shù)個(gè)時(shí)鐘周期之后才能被采用。針對(duì)這兩種情況,設(shè)計(jì)者的設(shè)計(jì)意圖都是:數(shù)據(jù)的有效期在以launch edge為起始到數(shù)個(gè)時(shí)鐘周期之后的latch edge。這一設(shè)計(jì)意圖不能夠被時(shí)序分析工具猜度出來(lái),必須由設(shè)計(jì)者在時(shí)序約束中指定;否則,時(shí)序約束工具會(huì)按照單周期路徑檢查的方式執(zhí)行,往往會(huì)誤報(bào)出時(shí)序違規(guī)。
不設(shè)置多周期路徑約束的后果有兩種:一是按照單周期路徑檢查的結(jié)果,虛報(bào)時(shí)序違規(guī);二是導(dǎo)致布局布線工具按照單周期路徑的方式執(zhí)行,雖然滿足了時(shí)序規(guī)范,但是過(guò)分優(yōu)化了本應(yīng)該多個(gè)周期完成的操作,造成過(guò)約束。過(guò)約束會(huì)侵占本應(yīng)該讓位于其他邏輯的布局布線資源,有可能造成其他關(guān)鍵路徑的時(shí)序違規(guī)或時(shí)序余量變小。
在多周期路徑的建立時(shí)間(Setup Time)檢查中,Timequest會(huì)按照用戶指定的周期數(shù)延長(zhǎng)Data Required Time,放松對(duì)相應(yīng)數(shù)據(jù)路徑的時(shí)序約束,從而得到正確的時(shí)序余量計(jì)算結(jié)果;在保持時(shí)間(Hold Time)檢查中,Timequest也會(huì)相應(yīng)地延長(zhǎng)Data Required Time,不再按照單周期路徑的分析方式執(zhí)行(不再采用launch edge最近的時(shí)鐘沿,而是采用latch edge最近的時(shí)鐘沿),這就需要用戶指定保持時(shí)間對(duì)應(yīng)的多周期個(gè)數(shù)。
Timequest缺省的Hold Time檢查公式是需要用戶修改的——針對(duì)Setup Time多周期路徑的設(shè)置也會(huì)影響到Hold Time的檢查。究其原因,多周期路徑是為了解決信號(hào)傳播太慢的問(wèn)題,慢到一個(gè)周期都不夠,所以要把Setup Time的檢查往后推幾個(gè)周期——擴(kuò)大Setup Time檢查的時(shí)間窗口。而Hold Time檢查信號(hào)是否傳播得太快,如果把檢查時(shí)刻往后推,就縮小了Hold Time檢查的時(shí)間窗口。
“信號(hào)跳變抵達(dá)窗口”:對(duì)latch寄存器來(lái)說(shuō),從previous時(shí)鐘對(duì)應(yīng)的Hold Time開始,到current時(shí)鐘對(duì)應(yīng)的Setup Time結(jié)束。
“信號(hào)電平采樣窗口”:對(duì)latch寄存器來(lái)說(shuō),從current時(shí)鐘對(duì)應(yīng)的 Setup Time 開始,到current時(shí)鐘對(duì)應(yīng)的Hold Time結(jié)束。
launch寄存器必須保證驅(qū)動(dòng)的信號(hào)跳變到達(dá)latch寄存器的時(shí)刻恰好處于 “信號(hào)跳變抵達(dá)窗口”內(nèi),才能保證不破壞latch寄存器的“信號(hào)電平采樣窗口”。
時(shí)序檢查的目的就是確認(rèn)信號(hào)跳變發(fā)生在“信號(hào)跳變抵達(dá)窗口”內(nèi),而不會(huì)發(fā)生在“信號(hào)電平采樣窗口”內(nèi)。 多周期路徑的設(shè)置是通過(guò)延后Setup Time檢查的時(shí)刻,擴(kuò)大了“信號(hào)跳變抵達(dá)窗口”,放松了時(shí)序約束。因此,延后Hold Time,就會(huì)縮小“信號(hào)跳變抵達(dá)窗口”。
時(shí)序分析(2)——Altera器件時(shí)序模型 Quartus提供兩種PVT條件下的器件時(shí)序模型(注:65nm及以下的高級(jí)器件還有其他模型): (1)Slow Corner模型:通過(guò)假設(shè)最大的環(huán)境溫度(operating temperature)和VCCmin來(lái)模擬一條信號(hào)路徑可能的最慢的情況。
(2)Fast Corner模型 :通過(guò)假設(shè)最小的環(huán)境溫度(operating temperature)和VCCmin來(lái)模擬一條信號(hào)路徑可能的最快的情況。
這兩個(gè)模型的意義在于:通過(guò)slow corner模型來(lái)保證建立時(shí)間的時(shí)序,通過(guò)fast corner來(lái)保證保持時(shí)間的時(shí)序(對(duì)于源同步來(lái)說(shuō)必須使用)。
一般情況下的設(shè)計(jì)以建立時(shí)間違規(guī)為主,所以Timequest默認(rèn)使用slow corner。
時(shí)序分析(3)——網(wǎng)表文件
Timequest需要讀入布局布線后的網(wǎng)表才能進(jìn)行時(shí)序分析。讀入的網(wǎng)表是由以下一系列的基本單元構(gòu)成的 (1) Cells:Altera器件中的基本結(jié)構(gòu)單元(例如,查找表、寄存器、IO單元、PLL、存儲(chǔ)器塊等)。LE可以看作是Cell。 (2) Pins:Cell的輸入輸出端口?梢哉J(rèn)為是LE的輸入輸出端口。注意:這里的Pins不包括器件的輸入輸出引腳,代之以輸入引腳對(duì)應(yīng)LE的輸出端口和輸出引腳對(duì)應(yīng)LE的輸入端口。
(3) Nets:同一個(gè)Cell中,從輸入pin到輸出pin經(jīng)過(guò)的邏輯。注意,網(wǎng)表中連接兩個(gè)相鄰Cell的連線不被看作Net,而被看作同一個(gè)點(diǎn),等價(jià)于Cell的pin。雖然連接兩個(gè)相鄰Cell的連線不被看作Net,但這個(gè)連線還是有其物理意義的,即等價(jià)于Altera器件中的一段布線邏輯,會(huì)引入一定的延遲。
(4) Ports:頂層邏輯的輸入輸出端口。對(duì)應(yīng)已經(jīng)分配的器件引腳。
(5) Clocks:約束文件中指定的時(shí)鐘類型的pin。不僅指時(shí)鐘輸入引腳。
(6) Keepers:泛指Port和寄存器類型的Cell。
(7) Nodes:基本時(shí)序網(wǎng)表單元,例如端口、引腳、寄存器和keepers。 Nodes & Keepers是Timequest特有的擴(kuò)展。

這是一個(gè)時(shí)序網(wǎng)表的實(shí)例,摘自Quartus II的使用手冊(cè)。
Timequest進(jìn)行時(shí)序分析的對(duì)象paths的描述。
Edge paths:the connections from ports-to-pins, from pins-to-pins, and from pins-to-ports。其中,pins-to-pins連接關(guān)系既包括Cell內(nèi)部的連接(Net),也包括相鄰Cell外部的pins-to-pins連接。
Path通常分為三類:
(1) Clock paths:從Clock Port或內(nèi)部生成的clock pin到寄存器Cell的時(shí)鐘輸入Pin。
(2) Data paths:從輸入Port到寄存器Cell的數(shù)據(jù)輸入pin,或從寄存器Cell的數(shù)據(jù)輸出pin到另一個(gè)寄存器Cell的數(shù)據(jù)輸入pin。
(3) Asynchronous paths:從輸入Port到寄存器Cell的異步輸入pin,或從寄存器Cell的數(shù)據(jù)輸出pin到另一個(gè)寄存器Cell的異步輸入pin。 三種path如下圖所示。

|
|