JP3628109B2 - 制約条件評価方法及び制約条件評価装置 - Google Patents
制約条件評価方法及び制約条件評価装置 Download PDFInfo
- Publication number
- JP3628109B2 JP3628109B2 JP15566796A JP15566796A JP3628109B2 JP 3628109 B2 JP3628109 B2 JP 3628109B2 JP 15566796 A JP15566796 A JP 15566796A JP 15566796 A JP15566796 A JP 15566796A JP 3628109 B2 JP3628109 B2 JP 3628109B2
- Authority
- JP
- Japan
- Prior art keywords
- back edge
- point
- constraint
- subgraph
- graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、ICなどの要素の配置における制約条件中の矛盾の有無を評価する制約条件評価方法及び制約条件評価装置の改良に関するものである。
【0002】
【従来の技術】
ICレイアウト中の要素の配置などを与えられた制約条件にしたがって修正する場合、制約条件を制約グラフと呼ばれる有向グラフで表し、このグラフに基づいて制約条件中の矛盾の有無を評価する方法が知られている。図14は、制約グラフの一例を示す図である。すなわち、制約グラフは、通常複数の点vの間を枝(エッジ)で結んだもので、出発点たるソースと終着点たるシンクによって一体化された連結グラフである。この図では、点を円で、エッジを矢印で示している。
【0003】
制約グラフでは、ソースから任意の点に到達する経路が存在し、各点は、一般に、配置しようとする要素の所定の基準点を表し、その点の位置X(v)は要素を配置した際の要素の基準点の位置を表す。点の間のエッジには重みと呼ばれる数値が設定されている。各エッジの重みは、エッジの両端の点の要素を配置する際に要素の基準点間に必要な間隔ないし余地を表す。
【0004】
例えば、図15は、図14の制約グラフに対応する要素の配置の実例を示す図である。この図は、要素A,B,Cを配置する状態を示すもので、ここでは、X方向の配置を例にとる。この場合の制約条件は各要素間には2以上の余裕を要することである。
【0005】
このとき、各要素A,B,Cの配置は、それぞれ左端の点va ,vb ,vc を基準に位置X(va ),X(vb ),X(vc )によって表すことができる。図14はこの場合の制約条件に対応している。具体的には、点va と点vb の間の重み13は、要素Aの左端と要素Bの左端の間には、要素Aの一部の幅11に加え余裕2の計13の幅が必要であることを表している。また、点vb と点vc の間の重み12は、要素Bの左端と要素Cの左端の間には、要素Bの幅10に加え余裕2の計12の幅が必要であることを表している。
【0006】
また、制約グラフには一般にバックエッジが含まれる。このバックエッジは、点を何らかの基準に従ってソートし、始点が終点よりソート順で後にある枝(エッジ)である。バックエッジには典型的には、負の重みが設定される。図14のバックエッジは点vc から点va に向かっており、このバックエッジの重み−22は、要素Aの左端は要素Cの左端との関係において、最大左に22しか離れられないことを意味している。その理由は、要素Aの左端から、要素Cを配置すべき要素Aの凹み部分の右端までの余地が11+21の計32であるところに、要素Cは自らの幅8に加えて右側の余地2の計10を要求し、この結果、22の余地しか残らないからである。
【0007】
すなわち、一般に、点vμから点vνに向かうエッジeμνが存在し、エッジeμνに割り当てられた重みをW(eμν)とするとき、点vνの位置X(vν)は、点vμの位置X(vμ)より重みW(eμν)分以上右の位置よりも右側に配置しなければならない。この関係は、
【数1】
X(vν)≧X(vμ)+W(eμν)
と表すことができる。
【0008】
制約グラフには一般に閉路が含まれている。閉路は、エッジの向きに逆らうことなく循環できる経路であり、閉路のエッジのうち少なくとも一つはバックエッジである。バックエッジの重みは各要素を配置すべき余地を表し、バックエッジの終点から始点に向かう経路上の各エッジの重みの和がバックエッジの重みに収まれば、各要素がバックエッジによって表される余地に配置できることを意味する。終点から始点に向かう経路上の各エッジの重みの和がバックエッジの重みに収まるとは、閉路中の重みをすべて加算した数値が負になることを意味し、もちろん、各重みに正負逆の符号を用いる場合は数値が正になることを意味する。
【0009】
正のエッジの重みの和がバックエッジの重みに収まるか否かは、閉路中の重みを単純に加算することによって判定することができる。すなわち、エッジの重みの加算結果が正になる閉路はPC(Positive Cycle)と呼ばれ、PCが示す制約条件を満たす解は存在しないことが知られている(参考文献1:Y. E. Cho: A Subjective Review of Compaction, Proc. 22nd Design Automation Conference, 1985, pp 396−404./参考文献2:K. Ishima, S. Tsukiyama: On an Algorithm to Detect Positive Cycle in a Constraint Graph for Layout Compaction, IEICE Trans. Vol. E 74, No. 11 November 1991, pp 3613−3616 )。
【0010】
例えば、図15において、要素B,Cの幅の合計10+8=18と要素間の余裕の合計2×3=6との和である24と比べ、実際の凹みの幅は21しかないため幅は3不足しており、制約条件を満たすように要素を配置することは不可能である。この事実は、実際の配置を試みることなく、制約グラフ中の閉路の重みの加算によって確認することができる。すなわち、図14において、制約グラフ中のエッジの重みの和は、
【数2】
13+12−22=3>0
であるから、この閉路はPCであり、余地が3不足するために制約条件を満たす解が存在しないことが判定できる。
【0011】
このような制約グラフのPCは、ICなどのレイアウトの決定作業に先だってあらかじめ制約グラフから除去しておく必要があり、制約グラフの矛盾の評価とは、実質的には、このようなPCを検出除去することを意味する。そして、制約グラフに基づくPCの検出は、配置する要素の数や制約の種類が増大したり、それら相互間の関係が複雑化している場合に特に実益が大きい。
【0012】
ここで、制約グラフからPCを検出する従来の手法の一例を示す。この手法では、まず、点を何らかの基準にしたがってソートする。ここで、始点が終点よりソート順で後にある枝がバックエッジであるから、閉路が存在するときは閉路中の少なくとも1つの枝はバックエッジである。特に、点vをその位置X(v)の小さいものから順に並べてソートする場合、制約グラフでは、バックエッジの数bがグラフ全体の枝の総数に比べて少なくなる。そこで、バックエッジを含む経路のみを調べることで、制約グラフ中の閉路を効率良く検索できる。
【0013】
従来技術では、この事実を利用してPCの検出所要時間を短縮していた(前記参考文献2/参考文献3:J. Do, W. Dawson: SPACER II: A Well Behaved IC Layout Compactor, Proceedings of VLSI 85 International Conference, 1985.)。
【0014】
具体的には、まず、制約グラフGから全てのバックエッジfi (i=1,…,b)を除去して、除去済みグラフG0 とする。すなわち、
【数3】
G0 =G−{f1 ,f2 ,…,fb }
とする。ただし、G0 が非連結な場合は例外的に連結になるように最低限のバックエッジを追加してG0 とし、バックエッジの集合から追加したバックエッジは除くことにする。なお、バックエッジの集合が空集合(b=0)になるときは、制約グラフ内にPCが存在しないので直ちに処理を終わることができる。
【0015】
そして、除去済グラフG0 から始めて、各バックエッジfi についてi=1,…,bの順で以下の処理を繰り返す。すなわち、まず、グラフGi−1 にバックエッジfi を付加してGi−1 +fi とし、このグラフGi−1 +fi からPCを検出する。PCが検出された場合はそのPCを所定のメモリ領域に記録し、グラフGi−1 +fi からバックエッジfi を再度除去したグラフGi−1 を次のグラフGiとし次のバックエッジの処理を行う。バックエッジfi についてPCが検出されなかった場合はグラフGi−1 +fi はバックエッジfi は付加したまま次のグラフGi とし、次のバックエッジの処理を行う。
【0016】
この手順を繰り返す場合、始めのグラフG0 はバックエッジを含まないのでPCを含まない。また、PCが検出されたグラフGi−1 +fi からは当該PCに含まれていたバックエッジfi が再度除去されるのであるから、次のバックエッジfi+1 の処理に移る際の前記次のグラフGi にもPCは含まれない。この手順を繰り返す結果、検出されたすべてのPCは前記所定のメモリ領域に記録され、一方、Gb は制約グラフGから、他のエッジと共にPCを形成する、すべてのバックエッジを除去したものとなる。
【0017】
なお、各バックエッジfi (i=1,…,b)に係る繰り返しの間に一度もPCが発見されなかった場合は、除去済グラフG0 にすべてのバックエッジfi が再度付加されることになり、Gb =G0 となる。
【0018】
ここで、図16は、従来の手法によるPCの検出手順の例を具体的に示したフローチャートである。なお、各時点でのグラフGi において、グラフGi 中の2点vμ,vνの間の最長路の長さすなわち最長路長をLi (vμ,vν)のように表す。特に、ソースから点vμまでの最長路長をLi (vμ)のように表す。
【0019】
すなわち、図16の処理では、まず、除去済みグラフG0 におけるソースから各点vλまでの最長路長L0 (vλ)を求める(ステップ151)。次に、iを1からbまでインクリメントしながらすべてのバックエッジfi (i=1,…,b)を順次選択し(ステップ152,153)、各バックエッジfi について以下の処理を繰り返す。なお、バックエッジfi の始点をvμ、終点をvνとする。
【0020】
まず、ソースからバックエッジfi の終点vνまでの最長路長Li−1 (vν)と、ソースからバックエッジfi の始点vμまでの最長路長Li−1 (vμ)との差が、バックエッジfi の重みW(fi )に収まっていれば、当該最長路とバックエッジfi によって形成される閉路はPCでないと判断する(ステップ154)。すなわち、
【数4】
Li−1 (vν)≧Li−1 (vμ)+W(fi )
が成立すれば当該最長路とバックエッジfi によって形成される閉路はPCでない。
【0021】
ここで、本来は、バックエッジfi の始点vμと終点vν間の最長路長Li−1(vν,vμ)とバックエッジfi の重みW(fi )との関係で、当該最長路とバックエッジfi によって形成される閉路がPCであるか否かを判断することが理論的には単純である。これは、すなわち、
【数5】
0≧Li−1 (vν,vμ)+W(fi )
の成立によってPCの判断を行うものである。
【0022】
しかし、ソースから始点vμまでの最長路長Li−1 (vμ)は、ソースから終点vνまでの最長路長Li−1 (vν)に、終点vνから始点vμまでの最長路長Li−1 (vν,vμ)に加えたものと等しいか大きく、
【数6】
Li−1 (vμ)≧Li−1 (vν)+Li−1 (vν,vμ)
が成立し、この式を移項すれば、
【数7】
Li−1 (vμ)−Li−1 (vν)≧Li−1 (vν,vμ)
といえる。
【0023】
一方、数式4を移項すれば、
【数8】
0≧Li−1 (vμ)−Li−1 (vν)+W(fi )
であり、このうちLi−1 (vμ)−Li−1 (vν)の部分は数式7の左辺で置き換えることができる。この結果数式5が得られるので、数式4によってPCの判断を行うことは差支えない。このように、ソースからバックエッジfi の終点vνまでの最長路長Li−1 (vν)と、ソースからバックエッジfi の始点vμまでの最長路長Li−1 (vμ)との差に基づいて処理を行えば、バックエッジfiの始点vμと終点vν間の最長路長Li−1 (vν,vμ)を求める必要がないので、処理が高速化される。
【0024】
ステップ154において、当該最長路とバックエッジfi によって形成される閉路がPCでない場合、グラフにバックエッジfi を付加して、
【数9】
Gi =Gi−1 +fi
とする(ステップ155)。また、この付加によってどの点vλについてもソースからの最長路長Li−1 (vλ)は変化しないので、次のバックエッジfi の処理についても各最長路長Li−1 (vλ)を用いることとし、
【数10】
Li (vλ)=Li−1 (vλ)
として次のバックエッジの選択を行う(ステップ152)。
【0025】
一方、ステップ154において、
【数11】
Li−1 (vν)<Li−1 (vμ)+W(fi )
の場合は、まず、終点vνがソースから始点vμまでの最長路上にあるか否かを判断する(ステップ156)。ここで、終点vνがソースから始点vμまでの最長路上にあるとき、バックエッジfi と、ソースから始点vμまでの最長路上の終点vνから始点vμまでの経路との和である閉路がPCなので、これらをPCとして記録する(ステップ157)。この場合、グラフ及び各点の位置をそのままとして、すなわち、
【数12】
Gi =Gi−1Li (vλ)=Li−1 (vλ)
とし、次のバックエッジの選択に進む(ステップ152)。
【0026】
ステップ156において、終点vνがソースから始点vμまでの最長路上にないときは、ステップ158以降の手順に進む。すなわち、まず、グラフ中の終点vνからの経路が存在するすべての点vλについて、当該バックエッジの終点vνからの最長路長Li−1 (vν,vλ)を求める(ステップ158)。そして、この終点vνから始点vμまでの経路が存在し、Li−1 (vν,vμ)がバックエッジの重みW(fi )に収まらなければ、すなわち、
【数13】
Li−1 (vν,vμ)+W(fi )>0
ならば(ステップ159)終点vνから始点vμまでの最長路とバックエッジfi の和をPCとして記録する(ステップ157)。そして、グラフ及び各点の位置をそのままとして、すなわち、
【数14】
Gi =Gi−1Li (vλ)=Li−1 (vλ)
として、次の(i=i+1)バックエッジを選択する(ステップ152)。
【0027】
一方、ステップ159において、最長路長Li−1 (vν,vλ)がバックエッジの重みW(fi )に収まっていれば、すなわち、
【数15】
Li−1 (vν,vμ)+W(fi )≦0
ならば、バックエッジfi がPCの一要素にはなっていない。終点vνから始点vμまでの経路が存在しないときもバックエッジfi がPCの一要素にはなっていない。この場合は、グラフにバックエッジfi を付加して、
【数16】
Gi =Gi−1 +fi
とする(ステップ1510)。このとき、ソースから各点への経路に、付加されたバックエッジを経由するものが加わったことになる。そこで、各点のソースからの最長路長を更新する(ステップ1511)。すなわち、各点のソースからの最長路長Li については、付加されたバックエッジを経由する最長路長の方が大きいかを判断し、大きいときは当該最長路長によって置き換えを行う。
【0028】
ここで、ソースからバックエッジを経由して各点vλに至る最長路長は、ソースからバックエッジfi の始点vμまでの最長路長Li−1 (vμ)に、バックエッジの重みW(fi )と、バックエッジfi の終点vνから点vλまでの最長路長Li−1 (vν,vλ)を加算したもの、すなわち、
【数17】
Li−1 (vμ)+W(fi )+Li−1 (vν,vλ)
として求めることができる。これをLi−1 Xとし、max()を最大値を取る関数とすると、
【数18】
Li (vλ)=max(Li−1 (vλ),Li−1 X)
と表すことができる。
【0029】
そして、次の(i=i+1)バックエッジを選択する(ステップ152)。上記で、最長路長Li (v)及びLi (vν,vμ)を求める際にDijkstra algorithmを利用すると高速に求めることができる。
【0030】
なお、図16の手順ではPC検出を効率化するために、ソースからバックエッジfi の終点vνまでの最長路長Li−1 (vν)と、ソースからバックエッジfi の始点vμまでの最長路長Li−1 (vμ)との差に基づいて処理を行ったが、バックエッジfi の始点vμと終点vν間の最長路長Li−1 (vν,vμ)のみに基づいてPCを検出してももちろん差し支えない。
【0031】
【発明が解決しようとする課題】
ところで、上記のような従来の手法では、処理時間のほとんどは最長路の算出に費やされるが、最長路の算出所要時間はO(n logn)であるから、PC検出の所要時間はO(bn logn)となる。そして、バックエッジの数は一般にグラフの点の数に比例するので、実行時間は事実上O(n2 logn)である(前記参考文献1)。これは、対象とするシステムの規模が大規模化するに伴って所要時間が著しく増大することを意味しており、大規模なシステムの制約グラフ内のPCを高速に検出する制約条件評価方法及び制約条件評価装置が望まれていた。
【0032】
本発明は、上記のような従来技術の問題点を解決するために提案されたもので、その目的は、大規模なシステムの制約グラフ内のPCを高速に検出する制約条件評価方法及び制約条件評価装置を提供することである。
【0033】
【課題を解決するための手段】
上記の目的を達成するため、請求項1の発明は、制約条件を入力する入力手段と、入力された制約条件に基づいて制約グラフを生成する生成手段と、入力された制約グラフ中の閉路を分割することなく複数のサブグラフに分解する分解手段と、前記各サブグラフごとにバックエッジを検出するバックエッジ検出手段と、前記各サブグラフごとに前記バックエッジに係るPCを検出するPC検出手段と、前記PCの検出結果を出力する出力手段とを有するコンピュータを使用して、複数の制約に存在する過度の制約を前記制約グラフ中のPCとして検出する制約条件評価方法において、前記入力手段により制約条件を入力する処理と、前記制約グラフ生成手段により、前記入力手段によって入力された制約条件に基づいて、重みを表す値と方向を有する複数のエッジでそれぞれ位置情報を有する始点と終点を含む複数の点の間を接続し、前記始点から終点に至るまでの経路の長さを前記制約グラフにおける経路長とすると共に、複数の点を結ぶエッジの向きに逆らうことなく循環できる経路を閉路として表現し、前記複数の点をその位置を基準として一定の方向にソートし、このソート順に従って得られた各点の位置を結ぶエッジの中で、その始点が終点よりも前記ソート順で後にあるエッジをバックエッジとした制約グラフを生成する処理と、前記分解手段により、前記制約グラフ生成手段により生成された制約グラフを、当該制約グラフ中の閉路を保持したまま複数のサブグラフに分解する分解処理と、前記バックエッジ検出手段により、各サブグラフ中のバックエッジを検出するバックエッジ検出処理と、前記PC検出手段により、各サブグラフ中の前記バックエッジに係るPCを検出するPC検出処理とを有し、前記PC検出処理は、検出されたバックエッジを前記サブグラフから除去する処理と、前記サブグラフ中のソースを基準点として、除去されたバックエッジの第1の点及び第2の点により最長路及びこの最長路の最長路長を含む所定の経路情報の算出が可能であるか否かを試みる経路情報算出処理と、前記経路情報算出処理により最長路長が算出できた場合に、前記サブグラフにおけるPCの存在を判定する判定処理と、を含み、前記経路情報算出処理は、ソース以外の点の位置を示す値を少なくとも前記基準点の位置を示す値以下の値にセットする処理と、所定のソート順に従って各点の位置を基準点として順次選択する処理と、各非基準点の位置を示す値に当該非基準点から当該基準点へのエッジの重みを加算した加算値を求める処理と、加算値が当該基準点の位置を示す値を超えた場合に当該基準点の位置を示す値を当該加算値によって置き換えて当該基準点の位置を移動させる処理と、を含む、ことを特徴とする。
【0034】
請求項12の制約条件評価装置は、請求項1の発明を物の観点から把握したもので、請求項1の発明における分解処理、バックエッジ検出処理、及びPC検出処理、に対応する各機能を有する手段として、分解手段、バックエッジ検出手段、及びPC検出手段、を有することを特徴とする。
【0035】
請求項11の発明は、制約条件を入力する入力手段と、入力された制約条件に基づいて制約グラフを生成する生成手段と、入力された制約グラフ中の閉路を分割することなく複数のサブグラフに分解する分解手段と、前記各サブグラフごとにバックエッジを検出するバックエッジ検出手段と、前記各サブグラフごとに前記バックエッジに係るPCを検出するPC検出手段と、前記PCの検出結果を出力する出力手段とを有するコンピュータを使用して、複数の制約に存在する過度の制約を前記制約グラフ中のPCとして検出する制約条件評価方法において、前記入力手段により制約条件を入力する処理と、前記制約グラフ生成手段により、前記入力手段によって入力された制約条件に基づいて、重みを表す値と方向を有する複数のエッジでそれぞれ位置情報を有する始点と終点を含む複数の点の間を接続し、前記始点から終点に至るまでの経路の長さを前記制約グラフにおける経路長とすると共に、複数の点を結ぶエッジの向きに逆らうことなく循環できる経路を閉路として表現し、前記複数の点をその位置を基準として一定の方向にソートし、このソート順に従って得られた各点の位置を結ぶエッジの中で、その始点が終点よりも前記ソート順で後にあるエッジをバックエッジとした制約グラフを生成する処理と、前記分解手段により、前記制約グラフ生成手段により生成された制約グラフを、当該制約グラフ中の閉路を保持したまま複数のサブグラフに分解する分解処理と、前記バックエッジ検出手段により、各サブグラフ中のバックエッジを検出するバックエッジ検出処理と、前記PC検出手段により、各サブグラフ中の前記バックエッジに係るPCを検出するPC検出処理とを有し、前記PC検出処理は、検出されたバックエッジを前記サブグラフから除去する処理と、除去されたバックエッジの第1の点及び第2の点により最長路及びこの最長路の最長路長を含む所定の経路情報の算出が可能であるか否かを試みる経路情報算出処理と、前記経路情報算出処理により最長路長が算出できた場合に、前記サブグラフにおけるPCの存在を判定する判定処理と、制約グラフからバックエッジを除去したフォワードグラフを得る抽出処理と、得られたフォワードグラフの各点をソートするソート処理と、フォワードグラフ中のソースを基準点として、当該ソース以外の点の位置を示す値を少なくとも前記基準点の値以下の値にセットする初期化処理と、ソートされたフォワードグラフについて、エッジによって接続された各2点の位置を、当該2点間に少なくとも当該エッジの重み分の位置間隔を確保するように調整する第1の調整処理と、除去された各バックエッジについて、当該バックエッジの始点の位置を示す値に当該バックエッジの重みを加算した加算値を求め、バックエッジの終点位置を示す値がこの加算値より小さい場合には当該終点位置を示す値を当該加算値によって置き換える第2の調整処理と、を含み、前記第1の調整処理は、前記ソート処理によって各点の位置を基準点として順次選択する処理と、各非基準点の位置を示す値に当該非基準点から当該基準点へのエッジの重みを加算した加算値を求める処理と、加算値が当該基準点の位置を示す値を超えた場合に当該基準点の位置を示す値を当該加算値によって置き換えて当該基準点の位置を移動させる処理と、を含み、前記第1及び第2の調整処理をバックエッジの数と等しい回数だけ繰り返し、第1及び第2の調整処理が収束しない場合には最長路算出失敗を返すことによって処理を終了し、第1及び第2の調整処理が収束した場合には最長路長及び最長路を返す、ことを特徴とする。
【0036】
請求項22の制約条件評価装置は、請求項11の発明を物の観点から把握したもので、請求項11の発明における分解処理、バックエッジ検出処理、及びPC検出処理、に対応する各機能を有する手段として、分解手段、バックエッジ検出手段、及びPC検出手段、を有することを特徴とする。
【0037】
請求項1、11、12、22の発明では、与えられた制約グラフが複数のサブグラフに分解され、PCの検出はサブグラフごとに行われる。すなわち、PCの検出所要時間は、一般に検出対象の制約グラフに含まれる要素の数nに対してO(n)を越える割合で増大するが、請求項1,14の発明では、検出対象の規模が縮小されるので処理時間の増大率を抑止でき、PCの検出所要時間を短縮できる。また、分割の際に単一の閉路は複数のサブグラフに分割されないので、閉路の一種であるPCの検出が妨げられることもない。
【0038】
また、最長路長の算出という単純な演算に基づいてPCの存在が判定されるので、PCの検出所要時間が短縮される。
さらに、エッジで接続された2点間に、そのエッジの重みが収まるだけの間隔が確保されるので、容易に最長路長の算出を試みることができる。このため、構成が簡素化され、かつ、処理が迅速化される。
【0039】
特に、請求項11、22の発明では、バックエッジを一つ除いた結果、バックエッジがなくなったグラフは、サイクルを含まないアサイクリックグラフとなる。このため、第1の調整をトポロジカルソートの順に各点に対して一度適用するだけで、全ての点の位置が、バックエッジ以外の各エッジによって表される各制約を満足する状態となる。このように、請求項11、22の発明によれば、PC検出が高速化される。また、バックエッジを含むグラフでは、前記第1の調整と前記第2の調整とを繰り返し、バックエッジの数より1回多い繰り返し回数が終了しても各点の位置が収束しない場合は、PCが存在すると判定できるが、この繰り返し回数はバックエッジの数よりも一般に少ない。
【0040】
請求項2の発明は、請求項1記載の制約条件評価方法において、前記経路情報算出処理により前記最長路が算出できなかった場合に、前記バックエッジ検出処理および当該PC検出処理を繰り返すことを特徴とする。
【0041】
請求項13の発明は、請求項2の発明を物の観点から把握したもので、請求項12記載の制約条件評価装置において、前記経路情報算出手段により前記最長路が算出できなかった場合に、前記バックエッジ検出手段および当該PC検出手段を繰り返し適用するように構成されたことを特徴とする。
【0042】
請求項2、13の発明では、PCがサブグラフ中に存在するときは、一連の処理を繰り返し適用してさらにPCの検出を行う。この繰り返しによって、大規模なグラフにおいても、PC検出が高速化される。
【0043】
請求項3の発明は、請求項1または2記載の制約条件評価方法において、前記経路情報算出処理により前記最長路が算出できなかった場合に、前記サブグラフに対して前記分解処理を行なうことを特徴とする。
【0044】
請求項14の発明は、請求項3の発明を物の観点から把握したもので、請求項12または13記載の制約条件評価装置において、前記経路情報算出手段により前記最長路が算出できなかった場合に、前記サブグラフに対して前記分解手段を適用するように構成されたことを特徴とする。
【0045】
請求項3、14の発明では、前記最長路が算出できなかった場合に、さらに分解を行ってPCの検出を行う。このため、PCの検出対象がさらに小規模となり、検出の所要時間全体が一層短縮される。
【0046】
請求項4の発明は、請求項1記載の制約条件評価方法において、前記PC検出処理は、一の経路を最長路として、該最長路の最長路長の算出が可能であるか否かを試みる経路情報算出処理を含み、前記判定処理は、前記最長路長が前記除去されたバックエッジに与えられた重み以下である場合に、前記サブグラフ内にPCが存在しないと判定し、前記最長路長が前記除去されたバックエッジの重みを超える場合に、該最長路長と前記除去されたバックエッジとに基づくPCが存在すると判定する処理を含むことを特徴とする。
【0047】
請求項15の発明は、請求項4の発明を物の観点から把握したもので、請求項12記載の制約条件評価装置において、前記PC検出手段が、請求項4の発明におけるPC検出処理に対応する機能を有することを特徴とする。
【0048】
請求項4、15の発明では、最長路長の算出を試み、算出された最長路長とバックエッジの重みとの演算という単純な処理でPCが検出されるので、PCの検出所要時間が一層短縮される。
【0049】
請求項5の発明は、請求項1記載の制約条件評価方法において、前記PC検出処理は、前記PC検出処理によって検出されたバックエッジが所定の数の場合に、前記サブグラフから当該バックエッジを除去し、前記除去されたバックエッジの始点および終点に基づいて、一の経路および該経路の経路長を含む所定の経路情報を所定の方法で算出し、前記経路長と前記バックエッジに与えられた重みとに基いて、前記経路と前記除去されたバックエッジとに基くPCを検出することを特徴とする。
【0050】
請求項16の発明は、請求項5の発明を物の観点から把握したもので、請求項15記載の制約条件評価装置において、前記PC検出手段が、請求項5の発明におけるPC検出処理に対応する機能を有することを特徴とする。
【0051】
請求項5、16の発明では、検出されたバックエッジの数に応じて異なった処理手順が適用される。例えば、検出されたバックエッジが1つのときは、当該バックエッジの始点と終点間の最長路長の算出を1度行う。そして、バックエッジが除去されたグラフは閉路を含まないアサイクリックグラフであり、シンクからソースまでの最長路の長さはO(点の数)の時間で求まる。このため、バックエッジの数が1である割合に応じてPCの検出所要時間が一層短縮される。
【0052】
請求項6の発明は、請求項1、2、4または5記載の制約条件評価方法において、前記所定の分解方法は、前記制約グラフを強連結成分ごとに分解することを特徴とする。
【0053】
請求項17の発明は、請求項6の発明を物の観点から把握したもので、請求項12、13、15または16記載の制約条件評価装置において、前記所定の分解方法は、前記制約グラフを強連結成分ごとに分解することを特徴とする。
【0054】
請求項6、17の発明では、制約グラフは強連結成分ごとにサブグラフに分解されるが、複数の強連結成分にまたがる閉路は存在せず、また、強連結成分への分解は効率的に行うことができる。このため、閉路の分割を回避しながら効率的に制約グラフの分解を行うことができる。
【0055】
請求項7の発明は、請求項1、2、4または5記載の制約条件評価方法において、前記バックエッジ検出処理は、複数の点を有する前記サブグラフ中の一のサブグラフを検出対象とすることを特徴とする。
【0056】
請求項18の発明は、請求項7の発明を物の観点から把握したもので、請求項12、13、15または16記載の制約条件評価装置において、前記バックエッジ検出手段は、複数の点を有する前記サブグラフ中の一のサブグラフを検出対象とするように構成されたことを特徴とする。
【0057】
請求項7、18記載の発明では、点の数が1つのサブグラフは、PCを検出する対象から除外される。これは、制約グラフ中の枝の始点と終点が一致することはないため、1つの点のみではそもそも閉路とはならないからである。この結果、バックエッジ及びPCの検出の対象は複数の点を含むサブグラフに限定され、処理が高速化される。
【0058】
請求項8の発明は、請求項1記載の制約条件評価方法において、前記バックエッジ検出処理は、位置が最大となる点を始点とするサブグラフのエッジのうち、終点の位置が最小のエッジをバックエッジとして選択することを特徴とする。
【0059】
請求項19の発明は、請求項8の発明を物の観点から把握したもので、請求項12記載の制約条件評価装置において、前記バックエッジ検出手段は、位置が最大となる点を始点とするサブグラフのエッジのうち、終点の位置が最小のエッジをバックエッジとして選択するように構成されたことを特徴とする。
【0060】
請求項8、19の発明では、前記バックエッジの検出では、始点の位置が最大かつ終点の位置が最小のエッジから順次選択し、選択されたエッジがバックエッジか否かが判定される。バックエッジは、始点位置の値が大きく、終点位置の値は小さい傾向を有するので、この手順によれば、最も長大なバックエッジが迅速に検出される可能性が高く、処理が迅速化される。
【0061】
請求項9の発明は、請求項1記載の制約条件評価方法において、前記PC検出処理に含まれる各処理を繰り返し、前記繰り返しにおいてサブグラフ中の点の数と同回数を超えた繰り返しにおいて点が移動しないとき、シンクの位置とソースの位置の差を最長路長とし、かつ、ソースからシンクまでの経路のうち、エッジの重みが当該エッジの始点と終点間の位置の距離と一致しているエッジだけで構成される経路を最長路とし、前記繰り返しにおいてサブグラフ中の点の数と同回数を超えた繰り返しにおいて点が移動するときは、最長路長が求まらないと判定することを特徴とする。
【0062】
請求項20の発明は、請求項9の発明を物の観点から把握したもので、請求項12記載の制約条件評価装置において、前記PC検出手段に含まれる各手段を繰り返し適用し、請求項5の発明におけるPC検出処理に含まれる各処理の繰り返しに対応する機能を実現することを特徴とする。
【0063】
請求項9、20の発明では、条件に応じた点の位置の移動という単純な処理の繰り返し、フラグなどによる点の移動の有無の監視、カウンタなどによる繰り返し回数の監視、という単純な要素の組み合わせによって最長路長の算出を試みることができる。このため、構成が簡素化され、かつ、処理が迅速化される。すなわち、条件に応じた点の位置の移動の繰り返しは、各点の間に、その点の間に存在するエッジの最大の重みが収まる間隔を順次確保していくことを意味する。このとき、点の移動の各点間での繰り返しはPCが存在しない場合に点の数と同回数で解消され、その後点は移動しないので、この場合は最長路長の算出に成功したことになる。一方、PCが存在する場合は、PCの影響で始点と終点の移動の繰り返しが解消されない。このため、点の数と同回数を超える繰り返しで点が移動することが確認できれば、最長路長の算出の失敗とサブグラフ中のPCの存在が確認できる。
【0064】
請求項10の発明は、請求項1記載の制約条件評価方法において、前記基準点の位置以下の値として、前記ソースの位置からバックエッジの重みの最小のものの値だけ小さい値を用いることを特徴とする。
【0065】
請求項20の発明は、請求項10の発明を物の観点から把握したもので、請求項12記載の制約条件評価装置において、前記基準点の位置以下の値として、前記ソースの位置からバックエッジの重みの最小のものの値だけ小さい値を用いるように構成されたことを特徴とする。
【0066】
請求項10、20の発明では、前記基準点の位置以下の値として、前記ソースの位置からバックエッジの重みの最小のものの値だけ小さい値を用いる。このため、まず、この最小値をセットする際に前記基準点の位置に基づいて各点の値を決定する処理を省略でき、処理が効率化される。しかも、最小値をセットした状態では、ソース以外の各点の位置はソースの位置よりも十分小さな値にセットされていることが明白であり、この結果、各点の位置についてすべて制約条件を満たしていない状態が確保される。したがって、点の位置の処理の繰り返しによって、制約条件を満たすための各点の限界の位置、すなわち境界点を確実に抽出することが可能となる。
【0067】
【発明の実施の形態】
次に、本発明の実施の形態(以下「実施形態」という)について図面にしたがって具体的に説明する。なお、実施形態は、典型的には、周辺装置を含むコンピュータをソフトウエェアが制御することによって実現されるが、コンピュータやソフトウェアの構成は種々考えられるので、実施形態の各機能に対応する仮想的回路ブロックを用いて説明する。
【0068】
[1.第1実施形態の構成]
第1実施形態は、請求項1,6〜8に対応する制約条件評価方法及びこの制約条件評価方法を実行する制約条件評価装置(請求項12,19〜21に対応する)を示すもので、その目的は、大規模な制約グラフ内のPCを高速に検出する制約条件評価方法及び制約条件評価装置を提供することである。
【0069】
まず、図1は、第1実施形態の制約条件評価装置の構成を示す機能ブロック図である。この図に示すように、第1実施形態の制約条件評価装置(以下「本装置」という)は、要素の配置における制約条件を入力する入力手段1と、入力された制約条件に基づいて制約グラフを生成する生成手段2と、を有する。ここで、入力手段1で入力される制約条件とは、要素の配置情報、要素の構成情報、要素間の制約条件、要素の構成を指定する材質や層等で決定されるパラメータ間に与えられるデザインルール等、制約グラフを生成するために必要なすべての情報を指す。
【0070】
また、本装置は、制約グラフ中の閉路を分割することなく複数のサブグラフに分解する分解手段3と、前記各サブグラフごとにバックエッジを検出するバックエッジ検出手段4と、前記各サブグラフごとに前記バックエッジに係るPCを検出するPC検出手段5と、を有する。また、本装置は、点の数が1つの前記サブグラフを、前記バックエッジ検出処理の対象から除外する除外手段6と、前記PCの検出結果を出力する出力手段7と、を有する。
【0071】
[2.第1実施形態の作用及び効果]
上記のような構成を有する第1実施形態において、制約条件の評価は、次のように行われる。ここで、図2は、第1実施形態における処理手順を示すフローチャートである。
【0072】
[制約グラフの獲得]
すなわち、まず、入力手段1から、評価対象とする制約条件を入力する(ステップ21)。この入力は、例えば、要素の諸元や制約内容を記号言語で表現して入力したり、対話的入力によって要素の種類や制約条件の内容を選択するなどして行うことができる。そして、生成手段2が、入力された制約条件に基づいて制約グラフを生成する(ステップ22)。この生成は、例えば、要素間の隣接関係に基づいて点とエッジを生成するなどの規則に基づいて行う。なお、制約グラフはあらかじめメモリ領域上のデータやディスクファイルの形で与えておいてもよい。
【0073】
[分解処理]
与えられた制約グラフは、まず、分解手段3によって、閉路を分割することなく複数の各サブグラフに分解される(ステップ23)。このとき、分解手段3は、前記制約グラフを強連結成分ごとに前記サブグラフに分解するが、複数の強連結成分にまたがる閉路は存在せず、また、強連結成分への分解は効率的に行うことができる。このため、閉路の分割を回避しながら効率的に制約グラフの分解を行うことができる(請求項7,20)。また、サブグラフへの分割は、閉路が分割されなければ必ずしも強連結成分ごとに行う必要はなく、他のアルゴリズムを用いてもよい。なお、分割された各サブグラフから全てのPCを検出すれば、元の制約グラフ中のPCが全て検出できることになる。
【0074】
ここで、強連結成分は、ある有向グラフに対して、なるべく大きな頂点(点)の集合であって、その中の任意の頂点から他の任意の頂点への経路が存在するものを意味する(参考文献4:「データ構造とアルゴリズム」A.V.エイホ、J.E.ホップクロフト、J.D.ウルマン著/大野義夫訳 倍風館)。
【0075】
強連結成分は、深さ優先探索を用いることによって効率よく特定することができる。すなわち、有向グラフに対して深さ優先探索を行い、再帰呼び出しが終わった順で頂点に番号を付与する。次に、有向グラフのすべてのエッジを逆向きにした第2の有向グラフを作成する。さらに、前記深さ優先探索で最大の番号を付与した頂点を出発点として、前記第2の有向グラフに対して深さ優先探索を行う。この探索で到達できない頂点があった場合、その中で最大の番号を付与された頂点を出発点として、再度深さ優先探索を行う。第2の有向グラフに対する探索で、一つの頂点から出発して到達できる範囲が強連結成分であり、出発点として選択された頂点の数だけ強連結成分が存在する。
【0076】
以下、サブグラフをGa =(点群Va,エッジ群Ea ),(a=1,…,k)のように表す。この場合、点群Va ={v1 ,v2 ,…,vma }は、サブグラフGa 内のma 個の点の集合で、エッジ群Ea はサブグラフGa 内のエッジ(枝)の集合である。制約グラフG内の任意の点は、必ず唯一つのサブグラフGa に属するので、制約グラフG内の点の総数n=各サブグラフ内の点の数m1 +m2 +…+mk である。なお、図3は、制約グラフの分解の様子を示す概念図であり、制約グラフが4つのサブグラフG1 〜G4 に分解されている様子を示している。
【0077】
[除外処理]
分割された各サブグラフは順次選択され(ステップ24,25)、選択された各サブグラフからは、バックエッジが検出される。この検出に先立って、点の数が1つの前記サブグラフは、バックエッジ検出処理の対象から、除外手段6によって除外される(ステップ26)。これは、制約グラフ中の枝の始点と終点が一致することはないため、1つの点のみではそもそも閉路とはならないからである。この結果、バックエッジ及びPCの検出の対象は複数の点を含むサブグラフに限定され、処理が高速化される(請求項7,18)。
【0078】
[バックエッジ検出処理]
複数の点を含むサブグラフについては、バックエッジ検出手段4によって、各サブグラフごとに全てのバックエッジが検出される(ステップ27)。バックエッジを含まない閉路は存在しないので、バックエッジの検出が処理を高速化する。
【0079】
初めに、バックエッジの定義を示す。サブグラフに含まれる点のデータを位置の昇順にソートし、位置が等しいものは、点のデータを格納しているメモリ領域のアドレスの小さいほうを前に並べる。この場合、枝は原則として終点が始点の後に存在し、終点が始点よりもソートした順序で前に存在するときにその枝がバックエッジとなる。
【0080】
ここで、図4は、バックエッジ検出処理の手順の例を示すフローチャートである。各枝は順次選択され(ステップ42,43)、バックエッジか否かは次の基準で判定される。即ち、ある枝の始点位置が終点位置より大きければ(ステップ44)、すなわち終点が始点より前(ソース側)ならばその枝はバックエッジであり(ステップ45)、逆の場合はバックエッジではない(ステップ46)。
【0081】
また、始点と終点の位置が等しい枝については、始点の情報を格納しているメモリ領域のアドレス(以下「始点アドレス」という)と、終点の情報を格納しているメモリ領域のアドレス(以下「終点アドレス」という)との大小を比較する。そして、始点アドレスが終点アドレスより大きければその枝はバックエッジであり(ステップ47)、逆の場合はバックエッジではない。
【0082】
[PC検出処理]
続いて、PC検出手段5が、各サブグラフごとに、全てのPCを検出する(ステップ28)。PCは従来の手法によって検出すればよい。このように、第1実施形態では、与えられた制約グラフが複数のサブグラフに分解され、PCの検出はサブグラフごとに行われる。すなわち、PCの検出所要時間は、一般に検出対象の制約グラフに含まれる要素の数nに対してO(n)を越える割合で増大するが、第1実施形態では、検出対象の規模が縮小されるので処理時間の増大率を抑止でき、PCの検出所要時間を短縮できる。また、分割の際に単一の閉路は複数のサブグラフに分割されないので、閉路の一種であるPCの検出が妨げられることもない(請求項1,12)。
【0083】
すなわち、制約グラフG内の点の数をnとしたとき、Gに含まれるPCの検出所要時間は、従来の手法によればO(n2logn)である(前記参考文献1)。そして、一般に、処理時間がO(n)を越える割合で増大する場合には、処理を分割して実行すると処理時間を短縮できる。第1実施形態では、従来技術に比べ、制約グラフを分解するための処理が余分に必要であるが、この処理はO(n)の時間で実行可能で、他の処理に要する時間のオーダーよりも小さい。このため、分解の所要時間の全体の処理の所要時間に対する比率は対象の規模が増大するほど極小化し、無視しても差し支えない。
【0084】
すなわち、この場合、サブグラフ内のPCの検出所要時間はO(ma2log ma )であるから、制約グラフG内のPCの検出所要時間のオーダーは、
【数19】
である。ここで、mj (j=1,…,b)のなかで、最大となるものを点の数を表すパラメ−タmk に選べば、右辺第2項はゼロ以下なので、従来手法によるPC検出所要時間はO(nmk log mk )を超えない。
【0085】
特に、サブグラフGa バックエッジが1つのときは、次のような処理を行なえば、より高速にPCを検出することができる(図5)。すなわち、始めに、サブグラフGa から唯一のバックエッジf1 を解放除去する(ステップ51)。なお、解放除去は、点の集合V及びエッジの集合Eを含むグラフG=(V,E)から、枝を、両端点を残したまま取り去ることをいう(参考文献5:「演習グラフ理論」伊理 正夫、白川 功、梶谷 洋司 他著、コロナ社、p.4)。そして、バックエッジの始点をソース、終点をシンクとするグラフG’a を作成するとグラフG’a は閉路を含まない。このような、閉路を含まないグラフはアサイクリックグラフ(asyclic graph) と呼ばれる。
【0086】
そして、グラフG’a におけるシンクからソースまでの最長路の長さLa の算出を行うが(ステップ52)、ma 個の点からなるアサイクリックグラフにおける任意の2点間の最長路はO(ma )の時間で求まることが知られている。したがって、このグラフG’a におけるシンクからソースまでの最長路の長さLa もO(ma )の時間で求めることができる。そして、最長路の長さLa が除去されたバックエッジf1 の重みW(f1 )の範囲内に収まっていなければ(ステップ53)、すなわち、
【数20】
La +W(f1 )>0
であればサブグラフGa内にPCが存在する。この場合、結果として、PCとなる要素である前記最長路と除去されたエッジf1 が特定され、所定のメモリ領域に格納される(ステップ54)。
【0087】
一方、最長路の長さLa がバックエッジの重みW(f1 )の範囲内に収まっていれば、すなわち、
【数21】
La +W(f1 )≦0
であればサブグラフGa 内にPCは存在しないので、この旨を示す返り値等のデータが結果として返される(ステップ55)。
【0088】
上記手順の所要時間は主に最長路の算出に費やされるが、最長路の算出所要時間はO(ma )となる。このため、バックエッジが一つの場合のPC検出所要時間も点の数ma に対してO(ma )となる。一方、バックエッジが複数の場合のサブグラフ内のPCの検出所要時間はO(ma2log ma )である。したがって、すべてのサブグラフにバックエッジが複数含まれているとき、処理時間のオーダーが最大となる。しかし、この場合でも処理時間のO(nmk log mk )以下であるから、従来技術の処理時間O(n2log n)よりも短縮される(請求項6,19)。
【0089】
また、バックエッジを一つしか含まないサブグラフの割合が多いほど処理時間は短く、すべてのサブグラフにバックエッジが一つしか含まれないとき、各サブグラフの処理時間はO(ma )であるから、制約グラフG内のPCの検出所要時間のオーダーはO(n)となる。また、点の数を表すパラメ−タmmk がnに依らない場合は、サブグラフ内のバックエッジの数によらず、処理時間はO(n)である。
【0090】
このように、第1実施形態では、制約グラフをサブグラフに分解するのみならず、サブグラフ内のバックエッジの数が1であるか2以上であるかによって異なるPCの検出手順を用いるので、検出所要時間が特に短縮される。
【0091】
このように得られたPCに関する情報は、所定のメモリ領域に格納したうえ、表示画面やプリンタから出力したり(ステップ29)、ファイルに記録するなどしておき、適宜利用すればよい。
【0092】
[3.第2実施形態]
制約グラフGを制約グラフGa に分解した後、複数の点を含む各サブグラフGa (a=1,…,k)に対して、次のような処理を繰り返すことでPCを算出してもよい(請求項2〜4,6,9〜12,15〜17,19,22〜25に対応)。なお、サブグラフGa に属する点と枝にはそれぞれ固有のラベルaを対応付けて記録しておく。この結果、ラベルaに対応する点と枝を集めるとサブグラフGa を得ることができる。このとき、サブグラフGa に含まれる点と枝は制約グラフGに含まれる点と枝でもあるので、サブグラフGa 内のバックエッジを除去すると、制約グラフGのバックエッジも除去される。
【0093】
図6は、第2実施形態における処理手順を示すフローチャートである。すなわち、この手順では、制約グラフを分解後(ステップ61)、各サブグラフGa から、複数の点を含む未調査のものを順次選択し(ステップ62,63)、選択したサブグラフからバックエッジfa を一つだけ検出する(ステップ64)。ここで、バックエッジの定義は第1実施形態と同様であるが、ここではバックエッジを1つだけ検出すればよい。図7は、バックエッジを一つだけ検出する場合の処理手順を示すフローチャートである。この手順では、サブグラフの点のうちで位置が最大となる点を求め、求めた点を始点とするエッジの集合のうちで、終点の位置が最小となるエッジを選択する。
【0094】
すなわち、サブグラフGa の内の点vi の中で、位置X(vi )が最大の点を選択する(ステップ71)。特に、位置が最大となる点が複数存在するときは、点の情報を格納するメモリ領域のアドレスP(vi )が最大となる点を選択する。そして、選択された点を始点とする枝のうち、終点の位置が最も小さい枝を選択する(ステップ73)。特に、終点vj の位置が最小になる枝が複数存在するときは、終点の情報を格納するメモリ領域のアドレスP(vj )が最小となるものを選択する。
【0095】
この手順で選択したバックエッジは、始点位置の値が大きく、終点位置の値は小さい傾向を有するので、最も長大なバックエッジが迅速に検出される可能性が高く、処理が迅速化される(請求項9,22)。
【0096】
次に、検出されたバックエッジfa をサブグラフGa から除去し(ステップ65)除去済グラフ
【数22】
G’a =Ga −fa
とする。また、除去したバックエッジfa は再帰処理用のスタックのトップにプッシュしておくが(ステップ65)、第2実施形態ではスタックのトップがPC検出に係るカレントのバックエッジである。
【0097】
そして、バックエッジfa の終点をサブグラフG’a のソース、バックエッジfa の始点をサブグラフG’a のシンクとする。この除去済グラフに対して最長路の算出によってPCの有無を判定する(ステップ66)。
【0098】
ここで、図8は最長路の算出の手順を示すフローチャートである。この手順では、まず、初期化作業として(ステップ81)、サブグラフG’a に含まれる点の数を数えてこれをma とし、X(ソース)=0、ソース以外のすべての点vi(i=1,2,…,ma )に対して位置X(vi )=変数X(vi )がとり得る最小値又は十分に小さな値とし、ループカウンタをゼロにリセットする。
【0099】
ステップ84に示す点の位置の処理では、2点間の距離が制約条件を満たさないときに、点の位置を制約条件を満たすための限界の位置、すなわち境界点に修正する。一方、前記のように、ソース以外の各点の位置をソースより十分小さな値にセットしておけば、ソース以外のすべての点は制約条件を満たさないので、点の位置の処理により点の位置が、制約条件を満たすための限界の位置すなわち境界点に移動される。このとき、クリティカルパスを調べることで最長路を検出できる。
【0100】
そして、すべての点vi に対して、バックエッジ定義と同じソート順にしたがって次の手順を繰り返す。すなわち、他のすべての点vk (k≠i)の位置に、当該他の点vk から点vi へのエッジ重みW(eki)を加算した値が点の位置X(vi )を超えるときは、点の位置X(vi )を前記加算した値によって置き換える(ステップ84)。これは、
【数23】
と表すことができ、すべての点の位置を、他の点との位置の差に、他の点との間の各エッジの最大の重みがちょうど収まるように再配置することを意味する。そして、一つでも位置X(vi )が変更したときにはその時点でフラグをONにする。この結果、すべての点vi に対して処理が終了したときには、一つでも点の位置X(vi )が変更されている場合にフラグがONになっている結果となる。そこで、フラグがONの場合は(ステップ85)カウンタをインクリメント(1加算)し(ステップ86)、フラグをOFFにリセットしたうえ(ステップ82)、同様の手順を繰り返す。
【0101】
なお、ステップ83において、カウンタが点の数ma +2になっているときは、最長路長が正しく求まらないとして処理を終了する。すなわち、まず、サブグラフG’a に閉路が含まれていて、点の位置調整の影響がすでにされた点の位置に影響を与えるとしても、点の移動の繰り返しは一般に点の数と同じma 回で解消される。
【0102】
また、サブグラフG’a 中にPCが存在しない場合は、あるバックエッジの重みは、当該バックエッジ間の最長路に含まれている各エッジの重みの合計より絶対値が大きい。このため、最長路上の点の位置が確定するにしたがってバックエッジの始点の位置は大きくなり、バックエッジの始点が最長路の端に移動した場合でも、バックエッジの終点との間の位置の差よりもバックエッジ重みの絶対値が大きいままである。この状態でバックエッジの終点の位置調整が行われても、始点との関係では、終点の位置は変更されない。なぜなら、始点位置にバックエッジ重みを加算してもその結果はその時点における終点位置より小さいので、終点位置の置き換えは行われないからである。
【0103】
このため、点の移動の繰り返しの解消に最大値であるma 回を要した場合でも、ma +1回目には点の位置調整が行われずに済み、フラグはOFFのままとなる。このときは、最長路ソースvsourceからシンクvsinkに至り、最長路長La=X(vsink)となる(ステップ87)。このとき、各点の位置は、各点に入力するエッジの重みとこのエッジの始点の位置の和のうちで、最も大きいものに合わせて配置されている。クリティカルパスは、ソースからシンクまでの経路のうち、重みeμνが始点終点距離X(vμ)−X(vν)と一致している枝のみを含む経路であり、この場合はクリティカルパスが最長路である。
【0104】
逆に、当該バックエッジの閉路がPCの時は、始点位置にバックエッジ重みを加算すると、重みの絶対値が最長路長より小さいためにその結果はその始点における終点位置より大きくなる。すると、終点位置が変動し、終点からのエッジが存在するすべての点の位置が再度変動する。この変動はやがて原因となったバックエッジの始点の位置の増大を帰結する。この結果、バックエッジは始点と終点の増大を繰り返して移動を続けるので、ma +2回目にも点の位置調整が行われてステップ82に戻る。このため、カウンタがma +2になっていることが確認できればサブグラフG’a 中にPCが存在することが確認できる(ステップ83)。
【0105】
最長路の算出の結果、最長路長La が正しく求まり(ステップ67)、かつ、最長路長La がバックエッジの重みW(fa )に収まっている場合(ステップ68)、すなわち、
【数24】
La +W(fa )≦0
が成立する場合はサブグラフGa 内にPCは存在しない。この場合はステップ65で除去したバックエッジを付加した後(ステップ614)、次のサブグラフについてステップ62からの手順を実行する。
【0106】
また、最長路長La が正しく求まったが最長路長La がバックエッジ重みW(fa )を超えるとき(ステップ68)、すなわち、
【数25】
La +W(fa )>0
が成立する場合は、除去済グラフG’a にはPCが存在しないが、最長路と除去したバックエッジfa とによって形成される閉路がPCである場合であり、これを記録する(ステップ69)。なお、除去したバックエッジはサブグラフから除去したままとし(ステップ610)、手順を進める。なお、スタックのトップにプッシュされていたカレントバックエッジ(のデータ)は、再帰時を除き、次のサブグラフの処理の前にPOPされる(ステップ611)。
【0107】
一方、最長路を正しく求めることができなかったときは除去済グラフG’a にPCが存在する場合であり、この除去済みグラフG’a に対して同じ処理を再帰的に繰り返す。なお、ある段階の再帰中において(ステップ612)分解されたすべてのサブグラフの処理が終了した場合は、再帰終了の処理としてサブグラフを再帰前の状態に併合する(ステップ613)。
【0108】
例えば、図9は、第2実施形態において評価の対象とする制約グラフの例を示す図である。この例では、サブグラフGa 内に2つの独立なPC1(実線の太い矢印で示す),PC2(破線の矢印で示す)が存在する場合、図9中のバックエッジfa を検出し、このバックエッジfa を解放除去して図10に示すサブグラフG’a を得る。このとき、除去されたバックエッジfa はスタックにプッシュされ、スタックのトップがカレントのバックエッジになる(状態1)。
【0109】
なお、図11は、図9の実例における各バックエッジfa 及びfa ’の状態を示す概念図である。そして、状態1においては、最長路は正しく求めることができず、サブグラフG’a 内にPCが存在することが判明し、サブグラフG’a に再度ステップ61からの手順が再帰的に適用される。
【0110】
この結果、サブグラフG’a はさらに4つのサブグラフG(2)1〜G(2)4に分解され、複数の点を含むG(2)4について最長路を算出する。このうち、fa ’がスタックのトップに存在しカレントとなっているときに(状態2)fa ’を含むPC2が検出されるので、カレントのバックエッジfa ’はPCの記録領域に移される(状態3)。
【0111】
再帰的実行が終了する時点で、スタックのトップは当初プッシュされたfa に戻り(状態4)、サブグラフは元のサブグラフGa からバックエッジfa ’を除去した状態に戻る。この状態では、バックエッジfa ’が最長路の算出を妨げることがない。このため、カレントバックエッジfa の始点から終点に至る最長路の算出によって、カレントバックエッジfa と当該最長路によって形成される閉路がPCであることを判定でき、バックエッジfa は当該最長路と共にPCをなすものとしてPC記録に移される(状態5)。このように第2実施形態によればサブグラフ中のすべてのPCを検出することができ、検出後にはPCが除去された制約グラフが残る(図12)。
【0112】
以上のように、第2実施形態では、サブグラフからバックエッジを一つだけ検出し、最長路及び最長路長の算出を試みることによってPCの所在を確認し、PCがサブグラフ中に存在するときは、分解を含む再帰的処理の適用によってさらにPCの検出を行う。このため、再帰的処理の単位としてはバックエッジを一つずつ処理する簡明な処理を用いながら、サブグラフの分解を繰り返すことによってPC検出の所要時間全体が一層短縮される(請求項2〜4及び15〜17)。
【0113】
特に、第2実施形態では、PCがサブグラフ中に存在するときは、分解を含む一連の処理を繰り返し適用してさらにPCの検出を行う。この繰り返しによって、大規模なグラフにおいても、PC検出が高速化される(請求項3,16)。
【0114】
また、第2実施形態では、分解を含む一連の処理の繰り返し適用を再帰的に行うので、定型的な処理の単位を用いながら、グラフの具体的構造に適合した柔軟な順序でPCの検出を効率的に行うことができる。
【0115】
また、第2実施形態によれば、PC検出所要時間は一層短縮することができ、検出所要時間は次のように試算することができる。例えば、仮にk回目の再帰処理を実行して得たサブグラフ内の点の数がすべて等しくm(k) とすると、k回目の再帰処理を実行して得られるサブグラフの数はn/m(k)である。さらに、PCの検出に要した再帰処理の回数の最大値をI回、m(k)個の点を含むサブグラフに再帰処理を除いたPC検出手順を適用したときに要する処理時間をT(m(k))とすると、全ての点を処理し終わるために要する処理時間は、
【数26】
である。特に、m(k)がnに依らなければ制約グラフGからPCを検出する所要時間はO(n)である。
【0116】
さらに、m個の点を含むグラフにおける最長路算出の所要時間はO(m2)であり、かつ、最長路算出の所要時間は処理時間の大半を占めるので、PC検出所要時間もO(m2)といえる。そこで、数式26にT(m)=O(m2 )を代入するとPC検出所要時間はO(n(m(1) +m(2) +…+m(I) )である。
【0117】
さらに詳しく述べれば、PC検出の処理を再帰を含めてj回適用して得られ、かつ、複数の点を含むサブグラフをGa(j) (a=1,…,k(j) )と表し、各Ga(j)に含まれる点の数をma(j) (≧2)とする。さらに、jの最大値をIとする。このとき、
【数27】
である。各サブグラフごとのPC検出所要時間はO((ma(j) )2 )なので、すべての処理に要する時間のオーダーは、
【数28】
である。特に、ma(j)(a=1,…,k(j))の中の最大値をm(j) とすると、すべての処理に要する時間のオーダーはn(m(1) +m(2) +…+m(I) )以下となる。この式では、m(1) +m(2) +…+m(I) が小さいほど所要時間が小さいことが保証され、これがnによらなければ、処理時間はO(n)となることがわかる。
【0118】
また、第2実施形態では、条件に応じた点の位置の移動という単純な処理の繰り返し、フラグなどによる点の移動の有無の監視、カウンタなどによる繰り返し回数の監視、という単純な要素の組み合わせによって最長路長の算出を試みることができる。このため、構成が簡素化され、かつ、処理が迅速化される。すなわち、条件に応じた点の位置の移動の繰り返しは、各点の間に、その点の間に存在するエッジの最大の重みが収まる間隔を順次確保していくことを意味する。このとき、点を移動する処理の繰り返しは一般に点の数と同回数で解消され、その後点は移動しないので、この場合は最長路長の算出に成功したことになる。一方、PCが存在する場合は、PCの影響で始点と終点の移動の繰り返しが解消されない。このため、点の数と同回数を超える繰り返しで点が移動することが確認できれば、最長路長の算出の失敗とサブグラフ中のPCの存在が確認できる(請求項10,11,23及び24)。
【0119】
また、第2実施形態では、PC検出処理において最長路の算出に用いる前記基準点の位置以下の値として、PC検出処理に用いられる変数のとり得る範囲の最小値を用いる。このため、まず、この最小値を変数にセットする際に前記基準点の位置に基づいて各点の値を決定する処理を省略でき、処理が効率化される。しかも、最小値をセットした状態では、ソース以外の各点の位置はソースの位置よりも十分小さな値にセットされていることが明白であり、この結果、各点の位置についてすべて制約条件を満たしていない状態が確保される。したがって、点の位置を移動する処理の繰り返しによって、制約条件を満たすための各点の限界の位置、すなわち境界点を確実に抽出することが可能となる。
【0120】
[4.第3実施形態]
最長路の算出を試みることによって、PCを検出するには、次のように行うこともできる。まず、制約グラフからバックエッジを除いたグラフ(本明細書において「フォワードグラフ」という)を抽出する(ステップ131)。第3実施形態は、このようにバックエッジを除いたフォワードグラフが半順序関係を有するという特徴を利用したものである(参考文献6:Y. Liao, C. Wong,”An Algorithm to Compact a VLSI Symbolic Layout with Mixed Constraints”. )。すなわち、点の間のエッジを順序関係とみると、同じ点の子孫同士を比べるとは合流が起きないかぎり順序関係がない。グラフ中に順序関係が存在するが、点の組み合わせによっては必ずしも点の間に順序関係があるとは限らない場合を半順序関係という。
【0121】
このフォワードグラフの各点をトポロジカルソートする(ステップ132)。トポロジカルソートは、半順序関係に係る各点を、順序関係に応じて順序づけすることである(参考文献7:石畑 清「アルゴリズムとデータ構造」p242−244、岩波講座、ソフトウェア科学)。ここで、順序関係を持たない点同士の並べ方には自由であるから、トポロジカルソートの解は一般に複数ありうるが、例えば、グラフの深さ優先探索を用いて解の一つが得られる。すなわち、ある点でシンク側の未訪問の他の点が尽き、ソース側に戻るときに、当該ある点の番号を順次記録してゆけば、記録結果はトポロジカルソートの結果の逆順となる。
【0122】
ソートされたフォワードグラフについて、グラフ中におけるソースを基準点として、ソース以外の点の位置を少なくとも前記基準点の位置以下の値に初期化する(ステップ133)。
【0123】
続いて、エッジが存在する点の間に少なくとも当該エッジの重み分の位置間隔を確保するように各点の位置を調整する(ステップ135)。この第1の調整処理は、フォワードグラフについて、単一のソースを持つアサイクリックグラフにおいて各点までの最長路(クリティカルパス)を求める手順と考えることができる。また第1の調整処理以降の繰り返し処理においては、毎回開始前にカウンタをインクリメントし、繰り返し回数をカウントする(ステップ134)。
【0124】
前記第1の調整手段は、具体的には、前記各点を前記トポロジカルソートの順にしたがって基準点として順次選択する。次に基準点以外の各他点の位置に当該他点から基準点へのエッジを特定し、基準点以外の各他点の位置にエッジの重みを加算した加算値を求める。この加算値のなかに基準点の位置を超えるものがあるときは基準点の位置を当該超えるものによって置き換えて移動させる。この処理は、第2実施例における点の位置の処理(ステップ84、数式23)と同様である。
【0125】
このとき、フォワードグラフはサイクルを含まないアサイクリックグラフなので、ソートされた順に一度この処理を実行するだけで、全ての点の位置が確定される。これによって、各点は、バックエッジ以外の各エッジによって表される各制約を満足する状態となる。
【0126】
次に、各バックエッジについて、バックエッジの始点位置にバックエッジの重みを加算した加算値を求め、バックエッジの終点位置がこの加算値より小さいときは当該終点位置を当該加算値によって置き換える第2の調整処理が行われる(ステップ136)。
【0127】
この処理は、バックエッジが右から左に向かうエッジの場合、バックエッジの重みの範囲内に収まるように、バックエッジの左端の点を右側に移動させることを意味する。これによって、バックエッジが表している制約を満足するように点の位置が調整される。
【0128】
第2の調整処理で点が移動しない場合は点の位置が収束したことになるので手順は終了する(ステップ137)。点の位置が調整された場合は、今度は、バックエッジ以外のエッジによる制約、すなわち重みを含む順序関係が満たされていない可能性があるので、再度ステップ134からの処理が行われる。なお、点の位置が移動したか(収束したか)否かは、第2実施形態と同様に、フラグなどを用いて確認すればよい。
【0129】
このように、第1の調整処理と前記第2の調整処理とを繰り返し、ソースから各点までの最長路を求めることができる。この繰り返しでは、バックエッジの数をbとするとb+1回以内で各点の位置が収束し、点の位置とソースの位置の差が最長路となる(ステップ138)。もし、b+1回目で収束しないときは(ステップ139)、制約グラフ内にはPCが存在すると判定できる。すなわち、ある第2の調整処理で、バックエッジに適合するように終点位置が修正され、次の第1の調整処理で、修正に適合するように各点の位置が修正される。そして、第1と第2の調整の繰り返し1回あたり1つのバックエッジへの適合しか実現されなかったとしても、b+1回目で全てのバックエッジへの適合が完了するはずである。にもかかわらず、b+2回目の処理が必要になるということは、少なくとも一組は、バックエッジに合わせた終点位置の修正と、この修正に合わせた各点の位置の修正との間に、矛盾すなわちPCが存在することを意味するからである。このように、第3実施形態において、PCの判定に要する繰り返し回数は点の数よりも一般に少ないので、PC検出が効率的に行うことができる(請求項11,22)。
【0130】
[5.他の実施形態]
本発明は、上記各実施形態に限定されるものではなく、実施態様の変更は自由であるから、次に例示するような他の実施形態をも包含するものである。例えば、本発明は、ICレイアウトのみならず、スケジューリングなどどの様な対象に係る制約条件をも対象とすることができる。また、制約グラフは必ずしも図表の形式で出力される必要はなく、実質的に制約グラフを表す構造のデータを自由に用いることができる。
【0131】
さらに、データ構造はグラフの頂点や枝と一対一に対応する必要はなく、制約グラフの情報を再現できる形式であれば、どのようなものでもよい。また、グラフや、頂点、枝という用語を使用せず、グラフ、頂点、枝などを再現できるデータを組み合わせて本請求内容を実施することもできる。
【0132】
また、除外処理は必ずしも必須でなく、バックエッジの数が1であるか2以上であるかによって必ずしもPC検出の手順を変更する必要はない。また、重みとして整数のみならず実数など他の形式の属性や属性値を用いることもできる。また、PC検出において、再帰的処理は必ずしも必須ではない。
【0133】
典型的には、本発明はコンピュータプログラムを用いて実施されるが、そのようなプログラムを記録した媒体も本発明の一態様である。
【0134】
【発明の効果】
以上説明したように、本発明によれば、大規模なシステムの制約グラフ内のPCを高速に検出する制約条件評価方法及び制約条件評価装置を提供できるので、各種レイアウト作業が効率化される。
【図面の簡単な説明】
【図1】本発明の第1実施形態の制約条件評価装置の構成を示すブロック図。
【図2】本発明の第1実施形態の制約条件評価装置の動作手順を示すフローチャート。
【図3】本発明の第1実施形態における制約グラフの分解の様子を示す概念図。
【図4】本発明の第1実施形態におけるバックエッジ検出処理の手順の例を示すフローチャート。
【図5】本発明の第1実施形態において、バックエッジが1つの場合のPC検出の手順を示すフローチャート。
【図6】本発明の第2実施形態における処理手順を示すフローチャート。
【図7】本発明の第2実施形態においてバックエッジを1つだけ検出する場合の処理手順を示すフローチャート。
【図8】本発明の第2実施形態における最長路の算出の手順を示すフローチャート。
【図9】本発明の第2実施形態においてPC検出の対象とする制約グラフの例を示す図。
【図10】本発明の第2実施形態においてPC検出の対象とする制約グラフの例を示す図。
【図11】図9の例における各バックエッジfa 及びfa ’の状態を示す概念図。
【図12】本発明の第2実施形態においてPC検出の対象とする制約グラフの例を示す図。
【図13】本発明の第3実施形態における処理手順を示すフローチャート。
【図14】制約グラフの一例を示す図。
【図15】図14の制約グラフに対応する要素の配置の実例を示す図。
【図16】従来の手法によるPCの検出手順の例を具体的に示したフローチャート。
【符号の説明】
1…入力手段
2…生成手段
3…分解手段
4…バックエッジ検出手段
5…PC検出手段
6…除外手段
7…出力手段
Claims (22)
- 制約条件を入力する入力手段と、入力された制約条件に基づいて制約グラフを生成する生成手段と、入力された制約グラフ中の閉路を分割することなく複数のサブグラフに分解する分解手段と、前記各サブグラフごとにバックエッジを検出するバックエッジ検出手段と、前記各サブグラフごとに前記バックエッジに係るPCを検出するPC検出手段と、前記PCの検出結果を出力する出力手段とを有するコンピュータを使用して、複数の制約に存在する過度の制約を前記制約グラフ中のPCとして検出する制約条件評価方法において、
前記入力手段により制約条件を入力する処理と、
前記制約グラフ生成手段により、前記入力手段によって入力された制約条件に基づいて、重みを表す値と方向を有する複数のエッジでそれぞれ位置情報を有する始点と終点を含む複数の点の間を接続し、前記始点から終点に至るまでの経路の長さを前記制約グラフにおける経路長とすると共に、複数の点を結ぶエッジの向きに逆らうことなく循環できる経路を閉路として表現し、前記複数の点をその位置を基準として一定の方向にソートし、このソート順に従って得られた各点の位置を結ぶエッジの中で、その始点が終点よりも前記ソート順で後にあるエッジをバックエッジとした制約グラフを生成する処理と、
前記分解手段により、前記制約グラフ生成手段により生成された制約グラフを、当該制約グラフ中の閉路を保持したまま複数のサブグラフに分解する分解処理と、
前記バックエッジ検出手段により、各サブグラフ中のバックエッジを検出するバックエッジ検出処理と、
前記PC検出手段により、各サブグラフ中の前記バックエッジに係るPCを検出するPC検出処理とを有し、
前記PC検出処理は、
検出されたバックエッジを前記サブグラフから除去する処理と、
前記サブグラフ中のソースを基準点として、除去されたバックエッジの第1の点及び第2の点により最長路及びこの最長路の最長路長を含む所定の経路情報の算出が可能であるか否かを試みる経路情報算出処理と、
前記経路情報算出処理により最長路長が算出できた場合に、前記サブグラフにおけるPCの存在を判定する判定処理と、を含み、
前記経路情報算出処理は、
ソース以外の点の位置を示す値を少なくとも前記基準点の位置を示す値以下の値にセットする処理と、
所定のソート順に従って各点の位置を基準点として順次選択する処理と、各非基準点の位置を示す値に当該非基準点から当該基準点へのエッジの重みを加算した加算値を求める処理と、
加算値が当該基準点の位置を示す値を超えた場合に当該基準点の位置を示す値を当該加算値によって置き換えて当該基準点の位置を移動させる処理と、を含む、ことを特徴とする制約条件評価方法。 - 前記経路情報算出処理により前記最長路が算出できなかった場合に、前記PC検出手段により、前記バックエッジ検出処理および当該PC検出処理を繰り返すことを特徴とする請求項1記載の制約条件評価方法。
- 前記経路情報算出処理により前記最長路が算出できなかった場合に、前記分解手段により、前記サブグラフに対して前記分解処理を行なうことを特徴とする請求項1または2記載の制約条件評価方法。
- 前記PC検出処理は、一の経路を最長路として、該最長路の最長路長の算出が可能であるか否かを試みる経路情報算出処理を含み、前記判定処理は、前記最長路長が前記除去されたバックエッジに与えられた重み以下である場合に、前記サブグラフ内にPCが存在しないと判定し、前記最長路長が前記除去されたバックエッジの重みを超える場合に、該最長路長と前記除去されたバックエッジとに基づくPCが存在すると判定する処理を含むことを特徴とする請求項1記載の制約条件評価方法。
- 前記PC検出処理は、前記PC検出処理によって検出されたバックエッジが所定の数の場合に、前記サブグラフから当該バックエッジを除去し、前記除去されたバックエッジの始点および終点に基づいて、一の経路および該経路の経路長を含む所定の経路情報を所定の方法で算出し、前記経路長と前記バックエッジに与えられた重みとに基いて、前記経路と前記除去されたバックエッジとに基くPCを検出することを特徴とする請求項1記載の制約条件評価方法。
- 前記所定の分解方法は、前記制約グラフを強連結成分ごとに分解することを特徴とする請求項1、2、4または5記載の制約条件評価方法。
- 前記バックエッジ検出処理は、複数の点を有する前記サブグラフ中の一のサブグラフを検出対象とすることを特徴とする請求項1、2、4または5記載の制約条件評価方法。
- 前記バックエッジ検出処理は、位置が最大となる点を始点とするサブグラフのエッジのうち、終点の位置が最小のエッジをバックエッジとして選択することを特徴とする請求項1記載の制約条件評価方法。
- 前記PC検出手段により、前記PC検出処理に含まれる各処理を繰り返し、前記繰り返しにおいてサブグラフ中の点の数と同回数を超えた繰り返しにおいて点が移動しない場合には、シンクの位置とソースの位置の差を最長路長とし、かつ、ソースからシンクまでの経路のうち、エッジの重みが当該エッジの始点と終点間の位置の距離と一致しているエッジだけで構成される経路を最長路とし、前記繰り返しにおいてサブグラフ中の点の数と同回数を超えた繰り返しにおいて点が移動する場合には、最長路長が求まらないと判定することを特徴とする請求項1記載の制約条件評価方法。
- 前記基準点の値以下の値として、前記ソースの位置からバックエッジの重みの最小のものの値だけ小さい値を用いることを特徴とする請求項1記載の制約条件評価方法。
- 制約条件を入力する入力手段と、入力された制約条件に基づいて制約グラフを生成する生成手段と、入力された制約グラフ中の閉路を分割することなく複数のサブグラフに分解する分解手段と、前記各サブグラフごとにバックエッジを検出するバックエッジ検出手段と、前記各サブグラフごとに前記バックエッジに係るPCを検出するPC検出手段と、前記PCの検出結果を出力する出力手段とを有するコンピュータを使用して、複数の制約に存在する過度の制約を前記制約グラフ中のPCとして検出する制約条件評価方法において、
前記入力手段により制約条件を入力する処理と、
前記制約グラフ生成手段により、前記入力手段によって入力された制約条件に基づいて、重みを表す値と方向を有する複数のエッジでそれぞれ位置情報を有する始点と終点を含む複数の点の間を接続し、前記始点から終点に至るまでの経路の長さを前記制約グラフにおける経路長とすると共に、複数の点を結ぶエッジの向きに逆らうことなく循環できる経路を閉路として表現し、前記複数の点をその位置を基準として一定の方向にソートし、このソート順に従って得られた各点の位置を結ぶエッジの中で、その始点が終点よりも前記ソート順で後にあるエッジをバックエッジとした制約グラフを生成する処理と、
前記分解手段により、前記制約グラフ生成手段により生成された制約グラフを、当該制約グラフ中の閉路を保持したまま複数のサブグラフに分解する分解処理と、
前記バックエッジ検出手段により、各サブグラフ中のバックエッジを検出するバックエッジ検出処理と、
前記PC検出手段により、各サブグラフ中の前記バックエッジに係るPCを検出するPC検出処理とを有し、
前記PC検出処理は、
検出されたバックエッジを前記サブグラフから除去する処理と、
除去されたバックエッジの第1の点及び第2の点により最長路及びこの最長路の最長路長を含む所定の経路情報の算出が可能であるか否かを試みる経路情報算出処理と、
前記経路情報算出処理により最長路長が算出できた場合に、前記サブグラフにおけるPCの存在を判定する判定処理と、
制約グラフからバックエッジを除去したフォワードグラフを得る抽出処理と、
得られたフォワードグラフの各点をソートするソート処理と、
フォワードグラフ中のソースを基準点として、当該ソース以外の点の位置を示す値を少なくとも前記基準点の値以下の値にセットする初期化処理と、
ソートされたフォワードグラフについて、エッジによって接続された各2点の位置を、当該2点間に少なくとも当該エッジの重み分の位置間隔を確保するように調整する第1の調整処理と、
除去された各バックエッジについて、当該バックエッジの始点の位置を示す値に当該バックエッジの重みを加算した加算値を求め、バックエッジの終点位置を示す値がこの加算値より小さい場合には当該終点位置を示す値を当該加算値によって置き換える第2の調整処理と、を含み、
前記第1の調整処理は、
前記ソート処理によって各点の位置を基準点として順次選択する処理と、
各非基準点の位置を示す値に当該非基準点から当該基準点へのエッジの重みを加算した加算値を求める処理と、
加算値が当該基準点の位置を示す値を超えた場合に当該基準点の位置を示す値を当該加算値によって置き換えて当該基準点の位置を移動させる処理と、を含み、
前記第1及び第2の調整処理をバックエッジの数と等しい回数だけ繰り返し、第1及び第2の調整処理が収束しない場合には最長路算出失敗を返すことによって処理を終了し、第1及び第2の調整処理が収束した場合には最長路長及び最長路を返す、ことを特徴とする制約条件評価方法。 - 重みを表す値と方向を有する複数のエッジでそれぞれ位置情報を有する始点と終点を含む複数の点の間を接続し、前記始点から終点に至るまでの経路の長さを制約グラフにおける経路長とすると共に、複数の点を結ぶエッジの向きに逆らうことなく循環できる経路を閉路として表現し、前記複数の点をその位置を基準として一定の方向にソートし、このソート順に従って得られた各点の位置を結ぶエッジの中で、その始点が終点よりも前記ソート順で後にあるエッジをバックエッジとした制約グラフを、当該制約グラフ中の閉路を保持したまま複数のサブグラフに分解する分解手段と、
前記各サブグラフ中のバックエッジを検出するバックエッジ検出手段と、
前記各サブグラフ中の前記バックエッジに係るPCを検出するPC検出手段とを有し、
前記PC検出手段は、
検出されたバックエッジを前記サブグラフから除去する手段と、
前記サブグラフ中のソースを基準点として、除去されたバックエッジの第1の点及び第2の点により最長路及びこの最長路の最長路長を含む所定の経路情報の算出が可能であるか否かを試みる経路情報算出手段と、
前記経路情報算出手段により最長路長が算出できた場合に、前記サブグラフにおけるPCの存在を判定する判定手段と、を含み、
前記経路情報算出手段は、
前記ソース以外の点の位置を示す値を少なくとも前記基準点の位置を示す値以下の値にセットする手段と、
所定のソート順にしたがって各点の位置を基準点として順次選択する手段と、
各非基準点の位置を示す値に当該非基準点から当該基準点へのエッジの重みを加算した加算値を求める手段と、
加算値が当該基準点の位置を示す値を超えた場合に当該基準点の位置を示す値を当該加算値によって置き換えて当該基準点の位置を移動させる手段と、を含む、ことを特徴とする制約条件評価装置。 - 前記経路情報算出手段により前記最長路が算出できなかった場合に、前記バックエッジ検出手段および当該PC検出手段を繰り返し適用するように構成されたことを特徴とする請求項12記載の制約条件評価装置。
- 前記経路情報算出手段により前記最長路が算出できなかった場合に、前記サブグラフに対して前記分解手段を適用するように構成されたことを特徴とする請求項12または13記載の制約条件評価装置。
- 前記PC検出手段は、一の経路を最長路として、該最長路の最長路長の算出が可能であるか否かを試みる経路情報算出手段を含み、前記判定手段は、前記最長路長が前記除去されたバックエッジに与えられた重み以下である場合に、前記サブグラフ内にPCが存在しないと判定し、前記最長路長が前記除去されたバックエッジの重みを超える場合に、該最長路長と前記除去されたバックエッジとに基づくPCが存在すると判定する手段を有することを特徴とする請求項12記載の制約条件評価装置。
- 前記PC検出手段は、前記PC検出手段によって検出されたバックエッジが所定の数の場合に、前記サブグラフから当該バックエッジを除去し、前記除去されたバックエッジの始点および終点に基づいて、一の経路および該経路の経路長を含む所定の経路情報を所定の方法で算出し、前記経路長と前記バックエッジに与えられた重みとに基いて、前記経路と前記除去されたバックエッジとに基くPCを検出するように構成されたことを特徴とする請求項12記載の制約条件評価装置。
- 前記所定の分解方法は、前記制約グラフを強連結成分ごとに分解することを特徴とする請求項12、13、15または16記載の制約条件評価装置。
- 前記バックエッジ検出手段は、複数の点を有する前記サブグラフ中の一のサブグラフを検出対象とするように構成されたことを特徴とする請求項12、13、15または16記載の制約条件評価装置。
- 前記バックエッジ検出手段は、位置が最大となる点を始点とするサブグラフのエッジのうち、終点の位置が最小のエッジをバックエッジとして選択するように構成されたことを特徴とする請求項12記載の制約条件評価装置。
- 前記PC検出手段に含まれる各手段を繰り返し適用し、前記繰り返しにおいてサブグラフ中の点の数と同回数を超えた繰り返しにおいて点が移動しないとき、シンクの位置とソースの位置の差を最長路長とし、かつ、ソースからシンクまでの経路のうち、エッジの重みが当該エッジの始点と終点間の位置の距離と一致しているエッジだけで構成される経路を最長路とし、前記繰り返しにおいてサブグラフ中の点の数と同回数を超えた繰り返しにおいて点が移動するときは、最長路長が求まらないと判定するように構成されたことを特徴とする請求項12記載の制約条件評価装置。
- 前記基準点の位置以下の値として、前記ソースの位置からバックエッジの重みの最小のものの値だけ小さい値を用いるように構成されたことを特徴とする請求項12記載の制約条件評価装置。
- 重みを表す値と方向を有する複数のエッジでそれぞれ位置情報を有する始点と終点を含む複数の点の間を接続し、前記始点から終点に至るまでの経路の長さを制約グラフにおける経路長とすると共に、複数の点を結ぶエッジの向きに逆らうことなく循環できる経路を閉路として表現し、前記複数の点をその位置を基準として一定の方向にソートし、このソート順に従って得られた各点の位置を結ぶエッジの中で、その始点が終点よりも前記ソート順で後にあるエッジをバックエッジとした制約グラフを、当該制約グラフ中の閉路を保持したまま複数のサブグラフに分解する分解手段と、
前記各サブグラフ中のバックエッジを検出するバックエッジ検出手段と、
前記各サブグラフ中の前記バックエッジに係るPCを検出するPC検出手段とを有し、
前記PC検出手段は、
検出されたバックエッジを前記サブグラフから除去する手段と、
除去されたバックエッジの第1の点及び第2の点により最長路及びこの最長路の最長路長を含む所定の経路情報の算出が可能であるか否かを試みる経路情報算出手段と、
前記経路情報算出手段により最長路長が算出できた場合に、前記サブグラフにおけるPCの存在を判定する判定手段と、
制約グラフからバックエッジを除去したフォワードグラフを得る抽出手段と、
得られたフォワードグラフの各点をソートするソート手段と、
フォワードグラフ中のソースを基準点として、当該ソース以外の点を少なくとも前記基準点の値以下の値にセットする初期化手段と、
ソートされたフォワードグラフについて、エッジによって接続された各2点の位置を、当該2点間に少なくとも当該エッジの重み分の位置間隔を確保するように調整する第1の調整手段と、
除去された各バックエッジについて、当該バックエッジの始点の位置を示す値に当該バックエッジの重みを加算した加算値を求め、バックエッジの終点位置を示す値がこの加算値より小さい場合には当該終点位置を示す値を当該加算値によって置き換える第2の調整手段と、を含み、
前記第1の調整手段は、
前記ソート手段によって各点の位置を基準点として順次選択する手段と、
各非基準点の位置を示す値に当該非基準点から当該基準点へのエッジの重みを加算した加算値を求める手段と、
加算値が当該基準点の位置を示す値を超えた場合に当該基準点の位置を当該加算値によって置き換えて当該基準点の位置を移動させる手段と、を含み、
前記第1及び第2の調整手段は、これらの手段による一連の処理を、バックエッジの数と等しい回数だけ繰り返し、処理が収束しない場合には最長路算出失敗を返すことによって処理を終了し、処理が収束した場合には最長路長及び最長路を返すように構成されたことを特徴とする制約条件評価装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15566796A JP3628109B2 (ja) | 1995-06-16 | 1996-06-17 | 制約条件評価方法及び制約条件評価装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15060095 | 1995-06-16 | ||
JP7-150600 | 1995-06-16 | ||
JP15566796A JP3628109B2 (ja) | 1995-06-16 | 1996-06-17 | 制約条件評価方法及び制約条件評価装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0962732A JPH0962732A (ja) | 1997-03-07 |
JP3628109B2 true JP3628109B2 (ja) | 2005-03-09 |
Family
ID=26480142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP15566796A Expired - Fee Related JP3628109B2 (ja) | 1995-06-16 | 1996-06-17 | 制約条件評価方法及び制約条件評価装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3628109B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2921978B1 (en) * | 2014-03-19 | 2021-09-29 | Dassault Systèmes | Designing industrial products by using geometries connected by geometrical constraints |
-
1996
- 1996-06-17 JP JP15566796A patent/JP3628109B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0962732A (ja) | 1997-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5971596A (en) | Constraint condition evaluation method and constraint condition evaluation system | |
US5574893A (en) | Computer logic simulation with dynamic modeling | |
US5513122A (en) | Method and apparatus for determining the reachable states in a hybrid model state machine | |
US5483470A (en) | Timing verification by successive approximation | |
US5918037A (en) | Generating tests for an extended finite state machine using different coverage levels for different submodels | |
CN106991051B (zh) | 一种基于变异测试和关联规则的测试用例约简方法 | |
US6308299B1 (en) | Method and system for combinational verification having tight integration of verification techniques | |
JP2005025763A (ja) | 構造化文書の分割プログラム、分割装置、及び分割方法 | |
US20070094204A1 (en) | Rule processing method and apparatus providing automatic user input selections | |
US20160034624A1 (en) | Optimizing constraint solving by rewriting at least one bit-slice constraint | |
JP6973197B2 (ja) | データセット検証装置、データセット検証方法、およびデータセット検証プログラム | |
US6031979A (en) | Circuit partitioning apparatus for executing parallel circuit simulation and method therefor | |
CN110020456B (zh) | 利用基于图的相似性搜索逐步生成fpga实现的方法 | |
Xue | Edge‐maximal triangulated subgraphs and heuristics for the maximum clique problem | |
Juan et al. | Condition graphs for high-quality behavioral synthesis | |
JP3628109B2 (ja) | 制約条件評価方法及び制約条件評価装置 | |
US7159201B2 (en) | Method and apparatus for cut-point frontier selection and for counter-example generation in formal equivalence verification | |
Nagayama et al. | Minimization of average path length in BDDs by variable reordering | |
Ehrenburg | Improved directed acyclic graph evaluation and the combine operator in genetic programming | |
JPH103405A (ja) | テスト支援装置 | |
JP3766119B2 (ja) | 回路シミュレーション方法及びその装置 | |
WO2021240886A1 (ja) | テストスクリプト生成システム、テストスクリプト生成方法、電子制御装置 | |
Schmiedle et al. | Dynamic re-encoding during MDD minimization | |
CN113792247B (zh) | 基于代码特征生成功能流程图的方法、装置、设备和介质 | |
Lima et al. | A $\Delta $-evaluation function for column permutation problems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040323 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040521 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040810 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041012 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041130 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041207 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071217 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081217 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091217 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |