特許第6221586号(P6221586)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ソシオネクストの特許一覧

<>
  • 特許6221586-半導体集積回路 図000002
  • 特許6221586-半導体集積回路 図000003
  • 特許6221586-半導体集積回路 図000004
  • 特許6221586-半導体集積回路 図000005
  • 特許6221586-半導体集積回路 図000006
  • 特許6221586-半導体集積回路 図000007
  • 特許6221586-半導体集積回路 図000008
  • 特許6221586-半導体集積回路 図000009
  • 特許6221586-半導体集積回路 図000010
  • 特許6221586-半導体集積回路 図000011
  • 特許6221586-半導体集積回路 図000012
  • 特許6221586-半導体集積回路 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6221586
(24)【登録日】2017年10月13日
(45)【発行日】2017年11月1日
(54)【発明の名称】半導体集積回路
(51)【国際特許分類】
   G06F 17/50 20060101AFI20171023BHJP
   G01R 31/28 20060101ALI20171023BHJP
【FI】
   G06F17/50 664P
   G01R31/28 U
   G06F17/50 672C
【請求項の数】6
【全頁数】18
(21)【出願番号】特願2013-205141(P2013-205141)
(22)【出願日】2013年9月30日
(65)【公開番号】特開2015-69549(P2015-69549A)
(43)【公開日】2015年4月13日
【審査請求日】2016年3月28日
(73)【特許権者】
【識別番号】514315159
【氏名又は名称】株式会社ソシオネクスト
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100119987
【弁理士】
【氏名又は名称】伊坪 公一
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(74)【代理人】
【識別番号】100135976
【弁理士】
【氏名又は名称】宮本 哲夫
(72)【発明者】
【氏名】三浦 正仁
(72)【発明者】
【氏名】庄司 智
(72)【発明者】
【氏名】仁茂田 永一
【審査官】 合田 幸裕
(56)【参考文献】
【文献】 特開2007−094591(JP,A)
【文献】 特開2009−301192(JP,A)
【文献】 特開2007−292492(JP,A)
【文献】 特開2011−081760(JP,A)
【文献】 特開2010−140255(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/50
G01R 31/28
IEEE Xplore
JSTPlus(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
論理検証が行われる評価対象論理回路と、
前記評価対象論理回路のシミュレーション検証を行うためのアサーション回路と、
前記アサーション回路が発火したときに解析情報を出力するモニタ回路と、を有し、
前記モニタ回路は、
アサーション信号を受け取ってイベントを検出するイベント検出部と、
アサーション解析に使用するアサーション情報を、前記アサーション回路に対応させて事前に保持するモニタデータサンプリング部と、
シミュレーション検証時に得られるアサーション回路の発火時のモニタリングポイント情報に基づいて、発火した前記アサーション回路に対応するアサーション情報を保持するように、前記モニタデータサンプリング部を制御する制御回路と、を含む、
ことを特徴とする半導体集積回路。
【請求項2】
さらに、
前記発火したアサーション回路に対応する前記モニタデータサンプリング部のアサーション情報、および、前記制御回路の出力データを格納するメモリを有する、
ことを特徴とする請求項1に記載の半導体集積回路。
【請求項3】
前記制御回路の出力データは、前記アサーション回路の発火時のモニタリングポイント情報を含む、
ことを特徴とする請求項2に記載の半導体集積回路。
【請求項4】
前記制御回路は、
前記イベント検出部からのアドレス信号を受け取り、そのアドレスに対応するアサーションIDおよびビット幅の第1データ、並びに、サイクル数の第2データを出力するテーブルメモリと、
前記第2データを受け取って、前記メモリのアドレスを制御するアドレス制御部と、
前記第2データを受け取って、前記各モニタデータサンプリング部におけるデータ出力を選択制御するモニタセレクト制御部と、を含む、
ことを特徴とする請求項2または請求項3に記載の半導体集積回路。
【請求項5】
前記アドレス制御部は、全てのサイクルが終了したときに終了通知信号を前記イベント検出部に出力する、
ことを特徴とする請求項4に記載の半導体集積回路。
【請求項6】
前記アサーション情報は、アサーション信号、入力の信号名およびビット幅、並びに、サイクル数を含む、
ことを特徴とする請求項1乃至請求項5のいずれか1項に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書で言及する実施例は、半導体集積回路および半導体集積回路の検証方法に関する。
【背景技術】
【0002】
近年、半導体集積回路(チップ:LSI)の大規模化および複雑化に伴って、論理検証のためのシミュレーションおよびシミュレーション結果の確認に要する時間が増大している。そこで、シミュレーションおよびシミュレーション結果の確認を高速化するために、シミュレーション検証でアサーション(Assertion)を使用することが行われている。
【0003】
ここで、アサーションとは、例えば、シミュレーション検証で使用される機能のことで、回路仕様として満たされるべき信号条件を記述し、条件が満たされない場合や例外条件発生を検知した時にエラーを出力する。また、アサーションがエラーを出力することを、アサーションが発火するという。なお、アサーションは、通常、回路記述とは異なる記述方法が準備されており、オリジナルの回路への影響はない。
【0004】
ところで、従来、アサーションを使用して動作検証を行うアサーションベース検証が注目され、様々な提案がなされている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2011−081760号公報
【特許文献2】特開2010−140255号公報
【特許文献3】特開2009−086817号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
前述のように、様々なアサーションベース検証が提案されているが、例えば、アサーションが多数存在する場合、アサーション出力だけでなく関連するモニタ信号も増加する。そのため、搭載するアサーションの数は、例えば、半導体集積回路の外部端子の数により制限されることになる。
【0007】
また、搭載したアサーションが発火した場合、アサーション情報に基づいて回路等を解析しながら原因(根本原因)を探るため、半導体集積回路の検証処理(作業)を短時間で容易に行うことが困難になっている。
【課題を解決するための手段】
【0008】
一実施形態によれば、論理検証が行われる評価対象論理回路と、前記評価対象論理回路のシミュレーション検証を行うためのアサーション回路と、前記アサーション回路が発火したときに解析情報を出力するモニタ回路と、を有する半導体集積回路が提供される。
【0009】
前記モニタ回路は、アサーション信号を受け取ってイベントを検出するイベント検出部と、アサーション解析に使用するアサーション情報を、前記アサーション回路に対応させて事前に保持するモニタデータサンプリング部と、制御回路と、を含む。
【0010】
前記制御回路は、シミュレーション検証時に得られるアサーション回路の発火時のモニタリングポイント情報に基づいて、発火した前記アサーション回路に対応するアサーション情報を保持するように、前記モニタデータサンプリング部を制御する。
【発明の効果】
【0011】
開示の半導体集積回路および半導体集積回路の検証方法は、回路の論理検証処理を短時間で容易に行うことができるという効果を奏する。
【図面の簡単な説明】
【0012】
図1図1は、半導体集積回路の検証方法の一例を説明するためのフローチャート(その1)である。
図2図2は、半導体集積回路の検証方法の一例を説明するためのフローチャート(その2)である。
図3図3は、図1および図2に示す半導体集積回路の検証方法のフローチャートにおけるFPGA搭載論理を実現するハードウェア構成の一例を示すブロック図である。
図4図4は、図3に示すFPGA搭載論理を適用した半導体集積回路の検証方法における課題を説明するための図である。
図5図5は、半導体集積回路の検証方法の一実施例を説明するためのフローチャート(その1)である。
図6図6は、半導体集積回路の検証方法の一実施例を説明するためのフローチャート(その2)である。
図7図7は、図5および図6に示す半導体集積回路の検証方法のフローチャートにおける論理シミュレーションアサーション情報の一例を説明するための図である。
図8図8は、図5および図6に示す半導体集積回路の検証方法のフローチャートにおけるハードウェア搭載アサーション情報の一例を説明するための図である。
図9図9は、図5および図6に示す半導体集積回路の検証方法のフローチャートにおけるモニタ回路の生成処理の一例を説明するためのフローチャートである。
図10図10は、図5および図6に示す半導体集積回路の検証方法のフローチャートにおけるFPGA搭載論理を実現するハードウェア構成の一例を示すブロック図である。
図11図11は、半導体集積回路の一実施例を示すブロック図である。
図12図12は、図11に示す半導体集積回路におけるハードウェア搭載アサーション情報の一例を示す図である。
【発明を実施するための形態】
【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項に記載の半導体集積回路の検証方法。
【符号の説明】
【0123】
1,200 半導体集積回路(FPGA搭載論理部)
10 モニタ回路
11 イベント検出部
12 テーブルデータメモリ
13 アドレス制御部
14 モニタセレクト制御部
15,16 モニタデータサンプリング部
20 メモリ(RAM)
21 RAMコア
22 読み出し制御部
101,201 評価対象論理回路
121,122,221,222,202 アサーション回路
203 モニタ部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12