【文献】
藤田昌宏,SATアルゴリズムとその形式的検証への応用,情報処理学会研究報告,社団法人情報処理学会,2006年11月30日,Vol.2006,No.126,pp.103−108
【文献】
大森悠翔 外3名,テスト生成における決定ノードの有効性解析,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2007年 2月 2日,Vol.106,No.528,pp.37−42
(58)【調査した分野】(Int.Cl.,DB名)
前記同一の探索ポイントに対するバックトラック回数が所定の閾値を超えた場合、前記探索レベルより一つ手前の探索レベルにバックトラックするようバックトラック量を変更させることを特徴とする請求項1に記載の論理検証プログラム。
前記バックトラック量は、バックトラックにより戻った際のベースポイントを基準とするレンジを有し、バックトラック量が前記レンジから外れる度に新たなベースポイントとして設定されることを特徴とする請求項2に記載の論理検証プログラム。
バックトラック量の変更により、前記探索ポイントが初期の探索ポイントまで戻ったときには、前記変更したバックトラック量をリセットさせ、変数の探索順を変更したリスタートにより再探索をおこなわせることを特徴とする請求項1〜4のいずれか一つに記載の論理検証プログラム。
【背景技術】
【0002】
LSI等の半導体装置の論理検証には、充足可能性問題(SAT:SATisfiability Problem)ツールが用いられる。この充足可能性問題は、半導体素子(ゲート)を論理式に変換したCNF(Conjunctive Normal Form)論理式について、充足可能性問題判定ツール(SATソルバー)を用いて充足可能であるかを判定する。
【0003】
例えば、CNF論理式が(a+b)×(c+d)であるとする。+はor,×はand、()は一つの区画(クローズ)である。この論理式の変数a,c=1,b、d=0を割り当てると1(true)となり充足可能(論理式にバグがある)となる。SATソルバーは、論理式に変数を与え、充足可能(SAT)にできるか調べる。一方、CNF論理式が(a+b)×(a’+b)×(a+b’)×(a’+b’)の場合、どのような変数を割り当てても1にならない(0になる、false)こととなり充足不可能(UNSAT、論理式にバグがない)となる。このほか、複雑なCNF論理式になると、SATソルバーは変数の割り当てがあるかないかを処理タイムオーバ等で求めることができない場合(unknown)も生じる。
【0004】
このSATソルバーでは、複数の変数に値を設定して充足可能であるか調べるが、その処理中において、処理が行き止まりとなるコンフリクト(ある変数に値0を割り当てた結果、全体が0になる)が発生する場合がある。このコンフリクトに対しては、1.バックトラック、あるいは2.リスタートによる変数の探索が提案されている。
【0005】
1.バックトラックを使った探索では、各変数(例えばa〜g)に予め定めた順序(a〜gの順)で変数値(0)を定めて探索を開始し、変数gでコンフリクトが発生した場合、コンフリクト・アナリシス機能により、どの変数の組み合わせがコンフリクトするかラーンドクローズ(例えばa+d+g)を求める。そして、コンフリクティング・クローズが一つになるポイント(例えばd)に戻り(バックトラック)、戻ったポイントから新たに探索をおこなう。この際、a,b,cは前回の探索の値(0)を用い、dは前回の探索とは逆の値(1)を用い、e,fは任意の値を用いる。
【0006】
2.リスタートによる探索では、各変数(例えばa〜g)に予め定めた順序(a〜gの順)で変数値(0)を定め、変数gでコンフリクトが発生した場合、コンフリクト・アナリシス機能により、gから逆方向に戻り(バックトラック)、戻ったポイント(例えばd)から新たに探索をおこなう。この後、コンフリクトが発生し、その頻度が閾値を超えたとき、変数順を変更し(例えば、g〜a)、探索をやり直す(リスタート)。大規模な論理式の場合などにはバックトラックが頻発するため、最初からリスタートにより探索をやり直した方が早く解析できる場合がある。
【0007】
例えば、特許文献1には、上記1.バックトラックの手法が開示されている。特許文献2には、BDD(2分決定グラフ)とバックトラックとを組み合わせてバックトラック回数を減少させる手法が開示されている。特許文献3には、コンフリクト・ポジションを再順序付けするバックトラック手法が記載されている。
【発明を実施するための形態】
【0014】
(実施の形態)
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。
図1は、実施の形態にかかる論理検証の手法の説明図である。SATソルバーにより、論理式に変数を与え、充足可能であるか否かを判定する例について示してある。以下、論理検証内容を順に説明する。
【0015】
(1)論理式の複数の変数a〜gに対し、予め定めた順序で変数値を決める。図示の例では、変数a〜gの順とし、初期の探索ポイント(デシジョンレベル(探索レベル)0)から探索を開始する。
【0016】
(2)複数の変数a〜gに値0を設定し、変数a〜gの順に探索をおこなう。そして、判定が行き止まりとなるコンフリクトが生じたとする。図示の例では変数gによりコンフリクトが生じている。
【0017】
(3)SATソルバーのコンフリクト・アナリシス(解析)機能を用いてどの変数の組み合わせがコンフリクトするかラーンドクローズを求める。図示の例では、(a+d+g)であるとする。
【0018】
(4)どのクローズの組み合わせがコンフリクトしたか原因を解析し、この原因となる変数のポイントとリスタートとの間に探索ポイントを戻す。この際、実施の形態では、同じポイントにバックトラックを繰り返したとき、閾値以上の戻り回数となったとき、繰り返し戻ったポイントdの一つ前のポイントcにバックトラックするようにしている。
【0019】
(5)戻ったポイントから新たに探索(再探索)する。この際の値は、図示の例ではa,b=前回の探索で用いた値0、c=反転した値1、d,g=cの反転により、ラーンドクローズが成立する値に変更(1または0に変更)、e,f=任意の値とする。なお、コンフリクト・アナリシス機能により、バックトラックにより開始位置変数aの一つ前のポイント(a−1)まで戻った場合、充足不可能(UNSAT)と判定する。
【0020】
図2は、実施の形態にかかる論理検証のデシジョンツリーを示す図である。
図2は、充足可能性問題(SAT)のデシジョンツリーを示し、横軸は変数の組み合わせ、縦軸はデシジョンレベルである。この
図2を用いて
図1の処理の各設定内容を説明する。変数の数をNとしたとき、実施の形態によるバックトラック(B・T)はyまで戻る(既存のバックトラック手法ではxに戻る。x>y)。
【0021】
また、バックトラックレンジはRであり、例えば、R=5%に設定する。このRはバックトラックで戻った際のベースポイント(base)を基準とするレンジを有し、x=base±R%となる。このbaseについて、バックトラック量がレンジRから外れる度にベースポイント(base)Xは新たに設定される。初期設定のバックトラックレンジRは、バックトラック頻度が多発する、図中網線で示すソリューションなし空間201のバックトラックレンジを規定する。
【0022】
また、所定の処理周期当たりのコンフリクト回数(Confrict Frequency)が閾値(threshold)以上となると(Confrict Frequency≧threshold)yにバックトラックする。例えば、所定の処理周期1μsec当たりのコンフリクト回数が1回以上となると、所定のバックトラック量yを有してバックトラックする。
【0023】
このy=base+back
nで示される。バックトラック量を決める関数は、例えば、back
n=back
n+1とする(今回のバックトラック量を前回より1増やす)。このほか、等比数列としてもよい。
【0024】
上記のバックトラックによれば、
図2に示したコンフリクトが多く、バックトラック頻度が多発するソリューションなし(unknown)空間201を避けてバックトラックすることができる。これにより、ソリューションありの領域の探索を継続して、充足可能性問題を短時間で早く解決できるようになる。
【0025】
(論理検証装置のハードウェア構成)
図3−1は、論理検証装置のハードウェア構成の一例を示すブロック図である。
図3−1において、論理検証装置300は、CPU301と、Read‐Only Memory(ROM)302と、Random Access Memory(RAM)303と、を含む。また、半導体メモリやディスクドライブ等の記憶部304と、ディスプレイ308と、通信インターフェース(I/F)309と、キーボード310と、マウス311と、スキャナ312と、プリンタ313とを備えてもよい。これらCPU301〜プリンタ313はバス314によってそれぞれ接続されている。
【0026】
CPU301は、論理検証装置300の全体の制御を司る演算処理装置である。ROM302は、論理検証装置300の検証プログラムを記憶する不揮発性メモリである。RAM303は、CPU301による演算処理実行時のワークエリアとして使用される揮発性メモリである。記憶部304には、例えば、論理検証の検証結果などが格納される。
【0027】
通信インターフェース309は、ネットワーク315と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。具体的に、通信インターフェース309は、通信回線を通じてネットワーク315となるLocal Area Network(LAN)、Wide Area Network(WAN)、インターネットなどに接続され、ネットワーク315を介して他の装置に接続される。通信インターフェース309には、例えば、モデムやLANアダプタなどを採用することができる。
【0028】
ディスプレイ308は、論理検証処理のための設定画面や検証結果について、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などをデータ表示する装置である。ディスプレイ308には、例えば、Thin Film Transistor(TFT)液晶ディスプレイ、プラズマディスプレイ、有機ELディスプレイなどを採用することができる。
【0029】
上述した
図1および
図2を用いて説明した論理検証の機能は、
図3−1に記載のCPU301がROM302に格納された論理検証プログラムを実行処理して得ることができる。
【0030】
図3−2は、論理検証装置の機能ブロックを示す図である。CPU301が有する機能を示している。CPU301は、判定部351、解析部352、バックトラック設定部353、変数値設定部354の機能を含む。
【0031】
判定部351には、論理式が入力され、SATソルバーからなる判定部351によりSAT/UNSATの判定が出力される。解析部352は、SATソルバーのコンフリクト・アナリシス機能に相当する。判定部351においてコンフリクトが発生した場合、解析部352は、ラーンドクローズを求める。
【0032】
バックトラック設定部353は、コンフリクティング・クローズが一つになるポイントとリスタートとの間に探索ポイントを戻す。この際、バックトラック設定部353は、同一の探索ポイント(デシジョンレベル、探索レベル)に戻るバックトラック回数が所定の閾値を超えた場合には、さらに一つ前の探索ポイント(デシジョンレベル)に戻るようバックトラック量を設定(変更)する。変数値設定部354は、バックトラックした変数の値について、前回の探索で用いた値を反転させる。これら設定したバックトラック量と、反転した変数の値により、再度判定部351による戻ったポイントからの探索を継続させる。
【0033】
図4は、論理検証の処理手順を示すフローチャートである。
図3−1の論理検証装置300のCPU301が実行する各処理について説明する。図中、枠400で示す各処理が既存の処理に対して実施の形態により新たに追加した処理に相当する。
【0034】
はじめに、CPU301は、変数の値を決定する(ステップS401)。例えば、各変数のうち一つ(例えば変数a)の値を1に設定する。次に、充足可能性を判定する(ステップS402)。充足可能(SAT)であれば(ステップS402:Yes)、充足可能(SAT)と出力して処理を終了する。充足可能以外であれば(ステップS402:No)、論理式の全クローズの上記変数(変数a)の値を1に設定する(プロパゲート、ステップS403)。なお、この際、変数a’は反転であるため、0に設定される。
【0035】
次に、コンフリクト発生の有無を判断する(ステップS404)。例えば一つのクローズが0になると、論理式全てが0になり(false)、コンフリクトが発生したと判断し(ステップS404:Yes)、ステップS405に移行する。コンフリクトが発生しなければ(ステップS404:No)、ステップS401に戻る。ステップS405では、どの変数の組み合わせがコンフリクトの要因となったかを解析する(ステップS405)。
【0036】
そして、ステップS405の解析の結果により、コンフリクトの原因となる変数の値を逆の値(例えば1→0)に変更しても充足不可能(UNSAT)である場合には(ステップS406:Yes)、充足不可能(UNSAT)と出力して処理を終了する。
【0037】
一方、充足不可能(UNSAT)と判定できない場合は(ステップS406:No)、バックトラックをおこなう。この際、バックトラック量を予め設定したバックトラックレンジR(x=base±R%)の範囲内であるか判断する(ステップS407)。バックトラック量がバックトラックレンジRの範囲内であれば(ステップS407:Yes)、コンフリクト回数を閾値と比較する(ステップS408)。
【0038】
この結果、コンフリクト回数が閾値未満(Confrict Frequency<threshold)であれば(ステップS408:No)、既存のバックトラック手法によりデシジョンレベルXにバックトラックする(ステップS410)。この後、ステップS401の処理に戻る。
【0039】
ここで、実施の形態では、ステップS407において、バックトラック量がバックトラックレンジRの範囲外になると(ステップS407:No)、ベースポイント(base)をこの新たなレベルXに設定しなおす(ステップS409)。そしてステップS410に移行する。
【0040】
ステップS410では、解析の結果、探索したコンフリクトの原因となるコンフリクティング・クローズポイントにより、バックトラック時に該当する変数のデシジョンレベルXまで探索を戻し(ステップS410)、ステップS401の処理に戻る。
【0041】
さらに、実施の形態では、ステップS408において、コンフリクト回数が閾値以上(Confrict Frequency≧threshold)となれば(ステップS408:Yes)、ステップS411に移行し、新たなバックトラック手法により探索をおこなう。
【0042】
まず、バックトラック量yについて既存のバックトラック量xよりも多いy=base+back
nとする。例えば、上述したように、back
n=back
n+1とする。そして、今回のバックトラック量がデシジョンレベル0まで戻るものであるか(y=base+back
n≦0)判定する(ステップS411)。今回のバックトラック量がデシジョンレベル0まで戻らない場合は(ステップS411:No)、このレベルyにバックトラックする(ステップS412)。
【0043】
次に、ベースポイント(base)をyとし(ステップS413)、バックトラック量をback
nだけ増加させる(ステップS414)。例えば、新たなバックトラック量を前回よりさらに一つ増やす。
【0044】
そして、このバックトラックしたデシジョンレベルyの変数の値を反転させる(ステップS415)。
図1の例では、変数cを反転させる。そして、ステップS403に戻る。
【0045】
また、ステップS411において、今回のバックトラック量がデシジョンレベル0まで戻るものである場合には(ステップS411:Yes)、リスタートのための設定をおこなう。このため、上記設定したバックトラック量を規定するback
nの値をリセットする(ステップS416)。また、ステップS408において用いる閾値に余裕を持たせてもよい(例えば、所定の処理周期当たりのコンフリクト回数を当初の1μsec当たり1回の設定を10回に増加させる)。既存のバックトラック手法では、回数規定がないが実施の形態では、規定された回数に余裕を持たせるようにする。
【0046】
上述した
図4に示す手順に基づき、実施の形態のバックトラック手法について具体例を用いて説明する。
図5−1〜
図5−4、
図5−6、
図5−7は、実施の形態のバックトラック手法による探索例を示す図である。はじめに、
図5−1に示すように、(1)論理式の複数の変数a〜gに対し、予め定めた順序で変数値を決める。図示の例では、変数a〜gの順とする。(2)そして、複数の変数a〜gに値0を設定し、変数a〜gの順に探索をおこなったところ、変数gによりコンフリクトが発生した。
【0047】
次に、
図5−2に示すように、(3)SATソルバーのコンフリクト・アナリシス機能(解析部352)を用いてラーンドクローズを求め、コンフリクティング・クローズが一つになるポイントとリスタートとの間のポイントの変数eにバックトラックにより戻る。
図5−2に示す例では、変数eはベースポイント(base)となり、デシジョンレベルは4である。
【0048】
次に、
図5−3に示すように、変数eの値を0→1に変更し、変数g,fについて探索したところ、(4)再度コンフリクトが発生したとする。バックトラックにより変数eの一つ前の変数dに戻る。この場合、バックトラックレンジRが1レベルのため、バックトラック量がバックトラックレンジR(x=base±R%)の範囲内となる(ステップS407:Yes)。また、コンフリクトの間に600ns経過したとする。コンフリクト回数はまだ閾値未満である。
【0049】
次に、
図5−4に示すように、変数dの値を0→1に変更し、探索順を変数g,eについて探索したところ、(5)またコンフリクトが発生したとする。この場合も、バックトラックレンジRが1レベルのため、バックトラック量がバックトラックレンジR(x=base±R%)の範囲内となる(ステップS407:Yes)。また、コンフリクトの間に500ns経過したとする。これにより、コンフリクト回数が閾値1μsecを超える(ステップS408:Yes)。
【0050】
図5−5は、既存のバックトラック手法の探索による問題を説明する図である。ここで、仮に、従来のバックトラック手法を使うと、
図5−5に示すように、(6)コンフリクトが多発し、バックトラックを繰り返す空間901(
図2のソリューションなしの空間201相当)に陥る。
【0051】
これに対し、実施の形態のバックトラック手法では、
図5−4の後、
図5−6に示すように、(7)所定のバックトラック量y=base+back
nを有する。この際、閾値判定後の初めての新バックトラックであるため、back
n=back
1となり、1+1=2となる。base=4であるため、y=4−2=2となり、デシジョンレベル2の変数cまでバックトラックにより戻ることになる。
【0052】
この後、
図5−7に示すように、(8)変数cの値を1(true)に変更したことで、変数a=0、b=0、c=1、d=0、e=0、f=0、g=0というソリューション(充足可能:SAT)を短時間で見つけることができるようになる。これにより、バックトラックを繰り返す空間901(
図2のソリューションなしの空間201相当)の探索を回避できる。加えて、既存の探索では後回しになっていた探索エリアを先に探索するため、充足可能性判定を効率的におこなえるようになる。
【0053】
以上説明した実施の形態によれば、コンフリクトの発生頻度が閾値を超えた場合には、複数回繰り返したポイント(デシジョンレベル)へのバックトラックよりも一つ前以上のポイントまでバックトラックするようにした。閾値は、所定の処理周期当たりのコンフリクト回数に基づき設定している。これにより、所定回数までは既存のバックトラックをおこなうが、コンフリクト回数(頻度)が多くなり、閾値を超えると、バックトラック量について、ソリューションなしの領域外まで戻るようバックトラック量を増加させる。
【0054】
したがって、ソリューションなしの領域の探索を無駄に継続することを避けることができるようになり、充足可能性判定処理にタイムオーバ等が生じず早く、かつ効率よくおこなえるようになる。また、バックトラックしたポイントの変数の値を逆数に変えて探索をおこなうことにより、充足可能性判定をより効率的におこなえるようになる。
【0055】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0056】
(付記1)コンピュータに、
半導体素子の論理式の入力に基づき、前記論理式の変数に所定の値を割り当てて充足可能性問題を判定させ、
前記判定の結果、コンフリクトが生じた場合に、前記コンフリクトの原因を解析させ、
前記解析に基づき、探索ポイントをコンフリクトが生じた探索レベルに戻して探索させるバックトラック量を設定させ、
同一の探索ポイントに対するバックトラック回数が所定の閾値を超えた場合、前記同一の探索ポイントより手前の前記探索レベルにバックトラックするようバックトラック量を変更させ、
変更後の前記バックトラック量により戻った前記探索レベルの探索ポイントから探索をおこなわせる、
処理を実行させることを特徴とする論理検証プログラム。
【0057】
(付記2)前記同一の探索ポイントに対するバックトラック回数が所定の閾値を超えた場合、前記探索レベルより一つ手前の探索レベルにバックトラックするようバックトラック量を変更させることを特徴とする付記1に記載の論理検証プログラム。
【0058】
(付記3)前記バックトラック量は、バックトラックにより戻った際のベースポイントを基準とするレンジを有し、バックトラック量が前記レンジから外れる度に新たなベースポイントとして設定されることを特徴とする付記2に記載の論理検証プログラム。
【0059】
(付記4)変更後の前記バックトラック量により戻った前記探索レベルの前記変数の値を前回の値の逆数に変更し、
前記判定をおこなわせることを特徴とする付記1〜3のいずれか一つに記載の論理検証プログラム。
【0060】
(付記5)バックトラック量の変更により、前記探索ポイントが初期の探索ポイントまで戻ったときには、前記変更したバックトラック量をリセットさせ、変数の探索順を変更したリスタートにより再探索をおこなわせることを特徴とする付記1〜4のいずれか一つに記載の論理検証プログラム。
【0061】
(付記6)バックトラック量の変更により、前記探索ポイントが初期の探索ポイントまで戻ったときには、前記閾値を緩め、変数の探索順を変更したリスタートにより再探索をおこなわせることを特徴とする付記1〜4のいずれか一つに記載の論理検証プログラム。
【0062】
(付記7)前記閾値は、所定の処理周期当たりのコンフリクト回数に基づき設定されることを特徴とする付記1〜6のいずれか一つに記載の論理検証プログラム。
【0063】
(付記8)コンピュータを用いて論理検証を行う方法であって、
前記コンピュータが有するプロセッサが、
半導体素子の論理式の入力に基づき、前記論理式の変数に所定の値を割り当てて充足可能性問題を判定し、
前記判定の結果、コンフリクトが生じた場合に、前記コンフリクトの原因を解析し、
前記解析に基づき、探索ポイントをコンフリクトが生じた探索レベルに戻して探索するバックトラック量を設定し、
同一の探索ポイントに対するバックトラック回数が所定の閾値を超えた場合、前記同一の探索ポイントより手前の前記探索レベルにバックトラックするようバックトラック量を変更し、
変更後の前記バックトラック量により戻った前記探索レベルの探索ポイントから探索をおこなう、
処理を実行することを特徴とする論理検証方法。
【0064】
(付記9)半導体素子の論理式の入力に基づき、前記論理式の変数に所定の値を割り当てて充足可能性問題を判定する判定部と、
前記判定の結果、コンフリクトが生じた場合に、前記コンフリクトの原因を解析する解析部と、
前記解析に基づき、探索ポイントをコンフリクトが生じた探索レベルに戻して探索させるバックトラック量を設定するバックトラック設定部とを有し、
前記判定部は、同一の探索ポイントに対するバックトラック回数が所定の閾値を超えた場合、前記同一の探索ポイントより手前の前記探索レベルにバックトラックするようバックトラック量を変更し、変更後の前記バックトラック量により戻った前記探索レベルの探索ポイントから探索をおこなうことを特徴とする論理検証装置。