[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2013020425A - オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法 - Google Patents

オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法 Download PDF

Info

Publication number
JP2013020425A
JP2013020425A JP2011152879A JP2011152879A JP2013020425A JP 2013020425 A JP2013020425 A JP 2013020425A JP 2011152879 A JP2011152879 A JP 2011152879A JP 2011152879 A JP2011152879 A JP 2011152879A JP 2013020425 A JP2013020425 A JP 2013020425A
Authority
JP
Japan
Prior art keywords
hardware
software
qemu
pci
pci device
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
Application number
JP2011152879A
Other languages
English (en)
Inventor
Takashi Kinjo
隆志 金城
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Solutions Ltd
Original Assignee
Hitachi Solutions Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Solutions Ltd filed Critical Hitachi Solutions Ltd
Priority to JP2011152879A priority Critical patent/JP2013020425A/ja
Publication of JP2013020425A publication Critical patent/JP2013020425A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 初期導入コストを安く抑えたハードウェアエミュレータを提供し、ハードウェアモデルとハードウェアエミュレータとを容易に接続する技術を提供することを目的とする。
【解決手段】 オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法であって、オープンソースソフトウェアであるQemuを改変することにより、Qemuとハードウェアモデルの接続するTLMインターフェースを介して、ハードウェアモデルに対してデータI/Oを行う手段と、ハードウェアモデルをQemu上でエミュレートしているPCIバスに接続されているPCIデバイスとして見せる手段と、SystemCシミュレータからQemuを起動する手段とを備えたオープンソースソフトウェアのPCエミュレータを実現する。
【選択図】 図1

Description

本発明は、ハードウェア・ソフトウェア協調検証の技術に関し、特にハードウェア・ソフトウェア協調検証にて使用するハードウェアエミュレータに関するものである。
ハードウェア・ソフトウェア協調検証とは、組み込みシステム実機完成前の設計段階から組み込みシステムで稼動するソフトウェアとハードウェアであるLSIとを含むシステム全体の検証を行う技術である。現在、SoC(System on Chip)あるいはASIC(Application Specific Integrated Circuit)などのLSI設計では、ソフトウェア開発とハードウェア開発とを分離して実施し、LSI試作機の完成後、ソフトウェアをシステムへ統合した上で、LSIの動作を検証している。この場合、LSIの不良は、試作機完成後の統合試験を実施している際に発覚する場合が多く、開発工程終盤での工程の手戻り、特にLSIの作り直しが発生した場合、開発コストや開発期間が大幅に増大してしまう。ハードウェア・ソフトウェア協調検証の目的は、組み込みシステム実機完成前からソフトウェアとハードウェアであるLSIとを含むシステム全体の検証を行い、実機完成前の早い段階でシステムの不良を摘出し、開発工程の手戻り、特にLSIの作り直しを回避することにある(例えば、非特許文献1参照)。
ハードウェア・ソフトウェア協調検証方法としては、一般的には、SystemCやSpecC等のシステムレベル設計言語で実装されたハードウェアモデルと組み込みソフトウェアとをハードウェアエミュレータ上で一緒に動作させ、システム全体の検証を行う方法が知られている。そのような検証を行うための商用の複数のハードウェアエミュレータが存在するが、その初期導入コストは、一般的に非常に高価なのが現状である。一方、オープンソースソフトウェアのPCエミュレータとしてQemuが知られているが、QemuはPCのエミュレータ機能を備えるだけのものであり、そのままではハードウェア・ソフトウェア協調検証に利用することはできない。
SystemCとは、一般的に普及しているシステムレベル設計言語のひとつである。SystemCとは、厳密には言語ではなく、C++言語で定義されたクラスライブラリのことであり、ハードウェアモデルはSystemCクラスライブラリ(以下、SystemCライブラリと称する)を用いたC++言語で記述される。SystemCライブラリを用いて記述されたハードウェアモデルは、一般的に用いられているgcc等のコンパイラによりコンパイルすることができる。コンパイルした結果、生成されたオブジェクトファイルは、SystemCライブラリとリンクすることにより、ハードウェアのシミュレータ(以降、SystemCシミュレータと称する)として実行することができる。SystemCは、いわゆるオープンソースソフトウェアであり、無償で手に入れ利用することができる。
SystemCによるハードウェアモデル記述の構造にて基本となるブロックをモジュールという。モジュール間の相互接続には、一般的にTLM(Transaction Level Modeling)インターフェースが広く用いられている。SystemCおよびTLMインターフェースを使用するためには、OSCI(Open SystemC Initiative)が提供するSystemCライブラリおよびTLMライブラリを使用する。これらライブラリは、ハードウェア・ソフトウェア協調検証の中核技術であり、ハードウェア・ソフトウェア協調設計やハードウェアの性能評価などに広く適用される。
http://techon.nikkeibp.co.jp/article/WORD/20090107/163726/
上述したとおり、ハードウェア・ソフトウェア協調検証に使用するハードウェアエミュレータの初期導入コストは一般的に非常に高価であり、システムの開発規模と比較して、十分な数のハードウェア・ソフトウェア協調検証環境を揃えにくいという問題がある。また、ハードウェアエミュレータとハードウェアモデル(例えば、SystemCで記述したハードウェアモデル)を接続する方法はハードウェアエミュレータにより異なり、ハードウェア・ソフトウェア協調検証を行う際にハードウェアモデルの一部を書き換える必要がある。
本発明の目的は、初期導入コストを安く抑えたハードウェアエミュレータを提供し、ハードウェアモデルとハードウェアエミュレータとを容易に接続する技術を提供することにある。
上記目的を達成するため、本発明では、一般に広く用いられているTLM(Transaction Level Modeling)インターフェースを備えたオープンソースソフトウェアをベースとしたハードウェアエミュレータを提供する。
すなわち、本発明は、オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法であって、オープンソースソフトウェアであるQemuを改変することにより、Qemuとハードウェアモデルの接続するTLMインターフェースを介して、ハードウェアモデルに対してデータI/Oを行う手段と、ハードウェアモデルをQemu上でエミュレートしているPCIバスに接続されているPCIデバイスとして見せる手段と、SystemCシミュレータからQemuを起動する手段とを備えたオープンソースソフトウェアのPCエミュレータを実現することを特徴とする。
本発明によれば、オープンソースソフトウェアのPCエミュレータを改造して使用するので、従来と比較して初期導入コストを低く抑えてハードウェア・ソフトウェア協調検証環境を構築することができる。TLMライブラリを使用したハードウェアモデルは、そのまま修正を加えること無く、ハードウェアエミュレータに接続可能となる。TLMライブラリを使用したハードウェアモデルは、そのままPCIデバイスとしてOSから認識できるようになる。それにより、組み込みソフトウェアからは、実機と同様に、LSI(ハードウェモデル)に対してMemory Mapped I/O, Port Mapped I/Oが可能となる。ハードウェアエミュレータとハードウェアモデルとの接続は、数〜十数ステップのコードを記述し、コンパイルを実行することにより容易に接続可能である。
本実施形態で実現するハードウェア・ソフトウェア協調検証環境の全体概要図 中継モジュールのクラス定義実装例 ハードウェア・ソフトウェア協調検証環境の動作開始時の処理の流れを示すフローチャート Qemuメインループ処理の流れを示すフローチャート 仮想マシンのインスタンス化の流れを示すフローチャート Qemuの初期化処理の流れを示すフローチャート 各種テーブルの一部領域設定例
以下、図面を用いて、本発明の実施の形態を説明する。
本実施形態では、オープンソースソフトウェアのPCエミュレータであるQemuを基として、そのQemuのソースコードの変更を行い、Qemuと検証対象であるハードウェアモデルとを接続するTLMインターフェースを介して、ハードウェアモデルに対してデータI/Oを行う手段を追加する。また、Qemuのソースコードの変更を行うことにより、ハードウェアモデルを、Qemu上でエミュレートしているPCIバスに接続されているPCIデバイスとして見せる手段を追加し、さらに、SystemCシミュレータからQemuを起動する手段を追加する。
図1は、本実施形態で実現するハードウェア・ソフトウェア協調検証環境の全体概要図である。図1の各ブロックは、コンピュータ上でソフトウェアを実行することで実現される。すなわち、これらの各ブロックは、HDD等の記憶装置からメモリ等の主記憶装置に読み出され、CPU等の演算部により実行されることで実現される。
本実施形態のハードウェア・ソフトウェア協調検証環境は、オープンソースソフトウェアのPCエミュレータであるQemu部分100と、Qemu上でエミュレートしているPCIバス部分101と、PCIバス部分101上に接続したPCIデバイス部分102と、Qemuとハードウェアモデルの中継ぎを行う中継モジュール部分103と、ハードウェア・ソフトウェア協調検証対象となるハードウェアモデル部分104と、ハードウェア・ソフトウェア協調検証対象となるソフトウェア部分105と、ソフトウェア部分105の動作プラットフォームとなるOS部分106とを備える。107はQemu上でエミュレートしているCPU部分であり、108はQemu上でエミュレートしているMCH(Memory Control Hub)部分であり、109はQemu上でエミュレートしているメモリ部分を示す。
107〜109は、Qemu100が従来より備えているCPUとMCHとメモリをエミュレートする機能を利用して実現する。PCIバスとPCIデバイスに関し、汎用のPCが持つ幾つかの基本的なPCIデバイスとそれらを接続するPCIバスについては従前よりQemu100が持つ機能で実現している。図1ではそのような基本的なPCIデバイスについては不図示とした。本実施形態では、検証対象のハードウェアモデル104を接続するためのPCIデバイス102に相当する部分をQemu100に追加する必要がある。また、このPCIデバイス102をPCIバスに接続するため、Qemu100のPCIバス101に相当する部分を改変する必要がある。これらPCIデバイス102とPCIバス101は、C言語で記載されているQemuを改変することで実現する。
Qemu100とハードウェアモデル104とは、中継モジュール103を介して接続する。中継モジュール103は、SystemCで記述したSystemCモジュール(すなわちC++レイヤ)であり、ハードウェアモデル104に対してはTLMインターフェースにて接続する。また、中継モジュール103とPCIデバイス102との接続は、コールバック用の関数ポインタをPCIデバイス102に渡しておく方式により実現する。Qemu100で実現されるPCIデバイス102はC言語レイヤで、中継モジュール103はC++レイヤであるので、そのままではPCIデバイス102から中継モジュール103のメソッドを呼び出すことができず、PCIデバイス102から中継モジュール103経由でのハードウェアモデル104に対するデータの書き込みや読み出しを行うことができない。そこで、PCIデバイス102から中継モジュール103へデータ転送を行うときは、コールバック用の関数ポインタにて関数を発行し、データ渡しを行う。中継モジュール103からPCIデバイス102へのデータ転送も同様の方式である。これらの実装は、実際のハードウェア構成でいうと、PCIデバイス部分102はPCIカードに相当し、ハードウェアモデル104はそのPCIカード上に実装されたLSIに相当する。
検証対象のハードウェアモデル104は、SystemCおよびTLMインターフェースを使用して記述したものを使用する。SystemCおよびTLMインターフェースは、従来より知られている数多くのハードウェアシミュレータで使用されている形式であるので、既にそのようなハードウェアモデルを作成済みであればそれをそのまま使い回すことができる。
図2は、中継モジュール103のクラス定義実装例である。中継モジュール103は、予めユーザが、SystemCで作成しておく。図2の201はハードウェアモデル104との接続ソケットであり、202はPCIデバイス102からコールバックされるデータ書き込みメソッドであり、203はPCIデバイス102からコールバックされるデータ読み込みメソッドであり、205は中継モジュール103のコンストラクタであり、図2の206はデータ書き込みメソッド202の実装から発行されるメソッドであり、207はデータ読み込みメソッド203の実装から発行されるメソッドである。
図2の中継モジュール103のクラスからオブジェクトを作成する際にコンストラクタ205が実行され、これにより各種のテーブル領域の確保や初期設定が行われる。コンストラクタ205の実装例はここでは省略するが、後述する図5のステップ502以降の初期設定処理はコンストラクタ205の実装により実現されるものである。
図3は、図1のハードウェア・ソフトウェア協調検証環境の動作開始時の処理の流れを示すフローチャートである。Qemuによるエミュレーションの処理は、後述する図4のQemuのメインループ処理により実行されるが、そのメインループ処理が開始される前に、図3の310と320の処理が実行される。
前処理310は、ハードウェアモデル104をOS106からQemu上でエミュレートしているPCIバス101に接続されているPCIデバイス102として見せる手段を実現するための処理である。この処理は、GNU gcc拡張機能_attribute_((constructor))により、main()発行前に発行される処理である。
ステップ311で、DeviceInfoテーブルの領域を確保し属性を設定する。DeviceInfoテーブルは、PCIデバイス102をエミュレートするために利用する構造体である。
図7(c)に、DeviceInfoテーブル(テーブル3)の構造体の一部領域の設定例を示す。「PCIデバイス識別名文字列」は、ハードウェアモデル104を接続するためのPCIデバイス102を特定する識別名の文字列である。「PCIデバイス説明文字列」は、PCIデバイス102を説明する文字列である。「PCIDeviceテーブルサイズ」は、本PCIデバイス102に対応するPCIDeviceテーブル(図7(d)で後述する)のサイズ(バイト数)である。「PCIデバイス初期化関数ポインタ」は、PCIデバイス102の初期化を実行する関数を指すポインタである。
図7(c)に示すDeviceInfoテーブルはPCIデバイス102に対応するテーブルであるが、PCIデバイス102以外にも汎用のPCが基本的に備えているPCIデバイスが存在し、Qemuでエミュレートする全てのPCIデバイスのそれぞれにはそのPCIデバイスに対応するDeviceInfoテーブルが確保される。それら全てのDeviceInfoテーブルはチェインでつながれ、このチェインを辿ることで、各PCIデバイスに対応するDeviceInfoテーブルへのアクセスを実現できる。このチェインをDeviceInfoテーブルチェインと呼ぶ。「DeviceInfoテーブルチェインポインタ」は、そのDeviceInfoテーブルチェインで繋がれている次のDeviceInfoテーブルを指すポインタである。
図3に戻って、ステップ311の後、ステップ312〜315で、DeviceInfoテーブルに、PCIデバイス102のPCIデバイス識別名文字列とPCIデバイス説明文文字列とPCIDeviceテーブルサイズ(バイト数)とPCIデバイス初期化関数ポインタを設定する。次に、ステップ316で、当該DeviceInfoテーブルをDeviceInfoテーブルチェインに追加する。
次の前処理320は、SystemCシミュレータからQemu100を起動する手段を実現するための処理である。前述したとおり、ハードウェアモデル104のオブジェクトファイルとSystemCライブラリをリンクしたものはSystemCシミュレータとして動作する。そのため、SystemCライブラリには、予め、プログラムのエントリポイントであるmain関数が実装されている。一方、Qemuもエントリポイントであるmain関数を持つ。そこで、Qemuのソースを改造し、元々のQemuのエントリーポイントであるmain関数をコメントアウトし、図3の320に示すようにSystemCシミュレータからQemuを起動するように改変する。
この仕組みではSystemCライブラリには予めプログラムのエントリポイントであるmain関数が実装されているので、ステップ321で、このmain関数が起動される。ステップ322で、このmain関数から、同じくSystemCライブラリに実装されているsc_elab_and_sim関数が発行される。さらに、ステップ323で、このsc_elab_and_sim関数から、sc_mainという名前の関数が発行される。SystemCシミュレータのエントリポイントはSystemCの記述規則によりsc_main関数と定められており、sc_main関数の実装はSystemCシミュレータの利用者が行う。本実施形態においては、このsc_main関数からQemu100の起動を行う。
Qemu100の起動のため、ステップ324で、仮想マシンのインスタンス化を行う。この処理については、図5で詳しく説明する。
次に、ステップ325で、ハードウェアモデル(LSIハードウェア設計記述)104のインスタンス化を行う。ステップ326で、Qemu100による仮想マシンとハードウェアモデル104との相互接続を行う。次に、ステップ327で、SystemCライブラリに実装されているSC_START関数を発行する。これにより、センシビティリスト(SC_THREAD)に登録した処理が開始される。センシビティリスト(SC_THREAD)は、ハードウェアモデルをエミュレートするための各プロセスの実行を制御するのに利用するリストである。後述するが、Qemuメインループ処理もセンシビティリスト(SC_THREAD)に登録されるので、ステップ327によりセンシビティリスト(SC_THREAD)に登録した処理が開始されることで、図1のハードウェア・ソフトウェア協調検証環境の動作が開始される。
図4は、ステップ327により開始されるQemuメインループ処理(ステップ401)を示す。ステップ402のQemuメインループの処理では、SC_THREADに登録した各処理が実行され、それがループ処理であれば繰り返し実行される。終了が指示されると、ステップ403でQemu終了処理を実行する。
図5は、図3のステップ324の仮想マシンのインスタンス化(ステップ501)の処理の流れを示す。ステップ502では、中継モジュール103のインスタンス化を行う。これは、図2で説明した中継モジュール103のクラスのインスタンス化であり、これにより中継モジュール103のエミュレートが実現される。
処理503は、Qemu100とハードウェアモデル104とを接続するTLMインターフェースを介してハードウェアモデル104に対してデータI/Oを行う手段を実現するための処理である。ステップ511では、データI/Oハンドラテーブル領域を確保する。
図7(a)に、データI/Oハンドラテーブル(テーブル1)の構造体の一部領域の設定例を示す。データI/Oハンドラテーブルには、中継モジュール103のクラスのインスタンスアドレスが設定される。また、ハードウェアモデル104へのメモリ・マップド・ライト関数ポインタ、メモリ・マップド・リード関数ポインタ、ポート・マップド・ライト関数ポインタ、および、ポート・マップド・リード関数ポインタが設定される。これらの関数ポインタは、C++レイヤからC言語レイヤへのコールバック関数ポインタであり、I/Oハンドラに相当する。
図5の処理に戻って、ステップ511でデータI/Oハンドラテーブル(テーブル1)の領域を確保したら、ステップ512で、メモリマップドI/OハンドラをデータI/Oハンドラテーブルへ設定し、ステップ513で、ポートマップドI/OハンドラをデータI/Oハンドラテーブルへ設定する。これにより図7(a)のデータI/Oハンドラテーブルの各I/Oハンドラ関数ポインタ等のデータが設定される。
ステップ504では、Qemu100の初期化処理として、Qemuメインループ直前までの処理を実行する。この処理については、図6で詳しく説明する。ステップ505では、Qemuメインループ処理を、センシビティリスト(SC_THREAD)へ登録する。
図6は、図5のステップ504のQemu100の初期化処理(ステップ601)の流れを示す。処理602は、ハードウェアモデル104をOS106からQemu100上でエミュレートしているPCIバス101に接続されているPCIデバイス102として見せる手段を実現するための処理である。
まずステップ611で、PCIバスモデルを作成する。これは、Qemuのオリジナルな処理であり、PCIバステーブルを作成する処理である。
図7(b)に、PCIバステーブル(テーブル2)の一部領域の設定例を示す。PCIバステーブルには、PCIバス101に接続している全てのPCIデバイスに対応するPCIDeviceテーブルをチェインしたチェインリスト(PCIDeviceチェインリスト)の先頭アドレスを設定する。これにより、図7(b)のPCIバステーブルからPCIDeviceチェインリストを辿って各PCIデバイスに対応するPCIDeviceテーブルにアクセスできる。上述したように、DeviceInfoテーブルチェインを辿ることにより、各PCIデバイスに対応するDeviceInfoテーブルにアクセスできる。各PCIデバイスに対応するDeviceInfoテーブルとPCIDeviceテーブルを利用することによって、それら各PCIデバイスの動作のエミュレートが実現できる。
図7(d)に、PCIDeviceテーブル(テーブル4)の一部領域の設定例を示す。PCIDeviceテーブルには、各種PCIコンフィギュレーションレジスタ情報格納領域先頭アドレスと、ポートマップドI/Oハンドラ関数ポインタ(write)と、ポートマップドI/Oハンドラ関数ポインタ(read)と、メモリマップドI/Oハンドラ関数ポインタ(write)と、メモリマップドI/Oハンドラ関数ポインタ(read)とが設定される。
図6に戻って、ステップ611で図7(b)のPCIバステーブルを作成した後、ステップ612では、PCIデバイス102に対応するPCIDeviceテーブルの領域を確保する。他のPCIデバイスについても同様である。これは、DeviceInfoテーブルチェインの先頭から順に辿って各PCIデバイスに対応するDeviceInfoテーブルにアクセスし、そのPCIデバイスに対応するPCIDeviceテーブルの領域を順に確保していく処理である。ステップ613では、PCIバスモデルの接続するPCIデバイスチェインリストへPCIDeviceテーブルアドレスを設定する。この処理は、ステップ612で確保した各PCIデバイスに対応するPCIDeviceテーブルのアドレスをPCIデバイスチェインリストに設定して、各PCIデバイスに対応するPCIDeviceテーブルをチェインで繋ぐ処理である。チェインで繋ぐ順番は、DeviceInfoテーブルチェインで繋がれたPCIデバイスの順と同じである。
次に、ステップ614で、DeviceInfoテーブルチェインの先頭から順に、各PCIデバイスに対応するDeviceInfoテーブル(図7(c))のPCIデバイス初期化関数ポインタを読み込み、各種PCIデバイスの初期化関数を発行する。これにより、PCIデバイス102についても初期化関数が発行される。ステップ615では、PCIデバイス102のベンダID、デバイスID、レビジョンID、クラスコードなどの各種PCIコンフィグレーションレジスタ情報を、所定のPCIコンフィグレーションレジスタ情報格納領域に格納し、その領域のアドレスをPCIDeviceテーブル(図7(d))の各種PCIコンフィギュレーションレジスタ情報格納領域先頭アドレスに設定する。ステップ616では、ポートマップドI/OハンドラをPCIDeviceテーブルのポートマップドI/Oハンドラ関数ポインタ(write)およびポートマップドI/Oハンドラ関数ポインタ(read)に設定する。ステップ617では、メモリマップドI/OハンドラをPCIDeviceテーブルのメモリマップドI/Oハンドラ関数ポインタ(write)およびメモリマップドI/Oハンドラ関数ポインタ(read)に設定する。
以上のように初期設定が為された後、例えば、検証対象のソフトウェア105からハードウェアモデル104に対してメモリ書き込みを行う場合、Qemu100はその書き込み命令を受けて、図7(a)のコールバック関数ポインタ(ハードウェアモデル104へのメモリ・マップド・ライト関数ポインタ)を利用してデータ書き込みメソッドを発行する。そのデータ書き込みメソッドの実装例は省略するが、そのデータ書き込みメソッドの実装によりメモリ書き込みがエミュレートされる。ハードウェアモデル104に対するメモリ読み出し、ポート書き込み、および、ポート読み出しも同様の方式でエミュレートしている。これにより、Qemu100からハードウェアモデル104に対してデータ書き込みおよびデータ読み込みを行う手段が実現される。
また、図7(b)〜図7(d)で説明した構造体を用意し、図3の310および図6の602の初期化処理を行っており、これによりハードウェアモデル104をPCIバス101に接続されているPCIデバイス102として見せる手段が実現される。
100:Qemu部分、101:Qemu上でエミュレートしているPCIバス部分、102:PCIバス部分101上に接続したPCIデバイス部分、103:Qemuとハードウェアモデルの中継ぎを行う中継モジュール部分、104:ハードウェア・ソフトウェア協調検証対象となるハードウェアモデル部分、105:ハードウェア・ソフトウェア協調検証対象となるソフトウェア部分、106:ソフトウェア部分105の動作プラットフォームとなるOS部分、107:Qemu上でエミュレートしているCPU部分、108:Qemu上でエミュレートしているMCH(Memory Control Hub)部分、109:Qemu上でエミュレートしているメモリ部分。

Claims (1)

  1. オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法であって、
    オープンソースソフトウェアであるQemuを改変することにより、
    Qemuとハードウェアモデルの接続するTLMインターフェースを介して、ハードウェアモデルに対してデータI/Oを行う手段と、
    ハードウェアモデルをQemu上でエミュレートしているPCIバスに接続されているPCIデバイスとして見せる手段と、
    SystemCシミュレータからQemuを起動する手段と
    を備えたオープンソースソフトウェアのPCエミュレータを実現することを特徴とするオープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法。
JP2011152879A 2011-07-11 2011-07-11 オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法 Withdrawn JP2013020425A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011152879A JP2013020425A (ja) 2011-07-11 2011-07-11 オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011152879A JP2013020425A (ja) 2011-07-11 2011-07-11 オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法

Publications (1)

Publication Number Publication Date
JP2013020425A true JP2013020425A (ja) 2013-01-31

Family

ID=47691802

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011152879A Withdrawn JP2013020425A (ja) 2011-07-11 2011-07-11 オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法

Country Status (1)

Country Link
JP (1) JP2013020425A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103312814A (zh) * 2013-06-28 2013-09-18 武汉大学 云管理平台和虚拟机终端用户间vnc隐通道的建立方法
CN113360249A (zh) * 2021-07-02 2021-09-07 深圳市瑞驰信息技术有限公司 一种基于ARM64的qemu虚拟机运行方法
WO2023053356A1 (ja) * 2021-09-30 2023-04-06 株式会社アイ・エル・シー 通信制御オブジェクトを有する機器、通信制御方法および通信制御プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103312814A (zh) * 2013-06-28 2013-09-18 武汉大学 云管理平台和虚拟机终端用户间vnc隐通道的建立方法
CN113360249A (zh) * 2021-07-02 2021-09-07 深圳市瑞驰信息技术有限公司 一种基于ARM64的qemu虚拟机运行方法
WO2023053356A1 (ja) * 2021-09-30 2023-04-06 株式会社アイ・エル・シー 通信制御オブジェクトを有する機器、通信制御方法および通信制御プログラム

Similar Documents

Publication Publication Date Title
US8180620B2 (en) Apparatus and method for performing hardware and software co-verification testing
CN112949233B (zh) Fpga芯片的自动化开发方法及装置、电子设备
CN102480467B (zh) 一种基于网络通讯协议的soc软硬件协同仿真验证方法
WO2014035463A1 (en) System and methods for generating and managing a virtual device
WO2024046362A1 (zh) 验证系统、验证方法、电子设备以及存储介质
US20130024178A1 (en) Playback methodology for verification components
US20100280817A1 (en) Direct pointer access and xip redirector for emulation of memory-mapped devices
Goli et al. Automatic equivalence checking for SystemC-TLM 2.0 models against their formal specifications
US9690681B1 (en) Method and system for automatically generating executable system-level tests
Pohl et al. vMAGIC—automatic code generation for VHDL
US7584456B1 (en) Method and apparatus for debugging embedded systems having read only memory
JP2013020425A (ja) オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法
US7437282B2 (en) Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator
CN115858092A (zh) 时序仿真方法、装置及系统
CN115185638A (zh) 一种仿真运行应用程序时获取调用栈的方法及计算设备
CN115374017A (zh) 一种仿真运行可执行文件时抓取现场的方法及计算设备
Bombieri et al. Correct-by-construction generation of device drivers based on RTL testbenches
JP2011145880A (ja) 半導体集積回路の論理検証にて使用するテストタスクの生成方法
US12073155B2 (en) Method and system for building hardware images from heterogeneous designs for electronic systems
US20230267253A1 (en) Automated synthesis of virtual system-on-chip environments
US20220066911A1 (en) Virtual machine for developing and testing target code for hardware designs
US11151294B1 (en) Emulated register access in hybrid emulation
JP4893028B2 (ja) チップセットのエミュレーション装置および方法
Carmel-Veilleux et al. A novel low-overhead flexible instrumentation framework for virtual platforms
Ni et al. On virtual prototyping of embedded system-on-chips

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: 20141007