説明

ハードウェア−ソフトウェア協調検証システム、方法、及びプログラム

【課題】ハードウェア−ソフトウェア協調検証において、高速で高精度な検証を実現できる技術を提供する。
【解決手段】本システムでは、検証の際、ソフトウェア(SWシミュレータ)側からハードウェア(FPGAボード実装回路)側に対し、同期サイクル数(M)分の事前動作指示を発行することにより、当該複数サイクル単位におけるイベント有無及びイベント発生サイクル数などを先行確認する。そして、イベント有りの場合、同期サイクル数をイベント発生サイクル数に合わせるように変更し、ソフトウェア側からハードウェア側へ動作指示を発行し、ソフトウェア側がイベント情報を取得して処理する。複数サイクルの同期による高速な検証と、正確なタイミングでイベントを取得・処理することによる高精度な検証とが実現できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、組込みシステム開発などにおけるハードウェア−ソフトウェア協調検証方式などに関し、特に、FPGA(Field Programmable Gate Array)ボードとソフトウェアシミュレータの協調検証方式に関する。
【背景技術】
【0002】
近年の組込みシステムの高機能化・高性能化に伴い、開発すべきハードウェア・ソフトウェアはますます複雑化しており、開発期間・コストが増加する傾向にある。またその一方で開発サイクルは短期化しており、より短期で低コストな組込みシステム開発が求められている。
【0003】
上記の課題を解決するために、仮想プロトタイピング手法が用いられている。仮想プロトタイピング手法は、SoC(System on Chip)の完成前に、仮想SoC上でソフトウェアやファームウェアを検証することができる手法であり、開発段階初期でソフトウェアとシステムの統合が可能になり、開発期間・コストを削減し、品質を向上する効果がある。
【0004】
上記手法では、具体的には、クロックを発生させ、サイクル精度の動作検証が可能なソフトウェアシミュレータ上で、CPUやメモリといったハードウェアの実動作を模擬したモデルを作成し、そのモデルを組み合わせて実機と同等な機能を持つ仮想SoCを作成する。この仮想SoC上で、ハードウェア開発と並行して、ソフトウェアやファームウェアの検証を行うことができる。
【0005】
しかし、上記のソフトウェアシミュレータ上でSoC(仮想SoC)を構成するハードウェアについてはモデル化が必須であり、既存のRTL(Register Transfer Level)で記述されたハードウェア資産などについてはソフトウェアシミュレータ上では扱えないという問題があった。
【0006】
上記の問題を解決するために、FPGAボードのFPGAに既存のハードウェア資産を実装(プログラミング)し、このFPGAボード(実装回路)とソフトウェアシミュレータ(仮想SoC)とにおける動作の協調検証を行う方式(「ハードウェア−ソフトウェア協調検証方式」)が用いられている。この協調検証方式では、ハードウェアモデルの作成が不要であり、かつ、既存のハードウェア資産やIP(Intellectual Property)をそのまま活用可能である上、FPGAで高速に実行(回路動作)が可能であるというメリットがある。
【0007】
しかし、上記協調検証方式においても以下のような課題がある。FPGAボードに実装されたハードウェアはFPGA内のクロック(第2の時間軸)で動作しており、一方、ソフトウェアシミュレータ上のハードウェアはソフトウェアシミュレータ内のクロック(第1の時間軸)で動作している(FPGA側のクロックの方が高速)。これら異なる時間軸を持つ2つのシステムの自立制御においては、これら2つが異なるクロックで非同期に動作しており、特にメカなどの高精度かつ高速な検証が求められる環境では、お互いの同期をとることが課題となっている。
【0008】
上記の課題に対して、従来技術として、(1)毎サイクル同期方式、(2)トランザクション同期方式、及び特開2009−3583号公報(特許文献1)等がある。
【0009】
(1)毎サイクル同期方式は、ソフトウェアシミュレータが発生させたクロックをFPGAボード実装回路(FPGAで実装された回路)に与え、毎サイクル(クロック単位)で両者の同期をとりながら動作の検証を行う方式である。この方式では1サイクル毎に同期をとるため、高精度な検証が可能となる。
【0010】
(2)トランザクション同期方式は、ソフトウェアシミュレータからFPGAボード実装回路へのアクセスをトランザクション単位(READ/WRITEなどのコマンド単位)で行う方式である。ソフトウェアシミュレータからトランザクション(コマンド)が発行されると、FPGAボードに実装されたトランザクタ回路が当該コマンドを解析した後、サイクルレベルの信号に変換し、FPGAボード実装回路を動作させる。この方式において、ハードウェア−ソフトウェア間の同期は、複数サイクル同期実行指示(例えば50サイクル分の同期実行)をトランザクション(コマンド)で発行することにより可能となる。
【0011】
また、特許文献1には、ソフトウェア側(ソフトウェアシミュレータ)からのハードウェア側(FPGAボード実装回路)の起動に対し、ソフトウェア側から同期をとる条件として開始条件と終了条件を与え、この条件による同期をとっている区間では毎サイクル同期をとる技術が開示されている。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2009−3583号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
背景技術のハードウェア−ソフトウェア協調検証方式では以下のような問題が挙げられる。
【0014】
(1)毎サイクル同期方式では、1サイクル毎に同期をとるため、高精度な検証が可能なメリットがあるが、ハードウェア−ソフトウェア間でサイクル毎の通信が必要であるため、シミュレーション速度の低下の問題が挙げられる。
【0015】
(2)トランザクション同期方式は、複数サイクル単位(トランザクション単位)で同期をとるため、高速な検証が可能であるメリットがある。ハードウェア側は高速なクロックで処理(動作)するため、1トランザクション内の複数サイクル単位の処理(動作)は高速で済む。一方、FPGAボード実装回路から割込みなどのイベントが発生する場合に、ソフトウェアシミュレータが正確なタイミングで当該イベント(イベント情報)を取得することが困難であるため、検証精度の低下の問題が挙げられる。従来技術では、ソフトウェア側がハードウェア側からの発生イベント(イベント情報)を適切に取得して処理する手段について考慮されておらず、発生イベント(イベント情報)を取得したサイクル時点よりも後のサイクル時点で処理する仕組みであるため、検証精度が低い。
【0016】
また、特許文献1では、同期をとる区間が多数ある場合、シミュレーション速度が低下する問題がある。また、(2)の方式と同様に、ソフトウェアシミュレータがFPGAボードからイベントを適切に取得して処理する手段について考慮されていないため、検証精度の低下の問題がある。
【0017】
以上を鑑み、本発明の目的は、ハードウェア(FPGAボード実装回路)−ソフトウェア(シミュレータ)間の協調検証において、基本的には上記トランザクション同期方式(複数サイクルで同期をとる方式)を前提とすることで高速・短時間での検証を実現し、更に、ソフトウェア側がハードウェア側からの発生イベント(イベント情報)を適切に取得して処理する手段(イベント情報を正確なタイミングで処理する仕組み)を備えることで高精度な検証を実現できる技術、すなわち、高速で高精度な検証を実現できる技術を提供することである。
【課題を解決するための手段】
【0018】
前記目的を達成するため、本発明の代表的な実施の形態は、プログラム可能なハードウェア回路(FPGAボード等)に実装(プログラム)される回路とソフトウェアシミュレータとの間で協調させて対象システム(組込みシステムのSoC等)の動作を検証するハードウェア−ソフトウェア協調検証システムなどであって、以下に示す構成を有することを特徴とする。
【0019】
本システムでは、ハードウェア回路とソフトウェアシミュレータが通信媒体で接続され各々のクロックで動作し、ソフトウェアシミュレータに構成されるインタフェースモデルと、ハードウェア回路に構成されるトランザクタ回路との間でトランザクションを行うことにより同期する。
【0020】
本システムは、(1)ソフトウェアシミュレータ(インタフェースモデル)からハードウェア回路(トランザクタ回路)に対し、同期サイクル数の指定を伴う事前動作指示のトランザクションを発行し、当該事前動作指示に従いハードウェア回路(接続回路)を事前動作させることにより、当該同期サイクル数の複数サイクル単位におけるイベント発生有無及びイベント発生サイクル数を含む情報を先行確認する第1の機能を有する。
【0021】
本システムは、(2)前記先行確認に応じて、イベント有りの場合は当該イベント発生サイクル数に合わせて前記同期サイクル数を調整し、ソフトウェアシミュレータ(インタフェースモデル)からハードウェア回路(トランザクタ回路)に対し、当該調整した同期サイクル数の指定を伴う動作指示のトランザクションを発行し、当該動作指示に従いハードウェア回路(接続回路)を動作させ、イベント情報を取得して処理する、第2の機能を有する。
【発明の効果】
【0022】
本発明の代表的な実施の形態によれば、ハードウェア−ソフトウェア間の協調検証において、基本的には上記トランザクション同期方式を前提とすることで高速・短時間での検証を実現し、更に、ソフトウェア側がハードウェア側からの発生イベントを適切に取得して処理する手段(イベント情報を正確なタイミングで処理する仕組み)を備えることで高精度な検証を実現できる。
【図面の簡単な説明】
【0023】
【図1】本発明の一実施の形態のシステム(ハードウェア−ソフトウェア協調検証システム)の概要を説明するための図であり、(a)は、ハードウェア(FPGAボード実装回路)−ソフトウェア(ソフトウェアシミュレータ)間の協調検証(シミュレーション)の際の動作概要を示し、(b)は、同期サイクル数などの例を示す。
【図2】本発明の一実施の形態のシステムの構成例を示す図である。
【図3】ソフトウェア側(FPGAボードI/Fモデル)及びハードウェア側(トランザクタ回路)の必要機能の構成例を示す図である。
【図4】FPGAボードI/Fモデルの処理フローを示す図である。
【図5】トランザクタ回路の処理フローを示す図である。
【図6】本実施の形態の適用結果(効果)を説明するための図である。
【図7】従来のトランザクション同期方式の問題点を説明するための図である。
【発明を実施するための形態】
【0024】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。以下適宜、HW:ハードウェア、SW:ソフトウェア、TR:トランザクション、E:イベント、等と略す。
【0025】
<概要>
図1を用いて、本発明の一実施の形態のシステム(HW−SW協調検証システム)の概要などを説明する。本方式(HW−SW協調検証方式)は、図2,図3等に示すシステム構成(検証環境)上で、図1,図4,図5等に示す動作・処理(HW−SW協調検証方法の処理手順)を行う。また図6,図7では本方式での検証の事例・効果について従来技術と比較して示している。
【0026】
図1(a)で、SWシミュレータ(図2、100)とFPGAボード実装回路(図2、200)との間での動作・処理の概要を示している。図1(b)は同期サイクル数(M)などの例を示す。
【0027】
(A0)検証の際、SWシミュレータ(図2、100)では、FPGAボードI/Fモデル(図2、101)に対し、複数サイクルで同期をとる協調検証方式における単一のコマンド(C0)を発行する。C0は同期サイクル数(M=M1)の指定などを伴う。FPGAボードI/Fモデルでは、コマンド(C0)をもとに、以下の2種類のコマンド(C1,C2)を、FPGAボード実装回路のトランザクタ回路(図2、201)に対してトランザクションとして順に発行する。
【0028】
(A1−1)まず、第1のトランザクションにおいて、事前動作指示のコマンドC1を発行する。C1は、事前動作によりイベントを先行確認するためのコマンドである。指定の同期サイクル数(M=M1)と共にC1を発行する。
【0029】
(B1−1)トランザクタ回路は、C1{M1}を受領する。(B1−2)トランザクタ回路は、C1に従う事前動作の前に接続回路(ユーザ回路B)の状態を退避しておく。(B1−3)トランザクタ回路は、C1{M1}に従い、接続回路(ユーザ回路B)を複数サイクル(M1)分で事前動作させることで、当該複数サイクル内におけるイベント有無やイベント発生サイクル数(M2)を確認・保存する。(B1−4)トランザクタ回路は、事前動作の後、接続回路(ユーザ回路B)の状態を、事前動作の前の状態に復元する。(B1−5)トランザクタ回路は、事前動作の後、事前動作完了やイベント有無を示すC1結果応答をFPGAボードI/Fモデルへ通知する。
【0030】
(A1−2)SWシミュレータ(FPGAボードI/Fモデル)は、通知(C1結果)を受領する。(A1−3)FPGAボードI/Fモデルは、C1結果から、イベント有無やイベント発生サイクル数(M2)を取得でき、即ちイベント先行確認ができる。
【0031】
(A2−1)FPGAボードI/Fモデルは、上記先行確認の結果に応じて、次に、第2のトランザクションとして、本動作指示のコマンドC2を発行する。この際、イベント状況(イベント有無)に応じて同期サイクル数Mを調整し、調整した同期サイクル数Mの指定でC2を発行する。イベント無しの場合は、同期サイクル数MをM1のままとし、イベント有りの場合は、同期サイクル数MをM2に変更する。
【0032】
(B2−1)トランザクタ回路は、C2{M1/M2}を受領する。(B2−2)トランザクタ回路は、C2で指定された同期サイクル数M(M1/M2)の分、接続回路(ユーザ回路B)を動作させる。(B2−3)トランザクタ回路は、C2結果応答を通知する。(A2−2)SWシミュレータ(FPGAボードI/Fモデル)は、通知(C2結果)を受領し、イベント情報を取得して処理する。
【0033】
図1(b)で、C0での同期サイクル数Mの指定が例えば50である。C1での同期サイクル数M1の指定が同じく50となる。C1による事前動作(イベント先行確認)により、イベント有りの場合、イベント発生サイクル数M2が例えば20とする。これを受けてC2の同期サイクル数(M2)の指定が20となる。
【0034】
<システム>
図2に示す本システム(検証環境)の構成例において、PC10と、FPGAボード20とが、通信媒体30(ケーブルや無線など)を介して接続される構成である。PC10はSWシミュレータ100の実行環境である。FPGAボード20は、ハードウェアシミュレータ(プログラム可能な回路)としてFPGA(実装回路)200を搭載している。
【0035】
SWシミュレータ100は、CPUやメモリといったハードウェアの実動作をシミュレーションしたソフトウェアモデルを組み合わせて仮想SoC110(対象システム)を構築し、対象システムの動作検証が可能なソフトウェアである。
【0036】
SWシミュレータ100は、同期サイクル数Mなどのパラメータ情報106を入力する。なおMは任意に指定できる。PC10のユーザ(検証者)によりパラメータ情報106及び指示などの入力やその設定などが可能である。本システムによる出力(検証状況や検証結果など)は例えばPC10の画面に表示される。
【0037】
SWシミュレータ100(仮想SoC110)において、バスモデル103に、CPUモデル104、メモリモデル105、ユーザ回路A102、及びFPGAボードI/F(インタフェース)モデル101が接続されている。ユーザ回路A102は、ユーザによりSWモデルとして設定される。
【0038】
FPGAボード20のFPGA200において、トランザクタ回路201、及びユーザ回路B202(既存回路やIPなど)が実装(プログラム)されている。ユーザ回路B202は、RTLの既存回路など、既存のハードウェア資産やIPによる実装回路(接続回路)であり、ユーザにより設定され、検証の対象となる。
【0039】
FPGAボードI/Fモデル101とFPGA200のトランザクタ回路201との間で通信(トランザクション)が行われる。詳しくは図3等に示す。
【0040】
検証の際、FPGA200実装回路(ユーザ回路B202)への動作指示は、SWシミュレータ100がFPGAボードI/Fモデル101に対しトランザクションないしその指示(トランザクション情報)を発行することで開始される。それによりFPGAボードI/Fモデル101は、トランザクタ回路201に対しトランザクション(対応するコマンド信号等)を発行し、これによりトランザクタ回路201を介してユーザ回路B202の動作を実行する。SWシミュレータ100から発行されたトランザクションに対し、FPGAボードI/Fモデル101とトランザクタ回路201が、指定された同期サイクル数Mによる複数サイクル単位(M≧1)で同期をとって動作・処理を行う。かつ、本システムでは、ユーザ回路B202が発行するイベント(E情報)を、SWシミュレータ100側に正確なタイミングで取得するために、FPGAボードI/Fモデル101とトランザクタ回路201に、必要な機能を備えている(図3)。
【0041】
<従来の問題点>
図7は、従来のトランザクション同期方式の問題点について示す。SWシミュレータ(上側、第1の時間軸T1(サイクル時点))とFPGA実装回路(下側、第2の時間軸T2(サイクル時点))とにおいて、トランザクション毎に、同期サイクル数M=50サイクルで同期して動作・検証した場合を例に説明する。
【0042】
シミュレーション開始(0サイクル時点)からNサイクル時点(701)で、SWシミュレータからFPGA実装回路へ、動作指示(M=50)のトランザクション(TR)を発行する(702)。FPGA実装回路は、この動作指示を受けて、M=50サイクル分の動作を開始する(703)。FPGA実装回路では、開始(703)から20サイクル経ったN+20サイクル時点(704)で、イベントが発行されたとする(705)。これにより発生イベントを示す信号がソフトウェア側へ送られる(706)。引き続き、FPGA実装回路は、N+50サイクル時点(707)で、M=50サイクル分の動作が完了し、これにより動作完了の通知(動作指示への応答)をソフトウェア側へ発行する(708)。
【0043】
SWシミュレータは、N+50サイクル時点(707)で、ハードウェア側からの通知(708)を受けて、イベント有無を判定しイベント情報を取得する(709)。
【0044】
ここで従来技術の問題として、N+20サイクル時点(704)で既にFPGA実装回路がイベントを発行しているにもかかわらず(706)、SWシミュレータが当該イベントを取得・確認できるのはN+50サイクル時点(707)であり、30サイクル分遅れている。この遅れ(ズレ)により、検証精度の低下を招いてしまう。
【0045】
上記の問題点を解決するために、本実施の形態では、図2のFPGAボードI/Fモデル101とトランザクタ回路201に図3に示す機能を具備し、イベント先行確認に応じて同期サイクル数を調整するといった特徴的な検証方式を実現している。
【0046】
<機能>
図3では、特に、FPGAボードI/Fモデル101とトランザクタ回路201に備える機能(処理部)の構成例を示している(矢印は機能間の処理関係の一例を示す)。これら各機能は、FPGAボードI/Fモデル101側はプログラム処理により実現され、トランザクタ回路201側は実装回路により実現される。
【0047】
FPGAボードI/Fモデル101は、トランザクション情報解析機能401、トランザクタ回路用信号変換機能402、事前動作指示機能(=イベント先行確認機能)403、動作指示機能404、イベント情報取得・発行機能405、等を備える。
【0048】
TR情報解析機能401は、上位(SWシミュレータ100)から発行されたTR情報を解析し、WRITE、READ、複数サイクル同期動作などの発行コマンド(C0)、及び当該発行コマンドの実行に伴う必要な情報(パラメータ情報106)等を取得する。
【0049】
トランザクタ回路用信号変換機能402は、上記TR情報解析機能401で取得したTR情報を、トランザクタ回路201に対してトランザクション(対応するコマンド等)として発行するための信号に変換する。
【0050】
事前動作指示機能403は、イベント先行確認機能を含み、上記トランザクタ回路用信号変換機能402で変換されたトランザクションの信号を、トランザクタ回路201に対し、事前動作指示(第1のコマンド:C1)として与える。C1の信号は、同期サイクル数(M1)の指定を伴う。そして、事前動作指示機能403は、ハードウェア側から返される結果(通知)をもとに、イベント発生有無、発生サイクル数(M2)などの情報を取得し、イベントを先行確認することができる。
【0051】
動作指示機能404は、上記トランザクタ回路用信号変換機能402で変換されたトランザクションの信号を、トランザクタ回路201に対し、動作指示(第2のコマンド:C2)として与える。ここで、C2で指定する同期サイクル数Mとして、上記事前動作指示機能403で得たイベント有無などの情報に従い、イベントが無い場合は、事前動作指示(C1)で指定した同期サイクル数(M1)をそのまま設定し、イベントが有る場合は、イベント発生サイクル数(M2)に変更するように設定する。
【0052】
イベント情報取得・発行機能405は、上位(SWシミュレータ100)との間でイベントに関する処理を行う機能であり、上記イベントが有る場合、トランザクタ回路201からイベント情報を取得し、SWシミュレータ100に対し、割込みなどのイベントを発行する(イベント情報を与える)。
【0053】
トランザクタ回路201は、トランザクション情報解析機能501、サイクルレベル信号変換機能502、状態退避機能503、接続回路事前動作機能504、状態復元機能505、接続回路動作機能506、記憶領域520等を備える。
【0054】
TR情報解析機能501は、FPGAボードI/Fモデル101から発行されたトランザクションの信号を解析し、WRITE、READ、複数サイクル動作などの発行コマンド、及び発行コマンドの実行に必要な情報(パラメータ情報106など)を取得する。
【0055】
サイクルレベル信号変換機能502は、上記TR情報解析機能501で取得したトランザクションの情報を、トランザクタ回路201に接続された回路(ユーザ回路B202)を動作させるためのサイクルレベルの信号に変換する。
【0056】
状態退避機能503は、対象の接続回路(ユーザ回路B202)の現在の状態を、接続回路状態復元情報511として記憶領域520内に格納(退避)する。接続回路状態復元情報511は、上記接続回路の状態を事前動作の直前の状態に復元するための情報である。
【0057】
接続回路事前動作機能504は、イベント先行確認機能を含み、上記トランザクションの情報で取得した同期サイクル数(M=M1)分、接続回路(ユーザ回路B202)を事前動作(区別のためP1とする)させる。そして、この同期サイクル数(M1)内においてイベントが発生した場合は、当該イベントが発生したイベント発生サイクル数(M2)の情報(512)を記憶領域520内へ格納する。
【0058】
状態復元機能505は、記憶領域520に格納された接続回路状態復元情報511を使用して、接続回路における事前動作の後の状態を、事前動作の前の状態へ復元する(戻す)。
【0059】
接続回路動作機能506は、トランザクションの情報で取得した同期サイクル数(M=M1/M2)分、接続回路(ユーザ回路B202)を動作(区別のためP2とする)させる。
【0060】
なお、上記退避・復元(接続回路状態復元情報511の取得など)に関する方法・手段については特に限定されない。例としては、FPGAのリードバック機能を使用する方法、または、接続回路に状態退避機能を具備する構成などが挙げられる。
【0061】
<条件>
図1等に基づき、本実施の形態のシステムでの検証(シミュレーション)の処理や回路構成に関し、条件(前提)や事例などについて以下である。本実施の形態では、上位(SWシミュレータ100)からは、1回の複数サイクル同期動作のために1つのコマンド(C0)が発行され、これを受けて下位(FPGAボードI/Fモデル101、トランザクタ回路201)では、事前動作(イベント先行確認)の指示である第1のコマンド(C1)と、本動作の指示である第2のコマンド(C2)との2つの処理が自動的に行われる。
【0062】
SWシミュレータ100からFPGAボードI/Fモデル101に対して発行するトランザクション情報に関して、あるサイクル時点N(シミュレーション開始からNサイクル後の時点)で、「複数サイクル同期動作」のコマンド(C0)が発行される。当該コマンド(C0)には、同期サイクル数Mの指定が伴う。事例としてM=50とする。上記C0,M=50を含むトランザクション情報がFPGAボードI/Fモデル101に対して発行される。
【0063】
FPGAボードI/Fモデル101からトランザクタ回路201に対するトランザクションにおいては、C0に基づき、第1の指示(C1)、第2の指示(C2)が順に行われる。それぞれで指定される同期サイクル数Mは、C1ではM1、C2ではM1/M2である。これらに対応して、FPGA200側では、事前動作(P1)、本動作(P2)が順に行われる。
【0064】
また前提・事例として、FPGA200側のユーザ回路B202は、上記コマンド発行(動作開始)によるNサイクル時点から例えば20サイクル後であるN+20サイクル時点に、イベントが発生する回路であるとする(図1(b),後述の図6)。イベント発生有無は「有り」、イベント発生サイクル数(M2)は20である。
【0065】
<処理フロー>
上記条件等に基づく処理フローについて説明する。図4でFPGAボードI/Fモデル101の処理、及び図5でトランザクタ回路201の処理を示す(図1、図3、図6等も対応)。以下S401等は処理ステップを示す。
【0066】
S401: 図4で、FPGAボードI/Fモデル101は、Nサイクル時点で上位からトランザクション情報(C0,M等を含む)を受けると、TR情報解析機能401によりTR情報を解析する処理を行う。即ち、発行コマンド:C0、同期サイクル数:M=50、等の情報を取得する。また必要に応じてサイクルレベル信号変換機能502により、ハードウェア側のクロックに対応した信号への変換処理を行う。
【0067】
S402: トランザクタ回路用信号変換機能402により、上記取得情報(C0,M)を用いて、トランザクタ回路201へ発行するための信号に変換する処理を行う。
【0068】
S403: 事前動作機能403により、上記信号を用いて、トランザクタ回路201に対し、指定の同期サイクル数(M1=50)分の事前動作指示を第1のコマンド:C1(第1のトランザクション)として発行する。
【0069】
S404: FPGAボードI/Fモデル101(事前動作指示機能403)は、トランザクタ回路201からのC1結果の通知を待ち受ける。この通知は、事前動作完了(イベント先行確認)の通知であり、少なくともイベント有無を示す情報が含まれる。そしてこの通知を受けると、FPGAボードI/Fモデル101(事前動作指示機能403)は、図3のトランザクタ回路201の記憶領域520のイベント発生サイクル数(M2)の情報を参照して取得する。前述のように接続回路(ユーザ回路B202)はN+20サイクル時点でイベントを発行するので、イベント発生サイクル数(M2)として20が取得される。なお、上記C1結果の通知でイベント有無だけでなくイベント発生サイクル数(M2)を一緒に通知してもよい。
【0070】
S405: 事前動作指示機能403は、上記通知(イベント情報)をもとに、イベント有無などを判定(確認)する。イベント有りの場合(Y)はS406へ、イベント無しの場合(N)はS409へ進む。
【0071】
S409: イベント無しの場合(N)、動作指示機能404により、最初(C0,C1)に指定された同期サイクル数(M=50)のままの指定で、動作指示のコマンド(C2)を第2のトランザクションとしてトランザクタ回路201へ発行する。
【0072】
S406: イベント有りの場合(Y)、動作指示機能404により、動作指示のコマンド(C2)を発行する前に、指定の同期サイクル数(M)を、イベント発行サイクル数(M2=20)に合わせて変更する。
【0073】
S407: 動作指示機能404により、上記変更後の同期サイクル数(M2=20)を指定して、動作指示のコマンド(C2)を第2のトランザクションとしてトランザクタ回路201へ発行する。
【0074】
S408: イベント有りの場合なので、M2分のサイクルの動作後に丁度イベントが発生している。イベント情報取得・発行機能405は、これによるイベント情報を取得し、SWシミュレータ100に対して当該イベント情報を発行する。
【0075】
S410: 動作指示機能404は、S409またはS408におけるC2結果(通知)を受領し、処理を終了する。
【0076】
S501: 図5で、トランザクタ回路201に対してFPGAボードI/Fモデル101からのトランザクションが発行される(対応するコマンド等を受領する)。TR情報解析機能501は、事前動作指示(C1)(M1=50)、または、動作指示(C2)(M1=50またはM2=20)を解析により取得する。
【0077】
S502: トランザクタ回路201は、上記取得したコマンドがC1かC2か判定する。C1の場合(Y)はS503へ、C2の場合(N)はS510へ進む。
【0078】
S503: 状態退避機能503は、接続回路(ユーザ回路B202)の現在の状態を、接続回路状態復元情報511として記憶領域520内に保存(退避)する。
【0079】
S504: 接続回路事前動作機能504は、接続回路(ユーザ回路B202)を、C1で指定された同期サイクル数(M1=50)分、事前動作(P1)させる。
【0080】
S505: 上記C1の事前動作に伴い、接続回路事前動作機能504は、接続回路(ユーザ回路B202)で発生するイベントがある場合はそのイベント情報を取得する。
【0081】
S506: 上記イベント情報に基づきイベント有りの場合(Y)は、S507の処理を行う。前述した例では、接続回路(ユーザ回路B202)が例えばN+20サイクル時点でイベントを発生する。
【0082】
S507: 接続回路事前動作機能504は、上記発生イベントについて、イベント発生サイクル数(M2=20)の情報を、記憶領域520内に設定する。
【0083】
S508: 状態復元機能505は、S503で保存された情報(511)を用いて、接続回路(ユーザ回路B202)の状態を、事前動作の前の状態(Nサイクル時点の状態)に復元する。
【0084】
S509: 一方、前記動作指示(C2)の場合、接続回路動作機能506は、接続回路(ユーザ回路B202)を、C2で指定された同期サイクル数(M1=50またはM2=20)分、動作(P2)させる。
【0085】
S510: トランザクタ回路201は、上記S504の事前動作(P1)またはS509の動作(P2)の結果を、応答として、FPGAボードI/Fモデル101へ通知する。
【0086】
<効果等>
本実施の形態によれば、複数サイクルで同期をとることができるため高速・短時間での検証を実現でき、かつ、ソフトウェア側がハードウェア側からの発生イベントを適切に取得して処理する手段(イベント情報を正確なタイミングで処理する仕組み)としてイベント先行確認(事前動作)の機能を備えるため、高精度な検証を実現できる。
【0087】
従来の毎サイクル同期方式では、複数サイクルの検証のために、HW−SW間のトランザクションの数が増えるため、検証速度が遅くなる。一方、本実施の形態では、複数サイクルの検証のために、C1,C2の2つのトランザクションで済むため、検証速度が早くなる。また、従来のトランザクション同期方式では、イベントの発生と処理のタイミングが異なるため、検証精度が低い。一方、本実施の形態では、イベントの発生に合わせたタイミングで処理できるため、検証精度が高くなる。
【0088】
図6,図7等を用いて例を示す。図6は、本実施の形態の方式の適用結果を、図7の従来技術のトランザクション同期方式の場合と比較して示している。図6で、検証の際、SWシミュレータ100は、シミュレーション開始からNサイクル時点(601)で、「複数サイクル同期動作」の指示(C0)(M=50)を発行する。この際、FPGAボードI/Fモデル101からトランザクタ回路201に対し、イベント先行確認のための事前動作指示(C1)(M1=50)を発行することにより(第1のトランザクション)、イベント情報(イベント有り、M2=20)を取得済みとなる。そのイベント先行確認の結果に応じて、同期サイクル数Mを調整して、FPGAボードI/Fモデル101からトランザクタ回路201に、動作指示(C2)(M2=20)を発行する(第2のトランザクション)(602)。これにより、FPGA200の接続回路(ユーザ回路B202)を丁度イベントが発生する時点まで動作させることになる。FPGA200の接続回路では、Nサイクル時点(601)の動作開始(603)から20サイクル経ったN+20サイクル時点(604)でイベントが発行され(605)、動作完了の通知が行われる(606)。SWシミュレータ100は、N+20サイクル時点(604)で通知(606)を受け、イベント情報を取得して処理することができる(607)。
【0089】
前述した図7の従来技術では、イベント取得及び処理がN+50サイクル時点であるのに対し、図6の本実施の形態では、N+20サイクル時点ですぐにイベントを取得して処理することができるため、検証の精度が高くなる。
【0090】
同期サイクル数Mはパラメータ(106)で制御できる。他の実施の形態として、複数回の同期にあたり、それぞれの同期サイクル数M(C1で指定するM1)を一定値にするのではなく、パラメータ(106)で可変に制御する。例えば前回までの結果(イベント発生状況)を考慮して次回の好適なM1値を決定する等。それにより、サイクル精度と動作時間を考慮した検証が可能となる。
【0091】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【0092】
本発明は、組込みシステム開発などにおける検証システム、FPGAボード、ソフトウェアシミュレータ、等に利用可能である。
【符号の説明】
【0093】
10…PC、20…FPGAボード、30…通信媒体、100…ソフトウェアシミュレータ、101…FPGAボードI/Fモデル、102…ユーザ回路A、103…バスモデル、104…CPUモデル、105…メモリモデル、106…パラメータ情報、110…仮想SoC、200…FPGA(実装回路)、201…トランザクタ回路、202…ユーザ回路B、401…トランザクション情報解析機能、402…トランザクタ回路用信号変換機能、403…事前動作指示機能、404…動作指示機能、405…イベント情報取得・発行機能、501…トランザクション情報解析機能、502…サイクルレベル信号変換機能、503…状態退避機能、504…接続回路事前動作機能、505…状態復元機能、506…接続回路動作機能、511…接続回路状態復元情報、512…イベント発生サイクル数、520…記憶領域。

【特許請求の範囲】
【請求項1】
プログラム可能なハードウェア回路にプログラムされた回路とソフトウェアシミュレータとを協調させて対象システムの動作を検証するハードウェア−ソフトウェア協調検証システムであって、
前記ハードウェア回路と前記ソフトウェアシミュレータが通信媒体で接続され各々のクロックで動作し、前記ソフトウェアシミュレータに構成されるインタフェースモデルと、前記ハードウェア回路に構成されるトランザクタ回路との間でトランザクションを行うことにより同期し、
(1)前記ソフトウェアシミュレータのインタフェースモデルから前記ハードウェア回路のトランザクタ回路に対し、同期サイクル数の指定を伴う事前動作指示である第1のコマンドによるトランザクションを発行し、当該指示に従い前記ハードウェア回路を事前動作させることにより、当該同期サイクル数の複数サイクル単位におけるイベント発生有無及びイベント発生サイクル数を含む情報を先行確認する第1の機能と、
(2)前記先行確認に応じて、イベント有りの場合は当該イベント発生サイクル数に合わせて前記同期サイクル数を調整し、前記ソフトウェアシミュレータのインタフェースモデルから前記ハードウェア回路のトランザクタ回路に対し、当該調整した同期サイクル数の指定を伴う動作指示である第2のコマンドによるトランザクションを発行し、当該指示に従い前記ハードウェア回路を動作させ、発生イベント情報を取得して処理する第2の機能と、を有すること、を特徴とするハードウェア−ソフトウェア協調検証システム。
【請求項2】
請求項1記載のハードウェア−ソフトウェア協調検証システムにおいて、
前記ソフトウェアシミュレータから前記インタフェースモデルに対し、複数サイクル単位の同期動作を指示する単一のコマンドを発行し、
前記単一のコマンドに従い、前記インタフェースモデルから前記トランザクタ回路に対し、前記事前動作指示の第1のコマンドを発行し、当該第1のコマンドの結果を受領し、次に、前記インタフェースモデルから前記トランザクタ回路に対し、前記動作指示の第2のコマンドを発行し、当該第2のコマンドの結果を受領すること、を特徴とするハードウェア−ソフトウェア協調検証システム。
【請求項3】
請求項1記載のハードウェア−ソフトウェア協調検証システムにおいて、
前記ハードウェア回路のトランザクタ回路から前記ソフトウェアシミュレータのインタフェースモデルに対し、前記イベント発生有無を通知し、当該通知により、前記ソフトウェアシミュレータのインタフェースモデルが前記ハードウェア回路のトランザクタ回路から前記イベント発生サイクル数の情報を取得すること、を特徴とするハードウェア−ソフトウェア協調検証システム。
【請求項4】
請求項2記載のハードウェア−ソフトウェア協調検証システムにおいて、
前記ハードウェア回路のトランザクタ回路は、前記第1のコマンドを受けると、接続回路の状態を退避してから前記事前動作し、その後、前記退避に基づき前記接続回路の状態を前記事前動作の前の状態に復元すること、を特徴とするハードウェア−ソフトウェア協調検証システム。
【請求項5】
プログラム可能なハードウェア回路にプログラムされた回路とソフトウェアシミュレータとを協調させて対象システムの動作を検証するハードウェア−ソフトウェア協調検証方法であって、
前記ハードウェア回路と前記ソフトウェアシミュレータが通信媒体で接続され各々のクロックで動作し、前記ソフトウェアシミュレータに構成されるインタフェースモデルと、前記ハードウェア回路に構成されるトランザクタ回路との間でトランザクションを行うことにより同期し、
(1)前記ソフトウェアシミュレータのインタフェースモデルから前記ハードウェア回路のトランザクタ回路に対し、同期サイクル数の指定を伴う事前動作指示である第1のコマンドによるトランザクションを発行し、当該指示に従い前記ハードウェア回路を事前動作させることにより、当該同期サイクル数の複数サイクル単位におけるイベント発生有無及びイベント発生サイクル数を含む情報を先行確認する第1の処理ステップと、
(2)前記先行確認に応じて、イベント有りの場合は当該イベント発生サイクル数に合わせて前記同期サイクル数を調整し、前記ソフトウェアシミュレータのインタフェースモデルから前記ハードウェア回路のトランザクタ回路に対し、当該調整した同期サイクル数の指定を伴う動作指示である第2のコマンドによるトランザクションを発行し、当該指示に従い前記ハードウェア回路を動作させ、発生イベント情報を取得して処理する第2の処理ステップと、を有すること、を特徴とするハードウェア−ソフトウェア協調検証方法。
【請求項6】
プログラム可能なハードウェア回路にプログラムされた回路とソフトウェアシミュレータとを協調させて対象システムの動作を検証するハードウェア−ソフトウェア協調検証システムにおける前記ソフトウェアシミュレータを実現するプログラムであって、
前記ハードウェア回路と前記ソフトウェアシミュレータが通信媒体で接続され各々のクロックで動作し、前記ソフトウェアシミュレータに構成されるインタフェースモデルと、前記ハードウェア回路に構成されるトランザクタ回路との間でトランザクションを行うことにより同期し、
(1)前記ソフトウェアシミュレータのインタフェースモデルから前記ハードウェア回路のトランザクタ回路に対し、同期サイクル数の指定を伴う事前動作指示である第1のコマンドによるトランザクションを発行し、当該指示に従い前記ハードウェア回路を事前動作させることにより、当該同期サイクル数の複数サイクル単位におけるイベント発生有無及びイベント発生サイクル数を含む情報を先行確認する第1の処理と、
(2)前記先行確認に応じて、イベント有りの場合は当該イベント発生サイクル数に合わせて前記同期サイクル数を調整し、前記ソフトウェアシミュレータのインタフェースモデルから前記ハードウェア回路のトランザクタ回路に対し、当該調整した同期サイクル数の指定を伴う動作指示である第2のコマンドによるトランザクションを発行し、当該指示に従い前記ハードウェア回路を動作させ、発生イベント情報を取得して処理する第2の処理と、をコンピュータに実行させること、を特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−48539(P2012−48539A)
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2010−190713(P2010−190713)
【出願日】平成22年8月27日(2010.8.27)
【出願人】(000233295)日立情報通信エンジニアリング株式会社 (195)
【Fターム(参考)】