(57)【要約】【課題】ＬＳＩのモジュールについてのモデル生成の手間を削減する。【解決手段】本方法では、モデル化対象モジュールと当該モデル化対象モジュールに入力されるクロックを変更する回路とを含む回路のデータと、モデル化対象モジュールに入力されるクロックを所定のタイミングで変更させるためのクロック設定データとを用いて、回路シミュレータに回路シミュレーションを実施させ、当該回路シミュレーションの結果をシミュレーション結果データ格納部に格納させ、シミュレーション結果データ格納部に格納されている上記回路シミュレーションの結果に含まれる、モデル化対象モジュールに対する入出力信号の値及び時刻から、所定のアルゴリズムによって、モデル化対象モデルに対する入出力信号についての隠れマルコフモデルを生成する。【選択図】図１
2010286948.tif 000002
【特許請求の範囲】
【請求項１】
モデル化対象モジュールと当該モデル化対象モジュールに入力されるクロックを変更する回路とを含む回路のデータを格納している回路データ格納部に格納されている前記回路のデータと、前記モデル化対象モジュールに入力されるクロックを所定のタイミングで変更させるためのクロック設定データを格納するクロック設定データ格納部に格納されている前記クロック設定データとを用いて、回路シミュレータに回路シミュレーションを実施させ、当該回路シミュレーションの結果をシミュレーション結果データ格納部に格納させるステップと、
前記シミュレーション結果データ格納部に格納されている前記回路シミュレーションの結果に含まれる、前記モデル化対象モジュールに対する入出力信号の値及び時刻から、所定のアルゴリズムによって、前記モデル化対象モデルに対する入出力信号についての隠れマルコフモデルを生成し、当該隠れマルコフモデルについてのデータを隠れマルコフモデルデータ格納部に格納するステップと、
をコンピュータに実行させるためのモデル生成プログラム。
【請求項２】
前記シミュレーション結果データ格納部に格納されている前記回路シミュレーションの結果が、前記入出力信号の値及び時刻の期待値を含む条件を満たしているか判断し、当該条件を満たしていない前記回路シミュレーションの結果を除外するステップ
をさらに前記コンピュータに実行させるための請求項１記載のモデル生成プログラム。
【請求項３】
前記回路データ格納部に格納されている前記回路のデータを用いてクロックを変更させることなく前記回路シミュレータに回路シミュレーションを実施させ、第２の回路シミュレーションの結果を前記シミュレーション結果データ格納部に格納させるステップと、
前記シミュレーション結果データ格納部に格納されている前記第２の回路シミュレーションの結果から、前記モデル化対象モジュールに対する入力から出力までの時間が閾値未満である変更候補時間の開始時刻及び終了時刻を抽出し、当該開始時刻及び終了時刻を含むクロック設定データを生成し、前記クロック設定データ格納部に格納するステップと、
をさらに前記コンピュータに実行させるための請求項１又は２記載のモデル生成プログラム。
【請求項４】
モデル化対象モジュールと当該モデル化対象モジュールに入力されるクロックを変更する回路とを含む回路のデータを格納している回路データ格納部に格納されている前記回路のデータと、前記モデル化対象モジュールに入力されるクロックを所定のタイミングで変更させるためのクロック設定データを格納するクロック設定データ格納部に格納されている前記クロック設定データとを用いて、回路シミュレータに回路シミュレーションを実施させ、当該回路シミュレーションの結果をシミュレーション結果データ格納部に格納させるステップと、
前記シミュレーション結果データ格納部に格納されている前記回路シミュレーションの結果に含まれる、前記モデル化対象モジュールに対する入出力信号の値及び時刻から、所定のアルゴリズムによって、前記モデル化対象モデルに対する入出力信号についての隠れマルコフモデルを生成し、当該隠れマルコフモデルについてのデータを隠れマルコフモデルデータ格納部に格納するステップと、
を含み、コンピュータに実行されるモデル生成方法。
【請求項５】
モデル化対象モジュールと当該モデル化対象モジュールに入力されるクロックの周波数を変更する回路とを含む回路のデータを格納している回路データ格納部に格納されている前記回路のデータと、前記モデル化対象モジュールに入力されるクロックの周波数を所定のタイミングで変更させるためのクロック設定データを格納するクロック設定データ格納部に格納されている前記クロック設定データとを用いて、回路シミュレータに回路シミュレーションを実施させ、当該回路シミュレーションの結果をシミュレーション結果データ格納部に格納させる手段と、
前記シミュレーション結果データ格納部に格納されている前記回路シミュレーションの結果に含まれる、前記モデル化対象モジュールに対する入出力信号の値及び時刻から、所定のアルゴリズムによって、前記モデル化対象モデルに対する入出力信号のタイミングについての隠れマルコフモデルを生成し、当該隠れマルコフモデルについてのデータを隠れマルコフモデルデータ格納部に格納する手段と、
を有するモデル生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、回路モジュールをモデル化するための技術に関する。
【背景技術】
【０００２】
近年、ＬＳＩ（Large Scale Integrated circuit）の開発規模は大きくなっているにもかかわらず、その開発期間は短縮されてきている。また、ＬＳＩの消費電力の削減も大きな課題となっており、ＬＳＩ設計の初期段階で、ＬＳＩの性能・電力を見積もる必要がある。このように初期段階でＬＳＩ全体の性能・電力を見積もるためには、ＬＳＩの構成要素である回路モジュール毎に性能モデル（以下、モデルと称する）が必要である。
【０００３】
回路モジュールのモデル化の一例として、低レベル記述（例えばＨＤＬ（Hardware Description Language））から高レベル記述（例えばＴＬＭ（Transaction Level Model））へ回路記述を変換する技術が存在している。この技術では、低レベル回路記述においてシミュレーションを実施し、シミュレーションデータからトランザクションを抽出する。ここでは、信号パターンをメッセージにマッピングする処理が行われ、メッセージがトランザクションに変換される。その後、モデル抽出が行われる。モデル抽出では、入力シーケンスと出力シーケンスとの繰り返し相互関係に着目して、ニューラルネットワークが出力メッセージ生成及びコンポーネントの統計的挙動の推定に用いられる。また、データ依存性についても抽出される。最後に、高レベルに抽象化されたモデルを生成する。このモデルは、入力トランザクション又はメッセージを解析して出力トランザクション又はメッセージを出力するようなものであって、信号レベル等に注目することなくメッセージのタイミングや関係に着目したものである。しかしながら、どのようにシミュレーションを行うかについては詳しく考察されていない。
【０００４】
なお、ＬＳＩ等を含むデジタルシステムに対して論理検証を行うために、検証対象のハードウェアと通信する外部モジュールをソフトウェアで模擬する際、ハードウェアに供給するクロック周波数を遅くするといった技術は存在している。しかし、モデル生成とは特に関係しない。
【０００５】
さらに、サイクル精度の動作シミュレーションあるいは機能論理シミュレーションにおいて、ＬＳＩ設計上の各機能ブロックのクロック周波数制御あるいはバッファ挿入に関して、構成変更を容易に行いながら、複数の設計バリエーションを探索するための技術も存在している。具体的には、ＬＳＩの設計データを入力として機能論理検証を行う際に、被検証対象のＬＳＩを構成する各機能ブロックに対して動作周波数を指定する周波数制御手段と、周波数制御手段によって指定された動作周波数に応じて各機能ブロックの動作クロックを変更するクロック周波数変更手段と、動作クロック変更後のＬＳＩに対して機能シミュレーションを実行する機能シミュレーション手段とを備える。そして、周波数制御手段は、すべての機能ブロックに対してそれぞれの状態に応じた動作周波数を指定し、クロック周波数変更手段は、その指定の動作周波数に基づいて、各機能ブロックの動作クロックを変更する。機能シミュレーション手段は、動作クロック変更後の機能ブロック群を含むＬＳＩに対して機能シミュレーションを実行する。そして、最適解が得られるように上記処理を繰り返す。これによれば、機能ブロック毎に適した動作クロックを指定するが、その指定は容易に行うことができ、その上でＬＳＩ全体の機能シミュレーションを行って検証するので、全体として、ＬＳＩの設計検証をターンアラウンドタイムの短い状態で効率良く行うことができる、とされる。しかしながら、モデル生成については考察されていない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許公開公報２００７／０２７７１４４号公報
【特許文献２】特開平１０−２２８４９１号公報
【特許文献３】特開２００４−１３３５２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上で述べたようなモデル生成を精度良く行うためには、複雑な機能を有する各モジュールについて、様々な動作条件下でシミュレーションを行うことが必要である。しかしながら、「様々な動作条件」を実現するために通常必要となる膨大なシミュレーション入力データを用意するには、各モジュールの機能仕様を十分に理解する必要があり、非常に手間が掛かる。すなわち、モデル生成を行うのは簡単ではない。
【０００８】
従って、本技術の目的は、ＬＳＩのモジュールについてのモデル生成の手間を削減するための技術を提供することである。
【課題を解決するための手段】
【０００９】
本モデル生成方法は、モデル化対象モジュールと当該モデル化対象モジュールに入力されるクロックを変更する回路とを含む回路のデータを格納している回路データ格納部に格納されている上記回路のデータと、モデル化対象モジュールに入力されるクロックを所定のタイミングで変更させるためのクロック設定データを格納するクロック設定データ格納部に格納されているクロック設定データとを用いて、回路シミュレータに回路シミュレーションを実施させ、当該回路シミュレーションの結果をシミュレーション結果データ格納部に格納させるステップと、シミュレーション結果データ格納部に格納されている上記回路シミュレーションの結果に含まれる、モデル化対象モジュールに対する入出力信号の値及び時刻から、所定のアルゴリズムによって、モデル化対象モデルに対する入出力信号についての隠れマルコフモデルを生成し、当該隠れマルコフモデルについてのデータを隠れマルコフモデルデータ格納部に格納するステップとを含む。
【発明の効果】
【００１０】
ＬＳＩのモジュールについてのモデル生成の手間が削減される。
【図面の簡単な説明】
【００１１】
【図１】図１は、回路モジュールのＨＭＭについて説明するための模式図である。
【図２】図２は、モジュール間のトランザクション・シーケンスの一例を示す図である。
【図３】図３は、クロック変更による信号出力タイミングのずれを模式的に示す図である。
【図４】図４は、モデル生成装置の機能ブロック図である。
【図５】図５は、クロック変更回路を説明するための図である。
【図６】図６は、本実施の形態におけるメインフローを示す図である。
【図７】図７は、モジュールＭ１についての回路シミュレーション結果の一例を示す図である。
【図８】図８は、モジュールＭ２についての回路シミュレーション結果の一例を示す図である。
【図９】図９は、クロック設定データ格納部に格納されるデータの一例を示す図である。
【図１０】図１０は、通常の場合における、クロックφ1及びφ2とトランザクション・シーケンスとの関係を表す図である。
【図１１】図１１は、クロック設定データに従った場合における、クロックφ1b及びφ2bとトランザクション・シーケンスとの関係を表す図である。
【図１２】図１２は、クロック設定データに基づきクロックを設定するための処理フローの一例を示す図である。
【図１３】図１３は、期待値データ格納部に格納されるデータの一例を示す図である。
【図１４】図１４は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１２】
まず、本技術の実施の形態の前提について図１乃至図３を用いて説明する。本実施の形態では、性能モデルの１つとして隠れマルコフモデル（ＨＭＭ：Hidden Markov Model）を採用するものとする。より具体的には、互いに通信を行う２つのモジュールＭ１及びＭ２について、そのトランザクションについて周知の学習を行ってＨＭＭを生成する。なお、説明を簡単にするため、モジュール間の通信は非同期通信とする。モジュールＭ１のＨＭＭは、図１に示すように、複数の状態Ｓ０乃至Ｓ３と、その状態間の状態遷移（自己遷移を含む）と、状態遷移の条件（すなわち状態遷移確率）並びに出力及び出力の条件（出力値及びその発生確率を含む）ａ乃至ｈとで規定される。図１には示していないが、モジュールＭ２についても、ＨＭＭが生成される。但し、一般的には、モジュールＭ１のＨＭＭとモジュールＭ２のＨＭＭとは、状態数、状態遷移、状態遷移の条件並びに出力及び出力の条件は異なる。
【００１３】
また、ＨＭＭの生成には、様々な周知技術が存在する。例えばＥＭアルゴリズム、Ｂａｕｍ−Ｗｅｌｃｈアルゴリズムなどが存在しており、いずれのアルゴリズムを用いても良い。このような学習アルゴリズムを用いれば、回路モジュールＭ１及びＭ２の動作に適合するトランザクションを行わせる状態遷移がＨＭＭにおいて発生するように、ＨＭＭの状態、状態遷移、状態遷移の条件並びに出力及び出力の条件が決定される。
【００１４】
例えば、図２に示すようなトランザクションがモジュールＭ１及びＭ２間で実施され、その観測結果が周知の学習アルゴリズムで学習されるものとする。すなわち、モジュールＭ１から信号（又はメッセージ）Ｔ１がモジュールＭ２に出力され、その後モジュールＭ２から信号（又はメッセージ）ｔ１がモジュールＭ１に出力され、その後モジュールＭ１から信号Ｔ２がモジュールＭ２に出力され、その後モジュールＭ２から信号ｔ２がモジュールＭ１に出力され、その後モジュールＭ１から信号Ｔ３がモジュールＭ２に出力される。
【００１５】
このようなトランザクション・シーケンスからすると、信号Ｔ１に応答して信号ｔ１が出力され、信号ｔ１に応答して信号Ｔ２が出力され、信号Ｔ２に応答して信号ｔ２が出力され、信号ｔ２に応答して信号Ｔ３が出力される、といったような因果関係があるように見える。しかしながら、このような関係が正しいかどうかについては、分からない。すなわち、このようなデータだけに基づいて学習を行っても、精度の高いＨＭＭが生成されるとは限らない。
【００１６】
このため、モジュールＭ１及びＭ２に異なる動作を行わせて、様々なトランザクション・シーケンスでＨＭＭの学習を行わせることが好ましいが、通常の回路シミュレーションの中でモジュールＭ１及びＭ２に多数の異なる動作を行わせるには、モジュールの動作についての知見及び膨大なシミュレーション入力データを用意する必要がある。
【００１７】
そこで、本実施の形態では、同じシミュレーション入力を用いるが、例えばモジュールＭ２のクロックを変更して（例えば周波数を低くして）、回路シミュレーションを実施し、その場合におけるトランザクション・シーケンスを観測する。そうすると、例えば図３において白抜き矢印で示すように、モジュールＭ２から出力される信号ｔ１及びｔ２のタイミングが図２に示す場合に比して遅くなる一方、モジュールＭ１から出力される信号Ｔ２及びＴ３のタイミングが変化しない、ということが分かる場合がある。このように、クロック周波数を変化させることによって、図２及び図３を総合して把握される信号間の因果関係については、図２のみから把握される因果関係とは異なっている。すなわち、信号Ｔ１と信号ｔ１、信号Ｔ２と信号ｔ２については因果関係が見出され、信号ｔ１と信号Ｔ２、信号ｔ２と信号Ｔ３は因果関係がないということが分かる。なお、周波数は高くしても良い。
【００１８】
このように、回路シミュレーションの入力データについては既に用意されているものをそのまま用いるようにして、代わりにモデル化対象モジュールに入力されるクロックを変化させれば、必要な手間を削減しつつ様々な回路シミュレーションを実施することができる。すなわち、様々なトランザクション・シーケンスを観測することができるようになるので、精度の良いＨＭＭを生成することができるようになる。
【００１９】
以下、モデル化対象モジュールに対するクロックを変化させてＨＭＭを生成するための構成について具体的に述べる。
【００２０】
図４に、本実施の形態に係るモデル生成装置１の機能ブロック図を示す。本モデル生成装置１は、（ａ）以下で述べるようにモデル化対象モジュールに対して供給されるクロックを変更するクロック変更回路のデータであるクロック周波数変更回路データ１１１１とモデル化対象モジュールの回路データとを含む回路データ１１１を格納する回路データ格納部１１と、（ｂ）クロック変更回路に対するクロック設定データを格納するクロック設定データ格納部１４と、（ｃ）回路データ格納部１１及びクロック設定データ格納部１４に格納されているデータを用いて周知の回路シミュレータ１００に対して回路シミュレーションを実施させ、回路シミュレータ１００から回路シミュレーションの結果を受け取る回路シミュレーション制御部１２と、（ｄ）回路シミュレーション制御部１２が受け取った回路シミュレーションの結果を格納するシミュレーション結果データ格納部１３と、（ｅ）シミュレーション結果データ格納部１３に格納されているデータを用いてクロック設定データを生成して、クロック設定データ格納部１４に格納するクロック設定データ生成部１５と、（ｆ）モデル化対象モジュールの入出力信号についての期待値データを格納する期待値データ格納部１７と、（ｇ）シミュレーション結果データ格納部１３及び期待値データ格納部１７に格納されているデータから回路シミュレーションの結果のうちモデル生成に不適格なデータを削除する処理を実施する不適格データ削除部１６と、（ｈ）シミュレーション結果データ格納部１３に格納されているデータからＨＭＭの周知の学習処理を実施するモデル生成部１８と、（ｉ）モデル生成部１８によって生成されたＨＭＭのデータを格納するモデルデータ格納部１９とを有する。
【００２１】
ここでクロック変更回路について図５を用いて模式的に示しておく。モデル化対象モジュールＭ１に供給されるクロックφ1は、通常であればモジュールＭ１に直接入力されるが、本実施の形態ではクロック変更回路２０１によりクロックφ1bに変更した後にモジュールＭ１に入力される。同様に、モデル化対象モジュールＭ２に供給されるクロックφ2は、通常であればモジュールＭ２に直接入力されるが、本実施の形態ではクロック変更回路２０２によりクロックφ2bに変更した後にモジュールＭ２に入力される。クロック変更回路２０１及び２０２は、例えば入力クロックのクロック周波数をＸ倍（Ｘは正の実数）にするような回路であり、回路自体は周知なのでこれ以上述べない。なお、周波数を変更するのではなく、デューティー比率やクロック信号の立ち上がりのタイミングを前後させるような変更を行うようにしてもよい。但し、周波数自体を変更する方がモジュールの動作に与える影響が大きく、さらにバリエーションも多数採用できるので、異なる動作を観測しやすくなる。なお、周波数とその他の変更とを組み合わせるようにしても良い。
【００２２】
次に、図６乃至図１３を用いて図４に示したモデル生成装置１の動作について説明する。この処理の前段階として、予め回路データ１１１が回路データ格納部１１に格納されているものとする。まず、回路シミュレーション制御部１２は、回路データ格納部１１に格納されており且つモデル化対象モジュールの回路データを含む回路データ１１１を回路シミュレータ１００に設定し（ステップＳ１）、回路シミュレータ１００に回路シミュレーションを実施させる（ステップＳ３）。ステップＳ３では、クロック設定データを用いることなく、通常どおり１セットの入力データについて第１回目の回路シミュレーションを実施させ、回路シミュレーション制御部１２は、第１回目の回路シミュレーションの結果を回路シミュレータ１００から受け取り、シミュレーション結果データ格納部１３に格納する。
【００２３】
シミュレーション結果データ格納部１３に格納されるデータは、例えば図７及び図８に示すようなデータである。図７は、モジュールＭ１についてのデータ例を示している。具体的には、時刻９に信号Ｔ１を出力し（すなわち、出力端子から値Ｔ１の信号が出力される。以下同様。）、時刻１６に信号ｔ１が入力され（すなわち、入力端子に値ｔ１の信号が入力される。以下同様。）、時刻１９に信号Ｔ２を出力し、時刻２５に信号ｔ２が入力されたことが観測されている。また、図８は、モデル化対象モジュールＭ２についてのデータ例を示している。具体的には、時刻１０に信号Ｔ１が入力され、時刻１５に信号ｔ１を出力し、時刻２０に信号Ｔ２が入力され、時刻２４に信号ｔ２を出力したことが観測されている。
【００２４】
次に、クロック設定データ生成部１５は、シミュレーション結果データ格納部１３に格納されている第１回目の回路シミュレーションの結果から、クロック変更対象期間を抽出し、さらにクロック変更対象期間に基づきクロック設定データを生成し、クロック設定データ格納部１４に格納する（ステップＳ５）。例えば、入力信号と出力信号の時間間隔が所定時間未満の部分をクロック変更対象期間として抽出する。例えば、モジュールＭ２に着目して、入力信号と出力信号の時間間隔が例えば「４」以下であれば抽出するとする。そうすると図８の例から、信号Ｔ２が入力された時刻２０から信号ｔ２が出力された時刻２４までが抽出される。
【００２５】
なお、このようにして抽出した時間間隔を例えばユーザに対して提示してユーザにクロック変更対象期間を指定させるようにしても良い。また、ユーザにクロック変更対象期間を全て指定させるようにしても良い。さらに、他の基準にてクロック変更対象期間を特定するようにしても良い。
【００２６】
そして、クロック設定データ生成部１５は、クロック変更対象期間に、クロックを変更させるためのクロック設定データを生成し、クロック設定データ格納部１４に格納する。例えば、図９に示すようなデータをクロック設定データ格納部１４に格納する。図９の例では、開始時刻ｔｓ１と、終了時刻ｔｓ２と、調整係数ｋとを含む。ここでは、クロック周波数を調整係数ｋ倍（ｋは正の実数）するものとする。なお、ｋについては予め設定された固定の値を用いるようにしても良いが、例えば０より大きく設計仕様等で許可される最大値（例えば１．５など）以下の範囲で発生させた乱数値を採用するようにしても良い。
【００２７】
図１０に模式的に示せば、モデル化対象モジュールＭ１からモデル化対象モジュールＭ２に信号Ｔ１乃至Ｔ３が出力され、モデル化対象モジュールＭ２からモデル化対象モジュールＭ１に信号ｔ１及びｔ２が出力されている。そして、通常であればクロックφ1がモデル化対象モジュールＭ１に入力され、クロックφ2がモデル化対象モジュールＭ２に入力され、クロック周波数の変更は行われない。一方、クロック設定データに従えば、図１１に示すように、モデル化対象モジュールＭ２に入力されるクロックφ2bの周波数が、モデル化対象モジュールＭ１から信号Ｔ２を受信してから信号ｔ２を出力するまでの期間Ｌだけ、例えば半分になる。この際、信号ｔ２が同じように出力されるか否か、そしてそれ以降の信号（例えばＴ３）が同じように出力されるか否かについては不明であるが、モジュール間のトランザクションを観測する。
【００２８】
さらに、上で述べたように周波数の実数倍というような変更だけではなく、他の修正方法を採用しても良い。さらに、図９のようなデータを例えば周波数の調整係数ｋが各々異なる複数セット用意するようにしてもよい。各セットについて以下で述べる２回目以降の回路シミュレーションを実施してその回路シミュレーションの結果を用いてＨＭＭを生成すれば、ＨＭＭの精度を高くすることができる。また、複数のモデル化対象モジュールについてクロック設定データを少なくとも１セット用意して一度に回路シミュレーションを行わせる場合もあれば、モデル化対象モジュール１つ１つについてクロック設定データを少なくとも１セット用意してモデル化対象モジュール毎に回路シミュレーションを実施するようにしても良い。
【００２９】
例えば過去に作成した回路モジュールを再利用する場合や外部から調達した回路モジュールを新たに利用する場合など、回路モジュールのデータが既に存在するが、性能モデルは生成できていない場合、このようにして回路シミュレーションを実施すれば、クロック設定データを生成することができる。
【００３０】
なお、ユーザが自らの知識によってクロック設定データを生成できる又は他の手法によってクロック設定データを生成できる場合には、ステップＳ１乃至Ｓ５については、実施しなくとも良い。
【００３１】
その後、クロック設定データが用意できると、回路シミュレーション制御部１２は、回路データ格納部１１に格納されている回路データ１１１とクロック設定データ格納部１４に格納されているクロック設定データと１セットの入力データとを回路シミュレータ１００に設定し（ステップＳ７）、回路シミュレータ１００に周知の回路シミュレーションを実施させる（ステップＳ９）。そして、回路シミュレーション制御部１２は、第２回目の回路シミュレーションの結果を回路シミュレータ１００から受け取り、シミュレーション結果データ格納部１３に格納する。シミュレーション結果データ格納部１３に格納されるデータについては、図７及び図８に示したようなデータ・フォーマットと同じデータである。なお、クロック設定データを複数セット生成した場合には、複数回回路シミュレーションを実施させる。
【００３２】
この第２回目以降の回路シミュレーションにおいて、クロック変更回路では、例えば図１２に示すような処理を実施する。まず、初期的には、クロック変更回路の出力クロックφ2bに入力クロックφ2を設定する（ステップＳ３１）。また、クロック設定データのカウンタｎを１に初期化する（ステップＳ３３）。その後、ｎ番目のクロック設定データを読み出し（ステップＳ３５）、時刻ｔとｎ番目のクロック設定データにおける開始時刻ｔｓ１とを比較する（ステップＳ３７）。ここで時刻ｔが開始時刻ｔｓ１より前であれば（ステップＳ３９：Ｎｏルート）、ステップＳ３７に戻る。一方、時刻ｔが開始時刻ｔｓ１以降であれば（ステップＳ３９：Ｙｅｓルート）、時刻ｔが終了時刻ｔｓ２以前であれば（ステップＳ４１：Ｙｅｓルート）、出力クロックφ2bに入力クロックφ2＊ｋ（クロック設定データに含まれる調整係数）を設定する（ステップＳ４３）。
【００３３】
一方、時刻ｔが終了時刻ｔｓ２より後になれば（ステップＳ４１：Ｎｏルート）、出力クロックφ2bを入力クロックφ2に戻す（ステップＳ４５）。そして、未処理のクロック設定データが存在するか判断し（ステップＳ４７）、存在する場合にはカウンタｎを１インクリメントして（ステップＳ４９）、ステップＳ３５に戻る。一方、未処理のクロック設定データが存在しない場合には、処理を終了する。すなわち、ステップＳ４５の設定が回路シミュレーションが終了するまで維持される。
【００３４】
このようにすれば、クロック設定データに従ってクロック変更を回路シミュレーションにおいて実施することができるようになる。
【００３５】
図６の処理フローの説明に戻って、第２回目以降の回路シミュレーションの結果がシミュレーション結果データ格納部１３に格納されると、不適格データ削除部１６が、期待値データ格納部１７に格納されている期待値データとシミュレーション結果データ格納部１３に格納されている回路シミュレーションの結果データとを比較して、使用不可能な結果データを削除する（ステップＳ１１）。期待値データ格納部１７に格納されるデータの一例を図１３に示す。図１３は、モデル化対象モジュールＭ２についての期待値データを示しており、この図の例では、時刻制約及び信号条件が規定されるようになっている。例えば、信号Ｔ１が入力された時点をＴｔ１とすると、信号ｔ１の出力が、（Ｔｔ１＋０）から（Ｔｔ１＋５）までに発生するという条件が規定されている。同様に、信号Ｔ２が入力された時点をＴｔ２とすると、信号ｔ２の出力が、（Ｔｔ２＋４）から（Ｔｔ２＋１５）までに発生するという条件が規定されている。これらは一例であって、信号間に相互異存関係のない条件を設定する場合もある。このような期待値データは、基本的にはモデル化対象モジュールを含む回路の設計仕様に従って決定される。さらに、例えば第１回目の回路シミュレーションの結果を基に、設定するようにしても良い。このように確認するのは、クロック設定データによってクロックを変化させすぎて、モジュールが正しく動作していない場合もあり、正しく動作していない場合の回路シミュレーションの結果データを用いてＨＭＭを生成することは好ましくないからである。
【００３６】
例えば、図１３と図８の回路シミュレーションの結果を比較すると、信号Ｔ１が入力されたのが時刻１０＝Ｔｔ１であり、信号ｔ１が出力されたのが時刻１５＝Ｔｔ１＋５であるから、項番Ａ１及びＡ２の条件を満たしている。また、信号Ｔ２が入力されたのが時刻２０であり、信号ｔ２が出力されたのが時刻２４＝Ｔｔ２＋４であるから、項番Ｂ１及びＢ２の条件を満たしている。例えば、信号ｔ２が出力されたのが時刻４０＝Ｔｔ２＋２０である場合には、項番Ｂ１及びＢ２の条件を満たしていないことになるので、モジュールＭ２は正常に動作しておらず、モジュールＭ２の結果データについては削除する。
【００３７】
不適格データ削除部１６の処理が終了した後に、モデル生成部１８は、シミュレーション結果データ格納部１３に格納されている使用可能な結果データ（例えば第１回目の回路シミュレーションの結果を含む）を用いて、性能モデル・データ、すなわちＨＭＭのデータを周知の方法を用いて生成し、モデルデータ格納部１９に格納する（ステップＳ１３）。上で述べたように、ＥＭアルゴリズムやＢａｕｍ−Ｗｅｌｃｈアルゴリズムなど、ＨＭＭ生成に周知の方法を用いる。生成されるＨＭＭのデータは、ＨＭＭの状態、状態遷移、状態遷移の条件（どのような条件で状態遷移が発生するのか）並びに出力及び出力の条件（状態遷移発生時に、どのような出力がどのような条件で出力されるのか）が決定される。
【００３８】
以上のような処理を実施すれば、回路シミュレーションに用いる膨大な入力データを用意せずに、異なる動作をモデル化対象モジュールに実施させることができ、その結果を用いて性能モデルを自動的に生成することができるようになる。
【００３９】
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば図４に示した機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成と一致しない場合もある。
【００４０】
ＨＭＭではなく、他に学習手法が確立したモデルが存在する場合には、そのような他のモデルを採用して、モデル生成部１８についてもそのような学習手法を実施するようなモデル生成部に置換しても良い。
【００４１】
なお、上で述べたモデル生成装置１は、コンピュータ装置であって、図１４に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウェアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００４２】
以上本実施の形態をまとめると以下のようになる。
【００４３】
本モデル生成方法は、モデル化対象モジュールと当該モデル化対象モジュールに入力されるクロックを変更する回路とを含む回路のデータを格納している回路データ格納部に格納されている上記回路のデータと、モデル化対象モジュールに入力されるクロックを所定のタイミングで変更させるためのクロック設定データを格納するクロック設定データ格納部に格納されているクロック設定データとを用いて、回路シミュレータに回路シミュレーションを実施させ、当該回路シミュレーションの結果をシミュレーション結果データ格納部に格納させるステップと、シミュレーション結果データ格納部に格納されている上記回路シミュレーションの結果に含まれる、モデル化対象モジュールに対する入出力信号の値及び時刻から、所定のアルゴリズムによって、モデル化対象モデルに対する入出力信号についての隠れマルコフモデルを生成し、当該隠れマルコフモデルについてのデータを隠れマルコフモデルデータ格納部に格納するステップとを含む。
【００４４】
このようにクロック変更回路を設けた上で回路シミュレーションにおいてクロックを変更させることによって、隠れマルコフモデル生成に必要なデータ作成の手間を削減できるようになる。
【００４５】
また、本モデル生成方法は、シミュレーション結果データ格納部に格納されている回路シミュレーションの結果が、入出力信号の値及び時刻の期待値を含む条件を満たしているか判断し、当該条件を満たしていない回路シミュレーションの結果を除外するステップをさらに含むようにしても良い。クロックを変更しすぎると、モデル化対象モジュールの動作が不適切になる場合があるので、不適切な動作に基づく回路シミュレーションの結果でモデル化を実施するのを避けるためである。
【００４６】
さらに、本モデル生成方法は、回路データ格納部に格納されている上記回路のデータを用いてクロックを変更させることなく回路シミュレータに回路シミュレーションを実施させ、第２の回路シミュレーションの結果をシミュレーション結果データ格納部に格納させるステップと、シミュレーション結果データ格納部に格納されている第２の回路シミュレーションの結果から、モデル化対象モジュールに対する入力から出力までの時間が閾値未満である変更候補時間の開始時刻及び終了時刻を抽出し、当該開始時刻及び終了時刻を含むクロック設定データを生成し、クロック設定データ格納部に格納するステップとを含むようにしても良い。このように、前処理として通常どおりに回路シミュレーションを実施して、モデル化対象モジュールの動作に大きく影響を与えるタイミングとして、上で述べたようなモデル化対象モジュールに対する入力から出力までの時間が閾値未満である変更候補時間を特定する。この変更候補時間の全てについてクロックを変更しても良いし、ユーザに変更候補時間を提示して選択させるようにしても良い。
【００４７】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。
【００４８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００４９】
（付記１）
モデル化対象モジュールと当該モデル化対象モジュールに入力されるクロックを変更する回路とを含む回路のデータを格納している回路データ格納部に格納されている前記回路のデータと、前記モデル化対象モジュールに入力されるクロックを所定のタイミングで変更させるためのクロック設定データを格納するクロック設定データ格納部に格納されている前記クロック設定データとを用いて、回路シミュレータに回路シミュレーションを実施させ、当該回路シミュレーションの結果をシミュレーション結果データ格納部に格納させるステップと、
前記シミュレーション結果データ格納部に格納されている前記回路シミュレーションの結果に含まれる、前記モデル化対象モジュールに対する入出力信号の値及び時刻から、所定のアルゴリズムによって、前記モデル化対象モデルに対する入出力信号についての隠れマルコフモデルを生成し、当該隠れマルコフモデルについてのデータを隠れマルコフモデルデータ格納部に格納するステップと、
をコンピュータに実行させるためのモデル生成プログラム。
【００５０】
（付記２）
前記シミュレーション結果データ格納部に格納されている前記回路シミュレーションの結果が、前記入出力信号の値及び時刻の期待値を含む条件を満たしているか判断し、当該条件を満たしていない前記回路シミュレーションの結果を除外するステップ
をさらに前記コンピュータに実行させるための付記１記載のモデル生成プログラム。
【００５１】
（付記３）
前記回路データ格納部に格納されている前記回路のデータを用いてクロックを変更させることなく前記回路シミュレータに回路シミュレーションを実施させ、第２の回路シミュレーションの結果を前記シミュレーション結果データ格納部に格納させるステップと、
前記シミュレーション結果データ格納部に格納されている前記第２の回路シミュレーションの結果から、前記モデル化対象モジュールに対する入力から出力までの時間が閾値未満である変更候補時間の開始時刻及び終了時刻を抽出し、当該開始時刻及び終了時刻を含むクロック設定データを生成し、前記クロック設定データ格納部に格納するステップと、
をさらに前記コンピュータに実行させるための付記１又は２記載のモデル生成プログラム。
【００５２】
（付記４）
モデル化対象モジュールと当該モデル化対象モジュールに入力されるクロックを変更する回路とを含む回路のデータを格納している回路データ格納部に格納されている前記回路のデータと、前記モデル化対象モジュールに入力されるクロックを所定のタイミングで変更させるためのクロック設定データを格納するクロック設定データ格納部に格納されている前記クロック設定データとを用いて、回路シミュレータに回路シミュレーションを実施させ、当該回路シミュレーションの結果をシミュレーション結果データ格納部に格納させるステップと、
前記シミュレーション結果データ格納部に格納されている前記回路シミュレーションの結果に含まれる、前記モデル化対象モジュールに対する入出力信号の値及び時刻から、所定のアルゴリズムによって、前記モデル化対象モデルに対する入出力信号についての隠れマルコフモデルを生成し、当該隠れマルコフモデルについてのデータを隠れマルコフモデルデータ格納部に格納するステップと、
を含み、コンピュータに実行されるモデル生成方法。
【００５３】
（付記５）
モデル化対象モジュールと当該モデル化対象モジュールに入力されるクロックの周波数を変更する回路とを含む回路のデータを格納している回路データ格納部に格納されている前記回路のデータと、前記モデル化対象モジュールに入力されるクロックの周波数を所定のタイミングで変更させるためのクロック設定データを格納するクロック設定データ格納部に格納されている前記クロック設定データとを用いて、回路シミュレータに回路シミュレーションを実施させ、当該回路シミュレーションの結果をシミュレーション結果データ格納部に格納させる手段と、
前記シミュレーション結果データ格納部に格納されている前記回路シミュレーションの結果に含まれる、前記モデル化対象モジュールに対する入出力信号の値及び時刻から、所定のアルゴリズムによって、前記モデル化対象モデルに対する入出力信号のタイミングについての隠れマルコフモデルを生成し、当該隠れマルコフモデルについてのデータを隠れマルコフモデルデータ格納部に格納する手段と、
を有するモデル生成装置。
【符号の説明】
【００５４】
１  モデル生成装置
１１  回路データ格納部    １２  回路シミュレーション制御部
１３  シミュレーション結果データ格納部    １４  クロック設定データ格納部
１５  クロック設定データ生成部    １６  不適格データ削除部
１７  期待値データ格納部    １８  モデル生成部
１９  モデルデータ格納部    １００  回路シミュレータ
【図１】
2010286948.tif 000003
【図２】
2010286948.tif 000004
【図３】
2010286948.tif 000005
【図４】
2010286948.tif 000006
【図５】
2010286948.tif 000007
【図６】
2010286948.tif 000008
【図７】
2010286948.tif 000009
【図８】
2010286948.tif 000010
【図９】
2010286948.tif 000011
【図１０】
2010286948.tif 000012
【図１１】
2010286948.tif 000013
【図１２】
2010286948.tif 000014
【図１３】
2010286948.tif 000015
【図１４】
2010286948.tif 000016