ONSET (Optimizer for logic Networks Supported by Extension of Transduction method) は,組み合わせ論理回路の強力な簡単化プログラムであり,以下の機能をもっています.
なお,ここでいう実行制限時間は,ワークステーション版では使用したCPU時間になりますが,MS-DOS上では実際の経過時間(コマンド入力待ち時間も含む)となります.
指定した argement の文字列は,指定順に,$1,$2,$3,... として,ONSETのコマンド・スクリプトで利用することができます.
ONSETの動作は,8.4節に示す各コマンドをどう与えるかで決まります.PARTHENONでは,通常,OPT_MAPから呼び出されて動作しますが,その場合のONSET側の処理は,
スクリプト・ファイルを使った実行例
たとえば,a:\par\com\onset.dir\b2n_area.scrというスクリプト・ファイルの内容が,
verbose $2 in_blif $1.bli area.scr out_nld $1.nldとなっている場合,
A>onset -f a:\par\com\onset.dir\b2n_area.scr ALU4 onと起動すれば,
verbose on ........ 情報表示モードに設定 in_blif ALU4.bli ... BLIF形式の多段論理回路 ALU4.bli を入力 area.scr ........... 回路簡単化を実施するスクリプト・ファイルの呼び出し out_nld ALU4.nld ... NLD形式のネットリスト ALU4.nld を出力というコマンド・スクリプトを実行することになります.ここで area.scr という別のスクリプト・ファイルも呼び出して実行しています.つまり,コマンド・スクリプトのネスティングを行っていることになります.
なお,-f オプションで指定するスクリプト・ファイル名は,カレント・ディレクトリから参照できる正しいパス名(フルパス名も含む)で指定しなければなりません.一方,対話モードからのスクリプト・ファイルの呼び出し,またはスクリプト内からのスクリプト・ファイルの呼び出しの際には,前記の通常のパス名,および %PARTHENON%\com\onset.dir からのパス名として,ファイルを探し出して実行します(ただし前者が優先).したがって,上の例でカレント・ディレクトリに area.scr が存在しないときは,a:\par\com\onset.dir\area.scr が実行されます.
対話モードでの実行例
次に,対話モードでのコマンド実行例を示します.カレント・ディレクトリに,すでに ALU4.bli という BLIF形式のファイルが OPT_MAPのblifコマンドなどによって作成されていると仮定します.
A>onset ONSET> in_blif ALU4.bli ....(1) BLIF形式の多段論理回路 ALU4.bli を入力 ONSET> print_cost ..........(2) 回路の各種コスト情報を表示 ONSET> prefact .............(3) 因数分解と局所的な簡単化 ONSET> sgs .................(4) ゲート置換による簡単化 ONSET> condis ..............(5) 接続の追加・削除による簡単化 ONSET> sgs .................(6) ゲート置換による簡単化 ONSET> gm ..................(7) ゲート併合による簡単化 ONSET> condisa .............(8) 接続の追加・削除による簡単化 ONSET> cpb 4 ...............(9) クリティカル・パスを再合成 ONSET> map ................(10) 複合ゲートを含む回路へのマッピング ONSET> sgsm ...............(11) 複合ゲートを含む回路での簡単化 ONSET> constant ...........(12) 定数出力端子を処理 ONSET> print_cost .........(13) 回路の各種コスト情報を表示 ONSET> out_nld ALU4.nld ..(14) NLD形式のネットリスト ALU4.nld を出力 ONSET> !dir ...............(15) DOSコマンドの dir を実行 ONSET> bye ................(16) ONSETの終了 A>
これによって,一連の簡単化処理を経た多段論理回路が NLD形式のネットリストで得られることになります.
ところで,ONSETが用意している各コマンドと,処理の流れの関係は,図8.1に示すとおりです.上記の実行例は,図の太線に沿った流れになっていますが,(3)〜(9)などに相当する各種簡単化コマンドの実行順序や繰り返し適用の回数などは任意です.簡単化の能力をうまく引き出すためには,取り扱う論理回路の性質に応じて,これらの簡単化操作コマンドを実行する順序や回数をうまく選択することが鍵となります.
<図8.1> ONSETの処理の流れ
論理回路簡単化の各操作の詳細についてはここでは触れません.トランスダクション法について書かれている文献などを参考にしてください.
論理回路簡単化操作コマンドや,論理関数,ネットリスト入力コマンドについては,対象とする論理回路の性質によって,小規模であっても極端に実行時間を要する場合があります.
%PARTHENON%\com\onset.dir に用意している area.scr,delay.scr は,多数の回路例で実行した経験からそれぞれ,面積優先,遅延時間優先の簡単化が行われると期待されるスクリプトの例です.取り扱う回路によっては,これらのスクリプトに含まれる簡単化操作コマンドを実行する順序や回数を変えるなどの試行を行えば,より良い結果が得られるかもしれません.
mapコマンド実行後,さらに各種の簡単化操作コマンドを実行するときには,unmapコマンドによって単純ゲートだけからなる回路に戻すことができます.回路によっては,この繰り返しによってより簡単化が進むことがあります.
resynthesisコマンドは,対象としている回路構造をすべて放棄し,出力端子が満たすべき論理関数から新たな回路を再合成するコマンドです.回路によっては,これによって大幅な簡単化が起こることがあります.一方,回路(論理関数)の性質によっては,極端に実行時間を要することもあります.
ループを含む組み合わせ論理回路を入力したときには,ONSETの動作は保証できません.
ONSETのコマンド一覧を表8.1に示します.各コマンドごとのより詳しい説明は,helpコマンドによるオンライン・ヘルプ機能によって,表示させることができます(MS-DOSの more.com がONSETから呼び出される).
<表8.1> ONSETのコマンド一覧