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