00——Phsical Design數字後端
-
- 一、數字後端流程
-
- 例:一個完整的設計
- 1.DATA preparation——資料準備
-
- ·Pin list file→PPA file——port資訊:IO的順序、擺放、位置
-
- Floorplan 平面圖:擺放IP、IO
- ·Wire Bond and Finger Map
-
- Wire Bonding 接口文檔
- Finger Map
- ·LEF(Library Exchange File) 庫交換檔案
-
- LEF Header(Tech File)
- LEF Cell View(Milkyway參考庫(ref檔案))
- ·Gate level Netlist 門級網表——Verilog
- ·RC tech file(RTL Compiler)
- ·timing constraints(SDC)
- Timing Library(NLDM,CCS,ECSM)
- First Place and Don't Touch
-
- First Plac——部分IP需要優先考慮
- don‘t touch
- 2.FloorPlan & Place——平面布置圖&擺放(自動)
-
- power、IO & blocks
- Floorplan adjustment 調整
- Power Distribution(power plan)——配電
- Placement
- 3.Timing 優化
-
- 原因
- 方法
- 4.Clock Tree Synthesis(CTS)
-
- 原因:為了同步所有的flip-flops(觸發器)
- 目标
- 5.Routing 繞線
- 6.Verification驗證
-
- STA Setup/Hold
- Formal Function check
- SI Glitch check
- Power Simulation/Low Power check
- DRC/LVS
- DFM
一、數字後端流程
前端從RTL→Netlist→PR後端(後端從scan netlist開始)
例:一個完整的設計
module add_decoder_x (mem0,mem1,cs,en,add);
output mem0,mem1,cs;
input en;
input [31:30] add;
reg mem0,mem1,cs; /*register是寄存器的意思*/
always 0 (add or en)
begin
(mem0,mem1,cs)=3'b0;
casex({add,en})
3'b101 : mem0 = 1'b1;
3'b111 : mem1 = 1'b1;
3'b0?1 : cs = 1'b1;
endcase
end
endmodule
gds.lib放在一個檔案夾裡
1.DATA preparation——資料準備
·Pin list file→PPA file——port資訊:IO的順序、擺放、位置
Floorplan 平面圖:擺放IP、IO
布圖規劃是應用闆設計的展現。
·Wire Bond and Finger Map
Wire Bonding 接口文檔
這個文檔是design house和封裝廠的接口。它描述了設計者對于晶片的封裝要求。封裝廠會根據這份文檔完成封裝設計,其結果需要design house的設計工程師确認。
Bonding Map中含有的資訊包括,封裝類型、die size、scribe line和seal ring寬度,還有PAD opening的尺寸和坐标。這些坐标通常是後端工程師從版圖中提取的,前端工程師需要計算一下是否合理。最後還有最重要的,就是wire bonding的資訊。它指定了每一個PAD opening需要bonding到哪一個finger,哪些PAD之間需要做bonding,哪些PAD需要bonding到substrate,哪些bonding是需要多根wire的。multi-wire bonding有助于減小電感,抑制SSN,當然其缺點是增加了成本。
Finger Map
- Ball assignment and bonding consider sufficient S.I. and power quality.
-
Pad assignment correspond to substrate design rule.
引腳排列方式符合design rule
·LEF(Library Exchange File) 庫交換檔案
LEF Header(Tech File)
手動放置位置,寫了用到的層和金屬
LEF、Timing lib在IP庫裡都會帶
LEF Cell View(Milkyway參考庫(ref檔案))
隻描述到M1,底層無所謂,還會寫上PIN的位置
圖形是由下面的代碼轉化的
·Gate level Netlist 門級網表——Verilog
展現與标準單元的關系,是從前端給的。
參考:什麼是門級網表
·RC tech file(RTL Compiler)
用來提取電容檔案,是工廠給的
·timing constraints(SDC)
設計限制(時序限制),是前端給的
對信号的限制
create_clock -name {CLKR_TSTCLK_v0} -period 10 -waveform { 0.000 5.000 } /*> -period 10 —— 周期10
> -waveform{0.000 5.000} —— 上升沿0-5*/
set_multicycle_path -through [list \
[get_pins AUX_TOP/U_EXTHOSTBRIDGE_AUX/WDATAFIFO/G13299/Y] \
-to [get_pins AUX_TOP/U_EXTHOSTBRIDGE_AUX/F2/G13445/Y] ] -setup -end 2
Timing Library(NLDM,CCS,ECSM)
定義power、pin、電容等限制
pin(Y) {
• direction : output ;
• function : "(A&B)" ;
• max_capacitance : 1.3113 ;
• max_transition : 2 ;
• min_capacitance : 0.001 ;
• internal_power() {
• related_pin : "A" ;
• when : "B" ;
• fall_power(pwr_tin_oload_7x7) {
• index_1("0.03, 0.0654369, 0.189828, 0.427371, 0.797451,1.31672, 2");
• index_2("0.001, 0.024571, 0.10731, 0.26531, 0.51147, 0.85686, 1.3113");
• values("0.0219344, 0.0224672, 0.0229511, 0.0230905, 0.0231408, 0.0231651, 0.0231768",\
• cell_rise(tmg_ntin_oload_7x7) {
• index_1("0.03, 0.0654369, 0.189828, 0.427371, 0.797451, 1.31672, 2");
• index_2("0.001, 0.024571, 0.10731, 0.26531, 0.51147, 0.85686, 1.3113");
• values("0.09922, 0.138288, 0.25111, 0.461, 0.787618, 1.2452, 1.84572",
First Place and Don’t Touch
First Plac——部分IP需要優先考慮
優先考慮一些特殊要求,比如:
- 距離相等
- 資料不需要同時到達
- 時鐘和資料都from/to IP子產品
IP指設計好的可以移植到别的晶片中的子產品(可以是電路或者是版圖),能夠買賣
don‘t touch
1.SDC檔案無法限制此類路徑。
2.通過手動逐個打開,set_max_delay設定最大延遲,或set_min_delay設定最小延遲來檢查延遲。
IP子產品的的timing library幾乎都是假的。
3.對于我們來說,develop a mix model flow to signoff the interface非常重要
2.FloorPlan & Place——平面布置圖&擺放(自動)
power、IO & blocks
1.根據PPA檔案放置IO和IP。
2.微調每個SRAM和子產品位置。
3.優先考慮first place關鍵cell。
4.power planning。
floorplan的目标是:
◆ 實體blocks的分區設計。
◆ 決定IO pads的位置、power pads的數量/位置和配電。
◆ 最小的congestion(擁塞)和關鍵path delay。
◆ 使晶片盡可能緻密。
撐面積解決問題,chip小供電最好
Floorplan adjustment 調整
布局→place→嘗試繞線→時序收斂
由routable和Timing判斷Floorplan合不合理
- Floorplan:微調SRAM位置,檢查電源plan,調整晶片size,添加布線金屬等
- Placement:建立place guide,設定子產品密度,保留布線通道等
Power Distribution(power plan)——配電
把需要供電的吃到電,減少壓降
RDL和metal7用線連起來
配電的目标是:
•連接配接電源pads和邏輯單元的VDD/VSS之間的金屬線。
•将壓降降至最低
•盡量減少地彈(ground bounce)
•VDD壓降和VSS地彈之和小于5%*VDD(靜态)
Placement
stdcell的place是工具自動完成的,placement是把stdcell拼起來
1.平面圖決定stdcell的放置位置。
2.每個cell等高不等寬。
3.放置在row上。
placement的目标是——
❑ 确定cell的位置。
❑ 最小的timing violation and congestion(時序沖突和擁塞)。
3.Timing 優化
原因
解決timing violation,修複wire load線負載模型 (預估stdcell之間的連線)和真實的RC loading的差距
前端拿來的是理想的,後端有真實繞線
實體層的面積 placement遠大于線負載區域
方法
如何進行timing優化
定時優化的任務包括:
- 首先,清除max、load max、transition沖突。(會導緻大的delay)
- 清除setup/hold的time violation沖突。
- 最大限度地減少關鍵path的延遲。
- 觸發器脈沖(flip flop pulse)寬度檢查。(最小寬度)
- clock負載檢查。(高電平)
Timing優化的辦法包括:
-
調整up/down cell的大小
——同一段功能不同size的stdcell,驅動不夠是以要增大減小size
- 插入緩沖區(buffers) ——距離過遠
- split loading分載 64→32*2這樣分裂
- 重構/複制
4.Clock Tree Synthesis(CTS)
原因:為了同步所有的flip-flops(觸發器)
将單個clock net轉換為多級緩沖樹,因為cell的驅動能力
前端不需要buffer(緩沖)→後端需要接太多flip-flops(觸發器→為了時鐘同步→同步delay)。為了增加驅動必須接buffer降loading
目标
- 縮小clock skew——最大和最小的delay的內插補點(越小越好,能容易的修複setup/hold的時序沖突 time violations)
- clock transition time最小——couple noise(耦合噪音)變小;clock jitter(時鐘抖動)變好
- 更少的clock緩沖來降低power功耗——功耗占full chip的20%~30%
- 最小的clock buffer level——降低OCV和clock jitter時鐘抖動
5.Routing 繞線
stdcell之間;ip和stdcell之間有連線在netlist裡,在這步接M2接stdcell的pin,自動繞線,如果不通就幹預
繞線的目的是:
❑ 用金屬線實體連接配接邏輯單元。
❑ 讓連線繞線最短和面積最小化。
❑ 盡可能減少圖層的變動次數以建立連接配接。
6.Verification驗證
STA Setup/Hold
28HLP sta标準
電壓是0.9*C
Formal Function check
SI Glitch check
Power Simulation/Low Power check
DRC/LVS
DFM
52.sram的位置會影響擺放、timing和繞線
53.如何擺放sram 一般是一大片出現
每個module關系比較近的要靠在一起 按G找一個group的
54.congestion解決不掉就要重來
55.時序收斂
優化時序之前要
看timing report
分析擺放
解決congestion問題
完成CTS之後要确認你的verilation
56.時序收斂的方法
57.繞線資源緊張會發生short
不能發生congestion issues