(57)【要約】【課題】順序回路が示す内部状態がハードウェア記述言語（ＨＤＬ）による論理プログラムと等価に遷移するかについて、効率的に検証することができるプログラマブルロジックデバイス及びその検証方法を提供する。【解決手段】プログラマブルロジックデバイス１０は、実装されるロジックエレメント及び外部に対しデジタル信号の出入力を実行するＩ／Ｏ部１７と、ロジックエレメントの群を区分けした部分領域１１（１１ａ，１１ｂ，１１ｃ，１１ｄ）に含まれる順序回路の内部状態信号を取得して部分領域１１を単位としてその状態情報１３（１３ａ，１３ｂ，１３ｃ，１３ｄ）を生成する生成部１２（１２ａ，１２ｂ，１２ｃ，１２ｄ）と、各々の部分領域１１から状態情報１３を取得して選択的に外部出力させる選択出力部１４と、を備えている。【選択図】  図１
2014060537.tif 000002
【特許請求の範囲】
【請求項１】
実装されるロジックエレメント及び外部に対しデジタル信号の出入力を実行するＩ／Ｏ部と、
前記ロジックエレメントの群を区分けした部分領域に含まれる順序回路の内部状態信号を取得して前記部分領域を単位としてその状態情報を生成する生成部と、
各々の前記部分領域から前記状態情報を取得して選択的に外部出力させる選択出力部と、を備えることを特徴とするプログラマブルロジックデバイス。
【請求項２】
前記部分領域が取り得る前記状態情報のパターンを予め登録し、このパターンから外れる状態情報が生成された場合にエラー信号を出力するエラー判定部を、さらに備えることを特徴とする請求項１に記載のプログラマブルロジックデバイス。
【請求項３】
前記状態情報は、前記部分領域が取り得るこの状態情報の種類の数に応じたビット数で表現されることを特徴とする請求項１又は請求項２に記載のプログラマブルロジックデバイス。
【請求項４】
前記部分領域の入力端に入力させる前記デジタル信号のテストパターンを保持するテストパターン保持部を、さらに備えることを特徴とする請求項１から請求項３のいずれか１項に記載のプログラマブルロジックデバイス。
【請求項５】
複数のビット数で表現される前記状態情報を１ビットずつ外部出力させるシリアル変換部を、さらに備えることを特徴とする請求項１から請求項４のいずれか１項に記載のプログラマブルロジックデバイス。
【請求項６】
ハードウェア記述言語で作成された論理プログラムに基づくシミュレーションにより、テストパターン及びこのテストパターンの入力により遷移する前記状態情報を取得するステップと、
請求項１から請求項５のいずれか１項に記載のプログラマブルロジックデバイスにおける前記部分領域の入力端に前記テストパターンを入力するステップと、
前記プログラマブルロジックデバイスから前記部分領域を単位としてその状態情報を外部出力するステップと、
前記論理プログラムからシミュレーションされた前記状態情報の遷移情報と前記プログラマブルロジックデバイスから外部出力される前記状態情報の遷移情報とを対比するステップと、を含むことを特徴とするプログラマブルロジックデバイスの検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキストデータからなるハードウェア記述言語に従いロジック回路をハードウェアに実装させたプログラマブルロジックデバイス及びその検証方法に関する。
【背景技術】
【０００２】
原子力発電プラントの安全系制御基板に実装されるようなＦＰＧＡ（Field-Programmable Gate Array）は、一般にＰＬＤ（Programmable Logic Device）に分類されるもののなかでも、大規模なロジック回路がハードウェア上に実装されている。
ハードウェア記述言語（ＨＤＬ：Hardware Description Language）からハードウェアへのロジック回路の実装プロセスは、ブラックボックスである変換ツールを一度ないし複数経由することにより行われる。
【０００３】
よって、ハードウェア記述言語（ＨＤＬ）による論理プログラムとこの論理プログラムに基づき実装されたＦＰＧＡとの論理動作が、等価である必要がある。
このように両者が等価であることを検証するための公知技術としては、ＨＤＬで記載された論理プログラム及びＦＰＧＡのそれぞれに、共通のテストパターンを入力し、得られた出力結果の一致・不一致を確認する方法が知られている（例えば、特許文献１，２）
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１５８６９６号公報
【特許文献２】国際公開第２００８／０２０５１３号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしロジック回路にフリップ・フロップのような順序回路が含まれる場合は、複数のフリップ・フロップのそれぞれが示す内部状態も考慮したうえで、等価性を検証することは困難である。
【０００６】
本発明はこのような事情を考慮してなされたもので、順序回路が示す内部状態が、ハードウェア記述言語（ＨＤＬ）による論理プログラムと等価に遷移するかについて、効率的に検証することができるプログラマブルロジックデバイス及びその検証方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
プログラマブルロジックデバイスにおいて、実装されるロジックエレメント及び外部に対しデジタル信号の出入力を実行するＩ／Ｏ部と、前記ロジックエレメントの群を区分けした部分領域に含まれる順序回路の内部状態信号を取得してこの部分領域を単位としてその状態情報を生成する生成部と、各々の前記部分領域から前記状態情報を取得して選択的に外部出力させる選択出力部と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明により、順序回路が示す内部状態が、ハードウェア記述言語（ＨＤＬ）による論理プログラムと等価に遷移するかについて、効率的に検証することができるプログラマブルロジックデバイス及びその検証方法が提供される。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１実施形態に係るプログラマブルロジックデバイスのブロック図。
【図２】本発明の第２実施形態に係るプログラマブルロジックデバイスのブロック図。
【図３】本発明の第３実施形態に係るプログラマブルロジックデバイスのブロック図。
【図４】プログラマブルロジックデバイスの作成工程の全般を示すフローチャート。
【図５】各実施形態に係るプログラマブルロジックデバイスの検証工程を示すフローチャート。
【発明を実施するための形態】
【００１０】
（第１実施形態）
以下、本発明の実施形態を添付図面に基づいて説明する。
図１に示すように第１実施形態に係るプログラマブルロジックデバイス１０（以下、単にＦＰＧＡとも言う）は、実装されるロジックエレメント（図示略）及び外部に対しデジタル信号の出入力を実行するＩ／Ｏ部１７と、ロジックエレメントの群を区分けした部分領域１１（１１ａ，１１ｂ，１１ｃ，１１ｄ）に含まれる順序回路の内部状態信号を取得してこの部分領域１１を単位としてその状態情報１３（１３ａ，１３ｂ，１３ｃ，１３ｄ）を生成する生成部１２（１２ａ，１２ｂ，１２ｃ，１２ｄ）と、各々の部分領域１１から状態情報１３を取得して選択的に外部出力させる選択出力部１４と、を備えている。
【００１１】
プログラマブルロジックデバイス１０は、さらに部分領域１１が取り得る状態情報１３のパターンを予め登録し、このパターンから外れる状態情報１３が生成された場合にエラー信号を出力するエラー判定部１５を、備えている。
【００１２】
ＦＰＧＡは、プログラム可能な比較的小規模のロジックエレメントを格子状に配置し、それらの間に縦方向と横方向に配線路を設けた構造を基本としたＬＳＩである。
そしてロジックエレメントは、この配線路に設けられたスイッチ・マトリックスによって任意の組み合わせによる接続が可能になっている。
【００１３】
そして、ＦＰＧＡは、Ｉ／Ｏ部１７、メモリブロック、その他の専用機能ロジックがさらに実装されて、外付けの専用機能ＬＳＩやＩＣを必要とすることなく、１チップでシステムが実現されるよう構成される。
市販されているＦＰＧＡは、数百個から数百万個のロジックエレメントが配置されており、その動作仕様がテキストベースで表されたハードウェア記述言語（ＨＤＬ：Hardware Description Language）に基づいて、これらロジックエレメントを組み合わせ接続することにより大規模な回路が実現される。
【００１４】
このハードウェア記述言語（ＨＤＬ）は、モジュールという単位で記述がなされ、各部品をモジュールとして記述し、このモジュールを繋ぎ合わせることで全体が構成される。
このために、ＦＰＧＡの設計は、過去に記述したモジュールを再利用したり市販のモジュールを活用したりすることで、大規模のシステムを効率よく開発することができる。
【００１５】
ロジックエレメントの各々は、組み合わせ論理を実現するためのＬＵＴ（Lookup Table）と、順序論理を実現するためのフリップ・フロップとを組み合わせて構成されるのが一般的である。
ＬＵＴは、Ｎ入力１出力の真理値表を回路として実現する機能で、具体的には、Ｎビットアドレスを持つメモリを用いて、出力値を記憶素子（ＳＲＡＭ）に書き込むことで、任意のＮ入力組み合わせ論理が定義される。
フリップ・フロップは、相互接続されるロジックエレメントにおいて、ペアを組むＬＵＴの同期出力を得たり、順序回路を構成したりすることに用いられる。
【００１６】
部分領域１１（１１ａ，１１ｂ，１１ｃ，１１ｄ）は、ハードウェア記述言語（ＨＤＬ）の基本構造であるモジュールに対応するように、ロジックエレメントの群を区分けしたものである。しかし、この区分けの方式については特に限定はない。
それぞれの部分領域１１は、組み合わせ回路（例えば、ＡＮＤ，ＯＲ，ＮＯＴ，ＸＯＲ等の論理ゲート）として構成されたロジックエレメントや、順序回路（例えば、フリップ・フロップ，カウンタ等）として構成されたロジックエレメントが、それぞれ複数配置されている。
【００１７】
ここで、組み合わせ回路とは取得した入力の組み合わせにより出力が一意に決定されるものを指し、順序回路とは取得した入力及びその内部状態により出力が決定されるものを指す。
なお、順序回路の内部状態は、ＦＰＧＡ内の配線路を介して内部状態信号として取り出すことができる。
【００１８】
生成部１２（１２ａ，１２ｂ，１２ｃ，１２ｄ）は、それぞれに対応する部分領域１１（１１ａ，１１ｂ，１１ｃ，１１ｄ）に含まれる順序回路の内部状態信号を取得する。
ここで各々の生成部１２で取得される内部状態信号の組み合わせパターンは、順序回路の個数をｎとして内部状態の数をｐとすれば、最大でｐn通りと見積もられる。
しかし、現実には、モジュール単位で表される部分領域１１に含まれる全ての順序回路が取り得る内部状態のパターンは、前記した最大見積もりよりも格段に少ない。
【００１９】
生成部１２（１２ａ，１２ｂ，１２ｃ，１２ｄ）は、取得した複数の順序回路の内部状態信号に基づいて、対応する部分領域１１（１１ａ，１１ｂ，１１ｃ，１１ｄ）を単位としてその内部状態を示す状態情報１３（１３ａ，１３ｂ，１３ｃ，１３ｄ）を生成し、選択出力部１４に出力する。
図１において、部分領域１１ａは、status 1，status 2，status 3の３パターンの内部状態を取り得ることが示されており、対応する状態情報１３ａが３種類あることになる。部分領域１１ｂは、status 4，status 5，status 6，status 7の４パターンの内部状態を取り得ることが示されており、対応する状態情報１３ｂが４種類あることになる。
なお、部分領域１１ｃ，１１ｄにおいても、同様に複数パターンの内部状態を取り得るが記載を省略している。
【００２０】
Ｉ／Ｏ部１７には、検証対象となる部分領域１１の内部状態を矢示するように遷移させるテストパターンが、連続的に入力する。そして、この内部状態の遷移に伴って、対応する状態情報１３の種類が、生成部１２から出力される。
状態情報１３は、部分領域１１が取り得る状態情報１３の種類の数に応じたビット数で表現されることが望ましい。つまり、図示される状態情報１３ａは３ビット、状態情報１３ｂは４ビットで表される。これにより、出力にハザードを発生させずに高速の応答が可能になる。
【００２１】
選択出力部１４は、部分領域１１の生成部１２（１２ａ，１２ｂ，１２ｃ，１２ｄ）の全てから状態情報１３（１３ａ，１３ｂ，１３ｃ，１３ｄ）を並列に取得する。そして、検証対象となる部分領域１１の内部状態を反映した状態情報１３を選択的に外部出力する。
なお、この選択出力部１４における選択動作は、外部ＣＰＵからレジスタ１６を経由する命令に基づいたり、ロータリスイッチ（図示略）を設定したりすることにより実行される。
【００２２】
状態情報１３（１３ａ，１３ｂ，１３ｃ，１３ｄ）の全てをＦＰＧＡから外部出力することも考えられるが、状態情報１３の外部出力に割ける空きピンの数は限定されている。
そこで検証対象となる部分領域１１の内部状態を反映した状態情報１３のみを外部出力することにより使用するピンを節減することができる。
【００２３】
エラー判定部１５には、テストパターンに応じて部分領域１１が取るべき状態情報１３のパターンを予め登録されている。そして、このパターンに合致する状態情報１３が入力されたときはそのままスルーして外部出力され、このパターンから外れる状態情報１３が入力されたときはエラー信号に変換して外部出力される。
なお、エラー判定部１５の設置位置及び個数は、特に限定されず、部分領域１１（１１ａ，１１ｂ，１１ｃ，１１ｄ）毎に設けられる場合もある。
【００２４】
レジスタ１６は、ＣＰＵ等からの外部アクセスにより、ＦＰＧＡ内の各モジュールの動作モード等を設定したり、各モジュールの内部状態を外部からリードしたりするときに使用する。このように、外部からレジスタ１６にアクセスすることで、ＦＰＧＡの各モジュールを個別に制御することもできる。
なお、エラー判定部１５は、ＦＰＧＡと別の装置で構成してもよい。この場合、選択出力部１４から状態情報１３を受信可能に外部のエラー判定部１５を接続し、エラー判定を行う。
【００２５】
（第２実施形態）
次に図２に基づいて本発明の第２実施形態を説明する。なお、図２において図１と共通の構成又は機能を有する部分は、同一符号で示し、重複する説明を省略する。
図２に示すように第２実施形態に係るプログラマブルロジックデバイス１０は、部分領域１１の入力端に入力させるデジタル信号のテストパターンを保持するテストパターン保持部２１を、さらに備えている。
【００２６】
このテストパターンは、検証対象となる部分領域１１（１１ａ，１１ｂ，１１ｃ，１１ｄ）毎に設定され、テストパターン保持部２１に保持されている。
このテストパターンは、検証対象となる部分領域１１から出力され得る全ての状態情報１３が順番に遷移するように、ハードウェア記述言語のシミュレータを用いて作成する。
【００２７】
テストパターンは、Ｉ／Ｏ部１７から切替部２２を介して外部から保持部２１に保持され、この保持されたテストパターンは、切替部２２を介して部分領域１１の入力端に入力される。
なお、それぞれの部分領域１１を検証対象とした異なるテストパターンを順番に出力するために、保持部２１は、その動作がレジスタ１６により制御され、選択出力部１４における選択動作との同期がとられる。
そして、ＦＰＧＡの通常動作時は、切替部２２は、Ｉ／Ｏ部１７と部分領域１１の入力端とを接続して、外部とのデータ入出力を実行する。
さらに、選択出力部１４に、エラー判定部１５を接続し、入力されるテストパターンの順にエラー判定することができる。
【００２８】
（第３実施形態）
次に図３に基づいて本発明の第３実施形態を説明する。なお、図３において図１と共通の構成又は機能を有する部分は、同一符号で示し、重複する説明を省略する。
図３に示すように第３実施形態に係るプログラマブルロジックデバイス１０は、複数のビット数で表現される状態情報１３を１ビットずつ外部出力させるシリアル変換部３１を、さらに備えている。
これにより、少なくとも２ビットで表現される状態情報１３を、シリアルデータに変換することにより外部出力に必要なピンを１本に節減することができる。
【００２９】
このようなシリアル変換部３１は、例えば、選択出力部１４の後段にＦＩＦＯ（First In First Out）を実装し、さらにこのＦＩＦＯにデータライトするためのライト回路を実装し、さらにこのＦＩＦＯに書かれたデータをシリアル出力するためのシリアル変換回路を実装して構成される。
【００３０】
図４のフローチャートは、プログラマブルロジックデバイスの作成工程の全般を示し、図５のフローチャートは、各実施形態に係るプログラマブルロジックデバイスの検証工程を示している。
プログラマは、記述レベルをＲＴＬ（Register Transfer Level）としてハードウェア記述言語（ＨＤＬ）による論理プログラムの記述を行う（Ｓ１１）。
次に、この論理プログラムをＡＮＤやＯＲ等のゲートレベルの回路情報（ネットリスト）に変換する論理合成を行い（Ｓ１２）、変換された回路情報をＦＰＧＡのロジックエレメントに割り付ける配置配線を行い（Ｓ１３）、ＦＰＧＡに書き込むためのビットストリームを生成する。以上は、通常、汎用コンピュータ上で行われる作業である。
【００３１】
次に、この汎用コンピュータとＦＰＧＡとを接続し、生成したビットストリームを送信し、ＦＰＧＡにロジック回路の書き込みを行う（Ｓ１４）。
また、この作業と並行又は前後して、前記した汎用コンピュータ上において、ハードウェア記述言語で作成された論理プログラムに基づくシミュレーションにより、テストパターンを作成し（Ｓ１５）、このテストパターンをモジュールに入力した場合に遷移する状態情報を生成する（Ｓ１６）。
【００３２】
取得したテストパターン及びこのテストパターンの入力によりシミュレートされる状態情報の遷移に基づいて、ＦＰＧＡの等価性の検証を行う（Ｓ２０（図５））。
まず、ＦＰＧＡにおいて検証対象となる部分領域１１を選択し（Ｓ２１）、この部分領域１１が取り得る状態情報のパターンを登録するとともに、その部分領域１１の入力端に対応するテストパターンを入力する（Ｓ２２）。
【００３３】
そして、この検証対象となる部分領域１１に含まれる順序回路の内部状態信号を生成部１２が取得して（Ｓ２３）、この部分領域１１の状態情報１３が生成される（Ｓ２４）。
この生成した状態情報１３が登録されているパターンに合致していない場合は（Ｓ２５Ｎｏ）、ＨＤＬで記述された論理プログラムとＦＰＧＡの論理動作とが等価でないと判定されエラーが出力される（Ｓ２６）。
【００３４】
一方、この生成した状態情報１３が登録されているパターンに合致している場合は（Ｓ２５Ｙｅｓ）、この状態情報１３を外部出力してその遷移を観察する（Ｓ２７）。
そして、この（Ｓ２２）から（Ｓ２７）のフローを、全ての部分領域１１について実行し、ＨＤＬで記述された論理プログラムとＦＰＧＡの論理動作との等価性を検証する（Ｓ２８）。
【００３５】
そして、外部出力される状態情報１３の遷移と、論理プログラムからシミュレーションされる状態情報の遷移とが一致していれば（Ｓ１７Ｙｅｓ：図４）、ＨＤＬで記述された論理プログラムとＦＰＧＡの論理動作とが等価であると判定され検証作業が終了する。
一方、外部出力される状態情報１３の遷移と、論理プログラムからシミュレーションされる状態情報の遷移とが不一致であれば（Ｓ１７Ｎｏ）、エラー判定がなされ（Ｓ１８）、デバック作業を行うために（Ｓ１１）に戻る（Ｓ１９）。
【００３６】
以上述べた少なくともひとつの実施形態のプログラマブルロジックデバイスによれば、ロジックエレメントの群を区分けした部分領域を単位としてその状態情報の遷移を観察することにより、その論理動作がハードウェア記述言語（ＨＤＬ）による論理プログラムと等価であるか否かの検証が容易となる。
【００３７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、組み合わせを行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００３８】
１０…プログラマブルロジックデバイス（ＦＰＧＡ）、１１（１１ａ，１１ｂ，１１ｃ，１１ｄ）…部分領域、１２…生成部、１３（１３ａ，１３ｂ，１３ｃ，１３ｄ）…状態情報、１４…選択出力部、１５…エラー判定部、１６…レジスタ、１７…Ｉ／Ｏ部、２１…テストパターン保持部（保持部）、２２…切替部、３１…シリアル変換部。
【図１】
2014060537.tif 000003
【図２】
2014060537.tif 000004
【図３】
2014060537.tif 000005
【図４】
2014060537.tif 000006
【図５】
2014060537.tif 000007