Shell スクリプトで IC Compilerの create_floorplan のパラメータを変更していき設計が最後まで到達できたか調べれば良いのだが,面積制約を満たさない場合は DRC 違反が大量に出る中 ICC は(100%設計完了できないにもかかわらず)延々と頑張って設計改良をするので時間がかかる.一方で一度面積制約を満たしたら処理は終了したい.
そこで
(0) Shell スクリプトで tcl ファイルの create_floorplan のパラメータを変える
(1) 処理の要素要素で Utilization を調べて既定値以下なら終了する
(2) 一度最後まで到達したらフラグを出力し for ループをブレイクする
(0) はこんなコード
- echo "--------------" > _b01_.log
- for ((row=%%START%%; row<%%END%%;row=row+%%INC%%))do
- sed -e "s/%%row%%/${row}/g" tcl/b01.tcl > _b01_.tcl
- icc_shell -64 -shared_license -f _b01_.tcl
- echo "--------------" >> _b01_.log
- echo ${row} >> _b01_.log
- grep Error b01.log >> _b01_.log
- grep "filler cells with master" b01.log >> _b01_.log
- grep "Leaf Cell Count" b01.log >> _b01_.log
- if [ -e b01.finish ]; then
- break
- fi
- done
このコードをさらに外部のsedコマンドで%%START%%,%%END%%,%%INC%%,%%ROW%%を置換する.
(1) 以下のようなプロシージャを定義して
メインのtclファイル中で要所要所で呼び出す.
(2) メインのtclファイルの末尾に完遂した場合のフラグファイルの出力と,冒頭にフラグファイルがある場合にquitするようにする.
フラグファイルがある場合は(0)のシェルスクリプトでもbreakするようにしているので,tcl 中の if 文は無駄ではあるが念のため.
0 件のコメント:
コメントを投稿