(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-01-11
(45)【発行日】2023-01-19
(54)【発明の名称】動作検証システム及び動作検証装置
(51)【国際特許分類】
G06F 30/34 20200101AFI20230112BHJP
【FI】
G06F30/34
(21)【出願番号】P 2022571824
(86)(22)【出願日】2022-07-08
(86)【国際出願番号】 JP2022027078
【審査請求日】2022-11-22
(31)【優先権主張番号】P 2021214375
(32)【優先日】2021-12-28
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2022027411
(32)【優先日】2022-02-25
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】591102095
【氏名又は名称】三菱電機ソフトウエア株式会社
(74)【代理人】
【識別番号】110002941
【氏名又は名称】弁理士法人ぱるも特許事務所
(72)【発明者】
【氏名】白石 忠明
【審査官】堀井 啓明
(56)【参考文献】
【文献】特開2011-39781(JP,A)
【文献】特開2017-162130(JP,A)
【文献】特開2011-76191(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F30/20-30/398
(57)【特許請求の範囲】
【請求項1】
回路がプログラムされたFPGAと、前記FPGAの内部RAMと、前記内部RAMと外部とのデータとのやり取りに介在するバス回路と、前記バス回路を介して前記内部RAMから前記FPGAのノード値が書き込まれる
、前記FPGAの外部メモリと、前記回路を模擬したシミュレータがインストールされた計算機と、前記バス回路を介して前記FPGAと前記計算機とを接続する通信路と、を備え、
前記計算機は、前記シミュレータを動作させたときの内部状態値が書き込まれるシステムメモリと、前記通信路を介して、前記FPGAを制御する制御部と、を備え、
前記制御部は、前記回路と前記シミュレータとを動作させる動作指示部と、
前記外部メモリから得た、前記回路を動作させたときの前記ノード値と当該ノード値に対応する前記内部状態値とを比較して、前記FPGAの動作を検証する比較部と、を有し、
前記動作指示部は、前記回路と前記シミュレータとを同時動作させる、
動作検証システム。
【請求項2】
前記比較部は、前記ノード値と前記内部状態値とを、前記外部メモリと前記システムメモリとのメモリベースで比較する、請求項1に記載の動作検証システム。
【請求項3】
前記比較部は、前記ノード値と前記内部状態値とを、前記システムメモリと前記外部メモリとから出力されたファイル同士で比較する、請求項1に記載の動作検証システム。
【請求項4】
前記比較部は、指定する前記ノード値と前記内部状態値とを比較する、請求項1から3のいずれか1項に記載の動作検証システム。
【請求項5】
前記比較部は、前記ノード値又は前記内部状態値の少なくとも一方の値の形式に合わせた変換が行われたもので比較する、請求項1から
3のいずれか1項に記載の動作検証システム。
【請求項6】
前記比較部は、前記ノード値又は前記内部状態値の少なくとも一方の値の形式に合わせた変換が行われたもので比較する、請求項4項に記載の動作検証システム。
【請求項7】
前記比較部は、前記ノード値及び前記内部状態値との一致率を出力する、請求項1から
3のいずれか1項に記載の動作検証システム。
【請求項8】
前記比較部は、前記ノード値及び前記内部状態値との一致率を出力する、請求項4項に記載の動作検証システム。
【請求項9】
前記比較部は、前記ノード値及び前記内部状態値との一致率を出力する、請求項5項に記載の動作検証システム。
【請求項10】
前記比較部は、前記ノード値及び前記内部状態値との一致率を出力する、請求項6項に記載の動作検証システム。
【請求項11】
回路がプログラムされたFPGAの動作を検証する動作検証装置において、
前記回路を模擬したシミュレータがインストールされた計算機を備え、
前記計算機は、前記シミュレータを動作させたときの内部状態値が書き込まれるシステムメモリと、前記FPGAの内部RAMと外部とのデータとのやり取りに介在するバス回路を介して前記FPGAと前記計算機とを接続する通信路を介して、前記FPGAを制御する制御部と、を備え、
前記制御部は、前記回路と前記シミュレータとを動作させる動作指示部と、前記バス回路を介して前記内部RAMから前記FPGAのノード値が書き込まれる
、前記FPGAの外部メモリから得た、前記回路を動作させたときの前記ノード値と当該ノード値に対応する前記内部状態値とを比較して、前記FPGAの動作を検証する比較部と、を有し、
前記動作指示部は、前記回路と前記シミュレータとを同時動作させる、
動作検証装置。
【請求項12】
前記比較部は、前記ノード値と前記内部状態値とを、前記外部メモリと前記システムメモリとのメモリベースで比較する、請求項
11に記載の動作検証装置。
【請求項13】
前記比較部は、前記ノード値と前記内部状態値とを、前記システムメモリと前記外部メモリとから出力されたファイル同士で比較する、請求項
11に記載の動作検証装置。
【請求項14】
前記比較部は、指定する前記ノード値と前記内部状態値とを比較する、請求項
11から
13のいずれか1項に記載の動作検証装置。
【請求項15】
前記比較部は、前記ノード値又は前記内部状態値の少なくとも一方の値の形式に合わせた変換が行われたもので比較する、請求項
11から
13のいずれか1項に記載の動作検証装置。
【請求項16】
前記比較部は、前記ノード値又は前記内部状態値の少なくとも一方の値の形式に合わせた変換が行われたもので比較する、請求項14項に記載の動作検証装置。
【請求項17】
前記比較部は、前記ノード値及び前記内部状態値との一致率を出力する、請求項
11から
13のいずれか1項に記載の動作検証装置。
【請求項18】
前記比較部は、前記ノード値及び前記内部状態値との一致率を出力する、請求項14項に記載の動作検証装置。
【請求項19】
前記比較部は、前記ノード値及び前記内部状態値との一致率を出力する、請求項15項に記載の動作検証装置。
【請求項20】
前記比較部は、前記ノード値及び前記内部状態値との一致率を出力する、請求項16項に記載の動作検証装置。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、動作検証システム及び動作検証装置に関するものである。
【背景技術】
【0002】
従来から、FPGA(Field-Programmable Gate Array)などの半導体回路の設計品質保証は、例えば、HDL(Hardware Description Language)シミュレーションにより行われる(例えば、特許文献1参照)。FPGAは、設計した回路データをプログラムすることで、設計した回路の機能を実現できるものである(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0003】
【文献】特表2003-503791号公報
【文献】特開2000-122890号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
HDLシミュレーションは、ツールとして導入し易い。しかしながら、HDLシミュレーションは、シミュレーションの実行に時間を要し、回路規模にも依るが1万サイクル程度で数時間を要すると云う課題があった。この為、十分な検証が仕切れず不具合に繋がる問題がある。ASIC(Application Specific Integrated Circuit)エミュレータは、フルノード観測が可能で不具合の検出率は高くなるが、メモリ又は及びインターフェースが実速度で動作せず、高速動作ペリフェラルの検証適用が難しいうえに、検証の実行速度も実動作に対し1/5以下と遅く、更に、価格も数千万円を超え非常に高額である。
【0005】
本願明細書に開示される技術は、1000万サイクルを超える検証であっても数分以下で完了し得る動作検証システム及び動作検証装置を得ることを目的とする。
【課題を解決するための手段】
【0006】
本願明細書に開示される一例の動作検証システムは、回路がプログラムされたFPGAと、FPGAの内部RAM(Random Access Memory)と、内部RAMと外部とのデータとのやり取りに介在するバス回路と、バス回路を介して内部RAMからFPGAのノード値が書き込まれる、FPGAの外部メモリと、回路を模擬したシミュレータがインストールされた計算機と、バス回路を介してFPGAと計算機とを接続する通信路と、を備えている。計算機は、シミュレータを動作させたときの内部状態値が書き込まれるシステムメモリと、通信路を介して、FPGAを制御する制御部と、を備えている。制御部は、回路とシミュレータとを動作させる動作指示部と、外部メモリから得た、回路を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して、FPGAの動作を検証する比較部と、を有している。動作指示部は、回路とシミュレータとを同時動作させる。
【発明の効果】
【0007】
本願明細書に開示される一例の動作検証システムは、制御部が回路とシミュレータとを同時に動作させて、回路を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して回路検証を行うので、1000万サイクルを超える検証であっても数分以下で完了できる。
【図面の簡単な説明】
【0008】
【
図1】実施の形態1に係る動作検証システム及び動作検証装置の構成を示す図である。
【
図2】
図1の動作指示部の好適な例を示す図である。
【
図3】
図1の動作検証システム及び動作検証装置の動作の第一例を示すフローチャートである。
【
図4】
図1の動作検証システム及び動作検証装置の動作の第二例を示すフローチャートである。
【
図5】
図1の動作検証システム及び動作検証装置の状態遷移を示す図である。
【
図6】
図1の動作検証システム及び動作検証装置の状態遷移を示す図である。
【
図7】
図1のシミュレータ及び制御部の機能を実現するハードウェア構成例を示す図である。
【
図8】実施の形態2に係る動作検証システム及び動作検証装置の構成を示す図である。
【
図9】実施の形態3に係る動作検証システム及び動作検証装置を用いた協調設計システムを示すフロー図である。
【発明を実施するための形態】
【0009】
実施の形態1.
以下、実施の形態1に係る動作検証システム及び動作検証装置について、
図1から
図7を用いて説明する。図中、同一符号は、同一又は相当部分を示し、それらについての詳細な説明は省略する。
【0010】
図1は実施の形態1に係る動作検証システム及び動作検証装置の構成を示す図であり、
図2は
図1の動作指示部の好適な例を示す図である。
図3は
図1の動作検証システム及び動作検証装置の動作の第一例を示すフローチャートであり、
図4は
図1の動作検証システム及び動作検証装置の動作の第二例を示すフローチャートである。
図5及び
図6は、それぞれ
図1の動作検証システム及び動作検証装置の状態遷移を示す図である。
図7は、
図1のシミュレータ及び制御部の機能を実現するハードウェア構成例を示す図である。実施の形態1に係る動作検証システム60は、動作検証装置50と、動作検証対象である回路2を備えた半導体回路の一例であるFPGA1と、FPGA1に接続された外部メモリ5と、を備えている。
図1では、動作検証装置50が計算機6により実現されている例を示した。
【0011】
図1において、FPGA1は、動作検証対象である回路2がプログラムされたものである。内部RAM3は、FPGA1の内蔵メモリブロックに形成された内部のRAMである。バス回路4は、内部RAM3と外部とのデータとのやり取りに介在するものである。外部メモリ5は、バス回路4を介して内部RAM3からFPGA1のノード値が書き込まれるものである。外部メモリ5は、DDR(Double Data Rate)メモリなどが好適である。通信路9は、バス回路4を介してFPGA1と、計算機6とを接続するものである。通信路9は、USB(登録商標)3.x、PCI-Express(登録商標)などで、超高速に接続することが好ましい。バス回路4は、計算機6から直接、FPGA1側のレジスタ、メモリブロック等にアクセス可能とするカスタムバス設計を行う。また、FPGA1側にも制御回路つまりFPGA1側制御回路を準備しておくことが好ましい。
【0012】
ノードとノード値について説明する。外部回路に接続された特定の内部回路を特定内部回路と呼ぶことにする。外部回路に接続された特定内部回路における出力と異なり、特定内部回路以外の他の内部回路の出力は、通常外部に出力されない。ここでは、特定内部回路以外の他の内部回路をノードと呼び、ノードの状態値をノード値と呼ぶ。
【0013】
実施の形態1に係る動作検証装置50は、計算機6に相当するものである。計算機6は、一般的なPC(Personal Computer)、ワークステーション等が好適である。計算機6は、FPGA1が搭載される製品に形成されたマイコンで構成してもよいし、FPGA1の内部に形成したマイコンで構成してもよい。
図1において、計算機6は、回路2を模擬したシミュレータ7がインストールされたものである。詳しくは、回路2の機能を模擬したシミュレータ7が、インストールされたものが計算機6といえる。ソフトウェアの要求仕様に基づいて、回路2とシミュレータ7とがそれぞれ形成されるため、結果として、シミュレータ7は、回路2を模擬したものと同義になる。そのため、シミュレータ7が回路2を模擬したものとは、回路2の機能を模擬したものを省略して称しているといえる。システムメモリ8は、計算機6がシミュレータ7を動作させたときの内部状態値が書き込まれるものである。制御部10は、通信路9を介して、計算機6によってFPGA1を制御するものである。制御部10は、動作指示部11と比較部12とを有している。動作指示部11は、回路2とシミュレータ7とを動作させるものである。比較部12は、回路2を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して、FPGA1の動作すなわち回路2の動作を検証するものである。
【0014】
図2に、実施の形態1に係る動作検証装置50の動作指示部11の好適な機能ブロックを示した。
図2は、
図1に示す動作指示部11の好ましい詳細構成例を示している。動作指示部11は、処理フェーズ管理部13、シミュレータ制御部14、システムメモリアクセス部15、FPGA制御部16、FPGA側メモリアクセス部17を備えている。処理フェーズ管理部13は、動作指示部11の各処理フェーズを管理するものである。回路2を動作させるとき動作指示部11は、処理フェーズ管理部13がFPGA制御部16を制御して、FPGA側メモリアクセス部17が通信路9を介してFPGA1の回路2を起動し、動作させる。シミュレータ7を動作させるとき動作指示部11は、処理フェーズ管理部13がシミュレータ制御部14を制御して、シミュレータ7を起動し、動作させる。シミュレータ制御部14は、システムメモリアクセス部15を介してシステムメモリ8へのアクセスも行う。また、FPGA側メモリアクセス部17は、システムメモリアクセス部15を介してシステムメモリ8とアクセスする。
【0015】
実施の形態1に係る動作検証システム60及び動作検証装置50において、比較部12による比較は、メモリベースで行うが、必要であればファイルに落とす事は可能である。詳しくは、比較部12は、ノード値と内部状態値とを、外部メモリ5とシステムメモリ8とのメモリベースで比較することができる。もちろん、比較部12は、ノード値と内部状態値とを、システムメモリ8と外部メモリ5とからそれぞれ出力されたファイル同士で比較することも可能である。
【0016】
また、実施の形態1に係る動作検証システム60及び動作検証装置50では、シミュレータ7を上位制御する動作検証ソフトを開発し、FPGA1との具体的な比較方法を定義し実行することも可能である。シミュレータ7を上位制御する動作検証ソフトは、制御部10に包含されるものであるといえる。さらに、動作指示部11及び比較部12を備えた制御部10は、FPGA1の動作を指定の位置で止め、内部状態を確認するデバッグ機能を備えるようにすることで、解析効率を高めることも可能である。つまり、比較部12は、指定するノード値と内部状態値とを比較することになる。
【0017】
このような動作指示部11及び比較部12を備えた制御部10の制御動作を可能にするには、FPGA1側に、前述のFPGA1側制御回路を組み込んでおくことが好ましい。混乱を生じさせない為に、これらの制御部10、又は及びFPGA1側制御回路について、標準化しルール化することで汎用性が高まる。さらに、動作指示部11は、回路2とシミュレータ7とを同時動作させることで、リアル動作検証を実施することが可能である。そのため、数億サイクルの試験を数秒で終えることも可能である。
【0018】
動作検証対象である回路2が、YoLo(You only Look once)などの物体検出AI(Artificial Intelligence)の場合、1枚の画像に対して1億回超の演算を行う必要がある。国際標準のデータセットでは2万枚を超える画像がある。パイソン(Python)、テンソルフロー(TensorFlow)等で記述し評価されたAIアルゴリズムコードを、FPGA等の回路に実装するケースにおいて、その機能的等価性をどれだけ詳細に確認できるかが課題となる。理想的には、1億サイクル×2万枚の検証を、FPGA1内の全ての畳み込み結果に対し確認するのが望ましい。実施の形態1に係る動作検証システム60及び動作検証装置50は、その望ましいという条件の実現を現実的なものにすることができる。すなわち、計算機6をマスターに、FPGA1をスレーブにして実速度で動かし、シミュレータ7とFPGA1とを同時に動作させ、その動作の違いを逐次比較することで実現可能である。計算機6とFPGA1とをUSB3.xなどで高速に接続する。例えばFPGA1を100MHzで動作させた場合、毎秒1億サイクルとなる。
【0019】
次に、実施の形態1に係る動作検証方法、すなわち
図1に示す実施の形態1に係る動作検証システム60及び動作検証装置50の動作について、
図3、
図4を用いて説明する。
図3、
図4において、ステップST10は、FPGA1の回路2を動作検証するために、動作指示部11及び比較部12を備えた制御部10を起動し、動作させる処理ステップである。すなわち、ステップST10は、制御部10が動作するステップである。
図4の場合の最初のステップは、ステップST11である。ステップST11において、後述する動作検証の状態遷移を伴って、制御部10が動作する。ステップST21は、動作指示部11がシミュレータ7を起動し、動作させる処理ステップである。ステップST21において、シミュレータ7が動作する。ステップST22は、動作指示部11がFPGA1の回路2を起動し、動作させる処理ステップである。ステップST22において、FPGA1の回路2が動作する。この動作に、前述のFPGA1側制御回路を用いてもよい。ステップST31は、システムメモリ8が内部状態値を順次記憶する処理ステップである。ステップST32は、内部RAM3がノード値を順次記憶し、そのノード値を外部メモリ5が順次取得して記憶する処理ステップである。この動作に、前述のFPGA1側制御回路を用いてもよい。
【0020】
図3、
図4において、ステップST40は、対応するノード値と内部状態値とを比較して、FPGA1の回路2の動作を検証する処理ステップである。ステップST50は、全てのノード値と内部状態値とを比較する処理ステップを例示している。つまり、ステップST50は、シミュレータ7と回路2との動作の違いを逐次比較している場合を例示している。
図3では、ステップST50において、比較対象の全ての比較が完了したかを判定し、全ての比較が完了していない場合はステップST40に移動し、全ての比較が完了している場合は終了する。
図4では、ステップST50において、比較対象の全ての比較が完了したかを判定し、全ての比較が完了していない場合はステップST11に移動し、全ての比較が完了している場合は終了する。もちろん、FPGA1の回路2の動作を指定の位置で止め、内部状態を確認するようにしてもよい。前述の通り、比較部12は、指定するノード値と内部状態値とを比較することになる。
【0021】
図3と
図4との違いを、例えば、FPGA1の回路2とシミュレータ7とがAIである場合を例に説明する。
図4では1層毎に処理を止める場合を例示している。一方、
図3では、全ての層に処理が終わるまで処理を続ける場合を例示している。つまり、
図3のフローは、動作検証対象の動作を全て実行した後に、動作検証対象のノードとして予め指定されたノード値と内部状態値とを比較する例である。
図4のフローは、動作検証対象の動作を予め設定された1層毎の処理等の停止ポイントまでにおいて、動作検証対象のノードとして予め指定されたノード値と内部状態値とを比較する。その後に次の停止ポイントまでシミュレータ7及び回路2を動作させて、前の停止ポイントから今回の停止ポイントまでにおいて、動作検証対象のノードとして予め指定されたノード値と内部状態値とを比較する例である。すなわち、
図4のフローは、シミュレータ7及び回路2の動作と、ステップST40の比較とを最後の停止ポイントである最終ポイントまで繰り返す例である。前述した動作検証の状態遷移は、停止ポイントの進行状態の遷移である。
【0022】
実施の形態1に係る動作検証方法においても、比較部12による比較は、メモリベースで行うが、必要であればファイルに落とす事は可能である。また、動作指示部11は、回路2とシミュレータ7とを同時動作させることで、リアル動作検証を実施することが可能である。そのため、数億サイクルの試験を数秒で終えることも可能である。
【0023】
図5、
図6に、実施の形態1に係る動作検証システム60及び動作検証装置50の状態遷移を示した。
図5、
図6に示した状態遷移は、
図4のフローに対応した例である。
図5における矢印の下流側である最後のA、B、Cは、それぞれ
図6におけるA、B、Cと同じである。すなわち、
図5における最後のA、B、C以降は、それぞれ
図6のA、B、C以降に続いている。
図5では、FPGA1の回路2及びシミュレータ7は、AIである場合の状態遷移を例示している。3層までの処理を例示している。制御部10がシミュレータ7に動作開始を指示する開始指令c1から始まる。制御部10は、動作検証ソフトを使って、回路2とシミュレータ7とを同時動作させると、
図5、
図6に示すような状態遷移となる。適宜、FPGA1の回路2を単に回路2と表記する。
【0024】
詳しくは、1層目の処理として、制御部10は、シミュレータ7を起動し動作させ、1層目処理して完了後に、シミュレータ7を一旦停止させる。次に、制御部10は、回路2を起動し動作させ、1層目処理して完了後に、回路2を一旦停止させる。そして、2層目、3層目の処理として同じように、制御部10がFPGA1の回路2とシミュレータ7とを動作させる。このような動作を、動作指示部11が、回路2とシミュレータ7とを同時動作させているという。つまり、回路2とシミュレータ7とが完全に時間的に同時に動作している必要はなく、動作指示部11の制御、指示により回路2とシミュレータ7とが並列して動作するため、回路2とシミュレータ7とが同時に動作している時間帯は必ずあるという意味である。
【0025】
さらに詳しく説明する。
図5、
図6に示すシミュレータ7及びFPGA1の回路2の各状態は、符号S0、S1、S1a、S2、S2a、S3、S4、S4a、S5、S5a、S6、S7、S7a、S8、S8a、S9を付している。状態S0、S1a、S2a、S4a、S5a、S7a、S8aは、一旦停止の状態すなわちウエイト状態である。状態S1、S2が、それぞれシミュレータ7、回路2の1層目処理の動作を行っている状態である。状態S4、S5が、それぞれシミュレータ7、回路2の2層目処理の動作を行っている状態である。状態S7、S8が、それぞれシミュレータ7、回路2の3層目処理の動作を行っている状態である。状態S3、S6、S9は、制御部10が比較部12において、回路2のノード値とシミュレータ7の当該ノード値に対応する内部状態値とを比較する動作を行っている状態である。
【0026】
制御部10がシミュレータ7に開始指令c1を出力する。シミュレータ7は、状態S1の処理を実行し、完了後に完了報告r1を制御部10に出力する。シミュレータ7は、その後、状態S1aになる。このとき、回路2は状態S0すなわちウエイト状態である。次に、制御部10が回路2に開始指令c2を出力する。回路2は、状態S2の処理を実行し、完了後に完了報告r2を制御部10に出力する。回路2は、その後、状態S2aになる。制御部10は、状態S3の処理を実行する。比較処理の完了後に、制御部10がシミュレータ7に開始指令c3を出力する。
【0027】
シミュレータ7は、状態S4の処理を実行し、完了後に完了報告r3を制御部10に出力する。シミュレータ7は、その後、状態S4aになる。次に、制御部10が回路2に開始指令c4を出力する。回路2は、状態S5の処理を実行し、完了後に完了報告r4を制御部10に出力する。回路2は、その後、状態S5aになる。制御部10は、状態S6の処理を実行する。比較処理の完了後に、制御部10がシミュレータ7に開始指令c5を出力する。
【0028】
シミュレータ7は、状態S7の処理を実行し、完了後に完了報告r5を制御部10に出力する。シミュレータ7は、その後、状態S7aになる。次に、制御部10が回路2に開始指令c6を出力する。回路2は、状態S8の処理を実行し、完了後に完了報告r6を制御部10に出力する。回路2は、その後、状態S8aになる。制御部10は、状態S9の処理を実行する。3層目処理が最後の場合は、
図4のステップST50において、全ての比較が完了した判定し、終了する。3層目処理が最後でない場合は、ステップST11に移動し、ステップST11からステップST50までの処理を繰り返す。
【0029】
HDLシミュレーションは、ツールとして導入し易く、安価である。実施の形態1に係る動作検証システム60及び動作検証装置50は、一般的な計算機を用いて動作検証対象の回路2と回路2を模擬したシミュレータ7とを同時に動作させて、回路2を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して回路検証を行うので、一般的な設備で高速に容易に行うことができる。このため、実施の形態1に係る動作検証システム60及び動作検証装置50は、一般的な設備より高速で高価な設備を必要とせず安価に行うことができる。
【0030】
なお、
図1では動作検証装置50が計算機6により実現されている例を示したが、動作検証装置50は計算機6以外により実現されてもよい。この場合には、動作検証装置50のシミュレータ7及び制御部10の機能は、
図7に示すプロセッサ98、メモリ99により機能が実現されてもよい。シミュレータ7及び制御部10は、プロセッサ98がメモリ99に記憶されたプログラムを実行することにより、実現される。また、複数のプロセッサ98及び複数のメモリ99が連携して各機能を実行してもよい。
【0031】
計算機6は、
図7と同様に、プロセッサ98、システムメモリ8を備えており、プロセッサ98がシステムメモリ8に記憶されたプログラムを実行することにより、シミュレータ7及び制御部10の機能が実現されている。
【0032】
以上のように、実施の形態1に係る動作検証システム60は、回路2がプログラムされたFPGA1と、FPGA1の内部RAM3と、内部RAM3と外部とのデータとのやり取りに介在するバス回路4と、バス回路4を介して内部RAM3からFPGA1のノード値が書き込まれる外部メモリ5と、回路2を模擬したシミュレータ7がインストールされた計算機6と、バス回路4を介してFPGA1と計算機6とを接続する通信路9と、を備えている。計算機6は、シミュレータ7を動作させたときの内部状態値が書き込まれるシステムメモリ8と、通信路9を介して、FPGA1を制御する制御部10と、を備えている。制御部10は、回路2とシミュレータ7とを動作させる動作指示部11と、回路2を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して、FPGA1の動作を検証する比較部12とを有している。動作指示部11は、回路2とシミュレータ7とを同時動作させる。実施の形態1に係る動作検証システム60は、この構成により、制御部10が回路2とシミュレータ7とを同時に動作させて、回路2を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して回路検証を行うので、1000万サイクルを超える検証であっても数分以下で完了できる。
【0033】
以上のように、実施の形態1に係る動作検証装置50は、回路2がプログラムされたFPGA1の動作を検証する動作検証装置である。動作検証装置50は、回路2を模擬したシミュレータ7がインストールされた計算機6を備えている。計算機6は、シミュレータ7を動作させたときの内部状態値が書き込まれるシステムメモリ8と、FPGA1の内部RAM3と外部(外部メモリ5)とのデータとのやり取りに介在するバス回路4を介してFPGA1と計算機6とを接続する通信路9を介して、FPGA1を制御する制御部10と、を備えている。制御部10は、回路2とシミュレータ7とを動作させる動作指示部11と、バス回路4を介して内部RAM3からFPGA1のノード値が書き込まれる外部メモリ5から得た、回路2を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して、FPGA1の動作を検証する比較部12と、を有している。動作指示部11は、回路2とシミュレータ7とを同時動作させる。実施の形態1に係る動作検証装置50は、この構成により、制御部10が回路2とシミュレータ7とを同時に動作させて、回路2を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して回路検証を行うので、1000万サイクルを超える検証であっても数分以下で完了できる。
【0034】
実施の形態1に係る動作検証装置50において、計算機6が、FPGA1が搭載される製品に形成されたマイコンで構成する場合、FPGA1の内部に形成したマイコンで構成する場合ともに、FPGA1が搭載された製品において、動作検証の自己診断を行うことができる。このように構成する場合でも、自己診断前、例えば、製品出荷前の動作検証においては、製品の外部にある一般的なPC、ワークステーション等で構成された計算機6を通信路9でFPGA1に接続して動作検証を行ってもよい。もちろん、動作検証の自己診断においても、この手法で行ってもよい。なお、FPGA1が搭載される製品に形成されたマイコンで計算機6を構成する場合、FPGA1とマイコンとを接続する線路が通信路9に相当する。FPGA1の内部に形成したマイコンで計算機6を構成する場合、FPGA1の内部の回路が通信路9に相当する。よって、詳しくは、FPGA1と計算機6とを接続する通信路9は、FPGA1の回路2とFPGA1のマイコンとを接続する回路といえる。
【0035】
実施の形態2.
以下、実施の形態2に係る動作検証システム60及び動作検証装置50について、
図8を用いて説明する。
図8は実施の形態2に係る動作検証システム及び動作検証装置の構成を示す図である。実施の形態2に係る動作検証システム60及び動作検証装置50は、値変換部18又は値変換部19の少なくとも一方が形成されていることが、実施の形態1に係る動作検証システム及び動作検証装置と異なる点である。実施の形態1と実施の形態2とが共通する部分については説明を省略する。図中、同一符号は、同一又は相当部分を示し、それらについての詳細な説明は省略する。
【0036】
図8において、値変換部18は、FPGA1に形成され、ノード値を別の形式に変換するものである。値変換部19は、計算機6に形成され、ノード値を別の形式に変換するものである。
【0037】
実施の形態2に係る動作検証システム60及び動作検証装置50は、比較部12が、ノード値又は内部状態値の少なくとも一方の値の形式に合わせた変換が行われたもので比較することができる構成である。回路2の実行結果はメモリ情報として1/0のデータの羅列のノード値となる。一方、シミュレータ7の実行結果はメモリ情報として変数(数値型)の内部状態値となる。
【0038】
そのため、1/0のデータであるノード値を、格納アドレス位置、ビット長、MSB(Most Significant Bit/Most Significant Byte)の情報を元に、値変換部18によって、シミュレータ7側の形式に合せて型変換させることで、比較を容易することができる。つまり、比較部12における数値型を合わせたノード値と内部状態値との比較においては、単純に一致か不一致だけを見るのでは無く、値がどの程度異なるのかの情報が有ると解析が容易となる。同じく、値変換部19によって、変数(数値型)の内部状態値を1/0のデータに合せて型変換させることで、比較を容易することもできる。特に、ノード値、内部状態値の形式を合わせることで、人間が見て分かりやすい値とできる。なお、値変換部18、値変換部19を共に備える場合は、1/0のデータ、変数型のデータと異なる形式に変換される。
【0039】
このように、実施の形態2に係る動作検証システム60及び動作検証装置50では、ノード値と内部状態値との形式を合わせるので、比較部12が、ノード値及び内部状態値との一致率を出力することが、より容易になる。よって、回路2とシミュレータ7との構造的な違いによる誤差範囲を規定し、一致においても完全一致/誤差範囲一致とを選べるようにすることが、より容易となる。
【0040】
以上のように、実施の形態2に係る動作検証システム60及び動作検証装置50は、比較部12が、FPGA1のノード値又はシミュレータ7を動作させたときの内部状態値の少なくとも一方の値の形式に合わせた変換が行われたもので比較するので、実施の形態1に係る動作検証システム60及び動作検証装置50の効果を奏し、更にノード値と内部状態値との比較を高精度に行うことができる。また、実施の形態2に係る動作検証システム60及び動作検証装置50の比較部12は、ノード値及び内部状態値との一致率を出力する。これにより具体的な一致率により、検証結果を容易に確認することができる。
【0041】
実施の形態3.
実施の形態3に係る動作検証システム60及び動作検証装置50は、協調設計システムを構成している例である。
図9は、実施の形態3に係る動作検証システム及び動作検証装置を用いた協調設計システムを示すフロー図である。実施の形態3に係る動作検証システム60及び動作検証装置50は、協調設計システムにより検証されたシミュレータ7、シミュレータ7の検証結果による高位合成と要求仕様71とに基づいて設計された回路2が実装されたFPGA1を備えている。以下、実施の形態3に係る動作検証システム60及び動作検証装置50について、
図9を用いて説明する。実施の形態3に係る動作検証システム60及び動作検証装置50は、実施の形態1及び2に係る動作検証システム60及び動作検証装置50と同様の構成である。実施の形態1及び2と実施の形態3とが共通する部分については説明を省略する。図中、同一符号は、同一又は相当部分を示し、それらについての詳細な説明は省略する。
【0042】
まず、動作検証システム60及び動作検証装置50が有益である背景を説明する。半導体回路の開発においては、一般的に、ハードウェア構成を決定してからソフトウェア仕様を決め、開発を開始するが、それらの評価においては、先ずは、LSI(Large-Scale Integration)を含めハードウェアが動作しないとソフトウェアの評価は進められない関係にある。
【0043】
開発に関わる人員も、一般にソフトウェア開発者の方が多人数である。このため、ハードウェアの開発不具合は、多人数のソフトウェア開発人員を待たせたり、変更を余儀なくさせたりするなど、製品開発全体に与える影響が大きい。一方、逆に、ソフトウェア開発の不具合が、ハードウェア開発に与える影響は小さく、それらの関係性より、自ずとハードウェアの開発品質は、ソフトウェアの開発品質よりも高精度が求められる。開発するハードウェアの中に、回路設計の伴うLSI開発が含まれる場合は、品質維持に向けた難易度が更に高まり、LSIの開発品質を如何に高めるかが重要な課題となる。
【0044】
そこで、
図9に示す協調設計システムが有益となる。つまり、回路設計者の誤解又はミスを、如何に抑制排除するかの方策として、これまで説明してきたシミュレータ7を利用することができる。
【0045】
次に、
図9に示す協調設計システムによる回路2の設計及び検証の流れを説明する。ステップST91として、要求仕様71に基づいてシミュレータ7を設計する。ステップST92として、シミュレータ7とシステムソフトウェア72とを比較して妥当性を検証する。ステップST93として、検証した結果により要求仕様71からの具体設計を確定させて、回路2の設計に高位合成する。ステップST94として、シミュレータ7の検証結果による高位合成と要求仕様71とに基づいて回路2を設計する。つまり、ステップST91からステップST93の流れでしっかりと具体的な機能設計を確定させて、回路2の設計を行う。
【0046】
そして、ステップST95として、回路2をFPGA1に実装するためのテストデータを作成する。ステップST96として、このテストデータでHDLシミュレーションを行う。ステップST96のHDLシミュレーションは、小規模な検証のため、本願の課題で説明したHDLシミュレーションのような大規模なものではない。ステップST97として、ステップST96の結果を反映させて、回路2をFPGA1へ実装する。これ以降のステップST98、ステップST99が動作検証システム60又は動作検証装置50の動作となる。
【0047】
ステップST98として、制御部10が動作指示部11によって、回路2とシミュレータ7とを動作させる。ステップST99として、制御部10が比較部12によって、回路2を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して、FPGA1の動作を検証する。ステップST98、ステップST99は、動作検証システム60又は動作検証装置50による検証であり、ステップST96の検証に対して、大規模な検証といえる。なお、動作指示部11は、回路2とシミュレータ7とを同時動作させる。
【0048】
このように、
図9に示す協調設計システムは、頭で考えた事だけで全工程を流し最終段で確認した場合に、誤解が設計の最終工程まで行くのに対し、早い段階で、頭で考えた事を実際に形にして確認する事で誤解を検出し、手戻りのループを小さくする考え方である。なお、動作検証システム60又は動作検証装置50を構築する上で、HDLにより実現するよりも、ソフトウェアのシミュレータ7を作る方が遙かに容易であり、早期の事前確認に適している。もちろん、HDLにより実現するものは、ステップST96のような小規模な検証ではなく、ステップST98、ステップST99のような大規模な検証を意味している。
【0049】
なお、動作検証システム60、動作検証装置50では、制御部10がディスプレイ等を使って、比較部12の比較結果を示したり、実行状況を示したりするようにしてもよい。例えば、2種類のログファイルをテキスト形式にて、検証の度に生成する。画像データである場合は、次のような例示となる。比較結果を示す場合は、比較不一致が有ったjpg写真のみ表示し、不一致内容を並べて分かり易く表示もし、全てのjpg写真で不一致が無い場合は、「nn jpg Mismatch Zero」を表示する。ここでnnは、試験実行したjpgの枚数を指す。実行状況を示す場合は、どのjpg写真の、何層目までの処理を実行し、各層毎の比較結果と最終推論結果のOK/NG(良/不良)を表示させる。このようにすれば、当該jpg写真の問題の有無が一目で分かる。
【0050】
なお、本願は、実施の形態において様々な例示的な実施例が記載されているが、実施の形態に記載された様々な特徴、態様、及び機能は特定の実施の形態の適用に限られるのではなく、単独でまたは様々な組み合わせで他の実施の形態又は他の実施例に適用可能である。従って、例示されていない無数の変形例が、本願明細書に開示される技術の範囲内において想定される。例えば、少なくとも1つの構成要素を変形する場合、追加する場合又は省略する場合、さらには、少なくとも1つの構成要素を抽出し、他の実施の形態又は他の実施例の構成要素と組み合わせる場合が含まれるものとする。
【符号の説明】
【0051】
1…FPGA、2…回路、3…内部RAM、4…バス回路、5…外部メモリ、6…計算機、7…シミュレータ、8…システムメモリ、9…通信路、10…制御部、11…動作指示部、12…比較部、13…処理フェーズ管理部、14…シミュレータ制御部、15…システムメモリアクセス部、16…FPGA制御部、17…FPGA側メモリアクセス部、18…値変換部、19…値変換部
【要約】
動作検証システム(60)及び動作検証装置(50)は、回路(2)を模擬したシミュレータ(7)がインストールされた計算機(6)を備えている。計算機(6)によってFPGA(1)を制御する制御部(10)は、回路(2)とシミュレータ(7)とを動作させる動作指示部(11)と、バス回路(4)を介して内部RAM(3)からFPGA(1)のノード値が書き込まれる外部メモリ(5)から得た、回路(2)を動作させたときのノード値と当該ノード値に対応する内部状態値とを比較して、FPGA(1)の動作を検証する比較部(12)とを有する。動作指示部(11)は、回路(2)とシミュレータ(7)とを同時動作させる。