(57)【特許請求の範囲】
【請求項１】
シミュレータによって回路の電力推定処理を行なうシステムの電力推定処理方法であって、
電力解析ツールによって、回路のＲＴＬ記述を解析し、電力モデル・ライブラリから生成された電力推定用のコードを含む電力モデル拡張ＲＴＬ記述を生成するステップと、
前記シミュレータによって、前記電力モデル拡張ＲＴＬ記述をシミュレートするステップとを有し、
前記電力モデル拡張ＲＴＬ記述のシミュレートにおいて、
前記ＲＴＬ記述を電力消費プロファイルに基づいてクラスタに分割するステップと、
前記クラスタの各々についてカスタマイズされたサンプリングを導出するステップと、
前記サンプリングに基づいて、シミュレータ上のＲＴＬ記述をシミュレートするステップを実行し、
前記クラスタへの分割とサンプリングの導出ステップが、
電力モデル拡張ＲＴＬ記述に含まれるすべてのＲＴＬコンポーネントについて、電力分布の平均と分散を計算するステップと、
平均−分散スキャタ・プロットを生成するステップと、
前記スキャタ・プロットに基づいてＲＴＬ記述を分割し、類似した電力特性を有するコンポーネントのクラスタを生成するステップと、
前記クラスタの各々についてサンプリング確率を決定するステップと、
クラスタを電力モデル拡張ＲＴＬ記述に組み込むステップを含むことを特徴とする電力推定処理方法。
【請求項２】
前記電力分布の平均と分散を計算するステップにおいて、
電力モデル拡張ＲＴＬ記述における全体的なシミュレーション実行よりも短いシミュレーション実行を完了し、
前記短いシミュレーション実行に基づいて電力プロファイルを生成し、
前記電力プロファイルから電力の平均と分散を計算することを特徴とする請求項１に記載の電力推定処理方法。
【請求項３】
前記分割が、
（１）ＲＴＬコンポーネントの考えられるすべてのペアの各々について、電力プロファイルにおける類似性を測定するための分離距離を、対応するＲＴＬコンポーネントに関する電力プロファイルの平均と分散から成るデータに基づいて計算するステップと、
（２）前記（１）の計算に基づいてクラスタの初期集合を生成し、クラスタ分離行列（ＣＳＭ）を形成するステップと、
（３）前記クラスタ分離行列（ＣＳＭ）に含まれるすべてのクラスタ・ペアについてクラスタ間の平均距離を、あるクラスタの１個のコンポーネントと他のクラスタのすべてのコンポーネントとの距離に基づいて計算するステップと、
（４）平均距離が最小の２個のクラスタをマージし、このマージを反映して前記クラスタ分離行列（ＣＳＭ）を更新するステップと、
（５）クラスタ・マージ・シーケンスを記録しながら、すべてのコンポーネントが１つのクラスタに入るまで前記（３）から前記（４）の処理を繰り返すステップと、
（６）クラスタ・マージ・シーケンスを使用して、クラスタの最終集合を生成するステップとによって実行される
ことを特徴とする請求項１に記載の電力推定処理方法。
【請求項４】
前記サンプリング確率は、サンプリングによる潜在的なエラーを最小化することによって決定されることを特徴とする請求項１に記載の電力推定処理方法。
【請求項５】
エラー計算時に消費電力に占める比率が比較的大きい第１のクラスタを、消費電力に占める比率が比較的小さい第２のクラスタよりも多く重み付けすることを特徴とする請求項３に記載の電力推定処理方法。
【請求項６】
シミュレータによって回路の電力推定処理を行なうシステムであって、
回路のＲＴＬ記述を解析し、電力モデル・ライブラリから生成された電力推定用のコードを含む電力モデル拡張ＲＴＬ記述を生成する電力解析ツールと、
前記電力モデル拡張ＲＴＬ記述をシミュレートする前記シミュレータとを備え、
前記前記電力モデル拡張ＲＴＬ記述のシミュレートにおいて、
前記ＲＴＬ記述を電力消費プロファイルに基づいてクラスタに分割し、
前記クラスタの各々についてカスタマイズされたサンプリングを導出し、
前記サンプリングに基づいて、シミュレータ上のＲＴＬ記述をシミュレートし、
前記クラスタへの分割とサンプリングの導出において、
電力モデル拡張ＲＴＬ記述に含まれるすべてのＲＴＬコンポーネントについて、電力分布の平均と分散を計算し、
平均−分散スキャタ・プロットを生成し、
前記スキャタ・プロットに基づいてＲＴＬ記述を分割し、類似した電力特性を有するコンポーネントのクラスタを生成し、
前記クラスタの各々についてサンプリング確率を決定し、
クラスタを電力モデル拡張ＲＴＬ記述に組み込む処理を行なうことを特徴とする回路の電力推定処理を行なうシステム。
【請求項７】
前記電力分布の平均と分散の計算において、
電力モデル拡張ＲＴＬ記述における全体的なシミュレーション実行よりも短いシミュレーション実行を完了し、
前記短いシミュレーション実行に基づいて電力プロファイルを生成し、
前記電力プロファイルから電力の平均と分散を計算することを特徴とする請求項６に記載の回路の電力推定処理を行なうシステム。
【請求項８】
前記分割が、
（１）ＲＴＬコンポーネントの考えられるすべてのペアの各々について、電力プロファイルにおける類似性を測定するための分離距離を、対応するＲＴＬコンポーネントに関する電力プロファイルの平均と分散から成るデータに基づいて計算する処理と、
（２）前記（１）の計算に基づいてクラスタの初期集合を生成し、クラスタ分離行列（ＣＳＭ）を形成する処理と、
（３）前記クラスタ分離行列（ＣＳＭ）に含まれるすべてのクラスタ・ペアについてクラスタ間の平均距離を、あるクラスタの１個のコンポーネントと他のクラスタのすべてのコンポーネントとの距離に基づいて計算する処理と、
（４）平均距離が最小の２個のクラスタをマージし、このマージを反映して前記クラスタ分離行列（ＣＳＭ）を更新する処理と、
（５）クラスタ・マージ・シーケンスを記録しながら、すべてのコンポーネントが１つのクラスタに入るまで前記（３）から前記（４）の処理を繰り返す処理と、
（６）クラスタ・マージ・シーケンスを使用して、クラスタの最終集合を生成する処理とによって実行される
ことを特徴とする請求項６に記載の回路の電力推定処理を行なうシステム。
【請求項９】
前記サンプリング確率は、サンプリングによる潜在的なエラーを最小化することによって決定されることを特徴とする請求項６に記載の回路の電力推定処理を行なうシステム。
【請求項１０】
エラー計算時に消費電力に占める比率が比較的大きい第１のクラスタを、消費電力に占める比率が比較的小さい第２のクラスタよりも多く重み付けすることを特徴とする請求項８に記載の回路の電力推定処理を行なうシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、RTL回路の電力推定を行うための、商業設計フローに関連する電力推定方法および装置について教示する。本発明では、特に、大規模なRTL回路設計向けの電力推定ツールの効率性とスケーラビリティを向上させる機能強化が提示される。
【０００２】
【従来の技術】
（参考文献）
以下の各論文は有益な背景情報を提供するものである。
【０００３】
【非特許文献１】
P. Landman, “High-level power estimation(高位電力推定)." in Proc. Int. Symp. Low Power Electronics & Design, pp.29-35, Aug. 1996.
【非特許文献２】
A. Raghunathan, N. K. Jha, and S. Dey, High-level Power Analysis and Optimization(高位電力解析および最適化). Kluwer Academic Publishers, Norwell, MA, 1998.
【非特許文献３】
E. Macii, M. Pedram, and F. Somenzi, “High-level power modeling, estimation, and optimization(高位電力モデリング、推定、および最適化)," in Proc. Design Automation Conf., pp. 504-511, June 1997.
【非特許文献４】
K.D.Muller-Glaser, K. Kirsch, and K. Neusinger, “Estimating essential design characteristics to support project planning for ASIC design management(ASIC設計管理プロジェクトのプランニングを支援するための本質的な設計特性の推定),” in Proc. Int. Conf. Computer-Aided Design, pp.148- 151, Nov. 1991.
【非特許文献５】
D. Liu and C. Svensson, “Power consumption estimation in CMOS VLSI chips(CMOS VLSIチップにおける電力消費量の推定),” IEEE J. Solid-State Circuits, vol. 29, pp. 663-670, June 1994.
【非特許文献６】
D. Marculescu, R. Marculescu, and M. Pedram, “Information theoretic measures for energy consumption at the register-transfer level(レジスタ・トランスファ・レベルのエネルギ消費量に関する情報理論的測度),” in Proc. Int. Symp. Low Power Design, pp.8l-86, Apr. 1995.
【非特許文献７】
F. N. Najm, “Towards a high-level power estimation capability(高位電力推定機能の実現に向けて),” in Proc. Int. Symp. Low Power Design, pp. 87-92, Apr. 1995.
【非特許文献８】
M. Nemani and F. Najm, “High-level area and power estimation for VLSI circuits(VLSI回路に関する高位面積および電力推定),” IEEE Trans. Computer-Aided Design, vol. 18, pp. 697-713, June 1999.
【非特許文献９】
C.H. Chen and C.Y. Tsui, “Towards the capability of providing power-area-delay tradeoff at the register transfer level(レジスタ・トランスファ・レベルにおける電力−面積−遅延のトレードオフ提供能力の実現に向けて),” in Proc. Int. Symp. Low Power Electronics & Design, pp. 24-29, Aug. 1998.
【非特許文献１０】
K.M. Buyuksahin and F.N Najm, “High-level power estimation with interconnect effects(相互接続効果を利用した高位電力推定),” in Proc. Int. Symp. Low Power Electronics & Design, pp. 197-202, Aug. 2001.
【非特許文献１１】
V. Krishna and N. Ranganathan, “A methodology for high level power estimation and exploration(高位電力推定および探求の方法),” in Proc. Great Lakes Symp. VLSI, pp. 420-425. Feb. 1998.
【非特許文献１２】
D.D. Gajski, N.D. Dutt, A.C.-H. Wu, and S.Y.-L. Lin, High-level Synthesis; Introduction to Chip and System Design(高位合成: チップおよびシステム設計入門). Kluwer Academic Publishers, Norwell, MA, 1992.
【非特許文献１３】
S.R Powell and P.M. Chau, “Estimating power dissipation of VLSI signal processing chips: The PFA technique(VLSI信号処理チップの電力散逸の推定: PFA手法),” in Proc. VLSI Signal Processing IV, pp.250-259, Sept. 1990.
【非特許文献１４】
J.W. Zhu, P. Agrawal, and D.D. Gajski, “RT level power analysis(RTレベル電力解析),” in Proc. Asia South Pacific Design Automation Conf., pp. 517-522, Jan. 2000では、RTLの各コンポーネント・タイプにつき1回の起動当たりの定電力を想定し、RTLプロファイリングにより起動頻度を決定している。
【０００４】
【非特許文献１５】
P. Landman and J.M. Rabaey, “Architectural power analysis: The dual bit type method(アーキテクチャ電力解析: デュアルビット・タイプの手法),” IEEE Trans. VLSI Systems, vol.3, pp.173-187, June 1995.
【非特許文献１６】
P.E. Landman and J.M. Rabaey, “Black-box capacitance models for architectural power analysis(アーキテクチャ電力解析のためのブラックボックス・キャパシタンス・モデル),” in Proc. Int. Wkshp. Low Power Design, pp.165-170, Apr. 1994.
【非特許文献１７】
P. Landman and J.M. Rabaey, ‘“Activity-sensitive architectural power analysis for the control path(制御パスのアクティビティ依存型アーキテクチャ電力解析),” in Proc. Int. Symp. Low Power Design, pp.93-98, Apr. 1995.
【非特許文献１８】
T. Sato, Y. Ootaguro, M. Nagamatsu, and H. Tago, “Evaluation of architecture-level power estimation for CMOS RISC processors(CMOS RISCプロセッサに関するアーキテクチャ・レベル電力推定の評価),” in Proc. Symp. Low Power Electronics. pp.44-45, Oct. 1995.
【非特許文献１９】
H.Mehta, R.M. Owens, and M.J. Irwin, “Energy characterization based on clustering(クラスタ化に基づくエネルギの特性付け),” in Proc. Design Automation Conf., pp.702-707, June 1996.
【非特許文献２０】
L. Benini, A. Bogliolo, M. Favalli, and G. DeMicheli, “Regression models for behavioral power estimation(振る舞いに基づく電力推定のための回帰モデル),” in Proc. Int. Wkshp. Power & Timing Modeling, Optimization, and Simulation (PATMOS), 1996.
【非特許文献２１】
A. Raghunathan, S.Dey, and N.K. Jha, “Register-transfer level estimation techniques for switching activity and power consumption(切り換えアクティビティおよび電力消費量に関するRTL推定手法),” in Proc. Int. Conf. Computer-Aided Design, pp.158-165, Nov. 1996.
【非特許文献２２】
C.T. Hsieh, Q.Wu, C.S. Ding, and M. Pedram, “Statistical sampling and regression analysis for RT-level power evaluation(RTレベル電力評価のための統計的サンプリングと回帰解析),” in Proc. Int. Conf. Computer-Aided Design, pp.583-588, Nov. 1996.
【非特許文献２３】
S. Gupta and F.N. Najm, “Power modeling for high level power estimation(高位電力推定のための電力モデリング),” IEEE Trans. VLSI Systems, vol.8, pp.18 -29, Feb. 2000.
【非特許文献２４】
S. Gupta and F.N. Najm, “Analytical models for RTL power estimation of combinational and sequential circuits(組み合わせ回路と逐次回路のRTL電力推定のための解析モデル),” IEEE Trans. Computer-Aided Design, vol.19, pp.808-814, July 2000.
【非特許文献２５】
Z. Chen and K. Roy, “A power macromodeling technique based on power sensitivity(電力センシティビティに基づく電力マクロモデリング手法),” in Proc. Design Automation Conf., pp.678-683, June 1998.
【非特許文献２６】
Q. Wu and Q. Qiu and M. Pedram and C.-S. Ding, “‘Cycle-accurate macro-models for RT-level power analysis(RTレベル電力解析のためのサイクル精度の高いマクロモデル),”IEEE Trans. VLSI Systems, vol.6, pp.520-528, Dec. 1998.
【非特許文献２７】
M. Barocci, L. Benini, A. Bogliolo, B. Ricco, and G. DeMicheli, “Lookup table power macro-models for behavioral library components(振る舞いライブラリ・コンポーネントのためのルックアップ・テーブル電力マクロモデル),” in Proc. IEEE Alessandro Volta Mem. Wkshp. on Low-Power Design, pp.173-181, Mar. 1999.
【非特許文献２８】
R. Corgnati and E. Macii and M. Poncino, “Clustered table-based macromodels for RTL power estimation(RTL電力推定のためのクラスタ化テーブルに基づくマクロモデル),” in Proc. Great Lakes Symp. VLSI, pp.354-357, Mar. 1999.
【非特許文献２９】
A. Bogliolo, L. Benini, and G. DeMicheli, “Characterization-free behavioral power modeling(特性付けが不要な振る舞い電力モデリング),” in Proc. Design Automation & Test Europe (DATE) Conf., pp.767-773, Mar. 1998.
【非特許文献３０】
R. Ferreira, A.M. Trullemans, J. Costa, and J. Monteiro, Probabilistic bottom-up RTL power estimation(確率的なボトムアップRTL電力推定),” in Proc. Int. Symp. Quality of Electronic Design (ISQED), pp.439-446, Mar. 2000.
【非特許文献３１】
A. Bogliolo, L. Benini, and G. DeMicheli, “Adaptive least mean square behavioral power modeling(適応型最小2乗平均振る舞い電力モデリング),” in Proc. European Design & Test Conf., pp.404-410, Mar. 1997.
【非特許文献３２】
A. Bogliolo and L. Benini, “Robust RTL power macromodels(堅牢なRTL電力マクロモデル),” IEEE Trans. VLSI Systems, vol.6, pp.578-581. Dec. 1998.
【非特許文献３３】
D. Bruni. G. Olivieri, A. Bogliolo, and L. Benini, “Delay-sensitive power estimation at the register-transfer level(RTLにおける遅延依存型電力推定), in Proc. Int. Conf. Electronics, Circuits, and Systems (ICECS), pp.1031-1034, Sept. 2001.
【非特許文献３４】
A. Bogliolo and R. Corgnati and E. Macii and M. Poncino, ‘“Parameterized RTL power models for soft macros(ソフト・マクロのためのパラメータ化RTL電力モデル),” IEEE Trans. VLSI Systems, vol.9, pp.880-887, Dec. 2001.
【非特許文献３５】
R.P. Llopis and F. Goossens, “The Petrol approach to high-level power estimation(高位電力推定のPetrol手法),” in Proc. Int. Symp. Low Power Electronics & Design, pp. 130-132, Aug. 1998.
【非特許文献３６】
D.I. Cheng, K.-T. Cheng, D.C. Wang, and M. Marek-Sadowska, “A new hybrid methodology for power estimation(新しいハイブリッド電力推定方法),” in Proc. Design Automation Conf., pp.439-444, June 1996.
【非特許文献３７】
PowerTheater, Sequence Design Inc. (http://www.sequencedesign.com).
【非特許文献３８】
PowerChecker, BullDAST s.r.l. (http://www.bulldast.com).
【非特許文献３９】
K. Wakabayashi, “C-Based High-Level Synthesis System, “CYBER”-Design Experience-(Cベース高位合成システム“CYBER”における設計経験),” NEC Research and Development, vol.41, pp.264-268, July 2000.
【非特許文献４０】
W.N. Venables and B.D. Ripley, Modern Applied Statistics with S-PLUS(S-PLUSを使用した近代応用統計学). Springer-Verlag, 1998.
【非特許文献４１】
Nachiketh Potlapally et. al., Accurate macro-modeling techniques for complex RTL components(複雑なRTLコンポーネントのための高精度なマクロモデリング手法)," in Proc. Int. Conf. VLSI Design, Jan. 2001.
【非特許文献４２】
A.K. Jain and R.C. Dubes, Algorithms for Clustering Data(クラスタ化データのためのアルゴリズム). Prentice Hall, Englewood Cliffs. NJ, 1988.
【非特許文献４３】
A.K. Jain, M.N. Murty, and P.J. Flynn, “Data Clustering: A Review(データのクラスタ化: レビュー),” ACM Computing Surveys, vol.31, pp.264-323, September 1999.
【非特許文献４４】
M.N. Murty and G.Krishna, "A Computationally Efficient Technique for Data Clustering(データ・クラスタ化のための計算的に高効率な手法),” Pattern Recognition, vol 12, pp. 153-158, 1980.
【非特許文献４５】
R. Burch, F.N. Najm, P. Yang, and T. Trick, "A Monte Carlo approach for power estimation(電力推定のためのモンテカルロ手法),” IEEE Trans. VLSl Systems, vol.1, pp.63-71, Mar. 1993.
【非特許文献４６】
B.A. Murtagh and M.A. Saunders, “Large-scale Linearly Constrained Optimization(大規模な線形制約条件付き最適化),” Mathematical Programming, vol 14, no. 1, pp.4I-72, 1978.
【非特許文献４７】
AMPL; A Modeling Language For Mathematical Programming(AMPL: 数学的プログラミングのためのモデリング言語)(http://www.ampl.com)
【非特許文献４８】
Excel Solver(Excelソルバー)(http://www.solver.com).
【非特許文献４９】
CB-C9 Family VX/VM Type 0.35um CMOS CBIC Users Manual(CB-C9ファミリVX/VMタイプ0.35um CMOS CBICユーザ・マニュアル). NEC Electronics, lnc., Sept. 1998
【非特許文献５０】
ModelSim 5.3 (http://www.model.com).
【非特許文献５１】
OpenCAD V5 Users Manual(OpenCAD V5ユーザ・マニュアル), NEC Electronics, Inc., Sep 1997
【非特許文献５２】
Design Compiler（設計コンパイラ）, Synopsys Inc. (http://www.synopsys.com)
【０００５】
（序文）
ASIC設計フローに真のRTL(レジスタ・トランスファ・レベル)サインオフ機能を組み込む動きが進展し、システム・レベルの設計手法が相次いで出現するなか、RTレベルで設計の特性を評価するためのツールを採用する事例が増加している。
【０００６】
RTLサインオフ・フローでは、非常に重要な意思決定(例えば、ASICベンダが顧客に提供するコスト・モデルやデバイスの性能保証の決定、使用するパッケージングの決定など)は、設計の性能、電力消費量、面積、テスト容易性を推定するRTL推定ツールを使用して行われている。そのためRTL推定テクノロジが展開されるサイトは増えてはいるものの、「研究は活発だが実用化はあまり進んでいない」という現段階では、未だ展開には多数の重要な課題が残されている。新世代のRTL推定ツールは、既存の設計フローの様々な局面において、効率性(チップ全体への適用を可能にするため)、精度(サインオフに使用するため)、使いやすさの各特性に対する非常に厳しい要求に応える必要がある。しかし、回路の大型化、ディープ・サブミクロン・テクノロジの登場による効果の複合化(相互接続がタイミングと消費電力に及ぼす影響、タイミングと消費電力の相互依存など)という要素も絡むなかで、高効率でしかも高精度なRTL推定を行うことは不可能とさえ思えるほどに困難である。
【０００７】
本発明は、大規模な設計を対象とする高効率なRTL電力推定の問題を中心に取り組むものである。RTL電力推定は広く研究されている主題であり、すでにRTL電力推定の基本的な手法がいくつか提唱されている（非特許文献１，２，３）。提唱されたこれらの概念は汎用的であり、大型クラスの電力推定手法に適用することができる。
【０００８】
【発明が解決しようとする課題】
ここでは、従来のRTL電力推定手法について考察する。RTL電力推定手法を分類するには、提供される機能に基づく方法と、基礎を成す手法に基づく方法とがある。ユーザの観点からは効率性(大規模な設計を処理する能力)と精度(相対精度と絶対精度)がきわめて重要なのは明らかであるが、RTL電力推定ツールが厳密には設計フローのどの局面で使用されるかによっては、得られる電力推定値の構造的細分性(設計全体か、それとも階層的またはコンポーネント別か)や、時相的な分解方法(総電力または平均電力か、それともサイクル単位の電力推定値か、など)も重要となる可能性がある。
【０００９】
基礎を成す手法に基づく分類の場合、RTL電力推定手法は、解析的手法、特性付けに基づくマクロモデリング、推定に基づく高速合成という3つのカテゴリに大別することができる。ただし、同一の設計でも部位(算術的マクロブロック、制御論理、メモリ、クロック・ネットワーク、I/Oなど)によって最も適した推定手法が異なるので、注意を要する。
【００１０】
解析的な電力モデリング手法は、機能仕様の情報をほとんど使わずに、電力消費量と設計複雑性の測度とを相関させる方法である。これらの手法は、設計フローの初期段階に有効であり、絶対精度ではなく相対精度を対象とする。
【００１１】
例えば、非特許文献４のチップ推定システムは、推定ゲート数、平均切り換えエネルギ、1ゲート当たりのロード・キャパシタンス、クロック周波数、および平均切り換えアクティビティ係数に基づいて、1つの論理ブロックで消費される電力を計算する。各パラメータの推定値はユーザによって供給されるため、ユーザの判断に大きく依存することになる。
【００１２】
こうした手法は概してエラーが発生しやすいが、複雑性のパラメータを推定しやすいチップ部位(メモリやクロック・ネットワークなど（非特許文献５）)では高精度を実現できる可能性がある。解析的手法のクラスは「情報論理的手法」と呼ばれ、入出力信号のエントロピ（平均情報量）に基づいて、論理ブロックの平均アクティビティ係数とキャパシタンス係数を推定する（非特許文献５，７，８）。これらの手法の機能強化や変形の例としては、論理合成時に実行された面積−遅延−電力トレードオフの影響の考慮（非特許文献９）、相互接続における消費電力の予測（非特許文献１０）、決定理論の使用（非特許文献１１）が挙げられる。
【００１３】
アーキテクチャ・レベル、すなわちRTLの設計は、ランダム論理に加えて、算術演算子、マルチプレクサ、レジスタ、ベクトル論理演算子といった様々なマクロブロックで構成されると考えることができる。特性付けに基づくマクロモデリングの概念は、下位レベルの実装を取得して特性付けを行うというものである(下位レベルの実装は、「ハード」または「ファーム」マクロブロックの場合にはすでに取得されて利用可能なことがあり、「ソフト」マクロブロックの場合には合成を要することがある)。
【００１４】
様々な入力シーケンス(「トレーニング・シーケンス」と呼ばれる)におけるマクロブロックの電力消費量の推定は、通常、ゲート・レベルかトランジスタ・レベルのツールを使用して実行される。続いて、このデータに基づいて、ブロックの電力消費量を各種パラメータ(ブロック入出力の信号統計など)の関数として記述するマクロモデル、すなわち「ブラックボックス」モデル、が構築される。特性付けに基づくマクロモデルは、ボトムアップ方式の設計手法（非特許文献１２）に最も適している。こうした手法の例としては、コンポーネント・ライブラリからハードまたはファーム・マクロブロックのインスタンスを生成できる、高位合成に基づく設計フローが挙げられる。電力マクロモデルの構築に使用される特性付けプロセスは、複数の設計に再利用することのできるライブラリ開発プロセスの一部と考えることができる。
【００１５】
初期のアーキテクチャ・レベル電力推定手法の1つ、PFA手法（非特許文献１３）では、実装をランダム入力シーケンスでシミュレートして得られる定電力値を使って、マクロブロックの特性付けを行う。非特許文献１４では、コントローラ−データパス回路に対してこの種のモデルを使用した研究が論じられている。また、非特許文献１５のデュアルビット・タイプ(DBT)法では、最初に、電力が入力信号統計に依存する問題の解決が試みられる。さらに、アクティビティ依存型電力モデル（非特許文献１５〜２６）では、マクロブロックの境界における信号統計の関数として変動する電力消費量のモデルを構築し、それを利用して上記の欠点が緩和される。この関数は、閉形式の方程式、ルックアップ・テーブルなど数種類の方法で表すことができる。
【００１６】
マクロブロックのインスタンス生成を含む設計を与えられた場合に最も一般的に使用されるのは、RTLシミュレーションを使ってマクロブロックの様々な境界における信号統計を決定し、マクロブロックの各インスタンスに関する信号統計を対応する電力モデルに供給して、そのインスタンスで消費された電力を計算する方法である。
【００１７】
特性付けに基づくマクロモデルの精度は、下位実装を使ってマクロモデルを構築することで実現される。これにより、合成プロセス、セル・ライブラリ、ターゲット・テクノロジの影響が捕捉される。ただし、ここでは解決しなければならない問題がいくつかある。第一の問題は、効率性への配慮から、マクロモデルの構築に使用されるトレーニング・シーケンスをしらみ潰しに実行できないことである。ほとんどの場合、コンポーネントが稼働することとなる環境に関する情報がほとんどないまま初っぱなから特性付けが実行されるので、トレーニング・シーケンスは実世界の入力シーケンスを十分に表していない可能性がある。
【００１８】
そのため、マクロモデルに、特性付けのプロセスで使用されたトレーニング・シーケンスに起因する偏りが生じがちである。第二の問題は、事前に決定された機能テンプレートやモデルに特性付けの実験結果が組み込まれるため、マクロモデルによって不正確な要素が導入され、内挿または外挿によるエラー(フィッティング・エラー)が生じやすいことである。特性付けには多大な計算労力が伴うことがあり、特にRTLコンポーネントの大規模なライブラリを対象とする場合にこの傾向が顕著となる。
【００１９】
近年、上記の問題を解決するためにいくつかの手法が提唱された。非特許文献２７，２８では、ルックアップ・テーブルをベースとする手法の精度と効率性を向上させる方法が示されている。非特許文献２９，３０では、トレーニング・パターンを生成せずに電力マクロモデルを構築する記号的手法の開発が報告されている。
【００２０】
これらの手法により、特性付けに基づくマクロモデリングにおける上記の「偏り」の問題は解消される。同じ問題に対処するためのもう1つの解決策は、設計全体のシミュレーションと同時にマクロモデル構築プロセスを実行することにより、設計に組み込まれた各コンポーネントの特性付けを「局所」で実行する方法である（非特許文献３１）。(入出力ポイントの値に加えて)コンポーネントの選択された内部信号をマクロモデル内の変数として考慮することにより、マクロモデルの堅牢性と精度を向上させることができる（非特許文献３２）。非特許文献２１，３３では、マクロモデリングに基づくRTL電力推定時にグリッチの影響を考慮する手法が調査された。RTレベルのマクロモデルは、ゲート・レベルかトランジスタ・レベルのネットリストから構築されるのが最も一般的なので、通常は、ファームまたはハード・マクロの形式をとるRTLコンポーネントに適用される。ビット幅のパラメータ化も可能なソフト・マクロの場合は、特定のテクノロジとビット幅に関する基本マクロを開発し、それをスケーリングして必要な変形を得ることが可能である（非特許文献３４）。これにより、マクロモデルの移植時に、新たなテクノロジまたは合成フローを反映するために必要となる再特性付けの労力が軽減される。
【００２１】
「高速合成」とは、実際の論理合成とテクノロジ・マッピングのプロセスよりもはるかに高速な、RTL記述の限定的な合成を実行するプロセスを意味する。設計は、最も一般的には少数の基本セルから成る「メタライブラリ」(すべての基本セルを網羅した標準セル・ライブラリよりもはるかに小さい)にマッピングされる。その結果得られるネットリストは、シミュレーション・ベースの手法や確率的な手法を使用した電力推定に使用される。非特許文献３５では、高速合成手法は、様々な関数を電力基本命令の集合に分解し、シミュレーション時に各基本命令の入出力アクティビティを監視するように適応されている。
【００２２】
制御論理解析手法は、設計の制御論理またはランダム論理の部位を対象とする。アクティビティに基づく制御(ABC)モデル（非特許文献１７）は、コントローラ電力推定手法の例である。制御論理で消費された電力を計算することに加えて、それが設計の他の部分の電力消費量に及ぼす影響を考慮することもきわめて重要である。非特許文献３６では、制御信号間の空間と時相の相関関係を考慮することの重要性が実証された。また、制御信号におけるグリッチング・アクティビティは設計の他の部分の電力消費量に大きな影響を及ぼすので、これを考慮に入れることも重要である（非特許文献２１）。
【００２３】
上記のテクノロジのいくつかを組み込んだ市販のRTL電力推定ツールが製品として注目を集め始めており、採用される事例が増えてきている（非特許文献３７，３８）。
【００２４】
【課題を解決するための手段】
上記で述べた利点を実現するため、本発明においては、シミュレータによって回路の電力推定処理を行なうシステムの電力推定処理方法であって、電力解析ツールによって、回路のＲＴＬ記述を解析し、電力モデル・ライブラリから生成された電力推定用のコードを含む電力モデル拡張ＲＴＬ記述を生成するステップと、前記シミュレータによって、前記電力モデル拡張ＲＴＬ記述をシミュレートするステップとを有し、前記電力モデル拡張ＲＴＬ記述のシミュレートにおいて、前記ＲＴＬ記述を電力消費プロファイルに基づいてクラスタに分割するステップと、前記クラスタの各々についてカスタマイズされたサンプリングを導出するステップと、前記サンプリングに基づいて、シミュレータ上のＲＴＬ記述をシミュレートするステップを実行し、前記クラスタへの分割とサンプリングの導出ステップが、電力モデル拡張ＲＴＬ記述に含まれるすべてのＲＴＬコンポーネントについて、電力分布の平均と分散を計算するステップと、平均−分散スキャタ・プロットを生成するステップと、前記スキャタ・プロットに基づいてＲＴＬ記述を分割し、類似した電力特性を有するコンポーネントのクラスタを生成するステップと、前記クラスタの各々についてサンプリング確率を決定するステップと、クラスタを電力モデル拡張ＲＴＬ記述に組み込むステップを含むことを特徴とする。
【００２５】
本発明の他の態様は、前記電力分布の平均と分散を計算するステップにおいて、電力モデル拡張ＲＴＬ記述における全体的なシミュレーション実行よりも短いシミュレーション実行を完了し、前記短いシミュレーション実行に基づいて電力プロファイルを生成し、前記電力プロファイルから電力の平均と分散を計算することを特徴とする。
【００２６】
本発明のさらに他の態様は、前記分割が、（１）ＲＴＬコンポーネントの考えられるすべてのペアの各々について、電力プロファイルにおける類似性を測定するための分離距離を、対応するＲＴＬコンポーネントに関する電力プロファイルの平均と分散から成るデータに基づいて計算するステップと、（２）前記（１）の計算に基づいてクラスタの初期集合を生成し、クラスタ分離行列（ＣＳＭ）を形成するステップと、（３）前記クラスタ分離行列（ＣＳＭ）に含まれるすべてのクラスタ・ペアについてクラスタ間の平均距離を、あるクラスタの１個のコンポーネントと他のクラスタのすべてのコンポーネントとの距離に基づいて計算するステップと、（４）平均距離が最小の２個のクラスタをマージし、このマージを反映して前記クラスタ分離行列（ＣＳＭ）を更新するステップと、（５）クラスタ・マージ・シーケンスを記録しながら、すべてのコンポーネントが１つのクラスタに入るまで前記（３）から前記（４）の処理を繰り返すステップと、（６）クラスタ・マージ・シーケンスを使用して、クラスタの最終集合を生成するステップとによって実行されることを特徴とする。
【００２７】
【発明の実施の形態】
（Ａ）本発明の骨子
本発明の特徴は後述する（Ｂ）以降の項において実装に関連して詳細に説明した加速手法にあるため、この項では背景情報の説明のみにとどめる。
【００２８】
図1は、RTL電力推定手法の概要を示す。図1(a)は、各テクノロジについて1回だけ実行される、電力モデル・ライブラリを生成するための特性付けのフロー・チャートである。特性付けは、以下のステップから成る。
【００２９】
RTLコンポーネントの包括的なライブラリが、合成可能な各コンポーネントのRTL記述を使って構築される。ほとんどのRTLベース設計フローでは、このようなライブラリがすでに採用されている(例: Synopsys Designware)。採用されていない場合は、サポートされるHDLの合成可能な部分集合に含まれるすべての固有演算子を列挙することによって構築できる。RTLライブラリには、RTLレベルとゲート・レベルが混在する設計をサポートするため、広範な論理ゲートも含まれる。
【００３０】
各コンポーネントは、設計フローにおいて複数の方法で実装される可能性がある。そのため、各コンポーネントは、それぞれの方法を反映して複数の合成制約条件や合成条件のもとで合成され、レイアウトされる。同一のコンポーネント(例: 16ビット加算器)でも実装の方法によって電力消費量が大きく異なる可能性があるため、多様な内容の合成条件集合を考慮することが重要である。理論上では、実装の変形数(遅延および面積の制約条件、合成に要する労力、入力信号スルー・レート、外部出力負荷、レイアウトのアスペクト比などの違いによる変形)は非常に大きくなりうるが、十分な多様性を持ち、かつ「実装空間」全体をカバーする妥当な部分集合を考慮することで十分に対処できる。
【００３１】
本発明の研究では、広範な実験を行った後、合成条件を決定するパラメータとして、速度、出力キャパシティブ負荷、入力スルー・レートの3つを考慮することとした。手順としては、まず、各RTLコンポーネントについて各パラメータの許容値の範囲を定義する。許容値の範囲は、合成条件の有限集合を得られるように離散化する。例えば、速度のパラメータは、低速(面積が最適化された実装の遅延)、高速(想定される最高速度の実装)、中速(低速実装と高速実装の遅延の平均)の3ポイントに離散化できる。各パラメータで使用される離散的値の数は、極値に対応する実装間の電力消費量の分散に基づいて、経験的に決定する。
【００３２】
レイアウト後のネットリスト(抽出された寄生値の注釈が付いたトランジスタ・レベルまたはゲート・レベルのネットリスト)に対して電力特性付けを実行し、消費電力を関連の入力統計に関連付ける電力マクロモデルを生成する。疑似ランダム入力パターンのもとでネットリストをシミュレートし、各入力ベクトル・ペアの電力消費量を統計的回帰ツール（非特許文献４０）に供給して、マクロモデルを生成する。この推定方法はサイクル単位の電力推定をサポートする必要があるので、サイクル精度の高いマクロモデリング手法（非特許文献２０，２６，４１）を採用する。
【００３３】
全ライブラリ・コンポーネントの電力マクロモデルの集合を、複数のハードウェア記述言語(VHDL、Verilog、SystemCなど)で記述された、シミュレート可能な電力モデル・ライブラリに変換する。これらのシミュレート可能な電力モデル・ライブラリにより、下記のように、設計のRTLシミュレーションと並行して電力推定を実行することが可能になる。
【００３４】
ターゲット・テクノロジの特性付けが完了した後、各設計の電力推定プロセスは次のように進行する。最初に、設計に対してRTレベルの設計プランニングが実行される。これは、RTL HDLから構造的表現を推論し、設計をRTLライブラリにマッピングして、グローバルな相互接続の正確な推定値を得るためのフロアプランを導き出すプロセスである。RTL設計プランニング・ツールに与えられるライブラリは、特性付けで使用されるRTLライブラリに対応するもので、これには特性付けで使用された合成条件に対応する各コンポーネントの複数の実装が含まれる。
【００３５】
RTL設計プランニング・ステップの実行は、相対精度だけが必要なときには任意であるが、サインオフ強度の精度を得ようとする場合は必要となる。これは特に、ディープ・サブミクロン・テクノロジにおいて必要とされる。
【００３６】
RTL設計プランニングの出力は、RTLライブラリから取得した相互接続のブロックと、内部ブロック相互接続の推定値で構成されるマクロ・ネットリストである。マクロ・ネットリストとオリジナルのHDLは、電力解析ツールへの入力を形成する。これは、設計を解析して電力モデル・ライブラリから電力モデルの集合を推論し、電力推定用として生成されたコードを含む拡張RTL HDL記述を出力するツールである。
【００３７】
本発明の方法の重要な特徴は、シミュレート可能な電力モデルを使用することである。これは設計のHDL記述と同時にシミュレートされる。この方法は、機能シミュレーションから値トレース・ファイルを生成し、このファイルを後処理して電力推定を実行する通常の方法とは大きく異なる。
【００３８】
本発明の方法の主な利点は、大規模設計や長いテストベンチの場合にトレースが爆発的に増えて不能になる問題を回避できることである。拡張RTL記述のサイズはオリジナルのRTL記述よりも大きいため、この利点はシミュレーションのコンパイル時間がやや増大するという犠牲を払って実現される。ただし、この犠牲は十分に許容できるものであり、特に大規模設計においてはきわめて有用である。
【００３９】
シミュレート可能な電力モデルを使用する方法は、シミュレータの種類を問わず適用でき、またどんなハードウェア記述言語にも拡張できる。実用面では、ツールの開発とメンテナンスに要する労力も最小限となるため、大規模設計での精度と効率性の向上に精力を集中できるという利点がある。
【００４０】
電力推定機能を付加した拡張RTL記述は、(設計の振る舞いと構造を指定するオリジナルのコードに加えて)以下のコンポーネントで構成される。
【００４１】
設計の各基本(リーフ)コンポーネントにつき、電力モデル・ライブラリからインスタンスが生成される電力モデル。各電力モデルは、関連するコンポーネントの入出力に対応する信号を観察し、そのコンポーネント内で消費された電力を表す変数を生成する。電力モデルの実行は、Power_strobe信号によってトリガされる。下記で説明するように、これにより電力推定に伴う計算労力と、電力推定値の精度を制御できるようになる。電力消費量は現在と過去の入力値の関数なので、これは電力モデルが電力推定の実行に必要な履歴を記憶する内部待ち行列を備えることを意味する。組み合わせコンポーネントの場合は、コンポーネントのI/O信号の現在と過去の値を記憶するだけで十分である。逐次コンポーネントの場合は、内部状態も記憶しなければならないこともある。（Ｂ）で述べるように、電力モデル内に備えられるこのストレージは、電力推定に要するシミュレーションのオーバヘッドを減少するために利用することができる。
【００４２】
設計内のRTLコンポーネントの電力消費量を集計する電力集約コード。この加算プロセスは、設計の階層に対応して、階層的な方法で実行される。これにより、設計全体に加えて、インスタンスごとの電力消費量も知ることができる。さらに、1つの電力推定値を、機能ユニット、レジスタ、マルチプレクサ、ランダム論理に対応する複数の部分に分割することも可能である。この詳細なフィードバックにより、設計者は電力のボトルネックを容易に特定し、回路を再設計して電力消費量を減少させることができる。
【００４３】
電力推定計算を起動するコード。このコードは、設計内の各コンポーネントに関連する電力モデルをトリガするPower_strobe信号と、電力加算コードを起動する信号を生成する。サイクル単位の精度が必要な場合、Power_strobe信号は通常、ローカル・クロック信号から生成されるか、コンポーネントへの入力信号の変動を監視することによって生成される。（Ｂ）で述べるように、電力推定コードを起動する信号を賢明に制御することにより、精度の損失を最小限に抑えながら電力推定の大幅なスピードアップを実現することができる。
【００４４】
図2に、拡張RTL記述(言語はVHDL)の例を示す。これには、電力モデルのインスタンス生成、電力集約コード、電力推定計算を起動するコードなど、電力推定を容易にするためになされた変更が示されている。説明のため、図3にも電力モデル(言語はVHDL)のサンプルを示す。電力モデルの内容は、ビット幅推論コード、内部待ち行列を管理するコード、マクロモデル計算を実行するコード、に分割することができる。
【００４５】
（Ｂ）−１（概要）
本発明による手法を開発した主な目的は、(i)RTレベルのサインオフ時に、電力推定、パッケージの選択、電力グリッドの設計、IRドロップ依存型タイミング解析を実行可能にすること、および(ii)振る舞いおよびアーキテクチャ設計段階において電力探索を実行可能にすること、の2点である。上記2点の適用業務をサポートするためには、RTLサインオフでは「大規模設計に対応できる良好な絶対精度と十分なパフォーマンス」、アーキテクチャ探索では「設計代替案の反復評価に対応できる相対精度とハイ・パフォーマンス」、というやや異なる目的を追求する必要があるが、賢明に構成されたツール・フローがあればいずれの適用業務にも対処でき、個別ツールの開発とメンテナンスによるオーバヘッドが発生しない。また、本発明による手法が、純粋に構造的な記述、純粋に機能的な記述、その両方の組み合わせを含む設計といった広範なRTL設計スタイルに対応できることは、特筆に値する。
【００４６】
例えば、複数のゲート付きクロックを備える設計のほか、I/Oパッド、クロック・バッファー、トライステート・バスなどの素子もサポートされる。また、大量のランダム論理を含む設計や、RTLレベルとゲート・レベルが混在する設計にも対処することができる。さらに、平均電力推定だけでなく、階層的で構造的な電力レポート(コンポーネント単位)や、最大でサイクル単位にまで細分化された電力−時間プロファイルもサポートされる。
【００４７】
本発明では、RTL電力推定の効率性を大幅に高めるための一連の手法が提供される。電力推定の実行時にこれらの手法を使用すると、大規模設計においても十分な成果を得られる。
【００４８】
RTL電力推定方法は、Cベースの設計フローとRTLベースの設計フローの両方に適用できる。この方法は、(i)RTLコンポーネントのライブラリの自動特性付け、(ii)各RTLコンポーネントに関するシミュレート可能なマクロモデルの生成、(iii)設計内の各基本コンポーネントに関するシミュレート可能なマクロモデルのインスタンス生成による、RTL設計の機能的記述の機能強化、および(iv)拡張RTLのシミュレーション、をベースとする。このフローを実行したところ、十分な精度(ゲート・レベルの平均電力推定値の5〜10%)を達成することが確認された。ただし、大規模設計での効率性については改善の余地がかなりあることが確認されたため(所要時間が機能的RTLシミュレーションの最大60倍)、本発明による手法を開発するに至った。
【００４９】
本発明による加速手法を開発した理由は、RTL電力推定に伴う計算労力の問題を抱える事例が広範に見られたからである。この問題とは、いくつかの計算上のボトルネックにより、シミュレーション・オーバヘッドが大きくなる、というものである。本発明では、この問題は、拡張RTL記述をシミュレータに適した内容に変更するためのいくつかの手法を開発することにより克服される。また、計算とストレージとのトレードオフによって、メモリ使用量の増大という犠牲を払いつつ計算量が削減される。さらに、「分割サンプリング」と呼ばれる、統計的サンプリングの新規な変形が開示される。分割サンプリングは、電力消費特性に基づいて回路を複数のクラスタまたはパーティションに分割し、各パーティションに応じてカスタマイズされたサンプリング戦略を導出する。分割サンプリングを実行すると、回路の異なる部位への計算労力の割り当てが最適化される。具体的には、総電力における寄与度の大きい部位と、推定が困難なサブ回路に多くの時間が費やされ、電力消費量を推定しやすいサブ回路に少ない時間が費やされる。
【００５０】
提唱する手法の有効性を実証するため、商業的なRTL電力推定フローにおける広範な実験結果が提示される。これらの実験では、大規模な工業用回路において、CPU時間が大幅に改善されることが実証された(最大93%)。精度の損失は、無視できるレベルであった。さらに、提唱する手法では、従来の手法に比較して、統計的サンプリングやテストベンチの削減といったCPU時間と精度とのトレードオフの効果が高まることが実証された。最後に、提唱する加速手法は、総電力消費量を正確に推定できることに加えて、局部(個別のサブ回路またはRTLコンポーネント)における電力推定の精度も確保されることが確認された。
【００５１】
（Ｂ）−２（加速手法の詳細）
本項では、RTL電力推定を加速させる一連の手法の実施例について説明する。（概要）の項では、これらの手法の概要を簡単に示し、（詳細）の項では各手法を例を使用して詳細に説明する。
【００５２】
（概要）
シミュレーション・ベースの電力推定を行う場合、一定のHDLコンパイルおよびシミュレーション環境においては、電力モデル拡張HDL中のシミュレーション負担の大きい要素の最適化に加速努力を集中させる必要がある。本発明で提案する最適化は、下記に示す3つのカテゴリに大別される。
【００５３】
a)HDLを意識した最適化:
これらの最適化は、HDLのコンパイラとシミュレータに不必要な負担を掛けるHDLコードに代えて実行される。1回のシミュレーションは、基本的には、各イベントについてトリガされたプロセスの検出、その評価、状態の更新、新たなイベントのスケジューリング、という4つのタスクで構成される。そのため、電力推定に関連するプロセスによりシミュレータに掛かる負荷が大きいほど、全体的な推定時間が長くなる。したがって、HDLを意識した最適化の基本戦略は、電力計算においてシミュレーション負担の大きい要素を特定し、シミュレーション負担の小さい要素に置換する(または、除去する)ことによってその数を減少させる、という内容になる。このプロセスでは、電力推定の精度の維持が保証されなければならない。
【００５４】
b)遅延計算
任意のサイクルにおける設計の電力消費量を計算する場合は、各RTLコンポーネントの入力で発生するビット・レベルの切り換えアクティビティを記録するタスクと、そのサイクル内で電力モデルを起動して電力を計算するタスクを実行する必要がある。平均電力推定値を得る場合は、コンポーネントへの入力値を後の任意のサイクルまで待ち行列に入れることにより、電力モデルの起動がそのサイクルまで延期される。つまり、入力を待ち行列に入れるためにメモリ使用量が増えるという犠牲を払って、電力モデルの起動回数が減少され、ひいては計算量が削減されるわけである。
【００５５】
c)分割統計的サンプリング
統計的サンプリング手法は、「意味のある平均電力推定値を得るためには、1回のシミュレーションに含まれる電力サンプルのごく一部を処理するので十分である」という前提に立つ。したがって、各RTLコンポーネントについて電力サンプルを取得する回数を減らすことにより、電力推定の効率性を高めることができる。本発明において提示される分割サンプリング手法は、サンプリングの回数を他に比較して少なくできるRTLコンポーネントをシステマティックに特定するための方法を提供する。実験結果(詳細については下記参照)によると、構造化分割サンプリングの使用により、電力推定の回数を機能シミュレーションの回数とほぼ同じにすることができる。
【００５６】
（詳細）
（ａ）ではHDLを意識した最適化について、また（ｂ）および（ｃ）では遅延計算手法と分割統計的サンプリング手法について、それぞれ詳述する。
【００５７】
a)HDLを意識した最適化
シミュレーションのパフォーマンス向上のために電力モデル仕様におけるHDLセマンティクスを変更する手法は、このカテゴリに分類される。これらの手法は以下のステップで構成される。
【００５８】
(1)  オペランドのデータ型の変換
電力モデル計算では、基本的には、コンポーネントI/O切り換えアクティビティに対応するオペランドの算術演算が実行される。HDLシミュレータ上で複素数データ型(実数、ベクトルなど)の算術演算を実行する方法は、より単純なデータ型(整数)の算術演算を実行した後に計算結果を複素数データ型に再変換する方法に比較してはるかに負荷が大きい。そのため、オペランドのデータ型を複素数データ型からより単純なデータ型に変換する作業は、最も基本的なHDL最適化と言うことができる。
【００５９】
(2)  HDL関数のインライン化
電力モデル記述で関数を使用する場合は常に、起動のたびにオーバヘッドが生じる。関数のインライン化は、これらのオーバヘッドの解消に役立つ。ただし、インライン化によってシミュレータのオーバヘッドが増大する。この増大は、関数を呼び出すHDLコードにローカル変数が露出され、これに伴い追加の記帳がシミュレータ上に導入されることにより生じる(関数には、それを呼び出す外部プロセスからローカル変数を隠すという利点がある)。そのため、電力モデル記述上では、HDL関数のインライン化は賢明に実行されなければならない。
【００６０】
(3)  電力モデルの起動の最小化
クロックのゲート化、オペランドの分離といった電力削減戦略を採用すると、広範にわたるシミュレーション実行において、多数のRTLコンポーネントの入力での切り換えアクティビティをゼロにすることができる。その結果、対応する電力モデル・プロセスのHDL記述も、これに対応する方法でシャットダウンするように変更できるようになる。したがって、電力モデル・プロセスを必要なときにだけ起動することにより、電力モデルの起動回数を最小限にまで減少できる。
【００６１】
(4)  電力モデル作業負荷の枝刈り
電力モデル・プロセスの作業負荷も、最小限にまで減少する必要がある。単発的計算を伴うHDLコードはすべて、電力モデル・プロセスの外に移動して、冗長な評価と記帳を除去しなければならない。これを怠ると、シミュレーションのパフォーマンスに深刻な影響が出る。
【００６２】
例1は、上記のHDLを意識した最適化をサンプルRTL設計に適用した場合の例である。
【００６３】
例1：図2は、設計test1のHDL記述である。この記述には、RTLコンポーネントaddwc_1bitと、その中にインスタンスが作成された、対応する電力モデルaddwc_1bit_powerが含まれている。モジュールaddwc_1bitは、2つの入力(test1in1(0)とtest1in2(0))と1つの出力(test1out(0))から成る。test1in1(0)とtest1in2(0)は、電力モデルaddwc_1bit_powerの入力を形成する。電力モデルへの他の入力は、起動信号POW_STROBEと、計算済み電力消費量の値power4である。
【００６４】
図3は、電力モデル用として生成されたHDLコードである。このHDL記述は、POW_STROBE信号のイベントに依存する単一プロセスを示す。このプロセスでは、最初に、addwc_1bitの入出力の以前の値と現在の値を格納する待ち行列が更新される。これに続いて、関数trans_countを使用して、ビット・レベルの変遷の関数として変化する電力消費量が実際に評価される。図4は、以前のビット値と現在のビット値に対して、単にxor演算を実行するだけの関数trans_countの仕様例である。
【００６５】
オペランドのデータ型変換や関数のインライン化などのHDLを意識した最適化により、関数addwc_1bit_powerの効率を高めることができる。図5は、これらの最適化を電力モデルコードに適用したことによる効果を示す。まず、HDL最適化後の電力モデル内で計算された電力値は整数であることが注目される。これは、電力評価の方程式が、係数がオリジナルの実数値から適切にスケーリングされて、以下のように変化する(この例では106倍)ことを意味する。
power<=trans_count(queue_in1(0), queue_in1(1),0)*110;
+ trans_count(queue_in2(0), queue_in2(1),0)*108;            （式1）
【００６６】
関数trans_countはさらに、図5に示すようにインライン化できる。このインライン化によって電力モデルで使用されるプロセスに余分な変数が導入されることはないので、関数の呼び出しと返却に伴う余分のコストを削減する上で効果的である。
【００６７】
図6は、test1のRTL記述に対してこれらの最適化を実行したことによる効果を示す。最適化により、addwc_1bit_powerインタフェースと、変数fu_power(機能ユニットの電力に対応)の更新方法が変更されている。power4は現在は整数であるため、図示するように、実数に再変換され、スケールバックされる。fu_powerのデータ型を整数に変換する方法は、オーバフローの問題が発生する恐れがある大規模設計では有効な代替方法ではない。
【００６８】
b)遅延計算
この項では、計算とストレージのトレードオフを使用してRTL電力推定を加速する方法について説明する。
【００６９】
これまで論じてきたRTLコンポーネントの基本的な電力モデルは、以前の入出力値と現在の入出力値を更新してから(store演算)、電力消費量を適切に計算する(compute演算)。そのため、電力消費値は各サイクルで得られる。ここでは、一例として、kサイクルに1度の頻度で定期的に電力消費量の平均値を得る必要がある場合の代替シナリオについて考察する。サイクル精度計算用に適応された既存の電力モデルは、従来と同様に、store演算の後にcompute演算を実行するサイクルをk回繰り返す。これに対し、電力をk回目のサイクルでのみ出力しなければならないという事実は、RTLコンポーネントのkサイクル分の入出力値を待ち行列に入れることによって対処される。ｋ番目のサイクルでcompute演算を1回だけ実行して、電力消費値が決定される。したがって、compute演算の実行回数は、総サイクル数の1/k回だけである。
【００７０】
以下の例では、電力モデル例への遅延計算の適用について説明する。
【００７１】
例2:図3に示す基本的な電力モデルaddwc_1bit_powerについて考察する。POW_STROBEにおいて立ち下がり端のイベントが発生すると、q_in1とq_in2はまず、以前の値と現在の値の内容を更新する。続いて、電力消費量が、q_ in1とq_in2の関数として計算される。
【００７２】
この電力モデルに遅延計算を適用できる。図7に、時間が変更されたaddwc_1bit_powerのVHDL仕様を示す。ここでは、電力モデルのstore演算とcompute演算は、異なるストローブ信号によって起動される2つのフェーズに分離される。時間信号STORE_STROBEが毎サイクルに適用されて、待ち行列q_in1とq_in2が更新される(現在の待ち行列長はk)。信号POW_STROBEがｋ番目のサイクルにのみ適用されて、電力消費量が評価される。ここで、関数trans_countは、長さkの待ち行列を収納できるように変化することに注意する必要がある(図8参照)。
【００７３】
また、シミュレータがコンポーネント値を格納するために必要とする追加のストレージの量は、設計とkの大きさに直接比例することにも注意する必要がある。図9は、addwc_1bit_powerの待ち行列長の異なる100,000インスタンスを有する設計での、シミュレーション時間の変動を示したものである。この図から、kの値が大きくなると(k > 250)、シミュレーション時間が上昇し始めることが分かる。これは、遅延計算によるパフォーマンス利得を、シミュレータが必要とするメモリ量が上回ったことによる。
【００７４】
c)分割統計的サンプリング
分割統計的サンプリングは、「各RTLコンポーネントについて電力サンプルを取得する頻度を変えることによって、電力推定の効率を高めることができる」という前提に立つ。分割サンプリングは、ゲート・レベルやトランジスタ・レベルの電力推定で使用される従来のサンプリング手法（非特許文献４５）とは対照的に、回路全体を単一のパーティションとみなして、回路内の全コンポーネントに関する電力推定計算を同時に実行する手法である。分割サンプリングは、以下のような状況が観察される場合に有効である。
【００７５】
1.  回路の総電力消費量における各部位の寄与度にばらつきがある。そのため、「高精度な電力測定」が必要とされるのは、電力消費量の寄与度が大きい部位に限られる。
【００７６】
2.  回路内のコンポーネントによって、電力消費量の変動の度合いが異なる(すなわち、電力分布の分散の度合いが異なる)。分散の度合いが大きいコンポーネントは電力推定が難しいため、より多くの計算労力を費やすことが効率の向上につながる。
【００７７】
3.  クロックのゲート化、オペランドの分離といった電力削減戦略の採用によって、回路の選択された部分における切り換えアクティビティ(ひいては電力消費量)が減少され、電力消費プロファイルの不均衡が増大される。
【００７８】
図11は、分割サンプリングのフローチャートの例を示す。このフローチャートへの入力は、HDLの電力モデル拡張設計、そのテストベンチ、制御パラメータkである。フローチャートの出力は、入力されたRTL設計の平均電力消費量である。ステップ1および2では、コンパイルとシミュレーションの初期実行を完了する。ここでは、短いシミュレーション実行(シミュレーション全体のk%)によって、全RTLコンポーネントの電力対時間のプロファイルを決定する。これらの電力プロファイルを使用して、すべてのRTLコンポーネントに関する電力分布の平均と分散を計算する。こうして得られた平均分散データは、設計の平均分散スキャタ・プロット(MVSP)としてグラフ化することができる。図10はMVSPの例である。ここで、X軸とY軸は、それぞれ平均電力と分散を表す。プロット内の点(x,y)は、平均xと分散yの電力プロファイルを有するRTLコンポーネントを表す。例えば、点Pは、0.066 mWの平均と0.047 mW2の分散を有する。
【００７９】
ステップ4〜6では、MVSPを利用してRTL設計を分割する。ステップ4では、データ・クラスタ化アルゴリズム（非特許文献４２）を使って、MVSPを類似した平均電力と分散を有するグループに分割する。ここでは、電力推定時に同じ計算労力で追跡できるように、クラスタ化によって類似の電力特性を有するコンポーネントを集約する。ステップ5は、こうして得られたクラスタを分析して、サンプリング確率を決定する。ステップ6では、対応する変更を設計のHDL記述に組み込む。最後に、HDLのコンパイルと完全シミュレーションを実行して(ステップ7および8)、RTL電力推定を完了する。
【００８０】
次に、上記フローチャートのステップ4および5についてさらに説明する。
【００８１】
(1)パーティション化
図11のステップ4で使用するMVSP分割手法は、他の関連のない分野で使用される階層的な凝縮型クラスタ化アルゴリズムに類似している。アルゴリズムへの入力はN x 2の行列Mであり、ここで、各行はRTLコンポーネントに対応し、2つのカラムの数値はそれぞれ平均と分散を示す。次に、アルゴリズムの動作について簡単に説明する。
【００８２】
1.  M内のすべての行ペア(Mの各行はMVSP内の1点に対応する)について、行間のユークリッド距離、または類似の分離距離を計算する。これにより、初期構成(各クラスタが単集合のコンポーネントを有する)におけるクラスタ間の分離を示す初期クラスタ分離行列CSMが得られる。
【００８３】
2.  CSMを使用して、すべてのクラスタ・ペアについて、クラスタ間の平均距離を計算する。平均距離は、あるクラスタ内の1点と、他のクラスタ内のすべての点との間の距離から計算する。続いて、平均距離が最小の2個のクラスタを単一のクラスタにマージする。このマージを反映して、CSMを更新する。
【００８４】
3.  すべてのコンポーネントが単一のクラスタに入るまで、ステップ2を繰り返す。
【００８５】
クラスタ化の出力は、デンドログラムとして表現される、RTLコンポーネントのネストされたグループである。図12(a)は、図10に示すMVSPに対応するデンドログラムである。このデンドログラムを分割するレベルを変えることにより、RTLコンポーネントの異なるクラスタ化を得ることができる。図12(b)は、3個の別々のクラスタに分割されたMVSPを示す。
【００８６】
(2)サンプリング確率の決定
ステップ4で決定されたクラスタを、類似した電力特性(平均と分散)を有するRTLコンポーネントにグループ分けする。次のステップは、各クラスタのサンプリング確率を確定することである。サンプリング確率の確定では、様々な要因を考慮する必要がある。ここで、C1, C2 ... ... Cnは、各々1個かそれ以上のRTLコンポーネントを保持するn個のクラスタを示すとする。この場合、サンプリング確率を決定するための公式は以下のようになる。
【００８７】
1.   サンプリングによるエラーを最小化しなければならない。クラスタCiをサンプリングしたことにより生じる推定エラーをδPiとすると、設計全体の総エラーは次式によって与えられる。
【００８８】
【数１】
0003925471.tif 000002
【００８９】
この総エラーが最小化の対象となる。
【００９０】
2.加えて、クラスタCiの総電力に占める割合がクラスタCjのそれよりも大きい場合には、クラスタCiのサンプリングによるエラーは、クラスタCjのサンプリングによるエラーに比較して大きくなる(最小化の時点)。そのため、式2における推定エラーδPiを、以下のように定義される部分電力fiによって重み付けする。クラスタCi内の全RTLコンポーネントの累積電力を、総電力の関数fiとして表すとすると、次のような式となる。
【００９１】
【数２】
0003925471.tif 000003
【００９２】
式2は、最小化すべき目標関数となる、クラスタのエラーの加重合計を導出するように書き換えられる。
【００９３】
【数３】
0003925471.tif 000004
【００９４】
式4のδPiは、以下のように導出される。クラスタCiにおけるRTLコンポーネントcompの電力プロファイルの正規分布の場合、サンプリングによる推定電力εcompのエラーは、次式によって支配される（非特許文献４５）。
【００９５】
【数４】
0003925471.tif 000005
【００９６】
上記の式では、Scompはcompの電力プロファイルの標準偏差、NiはクラスタCiのサンプリング・レート、tα/2は任意の信頼区間1-αを示す定数である。したがって、総エラーδPiは次式によって与えられる。
【００９７】
【数５】
0003925471.tif 000006
【００９８】
式4の最小化時に従うべき制約条件は、以下のようにして導出できる。1回の完全な電力推定実行時(加速なし)に採取される電力サンプルの総数をNtotとし、電力サンプルの総数として表される分割統計的サンプリングの計算予算をNtotのnf分の1とする。|C1|, |C2| ... |Cn|がクラスタC1, C2 … Cn内のRTLコンポーネント数を表すとすると、制約条件は単純な次式によって得られる
【００９９】
【数６】
0003925471.tif 000007
【０１００】
N1 ... Nnが決定されると、各クラスタPriのサンプリング確率は、次のように単純な形式で記述できる。
【０１０１】
【数７】
0003925471.tif 000008
【０１０２】
式7の制約条件のもとで、式4で指定された目標関数を最小化するタスクは、線形制約最適化問題（非特許文献４６）である。この場合、制約条件は線形であるが、目標関数は非線形となる。この問題のソルバは多数あり（非特許文献４７，４８）、NiおよびPriの特定に利用できる。次に、この公式の適用について、例を用いて説明する。
【０１０３】
例3:
図13は、図12(b)に示すクラスタC1、C2 、C3の集約平均電力(Σcomp∈ciP（アッパーバー）comp)、集約標準偏差(Σcomp∈ciScomp)、RTLコンポーネント数(|Ci|)をリストアップしたものである。
【０１０４】
このデータから、最小化の対象となる目標関数を次のように公式化できる(式4および6を参照)。
【０１０５】
ΔP=constant*(0.59/sqrt(N1)+51.5/sqrt(N2)+2.24/sqrt(N3))  式(9)
【０１０６】
Ntotが300,000、nfが10%の場合には、許容されるサンプル予算は30,000となる。続いて、式7の延長として、式9を最小化するための制約条件が次式によって得られる。
【０１０７】
120.N1+256.N2+85.N3<=30000
and, Ni>=1 ∀i=1 ...                                式(10)
【０１０８】
式10の制約条件のもとで式9を最小化すると、N1 = 9、N2= 104、N3 = 27が得られる。したがって、所望されるサンプリング確率Pr1、Pr2、Pr3は、それぞれ0.04、0.89、0.11となる。
【０１０９】
（Ｂ）−３（電力推定のためのシステム）
上記の手法を使用して、レジスタ・トランスファ・レベル(RTL)で記述された電子回路の電力を推定するためのシステムを構築する。図15に、回路の電力推定を行うための電力推定システムを示す。回路の電力モデル拡張RTL記述15.1が提供される。電力モデル拡張RTL記述をシミュレータ15.2に適した内容に変更するために、RTL記述修飾子15.3が適応される。
【０１１０】
図16は、他の電力推定システムを示す。回路の電力拡張RTL記述16.1が提供される。RTL記述を分割する機能を備える分割部（Partitioner）16.4は、電力消費プロファイルに基づいてクラスタに分割される。前記クラスタの各々に関するカスタマイズされたサンプリングを導出する機能を備えるサンプル・ジェネレータ16.3においては、シミュレータ16.2がカスタマイズされたサンプルを使ってシミュレーションを実行する機能を備える。
【０１１１】
図17は、回路の電力消費量を推定するための他の電力推定システムを示す。回路の電力拡張RTL記述17.1が提供される。シミュレータ17.2上で電力モデル拡張RTL記述をシミュレートするための計算とメモリ使用量とのトレードオフ問題を検討する機能を備えるメモリ・エスティメータ(Estimator)17.3が提供される。このシステムは、回路の消費電力を推定するためにシミュレータを実行する前にメモリ使用量を増大させることにより、シミュレータ上で電力モデル拡張RTL回路記述をシミュレートするために必要となる計算量を削減させることができる。
【０１１２】
（Ｂ）−４（実験結果）
本項では、提唱する手法を工業用RTL電力推定フローに適用した結果を示す。
【０１１３】
上記のRTL電力推定の評価に使用した実験的フレームワークは、以下のとおりである。最初に、ベンチマーク回路のC振る舞い記述を振る舞い合成ツールCYBER（非特許文献３９）に供給し、RTL実装を合成した。背景資料に示される電力モデル推論および電力推定コード生成プロセスを実行するために、CYBERバックエンドの機能強化を行った。CYBERの出力は、適切にインスタンス生成されたコンポーネントの電力モデルを含む回路の拡張HDL記述と、RTL電力推定に必要なその他のコードである。実験では、ほとんどのケースにおいて、ハードウェア記述言語としてVHDLを使用した。ただし、使用した一部の設計では、VerilogとVHDLの記述が混在している。本発明による手法には、記述言語とシミュレータの種類を問わず使用できる。実験で使用したRTL電力モデル・ライブラリは、NECのCB-C9 VX (0.35ミクロン3.3V CMOS)テクノロジ（非特許文献４９）に対応する。ModelSim（非特許文献５０）と設計者供給のテストベンチを使用して、拡張RTL記述のHDLコンパイルおよびシミュレーションを実行し、最終的な電力推定値を得た。本発明による加速手法を実装して、CYBERの出力の後処理を実行し、さらに電力推定のための効率的なRTL実装を作成した。よく知られたツールであるS-PLUS（非特許文献４０）とEXCEL（非特許文献４８）を使用して、分割統計的サンプリングのクラスタ化ステップと線形制約最適化ステップをそれぞれ実行した。
【０１１４】
表1に、実験で使用したベンチマークの特性を示す。カラム1は、実験で使用したすべてのベンチマークを示す。回路CKT1〜CKT6はすべて、イメージ、ビデオ、セキュリティ処理の各種アプリケーションで使用されるNEC内部設計である。カラム2は回路のHDL記述内にインスタンス生成されたRTLコンポーネント数を示し、さらにその内訳として、制御論理ゲート数(カラム3)、機能ユニット数(カラム4)、マルチプレクサ数(カラム5)、レジスタ数(カラム6)を示す。最後に、カラム7にこれらの設計のトランジスタ数を示す。この表から、125万個以上のトランジスタを備える設計(回路CKT6)については、電力推定を実行する必要があることが分かる。したがって、コンポーネント数の少ない(回路CKT6では26048個)RTLのような高位設計階層では電力推定の実行が必要なことは明らかである。
【０１１５】
【表１】
0003925471.tif 000009
【０１１６】
表2は、提唱する手法のパフォーマンスと精度を示す。本発明による加速手法を使用した場合と、使用しなかった場合について、各回路のRTL電力推定に要した平均電力推定値とCPU時間を決定した。カラム2〜4はそれぞれ、機能シミュレーションに要したCPU時間(小カラム「機能シミュレーション」)、加速前のRTL電力推定(小カラム「加速前」)、加速電力推定フロー(小カラム「加速後」)を示す。CPU時間はすべて、2個の900-MHz UltraSparcプロセッサと4GB RAMを搭載するSUN Fire 280Rサーバ上で測定した。カラム5は、加速電力推定フローを使用したことによる加速前からの加速率(%)を示す。この結果から、提唱する加速手法は電力推定時間を大幅に短縮することが分かる(1/31)。図14は、加速手法を使用しない場合(カラム「加速前」)と使用する場合(カラム「加速後」)の、電力推定のための機能シミュレーションに関連するパフォーマンス・オーバヘッドを示す。この図から、提唱する手法によって電力推定時間が機能シミュレーション時間に近づくことが分かる。回路CKT6の場合、加速前には、電力推定に費やされたCPU時間は機能シミュレーションに費やされた時間の42.9倍であった。加速手法の適用後、電力推定時間は機能シミュレーションに費やされたCPU時間のわずか1.4倍にまで短縮された。種類を問わずすべてのシミュレーション・ベースのRTL電力推定手法では、機能シミュレーション時間はRTL電力推定に要するCPU時間の下限である。
【０１１７】
【表２】
0003925471.tif 000010
【０１１８】
カラム6と7は、加速前と加速後のフレームワークによって報告された平均電力推定値を示す。カラム8は、電力推定値における相対エラーを示す。エラーは非常に少なく、0.02%(回路CKT5)〜1.43%(回路CKT1)の範囲にとどまる。RTL電力推定に基づくマクロモデリングの精度は、ゲート・レベルの電力推定に比較して非常に高いことに注目されたい。例えば、CKT3のRTL電力推定値は、対応するゲート・レベル電力推定値から6.44%しか違わない。ゲート・レベルの電力推定は、設計コンパイラ（非特許文献５２）を使用してテクノロジ・マッピング(NEC CB-C9 VXセル・ライブラリ（非特許文献４９）を使用)と合成を行って得られたゲート・レベルのネットリストを対象に、NEC OpenCADツール・スィート（非特許文献５１）によって実行した。
【０１１９】
（Ｂ）−５（結論）
本発明では、一連の手法を使用してRTL電力推定を加速する。これらの加速手法は、RTL電力推定の効率性を機能シミュレーションのそれに近づけ、大規模設計にも対応可能にする。これらの加速手法には、HDLセマンティックを意識した最適化、ストレージとCPU時間とのトレードオフ、「分割サンプリング」と呼ばれる新規な手法が含まれる。最大125万個のトランジスタを備えるいくつかの設計を使用して行った実験から、本発明による手法は、精度パフォーマンスの損失を最小限にとどめながら最大31倍のパフォーマンス向上を実現することが確認された。
【０１２０】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【０１２１】
【発明の効果】
以上説明したように本発明のRTL電力推定を効率的に行うための方法とそのシステムによれば、大規模なRTL回路設計向けの電力推定ツールの効率性とスケーラビリティが向上する。
【０１２２】
また、回路の消費電力を推定するためにシミュレータを実行する前にメモリ使用量を増大させることにより、シミュレータ上で電力モデル拡張RTL回路記述をシミュレートするために必要となる計算量を削減させることができる。
【図面の簡単な説明】
【図１】  本発明における教示を適用可能な状況を明確にするために、RTL電力推定方法の概要を示す図である。
【図２】  本発明のサンプル設計test1のVHDL断片を示す図である。
【図３】  本発明の電力モデルaddwc_1bit_powerのVHDL仕様を示す図である。
【図４】  本発明の関数trans_countのVHDL仕様を示す図である。
【図５】  本発明の電力モデルaddwc_1bit_powerの最適化バージョンを示す図である。
【図６】  本発明の電力モデルの最適化により生じたtest1の変更を示す図である。
【図７】  本発明の遅延計算を含む電力モデルaddwc_1bit_powerを示す図である。
【図８】  本発明の遅延計算をサポートするための、関数trans_countの変更VHDL仕様を示す図である。
【図９】  待ち行列長の異なるシミュレーション時間トレードオフを示す図である。
【図１０】  本発明の平均分散スキャタ・プロット(MVSP)の1例を示す図である。
【図１１】  本発明の分割された統計サンプリングのフローチャートを示す図である。
【図１２】  本発明の(a)、(b)は、MVSPをクラスタ化した結果を示す図である。
【図１３】  本発明のクラスタ化の例に関する集約平均、分散、サイズ統計を示す図である。
【図１４】  本発明の提案される加速手法を使用した場合と、使用しない場合との、電力推定の機能シミュレーションに要したパフォーマンス・オーバヘッドの比較を示す図である。
【図１５】  本発明のHDL変更手法を組み込んだ電力推定システムの一実施例を示すブロック図である。
【図１６】  本発明の計算遅延を組み込んだ電力推定システムの一実施例を示すブロック図である。
【図１７】  本発明の分割サンプリング手法を組み込んだ電力推定システムの一実施例を示すブロック図である。
【符号の説明】
１５．１：  電力拡張ＲＴＬ記述
１５．２：  シミュレータ
１５．３：修飾子
１６．１：  電力拡張ＲＴＬ記述
１６．２：シミュレータ
１６．３：サンプル・ジェネレータ
１６．４：分割部
１７．１：  電力拡張ＲＴＬ記述
１７．２：  シミュレータ
１７．３：  メモリ・エスティメータ
【図１】
0003925471.tif 000011
【図２】
0003925471.tif 000012
【図３】
0003925471.tif 000013
【図４】
0003925471.tif 000014
【図５】
0003925471.tif 000015
【図６】
0003925471.tif 000016
【図７】
0003925471.tif 000017
【図８】
0003925471.tif 000018
【図９】
0003925471.tif 000019
【図１０】
0003925471.tif 000020
【図１１】
0003925471.tif 000021
【図１２】
0003925471.tif 000022
【図１３】
0003925471.tif 000023
【図１４】
0003925471.tif 000024
【図１５】
0003925471.tif 000025
【図１６】
0003925471.tif 000026
【図１７】
0003925471.tif 000027