2014年2月28日金曜日

Zrouteにおける,配線のスタセルピンへの接続方法の指定(set_route_zrt_common_option)

Zrouteでセル間の配線を行う際に,配線のスタセルへのアクセス方法を指定する事が出来る.
この時

set_route_zrt_common_option -connect_within_pins {{Metal option} {}...}

と言う形で指定する.optionの内容は以下の通り

off:
制約無し(デフォルト)

via_standard_cells_pins:
VIAを利用して接続する場合において制約があり,ビアはピンの真上かつ座布団がピンからはみ出ない必要がある(それ以外はDRC違反).ピンと同層メタルで引き出す
場合は制約無し.マクロやPADに対しては制約無し.

via_all_pins:
via_standard_cells_pinsと同様だが,スタセルだけでなくマクロやPADに対しても制約あり.

via_wire_all_pins:
VIAおよび配線を利用して接続する場合において制約あり.ビアはピンの真上かつ座布団がピンからはみ出ない必要がある(それ以外はDRC違反).ピンと同層メタルで引き出す事も禁止.

ピンの周辺に座布団を生成してDRC違反を発生させてしまうセルが存在する場合,本オプションを適用すると違反を回避することが出来るかもしれない.


2014年2月26日水曜日

SDCの単位を指定する

論理合成で利用する遅延制約(Synopsys Design Constraint: SDC)において,容量や抵抗,時間の単位を明示するために,set_unitsコマンドを利用する事が出来る.

set_units -capacitance cap_unit -resistance res_unit \
-time time_unit -voltage voltage_unit -current current_unit \
-power power_unit

単位を明示しない時は読み込むライブラリ(.db)の単位が使われるが,明示した方が安心だろう.

2014年2月20日木曜日

Silicon Smartにおける"no convergence"の一原因

Silicon Smart AceとHSPICEを使ってスタセルのキャラクタライズを行っていたところ,以下の様なエラーをHSPICEが出力しキャラクタライズがとまる事態が発生した.

Error: Simulation initialization__ACQ_1.sif for cell SN51DFFRBQXC1 failed.
Error: Error while running simulation: Error found in simulator log file (deck.lis): **error** no convergence in operating point


キャラクタライズ対象のセルのネットリストが正常に動作する場合,Silicon Smartに入力する論理情報およびキャラクタライズ条件に不備がある可能性がある.今回のセル(非同期リセット付きポジティブエッジDFF)の場合,セルのインスタンスファイル(.inst)のピンの定義および論理情報は適切であったが,オプションのユーザー定義のキャラクタライズ条件(User-specified characterization and modeling configuration options.)に不備があり,Reset時の条件が書かれていなかった.そのため変なSPICE Deckを生成したと思われる.
LPEした回路の不備かと思った.紛らわしいエラーだ.

Calibre InteractiveでRunsetを読み込むと同時に自動実行する

Calibre InteractiveによるDRC/LVS実行時に,毎回[Run DRC]や[Run LVS]を実行する事が煩わしい.オプションを設定する事で,起動時にRunset選択後自動でDRC/LVSを実行する事が可能になる.オプションはCalibre Interactiveの[Setup]→[Preferences...]から[Misc]タブを選択し,[Run Calibre when runset is opend]にチェックを入れる.

こうすると,
(1) VirtuosoのCalibreメニューからDRC/LVSを選択
(2) Runsetを選択→自動でCalibre実行

となり,[Run DRC]等を選択するステップを減らす事が出来る.

さらに[Prompt to save changes before closing runset]と[Save runset each time Calibre is run]を選択しておくと,Calibre終了時に「Runsetの内容変わっているが保存するか?」という鬱苦しいダイアログが表示されなくなるので,こちらもおすすめ.