今天給大家聊一聊芯片后端的兩種設(shè)計(jì)思路:展平式設(shè)計(jì)(flatten)和層次化設(shè)計(jì)(hierarchical)史飞。其實(shí)在很多工程項(xiàng)目中應(yīng)該都有類似的設(shè)計(jì)方法學(xué)降淮,對(duì)于芯片設(shè)計(jì)來說也不例外赋咽,這兩種設(shè)計(jì)思路決定了我們的芯片將會(huì)如何物理實(shí)現(xiàn)颗圣。
展平化的設(shè)計(jì)方法是一種自下而上的設(shè)計(jì)思路句伶,這種設(shè)計(jì)方法會(huì)一下子導(dǎo)入所有芯片中所需要的元件蚂且,而每個(gè)元件都要經(jīng)過充分的驗(yàn)證,確保各個(gè)元件的功能無誤毛俏。而后將所有這些原件組合炭庙,構(gòu)成整個(gè)芯片系統(tǒng)。工程師在設(shè)計(jì)的時(shí)候煌寇,可以隨意調(diào)動(dòng)任意一個(gè)原件焕蹄,也就是說所有元件都是看得到的,沒有所謂的黑匣子阀溶。其實(shí)大家就可以單純地理解為就是可以看到芯片所有內(nèi)容的完整的設(shè)計(jì)腻脏。
層次化的設(shè)計(jì)方法是一種自上而下的設(shè)計(jì)思路。對(duì)于前端設(shè)計(jì)來說银锻,它會(huì)首先分析整個(gè)芯片要實(shí)現(xiàn)的功能永品,而后劃分(partition)為不同的功能模塊(block),在劃分的時(shí)候只關(guān)心每個(gè)模塊的輸入輸出徒仓,不考慮模塊內(nèi)部具體是怎么構(gòu)成的腐碱。之后再考慮每個(gè)模塊要如何設(shè)計(jì),模塊的設(shè)計(jì)也可以分為展平化和層次化掉弛,最終最低一級(jí)的模塊一定是要展平化設(shè)計(jì)的。對(duì)于后端實(shí)現(xiàn)來說可以完全遵循前端給的劃分好的block喂走,但如果前端給了展平式的網(wǎng)表殃饿,后端同樣可以劃分不同的block來做,這樣對(duì)后端來說也是層次化設(shè)計(jì)芋肠。對(duì)于每個(gè)block乎芳,都會(huì)劃分出它自己的netlist、sdc、lef奈惑、lib吭净、upf等等。每位工程師可以負(fù)責(zé)單一的一個(gè)block肴甸,在block內(nèi)部進(jìn)行展平化設(shè)計(jì)寂殉,保證時(shí)序收斂,沒有DRC等等原在,而后由一位工程師在top層將所有block聯(lián)系起來友扰,最終做到整個(gè)chip功能正常。
展平化設(shè)計(jì)的優(yōu)點(diǎn)是可以看到chip中所有cell的信息庶柿,更容易做時(shí)序收斂村怪,出現(xiàn)的violation也相對(duì)更好解。缺點(diǎn)是這種方法對(duì)于大型design來說,計(jì)算量過大句灌,而且人員不好分配喉恋,很難充分利用資源,導(dǎo)致設(shè)計(jì)周期偏長(zhǎng)梭域。要知道芯片設(shè)計(jì)中,在保證良率的同時(shí)也要追求速度维苔,當(dāng)然這些都是資本的考量了碰辅。層次化設(shè)計(jì)最大的優(yōu)點(diǎn)就是可以并行處理多個(gè)block,可以充分利用公司資源介时,大大減少了設(shè)計(jì)周期没宾。然而需要在partition初期就對(duì)block進(jìn)行充分的預(yù)估,做好timing的裕量(timing budget)沸柔,可能會(huì)出現(xiàn)有些block好做循衰,有些block難做的情況,甚至一些block無法做到時(shí)序收斂褐澎。這個(gè)時(shí)候就需要重新調(diào)整分配会钝,或者進(jìn)行局部的重新綜合。而最終signoff的時(shí)候也是要flatten的看結(jié)果工三,相對(duì)比較復(fù)雜一些迁酸。
而對(duì)于現(xiàn)在2021年末,幾乎所有design都是所謂的大型design了俭正,很少有公司還會(huì)純粹采取展平化設(shè)計(jì)思路奸鬓,層次化設(shè)計(jì)已經(jīng)漸漸成為主流。并且隨著design越來越復(fù)雜掸读,還會(huì)出現(xiàn)三層的設(shè)計(jì)結(jié)構(gòu)串远,這也對(duì)我們后端設(shè)計(jì)工程師帶來不小的挑戰(zhàn)宏多。
微信公眾號(hào):偉醬的芯片后端之路