米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 富士通株式会社

発明の名称 論理回路遅延最適化システム、論理回路遅延最適化方法、及びプログラム
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2003−6257(P2003−6257A)
公開日 平成15年1月10日(2003.1.10)
出願番号 特願2001−189533(P2001−189533)
出願日 平成13年6月22日(2001.6.22)
代理人 【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之 (外1名)
【テーマコード(参考)】
5B046
5F064
【Fターム(参考)】
5B046 AA08 BA04 CA06 DA05 GA01 JA03 JA05 KA06 
5F064 AA06 BB05 BB07 DD03 DD07 DD20 DD25 EE43 EE47 HH02 HH06 HH10 HH12
発明者 岡田 有美 / 水野 理美 / 古川 英司
要約 課題
論理回路が有する回路遅延の最適化を行なう新たな手法を提供する。

解決手段
論理回路は複数の回路ブロックが接続されて構成されているものとする。駆動能力値算出手段11は、該回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、対象回路ブロックの前段である前段回路ブロックの駆動能力値と、該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう。変更手段12は、駆動能力値算出手段11によって得られた駆動能力値に基づいて該対象回路ブロックで使用される前記素子の指定の変更を行なう。この構成によれば、対象回路ブロックの前後段として接続されている回路ブロックに関する特性値から対象回路ブロックでの使用に最適な素子の選択が可能となる。
特許請求の範囲
【請求項1】 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なうシステムであって、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう駆動能力値算出手段と、前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう変更手段と、を有することを特徴とする論理回路遅延最適化システム。
【請求項2】 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう方法であって、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行ない、前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう、ことを特徴とする論理回路遅延最適化方法。
【請求項3】 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムであって、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう処理と、前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう処理と、を該コンピュータに行なわせるためのプログラム。
【請求項4】 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムであって、前記回路ブロックのスラック値の算出を行なう処理と、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配する処理と、前記後段回路ブロックの各々に分配された駆動能力値を前記後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行なう処理と、前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックで使用される前記素子の指定の変更を行なう処理と、を該コンピュータに行なわせるためのプログラム。
【請求項5】 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムであって、前記回路ブロックのスラック値の算出を行なう処理と、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出する処理と、前記比率に基づいて、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出する処理と、前記比率に基づいて算出された駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう処理と、を該コンピュータに行なわせるためのプログラム。
発明の詳細な説明
【0001】
【発明の属する技術分野】本発明は、論理回路の最適化を行なう技術に関し、特に、論理回路設計の初期段階において論理回路内を伝播する信号に生じる遅延の最適化を行なう技術に関する。
【0002】
【従来の技術】従来、論理回路の有する回路遅延の最適化、すなわちその論理回路内を伝播する信号に生じる遅延の最適化を計算機に行なわせる技術として、例えば特開平5−151310号公報や特開平11−120222号公報に開示されているように、論理回路におけるクリティカルパスを抽出して抽出されたクリティカルパスに対して遅延最適化を施すというものが多数提案されている。
【0003】
【発明が解決しようとする課題】上述した従来の技術で行なわれているクリティカルパスの抽出には多大な処理量を要するため、高い処理能力を有する計算機を長時間稼動させる必要があった。
【0004】また、計算機に行なわせる従来の遅延最適化処理においては、クリティカルパスに対して最適化を施すときに、そのパス上の回路ブロックの後段にファンアウトが複数存在しているときには、その中でクリティカルパス上にあるものについてのみ最適化処理を行っており、そのファンアウトを構成している複数の被駆動ブロック同士の関係は考慮されていなかった。そのため、例えばこれらの被駆動ブロックのうちクリティカルパス上にあるものについての駆動能力(被駆動ブロックの駆動のためにその被駆動ブロックに対して求められる能力)が肥大してしまい、その駆動能力を確保するために被駆動ブロックの実装回路面積が過剰に大きくなってしまうことがあった。
【0005】また、従来の処理では、設計対象の論理回路が他の回路と接続される外部入出力端子は、他の回路の外部入出力端子に一般的なバッファの素子が接続されているものとみなして最適化を行っていた。更に、論理回路内部において外部入出力端子に接続される入力ピンについての駆動能力は予め定義されているものに固定されており、駆動能力を変更するにはその入力ピンを含む回路そのものの使用を止めて代わりに他の回路を選択することしか許容されていなかった。
【0006】また、従来の処理では、ネット(回路ブロック間を接続する配線)の負荷容量には遅延最適化処理後に行なわれる実装設計によって得られる情報が反映されることはなく、最適化の際に考慮しないか、あるいは概算値を反映するようにしていた。そのため、論理回路の回路遅延の最適化を行なっても実装設計後の回路遅延が改善されないこともあった。
【0007】また、従来の処理では、例えばユーザが敢えて遅延最適化を行なうことを望まないなどの理由によって最適化を行なわないようにするブロックを設定するためには、素子毎もしくはパス毎にその指示を行なう必要があった。また、従来の処理では、遅延最適化を実行するとその対象である回路自体が自動的に変換されて出力されてしまい、最適化による素子の置換の内容を知るには、その実行の前後の論理回路を比較しなければならなかった。
【0008】以上の問題を鑑み、論理回路が有する回路遅延の最適化を行なう新たな手法を提供することが本発明が解決しようとする課題である。
【0009】
【課題を解決するための手段】図1は本発明の原理構成を示す図である。本発明は、複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう論理回路遅延最適化システムまたは論理回路遅延最適化方法を前提とする。
【0010】ここで、「プリミティブな素子」とは、ここでは論理回路において基本となる素子を意味する語であり、具体的には、インバータ、バッファ、AND、OR、NAND、NORなどの各種のゲートや、RS、JK、Dなどの各種のフリップフロップ等の基本的な論理素子を総称したものである。また、「駆動能力値」とは、素子に信号が入力されたときに駆動し得る能力の高さ、つまり、その素子の出力信号によって示されている論理の反転を、その素子の出力に接続されている負荷に抗して行なわせ得る能力の高さを示す値である。
【0011】まず、図1の(a)に示す第一の構成を説明する。これは、本発明に係る論理回路遅延最適化システム第一の原理構成を示している。駆動能力値算出手段11は、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている該素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なうものである。
【0012】変更手段12は、駆動能力値算出手段11によって得られた駆動能力値に基づいて該対象回路ブロックで使用される前記素子の指定の変更を行なう。この第一の構成によれば、対象回路ブロックの前後段として接続されている回路ブロックに関する特性値から対象回路ブロックでの使用に最適な素子の選択が可能となる。従って、論理回路中の全ての回路ブロックについて最適な素子の選択を行なうことでクリティカルパスの抽出を行なうことなく論理回路に対する遅延最適化が行なえるので、遅延最適化のために必要となる処理量が低減される。
【0013】なお、上述した第一の構成において、変更手段12が、該変更前に選択されていたものと同一の実装回路面積を要する前記素子を選択するように該変更を行なうようにしてもよい。この構成によれば、遅延最適化に起因する論理回路の実装面積の増加を防止することが可能となる。
【0014】また、上述した第一の構成において、該論理回路に入力された信号若しくは該論理回路内のフリップフロップである回路ブロックから出力された信号が、該対象回路ブロックについての該回路ブロックを通過して出力されるまでに生じ得る遅延量を、該前段回路ブロックまでの遅延量として算出する遅延量算出手段と、該対象回路ブロックに信号を入力するための複数の入力ピンのうち、該対象回路ブロックについての該回路ブロックであって該前段回路ブロックまでの該遅延量が最大であるものが接続されている該入力ピンを該指定変更の対象である回路ブロックの代表ピンとする代表ピン決定手段と、を更に有し、駆動能力値算出手段11が、前記対象回路ブロックについての前段回路ブロックのうち、該代表ピンに接続されている該回路ブロックについての駆動能力値に基づいて該算出を行なうようにしてもよい。
【0015】この構成によれば、本発明によれば、複数の入力を有する回路ブロックの遅延最適化を適切に行なうことが可能になる。また、上述した第一の構成において、該論理回路の外部入力端子に接続される素子の駆動能力値が入力される外部素子駆動能力値入力手段を更に有し、駆動能力値算出手段11が、該外部入力端子に接続されている該対象回路ブロックに要求する駆動能力値の算出を、該外部素子駆動能力値入力手段に入力された駆動能力値が該前段回路ブロックの駆動能力値であるとみなして行なうようにしてもよい。
【0016】この構成によれば、現実に想定される外部入力端子に接続される素子の駆動能力を論理回路の遅延最適化により正確に反映できるようになる。また、上述した第一の構成において、該前段回路ブロックの駆動能力値が入力される前段回路ブロック駆動能力値入力手段を更に有し、駆動能力値算出手段11が、該前段回路ブロック駆動能力値入力手段に入力された駆動能力値を該前段回路ブロックの駆動能力値とみなして該対象回路ブロックに要求する駆動能力値の算出を行なうようにしてもよい。
【0017】この構成によれば、前段回路ブロックまでの回路構成について設計変更が予想されるときであっても、前段回路ブロックの仮の駆動能力値が入力されれば、後段回路ブロックの最適化が先行して行なえるようになる。また、上述した第一の構成において、該論理回路の外部出力端子に接続される素子によって該論理回路に与えられる負荷容量値が入力される外部素子負荷容量値入力手段を更に有し、駆動能力値算出手段11が、該外部出力端子に接続されている該対象回路ブロックに要求する駆動能力値の算出を、該外部素子負荷容量値入力手段に入力された負荷容量値が該対象回路ブロックに対して与えられた負荷容量値であるとみなして行なうようにしてもよい。
【0018】この構成によれば、現実に想定される外部出力端子に接続される素子による負荷容量を論理回路の遅延最適化により正確に反映できるようになる。また、上述した第一の構成において、該論理回路の実装設計が行なわれることによって得られる該回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、駆動能力値算出手段11が、該配線容量取得手段によって取得された配線容量を該負荷容量値に加味して該対象回路ブロックに要求する駆動能力値の算出を行なうようにしてもよい。
【0019】この構成によれば、実装設計によってより正確に求められる配線容量を論理回路の遅延最適化に反映できるようになる。また、上述した第一の構成において、該回路ブロックに対して該指定の変更を行なわないことを示す属性を付与する非最適化属性付与手段を更に有し、変更手段12は、該非最適化属性付与手段によって該属性が付与されている該対象回路ブロックについては、前記指定の変更を行なわないようにしてもよい。
【0020】この構成によれば、ユーザが変更を望まない回路ブロックを該指定の変更を行なう回路ブロックの対象外とすることができるようになるので、遅延最適化の処理に要する処理量が低減され、また、回路設計作業における手戻り(繰り返し作業)の減少が期待できる。
【0021】また、上述した第一の構成において、変更手段12によって該指定の変更が行なわれた該対象回路ブロックにおける該変更の内容を出力する変更内容出力手段を更に有するように構成してもよい。この構成によれば、遅延最適化の結果を実装設計システム等の他のシステムでの処理に反映することができ、設計効率の改善が可能となる。また、この結果をファイル出力することで変更内容を明確にユーザに告知できるようになるので、後の実装設計等の作業における作業効率の向上が期待できる。
【0022】次に図1の(b)に示す第二の構成を説明する。これは、本発明に係る論理回路遅延最適化システム第ニの原理構成を示している。スラック値算出手段21は、該回路ブロックのスラック値の算出を行なう。なお、回路ブロックのスラック値とは、その回路ブロックまでで生じ得る最大遅延とその回路ブロックに許容されている到達時間(許容到達時間)との差であり、その回路ブロックにおけるタイミングの余裕度を示すものである。
【0023】駆動能力値分配手段22は、該論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている該素子によって定まる該指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配する。なお、「該論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているとき」とは、後段回路ブロックが、該論理回路中の回路ブロックの有するひとつの出力に対して複数のファンアウトを構成していることを示している。
【0024】後段回路ブロック駆動能力値算出手段23は、駆動能力値分配手段22によって分配された駆動能力値を該後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行なう。後段回路ブロック変更手段24は、該算出によって得られた駆動能力値に基づいて該後段回路ブロックで使用される該素子の指定の変更を行なう。
【0025】この第二の構成によれば、駆動能力値分配手段22が、各回路ブロックのスラック値に基づき、タイミングの余裕が少ない後段回路ブロックには駆動能力値を多めに分配し、タイミングの余裕が多い後段回路ブロックには駆動能力値を少なめに分配することで、信号遅延量が大きくなっている信号パスを優先する最適化が可能となり、駆動能力のバランスの良好な遅延最適化が可能となる。
【0026】なお、上述した第二の構成において、該論理回路の実装設計が行なわれることによって得られる該回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、後段回路ブロック駆動能力値算出手段23は、該配線容量取得手段によって取得された配線容量を加味して前記算出を行なううに構成してもよい。
【0027】この構成によれば、実装設計によってより正確に求められる配線容量を論理回路の遅延最適化に反映できるようになる。次に図1の(c)に示す第三の構成を説明する。これは、本発明に係る論理回路遅延最適化システム第三の原理構成を示している。
【0028】スラック値算出手段31は、該回路ブロックのスラック値の算出を行なう。駆動能力比率算出手段32は、該論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている該素子によって定まる該指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出する。
【0029】第一駆動能力値算出手段33は、駆動能力比率算出手段32によって算出された駆動能力値の比率に基づいて、該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出する。
【0030】第一後段回路ブロック変更手段34は、該算出によって得られた駆動能力値に基づいて該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう。
【0031】この第三の構成によれば、後段回路ブロックが複数のファンアウトを構成している場合におけるスラック値によって最もタイミングの余裕が少ないことが示されている後段回路ブロックについての該素子の指定の変更の際に、その後段回路ブロックと同時に駆動される他の後段回路ブロックについての特性値が考慮されるので、該素子の選択が適切に行なえるようになる。
【0032】なお、上述した第三の構成において、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値と該第一後段回路ブロック変更手段による変更後に指定されている該素子の駆動能力値とよりこれらの駆動能力値の変化率を算出する変化率算出手段と、該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックに要求する駆動能力値を、該変化率に基づいて算出する第二駆動能力値算出手段と、該第二駆動能力値算出手段によって算出された駆動能力値に基づいて該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックについての該指定の変更を行なう第ニ後段回路ブロック変更手段と、を更に有するように構成してもよい。
【0033】この構成によれば、後段回路ブロックが複数のファンアウトを構成している場合に、同時に駆動される他の後段回路ブロックの特性値を考慮した該素子の指定の変更が行なわれるので、回路面積の過剰な増大が抑えられる。また、上述した第三の構成において、該論理回路の実装設計が行なわれることによって得られる該回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、第一駆動能力値算出手段33は、該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値の算出を、該配線容量取得手段によって取得された配線容量を加味して行なうようにしてもよい。
【0034】この構成によれば、実装設計によってより正確に求められる配線容量を論理回路の遅延最適化に反映できるようになる。なお、前述した本発明に係る論理回路遅延最適化システムを構成する各要素により実現される機能と同様のものをコンピュータに行なわせるためのプログラムを作成し、そのプログラムをコンピュータに実行させることによっても、前述した課題を解決することができる。
【0035】
【発明の実施の形態】以下、本発明の実施の形態を図面に基づいて説明する。図2は、本発明を実施する論理回路遅延最適化装置の構成を示す図である。同図において、CPU101、ROM102、RAM103、I/F部104、入力部105、表示部106、出力部107、記憶部108はいずれもバス109に接続されており、相互にデータの授受が行なえる。
【0036】CPU(Central Processing Unit )101はこの論理回路遅延最適化装置(以下、「本装置」という)全体の動作制御を司る中央処理装置である。ROM(Read Only Memory)102は、CPU101によって実行される制御プログラムが予め格納されているメモリであり、CPU101がこの制御プログラムを実行することによって本装置全体の動作の制御が行なわれる。
【0037】RAM(Random Access Memory)103は、各種のデータの一時的な格納領域として、またROM102に格納されている制御プログラムをCPU101が実行するときにワークメモリとして必要に応じて使用されるメモリである。I/F(Interface)部104は他の機器との間で通信ネットワークを介して行なわれる各種データの授受を制御する。
【0038】入力部105は外部からの入力を受け取って該入力をCPU101に渡すものであり、例えばキーボードやマウスなどといった本装置のユーザからの指示を受け取る入力装置、あるいはFD(Floppy Disk)、CD−ROM(Compact Disc-ROM)、DVD−ROM(Digital Versatile Disc-ROM)、MO(Magneto-Optics)ディスクなどといった可搬型の記録媒体の読出装置を備えて構成される。
【0039】表示部106はCPU101からの指示に応じた表示を行なうものであり、例えばCRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)からなるディスプレイ装置である。出力部107は、CPU101からの指示に応じた表示を行なうものであり、例えばプリンタ装置や、あるいは上述したFDやMOディスク等の可搬型の記録媒体の書込装置を備えて構成される。勿論、可搬型の記録媒体についての書込機能と読出機能とを兼ね備えている装置を入力部105と出力部107との共用の装置として利用することも可能である。
【0040】記憶部108は本装置による評価対象であるパートプログラムを含む各種のプログラムや、評価対象であるそのパートプログラムに対して期待されている測定精度を示す期待精度情報、更に後述するステージ精度情報を含む各種のデータを記憶するものであり、例えばハードディスク装置を備えて構成される。なお、CPU101は、ROM102に格納されている制御プログラムを実行する代わりに、記憶部17に予め記憶されている制御プログラムを読み出してRAM103に一旦格納しておき、その後RAM103からその制御プログラムを読み出して実行するようにして本装置全体の動作の制御を行なうようにしてもよい。
【0041】本装置は以上の各構成要素を備えて構成される。なお、図2に示す本装置の構成は多くの標準的なコンピュータが有しているものであるので、このようなコンピュータで本発明を実施することもできる。次に、図2に示されているCPU101によって行なわれる制御処理について説明する。なお、これより説明する各処理は、いずれも本装置を制御するための制御プログラムをCPU101が実行することによって実現される。
【0042】まず、図3について説明する。図3は、CPU101によって行なわれる回路遅延最適化処理の処理内容を示すフローチャートである。まず、S101において、記憶部108に予め格納されている回路ブロックのライブラリが参照され、各回路ブロックに使用可能な素子として定義されている各素子の素子面積、素子属性、同一論理素子グループ、素子の入力ピンの駆動能力、寄生容量、及び遅延率の各値が読み出されてRAM103の所定領域に格納される。
【0043】続くS102において、遅延最適化処理の対象である論理回路を示す回路網情報が例えばネット情報の形態で入力部105に入力されて取得され、RAM103の所定領域に格納される。S103では、その論理回路において、回路ブロックの入力ピンが外部入力端子に直接繋げられている回路ブロック、及びフリップフロップである回路ブロック(以下、回路ブロックを単に「ブロック」とも称する)を1段目としたときの、各ブロックの段数が検出される。
【0044】S104では、その論理回路において、前ステップで検出された段数に基づき、外部入力端子もしくはフリップフロップのクロックピンから各ブロックまでの最大遅延が計算される。S105では、その論理回路における各ブロックからその論理回路における外部出力端子もしくはフリップフロップの入力ピンまでの許容到達時間が計算され、その結果得られた許容到達時間と各ブロックまでの最大パス遅延との差分が計算されてスラック値が求められる。
【0045】その後、S106において、論理回路内に存在する全てのブロックに対して、最適化が行なわれたか否かが判定される。ここで、非最適化の属性を持つ素子が割り付けられているブロックは最適化が既に行なわれたものとみなして判定が行なわれる。この判定処理の結果がYes、すなわち全てのブロックの最適化が行なわれたと判定されたときにはこの回路遅延最適化処理が終了する。
【0046】一方、このS106の判定処理の結果がNo、すなわち、最適化の行われていないブロックが未だ残っていると判定されたならば、S107へと処理が進んでそれらのうちの段数の小さいブロックからブロック最適化処理が行なわれる。以下、このブロック最適化処理について説明する。
【0047】図4はブロック最適化処理の第一の例の処理内容を示すフローチャートである。図4において、S111では、最適化処理の対象であるブロック(このブロックを、以下「被最適化ブロック」と称することとする)の前段のブロック(このブロックを、以下「ドライバブロック」と称することとする)について使用することが現在指定されている素子と、前述したライブラリに定義されていたその素子の駆動能力とが照合されて前段ブロックの駆動能力が取得される。ここで、被最適化ブロックにおいて、その入力ピンが外部入力端子に繋げられているものについては、その被最適化ブロックの前段が論理回路中に存在しない為、特に指示がなければ標準的に使用されるインバータによって駆動されているものとして処理が進められる。
【0048】S112では、被最適化ブロックが駆動するこことなる後段の全てのブロックについても、各ブロックについて使用することが現在指定されている素子と、前述したライブラリに定義されていたその素子の駆動能力とが照合されて後段ブロック各々の駆動能力が検出され、それらの駆動能力の総和が計算される。この総和の値は被最適化ブロックにとっての負荷容量とみることができる。ここで、被最適化ブロックのうちその出力ピンが外部出力端子に直接繋げられているものについては、被最適化ブロックによって駆動されるブロックが回路中に存在しない為、特に指示がなければ標準的に使用される1個のインバータを駆動するものとして処理が進められる。
【0049】S113では、更に、ドライバブロックと被最適化ブロックとについて、各ブロックについて使用することが現在指定されている各素子と、前述したライブラリに定義されていたこれらの各素子の遅延率及び寄生容量が照合され、各ブロックの遅延率及び寄生容量が取得される。
【0050】S114では、以上のようにして取得された各ブロックの駆動能力、負荷容量、遅延率より、ドライバブロックから被最適化ブロックにかけての遅延を最小とするような、被最適化ブロックの最適駆動能力が求められる。S115では、前ステップで求められた最適駆動能力に基づいて、被最適化ブロックでの使用が現在指定されている素子と同じ論理素子グループに属する素子のうち、被最適化ブロックの最適駆動能力を満たす最適な駆動能力を有するものが選択され、被最適化ブロックについての指定がその素子を使用するように置換される。この処理を終えた後には処理が図3へと戻る。
【0051】以上の図3及び図4に示されている処理がCPU101によって行なわれることによって論理回路が最適化される具体例を示す。図5は素子情報が定義されているライブラリの例を示している。ここで、図5に用いられている用語について説明する。
【0052】入力ピンの寄生容量とは、素子の入力ピンから見たその素子内部で定常的に有している容量である。入力ピンの駆動能力とは、出力ピンに接続される容量であって、その入力ピンに信号が入力されたときに駆動し得る(出力信号の論理の反転を行なわせ得る)容量の最大値であり、これは論理の反転という過渡的な動作を行なわせる能力の高さを示す。
【0053】入力ピンの遅延率とは、その入力ピンからその素子の出力ピンへの信号の伝播において、その素子を駆動する(出力信号の論理の反転を行なわせる)と生じる遅延に対し、その入力ピンの駆動能力とその出力ピンについての負荷容量とがその遅延時間にどの程度の影響を及ぼすかを示すものであり、遅延率=(単位負荷容量で生じる遅延)×(駆動能力)÷(最適化対象である論理回路における基準クロックの1周期分の時間)
で求められる。なお、負荷容量とは、出力ピンに接続されている後段の全ての素子を駆動する(信号の論理を反転する)過渡的な動作を行なうときに負荷としてその出力ピンにかかり得る容量をいう。
【0054】また、素子の平均遅延率、平均駆動能力、及び平均寄生容量とは、それぞれその素子の有する各入力ピンの遅延率、駆動能力、寄生容量の平均値である。図5について説明すると、素子名が「AAA」なる素子は2入力NANDであり、「2NAND」グループなる素子グループに属している。また、この素子に対する最適化は「可」とされており、非最適化の属性は有していない。そして、この素子を実装するには50の面積を要し、その平均遅延率は1.3である。また、この素子はA及びBなる入力ピンとXなる出力ピンとを有しており、入力ピンAについては遅延率が1.2、駆動能力が33.5、寄生容量が9.0と定義され、入力ピンBについては遅延率が1.4、駆動能力が32.0、寄生容量が10.5と定義されている。
【0055】前述した図3のS101の処理においては、この図5に示したようなライブラリが読み出される。次に図6について説明する。同図はこれより遅延最適化処理を施す回路網の一例を示している。同図に示す回路網において、ブロックF及びIはフリップフロップである。前述した図3のS102の処理においては、この図6の回路網を示す情報が取得される。
【0056】なお、以降の説明においては、図6に示す回路網を「回路網A」と称することとする。図7は、前述した図3のS103の処理の実行によって回路網Aの各ブロックに対して行なわれた段数付けの結果を示す図である。同図において、各ブロックに付された数字が、そのブロックの段数を示している。
【0057】図7において、例えばブロックDの前段にはブロックA及びブロックCの2つが存在する。この2つのブロックのうち段数の大きいブロックCの段数は2であるから、ブロックCの段数である2段に1段を加えた3段を、ブロックDの段数とする。他のブロックE、H、及びKについても同様に、前段ブロックの段数のうちの最大のものに1段加えた段数をそのブロックの段数とする。
【0058】図8は、前述した図3のS104の処理の実行によって回路網Aの各ブロックに対して行なわれた遅延計算の結果の例である。同図において、各ブロックに付されている数字が、そのブロックの入力ピンから出力ピンまでのブロック遅延を示す。なお、各ブロックの遅延は次式によって算出される。
【0059】
【数1】

【0060】上式において、負荷容量は、自ブロックの出力ピンに接続されている後段の全てのブロックの駆動能力の総和となる。なお、上式の計算を行なうときには、遅延率、駆動能力、寄生容量として各ブロックの平均遅延率、平均駆動能力、平均寄生容量を用い、また、負荷容量についても、後段の全てのブロックの平均駆動能力の総和を用いる。
【0061】図9は、前述した図3のS104の処理の実行によって図8に示した遅延計算に続いて回路網Aの各ブロックに対して行なわれた最大遅延の計算結果の例である。同図において、各ブロックに付されている数字が、そのブロックの出力ピンまでに生じ得る最大遅延を示している。
【0062】図9において、例えばブロックDでは、前段のブロックであるブロックAとブロックCとのうち、その段までの最大遅延が大きいブロックAの最大遅延30に、ブロックD自身の遅延5を加えた値35が、ブロックDまでの最大遅延となる。なお、ここではブロックの段数は考慮しない。他のブロックE、H、及びKについても同様に、前段ブロックの最大遅延に自身の遅延を加えた値を、そのブロックまでの最大遅延とする。
【0063】図10は、回路網Aにおいて外部出力端子もしくはフリップフロップの入力ピンに繋がるブロックまでで許容される到達時間を80とした場合に、前述した図3のS105の処理の実行によって各ブロックに対して行なわれた許容到達時間の計算結果の例である。同図において、各ブロックに付されている括弧付の数字は図7で示していた各ブロックの素子遅延を、また、それらの数字の下に示されている括弧無しの数字は許容到達時間を、それぞれ示している。
【0064】図10において、例えばブロックJにおいて、その出力ピンは外部出力端子と共にブロックKにも繋げられている。ここで、ブロックKについて、その許容到達時間が80であり、その素子遅延が10であることから、その差分は70となり、この値がブロックJからブロックKへのパスの許容到達時間となる。ここで、ブロックJから外部出力端子へと繋げられているパスの外部出力端子における許容到達時間は本来80であるが、ブロックKへのパスの許容到達時間の制限がより小さいがためにブロックJの許容到達時間は70となる。他のブロックについても同様である。
【0065】図11は、前述した図3のS105の処理の実行によって回路網Aの各ブロックに対して行なわれたスラック値の計算結果の例である。同図において、各ブロックに付されている数字がそのブロックのスラック値を示している。ブロックのスラック値とは、そのブロックまでで生じ得る最大遅延とそのブロックに許容されている到達時間(許容到達時間)との差であり、そのブロックにおけるタイミングの余裕度を示すものである。なお、本実施例では、そのブロックについての最大遅延からそのブロックについての許容到達時間を減じた値をスラック値とする。従って、スラック値の符号が正であって大きいほど許容到達時間に対する違反の程度が重度であることを示し、一方、スラック値の符号が負であって小さいほど(スラック値の符号が負であってその絶対値が大きいほど)許容到達時間に対する余裕が大きいことを示すこととなる。
【0066】図11において、例えばブロックJにおいては、最大遅延は図9より15であり、許容到達時間は図10より70であることが分かるので、その差である−55がこのブロックのスラック値となる。次に、前述した図3のS107で行なわれる図4に示したブロック最適化処理について説明する。
【0067】図4のS114で行なわれる被最適化ブロックの最適駆動能力の算出は次のようにして行なわれる。ドライバブロックで生じる遅延と被最適化ブロックで生じる遅延との和Dは、前述した[数1]式より、【0068】
【数2】

【0069】となる。なお、上式において、ドライバブロックの遅延+被最適化ブロックの遅延:Dドライバブロックの駆動能力:C1ドライバブロックの遅延率:G1ドライバブロックの寄生容量:P1被最適化ブロックの駆動能力(=ドライバブロックの負荷容量):c2被最適化ブロックの遅延率:G2被最適化ブロックの寄生容量:P2被最適化ブロックの負荷容量:C3クロック単位時間:τである。
【0070】この[数2]式をc2で微分したときの値が0となればこの部分の遅延が最小となる。従って、このようなc2の値が最適な駆動能力となる。すなわち、【0071】
【数3】

【0072】となり、このc2を最適駆動能力とする。次に、図4のS115で行なわれる、前述したようにして求められた最適駆動能力に基づく素子の選択の一例を説明する。ここでは、被最適化ブロックの素子が属する論理素子グループ名を”INVERTER”であったとし、このグループに含まれる素子名とその駆動能力が下記の表のようにライブラリに定義されていたものとする。
【0073】
【表1】

【0074】ここで、例えば、前述した図4のS114の処理によって求められた被最適化ブロックの最適駆動能力が14.0であった場合には、上記の[表1]より、その値に最も近い駆動能力13.0を有している”INV2”が選択される。その結果、S115の処理によって被最適化ブロックの最適素子としてこの選択された素子への置換が行なわれる。
【0075】次に図12について説明する。同図はブロック最適化処理の第二の例の処理内容を示すフローチャートである。この第二の処理は、素子の実装面積に制限を付加することによって、最適化による実装面積の過大な増加を抑制するというものである。
【0076】図12において、図4と同一の処理内容を示すステップには同一の符号を付している。図12を図4に示すブロック最適化処理の第一の例の処理内容を示すフローチャートと比較すると分かるように、この第二の例は、図4のS114の処理とS115の処理との間にS121からS123にかけての処理が追加されたものである。
【0077】図12において、S115に続くS121では、前述した図3のS102の処理において取得された回路網情報において、この被最適化ブロックに対して回路面積を変更させない指示がなされているか否かが調べられる。そして、S121の判定結果がYes、すなわち上述した指示がなされているのであれば、S122において、前述したライブラリにおいて定義されているその被最適化ブロックでの使用が現在指定されている素子についての素子面積が取得され、続くS123において、その被最適化ブロックでの使用が現在指定されている素子と同じ論理素子グループに属する素子において、被最適化ブロックの素子面積と同一の面積を持つ素子がその後の素子置換の選択候補とされ、その後はS115に処理が進む。S115では、その選択候補とされた素子がその被最適化ブロックで使用する素子としての指定となるような使用素子の置換が行なわれる。
【0078】一方、S121の判定結果がNo、すなわち上述した指示がなされていないのであれば、処理が直ちにS115へと進み、図4と同様の処理が行なわれる。以上の図12に示されている処理がCPU101によって行なわれることによって論理回路が最適化される具体例を示す。
【0079】被最適化ブロックの素子が属する論理素子グループ名が”INVERTER”であったとし、このグループに含まれる素子名とその駆動能力及び素子面積とが下記の表のようにライブラリに定義されていたものとする。
【0080】
【表2】

【0081】今、被最適化ブロックでの使用が現在指定されている素子が”INV4”であったとき、その素子面積は、上記の表により30であることが分かる。また、”INVERTER”グループの素子のうち素子面積が30のものは、上記の表により”INV3”及び”INV4”の2つであるから、回路面積を変更させない指示がある場合にはこの2つが素子置換の選択候補となる。
【0082】ここで、計算によって求められた被最適化ブロックの最適駆動能力が14.0であった場合には、その駆動能力に近い”INV3”が被最適化ブロックの最適素子として選択されて置換される。この結果、被最適化ブロックの回路面積は最適化が行なわれても保持され、実装面積の過大な増加が抑制される。
【0083】次に図13について説明する。同図は代表ピン選択処理の処理内容を示すフローチャートである。この処理は、被最適化ブロックが複数の入力ピンを有しているときの最適化を行なうための処理であり、従来のクリティカルパス上の入力ピンについて行なう手法に代えて、その被最適化ブロックの前段のブロックであって遅延量の最も大きなプロックが接続されている入力ピンについて駆動能力の最適化を行なうようにするものである。
【0084】この図13の処理は、前述した図4若しくは図12のブロック最適化処理におけるS111の処理の際に実行される。まず、S131において、被最適化ブロックが信号多入力のブロックであるか否か、すなわち入力ピンを複数持つブロックであるか否かが判定される。そして、この判定結果がYesのときにのみ、S132において、各入力ピンがつながっている前段の各ブロックについての最大遅延の値が取得される。
【0085】続くS133では、それらの値のうちで最大であるもののブロックに繋げられている入力ピンが、その被最適化ブロックの代表ピンとして選択される。なお、S131の判定結果がNo、すなわち被最適化ブロックが入力ピンを1つのみ有している場合は、そのピンが代表ピンとされる。
【0086】以上の代表ピン選択処理がCPU101によって行なわれることによって被最適化ブロックの代表ピンが選択される具体例を示す。前述した図9において、被最適化ブロックとして例えばブロックDについて注目する。
【0087】ブロックDはa及びbの入力ピンを有している。そして、これらの2つの入力ピンにつながる前段のブロックは、ブロックA及びブロックCである。これらのブロックまでの最大遅延の値はそれぞれ30、25であることが図9には示されており、その値はブロックAの方が大きい。よって、ブロックDにおいては、ブロックAに繋げられているピンaが代表ピンとなる。
【0088】次に、例えばブロックCが被最適化ブロックである場合について考える。ブロックCの入力ピンはaのみであるから、このピンaがブロックCの代表ピンとなる。次に図14について説明する。同図は駆動能力分配処理の処理内容を示すフローチャートである。この処理は、後段に複数のブロックが繋げられている、つまり複数のファンアウトを有する被最適化ブロックの最適化を行なった後に、これらの後段の各ブロックに指定されていた駆動能力の違いをスラック値(タイミングの余裕度)に基づいて平準化させることによって、これらの各ブロックに対して後に行なわれる最適化において要求することとなる駆動能力が過剰に見込まれることを抑制させるものである。
【0089】この図14の処理は、前述した図3の回路遅延最適化処理におけるS107のブロック最適化処理の直後に実行される。図14において、S141では、被最適化ブロックの後段のブロックのうち、その被最適化ブロックの出力ピンに接続されている入力ピンがそのブロックの代表ピンであるものが全て検出される。以下の説明においては、この処理によって検出された後段のブロックを「ブランチブロック」と称することとする。
【0090】続くS142において、ブランチブロックが複数検出されたか否かが判定され、この判定結果がYesならばS143に処理が進む。一方、この判定結果がNoならばブランチブロックの駆動能力の分配は行なわれずにこのままこの駆動能力分配処理が終了する。
【0091】S143では、各ブランチブロックの代表ピンについて、それらの駆動能力が前述したライブラリでの定義から取得され、それらの合計値が算出される。S144では、前述した図3のS105の処理によって既に算出されている、各ブランチブロックについてのスラック値が取得され、続くS145において取得されたスラック値の平均値(スラック平均値)が算出される。
【0092】S146では、算出されたスラック平均値と各ブランチブロックのスラック値との差分に基づき、且つブランチブロック全体での駆動能力を保持するような駆動能力が各ブランチブロックについて算出され、各ブランチブロックに分配される。
【0093】以上の駆動能力分配処理によって求められた駆動能力が各ブランチブロックについての最適化前の駆動能力として設定され、後にこれらのブランチブロックについての最適化処理が行なわれる。駆動能力分配処理がCPU101によって行なわれることによってブランチブロックに対する駆動能力の分配が行なわれる具体例を示す。
【0094】図15はこれより駆動能力分配処理を施す回路網の一例を示している。同図において、各ブロックの入力ピンa及びbのうち黒丸印が付されているものはそのブロックの代表ピンであることを示している。なお、以降の説明においては、図15に示す回路網を「回路網B」と称することとする。
【0095】回路網Bにおいて、被最適化ブロックとしてブロックAが選択されていた場合、そのブロックAの出力ピンxはブロックC、ブロックD、及びブロックEのいずれも入力ピンaに繋げられている。ここで、ブロックC、ブロックD、及びブロックEの入力ピンaはいずれも代表ピンであることが図15に示されている。よって、被最適化ブロックAに対するブランチブロックはブロックC、ブロックD、及びブロックEとなる。
【0096】また、回路網Bにおいて、被最適化ブロックとしてブロックBが選択されていた場合、そのブロックAの出力ピンxは、ブロックD及びブロックEのいずれも入力ピンbとブロックFの入力ピンaとに繋げられている。ここで、ブロックD及びブロックEの入力ピンbはいずれも代表ピンではなく、ブロックFの入力ピンaは代表ピンであることが図15に示されている。よって、被最適化ブロックBに対するブランチブロックはブロックFのみとなる。
【0097】被最適化ブロックAに対するブランチブロックC、D、及びEについての説明を続ける。これらのブランチブロックの素子名、代表ピンの駆動能力、スラック値はそれぞれ下記の表に示すものであったとする。
【0098】
【表3】

【0099】上記の表において、これらのブランチブロックの駆動能力の合計値は48.0であり、スラック平均値は−40.0である。ここで、スラック値が平均値以上、すなわちタイミングの余裕の少ないブランチブロックについてはその駆動能力を次のように計算する。
【0100】
【数4】

【0101】上式において、駆動能力計算値:C’そのブランチブロックについて現在指定されている駆動能力:Cそのブランチブロックのスラック値:Sブランチブロック全体のスラック平均値:Sav補正係数:k例えば補正係数kを0.01とすると、[表3]において、スラック値が平均値以上、すなわちタイミングの余裕の少ないブランチブロックであるブロックCについてはC’=15.6となり、ブロックCに対して現在指定されているものよりも高めに駆動能力が分配される。なお、補正係数kは経験や実験での実測結果等に基づいて適切に設定される。
【0102】次に、スラック値が平均値よりも小さい、すなわちタイミングの余裕が多いブランチブロックについてはその駆動能力を次のように計算する。まず、スラック値が平均値よりも小さいブランチブロックについての駆動能力計算値C’を用いて下記の式を計算する。
【0103】
【数5】

【0104】上式において、Cdiffは駆動能力差分の和である。[表3]においては、Cdiffは2.6と算出される。次に、スラック値が平均値よりも小さいブランチブロックについて、駆動能力×(スラック平均値−スラック値)の総和Sdiffを次式より算出する。
【0105】
【数6】

【0106】[表3]において、スラック値が平均値よりも小さいブランチブロックはブロックD及びブロックEであり、このときのSdiffは335.0と算出される。以上のようにして取得されたCdiff及びSdiffの値に基づき、スラック値が平均値より大きいブロックの駆動能力を、下記の式に沿って算出する。
【0107】
【数7】

【0108】[表3]において、スラック値が平均値よりも小さい、すなわちタイミングの余裕の多いブランチブロックであるブロックD及びブロックEについて、ブロックDはC’=18.3、ブロックEはC’=14.1となり、ブロックD及びブロックEに対して現在指定されているものよりも低めに駆動能力が分配される。このように、ブロックD及びブロックEについては要求される駆動能力が抑制されたので、実装面積の低減化等が期待できる。
【0109】次に図16について説明する。同図は駆動能力比率計算処理の処理内容を示すフローチャートである。この処理は、被最適化ブロックについてのブランチブロック全体の駆動能力と、そのブランチブロックの各々に指定されているものの中での最小の駆動能力との比率(駆動能力比率)を算出する処理であり、後に説明する処理においてはこの駆動能力比率の値を利用してブランチブロックの最適化を行なう。
【0110】図16において、図14と同一の処理内容を示すステップには同一の符号を付している。図16を図14に示す駆動能力分配処理の処理内容を示すフローチャートと比較すると分かるように、この図16に示されている処理は、図14のS145及びS146の処理がS151及びS152の処理に置き換えられたものである。
【0111】なお、この駆動能力比率計算処理は、被最適化ブロックに対するブロック最適化が完了した後に、その被最適化ブロックの後段のブランチブロックに対して行なわれる処理であり、前述した図3の回路遅延最適化処理におけるS107のブロック最適化処理の後であって、前述した図14の駆動能力分配処理の直後に実行される。
【0112】図16において、S144の処理に続くS151では、各ブランチブロックのうちからスラック値が最も大きい、すなわちタイミングの余裕が最も少ないブランチブロックが選択される。続くS152では、既に計算されているブランチブロック全体の駆動能力の和と、最大のスラック値を有するブランチブロックの駆動能力との比率、すなわち駆動能力比率が計算される。
【0113】以上の駆動能力比率計算処理がCPU101によって行なわれることによって駆動能力比率が計算される具体例を示す。前述した図15の回路網B中のブロックAについてのブランチブロックC、D、及びEにおいて、それぞれの素子名、駆動能力、スラック値、駆動能力計算値(前述した駆動能力分配処理によって算出された値)が下記の表の通りであったとする。
【0114】
【表4】

【0115】上記の表より、これらブランチブロックの駆動能力の和は48.0であり、また、これらブランチブロックの中でスラック値が最も大きい、すなわちタイミングの余裕が少ないのはスラック値−20.0のブロックCであることは容易に分かる。
【0116】[表4]において、ブロックCの駆動能力計算値は15.6である。従ってこのときの駆動能力比率mは、m=48.0/15.6=3.1と求められる。
【0117】次に、この駆動能力比率を用いたブランチブロックの最適化について説明する。図17は、この駆動能力比率を用いて行なわれる駆動能力変化率反映処理の処理内容を示すフローチャートである。この駆動能力変化率反映処理は、被最適化ブロックに対するブロック最適化が完了した後に、その被最適化ブロックの後段のブランチブロックに対して行なわれる処理であり、前述した図3の回路遅延最適化処理におけるS107のブロック最適化処理の後であって、前述した図14の駆動能力分配処理の直後に実行される。
【0118】図17において、図16と同一の処理内容を示すステップには同一の符号を付している。図17を図16に示す駆動能力比率計算処理の処理内容を示すフローチャートと比較すると分かるように、この図17に示されている処理は、図16のS152の処理に続いてS153からS158にかけての処理が追加されたものである。
【0119】S152に続くS153では、同一のドライブブロックに繋げられているブランチブロックのうちスラック値が最大であり、最もタイミングの余裕が少ないものの最適駆動能力が計算される。なお、このときに、S152の処理によって算出された駆動能力比率が利用される。
【0120】S154では、前ステップで求められた最適駆動能力に基づいて、そのブランチブロックでの使用が現在指定されている素子と同じ論理素子グループに属する素子のうち、そのブランチブロックの最適駆動能力を満たす最適な駆動能力を有するものが選択され、そのブランチブロックについての指定がその素子を使用するように置換される。
【0121】S155では、スラック値が最大のブランチブロックについて、S154の処理において置換された素子の駆動能力と、その置換前に設定されていた駆動能力とからその駆動能力の変化率が計算される。その後、S156において、同一のドライブブロックに繋げられている全てのブランチブロックに対して最適化が行なわれたか否かが判定される。この判定処理の結果がYes、すなわち全てのブランチブロックの最適化が行なわれたと判定されたときにはこの駆動能力最適化反映処理が終了する。
【0122】一方、このS156の判定処理の結果がNo、すなわち、最適化の行われていないブランチブロックが未だ残っていると判定されたならば、S157へと処理が進む。S157では、最適化を行なうブランチブロックの駆動能力と、スラック値が最大のブロックについての駆動能力変化率とに基づいてそのブランチブロックについての最適駆動能力が計算される。
【0123】続くS158では、前ステップで求められた最適駆動能力に基づいて、ブランチブロックでの使用が現在指定されている素子と同じ論理素子グループに属する素子のうち、そのブランチブロックの最適駆動能力を満たす最適な駆動能力を有するものが選択され、そのブランチブロックについての指定がその素子を使用するように置換される。この処理を終えた後にはS156へと処理が戻り、上述した処理が繰り返される。
【0124】以上の駆動能力最適化反映処理について、更に詳説する。ます、前述した駆動能力比率、すなわちブランチブロック全体の駆動能力をスラック値が最大のブランチブロックの駆動能力で割った値をmとする。図17のS153の処理においてスラック値が最大のブランチブロックについての最適駆動能力を計算するときには、前述した図4のS114の処理のために用いた[数2]式に代えて下記の式を用いる。
【0125】
【数8】

【0126】なお、上式において、最適化済ブロックの遅延+被最適化ブランチブロックの遅延:D最適化済ブロックの駆動能力:C1最適化済ブロックの遅延率:G1最適化済ブロックの寄生容量:P1被最適化ブランチブロックの駆動能力:c2被最適化ブランチブロックの遅延率:G2被最適化ブランチブロックの寄生容量: P2被最適化ブランチブロックの負荷容量: C3クロック単位時間: τ被最適化ブランチブロック分を除いた最適化済ブロックの負荷容量の和(ネットの負荷容量も含む):Cotherである。従って、最適化済ブロックの負荷容量は、c2×m+Cotherで表されることになる。
【0127】この[数8]式をc2で微分したときの値が0となればこの部分の遅延が最小となる。従って、このようなc2の値が最適な駆動能力となる。すなわち、【0128】
【数9】

【0129】となり、このc2を被最適化ブランチブロックの最適駆動能力とする。図17のS155の処理における駆動能力の変化率の計算では、S154の処理において最適化によって置換された素子の駆動能力をその置換前の素子の駆動能力計算値で除算した結果の値を駆動能力変化率とする。なお、ここでは、駆動能力変化率を係数Gとして表すこととする。
【0130】[表4]において、ブロックCは最適化前の駆動能力計算値が15.6である。ここで、ブロックCに対して施された最適化によって置換された素子の駆動能力が16.0であったとすると、係数Gの値は1.026となる。一方、スラック値が最小ではない他のブランチブロックの最適駆動能力は、駆動能力計算値に係数Gを掛けて求める。例えば、スラック値が最小でないブランチブロックであるブロックDの駆動能力計算値は、[表4]より18.3であることが分かる。ここで、係数Gを1.026とすると、このブロックDの最適駆動能力は18.8となる。よって、ブロックDの最適化では、このブロックDに現在指定されている素子と同一の論理素子グループに属し、前述した計算により求められた最適駆動能力に最も近い駆動能力を持つ素子への置換が行なわれる。
【0131】次に図18について説明する。同図はピン駆動能力指示検出処理の処理内容を示すフローチャートである。この処理は、遅延最適化を行なうときに、その対象である論理回路網の入力端子に接続される外部の素子の入力ピンの駆動能力値や論理回路網の出力端子に接続される外部の素子の入力ピンの負荷容量値(すなわち駆動能力値)、あるいは回路内部のブロックの入力ピンについての駆動能力値について、前述したライブラリなどで定義されている所定のものを適用させる代わりに、ユーザが本装置へ任意に指示できるようにするものであり、実際に想定される外部端子への接続の再現や、回路構成の変更が予定される箇所でのその変更を見込んだ上での最適化を可能とするためのものである。
【0132】この図18の処理は、前述した図3の回路遅延最適化処理におけるS101及びS102の処理により最適化の対象である回路網についての情報が読み込まれた直後に実行される。図18において、まず、S161では、ピンの駆動能力についての外部指示が入力部105になされたか否かが判定され、この判定の結果がYesならばS162に処理が進む。一方、この判定の結果がNoならばこのまま何もせずにこのピン駆動能力指示検出処理を終了する。
【0133】S162では、入力部105へ指示された駆動能力の読み込みが行なわれる。S163では、入力部105へ指示された全てのピンについて、後述するS164の検索処理が行なわれたか否かが判定され、この判定の結果がYesならばこのピン駆動能力指示検出処理を終了する。一方この判定の結果がNoならばS164に進む。
【0134】S164では入力部105へ指示されたピンが最適化対象である論理回路網から検索され、続くS165でそのピンがその論理回路網に存在するか否かが判定される。そして、このS165の判定結果がYesのときにのみ、S166において、そのピンの駆動能力値が入力部105へ指示された値に変更されて後に行なわれる最適化の処理に反映される。その後は処理がS163へ戻って上述した処理が繰り返される。
【0135】以上の図18に示されている処理がCPU101によって行なわれることによってピンの駆動能力の指示が反映される具体例を示す。まず、前述した図15の回路網Bにおいて、各入力ピンの駆動能力がライブラリにおいて下記の表のように定義されていたとする。
【0136】
【表5】

【0137】このとき、外部指示で“ブロックC−a=10.0”なる指示がなされた場合、ブロックC−aピンには、ライブラリでは13.0が定義されているが、これに代えて最適化前の駆動能力値として10.0が設定される。同様に“回路網B−a=13.0”なる指示がなされた場合にも、回路網B−aピンには駆動能力値として13.0が設定される。この指示はすなわち、ブロックA−aピンが駆動能力13.0のブロックで駆動されているとみなされることとなる。
【0138】また、もしも“ブロックB−b=16.0”のような指示がなされた場合には、ブロックB−bピンは回路網Bには存在しないので、無視される。次に図19について説明する。同図はネット負荷容量反映処理の処理内容を示すフローチャートである。この処理は、遅延の最適化を、ネット容量、すなわちブロック間の配線に起因して生じる容量を反映させて行なうことを可能とするための処理である。なお、ネット容量は、例えば論理回路の実装設計をある程度行なった時点で再度回路遅延の最適化を行なうような場合に、その実装設計の情報から部分的に取得することが可能である。
【0139】この図19の処理は、前述した図3の回路遅延最適化処理におけるS101及びS102の処理により最適化の対象である回路網についての情報が読み込まれた直後に実行される。図19において、まず、S171では、ネットの負荷容量を遅延最適化に反映させる指示が入力部105になされたか否かが判定され、この判定の結果がYesならばS172に処理が進む。一方、この判定の結果がNoならばこのまま何もせずにこのネット負荷容量反映処理を終了する。
【0140】S172では実装情報を持つデータベースから最適化の対象である回路網中の各ネットの負荷容量の情報が抽出され、続くS173においてその情報が通信ネットワークを介してI/F部104より読み込まれる。S174では、取得された全てのネット容量の情報について、後述するS175の検索処理が行なわれたか否かが判定され、この判定の結果がYesならばこのネット負荷容量反映処理を終了する。一方この判定の結果がNoならばS175に進む。
【0141】S175では取得されたネット容量の情報に対応するネット(配線)が最適化対象である論理回路網から検索され、続くS176でそのネットがその論理回路網に存在するか否かが判定される。そして、このS176の判定結果がYesのときにのみ、S177において、そのネットの負荷容量が、標準的に用いられている値から取得された情報に示されている値へと変更されて後に行なわれる最適化の処理に反映される。その後は処理がS174へ戻って上述した処理が繰り返される。
【0142】以上の図18に示されている処理がCPU101によって行なわれることによってネットの負荷容量が反映される具体例を示す。まず、前述した図15の回路網Bについての実装情報を持つデータベースDB1の存在を想定する。
【0143】このデータベースDB1は、回路網BにおけるネットNetA及びNetBの実装配線情報を有しており、それと共にそれらのネットの負荷容量情報Cneta及びCnetbをも有している。図19のS172の処理によってこれらの情報が抽出されると、下記のような形式のテキスト情報がデータベースDB1から本装置へと送られてくる。
【0144】
NetCapacity{NetA=Cneta;
NetB=Cnetb;
… … …}
CPU101では上記の情報が読み込まれて解釈される。そしてNetAには負荷容量Cnetaが、また、NetBには負荷容量Cnetbが設定される。
【0145】これらの値が設定されると、例えばブロックAの負荷容量は、ブロックC−a、ブロックD−a、ブロックE−aの各々の駆動能力とネット負荷容量Cnetaとの和となる。次に図20について説明する。同図はブロック非最適化指示検出処理の処理内容を示すフローチャートである。この処理は、遅延最適化を行なうときに、その対象である論理回路網のうちのブロックについてはユーザの指示に応じて最適化を行なわないようにすることを可能とする処理であり、例えば論理回路の実装面積及び信号遅延に余裕があるときには敢えて新たな実装設計を行なわずに既に設計済みのものをそのまま流用するときなどに有効なものである。
【0146】この図20の処理は、前述した図3の回路遅延最適化処理におけるS101及びS102の処理により最適化の対象である回路網についての情報が読み込まれた直後に実行される。図20において、まず、S181では、ブロックの非最適化についての外部指示、すなわち一部の回路ブロックについて最適化を行なわない旨の外部指示が入力部105になされたか否かが判定され、この判定の結果がYesならばS182に処理が進む。一方、この判定の結果がNoならばこのまま何もせずにこのブロック非最適化指示検出処理を終了する。
【0147】S182では、入力部105へ指示された最適化を行なわないブロックを示す情報の読み込みが行なわれる。S183では、入力部105へ指示された全てのブロックについて、後述するS184の検索処理が行なわれたか否かが判定され、この判定の結果がYesならばこのブロック非最適化指示検出処理を終了する。一方この判定の結果がNoならばS184に進む。
【0148】S184では入力部105へ指示されたブロックが最適化対象である論理回路網から検索され、続くS185でそのブロックがその論理回路網に存在するか否かが判定される。そして、このS185の判定結果がYesのときにのみ、S186において、非最適化を示す属性がそのブロックに設定される。その後は処理がS183へ戻って上述した処理が繰り返される。
【0149】以上のブロック非最適化指示検出処理が実行されるときには、前述した図3の回路遅延最適化処理の処理内容が図21に示すように変更される。図21を参照すると分かるように、この変更は図3のS106の処理とS107の処理との間にS187の処理として、最適化対象のブロックに非最適化の属性が設定されているか否かの判定処理が挿入されるというものである。そして、この変更により、この判定処理の結果がYesのときにのみ、S107のブロック最適化処理が実行されるようになる。
【0150】以上の処理がCPU101によって行なわれることによって最適化対象の論理回路の一部のブロックについて最適化が行なわれなくなる具体例を示す。前述した図15の回路網Bにおいて、例えばブロックDが非最適化ブロックとして外部指示されると、ブロックDには非最適化の属性が付与される。このときには、ブロックAにおける負荷容量としてブロックD−aの駆動能力は加算されるが、ブロックAについてのブランチブロックにはブロックDは含まれず、ブロックC、Eのみとする。つまり、ブロックDについては最適化処理が行なわれない。
【0151】次に図22について説明する。同図は素子変更情報出力処理の処理内容を示すフローチャートである。この処理は、回路の遅延最適化によって使用する素子に変更が生じたときにその変更内容をユーザに提示可能とするものであり、変更内容を明確にユーザに告知できるようにすることで後の実装設計等の作業における作業効率の向上を目指すものである。
【0152】なお、この素子変更情報出力処理は、S191の処理として示すように、前述した図3の回路遅延最適化処理に続けて実行される。S191に続くS192では、使用素子の変更情報が格納される変更情報ファイルの出力指示がユーザによって入力部105になされているか否かが判断され、この判定の結果がYesならばS193に処理が進む。一方、この判定の結果がNoならば直ちにこの素子変更情報出力処理が終了する。
【0153】S193では、遅延最適化の対象である論理回路における全てのブロックについて、後述するS194からS196にかけての処理が行なわれたか否かが判定され、この判定の結果がYesならばこの素子変更情報出力処理を終了する。一方この判定の結果がNoならばS194に進む。
【0154】S194では、処理対象のブロックについてそのブロックに付されている名称(固有名)が取得され、続くS195では、そのブロックで最適化の前に使用することが指定されていた素子の素子名とそのブロックで最適化によって使用することとされた素子の素子名とが取得される。
【0155】S196では、上述したS195及びS196の処理によって取得された固有名及び素子名を関連付けて変更情報ファイルに格納する。その後はS193へと処理が戻って上述した処理が繰り返される。以上の図22に示されている処理がCPU101によって行なわれることによって使用する素子の変更情報が出力される具体例を示す。
【0156】前述した図15の回路網Bについて、前述した回路遅延最適化処理の結果、下記の表のように素子の置換が行なわれたものとする。
【0157】
【表6】

【0158】図22のS196の処理では、上記の表に示されている情報から、例えば次のような形式で変更情報ファイルに格納して出力する。
Change ブロックA: INV4,INV5;
Change ブロックB: INV1,INV2;
Change ブロックC: INV2,INV3;
Change ブロックD: 2NAND4,2NAND4;
Change ブロックE: 2NOR3,2NOR2;
Change ブロックF: INV3,INV1;
なお、本発明を標準的なコンピュータで実施するには、以上までに説明した本発明の実施形態において本装置の有するCPU101が行なっていたものと同様の処理をそのコンピュータに行なわせるための制御プログラムを作成し、その制御プログラムをコンピュータに読み込ませて実行させることにより可能となる。
【0159】また、このような制御プログラムをコンピュータで読み取り可能な記録媒体に記録させ、そのプログラムを記録媒体からコンピュータに読み出させて実行させることによって本発明をコンピュータで実施することも可能である。記録させた制御プログラムをコンピュータで読み取ることの可能な記録媒体の例を図23に示す。同図に示すように、記録媒体としては、例えば、コンピュータ201に内蔵若しくは外付けの付属装置として備えられるROMやハードディスク装置などのメモリ202、あるいはフロッピー(登録商標)ディスク、MO(光磁気ディスク)、CD−ROM、DVD−ROMなどといった可搬型記憶媒体203等が利用できる。また、記録媒体は回線204を介してコンピュータ201と接続される、プログラムサーバ205として機能するコンピュータが備えている記憶装置206であってもよい。この場合には、制御プログラムを表現するデータ信号で搬送波を変調して得られる伝送信号を、プログラムサーバ205から伝送媒体である回線204を通じて伝送するようにし、コンピュータ201では受信した伝送信号を復調して制御プログラムを再生することで当該制御プログラムを実行できるようになる。
(付記1) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なうシステムであって、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう駆動能力値算出手段と、前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう変更手段と、を有することを特徴とする論理回路遅延最適化システム。
(付記2) 前記変更手段は、前記変更前に選択されていたものと同一の実装回路面積を要する前記素子を選択するように該変更を行なうことを特徴とする付記1に記載の論理回路遅延最適化システム。
(付記3) 前記論理回路に入力された信号若しくは該論理回路内のフリップフロップである回路ブロックから出力された信号が、前記対象回路ブロックについての前段回路ブロックを通過して出力されるまでに生じ得る遅延量を、該前段回路ブロックまでの遅延量として算出する遅延量算出手段と、前記対象回路ブロックに信号を入力するための複数の入力ピンのうち、該対象回路ブロックについての前段回路ブロックであって該前段回路ブロックまでの前記遅延量が最大であるものが接続されている該入力ピンを該指定変更の対象である回路ブロックの代表ピンとする代表ピン決定手段と、を更に有し、前記駆動能力値算出手段は、前記対象回路ブロックについての前段回路ブロックのうち、前記代表ピンに接続されている前段回路ブロックについての駆動能力値に基づいて前記算出を行なう、ことを特徴とする付記1に記載の論理回路遅延最適化システム。
(付記4) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう装置であって、前記回路ブロックのスラック値の算出を行なうスラック値算出手段と、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配する駆動能力値分配手段と、前記駆動能力値分配手段によって分配された駆動能力値を前記後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行なう後段回路ブロック駆動能力値算出手段と、前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックで使用される前記素子の指定の変更を行なう後段回路ブロック変更手段と、を有することを特徴とする論理回路遅延最適化システム。
(付記5) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう装置であって、前記回路ブロックのスラック値の算出を行なうスラック値算出手段と、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出する駆動能力比率算出手段と、前記駆動能力比率算出手段によって算出された駆動能力値の比率に基づいて、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出する第一駆動能力値算出手段と、前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう第一後段回路ブロック変更手段と、を有することを特徴とする論理回路遅延最適化システム。
(付記6) 前記後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての前記指定変更前における駆動能力値と前記第一後段回路ブロック変更手段による変更後に指定されている前記素子の駆動能力値とよりこれらの駆動能力値の変化率を算出する変化率算出手段と、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックに要求する駆動能力値を、前記変化率に基づいて算出する第二駆動能力値算出手段と、前記第二駆動能力値算出手段によって算出された駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックについての前記指定の変更を行なう第ニ後段回路ブロック変更手段と、を更に有することを特徴とする付記5に記載の論理回路遅延最適化システム。
(付記7) 前記論理回路の外部入力端子に接続される素子の駆動能力値が入力される外部素子駆動能力値入力手段を更に有し、前記駆動能力値算出手段は、前記外部入力端子に接続されている前記対象回路ブロックに要求する駆動能力値の算出を、前記外部素子駆動能力値入力手段に入力された駆動能力値が前記前段回路ブロックの駆動能力値であるとみなして行なう、ことを特徴とする付記1から3までのうちのいずれか一項に記載の論理回路遅延最適化システム。
(付記8) 前記前段回路ブロックの駆動能力値が入力される前段回路ブロック駆動能力値入力手段を更に有し、前記駆動能力値算出手段は、前記前段回路ブロック駆動能力値入力手段に入力された駆動能力値を前記前段回路ブロックの駆動能力値とみなして前記対象回路ブロックに要求する駆動能力値の算出を行なう、ことを特徴とする付記1から3までのうちのいずれか一項に記載の論理回路遅延最適化システム。
(付記9) 前記論理回路の外部出力端子に接続される素子によって該論理回路に与えられる負荷容量値が入力される外部素子負荷容量値入力手段を更に有し、前記駆動能力値算出手段は、前記外部出力端子に接続されている前記対象回路ブロックに要求する駆動能力値の算出を、前記外部素子負荷容量値入力手段に入力された負荷容量値が該対象回路ブロックに対して与えられた負荷容量値であるとみなして行なう、ことを特徴とする付記1から3までのうちのいずれか一項に記載の論理回路遅延最適化システム。
(付記10) 前記論理回路の実装設計が行なわれることによって得られる前記回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、前記駆動能力値算出手段は、前記配線容量取得手段によって取得された配線容量を前記負荷容量値に加味して前記対象回路ブロックに要求する駆動能力値の算出を行なう、ことを特徴とする付記1から3までのうちのいずれか一項に記載の論理回路遅延最適化システム。
(付記11) 前記論理回路の実装設計が行なわれることによって得られる前記回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、前記後段回路ブロック駆動能力値算出手段は、前記配線容量取得手段によって取得された配線容量を加味して前記算出を行なう、ことを特徴とする付記4に記載の論理回路遅延最適化システム。
(付記12) 前記論理回路の実装設計が行なわれることによって得られる前記回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、前記第一駆動能力値算出手段は、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値の算出を、前記配線容量取得手段によって取得された配線容量を加味して行なう、ことを特徴とする付記5に記載の論理回路遅延最適化システム。
(付記13) 前記論理回路の実装設計が行なわれることによって得られる前記回路ブロック間の配線によって生じる配線容量を取得する配線容量取得手段を更に有し、前記第一駆動能力値算出手段は、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値の算出を、前記配線容量取得手段によって取得された配線容量を加味して行ない、前記第ニ駆動能力値算出手段は、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されているものを除いた他の後段回路ブロックに要求する駆動能力値の算出を、前記配線容量取得手段によって取得された配線容量を加味して行なう、ことを特徴とする付記6に記載の論理回路遅延最適化システム。
(付記14) 前記回路ブロックに対して前記指定の変更を行なわないことを示す属性を付与する非最適化属性付与手段を更に有し、前記変更手段は、前記非最適化属性付与手段によって前記属性が付与されている前記対象回路ブロックについては、前記指定の変更を行なわない、ことを特徴とする付記1から3までのうちのいずれか一項に記載の論理回路遅延最適化システム。
(付記15) 前記変更手段によって前記指定の変更が行なわれた前記対象回路ブロックにおける該変更の内容を出力する変更内容出力手段を更に有することを特徴とする付記1から3までのうちのいずれか一項に記載の論理回路遅延最適化システム。
(付記16) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう方法であって、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行ない、前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう、ことを特徴とする論理回路遅延最適化方法。
(付記17) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう方法であって、前記回路ブロックのスラック値の算出を行ない、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配し、前記後段回路ブロックの各々に分配された駆動能力値を前記後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行ない、前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックで使用される前記素子の指定の変更を行なう、ことを特徴とする論理回路遅延最適化方法。
(付記18) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう方法であって、前記回路ブロックのスラック値の算出を行ない、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出し、前記比率に基づいて、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出し、前記比率に基づいて算出された駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう、ことを特徴とする論理回路遅延最適化方法。
(付記19) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムであって、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう処理と、前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう処理と、を該コンピュータに行なわせるためのプログラム。
(付記20) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムであって、前記回路ブロックのスラック値の算出を行なう処理と、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配する処理と、前記後段回路ブロックの各々に分配された駆動能力値を前記後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行なう処理と、前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックで使用される前記素子の指定の変更を行なう処理と、を該コンピュータに行なわせるためのプログラム。
(付記21) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムであって、前記回路ブロックのスラック値の算出を行なう処理と、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出する処理と、前記比率に基づいて、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出する処理と、前記比率に基づいて算出された駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう処理と、を該コンピュータに行なわせるためのプログラム。
(付記22) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムを含む搬送波に具現化されたコンピュータ・データ・シグナルであって、該プログラムは以下の処理をコンピュータに行なわせる:回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、前記指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている前段回路ブロックに指定がされている前記素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行なう処理、及び前記算出によって得られた駆動能力値に基づいて前記対象回路ブロックで使用される前記素子の指定の変更を行なう処理。
(付記23) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムを含む搬送波に具現化されたコンピュータ・データ・シグナルであって、該プログラムは以下の処理をコンピュータに行なわせる:前記回路ブロックのスラック値の算出を行なう処理、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配する処理、前記後段回路ブロックの各々に分配された駆動能力値を前記後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行なう処理、及び前記算出によって得られた駆動能力値に基づいて前記後段回路ブロックで使用される前記素子の指定の変更を行なう処理。
(付記24) 複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なう処理をコンピュータに行なわせるためのプログラムを含む搬送波に具現化されたコンピュータ・データ・シグナルであって、該プログラムは以下の処理をコンピュータに行なわせる:前記回路ブロックのスラック値の算出を行なう処理、前記論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている前記素子によって定まる前記指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出する処理、前記比率に基づいて、前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出する処理、及び前記比率に基づいて算出された駆動能力値に基づいて前記後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての前記指定の変更を行なう処理。
【0160】
【発明の効果】以上詳細に説明したように、複数の回路ブロックを接続してなる論理回路に対し、該回路ブロック毎に指定がされている該回路ブロックを構成するために使用するプリミティブな素子についての該指定を該素子と同一の機能を有し且つ駆動能力値は異なる他のプリミティブな素子へ変更することによって、該論理回路内を伝播する信号の遅延についての最適化を行なうときに、本発明は、回路ブロックに与えられる負荷容量値が該回路ブロック内を伝播する信号を遅延させる割合を示す該回路ブロックの遅延率と、該指定変更の対象である対象回路ブロックの前段として該対象回路ブロックに接続されている該回路ブロックに指定がされている該素子によって定まる該前段回路ブロックの駆動能力値と、該対象回路ブロックの後段に他の回路ブロックが接続されることにより該対象回路ブロックに対して与えられる負荷容量値とに基づいて該対象回路ブロックに要求する駆動能力値の算出を行ない、該算出によって得られた駆動能力値に基づいて該対象回路ブロックで使用される前記素子の指定の変更を行なうようにする。
【0161】こうすることにより、対象回路ブロックの前後段として接続されている回路ブロックに関する特性値から対象回路ブロックでの使用に最適な素子の選択が可能となる。その結果、論理回路中の全ての回路ブロックについて最適な素子の選択を行なうことでクリティカルパスの抽出を行なうことなく論理回路に対する遅延最適化が行なえるので、遅延最適化のために必要となる処理量が低減される。
【0162】あるいは、本発明は、該回路ブロックのスラック値の算出を行ない、該論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている該素子によって定まる該指定変更前の該後段回路ブロック毎の駆動能力値を、該後段回路ブロック毎の駆動能力値の合計値は維持しつつ且つ該後段回路ブロック毎に算出されたスラック値の差異に基づいて該後段回路ブロックの各々に分配し、該後段回路ブロックの各々に分配された駆動能力値を該後段回路ブロックの前段の回路ブロックの駆動能力値とみなして該後段回路ブロックに要求する駆動能力値の算出を行ない、該算出によって得られた駆動能力値に基づいて該後段回路ブロックで使用される該素子の指定の変更を行なうようにする。
【0163】こうすることにより、各回路ブロックのスラック値に基づき、タイミングの余裕が少ない後段回路ブロックには駆動能力値を多めに分配し、タイミングの余裕が多い後段回路ブロックには駆動能力値を少なめに分配すると、信号遅延量が大きくなっている信号パスを優先する最適化が可能となり、駆動能力のバランスの良好な遅延最適化が可能となる。
【0164】もしくは、本発明は、該回路ブロックのスラック値の算出を行ない、該論理回路中の回路ブロックの有するひとつの出力が該回路ブロックの後段の複数の回路ブロックである後段回路ブロックに接続されているときに、該後段回路ブロックに指定がされている該素子によって定まる該指定変更前の該後段回路ブロック毎の駆動能力値の合計と、該後段回路ブロックのうちスラック値によって最もタイミングの余裕が少ないことが示されているものについての該指定変更前における駆動能力値の比率を算出し、該比率に基づいて、該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックに要求する駆動能力値を算出し、該比率に基づいて算出された駆動能力値に基づいて該後段回路ブロックであってスラック値によって最もタイミングの余裕が少ないことが示されている該後段回路ブロックについての該指定の変更を行なうようにする。
【0165】こうすることにより、後段回路ブロックが複数のファンアウトを構成している場合におけるスラック値によって最もタイミングの余裕が少ないことが示されている後段回路ブロックについての該素子の指定の変更の際に、その後段回路ブロックと同時に駆動される他の後段回路ブロックについての特性値が考慮されるので、該素子の選択が適切に行なえるようになる。
【0166】以上のように、本発明のいずれの構成によっても、論理回路が有する回路遅延の最適化を行なうことができる。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013