(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
まず、半導体集積回路および半導体集積回路の検証方法の実施例を詳述する前に、
図1〜
図4を参照して、半導体集積回路の検証方法の例およびその課題を説明する。
【0014】
図1および
図2は、半導体集積回路の検証方法の一例を説明するためのフローチャートであり、アサーション回路を使用したハードウェアの解析フロー(実機評価処理)を示すものである。
【0015】
ここで、ステップST101〜ST103,ST106,ST108〜ST110,ST112,ST113およびST116〜ST119の処理は、開発者の作業(手動)として行われる。また、ステップST104,ST111,ST114およびST115の処理は、計算機(ツール等)による処理(自動)として行われる。
【0016】
まず、半導体集積回路のハードウェアの実機評価処理が開始(START)すると、ステップST101において、論理シミュレーションアサーション情報を作成し、ステップST102に進んで、ハードウェア搭載アサーションを選定する。
【0017】
なお、ハードウェアの実機評価処理の開始により、ステップST101の処理と共に、ステップST108において、評価対象設計データ(RTL:Register Transfer Level)の作成も行う。
【0018】
ステップST102において、ハードウェア搭載アサーションを選定すると、ステップST103に進んで、ハードウェア搭載アサーション情報を作成して、ステップST104に進む。ステップST104では、ハードウェア搭載アサーション情報をRTL変換し、さらに、ステップST106に進んで、解析用アサーション回路(RTL)を生成する。
【0019】
すなわち、ハードウェアに搭載するアサーション回路(解析用アサーション回路)は、論理シミュレーションで適用しているアサーションを合成可能な回路形式に変換するが、この処理は、ステップST101〜ST104およびST106により行われる。
【0020】
そして、ステップST109において、ステップST106による解析用アサーション回路(RTL)、および、ステップST108による評価対象設計データ(RTL)から論理組み上げを行う。
【0021】
すなわち、ステップST109では、変換後のアサーション回路(解析用アサーション回路)と、評価対象である設計データ(評価対象回路)をハードウェア搭載論理として組み上げ、そして、ステップST110に進む。
【0022】
ステップST110では、半導体集積回路(例えば、FPGA:Field-Programmable Gate Array)に搭載する論理(RTL)を生成し、さらに、ステップST111に進んで、インプリメンテーションを生成し、そして、ステップST112に進む。
【0023】
ステップST112では、インプリメンテーション後のデータを生成し、ステップST113に進んで、そのインプリメンテーション後のデータをハードウェアに搭載する。なお、対象とする半導体集積回路は、FPGAに限定されるものではなく、ASIC(Application Specific Integrated Circuit)等であってもよい。
【0024】
すなわち、ステップST110で生成されたFPGA搭載論理は、ステップST111〜ST113により、インプリメンテーション(論理合成やP&R(Place and Route)など)を行った後、ハードウェアに搭載する。
【0025】
さらに、ステップST114に進んで、評価を実行し、ステップST115に進んで、結果(エラー信号情報)を得る。ここで、ステップST114における評価実行は、例えば、ハードウェア評価ボードを使用して評価を実行し、意図しない動作が発生した場合にアサーションがエラーとして外部端子を経由してエラーを通知する。
【0026】
そして、ステップST116に進んで、ステップST114で得られた結果におけるエラー有無の判定を行い、エラーが無いと判定すると、ハードウェアの実機評価処理を終了(END)し、エラーが有ると判定すると、ステップST117に進む。
【0027】
ステップST117では、エラーが有ると判定された結果における原因を特定したか否かを判定し、原因を特定したと判定すると、ハードウェアの実機評価処理を終了(END)する。
【0028】
一方、ステップST117で、エラーが有るとされた結果において原因の特定が困難な(不特定の)場合には、ステップST118およびST119を経由してステップST110に戻り、同様の処理を行う。
【0029】
ここで、ステップST118では、解析ポイントの検討(トレース情報の選定)を行い、ステップST119では、モニタ部の追加を行う。
【0030】
すなわち、ステップST116〜ST119は、ステップST115で得られたエラー信号情報に基づいて、エラーが発生したアサーションを特定して原因となる個所を調査する。そして、原因の特定が困難な場合には、モニタ部203を生成して再度インプリメンテーションを行い、再度評価を実行して確認するというループを回し、原因の特定を行う。
【0031】
図3は、
図1および
図2に示す半導体集積回路の検証方法のフローチャートにおけるFPGA搭載論理(ST110)を実現するハードウェア構成の一例を示すブロック図であり、半導体集積回路(FPGA搭載論理部)200の一例を示すものである。
【0032】
図3に示されるように、半導体集積回路200は、評価対象論理回路201、評価対象論理回路201のシミュレーション検証を行うための複数のアサーション回路221,222、および、モニタ部203を有する。
【0033】
なお、
図3では、アサーション回路は、2つだけ(221,222)描かれているが、さらに多数であってもよい。また、評価対象論理回路201は、半導体集積回路200において、論理検証対象となる回路(ロジック部)を示す。
【0034】
半導体集積回路200において、アサーション回路(アサーション)221,222が多数存在する場合、アサーション出力が増加するだけでなく、関連するモニタ部203の出力信号(モニタ信号)も増加する。
【0035】
ここで、通常、半導体集積回路の出力端子数(外部出力信号本数)は限られており、全ての信号を出力することが困難なため、搭載するアサーションの数を絞り込むことになる。
【0036】
すなわち、
図1および
図2に示す半導体集積回路の検証方法のフローチャートのステップST102におけるハードウェア搭載アサーション選定の数が制限され、その結果、アサーションの搭載による効果が小さくなってしまう。
【0037】
また、搭載したアサーションが発火した場合には、例えば、アサーション情報に基づいて解析ポイントを特定し、そして、モニタ部203を用いて解析を行うための情報を取得する。
【0038】
さらに、モニタ部203の追加/修正の度にインプリメンテーションの再実行を行うことになるため、回路規模によっては、解析TAT(Turn Around Time)の増大に繋がる。
【0039】
すなわち、
図1および
図2に示す半導体集積回路の検証方法のフローチャートのステップST119におけるモニタ部203の追加(修正)の処理を、解析を行う度に行うことになり、アサーション発火時のデバッグ効率が低下する。さらに、解析TATの増大により、インプリメンテーションの再実行による解析効率の低下を招くことにもなる。
【0040】
図4は、
図3に示すFPGA搭載論理を適用した半導体集積回路の検証方法における課題を説明するための図である。
図4に示されるように、例えば、搭載したアサーション(アサーション回路202)が発火した場合、アサーション情報をもとに回路等を解析しながら原因(X,Y,Z)を探ることになる。
【0041】
すなわち、アサーション回路202からエラー信号が出力されるのは、例えば、信号A,Bに違反が生じた場合であるが、その信号A,Bに違反が生じる根本原因は、評価対象論理回路201に存在している。
【0042】
従って、搭載したアサーションが発火した場合、根本原因となる
図1および
図2に示すフローチャートのステップST118における解析ポイントの検討(X,Y,Zを特定するモニタ個所の切り替え)を複数回行うことになる。その結果、アサーション発火時のデバッグ効率が悪くなる。
【0043】
このように、
図1〜
図4を参照して説明した半導体集積回路の検証方法によるハードウェアの実機評価では、評価対象である回路が誤った動作をしている場合、問題の発見および原因の特定に大きな手間と長時間を要することになっている。
【0044】
以下、本実施例の半導体集積回路および半導体集積回路の検証方法を、添付図面を参照して詳述する。
【0045】
図5および
図6は、半導体集積回路の検証方法の一実施例を説明するためのフローチャートであり、モニタ回路組み込み型アサーション回路を使用したハードウェアの解析フロー(実機評価処理)を示すものである。
【0046】
ここで、ステップST1,ST2,ST6〜ST10,ST12,ST13,ST16およびST17の処理は、開発者の作業(手動)として行われ、ステップST3〜ST5,ST11,ST14およびST15の処理は、計算機による処理(自動)として行われる。
【0047】
まず、半導体集積回路のハードウェアの実機評価処理が開始(START)すると、ステップST1において、論理シミュレーションアサーション情報を作成し、ステップST2に進んで、ハードウェア搭載アサーションを選定する。なお、ハードウェアの実機評価処理の開始により、ステップST1の処理と共に、ステップST8において、評価対象設計データ(RTL)の作成も行う。
【0048】
ステップST2において、ハードウェア搭載アサーションを選定すると、ステップST3に進んで、ハードウェア搭載アサーション情報を作成して、ステップST4およびST5に進む。ここで、本実施例において、ステップST3のハードウェア搭載アサーション情報の作成処理は、計算機の処理として自動で行われる。
【0049】
なお、ステップST1で作成される論理シミュレーションアサーション情報の例、および、ステップST3で自動作成されるハードウェア搭載アサーション情報の例は、後に、
図7および
図8を参照して詳述する。
【0050】
ステップST4では、ハードウェア搭載アサーション情報をRTL変換し、さらに、ステップST6に進んで、解析用アサーション回路(RTL)を生成する。また、ステップST5では、モニタ回路を生成する。
【0051】
ここで、本実施例では、ステップST4におけるハードウェア搭載アサーション情報のRTL変換処理だけでなく、ステップST5におけるモニタ回路の生成処理も、計算機の処理として自動で行われる。ステップST5において、モニタ回路を生成すると、ステップST7に進んで、解析用モニタ回路(RTL)を生成する。
【0052】
すなわち、ハードウェアに搭載するアサーション回路(解析用アサーション回路)は、論理シミュレーションで適用しているアサーションを合成可能な回路形式に変換するが、この処理は、ステップST1〜ST4およびST6により行われる。さらに、ハードウェアに搭載するモニタ回路(解析用モニタ回路)の変換処理は、ステップST1〜ST3,ST5およびST7により行われる。
【0053】
このように、本実施例によれば、モニタ回路は、論理シミュレーションから得られるアサーション情報に基づいて自動生成されるため、解析の度に発生していたモニタ回路の作成および修正の作業を不要とすることができる。
【0054】
さらに、ステップST9に進んで、ステップST6による解析用アサーション回路(RTL)、ステップST7による解析用モニタ回路(RTL)、および、ステップST8による評価対象設計データ(RTL)から論理組み上げを行い、ステップST10に進む。
【0055】
ステップST10では、半導体集積回路(例えば、FPGA)に搭載する論理(RTL)を生成し、さらに、ステップST11に進んで、インプリメンテーションを生成し、そして、ステップST12に進む。
【0056】
ここで、本実施例において、ステップST9の論理組み上げ処理には、ステップST7の解析用モニタ回路が組み込まれ、アサーション発火時に使用する解析情報がトレースできていることになるため、そのまま原因を特定することが可能になる。
【0057】
すなわち、ステップST10で生成されるFPGA搭載論理(ハードウェア搭載論理)には、論理シミュレーションから得られるアサーション情報に基づいたアサーション毎の解析ポイントが予め特定して組み込まれている。
【0058】
これにより、アサーションエラーが発生した時、解析情報を直ちに得ることができるため、原因の特定を容易に行うことが可能になる。さらに、解析のためのモニタ回路の追加作業が発生しないためインプリメント作業を不要とすることができる。
【0059】
ステップST12では、インプリメンテーション後のデータを生成し、ステップST13に進んで、そのインプリメンテーション後のデータをハードウェアに搭載する。なお、対象とする半導体集積回路は、FPGAに限定されるものではなく、ASIC等であってもよい。
【0060】
すなわち、ステップST10で生成されたFPGA搭載論理は、
図1および
図2を参照して説明したのと同様に、ステップST11〜ST13により、インプリメンテーション(論理合成やP&Rなど)を行った後、ハードウェアに搭載する。
【0061】
さらに、ステップST14に進んで、評価を実行し、ステップST15に進んで、結果(エラー信号情報)を得る。ここで、ステップST14における評価実行は、例えば、ハードウェア評価ボードを使用して評価を実行し、意図しない動作が発生した場合にアサーションがエラーとして外部端子を経由してエラーを通知する。
【0062】
そして、ステップST16に進んで、ステップST14で得られた結果におけるエラー有無の判定を行い、エラーが無いと判定すると、ハードウェアの実機評価処理を終了(END)し、エラーが有ると判定すると、ステップST17に進む。
【0063】
ここで、ステップST14で評価実行する、ハードウェアに搭載されたインプリメンテーション後のデータには、前述したように、ステップST9の論理組み上げ処理により、ステップST7の解析用モニタ回路が組み込まれている。
【0064】
すなわち、アサーション発火時には、予め解析情報がトレースできていることになるため、ステップST17では、そのまま原因を特定することが可能になる。なお、ステップST17において、エラーが有ると判定された結果における原因の特定が困難な(不特定の)場合は、そもそもハードウェアの実機評価処理が不要であるため、そのまま処理を終了(END)する。
【0065】
本実施例によれば、アサーション解析に使用する情報を事前に取得しているため、シミュレーション検証時に得られる各アサーション発火時のモニタリングポイント情報に基づいて解析を行うことができ、解析のためのインプリメンテーション作業が不要になる。
【0066】
また、搭載するアサーション情報およびモニタリングポイント情報を入力とし、ハードウェアに搭載するモニタ回路を計算機により自動生成することができ、開発者による作業(手動)を不要とすることができる。
【0067】
さらに、後述するように、アサーション発火情報を内部のRAM(Random Access Memory)に保持することで、外部端子リソースを大量に消費することなく、また、外部端子要因により許容される搭載アサーション数の限度を無くすことが可能になる。
【0068】
図7は、
図5および
図6に示す半導体集積回路の検証方法のフローチャートにおける論理シミュレーションアサーション情報の一例を説明するための図であり、上述したステップST1で作成される論理シミュレーションアサーション情報の一例を示すものである。
【0069】
図7に示されるように、論理シミュレーションアサーション情報は、例えば、アサーションID(IDentification),アサーション属性,アクティブ回数,ファイル回数,アサーション条件および機能カバレッジ情報を含む。また、アサーション条件は、例えば、入力の信号名およびビット幅,信号のサイクルやタイプ並びにその他の条件を含む。
【0070】
このように、論理アサーション情報には、論理シミュレーションにおけるアサーション情報や機能カバレッジ情報などが含まれ、この情報に基づいてハードウェア搭載アサーション情報を作成する。
【0071】
図8は、
図5および
図6に示す半導体集積回路の検証方法のフローチャートにおけるハードウェア搭載アサーション情報の一例を説明するための図であり、上述したステップST3で自動作成されるハードウェア搭載アサーション情報の一例を示すものである。
【0072】
図8に示されるように、ハードウェア搭載アサーション情報は、例えば、モニタ取得優先順位,アサーションID,アサーション信号(A0,A1,…)およびアサーション条件を含む。
【0073】
ここで、アサーション条件は、例えば、
図7に示す論理シミュレーションアサーション情報と同様のものとされている。また、モニタ取得優先順位は、例えば、ステップST5で行われるモニタ回路の自動生成処理における優先順を示し、その優先順に従ってモニタ回路に搭載するアサーションを規定する。
【0074】
以上において、
図7に示す論理シミュレーションアサーション情報は、および、
図8に示すハードウェア搭載アサーション情報は、単なる例であり、様々な変形および変更が可能なのはいうまでもない。
【0075】
図9は、
図5および
図6に示す半導体集積回路の検証方法のフローチャートにおけるモニタ回路の生成処理(ステップST5)の一例を説明するためのフローチャートである。
図9に示されるように、ステップST5は、ステップ(サブステップ)ST51〜ST54を含む。
【0076】
まず、ステップST3において、ハードウェア搭載アサーション情報を自動作成すると、ステップST5におけるステップ51に進んで、アサーション情報を取得して、ステップST52に進む。
【0077】
ここで、ステップ51では、例えば、
図8を参照して説明したハードウェア搭載アサーション情報からモニタ回路の生成に使用する情報を取得するが、モニタ取得優先順位の高いものから順に処理する。なお、ステップ51で取得するアサーション情報は、例えば、アサーション信号,入力情報(入力の信号名およびビット幅)およびサイクル数である。
【0078】
ステップST52では、ステップ51からのアサーション情報と雛型RTLを受け取ってRTLの更新(マージン処理)を行い、ステップST53に進んで、アサーション情報の有無を判定する。
【0079】
ここで、雛型RTLは、後述する
図11におけるモニタデータサンプリング部15,16、モニタセレクト制御部14、イベント検出部11、テーブルデータメモリ12およびアドレス制御部13を含むモニタ回路(ハードウェア)10に対応する。なお、モニタデータサンプリング部15,16は、それぞれ複数のレジスタを含む。
【0080】
すなわち、ステップST52では、例えば、ステップ51で取得したアサーション信号,入力情報およびサイクル数に基づいて、雛形RTLをベースとし、その雛形RTLに対してモニタ処理を追加して、RTLの更新を行う。これにより、実際のアサーション回路121,122に対応したRTL更新処理完了論理がモニタ回路10に搭載されることになる。
【0081】
ステップST53において、アサーション情報が有ると判定すると、ステップST51に戻って同様の処理を繰り返し、アサーション情報が無いと判定すると、ステップST54に進む。
【0082】
すなわち、ステップST53では、アサーション情報が無いと判定するまで、優先順位に基づいた情報を取得してステップST51およびST52の処理を繰り返し、雛型RTLに対してモニタ処理を追加してRTLの更新を行う。この処理をハードウェア搭載アサーション情報が無くなるまで繰り返し行う。
【0083】
そして、ハードウェア搭載アサーション情報が無くなれば、ステップST54に進んで、各ブロックのRTLを組み上げ、さらに、ステップST7に進んで、解析用モニタ回路(RTL)を生成する。
【0084】
ここで、ステップST54では、雛型RTLを更新したRTL更新処理完了論理が入力され、実際のアサーション回路121,122に対応したRTL更新処理完了論理がモニタ回路10に搭載され、モニタ回路の組み上げ処理が行われる。
【0085】
なお、RTL更新処理完了論理は、モニタデータサンプリング部15,16、モニタセレクト制御部14、イベント検出部11、テーブルデータメモリ12およびアドレス制御部13を含むモニタ回路10に対応する。
【0086】
図10は、
図5および
図6に示す半導体集積回路の検証方法のフローチャートにおけるFPGA搭載論理を実現するハードウェア構成の一例を示すブロック図であり、半導体集積回路(FPGA搭載論理部)1の一例を示すものである。
【0087】
図10に示されるように、半導体集積回路1は、評価対象論理回路101、評価対象論理回路101のシミュレーション検証を行うための複数のアサーション回路121,122、モニタ回路10、および、メモリ(RAM)20を有する。
【0088】
なお、
図10では、アサーション回路は、2つだけ(121,122)描かれているが、さらに多数であってもよい。また、評価対象論理回路101は、半導体集積回路1において、評価対象となる回路(ロジック部)を示す。
【0089】
ところで、半導体集積回路1において、アサーション回路(アサーション)121,122が多数存在する場合、アサーション出力が増加するだけでなく、関連するモニタ回路10の出力信号(モニタ信号)も増加する。
【0090】
そこで、本実施例では、モニタ回路10の出力信号を内部のRAM20に保持しておき、所定のアサーション回路121,122に対応した信号を出力するようになっている。すなわち、アサーション発火イベントを確認し、任意のアサーション(アサーション回路)が発火していれば、そのアサーションに対応するデータ(解析情報)をRAM20から読み出すことにより解析を行う。
【0091】
これにより、半導体集積回路の出力端子数(外部出力信号本数)による制限を受けることなく、複数のアサーション回路を搭載することが可能になる。そして、本実施例によれば、モニタ回路10により、アサーション発火時に使用する解析情報が予めトレースできているため、アサーション発火時には、そのまま原因を特定することが可能になる。
【0092】
図11は、半導体集積回路の一実施例を示すブロック図である。
図11に示されるように、半導体集積回路1は、モニタ回路10およびRAM20を含む。RAM20は、RAMコア21および読み出し制御部22を含む。
【0093】
モニタ回路10は、イベント検出部11,テーブルデータメモリ12,アドレス制御部13,モニタセレクト制御部14およびモニタデータサンプリング部15,16を含む。ここで、アサーション(アサーション回路121,122)の数が増加すると、それに対応してモニタデータサンプリング部15,16の数も増加する。
【0094】
イベント検出部11には、アサーション信号A0,A1が入力され、外部にイベント発生通知信号Sicを出力すると共に、モニタデータサンプリング部15,16に対して、データの保持を制御するデータ保持制御信号CSd0,CSd1を出力する。
【0095】
イベント検出部11は、さらに、モニタデータサンプリング部15,16の出力のいずれかを選択するモニタセレクト信号Smsを出力すると共に、テーブルデータメモリ12に対してアドレス信号Sadを出力する。なお、イベント検出部11は、アドレス制御部13からの終了通知信号Senを受け取るようになっている。
【0096】
テーブルデータメモリ12は、アドレス信号Sadを受け取り、そのアドレスに対応するアサーションIDおよびビット幅(有効ビット数)のデータDaを出力すると共に、サイクル数のデータDbをアドレス制御部13およびモニタセレクト制御部14に出力する。
【0097】
アドレス制御部13は、サイクル数のデータDbを受け取り、RAMコア21のアドレスを制御するアドレス制御信号CSaを出力すると共に、全てのサイクルが終了したときに終了通知信号Senをイベント検出部11に出力する。
【0098】
モニタセレクト制御部14は、サイクル数のデータDbを受け取り、各モニタデータサンプリング部15,16におけるデータ出力を選択するモニタセレクト制御信号CSmを出力する。
【0099】
モニタデータサンプリング部15,16は、それぞれアサーションに対応するモニタ信号AM0,AM1を受け取って保持し、前述したイベント検出部11からのデータ保持制御信号CSd0,CSd1に従って、その保持された信号(モニタデータ)の制御を行う。
【0100】
モニタセレクト信号Smsにより選択されたモニタデータサンプリング部15,16の出力(モニタデータ)Dmは、テーブルデータメモリ12から出力されるアサーションIDおよびビット幅のデータDaと共に、RAM20(RAMコア21)に入力される。
【0101】
ここで、
図11に示されるように、RAMコア21に格納されるデータフォーマットは、例えば、先頭データ,アサーションID(アサーション番号),ビット幅(有効ビット数)およびモニタデータを含む。RAMコア21に格納されたデータは、読み出し制御部22を介して読み出しモニタデータDmrとして外部(ハードウェアデバッガ、ツール)に出力される。
【0102】
さらに、アサーションに関する情報を内部のRAM20に保持し、解析時に読み出せるようにすることで、外部端子数に制限されることなく複数のアサーション回路を搭載することが可能になる。
【0103】
図12は、
図11に示す半導体集積回路におけるハードウェア搭載アサーション情報の一例を示す図である。
【0104】
図11および
図12に示されるように、まず、通常時(アサーション発火イベントを検出しないとき)において、各アサーションに対応するモニタデータ(AM0,AM1)をモニタデータサンプリング部15,16でサンプリングする。このとき、モニタ回路10における他の回路は動作していない。
【0105】
次に、イベント検出時(アサーション発火イベントを検出したとき)において、イベント検出部11は、対応するアサーション発火時点のモニタデータサンプリング部15,16のデータを保持する。
【0106】
すなわち、モニタセレクト信号Smsにより対応するモニタデータサンプリング部15,16の出力が選択されると共に、アドレス信号Sadにより対応するアサーションIDおよびビット幅(Da)並びにサイクル数(Db)がテーブルデータメモリ12から出力される。
【0107】
ここで、サイクル数のデータDbは、アドレス制御部13およびモニタセレクト制御部14に入力され、モニタデータサンプリング部に保持されたデータ(Dm)をRAM20に書きこむ処理が起動される。
【0108】
さらに、アサーションIDおよびビット幅のデータDaは、モニタセレクト信号Smsにより選択されたモニタデータサンプリング部15,16の出力(モニタデータ)Dmと共に、RAM20に入力される。
【0109】
また、書き込みが終了すると、イベント検出部11には、アドレス制御部13からの終了通知信号Senが入力され、外部にイベント発生通知信号Sicが出力される。そして、外部のハードウェアデバッガ等は、イベント発生通知信号Sicを検出したらモニタ読出端子P0を介して読み出しモニタデータDmrを読み出す。なお、モニタ読出端子P0は、複数個設けて複数ビットのデータを並列にデータ読み出すことができるのはもちろんである。
【0110】
このように、本実施例によれば、アサーションに関する情報を内部のRAM20に保持し、解析時に読み出せるようになっており、半導体集積回路の外部端子数に制限されることなく複数のアサーション回路を搭載することが可能になる。以上において、本実施例の半導体集積回路は、FPGAに限定されるものではなく、ASICを始めとして、様々な回路であってもよい。
【0111】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【0112】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
論理検証が行われる評価対象論理回路と、
前記評価対象論理回路のシミュレーション検証を行うためのアサーション回路と、
前記アサーション回路が発火したときに解析情報を出力するモニタ回路と、を有し、
前記モニタ回路は、
アサーション信号を受け取ってイベントを検出するイベント検出部と、
アサーション解析に使用するアサーション情報を、前記アサーション回路に対応させて事前に保持するモニタデータサンプリング部と、
シミュレーション検証時に得られるアサーション回路の発火時のモニタリングポイント情報に基づいて、発火した前記アサーション回路に対応するアサーション情報を保持するように、前記モニタデータサンプリング部を制御する制御回路と、を含む、
ことを特徴とする半導体集積回路。
【0113】
(付記2)
さらに、
前記発火したアサーション回路に対応する前記モニタデータサンプリング部のアサーション情報、および、前記制御回路の出力データを格納するメモリを有する、
ことを特徴とする付記1に記載の半導体集積回路。
【0114】
(付記3)
前記制御回路の出力データは、前記アサーション回路の発火時のモニタリングポイント情報を含む、
ことを特徴とする付記2に記載の半導体集積回路。
【0115】
(付記4)
前記制御回路は、
前記イベント検出部からのアドレス信号を受け取り、そのアドレスに対応するアサーションIDおよびビット幅の第1データ、並びに、サイクル数の第2データを出力するテーブルメモリと、
前記第2データを受け取って、前記メモリのアドレスを制御するアドレス制御部と、
前記第2データを受け取って、前記各モニタデータサンプリング部におけるデータ出力を選択制御するモニタセレクト制御部と、を含む、
ことを特徴とする付記2または付記3に記載の半導体集積回路。
【0116】
(付記5)
前記アドレス制御部は、全てのサイクルが終了したときに終了通知信号を前記イベント検出部に出力する、
ことを特徴とする付記4に記載の半導体集積回路。
【0117】
(付記6)
前記半導体集積回路は、FPGAまたはASICである、
ことを特徴とする付記1乃至付記5のいずれか1項に記載の半導体集積回路。
【0118】
(付記7)
前記アサーション情報は、アサーション信号、入力の信号名およびビット幅、並びに、サイクル数を含む、
ことを特徴とする付記1乃至付記6のいずれか1項に記載の半導体集積回路。
【0119】
(付記8)
アサーション解析に使用するアサーション情報を、各アサーションに対応させて事前に保持し、
シミュレーション検証時に得られる発火したアサーションに対応するモニタリングポイント情報に基づいて、前記事前に保持されたアサーション情報を使用して評価対象論理の論理検証を行う、
ことを特徴とする半導体集積回路の検証方法。
【0120】
(付記9)
前記発火したアサーションに対応するモニタリングポイント情報および前記アサーション情報をメモリに格納する、
ことを特徴とする付記8に記載の半導体集積回路の検証方法。
【0121】
(付記10)
前記アサーション情報は、アサーション信号、入力の信号名およびビット幅、並びに、サイクル数を含む、
ことを特徴とする付記8または付記9に記載の半導体集積回路の検証方法。
【0122】
(付記11)
ハードウェアに搭載するモニタ回路を、前記アサーション情報および前記モニタリングポイント情報を入力として自動生成する、
ことを特徴とする付記8乃至付記10のいずれか1項に記載の半導体集積回路の検証方法。