JP2015035033A - Design support method, design support program, and design support apparatus - Google Patents

Design support method, design support program, and design support apparatus Download PDF

Info

Publication number
JP2015035033A
JP2015035033A JP2013164627A JP2013164627A JP2015035033A JP 2015035033 A JP2015035033 A JP 2015035033A JP 2013164627 A JP2013164627 A JP 2013164627A JP 2013164627 A JP2013164627 A JP 2013164627A JP 2015035033 A JP2015035033 A JP 2015035033A
Authority
JP
Japan
Prior art keywords
program
design support
command statement
executed
statement
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
JP2013164627A
Other languages
Japanese (ja)
Other versions
JP6146197B2 (en
Inventor
真人 立岡
Masato Tatsuoka
真人 立岡
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 Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor 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 Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2013164627A priority Critical patent/JP6146197B2/en
Publication of JP2015035033A publication Critical patent/JP2015035033A/en
Application granted granted Critical
Publication of JP6146197B2 publication Critical patent/JP6146197B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

PROBLEM TO BE SOLVED: To improve design efficiency.SOLUTION: A design support apparatus 100 derives the number of times of executing a statement in a case of implementing a program 101 for simulating an operation performed by a design target circuit by input data 102 that can be input to the design target circuit, for each of statements for instructing a specific type of computation in the program 101. The design support apparatus 100 calculates an index value by multiplying the derived number of times by a weighting factor that is a value in response to electric energy required for the specific type of computation, for each statement. The index value is 240 since "z=x/y" is 30 and the weighting factor of division "/" is 8. The index value is 300 since "c=a*b" is 50 and the weighting factor of multiplication "*" is 6.

Description

本発明は、設計支援方法、設計支援プログラム、および設計支援装置に関する。   The present invention relates to a design support method, a design support program, and a design support apparatus.

従来、プログラムの構文解析または命令セットシミュレータによるプログラムに定義された各関数の処理量や消費電力量の見積もり結果に基づいて各関数をハードウェアとソフトウェアのうちいずれで実現させるかを判断する技術が公知である(例えば、下記特許文献1参照。)。   Conventionally, there is a technology for determining whether to implement each function in hardware or software based on the result of estimating the amount of processing and power consumption of each function defined in the program by the program parsing or instruction set simulator It is publicly known (for example, refer to Patent Document 1 below).

また、従来、システムの動作が記述されたプログラム内の各命令の出現頻度に基づいて、FPGA(Field Programmable Gate Array)に実装する演算器に実行させる命令を決定する技術が公知である(例えば、下記特許文献2参照。)。   Conventionally, a technique for determining an instruction to be executed by an arithmetic unit mounted in an FPGA (Field Programmable Gate Array) based on the appearance frequency of each instruction in a program in which the operation of the system is described (for example, (See Patent Document 2 below.)

また、プログラムにより生成したデータフローグラフに基づくレジスタに割り当てられるポイントの変数データ代入回数と保持データ遷移回数のいずれかを含む動的解析データに基づいて、プログラムに対して回路素子を割り付ける技術が公知である(例えば、下記特許文献3参照。)。   Also, a technique for allocating circuit elements to a program based on dynamic analysis data including either the number of variable data assignments of points assigned to registers based on a data flow graph generated by the program or the number of times of holding data transition (For example, refer to Patent Document 3 below.)

特開2001−142927号公報JP 2001-142927 A 特開2003−241975号公報JP 2003-241975 A 特開2009−157440号公報JP 2009-157440 A

しかしながら、高位設計においては、設計対象回路の使用時の各演算部の消費電力量が不明であるため、設計効率が低いという問題点がある。   However, in the high-level design, there is a problem that the design efficiency is low because the power consumption of each arithmetic unit when using the design target circuit is unknown.

1つの側面では、本発明は、設計効率の向上を図ることができる設計支援方法、設計支援プログラム、および設計支援装置を提供することを目的とする。   In one aspect, an object of the present invention is to provide a design support method, a design support program, and a design support apparatus that can improve design efficiency.

本発明の一側面によれば、設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する設計支援方法、設計支援プログラム、および設計支援装置が提案される。   According to one aspect of the present invention, the program is executed with input data that can be input to the arithmetic circuit for each of the command statements that specify a specific type of arithmetic among the programs that simulate the operation of the arithmetic circuit to be designed. A design that derives the number of times the statement is executed and calculates a value obtained by multiplying the number of times derived for each of the statements by a value corresponding to the amount of power required for the specific type of operation A support method, a design support program, and a design support apparatus are proposed.

本発明の一態様によれば、設計効率の向上を図ることができる。   According to one embodiment of the present invention, design efficiency can be improved.

図1は、本発明の一動作例を示す説明図である。FIG. 1 is an explanatory diagram showing an operation example of the present invention. 図2は、半導体集積回路の設計手順例を示すフローチャートである。FIG. 2 is a flowchart illustrating an example of a design procedure for a semiconductor integrated circuit. 図3は、設計支援装置のハードウェア構成例を示すブロック図である。FIG. 3 is a block diagram illustrating a hardware configuration example of the design support apparatus. 図4は、プログラム例を示す説明図である。FIG. 4 is an explanatory diagram showing a program example. 図5は、設計支援装置の機能的構成例を示すブロック図である。FIG. 5 is a block diagram illustrating a functional configuration example of the design support apparatus. 図6は、命令文の特定例を示す説明図である。FIG. 6 is an explanatory diagram showing a specific example of a command statement. 図7は、CDFGの生成例を示す説明図である。FIG. 7 is an explanatory diagram illustrating a generation example of a CDFG. 図8は、見積もり電力テーブル例を示す説明図である。FIG. 8 is an explanatory diagram illustrating an example of an estimated power table. 図9は、回数をカウント可能なAPI記述が追加された第2プログラム例を示す説明図である。FIG. 9 is an explanatory diagram showing a second program example to which an API description capable of counting the number of times is added. 図10は、実行結果例を示す説明図である。FIG. 10 is an explanatory diagram illustrating an example of the execution result. 図11は、静的電力解析の他の例を示す説明図である。FIG. 11 is an explanatory diagram illustrating another example of static power analysis. 図12は、動的電力解析の他の例を示す説明図である。FIG. 12 is an explanatory diagram illustrating another example of dynamic power analysis. 図13は、2のべき乗の特定例を示す説明図である。FIG. 13 is an explanatory diagram showing a specific example of a power of 2. 図14は、論理変更パターン用ライブラリ例を示す説明図である。FIG. 14 is an explanatory diagram of an example of a logical change pattern library. 図15は、置換前後のプログラム例1を示す説明図である。FIG. 15 is an explanatory diagram of Program Example 1 before and after replacement. 図16は、置換前後のプログラム例2を示す説明図である。FIG. 16 is an explanatory diagram showing a program example 2 before and after replacement. 図17は、置換前後のプログラム例2についてのCDFG例を示す説明図である。FIG. 17 is an explanatory diagram showing a CDFG example for the program example 2 before and after replacement. 図18は、置換前後のプログラム例2についてのRTL例を示す説明図である。FIG. 18 is an explanatory diagram showing an example of RTL for program example 2 before and after replacement. 図19は、設計支援装置が行う全体の処理手順例を示すフローチャートである。FIG. 19 is a flowchart illustrating an example of an overall processing procedure performed by the design support apparatus. 図20は、静的および動的電力解析処理手順例を示すフローチャートである。FIG. 20 is a flowchart showing an example of a static and dynamic power analysis processing procedure. 図21は、最適化箇所特定処理手順例を示すフローチャートである。FIG. 21 is a flowchart illustrating an example of an optimization location specifying process procedure. 図22は、最適化処理手順例を示すフローチャートである。FIG. 22 is a flowchart illustrating an exemplary optimization processing procedure.

以下に添付図面を参照して、本発明にかかる設計支援方法、設計支援プログラム、および設計支援装置の実施の形態を詳細に説明する。   Exemplary embodiments of a design support method, a design support program, and a design support apparatus according to the present invention will be described below in detail with reference to the accompanying drawings.

図1は、本発明の一動作例を示す説明図である。設計支援装置100は、設計対象の演算回路の設計を支援するコンピュータである。ここでの設計対象の演算回路とは、演算機能を有する回路を含む。以降、設計対象の演算回路は、対象回路と称する。   FIG. 1 is an explanatory diagram showing an operation example of the present invention. The design support apparatus 100 is a computer that supports the design of an arithmetic circuit to be designed. The arithmetic circuit to be designed here includes a circuit having an arithmetic function. Hereinafter, an arithmetic circuit to be designed is referred to as a target circuit.

設計支援装置100は、設計対象の演算回路の動作を模擬するプログラム101のうち特定種類の演算を指示する命令文の各々について、演算回路に入力可能な入力データ102によってプログラム101を実行した場合に命令文が実行される回数を導出する。特定種類の演算は、例えば、四則演算や論理演算などが挙げられる。図1の例では、特定種類の演算は、除算“/”と乗算“*”とである。   When the design support apparatus 100 executes the program 101 by using the input data 102 that can be input to the arithmetic circuit for each of the command statements instructing a specific type of arithmetic among the programs 101 that simulate the operation of the arithmetic circuit to be designed Derives the number of times the statement is executed. Examples of specific types of operations include four arithmetic operations and logical operations. In the example of FIG. 1, the specific type of operation is division “/” and multiplication “*”.

つぎに、設計支援装置100は、命令文の各々について、導出した回数と、特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する。ここで、乗算した値を消費電力量の指標値と称する。これにより、対象回路の使用時の消費電力量を見積もることができる。   Next, the design support apparatus 100 calculates a value obtained by multiplying the number of derived times and a value corresponding to the amount of power required for a specific type of operation for each of the statements. Here, the multiplied value is referred to as a power consumption index value. Thereby, it is possible to estimate the power consumption when the target circuit is used.

図2は、半導体集積回路の設計手順例を示すフローチャートである。まず、半導体集積回路の設計では、設計対象回路の機能を表すアルゴリズムを開発する(ステップS201)。これにより、アルゴリズムがC言語やC++言語などによりコーディングされたプログラムが得られる。つぎに、半導体集積回路の設計では、プログラム内の命令文を置き換える(ステップS202)。実装される演算器には制限があり、この制約を遵守させるためにプログラムの置き換えが行われる。   FIG. 2 is a flowchart illustrating an example of a design procedure for a semiconductor integrated circuit. First, in designing a semiconductor integrated circuit, an algorithm representing the function of the circuit to be designed is developed (step S201). As a result, a program in which the algorithm is coded in the C language, the C ++ language, or the like can be obtained. Next, in the design of the semiconductor integrated circuit, the command statement in the program is replaced (step S202). There are restrictions on the arithmetic units to be implemented, and programs are replaced to comply with this restriction.

そして、半導体集積回路の設計では、合成ツールを用いて高位合成を行う(ステップS203)。これにより、ハードウェア記述言語などによるRTL(Register Transfer Level)で記述されたプログラムが得られる。   In designing a semiconductor integrated circuit, high-level synthesis is performed using a synthesis tool (step S203). Thereby, a program described in RTL (Register Transfer Level) using a hardware description language or the like is obtained.

つぎに、半導体集積回路の設計では、RTL記述の構文チェックを行い(ステップS204)、RTLのシミュレーションを行う(ステップS205)。半導体集積回路の設計では、論理合成を行う(ステップS206)。これにより、ネットリストが得られる。そして、半導体集積回路の設計では、ネットリストに基づいて配置配線が行われる(ステップS207)。   Next, in designing the semiconductor integrated circuit, the syntax of the RTL description is checked (step S204), and the RTL simulation is performed (step S205). In designing a semiconductor integrated circuit, logic synthesis is performed (step S206). Thereby, a net list is obtained. In designing the semiconductor integrated circuit, placement and routing are performed based on the net list (step S207).

論理合成後のネットリストを用いたシミュレーションによって電力見積もりが行われる。そのため、設計変更が生じる場合に、RTL設計や高位設計を再度行うには時間がかかる。これに対して、本実施の形態にかかる設計支援装置100は、ステップS201やステップS202において電力見積もりを行うことができるため、設計効率を向上させることができる。   Power estimation is performed by simulation using a netlist after logic synthesis. Therefore, when a design change occurs, it takes time to perform RTL design and high-level design again. On the other hand, since the design support apparatus 100 according to the present embodiment can perform power estimation in step S201 and step S202, the design efficiency can be improved.

(設計支援装置100のハードウェア構成例)
図3は、設計支援装置のハードウェア構成例を示すブロック図である。図3において、設計支援装置100は、CPU(Central Processing Unit)301と、ROM(Read Only Memory)302と、RAM(Random Access Memory)303と、ディスクドライブ304と、ディスク305と、を有している。設計支援装置100は、I/F306と、入力装置307と、出力装置308と、を有している。また、各部はバス300によってそれぞれ接続されている。
(Example of hardware configuration of design support apparatus 100)
FIG. 3 is a block diagram illustrating a hardware configuration example of the design support apparatus. In FIG. 3, the design support apparatus 100 includes a CPU (Central Processing Unit) 301, a ROM (Read Only Memory) 302, a RAM (Random Access Memory) 303, a disk drive 304, and a disk 305. Yes. The design support apparatus 100 includes an I / F 306, an input device 307, and an output device 308. Each unit is connected by a bus 300.

ここで、CPU301は、設計支援装置100の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。ディスクドライブ304は、CPU301の制御にしたがってディスク305に対するデータのリード/ライトを制御する。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する。ディスク305としては、磁気ディスク、光ディスクなどが挙げられる。   Here, the CPU 301 governs overall control of the design support apparatus 100. The ROM 302 stores a program such as a boot program. The RAM 303 is used as a work area for the CPU 301. The disk drive 304 controls reading / writing of data with respect to the disk 305 according to the control of the CPU 301. The disk 305 stores data written under the control of the disk drive 304. Examples of the disk 305 include a magnetic disk and an optical disk.

I/F306は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、I/F306は、ネットワークNETと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F306には、例えばモデムやLANアダプタなどを採用することができる。   The I / F 306 is connected to a network NET such as a LAN (Local Area Network), a WAN (Wide Area Network), and the Internet through a communication line, and is connected to other devices via the network NET. The I / F 306 controls an internal interface with the network NET, and controls data input / output from an external device. For example, a modem or a LAN adapter can be used as the I / F 306.

入力装置307は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置307は、カメラから画像や動画を取り込むこともできる。また、入力装置307は、マイクから音声を取り込むこともできる。出力装置308は、CPU301の指示により、データを出力するインターフェースである。出力装置308には、ディスプレイやプリンタが挙げられる。   The input device 307 is an interface for inputting various data by a user operation such as a keyboard, a mouse, and a touch panel. The input device 307 can also capture images and moving images from the camera. The input device 307 can also capture audio from a microphone. The output device 308 is an interface that outputs data according to an instruction from the CPU 301. Examples of the output device 308 include a display and a printer.

図4は、プログラム例を示す説明図である。第1プログラム400は、対象回路の動作を模擬可能であり、C言語やC++言語などによって記述される。   FIG. 4 is an explanatory diagram showing a program example. The first program 400 can simulate the operation of the target circuit and is described in C language, C ++ language, or the like.

(設計支援装置100の機能的構成例)
図5は、設計支援装置の機能的構成例を示すブロック図である。設計支援装置100は、第1特定部501と、CDFG生成部502と、第1生成部503と、導出部504と、算出部505と、第1判断部506と、第2特定部507と、第2判断部508と、第2生成部509と、を含む。各部の処理は、例えば、CPU301がアクセス可能な記憶装置に記憶された設計支援プログラムにコーディングされている。そして、CPU301が記憶装置から設計支援プログラムを読み出して、設計支援プログラムにコーディングされている処理を実行する。これにより、各部の処理が実現される。また、各部の処理結果は、例えば、RAM303、ディスク305などの記憶装置に記憶される。
(Functional configuration example of the design support apparatus 100)
FIG. 5 is a block diagram illustrating a functional configuration example of the design support apparatus. The design support apparatus 100 includes a first specification unit 501, a CDFG generation unit 502, a first generation unit 503, a derivation unit 504, a calculation unit 505, a first determination unit 506, a second specification unit 507, A second determination unit 508 and a second generation unit 509 are included. The processing of each unit is coded in a design support program stored in a storage device accessible by the CPU 301, for example. Then, the CPU 301 reads the design support program from the storage device and executes the process coded in the design support program. Thereby, the process of each part is implement | achieved. Further, the processing results of each unit are stored in a storage device such as the RAM 303 and the disk 305, for example.

まず、第1特定部501は、対象回路の動作を模擬する第1プログラム400から複数種類の演算の少なくともいずれかを行うことを指示する命令文を特定する。複数種類の演算とは、四則演算、論理演算、論理演算や四則演算の組み合わせなどが挙げられる。具体的には、第1特定部501は、第1プログラム400を一行ずつスキャンし、演算記述がある命令文を特定する。   First, the first specifying unit 501 specifies a command statement instructing to perform at least one of a plurality of types of operations from the first program 400 that simulates the operation of the target circuit. Examples of the plural types of operations include four arithmetic operations, logical operations, combinations of logical operations and four arithmetic operations. Specifically, the first specifying unit 501 scans the first program 400 line by line and specifies a command statement having an operation description.

図6は、命令文の特定例を示す説明図である。第1特定部501は、第1プログラム400から、8行目の比較演算“<”が記述された命令文を特定する。第1特定部501は、第1プログラム400から、8行目に加算“++”が記述された命令文を特定する。第1特定部501は、第1プログラム400から、11行目の加算“+”が記述された命令文を特定する。第1特定部501は、第1プログラム400から、13行目の乗算“*”記述された命令文を特定する。   FIG. 6 is an explanatory diagram showing a specific example of a command statement. The first specifying unit 501 specifies a command statement describing the comparison operation “<” on the eighth line from the first program 400. The first specifying unit 501 specifies a command statement in which addition “++” is described in the eighth line from the first program 400. The first specifying unit 501 specifies a command statement in which the addition “+” on the eleventh line is described from the first program 400. The first specifying unit 501 specifies the command statement in which the multiplication “*” in the 13th line is described from the first program 400.

また、第1特定部501は、特定した命令文のうち、For−Loop文やWhile文を除外する。これにより、11行目の加算“+”と13行目の乗算“*”とが特定される。For−Loop文やWhile文については、高位合成ツールによって最適化されるため、本発明においては、処理の対象から除外される。   In addition, the first specifying unit 501 excludes For-Loop statements and While statements from among the specified command statements. As a result, the addition “+” in the 11th row and the multiplication “*” in the 13th row are specified. Since the For-Loop statement and the While statement are optimized by the high-level synthesis tool, they are excluded from the processing targets in the present invention.

CDFG生成部502は、第1プログラム400に基づいてCDFG(Control Data Flow Graph)を生成する。CDFGは、対象回路の実装時における制御の流れと、データの流れと、が記述された情報である。ここでは、CDFGは、理解の容易化のためにディスプレイなどの出力装置308を介して出力させる情報である。   The CDFG generation unit 502 generates a CDFG (Control Data Flow Graph) based on the first program 400. CDFG is information describing a control flow and a data flow when the target circuit is mounted. Here, CDFG is information to be output via an output device 308 such as a display for easy understanding.

図7は、CDFGの生成例を示す説明図である。CDFG生成部502は、例えば、第1プログラム400に応じたCDFGを生成する。ここで、CDFGによると、特定された命令文は、それぞれCDFGにおいてパスを構成する。そこで、特定された命令文を示す識別情報と、命令文が指示する演算と、演算の引数とは、関連付けられ、以降パスと称する。ここでは、パスに含まれる識別情報が示す命令文をパスの命令文と称する。   FIG. 7 is an explanatory diagram illustrating a generation example of a CDFG. The CDFG generation unit 502 generates a CDFG corresponding to the first program 400, for example. Here, according to the CDFG, the specified statements constitute a path in the CDFG. Therefore, the identification information indicating the specified command statement, the operation indicated by the command statement, and the argument of the operation are associated with each other and are hereinafter referred to as a path. Here, the instruction sentence indicated by the identification information included in the path is referred to as a path instruction sentence.

第1特定部501は、パスごとに、見積もり電力テーブルから重み付け係数を取得する。重み付け係数は、演算の種類に応じて演算の消費電力値に応じた値である。   The first specifying unit 501 acquires a weighting coefficient from the estimated power table for each path. The weighting coefficient is a value corresponding to the power consumption value of the calculation according to the type of calculation.

図8は、見積もり電力テーブル例を示す説明図である。見積もり電力テーブル800は、演算ごとに重み付け係数が記憶される。見積もり電力テーブル800は、演算、重み付け係数のフィールドを有する。各フィールドに情報が設定されることにより、レコード(801−1〜801−2など)として記憶される。見積もり電力テーブル800は、例えば、RAM303やディスク305などの記憶装置に記憶される。   FIG. 8 is an explanatory diagram illustrating an example of an estimated power table. The estimated power table 800 stores a weighting coefficient for each calculation. The estimated power table 800 has calculation and weighting coefficient fields. By setting information in each field, it is stored as a record (801-1 to 801-2, etc.). The estimated power table 800 is stored in a storage device such as the RAM 303 and the disk 305, for example.

演算のフィールドには、各演算を示す識別情報が設定される。重み付け係数のフィールドには、各演算に要する電力量に応じた値が設定される。ここでは、例えば、電力量に応じた値を単位実行サイクルごとの消費電力量[W/Cycle]とするが、これに限らず、演算に要する電力量を相対的に特定可能な値であってもよい。   Identification information indicating each calculation is set in the calculation field. In the weighting coefficient field, a value corresponding to the amount of power required for each calculation is set. Here, for example, the value corresponding to the power amount is set to the power consumption amount [W / Cycle] for each unit execution cycle. However, the value is not limited to this, and the power amount required for the calculation can be relatively specified. Also good.

第1生成部503は、第1プログラム400に基づいて、対象回路の動作を模擬する第2プログラム900であって、パスの各々についての回数のカウントを指示する命令文を含む第2プログラム900を生成する処理を実行する。ここでの回数とは、入力データによって第1プログラム400を実行した場合に特定した命令文が実行される回数である。ここでの入力データは、対象回路の設計仕様に基づいて利用者によって作成された情報である。入力データは、例えば、対象回路の入力端子に入力可能な信号値である。ここでは、入力データによって第2プログラム900を実行させることにより、対象回路の動作のシミュレーションが行われる。入力データを含み、各プログラムを実行させるための情報をテストベンチと称する。   The first generation unit 503 is a second program 900 that simulates the operation of the target circuit based on the first program 400, and includes a second program 900 that includes a command statement that instructs counting of the number of times for each path. Execute the process to generate. Here, the number of times is the number of times that the specified statement is executed when the first program 400 is executed with the input data. The input data here is information created by the user based on the design specifications of the target circuit. The input data is, for example, a signal value that can be input to the input terminal of the target circuit. Here, the operation of the target circuit is simulated by executing the second program 900 based on the input data. Information including input data and executing each program is referred to as a test bench.

図9は、回数をカウント可能なAPI記述が追加された第2プログラム例を示す説明図である。第2プログラム900には、回数をカウント可能なAPI(Application Program Interface)記述であるcountpath(行数、計算式、被演算子)が記述される。   FIG. 9 is an explanatory diagram showing a second program example to which an API description capable of counting the number of times is added. The second program 900 describes a countpath (number of lines, calculation formula, operand) which is an API (Application Program Interface) description that can count the number of times.

つぎに、導出部504は、入力データによって第1プログラム400を実行した場合に特定した命令文が指示する演算が行われる回数を導出する。具体的には、導出部504は、APIが挿入された第2プログラム900と、テストベンチと、によってシミュレーションを実行することにより、特定した命令文が実行される回数をカウントする。   Next, the deriving unit 504 derives the number of times that the operation indicated by the specified statement is performed when the first program 400 is executed based on the input data. Specifically, the deriving unit 504 counts the number of times that the specified command statement is executed by executing simulation using the second program 900 in which the API is inserted and the test bench.

算出部505は、導出した回数と、特定した命令文が指示する演算に応じた重み付け係数と、に基づいて、対象回路へ入力データを入力させた場合に特定した命令文が指示する演算に要する電力量の指標値を算出する。   The calculation unit 505 requires an operation specified by the specified instruction when input data is input to the target circuit based on the derived number of times and a weighting coefficient corresponding to the operation specified by the specified instruction. An index value for the electric energy is calculated.

図10は、実行結果例を示す説明図である。実行結果1000では、理解の容易化のために、“i”の値と“op1”の値とを併せて示す。例えば、パスPath[0]の命令文が実行された回数は3回であり、Path[1]の命令文が実行された回数は2である。   FIG. 10 is an explanatory diagram illustrating an example of the execution result. In the execution result 1000, the value of “i” and the value of “op1” are shown together for easy understanding. For example, the number of times the command statement of the path Path [0] is executed is 3, and the number of times the command statement of the Path [1] is executed is 2.

算出部505は、導出された回数と命令文が指示する演算に要する電力量に応じた値とを乗算した指標値を算出する。上述したように、演算に要する電力量に応じた値は重み付け係数である。例えば、各パスの指標値は以下のようになる。   The calculating unit 505 calculates an index value obtained by multiplying the derived number by a value corresponding to the amount of power required for the operation indicated by the command statement. As described above, the value corresponding to the amount of power required for the calculation is a weighting coefficient. For example, the index value of each path is as follows.

パスPath[0]の指標値=2×3=6
パスPath[1]の指標値=6×2=12
Index value of path Path [0] = 2 × 3 = 6
Index value of path Path [1] = 6 × 2 = 12

図11は、静的電力解析の他の例を示す説明図である。第1特定部501は、パスの各々について取得された重み付け係数の合計値に対するパスごとの重み付け係数の比率を特定してもよい。図11に示すプログラム例は、上述した第1プログラム400と異なる。理解の容易化のために、図11中のCDFGにおける四角はFF(Flip Flop)を示す。図11の例では、重み付け係数の合計を100[%]とした場合の相対比RP(Relative Power)が特定される。このように、パスPAの相対比RPは10であり、パスPBの相対比RPは50であり、パスPCの相対比RPは40である。これにより、図の例では、パスPBが最も高い相対比RPであることが特定される。   FIG. 11 is an explanatory diagram illustrating another example of static power analysis. The first specifying unit 501 may specify the ratio of the weighting factor for each path to the total value of the weighting factors acquired for each path. The example program shown in FIG. 11 is different from the first program 400 described above. For easy understanding, a square in CDFG in FIG. 11 indicates FF (Flip Flop). In the example of FIG. 11, a relative ratio RP (relative power) is specified when the sum of the weighting coefficients is 100 [%]. Thus, the relative ratio RP of the path PA is 10, the relative ratio RP of the path PB is 50, and the relative ratio RP of the path PC is 40. Thereby, in the example of a figure, it is specified that the path | pass PB is the highest relative ratio RP.

図12は、動的電力解析の他の例を示す説明図である。図12の例は、算出部505は、導出した回数に応じた値と、演算に要する電力量に応じた値と、を乗算した指標値を算出する。図12の例では、導出した回数に応じた値は、動作率である。そのため、動作率の合計は100[%]となる。パスPAの動作率は、10[%]であり、パスPBの動作率は、30[%]であり、パスPCの動作率は60[%]である。   FIG. 12 is an explanatory diagram illustrating another example of dynamic power analysis. In the example of FIG. 12, the calculation unit 505 calculates an index value obtained by multiplying the value according to the derived number of times by the value according to the amount of power required for the calculation. In the example of FIG. 12, the value corresponding to the derived number is the operation rate. Therefore, the total operation rate is 100 [%]. The operation rate of the path PA is 10 [%], the operation rate of the path PB is 30 [%], and the operation rate of the path PC is 60 [%].

例えば、パスPAの指標値は100であり、パスPBの指標値は1500であり、パスPCの指標値は2400である。このように、相対比PRについては、パスPBが最も大きいが、パスPCは実行された回数が多いため、指標値はパスPCが最も大きくなる。   For example, the index value of the path PA is 100, the index value of the path PB is 1500, and the index value of the path PC is 2400. As described above, regarding the relative ratio PR, the path PB is the largest, but since the pass PC is executed many times, the index value is the largest for the path PC.

つぎに、第1判断部506は、特定されたパスの各々について算出された指標値が第1所定条件を満たすか否かを判断する。ここでは、第1所定条件は、予め利用者によって定められ、ディスク305やRAM303などの記憶装置に記憶される。第1所定条件は、例えば、指標値が閾値以上であるか否かである。例えば、第1判断部506は、指標値が閾値以上であるか否かを判断する。閾値については例えば、利用者によって定められ、ディスク305やRAM303などの記憶装置に記憶される。また、ここでは、閾値は、PJと表す。   Next, the first determination unit 506 determines whether or not the index value calculated for each identified path satisfies a first predetermined condition. Here, the first predetermined condition is determined in advance by the user and stored in a storage device such as the disk 305 or the RAM 303. The first predetermined condition is, for example, whether or not the index value is greater than or equal to a threshold value. For example, the first determination unit 506 determines whether or not the index value is greater than or equal to a threshold value. For example, the threshold is determined by the user and stored in a storage device such as the disk 305 or the RAM 303. Here, the threshold is expressed as PJ.

第2生成部509は、第1判断部506によって指標値が閾値PJ以上であると判断されたパスの命令文を置き換えた第3プログラムを生成する。また、第1判断部506によって指標値が所定条件を満たすと判断されたパスについては、最適化の対象パスとして出力される。ここでは、例えば、閾値PJを10とし、パスPath[1]が最適化の対象パスOpt_Pathとして出力される。算出された指標値と、演算式と、命令文の識別情報と、演算式に与える引数と、が関連付けられて最適化の対象パスとして記憶される。命令文の識別情報は、例えば、第1プログラム400内の先頭から数えた場合の行数である。   The second generation unit 509 generates a third program in which the command statement of the path for which the first determination unit 506 has determined that the index value is greater than or equal to the threshold value PJ. A path for which the index value is determined to satisfy the predetermined condition by the first determination unit 506 is output as an optimization target path. Here, for example, the threshold PJ is set to 10, and the path Path [1] is output as the optimization target path Opt_Path. The calculated index value, the arithmetic expression, the identification information of the command statement, and the argument given to the arithmetic expression are associated and stored as an optimization target path. The identification information of the command statement is, for example, the number of lines when counted from the top in the first program 400.

例えば、第2生成部509は、第1プログラム400に基づいて第3プログラムを生成する。第3プログラムは、例えば、命令文のうち算出した指標値が第1所定条件を満たす第1命令文を、特定種類の演算と等価な演算を指示する命令文に置き換えたプログラムである。また、第3プログラムは、第1命令文を、第1命令文と、第1命令文が指示する演算と等価な演算を指示する第2命令文と、のうちのいずれかを第2所定条件に応じて実行することを指示する命令文に置き換えたプログラムである。   For example, the second generation unit 509 generates a third program based on the first program 400. The third program is, for example, a program in which a first command statement in which a calculated index value satisfies a first predetermined condition in a command statement is replaced with a command statement instructing an operation equivalent to a specific type of operation. Further, the third program sets the first imperative sentence as a second predetermined condition based on any one of the first imperative sentence and a second imperative sentence that instructs an operation equivalent to the operation indicated by the first imperative sentence. This is a program that is replaced with a command statement instructing execution in accordance with the above.

また、第3プログラムについては、命令文の置き換えを行うか否かを判断した後に、生成してもよい。そのため、等価な演算がシフト演算である場合に、第2特定部507は、入力データによって第1プログラム400を実行した場合に行われる特定種類の演算のうち被演算子となる値が2のべき乗である特定種類の演算の割合を特定する。そして、第2判断部508は、特定した割合が第3所定条件を満たすか否かを判断する。   The third program may be generated after determining whether or not to replace the command statement. Therefore, when the equivalent operation is a shift operation, the second specifying unit 507 sets the operand value to a power of 2 among specific types of operations performed when the first program 400 is executed with input data. Identify the percentage of certain types of operations. Then, the second determination unit 508 determines whether or not the specified ratio satisfies the third predetermined condition.

具体的には、第2特定部507は、入力データによって第2プログラム900を実行することによるシミュレーションにおいてパスの命令文の被演算子となる値の組み合わせである被演算子の入力データを取得する。そして、第2特定部507は、被演算子となる値のうち2のべき乗である数をカウントする。   Specifically, the second specifying unit 507 acquires the input data of the operand that is a combination of values that are the operands of the path statement in the simulation by executing the second program 900 with the input data. . Then, the second specifying unit 507 counts the number that is a power of 2 among the values that are operands.

図13は、2のべき乗の特定例を示す説明図である。被演算子の入力データ1300は、第1プログラム400内の11行目に記述された命令文の被演算子であるaとbとのそれぞれについて入力される値の組み合わせである。   FIG. 13 is an explanatory diagram showing a specific example of a power of 2. The input data 1300 of the operand is a combination of values input for each of a and b that are operands of the statement described in the eleventh line in the first program 400.

表1301は、被演算子aの2のべき乗と、被演算子bの2のべき乗と、被演算子aと被演算子bのいずれも2のべき乗でない回数Mと、被演算子aまたは被演算子bのいずれかが2のべき乗である回数Sと、を示す。回数Mは最終的に3であり、回数Sは最終的に7である。   Table 1301 shows the power of 2 of the operand a, the power of 2 of the operand b, the number M of times that neither the operand a nor the operand b is a power of 2, and the operand a or operand. The number S of times when any of the operators b is a power of 2. The number of times M is finally 3 and the number of times S is finally 7.

つぎに、第2特定部507は、論理変更パターン用ライブラリから、最適化の対象パスについての演算に対応する論理変更の候補を引く。そして、第2特定部507は、論理変更の候補についての判定式を取得する。   Next, the second specifying unit 507 subtracts a logical change candidate corresponding to the calculation for the optimization target path from the logical change pattern library. Then, the second specifying unit 507 acquires a determination formula for the logical change candidate.

図14は、論理変更パターン用ライブラリ例を示す説明図である。論理変更パターン用ライブラリ1400は、論理変更の候補、判定式のフィールドを有する。各フィールドに情報が設定されることにより、レコード(1401−1〜1401−3など)として記憶される。論理変更パターン用ライブラリ1400はディスク305などの記憶装置に記憶される。   FIG. 14 is an explanatory diagram of an example of a logical change pattern library. The logic change pattern library 1400 includes fields for logic change candidates and determination formulas. By setting information in each field, it is stored as a record (1401-1 to 1401-3, etc.). The logical change pattern library 1400 is stored in a storage device such as the disk 305.

論理変更パターン用ライブラリ1400によれば、例えば、乗算“*”は加算“+”やシフト演算“<<”に置き換えられ、除算“/”はシフト演算“>>”置き換えられる。また、図示していないが加算“+”は排他的論理和“xor”に置き換えられる。“−”は“xor”に置き換えられる。   According to the logic change pattern library 1400, for example, multiplication “*” is replaced with addition “+” or shift operation “<<”, and division “/” is replaced with shift operation “>>”. Although not shown, the addition “+” is replaced with the exclusive OR “xor”. “−” Is replaced with “xor”.

ここでは、第2特定部507は、パスPath[1]の演算は乗算“*”であるため、例えば、変換候補[*→<<]と対応付けられた判定式を取得する。例えば、第2判断部508は、判定式の各引数に値を代入することにより、判定式が成り立つか否かを判断する。判定式の各引数は以下に示す通りである。dは、2のべき乗である割合であり、(1−d)は、2のべき乗でない割合である。変換候補[*→<<]の例では、dはシフト演算“<<”が実行される割合であり、(1−d)は乗算“×”が実行される割合である。W[ ]は[ ]内の演算の重み付け係数である。上述したように、例えばW[ ]の単位は[W/Cycle]である。cyc[ ]は[ ]内の乗算の実行サイクル数である。各演算の種類ごとに実行サイクル数は、予め定められてあり、ディスク305などの記憶装置に記憶されてある。または、実行サイクル数は、予め判定式に代入してあってもよい。除算の実行サイクル数は16であるが、それ以外の演算の実行サイクル数は1である。condは2のべき乗である条件であり、後述する第2所定条件である。W[cond]は2のべき乗である条件判定のための論理回路(以下、「条件判定回路」と称する。)の重み付け係数である。ここでは、条件判定回路がビット演算回路または減算回路である場合、重み付け係数は2とする。cyc[cond]は条件判定回路の実行サイクル数である。条件判定回路がビット演算回路である場合、1とする。条件判定回路が減算回路の場合、見積もり電力テーブル800に記憶された減算“−”の重み付け係数が利用される。以下に本実施の形態における具体例を示す。   Here, since the calculation of the path Path [1] is multiplication “*”, the second specifying unit 507 acquires a determination formula associated with the conversion candidate [* → <<], for example. For example, the second determination unit 508 determines whether or not the determination formula is satisfied by assigning a value to each argument of the determination formula. Each argument of the judgment formula is as follows. d is a ratio that is a power of 2, and (1-d) is a ratio that is not a power of 2. In the example of the conversion candidate [* → <<], d is the rate at which the shift operation “<<” is executed, and (1-d) is the rate at which the multiplication “×” is executed. W [] is a weighting coefficient for the calculation in []. As described above, for example, the unit of W [] is [W / Cycle]. cyc [] is the number of execution cycles of multiplication in []. The number of execution cycles for each type of operation is determined in advance and stored in a storage device such as the disk 305. Alternatively, the number of execution cycles may be previously substituted into the determination formula. The number of execution cycles for division is 16, but the number of execution cycles for other operations is 1. cond is a condition that is a power of 2, and is a second predetermined condition described later. W [cond] is a weighting coefficient of a logic circuit for condition determination (hereinafter referred to as “condition determination circuit”) that is a power of two. Here, when the condition determination circuit is a bit operation circuit or a subtraction circuit, the weighting coefficient is 2. cyc [cond] is the number of execution cycles of the condition determination circuit. When the condition determination circuit is a bit operation circuit, it is 1. When the condition determination circuit is a subtraction circuit, the subtraction “−” weighting coefficient stored in the estimated power table 800 is used. Specific examples in this embodiment will be shown below.

d=S/(S+M)=7/(7+3)=0.7
1−d=0.3
W[*]=6
cyc[*]=1
W[<<]=1
cyc[<<]=1
W[cond]=2
cyc[cond]=1
d = S / (S + M) = 7 / (7 + 3) = 0.7
1-d = 0.3
W [*] = 6
cyc [*] = 1
W [<<] = 1
cyc [<<] = 1
W [cond] = 2
cyc [cond] = 1

第2判断部508は、各引数の値が判定式に代入されると、左辺が6となり、右辺が2.5となるため、判定式が成り立つ。そこで、判定式が成り立つ場合に、第2生成部509は、上述したように第3プログラムを生成する。また、第3プログラムは、指標値が第1所定条件を満たす第1命令文を、第1命令文と、第1命令文が指示する演算と等価な演算を指示する第2命令文と、のうちのいずれかを第2所定条件に応じて実行することを指示する命令文に置き換えたプログラムである。   When the value of each argument is substituted into the determination formula, the second determination unit 508 holds the determination formula because the left side is 6 and the right side is 2.5. Therefore, when the determination formula holds, the second generation unit 509 generates the third program as described above. In addition, the third program includes a first command statement whose index value satisfies the first predetermined condition, a first command statement, and a second command statement that instructs an operation equivalent to the operation indicated by the first command statement. This is a program in which one of them is replaced with a command statement instructing execution according to the second predetermined condition.

例えば、第1所定条件を満たす命令文が指示する演算が乗算であり、等価な演算がシフト演算である場合において、第2所定条件は、乗算において被演算子となる値が2のべき乗であるか否かである。第2所定条件に応じて実行することを指示する命令文は、被演算子となる値が2のべき乗である場合に等価な演算を指示する命令文を実行することを指示し、被演算子となる値が2のべき乗でない場合に第1所定条件を満たす命令文を実行することを指示する。   For example, when the operation indicated by the statement that satisfies the first predetermined condition is multiplication and the equivalent operation is a shift operation, the second predetermined condition is that the value that becomes the operand in the multiplication is a power of 2 Whether or not. The instruction statement instructing execution according to the second predetermined condition indicates that the instruction statement instructing an equivalent operation is executed when the value to be the operand is a power of 2, and the operand When the value to be is not a power of 2, it is instructed to execute a statement that satisfies the first predetermined condition.

図15は、置換前後のプログラム例1を示す説明図である。左側が置換前の第1プログラム400であり、右側が置換後の第3プログラム1500である。例えば、第3プログラム1500には、シフト数を被演算子aとするシフト演算“<<”を指示する命令文と、シフト数を被演算子bとしてシフト演算“<<”を指示する命令と、乗算“*”を指示する命令文と、が記述されてある。また第3プログラム1500には、if文の条件に応じていずれかの命令文が実行される。if文の条件は、cond()関数の結果によって定まる。   FIG. 15 is an explanatory diagram of Program Example 1 before and after replacement. The left side is the first program 400 before replacement, and the right side is the third program 1500 after replacement. For example, the third program 1500 includes a command statement that instructs a shift operation “<<” with a shift number as an operand a, and a command that instructs a shift operation “<<” with a shift number as an operand b. , And a command statement for instructing multiplication “*” are described. In the third program 1500, any command statement is executed according to the condition of the if statement. The condition of the “if” statement is determined by the result of the cond () function.

cond()関数によれば、被演算子aの値2のべき乗であれば、シフト数を被演算子aの値とするシフト演算“<<”を指示する命令が実行される。cond()関数によれば、被演算子bの値が2のべき乗であれば、シフト数を被演算子bの値とするシフト演算“<<”を指示する命令が実行される。cond()関数によれば、被演算子aと被演算子bのいずれの値も2のべき乗でなければ、乗算“*”を指示する命令が実行される。   According to the cond () function, if it is a power of the value 2 of the operand a, an instruction for instructing a shift operation “<<” with the shift number as the value of the operand a is executed. According to the cond () function, if the value of the operand b is a power of 2, an instruction for instructing a shift operation “<<” using the shift number as the value of the operand b is executed. According to the cond () function, if neither of the operands a and b is a power of 2, an instruction for instructing multiplication “*” is executed.

また、例えば、第1所定条件を満たす命令文が指示する演算が除算であり、等価な演算がシフト演算である場合において、第2所定条件は、除算において除数となる値が2のべき乗であるか否かである。例えば、第2所定条件に応じて実行することを指示する命令文は、除数となる値が2のべき乗である場合に等価な演算を指示する命令文を実行することを指示し、除数となる値が2のべき乗でない場合に第1所定条件を満たす命令文を実行することを指示する。   Also, for example, when the operation indicated by the statement that satisfies the first predetermined condition is division and the equivalent operation is a shift operation, the second predetermined condition is that the value that is a divisor in the division is a power of 2 Whether or not. For example, a command statement instructing execution in accordance with the second predetermined condition instructs to execute a command statement instructing an equivalent operation when the value to be a divisor is a power of 2 and becomes a divisor. When the value is not a power of 2, it instructs to execute a statement that satisfies the first predetermined condition.

図16は、置換前後のプログラム例2を示す説明図である。左側が置換前の第1プログラム1600であり、右側が置換後の第3プログラム1601である。第3プログラム1601では、シフト数を被演算子Yとしてシフト演算“<<”を指示する命令と、除算“/”を指示する命令と、が記述されてあり、cond()関数によっていずれが実行されるかが定まる。図の下側には、第1プログラム1600と第3プログラム1601との関係を示す。   FIG. 16 is an explanatory diagram showing a program example 2 before and after replacement. The left side is the first program 1600 before replacement, and the right side is the third program 1601 after replacement. The third program 1601 describes an instruction for instructing a shift operation “<<” and an instruction for instructing a division “/” with the number of shifts as the operand Y, which is executed by the cond () function. It is decided whether to be done. The lower side of the figure shows the relationship between the first program 1600 and the third program 1601.

cond()関数によれば、被除数である被演算子Yの値が2のべき乗であれば、シフト数を被演算子Yの値とするシフト演算“>>”を指示する命令が実行される。cond()関数によれば、bが2のべき乗であれば、シフト数を被演算子bの値とするシフト演算“>>”を指示する命令が実行される。cond()関数によれば、被除数である被演算子Yの値が2のべき乗でなければ、除算“/”を指示する命令が実行される。   According to the cond () function, if the value of the operand Y that is the dividend is a power of 2, an instruction that instructs a shift operation “>>” that uses the shift number as the value of the operand Y is executed. . According to the cond () function, if b is a power of 2, an instruction that instructs a shift operation “>>” with the shift number as the value of the operand b is executed. According to the cond () function, if the value of the operand Y, which is the dividend, is not a power of 2, an instruction for instructing division “/” is executed.

図17は、置換前後のプログラム例2についてのCDFG例を示す説明図である。図18は、置換前後のプログラム例2についてのRTL例を示す説明図である。例えば、置換前の第1プログラム1600では、除算“/”の重み付け係数が8であり、回数がn回であると、消費電力量の指標値は8nである。置換後の第3プログラム1601では、例えば、cond()関数において、除算“/”の重み付け係数が8であり、シフト演算“>>”の重み付け係数が1であるため、除算“/”が選択される確率が30[%]であると、指標値は3.1n(=0.7×n×1+0.3×n×8)である。このような場合、2倍近く消費電力量を低減可能となる。   FIG. 17 is an explanatory diagram showing a CDFG example for the program example 2 before and after replacement. FIG. 18 is an explanatory diagram showing an example of RTL for program example 2 before and after replacement. For example, in the first program 1600 before replacement, when the weighting coefficient of division “/” is 8 and the number of times is n, the index value of the power consumption is 8n. In the third program 1601 after replacement, for example, in the cond () function, the weighting coefficient of division “/” is 8, and the weighting coefficient of shift operation “>>” is 1, so division “/” is selected. If the probability is 30 [%], the index value is 3.1 n (= 0.7 × n × 1 + 0.3 × n × 8). In such a case, the power consumption can be reduced nearly twice.

(設計支援装置100が行う最適化処理手順)
図19は、設計支援装置が行う全体の処理手順例を示すフローチャートである。本実施の形態では、設計支援装置100が行う処理手順を第1フェーズから第3フェーズの3つに分けて説明する。
(Optimization processing procedure performed by the design support apparatus 100)
FIG. 19 is a flowchart illustrating an example of an overall processing procedure performed by the design support apparatus. In the present embodiment, the processing procedure performed by the design support apparatus 100 will be described by dividing it into three phases from the first phase to the third phase.

設計支援装置100は、繰り返し回数=0とする(ステップS1901)。設計支援装置100は、繰り返し回数=繰り返し回数+1とする(ステップS1902)。設計支援装置100は、第1プログラム400に基づいて、静的電力解析を行う(ステップS1903)。つぎに、設計支援装置100は、テストベンチ1900により第1プログラム400を実行することにより、動的電力解析を行う(ステップS1904)。テストベンチ1900は、上述したように、対象回路に入力可能な入力データ102を含む。設計支援装置100は、シミュレーション結果に基づいて、最適化箇所を特定する(ステップS1905)。   The design support apparatus 100 sets the number of repetitions = 0 (step S1901). The design support apparatus 100 sets the number of repetitions = the number of repetitions + 1 (step S1902). The design support apparatus 100 performs static power analysis based on the first program 400 (step S1903). Next, the design support apparatus 100 performs dynamic power analysis by executing the first program 400 using the test bench 1900 (step S1904). As described above, the test bench 1900 includes the input data 102 that can be input to the target circuit. The design support apparatus 100 identifies an optimization location based on the simulation result (step S1905).

設計支援装置100は、特定した最適化箇所について最適化を行う(ステップS1906)。設計支援装置100は、すべて最適化済みであるか否かを判断する(ステップS1907)。最適化済みでないと判断された場合(ステップS1907:No)、設計支援装置100は、ステップS1906へ戻る。すべて最適化済みであると判断された場合(ステップS1907:Yes)、設計支援装置100は、繰り返し回数が所定数Xより大きいか否かを判断する(ステップS1908)。所定数Xについては、予めディスク305やRAM303などに記憶されてある。   The design support apparatus 100 optimizes the identified optimization location (step S1906). The design support apparatus 100 determines whether all have been optimized (step S1907). If it is determined that the optimization has not been completed (step S1907: NO), the design support apparatus 100 returns to step S1906. If it is determined that all have been optimized (step S1907: YES), the design support apparatus 100 determines whether the number of iterations is greater than a predetermined number X (step S1908). The predetermined number X is stored in advance in the disk 305, the RAM 303, or the like.

繰り返し回数が所定数X以下である場合(ステップS1908:No)、設計支援装置100は、ステップS1902へ戻る。これにより、最適化されたプログラムについて再度最適化を行うことができる。繰り返し回数が所定数Xより多い場合(ステップS1908:Yes)、設計支援装置100は、一連の処理を終了する。このように、所定数Xとなるまで、最適化されたプログラムを再度最適化の対象とすることができる。   If the number of repetitions is equal to or less than the predetermined number X (step S1908: No), the design support apparatus 100 returns to step S1902. As a result, the optimized program can be optimized again. If the number of repetitions is greater than the predetermined number X (step S1908: Yes), the design support apparatus 100 ends a series of processes. In this way, the optimized program can be retargeted again until the predetermined number X is reached.

図20は、静的および動的電力解析処理手順例を示すフローチャートである。設計支援装置100は、プログラムを取得する(ステップS2001)。つぎに、設計支援装置100は、n=0とする(ステップS2002)。設計支援装置100は、未選択の命令文があるか否かを判断する(ステップS2003)。未選択の命令文がある場合(ステップS2003:Yes)、設計支援装置100は、未選択の命令文から先頭の命令文を選択する(ステップS2004)。つぎに、設計支援装置100は、選択した命令文が特定種類の演算を指示する命令文であるか否かを判断する(ステップS2005)。選択した命令文が特定種類の演算を指示する命令文でない場合(ステップS2005:No)、設計支援装置100は、ステップS2003へ戻る。   FIG. 20 is a flowchart showing an example of a static and dynamic power analysis processing procedure. The design support apparatus 100 acquires a program (step S2001). Next, the design support apparatus 100 sets n = 0 (step S2002). The design support apparatus 100 determines whether there is an unselected command statement (step S2003). When there is an unselected command statement (step S2003: Yes), the design support apparatus 100 selects the first command statement from the unselected command statements (step S2004). Next, the design support apparatus 100 determines whether or not the selected command statement is a command statement instructing a specific type of operation (step S2005). If the selected command statement is not a command statement for instructing a specific type of operation (step S2005: No), the design support apparatus 100 returns to step S2003.

選択した命令文が特定種類の演算を指示する命令文である場合(ステップS2005:Yes)、設計支援装置100は、選択した命令文がFor−Loop文またはWhile文であるか否かを判断する(ステップS2006)。選択した命令文がFor−Loop文またはWhile文のいずれかである場合(ステップS2006:Yes)、設計支援装置100は、ステップS2003へ戻る。   If the selected command statement is a command statement that instructs a specific type of operation (step S2005: Yes), the design support apparatus 100 determines whether the selected command statement is a For-Loop statement or a While statement. (Step S2006). If the selected command statement is either a For-Loop statement or a While statement (step S2006: Yes), the design support apparatus 100 returns to step S2003.

選択した命令文がFor−Loop文およびWhile文のいずれでもない場合(ステップS2006:No)、設計支援装置100は、選択した命令文の識別情報と演算内容と被演算子とを関連付けてパスPath[n]とする(ステップS2007)。設計支援装置100は、n=n+1とする(ステップS2008)。そして、設計支援装置100は、プログラムにカウント用API記述を追加し(ステップS2009)、ステップS2003へ戻る。ステップS2009によって上述した第2プログラム900が得られる。   When the selected command statement is neither a For-Loop statement nor a While statement (step S2006: No), the design support apparatus 100 associates the identification information of the selected command statement, the operation content, and the operand, and passes the path Path. [N] is set (step S2007). The design support apparatus 100 sets n = n + 1 (step S2008). The design support apparatus 100 adds a counting API description to the program (step S2009), and returns to step S2003. In step S2009, the above-described second program 900 is obtained.

未選択の命令文がない場合(ステップS2003:No)、設計支援装置100は、テストベンチによりプログラムを実行する(ステップS2010)。設計支援装置100は、パスPath[0〜n]ごとに、回数と、パスPathの演算についての重み付け係数と、により指標値を算出する(ステップS2011)。設計支援装置100は、算出結果を出力し(ステップS2012)、一連の処理を終了する。   If there is no unselected command statement (step S2003: No), the design support apparatus 100 executes the program using the test bench (step S2010). The design support apparatus 100 calculates an index value for each path Path [0 to n] based on the number of times and the weighting coefficient for the calculation of the path Path (step S2011). The design support apparatus 100 outputs the calculation result (step S2012) and ends the series of processes.

図21は、最適化箇所特定処理手順例を示すフローチャートである。設計支援装置100は、利用者の操作により、閾値PJを設定する(ステップS2101)。つぎに、設計支援装置100は、n=0とする(ステップS2102)。設計支援装置100は、パスPath[n]の指標値を取得する(ステップS2103)。設計支援装置100は、パスPath[n]の指標値>閾値PJであるか否かを判断する(ステップS2104)。   FIG. 21 is a flowchart illustrating an example of an optimization location specifying process procedure. The design support apparatus 100 sets a threshold value PJ by a user operation (step S2101). Next, the design support apparatus 100 sets n = 0 (step S2102). The design support apparatus 100 acquires an index value of the path Path [n] (step S2103). The design support apparatus 100 determines whether or not the index value of the path Path [n]> the threshold value PJ (step S2104).

パスPath[n]の指標値>閾値PJでない場合(ステップS2104:No)、ステップS2106へ移行する。パスPath[n]の指標値>閾値PJである場合(ステップS2104:Yes)、設計支援装置100は、パスPath[n]を最適化対象のパスOpt_Pathとする(ステップS2105)。設計支援装置100は、n<パスの数mであるか否かを判断する(ステップS2106)。n<パスの数mである場合(ステップS2106:Yes)、設計支援装置100は、n+=1とし(ステップS2107)、ステップS2103へ戻る。n<パスの数mでない場合(ステップS2106:No)、設計支援装置100は、一連の処理を終了する。   When the index value of the path Path [n] is not greater than the threshold value PJ (step S2104: No), the process proceeds to step S2106. When the index value of the path Path [n]> the threshold value PJ (step S2104: Yes), the design support apparatus 100 sets the path Path [n] as the optimization target path Opt_Path (step S2105). The design support apparatus 100 determines whether n <the number m of paths (step S2106). If n <the number m of paths (step S2106: Yes), the design support apparatus 100 sets n + = 1 (step S2107) and returns to step S2103. If n <the number m of paths is not satisfied (step S2106: No), the design support apparatus 100 ends a series of processes.

図22は、最適化処理手順例を示すフローチャートである。まず、設計支援装置100は、n=0とする(ステップS2201)。つぎに、設計支援装置100は、最適化対象のパスOpt_Path[n]を取得する(ステップS2202)。そして、設計支援装置100は、パスOpt_Path[n]の被演算子の値である入力データを取得する(ステップS2203)。   FIG. 22 is a flowchart illustrating an exemplary optimization processing procedure. First, the design support apparatus 100 sets n = 0 (step S2201). Next, the design support apparatus 100 acquires the optimization target path Opt_Path [n] (step S2202). The design support apparatus 100 acquires input data that is the value of the operand of the path Opt_Path [n] (step S2203).

設計支援装置100は、入力データの2のべき乗の割合を特定する(ステップS2204)。設計支援装置100は、論理変更パターン用ライブラリ1400から判定式に特定した割合を代入する(ステップS2205)。設計支援装置100は、判定式が成立したか否かを判断する(ステップS2206)。判定式が成立しない場合(ステップS2206:No)、設計支援装置100は、ステップS2208へ移行する。   The design support apparatus 100 specifies the power-of-two ratio of the input data (step S2204). The design support apparatus 100 substitutes the ratio specified in the determination formula from the logic change pattern library 1400 (step S2205). The design support apparatus 100 determines whether or not the determination formula is satisfied (step S2206). If the determination formula is not satisfied (step S2206: NO), the design support apparatus 100 proceeds to step S2208.

判定式が成立する場合(ステップS2206:Yes)、設計支援装置100は、パスOpt_Path[n]の命令文を変換候補に置き換える(ステップS2207)。設計支援装置100は、n<最適化対象のパスの数kであるか否かを判断する(ステップS2208)。n<最適化対象のパスの数kである場合(ステップS2208:Yes)、設計支援装置100は、n+=1とし(ステップS2209)、ステップS2202へ戻る。   When the determination formula is satisfied (step S2206: Yes), the design support apparatus 100 replaces the command statement in the path Opt_Path [n] with a conversion candidate (step S2207). The design support apparatus 100 determines whether or not n <the number k of optimization target paths (step S2208). When n <the number k of paths to be optimized (step S2208: Yes), the design support apparatus 100 sets n + = 1 (step S2209) and returns to step S2202.

n<最適化対象のパスの数kでない場合(ステップS2208:No)、設計支援装置100は、一連の処理を終了する。   If n <the number of paths to be optimized is not k (step S2208: No), the design support apparatus 100 ends a series of processes.

以上説明したように、本実施の形態にかかる設計支援装置100は、対象回路の動作を模擬するプログラム内の特定種類の演算を指示する命令文ごとに、該対象回路の入力データにおける該命令文の実行回数に応じた消費電力量の指標値を算出する。これにより、高位設計において対象回路の使用時の消費電力量を見積もることができる。したがって、設計効率を向上させることができる。   As described above, the design support apparatus 100 according to the present embodiment, for each command statement instructing a specific type of operation in the program that simulates the operation of the target circuit, the command statement in the input data of the target circuit. An index value of the power consumption corresponding to the number of executions of is calculated. This makes it possible to estimate the amount of power consumed when the target circuit is used in high-level design. Therefore, design efficiency can be improved.

また、設計支援装置100は、命令文のうち算出した指標値が第1所定条件を満たす命令文を、所定条件を満たす命令文が指示する演算と等価な演算を指示する命令文に置き換えたプログラムを生成する。これにより、アルゴリズムを変更することにより、低消費電力化を図ることができる。   In addition, the design support apparatus 100 replaces a command statement in which the calculated index value satisfies the first predetermined condition in the command statement with a command statement instructing an operation equivalent to the operation instructed by the command statement satisfying the predetermined condition. Is generated. Thereby, the power consumption can be reduced by changing the algorithm.

また、設計支援装置100は、命令文のうち算出した指標値が第1所定条件を満たす第1命令文を特定する。そして、設計支援装置100は、第1命令文と、第1命令文が指示する演算と等価な演算を指示する第2命令文と、のうちのいずれかを第2所定条件に応じて実行することを指示する命令文に置き換えた第2プログラムを生成する。これにより、複数の命令のいずれかを実行可能なようにアルゴリズムを変更することにより、低消費電力化を図ることができる。   In addition, the design support apparatus 100 identifies the first command statement in which the calculated index value satisfies the first predetermined condition among the command statements. Then, the design support apparatus 100 executes either the first command statement or the second command statement instructing an operation equivalent to the operation instructed by the first command statement according to the second predetermined condition. The second program is generated by replacing the command statement. Thus, the power consumption can be reduced by changing the algorithm so that any one of the plurality of instructions can be executed.

また、演算が除算であり、等価な演算がシフト演算である場合、設計支援装置100は、被除数の値が2のべき乗である場合に第2命令文を実行し、2のべき乗でない場合に第1命令文を実行することを指示する命令文に置き換えた第2プログラムを生成する。これにより、被除数が2のべき乗であれば、除算よりも消費電力量が少ないシフト演算が可能となるため、低消費電力化を図ることができる。   Further, when the operation is division and the equivalent operation is a shift operation, the design support apparatus 100 executes the second command statement when the value of the dividend is a power of 2, and performs the second operation when the value is not a power of 2. A second program replaced with a command statement instructing execution of one command statement is generated. As a result, if the dividend is a power of 2, a shift operation with less power consumption than division is possible, so that low power consumption can be achieved.

また、演算が乗算であり、等価な演算がシフト演算である場合、設計支援装置100は、被演算子の値が2のべき乗である場合に第2命令文を実行し、2のべき乗でない場合に第1命令文を実行することを指示する命令文に置き換えた第2プログラムを生成する。これにより、被演算子が2のべき乗であれば、乗算よりも消費電力量が少ないシフト演算が可能となるため、低消費電力化を図ることができる。   When the operation is multiplication and the equivalent operation is shift operation, the design support apparatus 100 executes the second command statement when the operand value is a power of 2, and the design support apparatus 100 is not a power of 2. A second program is generated in which the first instruction is replaced with an instruction that instructs execution of the first instruction. As a result, if the operand is a power of 2, a shift operation with less power consumption than multiplication is possible, so that power consumption can be reduced.

また、設計支援装置100は、入力データによってプログラムを実行した場合に行われる特定種類の演算のうち被演算子の値が2のべき乗である特定種類の演算の割合により命令文を置き換えたプログラムを生成するか否かを判定する。これにより、命令文を置き換えて低消費電力となるか否かを判断することができる。   In addition, the design support apparatus 100 is a program in which a command statement is replaced by a ratio of a specific type of operation whose operand value is a power of 2 among specific types of operations performed when the program is executed with input data. Determine whether to generate. As a result, it is possible to determine whether the power consumption is reduced by replacing the command statement.

また、設計支援装置100は、特定種類の演算を指示する命令文の各々について、実行される回数のカウントを指示する命令文を含むプログラムを生成する。これにより、プログラムを実行するだけで、特定種類の演算を指示する命令文が実行される回数を導出可能となる。   In addition, the design support apparatus 100 generates a program including a command statement that instructs counting of the number of times of execution for each command statement that specifies a specific type of operation. As a result, it is possible to derive the number of times that a command statement instructing a specific type of operation is executed only by executing the program.

なお、本実施の形態で説明した設計支援方法は、予め用意された設計支援プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。   The design support method described in this embodiment can be realized by executing a design support program prepared in advance on a computer such as a personal computer or a workstation. The design support program is recorded on a computer-readable recording medium such as a magnetic disk, an optical disk, or a USB (Universal Serial Bus) flash memory, and is executed by being read from the recording medium by the computer. The design support program may be distributed through a network such as the Internet.

上述した実施の形態に関し、さらに以下の付記を開示する。   The following additional notes are disclosed with respect to the embodiment described above.

(付記1)コンピュータが、
設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
処理を実行することを特徴とする設計支援方法。
(Supplementary note 1)
For each command statement that designates a specific type of operation in a program that simulates the operation of the design target arithmetic circuit, the command statement is executed when the program is executed with input data that can be input to the arithmetic circuit. Derived the number of times
For each of the statements, calculate a value obtained by multiplying the derived number of times by a value corresponding to the amount of power required for the specific type of operation.
A design support method characterized by executing processing.

(付記2)前記コンピュータが、
前記命令文のうち算出した前記値が所定条件を満たす命令文を、前記所定条件を満たす命令文が指示する演算と等価な演算を指示する命令文に置き換えたプログラムを生成する処理を実行することを特徴とする付記1に記載の設計支援方法。
(Appendix 2) The computer
Executing a process of generating a program in which a command statement in which the calculated value satisfies a predetermined condition in the command statement is replaced with a command statement instructing an operation equivalent to an operation instructed by the command statement satisfying the predetermined condition The design support method according to appendix 1, characterized by:

(付記3)前記コンピュータが、
前記プログラム(以下、「第1プログラム」と称する)に基づいて、前記命令文のうち算出した前記値が第1所定条件を満たす命令文を、前記第1所定条件を満たす命令文と、前記第1所定条件を満たす命令文が指示する演算と等価な演算を指示する命令文と、のうちのいずれかを第2所定条件に応じて実行することを指示する命令文に置き換えた第2プログラムを生成する処理を実行することを特徴とする付記1に記載の設計支援方法。
(Supplementary note 3)
Based on the program (hereinafter, referred to as “first program”), a statement that satisfies the first predetermined condition in which the calculated value among the statements satisfies the first predetermined condition, and the first statement that satisfies the first predetermined condition, A second program in which any one of a command statement instructing an operation equivalent to a calculation instructed by a command statement satisfying a predetermined condition is replaced with a command statement instructing execution according to a second predetermined condition The design support method according to appendix 1, wherein the process of generating is executed.

(付記4)前記第1所定条件を満たす命令文が指示する演算が除算であり、前記等価な演算がシフト演算である場合において、
前記第2所定条件は、前記除算において除数となる値が2のべき乗であるか否かであって、
前記第2所定条件に応じて実行することを指示する命令文は、前記除数となる値が2のべき乗である場合に前記等価な演算を指示する命令文を実行することを指示し、前記除数となる値が2のべき乗でない場合に前記第1所定条件を満たす命令文を実行することを指示することを特徴とする付記3に記載の設計支援方法。
(Supplementary Note 4) In the case where the operation indicated by the statement that satisfies the first predetermined condition is division and the equivalent operation is a shift operation,
The second predetermined condition is whether or not a value to be a divisor in the division is a power of 2,
The command statement instructing execution according to the second predetermined condition indicates that the command statement instructing the equivalent operation is executed when the value to be the divisor is a power of 2, and the divisor 4. The design support method according to appendix 3, wherein an instruction to execute a statement that satisfies the first predetermined condition is given when the value to be is not a power of 2.

(付記5)前記第1所定条件を満たす命令文が指示する演算が乗算であり、前記等価な演算がシフト演算である場合において、
前記第2所定条件は、前記乗算において被演算子となる値が2のべき乗であるか否かであって、
前記第2所定条件に応じて実行することを指示する命令文は、前記被演算子となる値が2のべき乗である場合に前記等価な演算を指示する命令文を実行することを指示し、前記被演算子となる値が2のべき乗でない場合に前記第1所定条件を満たす命令文を実行することを指示することを特徴とする付記3に記載の設計支援方法。
(Supplementary Note 5) In the case where the operation indicated by the statement that satisfies the first predetermined condition is multiplication and the equivalent operation is a shift operation,
The second predetermined condition is whether or not a value to be an operand in the multiplication is a power of 2,
The command statement instructing execution according to the second predetermined condition instructs to execute the command statement instructing the equivalent operation when the value to be the operand is a power of two, The design support method according to appendix 3, wherein an instruction to execute a statement that satisfies the first predetermined condition is executed when the value to be the operand is not a power of 2.

(付記6)前記等価な演算がシフト演算である場合において、
前記コンピュータが、
前記入力データによって前記第1プログラムを実行した場合に行われる前記特定種類の演算のうち被演算子となる値が2のべき乗である前記特定種類の演算の割合を特定する処理を実行し、
前記第2プログラムを生成する処理では、特定した前記割合が第3所定条件を満たさない場合に前記第2プログラムを生成しないことを特徴とする付記3〜5のいずれか一つに記載の設計支援方法。
(Supplementary Note 6) In the case where the equivalent operation is a shift operation,
The computer is
Executing a process of specifying a ratio of the specific type of operation whose value to be an operand is a power of 2 among the specific type of operation performed when the first program is executed by the input data;
In the process of generating the second program, the second program is not generated when the specified ratio does not satisfy the third predetermined condition. The design support according to any one of appendices 3 to 5, Method.

(付記7)前記コンピュータが、
前記プログラム(以下「第1プログラム」と称する)から、前記特定種類の演算を指示する命令文を特定し、
前記第1プログラムに基づいて、前記演算回路の動作を模擬する第2プログラムであって、特定した前記命令文の各々についての前記回数のカウントを指示する命令文を含む第2プログラムを生成する処理を実行し、
前記回数を導出する処理では、前記入力データによって前記第2プログラムを実行することにより、特定した前記命令文の各々について前記回数を導出することを特徴とする付記1〜6のいずれか一つに記載の設計支援方法。
(Supplementary note 7)
From the program (hereinafter referred to as the “first program”), a command statement for instructing the specific type of operation is specified,
A process of generating a second program that simulates the operation of the arithmetic circuit based on the first program and includes a command statement that instructs the counting of the number of times for each of the specified command statements Run
In the process of deriving the number of times, the number of times is derived for each of the specified statements by executing the second program with the input data. The design support method described.

(付記8)コンピュータに、
設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
処理を実行させることを特徴とする設計支援プログラム。
(Appendix 8)
For each command statement that designates a specific type of operation in a program that simulates the operation of the design target arithmetic circuit, the command statement is executed when the program is executed with input data that can be input to the arithmetic circuit. Derived the number of times
For each of the statements, calculate a value obtained by multiplying the derived number of times by a value corresponding to the amount of power required for the specific type of operation.
A design support program characterized by causing processing to be executed.

(付記9)設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出する導出部と、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する算出部と、
を有することを特徴とする設計支援装置。
(Supplementary note 9) When each of the command statements for designating a specific type of calculation among the programs simulating the operation of the arithmetic circuit to be designed is executed by executing the program with input data that can be input to the calculation circuit, A derivation unit for deriving the number of times
For each of the statements, a calculation unit that calculates a value obtained by multiplying the derived number of times by a value corresponding to the amount of power required for the specific type of operation;
A design support apparatus comprising:

(付記10)設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
処理をコンピュータに実行させる設計支援プログラムを記録したことを特徴とする記録媒体。
(Supplementary Note 10) For each command statement that instructs a specific type of calculation among programs that simulate the operation of the arithmetic circuit to be designed, the command statement is executed when the program is executed with input data that can be input to the calculation circuit. Deriving the number of times
For each of the statements, calculate a value obtained by multiplying the derived number of times by a value corresponding to the amount of power required for the specific type of operation.
A recording medium on which a design support program for causing a computer to execute processing is recorded.

100 設計支援装置
400,1600 第1プログラム
501 第1特定部
503 第1生成部
504 導出部
505 算出部
506 第1判断部
507 第2特定部
508 第2判断部
509 第2生成部
800 見積もり電力テーブル
900 第2プログラム
1000 実行結果
1500,1601 第3プログラム
DESCRIPTION OF SYMBOLS 100 Design support apparatus 400,1600 1st program 501 1st specific | specification part 503 1st production | generation part 504 Derivation part 505 Calculation part 506 1st judgment part 507 2nd specification part 508 2nd judgment part 509 2nd production | generation part 800 Estimated electric power table 900 Second program 1000 Execution result 1500, 1601 Third program

Claims (5)

コンピュータが、
設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
処理を実行することを特徴とする設計支援方法。
Computer
For each command statement that designates a specific type of operation in a program that simulates the operation of the design target arithmetic circuit, the command statement is executed when the program is executed with input data that can be input to the arithmetic circuit. Derived the number of times
For each of the statements, calculate a value obtained by multiplying the derived number of times by a value corresponding to the amount of power required for the specific type of operation.
A design support method characterized by executing processing.
前記コンピュータが、
前記プログラム(以下、「第1プログラム」と称する)に基づいて、前記命令文のうち算出した前記値が第1所定条件を満たす命令文を、前記第1所定条件を満たす命令文と、前記第1所定条件を満たす命令文が指示する演算と等価な演算を指示する命令文と、のうちのいずれかを第2所定条件に応じて実行することを指示する命令文に置き換えた第2プログラムを生成する処理を実行することを特徴とする請求項1に記載の設計支援方法。
The computer is
Based on the program (hereinafter, referred to as “first program”), a statement that satisfies the first predetermined condition in which the calculated value among the statements satisfies the first predetermined condition, and the first statement that satisfies the first predetermined condition, A second program in which any one of a command statement instructing an operation equivalent to a calculation instructed by a command statement satisfying a predetermined condition is replaced with a command statement instructing execution according to a second predetermined condition The design support method according to claim 1, wherein the generation process is executed.
前記等価な演算がシフト演算である場合において、
前記コンピュータが、
前記入力データによって前記第1プログラムを実行した場合に行われる前記特定種類の演算のうち被演算子となる値が2のべき乗である前記特定種類の演算の割合を特定する処理を実行し、
前記第2プログラムを生成する処理では、特定した前記割合が第3所定条件を満たさない場合に前記第2プログラムを生成しないことを特徴とする請求項2に記載の設計支援方法。
In the case where the equivalent operation is a shift operation,
The computer is
Executing a process of specifying a ratio of the specific type of operation whose value to be an operand is a power of 2 among the specific type of operation performed when the first program is executed by the input data;
The design support method according to claim 2, wherein in the process of generating the second program, the second program is not generated when the specified ratio does not satisfy a third predetermined condition.
コンピュータに、
設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
処理を実行させることを特徴とする設計支援プログラム。
On the computer,
For each command statement that designates a specific type of operation in a program that simulates the operation of the design target arithmetic circuit, the command statement is executed when the program is executed with input data that can be input to the arithmetic circuit. Derived the number of times
For each of the statements, calculate a value obtained by multiplying the derived number of times by a value corresponding to the amount of power required for the specific type of operation.
A design support program characterized by causing processing to be executed.
設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出する導出部と、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する算出部と、
を有することを特徴とする設計支援装置。
For each command statement that designates a specific type of operation in a program that simulates the operation of the design target arithmetic circuit, the command statement is executed when the program is executed with input data that can be input to the arithmetic circuit. A derivation unit for deriving the number of times;
For each of the statements, a calculation unit that calculates a value obtained by multiplying the derived number of times by a value corresponding to the amount of power required for the specific type of operation;
A design support apparatus comprising:
JP2013164627A 2013-08-07 2013-08-07 Design support method, design support program, and design support apparatus Expired - Fee Related JP6146197B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013164627A JP6146197B2 (en) 2013-08-07 2013-08-07 Design support method, design support program, and design support apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013164627A JP6146197B2 (en) 2013-08-07 2013-08-07 Design support method, design support program, and design support apparatus

Publications (2)

Publication Number Publication Date
JP2015035033A true JP2015035033A (en) 2015-02-19
JP6146197B2 JP6146197B2 (en) 2017-06-14

Family

ID=52543538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013164627A Expired - Fee Related JP6146197B2 (en) 2013-08-07 2013-08-07 Design support method, design support program, and design support apparatus

Country Status (1)

Country Link
JP (1) JP6146197B2 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218731A (en) * 1996-02-08 1997-08-19 Toshiba Corp Power estimator for micro processor
JPH10254944A (en) * 1997-01-08 1998-09-25 Toshiba Corp Device, method for power simulation and mechanically readable recording medium recording power simulation program
JPH11232147A (en) * 1998-02-16 1999-08-27 Toshiba Corp Method and device for power estimation, and machine-redable recording medium having recorded power estmation program
JP2005216177A (en) * 2004-01-30 2005-08-11 Toshiba Corp Configurable processor design apparatus and method, library optimizing method, processor, and method of manufacturing semiconductor device comprising processor
WO2012001779A1 (en) * 2010-06-30 2012-01-05 富士通株式会社 Usage amount analysis method for information processing device, information processing system, and program therefor
JP2013084178A (en) * 2011-10-12 2013-05-09 Fujitsu Ltd Simulation device, method and program

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218731A (en) * 1996-02-08 1997-08-19 Toshiba Corp Power estimator for micro processor
JPH10254944A (en) * 1997-01-08 1998-09-25 Toshiba Corp Device, method for power simulation and mechanically readable recording medium recording power simulation program
JPH11232147A (en) * 1998-02-16 1999-08-27 Toshiba Corp Method and device for power estimation, and machine-redable recording medium having recorded power estmation program
JP2005216177A (en) * 2004-01-30 2005-08-11 Toshiba Corp Configurable processor design apparatus and method, library optimizing method, processor, and method of manufacturing semiconductor device comprising processor
WO2012001779A1 (en) * 2010-06-30 2012-01-05 富士通株式会社 Usage amount analysis method for information processing device, information processing system, and program therefor
JP2013084178A (en) * 2011-10-12 2013-05-09 Fujitsu Ltd Simulation device, method and program

Also Published As

Publication number Publication date
JP6146197B2 (en) 2017-06-14

Similar Documents

Publication Publication Date Title
CN104573169B (en) With the Method and kit for of automatic production line operational capacity integrated design circuit
Castro-Godínez et al. Compiler-driven error analysis for designing approximate accelerators
US10078717B1 (en) Systems and methods for estimating performance characteristics of hardware implementations of executable models
Park et al. A multi-granularity power modeling methodology for embedded processors
Ghiasi et al. A unified theory of timing budget management
Choi et al. HLS-based optimization and design space exploration for applications with variable loop bounds
KR20130107344A (en) Tool generator
Van Ertvelde et al. Benchmark synthesis for architecture and compiler exploration
Stammermann et al. System level optimization and design space exploration for low power
Gao et al. Automatically optimizing the latency, area, and accuracy of c programs for high-level synthesis
Yu et al. TILA: Timing-driven incremental layer assignment
Leipnitz et al. High-level synthesis of resource-oriented approximate designs for FPGAs
Richa et al. High-level power estimation techniques in embedded systems hardware: an overview
Lu et al. Performance modeling for mpi applications with low overhead fine-grained profiling
Tariq et al. High-level annotation of routing congestion for xilinx vivado hls designs
JP6146197B2 (en) Design support method, design support program, and design support apparatus
Liang et al. AMF-Placer 2.0: Open source timing-driven analytical mixed-size placer for large-scale heterogeneous FPGA
Canon et al. Correlation-aware heuristics for evaluating the distribution of the longest path length of a DAG with random weights
Chou et al. Average-case technology mapping of asynchronous burst-mode circuits
Ahmadi et al. Symbolic noise analysis approach to computational hardware optimization
Anuradha et al. Efficient workload characterization technique for heterogeneous processors
Balaskas et al. Variability-aware approximate circuit synthesis via genetic optimization
Plaza et al. Optimizing non-monotonic interconnect using functional simulation and logic restructuring
Li et al. Machine Learning Based Framework for Fast Resource Estimation of RTL Designs Targeting FPGAs
Zhang et al. Dimplementing first-order optimization methods: Algorithmic considerations and bespoke microcontrollers

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20150611

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160329

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170303

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170501

R150 Certificate of patent or registration of utility model

Ref document number: 6146197

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees