標籤

2016年8月25日 星期四

第一次做APR就上手 - 建國初步 - data preparation (synopsys icc flow)

要開始一個design, 我們需要什麼東西呢?

你會發現data排山倒海而來....

但其實我們需要得很簡單.

design 部分
1. gate level netlist (Verilog or VHDL)
2. sdc 
3. block FRAME

前兩個東西決定了我們做的design到底是什麼, 用了什麼cell, 又有怎樣的timing 限制, 
後面則決定了你在layout上的形狀

library 部分
1. stdcell/IP ref milkyway
2. stdcell/IP timing db
3. process tluplus

milkyway是提供PnR tool需要的FRAM view (什麼是FRAM view?)
db則是提供tool算timing的info (lookup timing table, pin info, library constraint-> max tran, max cap...e.t.c.)
tluplus則是估算你routing pattern的R & C 值

.....有什麼想到或講的不清楚的, 我會想到就補充上來

2016年5月18日 星期三

GBA v.s. PBA


原本是想說這個網誌要試著從頭開始講述APR這份工作, 以及概念.

後來發覺太難了, 打算改成遇到什麼問題值得分享就post上來,

作為自己職涯上的一種紀錄.

這個問題是最近被一個朋友問到的,

"什麼是GBA? 什麼是PBA?"

這是一個STA模型的問題, 千萬不要問我為什麼不是NBA!

APR的STA (靜態時序分析)是一個非常重要的部分,

在講PBA & GBA之前其實應該先提到STA的概念,

下次再補上STA好了. 先來說說這兩個名詞.

GBA : Graph base analysis

PBA : Path base analysis

一般而言, 看STA我們都是看GBA.

PBA將會用在GBA解不掉的path, 看在PBA的mode下是否pass.

從一個圖來看GBA以及PBA的差別


上圖這個例子, 在GBA mode時,

第一個OR gate會因為input B的影響而使用最差的結果去做假設

同理, 藍色的NAND gate也會因為input A使用最差的結果去做假設

這樣下來我們會發現, 其實GBA mode太過於悲觀, 並不符於實際,

而在PBA mode時,

在每一個gate將會採計實際上 input -> output 的 slew.

結果也不會那麼悲觀.

這樣衍伸了一個問題,

為何STA都預設使用GBA mode去看timing path呢?

不是用PBA才較符合現實嗎?

原因則是GBA只要掛上timing arcs,

在runtime上遠低於PBA, 尤其在越大越複雜的design越能看出runtime的差別.

於是在實務上我們偏向使用GBA mode去做timing fix.

在真正修不下來的path才run PBA mode去確認是否可以放掉.


2016年4月5日 星期二

What's APR?

APR, 數位IC設計流程的後段,

英文的全名是Auto place and route, 有很多其他的講法, 像是Physical design, chip implementation, PnR,


這樣的職位大多出現在什麼地方呢?

主要是chip design(ic design house), design service(智原, 創意), EDA vendor(synopsys, cadence), 或者foundry (台積, UMC)也會有一個這樣的team,
作一些andvance process test chip, 以及IP.

那這樣的工作內容是什麼呢?

以synopsys flow來說,
dc/netlist -> icc/data prep -> icc/floor plan -> icc/place -> icc/cts -> icc/route -> starrc/parasitic extraction -> pt/STA signoff -> calibre/PV signoff

實現gate level netlist to gds, 或者 RTL to gds, 實際的工作分際線由公司決定.

由於有很多的專有名詞, 一般不太容易向對科技產業陌生的人解釋這份工作的內容,

所以我們先針對IC產業有一些了解的人, 試著來敘述看看,

首先, 我們看來一個IC design的flow

spec -> design -> layout -> foundry -> package/test

因為離得比較遠, 我們先將layout之後的過程省略, 並將IC分成Analog IC以及Digital IC,

AIC
spec -> circuit design -> fully layout -> gds

DIC
spec -> HDL design -> APR -> gds

於是我們可以發現一個簡單的類比,

analog designer 做 circuit design, 稱之為 analog frontend
digital designer 做 HDL design, 稱之為 digital frontend

ic layout engineer 做 fully layout, 稱之為 analog backend
APR engineer 做 APR, 稱之為 digital backend

因此我們也會聽到有些人說APR就是數位的layout,
這句話其實不能算是錯誤的, 因為兩種職業都是產出gds讓foundry去製造,

我覺得不同的原因是
兩種職業的know how是有點差異的.

這要說到 AIC與DIC的不同,
AIC -> 精準的, 客製化的
DIC -> 元件模組化, 較大design scale

做個比喻,

假如今天我們要堆一座城堡,

AIC就像是用黏土一刀一筆的去刻畫出一座城堡
DIC則是用樂高堆疊出一座城堡

於是任何function的IC大多都可以採用AIC/DIC的做法去做,
差異只是出來的效率,cost會大不相同.

像是你如果想在城堡的窗戶雕龍刺鳳, 因為積木模組化的關係可能做不到這樣的精密.
要是你想要10座這樣的城堡, 那積木所需的時間就會大幅的少於用手工去刻劃
(因為模組化更容易導入自動化)

好吧~ 我知道這樣解釋很多人還是聽不懂,
所以後來朋友問我的工作內容我都直接說我是在倒茶水的小弟 T_T