本節書摘來自華章出版社《cmos內建電路後端設計與實戰》一 書中的第3章,第3.3節,作者:劉峰,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
标準單元的設計流程是實作标準單元建庫工作的基本指導方針,隻有在一套完善且系統的開發流程下逐漸完成每個工作環節才能實作标準單元庫的建立。一般情況下,可以按照以下六大步驟完成cmos标準單元庫的開發工作,但在實際應用過程中由于種種原因,會出現開發工作的反複疊代,例如當工藝和互連線的器件模型不夠精确時,引起單元特征化,得到的模型參數不夠精确,就需要疊代。如圖3-22所示為标準單元庫實作的基本流程圖。

1)方案設計。根據設計需求确定設計目标和實作方案。
2)電路及版圖設計生成。标準單元庫的主要參數定義後,就需要對各個種類的單元進行電路設計和版圖實作。
3)标準單元庫版圖和時序資訊提取。标準單元設計完成了單元的schmatic和layout視圖後,通過對版圖和時序資訊進行提取才能被多種eda工具所識别和使用。
4)庫模型生成及庫文檔生成。标準單元庫版圖和時序資訊都提取完成以後,就可以進行相關資料的整理和歸納,供後續設計使用。
5)設計工具流程驗證。标準單元庫的資料都準備好了以後,就可以供相關eda工具使用,驗證其資料在設計實作流程中是否可用。
6)測試電路設計及工藝流片驗證。測試電路設計主要包括功能驗證電路、工作頻率測試電路、建立/保持時間測試電路、恢複/移除時間測試電路以及制定測試方案。
标準單元庫的設計在大方向上需要确定标準單元庫的應用類型及各種類型庫所需要包含的單元種類、數量及單元性能名額等。标準單元庫中單元數量的多少、庫的預期應用性能、庫的開發成本,也是設計中應考慮的重要因素,在工程實作之前都需要規範。
基于标準單元設計方法的設計,通過設定合适的單元電源線的金屬寬度滿足功耗分布的需要,同時電源線的寬度應該設計得盡量窄來減少電源線所占用的标準單元内部面積,以實作最大化布線資源。
然而,标準單元的電源線寬度首先需要設計的足夠寬來滿足自身需要。對于給定的具體設計,我們确定合理的電源/地線的寬度主要是為了防止因溫度、電流密度等因素引起的電遷移。
标準單元電源/地線寬度的确定可以通過下面3種設計建議的方法來預估和确定。
1)直接參考工藝廠家的标準單元庫進行定義。如果在本工藝下有相應工藝廠家的标準單元庫,可以直接套用該标準單元中電源/地線的寬度。
2)基于标準單元仿真實驗資料進行定義。根據仿真實驗資料自行定義标準單元庫電源/地線的寬度,确定電源/地線寬度的基本建議方法如下:
電遷移依賴于導體中電流的大小,而電遷移敏感的單元像輸出緩沖器和時鐘發生器一樣的大驅動器。在确定标準單元的實體設計規範前,在大範圍溫度、供電電壓、信号斜率和工藝偏差内對大驅動能力單元進行模拟,以獲得流過單元電源地網絡的導線電流的預估最大值,同時結合流片廠家的電流密度規則決定電源和地網絡導線的最小寬度。
以驅動緩沖器bufx20單元為模拟對象,在典型工藝下,做直流分析,電源vdd電流特性如下:
假如由工藝規則檔案的電流密度規則(current density rule)規定在tt條件下,m1的最大dc電流假如是1ma/μm,則電源地網絡導線最小寬度是:
wm1=0.3ma/1ma/μm=0.3μm
3)基于設計所預估的總功耗和面積資訊來定義。下面的設計建議通過一些簡單的假設提供比較粗略的預估,假設标準單元的電源線與金屬層2的電源條帶(stripe)連接配接,如圖3-24
所示。
假定的參數說明如下:
iavg——設計中的總平均電流,該值通過預估的總功耗計算得到;
dm1——金屬層1能夠允許的最大電流密度;
dm2——金屬層2能夠允許的最大電流密度;
im1——水準方向上的金屬層1可以提供的最大電流;
istrap——金屬層1電源線總共需要提供的最大電流;
wm2——實作垂直電源帶的金屬層2的寬度;
wm1——金屬層1作為電源線的寬度。
假設垂直方向上的金屬層2的電流從金屬線的兩端流入,通過以下公式計算流過金屬層2的電流:
同樣假設标準單元金屬層1電源線的電流也是從金屬線兩端流入,則金屬層1電流線的電流計算公式如下所示。
最後根據金屬層1電源線總共需要提供的最大電流和設計中标準單元電源線的預估總行數算出金屬層1作為電源線的寬度,則電源線寬度的計算公式如下所示。
實際上還要考慮連接配接金屬層1和金屬層2的通孔個數問題。
确定合理的标準單元高度,不僅有利于進行高效的布局布線,還可以減少長距離導線互連帶來的延時損失,對水準方向連線緊張的工藝尤為重要。
通過工程實踐,總結兩種方法如下:
1)如果在目前工藝下,有相應工藝廠家的标準單元庫,可以直接套用該标準單元的高度。
2)可以根據實驗資料自行定義标準單元庫高度,下面推薦的基本粗略預估思路如下:
由于電子的載流子遷移率大于空穴的載流子遷移率(一般是兩倍多),是以p管寬度一般比n管大,而或非門是n管并聯,p管串聯。在通用的标準單元庫中,單倍四輸入的或非門是所有單元中n管有源區最高的(五輸入甚至更多的就選用輸入最多的或非門),是以假設通過一個四輸入norx1門(保證有源區沒有折疊管的最大值),通過固定的n管x1尺寸來确定p管非折疊高度,最終确定最小單元高度。最後根據版圖設計規則和布線要求得到水準布線通道值後,結合四輸入nor門的高度最終确定單元高度等于幾條布線通道值。通過對多個工藝下标準單元布線通道值的分析,一般的取值為7~15,是以标準單元的高度在通過或非門計算後,需盡量達到擁有7~15個布線通道的高度。
為了滿足實際需求,可以根據邏輯功能設計不同尺寸、不同驅動能力的單元。一般的邏輯單元都設計了至少四種不同驅動能力的單元:半倍驅動能力的低功耗單元、常用的單倍驅動能力單元、速度更快的2倍驅動能力單元和4倍驅動能力單元,用來滿足不同的設計需要。而常用的反相器和時鐘緩沖器設計了更多的驅動能力單元。其中,反相器一般會設計10種不同驅動能力的單元,用于時鐘樹的時鐘反相器和緩沖器會設計從半倍到二十倍之間不同驅動能力的單元。
在定義驅動強度方法之前,首先應定義驅動強度最小單元的n管尺寸。下面推薦的基本粗略預估思路确定最小單元n管尺寸的方法如下:
根據版圖設計規則中定義的接觸孔(contact)大小和有源區最小包孔參數值,選擇最小包孔的有源區寬度,即半倍(xl)驅動能力n管寬度。考慮到驅動能力,需要在實際的工程中作适當的放大。
這樣介紹三種定義驅動強度的粗略方法。
1)零負載與倍數尺寸。該種驅動能力的定義方法首先是設定輸出負載為0,即通過本征延時資料來定義不同驅動能力的單元。以n管最小尺寸為基數,通過擴大基數整數倍的尺寸定義相應的驅動單元(即尺寸通過以最後一級半導體的最小尺寸為基數,再乘以一個倍數來定義驅動能力),同時按照設計要求規定上升和下降延時的最大偏內插補點,經過尺寸微調後達到要求即可。
2)倍數負載與固定延時。由于在前端邏輯綜合時,綜合軟體是以延時、面積、功耗等限制進行單元選取。後端布局布線也是根據延時、負載等因素确定單元的選取。傳統的零負載與倍數尺寸的方法不能有效地提高前端綜合工具和後端布局布線工具對标準單元庫的合理選擇。是以倍數負載與固定延時的方法比零負載與倍數尺寸法更适合設計适用于eda工具調用的标準單元庫。
該類型驅動能力的定義方法是首先設定invxl的輸入負載為最小單元輸出負載的基數值,根據單元驅動的倍數同時增加基數負載的相同倍數,即負載基數值與倍數相乘,不是使用相同驅動力倍數的inv的輸入負載值。按照設計要求确定在該對應負載下的延時規定來設計相應驅動能力的标準單元,其延時規定可以定義上升和下降都需延時小于某個數值,并比同類型x1單元的延時偏差小于某個數值。
3)固定負載與降級延時。該方法主要用于添加中間驅動能力單元中。通常标準單元庫提供了多種驅動能力(如x1,x2,x4,x8,x16)的單元。在固定負載下,依據延時設定單元的驅動力可以使工具對單元的選取具有更大的靈活性,相對傳統方法更具針對性。
一般自動綜合和布局布線後,eda工具使用了大量小驅動能力的單元,可見在典型的設計中低驅動能力單元使用得很普遍。是以,提供延時間隔更短的低驅動能力單元顯得更為重要。如果在現有标準單中繼資料中,inv單元在輸入斜率和輸出負載相同情況下,延時資料x1和x2間的延時內插補點比x4和x8間的延時內插補點大。在相同激勵和負載情況下,對于驅動能力相近的單元,其延時與驅動能力近似為線性關系,延時随驅動能力增大而遞減,為了提高标準單元庫的靈活性,需要在xl~x1和xl~x2間根據延時內插補點增加更多驅動能力等級的單元,如驅動能力單元x0.6,x0.8,x1.3,x1.7等。
該類型驅動能力的定義方法以x1~x2之間的驅動設定為例,将倍數負載與固定延時方法中x2單元采用的負載作為x1.x系列單元的固定負載進行模拟,根據模拟結果确定線性關系的系數,從逐漸遞減的單元延時參數中設定x1.3,x1.7等單元。
在設定标準單元驅動強度的同時還需要考慮标準單元電路最後一級p/n管寬長比,通常在标準單元庫中可以把p/n管寬長比值分成兩類。一類是作為構成時鐘網絡的标準單元p/n管寬長比值,該p/n管寬長比值主要考慮時鐘網絡标準單元需要平衡上升時間和下降時間。另一類是正常的為延時優化的p/n管寬度比值,該p/n管寬長比值主要考慮标準單元驅動力最優化。
在定義了标準單元庫的主要設計參數後,就需要對各個種類的單元進行電路設計和版圖實作。
在标準單元庫中,複雜的邏輯單元(例如多路選擇器、異或/同或門等)通常含有較多的半導體數目,對複雜邏輯單元的電路結構進行設計和優化,相比版圖能獲得更好的效果。靜态cmos工作時速度慢,動态電路類型可能是最快的實作結構,基于傳輸管和傳輸門的電路通常被認為是快速且低功耗的。在電路級,利用各種電路實作技術對各單元進行合理的設計,對後期單元庫的整體性能起決定性作用。
标準單元電路及版圖設計基本流程如圖3-25所示。
最終标準單元庫是提供給布局布線工具使用的,而不是人工手動布局,是以在标準單元的版圖實作上要盡可能的符合布局布線工具的要求,使布局布線工具合理地配置設定單元位置并提供最多的布線資源以達到系統整體性能最優。
下面歸納在版圖實作中,一直要遵循的幾個基本設計建議。
1)輸入輸出端口要盡可能地放置在網格格點上,水準和垂直方向上的端口應盡量錯開,這樣可以充分利用垂直布線的資源。
2)輸入輸出端口必須在本單元的邊界以内,而且邊緣端口必須和單元的邊界保持至少半個最小格點間距。
3)對于輸入輸出端口比較密集的單元,稍微增加單元面積的大小有時會比刻意保持單元面積最小要好,這樣可以增加布線資源。
4)保證同類型的單元中最大單元的寬度是最小單元寬度的10倍之内。如果單元很複雜,可以通過增加高度來保證寬度的要求。
5)所有單元的寬度必須是格點間距的倍數或者是偏移半個格點後網格的倍數(根據布線工具的政策來定)。
6)如果單元内輸入輸出端口的周圍有剩餘空間,可以增加端口的金屬面積使其更具多通孔性,多通孔單元可提高可連接配接度。
設計的标準單元庫在drc、lvs及erc确定版圖沒有錯誤後,就可以進行實體資訊抽象化來提取lef檔案了。lef檔案用于後端布局布線,它包含标準單元的實體視圖資訊(pin、boundary、metal)。提取lef檔案需要準備的資料是gdsii版圖資料和包含布局布線資訊的工藝檔案。lef檔案包含了單元的金屬層、pin及電源地資訊,此外還有單元的面積和單元間的拼接資訊。
标準單元設計完成了單元的schmatic和layout視圖後,但單元輸入負載、速度和功耗等資訊卻沒有以時序分析工具能認知的形式提取出來,例如綜合工具需要知道單元的邏輯功能、單元實際的輸入負載電容、在不同輸入斜率和輸出負載情況下單元的延時和功耗、單元的面積等。是以标準單元必須完成時序資訊特征化(提取.lib檔案)後,才能被多種時序分析工具所識别和使用。單元時序資訊特征化就是通過模拟仿真器來提取标準單元相關時序資訊的過程。
在drc、lvs及erc确定版圖沒有錯誤後,就可以提取lef檔案了。lef檔案用于後端布局布線,它包含标準單元的實體視圖資訊(pin、boundary、metal)。業界一般使用cadence公司的abstract genetrator來提取lef資訊,基本提取流程如圖3-26所示。
提取lef檔案需要準備的資料是gdsii版圖資料和包含布局布線資訊的工藝檔案。
用virtuoso将标準單元的gdsii資料導入一個library,打開abstract genetrator并連接配接library,界面如圖3-27所示。為防止abstract軟體錯誤識别标準單元的pin資訊,需要導入标準單元的邏輯功能網表檔案。
以觸發器單元dffhqx1為例,layout視圖和提取lef資訊并導入virtuoso後得到abstract視圖如圖3-28所示。lef檔案包含了單元的metal1、pin及電源地資訊,此外還有單元的面積和單元間的拼接資訊。
标準單元必須完成時序資訊特征化(提取.lib檔案)後才能被多種時序分析工具所識别和使用。業界使用特性參數提取的工具主要是cadence公司的signalstorm library characterizer(目前嵌入到ets軟體中)、已被收購的magma公司的siliconsmart和synopsys的ncx。
這裡以早期cadence公司的signalstorm library characterizer為例簡單介紹,不管該軟體版本及名稱如何變化,但其工作大體流程基本不變。
signalstormlc(signalstorm library characterizer)可提取标準單元(數字的)和io端口的時序資訊,并将其整合為.lib檔案。典型的時序資訊特征化流程,如圖3-29所示。
将庫設計規範檔案(setup.ss)、标準單元的帶寄生參數網表檔案(.spf)及hspice器件仿真模型參數檔案(.lib和.mdl)輸入到signalstormlc中,内部機制調用hspice進行模拟,可得到标準單元的有效電流源模型檔案(ecsm)及中間檔案(.alf),中間檔案(.spf)可轉化為多種資料格式(包括.html、.lib、.verilog和.vhdl),供其他相關eda工具使用。
使用signalstormlc提取時序資訊需要一些必要的指令語句。可将這些指令編寫到一個腳本檔案(.txt或者其他字尾)中,将軟體啟動後,調入檔案即可等待.lib檔案的生成。
标準單元庫版圖和時序資訊都提取完以後,就可以進行相關資料的整理和歸納了。庫模型需要整理歸納的基本資料如下:
1)标準單元庫各個單中繼資料的文字描述文檔。
2)标準單元庫的verilog代碼資料、電路級(cdl)資料、實體版圖(gdsii)資料、實體視圖(lef)資料及時序(lib)資訊資料。這些資料再結合廠家的工藝檔案資料就可以供相關eda工具進行工程應用了。
3)指導性文檔。當标準單元庫完成以後,需要對其進行性能的評估,總結該标準單元庫适合使用的環境資料,指導使用者在該單元庫性能名額達到的前提下,合理地設計系統來實作預期的目标。其中最重要的一個指導性資料是使用該單元庫可以使系統達到什麼樣的性能,即最小時鐘周期的設定。
一種對标準單元庫進行性能預估的可行性理論方法如下:
在itrs(國際半導體技術發展路線圖)中,為了建立一個微處理器時鐘頻率的趨勢模型采用了一種概念,即時脈速度不能超過固定數量的門的傳播延時。例如在2001年的itrs中,一個16級的典型門延時被定義為全局時鐘周期,而一個典型的門延時則指的是一個fo4(fanout-of-4 inverter delay)。目前fo4作為一種延時機關被廣泛采用,這樣做的好處是在讨論體系結構如何影響性能時可以把工藝的因素放在一邊。
在過去的十多年中,微處理器的時鐘周期大幅下降。例如,intel的6代x86微處理器的時鐘周期從1992年的53fo4(i486dx2)下降到2002年的12fo4(pentium4)。目前有研究指出,當同時考慮高性能和低功耗時,時鐘周期為18fo4時,性能達到最優值。
是以根據這個指導思想,通過測試标準單元庫所采用工藝的fo4值,确定使用該标準單元庫後系統的最優頻率值,可以指導設計者對系統進行合理的性能定義。
如果選取某工藝典型情況下,反相器的平均傳輸延時作為該工藝的fo4參考值55.36ps,根據時鐘周期為18fo4時性能最優的結論得出:
t=18fo4=18×55.36ps=996.48ps
計算結果顯示系統設計的最優時鐘周期為1ns左右,工作頻率1ghz左右。
通過對比該工藝廠家提供的時鐘最小寬度資料和廠家标稱可以達到的性能說明,該預估的時鐘頻率在這些資料範圍之内,是以具有一定的參考價值。
标準單元庫的資料都準備好了以後,就可以供相關eda工具使用,驗證其資料是否可用。标準單元庫的實體視圖資料導入布局布線工具中的使用情況如圖3-30所示。
标準單元庫的時序資訊導入時序分析工具中的使用情況如圖3-31所示。
測試電路設計主要包括功能驗證電路、工作頻率測試電路、建立/保持時間測試電路、恢複/移除時間測試電路以及制定測試方案。