(57)【要約】【課題】回路の論理検証処理を短時間で容易に行うことができる半導体集積回路および半導体集積回路の検証方法の提供を図る。【解決手段】論理検証が行われる評価対象論理回路(101)と、前記評価対象論理回路のシミュレーション検証を行うためのアサーション回路(121,122)と、前記アサーション回路が発火したときに解析情報を出力するモニタ回路10と、を有し、前記モニタ回路は、アサーション信号を受け取ってイベントを検出するイベント検出部11と、アサーション解析に使用するアサーション情報を、前記アサーション回路に対応させて事前に保持するモニタデータサンプリング部15,16と、シミュレーション検証時に得られるアサーション回路の発火時のモニタリングポイント情報に基づいて、発火した前記アサーション回路に対応するアサーション情報を保持するように、前記モニタデータサンプリング部を制御する制御回路12〜14と、を含む。【選択図】図１１
2015069549.tif 000002
【特許請求の範囲】
【請求項１】
論理検証が行われる評価対象論理回路と、
前記評価対象論理回路のシミュレーション検証を行うためのアサーション回路と、
前記アサーション回路が発火したときに解析情報を出力するモニタ回路と、を有し、
前記モニタ回路は、
アサーション信号を受け取ってイベントを検出するイベント検出部と、
アサーション解析に使用するアサーション情報を、前記アサーション回路に対応させて事前に保持するモニタデータサンプリング部と、
シミュレーション検証時に得られるアサーション回路の発火時のモニタリングポイント情報に基づいて、発火した前記アサーション回路に対応するアサーション情報を保持するように、前記モニタデータサンプリング部を制御する制御回路と、を含む、
ことを特徴とする半導体集積回路。
【請求項２】
さらに、
前記発火したアサーション回路に対応する前記モニタデータサンプリング部のアサーション情報、および、前記制御回路の出力データを格納するメモリを有する、
ことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記制御回路は、
前記イベント検出部からのアドレス信号を受け取り、そのアドレスに対応するアサーションＩＤおよびビット幅の第１データ、並びに、サイクル数の第２データを出力するテーブルメモリと、
前記第２データを受け取って、前記メモリのアドレスを制御するアドレス制御部と、
前記第２データを受け取って、前記各モニタデータサンプリング部におけるデータ出力を選択制御するモニタセレクト制御部と、を含む、
ことを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
アサーション解析に使用するアサーション情報を、各アサーションに対応させて事前に保持し、
シミュレーション検証時に得られる発火したアサーションに対応するモニタリングポイント情報に基づいて、前記事前に保持されたアサーション情報を使用して評価対象論理の論理検証を行う、
ことを特徴とする半導体集積回路の検証方法。
【請求項５】
前記発火したアサーションに対応するモニタリングポイント情報および前記アサーション情報をメモリに格納する、
ことを特徴とする請求項４に記載の半導体集積回路の検証方法。
【請求項６】
ハードウェアに搭載するモニタ回路を、前記アサーション情報および前記モニタリングポイント情報を入力として自動生成する、
ことを特徴とする請求項４または請求項５に記載の半導体集積回路の検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で言及する実施例は、半導体集積回路および半導体集積回路の検証方法に関する。
【背景技術】
【０００２】
近年、半導体集積回路(チップ：ＬＳＩ)の大規模化および複雑化に伴って、論理検証のためのシミュレーションおよびシミュレーション結果の確認に要する時間が増大している。そこで、シミュレーションおよびシミュレーション結果の確認を高速化するために、シミュレーション検証でアサーション(Assertion)を使用することが行われている。
【０００３】
ここで、アサーションとは、例えば、シミュレーション検証で使用される機能のことで、回路仕様として満たされるべき信号条件を記述し、条件が満たされない場合や例外条件発生を検知した時にエラーを出力する。また、アサーションがエラーを出力することを、アサーションが発火するという。なお、アサーションは、通常、回路記述とは異なる記述方法が準備されており、オリジナルの回路への影響はない。
【０００４】
ところで、従来、アサーションを使用して動作検証を行うアサーションベース検証が注目され、様々な提案がなされている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−０８１７６０号公報
【特許文献２】特開２０１０−１４０２５５号公報
【特許文献３】特開２００９−０８６８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述のように、様々なアサーションベース検証が提案されているが、例えば、アサーションが多数存在する場合、アサーション出力だけでなく関連するモニタ信号も増加する。そのため、搭載するアサーションの数は、例えば、半導体集積回路の外部端子の数により制限されることになる。
【０００７】
また、搭載したアサーションが発火した場合、アサーション情報に基づいて回路等を解析しながら原因(根本原因)を探るため、半導体集積回路の検証処理(作業)を短時間で容易に行うことが困難になっている。
【課題を解決するための手段】
【０００８】
一実施形態によれば、論理検証が行われる評価対象論理回路と、前記評価対象論理回路のシミュレーション検証を行うためのアサーション回路と、前記アサーション回路が発火したときに解析情報を出力するモニタ回路と、を有する半導体集積回路が提供される。
【０００９】
前記モニタ回路は、アサーション信号を受け取ってイベントを検出するイベント検出部と、アサーション解析に使用するアサーション情報を、前記アサーション回路に対応させて事前に保持するモニタデータサンプリング部と、制御回路と、を含む。
【００１０】
前記制御回路は、シミュレーション検証時に得られるアサーション回路の発火時のモニタリングポイント情報に基づいて、発火した前記アサーション回路に対応するアサーション情報を保持するように、前記モニタデータサンプリング部を制御する。
【発明の効果】
【００１１】
開示の半導体集積回路および半導体集積回路の検証方法は、回路の論理検証処理を短時間で容易に行うことができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、半導体集積回路の検証方法の一例を説明するためのフローチャート(その１)である。
【図２】図２は、半導体集積回路の検証方法の一例を説明するためのフローチャート(その２)である。
【図３】図３は、図１および図２に示す半導体集積回路の検証方法のフローチャートにおけるＦＰＧＡ搭載論理を実現するハードウェア構成の一例を示すブロック図である。
【図４】図４は、図３に示すＦＰＧＡ搭載論理を適用した半導体集積回路の検証方法における課題を説明するための図である。
【図５】図５は、半導体集積回路の検証方法の一実施例を説明するためのフローチャート(その１)である。
【図６】図６は、半導体集積回路の検証方法の一実施例を説明するためのフローチャート(その２)である。
【図７】図７は、図５および図６に示す半導体集積回路の検証方法のフローチャートにおける論理シミュレーションアサーション情報の一例を説明するための図である。
【図８】図８は、図５および図６に示す半導体集積回路の検証方法のフローチャートにおけるハードウェア搭載アサーション情報の一例を説明するための図である。
【図９】図９は、図５および図６に示す半導体集積回路の検証方法のフローチャートにおけるモニタ回路の生成処理の一例を説明するためのフローチャートである。
【図１０】図１０は、図５および図６に示す半導体集積回路の検証方法のフローチャートにおけるＦＰＧＡ搭載論理を実現するハードウェア構成の一例を示すブロック図である。
【図１１】図１１は、半導体集積回路の一実施例を示すブロック図である。
【図１２】図１２は、図１１に示す半導体集積回路におけるハードウェア搭載アサーション情報の一例を示す図である。
【発明を実施するための形態】
【００１３】
まず、半導体集積回路および半導体集積回路の検証方法の実施例を詳述する前に、図１〜図４を参照して、半導体集積回路の検証方法の例およびその課題を説明する。
【００１４】
図１および図２は、半導体集積回路の検証方法の一例を説明するためのフローチャートであり、アサーション回路を使用したハードウェアの解析フロー(実機評価処理)を示すものである。
【００１５】
ここで、ステップＳＴ１０１〜ＳＴ１０３，ＳＴ１０６，ＳＴ１０８〜ＳＴ１１０，ＳＴ１１２，ＳＴ１１３およびＳＴ１１６〜ＳＴ１１９の処理は、開発者の作業(手動)として行われる。また、ステップＳＴ１０４，ＳＴ１１１，ＳＴ１１４およびＳＴ１１５の処理は、計算機(ツール等)による処理(自動)として行われる。
【００１６】
まず、半導体集積回路のハードウェアの実機評価処理が開始(ＳＴＡＲＴ)すると、ステップＳＴ１０１において、論理シミュレーションアサーション情報を作成し、ステップＳＴ１０２に進んで、ハードウェア搭載アサーションを選定する。
【００１７】
なお、ハードウェアの実機評価処理の開始により、ステップＳＴ１０１の処理と共に、ステップＳＴ１０８において、評価対象設計データ(ＲＴＬ：Register Transfer Level)の作成も行う。
【００１８】
ステップＳＴ１０２において、ハードウェア搭載アサーションを選定すると、ステップＳＴ１０３に進んで、ハードウェア搭載アサーション情報を作成して、ステップＳＴ１０４に進む。ステップＳＴ１０４では、ハードウェア搭載アサーション情報をＲＴＬ変換し、さらに、ステップＳＴ１０６に進んで、解析用アサーション回路(ＲＴＬ)を生成する。
【００１９】
すなわち、ハードウェアに搭載するアサーション回路(解析用アサーション回路)は、論理シミュレーションで適用しているアサーションを合成可能な回路形式に変換するが、この処理は、ステップＳＴ１０１〜ＳＴ１０４およびＳＴ１０６により行われる。
【００２０】
そして、ステップＳＴ１０９において、ステップＳＴ１０６による解析用アサーション回路(ＲＴＬ)、および、ステップＳＴ１０８による評価対象設計データ(ＲＴＬ)から論理組み上げを行う。
【００２１】
すなわち、ステップＳＴ１０９では、変換後のアサーション回路(解析用アサーション回路)と、評価対象である設計データ(評価対象回路)をハードウェア搭載論理として組み上げ、そして、ステップＳＴ１１０に進む。
【００２２】
ステップＳＴ１１０では、半導体集積回路(例えば、ＦＰＧＡ：Field-Programmable Gate Array)に搭載する論理(ＲＴＬ)を生成し、さらに、ステップＳＴ１１１に進んで、インプリメンテーションを生成し、そして、ステップＳＴ１１２に進む。
【００２３】
ステップＳＴ１１２では、インプリメンテーション後のデータを生成し、ステップＳＴ１１３に進んで、そのインプリメンテーション後のデータをハードウェアに搭載する。なお、対象とする半導体集積回路は、ＦＰＧＡに限定されるものではなく、ＡＳＩＣ(Application Specific Integrated Circuit)等であってもよい。
【００２４】
すなわち、ステップＳＴ１１０で生成されたＦＰＧＡ搭載論理は、ステップＳＴ１１１〜ＳＴ１１３により、インプリメンテーション(論理合成やＰ＆Ｒ(Place and Route)など)を行った後、ハードウェアに搭載する。
【００２５】
さらに、ステップＳＴ１１４に進んで、評価を実行し、ステップＳＴ１１５に進んで、結果(エラー信号情報)を得る。ここで、ステップＳＴ１１４における評価実行は、例えば、ハードウェア評価ボードを使用して評価を実行し、意図しない動作が発生した場合にアサーションがエラーとして外部端子を経由してエラーを通知する。
【００２６】
そして、ステップＳＴ１１６に進んで、ステップＳＴ１１４で得られた結果におけるエラー有無の判定を行い、エラーが無いと判定すると、ハードウェアの実機評価処理を終了(ＥＮＤ)し、エラーが有ると判定すると、ステップＳＴ１１７に進む。
【００２７】
ステップＳＴ１１７では、エラーが有ると判定された結果における原因を特定したか否かを判定し、原因を特定したと判定すると、ハードウェアの実機評価処理を終了(ＥＮＤ)する。
【００２８】
一方、ステップＳＴ１１７で、エラーが有るとされた結果において原因の特定が困難な(不特定の)場合には、ステップＳＴ１１８およびＳＴ１１９を経由してステップＳＴ１１０に戻り、同様の処理を行う。
【００２９】
ここで、ステップＳＴ１１８では、解析ポイントの検討(トレース情報の選定)を行い、ステップＳＴ１１９では、モニタ部の追加を行う。
【００３０】
すなわち、ステップＳＴ１１６〜ＳＴ１１９は、ステップＳＴ１１５で得られたエラー信号情報に基づいて、エラーが発生したアサーションを特定して原因となる個所を調査する。そして、原因の特定が困難な場合には、モニタ部２０３を生成して再度インプリメンテーションを行い、再度評価を実行して確認するというループを回し、原因の特定を行う。
【００３１】
図３は、図１および図２に示す半導体集積回路の検証方法のフローチャートにおけるＦＰＧＡ搭載論理(ＳＴ１１０)を実現するハードウェア構成の一例を示すブロック図であり、半導体集積回路(ＦＰＧＡ搭載論理部)２００の一例を示すものである。
【００３２】
図３に示されるように、半導体集積回路２００は、評価対象論理回路２０１、評価対象論理回路２０１のシミュレーション検証を行うための複数のアサーション回路２２１，２２２、および、モニタ部２０３を有する。
【００３３】
なお、図３では、アサーション回路は、２つだけ(２２１，２２２)描かれているが、さらに多数であってもよい。また、評価対象論理回路２０１は、半導体集積回路２００において、論理検証対象となる回路(ロジック部)を示す。
【００３４】
半導体集積回路２００において、アサーション回路(アサーション)２２１，２２２が多数存在する場合、アサーション出力が増加するだけでなく、関連するモニタ部２０３の出力信号(モニタ信号)も増加する。
【００３５】
ここで、通常、半導体集積回路の出力端子数(外部出力信号本数)は限られており、全ての信号を出力することが困難なため、搭載するアサーションの数を絞り込むことになる。
【００３６】
すなわち、図１および図２に示す半導体集積回路の検証方法のフローチャートのステップＳＴ１０２におけるハードウェア搭載アサーション選定の数が制限され、その結果、アサーションの搭載による効果が小さくなってしまう。
【００３７】
また、搭載したアサーションが発火した場合には、例えば、アサーション情報に基づいて解析ポイントを特定し、そして、モニタ部２０３を用いて解析を行うための情報を取得する。
【００３８】
さらに、モニタ部２０３の追加／修正の度にインプリメンテーションの再実行を行うことになるため、回路規模によっては、解析ＴＡＴ(Turn Around Time)の増大に繋がる。
【００３９】
すなわち、図１および図２に示す半導体集積回路の検証方法のフローチャートのステップＳＴ１１９におけるモニタ部２０３の追加(修正)の処理を、解析を行う度に行うことになり、アサーション発火時のデバッグ効率が低下する。さらに、解析ＴＡＴの増大により、インプリメンテーションの再実行による解析効率の低下を招くことにもなる。
【００４０】
図４は、図３に示すＦＰＧＡ搭載論理を適用した半導体集積回路の検証方法における課題を説明するための図である。図４に示されるように、例えば、搭載したアサーション(アサーション回路２０２)が発火した場合、アサーション情報をもとに回路等を解析しながら原因(Ｘ，Ｙ，Ｚ)を探ることになる。
【００４１】
すなわち、アサーション回路２０２からエラー信号が出力されるのは、例えば、信号Ａ，Ｂに違反が生じた場合であるが、その信号Ａ，Ｂに違反が生じる根本原因は、評価対象論理回路２０１に存在している。
【００４２】
従って、搭載したアサーションが発火した場合、根本原因となる図１および図２に示すフローチャートのステップＳＴ１１８における解析ポイントの検討(Ｘ，Ｙ，Ｚを特定するモニタ個所の切り替え)を複数回行うことになる。その結果、アサーション発火時のデバッグ効率が悪くなる。
【００４３】
このように、図１〜図４を参照して説明した半導体集積回路の検証方法によるハードウェアの実機評価では、評価対象である回路が誤った動作をしている場合、問題の発見および原因の特定に大きな手間と長時間を要することになっている。
【００４４】
以下、本実施例の半導体集積回路および半導体集積回路の検証方法を、添付図面を参照して詳述する。
【００４５】
図５および図６は、半導体集積回路の検証方法の一実施例を説明するためのフローチャートであり、モニタ回路組み込み型アサーション回路を使用したハードウェアの解析フロー(実機評価処理)を示すものである。
【００４６】
ここで、ステップＳＴ１，ＳＴ２，ＳＴ６〜ＳＴ１０，ＳＴ１２，ＳＴ１３，ＳＴ１６およびＳＴ１７の処理は、開発者の作業(手動)として行われ、ステップＳＴ３〜ＳＴ５，ＳＴ１１，ＳＴ１４およびＳＴ１５の処理は、計算機による処理(自動)として行われる。
【００４７】
まず、半導体集積回路のハードウェアの実機評価処理が開始(ＳＴＡＲＴ)すると、ステップＳＴ１において、論理シミュレーションアサーション情報を作成し、ステップＳＴ２に進んで、ハードウェア搭載アサーションを選定する。なお、ハードウェアの実機評価処理の開始により、ステップＳＴ１の処理と共に、ステップＳＴ８において、評価対象設計データ(ＲＴＬ)の作成も行う。
【００４８】
ステップＳＴ２において、ハードウェア搭載アサーションを選定すると、ステップＳＴ３に進んで、ハードウェア搭載アサーション情報を作成して、ステップＳＴ４およびＳＴ５に進む。ここで、本実施例において、ステップＳＴ３のハードウェア搭載アサーション情報の作成処理は、計算機の処理として自動で行われる。
【００４９】
なお、ステップＳＴ１で作成される論理シミュレーションアサーション情報の例、および、ステップＳＴ３で自動作成されるハードウェア搭載アサーション情報の例は、後に、図７および図８を参照して詳述する。
【００５０】
ステップＳＴ４では、ハードウェア搭載アサーション情報をＲＴＬ変換し、さらに、ステップＳＴ６に進んで、解析用アサーション回路(ＲＴＬ)を生成する。また、ステップＳＴ５では、モニタ回路を生成する。
【００５１】
ここで、本実施例では、ステップＳＴ４におけるハードウェア搭載アサーション情報のＲＴＬ変換処理だけでなく、ステップＳＴ５におけるモニタ回路の生成処理も、計算機の処理として自動で行われる。ステップＳＴ５において、モニタ回路を生成すると、ステップＳＴ７に進んで、解析用モニタ回路(ＲＴＬ)を生成する。
【００５２】
すなわち、ハードウェアに搭載するアサーション回路(解析用アサーション回路)は、論理シミュレーションで適用しているアサーションを合成可能な回路形式に変換するが、この処理は、ステップＳＴ１〜ＳＴ４およびＳＴ６により行われる。さらに、ハードウェアに搭載するモニタ回路(解析用モニタ回路)の変換処理は、ステップＳＴ１〜ＳＴ３，ＳＴ５およびＳＴ７により行われる。
【００５３】
このように、本実施例によれば、モニタ回路は、論理シミュレーションから得られるアサーション情報に基づいて自動生成されるため、解析の度に発生していたモニタ回路の作成および修正の作業を不要とすることができる。
【００５４】
さらに、ステップＳＴ９に進んで、ステップＳＴ６による解析用アサーション回路(ＲＴＬ)、ステップＳＴ７による解析用モニタ回路(ＲＴＬ)、および、ステップＳＴ８による評価対象設計データ(ＲＴＬ)から論理組み上げを行い、ステップＳＴ１０に進む。
【００５５】
ステップＳＴ１０では、半導体集積回路(例えば、ＦＰＧＡ)に搭載する論理(ＲＴＬ)を生成し、さらに、ステップＳＴ１１に進んで、インプリメンテーションを生成し、そして、ステップＳＴ１２に進む。
【００５６】
ここで、本実施例において、ステップＳＴ９の論理組み上げ処理には、ステップＳＴ７の解析用モニタ回路が組み込まれ、アサーション発火時に使用する解析情報がトレースできていることになるため、そのまま原因を特定することが可能になる。
【００５７】
すなわち、ステップＳＴ１０で生成されるＦＰＧＡ搭載論理(ハードウェア搭載論理)には、論理シミュレーションから得られるアサーション情報に基づいたアサーション毎の解析ポイントが予め特定して組み込まれている。
【００５８】
これにより、アサーションエラーが発生した時、解析情報を直ちに得ることができるため、原因の特定を容易に行うことが可能になる。さらに、解析のためのモニタ回路の追加作業が発生しないためインプリメント作業を不要とすることができる。
【００５９】
ステップＳＴ１２では、インプリメンテーション後のデータを生成し、ステップＳＴ１３に進んで、そのインプリメンテーション後のデータをハードウェアに搭載する。なお、対象とする半導体集積回路は、ＦＰＧＡに限定されるものではなく、ＡＳＩＣ等であってもよい。
【００６０】
すなわち、ステップＳＴ１０で生成されたＦＰＧＡ搭載論理は、図１および図２を参照して説明したのと同様に、ステップＳＴ１１〜ＳＴ１３により、インプリメンテーション(論理合成やＰ＆Ｒなど)を行った後、ハードウェアに搭載する。
【００６１】
さらに、ステップＳＴ１４に進んで、評価を実行し、ステップＳＴ１５に進んで、結果(エラー信号情報)を得る。ここで、ステップＳＴ１４における評価実行は、例えば、ハードウェア評価ボードを使用して評価を実行し、意図しない動作が発生した場合にアサーションがエラーとして外部端子を経由してエラーを通知する。
【００６２】
そして、ステップＳＴ１６に進んで、ステップＳＴ１４で得られた結果におけるエラー有無の判定を行い、エラーが無いと判定すると、ハードウェアの実機評価処理を終了(ＥＮＤ)し、エラーが有ると判定すると、ステップＳＴ１７に進む。
【００６３】
ここで、ステップＳＴ１４で評価実行する、ハードウェアに搭載されたインプリメンテーション後のデータには、前述したように、ステップＳＴ９の論理組み上げ処理により、ステップＳＴ７の解析用モニタ回路が組み込まれている。
【００６４】
すなわち、アサーション発火時には、予め解析情報がトレースできていることになるため、ステップＳＴ１７では、そのまま原因を特定することが可能になる。なお、ステップＳＴ１７において、エラーが有ると判定された結果における原因の特定が困難な(不特定の)場合は、そもそもハードウェアの実機評価処理が不要であるため、そのまま処理を終了(ＥＮＤ)する。
【００６５】
本実施例によれば、アサーション解析に使用する情報を事前に取得しているため、シミュレーション検証時に得られる各アサーション発火時のモニタリングポイント情報に基づいて解析を行うことができ、解析のためのインプリメンテーション作業が不要になる。
【００６６】
また、搭載するアサーション情報およびモニタリングポイント情報を入力とし、ハードウェアに搭載するモニタ回路を計算機により自動生成することができ、開発者による作業(手動)を不要とすることができる。
【００６７】
さらに、後述するように、アサーション発火情報を内部のＲＡＭ(Random Access Memory)に保持することで、外部端子リソースを大量に消費することなく、また、外部端子要因により許容される搭載アサーション数の限度を無くすことが可能になる。
【００６８】
図７は、図５および図６に示す半導体集積回路の検証方法のフローチャートにおける論理シミュレーションアサーション情報の一例を説明するための図であり、上述したステップＳＴ１で作成される論理シミュレーションアサーション情報の一例を示すものである。
【００６９】
図７に示されるように、論理シミュレーションアサーション情報は、例えば、アサーションＩＤ(IDentification)，アサーション属性，アクティブ回数，ファイル回数，アサーション条件および機能カバレッジ情報を含む。また、アサーション条件は、例えば、入力の信号名およびビット幅，信号のサイクルやタイプ並びにその他の条件を含む。
【００７０】
このように、論理アサーション情報には、論理シミュレーションにおけるアサーション情報や機能カバレッジ情報などが含まれ、この情報に基づいてハードウェア搭載アサーション情報を作成する。
【００７１】
図８は、図５および図６に示す半導体集積回路の検証方法のフローチャートにおけるハードウェア搭載アサーション情報の一例を説明するための図であり、上述したステップＳＴ３で自動作成されるハードウェア搭載アサーション情報の一例を示すものである。
【００７２】
図８に示されるように、ハードウェア搭載アサーション情報は、例えば、モニタ取得優先順位，アサーションＩＤ，アサーション信号(Ａ０，Ａ１，…)およびアサーション条件を含む。
【００７３】
ここで、アサーション条件は、例えば、図７に示す論理シミュレーションアサーション情報と同様のものとされている。また、モニタ取得優先順位は、例えば、ステップＳＴ５で行われるモニタ回路の自動生成処理における優先順を示し、その優先順に従ってモニタ回路に搭載するアサーションを規定する。
【００７４】
以上において、図７に示す論理シミュレーションアサーション情報は、および、図８に示すハードウェア搭載アサーション情報は、単なる例であり、様々な変形および変更が可能なのはいうまでもない。
【００７５】
図９は、図５および図６に示す半導体集積回路の検証方法のフローチャートにおけるモニタ回路の生成処理(ステップＳＴ５)の一例を説明するためのフローチャートである。図９に示されるように、ステップＳＴ５は、ステップ(サブステップ)ＳＴ５１〜ＳＴ５４を含む。
【００７６】
まず、ステップＳＴ３において、ハードウェア搭載アサーション情報を自動作成すると、ステップＳＴ５におけるステップ５１に進んで、アサーション情報を取得して、ステップＳＴ５２に進む。
【００７７】
ここで、ステップ５１では、例えば、図８を参照して説明したハードウェア搭載アサーション情報からモニタ回路の生成に使用する情報を取得するが、モニタ取得優先順位の高いものから順に処理する。なお、ステップ５１で取得するアサーション情報は、例えば、アサーション信号，入力情報(入力の信号名およびビット幅)およびサイクル数である。
【００７８】
ステップＳＴ５２では、ステップ５１からのアサーション情報と雛型ＲＴＬを受け取ってＲＴＬの更新(マージン処理)を行い、ステップＳＴ５３に進んで、アサーション情報の有無を判定する。
【００７９】
ここで、雛型ＲＴＬは、後述する図１１におけるモニタデータサンプリング部１５，１６、モニタセレクト制御部１４、イベント検出部１１、テーブルデータメモリ１２およびアドレス制御部１３を含むモニタ回路(ハードウェア)１０に対応する。なお、モニタデータサンプリング部１５，１６は、それぞれ複数のレジスタを含む。
【００８０】
すなわち、ステップＳＴ５２では、例えば、ステップ５１で取得したアサーション信号，入力情報およびサイクル数に基づいて、雛形ＲＴＬをベースとし、その雛形ＲＴＬに対してモニタ処理を追加して、ＲＴＬの更新を行う。これにより、実際のアサーション回路１２１，１２２に対応したＲＴＬ更新処理完了論理がモニタ回路１０に搭載されることになる。
【００８１】
ステップＳＴ５３において、アサーション情報が有ると判定すると、ステップＳＴ５１に戻って同様の処理を繰り返し、アサーション情報が無いと判定すると、ステップＳＴ５４に進む。
【００８２】
すなわち、ステップＳＴ５３では、アサーション情報が無いと判定するまで、優先順位に基づいた情報を取得してステップＳＴ５１およびＳＴ５２の処理を繰り返し、雛型ＲＴＬに対してモニタ処理を追加してＲＴＬの更新を行う。この処理をハードウェア搭載アサーション情報が無くなるまで繰り返し行う。
【００８３】
そして、ハードウェア搭載アサーション情報が無くなれば、ステップＳＴ５４に進んで、各ブロックのＲＴＬを組み上げ、さらに、ステップＳＴ７に進んで、解析用モニタ回路(ＲＴＬ)を生成する。
【００８４】
ここで、ステップＳＴ５４では、雛型ＲＴＬを更新したＲＴＬ更新処理完了論理が入力され、実際のアサーション回路１２１，１２２に対応したＲＴＬ更新処理完了論理がモニタ回路１０に搭載され、モニタ回路の組み上げ処理が行われる。
【００８５】
なお、ＲＴＬ更新処理完了論理は、モニタデータサンプリング部１５，１６、モニタセレクト制御部１４、イベント検出部１１、テーブルデータメモリ１２およびアドレス制御部１３を含むモニタ回路１０に対応する。
【００８６】
図１０は、図５および図６に示す半導体集積回路の検証方法のフローチャートにおけるＦＰＧＡ搭載論理を実現するハードウェア構成の一例を示すブロック図であり、半導体集積回路(ＦＰＧＡ搭載論理部)１の一例を示すものである。
【００８７】
図１０に示されるように、半導体集積回路１は、評価対象論理回路１０１、評価対象論理回路１０１のシミュレーション検証を行うための複数のアサーション回路１２１，１２２、モニタ回路１０、および、メモリ(ＲＡＭ)２０を有する。
【００８８】
なお、図１０では、アサーション回路は、２つだけ(１２１，１２２)描かれているが、さらに多数であってもよい。また、評価対象論理回路１０１は、半導体集積回路１において、評価対象となる回路(ロジック部)を示す。
【００８９】
ところで、半導体集積回路１において、アサーション回路(アサーション)１２１，１２２が多数存在する場合、アサーション出力が増加するだけでなく、関連するモニタ回路１０の出力信号(モニタ信号)も増加する。
【００９０】
そこで、本実施例では、モニタ回路１０の出力信号を内部のＲＡＭ２０に保持しておき、所定のアサーション回路１２１，１２２に対応した信号を出力するようになっている。すなわち、アサーション発火イベントを確認し、任意のアサーション(アサーション回路)が発火していれば、そのアサーションに対応するデータ(解析情報)をＲＡＭ２０から読み出すことにより解析を行う。
【００９１】
これにより、半導体集積回路の出力端子数(外部出力信号本数)による制限を受けることなく、複数のアサーション回路を搭載することが可能になる。そして、本実施例によれば、モニタ回路１０により、アサーション発火時に使用する解析情報が予めトレースできているため、アサーション発火時には、そのまま原因を特定することが可能になる。
【００９２】
図１１は、半導体集積回路の一実施例を示すブロック図である。図１１に示されるように、半導体集積回路１は、モニタ回路１０およびＲＡＭ２０を含む。ＲＡＭ２０は、ＲＡＭコア２１および読み出し制御部２２を含む。
【００９３】
モニタ回路１０は、イベント検出部１１，テーブルデータメモリ１２，アドレス制御部１３，モニタセレクト制御部１４およびモニタデータサンプリング部１５，１６を含む。ここで、アサーション(アサーション回路１２１，１２２)の数が増加すると、それに対応してモニタデータサンプリング部１５，１６の数も増加する。
【００９４】
イベント検出部１１には、アサーション信号Ａ０，Ａ１が入力され、外部にイベント発生通知信号Ｓicを出力すると共に、モニタデータサンプリング部１５，１６に対して、データの保持を制御するデータ保持制御信号ＣＳd0，ＣＳd1を出力する。
【００９５】
イベント検出部１１は、さらに、モニタデータサンプリング部１５，１６の出力のいずれかを選択するモニタセレクト信号Ｓmsを出力すると共に、テーブルデータメモリ１２に対してアドレス信号Ｓadを出力する。なお、イベント検出部１１は、アドレス制御部１３からの終了通知信号Ｓenを受け取るようになっている。
【００９６】
テーブルデータメモリ１２は、アドレス信号Ｓadを受け取り、そのアドレスに対応するアサーションＩＤおよびビット幅(有効ビット数)のデータＤａを出力すると共に、サイクル数のデータＤｂをアドレス制御部１３およびモニタセレクト制御部１４に出力する。
【００９７】
アドレス制御部１３は、サイクル数のデータＤｂを受け取り、ＲＡＭコア２１のアドレスを制御するアドレス制御信号ＣＳａを出力すると共に、全てのサイクルが終了したときに終了通知信号Ｓenをイベント検出部１１に出力する。
【００９８】
モニタセレクト制御部１４は、サイクル数のデータＤｂを受け取り、各モニタデータサンプリング部１５，１６におけるデータ出力を選択するモニタセレクト制御信号ＣＳmを出力する。
【００９９】
モニタデータサンプリング部１５，１６は、それぞれアサーションに対応するモニタ信号ＡＭ０，ＡＭ１を受け取って保持し、前述したイベント検出部１１からのデータ保持制御信号ＣＳd0，ＣＳd1に従って、その保持された信号(モニタデータ)の制御を行う。
【０１００】
モニタセレクト信号Ｓmsにより選択されたモニタデータサンプリング部１５，１６の出力(モニタデータ)Ｄｍは、テーブルデータメモリ１２から出力されるアサーションＩＤおよびビット幅のデータＤａと共に、ＲＡＭ２０(ＲＡＭコア２１)に入力される。
【０１０１】
ここで、図１１に示されるように、ＲＡＭコア２１に格納されるデータフォーマットは、例えば、先頭データ，アサーションＩＤ(アサーション番号)，ビット幅(有効ビット数)およびモニタデータを含む。ＲＡＭコア２１に格納されたデータは、読み出し制御部２２を介して読み出しモニタデータＤmrとして外部(ハードウェアデバッガ、ツール)に出力される。
【０１０２】
さらに、アサーションに関する情報を内部のＲＡＭ２０に保持し、解析時に読み出せるようにすることで、外部端子数に制限されることなく複数のアサーション回路を搭載することが可能になる。
【０１０３】
図１２は、図１１に示す半導体集積回路におけるハードウェア搭載アサーション情報の一例を示す図である。
【０１０４】
図１１および図１２に示されるように、まず、通常時(アサーション発火イベントを検出しないとき)において、各アサーションに対応するモニタデータ(ＡＭ０，ＡＭ１)をモニタデータサンプリング部１５，１６でサンプリングする。このとき、モニタ回路１０における他の回路は動作していない。
【０１０５】
次に、イベント検出時(アサーション発火イベントを検出したとき)において、イベント検出部１１は、対応するアサーション発火時点のモニタデータサンプリング部１５，１６のデータを保持する。
【０１０６】
すなわち、モニタセレクト信号Ｓmsにより対応するモニタデータサンプリング部１５，１６の出力が選択されると共に、アドレス信号Ｓadにより対応するアサーションＩＤおよびビット幅(Ｄａ)並びにサイクル数(Ｄｂ)がテーブルデータメモリ１２から出力される。
【０１０７】
ここで、サイクル数のデータＤｂは、アドレス制御部１３およびモニタセレクト制御部１４に入力され、モニタデータサンプリング部に保持されたデータ(Ｄｍ)をＲＡＭ２０に書きこむ処理が起動される。
【０１０８】
さらに、アサーションＩＤおよびビット幅のデータＤａは、モニタセレクト信号Ｓmsにより選択されたモニタデータサンプリング部１５，１６の出力(モニタデータ)Ｄｍと共に、ＲＡＭ２０に入力される。
【０１０９】
また、書き込みが終了すると、イベント検出部１１には、アドレス制御部１３からの終了通知信号Ｓenが入力され、外部にイベント発生通知信号Ｓicが出力される。そして、外部のハードウェアデバッガ等は、イベント発生通知信号Ｓicを検出したらモニタ読出端子Ｐ０を介して読み出しモニタデータＤmrを読み出す。なお、モニタ読出端子Ｐ０は、複数個設けて複数ビットのデータを並列にデータ読み出すことができるのはもちろんである。
【０１１０】
このように、本実施例によれば、アサーションに関する情報を内部のＲＡＭ２０に保持し、解析時に読み出せるようになっており、半導体集積回路の外部端子数に制限されることなく複数のアサーション回路を搭載することが可能になる。以上において、本実施例の半導体集積回路は、ＦＰＧＡに限定されるものではなく、ＡＳＩＣを始めとして、様々な回路であってもよい。
【０１１１】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【０１１２】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
論理検証が行われる評価対象論理回路と、
前記評価対象論理回路のシミュレーション検証を行うためのアサーション回路と、
前記アサーション回路が発火したときに解析情報を出力するモニタ回路と、を有し、
前記モニタ回路は、
アサーション信号を受け取ってイベントを検出するイベント検出部と、
アサーション解析に使用するアサーション情報を、前記アサーション回路に対応させて事前に保持するモニタデータサンプリング部と、
シミュレーション検証時に得られるアサーション回路の発火時のモニタリングポイント情報に基づいて、発火した前記アサーション回路に対応するアサーション情報を保持するように、前記モニタデータサンプリング部を制御する制御回路と、を含む、
ことを特徴とする半導体集積回路。
【０１１３】
（付記２）
さらに、
前記発火したアサーション回路に対応する前記モニタデータサンプリング部のアサーション情報、および、前記制御回路の出力データを格納するメモリを有する、
ことを特徴とする付記１に記載の半導体集積回路。
【０１１４】
（付記３）
前記制御回路の出力データは、前記アサーション回路の発火時のモニタリングポイント情報を含む、
ことを特徴とする付記２に記載の半導体集積回路。
【０１１５】
（付記４）
前記制御回路は、
前記イベント検出部からのアドレス信号を受け取り、そのアドレスに対応するアサーションＩＤおよびビット幅の第１データ、並びに、サイクル数の第２データを出力するテーブルメモリと、
前記第２データを受け取って、前記メモリのアドレスを制御するアドレス制御部と、
前記第２データを受け取って、前記各モニタデータサンプリング部におけるデータ出力を選択制御するモニタセレクト制御部と、を含む、
ことを特徴とする付記２または付記３に記載の半導体集積回路。
【０１１６】
（付記５）
前記アドレス制御部は、全てのサイクルが終了したときに終了通知信号を前記イベント検出部に出力する、
ことを特徴とする付記４に記載の半導体集積回路。
【０１１７】
（付記６）
前記半導体集積回路は、ＦＰＧＡまたはＡＳＩＣである、
ことを特徴とする付記１乃至付記５のいずれか１項に記載の半導体集積回路。
【０１１８】
（付記７）
前記アサーション情報は、アサーション信号、入力の信号名およびビット幅、並びに、サイクル数を含む、
ことを特徴とする付記１乃至付記６のいずれか１項に記載の半導体集積回路。
【０１１９】
（付記８）
アサーション解析に使用するアサーション情報を、各アサーションに対応させて事前に保持し、
シミュレーション検証時に得られる発火したアサーションに対応するモニタリングポイント情報に基づいて、前記事前に保持されたアサーション情報を使用して評価対象論理の論理検証を行う、
ことを特徴とする半導体集積回路の検証方法。
【０１２０】
（付記９）
前記発火したアサーションに対応するモニタリングポイント情報および前記アサーション情報をメモリに格納する、
ことを特徴とする付記８に記載の半導体集積回路の検証方法。
【０１２１】
（付記１０）
前記アサーション情報は、アサーション信号、入力の信号名およびビット幅、並びに、サイクル数を含む、
ことを特徴とする付記８または付記９に記載の半導体集積回路の検証方法。
【０１２２】
（付記１１）
ハードウェアに搭載するモニタ回路を、前記アサーション情報および前記モニタリングポイント情報を入力として自動生成する、
ことを特徴とする付記８乃至付記１０のいずれか１項に記載の半導体集積回路の検証方法。
【符号の説明】
【０１２３】
１，２００    半導体集積回路(ＦＰＧＡ搭載論理部)
１０    モニタ回路
１１    イベント検出部
１２    テーブルデータメモリ
１３    アドレス制御部
１４    モニタセレクト制御部
１５，１６    モニタデータサンプリング部
２０    メモリ(ＲＡＭ)
２１    ＲＡＭコア
２２    読み出し制御部
１０１，２０１    評価対象論理回路
１２１，１２２，２２１，２２２，２０２    アサーション回路
２０３    モニタ部
【図１】
2015069549.tif 000003
【図２】
2015069549.tif 000004
【図３】
2015069549.tif 000005
【図４】
2015069549.tif 000006
【図５】
2015069549.tif 000007
【図６】
2015069549.tif 000008
【図７】
2015069549.tif 000009
【図８】
2015069549.tif 000010
【図９】
2015069549.tif 000011
【図１０】
2015069549.tif 000012
【図１１】
2015069549.tif 000013
【図１２】
2015069549.tif 000014