JP2009217531A - Virtual software generator - Google Patents

Virtual software generator Download PDF

Info

Publication number
JP2009217531A
JP2009217531A JP2008060428A JP2008060428A JP2009217531A JP 2009217531 A JP2009217531 A JP 2009217531A JP 2008060428 A JP2008060428 A JP 2008060428A JP 2008060428 A JP2008060428 A JP 2008060428A JP 2009217531 A JP2009217531 A JP 2009217531A
Authority
JP
Japan
Prior art keywords
module
software
virtual software
load
virtual
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.)
Granted
Application number
JP2008060428A
Other languages
Japanese (ja)
Other versions
JP5056493B2 (en
Inventor
Koichiro Yamashita
浩一郎 山下
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008060428A priority Critical patent/JP5056493B2/en
Publication of JP2009217531A publication Critical patent/JP2009217531A/en
Application granted granted Critical
Publication of JP5056493B2 publication Critical patent/JP5056493B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

<P>PROBLEM TO BE SOLVED: To provide a virtual software generator for generating a virtual software which has replaced software mounted to hardware with a source code for generating loads. <P>SOLUTION: A virtual software generator for virtualizing software includes: a module tree configuration creating means for analyzing data input/output among a plurality of modules comprising the software to create a module tree structure; a load table creating means for creating a load table for showing the degree of load for every module; a replacing means for replacing respective modules of the module tree structure with a virtual software module for generating the degree of loads shown by the load table; and a virtual software generating means for generating the module on the basis of the module tree structure in which the module is replaced with the virtual software module. <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、ハードウェアに実装されるソフトウェアを、負荷を生成するソースコードで置き換えた仮想ソフトウェアを生成する仮想ソフトウェア生成装置に関する。   The present invention relates to a virtual software generation device that generates virtual software in which software installed in hardware is replaced with a source code that generates a load.

近年、システムLSI(Large Scale Integration)の開発時におけるシミュレーションによる設計技術が進められている。主に、これはESL(Electronic System Level)技術と呼ばれ、システムLSIの設計を段階ごとに詳細性(抽象性)を変えながら設計を行う技術である。   In recent years, design technology by simulation at the time of development of a system LSI (Large Scale Integration) has been advanced. This is mainly called ESL (Electronic System Level) technology, and is a technology for designing a system LSI while changing details (abstraction) at each stage.

抽象度の高い設計段階では、ハードウェアをブロック図表記で行い、その高速動作性から全体構成の検討に用いたり、CPU(Central Processing Unit)が組み込まれたSoC(System On Chip)などの設計では、実際にソフトウェアをシミュレータ上で動作させながらシステム全体の挙動を解析する目的に用いられる。一方で、抽象度の低い構成では、処理速度は遅いが実際のハードウェアロジックに近いハード詳細設計の段階で用いられる。   At the design stage with a high degree of abstraction, the hardware is shown in block diagram notation, and it is used for studying the overall configuration due to its high-speed operation, or in the design of SoC (System On Chip) with built-in CPU (Central Processing Unit) It is used for the purpose of analyzing the behavior of the entire system while actually running the software on the simulator. On the other hand, in a configuration with a low level of abstraction, the processing speed is slow, but it is used at the stage of detailed hardware design close to the actual hardware logic.

従来のESLツールやソフトウェア開発環境では、ハードウェアとソフトウェアとは独立した環境で開発されていた。   In conventional ESL tools and software development environments, hardware and software are developed in an independent environment.

例えばPC(Personal Computer)のように、予め決められたアーキテクチャが存在する場合は、ソフトウェアは既存のハードウェアを元に構築して行けばよいが、多様な機能を1システムで実現させるような組込システムにおけるシステムLSI上のソフトウェアを開発する場合、対象となるハードウェアであるシステムLSIが実装されて後に実際のソフトウェアの開発として具体的に設計開発をして定量評価を行っていた。   For example, when there is a predetermined architecture such as a PC (Personal Computer), the software can be constructed based on the existing hardware, but it is possible to implement various functions in one system. When developing software on a system LSI in an embedded system, the system LSI, which is the target hardware, is mounted, and then the design is specifically developed and quantitative evaluation is performed as actual software development.

また、従来のESLツールの用途は、ハードウェアアーキテクチャを設計する場合には、論理回路をハードウェア記述言語で詳細に設計するRTL(Register Transfer Level)設計ではなく、設計の詳細度合いに応じて論理回路の挙動だけを表現したSystemCなどの言語によって記述した抽象的な表現でシミュレーションが行われていた。一方で、ソフトウェアについては、開発したソフトウェアを実装して検証していた。   In addition, when designing a hardware architecture, the conventional ESL tool is used not for RTL (Register Transfer Level) design in which a logic circuit is designed in detail in a hardware description language, but in accordance with the degree of design detail. The simulation is performed with an abstract expression described in a language such as SystemC that expresses only the behavior of the circuit. On the other hand, for software, the developed software was installed and verified.

ソフトウェアの検証を行うマイコンシミュレータとハードウェアシミュレータとを備え、マイコンシミュレータにおいてハードウェアシミュレータで検証されたハードウェアの検証結果を適時に利用することによって、演算量が膨大となるハードウェアシミュレータでの処理結果を再度取得するまでの時間を短縮するようにした技術が知られている。
特開2000−35898号公報
A hardware simulator that has a microcomputer simulator and a hardware simulator that perform software verification, and uses the hardware verification results verified by the hardware simulator in the microcomputer simulator in a timely manner. A technique for shortening the time until the result is obtained again is known.
JP 2000-35898 A

上記従来のシミュレーション方法では、ソフトウェア検証用のマイコンシミュレータとハードウェア検証用のハードウェアシミュレータとはI/Fモデルで連携する手法であり、検証するためのシミュレータはそれぞれ別のものであるため、一のシステムLSIとしてハードウェアシミュレータ上で検証することができないといった問題があった。   In the above conventional simulation method, the microcomputer simulator for software verification and the hardware simulator for hardware verification are linked with each other by an I / F model, and the simulators for verification are different from each other. There is a problem that the system LSI cannot be verified on a hardware simulator.

例えば、ESLツールは、実際のシステムLSIを開発する前にシミュレーション環境による構築を補助し、実際のチップ環境を準備することなく、シミュレーション上でソフトウェアの開発に用いるために利用されている。   For example, the ESL tool is used for assisting the construction by the simulation environment before developing the actual system LSI, and for use in software development on the simulation without preparing the actual chip environment.

しかしながら、ESL環境が整備されたとしても、システムLSIのアーキテクチャやトポロジーなどが変化した場合には、それが原因となって対象とするソフトウェアが正常に動作せず、ソフトウェアを改造した後にシミュレーションモデル上でソフトウェアを移植しなおすという作業が発生していた。   However, even if the ESL environment is improved, if the architecture or topology of the system LSI changes, the target software does not operate normally due to the change, and the software is remodeled before the simulation model There was a work to re-port software.

よって、本発明の目的は、ハードウェアに実装されるソフトウェアをハードウェアに依存しないモジュール構成に置き換えて、システムLSI全体の挙動を実際のハードウェア及び実際のソフトウェアを開発する前に評価可能とする仮想ソフトウェアを生成する仮想ソフトウェア生成装置を提供することである。   Therefore, the object of the present invention is to replace the software implemented in hardware with a module configuration that does not depend on hardware, so that the behavior of the entire system LSI can be evaluated before actual hardware and actual software are developed. To provide a virtual software generation device that generates virtual software.

上記課題を解決するため、ソフトウェアを構成する複数のモジュール間のデータ入出力とを解析してモジュールツリー構造を作成するモジュールツリー構造作成手段と、前記モジュール毎に負荷の程度を示す負荷テーブルを作成する負荷テーブル作成手段と、前記モジュールツリー構造の各モジュールを前記負荷テーブルによって示される前記負荷の程度を発生させる仮想ソフトウェアモジュールで置き換える置換手段と、前記モジュールが前記仮想ソフトウェアモジュールに置き換えられた前記モジュールツリー構造に基づいて仮想ソフトウェアを生成する仮想ソフトウェア生成手段と、を有するようにした仮想ソフトウェア生成装置を提供する。   To solve the above problems, module tree structure creating means for creating a module tree structure by analyzing data input / output between a plurality of modules constituting the software, and creating a load table indicating the degree of load for each module Load table creating means, replacement means for replacing each module of the module tree structure with a virtual software module that generates the degree of load indicated by the load table, and the module in which the module is replaced with the virtual software module There is provided a virtual software generation device having virtual software generation means for generating virtual software based on a tree structure.

上記課題を解決するため手段として、上記仮想ソフトウェア生成装置での処理を行う仮想ソフトウェア生成方法、又は、コンピュータに上記仮想ソフトウェア生成装置の各手段として機能させるためのプログラムとすることもできる。   As means for solving the above problems, a virtual software generation method for performing processing in the virtual software generation apparatus, or a program for causing a computer to function as each means of the virtual software generation apparatus may be used.

開示の仮想ソフトウェア生成装置は、ソフトウェアを構成する各モジュールが行うと予測される処理の負荷の程度を発生させるモジュールで仮想化を行い、ハードウェアを検証するシミュレーション上で抽象化されたハードウェアと連携させることによって一のシステムとして評価及び設計を行うことができる。   The disclosed virtual software generation device performs hardware virtualization on a module that generates a degree of processing load predicted to be performed by each module constituting the software, and hardware that is abstracted on a simulation for verifying the hardware. By linking, evaluation and design can be performed as a single system.

以下、本発明の実施の形態を図面に基づいて説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

多様な機能を実現するための電子部品及びそれらを制御するCPUを組み込んだSoCを検証するESLツールでは、各電子部品、CPU、及びSocに接続される周辺部品の挙動を抽象化してシミュレートして、各電子部品及び周辺部品の検証を行っている。本実施例では、実装に近いソフトウェアの負荷量に置き換えた仮想ソフトウェアを用いてESLツールを用いて検証することによって、ハードウェア及びソフトウェアの検証を同時に行えるようにする。以下、SoCとそのSoCを動作させるソフトウェアとをシステムLSIと言う。   In the ESL tool that verifies the SoC that incorporates the electronic components for realizing various functions and the CPU that controls them, the behavior of each electronic component, CPU, and peripheral components connected to the Soc is abstracted and simulated. Each electronic component and peripheral components are verified. In this embodiment, hardware and software can be verified at the same time by performing verification using an ESL tool using virtual software that is replaced with a load amount of software close to implementation. Hereinafter, the SoC and software for operating the SoC are referred to as a system LSI.

図1は、本発明の一実施例に係るシミュレータ装置の機能構成例を示す図である。図1において、シミュレータ装置100は、主に、仮想化処理部10とESLツール20とで構成される。仮想化処理部10は、評価対象のシステムLSI7のソフトウェア(以下、評価対象ソフトウェア3と言う)を構成するモジュール毎に負荷量を予測し、その予測負荷量を用いて仮想化する処理部であり、構造解析部11と、シナリオジェネレータ12と、置換部13と、モジュール選択部14と、仮想ソフトウェア生成部15とを有する。   FIG. 1 is a diagram illustrating a functional configuration example of a simulator apparatus according to an embodiment of the present invention. In FIG. 1, the simulator device 100 mainly includes a virtualization processing unit 10 and an ESL tool 20. The virtualization processing unit 10 is a processing unit that predicts a load amount for each module constituting the software of the system LSI 7 to be evaluated (hereinafter referred to as the evaluation target software 3) and virtualizes using the predicted load amount. , A structure analysis unit 11, a scenario generator 12, a replacement unit 13, a module selection unit 14, and a virtual software generation unit 15.

仮想化処理部10に入力される評価対象ソフトウェア3は、システムLSI7に搭載しようとしているソフトウェアのソースコード又は仕様書などである。仕様書の場合、他のツールによってUML(Unified Modeling Language)やフローチャートなどの仕様表現言語で記述されたデータに変換する。   The evaluation target software 3 input to the virtualization processing unit 10 is a source code or specification of software to be installed in the system LSI 7. In the case of a specification, it is converted into data described in a specification expression language such as UML (Unified Modeling Language) or a flowchart by other tools.

構造解析部11は、評価対象ソフトウェア3の関数毎にモジュールを構成し、各モジュール間のデータの入出力(以下に述べるI/Oトラフィック)に係る情報に基づいてモジュールツリー構造11aを作成する。また、構造解析部11は、ストーリーパーサー11bを用いてモジュールツリー構造11aを作成する過程で取得した種々のデータに基づいてストーリーデータ43を作成する。   The structure analysis unit 11 configures a module for each function of the evaluation target software 3, and creates a module tree structure 11a based on information related to data input / output (I / O traffic described below) between the modules. In addition, the structure analysis unit 11 creates the story data 43 based on various data acquired in the process of creating the module tree structure 11a using the story parser 11b.

シナリオジェネレータ12は、フラグメントパーツ12aを用いて、仮想ソフトウェアモジュール12bを作成する。フラグメントパーツ12aは、負荷量に係るパラメータの値を持たない空のシナリオ原案モジュールを予め備えており、シナリオジェネレータ12から、モジュールツリー構造11aに基づいて評価対象ソフトウェア3のモジュール毎に負荷量に係るパラメータ値が与えられることによって、モジュール単位に仮想ソフトウェアモジュール12bを生成する。   The scenario generator 12 creates a virtual software module 12b using the fragment part 12a. The fragment part 12a is preliminarily provided with an empty scenario draft module that does not have a parameter value relating to the load amount. The fragment part 12a relates to the load amount for each module of the evaluation target software 3 from the scenario generator 12 based on the module tree structure 11a. Given the parameter value, the virtual software module 12b is generated for each module.

置換部13は、モジュールツリー構造11aに対して、各モジュールを仮想ソフトウェアモジュール12bで置換する。   The replacement unit 13 replaces each module with the virtual software module 12b in the module tree structure 11a.

仮想ソフトウェア生成部16は、置き換え後のモジュールツリー構造15aに基づくソフトウェアコードでなる一つの仮想ソフトウェア21bを生成し、ESLツール20内のESLモデル21へ出力する。仮想ソフトウェア21bはコンパイルされたオブジェクトコードで出力される。仮想ソフトウェア21bをESLツール20に取り込むことで早期の段階でシステムLSI7を検証することができる。   The virtual software generation unit 16 generates one virtual software 21b composed of software codes based on the replaced module tree structure 15a and outputs the generated virtual software 21b to the ESL model 21 in the ESL tool 20. The virtual software 21b is output as a compiled object code. By incorporating the virtual software 21b into the ESL tool 20, the system LSI 7 can be verified at an early stage.

また、モジュール選択部14は、ユーザによるモジュールの選択を可能とする処理部である。例えば、評価対象ソフトウェア3の一部又は全体が完成している場合、ユーザが仮想ソフトウェアモジュール12bで置き換える又は置き換えないモジュールを選択することによって、置換部13が指定されたモジュールに応じて、仮想ソフトウェアモジュール12bで置き換えないようにすることができる。この場合、仮想ソフトウェアモジュール12bで置き換えないモジュールに対しては、評価対象ソフトウェア3の指定されたモジュールのソースコードがそのまま採用される。置換するモジュール又は置換しないモジュールを個々或いはグループ単位でユーザが指定できるようなインタフェースとしてもよい。   The module selection unit 14 is a processing unit that allows a user to select a module. For example, when a part or the whole of the evaluation target software 3 is completed, the user selects a module to be replaced or not replaced with the virtual software module 12b, so that the replacement unit 13 determines the virtual software according to the designated module. The module 12b can be prevented from being replaced. In this case, the source code of the module designated by the evaluation target software 3 is adopted as it is for the module that is not replaced by the virtual software module 12b. An interface may be provided so that a user can designate a module to be replaced or a module not to be replaced individually or in units of groups.

このような機能を備えることによって、仮想化処理部10から出力される仮想ソフトウェア21bは、ソフトウェアの実体のモジュールと、予測した負荷量に基づく仮想化したモジュールとを混在させることができる。従って、本実施例では、ESLツール20にソフトウェアの実体のモジュールと仮想化したモジュールとを混在させて動作させることができる。既存のソフトウェアの完成度の高いモジュールを流用して評価することが可能となる。また、ユーザは、特に詳細な挙動の分析を行いたいモジュールについては置換を行わない指定をすることができ、ESLツール20上でシミュレーションする際には置換されなかったモジュールの機能部分について詳細な分析を行うことができる。   By providing such a function, the virtual software 21b output from the virtualization processing unit 10 can mix a software entity module and a virtualized module based on the predicted load amount. Therefore, in the present embodiment, the ESL tool 20 can be operated by mixing a software entity module and a virtualized module. It becomes possible to divert and evaluate existing software with a high degree of completeness. Further, the user can designate not to replace a module for which a detailed behavior analysis is to be performed, and a detailed analysis is performed on the functional part of the module that has not been replaced when the simulation is performed on the ESL tool 20. It can be performed.

一方、評価対象ハードウェア2は、ESLツール20を用いて抽象化された抽象化ハードウェア21aとして生成される。ESLモデル20は、この抽象化ハードウェア21aと仮想ソフトウェア21bとで構成される。   On the other hand, the evaluation target hardware 2 is generated as an abstract hardware 21 a that is abstracted by using the ESL tool 20. The ESL model 20 includes the abstract hardware 21a and the virtual software 21b.

ユーザは、ESLツール20を用いてESLモデル21を評価する際には、評価対象ハードウェア2と評価対象ソフトウェア3とを同時に評価することができ、また、システムLSI7全体の評価結果(フィードバック)に基づいて評価対象ハードウェア2と評価対象ソフトウェア3とを夫々見直すことができる。   When the user evaluates the ESL model 21 using the ESL tool 20, the user can evaluate the evaluation target hardware 2 and the evaluation target software 3 at the same time. In addition, the evaluation result (feedback) of the entire system LSI 7 can be obtained. Based on this, the evaluation target hardware 2 and the evaluation target software 3 can be reviewed.

上述したような機能を実現するシミュレータ装置100は、コンピュータ装置であって、図2に示すハードウェア構成を成す。図2は、シミュレータ装置のハードウェア構成例を示す図である。図2において、シミュレータ装置100は、コンピュータによって制御される端末であって、CPU31と、メモリユニット32と、表示ユニット33と、出力ユニット34と、入力ユニット35と、通信ユニット36と、記憶装置37と、ドライバ38とで構成され、システムバスBに接続される。   The simulator device 100 that realizes the functions as described above is a computer device and has a hardware configuration shown in FIG. FIG. 2 is a diagram illustrating a hardware configuration example of the simulator apparatus. In FIG. 2, a simulator device 100 is a terminal controlled by a computer, and includes a CPU 31, a memory unit 32, a display unit 33, an output unit 34, an input unit 35, a communication unit 36, and a storage device 37. And a driver 38, and is connected to the system bus B.

CPU31は、メモリユニット32に格納されたプログラムに従ってシミュレータ装置100を制御する。メモリユニット32は、RAM(Random Access Memory)及びROM(Read-Only Memory)等にて構成され、CPU31にて実行されるプログラム、CPU31での処理に必要なデータ、CPU31での処理にて得られたデータ等を格納する。また、メモリユニット32の一部の領域が、CPU31での処理に利用されるワークエリアとして割り付けられている。   The CPU 31 controls the simulator device 100 according to a program stored in the memory unit 32. The memory unit 32 includes a RAM (Random Access Memory), a ROM (Read-Only Memory), and the like, and is obtained by a program executed by the CPU 31, data necessary for processing by the CPU 31, and processing by the CPU 31. Stored data. Further, a partial area of the memory unit 32 is allocated as a work area used for processing in the CPU 31.

表示ユニット33は、CPU31の制御のもとに必要な各種情報を表示する。出力ユニット34は、プリンタ等を有し、ユーザからの指示に応じて各種情報を出力するために用いられる。入力ユニット35は、マウス、キーボード等を有し、ユーザがシミュレータ装置100が処理を行なうための必要な各種情報を入力するために用いられる。通信ユニット36は、シミュレータ装置100が例えばインターネット、LAN(Local Area Network)等を介してシミュレータ装置100と接続する場合に、シミュレータ装置100との間の通信制御をするための装置である。記憶装置37は、例えば、ハードディスクユニットにて構成され、各種処理を実行するプログラム等のデータを格納する。   The display unit 33 displays various information necessary under the control of the CPU 31. The output unit 34 has a printer or the like and is used for outputting various types of information in accordance with instructions from the user. The input unit 35 includes a mouse, a keyboard, and the like, and is used by a user to input various information necessary for the simulator apparatus 100 to perform processing. The communication unit 36 is a device for controlling communication with the simulator device 100 when the simulator device 100 is connected to the simulator device 100 via, for example, the Internet or a LAN (Local Area Network). The storage device 37 is composed of, for example, a hard disk unit, and stores data such as programs for executing various processes.

シミュレータ装置100よって行われる仮想ソフトウェア21bを生成するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体39によってシミュレータ装置100に提供される。即ち、プログラムが保存された記憶媒体39がドライバ38にセットされると、ドライバ38が記憶媒体39からプログラムを読み出し、その読み出されたプログラムがシステムバスBを介して記憶装置37にインストールされる。そして、プログラムが起動されると、記憶装置37にインストールされたプログラムに従ってCPU31がその処理を開始する。尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。本発明に係る処理を実現するプログラムは、通信ユニット36によってネットワークを介してダウンロードし、記憶装置37にインストールするようにしても良い。   A program for generating the virtual software 21b performed by the simulator apparatus 100 is provided to the simulator apparatus 100 by a storage medium 39 such as a CD-ROM (Compact Disc Read-Only Memory). That is, when the storage medium 39 storing the program is set in the driver 38, the driver 38 reads the program from the storage medium 39, and the read program is installed in the storage device 37 via the system bus B. . When the program is activated, the CPU 31 starts its processing according to the program installed in the storage device 37. The medium for storing the program is not limited to a CD-ROM, and any medium that can be read by a computer may be used. The program for realizing the processing according to the present invention may be downloaded via the network by the communication unit 36 and installed in the storage device 37.

図3は、仮想化処理部による処理を説明するためのフローチャート図である。図3において、ユーザによって評価対象ソフトウェア3が仮想化処理部10に入力される(ステップS1)。入力される評価対象ソフトウェア3は、ソースコード、仕様書等である。評価対象ソフトウェア3が入力されると、仮想化処理部10は、評価対象ソフトウェア3がソースコードであるのか又は仕様書であるのかを判断する(ステップS2)。評価対象ソフトウェア3のファイル識別子で判断するようにすればよい。仕様書であると判断した場合、仮想化処理部10は、一般に用いられているツールを利用してUMLやフローチャートなどの仕様表現言語で記述したデータに変換して、ソフトモジュール構成グラフリスト41とモジュール処理サイクルに係る情報を含むI/Oトラフィックリスト42とを出力する。   FIG. 3 is a flowchart for explaining processing by the virtualization processing unit. In FIG. 3, the evaluation target software 3 is input to the virtualization processing unit 10 by the user (step S1). The evaluation target software 3 to be input is source code, specifications, and the like. When the evaluation target software 3 is input, the virtualization processing unit 10 determines whether the evaluation target software 3 is a source code or a specification (step S2). The determination may be made based on the file identifier of the evaluation target software 3. If it is determined that the specification is a specification, the virtualization processing unit 10 uses a commonly used tool to convert it into data described in a specification expression language such as UML or a flowchart, and the software module configuration graph list 41 and An I / O traffic list 42 including information related to the module processing cycle is output.

一方、ソースコードであると判断した場合、構造解析部11は、コンパイルのための前処理を実行するプリプロセッシングを行い(ステップS3)、ソースコードを読み出しながら、その実行トレースをスタックしておき、実行後に関数などのモジュールレベルにおける、演算量、その関数がどのようなリソースを使用したか(アクセス元及びアクセス先)を示す情報、アクセスの対象となるデータ量、モジュール処理サイクルを示す情報等をレポート出力するプロファイリングを行って(ステップS4)、評価対象ソフトウェア3を構成する複数のモジュールを実際に実行させることなく、各モジュールの挙動に係るデータを収集する。本実施例では、このプリプロセッシングとプロファイリングとを含めてプリプロファイリングと言い、各モジュールの挙動を実際に実行させることなくデータを収集ことである。プリプロファイリングを行うステップ4での処理をプリプロファイラと言う。   On the other hand, when determining that the source code is the source code, the structural analysis unit 11 performs preprocessing for executing preprocessing for compilation (step S3), and stacks the execution trace while reading the source code, The amount of computation at the module level such as a function after execution, information indicating what resources the function used (access source and access destination), the amount of data to be accessed, information indicating the module processing cycle, etc. Profiling for report output is performed (step S4), and data relating to the behavior of each module is collected without actually executing a plurality of modules constituting the evaluation target software 3. In the present embodiment, this preprocessing and profiling are referred to as preprofiling, and data is collected without actually executing the behavior of each module. The processing in step 4 for performing pre-profiling is called a pre-profiler.

本実施例におけるプリプロファイリングではソフトウェアそのもののアルゴリズムには関与しないため、モジュールの挙動に係るデータは、そのモジュールが使用すると想定されるハードウェアリソースを示す情報などである。プリプロファイリングで生成された情報はI/Oトラフィックリスト42として蓄積される。   Since pre-profiling in this embodiment does not participate in the algorithm of the software itself, the data related to the behavior of the module is information indicating hardware resources assumed to be used by the module. Information generated by pre-profiling is accumulated as an I / O traffic list 42.

また、ステップS4では、構造解析部11は、評価対象ソフトウェア3に対してツリー解析を行うことによって、関数名を用いてモジュールの特定を行い、モジュール間のI/Oトラフィックで関連付けられるモジュールツリー構造11aを生成する。モジュールツリー構造11aは、モジュールを特定する関数名とモジュール間のI/Oトラフィックに係る情報とを対応付けた構成グラフリスト41で表現される。   In step S4, the structure analysis unit 11 performs module analysis on the evaluation target software 3 to specify a module using a function name, and a module tree structure associated with I / O traffic between modules. 11a is generated. The module tree structure 11a is represented by a configuration graph list 41 in which function names that specify modules are associated with information related to I / O traffic between modules.

更に、構造解析部11は、リストパーサー機能を用いて構成グラフリスト41とI/Oトラフィックリスト42とからストーリーデータ43を作成するストーリーパーサーを実行する(ステップS5)。ストーリーデータ43は、構成グラフリスト41に基づく複数のモジュールが実行される処理手順毎に、実行するモジュールを特定する情報、そのモジュールの演算量、アクセス元、アクセス先、データ量、モジュール処理サイクルに基づいて分類したアクセスパターン等の、各モジュールの負荷量に係るパラメータ値を対応させたテーブルである。このようなストーリーデータ43によって、各モジュールが、どのくらいの演算量で、どこからどこへ、どのくらいの量のデータをどのようなアクセスパターンで実行するかが示される。   Further, the structure analysis unit 11 executes a story parser that creates the story data 43 from the configuration graph list 41 and the I / O traffic list 42 using the list parser function (step S5). The story data 43 includes information for identifying a module to be executed, a calculation amount of the module, an access source, an access destination, a data amount, and a module processing cycle for each processing procedure in which a plurality of modules based on the configuration graph list 41 are executed. It is the table which matched the parameter value which concerns on the load amount of each module, such as the access pattern classified based on. Such story data 43 indicates how much calculation amount each module executes, from where to where, how much data and in what access pattern.

次に、構造解析部11によってストーリーデータ43が作成されると、シナリオジェネレータ12は、ストーリーデータ43を参照して、モジュール毎に、負荷量に係るパラメータ値を持たない空のシナリオ原案モジュールとして予め用意してあるフラグメントパーツ12aに各パラメータ値を設定して仮想ソフトウェアモジュール12bを作成する(ステップS6)。   Next, when the story data 43 is created by the structure analysis unit 11, the scenario generator 12 refers to the story data 43 in advance as an empty scenario draft module that does not have a parameter value related to the load amount for each module. Each parameter value is set in the prepared fragment part 12a to create the virtual software module 12b (step S6).

つまり、パラメータ値が設定されたフラグメントパーツ12aは、評価対象ソフトウェア3のモジュールの挙動を示すアルゴリズム的な意味はなく、そのモジュールの実体が動作した場合と同等のアクセスパターン及び負荷量を持った仮想ソフトウェアモジュール12bとなる。各仮想ソフトウェアモジュール12bは、システムLSI7のCPUの演算量とI/Oパターンを示すアクセスパターンのみを挙動の実体とするため、特定のアルゴリズムやデバイスの影響を受けないハードウェア非依存のソフトウェアモジュールとすることができる。   That is, the fragment part 12a in which the parameter value is set has no algorithmic meaning indicating the behavior of the module of the evaluation target software 3, and the virtual part having the same access pattern and load amount as when the actual entity of the module operates. It becomes the software module 12b. Each virtual software module 12b uses only the CPU calculation amount and the access pattern indicating the I / O pattern of the system LSI 7 as the entity of the behavior, so that the hardware independent software module that is not affected by a specific algorithm or device can do.

仮想ソフトウェアモジュール12bの内部構造は本来目的とする挙動を行う内容ではないため、評価対象ソフトウェア3の関数名や引数などについては、評価対象ソフトウェア3の形態を引き継ぐものとする。   Since the internal structure of the virtual software module 12b is not intended to perform the intended behavior, the function name, arguments, etc. of the evaluation target software 3 are assumed to take over the form of the evaluation target software 3.

置換部13は、評価対象ソフトウェア3の構造解析後に得られたモジュールツリー構造11aに対して、シナリオジェネレータ12によって作成された仮想ソフトウェアモジュール12bで置き換えを行う(ステップS7)。実際にモジュールをそのまま置き換えるのではない。ソースコード上、関数名から、例えば、C言語系の記述であれば関数処理の開始を示す「{」と、終了を示す「}」の間を置換していくことによって、元の評価対象ソフトウェア3の関数名及び引数を維持する。計算結果による条件分岐処理については、従来の分岐予測手法を用いて、求める分岐比率に従った分岐を生成して置換する。   The replacement unit 13 replaces the module tree structure 11a obtained after the structural analysis of the evaluation target software 3 with the virtual software module 12b created by the scenario generator 12 (step S7). It does not actually replace the module as it is. In the source code, for example, in the case of a C language description, by replacing between “{” indicating the start of function processing and “}” indicating the end, the original evaluation target software 3 function names and arguments are maintained. For conditional branch processing based on the calculation result, a branch according to a desired branch ratio is generated and replaced using a conventional branch prediction method.

一方、仮想化レベル情報18にはモジュール選択部14を用いたユーザのモジュールの選択に係る情報が格納されており、置換を行わないモジュールが存在する場合には、そのモジュールに対する仮想ソフトウェアモジュール12bによる置き換えは抑止される。また、仮想化レベル情報18には、画像処理装置のコンフィグ情報なども含まれる。コンフィグ情報は、所定フレーム数単位で取り込める画素数、1ファイル当たりのアクセスデータ量、表示解像度など示す。   On the other hand, the virtualization level information 18 stores information related to the user's module selection using the module selection unit 14, and if there is a module that is not to be replaced, the virtual software module 12b for that module Replacement is suppressed. The virtualization level information 18 also includes configuration information of the image processing apparatus. The configuration information indicates the number of pixels that can be captured in units of a predetermined number of frames, the amount of access data per file, the display resolution, and the like.

置換部13による処理後、仮想ソフトウェア生成部15は、モジュールツリー構造11aに対して仮想ソフトウェアモジュール12bで置き換えたモジュールツリー構造15aを用いて、評価対象ハードウェア2のシミュレーション環境で動作する実際のソフトウェアコードを出力する(ステップS8)。   After the processing by the replacement unit 13, the virtual software generation unit 15 uses the module tree structure 15a in which the module tree structure 11a is replaced with the virtual software module 12b, and the actual software that operates in the simulation environment of the evaluation target hardware 2 A code is output (step S8).

次に、ユーザは、ESLツール20を用いて評価対象ハードウェア2の抽象化ハードウェア21aを作成した後、抽象化ハードウェア21aと仮想化処理部10から出力された仮想ソフトウェア21bとで成るESLモデル21を、ESLツール20上でシミュレーションすることによって検証して(ステップS9)、ソフト要求仕様を満たすか否かを判断する(ステップS10)。ユーザが、ソフト要求仕様を満たすと判断した場合には評価が完了したと判断する(ステップS12)。   Next, the user creates the abstract hardware 21a of the evaluation target hardware 2 using the ESL tool 20, and then the ESL composed of the abstract hardware 21a and the virtual software 21b output from the virtualization processing unit 10. The model 21 is verified by simulating on the ESL tool 20 (step S9), and it is determined whether or not the software requirement specification is satisfied (step S10). When it is determined that the user satisfies the software requirement specification, it is determined that the evaluation is completed (step S12).

一方、ソフト要求仕様を満たさないと判断した場合には、ユーザはストーリーデータ43を表示ユニット33に表示させ、項目の値を変更して調整する(ステップS11)。又は、構成グラフリスト41とI/Oトラフィックリスト42とに格納されている情報を変更する。構造解析部11は、構成グラフリスト41又はI/Oトラフィックリスト42の変更に応じてリストパーサーを実行してストーリーデータ43を更新する。以後上述したような処理を繰り返すことによって、評価対象ソフトウェア3をどのように改善すべきかを検証することができる。   On the other hand, if it is determined that the software requirement specification is not satisfied, the user displays the story data 43 on the display unit 33 and changes and adjusts the value of the item (step S11). Alternatively, the information stored in the configuration graph list 41 and the I / O traffic list 42 is changed. The structure analysis unit 11 updates the story data 43 by executing a list parser in response to a change in the configuration graph list 41 or the I / O traffic list 42. Thereafter, it is possible to verify how the evaluation target software 3 should be improved by repeating the processing described above.

このように、ユーザは、ハードウェアシミュレータとしてのESLツール20を用いて、評価対象ハードウェア2の挙動をシミュレートすると共に評価対象ソフトウェア3の挙動を分析することができる。   In this manner, the user can simulate the behavior of the evaluation target hardware 2 and analyze the behavior of the evaluation target software 3 using the ESL tool 20 as a hardware simulator.

次に、上述したシミュレータ装置100を用いた検証例について説明する。例えば、システムLSI7として動画及び静止画を撮影するために画像処理部をSoC化した画像処理装置を検証する例を説明する。図4は、ESLツール20を用いて作成した画像処理装置の抽象化ハードウェア21aの例を示す図である。図4において、ESLツール20を用いて作成された抽象化ハードウェア21aでは、画像処理装置は、この装置の中心となるプロセッサとしてのデバイスAと画像処理を補助するアクセラレータとしてのデバイスBとを内蔵した画像処理SoC6と、プロセッサ動作時に使用されるメモリとしてのデバイスCと、画像を取り込むカメラ64としてのデバイスDと、データを保存するメモリカード65としてのデバイスEと、表示用のLCDパネル66としてのデバイスFと、その他汎用に用いられる汎用インタフェースとしてのデバイスGとで構成される。図中、抽象化ハードウェア21aは各デバイスAからGの機能を表現するロジックを持たせたブロックで表現される。   Next, a verification example using the simulator device 100 described above will be described. For example, an example will be described in which an image processing apparatus in which the image processing unit is SoCed to capture moving images and still images as the system LSI 7 is verified. FIG. 4 is a diagram illustrating an example of the abstract hardware 21 a of the image processing apparatus created using the ESL tool 20. In FIG. 4, in the abstract hardware 21 a created using the ESL tool 20, the image processing apparatus includes a device A as a processor that is the center of this apparatus and a device B as an accelerator that assists image processing. Image processing SoC 6, device C as a memory used when the processor operates, device D as a camera 64 for capturing an image, device E as a memory card 65 for storing data, and an LCD panel 66 for display Device F and device G as a general-purpose interface used for other general purposes. In the figure, the abstract hardware 21a is represented by a block having logic for representing the functions of the devices A to G.

ユーザは、ESLツール20を用いて作成した画像処理装置の抽象化ハードウェア21aを表示ユニット33に表示させ、動画及び静止画を処理する装置として大画面化を要求した場合に画像処理SoC6に求められる仕様を探求していく。   The user displays the abstract hardware 21a of the image processing apparatus created using the ESL tool 20 on the display unit 33, and requests the image processing SoC 6 when requesting a large screen as an apparatus for processing moving images and still images. We will explore the specifications that can be used.

図5は、画像処理装置に係る評価対象ソフトウェア3のモジュールツリー構造11aの例を示す図である。図5において、画像処理装置6に係る評価対象ソフトウェア3が、カメラドライバとして機能するモジュール1と、画像前処理として機能するモジュール2と、アクセラレータドライバとして機能するモジュール3と、データ後処理として機能するモジュール4と、メモリカードドライバとして機能するモジュール5と、LCDパネルドライバとして機能するモジュール6と、DSPファームウェアとして機能するモジュール7とを有し、モジュール間のI/Oトラフィックを示す接続によってモジュールツリー構造11aを構成する。   FIG. 5 is a diagram illustrating an example of the module tree structure 11a of the evaluation target software 3 according to the image processing apparatus. In FIG. 5, the evaluation target software 3 according to the image processing apparatus 6 functions as a module 1 that functions as a camera driver, a module 2 that functions as image preprocessing, a module 3 that functions as an accelerator driver, and data post-processing. A module tree structure having a module 4, a module 5 functioning as a memory card driver, a module 6 functioning as an LCD panel driver, and a module 7 functioning as a DSP firmware, and connecting the modules to indicate I / O traffic 11a is configured.

仮想化処理部10へ入力される評価対象ソフトウェア3がソースコードの場合、構造解析部11によってモジュールツリー構造11aが作成される。UMLなどによる仕様書図が入力された場合にはモジュールツリー構造11aを作成するのに必要なソースコードの解析が簡略化される。   When the evaluation target software 3 input to the virtualization processing unit 10 is source code, the structure analysis unit 11 creates a module tree structure 11a. When a specification drawing by UML or the like is input, the analysis of the source code necessary for creating the module tree structure 11a is simplified.

図6は、評価対象ソフトウェア3の処理フローの例を示す図である。図6において、構造解析部11のプリプロファイリングによって解析された処理フローの結果を示し、処理フローにおける処理毎に図5に示すモジュールを便宜的に対応させて示している。   FIG. 6 is a diagram illustrating an example of a processing flow of the evaluation target software 3. In FIG. 6, the result of the processing flow analyzed by the pre-profiling of the structure analysis unit 11 is shown, and the module shown in FIG. 5 is shown correspondingly for each processing in the processing flow.

処理P1において、モジュール1のカメラドライバがデバイスDのカメラからデバイスCのメモリへの連続データ取り込みを行うと、処理P2において、デバイスAのプロセッサ内部にて演算が実行されてモジュール2の画像前処理が行われ、その処理によってデバイスCのメモリへのランダムアクセスが発生する。   In process P1, when the camera driver of module 1 captures continuous data from the camera of device D to the memory of device C, in process P2, an operation is executed within the processor of device A, and image preprocessing of module 2 is performed. As a result, random access to the memory of the device C occurs.

前処理が終了すると、処理P3において、モジュール6のパネルドライバがデバイスFのLCDパネルへデータを転送して画像を表示させる。処理P4において、撮影状態であるか否かが判断され、撮影状態でない場合は処理P1へと戻り上記同様の処理が繰り返される。撮影状態である場合、処理P5において、モジュール3のアクセラレータドライバがデバイスCのメモリからデバイスBのアクセラレータへとデータを転送する。   When the preprocessing is completed, in process P3, the panel driver of the module 6 transfers data to the LCD panel of the device F to display an image. In process P4, it is determined whether or not the camera is in the shooting state. If the camera is not in the shooting state, the process returns to process P1 and the same process as described above is repeated. In the photographing state, the accelerator driver of the module 3 transfers data from the memory of the device C to the accelerator of the device B in process P5.

デバイスBのアクセラレータへのデータ転送に応じて、処理P6において、デバイスAのプロセッサ内部にて演算が実行されてモジュール4のデータ後処理が行われ、その処理によってデバイスCのメモリへのランダムアクセスが発生する。   In accordance with the data transfer to the accelerator of the device B, in the process P6, an operation is executed in the processor of the device A and the data post-processing of the module 4 is performed, and the random access to the memory of the device C is performed by the process. appear.

その後、処理P7において、モジュール5のメモリカードドライバによってデバイスCのメモリからデバイスEのメモリカードへのランダムアクセスがなされ動画又は静止画を格納する。   Thereafter, in process P7, the memory card driver of the module 5 performs random access from the memory of the device C to the memory card of the device E, and stores a moving image or a still image.

このようにプリプロファイリングによって、各処理P1からP7においてどのような挙動がソースコードで記述されているかが解析され、出力される。   In this way, by pre-profiling, what behavior is described in the source code in each of the processes P1 to P7 is analyzed and output.

図7は、構造解析結果に基づいて作成されるストーリーデータ43の例を示す図である。図7において、ストーリーデータ43は、モジュール番号、モジュール名、演算量、アクセス元、アクセス先、データ量、アクセスパターン等の項目で構成されるテーブルである。モジュール番号は、図5に示すモジュールツリー構造11aの作成時に生成されたモジュール番号に相当する。演算量によって負荷の程度を示している。モジュールがデータ転送を行う場合には、構成グラフリスト41が参照され、データが転送されるアクセス元とアクセス先とがデバイス名(又はデバイスA、B、C...等のデバイスを特定できるデバイス識別情報)で示される。   FIG. 7 is a diagram illustrating an example of the story data 43 created based on the structural analysis result. In FIG. 7, story data 43 is a table composed of items such as a module number, a module name, a calculation amount, an access source, an access destination, a data amount, and an access pattern. The module number corresponds to the module number generated when the module tree structure 11a shown in FIG. 5 is created. The degree of load is indicated by the amount of calculation. When the module performs data transfer, the configuration graph list 41 is referred to, and the device from which the access source and the access destination to which the data is transferred can specify the device name (or device A, B, C, etc.) Identification information).

データ量はアクセス元からアクセス先へのデータ転送量を示す。仮想化レベル情報18に格納されているコンフィグ情報などに基づいて決定される。また、演算量、アクセスパターンは、プリプロファイラ(ステップS4)のプロファイリングによるサイクル測定に基づいて決定される。   The data amount indicates the data transfer amount from the access source to the access destination. This is determined based on the configuration information stored in the virtualization level information 18. The calculation amount and the access pattern are determined based on cycle measurement by profiling of the pre-profiler (step S4).

アクセスパターンは、アクセス先に対して連続であるのか、断続であるのか、ランダムであるのかを分類して示している。「連続」に分類されるアクセスパターンは、連続したアドレス空間に対してアクセスを行うパターンであることを示す。「断続」に分類されるアクセスパターンは、アドレス空間において不連続であるが、一定の間隔を持ちながらアクセスを行うパターンであることを示す。「ランダム」に分類されるアクセスパターンは、「連続」及び「断続」のいずれのアクセスパターンにも分類されない不連続で任意のアドレスにアクセスを行うパターンであることを示す。   The access pattern indicates whether the access destination is continuous, intermittent, or random. An access pattern classified as “continuous” indicates a pattern for accessing a continuous address space. The access pattern classified as “intermittent” indicates that the access pattern is discontinuous in the address space but is accessed while having a constant interval. The access pattern classified as “random” indicates a pattern in which an arbitrary address is accessed in a discontinuous manner that is not classified as either “continuous” or “intermittent”.

図8は、画像処理装置のESLモデル21の例を示す図である。図8に示すシステムLSI7を抽象化したESLモデル21は、前述したように抽象化ハードウェア21aと仮想ソフトウェア21bとで構成される。仮想ソフトウェア21bを構成するモジュール1から7の実体は、演算量とデータ量とアクセスパターンとによる負荷を与えることのみを目的としている。   FIG. 8 is a diagram illustrating an example of the ESL model 21 of the image processing apparatus. The ESL model 21 that abstracts the system LSI 7 shown in FIG. 8 includes the abstract hardware 21a and the virtual software 21b as described above. The entities of the modules 1 to 7 constituting the virtual software 21b are only intended to give a load depending on the calculation amount, the data amount, and the access pattern.

従って、ストーリーデータ43に示されるように、モジュール1は連続アクセスで257MB/sのデータ量の負荷を与えるソースコードである。モジュール2は10MBのランダムアクセス毎に10MIPSの演算量の負荷を与えるソースコードである。モジュール3は10MBのランダムアクセス毎に1MIPSの演算量の負荷を与えるソースコードである。モジュール4は1MBのランダムアクセス毎に10MIPSの演算量の負荷を与えるソースコードである。モジュール5は1MBの断続アクセスの負荷を与える。モジュール6は28MB/sの連続アクセスの負荷を与えるソースコードである。モジュール7は1MBのランダムアクセスの負荷を与えるソースコードである。この例では、仮想ソフトウェア21bを構成する全モジュールを仮想化した場合を示しているが、1以上のモジュールを仮想化せず、そのモジュールの挙動を実現するソースコードそのものを含めてもよい。   Therefore, as shown in the story data 43, the module 1 is a source code that gives a load of a data amount of 257 MB / s in continuous access. Module 2 is a source code that gives a load of 10 MIPS calculation amount for every 10 MB of random access. Module 3 is a source code that gives a load of 1 MIPS calculation amount for every 10 MB of random access. Module 4 is a source code which gives a load of 10 MIPS calculation amount for every 1 MB of random access. Module 5 provides a 1MB intermittent access load. Module 6 is source code which gives a load of continuous access of 28 MB / s. Module 7 is source code that gives a load of 1 MB of random access. In this example, the case where all the modules constituting the virtual software 21b are virtualized is shown, but one or more modules may not be virtualized and the source code itself for realizing the behavior of the modules may be included.

次に、ユーザがESL20を操作しつつ検証する例について図9及び図10で説明する。例えば、1世代前の製品に対して画像サイズを2倍にすることによって性能を2倍とする製品を企画した場合について説明する。図9(A)には、1世代前のハードウェア構成に対して2倍の画像サイズの属性が与えられ抽象化された抽象化ハードウェア22aを示す。ESL20を用いてこのような抽象化ハードウェア22aを評価する際に、ユーザは、1世代前のソフトウェアを評価対象ソフトウェア3として仮想化処理部10へ入力して仮想ソフトウェア21bを作成し、画像サイズを2倍にしつつも処理速度を保つためにシステムクロックを2倍するコンフィグ設定を行う。その値が仮想化レベル18に格納される。ユーザは、抽象化ハードウェア22aと仮想ソフトウェア21bとで成るESLモデル21でシミュレーションを実行する。   Next, an example in which the user performs verification while operating the ESL 20 will be described with reference to FIGS. 9 and 10. For example, a case where a product that doubles the performance by doubling the image size with respect to the product of the previous generation is planned will be described. FIG. 9A shows an abstract hardware 22a that is given an attribute having an image size that is twice that of the hardware configuration of the previous generation. When such an abstract hardware 22a is evaluated using the ESL 20, the user inputs the previous generation software as the evaluation target software 3 to the virtualization processing unit 10 to create the virtual software 21b, and the image size. In order to maintain the processing speed while doubling the number of times, a configuration setting for doubling the system clock is performed. The value is stored in the virtualization level 18. The user executes a simulation with the ESL model 21 including the abstract hardware 22a and the virtual software 21b.

ESL20によるシミュレーションの結果は、例えば図9(B)のように表示ユニット33に表示される。ユーザは、シミュレーションの結果を検証すると、目標性能を達成することが分かるものの、必要最小限のクロックでESLモデル21をシミュレーションさせ、図9(B)のシミュレーションのログ表示を参照してデバイスF及びEに係るシミュレーション部分27を解析すると、デバイスEのメモリカードへのアクセスがデバイスFのLCDパネルの動作をブロックする現象が起こることが予測できた。この場合、デバイスEのメモリカードにアクセスしている間、デバイスFのLCDパネルに表示されている画像が一瞬消えてしまう現象が発生してしまう。このことから、ユーザは、要求性能を満たすカメラ機能を実現するために必要な性能を見積もったつもりであったが、単純にシステムクロックを2倍にしただけでは不十分である等、の判断をすることができる。   The result of the simulation by the ESL 20 is displayed on the display unit 33 as shown in FIG. 9B, for example. Although the user can verify that the target performance is achieved by verifying the simulation result, the user simulates the ESL model 21 with the minimum necessary clock, and refers to the log display of the simulation in FIG. When the simulation portion 27 related to E is analyzed, it can be predicted that the access to the memory card of the device E will block the operation of the LCD panel of the device F. In this case, a phenomenon occurs in which the image displayed on the LCD panel of the device F disappears for a moment while accessing the memory card of the device E. From this, the user intends to estimate the performance necessary to realize the camera function that satisfies the required performance, but simply doubling the system clock is not sufficient. can do.

目標性能を満足するためにクロックを更にN倍にすると消費電力が大きくなるため、単純にクロックのみを大きくしていくわけにはいかない等を考慮しつつ、ユーザは、ESLツール20上でハードウェア構成を組み替えて、データのアクセス経路を整理した抽象化ハードウェア22aを構築しなおす等の考察を行う。再構築の観点としては、例えば図10(A)に示す抽象化ハードウェア22a’ように、ユーザは、高速大量・連続アクセスするデバイスDのカメラ及びデバイスFのLCDパネルと、少量データや断続的にアクセスするデバイスEのメモリカードと、デバイスBのアクセラレータとへのデータアクセス制御が画像処理SoC6内部で分割されるようにバス等の組み合わせの変更及び配置変更によるアーキテクチャを構築する。また、デバイスBのアクセラレータはメモリ呼び出しをするものではなく、デバイスAのプロセッサからパイプライン式にデータを流し込めるようにデバイスhのFIFOを追加する変更を行い、これら内部構成変更に伴い周辺の接続形態も変更する。   If the clock is further multiplied by N times to satisfy the target performance, the power consumption increases, so that the user cannot easily increase only the clock. Consider reconfiguring the abstract hardware 22a in which the data access path is rearranged by reconfiguring the configuration. From the viewpoint of reconstruction, for example, as shown in abstract hardware 22a ′ shown in FIG. 10A, the user can perform high-speed, large-scale and continuous access to device D's camera and device F's LCD panel, and small amounts of data and intermittently. The architecture is constructed by changing the combination of buses and changing the arrangement so that the data access control to the memory card of the device E accessing the device and the accelerator of the device B is divided within the image processing SoC 6. In addition, the accelerator of device B does not make a memory call, but changes are made to add the FIFO of device h so that data can be flowed in from the processor of device A in a pipelined manner. Change the form.

このように再構築した抽象化ハードウェア22a’でシミュレーションを行う場合であっても、評価対象ソフトウェア3のソースコードそのものを変更することなく、既に作成してある仮想ソフトウェア21bをそのまま用いて再シミュレーションを行うことができる。つまり、上述した再構築の例ではハードウェアの構成上、デバイスhのFIFOをデバイスAのプロセッサとデバイスBのアクセラレータとの間に追加配置したが、デバイスAのプロセッサとデバイスBのアクセラレータとの間のソフトウェアの処理の流れ、及び、各モジュールの負荷に変更を及ぼすものではないためである。   Even when the simulation is performed with the abstract hardware 22a ′ reconstructed in this way, re-simulation is performed by using the already created virtual software 21b without changing the source code itself of the evaluation target software 3. It can be performed. That is, in the above-described reconstruction example, the FIFO of the device h is additionally arranged between the processor of the device A and the accelerator of the device B due to the hardware configuration, but between the processor of the device A and the accelerator of the device B. This is because the processing flow of the software and the load of each module are not changed.

仮想ソフトウェア21bでは負荷の程度でソフトウェアの挙動を表現するため、改善されたハードウェアのアーキテクチャで同じ仮想ソフトウェア21bで評価することができる。従って、アーキテクチャを探求するための評価対象ソフトウェア3の改善毎に実装して検証し直すといった工数を大幅に削減することができる。   Since the virtual software 21b expresses the behavior of the software by the degree of load, it can be evaluated by the same virtual software 21b with an improved hardware architecture. Therefore, it is possible to greatly reduce the man-hours required to implement and re-verify every time the evaluation target software 3 for searching the architecture is improved.

上記再構築によるシミュレーション結果を示すログ(図10(B))を詳細に検証して、デバイスDのメモリのアクセス部にはアクセス形跡を示すログを確認する等によって、デバイスEのメモリカードへのアクセスが分散している状態を評価でき、クロックをおさえつつ安定したシステムLSI7を構築できることを、評価対象ソフトウェア3の実体(ソースコード又はロードモジュール)をポーティング実装することなくシステムLSI7の挙動を確認することができる。   The log (FIG. 10B) indicating the simulation result by the above reconstruction is verified in detail, and the log indicating the access trace is confirmed in the memory access unit of the device D. The behavior of the system LSI 7 can be confirmed without porting and mounting the entity (source code or load module) of the evaluation target software 3 so that a stable system LSI 7 can be constructed while the access is dispersed and the clock is suppressed. be able to.

その他の検証として、システムクロックを2倍にしてデバイスAのプロセッサの性能が2倍にならないことを予測した場合、デバイスCのメモリを増量することでデバイスAのプロセッサの処理速度が1.5倍であってもシステムLSI7全体の性能が2倍にできる可能性を容易に検証することができる。   As another verification, when it is predicted that the performance of the processor of the device A is not doubled by doubling the system clock, the processing speed of the processor of the device A is increased 1.5 times by increasing the memory of the device C. Even so, the possibility that the performance of the entire system LSI 7 can be doubled can be easily verified.

また、既存のハードウェア及びソフトウェアを再構築してカメラをテレビ信号受信機に置き換えた別製品を開発するような場合、本来カメラから取り込んだ画像処理とテレビ信号を取り込んで行う画像処理とはソフトウェア上の処理において異なるロジックであるが、デバイスAのプロセッサへの負荷の程度が同様である場合、接続されるデバイスの特性に依存しない仮想ソフトウェア21bをそのまま用いて検証することが可能となる。つまり、仮想ソフトウェア21bを生成する元となった動画又は静止画を撮影する装置に搭載されるソフトウェアを改造する以前の段階において早期に検証でき改造すべき項目をソフトウェア開発者へフィードバックすることができる。同時に、抽象化ハードウェア22aのデバイスDのカメラをテレビ信号受信機に変更して検証するのみであるので、実ハードウェアの実装を待つことなくテレビ信号受信機に変更された抽象化ハードウェア22aをシミュレーションし、その結果をハードウェア開発者へフィードバックすることができる。この場合、デバイスを特定するための識別情報(例えば「デバイスD」)は変更せずデバイスの特性がテレビ信号受信機に変更すればよく、又は、ストーリーデータ43のアクセス元又はアクセス先の値を変更すればよく、また、仮想ソフトウェア21bにおけるモジュール間のI/Oトラフィックにも変更がないことによる。   In addition, when developing another product in which the existing hardware and software are rebuilt and the camera is replaced with a TV signal receiver, image processing originally performed from the camera and image processing performed by acquiring the TV signal are software. Although the logic is different in the above process, when the degree of load on the processor of the device A is the same, the virtual software 21b that does not depend on the characteristics of the connected device can be used for verification. That is, it is possible to verify at an early stage before remodeling the software installed in the apparatus that captures the moving image or still image from which the virtual software 21b is generated, and to feed back the items to be remodeled to the software developer. . At the same time, since only the camera of the device D of the abstract hardware 22a is changed to the TV signal receiver and verified, the abstract hardware 22a changed to the TV signal receiver without waiting for actual hardware implementation. Can be simulated and the results can be fed back to the hardware developer. In this case, the identification information (for example, “device D”) for specifying the device is not changed, and the characteristic of the device may be changed to the television signal receiver, or the access source or access destination value of the story data 43 is changed. This is because the I / O traffic between modules in the virtual software 21b is not changed.

仮想化ソフトウェア21bを用いた場合の開発サイクルについて図11で説明する。図11は、開発サイクルを示す図である。図11中、実線で示されるフローが本発明に係る仮想化ソフトウェア21bを用いた場合の開発サイクルである。図11において、開発製品としてのシステムLSI7に対する要求仕様を作成し(ステップS81)、システム構成を設計する(ステップS82)。設計されたシステム構成に基づいてハードウェア設計を行う(ステップS83)。   A development cycle when using the virtualization software 21b will be described with reference to FIG. FIG. 11 is a diagram showing a development cycle. In FIG. 11, the flow indicated by a solid line is a development cycle when the virtualization software 21b according to the present invention is used. In FIG. 11, a required specification for the system LSI 7 as a developed product is created (step S81), and the system configuration is designed (step S82). Hardware design is performed based on the designed system configuration (step S83).

ハードウェア設計に基づいて実ハードウェアの開発及び実装を行う(ステップS83−2)。一方でハードウェア設計に基づく抽象化ハードウェア21aと仮想ソフトウェア21bとによるESLモデルをシミュレータ装置100に実装して、ESLツール20によってハードウェア検証を行い(ステップS84)、ハード要求仕様を満たすか否かを検証する(ステップS85)。   Based on the hardware design, actual hardware is developed and implemented (step S83-2). On the other hand, an ESL model based on the abstract hardware 21a and the virtual software 21b based on the hardware design is mounted on the simulator apparatus 100, and hardware verification is performed by the ESL tool 20 (step S84). Is verified (step S85).

ユーザがハード要求仕様を満たさないと判断した場合、ステップS84に戻り抽象化ハードウェア21aを変更してESLモデルを更新し、ステップS85にて再度ハード要求仕様を満たすか否かを検証する処理を繰り返す。また、検証結果をステップS83−2における実ハードウェア(評価対象ハードウェア2)の開発に反映させる。ステップS83−2と、ステップS84及び85とは、平行して行われ実ハードウェアの開発及びシステムLSI7としての実装が行われる。   When the user determines that the hardware requirement specification is not satisfied, the process returns to step S84 to change the abstract hardware 21a, update the ESL model, and verify whether the hardware requirement specification is satisfied again in step S85. repeat. Further, the verification result is reflected in the development of the actual hardware (evaluation target hardware 2) in step S83-2. Step S83-2 and steps S84 and 85 are performed in parallel, and development of actual hardware and mounting as the system LSI 7 are performed.

ハード要求仕様を満たすと判断した場合、仮想ソフトウェア21bを用いてソフトウェア検証を行い(ステップS86)、ソフト要求仕様を満たすか否かを判断する(ステップS87)。ユーザがソフト要求仕様を満たさないと判断した場合、ストーリーデータ43を変更してステップS86へ戻り再度ソフトウェア検証をして、ステップS87にて再度ソフト要求仕様を満たすか否かを検証する処理を繰り返す。一方で、検証結果を反映したソフト開発を行う。   If it is determined that the hardware requirement specification is satisfied, software verification is performed using the virtual software 21b (step S86), and it is determined whether the software requirement specification is satisfied (step S87). When the user determines that the software requirement specification is not satisfied, the story data 43 is changed, the process returns to step S86, the software verification is performed again, and the process of verifying again whether the software requirement specification is satisfied is repeated in step S87. . On the other hand, we will develop software that reflects the verification results.

ソフト要求仕様を満たすと判断した場合、実ハードウェア(抽象化ハードウェア21aの検証結果が反映された評価対象ハードウェア2)が実装されているシステムLSI7に実ソフトウェア(仮想ソフトウェア21bの検証結果が反映された評価対象ソフトウェア3)を移植し(ステップS88)、システムLSI7を実機上で検証する(ステップS89)。システムLSI7としての要求仕様を満たすか否かを判断し(ステップS90)、要求仕様を満たすと判断した場合、システムLSI7の開発を完了する(ステップS91)。一方、システムLSI7としての要求仕様を満たさないと判断した場合、ステップS82へ戻りシステムLSI7のシステム構成の設計を見直し、上記同様の処理を繰り返す。   When it is determined that the software requirement specification is satisfied, the actual software (the verification result of the virtual software 21b is included in the system LSI 7 on which the actual hardware (the evaluation target hardware 2 reflecting the verification result of the abstract hardware 21a) is mounted. The reflected evaluation target software 3) is ported (step S88), and the system LSI 7 is verified on the actual machine (step S89). It is determined whether or not the required specifications for the system LSI 7 are satisfied (step S90). If it is determined that the required specifications are satisfied, the development of the system LSI 7 is completed (step S91). On the other hand, when it is determined that the required specifications as the system LSI 7 are not satisfied, the process returns to step S82, the design of the system configuration of the system LSI 7 is reviewed, and the same processing as described above is repeated.

図11において、従来の開発サイクルでは、ソフトウェア検証(ステップS86)を行うためにはハード要求仕様を満たした時点(ステップS85)で評価対象ソフトウェア3を移植し(点線で示すステップS85−2)する必要があった。ソフトウェア検証後にソフト要求仕様を満たさないと判断した場合には、評価対象ソフトウェア3を検証結果に基づいて改造して再度移植作業を行って(ステップS85−2)、ソフトウェア検証(ステップS87)及びソフト要求仕様を満たすか否かの判断(ステップS87)を繰り返す必要があった。   In FIG. 11, in the conventional development cycle, in order to perform the software verification (step S86), the evaluation target software 3 is transplanted (step S85-2 indicated by a dotted line) when the hardware requirement specification is satisfied (step S85). There was a need. If it is determined that the software requirement specification is not satisfied after the software verification, the evaluation target software 3 is remodeled based on the verification result, and the porting operation is performed again (step S85-2), the software verification (step S87) and the software It was necessary to repeat the determination of whether or not the required specifications are satisfied (step S87).

このように従来の開発サイクルでは、評価対象ソフトウェア3に問題があるとその問題を解決してからでないと、ソフトウェア検証を進めることができなかった。一方、本発明に係るシミュレータ装置100を用いた場合、ハードウェアを検証するESLツール20上で評価対象ソフトウェア3の検証を継続して行えることにより、少ない改造及び移植回数でより多くの検証を一度に行うことが可能となる。   As described above, in the conventional development cycle, if there is a problem in the evaluation target software 3, the software verification cannot proceed unless the problem is solved. On the other hand, when the simulator device 100 according to the present invention is used, the verification target software 3 can be continuously verified on the ESL tool 20 for verifying hardware, so that more verifications can be performed once with less modification and transplantation. Can be performed.

次に、仮想化レベル毎におけるベンチマークで性能評価をした場合の傾向について図12及び図13で説明する。図12は、仮想化レベルの例を示す図である。図12では、例えば、評価対象ソフトウェア3がGUI(Graphical User Interface)3A、処理エンジン3B、デバイスドライバ3Cで構成される場合の仮想化レベルが例示されている。評価対象ソフトウェア3はOS(Operating System)4上で動作させ、API(Application Program Interface)を介してベンチマークアプリで性能評価される。   Next, a tendency when performance evaluation is performed with a benchmark for each virtualization level will be described with reference to FIGS. 12 and 13. FIG. 12 is a diagram illustrating an example of the virtualization level. In FIG. 12, for example, a virtualization level in the case where the evaluation target software 3 is configured by a GUI (Graphical User Interface) 3A, a processing engine 3B, and a device driver 3C is illustrated. The evaluation target software 3 is operated on an OS (Operating System) 4 and performance is evaluated with a benchmark application via an API (Application Program Interface).

図12(A)は、評価対象ソフトウェア3のGUI3A、処理エンジン3B、デバイスドライバ3Cを仮想ソフトウェアモジュール7a、編集後仮想ソフトウェアモジュール7b、仮想ソフトウェアモジュール7cで置き換えて全て仮想化したレベルを示している。ここで、編集後仮想ソフトウェアモジュール7bは、ソフト要求仕様を満たすためにストーリーデータ43を編集後に置き換えられた仮想ソフトウェアモジュールであることを示す。図12(B)は、デバイスドライバ3Cを仮想ソフトウェアモジュールに置き換えなかった場合の凡そ50%の仮想化レベルを示している。また、図12(C)は、全てを評価対象ソフトウェア3の実体(ソースコード)のままとし、仮想ソフトウェアモジュールで置き換えなかった実ソフトウェア(0%の仮想化レベル)を示している。   FIG. 12A shows a level in which the GUI 3A, the processing engine 3B, and the device driver 3C of the evaluation target software 3 are replaced with the virtual software module 7a, the edited virtual software module 7b, and the virtual software module 7c, and all are virtualized. . Here, the edited virtual software module 7b indicates that the story data 43 is replaced after editing in order to satisfy the software requirement specification. FIG. 12B shows a virtualization level of approximately 50% when the device driver 3C is not replaced with a virtual software module. FIG. 12C shows the actual software (0% virtualization level) that is not replaced with the virtual software module, all of which remain as the evaluation target software 3 (source code).

図13は、仮想化レベル毎のベンチマークによる評価の傾向を示すグラフ図である。図13において、グラフの縦軸はベンチマークでの評価による性能の高さを示す点数を示し、グラフの横軸はベンチマークのテスト番号を示し、便宜的に要求される性能の低いものから高いものへと並べて示している。図13中、折れ線9aが図12(A)の全仮想化のレベルに相当し、折れ線9bが図12(B)の50%仮想化のレベルに相当し、折れ線9cが図12(C)の実ソフトウェアのレベルに相当し、実測値を示す。   FIG. 13 is a graph showing a tendency of evaluation based on a benchmark for each virtualization level. In FIG. 13, the vertical axis of the graph indicates the score indicating the high performance by the benchmark evaluation, and the horizontal axis of the graph indicates the benchmark test number, from low to high performance required for convenience. Are shown side by side. In FIG. 13, the broken line 9a corresponds to the level of all virtualization in FIG. 12A, the broken line 9b corresponds to the 50% virtualization level in FIG. 12B, and the broken line 9c corresponds to the level of FIG. It corresponds to the actual software level and shows the actual measurement value.

図13のグラフから分かるように、全仮想化の折れ線9aはテスト全般において実ソフトウェアの折れ線9c及び50%仮想化の折れ線9bより低めの評価点となるが、概ね実ソフトウェアの折れ線9cと同様の傾向を示す。従って、ソフト開発の初期段階で評価対象ソフトウェア3の完成後の特性傾向を把握するには十分である。   As can be seen from the graph of FIG. 13, the total virtualization line 9a is a lower evaluation score than the actual software line 9c and the 50% virtualization line 9b in the entire test, but is almost the same as the actual software line 9c. Show the trend. Therefore, it is sufficient to grasp the characteristic tendency after completion of the evaluation target software 3 in the initial stage of software development.

このように、ハードウェア設計で部品の入れ替えや構成変更に応じて、デバイスドライバが変更した場合、デバイスドライバの負荷の程度に係るストーリーデータ43を変更するのみで、デバイスドライバのソースコードの変更やその変更による評価対象ソフトウェア3全体の移植作業を行わずに、ソフト開発の初期段階でソフト要求仕様を検証することができる。また、異なる処理アルゴリズムを持った未実装の処理エンジンやGUIに入れ替えるソフト設計となった場合、これらに相当する既存のモジュールの負荷の程度に応じた仮想ソフトウェアモジュールで、ソフト開発の初期段階でソフト要求仕様を検証することができる。更に、ソフトウェアが設計の段階であり実装できない状態であっても、ハードウェアの全体のスループット、挙動などの評価を、既存のソフトウェアを評価対象ソフトウェア3として利用して置き換えた仮想ソフトウェア21bを用いて行うことができる。   As described above, when the device driver is changed in accordance with the replacement of the parts or the configuration change in the hardware design, the source code of the device driver can be changed only by changing the story data 43 related to the degree of the load of the device driver. The software requirement specification can be verified at the initial stage of software development without performing the porting operation of the entire evaluation target software 3 due to the change. In addition, when the software design is replaced with an unimplemented processing engine or GUI with a different processing algorithm, it is a virtual software module corresponding to the degree of load of the existing module corresponding to these, and software at the initial stage of software development The required specifications can be verified. Further, even when the software is in the design stage and cannot be implemented, the virtual software 21b is used in which the evaluation of the overall throughput, behavior, etc. of the hardware is replaced by using the existing software as the evaluation target software 3. It can be carried out.

以上の説明に関し、更に以下の項を開示する。
(付記1)
ソフトウェアを構成する複数のモジュール間のデータ入出力を解析してモジュールツリー構造を作成するモジュールツリー構造作成手段と、
前記モジュール毎に負荷の程度を示す負荷テーブルを作成する負荷テーブル作成手段と、
前記モジュールツリー構造の各モジュールを前記負荷テーブルによって示される前記負荷の程度を発生させる仮想ソフトウェアモジュールで置き換える置換手段と、
前記モジュールが前記仮想ソフトウェアモジュールに置き換えられた前記モジュールツリー構造に基づいて仮想ソフトウェアを生成する仮想ソフトウェア生成手段と、
を有するようにした仮想ソフトウェア生成装置。
(付記2)
前記負荷テーブル作成手段は、前記負荷テーブルを作成する際に、演算量、データ量、データ入出力先の項目と、モジュール毎にデータ入出力及びデータ量を解析して生成したトラフィックリストを用いて、連続、断続、ランダムに分類した該データ入出力に係るアクセスパターンの項目とによって前記負荷の程度を示すようにした付記1記載の仮想ソフトウェア生成装置。
(付記3)
前記負荷テーブルを用いて、前記負荷の程度をパラメータとするフラグメントパーツに前記モジュールの該負荷の程度をパラメータ値として与えて前記仮想ソフトウェアモジュールを生成する仮想ソフトウェアモジュール生成手段を更に有するようにした付記1又は2記載の仮想ソフトウェア生成装置。
(付記4)
前記ソフトウェアを構成する複数のモジュールに対してユーザによって前記仮想ソフトウェアモジュールに置き換える又は置き換えないことを選択させるモジュール選択手段を更に備え、
前記置換手段は、置き換えないモジュールに対しては、該モジュールのソースコードを用いるようにした付記1又は3のいずれか一項記載の仮想ソフトウェア生成装置。
(付記5)
前記仮想ソフトウェア生成手段は、ハードウェアのシミュレーション環境上で動作可能な前記仮想ソフトウェアを生成して出力するようにした付記1乃至付記4のいずれか一項記載の仮想ソフトウェア生成装置。
(付記6)
前記負荷テーブル作成手段によって作成された負荷テーブルは、ユーザによって変更可能であり、
前記負荷テーブルの変更に応じて、前記置換手段と前記仮想ソフトウェア生成手段とが再実行されるようにした付記1乃至付記5のいずれか一項記載の仮想ソフトウェア生成装置。
(付記7)
ハードウェアをシミュレーションするシミュレータ装置であって、
前記ハードウェアを抽象化して表現した抽象化ハードウェアを作成する抽象化手段と、
ソフトウェアを実行した際の負荷の程度で仮想化した仮想ソフトウェアを生成し出力する仮想ソフトウェア生成手段と、
前記仮想ソフトウェア生成手段から出力された前記仮想ソフトウェアと前記抽象化ハードウェアとでなるシミュレーションモデルをシミュレートするシミュレート手段と、
を有するようにしたシミュレータ装置。
(付記8)
前記仮想ソフトウェア生成手段は、更に、
前記ソフトウェアを構成する複数のモジュール間のデータ入出力とを解析してモジュールツリー構造を作成するモジュールツリー構造作成手段と、
前記モジュール毎に負荷の程度を示す負荷テーブルを作成する負荷テーブル作成手段と、
前記モジュールツリー構造の各モジュールを前記負荷テーブルによって示される前記負荷の程度を発生させる仮想ソフトウェアモジュールで置き換える置換手段と、
前記モジュールが前記仮想ソフトウェアモジュールに置き換えられた前記モジュールツリー構造に基づいて仮想ソフトウェアを生成する仮想ソフトウェア生成手段と、
を有するようにした付記7記載のシミュレータ装置。
(付記9)
前記ソフトウェアを構成する複数のモジュール間のデータ入出力とを解析してモジュールツリー構造を作成するモジュールツリー構造作成手順と、
前記モジュール毎に負荷の程度を示す負荷テーブルを作成する負荷テーブル作成手順と、
前記モジュールツリー構造の各モジュールを前記負荷テーブルによって示される前記負荷の程度を発生させる仮想ソフトウェアモジュールで置き換える置換手順と、
前記モジュールが前記仮想ソフトウェアモジュールに置き換えられた前記モジュールツリー構造に基づいて仮想ソフトウェアを生成する仮想ソフトウェア生成手順と、
をコンピュータが実行する仮想ソフトウェア生成方法。
(付記10)
ソフトウェアを構成する複数のモジュール間のデータ入出力とを解析してモジュールツリー構造を作成するモジュールツリー構造作成手段と、
前記モジュール毎に負荷の程度を示す負荷テーブルを作成する負荷テーブル作成手段と、
前記モジュールツリー構造の各モジュールを前記負荷テーブルによって示される前記負荷の程度を発生させる仮想ソフトウェアモジュールで置き換える置換手段と、
前記モジュールが前記仮想ソフトウェアモジュールに置き換えられた前記モジュールツリー構造に基づいて仮想ソフトウェアを生成する仮想ソフトウェア生成手段としてコンピュータに機能させるためのプログラム。
Regarding the above description, the following items are further disclosed.
(Appendix 1)
A module tree structure creating means for creating a module tree structure by analyzing data input / output between a plurality of modules constituting the software;
Load table creating means for creating a load table indicating the degree of load for each module;
Replacement means for replacing each module of the module tree structure with a virtual software module that generates the degree of load indicated by the load table;
Virtual software generation means for generating virtual software based on the module tree structure in which the module is replaced with the virtual software module;
A virtual software generation apparatus.
(Appendix 2)
When creating the load table, the load table creation means uses items of calculation amount, data amount, data input / output destination, and traffic list generated by analyzing data input / output and data amount for each module. The virtual software generation device according to appendix 1, wherein the degree of the load is indicated by an access pattern item relating to the data input / output classified into continuous, intermittent, and random.
(Appendix 3)
Additional notes further comprising virtual software module generation means for generating the virtual software module by giving the load level of the module as a parameter value to a fragment part having the load level as a parameter using the load table 3. The virtual software generation device according to 1 or 2.
(Appendix 4)
Module selection means for allowing a user to select whether or not to replace the virtual software module with respect to a plurality of modules constituting the software;
The virtual software generation device according to any one of appendices 1 and 3, wherein the replacement unit uses a source code of a module that is not replaced.
(Appendix 5)
The virtual software generation device according to any one of Supplementary Note 1 to Supplementary Note 4, wherein the virtual software generation unit generates and outputs the virtual software operable in a hardware simulation environment.
(Appendix 6)
The load table created by the load table creating means can be changed by the user,
The virtual software generation device according to any one of supplementary notes 1 to 5, wherein the replacement unit and the virtual software generation unit are re-executed in accordance with the change of the load table.
(Appendix 7)
A simulator device for simulating hardware,
Abstraction means for creating abstract hardware expressing the hardware as an abstraction;
Virtual software generation means for generating and outputting virtual software virtualized according to the degree of load when the software is executed;
Simulating means for simulating a simulation model composed of the virtual software and the abstract hardware output from the virtual software generating means;
A simulator device.
(Appendix 8)
The virtual software generation means further includes:
A module tree structure creating means for creating a module tree structure by analyzing data input / output between a plurality of modules constituting the software;
Load table creating means for creating a load table indicating the degree of load for each module;
Replacement means for replacing each module of the module tree structure with a virtual software module that generates the degree of load indicated by the load table;
Virtual software generation means for generating virtual software based on the module tree structure in which the module is replaced with the virtual software module;
The simulator device according to appendix 7, wherein:
(Appendix 9)
A module tree structure creation procedure for creating a module tree structure by analyzing data input / output between a plurality of modules constituting the software;
A load table creation procedure for creating a load table indicating the degree of load for each module;
A replacement procedure for replacing each module of the module tree structure with a virtual software module that generates the degree of load indicated by the load table;
A virtual software generation procedure for generating virtual software based on the module tree structure in which the module is replaced with the virtual software module;
A virtual software generation method in which a computer executes.
(Appendix 10)
A module tree structure creating means for analyzing data input / output between a plurality of modules constituting the software and creating a module tree structure;
Load table creating means for creating a load table indicating the degree of load for each module;
Replacement means for replacing each module of the module tree structure with a virtual software module that generates the degree of load indicated by the load table;
A program for causing a computer to function as virtual software generation means for generating virtual software based on the module tree structure in which the module is replaced with the virtual software module.

本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。   The present invention is not limited to the specifically disclosed embodiments, and various modifications and changes can be made without departing from the scope of the claims.

本発明の一実施例に係るシミュレータ装置の機能構成例を示す図である。It is a figure which shows the function structural example of the simulator apparatus which concerns on one Example of this invention. シミュレータ装置のハードウェア構成例を示す図である。It is a figure which shows the hardware structural example of a simulator apparatus. 仮想化処理部による処理を説明するためのフローチャート図である。It is a flowchart for demonstrating the process by a virtualization process part. ESLツールを用いて作成した画像処理装置の抽象化ハードウェアの例を示す図である。It is a figure which shows the example of the abstract hardware of the image processing apparatus produced using the ESL tool. 画像処理装置に係る評価対象ソフトウェアのモジュールツリー構造の例を示す図である。It is a figure which shows the example of the module tree structure of the evaluation object software which concerns on an image processing apparatus. 評価対象ソフトウェアの処理フローの例を示す図である。It is a figure which shows the example of the processing flow of evaluation object software. 構造解析結果に基づいて作成されるストーリーデータの例を示す図である。It is a figure which shows the example of the story data produced based on a structural analysis result. 画像処理装置のESLモデルの例を示す図である。It is a figure which shows the example of the ESL model of an image processing apparatus. ユーザがESLを操作しつつ検証する例を示す図である。It is a figure which shows the example verified while a user operates ESL. ユーザがESLを操作しつつ検証する例を示す図である。It is a figure which shows the example verified while a user operates ESL. 開発サイクルを示す図である。It is a figure which shows a development cycle. 仮想化レベルの例を示す図である。It is a figure which shows the example of a virtualization level. 仮想化レベル毎のベンチマークによる評価の傾向を示すグラフ図である。It is a graph which shows the tendency of evaluation by the benchmark for every virtualization level.

符号の説明Explanation of symbols

2 評価対象ハードウェア
3 評価対象ソフトウェア
6 画像処理SoC
7 システムLSI
10 仮想化処理部
11 構造解析部
11a モジュールツリー構造
11b ストーリーパーサー
12 シナリオジェネレータ
12a フラグメントパーツ
12b 仮想ソフトウェアモジュール
13 置換部
14 モジュール選択部
15 仮想ソフトウェア生成部
15a モジュールツリー構造
18 仮想化レベル
20 ESLツール
21a 抽象化ハードウェア
21b 仮想ソフトウェア
31 CPU
32 メモリユニット
33 表示ユニット
34 出力ユニット
35 入力ユニット
36 通信ユニット
37 記憶装置
38 ドライバ
39 記憶媒体
41 構成グラフリスト
42 I/Oトラフィックリスト
43 ストーリーデータ
100 シミュレータ装置
2 Evaluation target hardware 3 Evaluation target software 6 Image processing SoC
7 System LSI
DESCRIPTION OF SYMBOLS 10 Virtualization processing part 11 Structure analysis part 11a Module tree structure 11b Story parser 12 Scenario generator 12a Fragment part 12b Virtual software module 13 Replacement part 14 Module selection part 15 Virtual software generation part 15a Module tree structure 18 Virtualization level 20 ESL tool 21a Abstract hardware 21b Virtual software 31 CPU
32 memory unit 33 display unit 34 output unit 35 input unit 36 communication unit 37 storage device 38 driver 39 storage medium 41 configuration graph list 42 I / O traffic list 43 story data 100 simulator device

Claims (5)

ソフトウェアを構成する複数のモジュール間のデータ入出力を解析してモジュールツリー構造を作成するモジュールツリー構造作成手段と、
前記モジュール毎に負荷の程度を示す負荷テーブルを作成する負荷テーブル作成手段と、
前記モジュールツリー構造の各モジュールを前記負荷テーブルによって示される前記負荷の程度を発生させる仮想ソフトウェアモジュールで置き換える置換手段と、
前記モジュールが前記仮想ソフトウェアモジュールに置き換えられた前記モジュールツリー構造に基づいて仮想ソフトウェアを生成する仮想ソフトウェア生成手段と、
を有するようにした仮想ソフトウェア生成装置。
A module tree structure creating means for creating a module tree structure by analyzing data input / output between a plurality of modules constituting the software;
Load table creating means for creating a load table indicating the degree of load for each module;
Replacement means for replacing each module of the module tree structure with a virtual software module that generates the degree of load indicated by the load table;
Virtual software generation means for generating virtual software based on the module tree structure in which the module is replaced with the virtual software module;
A virtual software generation apparatus.
前記負荷テーブル作成手段は、前記負荷テーブルを作成する際に、演算量、データ量、データ入出力先の項目と、モジュール毎にデータ入出力及びデータ量を解析して生成したトラフィックリストを用いて、連続、断続、ランダムに分類した該データ入出力に係るアクセスパターンの項目とによって前記負荷の程度を示すようにした請求項1記載の仮想ソフトウェア生成装置。   When creating the load table, the load table creation means uses items of calculation amount, data amount, data input / output destination, and traffic list generated by analyzing data input / output and data amount for each module. The virtual software generation device according to claim 1, wherein the degree of the load is indicated by an access pattern item related to the data input / output classified as continuous, intermittent, or random. 前記負荷テーブルを用いて、前記負荷の程度をパラメータとするフラグメントパーツに前記モジュールの該負荷の程度をパラメータ値として与えて前記仮想ソフトウェアモジュールを生成する仮想ソフトウェアモジュール生成手段を更に有するようにした請求項1又は2記載の仮想ソフトウェア生成装置。   Claims further comprising virtual software module generation means for generating the virtual software module by giving the load level of the module as a parameter value to a fragment part having the load level as a parameter using the load table. Item 3. The virtual software generation device according to Item 1 or 2. 前記ソフトウェアを構成する複数のモジュールに対してユーザによって前記仮想ソフトウェアモジュールに置き換える又は置き換えないことを選択させるモジュール選択手段を更に備え、
前記置換手段は、置き換えないモジュールに対しては、該モジュールのソースコードを用いるようにした請求項1乃至3のいずれか一項記載の仮想ソフトウェア生成装置。
Module selection means for allowing a user to select whether or not to replace the virtual software module with the virtual software module for a plurality of modules constituting the software,
The virtual software generation device according to any one of claims 1 to 3, wherein the replacement means uses a source code of a module that is not replaced.
前記仮想ソフトウェア生成手段は、ハードウェアのシミュレーション環境上で動作可能な前記仮想ソフトウェアを生成して出力するようにした請求項1乃至4のいずれか一項記載の仮想ソフトウェア生成装置。   5. The virtual software generation device according to claim 1, wherein the virtual software generation unit generates and outputs the virtual software operable in a hardware simulation environment. 6.
JP2008060428A 2008-03-11 2008-03-11 Virtual software generator Expired - Fee Related JP5056493B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008060428A JP5056493B2 (en) 2008-03-11 2008-03-11 Virtual software generator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008060428A JP5056493B2 (en) 2008-03-11 2008-03-11 Virtual software generator

Publications (2)

Publication Number Publication Date
JP2009217531A true JP2009217531A (en) 2009-09-24
JP5056493B2 JP5056493B2 (en) 2012-10-24

Family

ID=41189310

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008060428A Expired - Fee Related JP5056493B2 (en) 2008-03-11 2008-03-11 Virtual software generator

Country Status (1)

Country Link
JP (1) JP5056493B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154521A (en) * 2010-01-27 2011-08-11 Hitachi Advanced Digital Inc Model-based performance prediction system
JP2014132419A (en) * 2013-01-07 2014-07-17 Nec Corp Performance prediction device of virtualization system, performance prediction method and computer program

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH064513A (en) * 1992-06-19 1994-01-14 Mitsubishi Electric Corp Load estimating device for design system
JPH09198282A (en) * 1996-01-19 1997-07-31 Matsushita Electric Works Ltd System and method for evaluating performance of computer
JP2000035898A (en) * 1998-07-17 2000-02-02 Nec Corp System simulator and system simulating method
WO2001090887A1 (en) * 2000-05-25 2001-11-29 Fujitsu Limited Method fir processing program for high-speed processing by using dynamically reconfigurable hardware and program for executing the processing method
JP2004287858A (en) * 2003-03-24 2004-10-14 Matsushita Electric Ind Co Ltd Program test device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH064513A (en) * 1992-06-19 1994-01-14 Mitsubishi Electric Corp Load estimating device for design system
JPH09198282A (en) * 1996-01-19 1997-07-31 Matsushita Electric Works Ltd System and method for evaluating performance of computer
JP2000035898A (en) * 1998-07-17 2000-02-02 Nec Corp System simulator and system simulating method
WO2001090887A1 (en) * 2000-05-25 2001-11-29 Fujitsu Limited Method fir processing program for high-speed processing by using dynamically reconfigurable hardware and program for executing the processing method
JP2004287858A (en) * 2003-03-24 2004-10-14 Matsushita Electric Ind Co Ltd Program test device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154521A (en) * 2010-01-27 2011-08-11 Hitachi Advanced Digital Inc Model-based performance prediction system
JP2014132419A (en) * 2013-01-07 2014-07-17 Nec Corp Performance prediction device of virtualization system, performance prediction method and computer program

Also Published As

Publication number Publication date
JP5056493B2 (en) 2012-10-24

Similar Documents

Publication Publication Date Title
US8666723B2 (en) System and methods for generating and managing a virtual device
Erbas et al. A framework for system-level modeling and simulation of embedded systems architectures
US9367658B2 (en) Method and apparatus for designing and generating a stream processor
US20150355920A1 (en) System and methods for generating and managing a virtual device
Barbierato et al. Exploiting CloudSim in a multiformalism modeling approach for cloud based systems
US20110307688A1 (en) Synthesis system for pipelined digital circuits
KR100808257B1 (en) Apparatus and Method for prototype development of embedded system
Raghavan et al. Model based estimation and verification of mobile device performance
US9690681B1 (en) Method and system for automatically generating executable system-level tests
Sokolov et al. Workcraft: Ten years later
Pemberton et al. Firemarshal: Making hw/sw co-design reproducible and reliable
Kreku et al. Combining UML2 application and SystemC platform modelling for performance evaluation of real-time embedded systems
Bruce et al. Enabling reproducible and agile full-system simulation
Trčka et al. Integrated model-driven design-space exploration for embedded systems
Banerjee et al. A highly configurable hardware/Software stack for DNN inference acceleration
JP5056493B2 (en) Virtual software generator
Reardon et al. RCML: an environment for estimation modeling of reconfigurable computing systems
JP4870956B2 (en) Embedded program generation method, embedded program development system, and information table section
Werner et al. Cloud-based design and virtual prototyping environment for embedded systems
CN116457789A (en) Model-based design and partitioning for heterogeneous integrated circuits
Lucarz Dataflow programming for systems design space exploration for multicore platforms
JP2007018313A (en) Circuit design program, circuit design device and circuit design method
Gibson Deep learning on a low power gpu
Casale-Brunet et al. Programming models and methods for heterogeneous parallel embedded systems
Sigdel et al. rSesame-A generic system-level runtime simulation framework for reconfigurable architectures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120626

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120716

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees