巢 瑋,徐 勇,楊 凡,吳浩澤
(1.哈爾濱工業(yè)大學(深圳),廣東 深圳 518055;2.深圳國微芯科技有限公司,廣東 深圳 518053)
靜態(tài)時序分析(Static Timing Analysis,STA)作為電路設計中重要的時序驗證方法,用來確保電路的功能運行在不同工作環(huán)境下都能符合設計的預期目標。在STA 時,一個完整的設計將被分解為數(shù)條不同的時序路徑,通過計算每條路徑上的信號傳播延遲來驗證在設計內(nèi)部以及設計輸入輸出端口的時序情況是否符合給定的時序約束。時序約束是設計者根據(jù)不同設計的具體情況,設置一定的約束指標來模擬所設計電路的實際工作環(huán)境。STA 通過分析設計中時序路徑的時序情況,確保所設計的電路能夠正常工作在對應的工作頻率下而不產(chǎn)生時序違例。
隨著電路集成密度的提高以及電路結(jié)構復雜程度的指數(shù)性增加,層次化架構設計已成為重要的電路設計方法[1]。在層次化架構的電路設計中,IC 頂層與下層模塊的時序約束分別獨立完成。時序約束的迭代與時序收斂的效率是芯片投片生產(chǎn)與產(chǎn)品上市時間的重要保證。隨著工藝的愈發(fā)先進這一過程往往要設計者付出較多的時間和精力[2]。隨著設計和制造工藝的不斷進步,時序約束與時序收斂也迎來了新的挑戰(zhàn)。如之前自主設計的芯片[3-4]盡管規(guī)模不算大,但時序約束及時序收斂依然經(jīng)歷了數(shù)次迭代,這部分較重復的手工迭代在一定程度上降低了芯片設計效率。
研究表明,精準的時序約束能有效避免不真實的時序違例及不必要的時序修復所帶來的面積增加問題,從而減輕電路后端設計的工作量[5]。隨著制造工藝的進步和電路設計復雜度的提高,時序收斂的難度及迭代周期都迎來了新的挑戰(zhàn)[6]。為了準確地對電路進行分析并去除部分特別悲觀和特別樂觀的場景,時序分析方法經(jīng)歷了從工藝偏差方法學到先進的片上誤差方法學,再到統(tǒng)計學片上誤差分析的演進[7-9]。在超大規(guī)模集成電路中,單位面積中晶體管的數(shù)量呈指數(shù)性增長,基于時序約束的布局布線變得愈發(fā)復雜并有著龐大的計算量[10-12],實驗表明,精準的時序約束能有效減少迭代從而縮短芯片設計的周期。
時序約束按照約束類型通??煞譃槿悾謩e是時鐘約束、端口約束以及時序例外約束。其中時鐘約束是靜態(tài)時序分析的基礎,如在時鐘MUX 的研究中[13],對常見的幾種電路結(jié)構的時鐘約束進行了分析與比較。此外,一種時鐘約束的傳播的方法被應用在了低功耗的異步RISC-V 處理器上,通過傳播時鐘與生成時鐘對異步電路進行時序分析[14]。文獻[15]介紹了一種靜態(tài)時序驗證方法,可以較早、快速、精確定位FPGA 端口時序設計存在的問題,從而縮短了驗證時間,提高了驗證效率、準確性和覆蓋率。對于特殊的時序路徑,需要通過時序例外約束進行定義,從而使得工具在STA 時能夠使用正確的參數(shù)及指標分析特殊的時序路徑[16]。
由于時序約束的多樣性,同一類型的時序約束彼此之間的參數(shù)與選項可能存在較大差異,為實現(xiàn)時序約束在頂層及模塊間的自動化傳播,使用了業(yè)界標準Synopsys 設計約束(Synopsys Design Constraints,SDC)文件作為時序約束的標準。同時在時序約束分類的基礎上,根據(jù)SDC 文件中時序約束的參數(shù)與選項結(jié)構,對分類進行了細化。根據(jù)SDC 中參數(shù)與選項結(jié)構的差異,該自動化流程將時序約束分為四大類,分別是通用約束、端口約束、時序例外以及時鐘約束,如圖1 所示。根據(jù)不同時序約束的類型,將除端口約束外的時序約束細分為六個分類,每個分類的時序約束都具有相似的結(jié)構與選項。在流程圖中,白色框代表著輸入和輸出,灰色框表示自動化傳播方法[17]。
圖1 時序約束的自動化傳播流程圖
端口約束是用來描述端口外部延時、電容等信息以更準確地貼近電路的實際工作情況。因此,端口約束與時序分析的場景息息相關,不同時序分析的場景的端口可能存在較大差異。如圖2(a)所示,在頂層的端口為IN_1、IN_2、OUT_1 以及OUT_2。當時序約束向下傳播時,時序分析的場景從頂層變?yōu)槟K,此時模塊外的頂層電路將不再需要時序分析,且模塊的輸入輸出引腳變?yōu)槎丝凇榱藴蚀_分析模塊的時序,模塊時序約束需要對模塊端口in1、in2、out1 以及out2 進行重新約束。
圖2 端口約束在頂層與模塊之間的差異
如圖2(a)所示,假設頂層端口IN_1 與OUT_1 端口的輸入延遲與輸出延遲約束如下:
其中,$IN_1_delay 和$OUT_1_delay 分別對應端口IN_1 與OUT_1 的輸入延遲與輸出延遲,$IN_1_clock 和$OUT_1_clock 則分別對應端口外時序路徑起點與終點的時鐘。當時序約束向下傳播時,由于模塊端口in1 與out1 與頂層端口的約束不存在直接關聯(lián),將通過與端口相連的時序路徑構建模塊端口的等效延遲,因此可得到如下的輸入延遲與輸出延遲:
在不考慮線延遲的情況下,模塊端口in1 的輸入延遲等于寄存器REG_1 的時鐘到輸出延遲$REG_1_CQ_delay 加上組合邏輯COM1 的延遲$COM1_delay。輸入延遲的約束時鐘為在頂層與in1 相連的寄存器REG_1 的時鐘$REG_1_clock。模塊端口out1的輸出延遲等于組合邏輯COM5 的延遲$COM5_delay 加上寄存器REG_4 的建立時間$REG_4_setup。此時寄存器REG_4 的時鐘$REG_4_clock則用來約束端口out1 的輸出延遲。
在端口約束向上傳播時,頂層時序約束文件中通常已經(jīng)存在端口約束,所以無需對端口進行重復約束。
時鐘約束是時序分析的基礎,精準的時鐘定義是時序收斂的重要依據(jù)。時鐘約束包括了創(chuàng)建時鐘、創(chuàng)建生成時鐘等。在大型芯片設計中,由于工作場景與需求的不同,時鐘頻率與時鐘結(jié)構往往多種多樣。
如圖3(a)所示,頂層時鐘由兩個端口時鐘CLK_1和CLK_2 以及兩個PLL 時鐘CLK_3 和CLK_4 組成。如果MUX1 的選擇端不加以約束,則時鐘CLK_1 和CLK_2 都能通過模塊引腳clk_a 影響寄存器REG_2的時序。同時,模塊引腳clk_a 的一個分支連接到了緩沖器BUF_1 并產(chǎn)生了一個時鐘CLK_1 的生成時鐘。另一方面,PLL 輸出的時鐘CLK_3 與CLK_4 之間存在一條時序路徑從寄存器REG_1 到REG_3,而此時由于CLK_3 并沒有直接連接到模塊上。當進行模塊級的時序分析時,需要創(chuàng)建CLK_3 的虛擬時鐘以補全該條時序路徑確保時序分析的正確性,如圖3(b)所示。
圖3 時鐘約束在頂層與模塊之間的差異
假設圖3(a)的頂層的時鐘有如下約束:
其中,每個時鐘都有對應的時鐘周期$CLK_period 以及波形$CLK_WF。當時鐘約束向下傳播時,與模塊有直接連接關系的時鐘CLK2 將根據(jù)電路結(jié)構等效傳播至模塊上。而CLK3 雖然沒有連接到模塊上,但其構成的時序路徑與模塊存在交互,故需要創(chuàng)建虛擬時鐘,以此來對模塊端口reg1_q 進行約束從而分析從寄存器REG_1 到REG_3 的時序路徑。端口約束中對輸入延遲的時鐘約束將與這里定義的虛擬時鐘名字自動保持一致,無需人為調(diào)整。此時,對應的模塊時鐘約束如下:
在時鐘約束向上傳播時,模塊端口所創(chuàng)建的時鐘以及模塊所設置的虛擬時鐘通常并不是頂層時鐘的起始點,因此這些時鐘及其對應的時鐘不確定性等屬性均不需要向上傳播。相反,模塊內(nèi)部的時鐘通常為時鐘真正的起始點,如時鐘門后的生成時鐘、IP 內(nèi)部PLL 所產(chǎn)生的時鐘等。這些時鐘在向上傳播時,需要根據(jù)電路層級結(jié)構的改變進行對應的調(diào)整。
在時序分析中,有時一些特殊的時序路徑需要通過時序例外約束進行差異化分析,從而使得工具在STA 時能夠使用正確的參數(shù)及指標分析特殊的時序路徑。時序例外包括偽路徑、多周期路徑等。時序例外可設置在標準單元及其引腳上,也可設置在端口或時鐘上。因此時序例外在頂層與模塊間傳播時,準確地獲取標準單元的層級路徑,靈活轉(zhuǎn)換端口與引腳顯得尤為重要。
由圖4(a)可知,寄存器REG_1 與寄存器REG_2之間存在大量組合邏輯COM1 與COM2。假設時鐘CLK_1 與CLK_2 是同步時鐘且寄存器REG_1 與REG_2 之間需要數(shù)個時鐘周期才能完成,那么它們之間存在多周期路徑,可由如下時序約束描述:
圖4 時序例外在頂層與模塊之間的差異
這里的$setup_cycle 和$hold_cycle 分別對應了在建立時間檢查時所對應的周期數(shù)以及保持時間檢查時所對應的周期數(shù)。當時序例外向下傳播時,完整的時序路徑被模塊的端口分為兩部分,頂層的電路結(jié)構在模塊級將不再可見,此時根據(jù)該條時序路徑的電路結(jié)構,可以獲取其在模塊端口上的等效點,重新定義模塊的時序例外,同時模塊內(nèi)標準單元的層級結(jié)構也隨之改變。對應的模塊時序例外如下所示:
當時序例外向上傳播時,由于時序路徑的補全,在時序分析時將多出一些額外的時序路徑。為了模塊的時序約束傳播至頂層時不影響到頂層其他時序路徑,此時序例外將仍舊停留在模塊及其內(nèi)部,并將從端口起始的路徑從起點改為經(jīng)過點,并將端口重新改為引腳。模塊時序例外等效的新頂層時序約束如下所示:
該時序約束的自動化傳播方法不論在測試用例還是工程項目中均能準確而高效地生成對應的時序約束。在實驗的過程中,使用的測試電路一共有三個,分別是一個兩百多標準單元的測試用例、一個約一萬標準單元的工程用小型數(shù)字電路以及一個約六十五萬標準單元的工程項目電路。每個測試電路都有一個頂層時序約束SDC 文件以及一個模塊級時序約束SDC 文件,分別對應了時序約束向下傳播時所需要的頂層時序約束以及時序約束向上傳播時所需要的模塊級約束。為了更好地貼近時序約束在芯片設計中的實際情況,三個測試電路中使用了兩個已經(jīng)成功signoff 的工程項目的網(wǎng)表以及對應的時序約束進行測試。
實驗結(jié)果如表1 所示,該時序約束的自動化傳播方法在不同的IC 設計中均能準確地將時序約束在頂層與模塊間進行等效傳播,不論是實驗用的測試用例還是實際工程中signoff 的IC 設計均能精確地實現(xiàn)時序約束的自動化傳播。自動化傳播所產(chǎn)生的時序約束經(jīng)過與傳統(tǒng)時序約束傳播方式進行對比,結(jié)果表明,自動化產(chǎn)生的時序約束在功能上100%匹配人為手動所生成的時序約束。
表1 不同測試電路的測試數(shù)據(jù)
該文提出了一種時序約束的自動化等效傳播方法,能夠根據(jù)頂層時序約束或模塊時序約束自動生成另一層級對應的等效時序約束。該自動化方法減少了設計時序約束的人力成本,通過自動化的方法替代了重復繁瑣的手工迭代,從而提高了時序分析與時序收斂的效率。從實驗結(jié)果來看,該方法在測試用例與項目工程應用中均能準確地生成對應的時序約束,顯著提高了時序約束設計的效率及自動化程度。