JP2008282308A - 協調検証装置、協調検証方法、協調検証プログラム - Google Patents
協調検証装置、協調検証方法、協調検証プログラム Download PDFInfo
- Publication number
- JP2008282308A JP2008282308A JP2007127784A JP2007127784A JP2008282308A JP 2008282308 A JP2008282308 A JP 2008282308A JP 2007127784 A JP2007127784 A JP 2007127784A JP 2007127784 A JP2007127784 A JP 2007127784A JP 2008282308 A JP2008282308 A JP 2008282308A
- Authority
- JP
- Japan
- Prior art keywords
- hardware
- software
- input
- instruction signal
- verification
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/08—HW-SW co-design, e.g. HW-SW partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】協調検証時間を短縮する協調検証装置、協調検証方法、及びハードウェア・ソフトウェア協調検証プログラムを提供することにある。
【解決手段】本発明による協調検証装置10は、ハードウェアとソフトウェアとを協調させてシミュレーションを行なう演算装置101と、記憶装置103とを具備する。演算装置101は、ソフトウェア側からハードウェア側へ入力される指示信号29の入力履歴30を記憶装置103に記録する。
【選択図】図3
【解決手段】本発明による協調検証装置10は、ハードウェアとソフトウェアとを協調させてシミュレーションを行なう演算装置101と、記憶装置103とを具備する。演算装置101は、ソフトウェア側からハードウェア側へ入力される指示信号29の入力履歴30を記憶装置103に記録する。
【選択図】図3
Description
本発明は、回路設計においてソフトウェアとハードウェアの協調検証を行う協調検証装置、協調検証方法、及び協調検証プログラムに関する。
近年、プロセッサ、メモリ、周辺回路等の複数の機能を1チップに搭載したSoC(System on Chip)が広く利用されている。プロセッサが搭載されているSoC(例えばシステムLSI(Large Scale Integration))は、ソフトウェアとハードウェアとで構成されており、ソフトウェアとハードウェアが連携して動作する。このようなSoCを設計する場合、従来では、ソフトウェア開発とハードウェア開発を分離して実施し、ハードウェアの完成後、それぞれを一体化してその動作を検証していた。このような方法では、ハードウェアの設計が完了するまでソフトウェアを検証することができない。又、検証において不具合が発見された場合、その原因を特定することが困難である。特に、ハードウェアの設計をやり直すような不具合が発見されると、開発コストや開発期間が大幅に増大してしまう。
このため、現在では、ハードウェアの完成前に、ハードウェアとソフトウェアとを協調させてシステムの動作を検証するハードウェア/ソフトウェア協調検証(以下、協調検証と称す)が広く利用されている。協調検証では、システム記述言語(例えばVerilog−XL)を利用したRTL(Register Transfer Level) 記述によって生成されたハードウェアモデルと、C言語等で記述されたプログラム(ソフトウェアモデル)とを連携させて動作させ、システム全体の動作をシミュレーションし、両者の間に不整合がないかが検証される。これにより、システムを分割しないで設計を進めることができ、互いのモデルをテスト環境として利用しながらシステムの動作の検証が可能となる。
協調検証の対象となるシステムが大規模化又は複雑化すると、協調検証におけるシミュレーション時間や、シミュレーション上のOS(Operation System)の起動時間は増大する。ソフトウェアのみの検証システムの場合、例えば特開平8−185341号公報に記載されているように、ソフトウェア側の内部状態(レジスタやメモリ内の状態)を保存/再実行することで、シミュレーションの途中状態を再現することができる(特許文献1参照)。このため、ソフトウェアのみの検証システムでは、検証済みのシミュレーションを省略したり、デバック箇所からシミュレーションを開始することができ、効率的な検証を行うことができる。
一方、協調検証のように、シミュレーション環境にハードウェアを組み込む場合、ハードウェア側の途中状態を保存するためには、ハードウェア内部の全てのレジスタの状態、及び信号の状態の途中状態を取り出すための回路を、ハードウェア側に新たに組み入れる必要がある。このような途中状態の保存機能をハードウェア側全体に対して追加するためには、大幅な回路変更が必要となり実現は難しい。このため、論理エミュレータやハードウェアアクセラレータを利用した協調検証では、シミュレーションの途中状態を保存/再実行することは難しく、シミュレーションを途中で中断した場合や、不具合が発生した場合には、シミュレーションを初めからやり直す必要がある。例えば、不具合箇所をデバックする場合、シミュレーションの開始から不具合発生に至るまでの間、デバックに関係のないOSの起動や、検証済みのシミュレーションに多くの時間を費やしてしまうため、検証効率が低下する。通常、協調検証方法では、多くの不具合箇所のそれぞれに対してデバックを繰り返す必要がある。このため、上述のように、シミュレーションの途中状態を保存/再実行できない場合、検証時間は大幅に増大する。
しかし、協調検証の検証時間を短縮する要求は高く、特にデバックに関係のないOS起動時間や検証済みのシミュレーション時間を短縮し、効率的なデバック処理が可能な協調検証方法が強く要求されている。
以下に、[発明を実施するための最良の形態]で使用される番号・符号を括弧付きで用いて、[課題を解決するための手段]を説明する。この番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]の記載との対応関係を明らかにするために付加されたものであるが、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明による協調検証装置(10)は、ハードウェアとソフトウェアとを協調させてシミュレーションを行なう演算装置(101)と、記憶装置(103)とを具備する。演算装置(101)は、ソフトウェア側からハードウェア側へ入力される指示信号(29)の入力履歴(30)を記憶装置(103)に記録する。協調検証を所定の時刻から再開する場合、協調検証装置(10)は、ハードウェア側の指示信号(29)の入力履歴(30)を利用して所定の時刻におけるハードウェア側の状態を復元する。ソフトウェア側からハードウェア側への指示信号のみでハードウェア側の途中状態を復元するため、通常のシミュレーションよりも短時間で、所定の時刻におけるハードウェア側の状態を復元することができる。
又、演算装置(101)は、任意の時刻におけるソフトウェア(1)の実行結果を、途中状態情報(40)として記憶装置(103)に記録することが好ましい。更に、シミュレーション(協調検証)を所定の時刻から再開する際、演算装置(101)は、途中状態情報(40)に基づいて、所定の時刻におけるソフトウェア(1)の実行結果を復元することが好ましい。又、演算装置(101)は、入力履歴(30)に基づいて、シミュレーション(協調検証)の開始から所定の時刻の間にハードウェア側に入力された指示信号(29)を、ソフトウェア側からハードウェア側に送出する。これにより所定時刻におけるソフトウェア側及びハードウェア側の途中状態を復元できる。
本発明による協調検証方法は、演算装置(101)がハードウェアとソフトウェアとを協調させてシミュレーションを行なうステップと、演算装置(101)が、ソフトウェア側からハードウェア側へ入力された指示信号(29)の入力履歴(30)を記憶装置(103)に記録するステップとを具備する。
又、上述の方法は、コンピュータ(演算装置(101))によって実行される協調検証プログラムによって実現されることが好ましい。
本発明による協調検証装置、協調検証方法、及び協調検証プログラムによれば、協調検証時間を短縮できる。
以下、添付図面を参照して、本発明による協調検証装置、協調検証方法、及び協調検証プログラムの実施の形態を説明する。本実施の形態では、C言語で作成されたターゲットプログラム1と、RTL記述2に基づきFPGA(Field Programmable Gate Array)によって形成されたハードウェアとを検証対象とする協調検証装置10を一例に説明する。
(概要)
本発明による協調検証装置10は、ソフトウェアとハードウェアとが連携動作するシミュレーションにおいて、ソフトウェア側からハードウェア側に対する指示信号を履歴(入力履歴30)として記録する。又、協調検証装置10は、任意の時期のソフトウェア側の内部状態(例えば、ターゲットCPUのレジスタの状態や、メモリの状態)を途中状態情報40として記録する。協調検証装置10は、協調検証を所定の時刻から再開する際、所定の時刻における途中状態情報40に基づいて、所定の時刻におけるソフトウェア(CPUやメモリ)の内部状態を復元する。又、協調検証装置10は、協調検証の開始から所定の時刻の間に記録された入力履歴30に基づいて、所定の時刻におけるハードウェアの状態を復元する。この際、CPUは、入力履歴30に記録された指示信号を、履歴の古い順にハードウェア側に対し送出して、ハードウェアの状態を復元する。これにより、シミュレーション開始からデバック対象箇所までに要する時間が短縮される。以下、本発明による協調検証装置、協調検証方法、及び協調検証プログラムの詳細を説明する。
本発明による協調検証装置10は、ソフトウェアとハードウェアとが連携動作するシミュレーションにおいて、ソフトウェア側からハードウェア側に対する指示信号を履歴(入力履歴30)として記録する。又、協調検証装置10は、任意の時期のソフトウェア側の内部状態(例えば、ターゲットCPUのレジスタの状態や、メモリの状態)を途中状態情報40として記録する。協調検証装置10は、協調検証を所定の時刻から再開する際、所定の時刻における途中状態情報40に基づいて、所定の時刻におけるソフトウェア(CPUやメモリ)の内部状態を復元する。又、協調検証装置10は、協調検証の開始から所定の時刻の間に記録された入力履歴30に基づいて、所定の時刻におけるハードウェアの状態を復元する。この際、CPUは、入力履歴30に記録された指示信号を、履歴の古い順にハードウェア側に対し送出して、ハードウェアの状態を復元する。これにより、シミュレーション開始からデバック対象箇所までに要する時間が短縮される。以下、本発明による協調検証装置、協調検証方法、及び協調検証プログラムの詳細を説明する。
(構成)
図1から図5を参照して本発明による協調検証装置10の実施の形態における構成を説明する。図1は、協調検証装置10の構成を示す図である。図1を参照して、本発明による協調検証装置10は、バス106を介して相互に接続されるハードウェアエミュレータ100と、CPU101と、メモリ102と、記憶装置103と、入力装置104と、出力装置105とを具備する。記憶装置103はハードディスクやメモリ等に例示される記憶装置である。入力装置104は、キーボードやマウス等に例示され、ユーザ(設計者)によって操作されることで、各種データをCPU101や記憶装置103に出力する。出力装置105は、モニタやプリンタに例示され、CPU101から出力される協調検証結果を、ユーザに対し視認可能に出力する。
図1から図5を参照して本発明による協調検証装置10の実施の形態における構成を説明する。図1は、協調検証装置10の構成を示す図である。図1を参照して、本発明による協調検証装置10は、バス106を介して相互に接続されるハードウェアエミュレータ100と、CPU101と、メモリ102と、記憶装置103と、入力装置104と、出力装置105とを具備する。記憶装置103はハードディスクやメモリ等に例示される記憶装置である。入力装置104は、キーボードやマウス等に例示され、ユーザ(設計者)によって操作されることで、各種データをCPU101や記憶装置103に出力する。出力装置105は、モニタやプリンタに例示され、CPU101から出力される協調検証結果を、ユーザに対し視認可能に出力する。
CPU101は、入力装置104からの入力に応答して、記憶装置103内の協調検証プログラム35を実行し、協調検証処理を行う。この際、記憶装置103からの各種データやプログラムはメモリ102(例えばRAM)に一時格納され、CPU101は、メモリ102内のデータを用いて各種処理を実行する。
記憶装置103は、ハードディスクやメモリ、光記憶媒体に例示され、入力履歴データベース31(入力履歴D/B31)、途中状態データベース32(途中状態D/B32)、ソフトウェアモデルデータベース33(ソフトウェアモデルD/B33)、ハードウェアモデルデータベース34(ハードウェアモデルD/B34)、協調検証プログラム35を格納している。ソフトウェアモデルD/B33及びハードウェアモデルD/B34は、それぞれターゲットプログラム1及びRTL記述2を格納している。協調検証プログラム35は、ソフトウェア及びハードウェアを用いて、ソフトウェアとハードウェアの協調検証のためのシミュレーションを実行する回路シミュレータである。
図2を参照して、協調検証プログラム35は、CPU101によって実行されることで、ソフトウェアシミュレータ351、ハードウェア復元部352、ソフトウェア復元部353、協調検証部354の各機能を実現する。ソフトウェアシミュレータ351は、例えばC言語で作成されたターゲットプログラム1を実行し、ソフトウェアのシミュレーションを行う。これにより、CPU101は、検証対象のターゲットCPUとして動作する。すなわち、ソフトウェアシミュレータ351は、検証対象のソフトウェアとして機能する。ハードウェア復元部352は、ハードウェアエミュレータ100を監視し、ソフトウェア側からハードウェア側へ入力される指示信号29を、入力順に入力履歴30として入力履歴D/B31に記録する。又、ハードウェア復元部352は、シミュレーションを再開する際、入力履歴D/B31から取得した入力履歴30に基づいて、指示信号29を履歴の古いものから順にハードウェア側に出力し、ハードウェアの途中状態を復元する。ソフトウェア復元部353は、例えば特許文献1のように、任意の時刻、あるいはターゲットプログラム1における任意の地点におけるソフトウェアのシミュレーション状況(内部状態)を、途中状態情報40として途中状態D/B32に記録する。この際、ソフトウェア復元部353は、任意の時刻、あるいはターゲットプログラム1における任意の地点におけるメモリ102やレジスタ(図示なし)に格納された情報を取得し、途中状態情報40として記録する。又、ソフトウェア復元部353は、シミュレーションを再開する際、途中状態情報40に応じてメモリ102やレジスタを書き換え、シミュレーション途中のメモリ102やレジスタの状態を復元する。
ハードウェアエミュレータ100は、ハードウェアモデルD/B34に記録されたRTL記述2に基づいて、検証対象となるハードウェアモデルを実現する論理エミュレータである。図3を参照して、ハードウェアエミュレータ100は、RTL記述2に応じた論理回路を形成するFPGAを備える。FPGAは、プログラムに応じて論理回路を構成できるため、デバック対象回路として好適に利用される。本実施の形態のFPGAは、一例としてIO回路11を構成する。I/O回路11は端子群12を介して、バス106に接続され、CPU101やメモリ102との信号や情報の送受信する。ここでIO回路11は、CPU101から入力データを演算(加算及び反転)してできるものとする。
協調検証部354は、ソフトウェアシミュレータ351とハードウェアエミュレータ100のそれぞれから、シミュレーション結果を取得し、これらの結果に基づいて、ソフトウェアモデルとハードウェアモデルの設計の妥当性を検証する。又、協調検証部354は、検証結果を記憶装置103や出力装置105に出力する。
以上のような構成により、協調検証装置10は、図3に示すようなシステムLSI(以下、ターゲットLSI200と称す)に対し協調検証を行う。図3を参照して、ターゲットLSI200は、ソフトウェアモデルとして機能するCPU101、メモリ102、及びアドレスデコーダ13と、ハードウェアモデルとして機能するI/O回路11(FPGA)とを具備する。I/O回路11とCPU101及びメモリ102とはバス106を介して接続される。バス106は、アドレスバス15、データバス16、制御バス17を備える。I/O回路11と、バス106とは、端子群12を介して接続される。
ハードウェア復元部352は、I/O回路11とバス106との境界にある端子群12を監視し、CPU101からI/O回路11に対して送出されるデータや信号を指示信号29として取得する。I/O回路11には、ソフトウェア側から、以下に示す指示信号が入力される。すなわち、初期化を指示するリセット信号21(Reset)、システムクロック22(CLK)、データの送信先を指示するチップセレクト信号23(CS)、データの読み出し又は書き込みを指示するリード/ライト信号24(R/W)、アドレス指定信号25(A23〜A0)、データ26(Dout31〜Dout0)が入力される。又、I/O回路11からソフトウェア側には、以下のような信号が出力される。すなわち、レディ信号27(Ready out)、アドレス指定信号25、データ28(Din31〜Din0)が出力される。ただし、I/O回路11に対し入出力する信号や情報は、これらに限らないのは言うまでもない。
I/O回路11は、図4及び図5に示すようなアドレスマップを備えている。図4を参照して、I/O回路11に入力される指示信号は、信号種別毎に信号線(端子)のアドレスに対応付けられる。例えば、アドレス0×000のバスにおける0ビット目の信号線(端子)にはシステムクロック22(CLK)が対応付けられ、4ビット目にはリセット信号21(Reset)が対応付けられる。又、アドレス0×004のバスにおける0ビット目の信号線(端子)にはリード/ライト信号24(R/W)が対応付けられ、4ビット目にはチップセレクト信号23(CS)が対応付けられる。更に、アドレス0×008のバスにおける0ビット目から23ビット目のそれぞれの信号線(端子)にはアドレス指定信号25(A0〜A23)が対応付けられる。更に、アドレス0×00Cのバスにおける0ビット目から31ビット目のそれぞれの信号線(端子)にはデータ26(Dout0〜Dout31)が対応付けられる。図5を参照して、I/O回路11から出力される指示信号は、信号種別毎に信号線(端子)のアドレスに対応付けられる。例えば、アドレス0×100のバスにおける0ビット目の信号線(端子)にはレディ信号27(Ready out)が対応付けられる。又、アドレス0×008のバスにおける0ビット目から31ビット目のそれぞれの信号線(端子)にはデータ26(Din0〜Din31)が対応付けられる。
次に、本発明による協調検証動作における入力履歴の記録動作の詳細を説明する。
本発明による協調検証装置10は、協調検証の際、ソフトウェア側からハードウェア側への入力信号を入力履歴として保存する。図6及び図7を参照して、協調検証時における入力履歴の記録動作を説明する。図7を参照して、協調検証装置10が、ターゲットLSI200の検証を開始すると、ハードウェア復元部352は、端子群12の監視を開始する(ステップS1)。ここでハードウェア復元部352は、端子群12内において、ソフトウェア側からI/O回路11への入力信号が通過する端子、すなわち、図4に示されるアドレス0×000、0×004、0×008、0×00C、・・・に対応するバスを監視する。ソフトウェア側からハードウェア側(I/O回路11)へ指示信号29が送出された場合(ステップS2YES)、ハードウェア復元部352は、指示信号29を、入力された端子のアドレスに対応付けて入力履歴D/B31に記録する(ステップS3)。詳細には、端子群12を監視するハードウェア復元部352は、信号レベルが変化した端子から指示信号29を抽出し、入力履歴D/B31に記録する。一方、ソフトウェア復元部353は、協調検証開始から任意の時刻までのソフトウェアのシミュレーション結果を途中状態情報40として保存する。途中状態情報40が記録されると(ステップS4Yes)、ハードウェア復元部352は、途中状態情報40が記録された時刻までに入力履歴D/B31に記録された入力履歴30と途中状態情報40とを対応付ける(ステップS5)。途中状態情報40が記録されない場合(ステップS4No)、又はステップS5の処理後において、シミュレーション(協調検証)が継続中の場合、ハードウェア復元部352は端子群12の監視(入力履歴30の記録)を続行する(ステップS6No)。又、シミュレーション(協調検証)が終了すると、端子群12の監視(入力履歴30の記録)を終了する(ステップS6Yes)。すなわち、ハードウェア復元部352は、途中状態情報40の記録の有無に関わらずシミュレーション(協調検証)が終了するまで指示信号29の記録(入力履歴30の記録)を繰り返す。以上のように、ハードウェア復元部352は、協調検証の開始から終了までの間、ソフトウェア側からハードウェア側へ送出された指示信号29の履歴(入力履歴30)を記録する。又、ソフトウェア側のシミュレーション結果(途中状態情報40)が記録された時刻までに記録された入力履歴30と当該途中状態情報40とを対応付けることができる。
図6は、ハードウェア復元部352によって記録された入力履歴30の一例を示す図である。ここでは、協調検証において、CPU101がターゲットプログラム1を実行して以下の処理を行う場合を一例に説明する。すなわち、CPU101は、(1)メモリ102内の2個のデータを読み出し、(2)読み出した2個のデータをI/O回路11に書き込み、(3)I/O回路11に対し、加工処理(ここでは2つのデータを加算して反転)の実行指示を発行し、(4)I/O回路11から加工処理の結果データを読み出し、(5)結果データをメモリに保存する。
ハードウェア復元部352は、信号レベルの変化した信号線から指示信号29を順次抽出し、当該信号線のアドレスと対応付けて入力履歴30として記録する。当初、CPU101は、I/O回路11を初期化する。ハードウェア復元部352は、繰り返し入力される指示信号29:0×10、0×11をアドレス:0×000に対応付けて順次記録する。次にCPU101は、リセットを解除する。この際、CPU101からI/O回路11に入力されるReset21は、ハイレベル“1”からローレベル“0”に変化する。ハードウェア復元部352は、指示信号29:0×01を抽出し、アドレス:0X000に対応付けて記録する。続いて、CLK22の信号レベルの変化に応じて、指示信号29:0×00又は0×01を抽出し、アドレス:0X000に対応付けて記録する。
次に、CPU101は、メモリ102内のデータA(0×3333)を読み出し、I/O回路11におけるワーク用レジスタ(0×2000)に書き込む。この際、I/O回路11には、指示信号29としてアドレス信号25(0×2000)、データ26(0×3333)、CS23及びライト信号24が順に入力される。ハードウェア復元部352は、I/O回路11への入力順に、指示信号29:0×2000とアドレス0×008を対応付けて記録し、指示信号29:0×3333とアドレス0×00Cを対応付けて記録し、指示信号29:0×10とアドレス:0×004を対応付けて記録する。I/O回路11は、ワーク用レジスタ(0×2000)にデータAを書き込むと、CPU101に対しレディ信号27を送出する。
レディ信号27を受け取ったCPU101は、メモリ102内のデータB(0×4444)を読み出し、I/O回路11におけるワーク用レジスタ(0×2004)に書き込む。この際、I/O回路11には、指示信号29としてアドレス信号25(0×2004)、データ26(0×4444)、CS23及びライト信号24が順に入力される。ハードウェア復元部352は、I/O回路11への入力順に、指示信号29:0×2004とアドレス0×008を対応付けて記録し、指示信号29:0×4444とアドレス0×00Cとを対応付けて記録し、指示信号29:0×10とアドレス:0×004を対応付けて記録する。I/O回路11は、ワーク用レジスタ(0×2004)にデータBを書き込むと、CPU101に対しレディ信号27を送出する。
レディ信号27を受け取ったCPU101は、I/O回路11内の制御レジスタ(0×2100)に、データAとデータBを加算及び反転するための指示情報(0×FFFF)を書き込む。この際、I/O回路11には、指示信号29としてアドレス信号25(0×2100)、データ26(0×FFFF)、CS23及びライト信号24が順に入力される。ハードウェア復元部352は、I/O回路11への入力順に、指示信号29:0×2100とアドレス0×008を対応付けて記録し、指示信号29:0×FFFFとアドレス0×00Cとを対応付けて記録し、指示信号29:0×10とアドレス:0×004を対応付けて記録する。
I/O回路11は、制御用レジスタ内の指示情報(0×FFFF)に基づき、データA(0×3333)とデータB(0×4444)とを加算して反転し、結果データ(0×8888)を結果レジスタ(0×2200)に格納する。I/O回路11は、演算が終了し、結果データを格納するとレディ信号27をCPU101に対し送出する。レディ信号27を受け取ったCPU101は、I/O回路11内の結果レジスタ(0×2200)から結果データ(0×8888)を読み出し、メモリ102に格納する。この際、I/O回路11には、CPU101からの指示信号29としてアドレス信号25(0×2200)、データ26(0×FFFF)、CS23及びリード信号24が順に入力される。ハードウェア復元部352は、入力履歴30として、I/O回路11への入力順に、指示信号29:0×2100とアドレス0×008を対応付けて記録し、指示信号29:0×FFFFとアドレス0×00Cとを対応付けて記録し、指示信号29:0×11とアドレス:0×004を対応付けて記録する。I/O回路11は、結果レジスタ内のデータ28(0×FFFF)をCPU101に対し送出する。
以上のような入力履歴30の記録は、協調検証の開始から協調検証の終了又は中断されるまで行われる。
一方、ソフトウェア復元部353は、時刻A(任意の時刻又は、ターゲットプログラムにおける任意の箇所)におけるシミュレーション結果を途中状態情報40として保存する。例えば、ソフトウェア復元部353は、協調検証において不具合が発生した箇所(デバック対象箇所)の手前の時刻や、シミュレーション上のOSが終了した時点の途中状態情報40を途中状態D/B32に記録する。この際、ハードウェア復元部352は、時刻Aまでに記録された入力履歴30と、時刻Aに記録された途中状態情報40とを対応付ける(ステップS5)。例えば、データAとデータBを加算・反転したデータをメモリ102に格納する時点で途中状態情報40が記録された場合、ハードウェア復元部352は、当該途中状態情報40と、図6に示す入力履歴30とを対応付ける。
以上のように、本発明によれば、任意の時刻におけるソフトウェアのシミュレーション結果(途中状態情報40)と、ハードウェア側への指示信号29の履歴(入力履歴30)とを対応付けて記録することができる。
次に、本発明による協調検証装置10において、シミュレーションの途中(時刻A)から再実行する方法について説明する。協調検証装置10は、時刻Aからシミュレーションを再実行する際、ソフトウェア復元部353によって、時刻Aにおけるソフトウェア側の内部状態を復元し、ハードウェア復元部352によって、時刻Aにおけるハードウェア側の内部状態を復元する。
ソフトウェア復元部353は、時刻Aに記録した途中状態情報40を用いてメモリ102やCPU101内のレジスタの状態を復元する。ハードウェア復元部352は、協調検証の開始から時刻Aまでに記録した入力履歴30を参照し、指示信号29を履歴順(I/O回路11への入力が古い順)にI/O回路11に対し送出する。例えば、時刻Aまでに図6に示すような入力履歴30が記録されている場合、ハードウェア復元部352は、リセット解除から結果データのリードまでの指示情報29を順にI/O回路11に送出する。これにより、I/O回路11は、時刻AまでにCPU101から指示されて実行した処理を再実行し、時刻Aにおけるシミュレーションの実行結果を復元することができる。本発明では、ハードウェア側(I/O回路11)からソフトウェア側に送出した信号やデータ(例えばレディ信号27やデータ28)は省略されているため、ハードウェアの途中状態の復元に要する時間は大幅に短縮される。
以上のように、本発明によれば、ソフトウェア側からハードウェア側への指示信号を用いて、協調検証におけるハードウェア側の途中状態を復元するため、途中状態までのシミュレーション時間を短縮することができる。これにより、デバック箇所までのシミュレーション時間や、シミュレーション上のOSの起動時間を短縮することができ、効率のよい協調検証が可能となる。
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。実施の形態におけるハードウェア復元部352は、CPU101によって実行されるプログラムによって実現されるが、これに限らず、端子群12を監視する別装置によって実現しても良い。又、ハードウェア復元部352によって指示信号29を取得するタイミングは、システムクロック22に応じたタイミングでも別のサンプリングクロック(図示なし)に応じたタイミングでもどちらでも良い。尚、別のサンプリングクロックに応じて指示信号29を取得する場合、入力履歴30としてシステムクロック22を記録する必要はない。更に、ターゲットプログラム1はC言語によるプログラムに限定されない。又、ハードウェアモデルとして利用されるハードウェアエミュレータ100に書き込まれるハードウェア記述は、RTL記述に限定されない。
10:協調検証装置
100:ハードウェアエミュレータ
101:CPU
102:メモリ
103:記憶装置
104:入力装置
105:出力装置
106:バス
31:入力履歴D/B
32:途中状態D/B
33:ソフトウェアモデルD/B
34:ハードウェアモデルD/B
35:協調検証プログラム
351:ソフトウェアシミュレータ
352:ハードウェア復元部
353:ソフトウェア復元部
354:協調検証部
29:指示信号
30:入力履歴
40:途中状態情報
100:ハードウェアエミュレータ
101:CPU
102:メモリ
103:記憶装置
104:入力装置
105:出力装置
106:バス
31:入力履歴D/B
32:途中状態D/B
33:ソフトウェアモデルD/B
34:ハードウェアモデルD/B
35:協調検証プログラム
351:ソフトウェアシミュレータ
352:ハードウェア復元部
353:ソフトウェア復元部
354:協調検証部
29:指示信号
30:入力履歴
40:途中状態情報
Claims (9)
- ハードウェアとソフトウェアとを協調させてシミュレーションを行なう演算装置と、
記憶装置と、
を具備し、
前記演算装置は、前記ソフトウェア側から前記ハードウェア側へ入力される指示信号の入力履歴を前記記憶装置に記録する
協調検証装置。 - 請求項1に記載の協調検証装置において、
前記演算装置は、前記ハードウェア側に入力される前記指示信号と、前記指示信号が入力される端子のアドレスとを対応付けて、前記指示信号の入力順に前記記憶装置に記録する
協調検証装置。 - 請求項1又は2に記載の協調検証装置において、
前記演算装置は、任意の時刻における前記ソフトウェアの実行結果を、途中状態情報として前記記憶装置に記録する
協調検証装置。 - 請求項3に記載の協調検証装置において、
前記シミュレーションを所定の時刻から再開する際、
前記演算装置は、前記途中状態情報に基づいて、前記所定の時刻における前記ソフトウェアの実行結果を復元し、前記入力履歴に基づいて、前記シミュレーションの開始から前記所定の時刻の間に前記ハードウェア側に入力された指示信号を、前記ソフトウェア側から前記ハードウェア側に送出する
協調検証装置。 - (A)演算装置がハードウェアとソフトウェアとを協調させてシミュレーションを行なうステップと、
(B)前記演算装置が、前記ソフトウェア側から前記ハードウェア側へ入力された指示信号の入力履歴を記憶装置に記録するステップと、
を具備する協調検証方法。 - 請求項5に記載の協調検証方法において、
前記指示信号は、複数の端子のいずれかを介して、前記ハードウェア側に入力され、
前記(B)ステップは、前記演算装置が、前記ハードウェア側に入力される前記指示信号と、前記指示信号が入力される端子のアドレスとを対応付けて、前記指示信号の入力順に前記記憶装置に記録するステップとを備える
協調検証方法。 - 請求項5又は6に記載の協調検証方法において、
前記演算装置が、任意の時刻における前記ソフトウェアの実行結果を途中状態情報として前記記憶装置に記録するステップを更に具備する協調検証方法。 - 請求項7に記載の協調検証方法において、
前記シミュレーションを所定の時刻から再開する際、
前記演算装置が、前記途中状態情報に基づいて、前記所定の時刻における前記ソフトウェアの実行結果を復元するステップと、
前記CPUが、前記入力履歴に基づいて、前記シミュレーションの開始から前記所定の時刻の間に前記ハードウェア側に入力された指示信号を、前記ソフトウェア側から前記ハードウェア側に送出するステップと、
を具備する協調検証方法。 - 請求項5から8いずれか1項に記載の協調検証方法をコンピュータに実行させる協調検証プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007127784A JP2008282308A (ja) | 2007-05-14 | 2007-05-14 | 協調検証装置、協調検証方法、協調検証プログラム |
US12/149,993 US20080288231A1 (en) | 2007-05-14 | 2008-05-12 | Apparatus and method for cooperation verification |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007127784A JP2008282308A (ja) | 2007-05-14 | 2007-05-14 | 協調検証装置、協調検証方法、協調検証プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008282308A true JP2008282308A (ja) | 2008-11-20 |
Family
ID=40028419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007127784A Pending JP2008282308A (ja) | 2007-05-14 | 2007-05-14 | 協調検証装置、協調検証方法、協調検証プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080288231A1 (ja) |
JP (1) | JP2008282308A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016004338A (ja) * | 2014-06-16 | 2016-01-12 | 富士電機株式会社 | 連携シミュレーション装置 |
JP2020160898A (ja) * | 2019-03-27 | 2020-10-01 | 株式会社日立製作所 | シミュレーション管理方法及びシミュレーションシステム |
JP2022500738A (ja) * | 2018-09-19 | 2022-01-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 演算および信用できる確認のための分散型プラットフォーム |
US11940978B2 (en) | 2018-09-19 | 2024-03-26 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130024178A1 (en) * | 2011-07-20 | 2013-01-24 | Narendran Kumaragurunathan | Playback methodology for verification components |
US9600384B2 (en) * | 2014-10-14 | 2017-03-21 | Cypress Semiconductor Corporation | System-on-chip verification |
US10719474B2 (en) | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002236594A (ja) * | 2001-02-13 | 2002-08-23 | Fujitsu Ltd | エミュレーションシステムおよびエミュレータ |
JP2003242193A (ja) * | 2002-02-14 | 2003-08-29 | Nec Corp | 協調シミュレーションの再現実行を行う論理検証装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5678028A (en) * | 1994-10-25 | 1997-10-14 | Mitsubishi Electric Information Technology Center America, Inc. | Hardware-software debugger using simulation speed enhancing techniques including skipping unnecessary bus cycles, avoiding instruction fetch simulation, eliminating the need for explicit clock pulse generation and caching results of instruction decoding |
US5771370A (en) * | 1996-05-14 | 1998-06-23 | Mentor Graphics Corporation | Method and apparatus for optimizing hardware and software co-simulation |
US6553531B1 (en) * | 1999-04-22 | 2003-04-22 | Synopsys, Inc. | Method and apparatus for random stimulus generation |
US7072820B1 (en) * | 2000-06-02 | 2006-07-04 | Brian Bailey | Accessing state information in a hardware/software co-simulation |
US7567893B2 (en) * | 2004-12-30 | 2009-07-28 | Vast Systems Technology Corporation | Clock simulation system and method |
US7673201B1 (en) * | 2009-03-12 | 2010-03-02 | Xilinx, Inc. | Recovering a prior state of a circuit design within a programmable integrated circuit |
-
2007
- 2007-05-14 JP JP2007127784A patent/JP2008282308A/ja active Pending
-
2008
- 2008-05-12 US US12/149,993 patent/US20080288231A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002236594A (ja) * | 2001-02-13 | 2002-08-23 | Fujitsu Ltd | エミュレーションシステムおよびエミュレータ |
JP2003242193A (ja) * | 2002-02-14 | 2003-08-29 | Nec Corp | 協調シミュレーションの再現実行を行う論理検証装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016004338A (ja) * | 2014-06-16 | 2016-01-12 | 富士電機株式会社 | 連携シミュレーション装置 |
JP2022500738A (ja) * | 2018-09-19 | 2022-01-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 演算および信用できる確認のための分散型プラットフォーム |
US11784789B2 (en) | 2018-09-19 | 2023-10-10 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
JP7361103B2 (ja) | 2018-09-19 | 2023-10-13 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 演算および信用できる確認のための分散型プラットフォーム |
US11940978B2 (en) | 2018-09-19 | 2024-03-26 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
JP2020160898A (ja) * | 2019-03-27 | 2020-10-01 | 株式会社日立製作所 | シミュレーション管理方法及びシミュレーションシステム |
JP7145804B2 (ja) | 2019-03-27 | 2022-10-03 | 株式会社日立製作所 | シミュレーション管理方法及びシミュレーションシステム |
Also Published As
Publication number | Publication date |
---|---|
US20080288231A1 (en) | 2008-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115841089B (zh) | 一种基于uvm的系统级芯片验证平台及验证方法 | |
US7409330B2 (en) | Method and system for software debugging using a simulator | |
US7246052B2 (en) | Bus master and bus slave simulation using function manager and thread manager | |
US8725485B2 (en) | Simulation method and simulation apparatus | |
JP4564110B2 (ja) | 二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータ | |
JP2008282308A (ja) | 協調検証装置、協調検証方法、協調検証プログラム | |
US8495344B2 (en) | Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information | |
US20130024178A1 (en) | Playback methodology for verification components | |
CN115017845A (zh) | 用于ip单元级别验证的总线驱动式芯片仿真激励模型 | |
US10664637B2 (en) | Testbench restoration based on capture and replay | |
US7228513B2 (en) | Circuit operation verification device and method | |
CN116450430A (zh) | 处理器的验证方法、验证系统以及存储介质 | |
JP2011039781A (ja) | 協調シミュレーション装置及びシミュレーション方法 | |
JP4589255B2 (ja) | ハードウェア/ソフトウェア協調検証装置 | |
JP2023032451A (ja) | シミュレーション装置、及びシミュレーション方法 | |
JP2005353020A (ja) | コンピュータプログラムのシミュレーション方式 | |
JP5120103B2 (ja) | デバッグ方法およびデバッグプログラム | |
JP2006146412A (ja) | マルチコアプロセッサ及びデバッグ方法 | |
JP5935319B2 (ja) | 回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラム | |
JP2004310568A (ja) | シミュレータ装置、シミュレーション方法および性能解析方法 | |
JPH09237191A (ja) | プログラミング支援装置、プログラミング支援方法、及びプログラミング支援プログラムを記録した媒体 | |
JPH07253909A (ja) | マイクロプログラム検証方法 | |
JP2001256079A (ja) | ソフトウェアのデバッグ方法および論理回路のデバッグ方法 | |
JP2006227668A (ja) | メモリモデルとプログラムと論理回路検証方法 | |
JPS59151247A (ja) | 情報処理装置の試験装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100315 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110906 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120203 |