以下、本発明の実施の形態を図面に基づいて説明する。
本発明に係る方法を実現するシミュレーション装置100は、コンピュータ装置であって、図1に示すようなハードウェア構成を有する。図1は、本発明の一実施例に係るシミュレーション装置のハードウェア構成を示す図である。
図1において、シミュレーション装置100は、コンピュータによって制御される装置であって、CPU(Central Processing Unit)11と、メモリユニット12と、表示ユニット13と、入力ユニット15と、記憶装置17と、ドライバ18とで構成され、システムバスBに接続される。
CPU11は、メモリユニット12に格納されたプログラムに従ってシミュレーション装置100を制御する。メモリユニット12は、RAM(Random Access Memory)及びROM(Read-Only Memory)等にて構成され、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を格納する。また、メモリユニット12の一部の領域が、CPU11での処理に利用されるワークエリアとして割り付けられている。
表示ユニット13は、CPU11の制御のもとに必要な各種情報を表示する。入力ユニット15は、マウス、キーボード等を有し、利用者がシミュレーション装置100が処理を行なうための必要な各種情報を入力するために用いられる。
記憶装置17は、例えば、ハードディスクユニットにて構成され、各種処理を実行するプログラム等のデータを格納する。
シミュレーション装置100によって行われる電力見積ポイント選択方法での処理を実現するプログラムは、例えば、CD−ROM(Compact Disk Read-Only Memory)等の記憶媒体19によってシミュレーション装置100に提供される。即ち、プログラムが保存された記憶媒体19がドライバ18にセットされると、ドライバ18が記憶媒体19からプログラムを読み出し、その読み出されたプログラムがシステムバスBを介して記憶装置17にインストールされる。そして、プログラムが起動されると、記憶装置17にインストールされたプログラムに従ってCPU11がその処理を開始する。
尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。シミュレーション装置100が外部とのネットワーク通信を行う通信ユニットを有する場合には、本発明に係る処理を実現するプログラムを通信ユニットによってネットワークを介してダウンロードし、記憶装置17にインストールするようにしても良い。また、シミュレーション装置100が外部記憶装置との接続を行うUSB(Universal Serial Bus)等のインタフェースを有する場合には、USB接続によって外部記憶媒体からプログラムを読み込んでもよい。
図2は、本実施例のシミュレーション装置の機能構成を説明する図である。
シミュレーション装置100は、設計データ生成部110と、シミュレーション部120と、波形データ取得ポイント選択部130と、電力見積部140と、計測回路ライブラリ150と、を有する。また本実施例のシミュレーション装置100は、例えば記憶装置17に、設計データ210が格納されている。本実施例の設計データ210は、例えばRTLファイルやネットリスト等を含む。また後述する処理により、記憶装置17には、計測回路付設計データ220、特徴量データファイル230、波形データ240、解析結果データ250が格納される。
以下に、図3を参照して本実施例のシミュレーション装置100の動作について説明する。図3は、本実施例のシミュレーション装置の動作を説明するフローチャートである。
設計データ生成部110は、設計データ210と計測回路ライブラリ150とに基づき計測回路付設計データ220を生成する(ステップS301)。尚計測回路ライブラリ150とは、例えばデータをカウントするカウンタ回路等が含まれる。
続いてシミュレーション部120は、計測回路付設計データ220のシミュレーションを実行し、特徴量データファイル230を生成する(ステップS302)。尚特徴量データファイル230は、所定期間毎にサンプリングしたポイントで、回路ブロック毎に計測された特徴量を示すデータを含む。特徴量とは、例えばクロックゲーティングセルの動作率とフリップフロップ数とを乗算した値や、フリップフロップの入力端子動作率等を用いる。
続いて波形データ取得ポイント選択部130は、特徴量データファイル230を解析して消費電力の見積のための波形データを取得するポイントを選択する(ステップS303)。本実施例の波形データ取得ポイント選択部130の処理の詳細は後述する。
続いてシミュレーション部120は、選択されたポイントから消費電力見積用の波形データ240を取得する(ステップS304)。続いて電力見積部140は、波形データ240を解析して消費電力の見積もりを行い、解析結果データ250を出力して(ステップS305)、処理を終了する。
本実施例のシミュレーション装置100では、波形データ取得ポイント選択部130により、波形データ240を取得するポイントを自動的に選択する。以下に本実施例の波形データ取得ポイント選択部130の詳細を説明する。
図4は、本実施例の波形データ取得ポイント選択部の機能構成を説明する図である。本実施例の波形データ取得ポイント選択部130は、データ読み込み部131と、分類部132と、同値類化部133と、重み付け部134と、ポイント別データ作成部135と、ポイント選択部136と、削減部137と、結果データ出力部138と、を有する。
データ読み込み部131は、特徴量データファイル230を読み込んで解析し、後述する特徴量データ310を生成して出力する。
分類部132は、回路ブロック毎に特徴量データ310を参照して後述する方法でデータを分類し、グループ化したデータを、グループ化データ320として記憶領域に格納する。
同値類化部133は、回路ブロック毎にグループ化データ320を同値類化し、同値類化したデータを、同値類化データ330として記憶領域に格納する。
重み付け部134は、同値類化データ330に重み付し、重み付けした同値類化データ330を、重み付同値類化データ340として記憶領域に格納する。
ポイント別データ作成部135は、ポイント毎の最大値のデータを作成し、ポイント毎の最大値のデータをポイント別最大値データ350として記憶領域に格納する。
ポイント選択部136は、電力見積のためのポイントを選択し、その選択結果を結果データ360として記憶領域に格納する。削減部137は、結果データ360を参照して特定のポイントを削除する。
結果データ出力部138は、波形データ取得ポイント選択部130による処理の結果を結果データファイル370として記憶領域に格納する。
以下に、図5を参照して波形データ取得ポイント選択部130の動作を説明する。図5は、本実施例の波形データ取得ポイント選択部の動作を説明するフローチャートである。
波形データ取得ポイント選択部130が処理を開始すると、データ読み込み部131は、特徴量データファイル230を読み込み、特徴量データ310を生成する(ステップS501)。
ここで本実施例の特徴量データファイル230と、特徴量データ310について説明する。本実施例では、説明の便宜上、消費電力の見積対象を4つの回路ブロック(BlockA,・・・,BlockD)で構成される回路として説明する。
図6は、特徴量データファイルを説明するための図である。図6に示す特徴量テーブル230Tは、特徴量データファイル230と対応したテーブルである。特徴量テーブル230Tには、4つの回路ブロックA〜Dについて、ポイントP0〜P9までの10ポイントの特徴量データが示されている。尚本実施例のポイントPn(nは整数)は、消費電力のサンプリングを行ったタイミングを示す。
図7は、本実施例の特徴量データファイルの一例を示す図である。図7では特徴量データファイル230を、CSV(Comma-Separated Values)形式とした例を示す。
図8は、本実施例の特徴量データの一例を示す図である。図8に示されるように、特徴量データファイル230を解析することによって、特徴量データ310のような配列構造で、回路ブロック毎にサンプリングした時系列順に特徴量データが出力される。
本実施例の特徴量データ310の配列は、インデックス番号が系列番号となる。系列番号は回路ブロックA〜Dを特定する値であり、本実施例では回路ブロックAの系列番号をS0、回路ブロックBの系列番号をS1、回路ブロックCの系列番号をS2、回路ブロックDの系列番号をS3とした。data310[index]は、ポイントを時系列順に並べたデータである。
例えばdata310[1][1]は、系列番号1(S1)のポイント1(P1)のデータである。すなわち以下のように示される。
<310データ構造>:= [<系列0のデータ>,・・・,<系列Nのデータ>]
<系列Iのデータ>:=[<系列I,ポイント0の値>,・・・,<系列I,ポイントMの値>]
図5に戻って、次に波形データ取得ポイント選択部130は、特徴量データ310を参照して分類部132により、各系列のポイントをグループ化し、グループ化データ320を生成する(ステップS502)。
以下に図9ないし図11を参照してグループ化について説明する。図9は、本実施例の分類部によるグループ化を説明する第一の図である。
図9は、特徴量データ310に基づき回路ブロック毎の特徴量の値をグラフにしたものである。図9において、回路ブロックAはポイントP2で最も特徴量が大きく、回路ブロックBはポイントP5で最も特徴量が大きく、回路ブロックCはポイントP3で最も特徴量が大きく、回路ブロックDはポイントP6で最も特徴量が大きいことがわかる。
図10は、本実施例の分類部によるグループ化を説明する第二の図である。図10では、回路ブロックCを例として、グループ化について説明する。
本実施例の分類部132は、回路ブロックCの各ポイントを基準として、基準となるポイントの特徴量から所定の範囲内の特徴量を有するポイントを1つのグループとしてグループ化する。
例えば特徴量データ310によれば、回路ブロックCの特徴量データは、P0=2.4,P1=17.0,P2=16.7,P3=17.5,P4=1.5,P5=1.0,P6=0.9,P7=1.1,P8=1.1,P9=0.0である。そこで分類部132は、始めにポイントP0を基準としてポイントP0の特徴量から所定の範囲内の特徴量を有するポイントを探す。尚実施例の所定の範囲とは、−2とした。
ポイントP0を基準として1つのグループとされるポイントは、特徴量が0.4から2.4の範囲にあるポイントである。回路ブロックCでは、ポイントP0とグループ化されるのは、ポイントP4である。
次に分類部132は、ポイントP1とグループ化されるポイントを探す。ポイントP1とグループ化されるのは、特徴量が15.0から17.0の範囲にあるポイントである。よってポイントP1は、ポイントP2とグループ化される。図10では、ポイントP1を基準としたグループをグループG1として示す。
次に分類部132は、ポイントP2とグループ化されるポイントを探す。ポイントP2とグループ化されるのは、特徴量が14.7から16.7の範囲にあるポイントである。よってポイントP2は、ポイントP2のみで一つのグループとされる。図10では、ポイントP2を基準としたグループをグループG2として示す。
次に分類部132は、ポイントP3とグループ化されるポイントを探す。ポイントP3とグループ化されるのは、特徴量が15.5から17.5の範囲にあるポイントである。よってポイントP3は、ポイントP1及びポイントP2とグループ化される。図10では、ポイントP3を基準としたグループをグループG3として示す。
分類部132は、回路ブロックCの他のポイントについても同様にしてグループ化を行う。また分類部132は、他の回路ブロックについても同様にしてグループ化を行う。
図11は、グループ化データの一例を示す図である。
図11は、各回路ブロック(系列)毎において、ポイントP0〜P9をそれぞれ基準としてグループ化した結果を示している。例えば系列S2(回路ブロックC)では、ポイントP0を基準としたグループをグループG0、ポイントP1を基準としたグループをグループG1、・・・、ポイントP9を基準としたグループをグループG9とした。
尚図11に示すグループ化データ320において、最も外側の配列のインデックスは系列番号(S)である。外側から2番目の配列のインデックスはポイント(P)である。外側から3番目の配列は、系列番号SのポイントPを基準にグループ化したデータのリストである。このリストの要素も配列で[<要素の値>,<ポイント番号>]である。例えば、S0(回路ブロックA),P0の値を基準にグループ化した結果は[[10.2,0],10.1,3]]であり、要素数は2である。メンバーはS0のP0(基準となるポイント)とS0のP3で、各々の要素値は10.2、10.1である。
すなわち本実施例のグループ化データ320は以下のように示される。
<320データ構造>:= [<系列0のデータ>,・・・,<系列Nのデータ>]
<系列Iのデータ>:=[<ポイント0のデータ>,・・・,<ポイントMのデータ>]
<ポイントIのデータ>:=[<ポイントMと同値なデータ0>,・・・,<ポイントMと同値なデータK>]
<ポイントMと同値なデータI>:=[<要素値>,<ポイント番号>]
図5に戻って、次に波形データ取得ポイント選択部130は、グループ化データ320を参照して、同値類化部133により同値類化データ330を生成する(ステップS503)。
以下に図12ないし図15を参照して同値類化について説明する。図12は、本実施例の同値類化部による同値類化を説明する第一のフローチャートである。
本実施例の同値類化部133は、グループ化データ320における特徴的なデータを取り出し、同値類化する。本実施例では、グループ化データ320において、要素数が多いグループのデータを特徴的なデータとした。
本実施例の同値類化部133は、例えばシミュレーション装置100のメモリユニット12に、同値類化データ330が格納される同値類化データの領域を生成する(ステップS1201)。次に同値類化部133は、グループ化データ320に含まれる全ての系列について処理が終了したか否かを判断する(ステップS1202)。
ステップS1202において、全ての系列について処理が終了していない場合、同値類化部133は、グループ化データ320に含まれる系列を選択する(ステップS1203)。そして選択された系列(以下、系列Sx)において、系列のリストを参照して同値類化の処理を行う(ステップS1204)。
以下に図13を参照して図12のステップS1204の処理の詳細を説明する。図13は、本実施例の同値類化部による同値類化を説明する第二のフローチャートである。
本実施例の同値類化部133は、例えばメモリユニット12に、系列Sxの結果を書き込む領域を確保する(ステップS1301)。次に同値類化部133は、系列Sxの要素数が0か否かを判断する(ステップS1302)。
ステップS1302において系列Sxの要素数が0でない場合、同値類化部133は、系列Sxのグループ化データ320において、要素数が最も多いグループを取り出す(ステップS1303)。尚要素数が同じグループの場合は、要素の値の最大値が大きい方のグループを取り出す。
同値類化部133は、取り出されたグループのデータを最重要データ331として、ステップS1301で確保された領域に登録する(ステップS1304)。また同値類化部133は、最重要データ331を系列Sx用の同値類化データ330Aとして登録する。系列毎の同値類化データ330Aは、同値類化データ330に含まれるデータである。
次に同値類化部133は、最重要データ331を参照し、系列Sxから最重要データ331として登録された要素をグループ化データ320から全て除去する(ステップS1305)。次に同値類化部133は、系列Sxにおいて空集合となったグループをグループ化データ320から除去する(ステップS1306)。
以下に、図11を参照して、同値類化の処理を具体的に説明する。
図12のステップS1203において、グループ化データ320の系列S2が選択されると、同値類化部133は、図13のステップS1301において系列S2に含まれるグループのうち、要素数が最も多いグループを最重要データ331として取り出す(ステップS1303に対応)。
系列S2では、グループG4、G7、G8の要素数がそれぞれ5つあり、要素数が最も多い。そこで同値類化部133は、3つのグループのうち要素の値の最大値を含むグループを最重要データ331とする。系列S2では、グループG4のポイントP4の特徴量1.5が3つのグループのうち要素の値の最大値である。よって同値類化部133は、グループG4を最重要データ331として登録する。また同値類化部133は、系列S2用の同値類化データ330Aとして登録する(ステップS1304に対応)。
次に同値類化部133は、系列S2から、最重要データ331に含まれる要素をグループ化データ320から全て除去する。最重要データ331に含まれる要素は、グループG4に含まれる[1.5,4],[1.0,5],[0.9,6],[1.1,7],[1.1,8]である。よって同値類化部133は、系列S2の各グループからポイントP4〜P8に対応する要素をグループ化データ320から除去する(ステップS1305に対応)。
するとグループG0ではポイントP0に対応する要素が残り、グループG1ではポイントP1、P2に対応する要素が残り、グループG2ではポイントP2に対応する要素が残り、グループG3ではポイントP1〜P3に対応する要素が残る。そしてグループG4は空集合となる。グループG5〜G9ではポイントP9に対応する要素が残る。
同値類化部133は、この処理を繰り返すことで、グループ化データ320の系列毎のデータを同値類化する。
図14は、同値類化データの一例を示す図である。
本実施例の同値類化データ330では、最も外側の配列のインデックスは系列番号(S)である。外側から2番目の配列は同値類のリストである。この同値類の要素は、[<要素の値>,<ポイント番号>]である。
例えば、系列S2は下記の4つの同値類で構成されている。同値類リストの先頭の要素は、ポイントP1,P2,P3で構成され、各々の数値は17.0,16.0,17.5である。同値類リストの先頭から、同値類1、同値類2、同値類3、同値類4と呼ぶ。
系列S2の同値類
[17.0,1],[16.7,2],[17.5,3]],
[[2.4,0]],
[[1.5,4],[1.0,5],[0.9,6],[1.1,7],[1.1,8]],
[[0.0,9]]
本実施例の同値類化データ330は、以下のように示される。
<330データ構造>:=[<系列0の同値類リスト>,・・・,<系列Nの同値類リスト>]
<系列Iの同値類リスト>:=[<ポイントデータ0>,・・・,<ポイントデータM>]
<ポイントデータI>:=[<要素の値>,<ポイント番号>]
図15は、図9に示すグラフにおいて同値類化データを示す図である。図15では、系列S2(回路ブロックC)の同値類化データを示し、図14に示す同値類1〜同値類4までが示されている。
図5に戻って、次に波形データ取得ポイント選択部130は、重み付け部134により同値類化データ330を加工して重み付けを行い、その結果である重み付同値類化データ340を出力する(ステップS504)。
同値類化データ330に対する重み付けの方法は、以下の3通りが考えられる。
まず一つ目の方法は、任意の系列Sの任意の同値類Iの要素の最大値Maxを調べ、Max−Pnの値(各要素の値)を重み値とする方法である。例えば系列S2の同値類1の要素の最大値は17.5である。よってこの場合、ポイントP1の重み値は、17.5−17.0=0.5となる。またポイントP2の重み値は、17.5−16.7=0.8となる。
二つ目の方法は、任意の系列Sの任意の同値類Iの要素の最大値Maxを調べて、(Max−Pn)2を重み値とする方法である。
三つ目の方法は、任意の系列Sの任意の同値類Iの要素の最大値Maxを調べて、(Max−P)2/(Max)2を重み値とする方法である。
波形データの取得ポイントを選択する際に、最終的に重み値が小さくなるポイントを選択する場合、一つ目の方法は各系列において特徴量が大きいポイントが選択される。一つ目の方法の場合、選択されたポイントから離れているものが1点あったとしても、他のポイントが選択されたポイントの特徴量に近ければ、好ましいポイントを選択したことになる。
二つ目の方法は、系列毎に最終結果を評価することを考えて、特徴量が極端に離れているものが選択されにくくした方法である。特徴量がMax値から離れるほど重み値(つまりペナルティ)が大きくなるので、特徴量がMax値と極端に離れたポイントは選択されにくくなる。
三つ目の方法は、二つ目の方法と同様であるが、特徴量の合計が回路面積等に比例する傾向がある場合等では、回路面積が大きいほうが良い値が割り振られやすくなる。そこで、最大値を基準にして規格したものである(ただし次数を合わせる)。尚上述の三つの方法以外にも、回路面積値等の回路情報を入れて計算しても良い。
本実施例の重み付け部134は、三つ目の方法により、同値類化データ330に対する重み付けを行う。本実施例では、重み付けの結果を重み付同値類化データ340とした。図16は、本実施例の重み付同値類化データの一例を示す図である。
本実施例の重み付同値類化データ340は、同値類Iの要素に対して、重み値が付加された以外は、同値類化データ330と同じである。尚重み値は、二番目の要素となる。すなわち、重み付同値類化データ340のポイントデータIは、
<ポイントデータI>:=[<要素の値>,<ポイント番号>,<重み値>]
となる。
例えば系列S2の同値類化データ330に重み値が付加された場合、以下のようになる。
系列S2の重み付同値類
[17.0,1,0.0008],[16.7,2,0.0021],[17.5,3,0.0000]],
[[2.4,0,0.0000]],
[[1.5,4,0.0000],[1.0,5,0.1111],[0.9,6,0.1600],[1.1,7,0.0711],[1.1,8,0.0711]],
[[0.0,9,0.0000]]
図5に戻って、次に波形データ取得ポイント選択部130は、ポイント別データ作成部135により、ポイント別最大値データ350を作成する(ステップS505)。
図17は、ポイント別最大値データの一例を示す図である。
図17に示す例は、ハッシュである。配列がインデックスで値を参照するのに対して、ハッシュはキー値で取り出すコンテナである。Perlでは連想配列と呼ばれるものに相当する。Rubyを用いて開発した場合、図19のように書く。図19は、ハッシュの記述例を示す図である。
図19の例では、dataHashにHashクラスのオブジェクトを代入して、dataHashに対して'apple'というキーで参照できる領域に、更にHashクラスのオブジェクトを代入している。そして、dataHash['apple']['jp'] に'ringo'を代入している。Rubyには、p関数がある。これはデバッグ用の関数で、Array, Hashにおいては、データ構造をタプル形式で印字する。図19に示す記述例のp関数の出力値は、図20に示す応答例のようになる。図20は、ハッシュの記述例の応答を示す図である。図17の例では、この記述形式に習って、ハッシュは{<keyValue0>=><データ0>,・・・,<keyValueN>=><データ N>}という形式で記述している。
図17に示すポイント別最大値データ350は、ポイントをキーとするデータであり、各系列の要素の値の最大値を含む同値類の要素のリストである。ポイント別最大値データ350は、最も外側がハッシュになっている。
ポイント別最大値データ350の要素は、[<要素値>,<重み>,<系列番号>]という配列で表現されている。例えば、ポイントP1で何れの系列の最大値を含む同値類の要素になっているものは、[[10.5,0.0021,0],[17.0,0.0008,2],[7.1,0.0016,3]]である。
これは、ポイントP1の系列S0で値が10.5、重みが0.0021、系列S2で値が17.0、重みが0.0008、系列S3で値が7.1、重みが0.00164の点の集合が何れかの系列の要素の値の最大値を含む同値類の要素のリストであることを示している。尚ポイント別最大値データ350は以下のように示される。
<350データ構造>:= {<ポイントa0>=><ポイントa0のデータ>,・・・,
<ポイントaj>=><ポイントajのデータ>}
<ポイントaIのデータ>:=[<データタプル0>,・・・,<データタプルK>]
<データタプルI>:= [<要素値>,<重み>,<系列番号>]
図18は、ポイント別最大値データを説明するための図である。図18に示すように、ポイントP0からポイントP7については、何れかの系列の要素の値の最大値を含む同値類の要素が存在するため、ポイント別最大値データ350が作成される。また各ポイントP8、P9では、何れかの系列の要素の値の最大値を含む同値類の要素が存在しなため、ポイント別最大値データ350は作成されない。
図5に戻って、次に波形データ取得ポイント選択部130は、ポイント選択部136により、ポイント別最大値データ350を参照して波形データを取得するポイントを選択し、その結果を示す結果データ360を生成する(ステップS506)。
以下に本実施例のポイント選択部136の処理について説明する。図21は、ポイント選択部の処理を説明するためのフローチャートである。
本実施例のポイント選択部136は、任意の系列の最大値を含む同値類を処理対象とするものとして説明する。最大値を含む同値類を処理対象とすることで、実際には最大値とならないポイントであっても、最大値と同値であるポイントとして選択すべきポイントの候補として扱うことができる。
ポイント選択部136は、例えばメモリユニット12等に、処理の終了判定を行うための判定用テーブル410を用意する(ステップS2001)。本実施例の判定用テーブル410は、すべての要素が偽で初期化されている。判定用テーブル410は、系列から真偽のマップになっている。もし該当する系列が、既に後述する結果データ360に含まれている場合、該当する系列の要素は真である。また該当する系列が結果データ360に含まれていない場合、該当する系列の要素は偽である。
次にポイント選択部136は、全ての系列が判定用テーブル410にエントリされているか否かを判断する(ステップS2002)。
ステップS2002において、全ての系列がエントリされている場合(未処理の系列が存在しない場合)、判定用テーブル410において、すべて真になる。判定用テーブル410が全て真となれば、系列毎の条件を満たすデータが結果データ360に書き込まれたことになる。系列S0〜S3は回路ブロックA〜Dを表しているので、回路ブロック毎に着目すべきデータが見つけられたことになる。つまり所望のデータが結果データ360に書き込まれたことになり、ポイント選択の処理を終了することができる。
ステップS2002において全ての系列が判定用テーブル410にエントリされていない場合(未処理の系列が存在する場合)、ポイント選択部136は、ポイント別最大値データ350を参照して、結果データ360として登録する選択データ415を取り出す。またポイント選択部136は、取り出した選択データ415を結果データ360へ登録する(ステップS2003)。尚ステップS2003の詳細は後述する。
次にポイント選択部136は、系列リスト420を生成する(ステップS2004)。次にポイント選択部136は、選択データ415に含まれている系列の集合を取り出し、系列リスト420へ書き込む。また選択データ415に含まれている系列は、結果データ360に書き込まれているので、ポイント選択部136は判定用テーブル410の該当する系列の要素を真に更新する(ステップS2005)。
次にポイント選択部136は、削減部137によりポイント選択部136に選択されたポイントの数を削減する(ステップS2006)。削減方法については、後述するステップS2006の削減部137による処理の詳細で説明する。
次に図22を参照して、図21のステップS2003の処理の詳細を説明する。図22は、図21のステップS2003の処理の詳細を説明するフローチャートである。
本実施例のポイント選択部136は、メモリユニット12等に、中間データを書き込むための中間データ領域を生成する(ステップS2101)。次にポイント選択部136は、ポイント別最大値データ350に含まれる全てのポイントPx毎に各系列の重み付け計算をし、計算が終了したか否かを判断する(ステップS2102)。
ステップS2102において全てのポイントについての計算が終了していない場合、ポイント選択部136は、ポイント別最大値データ350のポイントPxの重み値の平均値を算出して(ステップS2103)、算出したデータを中間データ430として、中間データ領域に記録する。そしてステップS2102に戻り、次のポイントPxについて同様の処理を行う。
図23は、本実施例の中間データの一例を示す図である。図23に示す中間データ430は、ステップS2003の実行回数が0回目の結果、つまり、ポイント別最大値データ350(図17参照)の全要素に対して、ステップS2103を適用した結果である。本実施例の中間データ430のデータ構造は以下のようなリスト構造とした。尚メトリクス値とは、あるデータ同士の関連を数値化した値であり、本実施例ではポイントPxの重み値の平均値を示す。
<中間データ430のデータ構造>:=<メトリクス値データ0>,...,<メトリクス値データK>]
<メトリクス値データI>:=[<属性値>,<データ>]
<属性値>:=[<ポイント番号>,<メトリクス値>]
<データ>:=[<選択ポイントの構成データ0>,...,<選択ポイントの構成データO>]
<選択ポイントの構成データ>:=[<要素値>,<重み>,<系列番号>]
ポイント選択部136は、ステップS2102において全てのポイントについての計算が終了した場合、ポイント選択部136は、中間データ430を参照して最も重要なデータを探し、選択データ415として取り出す(ステップS2104)。
ステップS2104における最も重要なデータとは、要素数の多いポイントに関するデータである。要素数の多いデータを選択すれば、できるだけ多くの要素がカバーできるポイントを選択することができる。この時点において、要素は、最大値となる要素又は最大値に対して同値類となる要素のみであるので、本実施例のポイント選択部136は、中間データ430を参照し、<データ>の要素数が多いものを選択する。もし要素数が同じ数である場合には、ポイント選択部136は、<属性値>の<メトリクス値>に基づき選択する順番をつける。
本実施例の重み値は、特徴量の最大値と、該当するポイントの特徴量との差(ペナルティ)を示している。よって重み値が小さい方が良い。そこで本実施例で<メトリクス値>が小さいほうから順にポイントを選択する。
図24は、図23に示す中間データを表形式とした例を示す図である。本実施例の中間データ430では、<データ>の要素数が多いポイントは、ポイントP1、P2、P3であり、それぞれのポイントにおいて要素数が3個ある。このポイントP1〜P3のメトリクス値(表中のscore)は、ポイントP1が0.0015、ポイントP2が0.0009、ポイントP3が0.0038である。よってポイントP2のメトリクス値が一番小さいことがわかる。したがってポイント選択部136は、ステップS2104において、ポイントP2を選択し、選択データ415とする。図25は、ポイントP2が選択された状態を示す図である。
次に、図21のステップS2006の処理の詳細を説明する。本実施例の削減部137は、2種類の削減ポリシー(削減ポリシー0、削減ポリシー1)に基づき削減の処理を行う。削減ポリシーとは、ポイント選択部136により選択されたポイントの削減の仕方を定義したものである。
図26は、図21のステップS2006の処理の詳細を説明するフローチャートである。本実施例の削減部137は、削減ポリシー0又は削減ポリシー1の何れを用いるか判断する(ステップS2401)。ステップS2401において削減ポリシー0を用いる場合、削減部137は削減ポリシー0に基づき、系列リスト420を参照してポイントを削減し、ポイント別最大値データ350を書き換える(ステップS2402)。ステップS2401において削減ポリシー1を用いる場合、削減部137は削減ポリシー1に基づき、判定用テーブル410を参照してポイントを削減し、ポイント別最大値データ350を書き換える(ステップS2403)。
始めに図27ないし図31を参照して、削減ポリシー0に基づく削減について説明する。図27は、削減ポリシー0に基づく削減を説明するフローチャートである。
削減ポリシー0は、系列リスト420、すなわち選択データ415に含まれる系列のリストを用いる。
削減部137は、系列リスト420の全要素を評価したか否かを判断する(ステップS2501)。ステップS2501で全要素を評価していない場合、ポイント別最大値データ350からデータの削除を行い(ステップS2502)、ステップS2501へ戻る。
以下にステップS2502の処理を説明する。
削減部137は、ポイント別最大値データ350から、系列リスト420に含まれる系列を持つデータを削除する。本実施例の場合、選択データ415であるポイントP2に含まれる系列はS0、S2、S3である(図23、24参照)。ポイント別最大値データ350に削減ポリシー0を適用すると、例えば、ポイント別最大値データ350から系列S0のデータである[10.2,0.0053,0]、[10.5,0.0021,0]は削除される。その他の系列S0のデータも削除される。
同様に系列S2、系列S3のデータもポイント別最大値データ350から削除される。その結果、空集合になるものがある。更にその空集合を取り除かれると、ポイント別最大値データ350は、図28に示すように系列S1のデータのみとなる。図28は、削減ポリシー0に基づきデータを削減したポイント別最大値データの例を示す図である。
本実施例のポイント選択部136は、削減部137による削減処理が終了すると、図21のステップS2002へ戻り、ステップS2002以降の処理を繰り返すことによって、ポイントP5を選択する。図29は、ポイントP5が選択された状態を示す図である。以下にポイントP5が選択される様子について説明する。
ポイント選択部136は、ステップS2002へ戻り、全ての系列がエントリ済みか否かを判断する。このとき判定用テーブル410は、系列S0、S2、S3のみが真となっている。よってポイント選択部136はステップS2003へ進む。
ポイント選択部136は、系列S1のデータのみとなったポイント別最大値データ350を参照してステップS2003の処理を行い、ポイントP5を選択データ415として新たに取り出し、結果データ360へ登録する。ポイント選択部136は、系列リスト420に系列S1を記憶し、判定用テーブル410の系列S1が真とされる。
次に削減部137が削減ポリシー0に基づいて削減処理を行うと、図28に示すポイント別最大値データ350から系列S1のデータが削除され、ポイント別最大値データ350は空集合となる。
ポイント選択部136は、再度ステップS2002へ戻り、全ての系列がエントリ済みか否かを判断する。このとき判定用テーブル410は、全ての系列が真となっているため、ポイント選択部136は処理を終了する。
図5に戻って、以上で削減ポリシー0を用いた場合の図5のステップS506の処理が終了する。
この処理で選択されたポイントは、図30に示すように、結果データ360に登録されたポイントP2とポイントP5となる。図30は、削減ポリシー0における結果データの一例を示す図である。
次に本実施例の波形データ取得ポイント選択部130は、結果データ出力部138により結果データ360を結果データファイル370として出力する(ステップS507)。結果データ出力部138は、図30に示す結果データ360をフォーマット変換し、図31に示すデータを出力する。図31は、削減ポリシー0における結果データをフォーマット変換した例を示す図である。
以上のように本実施例では、削減ポリシー0に基づきポイントの選択を行った場合、図32に示すように、系列S0、S2、S3ではポイントP2が選択され、系列S1ではポイントP5が選択されることがわかる。図32は、削減ポリシー0において選択されたポイントを示す図である。
次に、図33ないし図38を参照して、削減ポリシー1に基づく削減について説明する。図33は、削減ポリシー1に基づく削減を説明するフローチャートである。
削減ポリシー1は、判定用テーブル410を用いて削減するポイントを決定する。削減部137は、ポイント別最大値データ350の全要素を評価したか否かを判断する(ステップS3001)。ステップS3001で全要素を評価していない場合、判定用テーブル410を参照し、選択データ415を含む系列が登録されているか否かを判断する(ステップS3002)。
ステップS3002において選択データ415を含む系列が登録されている場合、削減部137は、判定用テーブル410に登録されている系列のデータをポイント別最大値データ350から削除する(ステップS3003)。
例えばポイントP2が選択データ415として取り出されていた場合、判定用テーブル410は、ポイントP2に含まれる系列S0、S2、S3が真となっている。したがって削減部137は、ポイント別最大値データ350から系列S0、S2、S3以外の系列を含まないデータを削除する。
すなわち削減部137は、ポイント別最大値データ350から、系列S1のデータを含まないデータを削除する。その結果、空集合になるものがある。更にその空集合を取り除かれると、ポイント別最大値データ350は、図34に示すように、系列S1と系列S3のデータとなる。図34は、削減ポリシー1に基づきデータを削減したポイント別最大値データの例を示す図である。
本実施例のポイント選択部136は、削減部137による削減処理が終了すると、図21のステップS2002へ戻り、ステップS2002以降の処理を繰り返すことによってポイントP6を選択する。図35は、ポイントP6が選択された状態を示す図である。以下にポイントP6が選択される様子について説明する。
ポイント選択部136は、ステップS2002へ戻り、全ての系列がエントリ済みか否かを判断する。このとき判定用テーブル410は、系列S0、S2、S3のみが真となっている。よってポイント選択部136はステップS2003へ進む。
ポイント選択部136は、系列S1と系列S3のデータとなったポイント別最大値データ350を参照してステップS2003の処理を行い、ポイントP6を選択データ415として新たに取り出して結果データ360へ登録する。ポイント選択部136は、系列リスト420に系列S1を記憶し、判定用テーブル410の系列S1が真とされる。
次に削減部137が削減ポリシー1に基づいて削減処理を行うと、図34に示すポイント別最大値データ350から、系列S1と系列S3以外の系列を含まないデータが削除される。すなわち図34に示すポイント別最大値データ350から系列S0、系列S2を含まないデータが削除される。その結果ポイント別最大値データ350は空集合となる。
ポイント選択部136は、再度ステップS2002へ戻り、全ての系列がエントリ済みか否かを判断する。このとき判定用テーブル410は、全ての系列が真となっているため、ポイント選択部136は処理を終了する。
図5に戻って、以上で削減ポリシー1を用いた場合の図5のステップS506の処理が終了する。
この処理で選択されたポイントは、図36に示すように、結果データ360に登録されたポイントP2とポイントP6となる。図36は、削減ポリシー1における結果データの一例を示す図である。
次に本実施例の波形データ取得ポイント選択部130は、結果データ出力部138により結果データ360を結果データファイル370として出力する(ステップS507)。結果データ出力部138は、図36に示す結果データ360をフォーマット変換し、図37に示すデータを出力する。図37は、削減ポリシー1における結果データをフォーマット変換した例を示す図である。
以上のように本実施例では、削減ポリシー1に基づきポイントの選択を行った場合、図38に示すように、系列S0、S2、S3ではポイントP2が選択され、系列S1、S3ではポイントP6が選択されることがわかる。図38は、削減ポリシー1において選択されたポイントを示す図である。
尚本実施例において、削減ポリシー1のバリエーションとして、要素数が同じ場合、判定用テーブル410で偽が立っている要素数が多いものを選択し、偽が立っている要素数が同じものがある場合には、メトリクス値で選択するとしてもよい。このようにすると上述した方法に比べてより少ないポイントを選択できる可能性がある。
以上に説明したように、本実施例では、重み付けの方針及び削減ポリシーに基づいて、自動的に波形データを取得するポイントを決定することができる。
したがって、回路ブロック毎に特徴量の最大値となるポイントを選択する方法と比べて、波形データを取得するポイントの数を少なくすることができる。また例えば回路ブロックが多数存在した場合において、回路ブロック毎の最大値となるポイントから設計者の経験則により波形データを取得するポイントを決定する方法と比べて、自動的に回路ブロック単位で納得性が高いポイントを定量的に決定することができる。
また、本実施例では、同値類にわけることにより、特異点を検出することも可能である。例えば、3個の同値類A、B、Cに分けられていて、各々の最大値がa、b、cであって且つa>b>cの関係があるとき、同値類Aの要素数が同値類Bの要素数の5%未満であれば同値類Bを最大値を含む同値類として選択するというルールをおけば、数が少ない突出したポイントを無視することが出来る。
また本実施例では、同値類を検出するので、同値類間の大小関係により平均的な同値類に着目してもよいし、平均電力への応用を考えて、要素数が多い同値類に着目してもよい。または平均値を含む、あるいは近い同値類を選択するようにしてもよい。本実施例では、電力見積において最大電力に着目する場合が多いことを考慮して、最大値を含む同値類を例として説明した。
以上に説明したように、本実施例によれば、波形データを取得するポイントを自動的に適切に選択することができる。
本発明は、以下に記載する付記のような構成が考えられる。
(付記1)
回路ブロック毎に特徴量を要素としてサンプリングし、前記サンプリングしたポイントから消費電力を見積もるポイントを選択する電力見積ポイント選択方法であって、
前記回路ブロック毎に前記特徴量の所定値を基準とする所定範囲内で前記要素をグループ化するグループ化手順と、
前記サンプリングしたポイントのうち、グループ化された前記要素の数が最も多いポイントを選択するポイント選択手順と、をコンピュータが実行する電力見積ポイント選択方法。
(付記2)
前記ポイント選択手順は、
前記回路ブロック毎の前記特徴量の所定値を含むグループの要素と、前記回路ブロックとを対応させたデータを前記ポイント毎にリストしたポイント別所定値データを作成する手順を有し、
前記ポイント別所定値データにおいて前記要素の数が最も多いポイントを選択する付記1記載の電力見積ポイント選択方法。
(付記3)
前記ポイント選択手順は、
前記回路ブロック毎に、前記特徴量の所定値と前記要素の特徴量との差分に基づきグループ内の前記要素に重み付けを行う重み付け手順と、
前記ポイント毎に、前記要素に付けられた重みの平均値を算出する手順とを有し、
前記要素の数が同じグループが存在する場合には、前記重みの平均値が小さいポイントから選択する付記1又は2記載の電力見積ポイント選択方法。
(付記4)
前記ポイント選択手順により選択されたポイントに基づき、前記ポイント別所定値データから削除するポイントのデータを決定する削除手順を有する付記1乃至3の何れか一項に記載の電力見積ポイント選択方法。
(付記5)
前記削除手順は、
前記ポイント別所定値データから、前記ポイント選択手順により選択されたポイントに含まれる要素と対応した前記回路ブロックのデータを削除する付記4記載の電力見積ポイント選択方法。
(付記6)
前記削除手順は、
前記ポイント別所定値データから、前記ポイント選択手順により選択されたポイントに含まれる要素と対応した前記回路ブロック以外の回路ブロックを含まないデータを削除する付記4記載の電力見積ポイント選択方法。
(付記7)
前記所定値は、前記特徴量の最大値である付記1乃至6の何れか一項に記載の電力見積ポイント選択方法。
(付記8)
回路ブロック毎に特徴量を要素としてサンプリングし、前記サンプリングしたポイントから消費電力を見積もるポイントを選択して消費電力の見積もりをシミュレーションするシミュレーション装置であって、
前記回路ブロック毎に前記特徴量の所定値を基準とする所定範囲内で前記要素をグループ化するグループ化手段と、
前記サンプリングしたポイントのうち、グループ化された前記要素の数が最も多いポイントを選択するポイント選択手段と、を有するシミュレーション装置。
(付記9)
回路ブロック毎に特徴量を要素としてサンプリングし、前記サンプリングしたポイントから消費電力を見積もるポイントを選択して消費電力の見積もりをシミュレーションするシミュレーション装置により実行される電力見積ポイント選択プログラムであって、
前記シミュレーション装置に、
前記回路ブロック毎に前記特徴量の所定値を基準とする所定範囲内で前記要素をグループ化するグループ化ステップと、
前記サンプリングしたポイントのうち、グループ化された前記要素の数が最も多いポイントを選択するポイント選択ステップと、を実行させる電力見積ポイント選択プログラム。
(付記10)
付記9に記載の電力見積ポイント選択プログラムが記録されたコンピュータ読み取り可能な記憶媒体。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。