2021年7月7日 星期三

一些 IC 設計的注意事項

 

Macro 設計注意事項

1. schematic 完成後測量電流,得到各區域所需電流大小,決定電源網路所使用的金屬層以及寬度,盡量將電源網路做成 grid,並且水平與垂直方向所使用金屬層需考量到後續使用 EDA 軟體進行 place and route 的走線問題。

2. 垂直方向 power/ground 金屬層盡量低於水平方向金屬層,因為 standard cell 的 power/ground rail 是水平的,若垂直方向的 power/ground 高於水平方向,在水平方向的 strap下方的 rail 會被擋住,無法換層連接到 strap 或 ring 上。

3. 無論 power/ground 或 signal,出 pin 時盡量不用 M1。由於 rail 使用M1, macro 的 power/ground 若也從 M1 出 pin,將造成 power/ground 連上 ring 的一路上都無法鋪設 rail,將造成空間的浪費,也常在此發生 DRC error。signal pin 若從 M1 出 pin 容易被 rail 阻擋,造成後續無法繞線。

4. 用來做為 power/ground ring 和 strap 的金屬層,盡量就不用來出 signal pin,比方說,水平 M6 垂直 M5 若為 power/ground ring,從 macro 出 pin 時避免使用 M6 和 M5。第一個原因是在 place and route 時 power strap 規劃會很複雜,垂直 M5 power strap 很容易不小心撞到 macro 上下側的 M5 signal pin。第二個原因是,上下側的 M6 signal pin 連出來時會撞上水平 M6 power/ground,左右側的 M5 signal pin 出來時會撞上垂直 M5 power/ground,必須打 VIA 換層,容易造成 macro 邊緣發生壅塞。

5. 後續進行 place and route 時,由於走線較長會有比較大的負載,Macro 的輸出要用 buffer 將訊號推力加大,避免訊號 delay 和 transition time 太長。

IO Pad 順序

1. 放在靠近 corner 的 power/ground 可能無法接到 core power/ground ring 上,或是連接會不完全,建議在靠近 corner 的地方放給 IO pad 供電用的 VDDPST / VSSPST,或是擺放 signal IO pad。


create_custom_wire

 

在使用 IC Compiler 進行 place and route 時,有些 timing 或 load 比較在意的繞線,可以在進行 route 之前,使用 create_custom_wire 指令進行連接。

start_gui   # 開啟 GUI 介面
set_preroute_drc_strategy -no_design_rule -min_layer M1 -max_layer M6   # 暫時關閉 DRC 檢查
create_custom_wire -start_command           # 開始進行繞線
create_custom_wire -snap_to_track false     # 關閉自動對齊 routing track
create_custom_wire -vertical_layer M6       # 指定垂直連線金屬層
create_custom_wire -vertical_width 0.4      # 指定垂直連線寬度
create_custom_wire -horizontal_layer M5     # 指定水平連線金屬層
create_custom_wire -horizontal_width 0.4    # 指定水平連線寬度
create_custom_wire -nets net_name           # 指定 net 名稱,必須是真實存在的一條 net
create_custom_wire -add_point [list $START_X $START_Y]     # 起點座標
create_custom_wire -add_point [list $POINT1_X $POINT1_Y]   # 中間點座標
create_custom_wire -add_point [list $POINT2_X $POINT2_Y]   # 中間點座標
create_custom_wire -add_point [list $END_X $END_Y]         # 終點座標
create_custom_wire -end_points                             # 結束此條 net
create_custom_wire -end_command                            # 結束繞線
set_preroute_drc_strategy -min_layer M1 -max_layer M6      # 重新開啟 DRC 檢查

由於 create_custom_wire 需要有 GUI 介面才能進行,因此在一開始必須開啟 GUI。在繞線的過程中,ICC 會自動在轉折處打上VIA。


2021年7月2日 星期五

Abstract Generation

將 Full-Custom Design Layout 進行 abstract generation,抽取 pin metal layer、pin 位置等訊息後,得到的 lef 檔經過轉檔後可以給 IC Compiler 使用,進行 place and route。

Abstract Generation 流程

  1. 用 virtuoso 建立一個 library,並 import GDS
  2. 開啟 abstract &
  3. Open library
  4. Move top cell to block:Cells -> Move -> Block
  5. Import logic:加入 verilog module,須包含 in/out pins 定義
  6. Pin definition
  7. Extraction:所包含的 metal、via 會決定抽取出的資訊多少,太多可能會失敗
  8. Abstract
  9. Export LEF
  10. Convert LEF to CEL and FRAM





注意事項

  • Pin 的金屬要畫到 layout 的邊界
  • 出 signal pin 不要用 metal 1,會被 standard cells 的 power rail 擋住
  • 出 power pin 避免用 metal 1,容易與 standard cells 的 power rail 發生DRC error
  • 出 power pin 要遵守水平與垂直方向的金屬層定義 (HVH 或 VHV)
  • APR 進行時需設置 placement blockage 在 macro 四周,避免 standard cell 或 core filler 擺放時太靠近 macro 內部的 device,造成 DRC error





2021年5月18日 星期二

Virtuoso Layout 備忘錄

  • 顯示/隱藏 instance 內容
          Shift + f / Ctrl + f
  • 取消尺規自動貼齊
          k -> 滑鼠右鍵 -> smart snapping off
  • 畫斜的 path
          Create -> Shape -> Path (p) -> 按下F3
  • 在 LVS 時忽略 Dummy 電晶體 

          Setup -> LVS Options


  • Pin 用特定金屬的 pin layer (pn) 來標示
          Pin 不要打在尺規上,否則清除尺規時 pin 會一起消失


2020年10月30日 星期五

Compute-in-Memory

 
Crossbar Array (12x12) for Convolutional Layer
https://ieeexplore.ieee.org/abstract/document/7479502
- July 2016
- First demonstration of crossbar RRAM for conv operation

- Dec. 2017
- First demonstration of 1T1R array for conv operation

1T1R Array (Eight 2048-Cell Arrays) for CNN
- Jan. 2020
- Off-chip ARM core for ReLU
- 11,041 GOPS/W with 96% accuracy on MNIST

1T1R Array for Ternary Weights Binary Inputs CNN
- Aug. 2019
- FPGA for controller, activation function and pooling
- 16.95 TOPS/W with 97% accuracy on MNIST

1T1R Array (Eight 256x512 Arrays) for Multibit Input, Weight and Output CNN
- Jan. 2020
- 2-bit input, 3-bit weight and 4-bit output
- 53.17 TOPS/W for 1-bit input
- 21.9 TOPS/W for 2-bit input
- Accumulation parallelism: 9

1T1R Array (Eight 512x512 Arrays) for Multibit Input, Weight and Output CNN
- Feb. 2020
- 2-bit input, 4-bit-weight and 10-bit output
- 45.52 TOPS/W
- Accumulation parallelism: 16

1T1R Array (48 256x256 Arrays) for Multibit Input, Weight and Output CNN
- Aug. 2022
- Use voltage-mode sensing instead of current-mode sensing
- 8-bit input, 4-bit-weight and 10-bit output
- 43 TOPS/W for 1-bit input
- 40 TOPS/W for 2-bit input
- 16 TOPS/W for 4-bit input
- 7 TOPS/W for 8-bit input
- Accumulation parallelism: 256


Reference Survey Paper


2020年8月30日 星期日

喜歡的影視

 電影

雨人、心靈捕手、火線大逃亡、少年Pi的奇幻漂流、上帝之子、關鍵少數、悲慘世界、賽德克巴萊、新天堂樂園、與神同行、KANO、孤味、高年級實習生、流浪地球、葉問、遇見街貓BOB、心中的小星星、幸福綠皮書、末代武士、奇蹟·笨小孩、刺激1995、峰迴路轉、大賣空、分秒幣爭

動畫

可可夜總會、風之谷、龍貓、天空之城、魔法公主、魔女宅急便、神劍闖江湖

電視劇

通靈少女、茶金、用九柑仔店、警察榮譽、非常律師禹英禑、重啟人生、舞伎家的料理人

紀錄片

大地之吻、RBG不恐龍大法官、社子島少年行


2020年6月1日 星期一

Sheet Resistance


當我們要將設計好的電路進行製造之前,我們要進行 layout,也就是畫出電路的佈局圖。在進行 pre-simulation 時,電路模型是很理想的情況,不會考慮導線上的寄生電阻和電容,當我們進行佈局時,導線的長、寬、間距就會影響到這條導線的電阻和電容值。

一般導線的電阻值是由小方塊的導線電阻去計算出來的,這個小方塊的導線電阻稱為 sheet resistance。在製程文件裡面,通常會看到 sheet resistance 與 W/S 有關,其中 W 即是小方塊導線的寬度,而 S 則是導線與其他導線的間距。

導線之間的間距影響的應該是電容值吧?為什麼會影響電阻值呢?

原因與半導體製造的過程有關,一條導線是單獨存在,還是旁邊有其它導線存在,會影響製造時蝕刻的速率,造成金屬線的特性產生差異。

Reference