趁著元旦假期,我們來捋一下芯片設(shè)計中的幾個基礎(chǔ)問題。
我們都知道,最近關(guān)于芯片設(shè)計與制造的話題,依然占據(jù)著人們的茶前飯后時間,敵人的圍追堵截,使我們丟棄幻想,奮起抗?fàn)?。在我們的工作中或生活中,不論處于半?dǎo)體行業(yè)的上游還是下游,對于芯片都無法避開,缺了它,我們寸步難行。
當(dāng)你在家開著空調(diào),從冰箱里拿出一瓶冰可樂,葛優(yōu)躺拿著手機刷視頻時,你希望視頻流暢無卡頓。在這背后,是一群群芯片設(shè)計工程師、移動通信工程師、網(wǎng)絡(luò)工程師、圖像處理工程師、芯片開發(fā)/驗證工程師、芯片制造工程師、芯片封裝測試工程師......日以繼夜奮斗的結(jié)果。
任何一款芯片的設(shè)計,都需要龐大的設(shè)計和驗證團隊進行密切合作共同完成。在芯片設(shè)計中,我們需要考慮眾多因素。那么,我們的腦海里在想些什么呢?
芯片邏輯開發(fā)工程師的三重境界:心中有電路,腦中有時序,手中有代碼。
如果我們在設(shè)計中使用同步設(shè)計或任何IP,或最終確定體系結(jié)構(gòu)和微體系結(jié)構(gòu),那么我們需要制定各種策略。以下列出了其中一部分:
設(shè)計的功能性和兼容性
并行性、并發(fā)性和流水線策略
外部IO和高速接口
設(shè)計的面積和初始門數(shù)估計
速度和最高頻率要求
功耗要求和使用低功耗設(shè)計
時鐘網(wǎng)絡(luò)和延遲
接口和IO延遲與建模策略
經(jīng)過以上考慮,由經(jīng)驗豐富的技術(shù)人員組成的團隊最終確定ASIC/ SOC 設(shè)計的架構(gòu)和微架構(gòu)。
為了便于理解架構(gòu)和項目研發(fā),我們需要考慮的一些設(shè)計因素,主要有以下幾個方面。
01
時序參數(shù)
上升沿敏感觸發(fā)器的重要時序參數(shù)如圖1所示,它們是:
建立時間 (tsu)
保持時間(th)
觸發(fā)傳播延時(tpd)
建立時間(tsu):在時鐘的有效邊沿到達之前,觸發(fā)器的數(shù)據(jù)輸入應(yīng)該保持穩(wěn)定值的最小時間被稱為建立時間。
有效邊沿表示上升沿(正邊沿)靈敏的D觸發(fā)器從低電平到高電平的跳變,下降沿(負邊沿)靈敏的D觸發(fā)器從高電平到低電平的跳變。
在建立時間窗口期間,如果數(shù)據(jù)輸入從1到0或反之,那么觸發(fā)器輸出將是亞穩(wěn)態(tài)的,這表明存在建立違例。
保持時間(th):觸發(fā)器的數(shù)據(jù)輸入在時鐘有效邊沿到達后保持穩(wěn)定的最小時間,稱為保持時間。
有效邊沿表示上升沿(正邊沿)靈敏的D觸發(fā)器從低到高的跳變,下降沿(負邊沿)靈敏的D觸發(fā)器從高到低的跳變。
在保持時間窗口期間,如果數(shù)據(jù)輸入從1到0或反之,那么觸發(fā)器輸出將是亞穩(wěn)態(tài)的,這表明存在保持違例。
觸發(fā)器的傳播時延(tpd=tcq):觸發(fā)器到達時鐘有效邊沿后產(chǎn)生有效輸出所需的時間,稱為觸發(fā)器的傳播時延。
傳播延遲也稱為時鐘到q端的延遲,也稱為tcq。
02
亞穩(wěn)態(tài)
如果將圖2所示設(shè)計的數(shù)據(jù)輸入連接到另一個模塊上,該模塊的時鐘由不同的時鐘源產(chǎn)生,則第一個觸發(fā)器輸出將處于亞穩(wěn)態(tài)。
meta_data表示觸發(fā)器數(shù)據(jù)是亞穩(wěn)態(tài)的,因此第一個觸發(fā)器存時序違例。亞穩(wěn)態(tài)表明數(shù)據(jù)輸出是無效的,為了得到有效的數(shù)據(jù)輸出,設(shè)計需要使用多電平同步器。
所述第一觸發(fā)器所采樣的數(shù)據(jù)與所述第二觸發(fā)器的輸出的時序如圖3所示。如圖所示,第一個觸發(fā)器的輸出處于亞穩(wěn)態(tài),輸出觸發(fā)器的data_out輸出處于合法有效狀態(tài)。
03
時鐘偏斜
如果ASIC設(shè)計中有多個時鐘,那么時鐘分布和時鐘樹綜合將對平衡各塊不同時鐘輸入之間的時鐘偏斜起到非常重要的作用。
如果設(shè)計中的兩個不同的時鐘到達不同的時間實例,則設(shè)計具有時鐘偏斜。時鐘偏移的原因是路由延遲,即單時鐘域設(shè)計的線延遲??紤]所示的圖,讓我們考慮在發(fā)射觸發(fā)器的clk邊緣在時間實例t0到達,在時間實例t2捕獲觸發(fā)器。由于這個同步設(shè)計的時鐘到達時間不同,clk1和clk2之間存在相移,我們可以認為這是時鐘偏移。另一個原因是振蕩器的老化;然后,振蕩器產(chǎn)生的時鐘周期頻率變化,因此到達時間的差異可以稱為抖動。
時鐘偏斜是由于clk1引腳和clk2引腳之間的互連延遲引起。
在實際的專用集成電路設(shè)計中,我們經(jīng)歷了兩種不同類型的偏置,如圖5所示。
正時鐘偏移:表示先觸發(fā)發(fā)射時鐘clk1,再到達捕獲時鐘clk2。如圖中tskew,它是clk1和clk2到達時間的差值。換句話說,我們可以想象正時鐘偏斜是數(shù)據(jù)和時鐘在相同的方向上運行,正時鐘偏斜有利于建立時間,但對保持時間不好,因為有正的margin來管理。
負時鐘偏移:最后觸發(fā)發(fā)射時鐘clk1,第一個觸發(fā)捕獲時鐘clk2。如圖中tskew,它是clk1和clk2到達時間的差值。換句話說,我們可以想象負時鐘偏移是數(shù)據(jù)和時鐘在相反的方向上運行,負時鐘偏移對保持時間更好,但對建立時間不好。
在ASIC設(shè)計中,我們總是會遇到由于抖動或互連(即線延遲)而產(chǎn)生的時鐘偏斜,下面是我們應(yīng)該知道的要點。
正時鐘偏斜有利于建立時間,但不利于保持時間。
負時鐘偏斜有利于保持時間,但不利于建立時間。
正時鐘偏斜(positive clock skew)
如前面所討論的,正時鐘傾斜發(fā)射觸發(fā)器首先被觸發(fā),然后在捕獲觸發(fā)器被捕獲。在發(fā)射時鐘和捕獲時鐘之間有緩沖延遲的裕度,可以用來提高設(shè)計所需的頻率。
讓我們找出所需的數(shù)據(jù)時間和數(shù)據(jù)到達時間。
Data Arrival Time(AT)=tpff1+tcombo
Dara Required Time(RT)=Tclk+tbuffer-tsu
其中,Tclk是時鐘周期或時鐘到q端的延時。tbuffer是緩沖延時,tsu是觸發(fā)器建立時間,tpff1是觸發(fā)器傳播延時,tcombo是組合邏輯延時。
建立裕量(setup slack)是數(shù)據(jù)所需時間和數(shù)據(jù)到達時間之間的差值,應(yīng)該為正。正的建立時間裕量表明設(shè)計中不存在任何建立違例。為了避免設(shè)計中的建立違例 ,設(shè)計應(yīng)該具有快速數(shù)據(jù)、快速啟動時鐘(clk1)和慢捕獲時鐘(clk2)。也就是說,與所需的數(shù)據(jù)時間相比,數(shù)據(jù)的實際到達應(yīng)該更快。(如圖7所示)
負時鐘偏斜(negative clock skew)
如前面所討論的,負時鐘偏斜,在發(fā)射觸發(fā)器最后觸發(fā)和捕獲觸發(fā)器首先被觸發(fā)。由于在觸發(fā)時鐘和捕獲時鐘之間有緩沖延遲的裕度,這降低了設(shè)計的最大頻率。。
讓我們找出所需的數(shù)據(jù)時間和數(shù)據(jù)到達時間。
Data Arrival Time(AT)=tbuffer+tpff1+tcombo
Dara Required Time(RT)=Tclk-tsu
04
裕量(slack)
在ASIC設(shè)計中,有兩個術(shù)語用于描述裕量,即建立裕量(setup slack)和保持裕量(hold slack)。
建立裕量(setup slack)
建立裕量是數(shù)據(jù)所需時間和數(shù)據(jù)到達時間之間的差值,應(yīng)該為正。正的建立裕量表明設(shè)計中不存在任何建立違例。
Data Arrival Time(AT)=tbuffer+tpff1+tcombo
Dara Required Time(RT)=Tclk-tsu
Setup Slack=RT-AT
保持裕量(hold slack)
保持裕量是數(shù)據(jù)到達時間和數(shù)據(jù)需要時間之間的差值,應(yīng)該是正的。正保持裕量表明在設(shè)計中沒有任何保持違例。
05 時鐘延遲
時鐘由鎖相環(huán)產(chǎn)生,用于單時鐘域設(shè)計,對于多個時鐘域,我們可能需要多個鎖相環(huán)。
時鐘網(wǎng)絡(luò)引入了延遲,它實際上是時鐘到達芯片所需的時間,時鐘延遲是由時鐘分布過程中的時鐘網(wǎng)絡(luò)延遲造成的。
06
設(shè)計的面積
ASIC的總面積是由標準單元、宏和IP核組成的。在集成電路的百萬或億門設(shè)計中,面積的限制和更好的布局規(guī)劃對獲得預(yù)期性能起著重要的作用。我們可以在不同的設(shè)計階段考慮面積優(yōu)化,例如:
在體系結(jié)構(gòu)設(shè)計過程中,通過不同功能塊交互描述,獲取更好的策略。
在RTL設(shè)計過程中,使用基于工具的指令和命令,并使用資源共享技術(shù)。
在版圖階段的物理設(shè)計中,通過策略來放置功能塊,最小化由于布線延遲和布線資源使用而造成的面積消耗。
07
速度要求
在ASIC設(shè)計中,速度是另一個重要的考慮因素。采用不同的速度改進技術(shù)可以提高專用集成電路的性能。例如,考慮到處理器設(shè)計工作在500MHz的工作頻率,我們面臨著提高設(shè)計頻率的挑戰(zhàn)。在這種情況下,ASIC設(shè)計周期中可以使用各種策略,但可能很少使用:
在體系結(jié)構(gòu)和微體系結(jié)構(gòu)設(shè)計時,具有較好的順序邊界劃分。
在初始版圖中,相互依賴的塊可以彼此靠近地放置,以最小化面積,從而減少布線延遲,并提高速度。
在RTL設(shè)計階段,使用平衡寄存器和寄存器復(fù)制、優(yōu)化命令來提高設(shè)計性能。但它們可能會影響邏輯面積。
在RTL設(shè)計過程中,使用寄存器的輸入和輸出,使設(shè)計具有更好的性能。
只要可行,就使用流水線的概念和體系結(jié)構(gòu)。
如果需要在設(shè)計中使用FSM設(shè)計和控制器,則嘗試在控制和數(shù)據(jù)路徑綜合方面進行工作,以獲得干凈的時序和更好的性能。
盡量使用同步設(shè)計,因為它們比異步設(shè)計更快。
盡量避免內(nèi)部時鐘發(fā)生器;相反,考慮時鐘樹并在CTS期間優(yōu)化時鐘樹。
在布線階段,嘗試使用基于工具的改進技術(shù),因為啟用工具指令可以在平衡時鐘偏斜方面發(fā)揮特別重要的作用。
08
功耗要求
對于任何類型的ASIC或SOC設(shè)計,重要的考慮是功率,設(shè)計團隊的目標是減少泄漏和動態(tài)功耗。在物理設(shè)計過程中考慮功率約束進行功率規(guī)劃。在ASIC設(shè)計流程的不同階段,應(yīng)采用功率優(yōu)化技術(shù)。
具有低功耗感知的ASIC架構(gòu)。
在不同的設(shè)計級別使用UPF。
在RTL期間,為了最小化動態(tài)功率,使用專用的時鐘門控單元。
通過避免不必要的數(shù)據(jù)值分配和切換,還可以在RTL階段優(yōu)化功率。
在物理設(shè)計過程中,對多個功率域有更好的功率規(guī)劃和功率排序。
在物理設(shè)計過程中有較好的斷電策略。
09
設(shè)計約束
設(shè)計約束基本上是設(shè)計規(guī)則約束和優(yōu)化約束。我們可以將這些約束考慮為模塊級約束、頂層約束和芯片級約束。
設(shè)計規(guī)則約束(DRC):我們可以將這些約束視為芯片制造商的規(guī)則,并應(yīng)予以滿足。在物理設(shè)計過程中,我們將進行芯片制造商的所有DRC檢查規(guī)則是否滿足。Layout is clean表示沒有DRC違規(guī)。這些約束主要是:
Transition
Fanout
Capacitance
優(yōu)化約束:這些約束在設(shè)計和優(yōu)化階段使用。這些約束主要是
Area
Speed
Power
主要使用Synopsys DC,我們將利用面積和速度約束,并將在各個優(yōu)化階段嘗試優(yōu)化設(shè)計。
物理設(shè)計工具,如Synopsys IC Compiler,利用面積、速度、功率的約束來滿足最終的約束,實現(xiàn)干凈的芯片布局。
-----END----