Calibre LVSにおいてセルの論理を認識させる事ができる.
LVS RECOGNIZE GATES ALL
例えばNAND2セルにおいて,Layoutでは入力AがVDD,Schematicでは入力BがVDDである時,論理等価性を認識させてLVSをパスさせることができる.
なお,オプションを付けなくても低階層では論理を自動認識してLVSをパスできるが,階層が深くなると論理等価性を認識しなくなるので注意.
2018年2月23日金曜日
SiliconSmartAce で利用するCPU数を設定する
SiliconSmartAceはキャラクタライズ時に使うCPUの数が増えるとそれだけ並列にSPICEシミュレーションを回すので処理が高速になる.
CPUの数は,
config/configure.tcl
のグローバル構成情報を記述する項目
define_parameters default{
中の,
set run_list_maxsize {NUMCPU}
の{NUMCPU}の数字を変える.16CPUなら16とする.
CPUの数は,
config/configure.tcl
のグローバル構成情報を記述する項目
define_parameters default{
中の,
set run_list_maxsize {NUMCPU}
の{NUMCPU}の数字を変える.16CPUなら16とする.
2018年2月19日月曜日
IC Compilerにおける Filler Cell Insertion の実行タイミング
IC Compiler で大きな回路を作成する時,CTS 前に Filler Insertion を行うとクロックツリーバッファが入らなくなる (Fillerを適度に抜いてバッファを入れてくれればよいのにそうしてくれない).セル上部に少しでも配線があると -cell_with_metal の Filler が入らないため,あまりに遅いタイミング(自動配線後)に Filler を入れると -cell_without_metal の Filler しか入らず密度違反になる可能性がある.
結論から言うと CTS 後に一度入れ,配線後に再度入れると良いことがわかった.
具体的には以下のように入れる.
# スタセル配置
place_opt
# セル電源接続
derive_pg_connection -power_net {VDD} -power_pin {VDD} -ground_net {VSS} -ground_pin {VSS}
... # 電源レール作成,電源メッシュ,配線ルールなど略
# CTS
set_fix_hold_options -default
set_fix_hold [all_clocks]
clock_opt -no_clock_route # 配線はさせない
clock_opt -no_clock_route -fix_hold_all_clock -only_hold_time # 配線はさせない
# First filler insertion
insert_stdcell_filler -cell_with_metal {cell_with_metal}
insert_stdcell_filler -cell_without_metal {cell_without_metal}
derive_pg_connection # 電源を論理的につなぐ
# route
route_opt
# Final filler insertion
remove_zrt_filler_with_violation # 配線と干渉するFillerを削除
insert_stdcell_filler -cell_with_metal {cell_with_metal}
insert_stdcell_filler -cell_without_metal {cell_without_metal}
derive_pg_connection # 電源を論理的につなぐ
remove_zrt_filler_with_violation
を使うと,Zroute が配線と干渉する Filler (=-cell_metal_with) を見つけてくれるので,その後 -cell_without_metal を入れてやるのがマニュアルの手法らしい.
誤ってCTS 時に配線をしてしまうと -cell_with_metal が入らなくなるので注意.
挙動としては,Utilizationが100%を超えるとIC Compilerの動作がおかしくなる.セルが重なったり配置グリッドに載らなくなったときは,
report_placement_utilization
を実行してUtilizationが100%を超えていないか確認する.Std cell utilization (Non-fixed only)が100%を超えているときはおかしいことをしている.
結論から言うと CTS 後に一度入れ,配線後に再度入れると良いことがわかった.
具体的には以下のように入れる.
# スタセル配置
place_opt
# セル電源接続
derive_pg_connection -power_net {VDD} -power_pin {VDD} -ground_net {VSS} -ground_pin {VSS}
... # 電源レール作成,電源メッシュ,配線ルールなど略
# CTS
set_fix_hold_options -default
set_fix_hold [all_clocks]
clock_opt -no_clock_route # 配線はさせない
clock_opt -no_clock_route -fix_hold_all_clock -only_hold_time # 配線はさせない
# First filler insertion
insert_stdcell_filler -cell_with_metal {cell_with_metal}
insert_stdcell_filler -cell_without_metal {cell_without_metal}
derive_pg_connection # 電源を論理的につなぐ
# route
route_opt
# Final filler insertion
remove_zrt_filler_with_violation # 配線と干渉するFillerを削除
insert_stdcell_filler -cell_with_metal {cell_with_metal}
insert_stdcell_filler -cell_without_metal {cell_without_metal}
derive_pg_connection # 電源を論理的につなぐ
remove_zrt_filler_with_violation
を使うと,Zroute が配線と干渉する Filler (=-cell_metal_with) を見つけてくれるので,その後 -cell_without_metal を入れてやるのがマニュアルの手法らしい.
誤ってCTS 時に配線をしてしまうと -cell_with_metal が入らなくなるので注意.
挙動としては,Utilizationが100%を超えるとIC Compilerの動作がおかしくなる.セルが重なったり配置グリッドに載らなくなったときは,
report_placement_utilization
を実行してUtilizationが100%を超えていないか確認する.Std cell utilization (Non-fixed only)が100%を超えているときはおかしいことをしている.
2018年2月17日土曜日
IC Compilerにおけるピンの配置制約
set_pin_physical_constraint -side [数字]
数字で四辺を指定する.
0:指定無し
1:左辺
2:上辺
3:右辺
4:下辺
数字で四辺を指定する.
0:指定無し
1:左辺
2:上辺
3:右辺
4:下辺
2017年12月2日土曜日
Synopsysのツール名とできる事の対応表
よくわからなくなったのでまとめた.
・回路合成
Design Compiler (synthesis/syn/dc):論理合成ツール.
DC Explorer:設計初期段階の不完全なRTLから遅延や消費エネルギーを見積もるツール.
Design Vision:Design CompilerのGUI
HDL Compiler for VHDL/Verilog/System Verilog:DesignCompilerが利用する論理合成エンジン.
Power Compiler:DesignCompilerが利用する消費電力の解析,または消費電力削減を行う回路テクニックを行うエンジン.
Synphony C Compiler (SCC):高位合成ツール.C言語からRTLを生成する.Design Compilerを用いる事でゲートレベル,Synplifyを用いる事でFPGAのコンフィグレーションファイルを生成できる.
Synplify Pro/Premier:FPGA向け論理合成ツール
・ライブラリ生成
SiliconSmart:キャラクタライザ.タイミングライブラリを作成する.(旧Magmaのツール)
Liberty NCX (Liberty):Synopsysのキャラクタライザ.SiliconSmartが使えるようになって即オフサポートになった.
Library Compiler (Library):キャラクタライズ結果(.lib)を論理合成に用いるデータベース(.db)へ変換する.
Milkyway:GDSからフィジカルライブラリを作成する.
・配置配線
IC Compiler(ICC):自動配置配線ツール
IC Compiler Ⅱ(ICC2):自動配置配線ツール.ICCとの違いはよくわからない.
Talus:自動配置配線.RTLからフロアプランまでのTalus Deisgnと,フロアプランからGDS生成までのTalus Vortexに分かれる(旧Magmaのツール)
PrimeRail:チップ内部の電源ドロップを解析する.IC Compilerと組み合わせて使うらしい.
・検証
ESP:等価性検証ツール.Verilogの動作モデルとSPICEレベル(トランジスタレベル)の等価性を検証する.
Formality:等価性検証ツール.RTL(Verilog,VHDL,SystemVerilog)とゲートレベルの等価性の検証,ゲートレベルとSPICE(トランジスタレベル)の等価性を検証する.
Hercules:DRC/LVSツール
IC Varidator(ICV):DRC/LVS/ERCツール.DRCの結果からFillを生成する事もできる.
・ゲートレベルシミュレーション
VCS:RTL/ゲートレベルのHDLシミュレータ.Verilog Compiler Simulatorの略とも.
PrimeTime:ゲートレベルHDLのSTAツール
PrimeTime PX:ゲートレベルHDLの消費電力解析ツール
PrimeTime VX (SSTA) は無くなっちゃったの??
・トランジスタレベルシミュレーション
HSPICE:SPICEシミュレータ
CustomSim:高速SPICEシミュレータ(FastSPICE).プレスリリースによると,NanoSim,HSIM,XAを統合したFastSPICEらしい.
NanoSim:一般回路向けのFastSPICE
HSIM:規則構造回路向けのFastSPICE
XA:NanoSim,HSIMの高速化オプション
FineSim:旧MagmaのSPICEシミュレータ.精度に応じてSPICEとFastSPICEのエンジンを切り替えられる.マルチコア対応でとにかく速いらしい(とMagmaからSynopsysに移った人が推していた)
Nanotime(旧PathMill):トランジスタレベルの静的遅延解析(STA)ツール.大規模回路のSPICEネットリストにレイアウトのRCをバックアノテーションしながらデジタル回路の遅延解析を行う.標準的なデジタル回路で無い場合は正確な解析ができないらしい.
・デバイスシミュレーション
Sentaurus:デバイスシミュレータ
Raphael:配線シミュレーション(RC抽出)
・波形ビューア
CosmosScope:波形ビューア
CustomWaveview:波形ビューア
・寄生成分抽出
QuickCap:寄生容量抽出ツール.GDSを読み取り回路中の寄生容量を計算する(旧Magmaのツール).
Star-RC:寄生素子抽出ツール.回路中の寄生素子(抵抗,容量,インダクタンス)をテーブルベースで計算する.
・テスト
DFTMAX:テスト合成ツール.RTLを論理合成する時にテスト可能なゲートレベル回路を生成する.
TetraMax ATPG:テストパターン生成ツール.DFTMAXで生成した回路に対しスキャンテストを行うためのテストパターンを生成する.
・デバッグ
Verdi:RTLのデバッグ解析ツール.結線ミスとか見つけられるらしい.(旧Novas Softwareのツール)
・Cadabra
セルレイアウトジェネレータ. おじさんが一人で開発していたとの噂.今はオフサポート.
他は使わないのでわからない…….
・回路合成
Design Compiler (synthesis/syn/dc):論理合成ツール.
DC Explorer:設計初期段階の不完全なRTLから遅延や消費エネルギーを見積もるツール.
Design Vision:Design CompilerのGUI
HDL Compiler for VHDL/Verilog/System Verilog:DesignCompilerが利用する論理合成エンジン.
Power Compiler:DesignCompilerが利用する消費電力の解析,または消費電力削減を行う回路テクニックを行うエンジン.
Synphony C Compiler (SCC):高位合成ツール.C言語からRTLを生成する.Design Compilerを用いる事でゲートレベル,Synplifyを用いる事でFPGAのコンフィグレーションファイルを生成できる.
Synplify Pro/Premier:FPGA向け論理合成ツール
・ライブラリ生成
SiliconSmart:キャラクタライザ.タイミングライブラリを作成する.(旧Magmaのツール)
Liberty NCX (Liberty):Synopsysのキャラクタライザ.SiliconSmartが使えるようになって即オフサポートになった.
Library Compiler (Library):キャラクタライズ結果(.lib)を論理合成に用いるデータベース(.db)へ変換する.
Milkyway:GDSからフィジカルライブラリを作成する.
・配置配線
IC Compiler(ICC):自動配置配線ツール
IC Compiler Ⅱ(ICC2):自動配置配線ツール.ICCとの違いはよくわからない.
Talus:自動配置配線.RTLからフロアプランまでのTalus Deisgnと,フロアプランからGDS生成までのTalus Vortexに分かれる(旧Magmaのツール)
PrimeRail:チップ内部の電源ドロップを解析する.IC Compilerと組み合わせて使うらしい.
・検証
ESP:等価性検証ツール.Verilogの動作モデルとSPICEレベル(トランジスタレベル)の等価性を検証する.
Formality:等価性検証ツール.RTL(Verilog,VHDL,SystemVerilog)とゲートレベルの等価性の検証,ゲートレベルとSPICE(トランジスタレベル)の等価性を検証する.
Hercules:DRC/LVSツール
IC Varidator(ICV):DRC/LVS/ERCツール.DRCの結果からFillを生成する事もできる.
・ゲートレベルシミュレーション
VCS:RTL/ゲートレベルのHDLシミュレータ.Verilog Compiler Simulatorの略とも.
PrimeTime:ゲートレベルHDLのSTAツール
PrimeTime PX:ゲートレベルHDLの消費電力解析ツール
PrimeTime VX (SSTA) は無くなっちゃったの??
・トランジスタレベルシミュレーション
HSPICE:SPICEシミュレータ
CustomSim:高速SPICEシミュレータ(FastSPICE).プレスリリースによると,NanoSim,HSIM,XAを統合したFastSPICEらしい.
NanoSim:一般回路向けのFastSPICE
HSIM:規則構造回路向けのFastSPICE
XA:NanoSim,HSIMの高速化オプション
FineSim:旧MagmaのSPICEシミュレータ.精度に応じてSPICEとFastSPICEのエンジンを切り替えられる.マルチコア対応でとにかく速いらしい(とMagmaからSynopsysに移った人が推していた)
Nanotime(旧PathMill):トランジスタレベルの静的遅延解析(STA)ツール.大規模回路のSPICEネットリストにレイアウトのRCをバックアノテーションしながらデジタル回路の遅延解析を行う.標準的なデジタル回路で無い場合は正確な解析ができないらしい.
・デバイスシミュレーション
Sentaurus:デバイスシミュレータ
Raphael:配線シミュレーション(RC抽出)
・波形ビューア
CosmosScope:波形ビューア
CustomWaveview:波形ビューア
・寄生成分抽出
QuickCap:寄生容量抽出ツール.GDSを読み取り回路中の寄生容量を計算する(旧Magmaのツール).
Star-RC:寄生素子抽出ツール.回路中の寄生素子(抵抗,容量,インダクタンス)をテーブルベースで計算する.
・テスト
DFTMAX:テスト合成ツール.RTLを論理合成する時にテスト可能なゲートレベル回路を生成する.
TetraMax ATPG:テストパターン生成ツール.DFTMAXで生成した回路に対しスキャンテストを行うためのテストパターンを生成する.
・デバッグ
Verdi:RTLのデバッグ解析ツール.結線ミスとか見つけられるらしい.(旧Novas Softwareのツール)
・Cadabra
セルレイアウトジェネレータ. おじさんが一人で開発していたとの噂.今はオフサポート.
他は使わないのでわからない…….
2017年11月30日木曜日
Star-RC で抽出したトランジスタの座標を表示する
Star-RCで抽出したトランジスタの座標(x,y,角度)を表示するには以下のオプションを利用する.
NETLIST_DEVICE_LOCATION_ORIENTATION: YES | NO | COMMENT
YES: トランジスタのx,y,角度の情報を抽出しインスタンス定義に表示する
NO: トランジスタのx,y,角度の情報を抽出しない(デフォルト)
YES: トランジスタのx,y,角度の情報を抽出しインスタンス定義に表示する($を付けコメント扱い)
YESを付けると以下の様に抽出される.
MM1 D G S B pfet l=xx w=xx x=1.5 y=0.4 angle=0
NOを付けると以下の様に抽出される(座標情報無し).
MM1 D G S B pfet l=xx w=xx
COMMENTを付けるとコメントとして抽出される.
MM1 D G S B pfet l=xx w=xx $x=1.5 $y=0.4 $angle=0
NETLIST_DEVICE_LOCATION_ORIENTATION: YES | NO | COMMENT
YES: トランジスタのx,y,角度の情報を抽出しインスタンス定義に表示する
NO: トランジスタのx,y,角度の情報を抽出しない(デフォルト)
YES: トランジスタのx,y,角度の情報を抽出しインスタンス定義に表示する($を付けコメント扱い)
YESを付けると以下の様に抽出される.
MM1 D G S B pfet l=xx w=xx x=1.5 y=0.4 angle=0
NOを付けると以下の様に抽出される(座標情報無し).
MM1 D G S B pfet l=xx w=xx
COMMENTを付けるとコメントとして抽出される.
MM1 D G S B pfet l=xx w=xx $x=1.5 $y=0.4 $angle=0
2017年10月11日水曜日
IEEEtran.bstで原稿のReferencesにURLを入れない(@IEEEtranBSTCTLを使う)
IEEEtran.bstを使うとデフォルトでは参考文献にURLが入る.これを入らないようにする方法はいくつかあるが,IEEEtran.bstそのものは@IEEEtranBSTCTLを使うことで制御する事を想定しているのでそのやり方を書く.BSTファイルを直接いじる必要は無い.
IEEEtran.bstを使うとエントリータイプに応じて様々なフィールドが参考文献に出力される.
@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLuse_article_number = "yes",
CTLuse_paper = "yes",
CTLuse_url = "yes",
CTLuse_forced_etal = "no",
CTLmax_names_forced_etal = "10",
CTLnames_show_etal = "1",
CTLuse_alt_spacing = "yes",
CTLalt_stretch_factor = "4",
CTLdash_repeated_names = "yes",
CTLname_format_string = "{f.˜}{vv˜}{ll}{, jj}",
CTLname_latex_cmd = "",
CTLname_url_prefix = "[Online]. Available:"
}
ここで,
CTLuse_url = "no",
を自分の.texファイルで指定する事でURLの出力を禁止できる.
改めて設定方法を掲示すると,
(1) .bibファイルへの設定記述
.bibファイルに,前述の@IEEEtranBSTCTLのうち
制御したい(上書きしたい)パラメータを記述する.
@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLuse_url = "no",
}
(2) .texでの制御情報反映
定義した制御情報を有効にするコマンドをTEXファイルの本文に追加する
(\begin{document}の直後がいいらしい).
\bstctlcite{IEEEexample:BSTcontrol}
(3) コンパイル
参考:
IEEEtran.bstで著者名が線になるのを防ぐ
How to Use the IEEEtran BIBTEX Style: IEEEtran.bstのマニュアル(PDF).丁寧に説明されています.
IEEEtran.bstを使うとエントリータイプに応じて様々なフィールドが参考文献に出力される.
@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLuse_article_number = "yes",
CTLuse_paper = "yes",
CTLuse_url = "yes",
CTLuse_forced_etal = "no",
CTLmax_names_forced_etal = "10",
CTLnames_show_etal = "1",
CTLuse_alt_spacing = "yes",
CTLalt_stretch_factor = "4",
CTLdash_repeated_names = "yes",
CTLname_format_string = "{f.˜}{vv˜}{ll}{, jj}",
CTLname_latex_cmd = "",
CTLname_url_prefix = "[Online]. Available:"
}
ここで,
CTLuse_url = "no",
を自分の.texファイルで指定する事でURLの出力を禁止できる.
改めて設定方法を掲示すると,
(1) .bibファイルへの設定記述
.bibファイルに,前述の@IEEEtranBSTCTLのうち
制御したい(上書きしたい)パラメータを記述する.
@IEEEtranBSTCTL{IEEEexample:BSTcontrol,
CTLuse_url = "no",
}
(2) .texでの制御情報反映
定義した制御情報を有効にするコマンドをTEXファイルの本文に追加する
(\begin{document}の直後がいいらしい).
\bstctlcite{IEEEexample:BSTcontrol}
(3) コンパイル
参考:
IEEEtran.bstで著者名が線になるのを防ぐ
How to Use the IEEEtran BIBTEX Style: IEEEtran.bstのマニュアル(PDF).丁寧に説明されています.
2017年7月21日金曜日
Verilog における force 文メモ
非同期分周器のVerilogシミュレーションでforce文を使ったのでメモ.
Verilogで特定のノードの値を強制的に指定するために,force文を使う.force文の指定を解除するためには,release文を使う.非同期分周器の場合,分周器の入力に対して強制的に値を指定し,クロック立ち上がりを入力し値をDFFに取り込む.次に,release文を使う事でforce文を解除する.
Verilogで特定のノードの値を強制的に指定するために,force文を使う.force文の指定を解除するためには,release文を使う.非同期分周器の場合,分周器の入力に対して強制的に値を指定し,クロック立ち上がりを入力し値をDFFに取り込む.次に,release文を使う事でforce文を解除する.
2017年7月13日木曜日
AnalogArtist のセルをSKILLコマンドでリネームする(ccpRename)
AnalogArtist 中のセルをリネームするには,ccpRenameコマンドを使う.
リネーム前,リネーム後のセルは,gdmSpecオブジェクトを指定する.従って以下の様に組み合わせてやればよい.
mySpecSrc = gdmCreateSpec("lib" "srcCellName" "view" nil "CDBA")
mySpecDst = gdmCreateSpec("lib" "dstCellName" "view" nil "CDBA")
ccpRename(mySpecSrc mySpecDst)
ここで,srcCellName がリネーム前のセルの名,dstCellNameがリネーム後のセル名,view 対応するview(layout/schematic/symbol...)である.
リネーム前,リネーム後のセルは,gdmSpecオブジェクトを指定する.従って以下の様に組み合わせてやればよい.
mySpecSrc = gdmCreateSpec("lib" "srcCellName" "view" nil "CDBA")
mySpecDst = gdmCreateSpec("lib" "dstCellName" "view" nil "CDBA")
ccpRename(mySpecSrc mySpecDst)
ここで,srcCellName がリネーム前のセルの名,dstCellNameがリネーム後のセル名,view 対応するview(layout/schematic/symbol...)である.
2017年4月12日水曜日
Star-RC で電源配線を抽出する(POWER_EXTRACT)
Star-RC で電源配線の抽出を制御するには,POWER_NETSコマンドとPOWER_EXTRACTコマンドを使う.
POWER_NETSコマンドの後ろに,抽出させたくない電源名を記述する.
POWER_NETS: VDD1 VDD2 ...
POWER_EXTRACTコマンドを利用して,電源の抽出の仕方を選ぶ.
POWER_EXTRACT: YES | NO | RONLY | DEVICE_LAYER
YES: 電源配線のRCを抽出
NO(Default): 電源配線のRCを抽出しない.ただし信号配線のRC抽出において電源配線の影響は考慮される.
RONLY: 電源のRのみ抽出し,別のファイルとして出力する.
DEVICE_LAYERS: マッピングファイル中のdevice_layerキーワードに登録された配線層における,RCのみを抽出する.
RONLYオプションをつけた場合,POWER_EXTRACTコマンドを使うことでRの縮約もできる.
POWER_NETSコマンドの後ろに,抽出させたくない電源名を記述する.
POWER_NETS: VDD1 VDD2 ...
POWER_EXTRACTコマンドを利用して,電源の抽出の仕方を選ぶ.
POWER_EXTRACT: YES | NO | RONLY | DEVICE_LAYER
YES: 電源配線のRCを抽出
NO(Default): 電源配線のRCを抽出しない.ただし信号配線のRC抽出において電源配線の影響は考慮される.
RONLY: 電源のRのみ抽出し,別のファイルとして出力する.
DEVICE_LAYERS: マッピングファイル中のdevice_layerキーワードに登録された配線層における,RCのみを抽出する.
RONLYオプションをつけた場合,POWER_EXTRACTコマンドを使うことでRの縮約もできる.
登録:
投稿 (Atom)