説明

設計検証方法及びプログラム

【課題】 本発明の課題は、検証仕様に従った経路探索の結果を用いて、経路外のブロックの動作の抽象度を変更することにより高速にかつ適切にシミュレーションを行えるようにすること。
【解決手段】 上記課題は、コンピュータによって実行される設計検証方法であって、複数のブロックで構成される回路の検証に係る端子情報に基づいて、記憶部に格納されたネットリストを参照することによって、該ブロック間の接続関係に従って経路を探索し、前記ネットリスト内に記述される、前記探索された経路外のブロックの動作の抽象度を変更することを特徴とする設計検証方法により達成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、回路を検証する技術に関する。
【背景技術】
【0002】
従来より、設計した回路をシミュレーションすることによって、大規模回路の機能及び特性を検証している。シミュレーションにより検証することは、回路設計の段階で早期に不具合を抽出し、設計を見直すためには有効な手段であるが、その処理時間が課題となっていた。そのため、設計者は、このシミュレーションの時間増大の要因となる計算ポイントやノード数を削減するために、検証内容とその検証内容に関連するブロックなど自身の設計及び検証経験に基づいて、回路を構成する各ブロックに対するモデルの抽象度をマニュアルで変更してきた。
【0003】
このような状況において、回路ブロックのモデルの抽象度を変更する技術として、最上位の検証レベルのシミュレーション結果をもとに、検証対象の一部分だけを任意の検証レベルに詳細化すること、入力データの中の回路構成素子の中で機能記述に置換できるものを機能記述データベースから選択して置換すること、回路データベースに基づいて、半導体集積回路内の回路を解析して回路の抽象度のレベル切り替え時点を決定し、決定した時点に基づいて全回路シミュレーション又は必要でない部分をブラックボックス扱いとして必要な部分のみのシミュレーションを行うようにしたこと等が提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−348076号公報
【特許文献2】特開2004−158034号公報
【特許文献3】特開2005−37995号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
シミュレーションでは、検証内容に従って回路の動作を検証するが、その検証内容によって回路内を信号が伝播する経路(以下、単に「経路」という。)が異なっている。また、近年の回路の大規模化に伴って経路が複雑になっているのも事実である。
【0006】
上述した従来技術では、詳細化又は抽象度を変更する検証対象が予め決められているか、又は、シミュレーション可否の予測結果に基づいて等価な回路に変更して素子数を予め削減しておくことによって、シミュレーションによる処理負荷を軽減している。
【0007】
そのため、検証内容に従ってシミュレーションを実行した際の回路内の経路において、本来は抽象度の低いモデルで検証すべきブロックが抽象度の高いモデルで検証されてしまう、抽象度の高いモデルで検証すべきブロックを抽象度の低いモデルで検証してしまうと言った問題があった。
【課題を解決するための手段】
【0008】
開示の技術は、コンピュータによって実行される設計検証方法であって、複数のブロックで構成される回路の検証に係る端子情報に基づいて、記憶部に格納されたネットリストを参照することによって、該ブロック間の接続関係に従って経路を探索し、前記ネットリスト内に記述される、前記探索された経路外のブロックの動作の抽象度を変更することを特徴とする設計検証方法として構成される。
【0009】
また、上記課題を解決するための手段として、コンピュータに上記設計検証方法における手順を実行させるプログラム、そのプログラムを記録した記録媒体、及び設計検証装置とすることもできる。
【発明の効果】
【0010】
開示の技術では、回路の検証において、検証仕様に従った経路探索の結果を用いて、経路外のブロックの動作を、抽象度を上げたモデルに変更することにより、高速かつ適切なシミュレーションを実現することができる。
【図面の簡単な説明】
【0011】
【図1】設計検証装置のハードウェア構成を示す図である。
【図2】設計検証装置の機能構成例を示す図である。
【図3】設計検証装置で行われる全体処理の概要を説明するためのフローチャート図である。
【図4】図3のステップS10の経路探索処理を説明するためのフローチャート図である。
【図5】対象回路の構成例を示す図である。
【図6】実施例1に係る入力データ例を示す図である。
【図7】実施例1における抽象度選択処理を説明するためのフローチャート図(その1)である。
【図8】実施例1における抽象度選択処理を説明するためのフローチャート図(その2)である。
【図9】実施例1において変更されたブロックの抽象度を表現した構成図である。
【図10】実施例2に係る入力データ例を示す図である。
【図11】実施例2における抽象度選択処理を説明するためのフローチャート図(その1)である。
【図12】実施例2における抽象度選択処理を説明するためのフローチャート図(その2)である。
【図13】実施例2において変更されたブロックの抽象度を表現した構成図である。
【図14】実施例3に係る入力データ例を示す図である。
【図15】実施例3における抽象度選択処理を説明するためのフローチャート図である。
【図16】実施例3において変更されたブロックの抽象度を表現した構成図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態を図面に基づいて説明する。本実施の形態に係る設計検証装置は、検証仕様に従ったシミュレーションにおいて回路動作に係る信号が伝播する経路を、シミュレーション実行前に探索し、回路を構成する複数のブロックに関して、探索された経路内のブロック(以下、経路内ブロックと言う)と経路外のブロック(以下、経路外ブロックと言う)のいずれか、又は、経路内外のブロックの夫々に対応させて、ブロックのモデルを選択することにより、より高速なシミュレーションを実現すると共に、回路の検証を適切に行なうものである。
【0013】
本実施の形態に係る設計検証装置は、例えば、図1に示すようなハードウェア構成を有する。図1は、設計検証装置のハードウェア構成を示す図である。図1において、設計検証装置100は、コンピュータによって制御される装置であって、CPU(Central Processing Unit)11と、メモリユニット12と、表示ユニット13と、出力ユニット14と、入力ユニット15と、通信ユニット16と、記憶装置17と、ドライバ18とを有し、システムバスBに接続される。
【0014】
CPU11は、メモリユニット12に格納されたプログラムに従って設計検証装置100を制御する。メモリユニット12には、RAM(Random Access Memory)及びROM(Read-Only Memory)等が用いられ、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を格納する。また、メモリユニット12の一部の領域が、CPU11での処理に利用されるワークエリアとして割り付けられている。
【0015】
表示ユニット13は、CPU11の制御のもとに必要な各種情報を表示する。出力ユニット14は、プリンタ等を有し、利用者からの指示に応じて各種情報を出力するために用いられる。入力ユニット15は、マウス、キーボード等を有し、利用者が設計検証装置100が処理を行なうための必要な各種情報を入力するために用いられる。
【0016】
通信ユニット16は、例えばインターネット、LAN(Local Area Network)等に接続し、外部装置との間の通信制御をするための装置である。記憶装置17には、例えば、ハードディスクユニットが用いられ、各種処理を実行するプログラム等のデータを格納する。
【0017】
設計検証装置100によって行われる処理を実現するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体19によって設計検証装置100に提供される。即ち、プログラムが保存された記憶媒体19がドライバ18にセットされると、ドライバ18が記憶媒体19からプログラムを読み出し、その読み出されたプログラムがシステムバスBを介して記憶装置17にインストールされる。そして、プログラムが起動されると、記憶装置17にインストールされたプログラムに従ってCPU11がその処理を開始する。尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、CD−ROMの他に、DVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【0018】
また、設計検証装置100によって行われる処理を実現するプログラムが、通信ユニット16を介して外部装置から提供されてもよい。
【0019】
図2は、設計検証装置の機能構成例を示す図である。図2に示す設計検証装置100は、主に、抽象度選択部110と、シミュレーション部120と、記憶部40とを有する。
【0020】
抽象度選択部110と、シミュレーション部120とは、CPU11が対応するプログラムを実行することによって行われる処理によって実現される。
【0021】
記憶部40は、少なくともメモリユニット12又は記憶装置17で構成される。記憶部40は、メモリユニット12と記憶装置17とを有するようにしても良く、更に、コンピュータ読取可能な記憶媒体、設計検証装置100に着脱可能な可搬型記録媒体、通信ユニット16を介してアクセス可能な外部記憶装置を含んでもよい。
【0022】
記憶部40には、設計検証装置100によって行われる処理に係る、検証仕様データ41、ネットリスト42、経路内探索ツリー44、経路内ブロックリスト45、経路外ブロックリスト46、モデル一覧47、モデル選択ルール48、モデルデータベース49、変更後ネットリスト42−2、検証結果50などが格納される。
【0023】
検証仕様データ41は、設計された回路を検証する検証内容を示すデータである。検証仕様データ41には、入力端子、出力端子、検証項目、検証精度などが定義されている。入力端子と出力端子は、入力端子を識別する入力端子識別情報と出力端子を識別する出力端子識別情報によって夫々指定される。入力端子識別情報と出力端子識別情報とが端子情報に相当する。検証仕様データ41は、検証目的毎に作成されるため、記憶部40に複数存在してもよい。
【0024】
シミュレーション部120によって、検証仕様データ41に従ってシミュレーションが行われ、設計された回路が、検証仕様データ41で指定される入力端子から出力端子までの経路における検証項目に対して、検証精度のレベルで検証される。
【0025】
ネットリスト42は、回路を構成する複数のブロック間の接続関係を記述した接続情報と、ブロックのモデルの記述とを含むデータである。
【0026】
経路内探索ツリー44は、検証仕様データ41に基づいて抽象度選択部110によって行われる経路探索処理において生成されるデータである。経路内探索ツリー44は、検証仕様データ41とネットリスト42とを参照して探索された経路内の接続関係を表したデータである。
【0027】
経路内ブロックリスト45は、経路内探索ツリー44に含まれるブロックの一覧を示すデータであり、ブロックの識別情報(ブロック識別情報)で示される。
【0028】
経路外ブロックリスト46は、経路内ブロックリスト45とネットリスト42とを参照することによって、経路内ブロックリスト45に含まれない経路外のブロックの一覧を示すデータであり、ブロックの識別情報(ブロック識別情報)で示される。
【0029】
モデル一覧47は、抽象度の異なるモデルを、抽象度毎のモデル識別情報の一覧で示したデータである。
【0030】
モデル選択ルール48は、経路内ブロック又は/及び経路外ブロックに対する抽象度を指定し、モデルを選択する際のルールを示したデータである。
【0031】
モデルデータベース49は、回路を構成する各ブロックの抽象度に対応するモデルの実体(抽象度に対応するモデルの動作をハードウェア記述言語などによって記述した動作記述データ)を格納し管理するためのデータベースである。モデルデータベース49では、ブロック毎に検証精度に対応させて抽象度の異なる複数のモデルが管理される。ブロック毎に用意されたモデルの端子情報は同一であってもよい。
【0032】
抽象度の異なる複数のモデルには、詳細モデルと、簡易モデルとが含まれる。抽象度の低い詳細モデルとは、例えば、Verilog−Aによって、時変、非線形、過渡状態など、アナログを含めて表現したモデルである。抽象度の高い簡易モデルとは、Verilog−D又は端子情報のみのセルなどによって、時不変、線形状態を表現したモデルである。抽象度の異なる複数のモデルは、種々の検証仕様に対応して予め作成される動作記述データである。
【0033】
変更後ネットリスト42−2は、抽象度選択部110によって、検証仕様データ41で指定される検証項目と検証精度とに対応するモデルを用いてネットリスト42が変更された後のネットリストである。
【0034】
検証結果50は、シミュレーション部120が変更後ネットリスト42−2を用いて、回路の動作をシミュレーションした結果を示すデータである。
【0035】
抽象度選択部110は、記憶部40に格納されている、設計された回路を検証する検証内容を示す検証仕様データ41で指定される入力端子から出力端子までの経路を探索し、経路内ブロック又は/及び経路外ブロックの抽象度を選択する処理部であり、更に、経路探索処理部112と、ブロック分類処理部113と、モデル選択処理部114とを有する。
【0036】
経路探索処理部112は、ネットリスト42を参照して、検証仕様データ41で指定される入力端子から出力端子までの経路を探索して、経路内探索ツリー44を生成する処理部である。生成された経路内探索ツリー44は、記憶部40に格納される。検証仕様データ41で指定される入力端子から出力端子までの経路が探索されることによって、検証内容に関わるブロックの選別を行うことが可能となる。
【0037】
経路探索処理部112によって行われる経路探索処理は、例えば、入力端子からすべての経路を探索し、その際、一度通ったブロックからの探索は終了させる。このようにして得られた探索結果から出力端子を指定することで入出力間の経路を確定すること可能となる。
【0038】
ブロック分類処理部113は、経路内探索ツリー44、更にネットリスト42を参照することによって、回路を構成する複数のブロックを、検証仕様データ41に基づく経路内のブロックと経路外のブロックとに分類する処理部である。
【0039】
ブロック分類処理部113は、経路内探索ツリー44を参照することによって、経路内ブロックの識別情報を一覧にした経路内ブロックリスト45を生成する処理部である。生成された経路内ブロックリスト45は、記憶部40に格納される。
【0040】
また、ブロック分類処理部113は、経路内ブロックリスト45とネットリスト42とを用いて、経路外ブロックリスト46を生成する処理部である。生成された経路外ブロックリスト46は、記憶部40に格納される。
【0041】
モデル選択処理部114は、経路内ブロック又は/及び経路外ブロックの抽象度を選択する処理部である。モデル選択処理部114は、経路内ブロック又は/及び経路外ブロックに対して、モデル選択ルール48に従った抽象度に対応するモデルで、ネットリスト42内の該当するモデルを変更して変更後ネットリスト42−2を生成する。生成された変更後ネットリスト42−2は、記憶部40に格納される。
【0042】
モデル選択処理部114は、経路外ブロックに対しては、動作を記述したモデルを抽象度の高い簡易モデル(又は、ブロックの削除)によって変更する。経路内ブロックに対しては、動作を記述したモデルを抽象度の低い詳細モデルによって変更する。
【0043】
変更例として、検証項目に、時間不変、又は、過渡状態を見ない場合は簡易モデルへの変更が可能である。また、線形動作(入力に対して出力が一様である場合)は簡易モデルへの変更が可能である。
【0044】
シミュレーション部120は、記憶部40に格納されている変更後ネットリスト42−2を用いて、回路の動作を検証する。シミュレーションによる検証結果50が生成され、記憶部40に格納される。抽象度選択部110がネットリスト42を変更しなかった場合、つまり、変更後ネットリスト42−2が生成されなかった場合、シミュレーション部120は、ネットリスト42を用いてシミュレーションを実行する。
【0045】
図3は、設計検証装置で行われる全体処理の概要を説明するためのフローチャート図である。図3において、ステップS10からS30が、抽象度選択部110によって行われる抽象度選択処理P10aである。経路探索処理部112は、記憶部40に格納されている検証仕様データ41とネットリスト42とを用いて経路探索処理を行う(ステップS10)。
【0046】
検証仕様データ41は、検証する目的に対応した検証内容毎に予め作成されるため、検証内容が複数の場合、夫々に対応させた検証仕様データ41が複数存在することになる。このような場合、ユーザ(例えば、回路設計者)によって指定された検証仕様データ41を用いて、経路探索処理が行われる。
【0047】
ステップS10の経路探索処理によって、経路内探索ツリー44が生成され、記憶部40に格納される。
【0048】
次に、ブロック分類処理部113は、記憶部40に格納されている経路内探索ツリー44とネットリスト42とを用いて、回路を構成するブロックを経路内ブロックと経路外ブロックとに分類するブロック分類処理を行う(ステップS20)。
【0049】
ステップS20において、ブロック分類処理部113は、経路内探索ツリー44からブロック識別情報を抽出して、経路内ブロックの一覧を示す経路内ブロックリスト45を生成し、記憶部40に格納する。また、ブロック分類処理部113は、経路内ブロックリスト45とネットリスト42とを用いて、経路内ブロックリスト45に含まれていないブロックの識別情報を抽出して、経路外ブロックの一覧を示す経路外ブロックリスト46を生成し、記憶部40に格納する。
【0050】
モデル選択処理部114は、経路内ブロック又は/及び経路外ブロックに対して、モデル一覧47から検証仕様データ41とモデル選択ルール48とに対応する抽象度に応じたモデル識別情報を取得し、そのモデル識別情報で特定される動作記述データをモデルデータベース49から取得して、ネットリスト42を変更する(ステップS30)。ネットリスト42を変更した変更後ネットリスト42−2が記憶部40に格納される。
【0051】
そして、シミュレーション部120によって、変更後ネットリスト42−2を用いてシミュレーションが実行される(ステップS30)。シミュレーションによる検証結果50が記憶部40に格納される。
【0052】
変更後ネットリスト42−2を用いたシミュレーションは、抽象度を変更していないネットリスト42を用いた場合よりも高速に回路の動作検証を行なうことができる。また、検証仕様データ41に対応する抽象度のモデルでシミュレーションが行われることにより、回路の動作が適切に検証された検証結果50を得ることができる。
【0053】
次に、抽象度選択処理P10aにおける上述したステップS10の経路探索処理について、図4で説明する。図4は、図3のステップS10の経路探索処理を説明するためのフローチャート図である。図4において、経路探索処理部112は、検証仕様データ41で指定される入力端子を探索起点に設定する(ステップS11)。
【0054】
経路探索処理部112は、ネットリスト42を参照して、探索起点からの接続情報が、出力端子に接続されることを示しているか否かを判断する(ステップS12)。出力端子に接続されることを示している場合、経路探索処理部112は、接続先の出力端子を経路内探索ツリー44に追加して(ステップS12−2)、ステップS13へと進む。経路内探索ツリー44には、接続元の入力端子との接続関係において、入力端子の入力端子識別情報に対して、接続先に出力端子の出力端子識別情報が追加される。
【0055】
一方、ステップS12において、出力端子に接続されることを示していない場合、探索起点からの接続情報が、ブロックに接続されていることを示しているか否かを判断する(ステップS13)。接続情報において、接続先にブロックが示されていない場合、経路探索処理部112は、ステップS15へと進む。
【0056】
一方、ステップS13において、ブロックに接続されていることを示している場合、経路探索処理部112は、更に、ブロック(ブロック識別情報)が経路内探索ツリー44に存在するか否かを判断する(ステップS14)。存在する場合、経路探索処理部112は、経路内探索ツリー44に既に追加されているブロックに結線を付与して(ステップS14−2)、ステップS15へと進む。経路内探索ツリー44において、既に追加されているブロック識別情報に対応させて探索起点との接続関係を示す接続情報が追加される。
【0057】
ステップS14において、ブロック(ブロック識別情報)が経路内探索ツリー44に存在しない場合、経路探索処理部112は、接続先のブロック(ブロック識別情報)を経路内探索ツリー44に追加して(ステップS14−4)、ステップS15へと進む。
【0058】
経路探索処理部112は、経路内探索ツリー44において出力を探索していないブロックがあるか否かを判断する(ステップS15)。即ち、経路内探索ツリー44内に、接続情報が存在しないブロック識別情報が存在するか否かが判断される。
【0059】
ステップS15において、ブロックがあると判断した場合、経路探索処理部112は、ブロックの出力を探索起点に設定する(ステップS15−2)。経路探索処理部112は、ネットリスト42を参照することによって、出力を探索していないブロックから信号が出力される出力端子(つまり、出力端子識別情報)を取得し、その出力端子識別情報を探索起点に設定して(ステップS15−2)、ステップS12へ戻り、上述した同様の処理を繰り返す。
【0060】
一方、ブロックがないと判断した場合、経路探索処理部112は、検証仕様データ41で指定される出力端子が経路内探索ツリー44に存在するか否かを判断する(ステップS16)。存在する場合、経路探索処理部112は、探索成功をこの処理結果とし、経路探索処理を終了する。一方、存在しない場合、経路探索処理部112は、探索失敗をこの処理結果とし、経路探索処理を終了する。
【0061】
抽象度選択処理において、探索成功で経路探索処理が終了した場合、ブロック分類処理部113に処理が継続される。一方、探索失敗で経路探索処理が終了した場合、抽象度選択処理は終了し、例えば、経路探索が失敗したことが表示ユニット13に表示されることにより、設計者による回路設計の見直しが行われる。
【0062】
以下、上述したような経路探索処理によって得られた経路内探索ツリー44を用いて行われる抽象度選択処理の実施例について、図5に例示されるような対象回路を用いて詳述する。
【0063】
図5は、対象回路の構成例を示す図である。図5に例示される回路5は、入力端子IP、IM、A、B、及びINと、出力端子OUT1及びOUT2とを有する。IP、IM、A、B、及びINは、以下に説明される実施例にて入力端子識別情報として参照される。同様に、出力端子OUT1、及びOUT2は、以下に説明される実施例にて出力端子識別情報として参照される。
【0064】
また、回路5は、ブロック「blockA」、ブロック「blockB」、ブロック「blockC」、ブロック「blockD」、ブロック「blockE」で構成される。「」内はブロック識別情報である。回路5における接続関係は、ネットリスト42に含まれる接続情報によって記述される。
【0065】
以下、実施例毎に、抽象度選択部110での処理で使用される入力データと、処理フローとを例示する。
【0066】
[実施例1]
実施例1は、経路外ブロックの抽象度を最大レベルのモデルに変更する場合である。図6は、実施例1に係る入力データ例を示す図である。図6に例示されるように、ネットリスト42と、検証仕様データ41と、モデル選択ルール48aと、モデル一覧47と、モデルデータベース49とが、入力データとして設計検証装置100の抽象度選択部110に入力される。
【0067】
図6において、検証仕様データ41は、入力端子、出力端子、検証項目、検証精度などの項目を有する。この例では、入力端子IP、IM、A、及びBが指定され、出力端子OUT1が指定されている。従って、入力端子IP、IM、A、及びBの各々から出力端子OUT1までの経路が検証対象となる。また、検証項目は出力レベルの検証を目的としていることを示し、検証精度は低レベルで検証することを示している。
【0068】
ネットリスト42は、接続情報部43aと、モデル記述部43bとを含む。接続情報部43aでは、回路5を構成するブロック毎に接続関係を示す接続情報が定義されている。モデル記述部43bでは、ブロック毎の入出力を定義し、ブロックの動作をハードウェア記述言語などで表現した記述部である。
【0069】
図6に示す接続情報部43aにおいて、接続情報I0は、ブロック「blockA」に関して入力及び出力を定義している。ブロック「blockA」の入力及び出力がIP、IM、oaであることが指定されている。モジュール記述部43bにおける、ブロック「blockA」のモデル記述「Model blockA」より、入出力を定義した記述(in1 in2 out)に対応させることによって、入力端子IP及びIMがブロック「blockA」の入力であり、oaがブロック「blockA」の出力となる。モジュール記述部43bでは、ブロック「blockA」に関して更に、動作が「aaaaaa」部分にハードウェア記述言語などで記述される。以下、入出力を定義した記述部分を含まない「aaaaaa」部分を動作記述部と言う。他のブロックについても同様である。
【0070】
図6に例示されるモデル選択ルール48aは、経路探索処理の結果を用いて分類されたブロックに対して、経路外ブロックに対して、抽象度が最大レベルのモデルを使用することを、モデルを選択する際のルールとして規定している。
【0071】
モデル一覧47は、モデルデータベース49とモデル識別情報で関連付けされており、モデルデータベース49で管理されている(モデルデータベース49に存在する)動作記述データに関して、モデル毎に検証目的又は検証精度を示したデータである。
【0072】
この例では、モデル識別情報は、英字大文字でブロックを特定し、数字で同一ブロックに対する複数のモデルを識別する形式で示される。この形式に限定されるものではない。例えば、ブロック「blockA」に対して、モデルA1、A2、・・・などの複数のモデルが対応付けられている。モデルA1は「出力レベル用モデル」、モデルA2は「接続確認用モデル」などの検証目的に対応した動作記述データが、モデルデータベース49に存在することが示されている。
【0073】
他の例では、ブロック「blockD」に対して、モデルD1、D2、・・・などの複数のモデルが対応付けられている。モデルD1は「詳細モデル」、モデルD2は「簡易モデル」などの検証精度に対応した動作記述データが、モデルデータベース49に存在することが示されている。検証精度を示す「詳細モデル」は、最も抽象度が高いモデルであることを示し、「簡易モデル」は、最も抽象度が低いモデルであることを示す。
【0074】
図6に例示されるモデルデータベース49では、モデルA1には「a1a1a1」、モデルA2には「a2a2a2」、・・・、モデルD1には「d1d1d1」、モデルA2には「d2d2d2」、・・・などのように、モデル識別情報に対応させて、検証目的又は検証精度に対応する動作内容を表現したハードウェア記述言語などによる動作記述データが管理される。
【0075】
図7及び図8は、実施例1における抽象度選択処理を説明するためのフローチャート図である。図7において、経路探索処理部112は、ネットリスト42を参照して、検証仕様データ41で指定される入力端子から出力端子間の経路を探索する(ステップS61)。この経路探索によって、各入力端子IP、IM、A、及びBから出力端子OUT1までの経路が探索され、経路内探索ツリー44が生成される。実施例1では、ブロック「blockA」、ブロック「blockB」、及びブロック「blockC」が探索され、経路内探索ツリー44には、少なくとも、探索された各ブロックを識別するブロック識別情報と、ブロックの接続情報とを示す接続情報I0、I1、及びI2が格納される。ここでは、ネットリスト42のデータ例に対応させて接続情報I0、I1、及びI2で例示するが、このデータ形式に限定されるものではない。
【0076】
経路探索が終了すると、ブロック分類処理部113は、記憶部40に格納されている経路内探索ツリー44からブロック識別情報を抽出して、検証仕様データ41に基づく経路内の全ブロックをリスト化する(ステップS62)。検証仕様データ41に基づく経路内の全ブロックがリスト化された経路内ブロックリスト45が生成され記憶部40に格納される。実施例1における経路内ブロックリスト45では、ブロック識別情報「blockA」、「blockB」、及び「blockC」が記録される。
【0077】
更に、ブロック分類処理部113は、ネットリスト42から経路内ブロックリスト45に含まれていないブロック識別情報を抽出して、経路外の全ブロックをリスト化する(ステップS63)。検証仕様データ41に基づく経路外の全ブロックがリスト化された経路外ブロックリスト46が生成され記憶部40に格納される。実施例1における経路外ブロックリスト46では、ブロック識別情報「blockD」及び「blockE」が記録される。
【0078】
図8において、ブロック分類処理部113による検証仕様データ41に基づく経路内外のブロックの分類が終了すると、モデル選択処理部114は、モデル一覧47に経路外ブロックのモデルが存在するか否かを判断する(ステップS64)。
【0079】
実施例1の入力データ例では、ブロック識別情報内においてブロックに一意に与えられる英字大文字を含むモデル識別情報がモデル一覧47に存在するか否かで判断すればよい。経路外ブロックリスト46にリストされるブロック「blockD」の英字大文字「D」を含むモデル識別情報「D1」及び「D2」が、モデル一覧47に存在する。また、経路外ブロックリスト46にリストされるブロック「blockE」の英字大文字「E」を含むモデル識別情報「E1」及び「E2」が、モデル一覧47に存在する。この場合、経路外ブロックのモデルが存在すると判断し、モデル選択処理部114は、ステップS65へと進む。
【0080】
一方、ステップS64にて、経路外ブロックのモデルが存在しないと判断した場合、「抽象度変更無し」を抽象度選択処理における結果とし、この処理を終了する。この場合、シミュレーション部120は、ブロックの動作記述部が変更されていないネットリスト42を用いてシミュレーションを行う。
【0081】
この実施例1のように経路外ブロックのモデルが存在すると判断した場合、モデル選択処理部114は、更に、モデル選択ルール48aに適合するモデルが存在するか否かを判断する(ステップS65)。
【0082】
実施例1におけるモデル選択ルール48aの場合、モデル選択処理部114は、ステップS64で存在を確認したモデル(モデル識別情報「D1」、「D2」、「E1」、及び「E2」)に対して、ブロック毎に抽象度が最大となるモデルが存在するか否かを、モデル一覧47を参照して判断する。この例では、ブロック「blockD」に対してモデル「D2」、また、ブロック「blockE」に対してモデル「E2」が、モデル選択ルール48aに適合すると判断されて選択される。
【0083】
一方、ステップS65にて、適合するモデルが存在しないと判断した場合、「抽象度変更無し」を抽象度選択処理における結果とし、この処理を終了する。この場合、シミュレーション部120は、ブロックの動作記述部が変更されていないネットリスト42を用いてシミュレーションを行う。
【0084】
この実施例1のように適合するモデルを選択できた場合、モデル選択処理部114は、ネットリスト42の該当ブロックのモデル記述内の動作記述部を、選択した動作記述データで変更する(ステップS66)。
【0085】
実施例1では、ブロック「blockD」及び「blockE」に対してモデル「D2」及び「E2」が選択されている。従って、モデル選択処理部114は、ネットリスト42のモデル記述部43bにおいて、ブロック「blockD」のモデル記述2d内の動作記述部21d及びブロック「blockE」のモデル記述2e内の動作記述部21eを、モデルデータベース49で管理されるモデル「D2」の動作記述データ22d及びモデル「E2」の動作記述データ22eで夫々変更して変更後ネットリスト42a−2を生成し、記憶部40に格納する。動作記述部21dは「dddddd」から「d2d2d2」へと変更され、動作記述部21eは「eeeeee」から「e2e2e2」へと変更される。
【0086】
モデル選択処理部114によってネットリスト42が変更されたため、「抽象度変更有り」を抽象度選択処理における結果とし、この処理を終了する。この場合、シミュレーション部120は、ブロックの動作記述部が変更された変更後ネットリスト42a−2を用いてシミュレーションを行う。
【0087】
図7及び図8に示す実施例1における抽象度選択処理を実行することによって、図5に示す回路5は、変更後ネットリスト42a−2に基づいて図9のように表現される。図9は、実施例1において変更されたブロックの抽象度を表現した構成図である。図9において、実施例1における抽象度選択処理で、抽象度の最大レベルとなる動作記述データで変更されたブロック「blockD」及び「blockE」は点線で示される。また、抽象度が変更されなかったブロック「blockA」、「blockB」、及び「blockC」は実線で示される。
【0088】
上述したように、実施例1では、検証仕様データ41に基づいて経路外と判断されたブロックの動作記述部の抽象度を最大レベルに変更することによって、シミュレーションが実行された際には、回路5の動作の検証内容に直接影響のないブロックの動作を簡易化させることができ、検証処理を高速に行うことができる。また、経路内と判断されたブロックのモデルを簡易化してしまうことがないため、検証内容のターゲットとなる設計箇所に関して、適切な検証結果を得ることができる。
【0089】
[実施例2]
実施例2は、経路外ブロックを抽象度が最大レベルのモデルに変更すると共に、経路内ブロックを検証項目に応じたモデルに変更する場合である。図10は、実施例2に係る入力データ例を示す図である。図10に例示されるように、ネットリスト42と、検証仕様データ41と、モデル選択ルール48bと、モデル一覧47と、モデルデータベース49とが、入力データとして設計検証装置100の抽象度選択部110に入力される。
【0090】
図10において、検証仕様データ41、ネットリスト42、モデル一覧47、モデルデータベース49のデータ例は図9に示すデータ例と同様であるので、その説明を省略する。
【0091】
実施例2におけるモデル選択ルール48bは、経路外ブロックと経路内ブロックのモデルを規定したルールである。図10に例示されるモデル選択ルール48bによって、「経路外ブロックは、抽象度が最大レベルのモデルを使用する」及び「経路内ブロックは、検証項目に応じたモデルを使用する」ことを規定している。
【0092】
このような入力データに対して、図11及び図12で説明される実施例2における抽象度選択処理を実行することによって、ネットリスト42のモデル記述部43bにおいて、モデル記述2a内の動作記述部21a、モデル記述2d内の動作記述部21d、及び、モデル記述2e内の動作記述部21eが、モデルデータベース49の動作記述データ22a、動作記述データ22d、及び、動作記述データ22eに変更される。
【0093】
図11及び図12は、実施例2における抽象度選択処理を説明するためのフローチャート図である。図11において、ステップS71の経路探索処理部112による経路探索処理は、実施例1における図7に示す、ステップS61の経路探索処理に相当し、ステップS72及びS73のブロック分類処理部113によるブロック分類処理はステップS62及びS63のブロック分類処理に相当する。
【0094】
ブロック分類処理部113による検証仕様データ41に基づく経路内外のブロックの分類が終了すると、モデル選択処理部114は、モデル一覧47に経路外ブロックのモデルが存在するか否かを判断する(ステップS74)。判断方法は、実施例1における図8のステップS64と同様であるので、説明を省略する。
【0095】
ステップS74にて、経路外ブロックのモデルが存在しないと判断した場合、「抽象度変更無し」を抽象度選択処理における結果とし、この処理を終了する。この場合、シミュレーション部120は、ブロックの動作記述部が変更されていないネットリスト42を用いてシミュレーションを行う。
【0096】
一方、経路外ブロックのモデルが存在すると判断した場合、図12において、モデル選択処理部114は、更に、モデル選択ルール48bに適合するモデルが存在するか否かを判断する(ステップS75)。適合するモデルが存在しないと判断した場合、モデル選択処理部114は、ステップS77へと進む。
【0097】
実施例2におけるモデル選択ルール48bの場合、モデル選択処理部114は、ステップS74で存在を確認したモデル(モデル識別情報「D1」、「D2」、「E1」、及び「E2」)に対して、ブロック毎に抽象度が最大となるモデルが存在するか否かを、モデル一覧47を参照して判断する。この例では、ブロック「blockD」に対してモデル「D2」、また、ブロック「blockE」に対してモデル「E2」が、モデル選択ルール48bに適合すると判断されて選択される。そして、モデル選択処理部114は、ネットリスト42の該当ブロックのモデル記述内の動作記述部を、選択した動作記述データで変更する(ステップS76)。
【0098】
実施例2では、モデル選択処理部114は、ネットリスト42のモデル記述部43bにおいて、ブロック「blockD」のモデル記述2d内の動作記述部21d及びブロック「blockE」のモデル記述2e内の動作記述部21eを、モデルデータベース49で管理されるモデル「D2」の動作記述データ22d及びモデル「E2」の動作記述データ22eで夫々変更して変更後ネットリスト42a−2を生成し、記憶部40に格納する。動作記述部21dは「dddddd」から「d2d2d2」へと変更され、動作記述部21eは「eeeeee」から「e2e2e2」へと変更される。
【0099】
次に、モデル選択処理部114は、モデル一覧47に経路内ブロックのモデルが存在するか否かを判断する(ステップS77)。経路内ブロックリスト45にリストされるブロック「blockA」の英字大文字「A」を含むモデル識別情報「A1」及び「A2」がモデル一覧47に存在するため、モデル選択処理部114は、経路内ブロックのモデルが存在すると判断して、図12のステップS75へと進む。
【0100】
一方、ステップS77にて、経路外ブロックのモデルが存在しないと判断した場合、「経路内の抽象度変更無し」を抽象度選択処理における結果とし、この処理を終了する。この場合、シミュレーション部120は、変更後ネットリスト42b−2、又は、変更後ネットリスト42b−2が記憶部40に存在しない場合は、ブロックの動作記述部が変更されていないネットリスト42を用いてシミュレーションを行う。
【0101】
この実施例2のように経路内ブロックのモデルが存在すると判断した場合、モデル選択処理部114は、更に、モデル選択ルール48bに適合するモデルが存在するか否かを判断する(ステップS78)。
【0102】
実施例2におけるモデル選択ルール48bの場合、モデル選択処理部114は、ステップS74で存在を確認したモデル(モデル識別情報「A1」及び「A2」)に対して、ブロック毎に検証項目に応じたモデルが存在するか否かを、モデル一覧47を参照して判断する。検証仕様データ41で指定される検証項目「出力レベル」に基づいて、検証項目「出力レベル」に応じたモデルが存在するか否かが判断される。この例では、ブロック「blockA」に対してモデル「A1」が、モデル選択ルール48bに適合すると判断されて選択される。
【0103】
一方、ステップS78にて、適合するモデルが存在しないと判断した場合、「経路内の抽象度変更無し」を抽象度選択処理における結果とし、この処理を終了する。この場合、シミュレーション部120は、変更後ネットリスト42b−2、又は、変更後ネットリスト42b−2が記憶部40に存在しない場合は、ブロックの動作記述部が変更されていないネットリスト42を用いてシミュレーションを行う。
【0104】
この実施例2のように適合するモデルを選択できた場合、モデル選択処理部114は、ネットリスト42の該当ブロックのモデル記述内の動作記述部を、選択した動作記述データで変更する(ステップS79)。
【0105】
実施例2では、経路外ブロックにおいて、ブロック「blockD」及び「blockE」に対してモデル「D2」及び「E2」が選択され、経路内ブロックにおいて、ブロック「blockA」に対してモデル「A1」が選択されている。従って、モデル選択処理部114は、ネットリスト42のモデル記述部43bにおいて、ブロック「blockA」のモデル記述2a内の動作記述部21a、ブロック「blockD」のモデル記述2d内の動作記述部21d、及びブロック「blockE」のモデル記述2e内の動作記述部21eを、モデルデータベース49で管理されるモデル「D2」の動作記述データ22d及びモデル「E2」の動作記述データ22eで夫々変更して変更後ネットリスト42a−2を生成し、記憶部40に格納する。動作記述部21aは「aaaaaa」から「a1a1a1」へと変更され、動作記述部21dは「dddddd」から「d2d2d2」へと変更され、動作記述部21eは「eeeeee」から「e2e2e2」へと変更される。
【0106】
モデル選択処理部114によってネットリスト42が変更されたため、「抽象度変更有り」を抽象度選択処理における結果とし、この処理を終了する。この場合、シミュレーション部120は、ブロックの動作記述部が変更された変更後ネットリスト42b−2を用いてシミュレーションを行う。
【0107】
図11及び図12に示す実施例2における抽象度選択処理を実行することによって、図5に示す回路5は、変更後ネットリスト42b−2に基づいて図13のように表現される。図13は、実施例2において変更されたブロックの抽象度を表現した構成図である。図13において、実施例2における抽象度選択処理で、経路外ブロックにおいて、抽象度の最大レベルとなる動作記述データで変更されたブロック「blockD」及び「blockE」は点線で示される。また、経路内ブロックにおいて、検証項目「出力レベル」に対応する動作記述データで変更されたブロック「blockA」は点線で示される。一方、抽象度が変更されなかったブロック「blockB」、及び「blockC」は実線で示される。
【0108】
上述したように、実施例2では、検証仕様データ41に基づいて経路外と判断されたブロックの動作記述部の抽象度を最大レベルに変更することによって、シミュレーションが実行された際には、回路5の動作の検証内容に直接影響のないブロックの動作を簡易化させることができ、検証処理を高速に行うことができる。また、経路内と判断されたブロックに対して、検証項目に応じたモデルに変更することができるため、検証内容のターゲットとなる設計箇所に関して、検証項目に対する適切な検証結果を得ることができる。
【0109】
[実施例3]
実施例3は、経路外ブロックを削除する場合である。図14は、実施例3に係る入力データ例を示す図である。図14に例示されるように、ネットリスト42と、検証仕様データ41と、モデル選択ルール48cと、モデル一覧47と、モデルデータベース49とが、入力データとして設計検証装置100の抽象度選択部110に入力される。
【0110】
図14において、検証仕様データ41、ネットリスト42、モデル一覧47、モデルデータベース49のデータ例は図9に示すデータ例と同様であるので、その説明を省略する。
【0111】
実施例3におけるモデル選択ルール48cは、経路外ブロックと経路内ブロックのモデルを規定したルールである。図14に例示されるモデル選択ルール48cによって、「経路外ブロックは、ネットリストから削除する」ことを規定している。
【0112】
このような入力データに対して、図15で説明される実施例3における抽象度選択処理を実行することによって、ネットリスト42のモデル記述部43bにおいて、モデル記述2d及びモデル記述2eが削除される。
【0113】
図15は、実施例3における抽象度選択処理を説明するためのフローチャート図である。図15において、ステップS81の経路探索処理部112による経路探索処理は、実施例1における図7に示す、ステップS61の経路探索処理に相当し、ステップS82及びS83のブロック分類処理部113によるブロック分類処理はステップS62及びS63のブロック分類処理に相当する。
【0114】
ブロック分類処理部113による検証仕様データ41に基づく経路内外のブロックの分類が終了すると、モデル選択処理部114は、モデル選択ルール48cに従って、ネットリスト42内の経路外ブロックのモジュール記述と接続情報とを削除し、経路内ブロックの記述のみに変更する(ステップS84)。
【0115】
ステップS84において、モデル選択処理部114は、モデル選択ルール48に従って経路外ブロックをネットリスト42から削除するために、ステップS83で生成された経路外ブロックリスト46を参照することによりブロック識別情報「blockD」及び「blockE」を取得し、ネットリスト42から、ブロック識別情報「blockD」で特定される接続情報53及びモデル記述2dと、ブロック識別情報「blockE」で特定される接続情報54及びモデル記述2eとを削除した変更後ネットリスト42c−2を生成する。生成された変更後ネットリスト42c−2は記憶部40に格納される。
【0116】
図15に示す実施例3における抽象度選択処理を実行することによって、図5に示す回路5は、変更後ネットリスト42c−2に基づいて図16のように表現される。図16は、実施例3において変更されたブロックの抽象度を表現した構成図である。図16において、実施例3における抽象度選択処理で、経路外ブロックと判断されたブロック「blockD」及び「blockE」が、接続情報と共に削除された状態で示めされる。
【0117】
上述したように、実施例3では、検証仕様データ41に基づいて経路外と判断されたブロックのモデル記述及び接続情報を削除することによって、シミュレーションが実行された際には、回路5の動作の検証内容に直接影響のない領域を動作させないため、検証処理を高速に行うことができる。また、経路内と判断されたブロックのモデルを簡易化してしまうことがないため、検証内容のターゲットとなる設計箇所に関して、適切な検証結果を得ることができる。
【0118】
本実施の形態によれば、検証仕様データ41に従って回路内の経路探索をすることで、大規模回路であっても、経路外又は/及び経路内のブロックの抽象度の変更を漏れなく適切に行うことができる。
【0119】
また、モデル選択ルール48に従ってブロックのモデルの選択を行うため、ブロックの機能や特性の精度を向上させることができる。更に検証仕様データ41に参照することによって、検証項目に対応したモデルが選択されるため、特定の機能や特性に係る検証を精度よく効率的に行なうことができる。
【0120】
また、検証仕様データ41に従った経路探索に基づいて、少なくとも経路外ブロックのモデルの抽象度を高くすることによって、シミュレーション時間を短縮することができる。
【0121】
更に、検証漏れを無くし、シミュレーション時間を短縮できるため、設計工数を削減することができる。
【0122】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【0123】
以上の実施例1から3を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータによって実行される設計検証方法であって、
複数のブロックで構成される回路の検証に係る端子情報に基づいて、記憶部に格納されたネットリストを参照することによって、該ブロック間の接続関係に従って経路を探索し、
前記ネットリスト内に記述される、前記探索された経路外のブロックの動作の抽象度を変更する
ことを特徴とする設計検証方法。
(付記2)
前記記憶部に格納される、前記ブロックに関して、異なる検証精度に応じた抽象度で前記動作を記述したモデルが格納されているモデルデータベースを用いて、前記ネットリスト内の前記経路外のブロックの前記動作を、該抽象度を上げたモデルで変更することを特徴とする付記1記載の設計検証方法。
(付記3)
前記モデルデータベースは、同一ブロックに関して、検証目的別に対応する動作を記述した複数のモデルを更に格納し、
前記コンピュータは、更に、前記モデルデータベースを用いて、前記ネットリスト内に記述される、前記探索された経路内のブロックの動作を、前記検証の検証目的に対応する動作を記述したモデルで変更する
ことを特徴とする付記2記載の設計検証方法。
(付記4)
前記ネットリストから前記経路外のブロックの記述と接続情報とを削除することによって、該経路外のブロックの動作の抽象度を上げるように変更することを特徴とする付記1記載の設計検証方法。
(付記5)
前記コンピュータは、更に、前記探索された経路と、前記ネットリストとを参照することによって、前記複数のブロックを経路内又は経路外に分類する
ことを特徴とする付記1乃至4のいずれか一項に記載の設計検証方法。
(付記6)
前記探索された経路内のブロックをリストした経路内ブロックリストを作成して前記記憶部に格納し、
前記ネットリストを参照することによって、前記経路内ブロックリストに含まれていないブロックをリストした経路外ブロックリストを作成して前記記憶部に格納し、
前記記憶部に格納された前記経路外ブロックリストを参照することによって、前記ネットリスト内に記述される、前記探索された経路外のブロックの動作の抽象度を変更する
ことを特徴とする付記5記載の設計検証方法。
(付記7)
複数のブロックで構成される回路の検証に係る端子情報に基づいて、記憶部に格納されたネットリストを参照することによって、該ブロック間の接続関係に従って経路を探索し、
前記ネットリスト内に記述される、前記探索された経路外のブロックの動作の抽象度を変更する、
処理をコンピュータに実行させるプログラム。
(付記8)
回路を構成する複数のブロック間の接続関係と動作とを記述したネットリストを格納した記憶部と、
前記回路の検証に係る端子情報に基づいて、前記記憶部から前記ネットリストを参照することによって、前記複数のブロック間の前記接続関係に従って経路を探索し、
前記ネットリスト内に記述される、前記探索された経路外のブロックの前記動作の抽象度を変更する
ことを特徴とする設計検証装置。
【符号の説明】
【0124】
11 CPU
12 メモリユニット
13 表示ユニット
14 出力ユニット
15 入力ユニット
16 通信ユニット
17 記憶装置
18 ドライバ
19 記憶媒体
40 記憶部
41 検証仕様データ
42 ネットリスト
42−2、42a−2 変更後ネットリスト
42b−2、42c−2 変更後ネットリスト
44 経路内探索ツリー
45 経路内ブロックリスト
46 経路外ブロックリスト
47 モデル一覧
48 モデル選択ルール
49 モデルデータベース
50 検証結果
100 設計検証装置
110 抽象度選択部
112 経路探索処理部
113 ブロック分類処理部
114 モデル選択処理部

【特許請求の範囲】
【請求項1】
コンピュータによって実行される設計検証方法であって、
複数のブロックで構成される回路の検証に係る端子情報に基づいて、記憶部に格納されたネットリストを参照することによって、該ブロック間の接続関係に従って経路を探索し、
前記ネットリスト内に記述される、前記探索された経路外のブロックの動作の抽象度を変更する
ことを特徴とする設計検証方法。
【請求項2】
前記記憶部に格納される、前記ブロックに関して、異なる検証精度に応じた抽象度で前記動作を記述したモデルが格納されているモデルデータベースを用いて、前記ネットリスト内の前記経路外のブロックの前記動作を、該抽象度を上げたモデルで変更することを特徴とする請求項1記載の設計検証方法。
【請求項3】
前記モデルデータベースは、同一ブロックに関して、検証目的別に対応する動作を記述した複数のモデルを更に格納し、
前記コンピュータは、更に、前記モデルデータベースを用いて、前記ネットリスト内に記述される、前記探索された経路内のブロックの動作を、前記検証の検証目的に対応する動作を記述したモデルで変更する
ことを特徴とする請求項2記載の設計検証方法。
【請求項4】
前記ネットリストから前記経路外のブロックの記述と接続情報とを削除することによって、該経路外のブロックの動作の抽象度を上げるように変更することを特徴とする請求項1記載の設計検証方法。
【請求項5】
複数のブロックで構成される回路の検証に係る端子情報に基づいて、記憶部に格納されたネットリストを参照することによって、該ブロック間の接続関係に従って経路を探索し、
前記ネットリスト内に記述される、前記探索された経路外のブロックの動作の抽象度を変更する、
処理をコンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2013−3611(P2013−3611A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−130653(P2011−130653)
【出願日】平成23年6月10日(2011.6.10)
【出願人】(000005223)富士通株式会社 (25,993)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】