APR - Floor Plan + Power Plan === 這個階段有很多截圖,步驟很多記得多多儲存,避免重做。 Verify === 共有三個Verify的項目,前兩個需要在每一動後做檢查,若檢查即時的話有時可以回復上一動後再修改避免重做。 Verify DRC --- 這是用來檢查有無DRC error。 1. Verify->Verify DRC  2. Apply  3. 像是拉follow pin會遇到via打在邊邊上的問題,可以用將問題排除  Verify Connectivity --- 這步是檢查線有無斷掉之類的問題。 1. Verify->Verify Connectivity  2. 在前期拉power時可設定Special Only,Nets named為VDD與VSS,如下圖  3. 但在後期routing完後需與下圖一樣都設為All做檢查,這部分我遇到的錯都是多到無法手動修改,只能重來  Verify Process Antenna --- 1. Verify->Verify Process Antenna..  2. Apply  3. 如果沒過的話在NenoRoute裡做ECO Route   步驟 === 設定core的尺寸 --- 1. Floorplan->Specify Floorplan..  2. Ratio為1 : 晶片會是正方形 Core Utilzation為0.7 : core佔chip的70%面積,數字越小晶片越大,數字越大繞線越困難,若後續繞線timing為負,可調整這個數值。 Core to Left、Top、Right、Bottom為240 : core 距離上下左右io的距離,在這段距離中會填core ring。  3. 結果  初步擺放SRAM(可略過) --- 1. Floorplan->Automatic Floorplan->Plan Design  2. OK  3. SRAM會被整齊放進core中,因為後續還是會手動擺SRAM,所以也可以不用auto擺。  Create Power Ring --- 1. Power->Power Planning->Add Ring  2. 我使用的是40nm製程,power ring只設了一組,可視需求增加  3. 結果  Connect Pad Pin --- 1. Route->Special Route  2. 這三頁都要設定  3. 會用綠線(實際上是從M3到M1)將core pin與core ring連接  移動SRAM位址 --- 1. 擺放工具,有水平垂直等距、靠上下左右對齊等等的方便工具可以使用  2. 可以放大看SRAM的腳,黃邊為訊號腳位,因為core中間是top module,我RTL的寫法是將訊號腳位面對core中心會有較短走線,而紅的長邊是power pin用來連接後續的block pin。 3. 因為SRAM四邊之後會繞block ring,所以擺放位址需避免四邊碰到pad pin,避免via打在一起,會有DRC error。 紅黃是block ring,擺放過程中要一直拉大用尺看看會不會碰到。  4. 上下左右也盡量對齊,以利stripe經過,打完stripe像是下圖。  5. SRAM擺放完的結果。  固定SRAM位址 --- 1. Floorplan->Edit Floorplan->Set Instance Placement Status  2. Fixed  Halo --- 1. Floorplan->Edit Floorplan->Edit Halo  2. placement halo  3. routing halo  4. 做完後SRAM周圍會現一圈粉色的,沒出現的話切換圖層看看。  Blockage --- 1. Floorplan->Edit Floorplan->Create Placement Blockage  2. 我使用了Soft Type,設定完後用滑鼠在core上拉線,拉完也可使用做微調  四種的差別: * Hard Blockage:禁止任何元件進入 * Partial Blockage:允許一定比例的元件進入,用在降低placement密度的區域 * Soft Blockage:只限制標準元件的放置,用來保留clk或Critical Path的通道 * Macro-Only Blockage:只允許macro進入,禁止標準元件進入 3. 結果  Halo v.s Blockage --- Halo跟Blockage的目的都是避免小元件進入這個範圍或是繞線,以減緩setup time與hold time voilation,差別是Halo是動態的,若SRAM移動Halo會一起移動,而Blockage是絕對位置不會跟著移動,但因為SRAM位址已經固定下來了,所以這兩個的功能是如下,Blockage範圍較大,使用的是soft type,當optimize時可以將cell擺進去與繞線。  Create block ring --- 1. Power->Power Planning->Add Ring  2. 點選要包的SRAM,可以一次選多個 3. 外圈箭頭要依照SRAM在core中的位址決定長的方向  4. 結果  5. 結果(全)  Connect block pin --- 1. Route->Special Route  2. 需要看SRAM的power pin位址決定長block pin的方向,例如power pin在上面的就選Top Side,否則會SRAM上佈滿power造成後續的走follow pin被打斷,請記得每一動都需要Verify DRC和Connectivity。  3. 結果會像是長了一排黃色小牙齒一樣  Create Stripe --- 1. Power->Power Planning->Add Stripe  2. 打的層數要跟power ring垂直,垂直或水平先打皆可,使用Absolute功能一段一段打  3. 結果  Connect Follow Pin --- 1. Route->Special Route  2. SRoute  Add IO filler(with io pad版做的步驟) --- 1. 這步驟是在io之間填充,如果沒有空隙的話就不會填,會從最大填到最小,可source add_io_filler.tcl,內容如下 ```=tcl=1 addIoFiller -cell PFILLER20 -prefix IOFILLER addIoFiller -cell PFILLER10 -prefix IOFILLER addIoFiller -cell PFILLER5 -prefix IOFILLER addIoFiller -cell PFILLER1 -prefix IOFILLER addIoFiller -cell PFILLER05 -prefix IOFILLER addIoFiller -cell PFILLER0005 -prefix IOFILLER -fillAnyGap ``` Import IO File(without io pad版做的步驟) --- 請參照[這裡](https://hackmd.io/@linda8832825/SysQO8u30) Add Well Tap --- 1. 如果是40nm以下才要加,指令如下 ```==tcl=1 addWellTap -cell FILLTIE4_A9TH -cellInterval 120 -checkerBoard ``` 2. 效果  Placement --- 這步是將cell擺上,共三個指令,第三個最久,記得做之前將CPU開到8 1. `createBasicPathGroups –expanded`  2. `get_path_groups` 這四個都出現才是對的  3. `place_opt_design` 邊optizat邊placement --- :::danger 如果我有哪裡寫錯或是做不好的請告訴我 :woman-bowing: 這步驟超多很辛苦對吧 :persevere: 完成之後小休一下回到前面進行[下一步](https://hackmd.io/3R8wxZE4QdG0k99m57vIaA?both#Clock-Tree-Synthesis),你超棒的:facepunch: :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up