JP4237661B2 - システムlsiの設計支援システム及び設計支援方法 - Google Patents

システムlsiの設計支援システム及び設計支援方法 Download PDF

Info

Publication number
JP4237661B2
JP4237661B2 JP2004090327A JP2004090327A JP4237661B2 JP 4237661 B2 JP4237661 B2 JP 4237661B2 JP 2004090327 A JP2004090327 A JP 2004090327A JP 2004090327 A JP2004090327 A JP 2004090327A JP 4237661 B2 JP4237661 B2 JP 4237661B2
Authority
JP
Japan
Prior art keywords
storage cost
cost calculation
calculation unit
variable
dynamic analysis
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
JP2004090327A
Other languages
English (en)
Other versions
JP2005275967A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004090327A priority Critical patent/JP4237661B2/ja
Priority to US11/087,250 priority patent/US7624389B2/en
Publication of JP2005275967A publication Critical patent/JP2005275967A/ja
Application granted granted Critical
Publication of JP4237661B2 publication Critical patent/JP4237661B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、システムLSIの設計支援システム及び設計支援方法に関し、特に、EDA(Electric Design Automation)による設計システムを用いて、システム・オン・チップのようなシステムLSIの設計支援システム及び設計支援方法に関する。
従来は、数万ゲート規模の半導体集積回路を製造する場合は、設計部門からRTL(Register Transfer Level)データを製造部門に渡すだけで予定の納期までに期待通りに動作をする半導体集積回路を製造することができた。
また、数十万ゲート規模の半導体集積回路を設計する場合は、一般に、EDAツールの物理合成システムにより、抽象度の高い設計記述言語を用いてデジタルシステムを設計していた(特許文献1参照。)。
さらに、システム・オン・チップ(SoC)は、ソフトウェアとハードウェアが密接に関連し、設計の難易度が増大するため、オブジェクト指向分析及びオブジェクト指向設計手法を用いて、SoCの要求定義からソフトウェアおよびハードウェアの設計工程を効率化する手法が提案されている(非特許文献1、参照。)。
しかしながら、半導体集積回路の設計ルールがさらに微細になると、新たな露光装置、ウエハへの機械的ストレス、材料の問題、及び製造プロセス全体の複雑性から、システムLSIの歩留を向上させることが困難となることが多い。
また、設計者は、最先端技術がチップコストに見合うか疑問視し、チップの量産が成功するか否かと量産時のコストが、システムLSIの設計システム及び設計方法に大きな影響を与えるようになった。
しかも、上述した特許文献1も非特許文献1も共に、システムLSIの論理設計の良否を判定できる信頼性管理計画や品質測定法(メトリクス)が定義されていないので、マクロセルのような部品の利用状況に関する評価も実施していない。
さらに、システムLSIの設計において、設計工程を進めるにしたがって、モジュールの並列性、設計制約、通信路の定義情報が付加された結果、初期のLSI仕様に合致しないシステムLSIを生成し、設計の下流工程から上流工程に戻るような再設計する場合も多い。
特開平11−3367号公報(段落0058、図1参照) 朱など、題名「UMLを用いたシステムレベル設計手法の提案」、DAシンポジウム、2002年、P49
本発明は、システムLSIの設計支援システム及び設計支援方法を提供することを目的とする。
上記目的を達成するために、本発明の第1の特徴は、例えば、システムLSIのモジュール仕様及びモジュール動作を指定するソースコードを記憶するソースコード記憶装置と、
ソースコード記憶装置からソースコードを読み出し、コンパイルして実行コードを実行コード記憶装置に記憶するコンパイラと、ソースコード記憶装置からソースコードを読み出し、記述されているメンバ変数のサイズを算出し、静的解析結果として出力する静的解析部と、システムLSIのテストデータを記憶するテストデータ記憶装置と、実行コード記憶装置から読み出した実行コードと、テストデータ記憶装置から読み出したテストデータに基づいて、システムLSIの動作シミュレーションを実行して、メンバ変数の総生存時間を算出し、動的解析結果として出力する動的解析部と、静的解析結果と動的解析結果に基づき、システムLSIの記憶コストを算出する記憶コスト算出部と、を備えるシステムLSIの設計支援システムであることを要旨とする。
本発明の第2の特徴は、例えば、静的解析部、動的解析部、記憶コスト算出部、及び制御装置を備える設計支援システムを用いたシステムLSIの設計支援方法であって、記憶コスト算出部が、静的解析部からの静的解析結果と動的解析部からの動的解析結果に基づいて、静的解析結果として得られる前記システムLSIのモジュール仕様及びモジュール動作を指定するクラスのメンバ変数のサイズと、動的解析結果として得られるメンバ変数の生存時間の積から、クラスのメンバ変数の記憶コストを算出し、総記憶コストに加算するメンバ変数コスト算出工程と、記憶コスト算出部が、静的解析結果と動的解析結果に基づいて、静的解析結果として得られるシステムLSIのモジュール仕様及びモジュール動作を指定するクラスのメンバ関数に定義されているすべての一時変数のサイズと、動的解析結果として得られる一時変数の総生存時間の積から一時変数の記憶コストを算出し、総記憶コストに加算する一時変数コスト算出工程と、記憶コスト算出部が総記憶コストを制御装置へ出力する総記憶コスト出力工程と、を備えるシステムLSIの設計支援方法であることを要旨とする。
本発明は、システムLSIの設計支援システム及び設計支援方法を提供することができる。
(第1の実施の形態)
図1は、本発明の第1の実施形態に係るシステムLSIの設計支援システム102(以下、「設計支援システム」と略記する)のブロック図である。
設計支援システム102は、設計支援システム102全体を制御する制御装置10と、この制御装置10に各々接続するソースコード記憶装置1と、静的解析部2と、コンパイラ4と、実行コード記憶装置5と、動的解析部7と、記憶コスト算出部9と、入出力部17と、を備えている。
ここで、入出力部17の形態としては、入力手段としてのキーボード、マウスポインタ、テンキー、タッチパネルを採用することができ、出力手段としてのディスプレイ装置や印刷装置を採用することができる。
また、動的解析部7に接続しシミュレーション用のテストデータを記憶するテストデータ記憶装置6と、記憶コスト算出部9から出力する記憶コスト情報を記憶するコンフィグレーション情報記憶装置31をさらに備えている。
ソースコード記憶装置1は、設計評価の対象となるシミュレーション可能なモジュールのソースコードを記憶する磁気ディスク、光学ディスクを用いることができる。例えば、ソースコードをシステムC言語などのオブジェクト指向言語で記述して記憶することができる。
静的解析部2は、制御装置10からの指令でソースコード記憶装置1からソースコードを読み出し、静的解析手段を用いてソースコードを静的に解析し、ソースコードに含まれるクラスのメンバ変数のサイズを算出し、静的解析結果3として出力する。
例えば、制御装置10からの指令で、メンバ変数や、メソッドや、メソッド中で読み出される変数や、メソッド中で変更される変数をリストアップし、静的解析結果3として出力し、記憶コスト算出部9に送信する。
コンパイラ4は、制御装置10からの指令によりソースコード記憶装置1から読み出したソースコードをコンパイルし、動的解析部7で実行可能な実行コードを生成し、実行コード記憶装置5へ保存する。
例えば、コンパイラ4は、制御装置10からの指令でプロファイリング機能を用いて、ソースコードに対して動的解析用の情報埋め込み処理を施し、動的解析が実行可能な実行ファイルを生成する。
動的解析部7は、制御装置10からの指令で、実行コード記憶装置から読み出した実行コードと、テストデータ記憶装置6から読み出したテストデータに基づいて、システムLSIの動作シミュレーションを実行して、動的解析手段でメンバ変数の総生存時間を算出し、動的解析結果8として出力し、記憶コスト算出部9へ送信する。
記憶コスト算出部9は、制御装置10からの指令で、静的解析結果3及び動的解析結果8に基づき、記憶コスト算出手段を用いて、システムLSIの設計の良否を判断する記憶コストを算出し、制御装置10を経由して記憶コスト情報を入出力部17へ出力させる。
記憶コスト算出部9は、記憶コスト情報をコンフィグレーション情報記憶装置31に保存させることもできる。
第1の実施形態では、さらにソースコードをソースコード記憶装置1に複数記憶させ、各ソースコードに対応する記憶コストを記憶コスト算出部9で算出してから、最小記憶コストのシステムLSIを選択することもできる。
動的解析部7は、テストデータ記憶装置6から複数のテストデータを読み出し、各テストデータに対応したメンバ変数の総生存時間を算出し、複数の動的解析結果8として記憶コスト算出部9へ出力し、記憶コスト算出手段を用いて最小記憶コストを算出させることもできる。
第1の実施形態の設計支援システム102を用いて、ソースコード記憶装置1に記憶したモジュールの仕様及び動作を指定するソースコードを読み出し、記述されているメンバ変数のサイズを静的解析部2で算出し、静的解析結果3として出力する。
次に、コンパイラ4は、ソースコード記憶装置1からソースコードを読み出し、コンパイルして、動的解析部7で実行可能な実行コードを生成する。
引き続き、テストデータ記憶装置6からシミュレーション用のテストデータを読み出し、動的解析部7で実行コードをシミュレーションし、メンバ変数の総生存時間を算出し、動的解析結果8として出力する。
さらに、記憶コスト算出部9が静的解析結果3及び動的解析結果8を合成し、記憶コストを算出するように構成することもできる。
図2は、本発明の第1の実施形態に用いる静的解析結果のデータ構造図である。静的解析結果のデータ構造は、クラス名11、メンバ名12、種別13、参照するリソース14、変更するリソース15、一時変数16の各データにより構成する。
図1のブロック図及び図2のデータ構造を参照して、システムLSIの設計支援方法を説明する。システムLSI設計とは、所望のシステム仕様に合致するように、入手可能なモジュール(例えば、部品)を設計支援システム102上で組み合わせることを意味する。
例えば、論理合成ツールが回路ライブラリ中のマクロセルの組み合わせを入出力部17で決定し、制御装置10を通してソースコード記憶装置1に保存することでシステムLSIを設計することができる。
静的解析部2は、静的解析の対象となるソースコードのオブジェクト指向言語を解析する。このソースコード全体は複数のクラス(例えば、「A」、「B」)から構成されている。オブジェクト指向言語を用いたモジュール設計は、各クラスの設計を別体のコンピュータシステムで処理してもよく、設計支援システム102で処理してもよい。
静的解析部2は、各クラス名11毎にそのクラスに定義されているメンバ名12(例えば、「a」、「set_a」、「ret_b」、「b」、「set_b」)とその種別13(例えば、「変数」、「関数」)をリストアップする。
また、関数については、関数内部で読み出し参照するリソース14(例えば、「x.souce_of_a」、「A」、「Z」)をリストアップし、関数内部で変更するリソース15(例えば、「a」、「無し」、「無し」)、一時変数16(例えば、「tmp」、「無し」、「tmp」)をリストアップする静的解析結果3を算出し静的解析部2内部に記憶する。
図3は、第1の実施形態に用いる動的解析結果のデータ構造図である。動的解析結果は、イベント発生時刻18、関数名19、及び発生イベント種別20を含むように構成し、記憶コストが次の如く定義される。
図1のブロック図及び図3のデータ構造を参照して、システムLSIの設計支援方法を説明する。
動的解析部7は、特定の関数スコープの外部に存在する変数を、所定の変数(例えば、「a」)に対して、最初に代入又は変更の操作を行う関数(例えば、「A.set_a」)の起動時刻(例えば、「start」)を生存開始時刻とする。
例えば、図中のイベント発生時刻18の「15」の数字で示すマシンサイクル値に対応するグローバル変数や或るクラスのメンバ変数が該当する。
引き続き、動的解析部7は、最後に読み出して参照する操作を行う関数(例えば、「A.set_a」)の終了時刻(例えば、「end」)を生存終了時刻とする。例えば、図中のイベント発生時刻18の「20」の数字で示すマシンサイクル値に対応するグローバル変数や或るクラスのメンバ変数が該当する。
動的解析部7は、生存終了時刻と生存開始時刻の差を生存時間と定義し、初期値が与えられている場合は、グローバル変数においては、関数名19が「main」関数若しくはこれに相当する関数のイベント発生時刻18を生存開始時刻と算出する。
動的解析部7は、クラスのメンバ変数において、そのクラスのコンストラクタの起動時刻を生存開始時刻とする。また、オブジェクト指向言語で動的にインスタンスの生成、消滅を考慮する場合、初期値の設定がない場合においても、コンストラクタの起動時点で生存時間を算出する。
さらに、動的解析部7は、そのクラスのメンバ変数の総生存時間に加算し、生存開始時間のクリア処理を実行する。なお、一時変数の場合は、その一時変数が定義されている関数の起動時刻から終了時刻までを生存時間とする。
動的解析部7は、個々の変数のサイズと総生存時間を掛け合わせて記憶コストを算出する。例えば、個々のクラスの記憶コストは、次の式1から式3のように定義される。
Figure 0004237661
式1は、記憶コスト算出部9が実行するクラスの記憶コスト「CMC」の算出式である。記憶コスト「CMC」は、すべてのメンバ変数のサイズ「MS」とその総生存時間「MT」とを乗じた第1の積の総和と、メンバ関数の実行時間「ME」の総和とメンバ関数の一時変数のサイズ「TS」の総和とを乗じた第2の積の総和と、を加算して算出する。
動的解析部7は、「1」から「i」回目までのメンバ変数のサイズ「MS」と「1」から「i」回目までの総生存時間「MT」とを乗じて第1の積の総和を算出する。
動的解析部7は、「1」から「j」回目毎にメンバ関数の実行時間「ME」を「1」から「k」回目までの積を総和し、「1」から「j」回目毎にメンバ関数の一時変数のサイズ「TS」を「1」から「l」回目までの総和と、を乗じて第2の積の総和を算出する。
記憶コスト算出部9は、第1の積の総和と第2の積の総和とを加算してクラスの記憶コストを算出する。
式2は、記憶コスト算出部9が実行するモデルの記憶コスト「MMC」の算出式である。モデルの記憶コスト「MMC」は、式1で算出された個々のクラスの記憶コスト「CMC」の積の総和と、グローバル変数「GS」と生存時間「GT」とを乗じた第3の積の総和と、を加算して算出する。
記憶コスト算出部9は、「1」から「i」回目までのクラスの記憶コスト「CMC」の積の総和と、「1」から「j」回目までのグローバル変数のサイズ「GS」と生存時間「GT」とを乗じたものの総和を算出し、さらに「CMC」の積の総和と加算したモデル全体の記憶コストを算出する。
式3は、記憶コスト算出部9が実行する複数のシミュレーション結果から算出するクラスの記憶コスト「SMC」の算出式である。複数クラスの記憶コスト「SMC」は、「1」から「i」回目までの各シミュレーションへの重み「W」と、「1」から「i」回目までのシミュレーションから得られた記憶コスト「SC」とを乗じた積の総和である。
先ず、動的解析部7は、テストデータ記憶装置6からシミュレーション用のテストデータを読み出し、異なる複数のシミュレーションを実行してから、メンバ変数の総生存時間「MT」を算出し、動的解析結果8として記憶コスト算出部9へ送信する。
記憶コスト算出部9は、「1」から「i」回目までの各シミュレーションへの重み「W」と、この「1」から「i」回毎のシミュレーション結果「SC」とを乗じた積の総和を複数クラスの記憶コスト「SMC」として算出する。
記憶コスト算出部9は、動的解析部7で得た複数のシミュレーション結果から個々の記憶コストを総合して判断するため、式3のように定義する評価関数を利用することができる。
記憶コスト算出部9は、「1」から「i」回目までの各シミュレーション結果から得られた記憶コストに付加する重み「W」について、動的解析部7が「1」から「i」回目までの各シミュレーションを実行した時のテストデータにより、発生させる事象の発生確率や、事象の発生時のLSIに及ぼす性能面のリスクなどから「1」から「i」回目までの「W」を算出してもよいことは勿論である。
また、ここでは評価関数として重み付き平均値を用いて例示したが、他の算出方法を用いても記憶コストを算出することができる。
図4から図8は、本発明の第1の実施の形態に用いる記憶コスト算出部9の動作フローを示すフローチャートである。設計支援システムは、システムCなどのオブジェクト指向言語で記述されたプログラムを演算処理する。
オブジェクト指向言語のプログラムは複数のクラスから構成し、マクロセルのようなモジュールの仕様及び動作を定義することができる。
但し、本発明は、オブジェクト指向言語のプログラムに限定されるものではなく、例えば、非オブジェクト指向言語で記述されたプログラムを用いても、手続き型言語であれば図示した設計フローを適用することができる。
図1のブロック図及び図4のフローチャートを参照して、記憶コスト算出部9の動作を説明する。動的解析結果読込処理ステップST21(以下、ステップを「ST」と略記する)は、記憶コスト算出部9が動的解析結果8を動的解析部7からすべて読み終わるまで、動的解析結果読取コードを論理「0」のようなコードとして記憶し、下流の処理を繰り返すように制御する。
一方、記憶コスト算出部9が動的解析結果8をすべて読み終わった段階で、動的解析結果読取コードを論理「0」から論理「1」に変更し、下流の判定処理ST22へ移行させるように制御する。
記憶コスト算出部9は、判定処理ST22を実行し、動的解析結果読取コードが論理「0」か論理「1」か否かを判定する。判定結果が是(YES)のときは、処理を節点30「E」へ移行させる。一方、判定結果が非(NO)の場合は、処理をレコード読込処理ST23へ分岐させる。
記憶コスト算出部9は、レコード読込処理ST23を実行し、動的解析結果8から1レコード分のデータを読み込み、次のイベント種別判定処理ST24へ移行させる。
記憶コスト算出部9は、イベント種別判定処理ST24を実行し、読込んだ1レコードの種別を判定し、例えば、イベント種別が「関数開始」のときは、論理「0」をセットし、イベント種別が「関数終了」の場合は、論理「1」をセットする。
引き続き、記憶コスト算出部9は、関数分岐処理ST25を実行し、イベント種別に対応する論理値に基づき、関数開始を示す論理「0」のときは処理を節点26「A」へ分岐させ、関数終了を示す論理「1」の場合は処理を節点28「C」へ分岐させる。
図1のブロック図及び図5のフローチャートを参照して、記憶コスト算出部9の動作を説明する。関数開始の処理の場合は、記憶コスト算出部9が静的解析結果3を読み出し参照し、この関数内部で定義されている一時変数およびこの関数で変更したグローバル変数およびメンバ変数の生存開始時刻を内部に登録する。
記憶コスト算出部9は、節点26「A」から処理を引き継ぐメイン関数の判定処理ST31を実行し、イベントが開始されている関数がメイン関数であるか否かを判定する。
記憶コスト算出部9は、判定結果が是(YES)のときは処理をST32へ分岐させ、判定結果が非(NO)の場合は処理ST35へ分岐させる。
記憶コスト算出部9は、処理ST32を実行し、メイン関数が起動であり初期値が与えられているグローバル変数の数だけ、先損開始時刻登録処理ST34を繰り返すように所定のフラグ値を論理「0」又は論理「1」にセットし、処理をグローバル変数判定処理ST33へ移行させる。
記憶コスト算出部9は、先損開始時刻登録処理ST34を実行し、メイン関数の開始時刻をクラスのグローバル変数の「先損開始時刻」として内部に登録する。
一方、記憶コスト算出部9が、処理ST31でメイン関数の起動でないと判定(NO)したときは、処理ST35へ分岐し、クラスのコンストラクタの起動であるか否かを判定する。
記憶コスト算出部9は、コンストラクタの起動であると判定(YES)したときは、コンストラクタが定義されているクラスの中の初期値が与えられているメンバ変数の数を終了判定ST37で判定しながら、処理ST38を繰り返す。
記憶コスト算出部9は、処理ST38を実行し、コンストラクタの開始時刻をクラスのメンバ変数の「生存開始時刻」として内部に登録し、処理ST36へ復帰する。
記憶コスト算出部9は、処理ST35でコンストラクタの起動でないと判定(NO)したときは、処理ST39へ分岐し、静的解析結果から開始したメンバ関数を探索し、処理ST40へ移行する。
記憶コスト算出部9は、処理ST40でメンバ関数が発見できない場合(YES)は、システムLSIの設計支援処理を「エラー終了(ST41)」として終了させる。一方、メンバ関数を発見(NO)したときは処理ST42へ進む。
記憶コスト算出部9は、処理ST42を実行し、クラスのメンバ関数内で変更されるメンバ変数およびグローバル変数の数を処理ST43で判定しながら、すべてのグローバル変数を処理するまで処理ST44、並びに処理ST46を繰り返す。
記憶コスト算出部9は、処理ST44を実行し、クラスの変数に対して、既に「生存開始時刻」が登録されているか検証し、登録済みの場合は判定処理ST45を経て処理ST42へ復帰する。一方、未登録のときは処理ST46を経て処理ST42へ復帰する。
なお、処理ST46は、クラスの関数の起動時刻をクラスの変数の「生存開始時刻」として記憶コスト算出部9が内部に登録する処理である。
記憶コスト算出部9は、すべてのメンバ変数およびグローバル変数を処理したことを処理ST43で判定したときは、処理ST47へ分岐し、メンバ関数内で定義されている一時変数の数を処理ST48で判定(NO)しながら、処理ST49の実行を繰り返す。
記憶コスト算出部9は、処理ST49を実行し、クラスの関数の開始時刻をクラスの一時変数の「生存開始時刻」として内部に記録し、メンバ関数内で定義されている一時変数のすべてを処理するまで処理ST47へ復帰する。
一方、記憶コスト算出部9は、一時変数のすべてを処理したときは、処理ST48で終了判定(YES)をして節点27へ処理をジャンプさせ処理ST21(図4参照)へ復帰する。
図1のブロック図及び図6のフローチャートを参照して、記憶コスト算出部9の動作を説明する。図4の処理ST25で関数の終了と判定された場合は、記憶コスト算出部9が、処理を節点28「C」を経て処理ST51へ移行させる。
記憶コスト算出部9は、静的解析結果3から終了した関数を検索し、処理ST52で関数が発見できないと判定(YES)したときは、終了処理ST53へ分岐し「エラー処理」として設計支援処理を終了させる。関数が発見できた場合(NO)は、処理ST54へ分岐する。
記憶コスト算出部9は、処理ST54を実行し、関数がデストラクタであるか否かを判定する。判定結果が否(NO)のときは、処理ST59へ分岐し、処理ST60、ST61、ST62、ST63を繰り返す。
記憶コスト算出部9は、関数内で参照されるメンバ関数およびグローバル変数の数だけ、関数の終了時刻をクラスの変数の「生存終了時刻」として登録(ST61)し、クラスのメンバ変数の「生存終了時刻」と「生存J開始時刻」の差からクラスの変数の「生存時間」を算出する(ST62)。
また、記憶コスト算出部9は、処理ST63で変数の生存時間が算出できない判定結果(YES)を得たときは、処理をエラー終了処理ST64へ分岐させ設計支援処理を終了させる。
このように、記憶コスト算出部9は、関数の内部で定義されている一時変数および当該関数で読み出し参照を行っているグローバル変数およびメンバ変数の生存終了時刻を記録し、生存開始時刻との差から個々の変数の生存時間を算出する。
記憶コスト算出部9は、処理ST60の判定処理で、メンバ変数およびグローバル変数のすべてを処理したと判定(YES)したときは、処理ST65へ分岐し、関数内で定義されている一時変数の数だけ、算出された生存時間を加算して、一時変数の総生存時間を算出する。
例えば、記憶コスト算出部9は、処理ST67でイベント発生時刻をクラスの一時変数の「生存終了時刻」として内部に記録し、処理ST68でクラスの一時変数の「生存終了時刻」と「生存開始時刻」との差からクラスの一時変数の「生存時間」を算出する。
また、記憶コスト算出部9は、処理ST69で変数の生存時間が算出できない判定結果(YES)を得たときは、処理をエラー終了処理ST70へ分岐させ設計支援処理を終了させる。
記憶コスト算出部9は、処理ST71で算出された「生存時間」をクラスの一時変数の「総生存時間」に加算し、処理ST66で一時変数のすべてが処理されたと判定されるまで、処理ST67、ST68、ST69、ST71を繰り返す。
なお、記憶コスト算出部9は、処理ST66で一時変数のすべてが処理されたと判定(YES)された場合は、処理を節点29へジャンプさせ図4の処理ST21へ復帰させる。
さらに、記憶コスト算出部9は、終了した関数がデストラクタであった場合は、判定処理ST54で是(YES)判定を行い、処理ST55、ST56、ST57を経て、デストラクタが定義されているクラス内部で定義されているメンバ変数の生存時間を加算(ST58)し、クラスのメンバ変数の総生存時間を算出する。
記憶コスト算出部9は、処理ST55を実行し、デストラクタが定義されているクラスの各メンバ変数の数だけST56、ST57、ST58を繰り返す。
記憶コスト算出部9は、処理ST56で、各メンバ変数の数だけ処理が完了しているか否かを判定し、完了している場合(YES)は、節点29「D」へ処理をジャンプさせ、図4の処理ST21へ遷移させる。
また、記憶コスト算出部9は、処理ST57で、クラスのメンバ変数の生存開始時刻をクリア(例えば、未登録の状態に)する。
図1のブロック図及び図7のフローチャートを参照して、記憶コスト算出部9の動作を説明する。記憶コスト算出部9は、動的解析結果8のすべてのレコードを読み終わった段階(図4のST22参照)で、処理を節点30「E」にジャンプさせ、総記憶コストの算出を開始する(ST72)。
まず、モデルを構成するすべてのクラスについて、上述した式1に基づいて各クラスの記憶コストを算出する。
記憶コスト算出部9は、処理ST72を実行し、すべてのクラスについて処理ST73、ST74、ST75、ST76、ST77を繰り返し、処理ST73ですべてのクラスについてのコスト算出処理が終了と判定(YES)された段階で処理を節点50「F」へジャンプさせる。
一方、コスト算出処理が終了していないと判定(NO)された場合は、処理ST74へ分岐する。
記憶コスト算出部9は、処理ST74を実行し、クラスのすべてのメンバ変数のコスト算出処理を繰り返し、処理ST75でクラスのすべてのメンバ変数のコスト算出処理が終了と判定(YES)された段階で処理ST78へ分岐する。
一方、コスト算出処理が終了していないと判定(NO)された場合は、処理ST76へ分岐する。
記憶コスト算出部9は、処理ST76を実行し、クラスのメンバ変数のサイズとその「生存時間」の積から、クラスのメンバ変数の「記憶コスト」を算出し、処理ST77でクラスのメンバ変数の「記憶コスト」を「総記憶コスト」に加算する。
記憶コスト算出部9は、処理ST74に復帰し、クラスのすべてのメンバ変数のコスト算出処理が終了したか否かを検証する。
記憶コスト算出部9は、クラスのすべてのメンバ変数のコスト算出処理を終了させた段階で、処理ST78へ分岐し、クラスのすべてのクラスのすべてのメンバ関数のコスト算出処理が終了したか否かを検証する。
コスト算出処理を終了した場合は、記憶コスト算出部9が処理ST79の判定結果(YES)に基づき、クラスの「総記憶コスト」の情報を制御装置10経由で入出力部17へ出力する。
一方、記憶コスト算出部9は、処理ST79でコスト算出処理が終了していないと判定(NO)された場合は、処理ST81へ分岐し、クラスのメンバ関数に定義されているすべての一時変数についてコスト算出処理が終了するまで処理ST82、ST83、ST84を繰り返す。
記憶コスト算出部9は、処理ST82ですべての一時変数についてコスト算出処理が終了していると判定(YES)した場合は、処理ST78へ分岐しすべてのメンバ関数のコスト算出処理が終了しているか否かを検証する。
一方、記憶コスト算出部9は、処理ST82でコスト算出処理が終了していないと判定(NO)された場合は、処理ST83へ分岐し、メンバ関数に定義されている一時変数のサイズと「総生存時間」の積から一時変数の「記憶コスト」を算出する。
引き続き、記憶コスト算出部9は、一時変数の「記憶コスト」を「総記憶コスト」に加算し、処理ST81へ復帰する。
図1のブロック図及び図8のフローチャートを参照して、記憶コスト算出部9の動作を説明する。記憶コスト算出部9は、クラスの記憶コスト算出処理を終了させた段階(図7の処理ST73のYES判定)で、処理を節点50「F」にジャンプさせ、すべてのグローバル変数の記憶コスト算出処理を開始する(ST85)。
記憶コスト算出部9は、処理ST86ですべてのグローバル変数についての記憶コスト算出処理が終了したと判定(YES)された段階で処理ST89へ分岐し、式2に基づいてモデル全体の「総記憶コスト」の情報を制御装置10経由で入出力部17へ出力し、記憶コスト算出処理を終了させる。
一方、記憶コスト算出部9は、処理ST82でコスト算出処理が終了していないと判定(NO)された場合は、処理ST83へ分岐し、グローバル変数のサイズと「生存期間」の積からグローバル変数の「記憶コスト」を算出する。
さらに、記憶コスト算出部9は、処理ST88でグローバル変数の「記憶コスト」を「総記憶コスト」に加算してから、処理ST85へ復帰する。
(第2の実施の形態)
図9は、本発明の第2の実施形態に係るシステムLSIの設計支援システムの記憶コスト算出処理を示す図である。
図10は、本発明の第2の実施形態に係るシステムLSIの設計支援フローを示すフローチャートである。
図1、図9、並びに図10のフローチャートを参照して、第2の実施形態の設計支援フローを説明する。
ソースコード記憶装置1は、図9(a)で示すモジュールとしてのクラスソース91と、図9(b)で示すクラスサム92の2種類のソースコードを記憶している。クラスソース91は、ソースコードの中で定義されるプライベート(private)なメンバ変数「a」、「b」、「c」、「d」を有する。
テストデータ記憶装置6は、シミュレーション用のテストデータとして、動的解析部7でメンバ変数「a」、「b」、「c」、「d」の総和を、クラスソース91と非同期に起動されるクラスサム92を用いて算出するテストデータを記憶する。
動的解析部7は、動的解析手段を動作させメンバ変数「a」、「b」、「c」、「d」の値を設定するイベントを非同期に発生させ、かつ同時には起動しないように制御する。
動的解析部7は、テストデータ記憶装置6からクラスソース91のデータを読み出して、メンバ変数「a」、「b」、「c」、「d」の値を設定し、内部に保存する。同様に、クラスサム92を読み出して内部に保存する。
動的解析部7は、非同期に起動されたクラスサム側から個々のクラスに対してポーリングを実行し、メンバ変数「a」、「b」、「c」、「d」の値を取得しながら、合算するというシミュレーションを実行する。
動的解析部7は、例えば、メンバ変数「a」に関連するクラスソース91をポーリングし「seta」と記述されたクラスの起動時刻93と終了時刻を記録する。第2の実施形態では、図9(c)に起動時刻「10」と終了時刻「105」を例示した。
同様に、動的解析部7は、メンバ変数「b」に関連するクラスソース91をポーリングし「setb」と記述されたクラスの起動時刻94と終了時刻を記録する。第2の実施形態では、図9(c)に起動時刻「20」と終了時刻「110」を例示した。
同様に、動的解析部7は、メンバ変数「c」に関連するクラスソース91をポーリングし「setc」と記述されたクラスの起動時刻95と終了時刻を記録する。第2の実施形態では、図9(c)に起動時刻「40」と終了時刻「115」を例示した。
同様に、動的解析部7は、メンバ変数「d」に関連するクラスソース91をポーリングし「setd」と記述されたクラスの起動時刻96と終了時刻を記録する。第2の実施形態では、図9(c)に起動時刻「30」と終了時刻「120」を例示した。
動的解析部7は、クラスソース91の各メンバ変数の終了時間に、内部に保存したクラスサム92を起動させ、クラスのメンバ変数の生存時間を算出する。例えば、図9(c)に示すメンバ変数「a」に対して起動時刻98の「105」に図9(b)にクラスサム92の「reta」を起動させる。
同様に、動的解析部7は、図9(c)のメンバ変数「b」に対して起動時刻98の「110」に図9(b)に示すクラスサム92の「retb」を起動させ、図9(c)のメンバ変数「c」に対して起動時刻98の「115」に図9(b)に示すクラスサム92の「retc」を起動させる。
さらに、動的解析部7は、図9(c)のメンバ変数「d」に対して起動時刻98の「120」に図9(b)に示すクラスサム92の「retd」を起動させる。
動的解析部7は、クラスサム92の実行をすべて完了させる。例えば、メンバ変数「a」、「b」、「c」、「d」の各変数の生存時間の総和の算出終了時間は、図9(c)に示すsum被参照時刻99の「130」である。
動的解析部7は、クラスサム92のメンバ変数及びクラスサムの変数の生存時間の総和を算出処理し、動的解析結果8として記憶コスト算出部9へ出力する。
記憶コスト算出部9は、開始処理により記憶コスト算出手段を動作させ、「総記憶コスト」の値を「0」にし、動的解析結果8に対してポーリング処理ST110を実行する。
記憶コスト算出部9は、ポーリング処理ST110で、動的解析結果8からすべてのメンバ変数について以下の処理を繰り返すように処理ST111へ移行する。
記憶コスト算出部9は、処理ST111で、すべてのメンバ変数の記憶コストを算出したか否かを判定する。記憶コスト算出がすべて終了していないと判定(NO)された場合は、処理ST112へ分岐し、記憶コスト算出部9が、クラスのメンバ変数のサイズとその「生存時間」の積から、クラスのメンバ変数の「記憶コスト」を算出し、処理ST113に移行してクラスのメンバ変数の「記憶コスト」を「総記憶コスト」に加算する。
記憶コスト算出部9は、処理を処理ST110に復帰させ、クラスのすべてのメンバ変数のコスト算出処理が終了したか否かを検証する。
記憶コスト算出部9は、処理ST112で、メンバ変数を4バイトのサイズで構成した場合に、変数「a」の生存時間「95」に4バイトを乗じた値を記憶コスト「380」として算出する。
なお、変数の生存時間はシステムLSIのマシンサイクルと同一又は比例した単位を用いることができるが、第2の実施形態では各クラスのメンバ変数の生存時間の差異を相対的に示す数値を用いている。
入出力部17は、ディスプレイ画面又は印刷装置のプリント出力で、図9(c)にハッチングで示した棒グラフを表示することができ、棒グラフの面積が記憶コストに比例して増大するため、システムLSIの設計者は記憶コストを視覚的に把握することができる点で有利である。
記憶コスト算出部9は、処理を処理ST113へ進ませ、変数「a」の記憶コスト「380」を総記憶コストへ加算し、処理ST110へ処理を復帰させる。
記憶コスト算出部9は、処理ST111ですべてのメンバ変数が記憶コスト算出されていない判定結果(NO)を検出すると、処理ST112に進み変数「b」の生存時間「90」に4バイトを乗じた値を記憶コスト「360」として制御装置10へ出力する。
記憶コスト算出部9は、処理を処理ST113へ進ませ、変数「b」の記憶コスト「360」を総記憶コストへ加算し、処理ST110へ処理を復帰させる。
記憶コスト算出部9は、処理ST111ですべてのメンバ変数が記憶コスト算出されていない判定結果(NO)を検出すると、処理ST112に進み、変数「c」の生存時間「75」に4バイトを乗じた値を記憶コスト「300」として制御装置10へ出力する。
記憶コスト算出部9は、処理を処理ST113へ進ませ、変数「c」の記憶コスト「300」を総記憶コストへ加算し、処理ST110へ処理を復帰させる。
記憶コスト算出部9は、処理ST111ですべてのメンバ変数が記憶コスト算出されていない判定結果(NO)を検出すると、処理ST112に進み、変数「d」の生存時間「90」に4バイトを乗じた値を記憶コスト「360」として制御装置10経由で入出力部17へ出力する。
記憶コスト算出部9は、処理を処理ST113へ進ませ、変数「d」の記憶コスト「360」を総記憶コストへ加算し、処理ST110へ処理を復帰させる。
例えば、メンバ変数「a」から「d」のすべてをポーリングし記憶コスト算出が終了(YES)したときは、処理ST114へ分岐しクラスの総記憶コストを制御装置10経由で入出力部17に出力し処理を終了させる。
記憶コスト算出部9は、処理ST111でメンバ変数「a」から「d」のすべてをポーリングし、記憶コスト算出の終了判定(YES)を検出し、処理を処理ST114に分岐させ、sumの変数の生存時間「25」に4バイトを乗じた値を記憶コスト「100」を総記憶コストに加算する。
また、変数「a」から「d」までの4つの変数の生存時間のサイクル数、サイズ、及びコストを次の表1に示した。
Figure 0004237661
第2の実施形態では記憶コスト算出部9が算出した各変数の記憶コストを総記憶コストへ加算するように説明したが、本発明はこの構成に限定するものではなく、各変数の記憶コストを制御装置10経由で入出力部17へ出力するよう構成してもよい.。
また、記憶コスト算出部9は、各変数の記憶コストを合計した総記憶コスト「1500」だけを制御装置10へ出力してもよく、コンフィグレーション情報記憶装置31へ総記憶コスト「1500」や、各変数の記憶コストを記憶してもよい。
(第3の実施の形態)
図11は、本発明の第3の実施形態に係るシステムLSIの設計支援システムの記憶コスト算出処理を示す図である。
図12は、本発明の第3の実施形態に係るシステムLSIの設計支援フローを示すフローチャートである。
図1、図11、並びに図12のフローチャートを参照して、第3の実施形態の設計支援フローを説明する。第2の実施形態と同一の構成要素については、重複する説明を省略する。
動的解析部7は、図11(a)に示すクラスソース91aの各クラス内でメンバ変数「a」、「b」、「c」、「d」の値が各々設定された段階で、図11(b)に示すクラスサム92a側にメンバ変数「a」、「b」、「c」、「d」の値を各々通知するように構成した点が、第2の実施形態と相違する。
また、動的解析部7は、図11(b)のクラスサム92aが非同期に起動された段階で対応するメンバ変数の生存時間を動的解析結果8として記憶コスト算出部9へ出力する。
動的解析部7は、図11(a)に示すメンバ変数「a」に関連するクラスソース91aの「seta」と記述されたクラスの起動時刻を図11(c)に示す起動時刻93の「10」と「SUM.add(a)」の起動時刻「15」を内部に記録する。
動的解析部7は、図11(a)のクラスソース91aの各メンバ変数に対応した図11(c)に示す「SUM.add」の実行時刻100に、図11(b)のクラスサム92aを起動させ、クラスのメンバ変数の生存時間を算出する。例えば、メンバ変数「a」に対して起動時刻「15」にクラスサム92aの「add(tmp)」を起動させメンバ変数の生存時間「5」を算出する。
また、図11(b)のクラスサム92aの「add(tmp)」の生存時間は「tmp」レジスタの使用時間に相当し、図11(c)に示す時間「15」から時間「18」までの時間が生存時間「3」に相当する。
動的解析部7は、図11(a)のメンバ変数「b」に関連するクラスソース91aの「setb」と記述されたクラスの起動時刻を、図11(c)に示す起動時刻94の「20」と「add(tmp)」の起動時刻「25」を内部に記録する。
動的解析部7は、メンバ変数「b」の生存時間「5」を算出し、「add(tmp)」の生存時間「3」を内部に記憶する。
同様に、動的解析部7は、図11(a)のメンバ変数「c」に相当する図11(c)に示す起動時刻95の「30」、「add(tmp)」の起動時刻「35」、メンバ変数「c」の生存時間「5」、「add(tmp)」の生存時間「3」を算出し内部に記憶する。
同様に、動的解析部7は、図11(a)のメンバ変数「d」に相当する図11(c)に示す起動時刻96の「40」、「add(tmp)」の起動時刻「45」、メンバ変数「d」の生存時間「5」、「add(tmp)」の生存時間「3」を算出し内部に記憶する。
動的解析部7は、例えば、図11(c)に示すSUM.add()起動時刻100の「15」、「25」、「35」、「45」のデータと、SUM.add()終了時刻101の「18」、「28」、「38」、「48」のデータを用いて、「add(tmp)」の生存時間を算出する。
また、動的解析部7は、sum被参照時刻99の時間「130」までに、各メンバ変数に対応した「add(tmp)」の生存時間を加算し変数の総生存時間を算出し、動的解析結果8として記憶コスト算出部9へ送信する。
記憶コスト算出部9は、開始処理で「総記憶コスト」を「0」にリセットしてから、記憶コスト算出処理を開始し、処理ST120に移行し、すべてのシミュレーション結果で以下の処理を繰り返す。
処理は処理ST121に移行し、記憶コスト算出部9は、すべてのシミュレーション結果でクラスのメンバ変数の記憶コスト算出処理が終了したか否かを判定する。
記憶コスト算出部9が、終了判定(YES)にしたときは記憶コスト算出処理を終了させ、判定結果が未終了判定(NO)の場合は、処理ST122へ分岐する。
記憶コスト算出部9は、処理ST122で動的解析結果8から記憶コストを算出する。例えば、すべてのメンバ変数が4バイトのサイズで構成した場合、記憶コスト算出部9がメンバ変数「a」の生存時間「5」に4バイトを乗じた値を記憶コスト「20」として算出する。
記憶コスト算出部9は、処理ST125へ進み、メンバ変数「a」の「記憶コスト」を「総記憶コスト」に加算し、処理を処理ST122へ復帰させる。
さらに、記憶コスト算出部9は、処理ST123、ST124を実行し、メンバ変数「b」の生存時間「5」に4バイトを乗じた値を記憶コスト「20」として算出する。
記憶コスト算出部9は、処理を処理ST125へ進ませ、メンバ変数「b」の「記憶コスト」を「総記憶コスト」に加算し、処理ST122へ復帰させる。
記憶コスト算出部9は、処理ST123、ST124を実行し、メンバ変数「c」の生存時間「5」に4バイトを乗じた値を記憶コスト「20」として算出する。
記憶コスト算出部9は、処理を処理ST125へ進ませ、メンバ変数「c」の「記憶コスト」を「総記憶コスト」に加算し、処理ST122へ復帰させる。
同様に、記憶コスト算出部9は、処理ST123、ST124を処理し、変数「d」の生存時間「5」に4バイトを乗じた値を記憶コスト「20」として算出する。
記憶コスト算出部9は、処理を処理ST125へ進ませ、メンバ変数の「記憶コスト」を「総記憶コスト」に加算し、処理ST122へ復帰させる。
記憶コスト算出部9は、処理ST123の終了判定処理でクラスのすべてのメンバ変数の記憶コスト算出処理の終了判定(YES)を検出した段階で、処理を処理ST126へ分岐させる。
記憶コスト算出部9は、処理ST126で、「temp」レジスタの使用時間である「add(tmp)」の生存時間「12」に4バイトを乗じた値を記憶コスト「48」として算出する。
また、記憶コスト算出部9は、処理ST126で、「sumの変数」の生存時間「115」に4バイトを乗じた値を記憶コスト「460」として算出する。
さらに、記憶コスト算出部9は、処理ST126で、「add(tmp)」及び「sumの変数」の記憶コストを加算したクラスの「総記憶コスト」の「588」をシステムLSIの総記憶コストとして制御装置10経由で入出力部17へ出力する。
すなわち、本発明の第3の実施形態は、第2の実施形態に比して32.9%も総記憶コストを削減させるという利点がある。
また、第2の実施形態の記憶コスト算出処理をしたシステムLSIを高位合成した場合、変数「a」から「d」への変数設定およびSUMからの値のポーリングが、中央処理装置から非同期に発生するため、クラスソース91が動作するすべての期間中に変数「a」から「d」に専用のメモリ又はレジスタを割り当てる。
これに対して、第3の実施形態の記憶コスト算出処理をしたシステムLSIを高位合成した場合、変数「a」から「d」への値設定のイベント「seta」から「setd」までの関数起動が中央処理装置から同時には発生しない。
したがって、システムLSIの中央処理装置は、変数「a」から「d」への値設定、SUM.addの呼び出し、addの実行がそれぞれ1サイクルで終了させることができ、変数「a」から「d」をメモリ又はレジスタで保持する時間が2サイクルで済む。
つまり、第2の実施形態では変数「a」から「d」に専用のメモリ又はレジスタを4個設けるのに対して、第3の実施形態では、変数「a」から「d」を割り当てるメモリ又はレジスタが2個で十分であるので、メモリ又はレジスタを2個分節約することができる。
このように記憶コストの少ない第3の実施形態に係るシステムLSIの設計支援システムで設計したLSIのソースコードを高位合成にかけた方が、メモリ又はレジスタの数が少ないチップ面積の小さな高位合成結果が得られる。
よって、LSIの設計下流工程から上流工程に戻って再設計を行う確率を十分低くすることができる。
さらに、第3の実施形態では、処理ST126から処理ST120へ復帰した記憶コスト算出処理で、すべてのシミュレーション結果を用いてクラスのメンバ変数の記憶コストを算出することができる。
例えば、動的解析部7は、例外的な処理を引き起こさせるテストデータをテストデータ記憶装置6から読み出し、異なるシミュレーションを再度実行するように構成する。
動的解析部7は、前回のシミュレーションを第1のシミュレーションとした場合、例外的な処理を起こすテストデータによるシミュレーションを第2のシミュレーションと定義する。
この場合、第1の実施形態で用いた式3の「1」から「i」回目までの重み「W」が事象の発生確率を決定するように構成し、第2のシミュレーションが発生する事象の発生確率を例えば、「0.1」に設定する。
テストデータ記憶装置6は、通常の処理を実行する第1のシミュレーションのテストデータも記録する。動的解析部7が第1のシミュレーションを実行し、さらに、第2のシミュレーションを実行して得られた変数の生存時間を動的解析結果8として、記憶コスト算出部9へ送信する。
記憶コスト算出部9が算出した記憶コストが「1200」だった場合、2回のシミュレーションによって算出される記憶コストは、通常の第1のシミュレーションの結果で得られる確率「0.9」に記憶コスト「588」を乗じた値を算出する。
次に、記憶コスト算出部9は、例外の事象が発生する第2のシミュレーションの結果が得られる確率「0.1」に記憶コスト「1200」を乗じた値を算出する。
さらに、記憶コスト算出部9は、第1及び第2のシミュレーションで得られた記憶コストを加算し「649.2」の記憶コストを総合評価結果として算出する。
このように、複数のテストデータによる複数のシミュレーション結果を合わせて記憶コストを定義することもできる。
第3の実施形態に係るモジュール設計支援システムを利用することにより、システムLSIのシミュレーションを実行し、モデルの記憶コストを容易に算出することができる。
また、記憶コストが小さいモデルを選択することにより、高位合成時のスケジューリング、リソースシェアリングの作業の自由度が大きくなり、高位合成によって割り当てられるメモリ又はレジスタの数をより少なくすることができる。
さらに、記憶コスト算出部9で算出した記憶コストは、モデル全体から算出されており、高位合成技術では対応が困難な、大規模なリソースの縮小を可能とし、システムLSIやシステム・オン・チップの設計全体でのメモリ又はレジスタ数の削減ができる。
このように、記憶コスト算出部9による記憶コストを算出することは、高位合成以前の設計工程における設計の良否を判断するための重要なメトリクスとなる。
さらにまた、高位合成以前の設計工程において複数の設計案が存在した場合に、記憶コスト算出部9が算出した記憶コストがより小さな設計案を選択することで、高位合成を行った際に、より小さな面積のシステムLSIやシステム・オン・チップを製造することができる。
また、動的解析部7は、変数の生存時間を算出する典型的なテストを行うテストデータと、例外的な処理が発生するテストデータをテストデータ記憶装置6から読み出し、複数の生存時間を算出して、重み付け平均をとる処理で複数テスト結果を動的解析結果8として、記憶コスト算出部9へ送信し記憶コスト算出部9が記憶コストを計算することで、例外的な処理を考慮した設計の良否を判断するメトリクスを得ることもできる。
なお、本発明の実施形態に記載された、作用及び効果は、本発明から生じる最も好適な作用及び効果を列挙したに過ぎず、本発明による作用及び効果は、本発明の実施の形態に記載されたものに限定されるものではない。
本発明の第1の実施の形態に係るシステムLSIの設計支援システムのブロック図。 第1の実施の形態に用いる静的解析結果のデータ構造図。 第1の実施形態に用いる動的解析結果のデータ構造図。 第1の実施の形態に用いる記憶コスト算出処理のフローチャート。 第1の実施の形態に用いる記憶コスト算出処理のフローチャート。 第1の実施の形態に用いる記憶コスト算出処理のフローチャート。 第1の実施の形態に用いる記憶コスト算出処理のフローチャート。 第1の実施の形態に用いる記憶コスト算出処理のフローチャート。 本発明の第2の実施形態の記憶コスト算出処理を示す図。 第2の実施の形態に用いる記憶コスト算出処理のフローチャート。 本発明の第3の実施形態の記憶コスト算出処理を示す図。 第3の実施の形態に用いる記憶コスト算出処理のフローチャート。
符号の説明
1 ソースコード記憶装置
2 静的解析部
3 静的解析結果
4 コンパイラ
5 実行コード記憶装置
6 テストデータ記憶装置
7 動的解析部
8 動的解析結果
9 記憶コスト算出部
10 制御装置
17 入出力部
31 コンフィグレーション情報記憶装置
102 設計支援システム

Claims (5)

  1. システムLSIのモジュール仕様及びモジュール動作を指定するソースコードを記憶するソースコード記憶装置と、
    前記ソースコード記憶装置からソースコードを読み出し、コンパイルして実行コードを実行コード記憶装置に記憶するコンパイラと、
    前記ソースコード記憶装置からソースコードを読み出し、記述されているメンバ変数のサイズを算出し、静的解析結果として出力する静的解析部と、
    前記システムLSIのテストデータを記憶するテストデータ記憶装置と、
    前記実行コード記憶装置から読み出した実行コードと、前記テストデータ記憶装置から読み出したテストデータに基づいて、システムLSIの動作シミュレーションを実行して、メンバ変数の総生存時間を算出し、動的解析結果として出力する動的解析部と、
    前記静的解析結果と前記動的解析結果に基づき、システムLSIの記憶コストを算出する記憶コスト算出部と、
    を備えることを特徴とするシステムLSIの設計支援システム。
  2. 前記ソースコード記憶装置、コンパイラ、静的解析部、動的解析部、及び記憶コスト算出部を制御し、システムLSIの記憶コストを算出するように制御する制御装置をさらに備えることを特徴とする請求項1に記載のシステムLSIの設計支援システム。
  3. 静的解析部、動的解析部、記憶コスト算出部、及び制御装置を備える設計支援システムを用いたシステムLSIの設計支援方法であって、
    前記記憶コスト算出部が、前記静的解析部からの静的解析結果と前記動的解析部からの動的解析結果に基づいて、前記静的解析結果として得られる前記システムLSIのモジュール仕様及びモジュール動作を指定するクラスのメンバ変数のサイズと、前記動的解析結果として得られる前記メンバ変数の生存時間の積から、前記クラスのメンバ変数の記憶コストを算出し、総記憶コストに加算するメンバ変数コスト算出工程と、
    前記記憶コスト算出部が、前記静的解析結果と前記動的解析結果に基づいて、前記静的解析結果として得られる前記システムLSIのモジュール仕様及びモジュール動作を指定するクラスのメンバ関数に定義されているすべての一時変数のサイズと、前記動的解析結果として得られる前記一時変数の総生存時間の積から前記一時変数の記憶コストを算出し、前記総記憶コストに加算する一時変数コスト算出工程と、
    前記記憶コスト算出部が前記総記憶コストを制御装置へ出力する総記憶コスト出力工程と、
    を備えることを特徴とするシステムLSIの設計支援方法。
  4. 前記メンバ変数コスト算出工程は、前記静的解析部が出力した関数の内部で定義される一時変数のサイズと前記動的解析結果で得られた関数の実行時間とを乗じることを特徴とする請求項3に記載のシステムLSIの設計支援方法。
  5. 前記メンバ変数コスト算出工程は、ソースコード記憶装置から読み出したオブジェクト指向言語で記述したソースコードを前記静的解析部が解析し出力した各メンバ関数の内部で定義される一時変数のサイズと前記動的解析結果から得られた各メンバ関数の実行時間とを乗じることを特徴とする請求項3に記載のシステムLSIの設計支援方法。
JP2004090327A 2004-03-25 2004-03-25 システムlsiの設計支援システム及び設計支援方法 Expired - Fee Related JP4237661B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004090327A JP4237661B2 (ja) 2004-03-25 2004-03-25 システムlsiの設計支援システム及び設計支援方法
US11/087,250 US7624389B2 (en) 2004-03-25 2005-03-23 Design evaluation system and design evaluation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004090327A JP4237661B2 (ja) 2004-03-25 2004-03-25 システムlsiの設計支援システム及び設計支援方法

Publications (2)

Publication Number Publication Date
JP2005275967A JP2005275967A (ja) 2005-10-06
JP4237661B2 true JP4237661B2 (ja) 2009-03-11

Family

ID=34991664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004090327A Expired - Fee Related JP4237661B2 (ja) 2004-03-25 2004-03-25 システムlsiの設計支援システム及び設計支援方法

Country Status (2)

Country Link
US (1) US7624389B2 (ja)
JP (1) JP4237661B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8881112B2 (en) * 2007-12-19 2014-11-04 International Business Machines Corporation Quality measure tool for a composite application
US8336030B1 (en) 2009-09-11 2012-12-18 The Mathworks, Inc. System and method for coding standard testing
US8719797B2 (en) * 2010-05-18 2014-05-06 Blackberry Limited System and method for debugging dynamically generated code of an application
US8386504B1 (en) 2010-07-06 2013-02-26 The Mathworks, Inc. System and method for file differencing with importance ranking
KR101476536B1 (ko) * 2013-05-27 2014-12-24 (주)스마일게이트엔터테인먼트 프로그램 검수 방법 및 시스템
US20140372988A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation Using a Static Analysis for Configuring a Follow-On Dynamic Analysis for the Evaluation of Program Code
US10353679B2 (en) 2014-10-31 2019-07-16 Microsoft Technology Licensing, Llc. Collecting profile data for modified global variables
JP6712934B2 (ja) * 2016-08-31 2020-06-24 株式会社日立ソリューションズ データ分析装置及びデータ分析方法
US11042465B1 (en) * 2020-09-02 2021-06-22 Coupang Corp. Systems and methods for analyzing application loading times

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816871B2 (ja) * 1990-12-07 1996-02-21 富士ゼロックス株式会社 プログラム翻訳装置およびプログラム翻訳方法
JPH113367A (ja) 1997-03-14 1999-01-06 Interuniv Micro Electron Centrum Vzw デジタルシステムのインプリメント可能な記述を生成する設計環境および方法
US6917971B1 (en) * 1999-12-23 2005-07-12 International Business Machines Corporation Method and apparatus for determining a response time for a segment in a client/server computing environment
US6434714B1 (en) * 1999-02-04 2002-08-13 Sun Microsystems, Inc. Methods, systems, and articles of manufacture for analyzing performance of application programs
JP3717144B2 (ja) * 1999-06-03 2005-11-16 シャープ株式会社 高位合成装置および高位合成方法並びに高位合成プログラムを記録した記録媒体
US6658652B1 (en) * 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
KR100613201B1 (ko) * 2000-08-28 2006-08-18 마이크로코넥트 엘엘씨 씨피유 사용량 측정 방법
JP2004192052A (ja) * 2002-12-06 2004-07-08 Matsushita Electric Ind Co Ltd ソフトウェア処理方法およびソフトウェア処理システム
US7340726B1 (en) * 2003-08-08 2008-03-04 Coverity, Inc. Systems and methods for performing static analysis on source code

Also Published As

Publication number Publication date
JP2005275967A (ja) 2005-10-06
US20050216894A1 (en) 2005-09-29
US7624389B2 (en) 2009-11-24

Similar Documents

Publication Publication Date Title
JP5209059B2 (ja) ソース・コード処理方法、システム、及びプログラム
US10943041B2 (en) Electronic system level parallel simulation method with detection of conflicts of access to a shared memory
US20090204380A1 (en) Performance evaluation simulation
JP2001202397A (ja) システム・オン・チップのアーキテクチャ設計支援システム及びアーキテクチャ生成方法
JP4237661B2 (ja) システムlsiの設計支援システム及び設計支援方法
Carreras et al. A co-design methodology based on formal specification and high-level estimation
JP5200675B2 (ja) シミュレーション装置,シミュレーション方法,シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
US20070271533A1 (en) System lsi verification system and system lsi verification method
Hierons et al. Parallel algorithms for generating harmonised state identifiers and characterising sets
Niemann et al. Formalizing TLM with communicating state machines
JP4293562B2 (ja) ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体
CN113296788A (zh) 指令调度方法、装置、设备、存储介质及程序产品
JPH05101141A (ja) 高位合成装置
Kumar et al. Multi-processor system-level synthesis for multiple applications on platform FPGA
US20090077357A1 (en) Method of Power Simulation and Power Simulator
JP6776914B2 (ja) 並列化方法、並列化ツール
JP5328447B2 (ja) 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体
US6968523B2 (en) Design method of logic circuit using data flow graph
US10241764B2 (en) Automatically transform pass-by-value semantics into pass-by-reference implementation
US7181720B2 (en) Process and device for circuit design by means of high-level synthesis
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
Khodabandeloo et al. Online test macro scheduling and assignment in mpsoc design
JP2009217720A (ja) プログラム生成装置およびプログラム生成方法
CN117313595B (zh) 用于功能验证的随机指令生成方法、设备及系统
Orhan et al. Designing reusable and run-time evolvable scheduling software

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060303

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080930

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081104

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

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

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

Free format text: PAYMENT UNTIL: 20111226

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees