JP4330573B2 - 消費電力評価方法、消費電力評価システム - Google Patents

消費電力評価方法、消費電力評価システム Download PDF

Info

Publication number
JP4330573B2
JP4330573B2 JP2005288409A JP2005288409A JP4330573B2 JP 4330573 B2 JP4330573 B2 JP 4330573B2 JP 2005288409 A JP2005288409 A JP 2005288409A JP 2005288409 A JP2005288409 A JP 2005288409A JP 4330573 B2 JP4330573 B2 JP 4330573B2
Authority
JP
Japan
Prior art keywords
circuit
clock
power consumption
evaluation
measurement
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
JP2005288409A
Other languages
English (en)
Other versions
JP2007102337A (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.)
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 JP2005288409A priority Critical patent/JP4330573B2/ja
Publication of JP2007102337A publication Critical patent/JP2007102337A/ja
Application granted granted Critical
Publication of JP4330573B2 publication Critical patent/JP4330573B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Description

本発明は、消費電力評価技術に関し、特に、LSI(Large Scale Integrated circuit)等の回路設計において、LSIの消費電力量を見積る技術に関する。
たとえば、LSIで実現される様々な用途の回路では、適用製品の小型化、携帯化や低発熱化、等の要求に呼応して、消費電力の低減が求められており、開発過程等で、設計対象の回路の消費電力を見積もる必要がある。
消費電力を見積る方法の1つとして、スイッチングパワーを見積る技術がある。スイッチングパワーは(電力)=0.5*V*V*(C*TR)で求める。ここで、Vは電圧、Cは総付加容量、TRはネットのトグル回数を表している。ネットのトグルとは、回路の接続状態を表現したデータであるネットリストにて定義された回路の入出力信号(ネット)の信号値が0から1に変化する、または、1から0に変化することである。Vが固定、Cがライブラリとして提供されている場合、TRの値を計測すれば、前記式を用いて消費電力を算出することができる。
TRは信号値の変化回数なので、TRの値を算出するためには、シミュレーションを行う必要がある。このシミュレーションの実行時間が長く、アプリケーションによっては消費電力を見積るのに十分な期間のデータを収得することができなかった。このため、近年、ソフトウェア・シミュレーションよりも高速にシミュレーションできるエミュレータやFPGA(Field Programmable Gate Array)プロトタイピングボードを利用して消費電力を計測する技術が開発されている。
エミュレータとは、FPGAやプロセッサなどを使ったシミュレーション専用のハードウェアである。ソフトウェア・シミュレータに近いデバッグ環境とソフトウェア・シミュレータよりも10,000倍高速なシミュレーションを提供している。
プロトタイピングボードとは、FPGAなどのプログラマブルなLSIを複数個ならべたボード(回路基板)のことで、回路製品の試作に用いられる。通常のプログラマブルなLSI用の設計フローを利用し、実装、動作させる。エミュレーションシステムよりも高速である反面、通例、デバッグ環境はない。必要に応じてデバッグ用の回路も設計する。以下、エミュレータとプロトタイピングボードをまとめてハードウェアシミュレータと呼ぶ。また、ハードウェアシミュレータでシミュレーションすることをハードウェアシミュレーションと呼ぶ。
TRは、前述のとおり、信号の変化をカウントしたものであるため、信号変化を調べるステップと変化をカウントするステップを用意して、変化回数を求める。ハードウェアシミュレータの場合、前記の手続きを回路で行うため、信号変化検出回路とカウンタ回路からなり信号変化回数を数える計測回路を付加するのが一般的である。正確に求める場合、全ネット(ネットリストの全信号)に計測回路を付加しなければならない。仮にカウンタに含まれるレジスタが16ビットだったとすると、少なく見積っても、回路量が17倍になる。ハードウェアシミュレータはFPGAのように載せられる回路量に制限がある。このため、回路量が大きくなるとシミュレーションできなくなる。従って、面積の増加を低く抑えて、計測結果を収得する技術が重要である。
また、全ネットに計測回路をつけた場合、ネット数個の計測結果が生成されることになる。ハードウェアシミュレータの場合、FPGAを並べたものなので、なんらかの方法で計測結果を取り出す手段が必要になる。エミュレータの場合、FPGAなどのプログラマブルなLSIを並べた装置と制御用のコンピュータ(以下、制御コンピュータとよぶ)をバス(例えばPCIバス)でつなぐ。制御コンピュータはエミュレータから信号値をPCIバス経由で取り出すことができる。従って、最低でもネット数回のトランザクションが発生することになる。エミュレータの場合、ネットリストを載せる(FPGA上に論理を構築する)ため、エミュレータを含むシステムに特別な機構がない場合、16ビットのレジスタの集まりという情報がのこっていない。従って、16ビットを1トランザクションで取り出せる保証がない。最悪の場合、1ビットずつ取り出すため、(ネット数*16)回のトランザクションが発生する。
これらのトランザクションは制御コンピュータとエミュレータの間で発生する。このため、データを取り出す時間が膨大となる。シミュレーション時間の大半がデータ抽出に費やされ、高速性が失われる。従って、効率的にトランザクションを生成する方法が必要である。FPGAプロトタイプボードの場合、計測データを抽出する仕組みそのものが必要となる。この仕組みについても、PCIなどのバスで接続する必要があるので、トランザクションの効率化が必要である。しかし、現在まで、計測結果の転送を効率化する系統的な方法がなかった。効率的なトランザクションを発生させることができ、高速にハードウェアシミュレーションによる消費電力計測を実現する方法が望まれる。また、高速化により回路量を低く抑える方法もハードウェアシミュレータの制約上重要な課題である。
作業時間の短縮も望まれる。従って、単に高速なハードウェアシミュレーションにより電力値が得られるだけでは不十分である。系統的に作業することが可能であり、更に一部または全部を自動化により手作業の削減と手作業による誤りの混入を防ぎ、作業者の負担を削減する必要がある。
従来、ソフトウェア・シミュレーションで計測していた。また、高速化を図るため、エミュレータを用いて計測していた。エミュレータでは、ソフトウェア・シミュレータと同様、信号の値の参照、信号の値の書きこみ、ブレークポイントの設定、ステップ実行(1サイクルすすめる実行)が可能である。
図24はエミュレータで電力を測定する参考技術の測定環境を示したものである。制御用コンピュータ101、エミュレータ制御部103、回路を実装するプログラマブルな領域をもつプログラマブルデバイス130で構成されている。
プログラマブルデバイス130には、被評価回路127の他に、サンプル期間カウンタ110、トリガ発生器111、クリアデータレジスタ114、計測回路115,116,117が実装されている。
すなわち、サンプル期間カウンタ110〜計測回路117は電力値計測用の回路を表している。つまり、サンプル期間カウンタ110〜計測回路117は、被評価回路127の消費電力値の測定のために追加した回路である。被評価回路127の対象信号126がクロックで、計測回路115〜117において、クロックの立ち上がりエッジ数を計測する場合は、図25のクロックエッジ計測回路で代用してもよい。また、被評価回路127がRAMの場合、消費電力見積もりのために対象信号126がインヒビットがアクティブな期間を計測対象に加えても良い。この場合、図25のアクティブ期間計測回路を使う。
エミュレータではユーザは制御用コンピュータ101からバス102を介してインタラクティブにシミュレーションを制御できる。初期状態では、エミュレータ制御部103はプログラマブルデバイス130にクロックを供給しておらず、回路は動作していない。最初に制御用コンピュータ101からクリアデータレジスタ114に値1を書き込む。次に1サイクルすすめる。クリアデータレジスタ114の出力はサンプル期間カウンタ110の0クリア端子、計測回路115〜117の0クリア端子につながっている。1が印加されたことにより、サンプル期間カウンタ110内のレジスタ、計測回路115〜計測回路117内のレジスタ(計測回路115の場合、レジスタ121)の値が0になる。クリアデータレジスタ114に値0を書き込む。次にトリガ発生器111に期間を書き込む。トリガ発生器111はサンプル期間カウンタ110の出力値と期間の値を比較する。もし等しければ、またその時に限って、トリガ113が1になる。ユーザは制御用コンピュータ101からトリガ113が1になるまでシミュレーションをすすめるようエミュレータ制御部103に指示する。エミュレータ制御部103はトリガ113が1になるまでクロックを供給し、シミュレーションする。トリガ113が1になったらエミュレータ制御部103はクロックの供給をやめる。従って、シミュレーションが停止する。トリガ113は制御用コンピュータ101にシミュレーションの停止を通知する。
シミュレーションが動作している期間、計測回路115〜計測回路117は評価対象の信号のトリガ回数を計測する。計測回路115〜計測回路117は同型なので、計測回路115を使って説明する。対象信号126が計測対象の信号である。ここでは被評価回路127内から信号を引き出した図になっているが、被評価回路127の内部の信号を観測する方法をエミュレータが提供している場合には、この機能を使って内部信号を観測しても良い。信号変化検出回路122には前回の値を覚えるレジスタがある。この値と計測信号124の値を比較して一致していなければ加算器123に1を送る。一致していれば0を送る。さらに計測信号124の値をレジスタに書き込む。このようにして、計測信号124の信号変化があった場合に1を出力、あっていない場合に0を出力する機能が実現できる。あとは信号変化検出回路122が出力した1の個数を数えればよい。レジスタ121、加算器123と信号変化検出回路122を図24のように結線すればレジスタ121に1の個数が保持される。
サンプル期間カウンタ110は基準クロックのエッジの数を数えている。期間として1000を与え、基準クロックが100MHzの場合、1000*10(ns)時間のシミュレーションが進んだらトリガ113に1がたつ。
トリガ113に1がたったら、制御用コンピュータ101から計測回路115〜計測回路117の中のレジスタ(計測回路115の場合、レジスタ121)の値を読み出し、記憶媒体に記録する。これで一連の計測の手続きである。更に次の期間のトリガ回数を計測する場合、前述の手続きをもう一度実行すれば、次の区間のデータが記憶媒体に記録される。
この参考技術の方法では、トリガ113に1が立って、シミュレーションが終わって、計測回路内のカウンタ値(計測回路115の場合、レジスタ121の値)を制御用コンピュータ101に取り出しているため、値を取り出している期間はプログラマブルデバイス130の被評価回路127は動作していない。前述の通り、電力測定の場合、通常の性能評価に比べて計測回路が多くなる傾向がある。正確に測定する場合にはネット数と同数のカウンタ値を抽出することになる。このため、シミュレーションを停止している期間が長くなり、ハードウェアシミュレーション全体の所要時間が長くなる、という技術的課題がある。
また、以下のような別の技術的課題もある。通例、エミュレータはネットリストを入力とする。RTL(Register Transfer Level)の場合であっても通例内部で論理合成してネットリストに展開されている。このため、多ビットのレジスタは、一旦、1ビットのレジスタにマッピングされることになる。このため、多ビットのレジスタの値を1回のトランザクションで転送できず、複数回のトランザクションに分けられることがある。もし、利用するエミュレータがレジスタを複数回にわけてしまうシステムの場合、これもシミュレーション実行時間の長時間化を引き起こす一因になり、技術的課題である。
なお、特許文献1には、テストベクタのビット状態を時系列に保持する複数のレジスタと、このレジスタのビット変化からテストベクタのトグル変化を検出する検出器と、検出回数を加算する加算器およびトグル回数格納用シフトレジスタをFPGAに構築して、消費電力測定対象回路のトグル回数を計測する技術が開示されている。しかし、この特許文献1では、計測されたトグル回数等の情報の外部への取り出しの効率化に関する上述の技術的課題は認識されていない。
特許文献2には、集積回路中の消費電力を算出すべき対象論理回路に、ゲートの信号変化回数を計測する計測回路を付加してデバイスを構成し、計測された信号変化回数を積算することで、論理回路の消費電力を算出する技術が開示されているが、やはり、計測結果を取り出す場合における上述のような技術的課題は認識されていない。
特開2002−288257号公報 特開2004−62238号公報
本発明の目的は、被測定回路等の消費電力を評価するためのハードウェアシミュレーションの所要時間を短縮して、被測定回路等の迅速な消費電力の評価を行うことが可能な消費電力評価技術を提供することにある。
本発明の他の目的は、被測定回路等の消費電力を評価するためのハードウェアシミュレーションにおいて論理物量や回路面積等を増加させることなく、被測定回路等の迅速な消費電力の評価を行うことが可能な消費電力評価技術を提供することにある。
本発明の他の目的は、消費電力評価工程の回路構築における労力の軽減および誤りの低減を実現することが可能な消費電力評価技術を提供することにある。
本発明の第1の観点は、消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る1つ以上の計測手段と、バッファ用記憶手段と、前記評価情報を該バッファ用記憶手段に転送する転送手段と、外部装置と接続される外部バスと接続されるバスインターフェースと、を有するハードウェアエミュレータを含むシミュレーションシステムにおける消費電力評価方法であって、前記外部装置へ前記評価情報を転送する場合に前記外部バスのバス幅に応じた転送単位毎の前記評価情報の格納方法が定義されたデータ構造情報に基づいて設定された前記転送手段により、前記各計測手段で得られた前記評価情報を順次前記バッファ用記憶手段に格納し、前記バスインターフェースにより、前記バッファ用記憶手段に前記バス幅に応じた転送単位分の前記評価情報が格納された評価情報であるパック化評価情報を前記外部バスへ出力する第1工程と、前記外部装置により、前記データ構造情報に基づいて、前記パック化評価情報を復元する第2工程と、を含む消費電力評価方法を提供する。
本発明の第2の観点は、前記消費電力評価方法において、前記計測手段が2以上の場合、該2以上の計測手段のうちの第1の計測手段による前記評価情報の採取と、該2以上の計測手段のうちの第2の計測手段により採取された前記評価情報の外部への取り出し動作とを並行して行う消費電力評価方法を提供する。
本発明の第3の観点は、消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る1つ以上の計測手段と、バッファ用記憶手段と、前記評価情報を該バッファ用記憶手段に転送する転送手段と、外部装置と接続される外部バスと接続されるバスインターフェースと、を有するハードウェアエミュレータをプログラム可能な論理回路上に構築して前記被評価回路のシミュレーションを行うことで、前記評価情報を収集する消費電力評価システムであって、前記シミュレーションでは、前記外部装置へ前記評価情報を転送する場合に前記外部バスのバス幅に応じた転送単位毎の前記評価情報の格納方法が定義されたデータ構造情報に基づいて設定された前記転送手段により、前記各計測手段で得られた前記評価情報を順次前記バッファ用記憶手段に格納し、前記バスインターフェースにより、前記バッファ用記憶手段に前記バス幅に応じた転送単位分の前記評価情報が格納された評価情報であるパッキング評価情報を前記外部バスへ出力する工程と、前記外部装置により、前記データ構造情報に基づいて、前記パック化評価情報を復元する工程と、を実行する消費電力評価システムを提供する。
本発明によれば、被測定回路等の消費電力を評価するためのハードウェアシミュレーションの所要時間を短縮して、被測定回路等の迅速な消費電力の評価を行うことが可能となる。
また、被測定回路等の消費電力を評価するためのハードウェアシミュレーションにおいて論理物量や回路面積等を増加させることなく、被測定回路等の迅速な消費電力の評価を行うことが可能となる。
また、消費電力評価工程の回路構築における労力の軽減および誤りの低減を実現することが可能となる。
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
図1は、本発明の一実施の形態である消費電力評価方法の作用の一例を示すフローチャートであり、図2は、本実施の形態の消費電力評価方法を実施するハードウェアシミュレーション環境の構成の一例を示す概念図である。
本実施の形態ではステップ・バイ・ステップで効率的なトランザクションを生成し、高速なシミュレーションを実現する消費電力評価方法を開示する。
本実施の形態の消費電力評価方法には、1回のトランザクションにおける有効ビット数を増やすパッキング工程200、パッキングされたデータの転送順序とパッキングを実現するバスの生成と転送時間に間に合うバスの並列化を行い、生成したバスや計測回路等を被評価回路に埋め込む計測回路挿入工程201、転送回路をもった被測定回路をハードウェアシミュレーションして、トグル回数を収集するエミュレーション工程202、収集されたデータはパックされているので、パックされているデータをアンパックして所望のデータを抽出する抽出工程203、抽出したデータを既存の電力解析ツールで電力解析を行う電力解析工程204をもち、シームレスにハードウェアシミュレータ300を用いて効率的なトグル回数等の情報のサンプリングおよび外部システムへの転送を実現する。
更に、本実施の形態では消費電力評価方法の明示および自動化により、ハードウェアシミュレーションの高速化を図るための作業の増大を低くおさえる。
すなわち、ハードウェアシミュレーションの高速化とハードウェアシミュレーションのセットアップ、電力解析作業の短時間化を両立させる消費電力評価方法を提供する。
また、後述のように、計測回路挿入工程201では複数の転送方法を提供する。各々の転送方法は、ハードウェアシミュレーションの制御方法、回路面積の増加量と精度誤差に違いがある。また精度を低下させる誤差要因を縮小させる方法を提供する。これらの方法が開示されることより、ユーザは、面積増加量と精度誤差のトレードオフ、ハードウェアのシミュレーション方法を制御できるようになる。
図2に例示されるように、実施の形態のハードウェアシミュレーション環境は、ハードウェアシミュレータ300、制御コンピュータ301、記憶装置302およびPCIバス303を含んでいる。
ハードウェアシミュレータ300が、たとえばエミュレータの場合には、エミュレータ・システムが提供するシミュレーション制御機能を利用してハードウェアシミュレータ300を制御する。
ハードウェアシミュレータ300が、たとえば、プロトタイプボードの場合、論理合成等の技術により、後述の、PCIインタフェース回路等のバスインタフェース360と、エミュレーションシステム制御部370を作成し、ハードウェアシミュレータ300に搭載する。
また、ハードウェアシミュレータ300のバスインタフェース360を介してエミュレーションシステム制御部370と通信をするドライバプログラムを制御コンピュータ301に実装して、制御コンピュータ301で実行し、インタラクティブにハードウェアシミュレータ300を制御する。
最初にパッキング工程200について説明する。ここでは図3に例示される被評価回路400が評価対象であったとする。
被評価回路400には、クロック420、クロック421、クロック422の3本のクロック信号がある。部分回路410、部分回路411、部分回路412はそれぞれクロック420(clock1,50MHz)、クロック421(clock2,75MHz)、クロック422(clock3,100MHz)で駆動されているレジスタおよびRAMを含み、さらに各々に含まれるレジスタで駆動される組み合わせ回路を含む。
また、ここでは、被評価回路400の全回路要素を計測対象とする場合について説明するが、実用上は計測対象を、被評価回路400内の一部の回路ブロックに絞ることが考えられる。その場合、計測対象外の処理は省略するものとする。
パッキング工程200では、最初にクロックツリーを既存の方法で抽出する。クロック420〜422それぞれについて繋がる全クロックネット(つまりクロックドメイン)を抽出する。
この抽出方法としては、被評価回路400のネットリストをメモリ空間に展開して、クロック420からネットを順番にたどって全ネットのリストを生成する方法がある。または、ネーミングルールで抽出可能な回路であればネーミングルールで抽出するとしてもよい。ここではクロックドメインが明らかなネットのリストをクロックドメイン別クロックネットリストとよぶことにする。もし各々のクロックドメインが抽出できないが、クロック420〜422のいずれかに繋がる全クロックネットが抽出できる場合には、クロックネットをすべて抽出する。ここでは、共通ドメインクロックネットリストとよぶことにする。また、クロックネットを抽出する手段がない場合には抽出は行わない。
クロックドメイン別クロックネットリストがある場合、さらに入力回路からそれぞれのクロックドメインのクロックでドライブされているレジスタのリストを既存の方法で抽出する。この抽出方法としては、クロックの場合と同様、被評価回路400のネットリストをメモリ空間に展開して、ネットをたどってレジスタを探す方法がある。これによりレジスタのリストを生成することができる。これをクロックドメイン別レジスタリストと呼ぶことにする。更にクロックドメイン別レジスタリストにあるレジスタで駆動されている組み合わせ回路を既存の方法で抽出することにより、クロックドメイン別の組み合わせ回路リストを生成することができる。見つける方法はレジスタの場合と同様である。
トグル回数としては0→1変化(立ち上がりエッジ)も、1→0変化(立ち下がりエッジ)も検出することが考えられるが、本実施の形態では立ち上がりエッジのみ数える場合を説明する。立ち上がりエッジ数を2倍すればトグル回数を求めることができる。
最初にサンプリング期間T_SAMPLINGを指定する。ここではT_SAMPLING=400、000(ns)の場合を説明する。クロック422(100MHz)は周期が10(ns)なので、最大40,000(立ち上がりエッジ)が含まれる。従って、log2(40,000)以上の整数ビットあれば計測可能である。従って16ビットあれば十分である。従って、切り上げ(log2(T_SAMPLING/クロック周期))で最小ビット数を求めることができる。クロックドメイン別クロックネットリストがある場合には、クロック420、クロック421についても同様にしてそれぞれ15ビット、16ビットを算出する。ない場合には、すべて16ビットにする。
次に、クロックドメイン別レジスタリスト(または組み合わせリスト)がある場合にはクロックのビット幅/2のビット幅を割り当てる。もし、クロックドメイン別レジスタリストがない場合でクロックネットリストがある場合、レジスタまたは組み合わせ回路がどのクロックで駆動されているかわからないので、最速クロックで駆動されているものとする。図3の例の場合、クロック422が最も周波数が高いので、レジスタ/組み合わせ回路に対して15ビットを割り当てる。もし、クロックネットリストもない場合、クロックネットかレジスタか区別がつかないので、クロック422と同じ16ビットを全ネットに割り当てる。このようにして、ネットごとの立ち上がりエッジ回数を計測するのに必要なビット数が求まる。
以下の説明では、簡単のため、クロック420〜422(clock1,clock2,clock3)の3本のクロックと、部分回路410に含まれるレジスタ出力430(sig1)と部分回路411に含まれるレジスタ出力431〜432(sig2,sig3)の3本が計測対象の場合を例示する。また、前記方法により、クロックドメイン別クロックネットリスト、クロックドメイン別レジスタリストが求まり、前記方法により、必要ビット数が図4のように算出されたとする。以下この対応テーブル510を使って説明する。図4の対応テーブル510には、クロックドメイン511、信号名512、ビット数513、クロックドメイン514が、個々のクロックドメイン毎に対応付けられて格納されている。
次に計測対象になっている信号をパックする。PCIバス303のバス幅がたとえば、32ビットの場合、32ビットに近くなるようにパックすることで転送回数(バストランザクション)を減らす。ここで、サイズにのみ着目してつめてもよいし、電力解析工程204の処理の都合にあったつめ方をしても良い。例えば、サイズのみに着目する場合、リストの先頭から順番に32ビット長のMSB側から割り当てて行き、32ビット幅に入りきらなくなったら次の32ビットのMSB側から同様に割り当てる処理を行う。これを繰り返すことにより、パックすることができる。例えば、図4の対応テーブル510のクロックドメインを上述の方法で割り当てると、図5のようになり、パックしない場合の6ワードから、3ワード長のデータにパックできる。図5で左端の0〜2の数はアドレスを表し、転送順序を表しているものとする。
一方、図6には、電力解析工程204の処理にあわせた場合のパック例を示す。電力解析工程204で、クロックに関してはクロックネットと信号名とトグル回数の表が必要であるが、レジスタ・組み合わせ回路の場合には、全レジスタ・全組み合わせ回路のトグル回数の平均でよい場合、レジスタ・組み合わせ回路に関しては信号名を保存する必要がない。この場合、クロック(クロック420〜クロック422)を先につめ、レジスタ・組み合わせ回路の信号(レジスタ出力430〜レジスタ出力432)を次につめる。後者はクロックドメインでビット数が共通なのでクロックドメインごとにつめる。
例えば、図4の対応テーブル510の場合、図6のようにつめる。更に、図4の対応テーブル510におけるクロックの信号名512のリスト部分(信号名clock1〜clock3)のみを記憶する。更に、データ構造情報210に、クロック:0アドレス〜1アドレス、clock1ドメイン:14ビット:2アドレス〜2アドレス:1個、clock2ドメイン:15ビット:3アドレス〜3アドレス:2個という情報が、後段のアンパック処理でわかるように記録する。たとえば、データ構造情報210を、図7のように記述する。
これにより、抽出工程203において、クロックに関してはクロック名と立ち上がりエッジの回数の対応表をつくることができる。また、レジスタ・組み合わせ回路の信号はパッキングアドレス表(データ構造情報210)を使って解析して、立ち上がりエッジ回数を抽出し、抽出したデータを平均して、平均値を出す。これにより電力解析工程204で必要なデータをそろえることができる。アクティブ期間計測の場合には基準クロックでビット数を決める。
次に計測回路挿入工程201について説明する。ここでは、被評価回路400(後述の図8の被評価回路310)の回路データ(ネットリスト)に後述の計測回路320、転送回路330を追加する場合を説明する。
この他にもいくつか方法がある。転送回路330をプロトタイピングボードやエミュレータ内部のプログラマブルなLSIを搭載したボード上に形成してもよい。さらに、計測回路320を専用チップ上に用意して、このチップをボード上に置いても良い。転送回路330はボード上に専用のバスとして設計してもよいし、より一般的なバスを利用するとしてもよい。
エミュレータには、プログラマブルなLSI間のワイヤ接続をより汎用的なバスを使って、ブロードキャスト通信により仮想的に接続するものがある。このようなバスを利用した転送が後者の例になる。いずれの方法も、同等の回路を、FPGA等のプログラマブルなLSI上で実現するか、専用のチップやボード上の配線で実現するかの違いなので、以下はプログラマブルなLSI上に計測回路320、転送回路330も搭載する例にしぼって説明する。
計測回路320、転送回路330の例を図8、図9、図10、図11、図12に示す。なお、図8、図9、図10、図11、図12で、共通の要素には同一の符号を付して重複した説明は割愛する。
いずれも転送回路330をトークンリングによるバスで実現している。これにより、計測結果がバーストでFIFOに書き込まれる。
図8、図9は被評価回路310の測定(評価結果327の収集)と記憶装置302(HDD)に書き込む処理を並列化したものである。
図8に例示されるように、本実施の形態のハードウェアシミュレータ300は、被評価回路310、計測回路320、転送回路330、制御部340、FIFOバッファ350、バスインタフェース360を含んでいる。
被評価回路310は、複数の対象信号311の各々を計測回路320に出力している。
計測回路320は、信号変化検出回路321、加算器322、レジスタ323、ラッチ324、ゲート端子325、0クリア端子326を含んでいる。
信号変化検出回路321は、被評価回路310の対象信号311の変化を計測し、変化を検出する毎に加算器322をインクリメントする。
レジスタ323は、加算器322のカウント値を保持し、0クリア端子326から入力される0クリア信号348にて0に初期化され、この初期化の契機で加算器322も初期化する。
ラッチ324は、ゲート端子325から入力される結果出力タイミング信号347を契機としてレジスタ323の値を取り込んで保持し、評価結果327としてセレクタ331に出力する。
転送回路330は、セレクタ331、イネーブルラッチ332を含んでいる。
セレクタ331は、イネーブルラッチ332からの選択信号333に基づいて、複数の計測回路320の各々から出力される評価結果327の一つを選択してFIFOバッファ350に出力する動作を行う。
すなわち、本実施の形態の場合、イネーブルラッチ332は計測回路320の数だけ多段に構成され、各段のイネーブルラッチ332は、最段のイネーブルラッチ332に入力される0クリア信号348を契機として順次後段に、選択信号333のON状態を示すビットがシフトされ、この選択信号333のシフトによって、セレクタ331における、複数の計測回路320(計測回路0〜計測回路2)の各々に対応する評価結果327の選択操作が順次切り替えられる。
制御部340は、サンプル期間カウンタ341、期間設定/判定部342、測定切り替えタイミング判定部343、転送タイミング判定部344、0クリアラッチ345を含んでいる。
サンプル期間カウンタ341は、基準クロック346によって駆動されるカウンタである。
期間設定/判定部342は、外部から設定され期間値とサンプル期間カウンタ341のカウンタ値が等しくなった時に、サンプル期間カウンタ341を初期化する。
測定切り替えタイミング判定部343は、サンプル期間カウンタ341のカウンタ値が0の時に、結果出力タイミング信号347を0クリアラッチ345および複数の計測回路320のゲート端子325に同時に入力する。
0クリアラッチ345は、結果出力タイミング信号347を契機に、0クリア信号348を、転送回路330のイネーブルラッチ332、および複数の計測回路320の0クリア端子326に同時に入力する。
転送タイミング判定部344は、サンプル期間カウンタ341のカウンタ値に応じて、書き込み要求信号349をFIFOバッファ350に出力する。
FIFOバッファ350は、転送タイミング判定部344からの書き込み要求信号349の入力を契機としてセレクタ331で選択された評価結果327を取り込んで保持する。
バスインタフェース360は、PCIバス303とのバスインタフェースを実現し、制御コンピュータ301の指示等に基づいて、FIFOバッファ350から評価結果327を記憶装置302に読み出す。
制御部340の期間設定/判定部342がサンプリング期間の終了を検知して、自動で次のサンプリング期間を計測する。ハードウェアシミュレータ全般に適用できる。図8等の例では、記憶装置302への書き込み時間がサンプリング期間以内に収まる場合の例を示している。もし、サンプリング期間を超える場合にはなんらかの対策が必要である。例えば、記憶装置302への書き込み時間がサンプリング期間を超える時間だけ、被評価回路310のクロックを停止する方法がある。
図8はサンプリング期間の最初で、0クリア信号348によって、一斉に計測回路320のレジスタ323を0クリアしている。このため、FIFOバッファ350に集積される立ち上がりエッジ回数のデータ(評価結果327)は正確に同じサンプリング期間で計測した値になる。この図8のハードウェアシミュレータ300の回路では、計測データ転送バスを構成する転送回路330の回路増分に加えて、個々の計測回路320内に設けられたラッチ324の回路増分が加わる。どちらも、対象信号311の本数に比例して増加するため、ハードウェアシミュレータ300の資源を比較的多く使用する。
そこで、図9のように、個々の計測回路320のラッチ324の部分を削除して、論理規模を削減し、ハードウェアシミュレータ300における資源の節約を行うこともできる。
すなわち、図9の例では、結果出力タイミング信号347を直接にイネーブルラッチ332に入力し、各段のイネーブルラッチ332の選択信号333を次段の個々の計測回路320の0クリア端子326に入力することで、個々の計測回路320毎に、レジスタ323からの評価結果327の取り出しと、その後のレジスタ323のクリアを段階的に連続して行うようにしている。
すなわち、図9の構成のハードウェアシミュレータ300では、個々の計測回路320において、レジスタ323の値をFIFOバッファ350に送る順番がきたら、当該FIFOバッファ350に転送する。そして、次のサイクルでレジスタ323を0クリアし、次のサンプリング期間のシミュレーションが開始される。このため、各々の計測回路320で異なるサンプリング期間を利用している。もし、100MHzのクロックドメインに属する信号線を1000本計測した場合、10μsだけずれる。もし、サンプリング期間が1msの場合、ズレは1%にすぎない。このようなケースではズレを無視することができる。
このように、図8および図9の例では、ハードウェアシミュレータ300における一つの計測回路320における評価結果327の外部への転送と、他の計測回路320における計測処理(シミュレーション)とが並行して実行されるので、ハードウェアシミュレータ300内の複数の計測回路320から計測回路320への評価結果327等の計測データの収集を短時間に行うことができる。
図10、図11はサンプリング期間ごとに制御コンピュータ301に制御を戻す方法の一例を示している。
図10は、上述の図8に対応し、計測回路320を一斉に0クリアする場合であり、図11は、上述の図9に対応し、計測回路320を個別に0クリアする場合である。
すなわち、この図10および図11の場合には、サンプル期間カウンタ341および期間設定/判定部342のループに、制御コンピュータ301が介入してシミュレーションの開始/停止を制御する。すなわち、期間設定/判定部342からの出力は、トリガ信号342aとして制御コンピュータ301に入力され、サンプル期間カウンタ341に対しては、制御コンピュータ301から0クリア信号301aが入力されることで、制御コンピュータ301が、シミュレーションの開始/停止を制御する。
この場合、期間設定/判定部342からの出力は、トリガ信号342aとして、制御コンピュータ301に入力される。また、制御コンピュータ301からサンプル期間カウンタ341には、0クリア信号301aが入力される。
そして、期間設定/判定部342から出力されるトリガ信号342aにて、制御コンピュータ301はハードウェアシミュレータ300のシミュレーションを止める。エミュレーションシステム制御部370以外のクロックをマスクする。たとえば、エミュレーションシステム制御部370以外のクロックに0をフォースする。
更に、すべてFIFOバッファ350がエンプティになることをトリガ条件してシミュレーションを実行する。トリガ信号342aが真になってシミュレーションが停止したら、サンプル期間カウンタ341の0クリアに0クリア信号301aの1を入力、1クロックすすめて、0クリアに0クリア信号301aの0を入力して、トリガが1になるまでシミュレーションを実行する。このようにすると外部バス(PCIバス303)の転送速度が遅い場合にも適用できる。例えば、記憶装置302が遅い場合の転送や、制御コンピュータ301からFIFOバッファ350のデータを読み出す処理に、ハードウェアシミュレータ300のシミュレーションを確実に同期させることができる。
図12は、ハードウェアシミュレータ300における転送回路330の転送経路(バス)を並列化する方法を示したものである。
この場合、転送回路330では、複数のセレクタ331およびセレクタ334が並列に設けられ、各々に対応して、FIFOバッファ351およびFIFOバッファ350が設けられている。また、個々のFIFOバッファ350およびFIFOバッファ351の転送タイミングを制御するための転送タイミング判定部344、転送タイミング判定部345が個別に設けられている。
そして、複数の計測回路320からの評価結果327が並列に、セレクタ331およびセレクタ334を介して、FIFOバッファ351およびFIFOバッファ350に出力される。なお、この場合、計測回路320のレジスタ323は逐次、選択信号333によって0クリアされる。
すなわち、この図12の例では並列度を2にし、複数の計測回路320から出力される評価結果327を含むリストの前半1/2をセレクタ331を介してFIFO0(FIFOバッファ350)にいれ、当該リストの後半1/2をFIFO1(FIFOバッファ351)にいれる回路をハードウェアシミュレータ300に生成している。バスインタフェース360はFIFO0のデータをすべて送り出したのち、FIFO1に送りだすようにすればリストと同じ順番で記憶装置302に書き込むことができる。
あるいは、制御コンピュータ301からFIFO0をすべて読み、次に、FIFO1をすべて読む方法を用いてもよい。もちろん、リストの奇数番目をFIFO0、リストの偶数番目をFIFO1に詰める回路を生成して、FIFO0、FIFO1を交互に読み出して記憶装置302に書き込む構成としても良い。また、制御コンピュータ301から、FIFO0、FIFO1を交互に読むとしてもよい。バスインタフェース360でインターリーブして送り出すようにして、制御コンピュータ301がシーケンシャルに読めるようにしてもよい。この方法を使うことで、図12の半並列化回路の場合、サンプリング期間のズレ幅を縮小する効果がある。
図13に、データをパッキングする方法を示す。対象信号311としてclock0,clock1を計測する計測回路320が、それぞれ計測回路0、計測回路1とする。clock0,clock1はともに16ビットの評価結果327(計測結果)がでる。計測結果をそれぞれD0[15:0]、D1[15:0]とする。この時、セレクタに{D0[15:0]、D1[15:0]}を送る。この方法により、パッキング工程200で計画した並び方をした32ビットデータをFIFOバッファ350に格納できる。
以上の方法により、評価結果327を転送する転送回路330、計測回路320を生成し、この計測回路320、転送回路330と被評価回路310を接続した設計データ(ネットリスト)をハードウェアシミュレータ300内に出力して、シミュレーション回路を構築する。
次にエミュレーション工程202について説明する。エミュレーション工程202ではハードウェアシミュレータ300の場合もプロトタイプボードの場合も、標準の方法でプログラマブルなデバイスに回路データをダウンロードする。これによりハードウェアの動作をプログラマブルなデバイスで実行できる状態になる。ハードウェアシミュレータ300の場合には通例、対応した制御ソフトウェア301−1が制御コンピュータ301に搭載されている。この制御コンピュータ301に対してコマンドを発行してハードウェアシミュレータ300の制御を行う。また、通例、コマンドは手動で入力するほかにスクリプト言語で記述してバッチ処理できるようになっている。
コマンドの例を示す。エミュレーションを停止するトリガを検出するコマンドが stop −time <時間N> −if {<信号名> == <値>} で、シミュレーションを実行開始した時点から<時間N>たったのち、もし、<信号名>==<値>が真になったらシミュレーションを停止する。runでシミュレーションを実行する。
この場合、stopコマンドの条件が成立するまで停止しない。run <サイクル数N>で<サイクル数N>実行したのち停止する。
memory −dump <メモリインスタンス名> −start <開始アドレス> −end <終了アドレス> −file <出力ファイル名>は、<メモリインスタンス名> のアドレス<開始アドレス>から<終了アドレス>のデータをリード、リードしたデータ<出力ファイル名>に書き出すコマンドとする。
これは一例であるが、通例、エミュレータ(ハードウェアシミュレータ300のエミュレーションシステム制御部370)にはこのようなコマンドが予め用意されている。これらを使って制御すればよい。
例えば図14のようなスクリプトを用意する。これはエミュレータの制御スクリプトがTCL(Tool Command Language)/TK(Tool Kit)の拡張になっている場合の例で、構文はTCL/TKと同じである。この図14のスクリプトの記述はハードウェアシミュレータ300に8回の計測結果のダンプを指示した例になっている。半並列回路の場合、このような制御でデータの転送が行える。
本実施の形態のような並列回路の場合、ハードウェアシミュレータ300にPCIバスマスター回路(バスインタフェース360)を搭載する。プロトタイプボードでPCIバスインタフェースがある場合やエミュレータにPCIと繋がる外部バスが存在する場合には、バスインタフェース360の中にPCIバスマスター回路を入れる。ボードやエミュレータにバスマスター回路が搭載され、これを制御可能なドライバがあればこのドライバを用いる。転送にはよく知られたPCIバスマスターDMA転送を行う。これにより、記憶装置302に、ハードウェアシミュレータ300で得られた評価結果327を書き込む。
以上の方法により、図8〜図11に例示したように、転送回路330が半並列回路の場合、あるいは図12のように転送回路330が並列回路の場合、のいずれであっても、所望のデータ(計測値ログ211)を記憶装置302に集積することができる。
次に抽出工程203を説明する。ここでは、計測値ログ211がバイナリーフォーマットで、上述の図6に例示したデータ構造情報210で書き込まれている場合を説明する。例えば、3回計測データをとった場合、計測値ログ211は、図15のようになる。ここで、計測値ログ211を、図7のデータ構造情報210を用いて解析する。
たとえば、図15の計測値ログ211のファイルを図16に例示されるソースコードのアルゴリズムで解析(パーズ)すると、clock1〜clock3のデータを、図7のdata[0]〜data[2]に書き込める。次にドメインごとに図16と同様のパーズ処理をして、合計値を算出、信号総数を算出、合計値/信号総数で平均値を算出する。以上により、パッキングしたデータ(評価結果327)を復元できる。更に復元したデータを電力解析工程204で用いる電力解析ツールの入力フォーマットに加工する。これを電力解析工程204に渡す。
電力解析工程204で抽出工程203からもらった入力データを電力解析ツールにかける。これにより消費電力を得る。
以上の方法のうち全部または一部を自動化してもよい。
このように、本実施の形態の消費電力評価方法によれば、ハードウェアシミュレータ300内に構築された被評価回路310に対して、当該ハードウェアシミュレータ300と外界(制御コンピュータ301、記憶装置302など)との間における評価結果327の出力のための通信トランザクションの回数を削減する方法を実装できる。
これにより、従来課題であった通信トランザクションに起因するハードウェアシミュレーションの所要時間の増大を抑制できる。
また、複数の計測回路320におけるレジスタ323の0クリアの実行方法や、ラッチ324の有無等を組み合わせた複数の転送方法を提供することにより、ハードウェアシミュレーションの制御方法の選択、ハードウェアシミュレータ300における回路量の増加と精度のトレードオフを選択的に決めることができる。
消費電力評価環境では少ない労力で、被測定回路の消費電力を評価できることが重要であるが、通信トランザクションをコンパクトにする方法を実装するための労力が発生する。
しかし、本実施の形態の消費電力評価方法では、この通信トランザクションに関係する計測回路320、転送回路330等を、被評価回路310に系統的な方法で実装できるため、消費電力評価工程における労力の増大を軽減できる。
更に本実施の形態に開示した消費電力評価方法は、パッキング工程200〜電力解析工程204の全部または一部を、自動化または対話的な自動化で実現できるため、人手作業による時間を短縮するとともに誤りの混入を防ぐことができ、労力の増大を軽減できる。
よって、本実施の形態の消費電力評価方法によれば少ない労力の作業で高速なハードウェアシミュレーションによる効率的な電力計測データの収集を実現でき、従来技術と同等程度の作業量でありながら、ハードウェアシミュレーション時間(電力計測データ収集時間)の高速化を実現することができる。
更に収集タイミングの誤差を許容することにより、ラッチ324等の回路要素を削減するオプションにより、ユーザが、用途や目的等に応じて選択的に回路量を削減することが可能となり、従来技術に対して新たに発生するオーバーヘッドを削減することができる。
次に、上述のパッキング工程200および計測回路挿入工程201の各工程について、さらに詳細に説明する。
図17、図18、図19は、本実施の形態の消費電力評価方法において用いられる各種情報の構成例を示す概念図である。
ソースクロックリスト11は、クロック名11aおよび動作周波数11bからなる。
このソースクロックリスト11は、被評価回路310の設計者が作成するリストである。被評価回路310に入力されるクロック、または、クロック生成器の出力の一覧である。各クロック名(クロック名11a)と各々の動作周波数11bを与える。例では、clock1/clock2/clock3、がソースクロックである。
RAMピンネーム規則12は、RAMモジュール12a、モジュール名12bを含んでいる。
RAMピンネーム規則12は、インスタンス(回路データの実体)がRAMモジュールか否かを判定する規則と、計測対象のピンを判定する規則が記載されたものである。例では、モジュール名(RAMモジュール12a)がRAMから始まるものをRAMと判定し、そのモジュールのうち、WEというポートがあったらそのピンを計測対象とすることが定義されている。図20の例の、ハードウェア記述言語による回路データ601では、“RAM 1RW”というモジュールがRAM0という名前でインスタンスされ、“.WE()”からWEポートを持つことがわかる。
データバス幅指定13は、外部バスの幅を指定する。本実施の形態では、外部バスは32ビット幅のPCIバス303を用いているので、32ビットを指定する。
クロックドメインリスト14は、クロック名14a、追跡可能全クロック名14bを含んでいる。
クロックドメインリスト14(クロックドメイン別クロックネットリスト)は、ソースクロック名(クロック名14a)とこのソースクロック名からクロックバッファ/論理ゲートを介して繋がっている全信号(追跡可能全クロック名14b)の一覧である。例では、クロックバッファ、論理ゲートがソースクロックの先にないため、各々リストにはソースクロックのみが書き込まれる。
擬似クロックドメインリスト15(共通クロックネットリスト)は、クロック名15a、追跡可能全クロック名15bを含んでいる。
ネーミングルールによる場合、必ずしもソースクロック別にソースクロックからたどれるクロックの集合を抽出できないことがある。この場合、クロックドメインリスト14の代わりに擬似クロックドメインリスト15を作る。clock1,clock2,clock3が見つかる。ソースクロックリスト11から最高周波数のクロックを探す。例ではclock1がみつかる。clock1をクロック名にする。擬似クロックドメインリスト15のフォーマットはクロックドメインリスト14と同じである。
全クロック化クロックドメインリスト16は、クロック名16a、全クロック名16bを含んでいる。
クロックを見つけることができない場合、全信号をクロックとしてリストアップする。クロック名は擬似クロックドメインリスト15と同様、最高周波数のクロックを選択する。全クロック化クロックドメインリスト16のフォーマットはクロックドメインリスト14と同じである。
クロックドメイン別レジスタリスト17は、クロック名17a、レジスタ名17bを含んでいる。
クロックドメイン別レジスタリスト17は、クロックドメインリスト14または擬似クロックドメインリスト15をもとに各クロック名ごとにそのドメインに含まれるクロック信号と繋がるレジスタをメモリ上の回路から検索したものである。検索対象のクロック名17aを決める。TOPノードから全探索して、ノードタイプがレジスタのものを見つける。そのノードのクロック名が探索中のクロック名と一致するか判定する。一致したらレジスタ名17bに記憶する。これによりクロックドメイン別レジスタリスト17が生成できる。
クロックドメイン別ワイヤリスト18は、クロック名18a、ワイヤ名18bを含んでいる。
クロックドメイン別ワイヤリスト18(クロックドメイン別の組み合わせ回路リスト)は、クロックドメイン別のレジスタリストと回路データからクロックドメインに属するワイヤを探すために用いられる。
サンプリング期間指定19は、変数19a、値19bを含んでいる。
サンプリング期間指定19(サンプリング期間T_SAMPLING)は、評価データを計測する期間を指定する情報である。例では40(μs)を設定している。
計測RAMピンリスト20は、インスタンス名20a、ピン名20bを含んでいる。
RAMのインスタンス名と計測対象のポート名のリスト。メモリ上の回路を全探索し、ノードタイプのうち、計測対象の名前を持つピンを探す。この場合、RAM0__WEが見つかる。従って、上記のような計測RAMピンリスト20が生成される。
データ構造情報21は、上述の図7のデータ構造情報210をより詳細に例示したものである。
データ構造情報21は、リスト名21a、ポインタ21bを含んでいる。ポインタ21bは、後述のクロックリストサブテーブル22〜RAMリストサブテーブル24を指し示す。
データ構造情報21は、3種類のサブテーブルで構成される。クロックリストサブテーブル22は各クロック名(クロック名22a)と各々のクロックのトグル回数を計測するのに必要なビット数(ビット幅22b)のリストが記載される。信号リストサブテーブル23には各クロックドメイン(クロック名23a)に含まれるワイヤを計測するのに必要なビット数(ビット幅23c)およびそのクロックドメインに属するワイヤの本数(所属信号数23b)が記載される。RAMリストサブテーブル24には、RAMのポートで計測すべきポートの名前(信号名24a)とこれを計測するのに必要なビット数(ビット幅24b)が記載される。
ビット表25は、クロック名25a、必要ビット幅25bを含んでいる。
生成回路指示表26は、設定項目26a、属性値26bを含んでいる。
生成回路指示表26には、計測回路挿入工程201に与える各種のオプションが設定される。どのような転送回路330を生成するかを指定する。この生成回路指示表26の設定項目26aへの各種情報の設定により、多様な仕様の転送回路330を自動的に生成させることができる。
電力ツール用データヘッダ27は、分類27a、属性値27bを含んでいる。
電力ツール用データ本体28は、サンプリング回数28a、タイプ28b、信号名28c、変化回数28d、アクティブ期間28e、変化平均28fを含んでいる。
以下、図21は、上述の図1のフローチャートをさらに詳細に例示したフローチャートである。
パッキング工程200では、ソースクロックリスト11、RAMピンネーム規則12、サンプリング期間指定19、回路データ601を用いて、クロックドメインリスト14を生成するとともに、計測RAMピンリスト20、クロックドメイン別ワイヤリスト18、データ構造情報21を出力する。
なお、このパッキング工程200では、必要に応じて、ネーミングルール600を用いることもできる。
このネーミングルール600は、信号名の命名法をルール化したものである。設計データの可読性を向上させたり、自動化を図るために用いられる。たとえば、「クロック信号は“clock”から始まる信号名をつける、クロック信号以外は“clock”からはじめてはいけない」というように規則をつける。これにより、“clock”からはじめる信号名を見つけると設計者はクロック信号であると認識できる。また、アプリケーションソフトが“clock”から始まる信号名を探すことにより、クロック信号を抽出することができる。本実施の形態では、クロックに対して先の例の規則が設けられているとする。
図22は、パッキング工程200をより詳細に例示したフローチャートであり、信号分離工程200aと、スケジューリング工程200bを含んでいる。
信号分離工程200aでは、回路データ601、ソースクロックリスト11、ネーミングルール600、RAMピンネーム規則12、等に情報に基づいて、クロックドメインリスト14、クロックドメイン別レジスタリスト17、クロックドメイン別ワイヤリスト18、計測RAMピンリスト20等の情報を出力する。
スケジューリング工程200bでは、前段の信号分離工程200aから出力されたクロックドメインリスト14、クロックドメイン別レジスタリスト17、クロックドメイン別ワイヤリスト18、計測RAMピンリスト20等の情報を用いて、データ構造情報21を出力する。
図21のフローチャートに戻って、計測回路挿入工程201では、回路データ601、データバス幅指定13、サンプリング期間指定19、生成回路指示表26、計測RAMピンリスト20、クロックドメイン別ワイヤリスト18、データ構造情報21に基づいて、ハードウェアシミュレータ300(被評価回路310、計測回路320、転送回路330、制御部340、FIFOバッファ350、バスインタフェース360)を生成する。
図23は、計測回路挿入工程201の一例をより詳細に例示したフローチャートである。計測回路挿入工程201は、計測部品生成工程201a、制御部品生成工程201b、転送回路生成工程201c、マージ工程201d、サンプリングサイクル算出工程201eを含んでいる。
クロック・RAM等の計測部品生成工程201aは、計測回路ライブラリを適宜参照して、以下の生成手続きを実行する。
(ステップ701). ソースクロックリストから最速のクロックを見つける。fast_clock=<クロック名>とする。
(ステップ702). lib_type にあったクロック用のパラメタライズド・モジュール記述のモジュール名を pm_module にセットする。
(ステップ703). データバス幅指定を参照する。data_bus_width = <データバス幅>とする。
(ステップ704). 被評価回路のインスタンス名をもらう。target_instance = <被評価回路のインスタンス名>とする。
(ステップ705). count_wire = 0; count_module = 0; remain_bit = data_bus_width; is_instance_width = true; phase = CLOCK; を設定する。
(ステップ706). phase=CLOCKの場合、データ構造情報21のクロックリストサブテーブル22を参照する。このステップがコールされるたびに先頭から一行づつ参照、クロック名とビット数を得る。それぞれ、sig_name=<クロック名>; bits = <ビット数>; とする。もしすべて参照済みで得られなかった場合、phase = RAM にし、lib_type にあったクロック用のパラメタライズド・モジュール記述のモジュール名を pm_module にセットする。
(ステップ707). phase=RAMの場合、データ構造情報のRAMリストサブテーブルを参照、信号名とビット数を得る。それぞれ、sig_name=<信号名>; bits = <ビット数>; とする。もしすべて参照済みで得られなかった場合、(ステップ713).に分岐する。
(ステップ708). remain_bit < width の場合の処理。remain_bit > 0の場合、“assign eval_<count_wire値>[<remain_bit 値−1> : 0] = 0;” を印字する。そうではない場合何もしない。いずれの場合も、is_instance_width = true にする。
(ステップ709). is_instance_width == true の場合、“wire [<data_bus_width値 − 1> : 0] eval_<count_wire値>;” を出力、is_instance_width = false, count_wire = count_wire + 1 、とする。
(ステップ710). 一斉0クリアの場合、clear_name = “clear_signal” をセットする。そうでない場合、clear_name = “clear_signal_<count_wire値>”をセットする。
(ステップ711). インスタンスを生成する。インスタンス名を “<pm_module値> i_evaluator_<count_module値>” とする。
(ア) phase=CLOCKの場合: clear端子にclear_nameの値をつなぐ。ck端子に“<target_instance値>.<sig_name値>”の値をつなぐ。result端子に“eval_<count_wire値>[<remain_bit値 − 1> : <remain_bit値 − bits>]” をつなぐ。一斉0クリア法の場合、gate端子に“gate_signal“をつなぐ。更に “defparam i_evaluator_<count_module値>.N = <bits値>” を印字する。
(イ) phase=RAMの場合: clear端子にclear_nameの値をつなぐ。ck端子に fast_clockの値をつなぐ。result端子に“eval_<count_wire値>[<remain_bit値 − 1> : <remain_bit値 − bits>]” をつなぐ。一斉0クリア法の場合、gate端子に“gate_signal”をつなぐ。更に “defparam i_evaluator_<count_module値>.N = <bits値>” を印字する。
(ステップ712). count_module = count_module + 1 、remain_bits = remain_bits − bits とする。(ステップ705).に戻る。
(ステップ713). “assign eval_<count_wire値>[<remain_bit 値−1> : 0] = 0;” を印字し、終了する。
ワイヤ計測部品生成の生成手続きは、以下のようになる。
(ステップ721). lib_type にあったワイヤ用のパラメタライズド・モジュール記述のモジュール名を pm_module にセットする。
(ステップ722). データバス幅指定を参照する。data_bus_width = <データバス幅>とする。
(ステップ723). 被評価回路のインスタンス名をもらう。target_instance = <被評価回路のインスタンス名>とする。
(ステップ724). count_wireにクロック・RAM評価部品生成終了時のcount_wire値をセットする。count_moduleにクロック・RAM評価部品生成終了時のcount_module値をセットする。remain_bit = data_bus_width; is_instance_width = trueをセットする。
(ステップ725). データ構造情報の信号リストサブテーブルの要素ごとにクロックドメイン別生成手続きを行う。この際、clock_name = <クロック名>、bits = <ビット幅>とする。すべての要素に対してクロックドメイン別生成手続きを行ったら終了する。
クロックドメイン別生成手続きは以下のようになる。
(ステップ−ア) クロックドメイン別ワイヤリストのうちclock_nameをクロック名にもつフィールドを参照する。このステップがコールされるたびにワイヤ名のリストをひとつづつ参照、ワイヤ名を得る。それぞれ、sig_name=<ワイヤ名>とする。もしすべて参照済みで得られなかった場合、(ステップ−ク)に行く。
(ステップ−イ) remain_bit < width の場合の処理。remain_bit > 0の場合、“assign eval_<count_wire値>[<remain_bit 値−1> : 0] = 0;” を印字する。そうでない場合何もしない。いずれの場合も、is_instance_width = true にする。
(ステップ−ウ) is_instance_width == true の場合、“wire [<data_bus_width値 − 1> : 0] eval_<count_wire値>;” を出力、is_instance_width = false, count_wire = count_wire + 1 する。
(ステップ−エ) 一斉0クリアの場合、clear_name = “clear_signal” をセットする。そうでない場合、clear_name = “clear_signal_<count_wire値>”をセットする。
(ステップ−オ) インスタンスを生成する。インスタンス名を “<pm_module値> i_evaluator_<count_module値>” とする。
(ステップ−カ) clear端子にclear_nameの値をつなぐ。ck端子に“<target_instance値>.<clock_name値>”をつなぐ。result端子に“eval_<count_wire値>[<remain_bit値 − 1> : <remain_bit値 − bits>]” をつなぐ。target_sigに“<target_instance値>.<sig_name値>”をつなぐ。一斉0クリア法の場合、gate端子に“gate_signal”をつなぐ。更に “defparam i_evaluator_<count_module値>.N = <bits値>”を印字する。
(ステップ−キ) count_module = count_module + 1 、remain_bits = remain_bits − bits とする。(ステップ705).に戻る。
(ステップ−ク) “assign eval_<count_wire値>[<remain_bit 値−1> : 0] = 0;”を印字し、終了する。
以上の処理により、生成物として、クロック・RAM・ワイヤ計測回路記述が得られる。
サンプリングサイクル算出工程201eでは、サンプリング期間指定19の Sampling_period とソースクロックリスト11の最速クロックから算出する。Sampling_periodがA(秒)、最速クロックがB(Hz)の時、サンプリングサイクルA*B(サイクル)を出力する。本実施の形態の例では、40(μs)*100(MHz)=4000(サイクル)が算出される。
制御部品生成工程201bの手続きは、以下のようになる。ここでは、必要に応じて、制御部ライブラリが参照される。ライブラリ例として図26がある。
(ステップ751). 生成回路指示表26の設定項目26aの「バスの本数」を調べる。1本の時、control_data_length[0] に前工程からもらったcount_wire 値をセットする。L本の時、a = count_wire / L , b = count_wire % L とする時、control_data_length[0] 〜 control_data_length[b − 1] に a+1 をセットする。control_data_length[b] 〜control_data_length[L−1] に a をセットする。また、en_length = a+2 とする。
(ステップ752). c = log2(サンプリングサイクル)の切捨てを算出し、bit_length = c + 1 とする。
(ステップ753). 制御回路モジュール名を pm_moduleにセット。
(ステップ754). ソースクロックリストから最速のクロックをみつけ、クロック名を fast_clockにセットする。wire <fast_clock値> = <ターゲットインスタンス名>.<fast_clock値>; を記述する(信号名が衝突しない場合。簡単のため本例では衝突しないものとする)。
(ステップ755). “clear”, “en”,“en_d”, “p_en”, “p_en_d”, “p_p1_en”, “p_p1_en_d”, “trigger” をワイヤ宣言する。
(ステップ756). インスタンス名を “<pm_module値> i_control” とする。更にclock端子にfast_clock値をつなぐ。clear, EN, EN_D,P_EN, P_EN_D, P_P1_EN, P_P1_EN_D,TRIGGERにそれぞれ“clear”, “en”,“en_d”, “p_en”, “p_en_d”, “p_p1_en”, “p_p1_en_d”、“trigger”をつなぐ。
(ステップ757). “defparam i_control.N = <bit_length値>;” , “defparam i_control.P=<a値>;” , “defparam i_control.M = <サンプリングサイクル値>;” をセットする。
これにより、生成物として、計測回路挿入固定の記述の後に、control_data_length、fast_clock、計測回路・制御回路記述、en_length(イネーブルラッチ332の段数)の情報が追加されたものが生成される。
転送回路生成工程201cの手続きは、一例として以下のようになる。ここでは、必要に応じて、FIFOライブラリを用いる。
(ステップ731). データバス幅指定で指定されたバス幅のワイヤを生成回路指示表で指定されたバス本数分宣言する。名前をtrans_port_0 〜 trans_port_<バス本数 − 1> とする。
(ステップ732). en_length + 1幅のシフトレジスタ en_shift を宣言する。
(ステップ733). en_shift[i] ( i>0) には en_shift[i−1] を代入する記述を生成する。en_shift[0] に enを代入する記述を生成する。NOの時、また、clear をリセットとして en_shift に0を代入する記述にする。
(ステップ734). en_shift をセレクタ信号とするマルチプレクサ記述を生成する。trans_port_0 には、eval_000 〜 eval_<control_data_length[0] −1> をマルチプレクスした出力をつなぐ。en_shift[0] の時、eval_000, en_shift[i]の時、eval_<i>をtrans_port_0に出力するマルチプレクサを生成する。k>=1 の時、trans_port_<k> には、eval_<control_data_length[0] + ... + control_data_length[k−1] > から eval_<control_data_length[0]+ ... + control_data_length[k] −1> をマルチプレクスした出力をつなぐ。en_shift[0] の時、eval_<control_data_length[0] + ... + control_data_length[k−1] >, en_shift[i] の時には eval_<control_data_length[0] + ... + control_data_length[k−1] + i> をtrans_port_<k>に出力するマルチプレクサを生成する。
(ステップ735). 一斉0クリア法か?がYESの時、すべての clear_signal_<i> にenをつなぐ。NOの時、i < control_data_length[0] の時、clear_signal_<i> に en_shift[<i>] をつなぐ。control_data[0] + ... + control_data[k−1] (k>0) <= i < control_data[0] + ... + control_data[k] の時、clear_signal_<i> に en_shift[ i − (control_data[0] + ... + control_data[k−1]) ] をつなぐ。
(ステップ736). 一斉0クリア法か?がYESの時、gate 信号にen信号をつなぐ。
(ステップ737). RAMタイプがFIFOの時、データバス幅指定のバス幅のFIFOをバス本数分インスタンスする。FIFO_<i> の深さはcontrol_data[i] * 2 以上にする。任意のFIFOの clear 端子に rst をつなぐ。FIFO_<i> の data 端子に trans_port_<i>をつなぐ。clock端子に fast_clockの値をつなぐ。
(ステップ738). RAMタイプがFIFOの時、k < ( count_wire % バス本数) FIFO_<k> の wreq 端子に p_p1_enをつなぐ。k >= (count_wire % バス本数) FIFO_<k> の wr_req端子に p_enをつなぐ。
(ステップ739). RAMタイプがセーブRAMの時、データバス幅指定のバス幅のセーブRAMをバス本数分インスタンスする。SAVE_RAM_<i> のAには、log2(control_data[i] * 生成回路指示表26のセーブRAM回数)の切り上げ値を設定する。任意のセーブRAMの clear 端子に rst をつなぐ。SAVE_RAM_<i> の data 端子に trans_port_<i>をつなぐ。ck端子にfast_clockの値をつなぐ。
(ステップ740). RAMタイプがセーブRAMの時、k < ( count_wire % バス本数) SAVE_RAM_<k> の we端子に p_p1_enをつなぐ。k >= (count_wire % バス本数) FSAVE_RAM_<k> の we端子に p_en をつなぐ。
(ステップ741). バスマスターつきですか?がYESの時、バスマスターモジュールとFIFOモジュールを接続する。
これにより、転送回路330に相当する転送回路記述データがクロック・RAM・ワイヤ計測回路記述に追加される。
マージ工程201dでは、回路データ601(被評価回路310)と、上述のようにした得られた計測・制御・転送回路記述(計測回路320、転送回路330、制御部340、FIFOバッファ350、バスインタフェース360、エミュレーションシステム制御部370)を併合して、ハードウェアシミュレータ300を構築するための回路データが出力される。
図21のフローチャートに戻って、エミュレーション工程202では、ハードウェアシミュレータ300を動作させて計測値ログ211を収集する。
抽出工程203では、計測値ログ211、サンプリング回数、fast_clock(11−1)の情報から、電力ツール用データヘッダ27、電力ツール用データ本体28を抽出する。
この抽出手続きの一例を以下に示す。
(ステップ751). サンプリング回数を調べて、サンプリング回数−1をサンプリング回数として出力する。
(ステップ752). サンプリング周期を出力する。
(ステップ753). 計測に使ったクロック名(fast_clock)を出力する。
(ステップ754). fast_clockの周波数を出力する。
(ステップ755). sample_count = 0 にする。
(ステップ756). 計測値ログ211をオープンする。
(ステップ757). sample_count がサンプリング回数になるまで、繰り返し、分析・出力処理(後述のステップ801〜ステップ818)を行う。
分析・出力処理の手続きは、以下の通りである。
(ステップ801). データ構造情報21のクロックリストサブテーブル22を見つける。
(ステップ802). dw = データバス幅とする。また、nokori = 0とする。
(ステップ803). クロックリストサブテーブル22の上から順番に評価する。クロック名ckとビット幅bitを取り出す。もし、取り出せなかったら(すべてのクロックリストサブテーブル22中のクロックを評価し終わったら)、(ステップ807)へ分岐する。
(ステップ804). もし nokori == 0 だったら、ファイルから1ワード(dw幅のデータ)を読み出し、変数xに代入する。
(ステップ805). もし nokori >= bit だったら、変数x の nokori − 1 ビット目から nokori − bit 目の数値 y を取り出す。sample_count > 0 だったら、ck と y を出力する。(ステップ803)に行く。
(ステップ806). もし nokori < bit だったら、nokori = 0 にして、(ステップ804)に行く。
(ステップ807). データ構造情報21のRAMリストサブテーブル24を見つける。
(ステップ808). RAMリストサブテーブル24の上から順番に評価する。信号名sigとビット幅bitを取り出す。もし、取り出せなかったら(すべての表中のクロックを評価し終わったら)、(ステップ812)へ分岐する。
(ステップ809). もし nokori == 0 だったら、計測値ログ211のファイルから1ワード(dw幅のデータ)を読み出し、変数xに代入する。
(ステップ810). もし nokori >= bit だったら、変数x の nokori − 1 ビット目から nokori − bit 目の数値 y を取り出す。sample_count > 0 だったら、ck と y を出力する。(ステップ808)に行く。
(ステップ811). もし nokori < bit だったら、nokori = 0 にして、(ステップ809)に行く。
(ステップ812). データ構造情報21の信号リストサブテーブル23をみつける。
(ステップ813). 信号リストサブテーブル23の上から順番に評価する。クロック名 ck 、ビット幅 bit、信号数 n を取り出す。カウンタc = 0にする。もし、取り出せなかったら、終了する。
(ステップ814). 累積値 a = 0 、nokori = 0 とする。
(ステップ815). もし nokori == 0 かつ c < n だったら、計測値ログ211のファイルから1ワード(dw幅のデータ)を読み出し、変数xに代入する。
(ステップ816). もし c == n かつ sample_count > 0 だったら、ck と a/n を出力し、(ステップ813)へ分岐する。
(ステップ817). もし nokori >= bit だったら、変数x の nokori − 1 ビット目から nokori − bit 目の数値 y を取り出す。a = a+ yする。c = c+1 にする。
(ステップ818). もし nokori < bit だったら、nokori = 0 にして、(ステップ809)に行く。
上述の計測値ログ211に上記の手続きを適用すると、電力ツール用データヘッダ27、電力ツール用データ本体28に示した電力解析ツール用データが生成される。
電力解析工程204では、電力ツール用データヘッダ27、電力ツール用データ本体28を用いて、消費電力値900を算出する。
なお、本発明は、上述の実施の形態に例示した構成に限らず、その趣旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
(付記1)
消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とを含むシミュレーションシステムにおける消費電力評価方法であって、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す第1工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する第2工程と、
を含むことを特徴とする消費電力評価方法。
(付記2)
付記1記載の消費電力評価方法において、
前記転送単位毎に対する複数の前記評価情報の詰め込み方法を定義するデータ構造情報を用いて、前記第1工程における前記転送単位に対する前記評価情報の詰め込み、および前記第2工程における前記評価情報の復元を行うことを特徴とする消費電力評価方法。
(付記3)
付記1記載の消費電力評価方法において、
前記計測手段による前記評価情報の採取と、採取された前記評価情報の外部への取り出し動作とを並行して行うことを特徴とする消費電力評価方法。
(付記4)
付記1記載の消費電力評価方法において、
前記転送手段を多重に設けて、個々の前記転送手段を並列に動作させることを特徴とする消費電力評価方法。
(付記5)
消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とを含むシミュレーションシステムにおける消費電力評価方法であって、
前記計測手段による前記評価情報の採取と、採取された前記評価情報の外部への取り出し動作とを並行して行うことを特徴とする消費電力評価方法。
(付記6)
付記5記載の消費電力評価方法において、
前記被評価回路における前記評価情報の採取対象の複数の信号の各々に対応して設けられた複数の前記計測手段を同時に初期化し、個々の前記計測手段内における前記評価情報のラッチと、ラッチされた前記評価情報の前記転送手段を経由した取り出し動作とを、異なる前記計測手段について並行して実行することを特徴とする消費電力評価方法。
(付記7)
付記5記載の消費電力評価方法において、
前記被評価回路における前記評価情報の採取対象の複数の信号の各々に対応して設けられた複数の前記計測手段の各々において、当該計測手段の初期化、前記評価情報の採取、採取された前記評価情報の前記転送手段を経由した取り出し動作を、順次実行することで、複数の前記計測手段の各々における前記評価情報の採取と、前記評価情報に転送とを並行して行うことを特徴とする消費電力評価方法。
(付記8)
付記5記載の消費電力評価方法において、
前記転送手段を多重に設けて、個々の前記転送手段を並列に動作させることを特徴とする消費電力評価方法。
(付記9)
付記5記載の消費電力評価方法において、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する工程と、
を含むことを特徴とする消費電力評価方法。
(付記10)
転送データ量を削減するためのパッキングに必要なデータ構造情報を生成するパッキング工程、
被評価回路に計測データを転送する転送手段を生成する転送手段生成工程、
前記転送手段を付加した前記被評価回路をハードウェア方式のシミュレーションシステムでシミュレーションを実行し、前記被評価回路の消費電力の算出の基礎となる評価情報を収集し、前記データ構造情報に基づいてパックしつつ前記転送手段を経由して外部に出力するエミュレーション工程、
前記データ構造情報に基づいて前記評価情報をアンパックして所望のデータを抽出する抽出工程、
前記抽出工程で抽出した前記データを前記電力解析ツールに入力し、前記被評価回路の消費電力を計算する消費電力算出工程、
を含むことを特徴とする消費電力評価方法。
(付記11)
付記10記載の消費電力評価方法において、
前記転送手段生成工程において、前記評価情報を送出した直後に当該評価情報を保持していた記憶手段を初期化するとともに、次の計測を開始するように前記転送手段が構築され、前記記憶手段以外の記憶手段を不要にして、前記転送手段の実装による回路量の増加を抑制することを特徴とする消費電力評価方法。
(付記12)
消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る計測手段と、前記評価情報を外部に取り出す転送手段とをプログラム可能な論理回路上に構築して前記被評価回路のシミュレーションを行うことで、前記評価情報を収集する消費電力評価システムであって、
前記転送手段における転送単位毎に対する複数の前記評価情報の詰め込み方法を定義するデータ構造情報を備え、
前記シミュレーションでは、
前記計測手段で得られた前記評価情報を所定の転送単位毎に詰め込んで前記転送手段を経由して外部に取り出す工程と、
前記転送単位毎に詰め込まれた前記評価情報を復元する工程と、
を実行することを特徴とする消費電力評価システム。
本発明の一実施の形態であるの消費電力評価方法の作用の一例を示すフローチャートである。 本発明の一実施の形態である消費電力評価方法を実施するハードウェアシミュレーション環境の構成の一例を示す概念図である。 本発明の一実施の形態である消費電力評価方法における被評価回路の構成例を示す概念図である。 本発明の一実施の形態である消費電力評価方法で処理されるクロック信号の一例を示す概念図である。 本発明の一実施の形態である消費電力評価方法における測定データのパック方法の一例を示す概念図である。 本発明の一実施の形態である消費電力評価方法における測定データのパック方法の一例を示す概念図である。 本発明の一実施の形態である消費電力評価方法における測定データのパック方法に用いられるデータ構造情報の一例を示す概念図である。 本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。 本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。 本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。 本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。 本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの構成例を示すブロック図である。 本発明の一実施の形態である消費電力評価方法が適用されるハードウェアシミュレータシステムの一部を取り出して例示したブロック図である。 本発明の一実施の形態である消費電力評価方法にて用いられるハードウェアシミュレータの制御スクリプトの一例を示す概念図である。 本発明の一実施の形態である消費電力評価方法に得られた計測値ログの一例を示す概念図である。 本発明の一実施の形態である消費電力評価方法に得られた計測値ログの解析に用いられるパーズスクリプトの一例を示す概念図である。 本発明の一実施の形態である消費電力評価方法において用いられる各種情報の構成例を示す概念図である。 本発明の一実施の形態である消費電力評価方法において用いられる各種情報の構成例を示す概念図である。 本発明の一実施の形態である消費電力評価方法において用いられる各種情報の構成例を示す概念図である。 本発明の一実施の形態である消費電力評価方法において用いられる回路データの一例を示す概念図である。 本発明の一実施の形態である消費電力評価方法をさらに詳細に例示したフローチャートである。 本発明の一実施の形態である消費電力評価方法をさらに詳細に例示したフローチャートである。 本発明の一実施の形態である消費電力評価方法をさらに詳細に例示したフローチャートである。 参考技術のエミュレータで電力を測定する場合の測定環境を示す概念図である。 参考技術のエミュレータにおける計測回路を示す概念図である。 本発明の一実施の形態である消費電力評価方法において用いられるパラメータ化された制御回路の一例を示す概念図である。
符号の説明
11 ソースクロックリスト
11a クロック名
11b 動作周波数
12 RAMピンネーム規則
12a RAMモジュール
12b モジュール名
13 データバス幅指定
14 クロックドメインリスト
14a クロック名
14b 追跡可能全クロック名
15 擬似クロックドメインリスト
15a クロック名
15b 追跡可能全クロック名
16 全クロック化クロックドメインリスト
16a クロック名
16b 全クロック名
17 クロックドメイン別レジスタリスト
17a クロック名
17b レジスタ名
18 クロックドメイン別ワイヤリスト
18a クロック名
18b ワイヤ名
19 サンプリング期間指定
19a 変数
19b 値
20 計測RAMピンリスト
20a インスタンス名
20b ピン名
21 データ構造情報
21a リスト名
21b ポインタ
22 クロックリストサブテーブル
22a クロック名
22b ビット幅
23 信号リストサブテーブル
23a クロック名
23b 所属信号数
23c ビット幅
24 RAMリストサブテーブル
24a 信号名
24b ビット幅
25 ビット表
25a クロック名
25b 必要ビット幅
26 生成回路指示表
26a 設定項目
26b 属性値
27 電力ツール用データヘッダ
27a 分類
27b 属性値
28 電力ツール用データ本体
28a サンプリング回数
28b タイプ
28c 信号名
28d 変化回数
28e アクティブ期間
28f 変化平均
200 パッキング工程
200a 信号分離工程
200b スケジューリング工程
201 計測回路挿入工程
201a 計測部品生成工程
201b 制御部品生成工程
201c 転送回路生成工程
201d マージ工程
201e サンプリングサイクル算出工程
202 エミュレーション工程
203 抽出工程
204 電力解析工程
210 データ構造情報
211 計測値ログ
300 ハードウェアシミュレータ
301 制御コンピュータ
301−1 制御ソフトウェア
301a 0クリア信号
302 記憶装置
303 PCIバス
310 被評価回路
311 対象信号
320 計測回路
321 信号変化検出回路
322 加算器
323 レジスタ
324 ラッチ
325 ゲート端子
326 0クリア端子
327 評価結果
330 転送回路
331 セレクタ
332 イネーブルラッチ
333 選択信号
334 セレクタ
340 制御部
341 サンプル期間カウンタ
342 期間設定/判定部
342a トリガ信号
343 測定切り替えタイミング判定部
344 転送タイミング判定部
345 転送タイミング判定部
345 0クリアラッチ
346 基準クロック
347 結果出力タイミング信号
348 0クリア信号
349 書き込み要求信号
350 FIFOバッファ
351 FIFOバッファ
360 バスインタフェース
370 エミュレーションシステム制御部
400 被評価回路
410 部分回路
411 部分回路
412 部分回路
420〜422 クロック
430〜432 レジスタ出力
510 対応テーブル
511 クロックドメイン
512 信号名
513 ビット数
514 クロックドメイン
600 ネーミングルール
601 回路データ
900 消費電力値

Claims (3)

  1. 消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る1つ以上の計測手段と、バッファ用記憶手段と、前記評価情報を該バッファ用記憶手段に転送する転送手段と、外部装置と接続される外部バスと接続されるバスインターフェースと、を有するハードウェアエミュレータを含むシミュレーションシステムにおける消費電力評価方法であって、
    前記外部装置へ前記評価情報を転送する場合に前記外部バスのバス幅に応じた転送単位毎の前記評価情報の格納方法が定義されたデータ構造情報に基づいて設定された前記転送手段により、前記各計測手段で得られた前記評価情報を順次前記バッファ用記憶手段に格納し、前記バスインターフェースにより、前記バッファ用記憶手段に前記バス幅に応じた転送単位分の前記評価情報が格納された評価情報であるパック化評価情報を前記外部バスへ出力する第1工程と、
    前記外部装置により、前記データ構造情報に基づいて、前記パック化評価情報を復元する第2工程と、
    を含むことを特徴とする消費電力評価方法。
  2. 請求項1記載の消費電力評価方法において、
    前記計測手段が2以上の場合、該2以上の計測手段のうちの第1の計測手段による前記評価情報の採取と、該2以上の計測手段のうちの第2の計測手段により採取された前記評価情報の外部への取り出し動作とを並行して行うことを特徴とする消費電力評価方法。
  3. 消費電力の評価対象となる被評価回路と、前記被評価回路から前記消費電力の算出の基礎となる評価情報を得る1つ以上の計測手段と、バッファ用記憶手段と、前記評価情報を該バッファ用記憶手段に転送する転送手段と、外部装置と接続される外部バスと接続されるバスインターフェースと、を有するハードウェアエミュレータをプログラム可能な論理回路上に構築して前記被評価回路のシミュレーションを行うことで、前記評価情報を収集する消費電力評価システムであって、
    記シミュレーションでは、
    前記外部装置へ前記評価情報を転送する場合に前記外部バスのバス幅に応じた転送単位毎の前記評価情報の格納方法が定義されたデータ構造情報に基づいて設定された前記転送手段により、前記各計測手段で得られた前記評価情報を順次前記バッファ用記憶手段に格納し、前記バスインターフェースにより、前記バッファ用記憶手段に前記バス幅に応じた転送単位分の前記評価情報が格納された評価情報であるパッキング評価情報を前記外部バスへ出力する工程と、
    前記外部装置により、前記データ構造情報に基づいて、前記パック化評価情報を復元する工程と、
    を実行することを特徴とする消費電力評価システム。
JP2005288409A 2005-09-30 2005-09-30 消費電力評価方法、消費電力評価システム Expired - Fee Related JP4330573B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005288409A JP4330573B2 (ja) 2005-09-30 2005-09-30 消費電力評価方法、消費電力評価システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005288409A JP4330573B2 (ja) 2005-09-30 2005-09-30 消費電力評価方法、消費電力評価システム

Publications (2)

Publication Number Publication Date
JP2007102337A JP2007102337A (ja) 2007-04-19
JP4330573B2 true JP4330573B2 (ja) 2009-09-16

Family

ID=38029245

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005288409A Expired - Fee Related JP4330573B2 (ja) 2005-09-30 2005-09-30 消費電力評価方法、消費電力評価システム

Country Status (1)

Country Link
JP (1) JP4330573B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5098517B2 (ja) * 2007-08-23 2012-12-12 富士通株式会社 消費電力解析方法及び消費電力解析装置
JP4985466B2 (ja) * 2008-02-26 2012-07-25 富士通株式会社 消費電力見積もり方法、消費電力見積もり装置、および消費電力見積もりプログラム
JP5262442B2 (ja) * 2008-08-27 2013-08-14 富士通株式会社 設計支援プログラム、設計支援装置、および設計支援方法
JP2010182241A (ja) * 2009-02-09 2010-08-19 Fujitsu Ltd 評価方法および評価装置
JP5123255B2 (ja) * 2009-06-09 2013-01-23 株式会社東芝 アーキテクチャ検証装置
JP5785725B2 (ja) 2010-10-15 2015-09-30 富士通株式会社 電力見積装置、電力見積方法及びプログラム

Also Published As

Publication number Publication date
JP2007102337A (ja) 2007-04-19

Similar Documents

Publication Publication Date Title
US8356272B2 (en) Logic verification module apparatus to serve as a hyper prototype for debugging an electronic design that exceeds the capacity of a single FPGA
US6961872B2 (en) Microcomputer and debugging system
EP2165280B1 (en) Recording of emulation states using replicated memory elements
US10180850B1 (en) Emulating applications that use hardware acceleration
US20020152061A1 (en) Data processing system and design system
JP4330573B2 (ja) 消費電力評価方法、消費電力評価システム
US10691856B1 (en) System design flow with runtime customizable circuits
EP2743848A1 (en) Verification module apparatus for debugging software and timing of an embedded processor design that exceeds the capacity of a single FPGA
US10678976B2 (en) Generic protocol analyzer for circuit design verification
Monson et al. New approaches for in-system debug of behaviorally-synthesized FPGA circuits
JP5065113B2 (ja) 等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法
JP2001014298A (ja) 合成及びレイアウトのオーバーヘッドが少ないsatソルバー・アーキテクチャーを得るための方法及び装置
JP2011100388A (ja) トレース情報収集装置,トレース情報処理装置,およびトレース情報収集方法
CN115686655A (zh) 用于gpu ip验证的联合仿真系统
JP2006139729A (ja) ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体
US6077305A (en) Latch inference using dataflow analysis
CN117113908B (zh) 一种验证方法、装置、电子设备及可读存储介质
KR20040063846A (ko) 다양한 검증 플랫폼들의 통합 사용을 지원하는 검증 장치및 이를 이용한 검증 방법
US7502728B1 (en) Code coverage testing in hardware emulation
US20090234620A1 (en) Verification support apparatus, verification support method, and computer product
Goli et al. Through the looking glass: Automated design understanding of SystemC-based VPs at the ESL
JP5454349B2 (ja) 性能推定装置
Wu et al. SCCL: An open-source SystemC to RTL translator
CN114239445A (zh) 一种信号采集方法及芯片验证平台
US11281830B2 (en) Method and apparatus for performing profile guided optimization for first in first out sizing

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090310

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090420

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090616

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130626

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130626

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees