JP2015011363A - Cooperation verification device and cooperation verification method - Google Patents

Cooperation verification device and cooperation verification method Download PDF

Info

Publication number
JP2015011363A
JP2015011363A JP2013133725A JP2013133725A JP2015011363A JP 2015011363 A JP2015011363 A JP 2015011363A JP 2013133725 A JP2013133725 A JP 2013133725A JP 2013133725 A JP2013133725 A JP 2013133725A JP 2015011363 A JP2015011363 A JP 2015011363A
Authority
JP
Japan
Prior art keywords
cpu
data
transmission
electronic circuit
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
Application number
JP2013133725A
Other languages
Japanese (ja)
Inventor
亮 登坂
Ryo Tosaka
亮 登坂
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2013133725A priority Critical patent/JP2015011363A/en
Publication of JP2015011363A publication Critical patent/JP2015011363A/en
Pending legal-status Critical Current

Links

Images

Abstract

PROBLEM TO BE SOLVED: To improve the speed of cooperation verification.SOLUTION: In a cooperation verification device for verifying the operation of an electronic circuit by combining software simulation with hardware emulation, a CPU 30 is incorporated in an FPGA(Field-Programmable Gate Array) 20 for performing hardware emulation, and the CPU 30 is allowed to execute software simulation. Then, the CPU 30 simulates the operation of a part of the electronic circuit, and the FPGA 20 emulates the operation of the other part of the electronic circuit, and signal transmission/reception between a part of the electronic circuit and the other part of the electronic circuit is simulated by signal transmission/reception between the FPGA 20 and the CPU 30.

Description

この発明は、ソフトウェアシミュレーションとハードウェアエミュレーションを組み合わせて電子回路の動作を検証する協調検証装置及び協調検証方法に関する。   The present invention relates to a collaborative verification apparatus and a collaborative verification method for verifying the operation of an electronic circuit by combining software simulation and hardware emulation.

従来から、集積回路を設計する際に、その集積回路の機能や性能が期待通りに発揮されるか否かをシミュレーションにより検証することが行われている。そして、このシミュレーションは、回路の構造をHDL(Hardware Description Language)により記述し、コンピュータ上でその回路の動作をシミュレートするHDLシミュレーションにより行われていた。このHDLシミュレーションには、デバッグ性がよいという利点がある。   Conventionally, when designing an integrated circuit, it has been verified by simulation whether or not the function and performance of the integrated circuit are exhibited as expected. This simulation is performed by HDL simulation in which the circuit structure is described in HDL (Hardware Description Language) and the operation of the circuit is simulated on a computer. This HDL simulation has the advantage of good debugability.

しかし、SOC(System On a Chip)など、回路に多数の機能を搭載する場合、回路の規模が大きくなり、それに伴ってHDLシミュレーションに必要なデータやプログラムが増加して、処理に長時間がかかるようになってきた。そしてこのため、OS(Operating System)込みの検証や網羅的な検証項目の検証を行うのが難しく、HDLシミュレーションにより回路の全ての動作を検証することが難しくなってきた。   However, when many functions are installed in a circuit such as SOC (System On a Chip), the scale of the circuit increases, and the data and programs necessary for the HDL simulation increase accordingly, and the processing takes a long time. It has become like this. For this reason, it is difficult to perform verification including OS (Operating System) and verification of comprehensive verification items, and it has become difficult to verify all operations of the circuit by HDL simulation.

このような問題に対処するため、検証対象回路の論理の一部をFPGA(Field-Programmable Gate Array)に組み込み、このFPGAによるエミュレーションとHDLシミュレーションとを組み合わせて検証を行う協調検証という手法が用いられるようになってきた。
この協調検証に関する技術としては、例えば特許文献1乃至3に記載のものが知られている。
In order to cope with such a problem, a technique called collaborative verification is used in which part of the logic of the circuit to be verified is incorporated into an FPGA (Field-Programmable Gate Array), and verification is performed by combining emulation by this FPGA and HDL simulation. It has become like this.
As technologies related to this cooperative verification, for example, those described in Patent Documents 1 to 3 are known.

特許文献1には、FPGAエミュレータがエミュレートする回路とHDLシミュレータがシミュレートする回路の構成を動的に変更することにより、協調検証装置の処理速度を向上させる技術が開示されている。
特許文献2には、ハードウェアエミュレータからシステムシミュレータに出力する出力信号が変化した場合のみシステムシミュレータがその出力信号を取り込むようにすることにより、ハードウェアエミュレータとシステムシミュレータとの間の通信量を減らす技術が開示されている。
Patent Document 1 discloses a technique for improving the processing speed of the collaborative verification apparatus by dynamically changing the configuration of a circuit emulated by an FPGA emulator and a circuit simulated by an HDL simulator.
In Patent Document 2, the amount of communication between the hardware emulator and the system simulator is reduced by causing the system simulator to capture the output signal only when the output signal output from the hardware emulator to the system simulator changes. Technology is disclosed.

特許文献3には、エミュレータにCPUコアを除く検証対象回路とCPUコアをマッピングしつつ、通常動作モードとデバッグモードを切り替えながら検証を行うことが開示されている。このうち通常動作モードはエミュレータのCPUコアが動作させて高速処理を可能とし、デバッグモードは、エミュレータを動かしながらソフトウェアの実行はコンピュータ上の命令セットシミュレータで検証することにより、効果的なデバッグを行うものである。
なお、特許文献3の技術は、高速性を優先したモードとデバッグ性を優先したモードとを切り替えることができるものであるが、高速性とデバッグ性を兼ね備えたモードが用意されているものではない。
Patent Document 3 discloses that verification is performed while switching a normal operation mode and a debug mode while mapping a verification target circuit excluding a CPU core and a CPU core on an emulator. Of these, the normal operation mode allows the emulator's CPU core to operate and enables high-speed processing, while the debug mode enables effective debugging by running the emulator and verifying software execution with an instruction set simulator on the computer. Is.
The technique of Patent Document 3 can switch between a mode that prioritizes high speed and a mode that prioritizes debugging, but a mode that combines high speed and debugging is not prepared. .

ところで、協調検証を行うための協調検証装置は、従来、例えば図17乃至図19に示す構成であった。図17は、その協調検証装置のハードウェア構成を示す図である。図18は、図17のPCが備える機能を示す図である。図19は、図17の協調検証装置による検証動作の様子を模式的に示す図である。   By the way, the cooperation verification apparatus for performing a cooperation verification was conventionally the structure shown, for example in FIG. 17 thru | or FIG. FIG. 17 is a diagram illustrating a hardware configuration of the cooperative verification apparatus. FIG. 18 is a diagram showing functions provided in the PC of FIG. FIG. 19 is a diagram schematically illustrating a verification operation performed by the cooperative verification apparatus in FIG.

まず、ハードウェアとしては、図17に示すように、ハードウェアエミュレーションに用いるFPGA220を搭載したFPGAボード210を、HDLシミュレーションを行うコンピュータであるPC(パーソナルコンピュータ)230と、通信ケーブル240により接続により接続していた。   First, as hardware, as shown in FIG. 17, an FPGA board 210 equipped with an FPGA 220 used for hardware emulation is connected to a PC (personal computer) 230, which is a computer that performs HDL simulation, by a communication cable 240. Was.

またPC230においては、図18に示すように、CPU231がLinux(登録商標)等のOS(オペレーティングシステム)250を実行すると共に、そのOS250上で動作するアプリケーションであるHDLシミュレータ260及びテストベンチアプリ
270を実行する。また、CPU231はFPGAボード210及びFPGA220との間のデータ送受信を、PC230が備えるバス及び通信I/Fを介し、さらに通信ケーブル240を介して行う。
In the PC 230, as shown in FIG. 18, the CPU 231 executes an OS (Operating System) 250 such as Linux (registered trademark), and an HDL simulator 260 and a test bench application 270 that are applications operating on the OS 250. Run. Further, the CPU 231 performs data transmission / reception between the FPGA board 210 and the FPGA 220 via the bus and communication I / F included in the PC 230 and further via the communication cable 240.

HDLシミュレータ260は、回路の構成をHDLにより記述したHDLデータに基づき、その回路の動作をシミュレートする機能を備える。
テストベンチアプリ270は、回路の動作を検証するための入力信号あるいは入力データを生成してHDLシミュレータ260又はFPGA220に供給する機能を備える。また、その入力信号あるいは入力データに応じてHDLシミュレータ260及びFPGA220が出力する出力データ及び出力信号し、その内容が適切であるかを監視する機能を備える。HDLシミュレータ260及びFPGA220から、入力に対して想定通りの出力が帰ってくれば、検証対象の回路は想定通りに動作すると判断することができる。
The HDL simulator 260 has a function of simulating the operation of the circuit based on HDL data in which the circuit configuration is described in HDL.
The test bench application 270 has a function of generating an input signal or input data for verifying the operation of the circuit and supplying the input signal or input data to the HDL simulator 260 or the FPGA 220. In addition, it has a function of monitoring output data and output signals output from the HDL simulator 260 and the FPGA 220 in accordance with the input signals or input data, and monitoring whether the contents are appropriate. If the expected output from the HDL simulator 260 and the FPGA 220 returns to the input, it can be determined that the circuit to be verified operates as expected.

ここで、検証対象の回路が第1〜第3モジュールにより構成されるとする。
この場合、図19に示すように、そのうち一部のモジュール(ここでは第1及び第2モジュール)と対応する回路を、FPGA220をプログラムすることにより第1モジュール221及び第2モジュール222としてFPGA220中に形成する。このことにより、FPGA220はこれらのモジュールの機能をエミュレートする。
また、残りの第3モジュールの構成をHDLにより記述し、PC230が実行するアプリケーション(アプリ)であるHDLシミュレータ260に入力する。このことにより、HDLシミュレータは第3モジュールの機能を第3モジュール233としてシミュレートする。
Here, it is assumed that the circuit to be verified is configured by the first to third modules.
In this case, as shown in FIG. 19, circuits corresponding to some of the modules (here, the first and second modules) are programmed into the FPGA 220 as the first module 221 and the second module 222 by programming the FPGA 220. Form. This causes FPGA 220 to emulate the functions of these modules.
Further, the configuration of the remaining third module is described in HDL, and is input to the HDL simulator 260 that is an application (application) executed by the PC 230. Thus, the HDL simulator simulates the function of the third module as the third module 233.

そして、テストベンチアプリ270により実現されるテストベンチ132が、第1モジュール221、第2モジュール222及び第3モジュール233にそれぞれ入力データあるいは入力信号を供給する。また、テストベンチ232は、これらの各モジュールから出力データ及び出力信号を収集する。さらに、各モジュールは、動作中に他のモジュールとの間でデータあるいは信号を送受信する場合もある。   Then, the test bench 132 realized by the test bench application 270 supplies input data or an input signal to the first module 221, the second module 222, and the third module 233, respectively. The test bench 232 collects output data and output signals from each of these modules. Furthermore, each module may transmit and receive data or signals to and from other modules during operation.

これらのうち、第1モジュール221と第2モジュール222との間の送受信は、FPGA220内の信号線を用いて行うことができる。第3モジュール233とテストベンチ232との間の送受信は、PC230内のプロセス間通信により行うことができる。これらの通信路については、FPGA220のプログラムあるいはHDLシミュレータ260及びテストベンチアプリ270のプログラムにより、比較的容易に広い通信帯域を確保することができる。   Among these, transmission / reception between the first module 221 and the second module 222 can be performed using a signal line in the FPGA 220. Transmission / reception between the third module 233 and the test bench 232 can be performed by inter-process communication in the PC 230. For these communication paths, a wide communication band can be secured relatively easily by the program of the FPGA 220 or the programs of the HDL simulator 260 and the test bench application 270.

しかし、PC230とFPGA220をまたぐ送受信、すなわち、第3モジュール233及びテストベンチ232と、第1及び第2モジュール221,222との間の通信は、通信ケーブル240を介して行うことになる。この通信ケーブル240を介した通信については、通信ケーブル240の通信規格に従ったデータ形式の変換が必要であったり、構成の変更が困難であったりすることから、通信帯域に制約があり、またその拡張も容易に行うことができなかった。   However, transmission / reception across the PC 230 and the FPGA 220, that is, communication between the third module 233 and the test bench 232 and the first and second modules 221 and 222 is performed via the communication cable 240. With regard to communication via the communication cable 240, data format conversion in accordance with the communication standard of the communication cable 240 is necessary, and it is difficult to change the configuration. The expansion was not easy.

従って、PC230とFPGA220をまたぐ送受信の回数やデータ量が大きくなる場合、通信速度が制約となり、協調検証の速度が低下してしまうという問題があった。
このような問題を解決する技術については、特許文献1乃至3にも記載されていない。
この発明は、このような問題を解決し、協調検証の速度を向上させることを目的とする。
Therefore, when the number of times of transmission / reception across the PC 230 and the FPGA 220 and the amount of data increase, there is a problem that the communication speed is restricted and the speed of cooperative verification is reduced.
Patent Documents 1 to 3 do not describe a technique for solving such a problem.
An object of the present invention is to solve such problems and improve the speed of collaborative verification.

以上の目的を達成するため、この発明は、ソフトウェアシミュレーションとハードウェアエミュレーションを組み合わせて電子回路の動作を検証する協調検証装置において、上記ハードウェアエミュレーションを行うプログラマブル回路にCPUを内蔵し、そのCPUに上記ソフトウェアシミュレーションを実行させるようにしたものである。   In order to achieve the above object, the present invention provides a collaborative verification apparatus that verifies the operation of an electronic circuit by combining software simulation and hardware emulation, and incorporates a CPU in the programmable circuit that performs the hardware emulation. The software simulation is executed.

上記構成によれば、協調検証の速度を向上させることができる。   According to the above configuration, the speed of cooperative verification can be improved.

この発明の協調検証装置の第1の実施形態のハードウェア構成を示す図である。It is a figure which shows the hardware constitutions of 1st Embodiment of the cooperative verification apparatus of this invention. 図1に示したCPUの動作環境について説明するための図である。It is a figure for demonstrating the operating environment of CPU shown in FIG. 図1の協調検証装置による検証動作の様子を模式的に示す図である。It is a figure which shows typically the mode of the verification operation | movement by the cooperative verification apparatus of FIG. CPUの動作環境の別の例について説明するための図2と対応する図である。It is a figure corresponding to FIG. 2 for demonstrating another example of the operating environment of CPU. 協調検証装置による検証動作の別の例を模式的に示す図3と対応する図である。It is a figure corresponding to Drawing 3 showing typically another example of verification operation by a cooperation verification device. CPUの動作環境のさらに別の例について説明するための図2と対応する図である。It is a figure corresponding to FIG. 2 for demonstrating another example of the operating environment of CPU. 協調検証装置による検証動作のさらに別の例を模式的に示す図3と対応する図である。It is a figure corresponding to Drawing 3 showing still another example of verification operation by a cooperation verification device typically. CPUの動作環境のさらに別の例について説明するための図2と対応する図である。It is a figure corresponding to FIG. 2 for demonstrating another example of the operating environment of CPU. 協調検証装置による検証動作のさらに別の例を模式的に示す図3と対応する図である。It is a figure corresponding to Drawing 3 showing still another example of verification operation by a cooperation verification device typically. この発明の協調検証装置の第2の実施形態による検証動作の様子を模式的に示す図である。It is a figure which shows typically the mode of verification operation | movement by 2nd Embodiment of the cooperative verification apparatus of this invention. 図10に示した協調検証装置における、第1送受信モジュールが第2送受信モジュールにデータを送信する際の各部の動作を示すフローチャートである。It is a flowchart which shows operation | movement of each part at the time of the 1st transmission / reception module transmitting data to the 2nd transmission / reception module in the cooperation verification apparatus shown in FIG. 同じく、第2送受信モジュールが第1送受信モジュールにデータを送信する際の各部の動作を示すフローチャートである。Similarly, it is a flowchart which shows operation | movement of each part at the time of a 2nd transmission / reception module transmitting data to a 1st transmission / reception module. 同じく、第2送受信モジュールがエラーモードで第1送受信モジュールにデータを送信する際の各部の動作を示すフローチャートである。Similarly, it is a flowchart which shows operation | movement of each part at the time of a 2nd transmission / reception module transmitting data to a 1st transmission / reception module in error mode. 図13の続きを示すフローチャートである。It is a flowchart which shows the continuation of FIG. 第1の比較例のハードウェア構成及び各ハードウェアに実現させる機能の構成を示す図である。It is a figure which shows the hardware structure of a 1st comparative example, and the structure of the function implement | achieved by each hardware. 第2の比較例のハードウェア構成及び各ハードウェアに実現させる機能の構成を示す図である。It is a figure which shows the hardware structure of a 2nd comparative example, and the structure of the function implement | achieved by each hardware. 従来の協調検証装置の一例のハードウェア構成を示す図である。It is a figure which shows the hardware constitutions of an example of the conventional cooperation verification apparatus. 図17に示したPC中のCPUの動作環境について説明するための図である。It is a figure for demonstrating the operating environment of CPU in PC shown in FIG. 図17に示した協調検証装置による検証動作の様子を模式的に示す図である。It is a figure which shows typically the mode of the verification operation | movement by the cooperative verification apparatus shown in FIG.

以下、この発明を実施するための形態について、具体的に説明する。
〔第1の実施形態:図1乃至図9〕
まず、図1に、この発明の協調検証装置の一実施形態のハードウェア構成を示す。
この実施形態の協調検証装置は、図1に示すFPGA(Field-Programmable Gate Array)ボード10及びメモリ40として構成される。また、FPGAボード10は、接続ケーブル60によりPC50と接続され、PC50が協調検証装置のユーザインタフェースとして機能する。従って、PC50も含めて協調検証装置であると捉えることもできる。
Hereinafter, embodiments for carrying out the present invention will be specifically described.
[First Embodiment: FIGS. 1 to 9]
First, FIG. 1 shows a hardware configuration of an embodiment of the cooperative verification apparatus of the present invention.
The cooperative verification apparatus of this embodiment is configured as an FPGA (Field-Programmable Gate Array) board 10 and a memory 40 shown in FIG. The FPGA board 10 is connected to the PC 50 by a connection cable 60, and the PC 50 functions as a user interface of the cooperative verification apparatus. Therefore, the PC 50 can be regarded as a cooperative verification device.

このうちFPGAボード10は、通信インタフェース(I/F)11及びFPGA20を備える。
通信I/F11は、PC50と通信するための通信線60を接続するインタフェースであり、任意の規格のものを採用することができる。ここでは有線で示したが、無線通信も採用可能である。
Among these, the FPGA board 10 includes a communication interface (I / F) 11 and an FPGA 20.
The communication I / F 11 is an interface for connecting a communication line 60 for communicating with the PC 50, and any standard can be adopted. Although wired here is shown, wireless communication can also be adopted.

FPGA20は、論理ゲートを多数配置すると共にゲート間の接続回路をプログラムにより書き換え可能としたプログラマブル回路である。このプログラムの設定は、PC50から通信I/F11を介して行うことができる。
また、FPGA20はCPU30を内蔵している。CPU30は、回路構成は固定であるが、所望のプログラムを読み込ませて実行させることにより、様々な情報処理を柔軟に実行させることができる。
The FPGA 20 is a programmable circuit in which a large number of logic gates are arranged and a connection circuit between the gates can be rewritten by a program. This program can be set from the PC 50 via the communication I / F 11.
The FPGA 20 has a built-in CPU 30. Although the circuit configuration is fixed, the CPU 30 can flexibly execute various types of information processing by reading and executing a desired program.

また、FPGAボード10には、メモリ40が接続される。このメモリ40は、CPU30が実行するプログラム、協調検証に用いるデータ及び協調検証の実行結果ログ等を記憶する記憶手段である。DDR(Double-Data-Rate)RAM、SD(Synchronous Dynamic)RAM、USB(Universal Serial Bus)メモリ、NAND型フラッシュメモリなど、任意の規格のメモリを用いることができる。   Further, the memory 40 is connected to the FPGA board 10. The memory 40 is a storage unit that stores a program executed by the CPU 30, data used for cooperative verification, an execution result log of the cooperative verification, and the like. Memory of any standard such as DDR (Double-Data-Rate) RAM, SD (Synchronous Dynamic) RAM, USB (Universal Serial Bus) memory, NAND flash memory can be used.

メモリ40に記憶させるプログラムには、CPU30に回路の動作をシミュレートする機能を実現させるためのHDLシミュレータ、CPU30にテストベンチの機能を実現させるためのテストベンチアプリ、及びこれらの実行環境を提供するOSが含まれる。OSとしては、例えばLinux(登録商標)を用いることができる。
また、メモリ40に記憶させるデータには、HDLシミュレータのアプリデータであるHDLデータ、およびHDLシミュレータにシミュレートさせる回路の構成をRTL(Register Transfer Level)で記述したRTLデータが含まれる。また、テストベンチアプリに各モジュールへの入力を行わせる信号及びデータや、想定される出力信号及び出力データを記述したテストベンチデータも含まれる。
The program stored in the memory 40 provides an HDL simulator for realizing the function of simulating the operation of the circuit in the CPU 30, a test bench application for realizing the function of the test bench in the CPU 30, and an execution environment thereof. OS is included. As the OS, for example, Linux (registered trademark) can be used.
The data stored in the memory 40 includes HDL data that is application data of the HDL simulator, and RTL data in which the configuration of a circuit to be simulated by the HDL simulator is described in RTL (Register Transfer Level). Also included are signals and data that cause the test bench application to input each module, and test bench data that describes the expected output signals and output data.

図2に模式的に示すように、CPU30は、FPGA20上の配線を通じてデータ及び信号を入出力する。メモリ40へのアクセスもこれに含まれる。そして、CPU30はOS36、HDLシミュレータ37及びテストベンチアプリ38をメモリ40から読み出して実行することにより、検証対象の回路の機能をシミュレートする機能及びテストベンチの機能を実現する。   As schematically shown in FIG. 2, the CPU 30 inputs and outputs data and signals through wiring on the FPGA 20. This includes access to the memory 40. Then, the CPU 30 reads out the OS 36, the HDL simulator 37, and the test bench application 38 from the memory 40 and executes them, thereby realizing the function of simulating the function of the circuit to be verified and the function of the test bench.

なお、メモリ40へは、PC50からもFPGAボート10を介してアクセス可能である。従って、HDLデータ及びテストベンチデータは、ユーザがPC50を操作してメモリ40へ設定することができる。また、ユーザは、PC50を操作してメモリ40から協調検証の実行ログを読み出すことにより、実行結果を参照することができる。   Note that the memory 40 can also be accessed from the PC 50 via the FPGA boat 10. Accordingly, the user can set the HDL data and the test bench data in the memory 40 by operating the PC 50. Further, the user can refer to the execution result by operating the PC 50 and reading the execution log of the cooperative verification from the memory 40.

また、協調検証の実行開始指示や中断指示も、PC50からFPGAボード10に必要な信号を送信することにより、行うことができる。FPGAボード10は、この信号を受け取ると、FPGA20の配線を通じてCPU30に実行開始や中断を指示する信号を入力する。CPU30は、例えば検証の開始を指示する信号の入力を受け付けると、メモリ40から必要なプログラム及びデータを読み出して、回路の動作のシミュレートを開始すると共に、テストベンチによる動作検証を開始する。また、その結果をログとしてメモリ40に記録する。   In addition, the execution start instruction and the interruption instruction of the cooperative verification can be performed by transmitting a necessary signal from the PC 50 to the FPGA board 10. Upon receiving this signal, the FPGA board 10 inputs a signal instructing the CPU 30 to start or stop execution through the wiring of the FPGA 20. For example, when receiving an input of a signal for instructing the start of verification, the CPU 30 reads out necessary programs and data from the memory 40 and starts simulating the operation of the circuit, and also starts the operation verification by the test bench. The result is recorded in the memory 40 as a log.

ここで、図3に、図1の協調検証装置による検証動作の様子を模式的に示す。
ここで、検証対象の回路は、図19の場合と同様に第1〜第3モジュールにより構成されるとする。
Here, FIG. 3 schematically shows a verification operation by the cooperative verification apparatus of FIG.
Here, it is assumed that the circuit to be verified is constituted by the first to third modules as in the case of FIG.

この場合、図3に示すように、そのうち一部のモジュール(ここでは第1及び第2モジュール)と対応する回路を、FPGA20をプログラムすることにより第1モジュール21及び第2モジュール22としてFPGA20中に形成する。このことにより、FPGA20はこれらのモジュールの機能をエミュレートする。FPGA20へのプログラムの設定は、PC50から通信I/F11を介して行うことができる。
また、残りの第3モジュールの構成をHDLにより記述し、そのHDLデータをメモリ40に記憶させておく。このことにより、CPU30がそのHDLデータを読み出し、第3モジュールの動作を第3モジュール31としてシミュレートする。
In this case, as shown in FIG. 3, circuits corresponding to some of the modules (here, the first and second modules) are programmed into the FPGA 20 as the first module 21 and the second module 22 by programming the FPGA 20. Form. This causes the FPGA 20 to emulate the functions of these modules. Setting of the program in the FPGA 20 can be performed from the PC 50 via the communication I / F 11.
Further, the configuration of the remaining third module is described in HDL, and the HDL data is stored in the memory 40. As a result, the CPU 30 reads out the HDL data and simulates the operation of the third module as the third module 31.

そして、テストベンチアプリ38により実現されるテストベンチ32が、第1モジュール21、第2モジュール22及び第3モジュール31にそれぞれ入力データあるいは入力信号を供給する。また、テストベンチ32は、これらの各モジュールから出力データ及び出力信号を収集する。さらに、各モジュールは、動作中に他のモジュールとの間でデータあるいは信号を送受信する場合もある。   The test bench 32 realized by the test bench application 38 supplies input data or input signals to the first module 21, the second module 22, and the third module 31, respectively. The test bench 32 collects output data and output signals from each of these modules. Furthermore, each module may transmit and receive data or signals to and from other modules during operation.

これらのうち、第1モジュール21と第2モジュール22との間の送受信は、FPGA20内の信号線を用いた信号送受信によりシミュレートすることができる。第3モジュール31とテストベンチ32との間の送受信は、PC30内のプロセス間通信によりシミュレートすることができる。
また、CPU30とFPGA20をまたぐ送受信、すなわち、第3モジュール31及びテストベンチ32と、第1及び第2モジュール21,22との間の信号送受信は、CPU30とFPGA20との間の信号送受信によりシミュレートすることができる。この信号送受信は、図では破線で示しており、CPU30が接続されるFPGA20の配線を介して行うことができる。
Among these, transmission / reception between the first module 21 and the second module 22 can be simulated by signal transmission / reception using a signal line in the FPGA 20. Transmission / reception between the third module 31 and the test bench 32 can be simulated by inter-process communication within the PC 30.
Further, transmission / reception between the CPU 30 and the FPGA 20, that is, signal transmission / reception between the third module 31 and the test bench 32 and the first and second modules 21 and 22 is simulated by signal transmission / reception between the CPU 30 and the FPGA 20. can do. This signal transmission / reception is indicated by a broken line in the figure, and can be performed via the wiring of the FPGA 20 to which the CPU 30 is connected.

従って、通信線60のように通信I/F11を介して通信を行う場合に比べ、高速に通信を行うことができる。また、通信すべきデータ及び信号の量や通信の頻度が多い場合、FPGA20のプログラムを変更することにより、CPU30の端子数の制約はあるものの、通信バッファを増加させる等して、帯域の拡大を比較的容易に行うことができる。   Therefore, communication can be performed at a higher speed than when communication is performed via the communication I / F 11 like the communication line 60. In addition, when the amount of data and signals to be communicated and the frequency of communication are high, by changing the program of the FPGA 20, although there is a restriction on the number of terminals of the CPU 30, the communication buffer is increased and the bandwidth is expanded. It can be done relatively easily.

このため、CPU30をFPGA20の外部、特にFPGAボード10の外部に設ける図17のような構成の場合と比べ、CPUとFPGAとの間の通信速度の制約による検証速度の低下が起こりにくくなる。そして、ソフトウェアシミュレーションとハードウェアエミュレーションを組み合わせて電子回路の動作を協調検証する場合の検証速度を向上させることができる。   For this reason, compared with the case of the configuration as shown in FIG. 17 in which the CPU 30 is provided outside the FPGA 20, particularly outside the FPGA board 10, the verification speed is less likely to be lowered due to the restriction on the communication speed between the CPU and the FPGA. Further, it is possible to improve the verification speed when the operation of the electronic circuit is collaboratively verified by combining software simulation and hardware emulation.

なお、図1に示した協調検証装置は、メモリ40に記憶させるプログラムやデータを変更することにより、図3とは異なる環境での協調検証を行うこともできる。
例えば、図4に示すように、CPU30に、回路の動作をシミュレートするためのアプリとして、HDLシミュレータ37に加えて仮想ハードウェア(HW)アプリ39を実行させることが考えられる。仮想HWアプリ39は、SystemC等の言語で書かれた、RTL記述よりも抽象度の高いモデルを用いたシミュレーション環境を提供するアプリである。
The cooperative verification apparatus shown in FIG. 1 can also perform cooperative verification in an environment different from that shown in FIG. 3 by changing programs and data stored in the memory 40.
For example, as shown in FIG. 4, it is conceivable to cause the CPU 30 to execute a virtual hardware (HW) application 39 in addition to the HDL simulator 37 as an application for simulating the operation of the circuit. The virtual HW application 39 is an application that provides a simulation environment using a model written in a language such as SystemC and having a higher abstraction level than the RTL description.

この場合、図5に示すように、CPU30内において、HDLシミュレータ37と仮想HWアプリ39とにより、それぞれ別個のモジュールの動作をシミュレートすることができる。
図5の例では、検証対象の回路は、第1〜第4のモジュールにより構成されるとしている。そのうち第1,第2モジュールの機能は図3の場合と同じくFPGA20がエミュレートする。第3モジュールの動作はCPU30がHDLシミュレータ37によりシミュレートする。第4モジュールの動作はCPU30が仮想HWアプリ39によりシミュレートする。テストベンチについては図3の場合と同様である。
In this case, as shown in FIG. 5, the operation of separate modules can be simulated by the HDL simulator 37 and the virtual HW application 39 in the CPU 30.
In the example of FIG. 5, the circuit to be verified is configured by first to fourth modules. Among them, the functions of the first and second modules are emulated by the FPGA 20 as in the case of FIG. The operation of the third module is simulated by the CPU 30 by the HDL simulator 37. The operation of the fourth module is simulated by the CPU 30 by the virtual HW application 39. The test bench is the same as in FIG.

この場合、CPU30が複数のモジュールの動作をシミュレートするが、それらのモジュール間の通信については、CPU30が実行するプロセス同士のプロセス間通信によりシミュレートすることができる。
また、FPGA20がエミュレートするモジュールと、CPU30がシミュレートするモジュールとの間の信号送受信は、図3の場合と同様CPU30とFPGA20との間の信号送受信によりシミュレートすることができる。もちろん、この信号送受信をCPU30が接続されるFPGA20の配線を介して行うことができることも図3の場合と同様である。従って、図3の場合と同様、協調検証の速度を向上させることができる。
In this case, the CPU 30 simulates the operation of a plurality of modules, but communication between these modules can be simulated by inter-process communication between processes executed by the CPU 30.
Further, signal transmission / reception between the module emulated by the FPGA 20 and the module simulated by the CPU 30 can be simulated by signal transmission / reception between the CPU 30 and the FPGA 20 as in the case of FIG. Of course, this signal transmission / reception can be performed via the wiring of the FPGA 20 to which the CPU 30 is connected, as in the case of FIG. Therefore, as in the case of FIG. 3, the speed of cooperative verification can be improved.

また、図6に示すように、CPU30における回路の動作のシミュレートを、仮想HWアプリ39のみにより行うこともできる。しかし、シミュレートに用いるアプリが変わっても、図7に示すように、シミュレートの大枠は図5の場合と変わらない。
すなわち、CPU30が、検証対象回路のうち一部のモジュールの動作をシミュレートし、FPGA20が検証対象回路のうち他のモジュールの動作をエミュレートする。また、FPGA20とCPU30との間での信号送受信により、CPU30がシミュレートするモジュールとFPGA20がエミュレートするモジュールとの間の信号送受信をシミュレートする。
図5との違いは、第3モジュール31′を仮想HWアプリ39によりシミュレートする点のみである。
Further, as shown in FIG. 6, the operation of the circuit in the CPU 30 can be simulated only by the virtual HW application 39. However, even if the application used for the simulation changes, as shown in FIG. 7, the outline of the simulation is the same as in FIG.
That is, the CPU 30 simulates the operation of some modules in the verification target circuit, and the FPGA 20 emulates the operation of other modules in the verification target circuit. In addition, signal transmission / reception between the FPGA 20 and the CPU 30 simulates signal transmission / reception between the module simulated by the CPU 30 and the module emulated by the FPGA 20.
The only difference from FIG. 5 is that the third module 31 ′ is simulated by the virtual HW application 39.

そして、協調検証の速度向上の効果は、CPU30がシミュレートに用いるアプリの種類によらず得ることができる。
実際の電子回路の設計に当たっては、抽象度の違う記述方式を用いて回路の構成を記載し、それぞれその動作を検証することが行われる。しかし、本実施形態の協調検証装置を用いることにより、メモリ40に、適当なアプリ及び回路構成のデータ等を記憶させておくことにより、抽象度によらず、高速な協調検証が可能である。
The effect of improving the speed of cooperative verification can be obtained regardless of the type of application used by the CPU 30 for simulation.
In designing an actual electronic circuit, a circuit configuration is described using a description method having different abstraction levels, and each operation is verified. However, by using the collaborative verification device of this embodiment and storing data of an appropriate application and circuit configuration in the memory 40, high-speed collaborative verification is possible regardless of the degree of abstraction.

また、本実施形態の協調検証装置は、等価性検証にも用いることができる。等価性検証とは、異なる方式の記述に基づきシミュレートあるいはエミュレートした回路が同じ入力に対して同じ出力を返すかに基づき、各方式の記述が等価であるか否かを検証するものである。
この等価性検証を行う場合、図8に示すように、CPU30にはテストベンチアプリ38に代えて等価性検証アプリ41を実行させる。回路の動作をシミュレートするためのアプリについては、FPGA20の回路構成を記述するゲートレベル記述との間で等価性を検証したい記述方式に対応したアプリを用いる。
Moreover, the cooperative verification apparatus of this embodiment can also be used for equivalence verification. Equivalence verification is to verify whether the description of each method is equivalent based on whether the circuit simulated or emulated based on the description of different methods returns the same output for the same input. .
When performing this equivalence verification, as shown in FIG. 8, the CPU 30 causes the equivalence verification application 41 to be executed instead of the test bench application 38. As an application for simulating the operation of the circuit, an application corresponding to a description method for which equivalence is to be verified with a gate level description describing the circuit configuration of the FPGA 20 is used.

そして、図9に示すように、FPGA20にはある回路モジュール(ここでは第1モジュール)の動作をエミュレートさせ、CPU30にも、それと同じ回路モジュールの動作をシミュレートさせる。ここで、FPGA20においてエミュレーション回路を形成する際には、回路の構成はゲートレベルで記述する。CPU30にシミュレーションを行わせる際には、回路の構成はこれより抽象度の高いHDL又はRTLで記述する。仮想HW環境を用いれば、さらに抽象度の高い方式で記述することもできる。   Then, as shown in FIG. 9, the FPGA 20 emulates the operation of a circuit module (here, the first module), and the CPU 30 also simulates the operation of the same circuit module. Here, when the emulation circuit is formed in the FPGA 20, the circuit configuration is described at the gate level. When the CPU 30 performs the simulation, the circuit configuration is described in HDL or RTL having a higher abstraction level. If a virtual HW environment is used, it can be described in a more abstract manner.

また、CPU30は等価性検証アプリ41を実行することにより等価性検証用テストベンチ35の機能を実現する。そして、FPGA20がエミュレートする第1モジュール21と、CPU30がシミュレートする第1モジュール34に対し、同じ入力信号(又はそのデータ)を与え、出力信号(又はそのデータ)を取得する。そして、等価性検証用テストベンチ35は、双方からの出力信号を比較して、一致していれば、FPGA20に与えたゲートレベルの記述とCPU30に与えたより抽象度の高い記述とは等価であると判断する。一致していなければ、等価でないと判断する。   The CPU 30 implements the function of the equivalence verification test bench 35 by executing the equivalence verification application 41. Then, the same input signal (or its data) is given to the first module 21 emulated by the FPGA 20 and the first module 34 simulated by the CPU 30 to obtain an output signal (or its data). The equivalence verification test bench 35 compares the output signals from both, and if they match, the description at the gate level given to the FPGA 20 and the description at a higher abstraction level given to the CPU 30 are equivalent. Judge. If they do not match, it is determined that they are not equivalent.

このとき、等価性検証用テストベンチ35は、CPU30側の第1モジュール34との通信は、CPU30内のプロセス間通信により行い、FPGA20側の第1モジュール21との通信は、CPU30が接続されるFPGA20の配線を介して行う。
ここで、等価性検証用テストベンチ35が、多種類の入力を各モジュールに与えてその出力を逐一取得する場合、FPGA20とCPU30との間で多量の通信が発生することになる。しかし、本実施形態のようにFPGA20にCPU30を内蔵することにより、CPUとFPGAとの間の通信速度の制約による検証速度の低下が起こりにくくなる。従って、等価性検証の速度も図3の場合と同様に向上させることができる。
At this time, the equivalence verification test bench 35 communicates with the first module 34 on the CPU 30 side by inter-process communication in the CPU 30, and the CPU 30 is connected to the communication with the first module 21 on the FPGA 20 side. This is performed via the wiring of the FPGA 20.
Here, when the equivalence verification test bench 35 gives various types of inputs to each module and obtains the outputs one by one, a large amount of communication occurs between the FPGA 20 and the CPU 30. However, by incorporating the CPU 30 in the FPGA 20 as in the present embodiment, the verification speed is less likely to decrease due to the restriction on the communication speed between the CPU and the FPGA. Therefore, the speed of equivalence verification can be improved as in the case of FIG.

〔第2の実施形態:図10乃至図14〕
次に、この発明の協調検証装置の第2の実施形態について説明する。
図10に、この発明の協調検証装置の第2の実施形態による検証動作の様子を模式的に示す。
第2の実施形態においても、FPGAボード10上にCPU30を内蔵したFPGA20を設け、さらにFPGAボード10にメモリ40を接続して協調検証装置を構成している点は、第1の実施形態の場合と同様である。
[Second Embodiment: FIGS. 10 to 14]
Next, a second embodiment of the cooperative verification apparatus of the present invention will be described.
FIG. 10 schematically shows a verification operation according to the second embodiment of the cooperative verification apparatus of the present invention.
Also in the second embodiment, the FPGA 20 including the CPU 30 is provided on the FPGA board 10, and the memory 40 is connected to the FPGA board 10 to configure the collaborative verification device in the case of the first embodiment. It is the same.

ただし、ユーザインタフェースとしては、第1の実施形態におけるPC50に代えて、モニタ51を設けている。このモニタ51は、FPGAボード10から送信される検証結果のデータに基づき、その内容をユーザが参照できるように波形や数値等として表示する機能を備える。また、検証内容を示すパラメータ等の設定を受け付けるGUIを表示すると共に、そのGUIに対するユーザの操作を受け付け、操作内容をFPGAボード10に渡す機能を備える。   However, as a user interface, a monitor 51 is provided instead of the PC 50 in the first embodiment. The monitor 51 has a function of displaying the content as a waveform, a numerical value, or the like so that the user can refer to the content based on the verification result data transmitted from the FPGA board 10. In addition, it has a function of displaying a GUI for accepting settings such as parameters indicating verification contents, receiving a user operation on the GUI, and passing the operation contents to the FPGA board 10.

モニタ51に対して表示に必要なデータを提供し、またモニタ51から送信される操作内容のデータに従いFPGA20を含むFPGAボード10の各部の設定を行う機能は、CPU30が必要なプログラムを実行することにより実現する。
ところで、この第2の実施形態において、協調検証装置は、2つの送受信モジュール間のデータ送受信機能に関する検証を行う。そして、その一方のモジュールの機能を、第1送受信モジュール61としてFPGA20がエミュレートする。また、他方のモジュールの機能を、第2送受信モジュール71としてCPU30がシミュレートする。
The function of providing data necessary for display to the monitor 51 and setting each part of the FPGA board 10 including the FPGA 20 according to the operation content data transmitted from the monitor 51 is that the CPU 30 executes a necessary program. To achieve.
By the way, in this 2nd Embodiment, a cooperation verification apparatus performs verification regarding the data transmission / reception function between two transmission / reception modules. Then, the FPGA 20 emulates the function of one of the modules as the first transmission / reception module 61. Further, the CPU 30 simulates the function of the other module as the second transmission / reception module 71.

また、これらの送受信モジュールの間には、通信状況の監視及び操作を行うための転送部を設けている。第1送受信モジュール61側では、第1転送手段である第1転送部62の機能をFPGA20に実現させる。第2送受信モジュール71側では、第2転送手段である第2転送部72の機能をCPU30に実現させる。   In addition, a transfer unit for monitoring and operating the communication status is provided between these transmission / reception modules. On the first transmission / reception module 61 side, the FPGA 20 realizes the function of the first transfer unit 62 as the first transfer means. On the second transmission / reception module 71 side, the CPU 30 realizes the function of the second transfer unit 72 as the second transfer means.

そして、第1送受信モジュール61から第2送受信モジュール71へのデータ送信をシミュレートする場合、第1送受信モジュール61にはまず第2送受信モジュール71へ送信すべきデータを第1転送部62へ送信させる。ここで、第1転送部62はそのデータを一旦保持し、後でポストデバッグ等の際にログとして送受信順に参照できるように第1蓄積部63に蓄積する。第1蓄積部63は、メモリ40に設けることができる。   When simulating data transmission from the first transmission / reception module 61 to the second transmission / reception module 71, the first transmission / reception module 61 first transmits data to be transmitted to the second transmission / reception module 71 to the first transfer unit 62. . Here, the first transfer unit 62 temporarily holds the data and stores it in the first storage unit 63 so that it can be referred to in the order of transmission / reception as a log later in post-debugging or the like. The first storage unit 63 can be provided in the memory 40.

また、第1転送部62は、第1送受信モジュール61から受け取ったデータを第2転送部72に転送する。第2転送部72は、そのデータを一旦保持し、後でポストデバッグ等の際にログとして送受信順に参照できるように第2蓄積部73に蓄積する。第2蓄積部73は、CPU30が実現する機能として示したが、CPU30の内部メモリではなく、メモリ40に設けてもよい。
その後、第2転送部72は、第1転送部62から受け取ったデータを第2送受信モジュール71に転送する。
The first transfer unit 62 transfers data received from the first transmission / reception module 61 to the second transfer unit 72. The second transfer unit 72 temporarily holds the data and stores it in the second storage unit 73 so that it can be referred to in the order of transmission / reception as a log later in post-debugging or the like. Although the second storage unit 73 is shown as a function realized by the CPU 30, the second storage unit 73 may be provided in the memory 40 instead of the internal memory of the CPU 30.
Thereafter, the second transfer unit 72 transfers the data received from the first transfer unit 62 to the second transmission / reception module 71.

以上で、第1送受信モジュール61から第2送受信モジュール71へのデータ送信が完了する。第2送受信モジュール71から第1送受信モジュール61へのデータ送信は、この逆順で行う。以上の送信過程において、第1転送部62及び第2転送部72は、送受信したデータを後で送受信順に参照できるように記憶手段に蓄積する蓄積手段としても機能する。   Thus, data transmission from the first transmission / reception module 61 to the second transmission / reception module 71 is completed. Data transmission from the second transceiver module 71 to the first transceiver module 61 is performed in the reverse order. In the above transmission process, the first transfer unit 62 and the second transfer unit 72 also function as an accumulation unit that accumulates in the storage unit so that the transmitted / received data can be referred to in the order of transmission / reception later.

なお、以上の送信過程において、第1転送部62及び第2転送部72は、連続して送信されるデータの転送順序を故意に変更したり、データのヘッダ情報を変更したり、データの送信を遅延させたりするといった、エラーモードの動作を行うことができる。各蓄積部に蓄積したデータは、これらの動作を行う際のデータの転送順管理に用いることができる。もちろん、正常な送信を行う場合の送信順管理にも用いることができる。
後でログを参照する必要がないのであれば、蓄積部を設ける記憶手段の容量に制約が大きい等の場合、上記の送信順管理に必要な量のデータのみ各蓄積部に蓄積するようにしてもよい。
In the above transmission process, the first transfer unit 62 and the second transfer unit 72 deliberately change the transfer order of continuously transmitted data, change data header information, or transmit data. It is possible to perform an error mode operation such as delaying the operation. The data stored in each storage unit can be used for data transfer order management when performing these operations. Of course, it can also be used for transmission order management in the case of normal transmission.
If there is no need to refer to the log later, if there is a large limitation on the capacity of the storage means provided with the storage unit, only the amount of data necessary for the above transmission order management is stored in each storage unit. Also good.

また、図10において、ISS(Instruction Set Simulator)74は、インストラクション精度で動くCPUモデルである。FPGAボード10を用いた検証を行う場合、このISS74が、シミュレーション対象の各モジュール(FPGA20がエミュレートするものも含む)の動作を制御する。図10では、第1送受信モジュール61、第1転送部62、第2送受信モジュール71及び第2転送部72が制御対象に該当する。   In FIG. 10, an ISS (Instruction Set Simulator) 74 is a CPU model that moves with instruction accuracy. When verification using the FPGA board 10 is performed, the ISS 74 controls the operation of each module to be simulated (including those emulated by the FPGA 20). In FIG. 10, the 1st transmission / reception module 61, the 1st transfer part 62, the 2nd transmission / reception module 71, and the 2nd transfer part 72 correspond to a control object.

ワークメモリ75は、ISS74が制御動作に使用するメモリである。
周辺機器76は、UART(Universal Asynchronous Receiver Transmitter)やタイマなど、ISS74が制御を行うために用いる高抽象度のモジュール群である。
これらのISS74、ワークメモリ75及び周辺機器76の機能も、CPU30が所要のプログラムを実行することにより実現する。
The work memory 75 is a memory used by the ISS 74 for control operations.
The peripheral device 76 is a group of modules with a high abstraction level used by the ISS 74 for control, such as a UART (Universal Asynchronous Receiver Transmitter) and a timer.
The functions of the ISS 74, work memory 75, and peripheral device 76 are also realized by the CPU 30 executing necessary programs.

次に、図10に示した協調検証装置において第1送受信モジュール61と第2送受信モジュール71との間のデータ送受信をシミュレートする際に図10に示した各部が実行する動作について、図11乃至図13のフローチャートを用いて説明する。
これらのフローチャートに示す動作のうち、FPGA20に設けた各部が実行する動作は、FPGA20がプログラムされたハードウェアロジックにより、ISS74の制御に基づき行うものである。CPU30に設けた各部が実行する動作は、CPU30が所要のプログラムを実行することにより行うものである。
Next, the operations performed by the units shown in FIG. 10 when simulating data transmission / reception between the first transmission / reception module 61 and the second transmission / reception module 71 in the cooperative verification apparatus shown in FIG. This will be described with reference to the flowchart of FIG.
Of the operations shown in these flowcharts, the operations performed by each unit provided in the FPGA 20 are performed based on the control of the ISS 74 by the hardware logic programmed in the FPGA 20. The operations performed by each unit provided in the CPU 30 are performed by the CPU 30 executing a required program.

まず図11に、第1送受信モジュール61が第2送受信モジュール71にデータを送信する際の動作を示す。
この動作においてはまず、ISS74が第1送受信モジュール61へデータ送信を指示する(S11)。このとき、送信すべきデータの指定も行う。
First, FIG. 11 shows an operation when the first transmission / reception module 61 transmits data to the second transmission / reception module 71.
In this operation, first, the ISS 74 instructs the first transmission / reception module 61 to transmit data (S11). At this time, data to be transmitted is also specified.

第1送受信モジュール61はこれを受けて、自身がデータ送信可能な状態か否か判断する(S12)。送信可能な状態であれば、送信すべきデータに対し、送信時処理を行う(S13)。この処理は、例えばTOE(TCP/IP Offload Engine)を用いる場合にはヘッダ処理等である。この送受信処理が完了すると、第1送受信モジュール61は第1転送部62へ処理後のデータを送信する(S14)。   In response to this, the first transmission / reception module 61 determines whether or not it can transmit data (S12). If it is in a transmittable state, processing at the time of transmission is performed on the data to be transmitted (S13). This processing is, for example, header processing when using a TOE (TCP / IP Offload Engine). When this transmission / reception process is completed, the first transmission / reception module 61 transmits the processed data to the first transfer unit 62 (S14).

これを受信した第1転送部62は、第1蓄積部63へそのデータを書き込む(S15)。そして、第1転送部62において前のデータ転送が完了しているか否か判断する(S16)。ここで完了していれば、第1転送部62はステップS14で受信したデータを第2転送部72へ送信する(S17)。   Receiving this, the first transfer unit 62 writes the data in the first storage unit 63 (S15). Then, it is determined whether or not the previous data transfer is completed in the first transfer unit 62 (S16). If completed, the first transfer unit 62 transmits the data received in step S14 to the second transfer unit 72 (S17).

これを受信した第2転送部72は、第2蓄積部73へそのデータを書き込む(S18)と共に、受信したデータを第2送受信モジュール71の受信部へ送信する(S19)。
第2送受信モジュール71がここで受信したデータに対して受信時処理を実行し(S20)、以上で第1送受信モジュール61から第2送受信モジュール71への1回のデータ送信のシミュレートが完了する。
Receiving this, the second transfer unit 72 writes the data in the second storage unit 73 (S18) and transmits the received data to the receiving unit of the second transmission / reception module 71 (S19).
The second transmission / reception module 71 performs reception processing on the data received here (S20), and the simulation of one data transmission from the first transmission / reception module 61 to the second transmission / reception module 71 is completed. .

なお、ステップS12でNOの場合、第1送受信モジュール61は直ちにデータ送信を行うことができない。この場合、レジスタにおいて第1送受信モジュール61が送信不能時にデータを破棄する設定がなされていれば(S21のYES)、第1送受信モジュール61は送信を指示されたデータを破棄する(S22)。この場合、ここまででステップS11のISS74からの指示に係るデータ送信動作は終了する。
ステップS21で破棄する設定がされていなければ、ステップS12に戻って処理を繰り返す。
In the case of NO in step S12, the first transmission / reception module 61 cannot immediately transmit data. In this case, if the first transmission / reception module 61 is set to discard data when transmission is impossible in the register (YES in S21), the first transmission / reception module 61 discards data instructed to be transmitted (S22). In this case, the data transmission operation according to the instruction from the ISS 74 in step S11 is thus completed.
If it is not set to be discarded in step S21, the process returns to step S12 and is repeated.

また、ステップS16でNOの場合、第1転送部62は直ちにデータ送信を行うことができない。この場合、レジスタにおいて第1転送部62が送信不能時にデータを破棄する設定がなされていれば(S23のYES)、第1転送部62は送信を指示されたデータを破棄する(S24)。この場合、ここまででステップS11のISS74からの指示に係るデータ送信動作は終了する。   If NO in step S16, the first transfer unit 62 cannot immediately transmit data. In this case, if the register is set to discard the data when the first transfer unit 62 cannot transmit (YES in S23), the first transfer unit 62 discards the data instructed to transmit (S24). In this case, the data transmission operation according to the instruction from the ISS 74 in step S11 is thus completed.

ステップS23で破棄する設定がされていなければ、ステップS16に戻って処理を繰り返す。
第1送受信モジュール61と第1転送部62のいずれにおいてもデータを破棄する設定がなされていなければ、最終的にはステップS17以下に進んで第1送受信モジュール61から第2送受信モジュール71へのデータ送信が実行されることになる。
If it is not set to be discarded in step S23, the process returns to step S16 and is repeated.
If neither the first transmission / reception module 61 nor the first transfer unit 62 is set to discard data, the process finally proceeds to step S17 and the following steps to transfer data from the first transmission / reception module 61 to the second transmission / reception module 71. Transmission will be executed.

次に図12に、第2送受信モジュール71が第1送受信モジュール61にデータを送信する際の動作を示す。この動作は、図11と逆向きに同様な手順でデータを送信するものである。
この動作においてはまず、ISS74が第2送受信モジュール71へデータ送信を指示する(S31)。このとき、送信すべきデータの指定も行う。
Next, FIG. 12 shows an operation when the second transmission / reception module 71 transmits data to the first transmission / reception module 61. In this operation, data is transmitted in the same procedure as that shown in FIG.
In this operation, first, the ISS 74 instructs the second transmission / reception module 71 to transmit data (S31). At this time, data to be transmitted is also specified.

第2送受信モジュール71はこれを受けて、自身がデータ送信可能な状態か否か判断する(S32)。送信可能な状態であれば、送信すべきデータに対し、送信時処理を行う(S33)。この処理は、例えばTOE(TCP/IP Offload Engine)を用いる場合にはヘッダ処理等である。この送受信処理が完了すると、第2送受信モジュール71は第2転送部72へ処理後のデータを送信する(S34)。   In response to this, the second transmission / reception module 71 determines whether or not it can transmit data (S32). If transmission is possible, transmission processing is performed on the data to be transmitted (S33). This processing is, for example, header processing when using a TOE (TCP / IP Offload Engine). When this transmission / reception process is completed, the second transmission / reception module 71 transmits the processed data to the second transfer unit 72 (S34).

これを受信した第2転送部72は、第2蓄積部73へそのデータを書き込む(S35)。そして、第2転送部72において前のデータ転送が完了しているか否か判断する(S36)。ここで完了していれば、第2転送部72はステップS34で受信したデータを第1転送部62へ送信する(S37)。   Receiving this, the second transfer unit 72 writes the data to the second storage unit 73 (S35). Then, it is determined whether or not the previous data transfer is completed in the second transfer unit 72 (S36). If completed here, the second transfer unit 72 transmits the data received in step S34 to the first transfer unit 62 (S37).

これを受信した第1転送部62は、第1蓄積部63へそのデータを書き込む(S38)と共に、受信したデータを第1送受信モジュール61の受信部へ送信する(S39)。
第1送受信モジュール61がここで受信したデータに対して受信時処理を実行し(S40)、以上で第2送受信モジュール71から第1送受信モジュール61への1回のデータ送信のシミュレートが完了する。
Receiving this, the first transfer unit 62 writes the data in the first storage unit 63 (S38) and transmits the received data to the reception unit of the first transmission / reception module 61 (S39).
The first transmission / reception module 61 performs reception processing on the data received here (S40), and the simulation of one data transmission from the second transmission / reception module 71 to the first transmission / reception module 61 is completed. .

なお、ステップS32でNOの場合、第2送受信モジュール71は直ちにデータ送信を行うことができない。この場合、レジスタにおいて第2送受信モジュール71が送信不能時にデータを破棄する設定がなされていれば(S41のYES)、第2送受信モジュール71は送信を指示されたデータを破棄する(S42)。この場合、ここまででステップS31のISS74からの指示に係るデータ送信動作は終了する。   In the case of NO in step S32, the second transmission / reception module 71 cannot immediately transmit data. In this case, if the second transmission / reception module 71 is set in the register to discard data when transmission is impossible (YES in S41), the second transmission / reception module 71 discards data instructed to be transmitted (S42). In this case, the data transmission operation according to the instruction from the ISS 74 in step S31 is completed so far.

ステップS41で破棄する設定がされていなければ、ステップS32に戻って処理を繰り返す。
また、ステップS36でNOの場合、第2転送部72は直ちにデータ送信を行うことができない。この場合、レジスタにおいて第2転送部72が送信不能時にデータを破棄する設定がなされていれば(S43のYES)、第2転送部72は送信を指示されたデータを破棄する(S44)。この場合、ここまででステップS31のISS74からの指示に係るデータ送信動作は終了する。
If it is not set to be discarded in step S41, the process returns to step S32 and the process is repeated.
If NO in step S36, the second transfer unit 72 cannot immediately transmit data. In this case, if the second transfer unit 72 is set to discard data when transmission is impossible in the register (YES in S43), the second transfer unit 72 discards data instructed to be transmitted (S44). In this case, the data transmission operation according to the instruction from the ISS 74 in step S31 is completed so far.

ステップS43で破棄する設定がされていなければ、ステップS36に戻って処理を繰り返す。
第1送受信モジュール61と第1転送部62のいずれにおいてもデータを破棄する設定がなされていなければ、最終的にはステップS37以下に進んで第1送受信モジュール61から第2送受信モジュール71へのデータ送信が実行されることになる。
If it is not set to discard in step S43, the process returns to step S36 and the process is repeated.
If neither the first transmission / reception module 61 nor the first transfer unit 62 is set to discard the data, the process finally proceeds to step S37 and the subsequent steps to transfer data from the first transmission / reception module 61 to the second transmission / reception module 71. Transmission will be executed.

次に図13及び図14に、第2送受信モジュール71がエラーモードで第1送受信モジュール61にデータを送信する際の動作を示す。
この動作においてはまず、ISS74がレジスタにエラーモードを設定する(S51)。このとき、発生させるエラーの種類も設定する。
Next, FIGS. 13 and 14 show an operation when the second transmission / reception module 71 transmits data to the first transmission / reception module 61 in the error mode.
In this operation, first, the ISS 74 sets an error mode in the register (S51). At this time, the type of error to be generated is also set.

その後、ISS74が第2送受信モジュール71へデータ送信を指示してから、第2転送部72が第2蓄積部73へ送信データを書き込む動作までは、図12のステップS31乃至S35及びS41、S42と同様である(S52〜S58)。
ステップS56の後は、動作は図14に示す部分に進む。そして、第2転送部72が、設定されているエラーモードの種類を判定し、以下、エラーモードの種類に応じた動作を行う。なお、図示を省略したが、エラーモードが設定されていない場合には図12の場合と同じ処理を行う。
Thereafter, from the time when the ISS 74 instructs the second transmission / reception module 71 to transmit data until the second transfer unit 72 writes the transmission data to the second storage unit 73, steps S31 to S35 and S41, S42 in FIG. The same is true (S52 to S58).
After step S56, the operation proceeds to the portion shown in FIG. Then, the second transfer unit 72 determines the type of the set error mode, and thereafter performs an operation according to the type of the error mode. Although not shown, when the error mode is not set, the same processing as in FIG. 12 is performed.

ステップS59で順序変更である場合、第2転送部72は、次のデータが第2送受信モジュール71から送信されてくるまで待機する(S60)。順序変更のエラーモードは、シーケンシャルに複数のデータを送信する場合に設定されるものであり、第2送受信モジュール71からは、ISS74の指示に基づき次のデータが送信されてくるはずである。   If the order is changed in step S59, the second transfer unit 72 waits until the next data is transmitted from the second transmission / reception module 71 (S60). The order change error mode is set when a plurality of data is transmitted sequentially, and the second data should be transmitted from the second transmission / reception module 71 based on an instruction of the ISS 74.

この次のデータを受信すると、第2転送部72は、第1転送部62へ後から送信されてきた(次の)データを送信する(S61)。これを受信した第1転送部62は、第1蓄積部63へそのデータを書き込む(S62)と共に、受信したデータを第1送受信モジュール61の受信部へ送信する(S63)。   When the next data is received, the second transfer unit 72 transmits the (next) data transmitted later to the first transfer unit 62 (S61). Receiving this, the first transfer unit 62 writes the data in the first storage unit 63 (S62) and transmits the received data to the receiving unit of the first transmission / reception module 61 (S63).

第1送受信モジュール61がここで受信したデータに対して受信時処理を実行し(S40)、以上で第2送受信モジュール71から第1送受信モジュール61への「次のデータ」の送信のシミュレートが完了する。なお、第2転送部72は、ステップS61で後から送信されてきたデータを送信する際にも、そのデータを第2蓄積部73に書き込むようにしてもよい。   The first transmission / reception module 61 performs reception processing on the data received here (S40), and the simulation of the transmission of “next data” from the second transmission / reception module 71 to the first transmission / reception module 61 is completed. Complete. Note that the second transfer unit 72 may write the data to the second storage unit 73 when transmitting data transmitted later in step S61.

ステップS64の後、第2転送部72は、ステップS55で受信した「先に送信されてきたデータ」を、第1転送部62へ送信する(S65)。第2転送部72に、このデータをステップS61〜S64の間保持しておくメモリがない場合、送信すべきデータは、第2蓄積部73から読み出してくればよい。   After step S64, the second transfer unit 72 transmits the “data previously transmitted” received in step S55 to the first transfer unit 62 (S65). If the second transfer unit 72 does not have a memory for storing this data during steps S61 to S64, the data to be transmitted may be read from the second storage unit 73.

これを受信した第1転送部62は、第1蓄積部63へそのデータを書き込む(S70)と共に、受信したデータを第1送受信モジュール61の受信部へ送信する(S71)。
第1送受信モジュール61がここで受信したデータに対して受信時処理を実行し(S72)、以上で第2送受信モジュール71から第1送受信モジュール61への「先に送信されてきたデータ」の送信のシミュレートが完了する。
また、以上で、第2送受信モジュール71から第1送受信モジュール61への、エラーにより2つのデータの順序が入れ替わってしまった送信のシミュレートが完了する。
Receiving this, the first transfer unit 62 writes the data in the first storage unit 63 (S70), and transmits the received data to the receiving unit of the first transmission / reception module 61 (S71).
The first transmission / reception module 61 performs reception processing on the data received here (S72), and transmission of “data transmitted earlier” from the second transmission / reception module 71 to the first transmission / reception module 61 is completed. The simulation is complete.
In addition, the transmission simulation from the second transmission / reception module 71 to the first transmission / reception module 61 in which the order of the two data is changed due to an error is completed.

また、ステップS59でヘッダ情報変更の場合、第2転送部72は、ステップS55で受信したデータのヘッダ情報を変更する。ヘッダ情報とは、例えばデータ転送にIP(Internet Protocol)を用いる場合はIPアドレスやバージョン等である。ヘッダの任意の箇所を変更可能である。   When the header information is changed in step S59, the second transfer unit 72 changes the header information of the data received in step S55. The header information is, for example, an IP address and a version when using IP (Internet Protocol) for data transfer. Any part of the header can be changed.

その後、第2転送部72は、ヘッダ情報変更後のデータを第1転送部62へ送信する(S67)。以後、第1転送部62及び第1送受信モジュール61は上述の順序変更の場合と同じステップS70乃至S72の動作を実行する。
以上で、第2送受信モジュール71から第1送受信モジュール61への、エラーによりヘッダ情報が変更されてしまった送信のシミュレートが完了する。
Thereafter, the second transfer unit 72 transmits the data after the header information change to the first transfer unit 62 (S67). Thereafter, the first transfer unit 62 and the first transmission / reception module 61 perform the same operations of steps S70 to S72 as in the case of the order change described above.
This completes the transmission simulation from the second transmission / reception module 71 to the first transmission / reception module 61 in which the header information has been changed due to an error.

また、ステップS59で遅延の場合、第2転送部72は、通常の送信時よりも長い所定時間だけ待機することにより、データ送信に遅延を付与する(S68)。その後、第2転送部72は、ステップS55で受信したデータを第1転送部62へ送信する(S69)。以後、第1転送部62及び第1送受信モジュール61は上述の順序変更の場合と同じステップS70乃至S72の動作を実行する。   Further, in the case of a delay in step S59, the second transfer unit 72 gives a delay to the data transmission by waiting for a predetermined time longer than that during normal transmission (S68). Thereafter, the second transfer unit 72 transmits the data received in step S55 to the first transfer unit 62 (S69). Thereafter, the first transfer unit 62 and the first transmission / reception module 61 perform the same operations of steps S70 to S72 as in the case of the order change described above.

以上で、第2送受信モジュール71から第1送受信モジュール61への、エラーや処理集中等により遅延が発生してしまった送信のシミュレートが完了する。なお、ここでは第2転送部72がエラーモードの動作を行う例について説明したが、第1送受信モジュール61から第2送受信モジュール71にデータを送信する場合に、第1転送部62が同様なエラーモードの動作を行うことができるようにするとよい。   This completes the simulation of transmission from the second transmission / reception module 71 to the first transmission / reception module 61 in which a delay has occurred due to errors, processing concentration, or the like. Here, the example in which the second transfer unit 72 performs the error mode operation has been described. However, when the first transfer unit 61 transmits data to the second transmit / receive module 71, the first transfer unit 62 has a similar error. It is preferable that mode operation can be performed.

第2の実施形態の協調検証装置によれば、以上のようなエラーの発生も考慮したモジュール間通信動作の検証を行うことができる。
また、以上の構成でも、第1の実施形態の場合と同様、シミュレータを起動するPCは必要なく、また、PCとFPGAとの間のデータ転送を行う必要がないため、CPUとFPGAとの間の通信速度の制約による検証速度の低下が起こりにくくなる。すなわち、検証速度を向上させることができる。
According to the cooperative verification apparatus of the second embodiment, it is possible to verify the inter-module communication operation in consideration of the occurrence of the error as described above.
Also in the above configuration, as in the case of the first embodiment, there is no need for a PC for starting the simulator, and there is no need to transfer data between the PC and the FPGA. It is difficult for the verification speed to decrease due to restrictions on the communication speed. That is, the verification speed can be improved.

さらに、FPGAに設ける送受信モジュールの対向となる送受信モジュールも、同じFPGAボード内に設けることができるため、1つのFPGAボードで検証が行える。このため、対向モジュールを設けるために追加のFPGAボードを用意する必要がなく、手間とコストが低減する。   Furthermore, since the transmission / reception module opposite to the transmission / reception module provided in the FPGA can also be provided in the same FPGA board, verification can be performed with one FPGA board. For this reason, it is not necessary to prepare an additional FPGA board for providing the opposing module, and labor and cost are reduced.

また、CPUにシミュレートさせる送受信モジュールについては、レジスタアクセスや関数実行やメモリ情報等を容易に可視化でき、解析情報を取得することができる。さらに、第1及び第2の転送部を設け、これによって転送するデータを蓄積するようにしているため、転送内容を後で容易に分析することができる。   In addition, for the transmission / reception module to be simulated by the CPU, register access, function execution, memory information, and the like can be easily visualized, and analysis information can be acquired. Further, since the first and second transfer units are provided to store the data to be transferred, the transfer contents can be easily analyzed later.

〔第2の実施形態の比較例:図15及び図16〕
次に、上述した第2の実施形態の比較例について説明する。
まず図15に、第1の比較例のハードウェア構成及び各ハードウェアに実現させる機能の構成を示す。
この第1の比較例は、PC150に、第1FPGAボード110及び第2FPGAボード130を順次接続して構成している。このうち第1FPGAボード110のFPGA120にはCPUを内蔵せず、第2FPGAボード130のFPGA140はCPU142を内蔵している。
[Comparative example of the second embodiment: FIGS. 15 and 16]
Next, a comparative example of the above-described second embodiment will be described.
First, FIG. 15 shows a hardware configuration of the first comparative example and a configuration of functions realized by each hardware.
In the first comparative example, a first FPGA board 110 and a second FPGA board 130 are sequentially connected to a PC 150. Among these, the FPGA 120 of the first FPGA board 110 does not contain a CPU, and the FPGA 140 of the second FPGA board 130 contains a CPU 142.

そして、FPGA120をプログラムすることにより、第1送受信モジュール121の機能をエミュレートさせる。また、FPGA140をプログラムすることにより、第1送受信モジュール121の対向となる第2送受信モジュール141の機能をエミュレートさせる。   Then, by programming the FPGA 120, the function of the first transmission / reception module 121 is emulated. Further, by programming the FPGA 140, the function of the second transmission / reception module 141 facing the first transmission / reception module 121 is emulated.

また。PC150においては、CPUに所要のプログラムを実行させることにより、ISS161、ワークメモリ162及び周辺装置163の機能を実現させる。これらの各部の機能は、図10に示したものと同様である。第2送受信モジュール141の制御は、ISS161が担当しても、CPU142が担当してもよい。   Also. In the PC 150, the functions of the ISS 161, work memory 162, and peripheral device 163 are realized by causing the CPU to execute a required program. The functions of these units are the same as those shown in FIG. The control of the second transmission / reception module 141 may be handled by the ISS 161 or the CPU 142.

このように、FPGAに送受信モジュールの機能をエミュレートさせる構成では、FPGAボードを2枚用いて、2つの送受信モジュールの機能をエミュレートすることになる。このため、協調検証装置を構築する手間とコストが大きくなる。さらに、ISS161の機能をPC150に実現させるとすると、PC150を用意する分コスト高となる。さらに、送受信モジュール間のデータ転送をシミュレータで可視化できないため、デバッグ性が悪いという課題がある。さらに、PC150とFPGAボード110,130間のデータ転送が多くなると、通信速度の制約により検証速度が低下してしまう。   In this way, in the configuration in which the FPGA emulates the functions of the transmission / reception module, the functions of the two transmission / reception modules are emulated using two FPGA boards. For this reason, the effort and cost which construct | assemble a cooperation verification apparatus become large. Further, if the function of the ISS 161 is realized in the PC 150, the cost is increased by the provision of the PC 150. Furthermore, since the data transfer between the transmission / reception modules cannot be visualized by the simulator, there is a problem that the debugging performance is poor. Furthermore, if the data transfer between the PC 150 and the FPGA boards 110 and 130 increases, the verification speed decreases due to the restriction on the communication speed.

次に図16に、第2の比較例のハードウェア構成及び各ハードウェアに実現させる機能の構成を示す。
この第2の比較例は、第1のFPGAボード110に搭載するFPGA120′にCPU122を内蔵し、CPU122に所要のプログラムを実行させることにより、ISS161、ワークメモリ162及び周辺装置163の機能を実現させる点が第1の比較例と異なる。
このため、PC150は不要であり、これに代えて、第2の実施形態の場合と同様なモニタ51を設けている。
Next, FIG. 16 shows a hardware configuration of the second comparative example and a configuration of functions realized by each hardware.
In the second comparative example, the functions of the ISS 161, the work memory 162, and the peripheral device 163 are realized by incorporating the CPU 122 in the FPGA 120 ′ mounted on the first FPGA board 110 and causing the CPU 122 to execute a required program. The point is different from the first comparative example.
For this reason, the PC 150 is unnecessary, and a monitor 51 similar to that in the second embodiment is provided instead.

この構成では、シミュレータを起動するPCは必要なく、また、PCとFPGAボード間のデータ転送がないので、第1の比較例の構成と比べ、検証速度の低下は起こりにくい。しかし、FPGAボードを2枚用いて、2つの送受信モジュールの機能をエミュレートする点は変わらない。このため、協調検証装置を構築する手間とコストが大きくなる。また、送受信モジュール間のデータ転送をシミュレータで可視化できないため、デバッグ性が悪いという課題も同じく残る。
しかしながら、上述した第2の実施形態の構成であれば、1枚のFPGAボードで検証が行えるため、また、第1及び第2の転送部を設けているため、このような問題は発生しない。
In this configuration, a PC for starting the simulator is not necessary, and there is no data transfer between the PC and the FPGA board, so that the verification speed is less likely to decrease compared to the configuration of the first comparative example. However, there is no change in the use of two FPGA boards to emulate the functions of the two transmission / reception modules. For this reason, the effort and cost which construct | assemble a cooperation verification apparatus become large. Moreover, since the data transfer between the transmission / reception modules cannot be visualized by the simulator, the problem that the debugging performance is poor also remains.
However, with the configuration of the second embodiment described above, verification can be performed with a single FPGA board, and since the first and second transfer units are provided, such a problem does not occur.

〔変形例〕
以上で実施形態の説明を終了するが、この発明において、各部の具体的な構成や処理の内容、データの形式、検証対象回路の構成等は、実施形態で説明したものに限るものではない。
例えば、上述の実施形態ではFPGAボード10の外部にメモリ40を設ける例について説明したが、メモリ40はFPGAボード10に搭載されていてもよい。
[Modification]
Although the description of the embodiment has been completed above, in the present invention, the specific configuration of each unit, the contents of processing, the data format, the configuration of the verification target circuit, and the like are not limited to those described in the embodiment.
For example, in the above-described embodiment, the example in which the memory 40 is provided outside the FPGA board 10 has been described, but the memory 40 may be mounted on the FPGA board 10.

また、CPU30が回路の動作のシミュレートに用いるアプリは、HDLシミュレータ37及び仮想HWアプリ39には限られない。
また、仮想HWアプリは、仮想モデルとしてCPUやバス等をシミュレートすることができる。仮想HWモデルを繋げて仮想プラットフォームを構築し、その環境でOSを動かすこともできる。従って、仮想HWアプリにテストベンチの振る舞いをさせることもできる。
Further, the application that the CPU 30 uses for simulating the operation of the circuit is not limited to the HDL simulator 37 and the virtual HW application 39.
The virtual HW application can simulate a CPU, a bus, and the like as a virtual model. A virtual platform can be constructed by connecting virtual HW models, and the OS can be run in that environment. Accordingly, it is possible to make the virtual HW application behave as a test bench.

また、協調検証装置のユーザインタフェースは、PC50には限られず、表示手段と操作手段とを備えた専用の制御装置であってもよい。例えば、FPGAボード10にキーボード(あるいはコンソール)及びディスプレイを接続するためのインタフェースを設けることが考えられる。そして、キーボードの操作によりこのインタフェースを介してCPU30に実行開始や中断を指示する信号を入力し、CPU30が生成した実行結果をディスプレイに表示できるようにすることが考えられる。このようにすれば、PC50を設ける必要はない。   Further, the user interface of the cooperative verification apparatus is not limited to the PC 50, and may be a dedicated control apparatus including a display unit and an operation unit. For example, it is conceivable to provide an interface for connecting a keyboard (or console) and a display to the FPGA board 10. Then, it is conceivable to input a signal for instructing the CPU 30 to start or stop execution through this interface by operating the keyboard so that the execution result generated by the CPU 30 can be displayed on the display. If it does in this way, it is not necessary to provide PC50.

また、協調検証装置が行う検証は、上述の実施形態で説明したものに限られない。FPGA20がエミュレートするモジュールの数及びCPU30がシミュレートするモジュールの数も、上述の実施形態で説明したものに限られない。
また、検証対象回路のエミュレートを行うプログラマブル回路も、FPGAに限られない。さらに、プログラマブル回路にCPUを複数内蔵することも可能である。
また、以上説明してきた実施形態及び変形例の構成は、相互に矛盾しない限り任意に組み合わせて実施可能であることは勿論である。
Further, the verification performed by the cooperative verification apparatus is not limited to that described in the above embodiment. The number of modules emulated by the FPGA 20 and the number of modules simulated by the CPU 30 are not limited to those described in the above embodiment.
Further, the programmable circuit that emulates the verification target circuit is not limited to the FPGA. Furthermore, it is possible to incorporate a plurality of CPUs in the programmable circuit.
Moreover, it is needless to say that the configurations of the embodiment and the modified examples described above can be arbitrarily combined and implemented as long as they do not contradict each other.

10,210:FPGAボード、11:通信I/F、20,120,140,220:FPGA、21,34,221:第1モジュール、22,222:第2モジュール、30,122,142,231:CPU、31,31′,233:第3モジュール、32,232:テストベンチ、33:第4モジュール、35:等価性検証用テストベンチ、36,250:OS、37,260:HDLシミュレータ、38,270:テストベンチアプリ、39:仮想HWアプリ、40:メモリ、41:等価性検証アプリ、50,150,230:PC、51:ディスプレイ、60:通信線、240:通信ケーブル、61、121:第1送受信モジュール、62:第1転送部、63:第1蓄積部、71,141:第2送受信モジュール、72:第2転送部、73:第2蓄積部、74,161:ISS、75,162:ワークメモリ、76,163:周辺装置、110:第1FPGAボード、130:第2FPGAボード、160:シミュレータ 10, 210: FPGA board, 11: Communication I / F, 20, 120, 140, 220: FPGA, 21, 34, 221: First module, 22, 222: Second module, 30, 122, 142, 231: CPU 31, 31 ', 233: third module, 32, 232: test bench, 33: fourth module, 35: equivalence verification test bench, 36, 250: OS, 37, 260: HDL simulator, 38, 270: Test bench application, 39: Virtual HW application, 40: Memory, 41: Equivalence verification application, 50, 150, 230: PC, 51: Display, 60: Communication line, 240: Communication cable, 61, 121: No. 1 transmission / reception module, 62: first transfer unit, 63: first storage unit, 71, 141: second transmission / reception module, 72: second transfer , 73: second storage unit, 74,161: ISS, 75,162: working memory, 76,163: peripheral device, 110: first 1FPGA board, 130: first 2FPGA board, 160: Simulator

特開2009−223762号公報JP 2009-223762 A 特許第4470582号公報Japanese Patent No. 4470582 特開2007−58813号公報JP 2007-58813 A

Claims (10)

ソフトウェアシミュレーションとハードウェアエミュレーションを組み合わせて電子回路の動作を検証する協調検証装置であって、
前記ハードウェアエミュレーションを行うプログラマブル回路にCPUを内蔵し、該CPUに前記ソフトウェアシミュレーションを実行させることを特徴とする協調検証装置。
A collaborative verification device that verifies the operation of an electronic circuit by combining software simulation and hardware emulation,
A co-verification apparatus, wherein a CPU is built in a programmable circuit that performs hardware emulation, and the CPU executes the software simulation.
請求項1に記載の協調検証装置であって、
前記CPUが、前記電子回路の一部の動作をシミュレートし、前記プログラマブル回路が前記電子回路の他の部分の動作をエミュレートし、前記プログラマブル回路と前記CPUとの間での信号送受信により、前記電子回路の一部と他の部分との間の信号送受信をシミュレートすることを特徴とする協調検証装置。
The collaborative verification device according to claim 1,
The CPU simulates the operation of a part of the electronic circuit, the programmable circuit emulates the operation of another part of the electronic circuit, and transmits and receives signals between the programmable circuit and the CPU. A cooperative verification apparatus simulating signal transmission / reception between a part of the electronic circuit and another part.
請求項2に記載の協調検証装置であって、
前記プログラマブル回路が、エミュレートした前記電子回路の前記他の部分が送受信するデータを一旦保持する第1転送手段を備え、
前記CPUが、シミュレートした前記電子回路の前記一部が送受信するデータを一旦保持する第2転送手段の機能を実現し、
前記電子回路の一部と他の部分との間の信号送受信を、前記第1転送手段と前記第2転送手段との間の信号送受信によりシミュレートすることを特徴とする協調検証装置。
The collaborative verification device according to claim 2,
The programmable circuit comprises first transfer means for temporarily holding data transmitted and received by the other part of the emulated electronic circuit;
The CPU realizes a function of second transfer means for temporarily holding data transmitted and received by the part of the simulated electronic circuit,
A cooperative verification apparatus simulating signal transmission / reception between a part of the electronic circuit and another part by signal transmission / reception between the first transfer means and the second transfer means.
請求項3に記載の協調検証装置であって、
前記第1転送手段及び前記第2転送手段が、送受信したデータを後で送受信順に参照できるように記憶手段に蓄積する蓄積手段を備えることを特徴とする協調検証装置。
The collaborative verification device according to claim 3,
The cooperative verification apparatus, wherein the first transfer unit and the second transfer unit include a storage unit that stores the transmitted and received data in a storage unit so that the transmitted and received data can be referred to in the order of transmission and reception later.
請求項3又は4に記載の協調検証装置であって、
前記第1転送手段及び前記第2転送手段の少なくとも一方が、
送信するデータの順序を変更する手段、送信するデータのヘッダ情報を変更する手段、及びデータの送信を遅延させる手段の少なくとも1つを備えることを特徴とする協調検証装置。
The collaborative verification device according to claim 3 or 4,
At least one of the first transfer means and the second transfer means is
A collaborative verification apparatus comprising: at least one of means for changing the order of data to be transmitted, means for changing header information of data to be transmitted, and means for delaying data transmission.
請求項1に記載の協調検証装置であって、
前記CPUが、前記ハードウェアエミュレーションによりエミュレートする電子回路と同じ電子回路の動作をシミュレートするソフトウェアシミュレーションを実行し、前記ソフトウェアシミュレーションの結果と前記ハードウェアエミュレーションの結果とを比較して等価性検証を行うことを特徴とする協調検証装置。
The collaborative verification device according to claim 1,
The CPU executes a software simulation that simulates the operation of the same electronic circuit as that emulated by the hardware emulation, and compares the result of the software simulation with the result of the hardware emulation to verify equivalence. The collaborative verification apparatus characterized by performing.
ソフトウェアシミュレーションとハードウェアエミュレーションを組み合わせて電子回路の動作を検証する協調検証方法であって、
CPUを内蔵したプログラマブル回路のうち、前記プログラマブル回路に前記ハードウェアエミュレーションを実行させ、前記CPUに前記ソフトウェアシミュレーションを実行させることを特徴とする協調検証方法。
A collaborative verification method that verifies the operation of an electronic circuit by combining software simulation and hardware emulation,
A cooperative verification method, comprising: a programmable circuit having a CPU built therein; causing the programmable circuit to execute the hardware emulation; and causing the CPU to execute the software simulation.
請求項7に記載の協調検証方法であって、
前記CPUに、前記電子回路の一部の動作をシミュレートさせ、前記プログラマブル回路に前記電子回路の他の部分の動作をエミュレートさせ、前記プログラマブル回路と前記CPUとの間での信号送受信により、前記電子回路の一部と他の部分との間の信号送受信をシミュレートさせることを特徴とする協調検証方法。
The cooperative verification method according to claim 7,
By causing the CPU to simulate the operation of a part of the electronic circuit, to cause the programmable circuit to emulate the operation of another part of the electronic circuit, and by transmitting and receiving signals between the programmable circuit and the CPU, A cooperative verification method characterized by simulating signal transmission / reception between a part of the electronic circuit and another part.
請求項8に記載の協調検証方法であって、
前記プログラマブル回路に、エミュレートした前記電子回路の前記他の部分が送受信するデータを一旦保持する第1転送手段の機能を実現させ、
前記CPUに、シミュレートした前記電子回路の前記一部が送受信するデータを一旦保持する第2転送手段の機能を実現させ、
前記電子回路の一部と他の部分との間の信号送受信を、前記第1転送手段と前記第2転送手段との間の信号送受信によりシミュレートさせることを特徴とする協調検証方法。
It is the cooperation verification method of Claim 8, Comprising:
Realizing the function of the first transfer means for temporarily holding the data transmitted and received by the other part of the emulated electronic circuit in the programmable circuit;
Causing the CPU to realize a function of second transfer means for temporarily holding data transmitted and received by the part of the simulated electronic circuit;
A cooperative verification method, wherein signal transmission / reception between a part of the electronic circuit and another part is simulated by signal transmission / reception between the first transfer means and the second transfer means.
請求項7に記載の協調検証方法であって、
前記CPUに、前記ハードウェアエミュレーションによりエミュレートする電子回路と同じ電子回路の動作をシミュレートするソフトウェアシミュレーションを実行させ、前記ソフトウェアシミュレーションの結果と前記ハードウェアエミュレーションの結果とを比較して等価性検証を行うことを特徴とする協調検証方法。
The cooperative verification method according to claim 7,
The CPU is caused to execute a software simulation for simulating the operation of the same electronic circuit as the electronic circuit to be emulated by the hardware emulation, and the equivalence verification is performed by comparing the result of the software simulation with the result of the hardware emulation. A collaborative verification method characterized by
JP2013133725A 2013-06-26 2013-06-26 Cooperation verification device and cooperation verification method Pending JP2015011363A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013133725A JP2015011363A (en) 2013-06-26 2013-06-26 Cooperation verification device and cooperation verification method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013133725A JP2015011363A (en) 2013-06-26 2013-06-26 Cooperation verification device and cooperation verification method

Publications (1)

Publication Number Publication Date
JP2015011363A true JP2015011363A (en) 2015-01-19

Family

ID=52304507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013133725A Pending JP2015011363A (en) 2013-06-26 2013-06-26 Cooperation verification device and cooperation verification method

Country Status (1)

Country Link
JP (1) JP2015011363A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110472289A (en) * 2019-07-17 2019-11-19 陕西千山航空电子有限责任公司 A kind of FDR system test verification method based on Dynamic Signal emulation
CN111832737A (en) * 2019-04-18 2020-10-27 中科寒武纪科技股份有限公司 Data processing method and related product
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111832737A (en) * 2019-04-18 2020-10-27 中科寒武纪科技股份有限公司 Data processing method and related product
JP2021182176A (en) * 2019-04-18 2021-11-25 カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited Data processing method and related product
JP7045357B2 (en) 2019-04-18 2022-03-31 カンブリコン テクノロジーズ コーポレーション リミテッド Data processing methods and related products
US11762690B2 (en) 2019-04-18 2023-09-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
CN111832737B (en) * 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 Data processing method and related product
US11934940B2 (en) 2019-04-18 2024-03-19 Cambricon Technologies Corporation Limited AI processor simulation
CN110472289A (en) * 2019-07-17 2019-11-19 陕西千山航空电子有限责任公司 A kind of FDR system test verification method based on Dynamic Signal emulation
CN110472289B (en) * 2019-07-17 2023-06-30 陕西千山航空电子有限责任公司 Flight parameter system test verification method based on dynamic signal simulation

Similar Documents

Publication Publication Date Title
CN105302950B (en) A kind of programmable logic device crosslinking emulation test method of soft and hardware collaboration
US8041553B1 (en) Generic software simulation interface for integrated circuits
US20080306722A1 (en) Logic verification system
US9495492B1 (en) Implementing synchronous triggers for waveform capture in an FPGA prototyping system
US10628548B2 (en) Flow control in networking system-on-chip verification
US7930162B1 (en) Accelerating hardware co-simulation using dynamic replay on first-in-first-out-driven command processor
US10180850B1 (en) Emulating applications that use hardware acceleration
US8239708B2 (en) System on chip (SoC) device verification system using memory interface
JP2005174349A (en) Device for emulating operation of electronic apparatus
CN113342583B (en) Chip verification system, method, device, equipment and storage medium
CN101504692A (en) System and method for validating and testing on-chip system
JP4468410B2 (en) Software execution device and cooperative operation method
CN116029242A (en) Cloud native hardware logic simulation FPGA acceleration method and system
JP2015011363A (en) Cooperation verification device and cooperation verification method
Koczor et al. Verification approach based on emulation technology
CN108228965B (en) Simulation verification method, device and equipment for memory cell
Lin et al. Functional verifications for SoC software/hardware co-design: From virtual platform to physical platform
US7228513B2 (en) Circuit operation verification device and method
US20200371843A1 (en) Framework for application driven exploration and optimization of hardware engines
US8954312B2 (en) Hardware emulation proxy for hardware software co-emulation
Cho et al. A full-system VM-HDL co-simulation framework for servers with PCIe-connected FPGAs
CN104679963B (en) A kind of simulating, verifying apparatus and method based on TCL
US20140325468A1 (en) Storage medium, and generation apparatus for generating transactions for performance evaluation
US20230035673A1 (en) Information processing system, information processing apparatus, use method of information processing apparatus, user terminal, and program therefor
CN113177388B (en) Device, system and method for testing and verifying IP (Internet protocol) core