(57)【要約】【課題】  アンタイムド動作モデルと実装された論理回路間のデータの入出力回路を自動作成し、ＬＳＩの論理動作の検証時間を削減可能なシミュレーション方法を提供する。【解決手段】  ハードウェアにより実現する論理動作を実行するために、実装部が、書き換え可能な半導体装置に実装可能な論理回路データを作成するステップと、ソフトウェアにより実現する論理動作のうち入出力動作を実行するために、実装部が、半導体装置に実装可能な入出力回路データを作成するステップと、検証部が、論理回路データに基づき半導体装置に実装された論理回路、入出力回路データに基づき半導体装置に実装された入出力回路、及びソフトウェアにより実現する論理動作を実行する時間設定記述のないアンタイムド動作モデルを用いて、半導体集積回路の論理動作を検証するステップとを含む。【選択図】      図１
2006048525.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の論理動作をソフトウェアにより実現する論理動作とハードウェアにより実現する論理動作に分割して、前記半導体集積回路の論理動作を検証するコンピュータを用いたシミュレーション方法であって、
前記ハードウェアにより実現する論理動作を実行するために、実装部が、書き換え可能な半導体装置に実装可能な論理回路データを作成するステップと、
前記ソフトウェアにより実現する論理動作のうち入出力動作を実行するために、前記実装部が、前記半導体装置に実装可能な入出力回路データを作成するステップと、
検証部が、前記論理回路データに基づき前記半導体装置に実装された論理回路、前記入出力回路データに基づき前記半導体装置に実装された入出力回路、及び前記ソフトウェアにより実現する論理動作を実行する時間設定記述のないアンタイムド動作モデルを用いて、前記半導体集積回路の論理動作を検証するステップ
とを含むことを特徴とするシミュレーション方法。
【請求項２】
前記検証部が、前記論理回路と、前記ソフトウェアにより実現する論理動作を実行する、時間設定記述のあるタイムド動作モデルを使用して、前記半導体集積回路の論理動作を検証するステップを更に含むことを特徴とする請求項１に記載のシミュレーション方法。
【請求項３】
前記入出力回路の実装は、制約記憶領域に格納された制約条件に基づいて行うことを特徴とする請求項１又は２に記載のシミュレーション方法。
【請求項４】
前記制約条件は、現在の状態と入力信号の値によって次の状態と出力信号の値が決まるステートマシンの数であることを特徴とする請求項３に記載のシミュレーション方法。
【請求項５】
呼び出し記述生成部が、前記アンタイムド動作モデルから前記入出力動作を呼び出す呼び出し関数記述を、前記入出力動作の記述に基づき生成するステップを更に備えることを特徴とする請求項１乃至３のいずれか１項に記載のシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の論理動作検証方法に係り、特に半導体集積回路の論理動作をハードウェアにより実現する論理動作とソフトウェアで実現する論理動作に分割して、論理動作を検証するシミュレーション方法に関する。
【背景技術】
【０００２】
大規模化・複雑化する半導体集積回路（ＬＳＩ）の設計において、ＬＳＩの論理動作を検証する時間が増大している。又、論理動作検証の信頼性を改善するために、検証の高速化、設計上流での検証、及び実機や機能ブロック等の設計資産（ＩＰ）を使用した検証等が必要になっている。
【０００３】
そのため、高速な解析が可能で、設計の初期段階での論理動作の検証ができる抽象度の高い動作モデルを用いて、ＬＳＩの論理動作をシミュレーションする方法が提案されている（例えば、特許文献１参照。）。特許文献１で開示された方法では、ＬＳＩの論理動作をハードウェアにより実現する論理動作とソフトウェアで実現する論理動作に分割する。次に、ハードウェアにより実現する論理動作を抽象度の高い動作モデルで記述する。そして、抽象度の高い動作モデルを用いて論理動作を検証する。
【０００４】
更に、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）等の書き換え可能な半導体装置を用いた論理動作のシミュレーションが、論理動作検証方法として使用される場合が増えている。即ち、ハードウェアにより実現するＬＳＩの論理動作を実行する論理回路をＦＰＧＡに実装（インプリメント）する。又、ソフトウェアにより実現する論理動作を、Ｃ／Ｃ＋＋言語等を用いて記述し、動作モデルを作成する。その後、動作モデルの論理動作を実行するシミュレーション装置と、論理回路を実装したＦＰＧＡを搭載した回路ボードとを電気的に接続し、ＬＳＩの論理動作がシミュレーションされる。Ｃ／Ｃ＋＋言語等を用いて記述された動作モデルと、ＦＰＧＡに実装された論理回路とを用いる論理動作のシミュレーションを、以下において「協調シミュレーション」という。ＦＰＧＡを使用して論理動作のシミュレーションを行うことにより、実際の部品を使用した場合に発生する不具合を早い段階で検出することができる。協調シミュレーションの方法として、次に示す２つの方法がある。
【０００５】
（１）ソフトウェアにより実現する論理動作を、動作クロックに同期して動作する動作モデルとして記述する。そして、動作モデルの動作クロックとＦＰＧＡに実装した論理回路の動作クロックを同期させて、動作モデルと論理回路間でデータ転送しながら、協調シミュレーションを行う。
【０００６】
（２）ソフトウェアにより実現する論理動作を、動作クロックに制御されない動作モデルとして記述する。又、動作モデルと論理回路間のデータの受け渡しを行う入出力回路を、ＦＰＧＡに実装する。そして、動作モデル、論理回路及びデータの受け渡しを行う入出力回路を使用して、協調シミュレーションを行う。
【０００７】
（１）の方法では、入出力回路の作成が不要であるため、協調シミュレーションを開始するまでの手間がかからない。しかし、動作モデルの動作クロック速度の制限により協調シミュレーションの実行速度が遅い。一方、（２）の方法では、協調シミュレーションの実行速度は速い。しかし、入出力回路を作成するという手間がかかる。
【特許文献１】特開２００４−１３２２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、動作モデルと実装された論理回路間のデータの入出力回路を自動作成し、ＬＳＩの論理動作の検証時間を削減可能なシミュレーション方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の特徴は、半導体集積回路システム全体の論理動作をソフトウェアにより実現する論理動作とハードウェアにより実現する論理動作に分割して、半導体集積回路の論理動作を検証するコンピュータを用いたシミュレーション方法であって、（イ）ハードウェアにより実現する論理動作を実行するために、実装部が、書き換え可能な半導体装置に実装可能な論理回路データを作成するステップと、（ロ）ソフトウェアにより実現する論理動作のうち入出力動作を実行するために、実装部が、半導体装置に実装可能な入出力回路データを作成するステップと、（ハ）検証部が、論理回路データに基づき半導体装置に実装された論理回路、入出力回路データに基づき半導体装置に実装された入出力回路、及びソフトウェアにより実現する論理動作を実行する時間設定記述のないアンタイムド動作モデルを用いて、半導体集積回路の論理動作を検証するステップとを含むシミュレーション方法であることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、動作モデルと実装された論理回路間のデータの入出力回路を自動作成し、ＬＳＩの論理動作の検証時間を削減可能なシミュレーション方法を提供することができる。
【発明を実施するための最良の形態】
【００１１】
次に、図面を参照して、本発明の第１及び第２の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。
【００１２】
また、以下に示す第１及び第２の実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１３】
図１に示す本発明の第１の実施の形態に係るシミュレーション方法は、ＬＳＩシステム全体の論理動作をソフトウェアにより実現する論理動作とハードウェアにより実現する論理動作に分割して、論理動作を検証するシミュレーション方法である。図１に示すシミュレーション方法は、例えば図２に示すような論理動作検証システムによって実行することが可能である。そのため、図２を先に説明する。図２に示す論理動作検証システムは、解析装置１ａと回路ボード２を備える。回路ボード２には、ＦＰＧＡ３、及びＦＰＧＡ３を動作させるために必要な電源回路等の図示を省略する周辺回路や、回路ボード２と解析装置１ａを接続するための図示を省略するコネクタ等が搭載される。解析装置１ａと回路ボード２は、例えばペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）等のバス４により接続される。バス４を介して解析装置１ａと回路ボード２間でデータが転送される。
【００１４】
解析装置１ａは、図３に示すように、中央演算処理装置（ＣＰＵ）１０、記憶装置２０、入力装置５０、出力装置６０を備える。又、ＣＰＵ１０は、検証部１１０、分割部１２０、動作記述作成部１３０、アンタイムド動作モデル作成部１５０、実装部１６０、抽出部１７０を備える。
【００１５】
検証部１１０は、論理動作のシミュレーションを行い、更にシミュレーションの結果を検証する。分割部１２０は、論理動作をソフトウェアにより実現する論理動作とハードウェアにより実現する論理動作に分割する。動作記述作成部１３０は、動作記述ファイルを作成する。アンタイムド動作モデル作成部１５０は、時間設定記述のないアンタイムド動作モデルを作成する。実装部１６０は、動作記述された論理動作を実行する、ＦＰＧＡ３に実装可能な回路データを作成する。ＦＰＧＡ３に実装可能な回路データは、例えばゲートレベルの回路モデル等である。抽出部１７０は、論理動作をソフトウェアにより実現する論理動作から、トランザクション関数を抽出する。
【００１６】
又、実装部１６０は、ＣＤＦＧ抽出部１６１、スケジューリング・アロケーション部１６２、ＲＴＬ作成部１６３、論理合成部１６４を備える。ＣＤＦＧ抽出部１６１は、動作記述に記述された演算の実行やデータ参照の順序を設定して、コントロールデータフローグラフ（ＣＤＦＧ）を抽出する。スケジューリング・アロケーション部１６２は、動作記述ファイルに記述された演算に、ハードウェアのリソース及び実行するクロックサイクルの割り当てを設定する「スケジューリング・アロケーション」を行う。ＲＴＬ作成部１６３は、レジスタ・トランスファ言語（ＲＴＬ）で記述されるＲＴＬモデルを作成する。論理合成部１６４は、ＲＴＬモデルに基づき、ゲートレベルの回路モデルを作成する。
【００１７】
記憶装置２０は、論理動作記憶領域２０１、解析結果記憶領域２０２、ソフトウェア記述記憶領域２０３、ハードウェア記述記憶領域２０４、動作記述記憶領域２０５、タイムド動作モデル記憶領域２０６、アンタイムド動作モデル記憶領域２０７、ラッパー記述記憶領域２０８、関数記憶領域２０９、ＣＤＦＧ記憶領域２１１、制約記憶領域２１２、アロケーション記憶領域２１３、ＲＴＬ記憶領域２１４を備える。
【００１８】
論理動作記憶領域２０１には、論理動作を記述したファイルが格納される。解析結果記憶領域２０２には、論理動作のシミュレーション結果が格納される。ソフトウェア記述記憶領域２０３には、ソフトウェアにより実現する論理動作が記述されたファイルが格納される。ハードウェア記述記憶領域２０４には、ハードウェアにより実現する論理動作が記述されたファイルが格納される。動作記述記憶領域２０５には、動作記述ファイルが格納される。タイムド動作モデル記憶領域２０６には、タイムド動作モデルが格納される。アンタイムド動作モデル記憶領域２０７には、アンタイムド動作モデルが格納される。ラッパー記述記憶領域２０８には、ラッパー記述を記述したラッパーファイルが格納される。関数記憶領域２０９には、トランザクション関数が格納される。ＣＤＦＧ記憶領域２１１には、ＣＤＦＧが格納される。制約記憶領域２１２には、動作合成の制約条件が格納される。アロケーション記憶領域２１３には、スケジューリング・アロケーションの結果が格納される。ＲＴＬ記憶領域２１４には、ＲＴＬモデルが格納される。
【００１９】
入力装置５０はキーボード、マウス、ライトペン又はフレキシブルディスク装置などで構成される。入力装置５０より論理動作の検証者は、入力する論理動作や制約条件を指定したり、設定することができる。又、出力装置６０としては、検証結果を表示するディスプレイやプリンタ、或いはコンピュータ読み取り可能な記録媒体に保存する記録装置等が使用可能である。ここで、「コンピュータ読み取り可能な記録媒体」とは、例えばコンピュータの外部メモリ装置、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどの電子データを記録することができるような媒体などを意味する。具体的には、フレキシブルディスク、ＣＤ−ＲＯＭ，ＭＯディスク、カセットテープ、オープンリールテープなどが「コンピュータ読み取り可能な記録媒体」に含まれる。
【００２０】
図１に示したシミュレーション方法を説明する前に、図２及び図３に示す論理動作検証システムを用いて、ＦＰＧＡ３に回路を実装する方法の例を、図４のフローチャートを用いて説明する。以下の例では、動作記述記憶領域２０５に格納された動作記述ファイルの記述に基づき、動作合成を行ってＲＴＬモデルを作成する。そして、ＲＴＬモデルからゲートレベルの回路モデルを作成する。
【００２１】
（イ）図４に示すステップＳ２０１において、図３に示すＣＤＦＧ抽出部１６１が、動作記述記憶領域２０５から動作記述ファイルを読み出す。そして、ＣＤＦＧ抽出部１６１は、動作記述ファイルの記述からＣＤＦＧを抽出する。抽出されたＣＤＦＧは、ＣＤＦＧ記憶領域２１１に格納される。
【００２２】
（ロ）ステップＳ２０２において、スケジューリング・アロケーション部１６２が、ＣＤＦＧ記憶領域２１１からＣＤＦＧを読み出す。そして、スケジューリング・アロケーション部１６２は、ＣＤＦＧに基づいて、スケジューリング・アロケーションを行う。ただし、スケジューリング・アロケーション部１６２は、制約記憶領域２１２に格納された利用可能なハードウェアのリソース数や種類等の制約条件に基づいて、スケジューリング・アロケーションを行う。スケジューリング・アロケーションの結果は、アロケーション記憶領域２１３に格納される。
【００２３】
（ハ）ステップＳ２０３において、ＲＴＬ作成部１６３が、アロケーション記憶領域２１３に格納されたアロケーション結果を読み出す。そして、ＲＴＬ作成部１６３は、マルチプレクサ等によりハードウェアのリソース間を接続し、データパスを完成する。次に、ＲＴＬ作成部１６３は、データパスを制御する信号を出力する制御回路を作成する。以上の処理によりＲＴＬモデルが作成される。作成されたＲＴＬモデルは、ＲＴＬ記憶領域２１４に格納される。
【００２４】
（ニ）ステップＳ２０４において、論理合成部１６４が、ＲＴＬ記憶領域２１４からＲＴＬモデルを読み出す。そして、論理合成部１６４は、ＲＴＬモデルに基づき、ＦＰＧＡ３に実装可能な回路データを作成する。
【００２５】
ステップＳ２０４において、論理合成部１６４がＲＴＬモデルをＦＰＧＡ３に実装可能な回路データを作成する方法としては、例えば、以下のような方法が採用可能である。ＲＴＬモデルに基づき、論理合成部１６４は、ゲートレベルの回路モデルを作成し、回路モデルの記述を所定のデータフォーマットに変換した回路データを作成する。更に論理合成部１６４は、作成した回路データを解析して、図２に示すＦＰＧＡ３に論理機能を設定するのに必要な論理機能設定データを生成する。生成した論理機能設定データをＦＰＧＡ３にロードすることにより、動作記述記憶領域２０５に格納された動作記述を実行する回路がＦＰＧＡ３に実装される。
【００２６】
一般に、論理動作をＣ＋＋言語を使ってハードウェア記述言語（ＨＤＬ）的なハードウェア動作も記述できるようにした言語で記述して検証する場合、論理動作を実現するモジュール内の論理動作が本体記述に記述される。更に、論理動作をＣ＋＋言語を使ってＨＤＬ的なハードウェア動作も記述できるようにした言語で論理動作を記述する場合、アルゴリズム記述の他に、そのアルゴリズムの正しさを検証するための試験記述を作成する。そして、アルゴリズム記述と試験記述に対してＣ／Ｃ＋＋コンパイラ等を使用してコンパイルを行い、論理動作を検証する。
【００２７】
以下に、図２及び図３に示す論理動作検証システムを用いて、図１に示したシミュレーション方法によって検証を行う例を説明する。以下の説明において、検証対象の論理動作としてアドバンスド・エンクリプション・スタンダード（ＡＥＳ）アルゴリズムが、論理動作をＣ＋＋言語を使ってＨＤＬ的なハードウェア動作も記述できるようにした言語で記述されている場合を例示的に説明する。ＡＥＳは米国の標準暗号方式である。
【００２８】
（イ）図１に示すステップＳ１０１において、例えば図５〜図７に示す論理動作を記述したファイルが、図３に示す入力装置５０を介して論理動作記憶領域２０１に格納される。図５は、ＡＥＳアルゴリズムの本体記述の例の一部である。図６は、図５の本体記述に対応するヘッダー記述の一部である。又、図７は、ＡＥＳアルゴリズムの試験を行う試験記述の例の一部である。
【００２９】
（ロ）ステップＳ１０２において、検証部１１０が、論理動作記憶領域２０１からＡＥＳアルゴリズム記述及び試験記述が記述された論理動作ファイルを読み出す。そして、検証部１１０は読み出した論理動作ファイルに基づき、論理動作のシミュレーションを行う。論理動作のシミュレーション結果は、解析結果記憶領域２０２に格納される。
【００３０】
（ハ）ステップＳ１０３において、検証部１１０が解析結果記憶領域２０２から論理動作のシミュレーション結果を読み出す。そして、検証部１１０は、論理動作のシミュレーション結果に基づき、論理動作が所望の回路動作を実行するかどうかを検証する。例えば、ＡＥＳアルゴリズムによって暗号化された結果を復号化し、元の入力データと一致したかどうか比較する。復号化したデータと元のデータが一致する場合は、ステップＳ１０４に進む。復号化したデータと元のデータが一致しない場合は、ステップＳ１２１に進み、アルゴリズムの論理動作の修正を行った後、ステップＳ１０２に戻る。
【００３１】
（ニ）ステップＳ１０４において、分割部１２０が、論理動作記憶領域２０１から論理動作ファイルを読み出す。そして、分割部１２０は、検証を行う論理動作をソフトウェアにより実現する論理動作とハードウェアにより実現する論理動作に分割する。検証を行う論理動作を、ソフトウェアにより実現する論理動作（以下において、「ソフトウェア・モジュールＳＭ１」という。）とハードウェアにより実現する論理動作（以下において、「ハードウェア・モジュールＨＭ１」という。）に分割した例を、図８に示す。ソフトウェア・モジュールＳＭ１の論理動作は、暗号化に使用するキー及び暗号化するデータのＨＭ１への出力、暗号化されたデータの復号化等である。一方、ハードウェア・モジュールＨＭ１の論理動作は、入力されたキーに基づく入力されたデータの暗号化等である。図８において、ポートＰＳ１〜ＰＳ１０はソフトウェア・モジュールＳＭ１のポートである。一方、ポートＰＨ１〜ＰＨ１０はハードウェア・モジュールＨＭ１のポートである。ソフトウェア・モジュールＳＭ１とハードウェア・モジュールＨＭ１間で、ポートＰＳ１〜ＰＳ１０及びポートＰＨ１〜ＰＨ１０を介して複数のデータのやり取りが行われる。例えば、ｒｅｓｅｔ信号がソフトウェア・モジュールＳＭ１からポートＰＳ２を介して出力され、ポートＰＨ２を介してハードウェア・モジュールＨＭ１に入力される。又、ソフトウェア・モジュールＳＭ１からポートＰＳ７を介してキー及び暗号化されるデータが出力され、ポートＰＨ７を介してハードウェア・モジュールＨＭ１に入力される。又、ハードウェア・モジュールＨＭ１からポートＰＨ１０を介して暗号化データが出力され、ポートＰＳ１０を介してソフトウェア・モジュールＳＭ１に入力される。クロック信号ＣＬＫは、図示を省略するクロック発生回路からポートＰＳ１を介してソフトウェア・モジュールＳＭ１に入力され、同時にポートＰＨ１を介してハードウェア・モジュールＨＭ１に入力される。ソフトウェア・モジュールＳＭ１の論理動作を記述したソフトウェア・モジュール・ファイルが、ソフトウェア記述記憶領域２０３に格納される。又、ハードウェア・モジュールＨＭ１の論理動作を記述したハードウェア・モジュール・ファイルが、ハードウェア記述記憶領域２０４に格納される。
【００３２】
（ホ）ステップＳ１０５において、動作記述作成部１３０が、ハードウェア記述記憶領域２０４からハードウェア・モジュール・ファイルを読み出す。そして、動作記述作成部１３０は、ハードウェア・モジュール・ファイルに基づき、ハードウェア・モジュールＨＭ１の論理動作を記述した動作記述ファイルを作成する。作成された動作記述ファイルは、図８に示したソフトウェア・モジュールＳＭ１とのデータのやり取りを実行する入出力動作や、やり取りされるデータ通過する入出力端子等の記述を含む。ハードウェア・モジュールＨＭ１の動作記述には、ＨＤＬ等が使用可能である。動作記述ファイルを作成することにより、論理動作の抽象度は低くなり、より具体的なハードウェアを対象とした検証を行うことができる。作成された動作記述ファイルは動作記述記憶領域２０５に格納する。図９は、論理動作をＣ＋＋言語を使ってＨＤＬ的なハードウェア動作も記述できるようにした言語によるハードウェア・モジュールＨＭ１の動作記述の本体記述の例の一部である。図１０は、図９の本体記述に対応するヘッダー記述の一部である。又、図１１は、ＡＥＳアルゴリズムの試験を行う試験記述の本体記述の例の一部である。試験対象の論理動作の記述の抽象度が異なるため、図１１の記述と、図７の記述は異なる。図１２は、図１１の本体記述に対応するヘッダー記述の一部である。試験記述のうち、ハードウェア・モジュールＨＭ１は動作記述され、一方、ソフトウェア・モジュールＳＭ１は動作記述されていない。そのため、ハードウェア・モジュールＨＭ１により実行される入出力動作と、ソフトウェア・モジュールＳＭ１により実行される入出力動作との対応を取るためのモジュール間接続を行う記述が必要である。モジュール間接続の記述の例の一部を、図１３に示す。
【００３３】
（ヘ）ステップＳ１０６において、ソフトウェア・モジュール・ファイルの記述に基づき、タイムド動作モデルが作成される。タイムド動作モデルは、例えば動作クロックに同期して動作する動作モデルである。そのため、タイムド動作モデルは、時間による制御の記述が可能な、Ｃ＋＋言語を使ってＨＤＬ的なハードウェア動作も記述できるようにした言語で記述される。又、ソフトウェア・モジュールＳＭ１のタイムド動作モデルを作成する際には、図８に示したハードウェア・モジュールＨＭ１とのデータのやり取りを実行する入出力動作等が記述される。作成されたタイムド動作モデルは、タイムド動作モデル記憶領域２０６に格納される。
【００３４】
（ト）ステップＳ１０７において、検証部１１０が、動作記述記憶領域２０５から動作記述ファイルを読み出し、タイムド動作モデル記憶領域２０６からタイムド動作モデルを読み出す。そして、検証部１１０は動作記述ファイルとタイムド動作モデルに基づき、論理動作のシミュレーションを行う。論理動作のシミュレーション結果は、解析結果記憶領域２０２に格納される。
【００３５】
（チ）ステップＳ１０８において、検証部１１０が解析結果記憶領域２０２から論理動作のシミュレーション結果を読み出す。そして、検証部１１０は、論理動作のシミュレーション結果に基づき、論理動作が所望の回路動作を実行するかどうかを検証する。例えば、ＡＥＳアルゴリズムによって暗号化された結果を復号化し、元の入力データと一致したかどうか比較する。復号化したデータと元のデータが一致する場合は、ステップＳ１０９に進む。演算結果と期待値が一致しない場合は、ステップＳ１０４に戻る。ステップＳ１０７〜Ｓ１０８における動作記述の検証は、ステップＳ１０４〜Ｓ１０６の手順を検証するために実施される。
【００３６】
（リ）ステップＳ１０９において、実装部１６０が、動作記述記憶領域２０５から動作記述ファイルを読み出す。そして、実装部１６０は、読み出した動作記述ファイルの記述に基づき、論理回路３１のＲＴＬモデルを作成する。次に、ＲＴＬモデルから、ゲートレベルの論理回路３１の回路モデルが作成される。そして、回路モデルから生成される論理機能設定データをＦＰＧＡ３にロードすることにより、図２に示すように、論理回路３１がＦＰＧＡ３に実装される。ＦＰＧＡ３に実装可能な論理回路３１の回路データを作成する過程で、ハードウェア・モジュールＨＭ１の入出力情報から作成されるラッパー記述を、図１４に示す。ラッパー記述には、ＦＰＧＡ３に実装された論理回路３１のモジュール名、入力端子名、及び出力端子名等が記述される。例えば、図８に示したポートＰＨ１〜ＰＨ１０が、それぞれ入力端子又は出力端子として記述される。ラッパー記述は、ＦＰＧＡ３に実装された論理回路３１に、動作記述ファイルに記述された動作と等価な動作をさせるために使用される。即ち、ラッパー記述を参照することにより、動作記述に記述されたハードウェア・モジュールＨＭ１への入出力動作を、ＦＰＧＡ３に実装された論理回路３１での入出力動作として実行できる。ラッパー記述を記述したラッパーファイルが、図３に示すラッパー記述記憶領域２０８に格納される。
【００３７】
（ヌ）ステップＳ１１０において、検証部１１０が、タイムド動作モデル記憶領域２０６からタイムド動作モデルを読み出し、動作記述記憶領域２０５から動作記述ファイルを読み出し、ラッパー記述記憶領域２０８からラッパーファイルを読み出す。そして、検証部１１０は、タイムド動作モデルとＦＰＧＡ３に実装された論理回路３１を用いて、論理動作の協調シミュレーションを行う。タイムド動作モデルを使用する協調シミュレーションでは、論理回路３１が１クロック動作するたびに停止して、解析装置１ａと論理回路３１間のデータのやり取りを行う。又、タイムド動作モデルが１クロック動作するたびに停止して、論理回路３１と解析装置１ａ間のデータのやり取りを行う。したがって、タイムド動作モデルを使用した協調シミュレーションの実行速度は、解析装置１ａの動作速度で制限される。一般に、解析装置１ａの動作速度は、ＦＰＧＡ３に実装された回路で実行可能な動作速度よりかなり遅い。そのため、タイムド動作モデルを使用した協調シミュレーションでは、ＦＰＧＡ３の動作速度を十分に活用できない。協調シミュレーションの結果は、解析結果記憶領域２０２に格納される。
【００３８】
（ル）ステップＳ１１１において、検証部１１０が解析結果記憶領域２０２から協調シミュレーションの結果を読み出す。そして、検証部１１０は、協調シミュレーションの結果に基づき、論理動作が所望の回路動作を実行するかどうかを検証する。例えば、ＡＥＳアルゴリズムによって暗号化された結果を復号化し、元の入力データと一致したかどうか比較する。復号化したデータと元のデータが一致する場合は、ステップＳ１１２に進む。演算結果と期待値が一致しない場合は、動作記述の検討後、ステップＳ１０９に戻る。タイムド動作モデルを使用する協調シミュレーションは、ＦＰＧＡ３に実装された論理回路３１の動作を検証するために行われる。又、アルゴリズムの修正が必要であればステップＳ１２１に進む。或いは、ステップＳ１０４に戻り、論理動作のソフトウェアにより実現する論理動作とハードウェアにより実現する論理動作への再分割を検討する。
【００３９】
（ヲ）ステップＳ１１２において、抽出部１７０が、ソフトウェア記述記憶領域２０３からソフトウェア・モジュール・ファイルを読み出す。そして、抽出部１７０は、ソフトウェア・モジュール・ファイルの記述から、ソフトウェア・モジュールＳＭ１とハードウェア・モジュールＨＭ１間のトランザクションを記述したトランザクション関数をすべて抽出する。「トランザクション」とは、モジュールが外部と行うデータの入出力である。したがって、「トランザクション関数」とは、モジュールが外部と行うデータの入出力動作を記述する関数である。又、トランザクション関数を１つのモジュールとして記述したものを「トランザクタ」という。図１５に、図１１に示した試験記述から抽出されたトランザクション関数記述の例の一部を示す。なお、抽出部１７０は、抽出したトランザクション関数記述から、シミュレーション結果を出力するためのプリント文等の回路動作に関係ない記述を削除する。更に、抽出部１７０は、トランザクション関数を実行するために必要な引数や変数等を、トランザクション関数内で宣言する等の処理を行う。抽出されたトランザクション関数は、関数記憶領域２０９に格納される。
【００４０】
（ヨ）ステップＳ１１３において、実装部１６０が、関数記憶領域２０９に格納されたトランザクション関数の記述に基づき、ＦＰＧＡ３に実装可能なトランザクタ回路３２のデータを作成する。即ち、後述する方法によって実装部１６０がトランザクタ回路３２のＲＴＬモデルを作成する。次に、論理合成によってゲートレベルのトランザクタ回路３２の回路モデルが作成される。そして、回路モデルから生成される論理機能設定データをＦＰＧＡ３にロードすることにより、図２に示すように、トランザクタ回路３２がＦＰＧＡ３に実装される。
【００４１】
（タ）ステップＳ１１４において、アンタイムド動作モデル作成部１５０が、ソフトウェア記述記憶領域２０３からソフトウェア・モジュール・ファイルを読み出す。そして、アンタイムド動作モデル作成部１５０は、ソフトウェア・モジュール・ファイルの記述に基づき、アンタイムド動作モデルを作成する。アンタイムド動作モデルでは、データの送受信の関係から、実行される動作の順番が決定する。作成されたアンタイムド動作モデルは、アンタイムド動作モデル記憶領域２０７に格納される。アンタイムド動作モデルと論理回路３１間でデータのやり取りを行う場合に、アンタイムド動作モデルからトランザクタを呼び出す、呼び出し関数記述の例の一部を、図１６に示す。トランザクタは、トランザクション関数を１つのモジュールとして記述したものであり、トランザクタ回路３２はトランザクタを実行する回路としてＦＰＧＡ３に実装される。したがって、アンタイムド動作モデルがトランザクタを呼び出すことにより、アンタイムド動作モデルと論理回路３１間のデータの入出力が、トランザクタ回路３２を介して実行される。
【００４２】
（レ）ステップＳ１１５において、検証部１１０が、アンタイムド動作モデル記憶領域２０７からアンタイムド動作モデルを読み出し、動作記述記憶領域２０５から動作記述ファイルを読み出す。そして、検証部１１０は、アンタイムド動作モデルと、ＦＰＧＡ３に実装されたトランザクタ回路３２及び論理回路３１を用いて、論理動作の協調シミュレーションを行う。トランザクタ回路３２を使用して行う協調シミュレーションでは、アンタイムド動作モデルと論理回路３１間でデータのやり取りが必要な場合のみ、アンタイムド動作モデルの動作と論理回路３１間でデータのやり取りを行えばよい。即ち、ステップＳ１１０において実行される協調シミュレーションとは異なり、ステップＳ１１５において実行される協調シミュレーションでは、クロックサイクル毎にはアンタイムド動作モデルと論理回路３１間でのデータのやり取りを行わない。そのため、解析装置１ａ動作速度に関係なく、ＦＰＧＡ３に実装されたトランザクタ回路３２と論理回路３１は、高速に動作する。協調シミュレーションの結果は、解析結果記憶領域２０２に格納される。
【００４３】
（ソ）ステップＳ１１６において、検証部１１０が解析結果記憶領域２０２から協調シミュレーションの結果を読み出す。そして、検証部１１０は、協調シミュレーションの結果に基づき、論理動作が所望の回路動作を実行するかどうかを検証する。アンタイムド動作モデルを使用する協調シミュレーションは、トランザクション関数の抽出及びトランザクタ回路３２の動作を検証するために行われる。
【００４４】
次に、ステップＳ１１３において、トランザクタ回路３２のＲＴＬモデルを作成する方法を、図１７のフローチャートを用いて説明する。  
（イ）図１７に示すステップＳ３０１において、図３に示すＣＤＦＧ抽出部１６１が、関数記憶領域２０９に格納されたすべてのトランザクション関数を読み出す。そして、ＣＤＦＧ抽出部１６１は、各トランザクション関数の記述を解析し、トランザクション関数記述中の変数間相互の依存関係を表すＣＤＦＧを抽出する。抽出されたＣＤＦＧは、ＣＤＦＧ記憶領域２１１に格納される。
【００４５】
（ロ）ステップＳ３０２において、スケジューリング・アロケーション部１６２が、ＣＤＦＧ記憶領域２１１からトランザクション関数のＣＤＦＧを読み出す。そして、スケジューリング・アロケーション部１６２は、読み出したＣＤＦＧ及び制約記憶領域２１２に格納された制約条件に基づいて、トランザクション関数に記述された動作に、ハードウェアのリソース及び実行するクロックサイクルの割り当てを設定する。設定されたアロケーション結果は、アロケーション記憶領域２１３に格納される。図１８に、制約条件の記述例の一部を示す。制約条件には、トランザクタの動作を規定する情報が記述される。制約条件は、例えば、制約を与えるトランザクション関数の個数、名前、生成するトランザクタの名前、トランザクタで使用されるポートの種類、データビット幅、データ信号及びビット指定とトランザクション関数内の変数との対応、トランザクション関数間のステート遷移指定等の情報である。図１８に示す制約条件では、図１８に矢印で示した行で指定されているように、生成されるトランザクタの数は１つに制約されている。「ステートマシン」とは、現在の状態と入力信号の値によって次の状態と出力信号の値が決まる回路である。例えば、フリップフロップで構成されるレジスタ等の順序論理回路がステートマシンとして採用可能である。
【００４６】
（ハ）ステップＳ３０３において、図４のステップＳ１０３で説明した方法と同様に、ＲＴＬ作成部１６３がアロケーション記憶領域２１３から読み出すアロケーション結果に基づき、ＲＴＬモデルを作成する。即ち、ＲＴＬ作成部１６３は、マルチプレクサ等によりハードウェアのリソース間を接続し、データパスを制御する信号を出力する制御回路を作成する。図１８に示した制約条件によれば、使用されるステートマシンが１台であるＲＴＬモデルが作成される。作成されたＲＴＬモデルは、ＲＴＬ記憶領域２１４に格納される。
【００４７】
既に述べたように、アンタイムド動作モデルと、ＦＰＧＡ３に実装されたトランザクタ回路３２及び論理回路３１を用いる協調シミュレーションは、タイムド動作モデルと論理回路３１を用いる協調シミュレーションに比べて、高速に実行できる。そのため、ステップＳ１１０において実行される協調シミュレーションよりも、ステップＳ１１５において実行される協調シミュレーションでの試験パターンを複雑にしても、シミュレーション時間は増大しない。
【００４８】
以上に説明したように、図１に示すシミュレーション方法によれば、アンタイムド動作モデルと論理回路３１間のデータの受け渡しを行うトランザクタ回路３２を自動作成することができる。そのため、トランザクタ回路３２の作成にかかる時間を削減できる。その結果、論理動作の検証時間を削減することができる。又、トランザクタ回路３２を使用するため、解析装置１ａの動作の速度に関係なく、論理回路３１を高速に動作させることが可能である。即ち、論理動作の検証を詳細に行うために複雑な試験を行っても、検証時間の増大を抑制することができる。
【００４９】
＜変形例＞
図１７の説明では、図１８に示した記述で指定されたトランザクタが１つという制約条件により、ＲＴＬモデルを作成する例が示された。図１９に記述の一部を示す制約条件は、図１９に矢印で示した行で指定されているように、生成されるトランザクタの数は３つである。したがって、図１９に示す制約条件に基づいて作成されるＲＴＬモデルは、３台のステートマシンを使用する。ステートマシンは独立して動作する。そのため、複数のステートマシンにそれぞれ動作を割り当てられた複数のトランザクション関数は、互いに独立して、並列に実行される。複数のステートマシンを使用するＲＴＬモデルを作成することにより、例えば、ハードウェア・モジュールＨＭ１の動作がパイプライン化され、データの入力動作とデータの出力動作を並列に実行する論理動作を検証できる。複数のトランザクタを生成する指定をする場合は、それぞれのトランザクタの動作を規定する情報を制約条件に記述する。
【００５０】
又、上述したシミュレーション方法の説明では、論理動作をソフトウェア・モジュールＳＭ１とハードウェア・モジュールＨＭ１に分割する例として、図８の構成を示した。図８に示した構成に対して、図２０に示す構成は、ソフトウェア・モジュールＳＭ１がポートＰＳ１１を更に備え、ハードウェア・モジュールＨＭ１がポートＰＨ１１を更に備える点が異なる。図８に示した構成では、ソフトウェア・モジュールＳＭ１からポートＰＳ７を介してキー及びデータが出力され、ポートＰＨ７を介してハードウェア・モジュールＨＭ１に入力される。図２０に示した構成では、ポートＰＳ１１を介してソフトウェア・モジュールＳＭ１からキーが出力され、ポートＰＨ１１を介してハードウェア・モジュールＨＭ１に入力される。ソフトウェア・モジュールＳＭ１からのデータの出力は、図８に示した構成の場合と同様に、ポートＰＳ７を介して出力され、ポートＰＨ７を介してハードウェア・モジュールＨＭ１に入力される。
【００５１】
したがって、図２０に示す構成を使用し、更に制約条件で複数のトランザクタを生成する指定を行えば、キーの入力とデータの入力を別々のトランザクタとしてトランザクタ回路３２を作成して、キーの入力とデータの入力を並列に実行する論理動作の検証が可能である。
【００５２】
（第２の実施の形態）
本発明の第２の実施の形態に係るシミュレーション方法は、図２１に示すように、アンタイムド動作モデルからトランザクタを呼び出す呼び出し関数記述を生成するステップＳ１３１を更に備えることが、図１と違う点である。図２１に示すシミュレーション方法は、例えば図２２に示すような解析装置１ｂを有する論理動作検証システムによって実行することが可能である。解析装置１ｂは、ＣＰＵ１０が呼び出し記述生成部１８０を更に備える点が、図３と違う点である。その他の構成については、図３に示す第１の実施の形態と同様である。図１のステップＳ１１４で説明したように、呼び出し関数記述は、アンタイムド動作モデルからトランザクタを呼び出す記述である。呼び出し記述生成部１８０は、トランザクション関数の記述から、呼び出し関数記述を生成する。
【００５３】
図２１に示すステップＳ１３１において、図２２に示す呼び出し記述生成部１８０は、アンタイムド動作モデル記憶領域２０７からアンタイムド動作モデルを読み出し、関数記憶領域２０９からトランザクション関数を読み出す。そして、呼び出し記述生成部１８０は、トランザクション関数の記述に基づき、アンタイムド動作モデルに記述されたトランザクション関数の記述を、トランザクタを呼び出す呼び出し関数記述に書き換える。書き換えられたアンタイムド動作モデルは、アンタイムド動作モデル記憶領域に格納される。他は、第１の実施の形態と実質的に同様であり、重複した記載を省略する。
【００５４】
第２の実施の形態に係るシミュレーション方法によれば、アンタイムド動作モデルからトランザクタを呼び出す呼び出し関数記述を自動的に生成できる。そのため、論理動作の検証時間を更に削減することができる。  
（その他の実施の形態）
上記のように、本発明は第１及び第２の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【００５５】
例えば、既に述べた第１及び第２の実施の形態の説明においては、１つのＦＰＧＡ３を使用して協調シミュレーションを行う例を示したが、複数のＦＰＧＡを使用してもよい。複数のＦＰＧＡを使用することにより、より大規模な論理動作をハードウェアでシミュレーションすることが可能である。
【００５６】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００５７】
【図１】本発明の第１の実施の形態に係るシミュレーション方法を説明するフローチャートである。
【図２】本発明の第１の実施の形態に係るシミュレーション方法を実行する論理動作検証システムの構成を示す模式的な構成図である。
【図３】本発明の第１の実施の形態に係るシミュレーション方法を実行する解析装置の構成を示す模式的な回路構成図である。
【図４】本発明の第１の実施の形態に係るシミュレーション方法における、ＦＰＧＡに回路を実装する方法を説明するフローチャートである。
【図５】本発明の第１の実施の形態に係るシミュレーション方法で検証される論理動作の本体記述の例である。
【図６】本発明の第１の実施の形態に係るシミュレーション方法で検証される論理動作のヘッダー記述の例である。
【図７】本発明の第１の実施の形態に係るシミュレーション方法で検証される試験記述の例である。
【図８】本発明の実施の形態に係るシミュレーション方法によって、論理動作をソフトウェアにより実現する論理動作とハードウェアにより実現する論理動作に分割した例である。
【図９】本発明の第１の実施の形態に係るシミュレーション方法により生成される動作記述の本体記述の例である。
【図１０】本発明の第１の実施の形態に係るシミュレーション方法により生成される動作記述のヘッダー記述の例である。
【図１１】本発明の第１の実施の形態に係るシミュレーション方法により生成される試験記述の本体記述の例である。
【図１２】本発明の第１の実施の形態に係るシミュレーション方法により生成される試験記述のヘッダー記述の例である。
【図１３】本発明の第１の実施の形態に係るシミュレーション方法により生成される試験記述のモジュール間接続の動作記述の例である。
【図１４】本発明の第１の実施の形態に係るシミュレーション方法により生成されるラッパー記述の例である。
【図１５】本発明の第１の実施の形態に係るシミュレーション方法により生成されるトランザクション関数記述の例である。
【図１６】本発明の第１の実施の形態に係るシミュレーション方法により生成される呼び出し関数記述の例である。
【図１７】本発明の第１の実施の形態に係るシミュレーション方法における、トランザクタ回路のＲＴＬモデルを作成する方法を説明するフローチャートである。
【図１８】本発明の第１の実施の形態に係るシミュレーション方法における、制約条件の記述の例である。
【図１９】本発明の第１の実施の形態に係るシミュレーション方法における、他の制約条件の記述の例である。
【図２０】本発明の実施の形態に係るシミュレーション方法によって、論理動作をソフトウェアにより実現する論理動作とハードウェアにより実現する論理動作に分割した他の例である。
【図２１】本発明の第２の実施の形態に係るシミュレーション方法を説明するフローチャートである。
【図２２】本発明の第２の実施の形態に係るシミュレーション方法を実行する解析装置の構成を示す模式的な回路構成図である。
【符号の説明】
【００５８】
３…ＦＰＧＡ
１１０…検証部
１６０…実装部
１８０…呼び出し記述作成部
２１２…制約記憶領域
【図１】
2006048525.tif 000003
【図２】
2006048525.tif 000004
【図３】
2006048525.tif 000005
【図４】
2006048525.tif 000006
【図５】
2006048525.tif 000007
【図６】
2006048525.tif 000008
【図７】
2006048525.tif 000009
【図８】
2006048525.tif 000010
【図９】
2006048525.tif 000011
【図１０】
2006048525.tif 000012
【図１１】
2006048525.tif 000013
【図１２】
2006048525.tif 000014
【図１３】
2006048525.tif 000015
【図１４】
2006048525.tif 000016
【図１５】
2006048525.tif 000017
【図１６】
2006048525.tif 000018
【図１７】
2006048525.tif 000019
【図１８】
2006048525.tif 000020
【図１９】
2006048525.tif 000021
【図２０】
2006048525.tif 000022
【図２１】
2006048525.tif 000023
【図２２】
2006048525.tif 000024