JP6146197B2 - 設計支援方法、設計支援プログラム、および設計支援装置 - Google Patents

設計支援方法、設計支援プログラム、および設計支援装置 Download PDF

Info

Publication number
JP6146197B2
JP6146197B2 JP2013164627A JP2013164627A JP6146197B2 JP 6146197 B2 JP6146197 B2 JP 6146197B2 JP 2013164627 A JP2013164627 A JP 2013164627A JP 2013164627 A JP2013164627 A JP 2013164627A JP 6146197 B2 JP6146197 B2 JP 6146197B2
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.)
Expired - Fee Related
Application number
JP2013164627A
Other languages
English (en)
Other versions
JP2015035033A (ja
Inventor
真人 立岡
真人 立岡
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.)
Socionext Inc
Original Assignee
Socionext Inc
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 Socionext Inc filed Critical Socionext Inc
Priority to JP2013164627A priority Critical patent/JP6146197B2/ja
Publication of JP2015035033A publication Critical patent/JP2015035033A/ja
Application granted granted Critical
Publication of JP6146197B2 publication Critical patent/JP6146197B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、設計支援方法、設計支援プログラム、および設計支援装置に関する。
従来、プログラムの構文解析または命令セットシミュレータによるプログラムに定義された各関数の処理量や消費電力量の見積もり結果に基づいて各関数をハードウェアとソフトウェアのうちいずれで実現させるかを判断する技術が公知である(例えば、下記特許文献1参照。)。
また、従来、システムの動作が記述されたプログラム内の各命令の出現頻度に基づいて、FPGA(Field Programmable Gate Array)に実装する演算器に実行させる命令を決定する技術が公知である(例えば、下記特許文献2参照。)。
また、プログラムにより生成したデータフローグラフに基づくレジスタに割り当てられるポイントの変数データ代入回数と保持データ遷移回数のいずれかを含む動的解析データに基づいて、プログラムに対して回路素子を割り付ける技術が公知である(例えば、下記特許文献3参照。)。
特開2001−142927号公報 特開2003−241975号公報 特開2009−157440号公報
しかしながら、高位設計においては、設計対象回路の使用時の各演算部の消費電力量が不明であるため、設計効率が低いという問題点がある。
1つの側面では、本発明は、設計効率の向上を図ることができる設計支援方法、設計支援プログラム、および設計支援装置を提供することを目的とする。
本発明の一側面によれば、設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する設計支援方法、設計支援プログラム、および設計支援装置が提案される。
本発明の一態様によれば、設計効率の向上を図ることができる。
図1は、本発明の一動作例を示す説明図である。 図2は、半導体集積回路の設計手順例を示すフローチャートである。 図3は、設計支援装置のハードウェア構成例を示すブロック図である。 図4は、プログラム例を示す説明図である。 図5は、設計支援装置の機能的構成例を示すブロック図である。 図6は、命令文の特定例を示す説明図である。 図7は、CDFGの生成例を示す説明図である。 図8は、見積もり電力テーブル例を示す説明図である。 図9は、回数をカウント可能なAPI記述が追加された第2プログラム例を示す説明図である。 図10は、実行結果例を示す説明図である。 図11は、静的電力解析の他の例を示す説明図である。 図12は、動的電力解析の他の例を示す説明図である。 図13は、2のべき乗の特定例を示す説明図である。 図14は、論理変更パターン用ライブラリ例を示す説明図である。 図15は、置換前後のプログラム例1を示す説明図である。 図16は、置換前後のプログラム例2を示す説明図である。 図17は、置換前後のプログラム例2についてのCDFG例を示す説明図である。 図18は、置換前後のプログラム例2についてのRTL例を示す説明図である。 図19は、設計支援装置が行う全体の処理手順例を示すフローチャートである。 図20は、静的および動的電力解析処理手順例を示すフローチャートである。 図21は、最適化箇所特定処理手順例を示すフローチャートである。 図22は、最適化処理手順例を示すフローチャートである。
以下に添付図面を参照して、本発明にかかる設計支援方法、設計支援プログラム、および設計支援装置の実施の形態を詳細に説明する。
図1は、本発明の一動作例を示す説明図である。設計支援装置100は、設計対象の演算回路の設計を支援するコンピュータである。ここでの設計対象の演算回路とは、演算機能を有する回路を含む。以降、設計対象の演算回路は、対象回路と称する。
設計支援装置100は、設計対象の演算回路の動作を模擬するプログラム101のうち特定種類の演算を指示する命令文の各々について、演算回路に入力可能な入力データ102によってプログラム101を実行した場合に命令文が実行される回数を導出する。特定種類の演算は、例えば、四則演算や論理演算などが挙げられる。図1の例では、特定種類の演算は、除算“/”と乗算“*”とである。
つぎに、設計支援装置100は、命令文の各々について、導出した回数と、特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する。ここで、乗算した値を消費電力量の指標値と称する。これにより、対象回路の使用時の消費電力量を見積もることができる。
図2は、半導体集積回路の設計手順例を示すフローチャートである。まず、半導体集積回路の設計では、設計対象回路の機能を表すアルゴリズムを開発する(ステップS201)。これにより、アルゴリズムがC言語やC++言語などによりコーディングされたプログラムが得られる。つぎに、半導体集積回路の設計では、プログラム内の命令文を置き換える(ステップS202)。実装される演算器には制限があり、この制約を遵守させるためにプログラムの置き換えが行われる。
そして、半導体集積回路の設計では、合成ツールを用いて高位合成を行う(ステップS203)。これにより、ハードウェア記述言語などによるRTL(Register Transfer Level)で記述されたプログラムが得られる。
つぎに、半導体集積回路の設計では、RTL記述の構文チェックを行い(ステップS204)、RTLのシミュレーションを行う(ステップS205)。半導体集積回路の設計では、論理合成を行う(ステップS206)。これにより、ネットリストが得られる。そして、半導体集積回路の設計では、ネットリストに基づいて配置配線が行われる(ステップS207)。
論理合成後のネットリストを用いたシミュレーションによって電力見積もりが行われる。そのため、設計変更が生じる場合に、RTL設計や高位設計を再度行うには時間がかかる。これに対して、本実施の形態にかかる設計支援装置100は、ステップS201やステップS202において電力見積もりを行うことができるため、設計効率を向上させることができる。
(設計支援装置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によってそれぞれ接続されている。
ここで、CPU301は、設計支援装置100の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。ディスクドライブ304は、CPU301の制御にしたがってディスク305に対するデータのリード/ライトを制御する。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する。ディスク305としては、磁気ディスク、光ディスクなどが挙げられる。
I/F306は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、I/F306は、ネットワークNETと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F306には、例えばモデムやLANアダプタなどを採用することができる。
入力装置307は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置307は、カメラから画像や動画を取り込むこともできる。また、入力装置307は、マイクから音声を取り込むこともできる。出力装置308は、CPU301の指示により、データを出力するインターフェースである。出力装置308には、ディスプレイやプリンタが挙げられる。
図4は、プログラム例を示す説明図である。第1プログラム400は、対象回路の動作を模擬可能であり、C言語やC++言語などによって記述される。
(設計支援装置100の機能的構成例)
図5は、設計支援装置の機能的構成例を示すブロック図である。設計支援装置100は、第1特定部501と、CDFG生成部502と、第1生成部503と、導出部504と、算出部505と、第1判断部506と、第2特定部507と、第2判断部508と、第2生成部509と、を含む。各部の処理は、例えば、CPU301がアクセス可能な記憶装置に記憶された設計支援プログラムにコーディングされている。そして、CPU301が記憶装置から設計支援プログラムを読み出して、設計支援プログラムにコーディングされている処理を実行する。これにより、各部の処理が実現される。また、各部の処理結果は、例えば、RAM303、ディスク305などの記憶装置に記憶される。
まず、第1特定部501は、対象回路の動作を模擬する第1プログラム400から複数種類の演算の少なくともいずれかを行うことを指示する命令文を特定する。複数種類の演算とは、四則演算、論理演算、論理演算や四則演算の組み合わせなどが挙げられる。具体的には、第1特定部501は、第1プログラム400を一行ずつスキャンし、演算記述がある命令文を特定する。
図6は、命令文の特定例を示す説明図である。第1特定部501は、第1プログラム400から、8行目の比較演算“<”が記述された命令文を特定する。第1特定部501は、第1プログラム400から、8行目に加算“++”が記述された命令文を特定する。第1特定部501は、第1プログラム400から、11行目の加算“+”が記述された命令文を特定する。第1特定部501は、第1プログラム400から、13行目の乗算“*”記述された命令文を特定する。
また、第1特定部501は、特定した命令文のうち、For−Loop文やWhile文を除外する。これにより、11行目の加算“+”と13行目の乗算“*”とが特定される。For−Loop文やWhile文については、高位合成ツールによって最適化されるため、本発明においては、処理の対象から除外される。
CDFG生成部502は、第1プログラム400に基づいてCDFG(Control Data Flow Graph)を生成する。CDFGは、対象回路の実装時における制御の流れと、データの流れと、が記述された情報である。ここでは、CDFGは、理解の容易化のためにディスプレイなどの出力装置308を介して出力させる情報である。
図7は、CDFGの生成例を示す説明図である。CDFG生成部502は、例えば、第1プログラム400に応じたCDFGを生成する。ここで、CDFGによると、特定された命令文は、それぞれCDFGにおいてパスを構成する。そこで、特定された命令文を示す識別情報と、命令文が指示する演算と、演算の引数とは、関連付けられ、以降パスと称する。ここでは、パスに含まれる識別情報が示す命令文をパスの命令文と称する。
第1特定部501は、パスごとに、見積もり電力テーブルから重み付け係数を取得する。重み付け係数は、演算の種類に応じて演算の消費電力値に応じた値である。
図8は、見積もり電力テーブル例を示す説明図である。見積もり電力テーブル800は、演算ごとに重み付け係数が記憶される。見積もり電力テーブル800は、演算、重み付け係数のフィールドを有する。各フィールドに情報が設定されることにより、レコード(801−1〜801−2など)として記憶される。見積もり電力テーブル800は、例えば、RAM303やディスク305などの記憶装置に記憶される。
演算のフィールドには、各演算を示す識別情報が設定される。重み付け係数のフィールドには、各演算に要する電力量に応じた値が設定される。ここでは、例えば、電力量に応じた値を単位実行サイクルごとの消費電力量[W/Cycle]とするが、これに限らず、演算に要する電力量を相対的に特定可能な値であってもよい。
第1生成部503は、第1プログラム400に基づいて、対象回路の動作を模擬する第2プログラム900であって、パスの各々についての回数のカウントを指示する命令文を含む第2プログラム900を生成する処理を実行する。ここでの回数とは、入力データによって第1プログラム400を実行した場合に特定した命令文が実行される回数である。ここでの入力データは、対象回路の設計仕様に基づいて利用者によって作成された情報である。入力データは、例えば、対象回路の入力端子に入力可能な信号値である。ここでは、入力データによって第2プログラム900を実行させることにより、対象回路の動作のシミュレーションが行われる。入力データを含み、各プログラムを実行させるための情報をテストベンチと称する。
図9は、回数をカウント可能なAPI記述が追加された第2プログラム例を示す説明図である。第2プログラム900には、回数をカウント可能なAPI(Application Program Interface)記述であるcountpath(行数、計算式、被演算子)が記述される。
つぎに、導出部504は、入力データによって第1プログラム400を実行した場合に特定した命令文が指示する演算が行われる回数を導出する。具体的には、導出部504は、APIが挿入された第2プログラム900と、テストベンチと、によってシミュレーションを実行することにより、特定した命令文が実行される回数をカウントする。
算出部505は、導出した回数と、特定した命令文が指示する演算に応じた重み付け係数と、に基づいて、対象回路へ入力データを入力させた場合に特定した命令文が指示する演算に要する電力量の指標値を算出する。
図10は、実行結果例を示す説明図である。実行結果1000では、理解の容易化のために、“i”の値と“op1”の値とを併せて示す。例えば、パスPath[0]の命令文が実行された回数は3回であり、Path[1]の命令文が実行された回数は2である。
算出部505は、導出された回数と命令文が指示する演算に要する電力量に応じた値とを乗算した指標値を算出する。上述したように、演算に要する電力量に応じた値は重み付け係数である。例えば、各パスの指標値は以下のようになる。
パスPath[0]の指標値=2×3=6
パス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であることが特定される。
図12は、動的電力解析の他の例を示す説明図である。図12の例は、算出部505は、導出した回数に応じた値と、演算に要する電力量に応じた値と、を乗算した指標値を算出する。図12の例では、導出した回数に応じた値は、動作率である。そのため、動作率の合計は100[%]となる。パスPAの動作率は、10[%]であり、パスPBの動作率は、30[%]であり、パスPCの動作率は60[%]である。
例えば、パスPAの指標値は100であり、パスPBの指標値は1500であり、パスPCの指標値は2400である。このように、相対比PRについては、パスPBが最も大きいが、パスPCは実行された回数が多いため、指標値はパスPCが最も大きくなる。
つぎに、第1判断部506は、特定されたパスの各々について算出された指標値が第1所定条件を満たすか否かを判断する。ここでは、第1所定条件は、予め利用者によって定められ、ディスク305やRAM303などの記憶装置に記憶される。第1所定条件は、例えば、指標値が閾値以上であるか否かである。例えば、第1判断部506は、指標値が閾値以上であるか否かを判断する。閾値については例えば、利用者によって定められ、ディスク305やRAM303などの記憶装置に記憶される。また、ここでは、閾値は、PJと表す。
第2生成部509は、第1判断部506によって指標値が閾値PJ以上であると判断されたパスの命令文を置き換えた第3プログラムを生成する。また、第1判断部506によって指標値が所定条件を満たすと判断されたパスについては、最適化の対象パスとして出力される。ここでは、例えば、閾値PJを10とし、パスPath[1]が最適化の対象パスOpt_Pathとして出力される。算出された指標値と、演算式と、命令文の識別情報と、演算式に与える引数と、が関連付けられて最適化の対象パスとして記憶される。命令文の識別情報は、例えば、第1プログラム400内の先頭から数えた場合の行数である。
例えば、第2生成部509は、第1プログラム400に基づいて第3プログラムを生成する。第3プログラムは、例えば、命令文のうち算出した指標値が第1所定条件を満たす第1命令文を、特定種類の演算と等価な演算を指示する命令文に置き換えたプログラムである。また、第3プログラムは、第1命令文を、第1命令文と、第1命令文が指示する演算と等価な演算を指示する第2命令文と、のうちのいずれかを第2所定条件に応じて実行することを指示する命令文に置き換えたプログラムである。
また、第3プログラムについては、命令文の置き換えを行うか否かを判断した後に、生成してもよい。そのため、等価な演算がシフト演算である場合に、第2特定部507は、入力データによって第1プログラム400を実行した場合に行われる特定種類の演算のうち被演算子となる値が2のべき乗である特定種類の演算の割合を特定する。そして、第2判断部508は、特定した割合が第3所定条件を満たすか否かを判断する。
具体的には、第2特定部507は、入力データによって第2プログラム900を実行することによるシミュレーションにおいてパスの命令文の被演算子となる値の組み合わせである被演算子の入力データを取得する。そして、第2特定部507は、被演算子となる値のうち2のべき乗である数をカウントする。
図13は、2のべき乗の特定例を示す説明図である。被演算子の入力データ1300は、第1プログラム400内の11行目に記述された命令文の被演算子であるaとbとのそれぞれについて入力される値の組み合わせである。
表1301は、被演算子aの2のべき乗と、被演算子bの2のべき乗と、被演算子aと被演算子bのいずれも2のべき乗でない回数Mと、被演算子aまたは被演算子bのいずれかが2のべき乗である回数Sと、を示す。回数Mは最終的に3であり、回数Sは最終的に7である。
つぎに、第2特定部507は、論理変更パターン用ライブラリから、最適化の対象パスについての演算に対応する論理変更の候補を引く。そして、第2特定部507は、論理変更の候補についての判定式を取得する。
図14は、論理変更パターン用ライブラリ例を示す説明図である。論理変更パターン用ライブラリ1400は、論理変更の候補、判定式のフィールドを有する。各フィールドに情報が設定されることにより、レコード(1401−1〜1401−3など)として記憶される。論理変更パターン用ライブラリ1400はディスク305などの記憶装置に記憶される。
論理変更パターン用ライブラリ1400によれば、例えば、乗算“*”は加算“+”やシフト演算“<<”に置き換えられ、除算“/”はシフト演算“>>”置き換えられる。また、図示していないが加算“+”は排他的論理和“xor”に置き換えられる。“−”は“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に記憶された減算“−”の重み付け係数が利用される。以下に本実施の形態における具体例を示す。
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所定条件に応じて実行することを指示する命令文に置き換えたプログラムである。
例えば、第1所定条件を満たす命令文が指示する演算が乗算であり、等価な演算がシフト演算である場合において、第2所定条件は、乗算において被演算子となる値が2のべき乗であるか否かである。第2所定条件に応じて実行することを指示する命令文は、被演算子となる値が2のべき乗である場合に等価な演算を指示する命令文を実行することを指示し、被演算子となる値が2のべき乗でない場合に第1所定条件を満たす命令文を実行することを指示する。
図15は、置換前後のプログラム例1を示す説明図である。左側が置換前の第1プログラム400であり、右側が置換後の第3プログラム1500である。例えば、第3プログラム1500には、シフト数を被演算子aとするシフト演算“<<”を指示する命令文と、シフト数を被演算子bとしてシフト演算“<<”を指示する命令と、乗算“*”を指示する命令文と、が記述されてある。また第3プログラム1500には、if文の条件に応じていずれかの命令文が実行される。if文の条件は、cond()関数の結果によって定まる。
cond()関数によれば、被演算子aの値2のべき乗であれば、シフト数を被演算子aの値とするシフト演算“<<”を指示する命令が実行される。cond()関数によれば、被演算子bの値が2のべき乗であれば、シフト数を被演算子bの値とするシフト演算“<<”を指示する命令が実行される。cond()関数によれば、被演算子aと被演算子bのいずれの値も2のべき乗でなければ、乗算“*”を指示する命令が実行される。
また、例えば、第1所定条件を満たす命令文が指示する演算が除算であり、等価な演算がシフト演算である場合において、第2所定条件は、除算において除数となる値が2のべき乗であるか否かである。例えば、第2所定条件に応じて実行することを指示する命令文は、除数となる値が2のべき乗である場合に等価な演算を指示する命令文を実行することを指示し、除数となる値が2のべき乗でない場合に第1所定条件を満たす命令文を実行することを指示する。
図16は、置換前後のプログラム例2を示す説明図である。左側が置換前の第1プログラム1600であり、右側が置換後の第3プログラム1601である。第3プログラム1601では、シフト数を被演算子Yとしてシフト演算“<<”を指示する命令と、除算“/”を指示する命令と、が記述されてあり、cond()関数によっていずれが実行されるかが定まる。図の下側には、第1プログラム1600と第3プログラム1601との関係を示す。
cond()関数によれば、被除数である被演算子Yの値が2のべき乗であれば、シフト数を被演算子Yの値とするシフト演算“>>”を指示する命令が実行される。cond()関数によれば、bが2のべき乗であれば、シフト数を被演算子bの値とするシフト演算“>>”を指示する命令が実行される。cond()関数によれば、被除数である被演算子Yの値が2のべき乗でなければ、除算“/”を指示する命令が実行される。
図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倍近く消費電力量を低減可能となる。
(設計支援装置100が行う最適化処理手順)
図19は、設計支援装置が行う全体の処理手順例を示すフローチャートである。本実施の形態では、設計支援装置100が行う処理手順を第1フェーズから第3フェーズの3つに分けて説明する。
設計支援装置100は、繰り返し回数=0とする(ステップS1901)。設計支援装置100は、繰り返し回数=繰り返し回数+1とする(ステップS1902)。設計支援装置100は、第1プログラム400に基づいて、静的電力解析を行う(ステップS1903)。つぎに、設計支援装置100は、テストベンチ1900により第1プログラム400を実行することにより、動的電力解析を行う(ステップS1904)。テストベンチ1900は、上述したように、対象回路に入力可能な入力データ102を含む。設計支援装置100は、シミュレーション結果に基づいて、最適化箇所を特定する(ステップS1905)。
設計支援装置100は、特定した最適化箇所について最適化を行う(ステップS1906)。設計支援装置100は、すべて最適化済みであるか否かを判断する(ステップS1907)。最適化済みでないと判断された場合(ステップS1907:No)、設計支援装置100は、ステップS1906へ戻る。すべて最適化済みであると判断された場合(ステップS1907:Yes)、設計支援装置100は、繰り返し回数が所定数Xより大きいか否かを判断する(ステップS1908)。所定数Xについては、予めディスク305やRAM303などに記憶されてある。
繰り返し回数が所定数X以下である場合(ステップS1908:No)、設計支援装置100は、ステップS1902へ戻る。これにより、最適化されたプログラムについて再度最適化を行うことができる。繰り返し回数が所定数Xより多い場合(ステップS1908:Yes)、設計支援装置100は、一連の処理を終了する。このように、所定数Xとなるまで、最適化されたプログラムを再度最適化の対象とすることができる。
図20は、静的および動的電力解析処理手順例を示すフローチャートである。設計支援装置100は、プログラムを取得する(ステップS2001)。つぎに、設計支援装置100は、n=0とする(ステップS2002)。設計支援装置100は、未選択の命令文があるか否かを判断する(ステップS2003)。未選択の命令文がある場合(ステップS2003:Yes)、設計支援装置100は、未選択の命令文から先頭の命令文を選択する(ステップS2004)。つぎに、設計支援装置100は、選択した命令文が特定種類の演算を指示する命令文であるか否かを判断する(ステップS2005)。選択した命令文が特定種類の演算を指示する命令文でない場合(ステップS2005:No)、設計支援装置100は、ステップS2003へ戻る。
選択した命令文が特定種類の演算を指示する命令文である場合(ステップS2005:Yes)、設計支援装置100は、選択した命令文がFor−Loop文またはWhile文であるか否かを判断する(ステップS2006)。選択した命令文がFor−Loop文またはWhile文のいずれかである場合(ステップS2006:Yes)、設計支援装置100は、ステップS2003へ戻る。
選択した命令文がFor−Loop文およびWhile文のいずれでもない場合(ステップS2006:No)、設計支援装置100は、選択した命令文の識別情報と演算内容と被演算子とを関連付けてパスPath[n]とする(ステップS2007)。設計支援装置100は、n=n+1とする(ステップS2008)。そして、設計支援装置100は、プログラムにカウント用API記述を追加し(ステップS2009)、ステップS2003へ戻る。ステップS2009によって上述した第2プログラム900が得られる。
未選択の命令文がない場合(ステップS2003:No)、設計支援装置100は、テストベンチによりプログラムを実行する(ステップS2010)。設計支援装置100は、パスPath[0〜n]ごとに、回数と、パスPathの演算についての重み付け係数と、により指標値を算出する(ステップS2011)。設計支援装置100は、算出結果を出力し(ステップS2012)、一連の処理を終了する。
図21は、最適化箇所特定処理手順例を示すフローチャートである。設計支援装置100は、利用者の操作により、閾値PJを設定する(ステップS2101)。つぎに、設計支援装置100は、n=0とする(ステップS2102)。設計支援装置100は、パスPath[n]の指標値を取得する(ステップS2103)。設計支援装置100は、パスPath[n]の指標値>閾値PJであるか否かを判断する(ステップ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は、一連の処理を終了する。
図22は、最適化処理手順例を示すフローチャートである。まず、設計支援装置100は、n=0とする(ステップS2201)。つぎに、設計支援装置100は、最適化対象のパスOpt_Path[n]を取得する(ステップS2202)。そして、設計支援装置100は、パスOpt_Path[n]の被演算子の値である入力データを取得する(ステップS2203)。
設計支援装置100は、入力データの2のべき乗の割合を特定する(ステップS2204)。設計支援装置100は、論理変更パターン用ライブラリ1400から判定式に特定した割合を代入する(ステップS2205)。設計支援装置100は、判定式が成立したか否かを判断する(ステップS2206)。判定式が成立しない場合(ステップS2206:No)、設計支援装置100は、ステップS2208へ移行する。
判定式が成立する場合(ステップS2206:Yes)、設計支援装置100は、パスOpt_Path[n]の命令文を変換候補に置き換える(ステップS2207)。設計支援装置100は、n<最適化対象のパスの数kであるか否かを判断する(ステップS2208)。n<最適化対象のパスの数kである場合(ステップS2208:Yes)、設計支援装置100は、n+=1とし(ステップS2209)、ステップS2202へ戻る。
n<最適化対象のパスの数kでない場合(ステップS2208:No)、設計支援装置100は、一連の処理を終了する。
以上説明したように、本実施の形態にかかる設計支援装置100は、対象回路の動作を模擬するプログラム内の特定種類の演算を指示する命令文ごとに、該対象回路の入力データにおける該命令文の実行回数に応じた消費電力量の指標値を算出する。これにより、高位設計において対象回路の使用時の消費電力量を見積もることができる。したがって、設計効率を向上させることができる。
また、設計支援装置100は、命令文のうち算出した指標値が第1所定条件を満たす命令文を、所定条件を満たす命令文が指示する演算と等価な演算を指示する命令文に置き換えたプログラムを生成する。これにより、アルゴリズムを変更することにより、低消費電力化を図ることができる。
また、設計支援装置100は、命令文のうち算出した指標値が第1所定条件を満たす第1命令文を特定する。そして、設計支援装置100は、第1命令文と、第1命令文が指示する演算と等価な演算を指示する第2命令文と、のうちのいずれかを第2所定条件に応じて実行することを指示する命令文に置き換えた第2プログラムを生成する。これにより、複数の命令のいずれかを実行可能なようにアルゴリズムを変更することにより、低消費電力化を図ることができる。
また、演算が除算であり、等価な演算がシフト演算である場合、設計支援装置100は、被除数の値が2のべき乗である場合に第2命令文を実行し、2のべき乗でない場合に第1命令文を実行することを指示する命令文に置き換えた第2プログラムを生成する。これにより、被除数が2のべき乗であれば、除算よりも消費電力量が少ないシフト演算が可能となるため、低消費電力化を図ることができる。
また、演算が乗算であり、等価な演算がシフト演算である場合、設計支援装置100は、被演算子の値が2のべき乗である場合に第2命令文を実行し、2のべき乗でない場合に第1命令文を実行することを指示する命令文に置き換えた第2プログラムを生成する。これにより、被演算子が2のべき乗であれば、乗算よりも消費電力量が少ないシフト演算が可能となるため、低消費電力化を図ることができる。
また、設計支援装置100は、入力データによってプログラムを実行した場合に行われる特定種類の演算のうち被演算子の値が2のべき乗である特定種類の演算の割合により命令文を置き換えたプログラムを生成するか否かを判定する。これにより、命令文を置き換えて低消費電力となるか否かを判断することができる。
また、設計支援装置100は、特定種類の演算を指示する命令文の各々について、実行される回数のカウントを指示する命令文を含むプログラムを生成する。これにより、プログラムを実行するだけで、特定種類の演算を指示する命令文が実行される回数を導出可能となる。
なお、本実施の形態で説明した設計支援方法は、予め用意された設計支援プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータが、
設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
処理を実行することを特徴とする設計支援方法。
(付記2)前記コンピュータが、
前記命令文のうち算出した前記値が所定条件を満たす命令文を、前記所定条件を満たす命令文が指示する演算と等価な演算を指示する命令文に置き換えたプログラムを生成する処理を実行することを特徴とする付記1に記載の設計支援方法。
(付記3)前記コンピュータが、
前記プログラム(以下、「第1プログラム」と称する)に基づいて、前記命令文のうち算出した前記値が第1所定条件を満たす命令文を、前記第1所定条件を満たす命令文と、前記第1所定条件を満たす命令文が指示する演算と等価な演算を指示する命令文と、のうちのいずれかを第2所定条件に応じて実行することを指示する命令文に置き換えた第2プログラムを生成する処理を実行することを特徴とする付記1に記載の設計支援方法。
(付記4)前記第1所定条件を満たす命令文が指示する演算が除算であり、前記等価な演算がシフト演算である場合において、
前記第2所定条件は、前記除算において除数となる値が2のべき乗であるか否かであって、
前記第2所定条件に応じて実行することを指示する命令文は、前記除数となる値が2のべき乗である場合に前記等価な演算を指示する命令文を実行することを指示し、前記除数となる値が2のべき乗でない場合に前記第1所定条件を満たす命令文を実行することを指示することを特徴とする付記3に記載の設計支援方法。
(付記5)前記第1所定条件を満たす命令文が指示する演算が乗算であり、前記等価な演算がシフト演算である場合において、
前記第2所定条件は、前記乗算において被演算子となる値が2のべき乗であるか否かであって、
前記第2所定条件に応じて実行することを指示する命令文は、前記被演算子となる値が2のべき乗である場合に前記等価な演算を指示する命令文を実行することを指示し、前記被演算子となる値が2のべき乗でない場合に前記第1所定条件を満たす命令文を実行することを指示することを特徴とする付記3に記載の設計支援方法。
(付記6)前記等価な演算がシフト演算である場合において、
前記コンピュータが、
前記入力データによって前記第1プログラムを実行した場合に行われる前記特定種類の演算のうち被演算子となる値が2のべき乗である前記特定種類の演算の割合を特定する処理を実行し、
前記第2プログラムを生成する処理では、特定した前記割合が第3所定条件を満たさない場合に前記第2プログラムを生成しないことを特徴とする付記3〜5のいずれか一つに記載の設計支援方法。
(付記7)前記コンピュータが、
前記プログラム(以下「第1プログラム」と称する)から、前記特定種類の演算を指示する命令文を特定し、
前記第1プログラムに基づいて、前記演算回路の動作を模擬する第2プログラムであって、特定した前記命令文の各々についての前記回数のカウントを指示する命令文を含む第2プログラムを生成する処理を実行し、
前記回数を導出する処理では、前記入力データによって前記第2プログラムを実行することにより、特定した前記命令文の各々について前記回数を導出することを特徴とする付記1〜6のいずれか一つに記載の設計支援方法。
(付記8)コンピュータに、
設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
処理を実行させることを特徴とする設計支援プログラム。
(付記9)設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出する導出部と、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する算出部と、
を有することを特徴とする設計支援装置。
(付記10)設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
処理をコンピュータに実行させる設計支援プログラムを記録したことを特徴とする記録媒体。
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プログラム

Claims (5)

  1. コンピュータが、
    設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
    前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
    処理を実行することを特徴とする設計支援方法。
  2. 前記コンピュータが、
    前記プログラム(以下、「第1プログラム」と称する)に基づいて、前記命令文のうち算出した前記値が第1所定条件を満たす命令文を、前記第1所定条件を満たす命令文と、前記第1所定条件を満たす命令文が指示する演算と等価な演算を指示する命令文と、のうちのいずれかを第2所定条件に応じて実行することを指示する命令文に置き換えた第2プログラムを生成する処理を実行することを特徴とする請求項1に記載の設計支援方法。
  3. 前記等価な演算がシフト演算である場合において、
    前記コンピュータが、
    前記入力データによって前記第1プログラムを実行した場合に行われる前記特定種類の演算のうち被演算子となる値が2のべき乗である前記特定種類の演算の割合を特定する処理を実行し、
    前記第2プログラムを生成する処理では、特定した前記割合が第3所定条件を満たさない場合に前記第2プログラムを生成しないことを特徴とする請求項2に記載の設計支援方法。
  4. コンピュータに、
    設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出し、
    前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する、
    処理を実行させることを特徴とする設計支援プログラム。
  5. 設計対象の演算回路の動作を模擬するプログラムのうち特定種類の演算を指示する命令文の各々について、前記演算回路に入力可能な入力データによって前記プログラムを実行した場合に前記命令文が実行される回数を導出する導出部と、
    前記命令文の各々について、導出した前記回数と、前記特定種類の演算に要する電力量に応じた値と、を乗算した値を算出する算出部と、
    を有することを特徴とする設計支援装置。
JP2013164627A 2013-08-07 2013-08-07 設計支援方法、設計支援プログラム、および設計支援装置 Expired - Fee Related JP6146197B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013164627A JP6146197B2 (ja) 2013-08-07 2013-08-07 設計支援方法、設計支援プログラム、および設計支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013164627A JP6146197B2 (ja) 2013-08-07 2013-08-07 設計支援方法、設計支援プログラム、および設計支援装置

Publications (2)

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

Family

ID=52543538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013164627A Expired - Fee Related JP6146197B2 (ja) 2013-08-07 2013-08-07 設計支援方法、設計支援プログラム、および設計支援装置

Country Status (1)

Country Link
JP (1) JP6146197B2 (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3618442B2 (ja) * 1996-02-08 2005-02-09 株式会社東芝 マイクロプロセッサのパワーエスティメータ装置
JP3351725B2 (ja) * 1997-01-08 2002-12-03 株式会社東芝 パワーシミュレーション装置、パワーシミュレーション方法、及びパワーシミュレーションプログラムを記録した機械読み取り可能な記録媒体
JPH11232147A (ja) * 1998-02-16 1999-08-27 Toshiba Corp パワーエスティメーション装置、パワーエスティメーション方法、及びパワーエスティメーションプログラムを記録した機械読み取り可能な記録媒体
JP2005216177A (ja) * 2004-01-30 2005-08-11 Toshiba Corp コンフィグラブル・プロセッサの設計装置、設計方法、ライブラリの最適化方法、プロセッサ、及びプロセッサを備えた半導体装置の製造方法
JP5510543B2 (ja) * 2010-06-30 2014-06-04 富士通株式会社 情報処理装置の使用量解析方法、情報処理システム及びそのプログラム
JP5961971B2 (ja) * 2011-10-12 2016-08-03 富士通株式会社 シミュレーション装置,方法,およびプログラム

Also Published As

Publication number Publication date
JP2015035033A (ja) 2015-02-19

Similar Documents

Publication Publication Date Title
Lee et al. High-level synthesis of approximate hardware under joint precision and voltage scaling
Mrazek et al. autoax: An automatic design space exploration and circuit building methodology utilizing libraries of approximate components
CN104573169B (zh) 以自动流水线操作能力设计集成电路的方法和工具
Castro-Godínez et al. Compiler-driven error analysis for designing approximate accelerators
Park et al. A multi-granularity power modeling methodology for embedded processors
US10078717B1 (en) Systems and methods for estimating performance characteristics of hardware implementations of executable models
Choi et al. HLS-based optimization and design space exploration for applications with variable loop bounds
KR20130107344A (ko) 툴 생성기
US8713506B2 (en) System and method for employing signoff-quality timing analysis information concurrently in multiple scenarios to reduce dynamic power in an electronic circuit and an apparatus incorporating the same
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 (ja) 設計支援方法、設計支援プログラム、および設計支援装置
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
Plaza et al. Optimizing non-monotonic interconnect using functional simulation and logic restructuring
Lee et al. High-level synthesis with distributed controller for fast timing closure
Li et al. Machine Learning Based Framework for Fast Resource Estimation of RTL Designs Targeting FPGAs
Gomez-Prado et al. FPGA latency optimization using system-level transformations and DFG restructuring

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