JP3741544B2 - 順序回路の状態探索方法および装置並びに状態探索プログラムを記録した記録媒体 - Google Patents
順序回路の状態探索方法および装置並びに状態探索プログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP3741544B2 JP3741544B2 JP22577098A JP22577098A JP3741544B2 JP 3741544 B2 JP3741544 B2 JP 3741544B2 JP 22577098 A JP22577098 A JP 22577098A JP 22577098 A JP22577098 A JP 22577098A JP 3741544 B2 JP3741544 B2 JP 3741544B2
- Authority
- JP
- Japan
- Prior art keywords
- state
- variable
- bdd
- next state
- image calculation
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Tests Of Electronic Circuits (AREA)
Description
【発明の属する技術分野】
本発明は、順序回路の合成、設計検証およびテストパタン生成等において行われる状態探索の計算を効率的に行うための状態探索方法および装置並びに状態探索プログラムを記録した記録媒体装置に関する。
【0002】
【従来の技術】
順序回路およびその抽象モデルである有限状態機械(Finite State Machine;FSM)の状態を探索する技術は、各種の論理設計支援技術、例えば、設計検証、論理合成、テストパタン生成などにおいて極めて重要である。近年の集積回路技術の進歩に伴い、より大規模なシステムが論理回路として実現されるようになり、大規模なFSMに付する状態探索の効率化が望まれている。
FSMの状態探索は、与えられたFSMの状態遷移グラフ上で初期状態から深さ優先探索や幅優先探索などの古典的なグラフ探求アルゴリズムを用いても行うことができる。しかし、例えば、フリップフロップ(以下FFという)数が30個の順序回路は、とり得る状態数が最大230(約109 )個あり、それらの状態を一つ一つ明示的に扱う古典的な方法では、現実的な時間ですべての到達可能状態の探索を行うことは不可能であった。
【0003】
1989年、状態集合を論理関数で表現し、さらにその論理関数を二分決定グラフ(Binary Decision Diagram ;BDD)により非明示的に表すことにより、BDDの処理によるFSMの状態探索を行う方法が考案された([1] O.Coudert and J.C.Madre Verification of sequential machines using boolean functional vectors.In Proc.IFIP International Workshop on Appried Formal Methods for Correct VLSI Desgin,pages 111-128,November 1989.参照)。
BDDは実用的な論理関数をコンパクトに表現できるため、この非明示的処理により扱えるFSMの大きさは飛躍的に増大した。
しかし、二分決定グラフは、表現する論理関数の変数に順序づけをしておく必要があり、さらに、変数の順序づけによりグラフのサイズが大きく依存するという性質がある。
そのため、よい変数順をいかにして得るかが大きな問題となった。
【0004】
まず、組合せ回路からその出力関数を表すBDDを生成する場合に、良い変数順を回路の結線情報などから計算する方法が提案された。これらの方法により、多くの回路に付して、より小さなBDDが得られるようになった。しかし、やはり計算の途中でBDDが爆発することも多かった。さらに、FSMの状態探索においては、次状態関数だけでなく、各像計算で得られる次状態集合および到達した全ての状態集合など特徴の異なる論理関数をBDDで表す必要があり、それら全てによい変数順をあらかじめ求めることは難しかった。
【0005】
そこで、1993年、あらかじめ決めた変数順を最後まで固定にするのではなく、計算の途中でBDDが爆発しかけると、その時点でのよい変数順を求め直し、変数順を変えるという動的変数順序づけ法が提案された([2] R.Rudell.Dynamic variable ordering for ordered binary decision diagrams.In Proceedings of IEEE/ACM International Conference on CAD-93,pages42-47,November 1993. 参照)。
以降、BDDを計算する前に決める変数順序づけを静的変数順序づけと呼ぶ。提案された動的変数順序づけは、実際に変数の順序を入れ換えてみて、良い位置に変数を置くというもので、問題に依存することなく、BDDを用いるどのような応用に対しても適用することができる。
【0006】
FSMの状態探索においても、静的変数順序づけではBDDが爆発していた多くの問題に対して、動的変数順序づけを用いることによりBDDのサイズを処理可能な程度に削減することができた。しかし、動的変数順序づけは、実際にBDD中で変数を移動させることにより、よい変数順を求めるため、たいへん多くの計算時間を必要とした。また、移動途中でBDDが爆発してしまうこともあり、これらの点が問題とされた。さらに、動的変数順序づけではある時点で変数順の入れ換えを一度に行うため、いつの時点で入れ換えを行うかのスケジューリングが難しいという実用上の問題もあった。
【0007】
以下二分決定グラフと二分決定グラフによる集合の表現、二分決定グラフを用いたFSMの状態探索について説明する。
(1)二分決定グラフ
計算機での論理関数の表現法としては、真理値表、積和形論理式、ファクタードフォーム、二分決定グラフ(BDD)などがある。このうちBDDは、良い変数順を与えることができれば、大きな論理関数を表現することができる。
BDDは、図18(a)に示すような二分決定木において場合分けする変数順を全てのパスで固定し、さらに等価な部分グラフの共有と冗長なノードの削除を行ったものである。この縮約により論理関数がコンパクトに表現できるようになるとともに、正規形となる。すなわち同一の論理関数は同一のBDDとなる。
例えば、図18(b)の関数に、x1 =1,x2 =0,x3 =0を代入したときの値は、図のBDDの根(一番上の矢印)から1,0,0の枝を順にたどると葉1に到達するので、値が1であることがわかる。
【0008】
BDDを用いた論理関数の演算として、通常用いられる論理和(+)、論理積(・;ただし、論理積の・は省略する場合もある)、論理否定(上横バー、本文では必要に応じて (’) で表現する)、排他的論理和(丸の中に+:本文中では必要に応じて (EOR)で表現する:x(EOR) y=x・y' +x' ・y)、等価演算(≡;x≡y=x・y+x' ・y' )を用いる。なお、以下の式ではベクトルを記号の上に(→)を付して示すが、本文中では(ベクトル)と表記する。
また、上記表現の他に、smoothing 演算を用いる。論理関数:f:Bn →Bの入力変数のある部分集合がx(ベクトル)={x1,x2,…,xk }であるとき、Fのx(ベクトル)に関するsmoothing (existential quantification)∃x(ベクトル)を以下の(1)(2)式のように定める。
【0009】
【数1】
【0010】
BDDはその変数順によりグラフのサイズ、すなわちノード数が大きく変化するという性質がある。
例えば関数f=x1 ・x2 +x3 ・x4 を表すBDDについて、変数順が最適な場合と最悪な場合を示すと図19のようになる。最適な変数順では同図(a)に示すようにノード数が4なのに付して、最悪な変数順では同図(b)に示すようにノード数が6になっている。ただし、ここではノード数に葉のノード数は含めない。
一般に、最適変数順と最悪変数順のノード数の差は、表す関数の変数の数が大きくなるほど大きくなる。上記の関数fで変数が6つになった場合、すなわち、f=x1 ・x2 +x3 ・x4 +x5 ・x6 の場合、最適変数順、最悪変数順それぞれでのBDDのサイズは6および14となり倍以上の差となる。
【0011】
(2)二分決定グラフによる集合の表現
n変数論理関数f:Bn →Bは、fを1にする入力ベクトルの集合、すなわち最小項の集合と見ることができる。ある2値ベクトルの集合S⊆Bn に対して、次の(3)式で表されるn変数論理関数χs を集合Sの特徴関数とよぶ。
【0012】
【数2】
【0013】
したがって、ある2値ベクトルの集合Sに付し、Sの特徴関数をBDDで表現すれば、SがBDDで表現できたことになる。この表現は集合のBDDによる非明示的表現とも呼ばれる。
例えば、ある2値ベクトルの集合S={000,010,100,110,111 }に対する特徴関数は、iビット目に変数xi を割り当てるとすると、χs =x1 ・x2 +x3'となる。すなわち、上記2値ベクトルの集合Sの任意のベクルトに対し、そのベクトルでの変数xi (i=1,2,3)の値を上記式に代入したときχs =1となり、このような関数χs を特徴関数という。また、この特徴関数を表現するBDDは前記図18(b)に示したようになる。
【0014】
(3)二分決定グラフを用いたFSMの状態探索
FSMの状態探索とは、ある与えられた初期状態あるいは初期状態の集合から、ある入力系列により到達することのできる状態を全て探索することをいう。状態探索は、与えられたFSMの状態遷移グラフ上て初期状態から可能な全ての遷移をたどっていく処理に基づいて行うことができる。
FSMが大規模な場合、これらの遷移数が膨大となるため、状態一つ一つの遷移を順に調べる方法では現実的な時間で探索を完了することが不可能である。
そこで、二分決定グラフを用いた状態探索では、多くの状態を一まとめにしてそれらの遷移を同時に調べ、その次状態の集合を求める処理に基づいて行う。この処理では、膨大な状態遷移グラフを直接作る必要はなく、各状態変数に対する次状態関数、すなわち、各人力と現状態に付してその状態変数が次状態でとるべき値を計算する論理関数を表すBDDを作り、それらのBDDと次状態を求めたい状態集合を表すBDDどうしの演算によって次状態の集合を表すBDDを求める。
【0015】
BDDの演算は次のように行われる。例えば、2つの論理関数f=x1 x2 ,g=x1 +x2 がBDDで表されているとき、その論理積のBDDは以下のように求まる。
変数順がx1 ,x2 のとき、f,gを表すBDDは図20(a)(b)に示すようになる。ここで、(f・g)=xi'・(fx1' ・gx1' )+xi ・(fx1・gx1)が成り立つので、f・gのBDDは、同図(c)に示すように、一番根に近い変数x1 の0枝が指すBDDがfx1' ・gx1' 、1枝が指すBDDがfx1・gx1となる。
【0016】
したがって、fx1' ・gx1' 、fx1・gx1のBDDを作ることができれば、f・gのBDDも作ることができる。この例では、fx1' =0であるので、fx1' ・gx1' が0であることがわかり、そのBDDは同図(d)の通りである。また、gx1=1であるので、fx1・gx1=fx1=x2 となり、そのBDDは同図(e)の通りである。その結果、f・gのBDDは、同図(f)のようになる。
ここで、fx1,gx1とも定数でない場合には、変数x2 に対して、図19(c)と同様な展開を行う。これを高々変数の数だけ繰り返せば必ず定数ノードに至るので、積のBDDを生成することができる。
【0017】
以下、例により二分決定グラフを用いた状態探索を説明する。
ここで、一例として、図21のような状態遷移表をもつFSM Mについて考える。図21において、現状態の前の”→”は初期状態を表す。この状態遷移図を持つ順序回路Mは図22の通りである。図22において、白丸はNOTゲート(否定演算)を表すものとする。なお、本計算では外部出力は考慮しないため、それに関する部分は図21、図22においては省略している。
【0018】
図22に示す順序回路Mにおいて、現状態集合S={0010,0011 }の次状態集合は図21から明らかなように、{0110,1101,1110,1111 }である。
状態集合Sがその特徴関数により表現されているとき、次状態関数ベクトルf(x,y)(f,x,yはベクトル)による状態集合S(y)(yはベクトル)の像Img(f(x,y),S(y))(f,x,yはベクトル)は以下の(4)式のように関数処理により計算できる。ただし、x,y(x,yはベクトル)はそれぞれ入力変数および現状態変数であるとする。また、FSM Mの次状態関数は、(5)式〜(8)式である。
【0019】
【数3】
【0020】
図21、図22に示したFSM Mの状態集合Sの特徴関数はS=y1'y2'y3 であるので、Imgの特徴関数は以下の(9)式のように計算できる。
【0021】
【数4】
【0022】
現状態集合Sからの像計算ではSからの遷移のみを考慮すればよいので、S以外からの遷移をドントケアとして関数fi を簡単化した関数fi |s をfi の代わりに用いることもできる。
すなわち、像計算に必要な遷移のみを考慮して、像計算の間のみ一時的にフリップフロップを削除して、簡単化した関数fi |s をfi の代わりに用いる。なお、上記S以外からの遷移をドントケアとして関数fi を簡単化した関数fi |s を用いる点については、本出願人が先に提案した特願平10−60982号参照を参照されたい。
【0023】
上記の計算を行う具体的な手続き、すなわち現状態集合を表すBDD Sと次状態関数fi (i=1,…,n)を表すBDDに対して像計算を行う手続きを図23に示す。
同図において、ステップS1において、状態集合S〔例えば、前記(9)式においてはS=y1'y2'y3 〕をToに入れる。次に、ステップS2において、未処理の次状態変数Yi を一つ選び、ステップS3において、Yiを表すBDDを生成する。
ステップS4において、To(Yi ≡fi )を計算しToに入れる。例えば、前記(9)式の場合、一回目の計算においては、y1'y2'y3 ・(Yi ≡fi )の計算を行う。この計算は、y1'y2'y3 、Yi 、fi をそれぞれBDDで表し、前記図20で説明したようにBDD同士の演算により行われる。
【0024】
次に、ステップS5において、まだ消去していない入力変数および現状態変数で、未処理の次状態関数のどれもが依存していない変数の集合v(vはベクトル)を求める。すなわち、Toが依存する変数(Toの式中に現れる変数)の中でまだ選択されていない次状態関数のどれにも現れない変数の集合v(vはベクトル)を求める。
ステップS6において、∃v.To(vはベクトル)を求めToに入れる。
次いでステップS7において、選ばれていないYi が存在するか否か調べ、存在している場合にはステップS2に戻り上記処理を繰り返す。また、選ばれていないYi が存在しない場合には処理を終了する。
像計算は、幅優先探索の1ステップに対応するため、初期状態からはじめて、新しく到達した状態がなくなるまで像計算を繰り返すことによりすべての到達可能状態が関数処理により求まる。
【0025】
図24に基本的な状態探索の手続きを示す。
同図に示すように到達可能状態計算は次のように行われる。
まず、ステップS1において、次状態関数のBDDと初期状態を入力する。ここで、次状態関数fi (i=1,....,n)は、図22の例ではフリップフロップはF1,F2,F3,F4の状態を表し、これに対応する次状態関数はf1 ,f2 ,f3 ,f4 である。また、状態遷移表は前記図21の通りである。また、初期状態を(y1 y2 y3 y4 )={0000}であるとする。
ステップS2において、From←{0000}、Reached←{0000}に設定する。ここで、Fromは像計算の遷移元の状態の集合、Reachedは到達した状態の全ての集合を表す。
ステップS3において、前記図23に示した処理手順で次状態関数fi (i=1,....,n)によるFromの像To(1遷移で到達可能な状態の集合)を計算する。
【0026】
ステップS4において、上記像ToをReachedに加え、ステップS5において、Reachedが不変であるかを調べる。
Reachedが不変であれば、到達可能な全ての状態の集合が求まったので処理を終了する。また、Reachedが一回前のReachedと異なる場合には、ステップS7において、前記像ToをFromに入れて、ステップS3に戻り上記処理を繰り返す。
図23のステップS2で生成する次状態変数の変数順に関しては、状態探索中どの像計算でも固定された位置に置かれる。通常、一つの現状態と対応する次状態を組にし、その現状態変数の直下に置かれることが多い。
これは、一般的に、現状態変数とそれに対応する次状態変数には何らかの依存関係があることが多いことと、図24のステップS6のように像計算のあと、次状態変数の関数Toを現状態変数の関数Fromに置き扱える時、次状態が現状態の直下にある方が処理が速いことによる。
【0027】
【発明が解決しようとする課題】
前記したように、BDDは、表現する論理関数の変数に順序づけをしておく必要があり、さらに、変数の順序づけによりグラフのサイズが大きく依存するという性質がある。
従来の状態探索においては、上記したように通常、次状態変数の変数順は状態探索中どの像計算でも固定された位置に置かれることが多かった。
また、前記したように、計算の途中でBDDが爆発しかけると、変数順を変えるという動的変数順序づけ法が提案されたが、動的変数順序づけは、実際にBDD中で変数を移動させることにより、よい変数順を求めるため、たいへん多くの計算時間を必要とした。また、いつの時点で入れ換えを行うかのスケジューリングが難しいという実用上の問題もあった。
【0028】
本発明は上記した事情に鑑みなされたものであって、本発明の目的は、順序回路の状態探索において、大規模、かつ複雑な有限状態機械の状態探索に不可欠であるが多くの時間を必要としていたBDDの変数順の変更によるBDDの簡単化をより高速に行うとともに、従来の方法で実用上問題となっていたスケジューリングを不要とすることである。
【0029】
【課題を解決するための手段】
本発明では、状態探索の計算において、次状態の変数が生成される時にその適切な位置を計算し、その位置に変数を生成することにより、BDDの変数順の変更を行う。
この方法により、像計算の途中でBDDの変数入れ換えを行うことなく変数順の変更が行えるため、変数順の変更に伴う計算時間のオーバーヘッドが軽減される。さらに、次状態変数生成のタイミングで変数入れ換えを行うことにより、変数順変更のスケジューリングが不要となる。
【0030】
図1は本発明のBDD簡単化方法を用いた状態探索方法の原理説明図である。図1に示すように、本発明においては次のようにして順序回路の状態探索を行う。
(i) 次状態関数のBDDと初期状態を入力する(ステップS1)。
(ii)次状態の変数が導入されるときに、BDD中での位置を決定し、指定位置に次状態を生成しながら像計算を行う(ステップS2)。
(iii) 既到達状態集合のBDDと、次状態関数のBDDを次状態集合の変数順に合わせる(ステップS3)。
(iv)次状態集合を既到達状態集合に追加する(ステップS4)。
(v) 既到達状態集合が不変になるまで上記(ii)〜(iv)の処理を繰り返し、既到達状態集合が不変になったら処理を終了する(ステップS5からステップS2)。
【0031】
上記(ii)において、次状態の変数の位置は次のようにして決定することができる。
▲1▼ k個の位置の候補をあげ、それぞれの位置にしたときの二分決定グラフのサイズを計算し、そのサイズが一番小さくなる位置を選択する。
▲2▼ 二分決定グラフにおける次状態の変数の位置として、その一番根に近い変数に隣接したより根に近い位置、もしくは、一番葉に近い変数に隣接した、より葉に近い位置を選択する。
▲3▼ 次状態の変数の位置として、直前に導入した次状態変数の位置に隣接した位置を選択する。
また、像計算を行うに際し、前記したように、現状態集合以外からの遷移をドントケアとして簡単化した関数の二分決定グラフを用いることができる。
【0032】
図2は本発明の状態探索装置の原理説明図である。
本発明の状態探索装置は、図2に示すように、次状態関数のBDDと初期状態を入力する入力手段1、指定位置に次状態を生成しながら像計算を行う手段2、次状態の位置計算手段3、既到達状態集合のBDDと次状態関数のBDDを次状態集合の変数順に合わせる手段4、次状態集合を既到達状態集合に加える手段5、出力手段6を備えており、上記手段2〜5による処理を既到達状態集合が不変になるまで繰り返し、到達可能状態情報を得る。
上記次状態の位置計算手段3は、上記▲1▼〜▲3▼のようにして、次状態の変数の位置を決定する。また、像計算を行うに際し、前記したように現状態集合以外からの遷移をドントケアとして簡単化した関数の二分決定グラフを用いるようにすることができる。
以上のように本発明においては、次状態の変数が生成される時にその適切な位置を計算し、その位置に変数を生成することにより、BDDの変数順の変更を行っているので、BDDの変数順の変更によるBDDの簡単化をより高速に行うことができるともに、変数順の入れ換えのスケジューリングが不要となる。
【0033】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
図3は、本発明の実施例のFSMの状態探索装置の構成図である。
図3に示す状態探索装置は、入出力装置11、演算処理装置12、記憶装置13、およびこれらの各装置を接続するバス20を備える計算機システムで構成する。
入出力装置11は、例えばキーボードやマウスなどの入力装置とディスプレイ装置からなる計算機端末であり、次状態関数のBDDや初期状態の入力や計算された到達可能状態の情報の出力などを行う。
【0034】
演算処理装置12は、例えばCPU(中央処理装置)であり、記憶装置13に記憶されたデータを用いて、記憶装置13に格納された各種のプログラムを実行し、演算などを行う。
記憶装置13には、指定位置に次状態を生成しながら像計算を行うルーチン14、次状態の位置を決定する次状態位置計算ルーチン15、既到達状態集合のBDDを次状態集合の変数順に合わせるルーチン16、次状態集合を既到達集合に追加するルーチン17が格納され、これらのルーチンを実行し、状態探索を行う。
【0035】
次に、図4および図5を参照しながら、本発明の実施例の計算処理について、前記図21、図22に示したFSM Mを用いて具体的に説明する。
図4は、本実施例における像計算処理のフローチャート、図5は本実施例における像計算を利用した状態探索処理のフローチャートである。
まず、図5のステップS1において、次の(10)〜(13)式に示す次状態関数のBDDと初期状態を入力する。
【0036】
【数5】
【0037】
この例では初期状態を(y1 y2 y3 y4 )=(0000)であるとする。また、BDDの初期変数順は<x,y1 ,y2 ,y3 ,y4 >であるとする。
図5のステップS2では、初期状態(0000)に対応する特徴関数y1'y2'y3'y4'を表すBDDをFROM,REACHEDに設定する。
なお、FROMは現状態集合を表すBDD、REACHEDは今まで到達した状態すべての集合、すなわち既到達状態集合を表すBDDである。
ステップS3からステップS7までのループにより到達可能状態の探索を行う。
ループの1回分は1回の像計算に対応し、新しい到達可能状態が見つからなくなるまで(ステップS6の判定)この操作を繰り返す。
ステップS3では、本発明の手法による像計算を行う。この計算は図4に従って計算される。
【0038】
図4において、まず、SとしてFROM=y1'y2'y3'y4'が与えられる。
図4のステップS3.1でTo=S=y1'y2'y3'y4'となる。
ステップS3.2では、FROM以外の状態からの遷移を前記したようにドントケア(値は何でもよい)として、f1 を簡単化する。ドントケア値を“ * ”としたときの状態遷移図は図6となるので、f|FROM(fはベクトル)は以下の(14)〜(17)式のように簡単化できる。
【0039】
【数6】
【0040】
図4のステップS3.3では未処理の次状態変数が一つ選択される。例えば、Y1 が選択されたとする。
ステップS3.4でY1 のBDDでの適切な位置を決定する。位置の決定法としては、従来のyi の直下に置く( これを位置Aとする)方法以外に、本発明では、f1 |FROMのBDDの変数の位置や直前に処理したYi+1 の位置情報を用いてYi の良い位置を推定する。
例えば、ここでは、「f1 |FROMのBDDの一番葉に近い変数ノードの直下の位置(これを位置Bとする)に置く」場合を考え、その場合のToのBDDが従来のyi の直下に置く場合と比較して小さい場合には、Yi を位置Bに置く方法を提案する。
位置Bは、Yi ≡fi のBDDが最も小さくなる位置であり、かつ依存変数の似た関数、すなわち依存関係がある可能性がある関数を近くに置くことができる。
【0041】
例では、f1 |FROM=0のBDDで一番葉に近い変数ノードの直下をY1 の位置とするが、この場合、f1 |FROM=0のBDDは定数0のノードしかないので、他のどのノードよりも葉に近いところをY1 の位置とする。
再び図4に戻り、ステップS3.5で、その位置のノードを生成する。現時点でのTo,f1 |s 、Yi のBDDを図7(a)〜(c)に示す。
ステップS3.6の結果、To=Y1'y1'y2'y3'y4'となり、そのBDDは図7(d)のようになる。
ステップS3.7では、f2 |FROM、f3 |FROM、f4 |FROMはxにしか依存していないので、v(ベクトル)=(y1 ,y2 ,y3 ,y4 )となる。
従って、ステップS3.8では、Toは次の(18)式のようになる。また、結果のBDDは図7(e)のようになる。
【0042】
【数7】
【0043】
一方、Y1 を位置AにしたときのToは図7(f)の通りである。位置Aのときと位置Bのときとで、BDDのサイズは変わらないので、Y1 に対しては位置Aが選択される。同様にY2 ,Y3 ,Y4 についても順に処理すると、それぞれにおいて、生成されるBDDは図8、図9、図10に示すようになる。
なお、この場合も、図8〜図10に示すように、ステップS3.8後のToは位置Aでも位置Bでも同じである。
したがって、一回目の計算終了後、Toとして次の(19)式を得る。
これで、1回目の像計算が終了し、図5のステップS4に移る。今の変数順は変わらないので、ステップS4では何もしない。ステップS5で、次状態集合を現状態変数のBDDにしてから既状態集合に加える。すなわち、Reachedは次の(20)式のようになる。
【0044】
【数8】
【0045】
この場合はReachedが変化しているので、ステップS7でToを現状態関数にしてから、From=To=y1'y2'y3 として、2回目の像計算に移る。
2回目の像計算は、1回目の像計算と同様にして、今回は状態遷移関数のドントケアが図11のようになるため、簡単化したfi は以下の(21)〜(24)式のようになる。
【0046】
【数9】
【0047】
2回目の像計算も、1回目の像計算と同様に行う。Y1 ,Y2 ,Y3 ,Y4 が順に選ばれたときのBDDの様子を図12〜図15に示す。
図12(d)(e)に示すように、状態Y1 に対しては、位置BのときのToのBDDのサイズが4であり、位置Aのときのサイズが5なので、この場合は位置Bが選ばれる。また、図13(d)(e)に示すように、状態Y2 に対しては、位置BのときのBDDのサイズが5であり、位置Aのときのサイズが6なので、位置Bが選ばれる。状態Y3 に対しても、図14(d)に示すように、位置A,BともBDDのサイズが同じなので、ここでは位置Aを選択しておく。
状態Y4 に対しても、図15(d)に示すように位置A,Bとも同じサイズなので、ここでは位置Aを選択しておく。
【0048】
従って、像計算の結果、BDDの変数順は<x,Y3 ,Y4 ,Y1 ,Y2 >となる。像計算の前の変数順と変わっていることに注意されたい。
従来の動的変数順序づけを用いても変数順を変えることはできるが、その場合、実際に各変数について位置を上から下まで移動したBDDを作っていき、一番良い位置を求める必要があった。本実施例の方法では、像計算中はこのような移動を全く行わずに変数順を変えることができる。
以上の像計算の結果、次状態集合Toは次の(25)式のようになる。
【0049】
【数10】
【0050】
上記ToのBDDを図16(a)に示す。また、比較のため、2回目の像計算の前での変数順<Y1 ,Y2 ,Y3 ,Y4 > のままにしたときのToのBDDを図16(b)に示す。このことから、本実施例のBDDの最小化によりサイズが6から4に減っていることがわかる。
このように本発明の手法は像計算ごとにその像計算に適した異なる変数順にするためBDDのサイズをコンパクトに保つことができる。一方、従来の動的変数順ではBDDがある程度大きくなってから変数順の入れ扱えを一度に行うため、サイズの大きなBDDの演算が必要になりさらに多くの時間を要する。
【0051】
これで2回目の像計算が終了し、前記図5のステップS4に移る。
Reachedとf(ベクトル)のBDDの変数順をToに合わせて<x,y3 ,y4 ,y1 ,y2 >としておく。
ステップS5で、次状態集合を現状態集合のBDDにしてから既到達状態集合に加える。すなわち、Reachedは次の(26)式となる。
【0052】
【数11】
【0053】
以下、同様にしてReachedが変わらなくなるまで、本発明の像計算を繰り返し行うことにより、全ての到達可能状態をコンパクトなBDDのまま計算することができる。
上記実施例では、次状態変数を位置Aにおいた場合と位置Bにおいた場合のBDDのサイズを比較して、サイズの小さい方の位置を選ぶ場合について説明したが、さらに複数の位置の候補を考え、それぞれの位置にしたときのToのうち、一番サイズが小さくなる位置を選択するようにしてもよい。
【0054】
また、次状態変数の位置決定法は、上記した方法の外に次のような方法を用いることができる。
▲1▼ f1 |FROMのBDDの一番根に近い変数ノードの直上の位置をYi の位置とする。ただし、他の次状態変数がすでにその位置に置かれている場合には、その位置を要求した変数の下に置く。
この方法を採用した場合、例えば、前記図12は、図17に示すようになる。同図に示すように、f1 |s の一番根に近い変数はxであるので、その直上をY1 の位置とすると、図4のステップS3.8後のToは同図(d)に示すようになる。
▲2▼ 前記したように、f1 |FROMのBDDの一番葉に近い変数ノードの直下の位置をYi の位置とする。ただし、他の次状態変数がすでにその位置に置かれている場合には、その位置を要求した変数の中で一番下に置く。
▲3▼ 直前に処理した次状態変数Yi-1 の直下におく。
【0055】
【発明の効果】
以上説明したように、本発明においては、次状態の変数が生成される時にその適切な位置を計算し、その位置に変数を生成することによりBDDの変数順の変更を行っているので、BDDの変数順の変更によるBDDの簡単化をより高速に行うことができる。また、変数順の入れ換えのスケジューリングが不要となる。
【図面の簡単な説明】
【図1】本発明の状態探索方法の原理説明図である。
【図2】本発明の状態探索装置の原理説明図である。
【図3】本発明の実施例のFSMの状態探索装置の構成図である。
【図4】本発明の実施例における像計算処理のフローチャートである。
【図5】本発明の実施例における像計算を利用した状態探索処理のフローチャートである。
【図6】1回目の像計算でのドントケア値を“ * ”としたときの状態遷移図である。
【図7】1回目の像計算のY1 に関するBDDを示す図である。
【図8】1回目の像計算のY2 に関するBDDを示す図である。
【図9】1回目の像計算のY3 に関するBDDを示す図である。
【図10】1回目の像計算のY4 に関するBDDを示す図である。
【図11】2回目の像計算でのドントケア値を“ * ”としたときの状態遷移図である。
【図12】2回目の像計算のY1 に関するBDDを示す図である。
【図13】2回目の像計算のY2 に関するBDDを示す図である。
【図14】2回目の像計算のY3 に関するBDDを示す図である。
【図15】2回目の像計算のY4 に関するBDDを示す図である。
【図16】2回目の像計算の結果のBDDを示す図である。
【図17】f1 |FROMの一番根に近い変数ノードの直上の位置をYi の位置とした場合のBDDを示す図である。
【図18】2分木決定グラフ(BDD)を説明する図である。
【図19】変数順によるBDDのサイズの変化を説明する図である。
【図20】BDDでの論理演算を説明する図である。
【図21】FSM Mの状態遷移表を示す図である。
【図22】FSM Mに対応する順序回路を示す図である。
【図23】Sと次状態関数fi を表すBDDに対して像計算を行う従来の手続きを示す図である。
【図24】従来の非明示的な状態探索の手続きを示す図である。
【符号の説明】
1 入力手段
2 像計算を行う手段
3 次状態の位置計算手段
4 変数順を合わせる手段
5 次状態集合を既到達状態集合に加える手段
6 出力手段
11 入出力装置
12 演算処理装置
13 記憶装置
20 バス
14 像計算を行うルーチン
15 次状態位置計算ルーチン
16 変数順を合わせるルーチン
17 次状態集合を既到達集合に追加するルーチン
Claims (4)
- 順序回路およびその抽象モデルである有限状態機械のある状態集合を表す二分決定グラフから、それらの次状態全てからなる次状態集合を表す二分決定グラフを生成するための像計算を行い、順序回路の状態探索処理を行う順序回路の状態探索装置であって、
次状態関数と、二分決定グラフの初期状態を入力する入力手段と、
前記入力手段による入力もしくは現状態集合が入力されたときに、次状態の変数の位置の候補を複数あげ、それぞれの位置にしたときの二分決定グラフのサイズを計算し、そのサイズが一番小さくなる位置を、次状態の変数の位置として決定する計算手段と、
前記計算手段により決定した位置に次状態の変数を生成しながら像計算を行う事により次状態集合を求める像計算手段と、
既に到達した全ての集合である既到達集合の二分決定グラフの変数順と、次状態集合関数の二分決定グラフの変数順を前記像計算手段にて求めた次状態集合の変数順に合わせる手段と、
前記像計算手段で求めた次状態集合を既到達状態集合に加え、その結果、既到達状態集合の値が変われば、次状態集合を現状態集合の入力として前記計算手段に入力する手段と、
を有することを特徴とする順序回路の状態探索装置。 - 順序回路およびその抽象モデルである有限状態機械のある状態集合を表す二分決定グラフから、それらの次状態全てからなる次状態集合を表す二分決定グラフを生成するための像計算を行い、順序回路の状態探索処理を行う順序回路の状態探索装置であって、
次状態関数と、二分決定グラフの初期状態を入力する入力手段と、
前記入力手段による入力もしくは現状態集合が入力されたとき、直前に導入した次状態変数の位置に隣接した位置を次状態の変数の位置として選択する計算手段と、
前記計算手段により選択した位置に次状態の変数を生成しながら像計算を行う事により次状態集合を求める像計算手段と、
既に到達した全ての集合である既到達集合の二分決定グラフの変数順と、次状態集合関数の二分決定グラフの変数順を前記像計算手段にて求めた次状態集合の変数順に合わせる手段と、
前記像計算ステップで求めた次状態集合を既到達状態集合に加え、その結果、既到達状態集合の値が変われば、次状態集合を現状態集合の入力として前記計算手段に入力する手段と、
を実行することを特徴とする順序回路の状態探索装置。 - 前記計算手段は、像計算毎に異なる変数順を決定することを特徴とする請求項1または請求項2の何れかに記載の順序回路の状態探索装置。
- 像計算手段は、現状態集合以外の部分を考慮しないようにすることにより次状態関数の二分決定グラフを簡単化した関数の二分決定グラフを用いて像計算を行うことを特徴とする請求項1または請求項2の何れかに記載の順序回路の状態探索装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22577098A JP3741544B2 (ja) | 1998-08-10 | 1998-08-10 | 順序回路の状態探索方法および装置並びに状態探索プログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22577098A JP3741544B2 (ja) | 1998-08-10 | 1998-08-10 | 順序回路の状態探索方法および装置並びに状態探索プログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000057123A JP2000057123A (ja) | 2000-02-25 |
JP3741544B2 true JP3741544B2 (ja) | 2006-02-01 |
Family
ID=16834533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22577098A Expired - Fee Related JP3741544B2 (ja) | 1998-08-10 | 1998-08-10 | 順序回路の状態探索方法および装置並びに状態探索プログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3741544B2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7693690B2 (en) * | 2005-08-09 | 2010-04-06 | Nec Laboratories America, Inc. | Disjunctive image computation for sequential systems |
CN102310901A (zh) * | 2010-07-09 | 2012-01-11 | 鸿富锦精密工业(深圳)有限公司 | 刹车预警装置及方法 |
US8645108B2 (en) * | 2010-08-17 | 2014-02-04 | Fujitsu Limited | Annotating binary decision diagrams representing sensor data |
US8572146B2 (en) * | 2010-08-17 | 2013-10-29 | Fujitsu Limited | Comparing data samples represented by characteristic functions |
JP5489938B2 (ja) * | 2010-09-30 | 2014-05-14 | 本田技研工業株式会社 | 電動二輪車の車両接近告知制御装置 |
JP2012096613A (ja) * | 2010-10-29 | 2012-05-24 | Honda Motor Co Ltd | 電動車両 |
JP5352573B2 (ja) * | 2010-12-22 | 2013-11-27 | 本田技研工業株式会社 | 電動車両 |
CN102975796B (zh) * | 2011-09-05 | 2014-08-06 | 光阳工业股份有限公司 | 车辆的车灯控制方法 |
CN102416988A (zh) * | 2011-10-27 | 2012-04-18 | 上海市七宝中学 | 一种自行车行车安全报警系统及报警方法 |
US20140351677A1 (en) * | 2011-12-09 | 2014-11-27 | Nec Corporation | Minimum cut set evaluation system, minimum cut set calculation method, and program |
CN102756786A (zh) * | 2012-06-21 | 2012-10-31 | 南京工业职业技术学院 | 一种力矩传感助力车 |
CN102975792A (zh) * | 2012-11-08 | 2013-03-20 | 哈尔滨维尔士科技发展有限公司 | 自行车防盗装置 |
CN103010390A (zh) * | 2012-12-31 | 2013-04-03 | 李美珍 | 智能自行车调速装置及其工作方法 |
-
1998
- 1998-08-10 JP JP22577098A patent/JP3741544B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000057123A (ja) | 2000-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Malik et al. | Logic verification using binary decision diagrams in a logic synthesis environment | |
Burch et al. | Symbolic model checking for sequential circuit verification | |
US5331568A (en) | Apparatus and method for determining sequential hardware equivalence | |
JP3741544B2 (ja) | 順序回路の状態探索方法および装置並びに状態探索プログラムを記録した記録媒体 | |
Hattori et al. | Quantum circuit optimization by changing the gate order for 2D nearest neighbor architectures | |
Harrison et al. | Passage time distributions in large Markov chains | |
JP3663067B2 (ja) | 論理装置の検証方法、検証装置及び記録媒体 | |
JPH11219378A (ja) | 分解及び分割によるハードウェアの検証並びに表現方法 | |
CN109685204B (zh) | 图像处理方法及装置、存储介质及电子设备 | |
CN102081544B (zh) | 应用程序生成系统和方法 | |
US5796621A (en) | Circuit delay abstraction tool | |
Remacle et al. | Transient Mesh Adaptation Using Conforming and Non Conforming Mesh Modifications. | |
Sahoo et al. | A partitioning methodology for BDD-based verification | |
JPH1063537A (ja) | プロパティ検証方法および装置 | |
Jacobi | A study of the application of binary decision diagrams in multilevel logic synthesis | |
Lopes et al. | Accelerating block coordinate descent methods with identification strategies | |
JP3600420B2 (ja) | 論理検証装置 | |
Klimowicz | Combined State Splitting and Merging for Implementation of Fast Finite State Machines in FPGA | |
Saifhashemi et al. | Reconditioning: Automatic power optimization of QDI circuits | |
Im et al. | Graph Partitioning Approach for Fast Quantum Circuit Simulation | |
JPH11259549A (ja) | 順序回路の到達可能状態計算装置 | |
Clark et al. | TDAG: Tree-based Directed Acyclic Graph Partitioning for Quantum Circuits | |
Akutsu et al. | Analyses and algorithms for predecessor and control problems for Boolean networks of bounded indegree | |
Sinha et al. | Sequential SPFDs | |
Hinsberger et al. | Approximative Representation of boolean Functions by size controllable ROBDD's |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050405 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050601 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050726 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050822 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20051004 |
|
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: 20051108 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051108 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081118 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091118 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101118 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101118 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111118 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111118 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121118 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121118 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131118 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |