P&R --From 陌上風騎驢看IC

FLOORPLAN:後端

  • 作好floorplan要掌握哪些知識技能服務器

  • 遇到floorplan問題,大體的debug步驟和方法有哪些app

  • 如何衡量floorplan的QAdom

 

以上是驢神提的五大點問題。鄙人狠狠地反駁了驢神的提問。後端實現工做是一個不可分割的總體,最終能收穫什麼樣的果實,在你種下種子的那一剎那就已經註定了;至於中間的澆水施肥打藥,那都是循序漸進的工做了。整個後端過程就是一個混沌過程,floorplan是輸入,gds和netlist是輸出,中間是一團籠罩着混沌過程的迷霧。可是做爲一個後端熟手、老司機,理應作到眼中有碼心中無碼,當你完成你的floorplan的時候,中間的迷霧在心中自動消散,最後能獲得什麼樣的結果大體就有數了。ide

 

言歸正傳,floorplan做爲後端工做的起始點,是後段工做最關鍵的節點;floorplan的質量,直接決定了這個design的上限。那麼floorplan要作哪些事情呢?除了畫個框框,擺擺memory,畫畫powermesh,還有規劃placement blockage (hard/soft/partial), route guide (by layer/by percentage), cell guide (region/fence), 加physicalcell, 作一些preplace等等。作floorplan, 首先須要有良好的藝術鑑賞眼光!一個好的floorplan,必定是一個美的floorplan!只有每個細節都顯示出美感的floorplan,纔會是一個好的floorplan!工具

當咱們從頭開始作一個floorplan的時候,必定要意識到,floorplan直接決定了placement的質量,決定了route的質量;io的位置、memory的位置、cellguide這些,都是種子,是給EDA工具的種子,基於這些種子,工具才能作出一個placement結果;一樣,當placement 肯定的時候,route 的結果也基本決定了。因此在作floorplan 的時候,一個合格的工程師應該要掌握設計的數據流向,和工藝的基本特性。那麼floorplan的一些重要步驟應該注意哪些事項呢,簡單的說:post

  • IO/IP的規劃。首先要熟讀IO/IP的application note,掌握各個IP/IO的使用方法,有沒有特殊的繞線需求,有沒有特殊的place需求;對於頂層design,要了解IO的power domain對各類特殊cell的要求;對於blocklevel,若是須要自行決定io pin的位置,那麼能夠經過innovus的editPin功能很輕易的完成設置;ui

  • Memory位置的擺放。Memory 的擺放嚴重影響到 placement 和 routing 的質量。首先應該根據設計的數據流對 memory 位置進行粗調,而後應該根據 routing 的估算和drc的要求來進行微調。Memory 的位置對齊,出pin的方向,以及 channel 的寬度都是須要精細計算的;所以熟練使用 innovus 的floorplan toolbar的相關功能能夠極大的提升咱們作floorplan的效率;debug

  • Placement blockage的設置。根據設計工藝的特色,DRC的要求,在memory/IP/power domain周圍蓋上hard placement blockage是常見作法;在channel裏面根據timing的需求和繞線資源的計算,每每也要加上soft 或者 partial blockage;設計

  • Cell guide的設置。根據設計的數據流,咱們有時候會但願約束一些module擺放到特定的位置;innovus提供了三種不一樣的約束: guide/region/fence, 來知足不一樣的需求。Guide的使用每每須要對design特別瞭解,而且通過不少嘗試和分析才能獲得較好的結果;

  • Power mesh的規劃。記住一個原則:永遠優先選用細而密的 power mesh 而不是粗而稀的 power mesh;

  • 在完成floorplan以後,先用innovus檢查一遍是否有違規的地方;

  • 要對floorplan質量進行評估,最好的辦法就是直接跑一遍place+route。

若是floorplan沒有問題,就能夠正式進入到APR階段。EDA工具發展到如今這個階段,後端工程師的方法學也在不斷更新。傳統的後端方法裏面,place/cts/route 涇渭分明,丁是丁卯是卯;可是在innovus最新的early clock flow裏面,place階段就把cts/route通通嘗試了一遍;而useful skew的使用,和innovus cts engine的進化,使得user幾乎再也不須要去debug clock tree structure,再也不須要設置一大堆ignorepin/floating pin/exclude pin/stop pin之類(工程師要失業了!?);傳統地看clock tree skew的評價標準,在今天基於useful skew的工具方法學下面也再也不適用了。所以,正如前文所述,place/cts/route 歷來沒有像今天這樣緊密的結合在一塊兒,造成一個密不可分的總體。

 

經過innovus的early clock flow+useful skew的使用,咱們能比之前達到更高的frequency,而整個設計方法也變得更加簡單。那麼在這麼智能化的工具面前,咱們工程師還能夠作些什麼來幫助提升設計質量呢?

  • 適當的cell guide。如前文所述,適當的cell guide至關於種下了一顆優質的種子,使得最後能結出豐碩的果實;

  • 適當的path group。儘管innovus一般不須要設置不少path group,可是對於少數critical path,適當的path group 設置也是有益處的;

  • 適當的over constraint。由於earlyclock flow的使用,工具在 placement 階段就能看得史無前例的清晰;所以一個適當的over constraint能幫助工具取得一個最好的QoR,過猶不及。

那麼既然如今工具這麼智能,QoR這麼好,是否是咱們工程師就能夠把流程腳本往服務器一丟,而後等着看 post route 結果就行啦呢?No!永遠不要中止對中間結果的檢查:

  • 不停追蹤log file,有沒有什麼異常發生;

  • 檢查每一步的結果,包括但不限於:run time,  timing, route over flow / violations, drv vioaltions, clock tree latency, derate / uncertainty setting, crosstalk delay.

相關文章
相關標籤/搜索