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%を超えているときはおかしいことをしている.

0 件のコメント:

コメントを投稿