找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7136|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

時(shí)序分析—多周期路徑(Multicycle Paths)檢查 網(wǎng)表文件 Altera器件時(shí)序模型

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-23 01:21 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 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如下圖所示。











分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:105323 發(fā)表于 2016-2-23 01:23 | 只看該作者
時(shí)序分析(4)——關(guān)鍵路徑的時(shí)序優(yōu)化          關(guān)鍵路徑通常是指同步邏輯電路中組合邏輯時(shí)延最大的路徑,也就是說(shuō)關(guān)鍵路徑是對(duì)設(shè)計(jì)性能起決定性影響的時(shí)序路徑。         靜態(tài)時(shí)序分析能夠找出邏輯電路的關(guān)鍵路徑。通過(guò)查看靜態(tài)時(shí)序分析報(bào)告,可以確定關(guān)鍵路徑。 對(duì)關(guān)鍵路徑進(jìn)行時(shí)序優(yōu)化,可以直接提高設(shè)計(jì)性能。
       對(duì)同步邏輯來(lái)說(shuō),常用的時(shí)序優(yōu)化方法包括pipeline(增加寄存器)、retiming(移動(dòng)邏輯)兩種。



回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表