摘? 要: 介紹了時序分析" title="時序分析">時序分析" title="靜態(tài)時序分析" title="靜態(tài)時序分析">靜態(tài)時序分析">靜態(tài)時序分析在數(shù)字集成電路設(shè)計中的應(yīng)用,并以100M以太" title="以太">以太網(wǎng)卡芯片設(shè)計為例,具體描述了以太網(wǎng)卡芯片設(shè)計中的靜態(tài)時序分析流程及其時序問題。
關(guān)鍵詞: 靜態(tài)時序分析? 100M以太網(wǎng)卡? 數(shù)字電路? 約束? 應(yīng)用
?
集成電路自誕生以來,正如莫爾定律所預(yù)言的一樣,每隔18個月集成度就翻一番。目前的集成電路設(shè)計已經(jīng)由早期的幾十μm減小到0.15μm,進(jìn)入到了深亞微米級。在器件的特征尺寸降到深亞微米級的同時,器件的物理特性和電學(xué)特性也發(fā)生了很大的變化。器件本身固有延遲大大減小,而互連線所引起的延遲在整個單元延遲中所占的比例越來越大,因而時序不收斂是深亞微米集成電路設(shè)計中最常見的問題。在深亞微米集成電路設(shè)計中,傳統(tǒng)的分析方法使前端的邏輯設(shè)計與后端的物理設(shè)計很難保持一致。在邏輯設(shè)計中,仿真分析后功能和時序都正確的網(wǎng)表,卻由于布線設(shè)計后芯片空間和連線的限制,造成互連引線延遲與邏輯設(shè)計中使用的模型不一致,使得時序不再滿足約束要求,導(dǎo)致邏輯設(shè)計和物理設(shè)計循環(huán)不收斂,從而使設(shè)計周期大大加長。因此,傳統(tǒng)的分析方法在復(fù)雜的SOC設(shè)計面前,顯得無能為力,而成為整個設(shè)計流程中的瓶頸。
在這種情形下,靜態(tài)時序分析應(yīng)運(yùn)而生,它不僅可以根據(jù)設(shè)計規(guī)范的要求對設(shè)計進(jìn)行檢查,同時還能對設(shè)計本身做全面的分析。靜態(tài)時序分析是相對于動態(tài)時序分析而言的。動態(tài)時序分析時不可能產(chǎn)生完備的測試向量,覆蓋門級網(wǎng)表中的每一條路徑。因此在動態(tài)時序分析中,無法暴露一些路徑上可能存在的時序問題;而靜態(tài)時序分析,可以方便地顯示出全部路徑的時序關(guān)系,因此逐步成為集成電路設(shè)計簽字認(rèn)可的標(biāo)準(zhǔn)。
本文以100M以太網(wǎng)卡芯片的設(shè)計為基礎(chǔ),以靜態(tài)時序分析工具PrimeTime為參考工具,以Verilog語言為參考硬件描述語言,探討100M以太網(wǎng)卡芯片設(shè)計中的靜態(tài)時序分析流程及其時序問題。
1 100M以太網(wǎng)卡的結(jié)構(gòu)
100M以太網(wǎng)卡是一塊高集成度的快速以太網(wǎng)控制器,它支持IEEE802.3和802.3u協(xié)議及PCI v2.2總線接口協(xié)議,還支持10M/100M自適應(yīng)功能。此芯片包括PCI接口模塊、兩個2KB的FIFO模塊、發(fā)送DMA控制模塊、接收DMA控制模塊、IEEE 802.3協(xié)議規(guī)定的MAC模塊和10/100M 集成物理層(PHY)模塊。此外,還提供了EEPROM接口和擴(kuò)展BootROM接口。從整體來看,它是包含數(shù)字電路和模擬電路的混合型集成電路芯片。它采用的是0.25μm工藝,四層金屬層。圖1是該100M以太網(wǎng)卡的結(jié)構(gòu)框架圖。
?
2 100M以太網(wǎng)卡設(shè)計的靜態(tài)時序分析
100M以太網(wǎng)卡芯片的時鐘關(guān)系如圖2所示。pmapmd是網(wǎng)卡芯片物理層的模擬電路部分,digital是網(wǎng)卡芯片物理層的數(shù)字電路部分,core則是指網(wǎng)卡芯片除物理層之外的部分。純模擬模塊pmapmd通過晶振產(chǎn)生五個時鐘:f125m、f20m、f50m、t100rxc、t10rxc,提供給digital;digital提供PRXC、PTXC、clk_10Hz;clk_1kHz四個時鐘給core模塊。pci_clk是外部時鐘,通過PCIPAD提供給digital和core;同時,pci_clk還通過一個PCIbuffer產(chǎn)生一個與pci_clk相位不同但頻率相同的時鐘PADCLK提供給core。
?
由于該100M以太網(wǎng)卡芯片比較復(fù)雜,同時還要滿足一些特殊的功能需要,所以在該網(wǎng)卡的設(shè)計過程中存在許多時序分析問題需要解決。首先,該網(wǎng)卡的大部分PAD都是雙向的。在有些模塊中,外部輸入輸出接口的時序限制是參照內(nèi)部時鐘進(jìn)行限定的。其次,為了省電,在該網(wǎng)卡內(nèi)部設(shè)有許多選通時鐘(Gate Clock)和內(nèi)部時鐘,多個時鐘之間的信號連接會帶來相應(yīng)的麻煩。
圖3是100M以太網(wǎng)卡靜態(tài)時序分析流程圖。
?
2.1?時鐘的定義
在靜態(tài)時序分析中,時鐘的定義是設(shè)定限制的最重要的一個步驟,因為靜態(tài)時序分析本來就是基于時序進(jìn)行分析的,而絕大多數(shù)的時序路徑的計算又都是以時鐘為基礎(chǔ)的。所謂時鐘定義是指對于設(shè)計中所用到的時鐘設(shè)定名稱、周期、相位、占空比。在Primetime中用如下命令來實現(xiàn):
create_clock -name? [NAME] -period [P] -wave [rising_time falling_time] object_name
由于100M以太網(wǎng)卡芯片的門數(shù)較多,時鐘關(guān)系也比較復(fù)雜,所以對不同關(guān)系的時鐘,定義方法也不一樣。圖4給出三個不同關(guān)系的時鐘。
?
(1)CLK1和CLK2有兩種關(guān)系:一種是CLK1和 CLK2來自網(wǎng)卡外部毫無聯(lián)系的晶振,其相位關(guān)系是不確定的。根本無法通過Primetime正確地檢查它們之間的時序關(guān)系,但是可以正確地檢查單獨(dú)經(jīng)過CLK1或是CLK2的路徑的時序。另一種是CLK1和CLK2是頻率不一致的時鐘,例如通過RxDMA控制寫RxFIFO和讀RxFIFO的時鐘頻率是不一樣的,MII通過RxDMA控制寫RxFIFO的頻率為25MHz,而PCI通過RxDMA控制讀RxFIFO的頻率是33MHz。對于這樣的異步設(shè)計,一般不是通過Primetime的報告保證其時序關(guān)系,而應(yīng)該在寫代碼時就必須保證該部分的時序關(guān)系正確。所以若碰到這種情況,做靜態(tài)時序分析時一般要進(jìn)行如下處理;
set_false_path -setup-from CLK1 -to CLK2
(2)CLK3是由CLK1通過組合邏輯產(chǎn)生的,其相移就是這些組合邏輯的延時,經(jīng)過第一遍綜合之后,該延時便可從時序報告中得出,這樣就可以根據(jù)此延時對這兩個時鐘的關(guān)系給出正確的設(shè)定。在Primetime中,有以下兩種方法可以設(shè)定:
一種方法是分別定義時鐘CLK1和CLK3,并將其rising_time、period和占空比設(shè)為相同,然后再通過時鐘延時的設(shè)定來區(qū)分兩者的不同相位。當(dāng)然時鐘延時的差值應(yīng)該由所提之的組合邏輯延時決定。
另一種方法是只定義時鐘CLK1,再用如下命令定義CLK3:
create_generated_clock -name CLK3 -source? P1 -
divide_by 1? DFF3/ck
這樣,在布局布線" title="布局布線">布局布線之后做靜態(tài)時序分析時,CLK1被設(shè)為propagated_clock, Primetime就可以根據(jù)兩時鐘之間的延時關(guān)系來算出CLK3的特性(包括時鐘延時、時鐘抖動等),無需再另行推算。而前一方法比較適用于布局布線之前的靜態(tài)時序分析,因為這時所有的時鐘都被設(shè)為理想的,其時鐘延時、時鐘抖動和時鐘傳輸時間等都是根據(jù)實際情況來設(shè)定的。只有當(dāng)源時鐘為propagated_clock時,Primetime才會自動推算CLK3的特性,否則仍需要設(shè)置。
2.2 邊界時鐘
由于100M以太網(wǎng)卡某些模塊涉及到邊界時鐘,所以必須考慮邊界時鐘引起的時鐘延時問題。所謂邊界時鐘是指某模塊的輸入輸出和時序限制是以某個特定的時鐘作基準(zhǔn)的,而該時鐘是由外部時鐘分頻得到的。
但在布局布線之后做靜態(tài)時序分析時,并不用費(fèi)心去計算邊界時鐘引起的時鐘時延,而是把它交給Primetime完成。正如前面所提到的,當(dāng)源時鐘為propagated_clock時,Primetime會自動計算所生成時鐘的相關(guān)延時。
2.3 輸入輸出延時的聲明
做靜態(tài)時序分析時,要根據(jù)端口時序圖聲明輸入輸出延時,而不是根據(jù)內(nèi)部延時確定端口時序。下面給出延時聲明和端口時序聲明之間的簡單計算公式。假設(shè)時鐘周期為T,時鐘從端口到寄存器的延時是Tx,數(shù)據(jù)從端口到寄存器的延時是Ty,工藝給定的setup_time是Tsetup,hold_time是Thold,端口時序聲明給出的輸入數(shù)據(jù)在時鐘采樣沿之前保持有效的最小時間是Tsu,輸入數(shù)據(jù)在采樣時鐘沿之后保持有效的時間是Tkeep,端口時序聲明給出采樣時鐘沿到輸出數(shù)據(jù)有效的最長時間是Tdelay。在做靜態(tài)時序分析時應(yīng)保證以下關(guān)系成立:
Tsu+Tx-Ty>Tsetup????????????? (1)
Tkeep-Tx+Ty>Thold???? ???? (2)
根據(jù)輸入延時和輸出延時的定義和公式(1)和(2),可以得出最大輸入延時是:
Tinput_delay=T-Tsu????????????(3)
最大輸出延時是:
Toutput_delay=T-Tdelay???????? (4)
根據(jù)公式(3)以及圖5的端口時序圖可以定義圖5的最大輸入延時是:
Tinput_delay=Tclk-q + TM???????(5)
根據(jù)公式(4)以及圖5的端口時序圖可以定義圖5的最大的輸出延時是:
Toutput_delay=TS+Tsetup????????(6)
?
2.4?時序報告分析
靜態(tài)時序分析是采用窮盡分析方法來提取出整個電路存在的所有時序路徑,計算信號在這些路徑上的傳播延時,檢查信號的建立和保持時間" title="保持時間">保持時間是否滿足時序要求,通過對最大路徑延時和最小路徑延時的分析,找出違背時序約束的錯誤。因此分析靜態(tài)時序分析的報告是非常必要的。
下面是以100M以太網(wǎng)卡地址識別邏輯模塊作靜態(tài)時序分析時所產(chǎn)生的報告的一部分。
*******************************************
Report : timing
??????? -path full
??????? -delay max
??????? -max_paths 1
Design : ARLcore
Version: 2000.05-1
Date?? : Fri Nov 21 15:38:25 2002
*******************************************
Startpoint: ARLdp/n_DAValidsN_reg
(falling edge-triggered flip-flop clocked by TXC)
Endpoint: ARLsm/Cstate_reg[3]
(rising edge-triggered flip-flop clocked by TXC)
? Path Group: TXC
? Path Type: min
?????? Point????????????????????? ? Incr??? Path
??? ——————————————————————————
clock TXC (fall edge)?????????????? 5.00?? ?? 15.00
clock network delay
(ideal)??????????????????????????? 1.00?? ?? 16.00
ARLdp/n_DAValidsN_reg
/CPN (dfpfb1)?????????????????????? 0.00????? 16.00 f
ARLdp/n_DAValidsN_reg/Q
(dfpfb1)????????????????????????????0.56????? 16.56 f
ARLdp/U394/Z (an02d1)? ???????????? 0.25????? 16.80 f
ARLdp/n_DAValids (ARLdp)?? ???????? 0.00????? 16.80 f
ARLsm/n_DAValids (ARLsm)?? ???????? 0.00????? 16.80 f
ARLsm/U260/Z (an04d1)?????????????? 0.27????? 17.08 f
ARLsm/U294/Z (aor21d1)????????????? 0.27????? 17.34 f
ARLsm/U291/Z (aor21d1)????????????? 0.30????? 17.64 f
ARLsm/Cstate_reg[3]/D
(dfcrq2)???????????????????? ?????? 0.00????? 17.64f
data arrival time????????????????????? ?????? 17.64
clock TXC (rise edge)???????? ????? 20.00???? 20.00
clock network delay
?(ideal)???????????????????? ???????? 1.00????? 21.00
ARLsm/Cstate_reg[3]/CP
?(dfcrq2)?????????????????? ????????? 0.00????? 21.00r
library hold time???????????? ????? 0.50????? 21.50
data required time?????????????????? ???????? 21.50
........................................................
??? ……
data required time?????????????????? ???????? 21.50
data arrival time?????????????????????????????-17.64
?? ————————————————————————————
slack (MET)??????????????????? ?????????????? 3.86
從報告中可以看出它非常詳細(xì)地報告了從Startpoint:ARLdp/n_DAValidsN_reg到 Endpoint:ARLsm/Cstate_reg[3]這條路徑的時序關(guān)系,并且這條路徑是滿足保持時間的。
靜態(tài)時序分析在不同階段的側(cè)重點(diǎn)是不一樣的。在布局布線前,往往更重視建立時間檢查,而忽視保持時間檢查。如果違背了建立時間,就必須重新優(yōu)化。至于違背了保持時間,可以通過在布局布線后手工加入一定的延時來解決,在布局布線后,應(yīng)重點(diǎn)檢查保持時間。
在100M以太網(wǎng)卡芯片設(shè)計中,通過做靜態(tài)時序分析,確認(rèn)了其設(shè)計的可靠性,為設(shè)計獲得簽字認(rèn)可起到了保證性的作用。
靜態(tài)時序分析是分析、診斷和確認(rèn)設(shè)計的時序特性的方法。它不需要輸入向量就能窮盡所有的路徑,且運(yùn)行速度很快、占用內(nèi)存較少,不僅可以對芯片設(shè)計進(jìn)行全面的時序功能檢查,而且還可利用時序分析的結(jié)果來優(yōu)化設(shè)計,因此靜態(tài)時序分析已經(jīng)越來越多地被用到數(shù)字集成電路設(shè)計的驗證中。
?
參考文獻(xiàn)
1 Barual Tuck..Deep Submicron Changes the Face of Verification[J].Computer Design, 1995(10):20
2 Musgrave G etal. User Experience with High Level Formal? Verification. In:ACM Proceedings of the35th Design Automation Conference.San Francisco:ACM,1998:327