(57)【要約】【課題】論理回路が有する回路遅延の最適化を行なう新たな手法を提供する。【解決手段】  論理回路は複数の回路ブロックが接続されて構成されているものとする。駆動能力値算出手段１１は、該回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、対象回路ブロックの前段である前段回路ブロックの駆動能力値と、該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう。変更手段１２は、駆動能力値算出手段１１によって得られた駆動能力値に基づいて該対象回路ブロックで使用される前記素子の指定の変更を行なう。この構成によれば、対象回路ブロックの前後段として接続されている回路ブロックに関する特性値から対象回路ブロックでの使用に最適な素子の選択が可能となる。【選択図】      図１
2008234674.tif 000002
【特許請求の範囲】
【請求項１】
複数の回路ブロックを有する論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックが有する基本論理素子についての該指定を、該基本論理素子と同一の機能を有し且つ駆動能力値は異なる他の基本論理素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なうシステムであって、
前記論理回路が有する各回路ブロックにおける遅延基準時間に対するディレイの余裕を表すスラック値の算出を行なうスラック値算出手段と、
前記論理回路が有する前記複数の回路ブロックのうち、いずれかの前段回路ブロックの有するいずれかの出力に後段回路ブロックが複数接続されているときに、該後段回路ブロックに各々指定がされていた前記基本論理素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、複数の該後段回路ブロックのうち前記スラック値によって最もディレイの余裕が少ないことが示されているものについての該指定変更前における駆動能力値との比率を算出する駆動能力比率算出手段と、
複数の前記後段回路ブロックのうち、前記スラック値によって最もディレイの余裕が小さいことが示されているものについての駆動能力値であって、前記前段回路ブロックから前記後段回路ブロックにかけての遅延を最小にする駆動能力値を、前記駆動能力比率算出手段によって算出された駆動能力値の比率に基づいて算出する駆動能力値算出手段と、
前記駆動能力値算出手段により算出された駆動能力値に基づいて、複数の前記後段回路ブロックのうち前記スラック値によって最もディレイの余裕が少ないことが示されているものが有する前記基本論理素子の指定を前記他の基本論理素子へ変更する後段回路ブロック変更手段と、
を有することを特徴とする論理回路遅延最適化システム。
【請求項２】
複数の回路ブロックを有する論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックが有する基本論理素子についての該指定を、該基本論理素子と同一の機能を有し且つ駆動能力値は異なる他の基本論理素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう論理回路遅延最適化システムの論理回路遅延最適化方法であって、
前記論理回路遅延最適化システムの有するスラック値算出部が、前記論理回路が有する各回路ブロックにおける遅延基準時間に対するディレイの余裕を表すスラック値を算出するステップと、
前記論理回路が有する前記複数の回路ブロックのうち、いずれかの前段回路ブロックの有するいずれかの出力に後段回路ブロックが複数接続されているときに、前記論理回路遅延最適化システムの有する駆動能力比率算出部が、該後段回路ブロックに各々指定がされていた前記基本論理素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、複数の該後段回路ブロックのうち前記スラック値によって最もディレイの余裕が少ないことが示されているものについての該指定変更前における駆動能力値との比率を算出するステップと、
前記論理回路遅延最適化システムの有する駆動能力値算出部が、複数の前記後段回路ブロックのうち、前記スラック値によって最もディレイの余裕が小さいことが示されているものについての駆動能力値であって、前記前段回路ブロックから前記後段回路ブロックにかけての遅延を最小にする駆動能力値を、前記駆動能力比率算出部によって算出された駆動能力値の比率に基づいて算出するステップと、
前記論理回路遅延最適化システムの有する後段回路ブロック変更部が、前記駆動能力値算出部により算出された駆動能力値に基づいて、複数の前記後段回路ブロックのうち前記スラック値によって最もディレイの余裕が少ないことが示されているものが有する前記基本論理素子の指定を前記他の基本論理素子へ変更するステップと、
を有することを特徴とする論理回路遅延最適化方法。
【請求項３】
複数の回路ブロックを有する論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックが有する基本論理素子についての該指定を、該基本論理素子と同一の機能を有し且つ駆動能力値は異なる他の基本論理素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう論理回路遅延最適化システムのプログラムであって、
前記論理回路遅延最適化システムの有するスラック値算出部が、前記論理回路が有する各回路ブロックにおける遅延基準時間に対するディレイの余裕を表すスラック値を算出するステップと、
前記論理回路が有する前記複数の回路ブロックのうち、いずれかの前段回路ブロックの有するいずれかの出力に後段回路ブロックが複数接続されているときに、前記論理回路遅延最適化システムの有する駆動能力比率算出部が、該後段回路ブロックに各々指定がされていた前記基本論理素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、複数の該後段回路ブロックのうち前記スラック値によって最もディレイの余裕が少ないことが示されているものについての該指定変更前における駆動能力値との比率を算出するステップと、
前記論理回路遅延最適化システムの有する駆動能力値算出部が、複数の前記後段回路ブロックのうち、前記スラック値によって最もディレイの余裕が小さいことが示されているものについての駆動能力値であって、前記前段回路ブロックから前記後段回路ブロックにかけての遅延を最小にする駆動能力値を、前記駆動能力比率算出部によって算出された駆動能力値の比率に基づいて算出するステップと、
前記論理回路遅延最適化システムの有する後段回路ブロック変更部が、前記駆動能力値算出部により算出された駆動能力値に基づいて、複数の前記後段回路ブロックのうち前記スラック値によって最もディレイの余裕が少ないことが示されているものが有する前記基本論理素子の指定を前記他の基本論理素子へ変更するステップと、
をコンピュータに行なわせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路の最適化を行なう技術に関し、特に、論理回路設計の初期段階において論理回路内を伝播する信号に生じる遅延の最適化を行なう技術に関する。
【背景技術】
【０００２】
従来、論理回路の有する回路遅延の最適化、すなわちその論理回路内を伝播する信号に生じる遅延の最適化を計算機に行なわせる技術として、例えば特許文献１や特許文献２に開示されているように、論理回路におけるクリティカルパスを抽出して抽出されたクリティカルパスに対して遅延最適化を施すというものが多数提案されている。
【特許文献１】特開平５−１５１３１０号公報
【特許文献２】特開平１１−１２０２２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述した従来の技術で行なわれているクリティカルパスの抽出には多大な処理量を要するため、高い処理能力を有する計算機を長時間稼動させる必要があった。
また、計算機に行なわせる従来の遅延最適化処理においては、クリティカルパスに対して最適化を施すときに、そのパス上の回路ブロックの後段にファンアウトが複数存在しているときには、その中でクリティカルパス上にあるものについてのみ最適化処理を行っており、そのファンアウトを構成している複数の被駆動ブロック同士の関係は考慮されていなかった。そのため、例えばこれらの被駆動ブロックのうちクリティカルパス上にあるものについての駆動能力（被駆動ブロックの駆動のためにその被駆動ブロックに対して求められる能力）が肥大してしまい、その駆動能力を確保するために被駆動ブロックの実装回路面積が過剰に大きくなってしまうことがあった。
【０００４】
また、従来の処理では、設計対象の論理回路が他の回路と接続される外部入出力端子は、他の回路の外部入出力端子に一般的なバッファの素子が接続されているものとみなして最適化を行っていた。更に、論理回路内部において外部入出力端子に接続される入力ピンについての駆動能力は予め定義されているものに固定されており、駆動能力を変更するにはその入力ピンを含む回路そのものの使用を止めて代わりに他の回路を選択することしか許容されていなかった。
【０００５】
また、従来の処理では、ネット（回路ブロック間を接続する配線）の負荷容量には遅延最適化処理後に行なわれる実装設計によって得られる情報が反映されることはなく、最適化の際に考慮しないか、あるいは概算値を反映するようにしていた。そのため、論理回路の回路遅延の最適化を行なっても実装設計後の回路遅延が改善されないこともあった。
【０００６】
また、従来の処理では、例えばユーザが敢えて遅延最適化を行なうことを望まないなどの理由によって最適化を行なわないようにするブロックを設定するためには、素子毎もしくはパス毎にその指示を行なう必要があった。
【０００７】
また、従来の処理では、遅延最適化を実行するとその対象である回路自体が自動的に変換されて出力されてしまい、最適化による素子の置換の内容を知るには、その実行の前後の論理回路を比較しなければならなかった。
【０００８】
以上の問題を鑑み、論理回路が有する回路遅延の最適化を行なう新たな手法を提供することが本発明が解決しようとする課題である。
【課題を解決するための手段】
【０００９】
図１は本発明の原理構成を示す図である。
本発明は、複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう論理回路遅延最適化システムまたは論理回路遅延最適化方法を前提とする。
【００１０】
ここで、「プリミティブな素子」とは、ここでは論理回路において基本となる素子を意味する語であり、具体的には、インバータ、バッファ、ＡＮＤ、ＯＲ、ＮＡＮＤ、ＮＯＲなどの各種のゲートや、ＲＳ、ＪＫ、Ｄなどの各種のフリップフロップ等の基本的な論理素子を総称したものである。また、「駆動能力値」とは、素子に信号が入力されたときに駆動し得る能力の高さ、つまり、その素子の出力信号によって示されている論理の反転を、その素子の出力に接続されている負荷に抗して行なわせ得る能力の高さを示す値である。
【００１１】
まず、図１の（ａ）に示す第一の構成を説明する。これは、本発明に係る論理回路遅延最適化システム第一の原理構成を示している。
駆動能力値算出手段１１は、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている該素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なうものである。
【００１２】
変更手段１２は、駆動能力値算出手段１１によって得られた駆動能力値に基づいて該対象回路ブロックで使用される前記素子の指定の変更を行なう。
この第一の構成によれば、対象回路ブロックの前後段として接続されている回路ブロックに関する特性値から対象回路ブロックでの使用に最適な素子の選択が可能となる。従って、論理回路中の全ての回路ブロックについて最適な素子の選択を行なうことでクリティカルパスの抽出を行なうことなく論理回路に対する遅延最適化が行なえるので、遅延最適化のために必要となる処理量が低減される。
【００１３】
なお、上述した第一の構成において、変更手段１２が、該変更前に選択されていたものと同一の実装回路面積を要する前記素子を選択するように該変更を行なうようにしてもよい。
【００１４】
この構成によれば、遅延最適化に起因する論理回路の実装面積の増加を防止することが可能となる。
また、上述した第一の構成において、該論理回路に入力された信号若しくは該論理回路内のフリップフロップである回路ブロックから出力された信号が、該対象回路ブロックについての該回路ブロックを通過して出力されるまでに生じ得る遅延量を、該前段回路ブロックまでの遅延量として算出する遅延量算出手段と、該対象回路ブロックに信号を入力するための複数の入力ピンのうち、該対象回路ブロックについての該回路ブロックであって該前段回路ブロックまでの該遅延量が最大であるものが接続されている該入力ピンを該指
定変更の対象である回路ブロックの代表ピンとする代表ピン決定手段と、を更に有し、駆動能力値算出手段１１が、前記対象回路ブロックについての前段回路ブロックのうち、該代表ピンに接続されている該回路ブロックについての駆動能力値に基づいて該算出を行なうようにしてもよい。
【００１５】
この構成によれば、本発明によれば、複数の入力を有する回路ブロックの遅延最適化を適切に行なうことが可能になる。
また、上述した第一の構成において、該論理回路の外部入力端子に接続される素子の駆動能力値が入力される外部素子駆動能力値入力手段を更に有し、駆動能力値算出手段１１が、該外部入力端子に接続されている該対象回路ブロックに要求する駆動能力値の算出を、該外部素子駆動能力値入力手段に入力された駆動能力値が該前段回路ブロックの駆動能力値であるとみなして行なうようにしてもよい。
【００１６】
この構成によれば、現実に想定される外部入力端子に接続される素子の駆動能力を論理回路の遅延最適化により正確に反映できるようになる。
また、上述した第一の構成において、該前段回路ブロックの駆動能力値が入力される前段回路ブロック駆動能力値入力手段を更に有し、駆動能力値算出手段１１が、該前段回路ブロック駆動能力値入力手段に入力された駆動能力値を該前段回路ブロックの駆動能力値とみなして該対象回路ブロックに要求する駆動能力値の算出を行なうようにしてもよい。
【００１７】
この構成によれば、前段回路ブロックまでの回路構成について設計変更が予想されるときであっても、前段回路ブロックの仮の駆動能力値が入力されれば、後段回路ブロックの最適化が先行して行なえるようになる。
【００１８】
また、上述した第一の構成において、該論理回路の外部出力端子に接続される素子によって該論理回路に与えられる負荷容量値が入力される外部素子負荷容量値入力手段を更に有し、駆動能力値算出手段１１が、該外部出力端子に接続されている該対象回路ブロックに要求する駆動能力値の算出を、該外部素子負荷容量値入力手段に入力された負荷容量値が該対象回路ブロックに対して与えられた負荷容量値であるとみなして行なうようにしてもよい。
【００１９】
この構成によれば、現実に想定される外部出力端子に接続される素子による負荷容量を論理回路の遅延最適化により正確に反映できるようになる。
また、上述した第一の構成において、該論理回路の実装設計が行なわれることによって得られる該回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、駆動能力値算出手段１１が、該配線容量取得手段によって取得された配線容量を該負荷容量値に加味して該対象回路ブロックに要求する駆動能力値の算出を行なうようにしてもよい。
【００２０】
この構成によれば、実装設計によってより正確に求められる配線容量を論理回路の遅延最適化に反映できるようになる。
また、上述した第一の構成において、該回路ブロックに対して該指定の変更を行なわないことを示す属性を付与する非最適化属性付与手段を更に有し、変更手段１２は、該非最適化属性付与手段によって該属性が付与されている該対象回路ブロックについては、前記指定の変更を行なわないようにしてもよい。
【００２１】
この構成によれば、ユーザが変更を望まない回路ブロックを該指定の変更を行なう回路ブロックの対象外とすることができるようになるので、遅延最適化の処理に要する処理量が低減され、また、回路設計作業における手戻り（繰り返し作業）の減少が期待できる。
【００２２】
また、上述した第一の構成において、変更手段１２によって該指定の変更が行なわれた該対象回路ブロックにおける該変更の内容を出力する変更内容出力手段を更に有するように構成してもよい。
【００２３】
この構成によれば、遅延最適化の結果を実装設計システム等の他のシステムでの処理に反映することができ、設計効率の改善が可能となる。また、この結果をファイル出力することで変更内容を明確にユーザに告知できるようになるので、後の実装設計等の作業における作業効率の向上が期待できる。
【００２４】
次に図１の（ｂ）に示す第二の構成を説明する。これは、本発明に係る論理回路遅延最適化システム第二の原理構成を示している。
スラック値算出手段２１は、該回路ブロックのスラック値の算出を行なう。なお、回路ブロックのスラック値とは、その回路ブロックまでで生じ得る最大遅延とその回路ブロックに許容されている到達時間（許容到達時間）との差であり、その回路ブロックにおけるタイミングの余裕度を示すものである。
【００２５】
駆動能力値分配手段２２は、該論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている該素子によって定まる該指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配する。なお、「該論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているとき」とは、後段回路ブロックが、該論理回路中の回路ブロックの有するひとつの出力に対して複数のファンアウトを構成していることを示している。
【００２６】
後段回路ブロック駆動能力値算出手段２３は、駆動能力値分配手段２２によって分配された駆動能力値を該後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行なう。
【００２７】
後段回路ブロック変更手段２４は、該算出によって得られた駆動能力値に基づいて該後段回路ブロックで使用される該素子の指定の変更を行なう。
この第二の構成によれば、駆動能力値分配手段２２が、各回路ブロックのスラック値に基づき、タイミングの余裕が少ない後段回路ブロックには駆動能力値を多めに分配し、タイミングの余裕が多い後段回路ブロックには駆動能力値を少なめに分配することで、信号遅延量が大きくなっている信号パスを優先する最適化が可能となり、駆動能力のバランスの良好な遅延最適化が可能となる。
【００２８】
なお、上述した第二の構成において、該論理回路の実装設計が行なわれることによって得られる該回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、後段回路ブロック駆動能力値算出手段２３は、該配線容量取得手段によって取得された配線容量を加味して前記算出を行なうように構成してもよい。
【００２９】
この構成によれば、実装設計によってより正確に求められる配線容量を論理回路の遅延最適化に反映できるようになる。
次に図１の（ｃ）に示す第三の構成を説明する。これは、本発明に係る論理回路遅延最適化システム第三の原理構成を示している。
【００３０】
スラック値算出手段３１は、該回路ブロックのスラック値の算出を行なう。
駆動能力比率算出手段３２は、該論理回路中の回路ブロックの有するひとつの出力が該
回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている該素子によって定まる該指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出する。
【００３１】
第一駆動能力値算出手段３３は、駆動能力比率算出手段３２によって算出された駆動能力値の比率に基づいて、該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出する。
【００３２】
第一後段回路ブロック変更手段３４は、該算出によって得られた駆動能力値に基づいて該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう。
【００３３】
この第三の構成によれば、後段回路ブロックが複数のファンアウトを構成している場合におけるスラック値によって最もタイミングの余裕が少ないことが示されている後段回路ブロックについての該素子の指定の変更の際に、その後段回路ブロックと同時に駆動される他の後段回路ブロックについての特性値が考慮されるので、該素子の選択が適切に行なえるようになる。
【００３４】
なお、上述した第三の構成において、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値と該第一後段回路ブロック変更手段による変更後に指定されている該素子の駆動能力値とよりこれらの駆動能力値の変化率を算出する変化率算出手段と、該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックに要求する駆動能力値を、該変化率に基づいて算出する第二駆動能力値算出手段と、該第二駆動能力値算出手段によって算出された駆動能力値に基づいて該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックについての該指定の変更を行なう第ニ後段回路ブロック変更手段と、を更に有するように構成してもよい。
【００３５】
この構成によれば、後段回路ブロックが複数のファンアウトを構成している場合に、同時に駆動される他の後段回路ブロックの特性値を考慮した該素子の指定の変更が行なわれるので、回路面積の過剰な増大が抑えられる。
【００３６】
また、上述した第三の構成において、該論理回路の実装設計が行なわれることによって得られる該回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、第一駆動能力値算出手段３３は、該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値の算出を、該配線容量取得手段によって取得された配線容量を加味して行なうようにしてもよい。
【００３７】
この構成によれば、実装設計によってより正確に求められる配線容量を論理回路の遅延最適化に反映できるようになる。
なお、前述した本発明に係る論理回路遅延最適化システムを構成する各要素により実現される機能と同様のものをコンピュータに行なわせるためのプログラムを作成し、そのプログラムをコンピュータに実行させることによっても、前述した課題を解決することができる。
【発明の効果】
【００３８】
本発明のいずれの構成によっても、論理回路が有する回路遅延の最適化を行なうことができる。
【発明を実施するための最良の形態】
【００３９】
以下、本発明の実施の形態を図面に基づいて説明する。
図２は、本発明を実施する論理回路遅延最適化装置の構成を示す図である。同図において、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、Ｉ／Ｆ部１０４、入力部１０５、表示部１０６、出力部１０７、記憶部１０８はいずれもバス１０９に接続されており、相互にデータの授受が行なえる。
【００４０】
ＣＰＵ（Central Processing Unit ）１０１はこの論理回路遅延最適化装置（以下、「本装置」という）全体の動作制御を司る中央処理装置である。
ＲＯＭ（Read Only Memory）１０２は、ＣＰＵ１０１によって実行される制御プログラムが予め格納されているメモリであり、ＣＰＵ１０１がこの制御プログラムを実行することによって本装置全体の動作の制御が行なわれる。
【００４１】
ＲＡＭ（Random Access Memory）１０３は、各種のデータの一時的な格納領域として、またＲＯＭ１０２に格納されている制御プログラムをＣＰＵ１０１が実行するときにワークメモリとして必要に応じて使用されるメモリである。
【００４２】
Ｉ／Ｆ（Interface）部１０４は他の機器との間で通信ネットワークを介して行なわれる各種データの授受を制御する。
入力部１０５は外部からの入力を受け取って該入力をＣＰＵ１０１に渡すものであり、例えばキーボードやマウスなどといった本装置のユーザからの指示を受け取る入力装置、あるいはＦＤ（Floppy（登録商標） Disk）、ＣＤ−ＲＯＭ（Compact Disc-ROM）、ＤＶＤ−ＲＯＭ（Digital Versatile Disc-ROM）、ＭＯ（Magneto-Optics）ディスクなどといった可搬型の記録媒体の読出装置を備えて構成される。
【００４３】
表示部１０６はＣＰＵ１０１からの指示に応じた表示を行なうものであり、例えばＣＲＴ（Cathode Ray Tube）やＬＣＤ（Liquid Crystal Display）からなるディスプレイ装置である。
【００４４】
出力部１０７は、ＣＰＵ１０１からの指示に応じた表示を行なうものであり、例えばプリンタ装置や、あるいは上述したＦＤやＭＯディスク等の可搬型の記録媒体の書込装置を備えて構成される。勿論、可搬型の記録媒体についての書込機能と読出機能とを兼ね備えている装置を入力部１０５と出力部１０７との共用の装置として利用することも可能である。
【００４５】
記憶部１０８は本装置による評価対象であるパートプログラムを含む各種のプログラムや、評価対象であるそのパートプログラムに対して期待されている測定精度を示す期待精度情報、更に後述するステージ精度情報を含む各種のデータを記憶するものであり、例えばハードディスク装置を備えて構成される。なお、ＣＰＵ１０１は、ＲＯＭ１０２に格納されている制御プログラムを実行する代わりに、記憶部１７に予め記憶されている制御プログラムを読み出してＲＡＭ１０３に一旦格納しておき、その後ＲＡＭ１０３からその制御プログラムを読み出して実行するようにして本装置全体の動作の制御を行なうようにしてもよい。
【００４６】
本装置は以上の各構成要素を備えて構成される。
なお、図２に示す本装置の構成は多くの標準的なコンピュータが有しているものである
ので、このようなコンピュータで本発明を実施することもできる。
【００４７】
次に、図２に示されているＣＰＵ１０１によって行なわれる制御処理について説明する。なお、これより説明する各処理は、いずれも本装置を制御するための制御プログラムをＣＰＵ１０１が実行することによって実現される。
【００４８】
まず、図３について説明する。図３は、ＣＰＵ１０１によって行なわれる回路遅延最適化処理の処理内容を示すフローチャートである。
まず、Ｓ１０１において、記憶部１０８に予め格納されている回路ブロックのライブラリが参照され、各回路ブロックに使用可能な素子として定義されている各素子の素子面積、素子属性、同一論理素子グループ、素子の入力ピンの駆動能力、寄生容量、及び遅延率の各値が読み出されてＲＡＭ１０３の所定領域に格納される。
【００４９】
続くＳ１０２において、遅延最適化処理の対象である論理回路を示す回路網情報が例えばネット情報の形態で入力部１０５に入力されて取得され、ＲＡＭ１０３の所定領域に格納される。
【００５０】
Ｓ１０３では、その論理回路において、回路ブロックの入力ピンが外部入力端子に直接繋げられている回路ブロック、及びフリップフロップである回路ブロック（以下、回路ブロックを単に「ブロック」とも称する）を１段目としたときの、各ブロックの段数が検出される。
【００５１】
Ｓ１０４では、その論理回路において、前ステップで検出された段数に基づき、外部入力端子もしくはフリップフロップのクロックピンから各ブロックまでの最大遅延が計算される。
【００５２】
Ｓ１０５では、その論理回路における各ブロックからその論理回路における外部出力端子もしくはフリップフロップの入力ピンまでの許容到達時間が計算され、その結果得られた許容到達時間と各ブロックまでの最大パス遅延との差分が計算されてスラック値が求められる。
【００５３】
その後、Ｓ１０６において、論理回路内に存在する全てのブロックに対して、最適化が行なわれたか否かが判定される。ここで、非最適化の属性を持つ素子が割り付けられているブロックは最適化が既に行なわれたものとみなして判定が行なわれる。この判定処理の結果がＹｅｓ、すなわち全てのブロックの最適化が行なわれたと判定されたときにはこの回路遅延最適化処理が終了する。
【００５４】
一方、このＳ１０６の判定処理の結果がＮｏ、すなわち、最適化の行われていないブロックが未だ残っていると判定されたならば、Ｓ１０７へと処理が進んでそれらのうちの段数の小さいブロックからブロック最適化処理が行なわれる。
【００５５】
以下、このブロック最適化処理について説明する。
図４はブロック最適化処理の第一の例の処理内容を示すフローチャートである。
図４において、Ｓ１１１では、最適化処理の対象であるブロック（このブロックを、以下「被最適化ブロック」と称することとする）の前段のブロック（このブロックを、以下「ドライバブロック」と称することとする）について使用することが現在指定されている素子と、前述したライブラリに定義されていたその素子の駆動能力とが照合されて前段ブロックの駆動能力が取得される。ここで、被最適化ブロックにおいて、その入力ピンが外部入力端子に繋げられているものについては、その被最適化ブロックの前段が論理回路中に存在しない為、特に指示がなければ標準的に使用されるインバータによって駆動されて
いるものとして処理が進められる。
【００５６】
Ｓ１１２では、被最適化ブロックが駆動するこことなる後段の全てのブロックについても、各ブロックについて使用することが現在指定されている素子と、前述したライブラリに定義されていたその素子の駆動能力とが照合されて後段ブロック各々の駆動能力が検出され、それらの駆動能力の総和が計算される。この総和の値は被最適化ブロックにとっての負荷容量とみることができる。ここで、被最適化ブロックのうちその出力ピンが外部出力端子に直接繋げられているものについては、被最適化ブロックによって駆動されるブロックが回路中に存在しない為、特に指示がなければ標準的に使用される１個のインバータを駆動するものとして処理が進められる。
【００５７】
Ｓ１１３では、更に、ドライバブロックと被最適化ブロックとについて、各ブロックについて使用することが現在指定されている各素子と、前述したライブラリに定義されていたこれらの各素子の遅延率及び寄生容量が照合され、各ブロックの遅延率及び寄生容量が取得される。
【００５８】
Ｓ１１４では、以上のようにして取得された各ブロックの駆動能力、負荷容量、遅延率より、ドライバブロックから被最適化ブロックにかけての遅延を最小とするような、被最適化ブロックの最適駆動能力が求められる。
【００５９】
Ｓ１１５では、前ステップで求められた最適駆動能力に基づいて、被最適化ブロックでの使用が現在指定されている素子と同じ論理素子グループに属する素子のうち、被最適化ブロックの最適駆動能力を満たす最適な駆動能力を有するものが選択され、被最適化ブロックについての指定がその素子を使用するように置換される。この処理を終えた後には処理が図３へと戻る。
【００６０】
以上の図３及び図４に示されている処理がＣＰＵ１０１によって行なわれることによって論理回路が最適化される具体例を示す。
図５は素子情報が定義されているライブラリの例を示している。
【００６１】
ここで、図５に用いられている用語について説明する。
入力ピンの寄生容量とは、素子の入力ピンから見たその素子内部で定常的に有している容量である。
【００６２】
入力ピンの駆動能力とは、出力ピンに接続される容量であって、その入力ピンに信号が入力されたときに駆動し得る（出力信号の論理の反転を行なわせ得る）容量の最大値であり、これは論理の反転という過渡的な動作を行なわせる能力の高さを示す。
【００６３】
入力ピンの遅延率とは、その入力ピンからその素子の出力ピンへの信号の伝播において、その素子を駆動する（出力信号の論理の反転を行なわせる）と生じる遅延に対し、その入力ピンの駆動能力とその出力ピンについての負荷容量とがその遅延時間にどの程度の影響を及ぼすかを示すものであり、
遅延率＝（単位負荷容量で生じる遅延）×（駆動能力）÷
（最適化対象である論理回路における基準クロックの１周期分の時間）
で求められる。なお、負荷容量とは、出力ピンに接続されている後段の全ての素子を駆動する（信号の論理を反転する）過渡的な動作を行なうときに負荷としてその出力ピンにかかり得る容量をいう。
【００６４】
また、素子の平均遅延率、平均駆動能力、及び平均寄生容量とは、それぞれその素子の有する各入力ピンの遅延率、駆動能力、寄生容量の平均値である。
図５について説明すると、素子名が「ＡＡＡ」なる素子は２入力ＮＡＮＤであり、「２ＮＡＮＤ」グループなる素子グループに属している。また、この素子に対する最適化は「可」とされており、非最適化の属性は有していない。そして、この素子を実装するには５０の面積を要し、その平均遅延率は１．３である。また、この素子はＡ及びＢなる入力ピンとＸなる出力ピンとを有しており、入力ピンＡについては遅延率が１．２、駆動能力が３３．５、寄生容量が９．０と定義され、入力ピンＢについては遅延率が１．４、駆動能力が３２．０、寄生容量が１０．５と定義されている。
【００６５】
前述した図３のＳ１０１の処理においては、この図５に示したようなライブラリが読み出される。
次に図６について説明する。同図はこれより遅延最適化処理を施す回路網の一例を示している。同図に示す回路網において、ブロックＦ及びＩはフリップフロップである。前述した図３のＳ１０２の処理においては、この図６の回路網を示す情報が取得される。
【００６６】
なお、以降の説明においては、図６に示す回路網を「回路網Ａ」と称することとする。
図７は、前述した図３のＳ１０３の処理の実行によって回路網Ａの各ブロックに対して行なわれた段数付けの結果を示す図である。同図において、各ブロックに付された数字が、そのブロックの段数を示している。
【００６７】
図７において、例えばブロックＤの前段にはブロックＡ及びブロックＣの２つが存在する。この２つのブロックのうち段数の大きいブロックＣの段数は２であるから、ブロックＣの段数である２段に１段を加えた３段を、ブロックＤの段数とする。他のブロックＥ、Ｈ、及びＫについても同様に、前段ブロックの段数のうちの最大のものに１段加えた段数をそのブロックの段数とする。
【００６８】
図８は、前述した図３のＳ１０４の処理の実行によって回路網Ａの各ブロックに対して行なわれた遅延計算の結果の例である。同図において、各ブロックに付されている数字が、そのブロックの入力ピンから出力ピンまでのブロック遅延を示す。なお、各ブロックの遅延は次式によって算出される。
【００６９】
【数１】
2008234674.tif 000003
上式において、負荷容量は、自ブロックの出力ピンに接続されている後段の全てのブロックの駆動能力の総和となる。
【００７０】
なお、上式の計算を行なうときには、遅延率、駆動能力、寄生容量として各ブロックの平均遅延率、平均駆動能力、平均寄生容量を用い、また、負荷容量についても、後段の全てのブロックの平均駆動能力の総和を用いる。
【００７１】
図９は、前述した図３のＳ１０４の処理の実行によって図８に示した遅延計算に続いて回路網Ａの各ブロックに対して行なわれた最大遅延の計算結果の例である。同図において、各ブロックに付されている数字が、そのブロックの出力ピンまでに生じ得る最大遅延を示している。
【００７２】
図９において、例えばブロックＤでは、前段のブロックであるブロックＡとブロックＣとのうち、その段までの最大遅延が大きいブロックＡの最大遅延３０に、ブロックＤ自身の遅延５を加えた値３５が、ブロックＤまでの最大遅延となる。なお、ここではブロックの段数は考慮しない。他のブロックＥ、Ｈ、及びＫについても同様に、前段ブロックの最大遅延に自身の遅延を加えた値を、そのブロックまでの最大遅延とする。
【００７３】
図１０は、回路網Ａにおいて外部出力端子もしくはフリップフロップの入力ピンに繋がるブロックまでで許容される到達時間を８０とした場合に、前述した図３のＳ１０５の処理の実行によって各ブロックに対して行なわれた許容到達時間の計算結果の例である。同図において、各ブロックに付されている括弧付の数字は図７で示していた各ブロックの素子遅延を、また、それらの数字の下に示されている括弧無しの数字は許容到達時間を、それぞれ示している。
【００７４】
図１０において、例えばブロックＪにおいて、その出力ピンは外部出力端子と共にブロックＫにも繋げられている。ここで、ブロックＫについて、その許容到達時間が８０であり、その素子遅延が１０であることから、その差分は７０となり、この値がブロックＪからブロックＫへのパスの許容到達時間となる。ここで、ブロックＪから外部出力端子へと繋げられているパスの外部出力端子における許容到達時間は本来８０であるが、ブロックＫへのパスの許容到達時間の制限がより小さいがためにブロックＪの許容到達時間は７０となる。他のブロックについても同様である。
【００７５】
図１１は、前述した図３のＳ１０５の処理の実行によって回路網Ａの各ブロックに対して行なわれたスラック値の計算結果の例である。同図において、各ブロックに付されている数字がそのブロックのスラック値を示している。
【００７６】
ブロックのスラック値とは、そのブロックまでで生じ得る最大遅延とそのブロックに許容されている到達時間（許容到達時間）との差であり、そのブロックにおけるタイミングの余裕度を示すものである。なお、本実施例では、そのブロックについての最大遅延からそのブロックについての許容到達時間を減じた値をスラック値とする。従って、スラック値の符号が正であって大きいほど許容到達時間に対する違反の程度が重度であることを示し、一方、スラック値の符号が負であって小さいほど（スラック値の符号が負であってその絶対値が大きいほど）許容到達時間に対する余裕が大きいことを示すこととなる。
【００７７】
図１１において、例えばブロックＪにおいては、最大遅延は図９より１５であり、許容到達時間は図１０より７０であることが分かるので、その差である−５５がこのブロックのスラック値となる。
【００７８】
次に、前述した図３のＳ１０７で行なわれる図４に示したブロック最適化処理について説明する。
図４のＳ１１４で行なわれる被最適化ブロックの最適駆動能力の算出は次のようにして行なわれる。
【００７９】
ドライバブロックで生じる遅延と被最適化ブロックで生じる遅延との和Ｄは、前述した［数１］式より、
【００８０】
【数２】
2008234674.tif 000004
となる。なお、上式において、
ドライバブロックの遅延＋被最適化ブロックの遅延：Ｄ
ドライバブロックの駆動能力：Ｃ１
ドライバブロックの遅延率：Ｇ１
ドライバブロックの寄生容量：Ｐ１
被最適化ブロックの駆動能力（＝ドライバブロックの負荷容量）：ｃ２
被最適化ブロックの遅延率：Ｇ２
被最適化ブロックの寄生容量：Ｐ２
被最適化ブロックの負荷容量：Ｃ３
クロック単位時間：τ
である。
【００８１】
この［数２］式をｃ２で微分したときの値が０となればこの部分の遅延が最小となる。従って、このようなｃ２の値が最適な駆動能力となる。すなわち、
【００８２】
【数３】
2008234674.tif 000005
となり、このｃ２を最適駆動能力とする。
【００８３】
次に、図４のＳ１１５で行なわれる、前述したようにして求められた最適駆動能力に基づく素子の選択の一例を説明する。
ここでは、被最適化ブロックの素子が属する論理素子グループ名を”INVERTER”であったとし、このグループに含まれる素子名とその駆動能力が下記の表のようにライブラリに定義されていたものとする。
【００８４】
【表１】
2008234674.tif 000006
ここで、例えば、前述した図４のＳ１１４の処理によって求められた被最適化ブロックの最適駆動能力が１４．０であった場合には、上記の［表１］より、その値に最も近い駆動能力１３．０を有している”INV2”が選択される。その結果、Ｓ１１５の処理によって被最適化ブロックの最適素子としてこの選択された素子への置換が行なわれる。
【００８５】
次に図１２について説明する。同図はブロック最適化処理の第二の例の処理内容を示すフローチャートである。この第二の処理は、素子の実装面積に制限を付加することによって、最適化による実装面積の過大な増加を抑制するというものである。
【００８６】
図１２において、図４と同一の処理内容を示すステップには同一の符号を付している。図１２を図４に示すブロック最適化処理の第一の例の処理内容を示すフローチャートと比較すると分かるように、この第二の例は、図４のＳ１１４の処理とＳ１１５の処理との間にＳ１２１からＳ１２３にかけての処理が追加されたものである。
【００８７】
図１２において、Ｓ１１５に続くＳ１２１では、前述した図３のＳ１０２の処理において取得された回路網情報において、この被最適化ブロックに対して回路面積を変更させない指示がなされているか否かが調べられる。
【００８８】
そして、Ｓ１２１の判定結果がＹｅｓ、すなわち上述した指示がなされているのであれば、Ｓ１２２において、前述したライブラリにおいて定義されているその被最適化ブロックでの使用が現在指定されている素子についての素子面積が取得され、続くＳ１２３において、その被最適化ブロックでの使用が現在指定されている素子と同じ論理素子グループに属する素子において、被最適化ブロックの素子面積と同一の面積を持つ素子がその後の素子置換の選択候補とされ、その後はＳ１１５に処理が進む。Ｓ１１５では、その選択候補とされた素子がその被最適化ブロックで使用する素子としての指定となるような使用素子の置換が行なわれる。
【００８９】
一方、Ｓ１２１の判定結果がＮｏ、すなわち上述した指示がなされていないのであれば、処理が直ちにＳ１１５へと進み、図４と同様の処理が行なわれる。
以上の図１２に示されている処理がＣＰＵ１０１によって行なわれることによって論理回路が最適化される具体例を示す。
【００９０】
被最適化ブロックの素子が属する論理素子グループ名が”INVERTER”であったとし、このグループに含まれる素子名とその駆動能力及び素子面積とが下記の表のようにライブラリに定義されていたものとする。
【００９１】
【表２】
2008234674.tif 000007
今、被最適化ブロックでの使用が現在指定されている素子が”INV4”であったとき、その素子面積は、上記の表により３０であることが分かる。また、”INVERTER”グループの素子のうち素子面積が３０のものは、上記の表により”INV3”及び”INV4”の２つであるから、回路面積を変更させない指示がある場合にはこの２つが素子置換の選択候補となる。
【００９２】
ここで、計算によって求められた被最適化ブロックの最適駆動能力が１４．０であった場合には、その駆動能力に近い”INV3”が被最適化ブロックの最適素子として選択されて置換される。この結果、被最適化ブロックの回路面積は最適化が行なわれても保持され、実装面積の過大な増加が抑制される。
【００９３】
次に図１３について説明する。同図は代表ピン選択処理の処理内容を示すフローチャートである。この処理は、被最適化ブロックが複数の入力ピンを有しているときの最適化を行なうための処理であり、従来のクリティカルパス上の入力ピンについて行なう手法に代えて、その被最適化ブロックの前段のブロックであって遅延量の最も大きなブロックが接続されている入力ピンについて駆動能力の最適化を行なうようにするものである。
【００９４】
この図１３の処理は、前述した図４若しくは図１２のブロック最適化処理におけるＳ１１１の処理の際に実行される。
まず、Ｓ１３１において、被最適化ブロックが信号多入力のブロックであるか否か、すなわち入力ピンを複数持つブロックであるか否かが判定される。そして、この判定結果がＹｅｓのときにのみ、Ｓ１３２において、各入力ピンがつながっている前段の各ブロックについての最大遅延の値が取得される。
【００９５】
続くＳ１３３では、それらの値のうちで最大であるもののブロックに繋げられている入力ピンが、その被最適化ブロックの代表ピンとして選択される。なお、Ｓ１３１の判定結果がＮｏ、すなわち被最適化ブロックが入力ピンを１つのみ有している場合は、そのピンが代表ピンとされる。
【００９６】
以上の代表ピン選択処理がＣＰＵ１０１によって行なわれることによって被最適化ブロックの代表ピンが選択される具体例を示す。
前述した図９において、被最適化ブロックとして例えばブロックＤについて注目する。
【００９７】
ブロックＤはａ及びｂの入力ピンを有している。そして、これらの２つの入力ピンにつ
ながる前段のブロックは、ブロックＡ及びブロックＣである。これらのブロックまでの最大遅延の値はそれぞれ３０、２５であることが図９には示されており、その値はブロックＡの方が大きい。よって、ブロックＤにおいては、ブロックＡに繋げられているピンａが代表ピンとなる。
【００９８】
次に、例えばブロックＣが被最適化ブロックである場合について考える。ブロックＣの入力ピンはａのみであるから、このピンａがブロックＣの代表ピンとなる。
次に図１４について説明する。同図は駆動能力分配処理の処理内容を示すフローチャートである。この処理は、後段に複数のブロックが繋げられている、つまり複数のファンアウトを有する被最適化ブロックの最適化を行なった後に、これらの後段の各ブロックに指定されていた駆動能力の違いをスラック値（タイミングの余裕度）に基づいて平準化させることによって、これらの各ブロックに対して後に行なわれる最適化において要求することとなる駆動能力が過剰に見込まれることを抑制させるものである。
【００９９】
この図１４の処理は、前述した図３の回路遅延最適化処理におけるＳ１０７のブロック最適化処理の直後に実行される。
図１４において、Ｓ１４１では、被最適化ブロックの後段のブロックのうち、その被最適化ブロックの出力ピンに接続されている入力ピンがそのブロックの代表ピンであるものが全て検出される。以下の説明においては、この処理によって検出された後段のブロックを「ブランチブロック」と称することとする。
【０１００】
続くＳ１４２において、ブランチブロックが複数検出されたか否かが判定され、この判定結果がＹｅｓならばＳ１４３に処理が進む。一方、この判定結果がＮｏならばブランチブロックの駆動能力の分配は行なわれずにこのままこの駆動能力分配処理が終了する。
【０１０１】
Ｓ１４３では、各ブランチブロックの代表ピンについて、それらの駆動能力が前述したライブラリでの定義から取得され、それらの合計値が算出される。
Ｓ１４４では、前述した図３のＳ１０５の処理によって既に算出されている、各ブランチブロックについてのスラック値が取得され、続くＳ１４５において取得されたスラック値の平均値（スラック平均値）が算出される。
【０１０２】
Ｓ１４６では、算出されたスラック平均値と各ブランチブロックのスラック値との差分に基づき、且つブランチブロック全体での駆動能力を保持するような駆動能力が各ブランチブロックについて算出され、各ブランチブロックに分配される。
【０１０３】
以上の駆動能力分配処理によって求められた駆動能力が各ブランチブロックについての最適化前の駆動能力として設定され、後にこれらのブランチブロックについての最適化処理が行なわれる。
【０１０４】
駆動能力分配処理がＣＰＵ１０１によって行なわれることによってブランチブロックに対する駆動能力の分配が行なわれる具体例を示す。
図１５はこれより駆動能力分配処理を施す回路網の一例を示している。同図において、各ブロックの入力ピンａ及びｂのうち黒丸印が付されているものはそのブロックの代表ピンであることを示している。
【０１０５】
なお、以降の説明においては、図１５に示す回路網を「回路網Ｂ」と称することとする。
回路網Ｂにおいて、被最適化ブロックとしてブロックＡが選択されていた場合、そのブロックＡの出力ピンｘはブロックＣ、ブロックＤ、及びブロックＥのいずれも入力ピンａに繋げられている。ここで、ブロックＣ、ブロックＤ、及びブロックＥの入力ピンａはい
ずれも代表ピンであることが図１５に示されている。よって、被最適化ブロックＡに対するブランチブロックはブロックＣ、ブロックＤ、及びブロックＥとなる。
【０１０６】
また、回路網Ｂにおいて、被最適化ブロックとしてブロックＢが選択されていた場合、そのブロックＡの出力ピンｘは、ブロックＤ及びブロックＥのいずれも入力ピンｂとブロックＦの入力ピンａとに繋げられている。ここで、ブロックＤ及びブロックＥの入力ピンｂはいずれも代表ピンではなく、ブロックＦの入力ピンａは代表ピンであることが図１５に示されている。よって、被最適化ブロックＢに対するブランチブロックはブロックＦのみとなる。
【０１０７】
被最適化ブロックＡに対するブランチブロックＣ、Ｄ、及びＥについての説明を続ける。これらのブランチブロックの素子名、代表ピンの駆動能力、スラック値はそれぞれ下記の表に示すものであったとする。
【０１０８】
【表３】
2008234674.tif 000008
上記の表において、これらのブランチブロックの駆動能力の合計値は４８．０であり、スラック平均値は−４０．０である。
【０１０９】
ここで、スラック値が平均値以上、すなわちタイミングの余裕の少ないブランチブロックについてはその駆動能力を次のように計算する。
【０１１０】
【数４】
2008234674.tif 000009
上式において、
駆動能力計算値：Ｃ’
そのブランチブロックについて現在指定されている駆動能力：Ｃ
そのブランチブロックのスラック値：Ｓ
ブランチブロック全体のスラック平均値：Ｓａｖ
補正係数：ｋ
例えば補正係数ｋを０．０１とすると、［表３］において、スラック値が平均値以上、すなわちタイミングの余裕の少ないブランチブロックであるブロックＣについてはＣ’＝１５．６となり、ブロックＣに対して現在指定されているものよりも高めに駆動能力が分配される。なお、補正係数ｋは経験や実験での実測結果等に基づいて適切に設定される。
【０１１１】
次に、スラック値が平均値よりも小さい、すなわちタイミングの余裕が多いブランチブロックについてはその駆動能力を次のように計算する。
まず、スラック値が平均値よりも小さいブランチブロックについての駆動能力計算値Ｃ’を用いて下記の式を計算する。
【０１１２】
【数５】
2008234674.tif 000010
上式において、Ｃｄｉｆｆは駆動能力差分の和である。
【０１１３】
［表３］においては、Ｃｄｉｆｆは２．６と算出される。
次に、スラック値が平均値よりも小さいブランチブロックについて、駆動能力×（スラック平均値−スラック値）の総和Ｓｄｉｆｆを次式より算出する。
【０１１４】
【数６】
2008234674.tif 000011
［表３］において、スラック値が平均値よりも小さいブランチブロックはブロックＤ及びブロックＥであり、このときのＳｄｉｆｆは３３５．０と算出される。
【０１１５】
以上のようにして取得されたＣｄｉｆｆ及びＳｄｉｆｆの値に基づき、スラック値が平均値より小さいブロックの駆動能力を、下記の式に沿って算出する。
【０１１６】
【数７】
2008234674.tif 000012
［表３］において、スラック値が平均値よりも小さい、すなわちタイミングの余裕の多いブランチブロックであるブロックＤ及びブロックＥについて、ブロックＤはＣ’＝１８．３、ブロックＥはＣ’＝１４．１となり、ブロックＤ及びブロックＥに対して現在指定されているものよりも低めに駆動能力が分配される。このように、ブロックＤ及びブロックＥについては要求される駆動能力が抑制されたので、実装面積の低減化等が期待できる。
【０１１７】
次に図１６について説明する。同図は駆動能力比率計算処理の処理内容を示すフローチャートである。この処理は、被最適化ブロックについてのブランチブロック全体の駆動能力と、そのブランチブロックの各々に指定されているものの中での最小の駆動能力との比率（駆動能力比率）を算出する処理であり、後に説明する処理においてはこの駆動能力比率の値を利用してブランチブロックの最適化を行なう。
【０１１８】
図１６において、図１４と同一の処理内容を示すステップには同一の符号を付している。図１６を図１４に示す駆動能力分配処理の処理内容を示すフローチャートと比較すると分かるように、この図１６に示されている処理は、図１４のＳ１４５及びＳ１４６の処理がＳ１５１及びＳ１５２の処理に置き換えられたものである。
【０１１９】
なお、この駆動能力比率計算処理は、被最適化ブロックに対するブロック最適化が完了した後に、その被最適化ブロックの後段のブランチブロックに対して行なわれる処理であり、前述した図３の回路遅延最適化処理におけるＳ１０７のブロック最適化処理の後であって、前述した図１４の駆動能力分配処理の直後に実行される。
【０１２０】
図１６において、Ｓ１４４の処理に続くＳ１５１では、各ブランチブロックのうちからスラック値が最も大きい、すなわちタイミングの余裕が最も少ないブランチブロックが選
択される。
【０１２１】
続くＳ１５２では、既に計算されているブランチブロック全体の駆動能力の和と、最大のスラック値を有するブランチブロックの駆動能力との比率、すなわち駆動能力比率が計算される。
【０１２２】
以上の駆動能力比率計算処理がＣＰＵ１０１によって行なわれることによって駆動能力比率が計算される具体例を示す。
前述した図１５の回路網Ｂ中のブロックＡについてのブランチブロックＣ、Ｄ、及びＥにおいて、それぞれの素子名、駆動能力、スラック値、駆動能力計算値（前述した駆動能力分配処理によって算出された値）が下記の表の通りであったとする。
【０１２３】
【表４】
2008234674.tif 000013
上記の表より、これらブランチブロックの駆動能力の和は４８．０であり、また、これらブランチブロックの中でスラック値が最も大きい、すなわちタイミングの余裕が少ないのはスラック値−２０．０のブロックＣであることは容易に分かる。
【０１２４】
［表４］において、ブロックＣの駆動能力計算値は１５．６である。従ってこのときの駆動能力比率ｍは、
ｍ＝４８．０／１５．６＝３．１
と求められる。
【０１２５】
次に、この駆動能力比率を用いたブランチブロックの最適化について説明する。図１７は、この駆動能力比率を用いて行なわれる駆動能力変化率反映処理の処理内容を示すフローチャートである。
【０１２６】
この駆動能力変化率反映処理は、被最適化ブロックに対するブロック最適化が完了した後に、その被最適化ブロックの後段のブランチブロックに対して行なわれる処理であり、前述した図３の回路遅延最適化処理におけるＳ１０７のブロック最適化処理の後であって、前述した図１４の駆動能力分配処理の直後に実行される。
【０１２７】
図１７において、図１６と同一の処理内容を示すステップには同一の符号を付している。図１７を図１６に示す駆動能力比率計算処理の処理内容を示すフローチャートと比較すると分かるように、この図１７に示されている処理は、図１６のＳ１５２の処理に続いてＳ１５３からＳ１５８にかけての処理が追加されたものである。
【０１２８】
Ｓ１５２に続くＳ１５３では、同一のドライブブロックに繋げられているブランチブロックのうちスラック値が最大であり、最もタイミングの余裕が少ないものの最適駆動能力が計算される。なお、このときに、Ｓ１５２の処理によって算出された駆動能力比率が利
用される。
【０１２９】
Ｓ１５４では、前ステップで求められた最適駆動能力に基づいて、そのブランチブロックでの使用が現在指定されている素子と同じ論理素子グループに属する素子のうち、そのブランチブロックの最適駆動能力を満たす最適な駆動能力を有するものが選択され、そのブランチブロックについての指定がその素子を使用するように置換される。
【０１３０】
Ｓ１５５では、スラック値が最大のブランチブロックについて、Ｓ１５４の処理において置換された素子の駆動能力と、その置換前に設定されていた駆動能力とからその駆動能力の変化率が計算される。
【０１３１】
その後、Ｓ１５６において、同一のドライブブロックに繋げられている全てのブランチブロックに対して最適化が行なわれたか否かが判定される。この判定処理の結果がＹｅｓ、すなわち全てのブランチブロックの最適化が行なわれたと判定されたときにはこの駆動能力最適化反映処理が終了する。
【０１３２】
一方、このＳ１５６の判定処理の結果がＮｏ、すなわち、最適化の行われていないブランチブロックが未だ残っていると判定されたならば、Ｓ１５７へと処理が進む。
Ｓ１５７では、最適化を行なうブランチブロックの駆動能力と、スラック値が最大のブロックについての駆動能力変化率とに基づいてそのブランチブロックについての最適駆動能力が計算される。
【０１３３】
続くＳ１５８では、前ステップで求められた最適駆動能力に基づいて、ブランチブロックでの使用が現在指定されている素子と同じ論理素子グループに属する素子のうち、そのブランチブロックの最適駆動能力を満たす最適な駆動能力を有するものが選択され、そのブランチブロックについての指定がその素子を使用するように置換される。この処理を終えた後にはＳ１５６へと処理が戻り、上述した処理が繰り返される。
【０１３４】
以上の駆動能力最適化反映処理について、更に詳説する。
ます、前述した駆動能力比率、すなわちブランチブロック全体の駆動能力をスラック値が最大のブランチブロックの駆動能力で割った値をｍとする。
【０１３５】
図１７のＳ１５３の処理においてスラック値が最大のブランチブロックについての最適駆動能力を計算するときには、前述した図４のＳ１１４の処理のために用いた［数２］式に代えて下記の式を用いる。
【０１３６】
【数８】
2008234674.tif 000014
なお、上式において、
最適化済ブロックの遅延＋被最適化ブランチブロックの遅延：Ｄ
最適化済ブロックの駆動能力：Ｃ１
最適化済ブロックの遅延率：Ｇ１
最適化済ブロックの寄生容量：Ｐ１
被最適化ブランチブロックの駆動能力：ｃ２
被最適化ブランチブロックの遅延率：Ｇ２
被最適化ブランチブロックの寄生容量：  Ｐ２
被最適化ブランチブロックの負荷容量：  Ｃ３
クロック単位時間：  τ
被最適化ブランチブロック分を除いた最適化済ブロックの負荷容量の和
（ネットの負荷容量も含む）：Ｃｏｔｈｅｒ
である。従って、最適化済ブロックの負荷容量は、ｃ２×ｍ＋Ｃｏｔｈｅｒで表されることになる。
【０１３７】
この［数８］式をｃ２で微分したときの値が０となればこの部分の遅延が最小となる。従って、このようなｃ２の値が最適な駆動能力となる。すなわち、
【０１３８】
【数９】
2008234674.tif 000015
となり、このｃ２を被最適化ブランチブロックの最適駆動能力とする。
【０１３９】
図１７のＳ１５５の処理における駆動能力の変化率の計算では、Ｓ１５４の処理において最適化によって置換された素子の駆動能力をその置換前の素子の駆動能力計算値で除算した結果の値を駆動能力変化率とする。なお、ここでは、駆動能力変化率を係数Ｇとして表すこととする。
【０１４０】
［表４］において、ブロックＣは最適化前の駆動能力計算値が１５．６である。ここで、ブロックＣに対して施された最適化によって置換された素子の駆動能力が１６．０であったとすると、係数Ｇの値は１．０２６となる。
【０１４１】
一方、スラック値が最小ではない他のブランチブロックの最適駆動能力は、駆動能力計算値に係数Ｇを掛けて求める。例えば、スラック値が最小でないブランチブロックであるブロックＤの駆動能力計算値は、［表４］より１８．３であることが分かる。ここで、係数Ｇを１．０２６とすると、このブロックＤの最適駆動能力は１８．８となる。よって、ブロックＤの最適化では、このブロックＤに現在指定されている素子と同一の論理素子グループに属し、前述した計算により求められた最適駆動能力に最も近い駆動能力を持つ素子への置換が行なわれる。
【０１４２】
次に図１８について説明する。同図はピン駆動能力指示検出処理の処理内容を示すフローチャートである。この処理は、遅延最適化を行なうときに、その対象である論理回路網の入力端子に接続される外部の素子の入力ピンの駆動能力値や論理回路網の出力端子に接続される外部の素子の入力ピンの負荷容量値（すなわち駆動能力値）、あるいは回路内部のブロックの入力ピンについての駆動能力値について、前述したライブラリなどで定義されている所定のものを適用させる代わりに、ユーザが本装置へ任意に指示できるようにするものであり、実際に想定される外部端子への接続の再現や、回路構成の変更が予定される箇所でのその変更を見込んだ上での最適化を可能とするためのものである。
【０１４３】
この図１８の処理は、前述した図３の回路遅延最適化処理におけるＳ１０１及びＳ１０２の処理により最適化の対象である回路網についての情報が読み込まれた直後に実行される。
【０１４４】
図１８において、まず、Ｓ１６１では、ピンの駆動能力についての外部指示が入力部１０５になされたか否かが判定され、この判定の結果がＹｅｓならばＳ１６２に処理が進む
。一方、この判定の結果がＮｏならばこのまま何もせずにこのピン駆動能力指示検出処理を終了する。
【０１４５】
Ｓ１６２では、入力部１０５へ指示された駆動能力の読み込みが行なわれる。
Ｓ１６３では、入力部１０５へ指示された全てのピンについて、後述するＳ１６４の検索処理が行なわれたか否かが判定され、この判定の結果がＹｅｓならばこのピン駆動能力指示検出処理を終了する。一方この判定の結果がＮｏならばＳ１６４に進む。
【０１４６】
Ｓ１６４では入力部１０５へ指示されたピンが最適化対象である論理回路網から検索され、続くＳ１６５でそのピンがその論理回路網に存在するか否かが判定される。そして、このＳ１６５の判定結果がＹｅｓのときにのみ、Ｓ１６６において、そのピンの駆動能力値が入力部１０５へ指示された値に変更されて後に行なわれる最適化の処理に反映される。その後は処理がＳ１６３へ戻って上述した処理が繰り返される。
【０１４７】
以上の図１８に示されている処理がＣＰＵ１０１によって行なわれることによってピンの駆動能力の指示が反映される具体例を示す。
まず、前述した図１５の回路網Ｂにおいて、各入力ピンの駆動能力がライブラリにおいて下記の表のように定義されていたとする。
【０１４８】
【表５】
2008234674.tif 000016
このとき、外部指示で“ブロックＣ−ａ＝１０．０”なる指示がなされた場合、ブロックＣ−ａピンには、ライブラリでは１３．０が定義されているが、これに代えて最適化前の駆動能力値として１０．０が設定される。同様に“回路網Ｂ−ａ＝１３．０”なる指示がなされた場合にも、回路網Ｂ−ａピンには駆動能力値として１３．０が設定される。この指示はすなわち、ブロックＡ−ａピンが駆動能力１３．０のブロックで駆動されているとみなされることとなる。
【０１４９】
また、もしも“ブロックＢ−ｂ＝１６．０”のような指示がなされた場合には、ブロックＢ−ｂピンは回路網Ｂには存在しないので、無視される。
次に図１９について説明する。同図はネット負荷容量反映処理の処理内容を示すフローチャートである。この処理は、遅延の最適化を、ネット容量、すなわちブロック間の配線に起因して生じる容量を反映させて行なうことを可能とするための処理である。なお、ネット容量は、例えば論理回路の実装設計をある程度行なった時点で再度回路遅延の最適化を行なうような場合に、その実装設計の情報から部分的に取得することが可能である。
【０１５０】
この図１９の処理は、前述した図３の回路遅延最適化処理におけるＳ１０１及びＳ１０２の処理により最適化の対象である回路網についての情報が読み込まれた直後に実行される。
【０１５１】
図１９において、まず、Ｓ１７１では、ネットの負荷容量を遅延最適化に反映させる指示が入力部１０５になされたか否かが判定され、この判定の結果がＹｅｓならばＳ１７２に処理が進む。一方、この判定の結果がＮｏならばこのまま何もせずにこのネット負荷容量反映処理を終了する。
【０１５２】
Ｓ１７２では実装情報を持つデータベースから最適化の対象である回路網中の各ネットの負荷容量の情報が抽出され、続くＳ１７３においてその情報が通信ネットワークを介してＩ／Ｆ部１０４より読み込まれる。
【０１５３】
Ｓ１７４では、取得された全てのネット容量の情報について、後述するＳ１７５の検索処理が行なわれたか否かが判定され、この判定の結果がＹｅｓならばこのネット負荷容量反映処理を終了する。一方この判定の結果がＮｏならばＳ１７５に進む。
【０１５４】
Ｓ１７５では取得されたネット容量の情報に対応するネット（配線）が最適化対象である論理回路網から検索され、続くＳ１７６でそのネットがその論理回路網に存在するか否かが判定される。そして、このＳ１７６の判定結果がＹｅｓのときにのみ、Ｓ１７７において、そのネットの負荷容量が、標準的に用いられている値から取得された情報に示されている値へと変更されて後に行なわれる最適化の処理に反映される。その後は処理がＳ１７４へ戻って上述した処理が繰り返される。
【０１５５】
以上の図１９に示されている処理がＣＰＵ１０１によって行なわれることによってネットの負荷容量が反映される具体例を示す。
まず、前述した図１５の回路網Ｂについての実装情報を持つデータベースＤＢ１の存在を想定する。
【０１５６】
このデータベースＤＢ１は、回路網ＢにおけるネットＮｅｔＡ及びＮｅｔＢの実装配線情報を有しており、それと共にそれらのネットの負荷容量情報Ｃｎｅｔａ及びＣｎｅｔｂをも有している。図１９のＳ１７２の処理によってこれらの情報が抽出されると、下記のような形式のテキスト情報がデータベースＤＢ１から本装置へと送られてくる。
【０１５７】
ＮｅｔＣａｐａｃｉｔｙ｛
ＮｅｔＡ＝Ｃｎｅｔａ；
ＮｅｔＢ＝Ｃｎｅｔｂ；
… … …
｝
ＣＰＵ１０１では上記の情報が読み込まれて解釈される。そしてＮｅｔＡには負荷容量Ｃｎｅｔａが、また、ＮｅｔＢには負荷容量Ｃｎｅｔｂが設定される。
【０１５８】
これらの値が設定されると、例えばブロックＡの負荷容量は、ブロックＣ−ａ、ブロックＤ−ａ、ブロックＥ−ａの各々の駆動能力とネット負荷容量Ｃｎｅｔａとの和となる。
次に図２０について説明する。同図はブロック非最適化指示検出処理の処理内容を示すフローチャートである。この処理は、遅延最適化を行なうときに、その対象である論理回路網のうちのブロックについてはユーザの指示に応じて最適化を行なわないようにすることを可能とする処理であり、例えば論理回路の実装面積及び信号遅延に余裕があるときには敢えて新たな実装設計を行なわずに既に設計済みのものをそのまま流用するときなどに有効なものである。
【０１５９】
この図２０の処理は、前述した図３の回路遅延最適化処理におけるＳ１０１及びＳ１０２の処理により最適化の対象である回路網についての情報が読み込まれた直後に実行される。
【０１６０】
図２０において、まず、Ｓ１８１では、ブロックの非最適化についての外部指示、すなわち一部の回路ブロックについて最適化を行なわない旨の外部指示が入力部１０５になされたか否かが判定され、この判定の結果がＹｅｓならばＳ１８２に処理が進む。一方、この判定の結果がＮｏならばこのまま何もせずにこのブロック非最適化指示検出処理を終了する。
【０１６１】
Ｓ１８２では、入力部１０５へ指示された最適化を行なわないブロックを示す情報の読み込みが行なわれる。
Ｓ１８３では、入力部１０５へ指示された全てのブロックについて、後述するＳ１８４の検索処理が行なわれたか否かが判定され、この判定の結果がＹｅｓならばこのブロック非最適化指示検出処理を終了する。一方この判定の結果がＮｏならばＳ１８４に進む。
【０１６２】
Ｓ１８４では入力部１０５へ指示されたブロックが最適化対象である論理回路網から検索され、続くＳ１８５でそのブロックがその論理回路網に存在するか否かが判定される。そして、このＳ１８５の判定結果がＹｅｓのときにのみ、Ｓ１８６において、非最適化を示す属性がそのブロックに設定される。その後は処理がＳ１８３へ戻って上述した処理が繰り返される。
【０１６３】
以上のブロック非最適化指示検出処理が実行されるときには、前述した図３の回路遅延最適化処理の処理内容が図２１に示すように変更される。
図２１を参照すると分かるように、この変更は図３のＳ１０６の処理とＳ１０７の処理との間にＳ１８７の処理として、最適化対象のブロックに非最適化の属性が設定されているか否かの判定処理が挿入されるというものである。そして、この変更により、この判定処理の結果がＹｅｓのときにのみ、Ｓ１０７のブロック最適化処理が実行されるようになる。
【０１６４】
以上の処理がＣＰＵ１０１によって行なわれることによって最適化対象の論理回路の一部のブロックについて最適化が行なわれなくなる具体例を示す。
前述した図１５の回路網Ｂにおいて、例えばブロックＤが非最適化ブロックとして外部指示されると、ブロックＤには非最適化の属性が付与される。このときには、ブロックＡにおける負荷容量としてブロックＤ−ａの駆動能力は加算されるが、ブロックＡについてのブランチブロックにはブロックＤは含まれず、ブロックＣ、Ｅのみとする。つまり、ブロックＤについては最適化処理が行なわれない。
【０１６５】
次に図２２について説明する。同図は素子変更情報出力処理の処理内容を示すフローチャートである。この処理は、回路の遅延最適化によって使用する素子に変更が生じたときにその変更内容をユーザに提示可能とするものであり、変更内容を明確にユーザに告知で
きるようにすることで後の実装設計等の作業における作業効率の向上を目指すものである。
【０１６６】
なお、この素子変更情報出力処理は、Ｓ１９１の処理として示すように、前述した図３の回路遅延最適化処理に続けて実行される。
Ｓ１９１に続くＳ１９２では、使用素子の変更情報が格納される変更情報ファイルの出力指示がユーザによって入力部１０５になされているか否かが判断され、この判定の結果がＹｅｓならばＳ１９３に処理が進む。一方、この判定の結果がＮｏならば直ちにこの素子変更情報出力処理が終了する。
【０１６７】
Ｓ１９３では、遅延最適化の対象である論理回路における全てのブロックについて、後述するＳ１９４からＳ１９６にかけての処理が行なわれたか否かが判定され、この判定の結果がＹｅｓならばこの素子変更情報出力処理を終了する。一方この判定の結果がＮｏならばＳ１９４に進む。
【０１６８】
Ｓ１９４では、処理対象のブロックについてそのブロックに付されている名称（固有名）が取得され、続くＳ１９５では、そのブロックで最適化の前に使用することが指定されていた素子の素子名とそのブロックで最適化によって使用することとされた素子の素子名とが取得される。
【０１６９】
Ｓ１９６では、上述したＳ１９５及びＳ１９６の処理によって取得された固有名及び素子名を関連付けて変更情報ファイルに格納する。その後はＳ１９３へと処理が戻って上述した処理が繰り返される。
【０１７０】
以上の図２２に示されている処理がＣＰＵ１０１によって行なわれることによって使用する素子の変更情報が出力される具体例を示す。
前述した図１５の回路網Ｂについて、前述した回路遅延最適化処理の結果、下記の表のように素子の置換が行なわれたものとする。
【０１７１】
【表６】
2008234674.tif 000017
図２２のＳ１９６の処理では、上記の表に示されている情報から、例えば次のような形式で変更情報ファイルに格納して出力する。
【０１７２】
Ｃｈａｎｇｅ  ブロックＡ：  ＩＮＶ４，ＩＮＶ５；
Ｃｈａｎｇｅ  ブロックＢ：  ＩＮＶ１，ＩＮＶ２；
Ｃｈａｎｇｅ  ブロックＣ：  ＩＮＶ２，ＩＮＶ３；
Ｃｈａｎｇｅ  ブロックＤ：  ２ＮＡＮＤ４，２ＮＡＮＤ４；
Ｃｈａｎｇｅ  ブロックＥ：  ２ＮＯＲ３，２ＮＯＲ２；
Ｃｈａｎｇｅ  ブロックＦ：  ＩＮＶ３，ＩＮＶ１；
なお、本発明を標準的なコンピュータで実施するには、以上までに説明した本発明の実施形態において本装置の有するＣＰＵ１０１が行なっていたものと同様の処理をそのコンピュータに行なわせるための制御プログラムを作成し、その制御プログラムをコンピュータに読み込ませて実行させることにより可能となる。
【０１７３】
また、このような制御プログラムをコンピュータで読み取り可能な記録媒体に記録させ、そのプログラムを記録媒体からコンピュータに読み出させて実行させることによって本発明をコンピュータで実施することも可能である。
【０１７４】
記録させた制御プログラムをコンピュータで読み取ることの可能な記録媒体の例を図２３に示す。同図に示すように、記録媒体としては、例えば、コンピュータ２０１に内蔵若しくは外付けの付属装置として備えられるＲＯＭやハードディスク装置などのメモリ２０２、あるいはフロッピー（登録商標）ディスク、ＭＯ（光磁気ディスク）、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどといった可搬型記憶媒体２０３等が利用できる。また、記録媒体は回線２０４を介してコンピュータ２０１と接続される、プログラムサーバ２０５として機能するコンピュータが備えている記憶装置２０６であってもよい。この場合には、制御プログラムを表現するデータ信号で搬送波を変調して得られる伝送信号を、プログラムサーバ２０５から伝送媒体である回線２０４を通じて伝送するようにし、コンピュータ２０１では受信した伝送信号を復調して制御プログラムを再生することで当該制御プログラムを実行できるようになる。
【０１７５】
以上詳細に説明したように、複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なうときに、本発明は、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、該指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている該回路ブロックに指定がされている該素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行ない、該算出によって得られた駆動能力値に基づいて該対象回路ブロックで使用される前記素子の指定の変更を行なうようにする。
【０１７６】
こうすることにより、対象回路ブロックの前後段として接続されている回路ブロックに関する特性値から対象回路ブロックでの使用に最適な素子の選択が可能となる。その結果、論理回路中の全ての回路ブロックについて最適な素子の選択を行なうことでクリティカルパスの抽出を行なうことなく論理回路に対する遅延最適化が行なえるので、遅延最適化のために必要となる処理量が低減される。
【０１７７】
あるいは、本発明は、該回路ブロックのスラック値の算出を行ない、該論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている該素子によって定まる該指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック
値の差異に基づいて該後段回路ブロックの各々に分配し、該後段回路ブロックの各々に分配された駆動能力値を該後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行ない、該算出によって得られた駆動能力値に基づいて該後段回路ブロックで使用される該素子の指定の変更を行なうようにする。
【０１７８】
こうすることにより、各回路ブロックのスラック値に基づき、タイミングの余裕が少ない後段回路ブロックには駆動能力値を多めに分配し、タイミングの余裕が多い後段回路ブロックには駆動能力値を少なめに分配すると、信号遅延量が大きくなっている信号パスを優先する最適化が可能となり、駆動能力のバランスの良好な遅延最適化が可能となる。
【０１７９】
もしくは、本発明は、該回路ブロックのスラック値の算出を行ない、該論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている該素子によって定まる該指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出し、該比率に基づいて、該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出し、該比率に基づいて算出された駆動能力値に基づいて該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての該指定の変更を行なうようにする。
【０１８０】
こうすることにより、後段回路ブロックが複数のファンアウトを構成している場合におけるスラック値によって最もタイミングの余裕が少ないことが示されている後段回路ブロックについての該素子の指定の変更の際に、その後段回路ブロックと同時に駆動される他の後段回路ブロックについての特性値が考慮されるので、該素子の選択が適切に行なえるようになる。
【０１８１】
以上のように、本発明のいずれの構成によっても、論理回路が有する回路遅延の最適化を行なうことができる。
【０１８２】
（付記１）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なうシステムであって、
回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう駆動能力値算出手段と、
前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう変更手段と、
を有することを特徴とする論理回路遅延最適化システム。
（付記２）  前記変更手段は、前記変更前に選択されていたものと同一の実装回路面積を要する前記素子を選択するように該変更を行なうことを特徴とする付記１に記載の論理回路遅延最適化システム。
（付記３）  前記論理回路に入力された信号若しくは該論理回路内のフリップフロップである回路ブロックから出力された信号が、前記対象回路ブロックについての前段回路ブロックを通過して出力されるまでに生じ得る遅延量を、該前段回路ブロックまでの遅延量として算出する遅延量算出手段と、
前記対象回路ブロックに信号を入力するための複数の入力ピンのうち、該対象回路ブロックについての前段回路ブロックであって該前段回路ブロックまでの前記遅延量が最大であるものが接続されている該入力ピンを該指定変更の対象である回路ブロックの代表ピンとする代表ピン決定手段と、
を更に有し、
前記駆動能力値算出手段は、前記対象回路ブロックについての前段回路ブロックのうち、前記代表ピンに接続されている前段回路ブロックについての駆動能力値に基づいて前記算出を行なう、
ことを特徴とする付記１に記載の論理回路遅延最適化システム。
（付記４）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なうシステムであって、
前記回路ブロックのスラック値の算出を行なうスラック値算出手段と、
前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配する駆動能力値分配手段と、
前記駆動能力値分配手段によって分配された駆動能力値を前記後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行なう後段回路ブロック駆動能力値算出手段と、
前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックで使用される前記素子の指定の変更を行なう後段回路ブロック変更手段と、
を有することを特徴とする論理回路遅延最適化システム。
（付記５）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なうシステムであって、
前記回路ブロックのスラック値の算出を行なうスラック値算出手段と、
前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出する駆動能力比率算出手段と、
前記駆動能力比率算出手段によって算出された駆動能力値の比率に基づいて、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出する第一駆動能力値算出手段と、
前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう第一後段回路ブロック変更手段と、
を有することを特徴とする論理回路遅延最適化システム。
（付記６）  前記後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての前記指定変更前における駆動能力値と前記第一後段回路ブロック変更手段による変更後に指定されている前記素子の駆動能力値とよりこれらの駆動能力値の変化率を算出する変化率算出手段と、
前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックに要求する駆動能力値を、前記変化率に基づいて算出する第二駆動能力値算出手段と、
前記第二駆動能力値算出手段によって算出された駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックについての前記指定の変更を行なう第二後段回路ブロック変更手段と、
を更に有することを特徴とする付記５に記載の論理回路遅延最適化システム。
（付記７）  前記論理回路の外部入力端子に接続される素子の駆動能力値が入力される外部素子駆動能力値入力手段を更に有し、
前記駆動能力値算出手段は、前記外部入力端子に接続されている前記対象回路ブロックに要求する駆動能力値の算出を、前記外部素子駆動能力値入力手段に入力された駆動能力値が前記前段回路ブロックの駆動能力値であるとみなして行なう、
ことを特徴とする付記１から３までのうちのいずれか一項に記載の論理回路遅延最適化システム。
（付記８）  前記前段回路ブロックの駆動能力値が入力される前段回路ブロック駆動能力値入力手段を更に有し、
前記駆動能力値算出手段は、前記前段回路ブロック駆動能力値入力手段に入力された駆動能力値を前記前段回路ブロックの駆動能力値とみなして前記対象回路ブロックに要求する駆動能力値の算出を行なう、
ことを特徴とする付記１から３までのうちのいずれか一項に記載の論理回路遅延最適化システム。
（付記９）  前記論理回路の外部出力端子に接続される素子によって該論理回路に与えられる負荷容量値が入力される外部素子負荷容量値入力手段を更に有し、
前記駆動能力値算出手段は、前記外部出力端子に接続されている前記対象回路ブロックに要求する駆動能力値の算出を、前記外部素子負荷容量値入力手段に入力された負荷容量値が該対象回路ブロックに対して与えられた負荷容量値であるとみなして行なう、
ことを特徴とする付記１から３までのうちのいずれか一項に記載の論理回路遅延最適化システム。
（付記１０）  前記論理回路の実装設計が行なわれることによって得られる前記回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、
前記駆動能力値算出手段は、前記配線容量取得手段によって取得された配線容量を前記負荷容量値に加味して前記対象回路ブロックに要求する駆動能力値の算出を行なう、
ことを特徴とする付記１から３までのうちのいずれか一項に記載の論理回路遅延最適化システム。
（付記１１）  前記論理回路の実装設計が行なわれることによって得られる前記回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、
前記後段回路ブロック駆動能力値算出手段は、前記配線容量取得手段によって取得された配線容量を加味して前記算出を行なう、
ことを特徴とする付記４に記載の論理回路遅延最適化システム。
（付記１２）  前記論理回路の実装設計が行なわれることによって得られる前記回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、
前記第一駆動能力値算出手段は、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値の算出を、前記配線容量取得手段によって取得された配線容量を加味して行なう、
ことを特徴とする付記５に記載の論理回路遅延最適化システム。
（付記１３）  前記論理回路の実装設計が行なわれることによって得られる前記回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、
前記第一駆動能力値算出手段は、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値の算出を、前記配線容量取得手段によって取得された配線容量を加味して行ない、
前記第二駆動能力値算出手段は、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックに要求する駆動能力値の算出を、前記配線容量取得手段によって取得された配線容量を加味して行なう、
ことを特徴とする付記６に記載の論理回路遅延最適化システム。
（付記１４）  前記回路ブロックに対して前記指定の変更を行なわないことを示す属性を付与する非最適化属性付与手段を更に有し、
前記変更手段は、前記非最適化属性付与手段によって前記属性が付与されている前記対象回路ブロックについては、前記指定の変更を行なわない、
ことを特徴とする付記１から３までのうちのいずれか一項に記載の論理回路遅延最適化システム。
（付記１５）  前記変更手段によって前記指定の変更が行なわれた前記対象回路ブロックにおける該変更の内容を出力する変更内容出力手段を更に有することを特徴とする付記１から３までのうちのいずれか一項に記載の論理回路遅延最適化システム。
（付記１６）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう方法であって、
回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行ない、
前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう、
ことを特徴とする論理回路遅延最適化方法。
（付記１７）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう方法であって、
前記回路ブロックのスラック値の算出を行ない、
前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配し、
前記後段回路ブロックの各々に分配された駆動能力値を前記後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行ない、
前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックで使用される前記素子の指定の変更を行なう、
ことを特徴とする論理回路遅延最適化方法。
（付記１８）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう方法であって、
前記回路ブロックのスラック値の算出を行ない、
前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出し、
前記比率に基づいて、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出し、
前記比率に基づいて算出された駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう、
ことを特徴とする論理回路遅延最適化方法。
（付記１９）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムであって、
回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう処理と、
前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう処理と、
を該コンピュータに行なわせるためのプログラム。
（付記２０）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムであって、
前記回路ブロックのスラック値の算出を行なう処理と、
前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配する処理と、
前記後段回路ブロックの各々に分配された駆動能力値を前記後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行なう処理と、
前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックで使用される前記素子の指定の変更を行なう処理と、
を該コンピュータに行なわせるためのプログラム。
（付記２１）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムであって、
前記回路ブロックのスラック値の算出を行なう処理と、
前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出する処理と、
前記比率に基づいて、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出する処理と、
前記比率に基づいて算出された駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう処理と、
を該コンピュータに行なわせるためのプログラム。
（付記２２）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムを含む搬送波に具現化されたコンピュータ・データ・シグナルであって、該プログラムは以下の処理をコンピュータに行なわせる：
回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう処理、及び
前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう処理。
（付記２３）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムを含む搬送波に具現化されたコンピュータ・データ・シグナルであって、該プログラムは以下の処理をコンピュータに行なわせる：
前記回路ブロックのスラック値の算出を行なう処理、
前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配する処理、
前記後段回路ブロックの各々に分配された駆動能力値を前記後段回路ブロックの前段の
回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行なう処理、及び
前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックで使用される前記素子の指定の変更を行なう処理。
（付記２４）  複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムを含む搬送波に具現化されたコンピュータ・データ・シグナルであって、該プログラムは以下の処理をコンピュータに行なわせる：
前記回路ブロックのスラック値の算出を行なう処理、
前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出する処理、
前記比率に基づいて、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出する処理、及び
前記比率に基づいて算出された駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう処理。
【図面の簡単な説明】
【０１８３】
【図１】本発明の原理構成を示す図である。
【図２】本発明を実施する論理回路遅延最適化装置の構成を示す図である。
【図３】回路遅延最適化処理の処理内容を示すフローチャートである。
【図４】ブロック最適化処理の第一の例の処理内容を示すフローチャートである。
【図５】素子情報が定義されているライブラリの例を示す図である。
【図６】遅延最適化処理を施す回路網の例を示す図である。
【図７】回路網Ａの各ブロックに対して行なわれた段数検出の結果を示す図である。
【図８】回路網Ａの各ブロックに対して行なわれた遅延計算を示す図である。
【図９】回路網Ａの各ブロックに対して行なわれた最大遅延の計算結果の例を示す図である。
【図１０】回路網Ａの各ブロックに対して行なわれた許容到達時間の計算結果の例を示す図である。
【図１１】回路網Ａの各ブロックに対して行なわれたスラック値の計算結果の例を示す図である。
【図１２】ブロック最適化処理の第二の例の処理内容を示すフローチャートである。
【図１３】代表ピン選択処理の処理内容を示すフローチャートである。
【図１４】駆動能力分配処理の処理内容を示すフローチャートである。
【図１５】駆動能力分配処理を施す回路網の一例を示す図である。
【図１６】駆動能力比率計算処理の処理内容を示すフローチャートである。
【図１７】駆動能力変化率反映処理の処理内容を示すフローチャートである。
【図１８】ピン駆動能力指示検出処理の処理内容を示すフローチャートである。
【図１９】ネット負荷容量指示反映処理の処理内容を示すフローチャートである。
【図２０】ブロック非最適化指示検出処理の処理内容を示すフローチャートである。
【図２１】図３に示す回路最適化処理においてブロック非最適化指示が行なわれるときの変更を示す図である。
【図２２】素子変更情報出力処理の処理内容を示すフローチャートである。
【図２３】記録させた制御プログラムをコンピュータで読み取ることの可能な記録媒体の例を示す図である。
【符号の説明】
【０１８４】
１１  駆動能力値算出手段
１２  変更手段
２１、３１  スラック値算出手段
２２  駆動能力値分配手段
２３  後段回路ブロック駆動能力値算出手段
２４  後段回路ブロック変更手段
３２  駆動能力比率算出手段
３３  第一駆動能力値算出手段
３４  第一後段回路ブロック変更手段
１０１  入力部
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  Ｉ／Ｆ部
１０５  入力部
１０６  表示部
１０７  出力部
１０８  記憶部
１０９  バス
２０１  コンピュータ
２０２  メモリ
２０３  可搬型記憶媒体
２０４  回線
２０５  プログラムサーバ
２０６  記憶装置
【図１】
2008234674.tif 000018
【図２】
2008234674.tif 000019
【図３】
2008234674.tif 000020
【図４】
2008234674.tif 000021
【図５】
2008234674.tif 000022
【図６】
2008234674.tif 000023
【図７】
2008234674.tif 000024
【図８】
2008234674.tif 000025
【図９】
2008234674.tif 000026
【図１０】
2008234674.tif 000027
【図１１】
2008234674.tif 000028
【図１２】
2008234674.tif 000029
【図１３】
2008234674.tif 000030
【図１４】
2008234674.tif 000031
【図１５】
2008234674.tif 000032
【図１６】
2008234674.tif 000033
【図１７】
2008234674.tif 000034
【図１８】
2008234674.tif 000035
【図１９】
2008234674.tif 000036
【図２０】
2008234674.tif 000037
【図２１】
2008234674.tif 000038
【図２２】
2008234674.tif 000039
【図２３】
2008234674.tif 000040