PCPU物理設計 ~マクロレベルの配置配線~ 第0.1版 ※わからない箇所があれば、指摘してください。それを反映することによって、誰もが使えるものになるでしょう。
チップ設計の流れ ネットリストを作成する 機能検証を行う レイアウト設計を行う レイアウト検証を行う ポストレイアウト検証を行う RTLからの論理合成 機能検証を行う レイアウト設計を行う 各部品をマクロ化する レイアウト検証を行う DRC, LVS, アンテナルールチェック, 等価性検証 etc ポストレイアウト検証を行う レイアウトデータを提出する チップの動作検証を行う 当該文書の範囲
環境構築 PCPUプロジェクト一式 ROHM0.18um京大ライブラリ /home/m-saito/ToolsTutorial2011:これをコピー tar cf – ToolsTutorial2011|(cd;tar xpf -) ※以降PCPUディレクトリをPCPUHOMEと呼ぶ ROHM0.18um京大ライブラリ ST環境:/home/m-saito/langを各自homeにコピー {PCPUHOME}/rohm018lib/Makefile_globalsettingsの編集 MYLIBDIR={PCPUHOME}/rohm018lib/ STDIR={各自HOME}/lang/perl/ST-6.3 {PCPUHOME}/PR/Makefile_localsettingsの編集
ネットリストを作成する(論理合成) 環境設定:ツールを動かすためのパス等 設計ディレクトリに移動 % source /opt/vdec/setup/vdec_tools.cshrc 設計ディレクトリに移動 % cd {PCPUHOME}/PR/synthesis Design Compilerを実行し,ネットリスト(pcpu_net.v)を作成 pcpu.vは、source/に配置 % make pcpu_net.v 同じディレクトリで % grep Error pcpu.log なにも出ないことを確かめる
レイアウト設計(配置・配線) 配置・配線の準備 マクロの配置・配線 ・ピン位置の指定 ・マクロのフロアプラン,ストラップの生成 ・配置・配線スクリプトの生成 ・ツール(IC Compiler)の立ち上げ ・配置・配線スクリプトの実行
配置・配線の準備 ピン位置の指定 マクロのフロアプラン,ストラップの生成 位置決めファイルの生成(作成済み){PCPUHOME}/PR/rtl/pcpu.pinを参照 ピン位置指定スクリプト(pcpu_pin.tcl)の生成 synthesisディレクトリに移動 % make pcpu_pin.tcl マクロのフロアプラン,ストラップの生成 synthesisディレクトリのまま % make pcpu_icc.fp Makefileの-fill 60が充填率(増やすと面積は縮小) PCPU_icc.fp:フロアプランを作成するためのコマンドファイル PCPU_icc.strap:電源ストラップ作成するためのコマンドファイル
マクロの配置・配線 配置・配線スクリプト(pcpu.tcl)の生成 IC Compilerの立ち上げ マクロの配置・配線 % make clean // 最初に1回だけ行う % make tcl/pcpu.tcl IC Compilerの立ち上げ % icc_shell -gui -64bit マクロの配置・配線 ※ICCのコマンドラインで Icc_shell> source tcl/init.tcl Current design is not defined というエラーが出てきても気にしなくて Icc_shell> source tcl/pcpu.tcl Grepでエラーを確認する Iccompilerのはじめにでてくる Exit ic compilier?はキャンセルボタンを押す
レイアウト(配置・配線の結果) Open_Design で確認 83MHz 340um□
レイアウト検証 DRC(Design Rule Check) calibre/drcディレクトリに移動 DRCスクリプトの生成 % make pcpu.cal Calibreの実行 % make pcpu.drc.summary エラー内容を分かり易いメッセージに変換 % make pcpu.drc.txt % cat pcpu.drc.txt ※エラーメッセージが0ならばOK
DRCエラー箇所の特定 IC Compilerで確認 calibre/drcディレクトリ % make pcpu_error.drc.txt IC Compilerを立ち上げ,pcpuを開き, Verification->Read Third Party DRC Error Fileから ../calibre/drc/pcpu_error.drc.resultsを選択 エラー箇所が示される ちなみに、このエラーはピンを作ったものの使われていないため検出された。問題がなければ、放置しても良い。
LVS, 等価性検証の位置付け SOURCE LAYOUT 論理合成(D. C.) 等価性検証(Formality) ICC Calibre Verilogで開発 論理合成(D. C.) Verilog netlist Layout 等価性検証(Formality) ICC Verilog netlist(LAYOUT後) GDS file Verilog netlist(LAYOUT後, PG付) Calibre v2lvs SPICE netlist SPICE netlist LVS (Calibre)
LVS(Layout versus schematic) calibre/lvsディレクトリに移動 Calibreの実行 % make pcpu.lvs.report %less pcpu.lvs.report pcpu.lvs.reportの確認:すべてCORRECTとなっていればOK ※LVSでCORRECTとなっていない状態では決してチップは動かない! OVERALL COMPARISON RESULTS # ################### _ _ # # # * * # # # CORRECT # | # # # # \___/ # ################### こうなっていれば良し
0でなければDIODEの挿入等の処置を施す アンテナルールチェック calibre/antennaディレクトリに移動 Calibreの実行 % make pcpu.antenna.results pcpu.antenna.resultsの確認 エラーがあれば、エラー箇所の図形データが出力される。 確認手法は「DRCエラー箇所の特定」と同様 % cat pcpu.antenna.summary pcpu.antenna.summaryの確認 --- SUMMARY --- TOTAL CPU Time: 15 TOTAL REAL Time: 12 TOTAL Original Layer Geometries: 30167 (301681) TOTAL DRC RuleChecks Executed: 20 TOTAL DRC Results Generated: 0 (0) 0でなければDIODEの挿入等の処置を施す
0でなければDIODEの挿入等の処置を施す グリッドチェック calibre/gridディレクトリに移動 Calibreの実行 % make pcpu.grid.results pcpu.grid.resultsの確認 エラーがあれば、エラー箇所の図形データが出力される。 確認手法は「DRCエラー箇所の特定」と同様 pcpu.grid.sumの確認 --- SUMMARY --- TOTAL CPU Time: 15 TOTAL REAL Time: 12 TOTAL Original Layer Geometries: 30167 (301681) TOTAL DRC RuleChecks Executed: 20 TOTAL DRC Results Generated: 0 (0) 0でなければDIODEの挿入等の処置を施す
Gridチェックでエラーが起きたら Iccに移動して Icc_shell –gui -64bitで起動する Open> openlibrary pcpuを選択してOK チェックを入れずにOK open>opendesign pcpuを選択してOK Verification->Read Third Party DRC Error Fileから ../calibre/grid/pcpu_error.drc.resultsを選択 Drc・lvsも同様の方法でエラーチェックができる 最小メタル面積のエラーはgridでもエラーが出る Start・stallはだれも使ってないので誰かが使えばエラーが消える