Virtuoso Dynamic DRC (DRD)を使うと,レイアウト編集中にオンデマンドにDRCをかけることができる.有効にするには,Layout Editingのアイコンから選ぶか,Options -> DRD EditからInteractive Modeを変える.
モードは3つある.
・
DRD Notify:DRDを有効にし,違反がある場合は警告をだす.
・
DRD Enforce:DRDを有効にし,違反があるレイアウトを許さない.
・
DRD Off:DRDを無効にする.
DRD のルールは Techfile に書かれている( constraintGroup フィールドに書かれている).このルールを変更するには Techfile を書き換える必要があるが,Techfile の書き換えは設計資産の再利用などに問題が発生する可能性がある.またライブラリ生成時に Techfile を Attach するように指示されている場合は Techfile の書き換えができない. SKILL を利用して制約を上書きするには techSetSpacingRule 関数を使う.
techSetSpacingRule(
d_techFileID
t_rule
g_value
ltx_layer1
[ ltx_layer2 ]
)
引数はそれぞれ,
d_techFileID :対象のライブラリID
t_rule:ルール名.指定可能なルールはそれぞれ以下の通り.
minNotch, minSpacing, minWidth, defaultWidth, maxWidth, sameNet
g_value:スペーシングルールの値.整数もしくは小数.
ltx_layer1:適用するレイヤー名
[ ltx_layer2 ] :(Option)適用する2つめのレイヤー名
d_techFileID は techGetTechFile 関数と ddGetObj 関数を使うとよい.
最終的には以下のように組合わせる.
techFileID=techGetTechFile(ddGetObj("libName"))
techSetSpacingRule(techFileID "minSpacing" 0.1 "Metal1")
ある PDK では Techfile のスペーシングルールが DFM ルールの 0.11 um なのだが,
上記コマンドを実行すれば,以下のようにルールを 0.10 um に変えられる.
minSpacing や minWidth などのルールは,
Virtuoso Space-Based Router (VSR)で必須のルールなので,VSRを使うには上記関数で設定してあげれば良さそう(未検証).
On-demand-DRCは,本当は
Calibre RealTimeを使えればいいのだけれどなー.