APR,全稱為auto placement & route。目前已經基本成為芯片後端設計的代名詞了,因為在芯片後端設計中,可以說placement and route是至關重要的兩步,并且在EDA tool如此發達的今天,靠人工一個個手擺cell,再去繞線是不現實的。因此使用工具可以說是現代芯片設計的必須的事情,所以我們經常說做芯片後端,有的時候就是指代做APR,或者說做芯片物理設計等等。當然需要明确的是,芯片後端所涵蓋的内容不僅僅是APR,隻是APR是其中一個重要的部分了。
可能在早期,我們還會說P&R,placement&route。但現在,幾乎沒有誰可以繞過auto,也就是利用tool。所以漸漸的大家的稱呼也就變成APR了。那麼,它的具體含義是什麼呢?從名字就可以看出,中文就是擺放和繞線,實際上,APR大緻可以分為4個步驟:布局floorplan、單元擺放placement、時鐘樹綜合CTS(clock tree synthesis)、繞線route。下面我就進行一下簡單的介紹。
Floorplan,布局規劃。要知道,我們在進行任何項目的時候,都要首先對所要做的工作有一個大緻的藍圖規劃,比如建高樓需要先想這個樓要在哪建,建幾層,建多高等等,芯片的規劃也不例外。我們首先要确定芯片的面積,确定core和die的尺寸,io的位置,bump的位置,先把macro ip什麼的擺好。Floorplan有的時候也可以說包含了powerplan,我們一般在這一步就要畫好PG,确定芯片的電壓域,保證PG和macro連接正常。Floorplan是至關重要的一步,它深刻影響了之後的芯片性能會是什麼樣子。這裡介紹的比較簡單,以後我可能會專門各個stage都來寫一篇。
Placement,單元擺放。這一步我們特指标準單元的擺放,io單元和macro等都是在floorplan階段擺放完成的。我們在導入netlist和各個cell的物理庫文件後,不論是icc2還是innovus,初始狀态這些cell全部是疊在一起的,都在一個位置。而placement最重要的任務,就是把這些cell擺好,不能有重疊,不能有legalization的問題,不能有FE DRC。這就很類似于一堆散亂的樂高積木,我們要把它一個個的在地上鋪好。在place的時候,并不僅僅要求把cell鋪開就行了,這個時候就要考慮cell之間的繞線了,盡量把聯系比較緊密的cell放在相近的位置啊,但又不能放的過于密集導緻density過高出現congestion的問題啦,power能不能供上電啦等等,需要考慮的因素有很多。而它的核心任務就是擺放這些标準單元。
CTS,時鐘樹綜合。我們的芯片設計中包括組合邏輯和時序邏輯,時序邏輯器件包括flip-flop和latch。所有的時序邏輯器件都需要接時鐘信号,時鐘信号就像芯片的心髒一樣,芯片的運轉就在它的跳動中産生。因此,我們的net就可以分為一般的信号線signal net和時鐘線clock net,時鐘網絡上的cell可以成為clock cell。顯然,我們要對芯片的timing有約束要求,那麼保證一個良好時鐘是非常重要的,因此clock net的優先級要比signal net的優先級高,所以我們要在route之前先做CTS。而CTS也不單單指clock net的繞線,它要生成一個clock tree,就需要插入一些buffer、inverter,其最基本的目的,就是想要保證時鐘信号到達每個時序邏輯器件的時間都相同,也就是clock skew要等于0。先不深入太多了,總之CTS就是來生成一個時鐘網絡并且把clock net繞好。
Route,繞線。特指signal net的繞線。這一步需要繞的線就多如牛毛,需要避開前面的PG和時鐘線,不能有open、short,不能有drc,在能繞通的情況下要考慮timing、power等。要知道,有的時候可能是繞不通的,可能是從floorplan開始這裡的繞線資源就很緊張,或者placement擺了太多cell在附近,這樣就必須回到floorplan或者placement重新來過,這樣就很費時間。要知道現在的電腦來跑一個芯片,每個stage可能要十幾個小時,所以在每個stage跑完适時進行check是很有必要的。有的時候可以繞通,但是會産生很長的detour,這也是我們不願看到的。現在的芯片越來越複雜,之前的教材可能寫的繞線層有五六層,現在的芯片多的繞線可以達到十幾層了。如何在這些紛繁複雜的十幾層裡找到千萬根線想要繞的位置,實在是一件非常難的事,更别說要附帶考慮那麼多其他的優化因素了。而這一切都已經必須由EDA工具幫我們完成,借助現代計算機的強大性能,還有不斷優化的算法,我們就可以得到相對比較好的route結果。其實我一直很佩服那些EDA工具,總是想知道他們具體的算法是什麼,不過這就屬于非常機密的東西了。
Route結束也不代表APR結束了,一般還會做插filler的動作,後面就是交給signoff了。好了,這樣就非常非常簡略講了一下APR要做的事,可能文中出現了一些不懂得名詞,還有一些概念,以後我也會寫文章慢慢一個個講的。希望對大家有所幫助。
微信公衆号D:偉醬的芯片後端之路
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!