JapaneseEnglish
自動配置配線

  1. 自動配置配線ツールの起動

    自動配置配線ツール(Synopsys IC Compiler)用のテクノロジファイルを探しやすいように、シンボリックリンクを作成しておく(すでに、シンボリックリンク rohm018_icc.tf が作成されている場合は飛ばしてよい)。テクノロジファイルは、レイヤー構成などの製造技術に関する情報をまとめたデータであり、CADツールによってフォーマットが異なる。

    vlsi> cd  ~/d
    vlsi> ln  -s  kyoto/templete/rohm018_astro_kyoto-u.tf  rohm018_icc.tf
    

    ICCディレクトリへ移動して、IC Compilerを起動。

    vlsi> setlic 
    Synopsys IC compilerに相当する番号を入力
    vlsi> cd  ~/d/ICC
    vlsi> icc_shell  -gui  -64bit (&は付けない)
    
  2. 回路の読み込み

    1. メニューより、File > Create Library... を実行し、下図の設定を行う。

      Create Library

    2. Technology fileは、右のボタンをクリックして、IC Compiler用テクノロジファイルrohm018_icc.tfを選択。
    3. Files欄右のAdd... ボタンをクリックして、"../kyoto/icc" にある配置配線ライブラリRO018_KYOTO_WO_FF(論理ゲート), RO018_KYOTO_FF(フリップフロップ), RO018_KYOTO_ADD(フィラー=空きスペースに挿入するパターン)を選択する。
    4. Open libraryにチェックマークを付けると、このフォームで作成したライブラリが、開かれる(チェックしないとライブラリを作るだけ)。チェックしなかった場合は、メニューより、File > Open Library... でライブラリLEDを開いておく。
    5. メニューより、File > Import Designs... で論理合成したネットリストを読み込む。Input formatをddcとし、Add... ボタンから、led.ddcを選んで、OKボタンをクリック。読み込まれると、レイアウトウインドウが起動する。

      Import Design

  3. 電源ピンと電源配線名

    1. レイアウトウインドウのメニューより、Preroute > Derive PG Connection... を選び、下記のように設定する。ここでは、電源名をVDDとVSSとしている。

      PG Connection

    2. 以下のコマンドを、プロンプトicc_shell> に入力して実行し、論理値固定の配線をVDDまたはVSSに接続させる。
      icc_shell> derive_pg_connection  -tie  -power_net  VDD  -ground_net  VSS
      
  4. 入出力ピン配置

    1. レイアウトエディタのメニューより、Floorplan > Write Pin/Pad Physical Constraints... を選び、Output file name: を指定してOKボタンをクリック(ex. led_pin_core.tcl)。
    2. led_pin_core.tclという入出力ピン配置の制約条件ファイルが作成されるので、テキストエディタで編集する。ここでは、例として用意した led_pin.tcl を使用してもよい。

      led_pin.tclの内容
      set_pin_physical_constraints -pin_name {WIDTH[3]} -layers {METAL3} -width 0.28 -depth 0.28 -side 1 -order 1 
      set_pin_physical_constraints -pin_name {WIDTH[2]} -layers {METAL3} -width 0.28 -depth 0.28 -side 1 -order 2 
      set_pin_physical_constraints -pin_name {WIDTH[1]} -layers {METAL3} -width 0.28 -depth 0.28 -side 1 -order 3 
      set_pin_physical_constraints -pin_name {WIDTH[0]} -layers {METAL3} -width 0.28 -depth 0.28 -side 1 -order 4 
      set pin_physical_constraints -pin_name {CLK}      -layers {METAL3} -width 0.28 -depth 0.28 -side 1 -order 5 
      set_pin_physical_constraints -pin_name {RST_B}    -layers {METAL3} -width 0.28 -depth 0.28 -side 1 -order 6 
      set_pin_physical_constraints -pin_name {OUT}      -layers {METAL4} -width 0.28 -depth 0.28 -side 2 -order 1 
      
      Pin Location

      右図矢印の方向に-order で指定した順に、入出力のピンが並ぶ。この場合、入出力ピンの位置は自動的に決定される。-orderの代わりに、-offsetで各辺の始点からの距離を指定することもできる。この例では、左側のピンは、METAL3、上側のピンは、METAL4で引き出すように設定している。-width(ピン幅)、-depth(ピン長さ)は、METALの最小幅の0.28umとしているので、必要に応じて変更する。

    3. 入出力ピン配置の制約条件ファイルを作成したら、レイアウトエディタのメニューより、Floorplan > Read Pin/Pad Physical Constraints... で読み込む。

  5. フロアプラン

    1. レイアウトエディタのメニューより、Floorplan > Create Floorplan... でフロアプラン(外形やセルの並べ方)を指定する。Space between core area and terminalsは、周囲に電源配線を敷くため、やや大きめにしておく。

      Floorplan

    2. OKまたはApplyをクリックすると、配置配線を行う白枠と、使用するセルの外形が表示される。ピン位置がシアン色で表示されるので、ピン位置が想定通りか確認する。

  6. 電源リングとストラップの作成

    1. レイアウトエディタのメニューより、Preroute > Create Rings... で、電源リングを作成し、電源リングから、内部のセルに電源を供給する。ここでは、長方形の電源リングを作成するため、Rectangular タブを選んで、下記の図のように設定を行う。
    2. Applyボタンをクリックすると、VDDとVSSの電源配線が表示されるので、気に入らなかったら、Undoボタンで消して、設定を変更してやり直す。
    3. うまく電源リングが作成されたら、Cancelボタンで終了。
      上手く電源リングが作成される前に、OKボタンを押してしまった場合は、電源配線やVIAをクリックして選択してから、右クリック、ポップアップメニューでDeleteを選んで、配線を消してからやり直す。

      VDD and VSS Rings

      Layout of VDD and VSS Rings

    4. コアの面積が大きい場合は、中心部のセルまでの電源配線抵抗が大きくなるため、電源コアにストラップを作成する。

      1. Preroute > Create Power Straps...を選び、下記のように設定する。この例では、縦に1本、VDDとVSSのストラップを作成している。
      2. Applyボタンをクリックすると、ストラップが表示されるので、Undoボタンで削除し、気に入った位置に来るように、X start, X increment等を調整し、上手くできたら、Cancelボタンで終了する。

        VDD and VSS Straps

    5. 電源配線にMETAL1、METAL2を使用するめ、セルが電源配線の下に配置されてショートしないように、次のコマンドをicc_shell>プロンプトに対して実行。
      icc_shell> set_pnet_options  -complete  {METAL1  METAL2} 
      
    6. ここまでで、 File > Save Design... により、いったん保存しておく。

  7. スタンダードセル配置

    1. レイアウトエディタのメニューより、Placement > Core Placement and Optimization... を選んで、スタンダードセルの配置を行う。
    2. 次のコマンドをicc_shell>プロンプトに対して実行し、Tieセル(論理値が変化しない配線)を挿入する。
    icc_shell> connect_tie_cells  -objects [get_cells * ]  -obj_type  cell_inst  -tie_high_lib_cell  ROHM18TIEHI  -tie_low_lib_cell  ROHM18TIELO 
    
  8. 電源配線

    1. レイアウトウインドウのメニューより、Preroute > Derive PG Connection... を選び、電源名とピン名を設定して、電源の接続情報を再設定する。
      IC Compilerはドライブ力の調整のため、配置の際にセルの差し替えを行うため、一部のセルの電源名が作成されていない状態となるため、スタンダードセル配置後に再設定を行う。
    2. スタンダードセル電源の配線を実行。レイアウトエディタのメニューより、Preroute > Preroute Standard Cells... を選択し、OKボタンをクリックすると、電源配線が実行される。

  9. 自動配線の準備

    1. 配線のノッチを修正するために、次のコマンドをicc_shell>プロンプトに対して実行。
      icc_shell> set_route_options  -same_net_notch  check_and_fix 
      
      Notch

    2. クロックツリーを一般配線と分けて作成するために、次のコマンドをicc_shell>プロンプトに対して実行。
      icc_shell> clock_opt  -fix_hold_all_clocks  -no_clock_route
      
      [参考] クロックの伝送系統をクロックツリーと呼ぶ。クロックの配線およびクロックドライバの配置には、正確なタイミング調整が必要なため、ディープサブミクロン以降のテクノロジでは、一般の配線とは別に行う。

    3. フィラーセルを挿入するため、Finishing > Insert Standard Cell Filler... を選び、次図のように設定する。
      Master cell name欄には、下記の7種類を設定し、Avoid fillers under layers 欄で、METAL1にチェックをしておく。

      Filler 1 Filler 2

      [参考] フィラーセルは、論理回路のスタンダードセルの間にできた空きスペースを埋めるセル。

      Master cell names (スペースで区切って入力)
      ROHM18FILLERX64 
      ROHM18FILLERX32 
      ROHM18FILLERX16 
      ROHM18FILLERX8 
      ROHM18FILLERX4 
      ROHM18FILLERX2 
      ROHM18FILLER 
      

    4. アンテナルールを設定するため、次のコマンドをicc_shell>プロンプトに対して実行。
      icc_shell> source  ../kyoto/icc/tcl/antennarule_tcl
      icc_shell> set_route_zrt_global_options  -default  true
      icc_shell> set_route_zrt_detail_options  -antenna  true  -antenna_on_iteration  2  -diode_libcell_names  {ROHM18DIODEX1 ROHM18DIODEX2 ROHM18DIODEX4}  -insert_diodes_during_routing true  -max_antenna_pin_count  -1  -port_antenna_mode  top_layer  -antenna_fixing_preference  use_diodes  -default_port_external_gate_size  0.45  -default_port_external_antenna_area  5 
      
      [参考] MOSFETのゲート絶縁膜の静電破壊を防ぐために、アンテナルールにより、ゲートポリシリコンに接続される配線長が制限されている。

  10. 配線の実行

    1. 次のコマンドをicc_shell>プロンプトに対して実行し、クロックツリー配線を行う。
      icc_shell> route_zrt_group  -all_clock_nets
      
    2. メニューより、Route > Auto Route... を実行し、概略の配線を行う。
    3. IC Compilerウインドウまたは、起動ターミナル(プロンプトが出ているウインドウ)のメッセージにエラーがないか確認する。下記のように表示されていれば問題ない。
      Total number of DRCs = 0
      Total number of antenna violations = 0
      Total number of voltage-area violations = no voltage-areas defined 
      

    4. icc_shell>プロンプトに対して、下記のコマンドを実行し、詳細配線を行う。
      icc_shell> route_zrt_detail  -incremental  true
      
    5. メニューより、Route > Optimize Wire Via... により、配線の最適化を行う。
      エラーが出る場合は、詳細配線と最適化を何度か繰り返す。エラーがなくならない場合は、フロアプランで、Core utilization を下げて、やり直すか、ピンの位置を分散させる。
    6. アンテナルール違反のチェックを行い、エラーがないことを確認。
      icc_shell> verify_zrt_route  -drc  false  -antenna  true
      
    7. レイアウトウインドウのメニューより、Preroute > Derive PG Connection... を選び、電源名とピン名を設定して、配置最適化後の電源配線の再設定を行う。
    8. レイアウトエディタのメニューより、Preroute > Preroute Standard Cells... を選択し、スタンダードセル電源の配線を再実行。

      P&R Result

  11. ダミーメタルの挿入

    1. レイアウトエディタのメニューより、Finishing > Insert Metal Filler... を選び、次のように設定。
      デンシティルール違反回避のため、METAL1〜METAL4にダミーメタルを挿入する。

      P&R Result

  12. 配置配線データの保存

    1. メニューより、File > Save Design... で、Save Allをクリックして、設計データを保存。

  13. ネットリストとストリームデータの作成

    1. icc_shell>プロンプトに対して、以下のコマンドを実行し、半導体メーカのレイヤー番号割り当てを設定する。
      icc_shell> set_write_stream_options  -map_layer  ../kyoto/template/A2GDS.map  -child_depth 99  -output_pin {text geometry}  -output_design_intent
      
    2. LVS用のネットリストのフォーマットを設定する。
      icc_shell> define_name_rules  verilog  -allowed  "A-Z0-9_"  -type net 
      icc_shell> change_names  -rules  verilog  -hierarchy 
      
    3. メニューより、File > Export > Write Verilog...
    4. Tapセル(接続用セル)などの回路図には必要ないセルを出力しないように、Output physical only cells のチェックをはずし、ファイル名は、設計および合成結果と重ならないようにする(ex. led_pr.v)。
    5. メニューより、File > Export > Write Stream... で、GDS-IIデータを出力する。
      拡張子は、strまたはgdsとする(ex. LED.str)。
      GDS-IIは、半導体メーカが受け入れるレイアウトデータ形式であり、CADソフトウエア間でレイアウトデータを受け渡す際にも使用される。

      Stream Out

  14. ICコンパイラの終了

    1. メニューより、File > Exit で、IC Compilerを終了。


[Table of Contents] [Next]


お問い合わせはこちらまで: kitagawa@is.t.kanazawa-u.ac.jp

Copyright (C) 2016- Akio Kitagawa, Kanazawa Univ.