JP2012155519A - シミュレーション装置、シミュレーション方法およびそのコンピュータ・プログラム - Google Patents
シミュレーション装置、シミュレーション方法およびそのコンピュータ・プログラム Download PDFInfo
- Publication number
- JP2012155519A JP2012155519A JP2011013929A JP2011013929A JP2012155519A JP 2012155519 A JP2012155519 A JP 2012155519A JP 2011013929 A JP2011013929 A JP 2011013929A JP 2011013929 A JP2011013929 A JP 2011013929A JP 2012155519 A JP2012155519 A JP 2012155519A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- data
- simulation
- built
- area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/261—Functional testing by simulating additional hardware, e.g. fault simulation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
【課題】機能IPの精度の高いシミュレーションを実現することが可能なシミュレーション装置を提供すること。
【解決手段】シミュレーション装置は、ユーザプログラム7を実行することによって機能IPを制御するCPU0(31)と、シミュレータプログラム6を実行することによって機能IPをシミュレートするCPU1(32)と、CPU0(31)およびCPU1(32)によってアクセスされる共有メモリ33とを含む。共有メモリ33には、機能IPの内蔵レジスタに相当する内蔵レジスタ領域がマッピングされており、CPU0(31)は、内蔵レジスタ領域にデータを書き込むことによってCPU1(32)によるシミュレーションを制御する。CPU1(32)は、内蔵レジスタ領域に書き込まれたデータに応じて機能IPのシミュレーションを実行する。したがって、機能IPの精度の高いシミュレーションを実現することが可能となる。
【選択図】図4
【解決手段】シミュレーション装置は、ユーザプログラム7を実行することによって機能IPを制御するCPU0(31)と、シミュレータプログラム6を実行することによって機能IPをシミュレートするCPU1(32)と、CPU0(31)およびCPU1(32)によってアクセスされる共有メモリ33とを含む。共有メモリ33には、機能IPの内蔵レジスタに相当する内蔵レジスタ領域がマッピングされており、CPU0(31)は、内蔵レジスタ領域にデータを書き込むことによってCPU1(32)によるシミュレーションを制御する。CPU1(32)は、内蔵レジスタ領域に書き込まれたデータに応じて機能IPのシミュレーションを実行する。したがって、機能IPの精度の高いシミュレーションを実現することが可能となる。
【選択図】図4
Description
本発明は、半導体装置に搭載されるハードウェアをシミュレートする技術に関し、特に、SoC(System on Chip)に搭載される特定用途の機能ブロック(IP)を効率的にシミュレートするシミュレーション装置、シミュレーション方法およびそのコンピュータ・プログラムに関する。
近年、半導体素子の微細化技術の進歩に伴い、CPU(Central Processing Unit)、メモリ、特定用途のハードウェアロジックなどを1チップに集積したSoCが開発されており、特に大量のストリームデータを処理するメディア処理などの用途に広く用いられている。
このような用途においては、SoCに搭載されているマイクロプロセッサだけではその処理性能が不足するため、処理の高速化のための特定用途のハードウェアロジック回路を機能ブロック(IP)として搭載する。そして、マイクロプロセッサが、1つまたは複数の機能ブロックを制御することによって、所望の処理および性能を達成することが多い。
このようなSoCに搭載されるIP開発のためのシミュレーション方法として、下記の特許文献1〜4に開示された発明がある。
特許文献1は、ホストネイティブとISS(Instruction Set Simulator)でプログラムをハイブリッド実行するとき、ターゲットシステム上で実行可能な機械語プログラムのISS上での実行を実現することのできるシステムシミュレーション装置を得ることを目的とする。ISSは、ターゲットプログラムのターゲットISA(Instruction Set Architecture)部分を実行する。バスシミュレータはアドレス変換テーブルを備える。ISSはバスシミュレータを介して、ISS上で動作するターゲットプログラムによる大域データへのメモリアクセス時に、アドレス変換テーブルを用いてホスト計算機上のアドレス空間に存在する大域データのアドレスを取得し、ホスト計算機上の大域データに対してメモリアクセスする。
特許文献2は、少ない工数で高速なシミュレーションを可能にすることを目的とする。LSI開発装置は、システムLSIに実装する処理を実行単位毎に分割した単位処理を全てソフトウェアで実行した場合の所定の性能と、分割した単位処理を全てハードウェアで実行した場合の所定の性能とを単位処理毎にそれぞれファイルに作成する性能算出部と、ファイルから取得した単位処理毎の処理の性能に基づいてシステムLSIの性能を評価する性能評価部とを備える。
特許文献3は、マルチコアマイコンシステムの開発方法及び開発装置において、少なくとも一つのパラメータを有するマルチコアを有するコントローラモデルがシミュレートされ、同時に少なくとも一つのパラメータを有しコントローラモデルにより制御される装置モデルがシミュレートされる。ユーザインターフェイスがコントローラモデルおよび装置モデルのパラメータにアクセスし、トリガーイベントに応じて選択的にコントローラモデルおよび装置モデルの実行を保留する。ユーザインターフェイスは、トリガー時にコントローラモデルおよび装置モデルのパラメータを変更することなく、コントローラモデルの各コアの種々のパラメータ及び装置モデルのパラメータの状態を決定し、決定された両コアのパラメータは表示装置に表示される。
特許文献4は、マルチCPU構成のプログラマブルコントローラにおいて、1つのCPUモジュールでI/Oをエミュレートするようにして、I/Oモジュールや外部接続なしで、実際のラダープログラムを動作させながら実機に近いデバッグを行うことができるシミュレーション装置を提供することを目的とする。エミュレーションCPUモジュールは、シミュレーションするための他のCPUモジュールであるシーケンスCPUモジュールからのI/Oモジュールアクセスを自己のCPU内でのアクセスとして処理可能なエミュレーション用I/Oプロセッサと、I/Oメモリとを備える。I/Oメモリには、予め登録されたI/O情報をもとに複数のCPUモジュールの各々に備えてあるI/Oモジュールと同等なデータテーブルを有すると共に、I/Oモジュールの動作をエミュレートするためのプログラムを動作させる仕組みを備える。
上述の特許文献1および特許文献2は、汎用PC(Personal Computer)上でモデルシミュレータを構成して実行する方式に関するものである。このモデルシミュレータにおいては、ハードウェアの振る舞いを全てソフトウェアで記述することによって、汎用PC上でのシミュレーションを可能としたものである。
この技術を用いた場合、ソフトウェアによる自由な記述が可能であるため、新規IPの動作についての振る舞いを記述することでシミュレータを開発することが可能である。しかしながら、そのIPがSoCに搭載される場合、既存のCPUや周辺IOとの協調動作が必要となるため、これらの既存モジュールも全てシミュレータとして動作させる必要がある。したがって、開発したモデルシミュレータのみを用いて先行的にこれらの外部のモジュールも含んだシステムに対するソフトウェア開発を実施することが困難であるといった問題点があった。
また、上述のモデルシミュレータを用いたシミュレーション環境の他に、実際のハードウェア設計に用いるRTL(Register Transfer Language)をFPGA(Field Programmable Gate Array)に実装して、その動作を確認するFPGAを用いたプロトタイプ環境がある。
この環境においては、周辺IOなどを含めた実機動作の確認が可能であるため、実際のLSIに近い環境でソフトウェア開発を行なうことが可能である。しかしながら、よりハードウェア設計に近い開発が必要となるため、新規IPに対してこれを適用するためにはその開発のための工数が大きくなり、ハードウェアへのフィードバックが必要な場合には、そのアーキテクチャの変更に伴って開発期間が増大するといった問題点があった。
また、近年ではSoCに複数のCPUを搭載したシステムLSI(Large Scale Integrated circuit)が開発されており、所望の性能を満たすことが可能である場合には、単一または複数のCPUにユーザプログラムを実行させることにより機能IPに相当する機能を実装することも可能である。このようなマルチコア構成のシミュレーション装置としては、上記の特許文献3および特許文献4に開示された発明を挙げることができる。
特許文献3は、複数のCPUによってコントローラモデルとシミュレータとを構成し、ユーザインタフェースからこれらに選択的にアクセスすることによりシミュレーションを行なうものである。この構成によって、CPUに機能IPの機能を割り当て、機能IP以外の周辺機能としてはCPUが接続されている実際のバスシステムのものを使用することで、高い精度のシミュレーションが可能である。しかしながら、ユーザインタフェースからシミュレータを制御するため、実際に機能IPを制御するCPU上で動作するユーザプログラムを、開発後のSoCでそのまま使用できないといった問題点があった。
また、特許文献4は、シミュレーション対象へのアクセスを処理するエミュレーション用プロセッサと、専用のシステムプログラムおよびメモリから構成されるエミュレーション用モジュールとを搭載し、このエミュレーションモジュールが機能IPとして動作するものである。しかしながら、機能IPと同様の構成をエミュレーションモジュールによって実現するが、マルチコアを構成するCPUのうち1つまたは複数のCPUをこのような専用のエミュレーションモジュールとして構成する必要があるため、このような構成を有するSoCを、シミュレーション装置の専用用途のSoCとして設計して準備する必要があるといった問題点があった。
本発明は、上記問題点を解決するためになされたものであり、その目的は、機能IPの精度の高いシミュレーションを実現することが可能なシミュレーション装置、シミュレーション方法およびそのコンピュータ・プログラムを提供することである。
本発明の一実施例によれば、開発対象の機能ブロックをシミュレートするためのシミュレーション装置が提供される。シミュレーション装置は、ユーザプログラムを実行することによって機能IPを制御する第1のプロセッサと、シミュレータプログラムを実行することによって機能IPをシミュレートする第2のプロセッサと、第1のプロセッサおよび第2のプロセッサによってアクセスされる共有メモリとを含む。共有メモリには、機能IPの内蔵レジスタに相当する内蔵レジスタ領域がマッピングされており、第1のプロセッサは、内蔵レジスタ領域にデータを書き込むことによって第2のプロセッサによるシミュレーションを制御し、第2のプロセッサは、内蔵レジスタ領域に書き込まれたデータに応じて機能IPのシミュレーションを実行する。
本発明の一実施例によれば、第2のプロセッサが、内蔵レジスタ領域に書き込まれたデータに応じて機能IPのシミュレーションを実行するので、機能IPの精度の高いシミュレーションを実現することが可能となる。
図1は、本発明の対象となるシステムの一例を示す図である。このシステムは、システム・オン・チップ(SoC)1と、ソフトウェア開発環境としての汎用PC2と、ユーザプログラム4が記憶される外部メモリ3とを含む。
また、SoC1は、CPU11と、内部メモリ12と、デバッグ回路13と、周辺I/O14および15と、機能IP16と、開発対象となる新規IP17とを含む。なお、CPU11と、内部メモリ12と、外部メモリ3と、周辺I/O14および15と、機能IP16と、新規IP17とが、システムバス18を介して接続される。
デバッグ回路13は、ソフトウェア開発環境である汎用PC2から受けた指示に応じて、CPU11にユーザプログラムの実行を行なわせる。
図2は、CPU11がユーザプログラム4を実行するときのSoC1内の動作を説明するための図である。また、図3は、CPU11がユーザプログラム4を実行するときの処理手順を説明するためのフローチャートである。以下、図2および図3を参照しながら、図1に示すシステムの動作を説明する。
まず、SoC1内の各モジュールがリセットされ(S11)、ユーザプログラム4が外部メモリ3にロードされる(S12、図2の(1))。このユーザプログラム4は、汎用PC2から外部メモリ3に転送されてもよいし、図示しない外部記憶装置から外部メモリ3に転送されてもよい。
次に、ユーザが汎用PC2を介してデバッグ回路13にユーザプログラム4の実行開始を指示すると、デバッグ回路13からの指示に応じてCPU11によるユーザプログラム4の実行が開始される(S13)。
CPU11がユーザプログラム4の実行を開始すると、新規IP(機能IP)17の内蔵レジスタ21などの初期化や、パラメータの書き込みなどを行なって、新規IP17の設定を行なう(S14、図2の(2))。なお、本発明の実施の形態においては、内蔵レジスタ21などのレジスタがメモリマップにマッピングされる、いわゆるメモリマップドI/Oが採用される。
次に、CPU11は、システムバス18に接続される周辺I/O14または15を介して、SoC1外部から処理対象となるデータ(処理データ5)を読み込み、外部メモリ3または内部メモリ12に格納する(S15、図2の(3))。
たとえば、SoC1が画像処理を行なう場合には、カメラで撮像された画像データがカメラインタフェースなどの周辺I/Oを介して、外部メモリ3または内部メモリ12に格納されることになる。
次に、CPU11は、機能IP17による処理を実行するために、外部メモリ3または内部メモリ12から機能IP17内に搭載されるラインバッファなどの内蔵メモリ20に処理データ5を転送する(S16、図2の(4))。
処理データ5の転送が完了すると、機能IP17による処理が可能な状態となるため、CPU11は、機能IP17の内蔵レジスタ21内の起動レジスタに起動信号を書き込むことで、機能IP17による処理が開始される(S17、図2の(5))。
機能IP17は、データ処理を行ない、その実行結果を内蔵メモリ20に格納する(S18)。そして、データ処理が完了すると、機能IP17は、CPU11に対してデータ処理完了を通知する(S19、図2の(6))。この通知の方法としては、機能IP17が割り込み回路19を介してCPU11に割り込み要求を出力するようにしてもよいし、機能IP17の内蔵レジスタ21に実行状態レジスタを用意しておき、CPU11がこの実行状態レジスタを定期的にポーリングして処理完了を検知するようにしてもよい。
CPU11は、機能IP17からの処理完了通知を受けると、機能IP17の内蔵メモリ20から処理結果のデータを外部メモリ3または内部メモリ12に転送する(S20、図2の(7))。
次に、外部メモリ3または内部メモリ12に格納された処理結果のデータが周辺I/O14または15を介して外部に出力される(S21、図2の(8))。そして、機能IP17による処理が必要回数だけ行なわれたか否かが判定される(S22)。必要回数が完了していなければ(S22,No)、ステップS15に戻って以降の処理を繰り返す。また、必要回数が完了していれば(S22,Yes)、処理を終了する。
このように、新規IP17を開発してSoC1に搭載する場合、SoC1に搭載するハードウェアロジックの開発のみならず、ユーザプログラム4に相当する、機能IP17を利用するためにCPU11から機能IP17を制御するためのドライバや、その機能IP17を用いたアプリケーション、ミドルウェアなどのソフトウェアの開発が必要となる。
また、開発した新規IP17を用いてどの程度所望の処理の高速化が達成されているかを早期に解析したり、新規IP17が必要とするシステムバスのデータ転送量を解析したりすることで、そのソフトウェア開発の成果をハードウェアロジックの仕様にフィードバックすることができ、新規IP開発やシステム設計の効率化を実現できる。
(第1の実施の形態)
図4は、本発明の第1の実施の形態におけるシミュレーション装置を含んだシステムの一例を示す図である。このシステムは、SoC1と、ソフトウェア開発環境としての汎用PC2と、シミュレータプログラム(CPU1)6およびユーザプログラム(CPU0)7が記憶される外部メモリ3とを含む。
図4は、本発明の第1の実施の形態におけるシミュレーション装置を含んだシステムの一例を示す図である。このシステムは、SoC1と、ソフトウェア開発環境としての汎用PC2と、シミュレータプログラム(CPU1)6およびユーザプログラム(CPU0)7が記憶される外部メモリ3とを含む。
また、SoC1は、デバッグ回路13と、周辺I/O14および15と、機能IP16と、CPU0(31)と、CPU1(32)と、共有メモリ33とを含む。なお、CPU0(31)と、CPU1(32)と、共有メモリ33と、外部メモリ3と、周辺I/O14および15と、機能IP16とが、システムバス18を介して接続される。なお、図1に示すシステムと同じ構成および機能を有する部分については、同じ参照番号を付すものとする。
本実施の形態におけるシステムにおいては、CPU1(32)、共有メモリ33およびシミュレータプログラム6によって、図2に示す新規IP17の機能をエミュレートするものであり、これらによってIPシミュレータが構成されるものとする。
図5は、IPシミュレータの構成を詳細に説明するための図である。CPU0(31)をユーザプログラム7を動作させるターゲットCPUとして割り当て、CPU1(32)をシミュレータプログラム6を動作させるシミュレータCPUとして割り当てる。
また、共有メモリ33にはシミュレータ領域として、新規IP17の内蔵メモリ20に相当する内蔵メモリ領域41と、内蔵レジスタ21に相当する内蔵レジスタ領域42と、演算処理の実行サイクル数の計測および記録のための実行記録領域43と、データ転送のサイクル数およびデータ転送量の計測および記録のための転送記録領域44との4領域をマッピングする。
図6は、共有メモリ33にマッピングされるシミュレータ領域をさらに詳細に説明するための図である。内蔵メモリ領域41には、たとえば新規IP17のラインバッファやデータバッファとして内蔵されているメモリ領域がマッピングされる。
内蔵レジスタ領域42には、新規IP17に実装されている全ての内蔵レジスタがマッピングされる。このとき、内蔵レジスタの相対アドレスを維持してマッピングする。これによって、ユーザプログラム7で使用する新規IP17のベースアドレスのみを変更するだけで、その制御対象をハードウェアロジックからIPシミュレータへ、またはIPシミュレータからハードウェアロジックへ変更することが可能となる。
マッピングされる内蔵レジスタとして、新規IP17のパラメータを設定するためのレジスタ、演算動作やデータ転送動作を起動するための起動レジスタ、新規IP17の実行状態を示す状態レジスタなどを挙げることができるが、これらに限られるものではない。
これらのレジスタは、ユーザプログラム7が動作するCPU0(31)による参照および書き込みが行なわれると共に、シミュレータプログラム6が動作するCPU1(32)からも同様に参照および書き込みが行なわれる。
マルチコア構成のシステムバスに接続される共有メモリには、通常、このような複数のCPUコアの書き込みによるデータの一貫性(コンシステンシ)を制御するためのスヌープ機能が搭載されており、シミュレータプログラム6を実装する上でのソフトウェア上の制約は小さい。
実行記録領域43には、動作中の演算処理の実行サイクル数をカウントするための1つ以上の実行サイクル数カウンタと、実行結果を、シミュレーション時間や実行箇所などのパラメータ、処理内容および実行サイクル数と共に記録するトレースバッファとがマッピングされる。
実行結果については、その実行回数がシミュレーションにより膨大な回数となるため、シミュレータプログラム6によって共有メモリ33から外部メモリ3にコピーして保存するようにすることも可能である。また、実行結果が共有メモリ33にマッピングされていることから、この処理結果を汎用PC(ソフトウェア開発環境)2から参照することも可能であり、実行サイクル数に基づく性能解析が可能となる。
転送記録領域44には、データの転送サイクル数をカウントするための転送サイクル数カウンタと、システムバス18の負荷解析のために転送データ量をカウントする転送データ数カウンタとがマッピングされる。さらに、データ転送に関するパラメータ、転送サイクル数および転送データ量を記録する領域もマッピングされる。
転送サイクル数および転送データ量が共有メモリ33にマッピングされていることから、これらのデータを汎用PC(ソフトウェア開発環境)2から参照することも可能であり、転送データに基づくシステムバス18の負荷解析が可能となる。
図7は、本発明の実施の形態におけるシミュレーション装置を含んだシステムの動作を説明するフローチャートである。また、図8は、CPU0(31)およびCPU1(32)がそれぞれユーザプログラム7およびシミュレータプログラム6を実行するときのSoC1内の動作を説明するための図である。以下、図7および図8を参照しながら、シミュレーション装置を含んだシステムの動作について説明する。
なお、図7に示すフローチャートにおいて、汎用PC(ソフトウェア開発環境)2の処理手順をステップS31〜S35、ユーザプログラム7が動作するCPU0(31)の処理手順をステップS41〜S49、シミュレータプログラム6が動作するCPU1(32)の処理手順をステップS51〜S61で示している。
まず、SoC1内の各モジュールがリセットされ(S31)、ユーザプログラム7が外部メモリ3にロードされ(S32、図8の(1))、シミュレータプログラム6が外部メモリ3にロードされる(S33、図8の(2))。
次に、ユーザが汎用PC2を介してデバッグ回路13にシミュレータプログラム6の実行開始を指示すると、デバッグ回路13からの指示に応じてCPU1(32)によるシミュレータプログラム6の実行が開始される(S34、図8の(3))。
このとき、CPU1(32)がシミュレータプログラム6の実行を開始して共有メモリ33の各領域の初期化を行ない(S51、図8の(5))、内蔵レジスタ領域42の内容を参照して(S52)、内蔵レジスタ領域42の内容に変化があるか否かを判定する、すなわち一定周期でポーリングを行なう(S53)。このように、CPU1(32)は実行待機の状態となり、新規IP17と同等の動作を行なうIPシミュレータとして動作するようになる。
IPシミュレータの起動後に、汎用PC2が、デバッグ回路13にユーザプログラム7の実行開始を指示すると、デバッグ回路13からの指示に応じてCPU0(31)によるユーザプログラム7の実行が開始される(S35、図8の(4))。
このとき、IPシミュレータが既に動作しているため、CPU0(31)は、図3に示すフローチャートのステップS14〜S22と同様の動作を行なう。すなわち、CPU0(31)がユーザプログラム7の実行を開始すると、新規IP(機能IP)17の設定を行なうのと同様に、共有メモリ33の内蔵レジスタ領域42などの初期化や、パラメータの書き込みなどを行なう(S41、図8の(6))。
次に、CPU0(31)は、システムバス18に接続される周辺I/O14または15を介して、SoC1外部から処理対象となるデータを読み込み、外部メモリ3に格納する(S42)。
次に、CPU0(31)は、IPシミュレータによるデータ演算処理を実行するために、外部メモリ3から共有メモリ33内のラインバッファなどの内蔵メモリ領域41に処理データを転送する(S43)。このとき、CPU0(31)は、IPシミュレータに対してデータ転送を行なわせるが、その処理の詳細は後述する。
処理データの転送が完了すると、IPシミュレータによるデータ演算処理が可能な状態となるため、CPU0(31)は、共有メモリ33の内蔵レジスタ領域42内の起動レジスタに起動信号を書き込むことによって、IPシミュレータによるデータ演算処理が開始される(S44)。そして、CPU0(31)は、IPシミュレータによるデータ演算処理待ち状態となる(S45)。
IPシミュレータによるデータ演算処理が完了すると、CPU0(31)は、IPシミュレータからの通知によってデータ演算処理完了を検出し(S46)、共有メモリ33の内蔵メモリ領域41から処理結果のデータを外部メモリ3に転送する(S47)。このとき、CPU0(31)は、IPシミュレータに対してデータ転送を行なわせるが、その処理の詳細は後述する。
次に、外部メモリ3に格納された処理結果のデータが周辺I/O14または15を介して外部に出力される(S48)。そして、IPシミュレータによる処理が必要回数だけ行なわれたか否かが判定される(S49)。必要回数が完了していなければ(S49,No)、ステップS42に戻って以降の処理を繰り返す。また、必要回数が完了していれば(S49,Yes)、処理を終了する。
上述のように、CPU1(32)は、IPシミュレータ起動後に、内蔵レジスタ領域42の内容に変化があるか否かをポーリングしており(S53)、CPU0(31)によって内蔵レジスタ領域42に書き込みがあったときに、その内容に応じて、データ演算処理、データ転送処理または停止処理のいずれかを実行する。
内蔵レジスタ領域42にデータ演算処理の開始指示が書き込まれていれば(S53,処理スタート)、CPU1(32)は、後述のデータ演算処理を行なう(S54)。そして、その演算処理に対応した実行サイクル数を加算することによって実行サイクル数を更新し(S55)、CPU0(31)に対してデータ処理完了を通知する(S56)。そして、内蔵レジスタ領域42の内容を更新し(S60)、ステップS52に戻って以降の処理を繰り返す。
また、内蔵レジスタ領域42にデータ転送処理の開始指示が書き込まれていれば(S53,転送スタート)、CPU1(32)は、後述のデータ転送処理を行なう(S57)。そして、そのデータ転送処理に対応した転送サイクル数を加算することによって転送サイクル数を更新し(S58)、そのデータ転送処理に対応した転送データ量を加算することによって転送データ量を更新する(S59)。そして、内蔵レジスタ領域42の内容を更新し(S60)、ステップS52に戻って以降の処理を繰り返す。
また、内蔵レジスタ領域42に停止処理の指示が書き込まれていれば(S53,停止)、CPU1(32)は処理を終了する。
なお、図7に示すフローチャートにおいては、IPシミュレータの動作として、演算処理動作、データ転送動作、停止動作を記載しているが、これらの動作は全てハードウェアロジックである機能IP17の仕様に準ずるものであり、これらの動作に限定されるものではない。
図9は、図7に示すフローチャート中のデータ演算処理に関する部分をさらに詳細に説明するためのフローチャートである。また、図10は、IPシミュレータがデータ演算処理を行なうときのSoC1の動作を説明するための図である。以下、図9および図10を参照しながら、データ演算処理動作について説明する。
上述のように、CPU1(32)は、シミュレータプログラム6の実行を開始して共有メモリ33の各領域の初期化を行ない(S81)、内蔵レジスタ領域42の内容をポーリングして(S82,S83)、実行待機状態となっている。
CPU0(31)は、内蔵レジスタ領域42の中の起動レジスタに相当する領域に起動信号を書き込むことにより(S71、図10の(1))、IPシミュレータによる演算処理が開始される。このとき、演算に必要なデータは既に内蔵メモリ領域41であるラインバッファやデータバッファに転送されているため、データ演算処理が可能な状態となっている。
CPU1(32)は、CPU0(31)による起動レジスタへの書き込みを検知すると、それがデータ演算処理の開始を示していれば(S83、処理スタート)、データ演算動作を開始する。CPU1(32)は、共有メモリ33の内蔵メモリ領域41に格納されるデータに対して演算処理を行ない、その演算結果を出力領域に相当する内蔵メモリ領域41に格納する(S84、図10の(2))。
このとき、CPU1(32)は、実行サイクル数カウンタを用い、実行したデータ演算処理に応じて、機能IP17における実行サイクル数をカウントし(S85)、その実行サイクル数を実行記録領域43の実行サイクル数記録領域の値に加算して書き戻す(S86、図10の(4))。必要であれば、そのシミュレーション時間、実行箇所、処理内容などの統計情報を実行データ記録として実行記録領域43に保存する。なお、演算処理の種別に対応して予め機能IP17における実行サイクル数を規定しておき、その実行サイクル数を加算することによって実際の実行サイクル数を算出する。
このように、実行記録領域43に実行サイクル数およびシミュレーション時間を記録し、データ演算完了後に汎用PC(ソフトウェア開発環境)2からそれらの情報を参照することによって、IPシミュレータの実行時間が実際のハードウェアロジックと異なる場合でも、その実行性能の高精度な見積もりが可能となる。
次に、CPU1(32)は、起動レジスタなどのレジスタの内容を更新し(S87、図10の(5))、状態レジスタの内容を更新してデータ演算処理完了とし(S88、図10の(6))、ステップS82に戻って以降の処理を繰り返す。
CPU0(31)は、状態レジスタを参照して(S72)、データ演算処理が完了したか否かを判定する(S73)。データ演算処理が完了していなければ(S73,No)、ステップS72に戻って以降の処理を繰り返す。また、データ演算処理が完了していれば(S73,Yes)、データ演算動作を終了する。
なお、図9においては、CPU0(31)が、機能IP17の実行状態を記録する状態レジスタをポーリングすることによってIPシミュレータのデータ演算処理完了を検知しているが、上述のようにCPU0(31)に割り込み要求を発行することによってデータ演算完了通知を行なうことも可能である。このような完了通知の方法は、開発対象の機能IP17の仕様に準ずる。
図11は、図7に示すフローチャート中のデータ転送処理に関する部分をさらに詳細に説明するためのフローチャートである。また、図12は、IPシミュレータがデータ転送処理を行なうときのSoC1の動作を説明するための図である。以下、図11および図12を参照しながら、データ転送処理動作について説明する。
上述のように、CPU1(32)は、シミュレータプログラム6の実行を開始して共有メモリ33の各領域の初期化を行ない(S101)、内蔵レジスタ領域42の内容をポーリングして(S102,S103)、実行待機状態となっている。
CPU0(31)は、内蔵レジスタ領域42に、転送されるデータ数、転送元アドレス、転送先アドレス、データの種類などのデータ転送に必要な転送パラメータを設定する(S91、図12の(1))。
CPU1(32)は、内蔵レジスタ領域42の内容に変化があることを検出すると(S103,Yes)、その設定によって影響を受ける状態レジスタなどの内部状態を更新し(S104、図12の(2))、再度、内蔵レジスタ領域42の内容をポーリングして(S105,S106)、実行待機状態となる。
この状態で、CPU0(31)が、内蔵レジスタ領域42内の転送開始レジスタに開始信号を書き込むと(S92、図12の(3))、CPU1(32)は、設定された転送パラメータに応じてデータ転送処理を開始する(S107、図12の(4))。
データ転送処理が内蔵メモリ領域41への書き込み処理の場合、CPU1(32)は、外部メモリ3の指定された転送元アドレスから転送対象データを読み出し、そのデータを共有メモリ33のラインバッファやデータバッファである内蔵メモリ領域41の指定された領域に書き込む。
また、データ転送処理が内蔵メモリ領域41からの読み出し処理の場合、CPU1(32)は、内蔵メモリ領域41の指定された領域からデータを読み出し、そのデータを外部メモリ3の指定された転送先アドレスに書き込む。
このデータ転送処理は、内蔵レジスタ領域42に予め設定されたパラメータに従って実行され、所望のデータ容量のデータ転送が完了するまで繰り返される。
このとき、CPU1(32)は、転送サイクル数カウンタおよび転送データ数カウンタを用い、実行したデータ転送処理に応じて、機能IP17における転送サイクル数およびデータ転送量をカウントし(S108、図12の(5))、その転送サイクル数および転送データ量を転送記録領域44の転送サイクル数記録領域および転送データ量記録領域の値に加算して書き戻す(S109、図12の(6))。
必要であれば、そのシミュレーション時間、実行箇所、読み出し/書き込みの種別、転送モードなどのパラメータと、転送サイクル数、転送データ量などの統計情報とを転送データ記録として転送記録領域44に保存する。
このように、転送記録領域44に転送サイクル数、転送データ量およびシミュレーション時間を記録し、データ転送完了後に汎用PC(ソフトウェア開発環境)2からそれらの情報を参照することによって、IPシミュレータの転送時間が実際のハードウェアロジックと異なる場合でも、そのデータ転送によるシステムバス18への負荷やデータ転送時間の高精度な見積もりが可能となる。
CPU1(32)は、所望のデータ転送処理が完了すると、各内蔵レジスタ領域42の内容を実行後の状態に更新し(S110、図12の(7))、その実行完了をCPU0(31)に通知する。
CPU0(31)は、状態レジスタを参照して(S93)、データ転送処理が完了したか否かを判定する(S94)。データ転送処理が完了していなければ(S94,No)、ステップS93に戻って以降の処理を繰り返す。また、データ転送処理が完了していれば(S94,Yes)、データ転送動作を終了する。
なお、図11においては、CPU0(31)が、機能IP17の実行状態を記録する状態レジスタをポーリングすることによってIPシミュレータのデータ転送処理完了を検知しているが、上述のようにCPU0(31)に割り込み要求を発行することによってデータ転送完了通知を行なうことも可能である。このような完了通知の方法は、開発対象の機能IP17の仕様に準ずる。
以上説明したように、本実施の形態におけるシミュレーション装置によれば、開発対象の機能IPの機能をIPシミュレータで実現し、その他の既存モジュール、ユーザプログラムが動作するターゲットCPU、システムバスなどは実機のものを用いるようにしたので、精度の高いシミュレーションを実現することが可能となった。
また、機能IP17の内蔵レジスタを共有メモリ33の相対アドレスが同じ領域にマッピングするようにしたので、ユーザプログラム7がIPシミュレータを制御する場合でも、ユーザプログラム7が機能IP17を制御する場合でも、ベースアドレスを変更するのみで同じプログラムを使用することが可能となった。
また、共有メモリ33に実行記録領域43および転送記録領域44を設け、IPシミュレータが実行サイクル数、データ転送サイクル数、データ転送量などの情報をそれらの領域に記録するようにしたので、機能IP17の性能評価やシステムバス18の負荷評価などを高い精度で行なうことが可能となった。
さらには、SoCがマルチCPU構成であり、かつ共有メモリが搭載されていれば、その他のモジュールなどのハードウェア構成にかかわらずIPシミュレータを実装することができるため、既存のLSIをIPシミュレータとして活用することが可能である。したがって、専用のシミュレーション装置を必要とせず、低コストでシミュレータを用いたソフトウェア開発環境を提供することが可能となった。
(第2の実施の形態)
第1の実施の形態におけるシミュレーション装置は、単一のCPUがシミュレータプログラムを実行することによってIPシミュレータを実現するものであった。本発明の第2の実施の形態におけるシミュレーション装置は、複数のCPUがシミュレータプログラムを実行することによってIPシミュレータを実現するものである。
第1の実施の形態におけるシミュレーション装置は、単一のCPUがシミュレータプログラムを実行することによってIPシミュレータを実現するものであった。本発明の第2の実施の形態におけるシミュレーション装置は、複数のCPUがシミュレータプログラムを実行することによってIPシミュレータを実現するものである。
図13は、本発明の第2の実施の形態におけるシミュレーション装置を含んだシステムの一例を示す図である。このシステムは、SoC1と、ソフトウェア開発環境としての汎用PC2と、シミュレータプログラム(CPU1〜CPUN)6−1〜6−Nおよびユーザプログラム(CPU0)7が記憶される外部メモリ3とを含む。
また、SoC1は、デバッグ回路13と、周辺I/O14および15と、機能IP16と、CPU0(31)と、CPU1〜N(32−1〜32−N)と、共有メモリ33とを含む。なお、CPU0(31)と、CPU1〜N(32−1〜32−N)と、共有メモリ33と、外部メモリ3と、周辺I/O14および15と、機能IP16とが、システムバス18を介して接続される。なお、図5に示すシステムと同じ構成および機能を有する部分については、同じ参照番号を付すものとする。
CPU1〜N(32−1〜32−N)がそれぞれ、シミュレータプログラム6−1〜6−Nを実行することによってIPシミュレータを実現する。この場合、データ演算処理を2つ以上に分割し、それぞれのデータ演算処理を2つ以上のCPUに実行させることによってIPシミュレータの実行時間を削減し、より実際の機能IP17に近い動作とすることができる。
なお、処理を分割して複数のCPUに実行させる場合でも、第1の実施の形態におけるIPシミュレータと同様に、内蔵メモリ領域41、内蔵レジスタ領域42、実行記録領域43および転送記録領域44が共有メモリ33にマッピングされるため、ユーザプログラム7として第1の実施の形態において説明したのと同様のプログラムを用いることが可能である。
以上説明したように、本実施の形態におけるシミュレーション装置によれば、シミュレータプログラムを分割して複数のCPUに実行させるようにしたので、第1の実施の形態において説明した効果に加えて、IPシミュレータの実行時間を削減し、より実際の機能IP17に近い動作とすることが可能となった。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 SoC、2 汎用PC、3 外部メモリ、4,7 ユーザプログラム、5 処理データ、6 シミュレータプログラム、11,31,32 CPU、12 内部メモリ、13 デバッグ回路、14,15 周辺I/O、16 機能IP、17 新規IP、18 システムバス、19 割り込み回路、20 内蔵メモリ、21 内蔵レジスタ、33 共有メモリ、41 内蔵メモリ領域、42 内蔵レジスタ領域、43 実行記録領域、44 転送記録領域。
Claims (10)
- 開発対象の機能ブロックをシミュレートするためのシミュレーション装置であって、
ユーザプログラムを実行することによって前記機能ブロックを制御する第1のプロセッサと、
シミュレータプログラムを実行することによって前記機能ブロックをシミュレートする第2のプロセッサと、
前記第1のプロセッサおよび前記第2のプロセッサによってアクセスされる共有メモリとを含み、
前記共有メモリには、前記機能ブロックの内蔵レジスタに相当する内蔵レジスタ領域がマッピングされており、
前記第1のプロセッサは、前記内蔵レジスタ領域にデータを書き込むことによって前記第2のプロセッサによるシミュレーションを制御し、
前記第2のプロセッサは、前記内蔵レジスタ領域に書き込まれたデータに応じて前記機能ブロックのシミュレーションを実行する、シミュレーション装置。 - 前記内蔵レジスタ領域は、前記機能ブロックの内蔵レジスタの相対アドレスと一致する前記共有メモリの領域にマッピングされる、請求項1記載のシミュレーション装置。
- 前記共有メモリには、さらに前記機能ブロックの内蔵メモリに相当する内蔵メモリ領域がマッピングされており、
前記第2のプロセッサは、前記第1のプロセッサによって前記内蔵レジスタ領域にデータ演算処理要求が書き込まれたときに、前記内蔵メモリ領域に格納されているデータに対して演算処理を行なう、請求項1または2記載のシミュレーション装置。 - 前記共有メモリには、さらにデータ演算処理に必要な実行サイクル数を記録する実行記録領域がマッピングされており、
前記第2のプロセッサは、データ演算処理を行なうときにその実行サイクル数を計算して前記実行記録領域に格納する、請求項3記載のシミュレーション装置。 - 前記共有メモリには、さらに前記機能ブロックの内蔵メモリに相当する内蔵メモリ領域がマッピングされており、
前記第2のプロセッサは、前記第1のプロセッサによって前記内蔵レジスタ領域にデータ転送処理要求が書き込まれたときに、外部メモリからデータを読み出して前記内蔵メモリ領域に転送する、請求項1または2記載のシミュレーション装置。 - 前記第2のプロセッサは、前記第1のプロセッサによって前記内蔵レジスタ領域にデータ転送処理要求が書き込まれたときに、前記内蔵メモリ領域からデータを読み出して前記外部メモリに転送する、請求項5記載のシミュレーション装置。
- 前記共有メモリには、さらにデータ転送に必要な転送サイクル数および転送データ量を記録する転送記録領域がマッピングされており、
前記第2のプロセッサは、データ転送処理を行なうときにその転送サイクル数および転送データ量を計算して前記転送記録領域に格納する、請求項5または6記載のシミュレーション装置。 - 前記シミュレーション装置はさらに、前記機能ブロックをシミュレートする第3のプロセッサを含み、
前記シミュレータプログラムが少なくとも2つに分割されており、
前記第2のプロセッサおよび前記第3のプロセッサが、前記分割されたシミュレータプログラムを実行する、請求項1〜7のいずれかに記載のシミュレーション装置。 - 第1のプロセッサ、第2のプロセッサおよび共有メモリを含んだシステムにおける開発対象の機能ブロックをシミュレートするためのシミュレーション方法であって、
前記共有メモリには、前記機能ブロックの内蔵レジスタに相当する内蔵レジスタ領域がマッピングされており、
前記第1のプロセッサがユーザプログラムを実行することによって、前記内蔵レジスタ領域にデータを書き込んで前記第2のプロセッサによるシミュレーションを制御するステップと、
前記第2のプロセッサがシミュレータプログラムを実行することによって、前記内蔵レジスタ領域に書き込まれたデータに応じて前記機能ブロックのシミュレーションを実行するステップとを含む、シミュレーション方法。 - 第1のプロセッサ、第2のプロセッサおよび共有メモリを含んだシステムにおける開発対象の機能ブロックをシミュレートするためのコンピュータ・プログラムであって、
前記第2のプロセッサが、前記共有メモリにマッピングされた前記機能ブロックの内蔵レジスタに相当する内蔵レジスタ領域に前記第1のプロセッサによって書き込まれた処理内容を読み出すステップと、
前記第2のプロセッサが、前記読み出した処理内容に応じて前記機能ブロックのシミュレーションを実行するステップとを含む、コンピュータ・プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011013929A JP2012155519A (ja) | 2011-01-26 | 2011-01-26 | シミュレーション装置、シミュレーション方法およびそのコンピュータ・プログラム |
US13/347,436 US20120191444A1 (en) | 2011-01-26 | 2012-01-10 | Simulation device, simulation method, and computer program therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011013929A JP2012155519A (ja) | 2011-01-26 | 2011-01-26 | シミュレーション装置、シミュレーション方法およびそのコンピュータ・プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012155519A true JP2012155519A (ja) | 2012-08-16 |
Family
ID=46544823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011013929A Withdrawn JP2012155519A (ja) | 2011-01-26 | 2011-01-26 | シミュレーション装置、シミュレーション方法およびそのコンピュータ・プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20120191444A1 (ja) |
JP (1) | JP2012155519A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112016007339T5 (de) * | 2016-10-14 | 2019-07-04 | Mitsubishi Electric Corporation | Simulationsvorrichtung |
WO2018074590A1 (ja) * | 2016-10-21 | 2018-04-26 | 株式会社東芝 | コントローラ |
CN116108782B (zh) * | 2023-04-14 | 2023-07-25 | 此芯科技(上海)有限公司 | 一种mcu外设控制寄存器行为模拟方法与相关装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480845B1 (en) * | 2000-06-14 | 2002-11-12 | Bull Hn Information Systems Inc. | Method and data processing system for emulating virtual memory working spaces |
US7191111B2 (en) * | 2003-09-11 | 2007-03-13 | International Business Machines Corporation | Method, apparatus, and computer program product for implementing dynamic cosimulation |
US7480609B1 (en) * | 2005-01-31 | 2009-01-20 | Sun Microsystems, Inc. | Applying distributed simulation techniques to hardware emulation |
US7343572B1 (en) * | 2005-03-31 | 2008-03-11 | Xilinx, Inc. | Vector interface to shared memory in simulating a circuit design |
US8229727B2 (en) * | 2007-01-09 | 2012-07-24 | International Business Machines Corporation | System and method for incorporating design behavior and external stimulus in microprocessor emulation model feedback using a shared memory |
-
2011
- 2011-01-26 JP JP2011013929A patent/JP2012155519A/ja not_active Withdrawn
-
2012
- 2012-01-10 US US13/347,436 patent/US20120191444A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20120191444A1 (en) | 2012-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8180620B2 (en) | Apparatus and method for performing hardware and software co-verification testing | |
US9152540B2 (en) | System and methods for generating and managing a virtual device | |
CN101344899B (zh) | 一种片上***的仿真测试方法及仿真测试*** | |
US20080208555A1 (en) | Simulation method and simulation apparatus | |
JP6916340B2 (ja) | シミュレートされたデバイスをメモリベース通信プロトコルを使用してテストするためのシステムおよび方法 | |
US9418181B2 (en) | Simulated input/output devices | |
Zuolo et al. | SSDExplorer: A virtual platform for performance/reliability-oriented fine-grained design space exploration of solid state drives | |
Forin et al. | Giano: The two-headed system simulator | |
JP5034916B2 (ja) | 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置 | |
CN111930215A (zh) | 用于虚拟平台模拟的功率监测*** | |
Lai et al. | Fast profiling framework and race detection for heterogeneous system | |
JP2012155519A (ja) | シミュレーション装置、シミュレーション方法およびそのコンピュータ・プログラム | |
Lankamp et al. | MGSim-Simulation tools for multi-core processor architectures | |
US8886512B2 (en) | Simulation apparatus, computer-readable recording medium, and method | |
CN1312583C (zh) | 仿真装置和仿真方法 | |
CN115858092A (zh) | 时序仿真方法、装置及*** | |
WO2023107362A2 (en) | Event tracing | |
JP2011039781A (ja) | 協調シミュレーション装置及びシミュレーション方法 | |
JP2023032451A (ja) | シミュレーション装置、及びシミュレーション方法 | |
Montón | A RISC-V SystemC-TLM simulator | |
Ko et al. | Hardware-in-the-loop simulation for CPU/GPU heterogeneous platforms | |
JP2013020425A (ja) | オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法 | |
TW200426594A (en) | Method for dynamically arranging an operating speed of a microprocessor | |
Zuolo et al. | Ssdexplorer: A virtual platform for ssd simulations | |
Wronka et al. | Embedded software debug in simulation and emulation environments for interface IP |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140401 |