DC~PT~FM~ICC學習筆記(注釋)_第1頁
DC~PT~FM~ICC學習筆記(注釋)_第2頁
DC~PT~FM~ICC學習筆記(注釋)_第3頁
DC~PT~FM~ICC學習筆記(注釋)_第4頁
DC~PT~FM~ICC學習筆記(注釋)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

BackendStudyNotes

DC綜合學習筆記-1-

一、verilog編寫-1-

二、DC綜合注意的地方-2-

1.在同一個電路中不能同時含有觸發(fā)器和鎖存器兩種電路單元。-2-

2.在電路中不能出現(xiàn)有反應的組合邏輯。-2-

3.不能出現(xiàn)用一個觸發(fā)器的輸出作為另一個觸發(fā)器的時鐘。-2-

4.異步邏輯和模擬電路要單獨處理。-2-

5使用的單元電路沒有映射到工藝庫中。-2-

三、DC綜合名詞解釋及腳本-2-

1.名詞解釋-2-

2環(huán)境腳本說明-3-

3.約束腳本說明-4-

4.查看報告命令-5-

一些綜合經(jīng)歷-6-

附錄-7-

1.DC的啟動腳本-7-

2.組合電路優(yōu)化腳本-8-

3.時序電路優(yōu)化腳本-9-

PTSTA學習筆記-11-

一、一些注意的地方-11-

二、常用的腳本-12-

附錄-13-

時序分析范例-13-

分析腳本(worst)-13-

分析腳本(best)-15-

Formality學習筆記-16-

腳本范例-16-

Encounter學習比擬-17-

一、理論-17-

ls布圖-17-

1.1、I/O單元-17-

12層次化設計-17-

2、布局-18-

2.1、電源規(guī)劃-18-

2.2、標準單元和模塊的放置-19-

3、CTS-20-

4、布線-21-

二、腳本運用-21-

三、需要抽取和保存的文件-23-

ICC學習筆記-23-

一、ICC根本流程-23-

二、文件準備-23-

三、腳本運用-24-

附錄:腳本范例-24-

啟動腳本范例-24-

Floorplan腳本范例-25-

無PAD腳本-25-

有PAD腳本-26-

Placement腳本范例-28-

CTS腳本范例-28-

Route腳本范例-29-

文件導出范例-30-

ECO腳本范例-30-

VCS學習筆記-33-

DFT學習筆記-33-

Tel語言學習筆記-33-4

Perl語言學習筆記-33-

時序?qū)W習筆記-33-

1、根本概念-33-

2、ON-ChipVariations(OCV)-37-

3、時間借用(TimeBorrowingorcyclestealing)-39-

4、DatatoDataCheck-40-

其他學習筆記-41-

一、低功耗學習筆記-41-

1.ClockGate-41-

二、信號完整性分析-42-

名詞解釋-42-

后端工程師具備的能力-43-

附錄-43-

DC綜合學習筆記

一、verilog編寫

在使用if語句的時候,一定得把條件寫全,不然會綜合出鎖存器。一個if語句只能跟一個

表達式。如果一個電路中出現(xiàn)兩種時序電路構造(鎖存器和觸發(fā)器),會增加電路的測試難度。

If語句對應的是選擇器。開語句隱含這優(yōu)先級別,這和case語句不同。

Case和If語句一樣,都是用于選擇輸出的,但是case語句隱含的是平行的電路構造。當

case語句的條件沒有完全譯碼時,會引起具有優(yōu)先級的電路構造。

在使用always語句描述組合電路時,在該語句中讀入的所有變量都需要出現(xiàn)在事件列表

中,否那么可能會得不到期望的結果。[//synopsysfull_caseparallel_case,如果case語句

不寫全可以加這個keyword]

在使用aIways語句描述時序電路的時候,都會引用觸發(fā)器,使用“<="來對變量賦值,

這種賦值叫做非阻塞賦值(相當是順序語句,得前一句賦值完后才執(zhí)行下一句,如果是觸發(fā)器

的話,向后延時一個時鐘周期)。

在verilog語言中,一個reg類型的數(shù)據(jù)是被解釋成無符號數(shù),integer類型的數(shù)據(jù)是被解釋成

二進制補碼的有符號數(shù),而且最右邊是有符號數(shù)的最低位。

keyword—//synopsys

//synopsysasync_set_reset"reset"

e.g.:moduleSP2reset/SP2IBl,IB12SBSPen,

SP2IBlen);

inputSPen,SP2IBlen,reset;

input[2:0]IB12SP;

output[2:0]SP2IB1;

reg[2:0]sp;

//synopsysasync_set_reset"reset"〃加這句說明和不加這句說明綜合結果是不一樣的,最好是加上這么一句

always@(SPenorIB12SPorreset)

begin

if(reset)

sp=07;

elseif(SPen)

sp=IB12SP;

end

assignSP2IB1=(SP2IBlen?sp:'bz);

endmodule

二、DC綜合注意的地方

1.在同一個電路中不能同時含有觸發(fā)器和鎖存器兩種電路單元。

2.在電路中不能出現(xiàn)有反應的組合邏輯。

3.不能出現(xiàn)用一個觸發(fā)器的輸出作為另一個觸發(fā)器的時鐘。

4.異步邏輯和模擬電路要單獨處理。

5.使用的單元電路沒有映射到工藝庫中。

三、DC綜合名詞解釋及腳本

L名詞解釋

link_library設置單元或模塊的引用。前面必須包含土,表示DC在引用實例化模塊時

首先搜索已經(jīng)調(diào)進DCmemory的模塊。link_library{"*"slow.db}

target_library為最終要映射的庫。

syntheticjibrary的庫在初始化DC的時候,不需要設置標準的DesignWare庫

standard.sldb用于實現(xiàn)Verilog描述的運算符,對于擴展的DesignWare,需要在

syntheticjibrary中設置,同時需要在link」ibrary中設置相應的庫以使得在鏈接的時候

DC可以搜索到相應運算符的實現(xiàn)。

路徑的劃分:DC綜合及優(yōu)化都是基于路徑的,路徑的劃分為:路徑的起點為輸入端

或者觸發(fā)器的時鐘端;路徑的終點為輸出端或觸發(fā)器的數(shù)據(jù)端。

2.環(huán)境腳本說明

set_operating_conditions[-minmin_condition][-maxmax-condition]

[-minjibraryminjib][-maxmaxjib]指定DC優(yōu)化時使用的工作壞境,其中工作

壞境的指定必須在庫中指定,或者在linkjbrary中的其中一個庫中指定,如果不指定

工作壞境,DC會自動搜索link」ibrary中的第一個庫的工作壞境最為優(yōu)化是所使用的

工作壞境。使用get_attributelibnamedefault.operating_conditions來看工作壞

境。

-max的選項用于指定電路最大延遲分析〔分析電路是否滿足觸發(fā)器建立時間setup

time的要求〕的工作環(huán)境

-min的選項用于指定電路最小延遲分析〔分析電路是否滿足觸發(fā)器保持時間hold

time的要求〕的工作環(huán)境,該選項不能單獨使用,必須與-max同時使用。

如果不指定用于分析最小延遲的庫,那么只使用-max中指定的庫用于電路的延遲分

析。

-minjibrary的選項指定用于電路最大延遲分析的工藝庫。

-maxjibrary的選項指定用于電路最小延遲分析的工藝庫。

e.g.set_operating_conditions-maxtypical_lv2c25

set_wire_load_model-namesmicl3_wl20

set_wire_load_modetop(這個是設置模塊之間的線負載,在編譯后可用)

set_drive默認值為0表示驅(qū)動能力無限大(表示電阻值)set_drive0{elk,rest)

set_driving_cell用一個具體的電路來模擬輸入延時set_driving_cell-lib_cellBUFX2{a,b}

在電路的優(yōu)化階段,輸入端口的驅(qū)動能力用于計算輸入端口到門電路的延遲,一般來說,輸入端

口的驅(qū)動能力可以按照以下公式影響延遲:

Time=arrive_time+drive*net_load+connect_delay

set_driving_cell-lib_cellBUFX2-librarytypical_lv2c25[all_inputs]所有的輸入端口

(portload=2.5+3*Ioad_of(tech_lib/IV/A)

set_loadport_loadall_outputs())一起用的命令

3.約束腳本說明

set_max_capacitance用于設置輸出單元允許的最大電容負載set_max_capacitance2.0

test-設置設計test的最大電容負載是2.0

set_max_capacitance2.0a--設置端口a的最大電容負載是2.0

set_max_transition是指電壓從10%VDD上升到90%VDD所需要的時間(或下降),這個值長表示電路速度

慢。用法同上。

set_max_fanout語法同上。

(create_clock-period1-nameelk[get_portselk]-wareform{00.5}周期為Ins的方波。

set_clock_uncertainty0.3[get_clocksclk](時鐘的偏移))

)不對其端口綜合。

set_dont_touch_network{restzclk,clr

set_dont_touch不進展優(yōu)化的模塊、端口??梢杂胹et_dont_touch口false來取消前面的設

置。

set_input_delay2.3{ab}(組合電路)set_input_delay2.3-clock[get_clockselk]

[aIl_inputs](時序電路)

set_output_delay語法同上。

set_max_area0

(set_max_delay5-fromaset_min_delay2-froma)用于完全組合電路。

set_dont_use{typical_lv2c25/1*}表示不調(diào)用以I開頭的cell。

create_clock-nameelk-period2這是設置的虛擬時鐘用于組合電路。

dcprocheckrun.tcl檢查synopsystel腳本命令。

setjoad[expr[load_ofmy_lib/invlaO/A]*3][get_portsoutl]輸出端口outl并歹I」驅(qū)動三

個inv的A

set_driving_cell-lib_cellBUFX2-pinY[get_portsoutl]如果沒有說pin那么默認為celI的輸出pin

report_timing-delaymax|minmax看setup;min看hold的

4.查看報告命令

查看用了那些查看每個用的功耗

report_cellcelloreport_power-netcell

查看的、、

report_netcellfanoutfanincapacitancesresistance.

setverilogout_show_unconnected_pinstrue設置在.synopsys_dc.setup里面,主要是為了輸入編譯

后的的沒有用到的

verilogcellpino

report_port返回所有加在輸入輸出端口的約束條件。

reset_design刪除當前所有屬性和約束。

remove_input_delay刪除input_delay設定的延時。

remove_design刪除當前設計.

report_path_group報告當前設計中個路徑組的信息。

group_path-namecombo-from[alljnputs]-to[all_outputs]設定一^關鍵路徑。

set_critical_range2[current_design]這樣設置將會使相對于關鍵路徑2ns范圍內(nèi)的路徑群

都進展優(yōu)化。

group_path-nameclkl-critical_range0.3對于路徑組的關鍵范圍可以使用參數(shù)來指定。

set_dont_use{typical/*)表示不用typical這個庫。

一些綜合經(jīng)歷

set_clock_uncertainy-setup0.5-hold0.25[get_clocksCLK]在布圖前和后階段都指定一定的余量,

這樣可使芯片少受制造工藝偏差的影響。

set_max_delay5-from[alljnputs]-to[all_outputs]主要用在組合電路上

set_generated_clocknameckll-sourceCLK-divide_by2生成源CLK時鐘的2分頻

只有當通過編譯達不到目標時,才使用

compile-map_efforthigh0

時鐘樹的綜合除了使用set_dont_touch_networt外還可有先用report_net查看高扇出的線

網(wǎng)再使用balance_buffer命令點對點對其進展緩沖,或者用compile-in_place進展原地優(yōu)化

(IP0),并將compile_ok_to_buffer_during_inplace_opt開關設為false.

report_transitive_fanout-dock_tree(-fromreset)檢查無意識的時鐘門控(復位)

read_sdf*.sdf讀入延遲文件

read_parasitics*.pef讀入RC文件(spf)

使用迫使在適當?shù)奈恢貌迦?/p>

disconnect_netcreate_cellconnect_netDCcello

在布圖后將不用設置set_wire_load_model和set_wire_load_mode用實際的延遲和電容電

阻代替了;也不用設置set_clock_latancy和set_clock_transition用具體時鐘樹代替(使用

set_propagated_clock[get_clocksCLK])

report_timing-from[alljnput]-to[all_registers-data_pins]

如果綜合完發(fā)現(xiàn)不能使用write命令來寫verilog而出現(xiàn)assign報錯提示那么可以使用:

set_fix_multiple_port_nets-all來解決這個問題。

附錄

1.DC的啟動腳本

#####################################################

##desetupfile##

#####################################################

setsearch_path[list../core./verlog./script]

setlinkjibrary{*typical_lv2c25.db}

settargetjibrary{typical_lv2c25.db}

setsymboljibrary"yourjibrary.sdb"

setsynthetiejibrary""

read_file-formatverilog./verilog/cntlO.v

current_designcntlO

setverilogout_show_unconnected_pinstrue

aliasrp"report_power"

aliasrt"report_timing"

aliasra"report_area"

aliasrc"report_constraint-all_violators"

aliash"history"

2.組合電路優(yōu)化腳本

link

set_operating_conditionstypical_lv2c25

set_wire_load_model-namesmicl3_wll0

set_wire_load_modetop

set_drive_cell-lib_cellBUFX2[alljnputs]

set_max_capacitance2.0test

set_max_capacitance18test

set_max_fanout15test

set_input_delay2.0[alljnputs]

set_output_delay1.5[all_outputs]

set_max_area0

set_max_delay2.0-froma

set_max_delay1.0-froma

setjoad1{s,co}

#set_drive0reset

uniquify

compile

rp>>./reports/power.rpt

ra>>./reports/area.rpt

rt>>./reports/timing.rpt

rc>>./reports/constraint.rpt

write-formatverilog-hierarchy-output./outputs/adder.v

write-formatddc-hierarchy-o./outputs/adder.ddc

write_sdf./outputs/adder.sdf

write_sdc./outputs/adder.sdc

3.時序電路優(yōu)化腳本

link

create_clockelk-period5-waveform{02.5}

set_dont_touch_network[get_clockselk]

set_fix_hold[get_clockselk]

set_clock_uncertainly0.2[get_clockselk]

set_clock_latency-source0[get_clockselk]

set_clock_latency1[get_clockselk]

set_input_transition0.3[alljnputs]#ifyouwantdontafixvalue,useset_driving_cell

set_clock_transition0.3[all_clocks]

set_operating_conditions-minjibraryfast_lv32c0-minfast_lv32c0-maxjibrary

slowlv08cl25-maxslowlv08cl25

】d」qu!叫suco/Modaj/,<<a

idj-BuiiuiVlJodaj/-<<1」

idieaie/ijodai/'<<ej

]d」」3Mod/i」od3」/,<<dj

uoiieziiuijdo-Xjepunoq-e|idiuoD

Xjinbiun

[sinduPne]£-Quo^sue」廠xeuOas

[sinduPne]乙jnouej.-xeiu-ies

0eQje-xeiu-ies

{ap'Hsaj}oaAup-jes#

[sindino-||e]*>pop-10uiiu-Xe|ap-indino-j9S

[sjndino"||e]>ip>pop-lxeiu-Xe|ep-indino-ias

[sinduFne]不力叩-乙0UIUJ-Xe|ap_induri9s

[sinduF||e]>|P>pop-lxeiu-福?叩一)ndu「13s

[sjndino-||e][“"加:1”0乙。80八6。0,p-peo|]peopjas

[[>|psjjocTjeB]

[sjndur||e]uo!pe||OD_ujO4_0AOUjaj]LO/TXzHCl/S乙。80八工一州。同)o-eAup]aAup-jes

[MPsuod^sB][,A/乙XzIDg/S80ATMO|S.p-SAup]SAIJP^SS

___

..SIDiius,,Ajejq!|-11000000resje3DU3Jspj11peo|3JiMjss

do】spouj—peo「叫/vQss

/v\o|sXjejqi|-01|AA-£TD!UJSemeu-|epoiu_peo|-9J!/v\"ies

write-formatverilog-hierarchy-output./outputs/.v

write-formatddc-hierarchy-o./outputs/.ddc

write_sdf./outputs/.sdf

write_sdc./outputs/.sdc

PTSTA學習筆記

一、一些注意的地方

report_transitive_fanout-clock_tree報告出的"unknown*的clocknetwork可能計算出錯誤的

延遲,report’eference查看cell的屬性也可看使用了多少register。當出現(xiàn)這樣的問題我們可以使

用Stamp模型來解決或者使用virtualclock旁通clkbuf

(create_clock-nameVCLK-p2-w{01}find(pin,U49/NQ)

set_clock_latancy0.2-sourceVCLK

setdeal_netfind(net,VCLK))o

在時序分析中,經(jīng)常會檢查setup/hold、removal/recovery和minpulsewidth.,然而有些會是

這使用

untested0report_analysis_coverage-status_details{untested}-sort_byslack

-check_type{setup|hold}去查看。報告結果可能會出現(xiàn)"no_clock",找到原因。一般是時鐘沒有

到達,或者case_analysis分析;上面修復后會有一局部hold也修復了這是因為register的elk沒有

clock。然后還有一局部hold是untested可能會是對input/output沒有min_delay的約束。報告

結果可能會出現(xiàn)"no_paths/z,這意味著endpoints沒有約束。這可能是設置了set_false_path或

者set_multicycle_path的原因先使用report_timing查看。

二.常用的腳本

report_analysis_converage查看設計所有的setup.hold等情況的比例

sw叩_cell<celllisttobereplaced><newdesign>用這個命令去用一樣的cell去代替,這個代替只

是虛擬代替。如果設計符合要求了,還得手動去修改

netlistso

set_disable_timing制止個別單元的時序弧有用。

有些違例路徑共享的共同的葉單元的能力。這稱為瓶頸分析且通過使用命令report_bottleneck來進

展查看。

如果一個時鐘延遲是3±0.5那么指令為

create_clock-period10[get_portsCLK]

set_clock_latency2.5-source-early[get_clocksCLK]

set_clock_latency3.5-source-late[get_clocksCLK]這個指令只能是sourceclock

set_min_pulse_width-high1.5[all_clocks]

set_min_pulse_width-low1.0[all_clocks]

report_min_pulse_width這個主要是在有時鐘門控的時候

set_clock_gating_check-setup0.5-hold0.4[get_clocksCLK]

report_clock_gating_check

set_disable_clock_gating_checktodisablespecificclockgatingchecksinadesign

report_exceptions-ignored

checkjiming當設置了時序例外后我們檢查是不是有用了用

set_case_analysis0(oredge(rising))[get_portssei]一般用于選擇器

report_case_analysisremove_case_analysis[get_portssei]

report_delay_calculation-fromUl/A-toUl/Z用于計算cell或net的時序弧

當使用read_sdf讀入延遲文件時報沒有某端口時序弧錯時使用read_sdf-path和read_sdf

-strip_path檢查,以及report_annotated_delay-list_not_annotated查看。

檢查所有的類型,像和

drive_clocksclockgatedclocksinternalgenerateddockmuxedclockso

然后用

report_clocko

附錄

時序分析范例

pt_shell>report_timing-pathfull_clock

PointIncrPath

clockelk(riseedge)0.000.00

clocksourcelatency0.000.00

clk(in)0.000.00

S_2/Z(BUF2)0.40*0.40f

A_reg[l]/CP(FD1)0.02*0.42

A_reg[l]/Q(FD1)0.12*0.54f

result_reg[0]/D(FD1)0.001.96r

dataarrivaltime1.96

clockelk(riseedge)4.004.00

elk(in)0.000.00r

S_l/Z(BUF1)1.06*5.06r

result_reg[0]/CP(FD1)0.01*5.07r

librarysetuptime-0.80*4.27

datarequiredtime4.27

從紅色標記看出clockskew(uncertainy)是1.07-0.42

分析腳本(worst)

read_verilog./verilog/pr_cntl0.v

current_designcntlO.v

set_operating_conditionsslow_lv08cl25

sjoie|oiA-||e-曾!叫sucDRods」

[sjnduF||e]乙uopisue」「xeuFgs

[sjnduTne]g】nou呼xeuOos

0eejexeiu13s

{>[p'HS3」}oaAup-ies

[sjn力廿|但]>|p>pop_10UILU-Xe|ap_indino-i9s

[sjndino-||e]>|p>|Dop-O'lxeiu-Xe|ap-jndino-jes

[sjnduF||e]>|p>pop-乙0uim-Xe|ap-jnduries

[sjnduF||e]>|p>pop-0,1xeiu-Xe|ap-jnduries

[sjndurne]乙ouoii!sueji.-jndurjes

[sindino"||e]LA/乙XANI/G乙。80八1一根。Ejo-peo|]peopas

[[>IPsjjod-ie6]

[sinduF||e]uo!pe||OD_iuo4_aAOiuaj]["人/TXANI/S乙TP80A1—MO|S”jo-aAup]aAup^as

[>ipsjjod-i96]匕人/工XANI/S乙T。80AT—MO|S”p"0Aup]aAup-jes

||aD-6u!Aup-iasasn^nieAXIJ.e】uop】UBMnoXJI#

“ps>|Dop_j06]>pop-p31e6edo」d—i3s

[Hsa」sjjod-je6]>|Jo/v\ieu-qDnoj_juop_jes

“ps>|Dop_je6]>|Jo/v\ieu-qDno;-juop-jes

{To}cujopAe/v\-乙poued->|p>|Dop_0jeajD

j3ds7v\-0T]U3/3|!j—】ndu!/.Diiiseued-peaj

4ps,oiluD/eiy-jndui/-Buiiuii-peej

{>|p43S3」}oaAup-ias

[sjnd}.no"||e]>|p>pop-rouiiu-Xe|ep-jndjno-jes

[sjndino-||e]>|p>pop-O'Txeiu-Xe|ep-indjno-ies

[sinduF||e]>|p>pop-乙,0UIUJ-Xe|ep-induFies

[sjnduFne]>|p>pop-0,工xeiu-Xe|ep-jnduFies

[sjnduF||e]乙0uoijisuejj-jnduFjes

[sjndjno-||e][?A/2XANI/SZ1380AI-MO|S?p-peo|]peo「】as

[“psjjod-j96]

-:)A-MOS_-

[sjnduF||e]uoipa11ODIUOAOLUaJ][1IA/IXANI/S2180IIH)o9Aup]aAuptas

[>IPsiJ0d-j36][?A/IXANI/S21380AI-MO|S?4O_9Aup]SAup^ss

l|eD-6u!Aup-iesesn'anieAxye】uop】UBMnoX41#

“ps>|Dop_ja6]>|DO|D-peie6edojd-jes

[jesejsjJOcTia6]不0MlstTqz)no廠luoplas

“ps>|Dop_je6]"」OM:131rlpnoCuop—ias

{10}LUJopAe/w-乙pouod-"p>|Dop_aieejD

jmds,q_()DU:)/3|!門ndu!/,邛!sejecTpeaj

jps,o口LD/可!門ndu!/,Guiiui^'peoj

0兀£八工一4%suoR!puo:T6u呷3d。一郎

A'OIIUDu6isap-iuejjnD

A-QXJUD-jd/6o|ueA/-6o|!」3A-peai

Qsaq)切摩勢3

set_max_area0

set_max_fanout5[alljnputs]

set_max_transition2[alljnputs]

report_constraint-all_violators

Formality學習筆記

腳本范例

setsearch_path"./core./rtl./netlist"

set_svfdefault.svf

read_verilog-r"cntlO.v"

set_topcntlO

read_db-ifast_lv32cO.db

read_verilog-ipr_cntlO.v

set_topcntlO

match

verify

Encounter學習比擬

一、理論

L布圖

1.1、I/O單元

I/O單元主要是保證信號從芯片內(nèi)部傳遞到外部時其路徑最短,同時要求從I/O單元關鍵引線到封裝

點時,防止信號穿插,方便封裝基板的制作,減少基板上的走線層數(shù)。當芯片的輸入輸出單元較多而內(nèi)部

邏輯單元較少且一般為I/O單元限制型設計時,那么一般選用狹窄的I/O單元;當芯片的輸入輸出單元較

少而內(nèi)部邏輯單元較大時,那么一般選用寬的I/O單元。但設計子模塊時,I/O單元的形式為接點(pin)而

不是接口(pad)。I/O單元分為信號接口和電源兩種類型信號I/O單元關鍵是選擇驅(qū)動的大小,而電源I/O

單元需要重點考慮的是供電電源的數(shù)量計算和擺放。電源I/O單元分為:模擬的、數(shù)字的、隔離數(shù)字模擬

供電的。數(shù)字I/O供電單元分為給I/O單元供電的和給核內(nèi)標準單元供電的。給核內(nèi)單元供電的I/O單元

的數(shù)量m根據(jù)芯片的功耗、I/。單元的供電電壓以及電流來估計:

其中叫為芯片的平均功耗;勿a4勿ad為供電I/O單元的電壓和最大電流波為調(diào)整因子,min(l~2),

給單元供電的供電單元輸了也由多種因素決定,單元的功耗、輸出。單元的驅(qū)動

max(5~10)oI/OI/OI/

能力等,經(jīng)歷做法是給I/O單元供電的單元數(shù)量與給輸出信號端口的比例為1:(5~10)的關系,與給內(nèi)核供

電的I/O單元的數(shù)量是1:2的關系。供電單元位置擺放還需要考慮電壓降(IRdrop)的大小,一般需要在電

源環(huán)設計完成后,做功耗分析,從而選擇一個最正確的布局。

1.2、層次化設計

層次化設計大致可分為三個步驟:芯片頂層設計規(guī)劃、子模塊分割(partition)與實現(xiàn)以及芯片頂層組裝實

現(xiàn)。布線通道按照形狀分有典型的T形通道和L形通道兩種。當兩個子模塊在芯片內(nèi)部的空間跨度比擬大

時,有時還需要定義直通(feedthrough)布線通道,從而滿足時序和布線的要求。

2、布局

2.1.電源規(guī)劃

供電網(wǎng)絡設計主要內(nèi)容有:

(1)電源連接關系的定義,又稱為globalnetconnect

芯片核內(nèi)局部的電源環(huán)設計,又稱為

(2)powerringo

(3)芯片內(nèi)所包含的硬核(RAM、ROMandIP、COT)的電源環(huán)設計。

芯片核內(nèi)縱橫交織的電源網(wǎng)格的設計,又稱為

(4)powerstripe0

(5)芯片的供電單元與電源環(huán)的連接,又稱為I/O單元power。

(6)芯片內(nèi)部電源網(wǎng)格和硬核電源環(huán)連接局部的設計,又稱為ringpins.

(7)將標準單元的供電網(wǎng)絡與核內(nèi)電源網(wǎng)格總連接設計,又稱為followpins。

供電單元電源環(huán)的設計,又稱為單元

(8)I/OI/Opowerring0

電源網(wǎng)格是為了平均分布電流,縮短電流回路,在有效減小電壓降的同時,防止由于電流分布不均時

造成的熱點(hotspot)現(xiàn)象以及電遷移(EM,electromi-gration)為問題。電源環(huán)的設計主要有3個參數(shù):

電源環(huán)的寬度以電源環(huán)的間距d以及電源環(huán)的對數(shù)&估算方法為:

其中勿為芯片的峰值電流;S為廠家工衣庫給出的電流密度的上限;〃為電源環(huán)對數(shù);Z為調(diào)整因子。

電源網(wǎng)格(powergrid)通常是均勻分布,電源條線(powerstripes)通常是不規(guī)那么或不均勻分布。

其中powerstripes的寬度Wstripe_V與縱向powerstripes的間距S1成正比關系,同理可得

Wstripe_H與S2的關系。對于Wstripe_V和Wstripe_H的設定,有以下幾個經(jīng)歷規(guī)那么:

(1)Wstripe_V的分布間隔一般取垂直分布間距(pitch)的整數(shù)倍,一般最大情況下不超過最小

NAND2X1寬度的4倍。

(2)Wstripe_V的最大值取標準單元庫中NAND2X1寬度的4倍。

(3)Wstripe_H的取值一般是標準單元高度的整數(shù)倍,通常選擇1~2倍。

在確定了powerstripe的寬度后,需要計算其間距Sl、S2。在估

算出內(nèi)部縱/橫供電金屬寬度根底上,我們可以求出功耗為P的總

電流ItotaL

total匕假設圖中A點有5%的電壓降,那么位于

VDD

W

Lop=1down=hotal加調(diào)A點其有效電阻分別為

IT—H

隈#="Iright-totalZZ777

假設N為縱向powerstripes的對+數(shù),M為橫向powerstripes的對數(shù),那

么其值分別為:

RR

N_八stripe-V加_八stripe-H最后得出縱向電源網(wǎng)格的間距S1和橫向電源網(wǎng)格的間距S2分別是:

^effect-VRe第ct-H

S1=W/N,S2=H/MO

在數(shù)字和模擬混合供電,布圖前一般需要作如下幾點考慮:

(1)模擬模塊的工作區(qū)域一般放置于芯片的某個角落。

(2)模擬區(qū)域需要單獨供電,給模擬信號供電的I/O單元應放在模擬模塊別上,盡量縮短供電線路的

長度。

⑶在模擬模塊的周圍布置保護隔離環(huán)(guardingring),從而實現(xiàn)數(shù)字信號和模擬信號電源之間的隔

當設計中存在被關閉的電壓域,為了不使關閉區(qū)域與非關閉區(qū)域相互影響,必須在所有的接口處添加

隔離單元(isolationcell),并要:1檢查出所有需要添加格力網(wǎng)絡的信號端口;2在相應的接口處添加隔離

單元。

2.2、標準單元和模塊的放置

展平式設計包括兩個局部:1模塊的擺放與布局。2標準單元的擺放和優(yōu)化。

層次化布局有三個過程:1先分配子模塊,這是與展平式布局最大的不同之處;2作子模塊級的布局,

他的方法與展平式一樣;3所有子模塊完成后在頂層組裝,其布局方法與展平式一樣。層次化設計中子模

塊的約束類型一般有三中:向?qū)Ъs束(guide)、區(qū)域約束(region)和限制約束(fence),其中向?qū)Ъs束為模塊

指定向?qū)Х秶?,屬于該模塊的標準單元可以放置在該向?qū)Х秶鷥?nèi),也可以放置在向?qū)Х秶?。不屬于該?/p>

塊的標準單元可以放置在該區(qū)域之內(nèi)。區(qū)域約束中,屬于該模塊的單元只能放在指定的區(qū)域內(nèi),該區(qū)域還

可以放置其他模塊單元。限制約束中,屬于該模塊的單元只能放在指定的區(qū)域內(nèi),該區(qū)域不可以放置其他

模塊單元。

在標準單元布局優(yōu)化后,需要對設計進展擁塞(congestion)分析、靜態(tài)時序分析、噪聲分析和電源分

析從而確定布局的好壞。布局目標:1各模塊的位置相對確定;2滿足設計規(guī)那么要求,出時鐘網(wǎng)絡,其

他高扇出網(wǎng)絡都插入了驅(qū)動單元。3芯片的時序和供電較為良好。

在布局完成后需要評估的目標主要有:擁塞(congestion)程度(當實際需要的通道超過先游的通道的

5%時,外表擁塞程度比擬大)、延遲和時序、供電預估(可以引用VCD文件,對芯片的功耗、IRdrop及

EM進展評估。由于時鐘樹還沒綜合功耗會偏小)。

如果一個fence或region的EU值到達或超過了100%,placementchangesthefenceorregion

為了防止這種情況,在進展之前,如有必要,應確保核對和更新值。

toaguideoplacementEU

總密度Coresize的計算:Coresize=(standardcellarea/coreutilization)+(macroarea+halo)

標準單元密度StdCellsize的計算:StdCellsize=(standardcellarea/StdCellutilization)+(macro

area+halo)

一旦使用StdCellsize定義floorplan,那么Core的大小將會變小。

3、CTS

時鐘信號通常是整個芯片中有最大扇出、通過最長距離、以最高速度運行的信號。時鐘源通常有RC

時鐘、晶振時鐘和鎖相環(huán)(PLL)時鐘。時鐘信號的延遲(latency)又稱為插入延遲(insertdelay),它包括時

鐘源延遲和時鐘網(wǎng)絡延遲。次兩種延遲分別用命令表示為:

set_clock_latency2.0-source[get_clocksCLK]

set_clock_latency2.0[get_clocksCLK]

時鐘信號的抖動又稱為時鐘的不確定性。時鐘的偏差(skew)指的是同一時鐘到達該時鐘域內(nèi)的不同存

放器之間的時間偏差。它是衡量時鐘樹性能的重要參數(shù),時鐘樹綜合的目的就是為了減小偏差,它的值有

正負兩種。增加存放器的時鐘延遲而并不影響時鐘樹的功能叫做時鐘樹的有用偏差。

時鐘樹綜合對同步電路實現(xiàn)的優(yōu)點是電路構造簡單明朗,具有較好的魯棒性,驗證簡單。缺點是較大

的時鐘在物理實施時具有一定的難度,封裝電感和電源電阻會在時鐘跳變瞬間產(chǎn)生很大噪聲。異步電路不

規(guī)那么但速度快,功耗低。

門控時鐘技術是降低功耗最常用的方法。門控時鐘可以用create_clock和generated_clock來定義。

門控時鐘

create-clock-namelcd_gating_clk-period10-waveform{05}[get_pinsmain_gate/Y]o

上的setup并不是關注的焦點,而hold的問題那么是需要特別關注的。時鐘樹是芯片中頻率和翻轉率最

高的,降低時鐘樹的噪聲(主要是耦合電容)非常重要,其方法有:1局部電源地保護;2增加驅(qū)動能力;3

高層金屬多倍間隔走線。

4、布線

消除布線擁塞、優(yōu)化時序、減小耦合效用(coupling)、消除串擾(crosstalk)、降低功耗、保證信號完

整性(SI,signalintegrity),預防DFM問題和提高良品率等是衡量布線質(zhì)量的重要指標。全

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論