JP2011013713A - 集積回路の消費電力検証方法 - Google Patents

集積回路の消費電力検証方法 Download PDF

Info

Publication number
JP2011013713A
JP2011013713A JP2009154612A JP2009154612A JP2011013713A JP 2011013713 A JP2011013713 A JP 2011013713A JP 2009154612 A JP2009154612 A JP 2009154612A JP 2009154612 A JP2009154612 A JP 2009154612A JP 2011013713 A JP2011013713 A JP 2011013713A
Authority
JP
Japan
Prior art keywords
data
power
variable
circuit
program
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
JP2009154612A
Other languages
English (en)
Other versions
JP5310312B2 (ja
Inventor
Junichi Niitsuma
潤一 新妻
Takashi Fujita
隆司 藤田
Takayuki Sasaki
貴行 佐々木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009154612A priority Critical patent/JP5310312B2/ja
Publication of JP2011013713A publication Critical patent/JP2011013713A/ja
Application granted granted Critical
Publication of JP5310312B2 publication Critical patent/JP5310312B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 本発明の課題は、構造記述による回路データから、設計中の集積回路の電力を見積もることを目的とする。
【解決手段】 上記課題は、集積回路の消費電力検証方法であって、回路データで記述される論理回路モジュール毎のデータトグル率を算出する動作率算出手順と、データ電力を要する素子に対しては前記データトグル率を用いて該データ電力を算出して、全素子の電力の総和を算出する電力総和算出手順とをコンピュータが実行することにより達成される。
【選択図】 図2

Description

本発明は、論理回路設計における集積回路の消費電力検証方法に関する。
集積回路(以下、LSIと言う)を論理設計において、消費電力(電流)は重要な設計制約のひとつであり、電源層設計やチップパッケージ種の選定など、LSIの物理設計の初期決定条件を導くものである。そのため、設計早期段階で精度の良い見積もりが求められている。
例えば、論理シミュレータを実行して得られた信号レベルの変化回数や時間的変化を用いて消費電力を算出すること、トランザクションが集積回路の動作頻度をよく反映していることに着目して、設計対象となる集積回路のトランザクション量を事象として統計分布であらわして格納するデータベースを備えたトランザクション解析用モデルを利用して、高速な消費電力推定を行なう等が提案されている(例えば、特許文献1、2を参照)。
特開平3−9550号公報 特開2001−338010号公報 特開平10−15472号公報
システムLSIのレイアウト設計では、レイアウト本番に入る前に、回路が物理的に製造できるかどうかを検討する。各ブロックの設計がある程度進み、回路規模がほぼ決定する時期に行っている。各フロックの設計や検証シミュレーションが進み、ブロックの論理記述がほぼ決まってきた段階で、ブロックを全て集約することで、チップの回路規模を見積もることができる。設計途中のブロックを不完全ながら結合させて、レイアウトを行い、合成可能性、配線可能性、サイズが実現可能な範囲かを検討すること(レイアウト・プロトタイプ)が行なわれている。
従来の技術では、CMOS回路の電力は回路の動作(回路の変化回数)に大きく依存するため、電力見積もりのためには、回路の動作シミュレーション結果が要求されている。しかし、システムLSI全体を動作させるのは論理設計の最終段階であり、動作結果よりシステムLSIの電力が見積もれるのは、さらに数ヶ月後になるため、正確な電力が出るまで待たされた場合、時間的に厳しい工程で電力の見積もりが行なわれることになる。
レイアウト検討時には、チップ全体としては動作しない回路を用いて行っているため、動作結果による正確な電力は、見積もれない。システムLSI全体での動作をシミュレーションができないため、ブロックごとのブロック検証動作の電力を見積もり、それを足し合わせて、全体電力概算としている。しかし、ブロックレベルでは、ループが含まれる等の実使用と合った動作をシミュレーションさせることが困難なため、実使用時の回路動作率を求めるのが困難であった。したがって、電力見積もりの精度が悪いという問題があった。
開示の集積回路の消費電力検証方法は、回路データで記述される論理回路モジュール毎のデータトグル率を算出する動作率算出手順と、データ電力を要する素子に対しては前記データトグル率を用いて該データ電力を算出して、全素子の電力の総和を算出する電力総和算出手順とをコンピュータが実行する。
開示の集積回路の消費電力検証方法において、機能仕様書(FS)の段階であっても、構造記述による回路データから、設計中の集積回路の電力を見積もりことができる。
消費電力検証装置のハードウェア構成例を示すブロック図である。 消費電力検証処理の全体フローを示す図である。 消費電力検証の対象となる回路構成例を示す図である。 動作記述プログラムの例を示す図である。 回路と動作記述の対応表の例を示す図である。 プログラム動作結果ログの例を示す図である。 図2の処理1にて行なわれる結果ログ解析について説明するためのフローチャートである。 動作記述プログラムの他の例を示す図である。 第1の中間テーブルのデータ例を示す図である。 第2の中間テーブルのデータ例を示す図である。 動作解析結果の作成方法を示す図である。 図2の処理2にて行なわれるデータパス解析について説明するためのフローチャートである。 図12のステップS23におけるデータパスの処理時間の計算方法を説明するためのフローチャート図である。 動作時間の算出例を説明するための図である。 図2の処理3にて行なわれるデータトグル率の算出方法について説明するためのフローチャートである。 図2の処理4にて行なわれる電力見積もり方法について説明するためのフローチャートである。
以下、本発明の実施の形態を図面に基づいて説明する。
論理回路設計においてLSIの消費電力を検証する消費電力検証装置は、例えば、図1に示すようなハードウェア構成を有する。図1において、消費電力検証装置100は、コンピュータによって制御される端末であって、CPU(Central Processing Unit)11と、メモリユニット12と、表示ユニット13と、出力ユニット14と、入力ユニット15と、通信ユニット16と、記憶装置17と、ドライバ18とを有し、システムバスBに接続される。
CPU11は、メモリユニット12に格納されたプログラムに従って消費電力検証装置100を制御する。メモリユニット12は、RAM(Random Access Memory)及びROM(Read-Only Memory)等にて構成され、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を格納する。また、メモリユニット12の一部の領域が、CPU11での処理に利用されるワークエリアとして割り付けられている。
表示ユニット13は、CPU11の制御のもとに必要な各種情報を表示する。出力ユニット14は、プリンタ等を有し、ユーザからの指示に応じて各種情報を出力するために用いられる。入力ユニット15は、マウス、キーボード等を有し、ユーザが消費電力検証装置100が処理を行なうための必要な各種情報を入力するために用いられる。通信ユニット16は、例えばインターネット、LAN(Local Area Network)等に接続し、外部装置との間の通信制御をするための装置である。記憶装置17は、例えば、ハードディスクユニットにて構成され、各種処理を実行するプログラム等のデータを格納する。
消費電力検証装置100よって行われる処理を実現するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体19によって消費電力検証装置100に提供される。即ち、プログラムが保存された記憶媒体19がドライバ18にセットされると、ドライバ18が記憶媒体19からプログラムを読み出し、その読み出されたプログラムがシステムバスBを介して記憶装置17にインストールされる。そして、プログラムが起動されると、記憶装置17にインストールされたプログラムに従ってCPU11がその処理を開始する。尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。本実施例に係る消費電力検証処理を実現するプログラムは、通信ユニット16によってネットワークを介してダウンロードし、記憶装置17にインストールするようにしても良い。また、USB対応の消費電力検証装置100であれば、USB接続可能な外部記憶装置からインストールするようにしても良い。更に、SDカード等のフラッシュメモリ対応の消費電力検証装置100であれば、そのようなメモリカードからインストールするようにしても良い。
図2は、消費電力検証処理の全体フローを示す図である。図2において、CPU11は、回路データ31と、回路動作記述の対応表32と、動作記述プログラム33と、プログラム動作結果ログ34とを、各々が格納されている記憶装置17内の領域から読み出して、消費電力検証処理20を開始する。
回路データ31は、レイアウトの際にプロトタイプに用いる回路データであり、例えば、RTL(Register Transfer Level)によって記述されたゲート回路、又は、論理合成後のテクノロジマッピングされた論理回路モジュールとしてのゲート回路のデータである。
回路動作記述の対応表32は、予めユーザによって対応付けられた回路情報と動作記述との対応を示すテーブルであり、ブロック名と関数名の対応、メモリ名と変数名の対応などを示す。
動作記述プログラム33は、例えば、動作仕様を表したC言語で開発されたソースプログラムであり、実行されるメモリとブロック間、ブロックと他ブロック間のアルゴリズムの実行手順を示す。
プログラム動作結果ログ34は、動作記述プログラム33を実行させて取得した実行プロファイルであり、実際に実行された手順がログで示される。
消費電力検証処理20の処理1において、CPU11は、プログラム動作結果ログ34を解析して、回路と対応する部分の動作の実行手順に変換して、メモリユニット12の作業領域又は記憶装置11の所定記憶領域(以下、単に記憶領域と言う)に動作解析結果35を出力する(結果ログ解析)。次に、処理2において、CPU11は、回路データ31を用いてデータパスを解析し、実行パスの遅延解析を行ない、記憶領域に遅延解析結果36を出力する(データパス解析)。
更に、処理3において、CPU11は、遅延解析結果36を用いて、プログラムの変数のビットトグル率から回路のネットのトグル率を算出して、動作率見積もり結果37を出力する(データトグル率算出)。そして、処理4において、CPU11は、動作率見積もり結果37を用いて、電力を見積もり、電力結果38を出力する(電力見積もり)。
消費電力検証処理を行う際に予め作成しておく回路と動作記述の対応表32について,
図3、図4、及び図5で説明する。図3は、消費電力検証の対象となる回路構成例を示す図である。図3において、消費電力検証の対象となるLSI3は、例えば、メモリAと、ブロックCと、ブロックDと、ブロックEと、メモリBとを有し、夫々に対応させて回路内での動作が、例えばRTLなどで作成される。
LSI3において、ブロックCはメモリポートBCpからメモリAのデータを受信し、所定処理の後にブロックDとブロックEへとデータを供給する。ブロックDは、ブロックCからのデータを入力レジスタBDrで受信し、所定処理の後にメモリポートBDpからメモリBへとデータを供給する。ブロックEは、ブロックCからのデータを入力レジスタBErで受信し、所定処理の後にメモリポートBEpからメモリBへとデータを送信する。メモリBは、ブロックDから送られるデータとブロックEから送られるデータとを格納する。
このような、メモリとブロック間、ブロックとブロック間などの論理回路モジュール間のデータのフローが制御データフローとして、例えばCプログラムで開発され動作記述プログラム33となる。
図4は、動作記述プログラム33の例を示す図である。図4に例示される動作記述プログラム33において、main()関数33aがLSI3の全体の制御データフローに対応し、data_in配列33bがメモリAに対応し、stream2content関数33cがブロックCに対応し、temp2変数33dがブロックCメモリポートBCpに対応する。
また、process_a関数33eがブロックDに対応し、temp_a変数33fがブロックDの入力レジスタBDrに対応し、a_out配列33gがブロックDのメモリポートBEpに対応する。更に、process_b関数33hがブロックEに対応し、temp_b変数33iがブロックEの入力レジスタBErに対応し、b_out配列33jがブロックEのメモリポートBEpに対応する。
このような図3及び図4の例示に対する回路と動作記述の対応は、例えば、図5に例示されるように、ユーザによって作成される。図5は、回路と動作記述の対応表32の例を示す図である。
図5に例示される回路と動作記述の対応表32は、例えばCプログラムによる動作記述プログラム33で定義されている関数名、配列名、変数名等の動作記述名毎に、例えばRTLで記述されたLSI3、及びLSI3に含まれるブロック、メモリ、レジスタ等の回路記述名を対応させたテーブルである。
回路と動作記述の対応表32では、例えば、main()関数33aをLSI3全体に対応させ、data_in配列33bをメモリAに対応させ、stream2content関数33cをブロックCに対応させ、temp2変数33dをブロックCメモリポートBCpに対応させている。
また、process_a関数33eをブロックDに対応させ、temp_a変数33fをブロックDの入力レジスタBDrに対応させ、a_out配列33gへの書き込みをブロックDのメモリポートBEpに対応させる。更に、process_b関数33hをブロックEに対応させ、temp_b変数33iをブロックEの入力レジスタBErに対応させ、b_out配列33jへの書き込みをブロックEのメモリポートBEpに対応させる。
次に、プログラム動作結果ログ34の例として、図4に例示される動作記述プログラム33の実行ログで説明する。図6は、プログラム動作結果ログ34の例を示す図である。図6に例示されるプログラム動作結果ログ34は、CPU11が動作記述プログラム33を実行した順に、時系列に付与されるログ行番号と、動作記述プログラム33のプログラム行番号を示す実行行番号と、実行内容とを出力した結果を示すログである。
実行行番号は、プログラムが実行された順番を示している。実行内容は、この例では、形式「aaa配列(aaa値)からデータが読み出され、bbb変数へ書き込まれる。」で示し、行内で使われた各変数の値を出力している。このような形式とすることで、全ての変数について、書き込みされた行番号、参照された行番号、それらの順番がわかる。変数の依存関係と合わせて、データの流れを追跡することが出来る。
図7は、図2の処理1にて行なわれる結果ログ解析について説明するためのフローチャートである。図7において、処理1での結果ログ解析を簡潔に説明するために、動作記述プログラム33の他の例と、そのプログラム動作結果ログ34の他の例とを、夫々、動作記述プログラム33sとそのプログラム動作結果ログ34sとして、図8に示す。図8は、動作記述プログラム33の他の例を示す図である。
図8に例示される動作記述プログラム33sを実行した際のその実行ログの出力例をプログラム動作結果ログ34sとして示している。この例においても、時系列に付与されるログ行番号と、動作記述プログラム33sのプログラム行番号を示す実行行番号と、実行内容とを出力した結果を示す。この例では、実行内容には、演算処理によって変更される変数を出力変数として、また演算処理によって入力される変数を入力変数とが書き出される。つまり、演算処理によって出力変数は入力変数によって変更される。
例えば、ログ行番号「log−1」としてログ出力された実行行番号「1」では、動作記述プログラム33sを参照すると、「d=regc+regd」が行なわれているため、出力変数を「d」、入力変数を「regc」と「regd」として認識することができる。
ログ行番号「log−2」としてログ出力された実行行番号「2」では、動作記述プログラム33sを参照すると、「c=regb−regc」が行なわれているため、出力変数を「c」、入力変数を「regb」と「regc」として認識することができる。
ログ行番号「log−3」としてログ出力された実行行番号「3」では、動作記述プログラム33sを参照すると、「a=c*d」が行なわれているため、出力変数を「a」、入力変数を「c」と「d」として認識することができる。
ログ行番号「log−4」としてログ出力された実行行番号「4」では、動作記述プログラム33sを参照すると、「b=c+d」が行なわれているため、出力変数を「b」、入力変数を「c」と「d」として認識することができる。
ログ行番号「log−5」としてログ出力された実行行番号「5」では、動作記述プログラム33sを参照すると、「rega=min(a,b)」が行なわれているため、出力変数を「rega」、入力変数を「a」と「b」として認識することができる。
図7に戻り、CPU11は、図8に示すようなプログラム動作結果ログ34sから1行ずつ読み出して、変数の最終変更情報41mが記録されている第1の中間テーブル41(後述)を参照することによって、プログラム動作結果ログ34sに示される入力変数に一致する変数名に対応する変更情報41mを読み出す(ステップS11)。変更情報41mは、ログ行番号とプログラム行番号とで示され、ステップS12での処理によって更新される。
続けて、CPU11は、プログラム動作結果ログ34sに示されるログ行番号と実行行番号とを、第1の中間テーブル41において出力変数と一致する変数名に対応させて、ログ行番号とプログラム行番号として変更情報41mを書き込む(ステップS12)。
そして、CPU11は、プログラム動作結果ログ34sの処理中のログ行番号と、出力変数と、入力変数と、ステップS11で取得した入力変数の最新の変更情報41mとを、第2の中間テーブル42に格納する(ステップS13)。
CPU11は、プログラム動作結果ログ34sの全ての行を終了したか否かを判断する(ステップS14)。未処理の行がある場合、CPU11は、ステップS11へ戻り、上記した同様の処理を繰り返す。一方、全ての行を終了した場合、CPU11は、図8の動作記述プログラム33sに対応する回路の動作記述の対応表32sを参照して、動作記述名として存在する入力変数と出力変数とを残し、更に、回路データにおける変数の依存関係回路記述名の対応によって示される動作解析結果35を出力する(ステップS15)。
図9は、第1の中間テーブル41のデータ例を示す図である。図9に例示される第1の中間テーブル41は、変数名、ログ行番号、プログラム行番号等の項目を有する。変数名は、動作記述プログラム33sの変数名のうち、プログラム動作結果ログ34sに記録された変数名である。ログ行番号は、その変数が変更された最新のプログラム動作結果ログ34sのログ行番号を示す。プログラム行番号は、その変数が変更された最新の動作記述プログラム33sの行番号を示す。
第1の中間テーブル41では、変数名「a」、「b」、「c」、「d」、「rega」、「regb」、「regc」、及び「regd」が格納され、そのうち変数名「a」、「b」、「c」、「d」、及び「rega」が、それら値が変更されていることを示している。これら変数名に対応するログ行番号及びプログラム行番号が、変更された最新の変更情報41mとなる。変数名「regb」、「regc」、及び「regd」については、それら値が変更されなかったことを示している。
図10は、第2の中間テーブル42のデータ例を示す図である。図10に例示される第2の中間テーブル42は、ログ行番号、出力変数、入力変数1、入力変数2等の項目を有する。入力変数に関して入力変数1、入力変数2の2項目を有する例としているが、項目数は、動作記述プログラム33sにおける入力変数の数に対応した項目数とすればよい。
ログ行番号は、出力変数がログ出力された際のプログラム動作結果ログ34sのログ行番号を示す。入力変数1及び入力変数2は、夫々、第1の中間テーブル41から取得した変更情報41mのログ行番号と入力変数との対で示される。ここで、出力変数、入力変数1及び入力変数2は、動作記述プログラム33sの動作記述名(例えばCプログラムの変数名)である。
このデータ例において、動作記述名「rega」、「regb」、「regc」、及び「regd」に対応する回路記述名が回路と動作記述の対応表32sで示されている場合に、図7のステップS15の処理について図11で説明する。図11は、動作解析結果35の作成方法を示す図である。
図11において、図10に示す第2の中間テーブル42のデータ例からプログラム変数によるプログラム変数依存関係51が導かれる。このプログラム変数依存関係51において、図8の動作記述プログラム33sに対応する回路の動作記述の対応表32sを参照して、対応する回路記述名によって依存関係を示す回路記述依存関係52が導き出される。
ログ作業テーブル45は、図7のステップS15での処理によって、図8の動作記述プログラム33sに対応する回路の動作記述の対応表32sを参照して、図10に示す第2の中間テーブル42から動作記述名として存在する入力変数と出力変数とを残したテーブルである。
動作解析結果35では、ログ作業テーブル45の出力変数、入力変数1、入力変数2、入力変数3に対応する回路記述名を設定され。この際、入力変数1、入力変数2、入力変数3には、図7のステップS11で取得した変更情報のログ行番号を併せて設定される。
次に、図2における処理2について説明する。図12は、図2の処理2にて行なわれるデータパス解析について説明するためのフローチャートである。図12において、CPU11は、回路記述名で変数が示される動作解析結果35を参照して、依存関係を示すものを活性化データパスとして取得する(ステップS21)。例えば、図3に示すLSI3の回路構成例において、メモリAから、ブロックCを通り、ブロックEを通り、メモリBに至るデータパスが取得される。
次に、CPU11は、データパスにおけるメモリのスループットを算出する(ステップS22)。ステップS22において、CPU11は、動作記述プログラム33と回路データ31とを参照して、メモリのI/Oのスループットを計算する。格納データのサイズとメモリのI/O幅から必要クロックを算出する。
例えば、図5の回路と動作記述の対応表32により、メモリAとdata_in配列とが対応する場合、Cプログラム言語による動作記述プログラム33を参照することによりdata_in配列の1回のアクセスがAバイトであることを取得し、RTLによる回路データ31を参照することによりメモリI/OのスループットがBバイト/クロックであることを取得することができる。よって、data_in配列の1回のアクセスのクロック数は、A/Bクロックとなる。
そして、CPU11は、データパスの処理時間を計算する(ステップS23)。依存関係の被参照位置から参照位置までのデータパスのスループットが算出される。CPU11は、RTLの回路データ31によって動作する回路範囲(動作モジュール)を推定、動作するデータパスのレジスタ段数を抽出して見積もる。
更に、CPU11は、ステップS21で選択した活性化データパスにおける依存関係からブロック間の動作時間を算出して、遅延解析結果36として記憶領域に出力する(ステップS24)。各ブロックの動作状況が決定され、動作率が算出される。例えば、動作記述プログラム33に沿って、各ブロックの処理時間の積み上げを行い、全体の処理時間をスケジュールして全体の処理時間を決定する。
図13は、図12のステップS23におけるデータパスの処理時間の計算方法を説明するためのフローチャート図である。図13において、CPU11は、回路データ31を参照して、メモリやレジスタなどの順序回路素子をノードとしてレジスタグラフを作成する」(ステップS23−1)。メモリやレジスタなどの順序回路素子をノードとして抽出した後、メモリを含むレジスタ(以下、単にレジスタ)の出力から組み合わせ回路により接続された次のレジスタまでのデータパスを有効アークとして、レジスタグラフ43を作成し記憶領域に出力する。
そして、CPU11は、プログラム動作結果ログ34から、回路データ31との間で対応のある入力ポイント(入力変数)と出力ポイント(出力変数)とを読み取って、レジスタグラフ43の対応するレジスタ間の最多パス(同じ段数で到達するパスが多いもの)をレジスタ段数とする(ステップS23−2)。経路が見つからなかった場合、最も近いレジスタ間にパスがあるものと仮定する。
次に、CPU11は、処理時間を算出する(ステップS23−3)。データパスのレジスタ段数から処理時間を算出する。或いは、動作記述プログラム33を参照することによって、配列で定義されるデータのサイズをデータ量とし、データパスのバンド幅で割る演算によって処理時間を算出してもよい。
更に、CPU11は、処理のステップ数を算出する(ステップS23−4)。例えば、ループ回数を判定することによってステップ数を算出する。ループ回数で判定する場合には、
(1)ループは2回として計算する。
(2)具体的な回数を集計せず、変数(例えばNloop)として式で出力する。
(3)ログから推定する。
ログから推定する場合には、データ量から関係する/関係しそうな変数を入力として用いてプログラム動作結果ログ34から得られたログの量(ログ行数)に基づいてステップ数を算出する。
図12のステップS24では、このステップS23−4で算出されたステップ数を用いて、ブロック間の動作時間を算出する。図14は、動作時間の算出例を説明するための図である。図14では、図3に示すLSI3の構成例に基づいて、回路データ31におけるメモリやブロックの回路記述名(変数名)毎の動作状態を、時間軸に沿って例示している。
図14において、時刻Taで、ブロックDはメモリAの読み出しを開始する。時刻Taから時刻Tb間で、メモリAの読み出しに6サイクルかかることを示している。ブロックCのメモリポートBCpから出力先のブロックDの入力レジスタBDrまでの処理には、4サイクルかかることを示している。
従って、時刻Tbから時刻Tc間で、ブロックCがメモリAから読み出しを終了してから4サイクル後に、ブロックCはブロックDへデータを渡す。時刻Tcから時刻Tf間で、ブロックDはメモリBへの書き込みの6サイクルを含めて、10サイクルで処理を行うことを示している。
また、時刻Tcで、ブロックDは次のメモリAの読み出しを開始する。時刻Tcから時刻Te間で、メモリAの読み出しに6サイクルかかることを示している。ブロックCのメモリポートBCpから出力先のブロックEの入力レジスタBErまでの処理には、4サイクルかかることを示している。
従って、時刻Teから時刻Tf間で、ブロックCがメモリAから読み出しを終了してから4サイクル後に、ブロックCはブロックEへデータを渡す。時刻Tfから時刻Th間で、ブロックEはメモリBへの書き込みの6サイクルを含めて、10サイクルで処理を行うことを示している。
このように処理にかかったサイクル数が、記憶領域に遅延解析結果36として出力される。
次に、図2における処理3について説明する。図15は、図2の処理3にて行なわれるデータトグル率の算出方法について説明するためのフローチャートである。トグル率とは、クロック1回当たりの平均変化回数である。図15において、CPU11は、回路と動作記述の対応表で対応付けされている変数の変化率を算出して、回路データ31におけるレジスタの変化率とする(ステップS31)。
そして、CPU11は、ブロック毎にデータパス間のレジスタの変化率の平均を算出して、そのブロックのデータトグル率とする(ステップS32)。
また、CPU11は、プログラム動作結果ログ34を参照することによって、各メモリの読み出し回数と書き込み回数とをそのメモリのアクセス情報として取得して、ブロック毎のデータトグル率と、データトグル率を算出する際に用いたクロックサイクル数と、メモリ毎のアクセス情報とを動作率見積もり結果37として記憶領域に出力する(ステップS33)。
CPU11は、プログラム動作結果ログ34を参照することによって、回路と動作記述の対応表で対応付けされている変数が変更される回数をカウントすることで変更回数を得ることができる。例えば、レジスタAとレジスタBとが回路と動作記述の対応表32で対応付けされており、また、レジスタAが32ビット幅であると仮定して説明する。
例えば、レジスタAが5クロックサイクルで、DA1−>DA2−>DA3−>DA4と3回データが変更されたとすると、一回のデータ変化は、変化ビット数をビット幅で割り算した値で求められるため、
DA1−>DA2でビットの変化が8箇所である場合、8/32変化であり、
DA2−>DA3でビットの変化が6箇所である場合、6/32変化であり、
DA3−>DA4でビットの変化が7箇所である場合、7/32変化である。
レジスタのクロック当たりの平均データトグル率は、
ビット変化総数÷(ビット総数×クロックサイクル数)
=(8+6+7)÷(32×5)=0.13125 となる。
同様にレジスタBでの平均データトグル率を計算した結果、0.3となった場合、レジスタA−B間で示されるブロックのデータトグル率を2つの平均の0.215625とする。このようにして算出されたブロックのデータトグル率は、組み合わせ回路トグル率として参照される。
次に、図2における処理4について説明する。図16は、図2の処理4にて行なわれる電力見積もり方法について説明するためのフローチャートである。図16において、CPU11は、レイアウト後セル情報51と、各ネットの負荷容量値52と、素子電力情報53と、電源電圧値54と、処理3による動作率見積もり結果37とを参照して、各素子について、素子の分類に応じたステップS61からS64の処理を実行して電力を計算し、それらの総和を求める(ステップS60)。
素子がクロック素子の場合はステップS61を実行して、クロック素子の電力を計算する。素子がFF(フリップフロップ)素子の場合はステップS62を実行して、FF素子の電力を計算する。素子がメモリ素子の場合はステップS63を実行して、メモリ素子の電力を計算する。素子が上記以外の素子の場合はステップS64を実行して、データパス系のゲート電力を計算する。
上述した電力見積もり方法は、例えば、CMOS回路の動的電力は、各素子出力の充放電電力の総和で求められることに基づく。すなわち、
全素子Σ{素子内部電力+出力ネット充放電電力}
で表される。
データパスのノードとなる素子毎の動作回数は、
時間(クロック)当たりのトグル率(変化回数)×動作時間(クロック数)
で求められる。動作時間は、上述処理2で算出された遅延解析結果36を参照することによって得られる。
各素子の電力は、
負荷容量×動作回数
となる。
以下、素子の分類毎の電力見積もり方法について示す。上記動作回数は、クロックトグル回数によって表される。また、処理3で算出されたデータトグル率は、組合せ回路トグル率として表される。クロック素子電力はステップS61、FF電力はステップS62、メモリ電力はステップS63、そして、組合せ回路電力はステップS64にて算出される。
・クロック素子電力=(クロックトグル回数×クロックトグル1回当たりの電力)
・FF電力=クロック電力+データ電力
=(クロックトグル回数×クロック1回当りの電力)+
(クロックトグル回数×組合せ回路トグル率×データトグル1回当たりの電力)
・メモリ電力=メモリ読み出し回数×メモリ読み出し1回当たりの電力
+メモリ書き込み回数×メモリ書き込み1回当たりの電力
・組合せ回路電力=データ電力
=(クロックトグル回数×組合せ回路トグル率×データトグル1回当たりの電力)
メモリ読み出し1回当たりの電力、及びメモリ書き込み1回当たりの電力は、素子電力情報53から入力される。
上記計算において、データトグル1回当たりの電力は、
データトグル1回当たりの素子内部電力
+データトグル1回当たりの出力ネット放電電力
で求められる。処理3で算出したデータトグル率を組合せ回路トグル率として、データトグル1回当たりの電力と動作回数を示すクロックトグル回数とを乗算することによってデータ電力を求めることができる。
ここで、データトグル1回当たりの素子内部電力は、素子電力情報53から入力される。半導体製造テクノロジに依存して決められる情報である。
また、データトグル1回当たりの出力ネット放電電力は、素子電力情報53から入力される。レイアウト後セル情報51を参照することによって特定した処理中の素子を示すネット駆動セルと、各ネットの負荷容量値52を参照することによって特定されるそのネット駆動セルのネットの負荷容量値との組合せによって、素子電力情報53から出力ネット充放電電力を取得する。
上述より、RTLによる回路データ31から、LSI3の電力を見積もることができる。つまり、動作プログラムログから得た依存関係においてRTLの変数に置き換えたデータパスを用いて算出した素子の動作時間を用いて、各素子の動作率や電力を算出し、電力の総和で集積回路の電力を見積もることができる。
従って、LSI3の動作率の見積もりを、チップ全体のレベルで実行可能なネットがない状態である機能仕様書(FS)の段階であっても、早期に行なうことができる。また、電力見積もり結果を電源設計に用いることができるため、設計見直しなどの手戻りの発生を低減することができ、効率的なLSI設計を行なうことができる。
以上の説明に関し、更に以下の項を開示する。
(付記1)
集積回路の消費電力検証方法であって、
回路データで記述される論理回路モジュール毎のデータトグル率を算出する動作率算出手順と、
データ電力を要する素子に対しては前記データトグル率を用いて該データ電力を算出して、全素子の電力の総和を算出する電力総和算出手順とをコンピュータが実行することを特徴とする集積回路の消費電力検証方法。
(付記2)
電力総和算出手順は、
前記データ電力を要する素子に対しては、前記データトグル率にデータトグル1回当たりの電力と動作回数を示すクロックトグル回数とを乗算することによってデータ電力を算出することを特徴とする付記1記載の集積回路の消費電力検証方法。
(付記3)
動作率算出手順は、
前記論理回路モジュールを有する集積回路の動作をプログラムした動作記述プログラムの第一の変数と前記回路データの第二の変数との対応表を参照することにより、該動作記述プログラムを実行することによって得られた動作結果ログを用いて、該第二の変数が対応する該第一の変数のデータの1クロック当たりの変化回数を変化率として算出する変化回数算出手順と、
データパス間の変数の変化率の平均をデータトグル率として算出するデータトグル率算出手順とを有することを特徴とする付記2記載の集積回路の消費電力検証方法。
(付記4)
データフローを示すデータパスを解析して、該データパス上の前記論理回路モジュール毎の動作時間を出力するデータパス解析手順を前記コンピュータに実行させ、
電力総和算出手順は、クロック当たりの変化回数と前記動作時間とを乗算することによってクロックトグル回数を算出することを特徴とする付記3記載の集積回路の消費電力検証方法。
(付記5)
前記動作結果ログを用いて論理回路モジュール間の依存関係を解析し、前記対応表を用いて依存関係における前記動作記述プログラムの第一の変数を対応する前記回路データの第二の変数で示した動作解析結果を出力するログ解析手順を前記コンピュータに実行させ、
前記データパス解析手順は、前記第二の変数による前記依存関係を示す動作解析結果を用いて前記データパスを解析することを特徴とする付記4記載の集積回路の消費電力検証方法。
(付記6)
集積回路の消費電力検証装置であって、
回路データで記述される論理回路モジュール毎のデータトグル率を算出する動作率算出手段と、
データ電力を要する素子に対しては前記データトグル率を用いて該データ電力を算出して、全素子の電力の総和を算出する電力総和算出手段とを有することを特徴とする集積回路の消費電力検証装置。
(付記7)
集積回路の消費電力検証装置としてコンピュータに機能させるプログラムを格納したコンピュータ読取可能な記憶媒体であって、該コンピュータに、
回路データで記述される論理回路モジュール毎のデータトグル率を算出する動作率算出手段と、
データ電力を要する素子に対しては前記データトグル率を用いて該データ電力を算出して、全素子の電力の総和を算出する電力総和算出手段として機能させることを特徴とするコンピュータ読取可能な記憶媒体。
(付記8)
集積回路の消費電力検証装置としてコンピュータに機能させるコンピュータ実行可能プログラムであって、該コンピュータに、
回路データで記述される論理回路モジュール毎のデータトグル率を算出する動作率算出手順と、
データ電力を要する素子に対しては前記データトグル率を用いて該データ電力を算出して、全素子の電力の総和を算出する電力総和算出手順とを実行させることを特徴とするコンピュータ実行可能プログラム。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
3 LSI
11 CPU
12 メモリユニット
13 表示ユニット
14 出力ユニット
15 入力ユニット
16 通信ユニット
17 記憶装置
18 ドライバ
19 記憶媒体
31 回路データ
32、32s 回路と動作記述の対応表
33、33s 動作記述プログラム
34、34s プログラム動作結果ログ
35 動作解析結果
36 遅延解析結果
37 動作率見積もり結果
38 電力結果
41 第1の中間テーブル
42 第2の中間テーブル
43 レジスタグラフ
45 ログ作業テーブル
100 消費電力検証装置

Claims (5)

  1. 集積回路の消費電力検証方法であって、
    回路データで記述される論理回路モジュール毎のデータトグル率を算出する動作率算出手順と、
    データ電力を要する素子に対しては前記データトグル率を用いて該データ電力を算出して、全素子の電力の総和を算出する電力総和算出手順とをコンピュータが実行することを特徴とする集積回路の消費電力検証方法。
  2. 電力総和算出手順は、
    前記データ電力を要する素子に対しては、前記データトグル率にデータトグル1回当たりの電力と動作回数を示すクロックトグル回数とを乗算することによってデータ電力を算出することを特徴とする請求項1記載の集積回路の消費電力検証方法。
  3. 動作率算出手順は、
    前記論理回路モジュールを有する集積回路の動作をプログラムした動作記述プログラムの第一の変数と前記回路データの第二の変数との対応表を参照することにより、該動作記述プログラムを実行することによって得られた動作結果ログを用いて、該第二の変数が対応する該第一の変数のデータの1クロック当たりの変化回数を変化率として算出する変化回数算出手順と、
    データパス間の変数の変化率の平均をデータトグル率として算出するデータトグル率算出手順とを有することを特徴とする請求項2記載の集積回路の消費電力検証方法。
  4. データフローを示すデータパスを解析して、該データパス上の前記論理回路モジュール毎の動作時間を出力するデータパス解析手順を前記コンピュータに実行させ、
    電力総和算出手順は、クロック当たりの変化回数と前記動作時間とを乗算することによってクロックトグル回数を算出することを特徴とする請求項3記載の集積回路の消費電力検証方法。
  5. 前記動作結果ログを用いて論理回路モジュール間の依存関係を解析し、前記対応表を用いて依存関係における前記動作記述プログラムの第一の変数を対応する前記回路データの第二の変数で示した動作解析結果を出力するログ解析手順を前記コンピュータに実行させ、
    前記データパス解析手順は、前記第二の変数による前記依存関係を示す動作解析結果を用いて前記データパスを解析することを特徴とする請求項4記載の集積回路の消費電力検証方法。
JP2009154612A 2009-06-30 2009-06-30 集積回路の消費電力検証方法 Expired - Fee Related JP5310312B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009154612A JP5310312B2 (ja) 2009-06-30 2009-06-30 集積回路の消費電力検証方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009154612A JP5310312B2 (ja) 2009-06-30 2009-06-30 集積回路の消費電力検証方法

Publications (2)

Publication Number Publication Date
JP2011013713A true JP2011013713A (ja) 2011-01-20
JP5310312B2 JP5310312B2 (ja) 2013-10-09

Family

ID=43592585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009154612A Expired - Fee Related JP5310312B2 (ja) 2009-06-30 2009-06-30 集積回路の消費電力検証方法

Country Status (1)

Country Link
JP (1) JP5310312B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120030481A1 (en) * 2010-07-27 2012-02-02 International Business Machines Corporation Measuring Data Switching Activity in a Microprocessor

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142927A (ja) * 1999-11-16 2001-05-25 Matsushita Electric Ind Co Ltd 半導体集積回路装置の設計方法,回路の消費電力解析方法及び消費電力解析装置
JP2004054756A (ja) * 2002-07-23 2004-02-19 Nec Electronics Corp 消費電力見積り装置及び方法
JP2005293163A (ja) * 2004-03-31 2005-10-20 Nec Electronics Corp 消費電力計算方法及び装置
WO2008041280A1 (fr) * 2006-09-29 2008-04-10 Fujitsu Limited Procédé pour calculer la consommation de puissance d'un circuit intégré semi-conducteur et appareil pour concevoir un circuit intégré semi-conducteur
JP2008299464A (ja) * 2007-05-30 2008-12-11 Nec Electronics Corp 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142927A (ja) * 1999-11-16 2001-05-25 Matsushita Electric Ind Co Ltd 半導体集積回路装置の設計方法,回路の消費電力解析方法及び消費電力解析装置
JP2004054756A (ja) * 2002-07-23 2004-02-19 Nec Electronics Corp 消費電力見積り装置及び方法
JP2005293163A (ja) * 2004-03-31 2005-10-20 Nec Electronics Corp 消費電力計算方法及び装置
WO2008041280A1 (fr) * 2006-09-29 2008-04-10 Fujitsu Limited Procédé pour calculer la consommation de puissance d'un circuit intégré semi-conducteur et appareil pour concevoir un circuit intégré semi-conducteur
JP2008299464A (ja) * 2007-05-30 2008-12-11 Nec Electronics Corp 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120030481A1 (en) * 2010-07-27 2012-02-02 International Business Machines Corporation Measuring Data Switching Activity in a Microprocessor
US8458501B2 (en) * 2010-07-27 2013-06-04 International Business Machines Corporation Measuring data switching activity in a microprocessor

Also Published As

Publication number Publication date
JP5310312B2 (ja) 2013-10-09

Similar Documents

Publication Publication Date Title
US8122398B2 (en) Conversion of circuit description to an abstract model of the circuit
US7331024B2 (en) Power-consumption calculation method and apparatus
Bona et al. System level power modeling and simulation of high-end industrial network-on-chip
Kahng et al. Orion 2.0: A power-area simulator for interconnection networks
US20060130029A1 (en) Programming language model generating apparatus for hardware verification, programming language model generating method for hardware verification, computer system, hardware simulation method, control program and computer-readable storage medium
US8199910B2 (en) Signature generation apparatus and signature verification apparatus
CN112818621B (zh) 用于预测软ip部件的性能、功率和面积表现的系统和方法
JP5935544B2 (ja) 論理セルのアナログモデルを生成する方法、製品及びコンピュータシステム
JP4393450B2 (ja) 論理回路モデル変換装置及び論理回路モデル変換プログラム
JP4853312B2 (ja) テストベンチ生成機能を有する動作合成装置と方法及びプログラム
Chan et al. NoCEE: energy macro-model extraction methodology for network on chip routers
JP2005352787A (ja) タイミング解析方法およびタイミング解析装置
KR20200145672A (ko) 분석적인 프레임워크에 기초한 클록 게이트 대기시간 모델링
JP5034916B2 (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
JP2008299464A (ja) 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置
JP5310312B2 (ja) 集積回路の消費電力検証方法
JP2004062238A (ja) 消費電力算出方法
US8756540B1 (en) Method and apparatus for extracted synthesis gate characteristics model
JP2013524302A (ja) 精度を調節可能なマクロモデル電力解析のための方法及び装置
US20080172639A1 (en) Methods and apparatus for validating design changes
JP5467512B2 (ja) 動作合成装置、動作合成方法、及び、動作合成プログラム
JP2010277436A (ja) メモリ構造決定支援装置、メモリ構造決定プログラム及び記録媒体
Stammermann et al. Interconnect driven low power high-level synthesis
WO2013111451A1 (ja) システムシミュレーション装置
Bona et al. Low effort, high accuracy network-on-chip power macro modeling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121002

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130617

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees