JP2016075493A - 集積回路、集積回路のテスト装置及びテスト方法 - Google Patents

集積回路、集積回路のテスト装置及びテスト方法 Download PDF

Info

Publication number
JP2016075493A
JP2016075493A JP2014204167A JP2014204167A JP2016075493A JP 2016075493 A JP2016075493 A JP 2016075493A JP 2014204167 A JP2014204167 A JP 2014204167A JP 2014204167 A JP2014204167 A JP 2014204167A JP 2016075493 A JP2016075493 A JP 2016075493A
Authority
JP
Japan
Prior art keywords
integrated circuit
data
signal
storage means
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014204167A
Other languages
English (en)
Inventor
山田 眞弘
Shinko Yamada
眞弘 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2014204167A priority Critical patent/JP2016075493A/ja
Publication of JP2016075493A publication Critical patent/JP2016075493A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Tests Of Electronic Circuits (AREA)

Abstract

【課題】大規模かつ複雑な構成を有していても、シミュレーションにおいて実機の集積回路と同じ動作状態を容易に生成することができる集積回路を提供する。【解決手段】集積回路200は、入力端子201〜203及び出力端子215を有し、組み合わせ回路209及び214、Dフリップフロップ206〜208及び210〜212、及びRAM213を内部に備える。集積回路200は、デバッグRAM312及び制御回路301を含むデバッグ回路216をさらに備える。制御回路301は、Dフリップフロップ206〜208、210〜212、及びRAM213内のデータの少なくとも一部をデバッグRAM312に格納し、デバッグRAM312内のデータを集積回路200の外部に出力する。【選択図】図1

Description

本発明は、例えば半導体集積回路などの集積回路、集積回路のテスト装置及びテスト方法に関する。
近年の電子機器の制御回路は、複数の機能ブロックが集約された少数の集積回路(LSI及びASICなど)にて構成されていることが多い。電子機器が意図通りに動作しない場合、機能ブロックの論理状態を調べて、その情報を手がかりにして動作の不具合の原因を究明(デバッグ)する。このため、例えば、電子機器を起動してから動作の不具合が発生するまでにわたって、機能ブロックの論理状態の変化の過程を追跡する。
機能ブロックが集積回路の内部に構成されている場合、その部分に直接にコンタクトして、ロジックアナライザ等の計測器で観測することができない。従って、動作中の集積回路から得られる断片的情報、例えば、集積回路の内部のステータスレジスタの値、ソフトウェアのロギング情報、予め集積回路に設けた不正入力値の検出回路からの情報などに基づき、集積回路の動作を解析する方法が既に知られている。また、論理シミュレータにおいて実機の集積回路と同じ動作状態を生成し、シミュレーションで得られた集積回路の動作を解析する方法が既に知られている。
集積回路のテストに関して、例えば、特許文献1〜3の発明が知られている。
特許文献1は、外部端子からは内蔵マイクロプロセッサのプログラム実行中の動きが直接監視できないシステムLSIに対しても、ICE(In-Circuit Emulator)と同等の機能をもったデバッグシステムを開示している。特許文献1は、また、LSIの限られた個数のモニタ出力端子から断片的な情報しか得られなくても、LSI内部のプログラムカウンタの遷移やメモリバスの遷移などの詳細な情報を得ることができるデバッグシステムを開示している。詳しくは、特許文献1は、大規模なハードウェアの中にマイクロプロセッサや命令メモリ、キャッシュメモリなどが組み込まれたシステムLSIのデバッグや不具合解析に用いられるデバッグシステムを開示している。このデバッグシステムは、LSIへの入力信号を取り込んで入力信号情報として蓄積する信号蓄積手段と、入力信号情報を再生、又は該信号の再生を一時停止する信号再生手段と、内部動作状態の読み込みや書き換えを行う内部状態操作手段とを備える。このデバッグシステムは、信号再生手段により再生された信号をLSIに加えて動作させ、かつ、信号再生手段により信号の再生を一時停止している時に、内部状態操作手段によりLSI内部の状態の読み込みや書き換え操作を行う。
特許文献2は、スキャンテストなどのテストを効率良くなし得るとともに、実駆動周波数でのテストを可能とする半導体集積回路を開示している。この半導体集積回路は、スキャンフリップフロップ及び組み合わせ回路を有するスキャン対象ブロックと、スキャンフリップフロップからシリアル出力されるスキャン出力データをパラレル出力に変換するシリアル・パラレル変換回路とを備える。この半導体集積回路は、シリアル・パラレル変換回路からパラレル出力されるスキャン出力データを記憶し、記憶したデータを外部に出力するスキャン出力格納メモリをさらに備える。
特許文献3は、RTLの段階でロジックBISTの擬似乱数によるテストをシミュレーションで再現し、テスト時の消費電力見積もりを実施可能とする消費電力見積もりを行う設計支援システムを開示している。この設計支援システムは、入力手段、レジスタ変数認識手段、乱数発生手段、シミュレータ、及びパワー解析手段を備える。入力手段は、レジスタ転送レベル(RTL)のハードウェア記述言語(HDL)による機能記述データを入力する。レジスタ変数認識手段は、当該機能記述データ中の記憶素子が推量されうるレジスタ変数を認識する。乱数発生手段は、レジスタ変数認識手段により認識されたレジスタ変数へ乱数を印加する。シミュレータは、乱数の印加により引き起こされるイベントをシミュレーションする。パワー解析手段は、当該シミュレータによるシミュレーション状況から消費電力見積もりを行う。
例えば特許文献1のデバッグシステムによれば、蓄積された入力信号情報を再生して実機のLSIに入力信号として供給し、この実機のLSIで再現した動作時の内部動作状態を観測することを特徴としている。このため、LSI内部の任意の箇所を観測できるわけではなく、LSIの内部回路として予め設けられた内部状態操作手段によりアクセス可能な範囲内でのみ、LSIの内部動作状態を観測することができる。LSI内部のすべてを観測するように内部状態操作手段を構成することは、回路規模が極端に増大してしまうので困難である。従って、観測が必要になりそうな箇所を予測し、その箇所にアクセスできるように内部状態操作手段をLSI内部に予め設けておく。
デバッグの性質上、LSIの開発時点で観測が必要になりそうな箇所として予測していた箇所と、実際のデバッグで観測が必要となる箇所とは、しばしば異なる。従って、実際のデバッグにおいて真に観測したい箇所を観測できないという問題がある。
一方、論理シミュレータにおいて実機の集積回路と同じ動作状態を生成し、シミュレーションで得られた集積回路の論理状態を解析する場合には、集積回路の内部の任意の箇所を観測することができる。論理シミュレータにおいて集積回路を起動してから動作の不具合が発生するまでにわたって集積回路の論理状態の変化の過程を追跡することは、電子機器が意図通りに動作しない場合に集積回路の動作を解析するための極めて有効な手段である。
年々、集積回路の内部に構成する論理回路の機能が高度化及び複雑化し、その規模が増大していることに伴い、論理状態を決定するパラメータの個数が増大し、パラメータの内容が複雑化している。従って、シミュレーションで実機の集積回路と同じ動作状態を生成することが極めて難しくなってきている。このため、実機の集積回路と同じ不具合をシミュレーションで発生させること、及び、シミュレーションで集積回路を起動してから動作の不具合が発生するまでにわたって集積回路の論理状態の変化の過程を追跡することも、極めて難しくなってきている。
本発明の目的は、大規模かつ複雑な構成を有していても、シミュレーションにおいて実機の集積回路と同じ動作状態を容易に生成することができる集積回路を提供することにある。
本発明の態様に係る集積回路は、
入力端子及び出力端子を有し、少なくとも1つの信号処理回路及び少なくとも1つの第1の記憶手段を内部に備えた集積回路において、
上記集積回路は、第2の記憶手段及びデバッグ手段をさらに備え、
上記デバッグ手段は、上記第1の記憶手段内のデータの少なくとも一部を上記第2の記憶手段に格納し、上記第2の記憶手段内のデータを上記集積回路の外部に出力することを特徴とする。
本発明によれば、大規模かつ複雑な構成を有していても、シミュレーションにおいて実機の集積回路と同じ動作状態を容易に生成することができる集積回路を提供することができる。
本発明の第1の実施形態に係る集積回路200の構成を示すブロック図である。 図1のデバッグ回路216の構成を示すブロック図である。 図2のデバッグRAM312にデータを格納するレイアウトを示す図である。 図2のデバッグRAM312にデータを格納するときのデバッグ回路216内の各信号を示すタイミングチャートである。 図2のデバッグRAM312から集積回路200の外部にデータを出力するときのデバッグ回路216内の各信号を示すタイミングチャートである。 集積回路200の外部に出力されたデータから元データを復元する方法を説明するためのタイミングチャートである。 図1の集積回路200のテスト装置の構成を示すブロック図である。 本発明の第2の実施形態に係る集積回路501の構成を示すブロック図である。 図8の集積回路501内の各信号を示すタイミングチャートである。 第1の比較例に係る集積回路100の構成を示すブロック図である。 第2の比較例に係る集積回路120の構成を示すブロック図である。 図11の集積回路120の動作のシミュレーションであって、時間T20から時間T21までの各信号の変化が既知であるときのシミュレーションを示すタイミングチャートである。 図11の集積回路120の動作のシミュレーションであって、時間T21より前の各信号の変化が不明であるときのシミュレーションを示すタイミングチャートである。 図11の集積回路120の動作のシミュレーションであって、時間T21におけるDフリップフロップ121の出力信号Q1及び集積回路120の出力データ信号Doutの論理状態が既知であるときのシミュレーションを示すタイミングチャートである。
まず、従来の集積回路をデバッグするためのシミュレーションの課題について、さらに詳細に検討する。
図10は、第1の比較例に係る集積回路100の構成を示すブロック図である。図10は、典型的な集積回路の内部構成を示す。集積回路100は、入力端子101〜105、出力端子115、遅延フリップフロップ(以下、Dフリップフロップという)106〜108及び110〜112、組み合わせ回路109及び114、及びRAM113を備える。
組み合わせ回路109及び114は、ある時点の入力信号の状態のみによって決まる出力信号を発生する信号処理回路である。Dフリップフロップ106〜108及び110〜112、及びRAM113は、データ信号を格納する少なくとも1つの記憶手段である。Dフリップフロップ106〜108は、入力端子101〜103を介して集積回路100に入力されたデータ信号を格納する少なくとも1つの第1のレジスタである。Dフリップフロップ110〜112は、少なくとも1つの信号処理回路のうちの少なくとも1つ(組み合わせ回路109)から出力されたデータ信号を格納する少なくとも1つの第2のレジスタである。RAM113は、少なくとも1つの信号処理回路のうちの少なくとも1つ(組み合わせ回路114)から出力されたデータ信号を格納する。
入力端子101〜103には、3ビット幅の入力データ信号DATI[2:0]の各ビットDATI[0]〜DATI[2]がそれぞれ入力される。入力端子104にはクロック信号CLKが入力される。入力端子105にはリセット信号RESET_Nが入力される。
リセット信号RESET_Nは、Dフリップフロップ106〜108及び110〜112のリセット端子Rに入力される。リセット信号RESET_Nがローレベルであるとき、各Dフリップフロップはリセットされ、ハイレベルであるとき、各Dフリップフロップはリセット解除される。
Dフリップフロップ106〜108は、入力データ信号DATI[2:0]の各ビットDATI[0]〜DATI[2]を、クロック信号CLKの立ち上がりエッジでそれぞれサンプリングしていったん格納し、次いで組み合わせ回路109に送る。各Dフリップフロップ106〜108から出力されるビットをIn_ff[0]〜In_ff[2]と表し、これらをまとめてデータ信号In_ff[2:0]と表す。
組み合わせ回路109は、内部で処理した信号を、Dフリップフロップ110〜112及びRAM113に送る。Dフリップフロップ110〜112は、組み合わせ回路109から送られた信号をいったん格納し、次いで組み合わせ回路114に送る。各Dフリップフロップ110〜112から出力されるビットをI_ff[0]〜I_ff[2]と表し、これらをまとめてデータ信号I_ff[2:0]と表す。組み合わせ回路109からRAM113には、20ビット幅のアドレス信号RA[19:0]、8ビット幅のデータ信号RDI[7:0]、制御信号RCS_N、RWE_N、及びROE_Nが入力される。RAM113は、データ信号RDI[7:0]のデータを格納し、また、格納されたデータを読み出して8ビット幅のデータ信号RDO[7:0]として組み合わせ回路114に出力する。
制御信号RCS_Nがハイレベルであるとき、RAM113へのデータの読み書きが禁止され、ローレベルであるとき、RAM113へのデータの読み書きが有効にされる(すなわち、RAM113がセレクトされる)(RCS:RAM Chip Select)。制御信号RWE_Nがハイレベルであるとき、RAM113へのデータの格納が禁止され、ローレベルであるとき、RAM113にデータが格納される。制御信号ROE_Nがハイレベルであるとき、RAM113からのデータの読み出しが禁止され、ローレベルであるとき、RAM113からデータが読み出される。
組み合わせ回路114は、内部で処理した信号を、22ビット幅のデータ信号NRML_OUT[21:0]として出力する。データ信号NRML_OUT[21:0]は、出力端子115を介して、出力データ信号DATO[21:0]として集積回路100の外部に出力される。
集積回路100は、Dフリップフロップ110〜112及びRAM113を備えたことにより、順序回路として動作する。
集積回路を備えた電子機器について、電子機器の電源投入後(又は集積回路のリセット解除後)における集積回路への入力信号値のすべての論理状態が既知であれば、その情報に基づいて、論理シミュレータ上で、実機の集積回路と同じ動作を再現できる。このため、例えば、集積回路は、入力信号値を内部のデバッグ用メモリに格納し、格納された入力信号値を集積回路の外部に出力し、出力された入力信号値は論理シミュレータに送られる。しかしながら、電子機器の電源をいったん投入すると、その後の数日間にわたって電源が投入されたままになる場合もあり、この場合、対象の集積回路はリセットされることなく動作し続ける可能性がある。このような集積回路では、電源投入後(又はリセット解除後)から不具合の発生までにわたる集積回路への入力信号値のすべての論理状態を記憶しておくことができない可能性がある。
一般に、集積回路は、その内部に、フリップフロップ及びSRAMなどの記憶手段を含む順序回路として構成されている。このような集積回路では、任意時点における実機の集積回路への入力信号値を論理シミュレータに与えても、論理シミュレータ上の集積回路に含まれる記憶手段内のデータ(又はその出力信号値)を実機のものと一致させることができない。この問題が発生するのは、集積回路の論理状態を決定する要素のうち、記憶手段内のデータが欠落しているからである。従って、論理シミュレータ上の集積回路の動作は、実機の集積回路の動作とは異なってしまう。
図10の集積回路100は順序回路として動作するので、内部の論理状態は過去の動作シーケンスに依存して決まる。このため、実機の集積回路と同じ動作を論理シミュレータ上で再現しようとしても、リセット解除後に集積回路100へ入力されるすべての信号を取得できなければ、実機の集積回路100と同じ動作を論理シミュレータ上で再現できない。
図11は、第2の比較例に係る集積回路120の構成を示すブロック図である。集積回路120は、例示的な順序回路である。集積回路120は、Dフリップフロップ121及び122、及び論理和回路123を備える。集積回路120には、入力データ信号Din、クロック信号CLK、及びリセット信号RESET_Nが入力される。集積回路120は、出力データ信号Doutを出力する。
図12は、図11の集積回路120の動作のシミュレーションであって、時間T20から時間T21までの各信号の変化が既知であるときのシミュレーションを示すタイミングチャートである。図12の例では、リセット解除後(時間T20より後)の各信号の変化、すなわち、入力データ信号Din、Dフリップフロップ121の出力信号Q1、及び出力データ信号Doutの論理値がわかっている。この場合、時間T20における入力データ信号Dinの値を初期値として時間T20からシミュレーションを開始できる。
図13は、図11の集積回路120の動作のシミュレーションであって、時間T21より前の各信号の変化が不明であるときのシミュレーションを示すタイミングチャートである。時間T21におけるDフリップフロップ121の出力信号Q1及び集積回路120の出力データ信号Doutの論理状態が不明であるので、出力データ信号Doutの論理状態を確定できず、時間T21からシミュレーションを開始できない。
図14は、図11の集積回路120の動作のシミュレーションであって、時間T21におけるDフリップフロップ121の出力信号Q1及び集積回路120の出力データ信号Doutの論理状態が既知であるときのシミュレーションを示すタイミングチャートである。時間T21における出力信号Q1及び出力データ信号Doutの論理状態が既知であれば、その値を論理シミュレータに設定することで出力データ信号Doutの値を確定でき、時間T21からシミュレーションを開始できる。
本発明の実施形態では、図14の原理に基づいて、大規模かつ複雑な構成を有していても、シミュレーションにおいて実機の集積回路と同じ動作状態を容易に生成することができる集積回路を提供する。
以下、図面を参照して、本発明の実施形態に係る集積回路について詳細に説明する。
第1の実施形態.
図1は、本発明の第1の実施形態に係る集積回路200の構成を示すブロック図である。集積回路200は、入力端子201〜205及び217〜218、出力端子215、Dフリップフロップ206〜208及び210〜212、組み合わせ回路209及び214、RAM213、デバッグ回路216、及びセレクタ219を備える。図1の構成要素201〜215は、それぞれ、図10の構成要素101〜115と同様に構成される(前者は「後者の符号+100」の符号を有する)。従って、図1の集積回路200は、図10の集積回路100の構成に加えて、入力端子217〜218、デバッグ回路216、及びセレクタ219を備える。
デバッグ回路216には、クロック信号CLK、リセット信号RESET_N、データ信号In_ff[2:0]、I_ff[2:0]、及びRDO[7:0]が入力される。デバッグ回路216には、さらに、入力端子217及び218を介して制御信号MON_IN1及びMON_IN0がそれぞれ入力される。デバッグ回路216は、データ信号In_ff[2:0]、I_ff[2:0]、及びRDO[7:0]を内部に格納し、内部に格納したデータを、22ビット幅のデータ信号DB_OUT[21:0]としてセレクタ219に送る。デバッグ回路216は、さらに、制御信号DATO_SEL_Aをセレクタ219に送る。
セレクタ219は、22ビット幅のA入力端子、22ビット幅のB入力端子、及び入力端子SELを有する。A入力端子には、組み合わせ回路214からのデータ信号NRML_OUT[21:0]が入力され、B入力端子には、デバッグ回路216からのデータ信号DB_OUT[21:0]が入力される。入力端子SELには、デバッグ回路216からの制御信号DATO_SEL_Aが入力される。制御信号DATO_SEL_Aがハイレベルであるとき、セレクタ219はデータ信号NRML_OUT[21:0]を出力し(A入力端子側)、ローレベルであるとき、セレクタ219はデータ信号DB_OUT[21:0]を出力する(B入力端子側)。セレクタ219の出力信号は、出力端子215を介して、集積回路200の出力データ信号DATO[21:0]として集積回路200の外部に出力される。
制御信号MON_IN1がハイレベルであるとき、デバッグ回路216はイネーブルにされ、ローレベルであるとき、デバッグ回路216はディセーブルにされる。制御信号MON_IN1がハイレベルであり、かつ、制御信号MON_IN0がハイレベルであるとき、デバッグ回路216は、データ信号In_ff[2:0]、I_ff[2:0]、及びRDO[7:0]を内部に格納する。制御信号MON_IN1がハイレベルであり、かつ、制御信号MON_IN0がローレベルであるとき、デバッグ回路216は、内部に格納したデータを、セレクタ219及び出力端子215を介して集積回路200の外部に出力する。
制御信号MON_IN1がハイレベルであり、かつ、制御信号MON_IN0がローレベルであるとき以外は、データ信号NRML_OUT[21:0]が、集積回路200の出力データ信号DATO[21:0]として出力される。
集積回路200は、Dフリップフロップ206〜208、210〜212、及びRAM213を、データ信号を格納する少なくとも1つの第1の記憶手段として備える。
デバッグ回路216の内部に格納したデータが集積回路200の外部に出力されたとき、論理シミュレータ(図7を参照して後述)は、このデータに基づいて、集積回路200の動作のシミュレーションを行う。
図1の集積回路200では、Dフリップフロップ206〜208にいったん格納されて出力されたデータ信号を、集積回路200への入力データ信号を表すデータとして、デバッグ回路216の内部に格納する。高速I/F信号ではタイミングマージンが小さいので、同一の信号を異なるフリップフロップでサンプリングした場合、サンプリング時間のわずかな差異に応じて異なる結果が取得される可能性があるという問題がある。一方、図1の集積回路200によれば、集積回路200の内部のDフリップフロップ206〜208で取得した結果を使用することで、この問題を回避できる。
図1の集積回路200では、RAM213から出力されるデータ信号RDO_D[7:0[7:0]をデバッグ回路216の内部に格納する。集積回路の内部にRAMを備える場合、RAMから出力されるデータ信号に応じて集積回路の動作が決まるので、実機の集積回路の動作をシミュレーションで再現することが困難であった。すなわち、従来は、リセット解除後のすべての入力データ信号を取得し、この入力データ信号をシミュレーションの集積回路に入力することで、集積回路の動作を再現しなければならなかった。このため、リセット解除後、長時間動作している実機の集積回路の論理状態をシミュレーションで再現することは現実的ではなかった。図1の集積回路200では、デバッグ回路216の内部に格納されたデータ信号RDO_D[7:0[7:0]をシミュレーションにおいて使用することで、この問題を回避できる。
図2は、図1のデバッグ回路216の構成を示すブロック図である。デバッグ回路216は、制御回路301、カウンタ302、セレクタ303及び305、Dフリップフロップ304及び306〜310、セレクタ311、及びデバッグRAM312を備える。
デバッグ回路216は、デバッグRAM312を集積回路200の第2の記憶手段として備え、制御回路301及びその他の構成要素302〜311をデバッグ手段として備える。制御回路301は、構成要素302〜311を用いて、第1の記憶手段内のデータの少なくとも一部をデバッグRAM312に格納し、デバッグRAM312内のデータを集積回路200の外部に出力する。
制御回路301は、デバッグ回路216の全体を制御する。制御回路301には、リセット信号RESET_N、クロック信号CLK、制御信号MON_IN1及びMON_IN0が入力される。制御回路301は、制御信号DB_SEL_A_0、DB_RWE_N、DB_ROE_N、DB_SEL_A_1、DATO_SEL_A、及び3ビット幅のアドレス信号DB_RA[2:0]を出力する。制御信号DATO_SEL_Aは、図1のセレクタ219に送られる。
カウンタ302には、リセット信号RESET_N及びクロック信号CLKが入力され、カウンタ302は、19ビット幅のカウント値Count[18:0]を発生する。カウンタ302は、リセット信号RESET_Nがローレベルからハイレベルになったとき、1に初期化され、イネーブルENがアサートされている間、クロック毎に+1ずつカウントアップする。カウント値Count[18:0]は、セレクタ303に送られる。
セレクタ303は、19ビット幅のA入力端子、19ビット幅のB入力端子、及び入力端子SELを有する。A入力端子には、カウント値Count[18:0]が入力され、B入力端子には、後段のDフリップフロップ304から出力される遅延したカウント値Count_h[18:0]が入力される。入力端子SELには、制御回路301からの制御信号DB_SEL_A_0が入力される。制御信号DB_SEL_A_0がハイレベルであるとき、セレクタ303はカウント値Count[18:0]を出力し(A入力端子側)、ローレベルであるとき、セレクタ303は遅延したカウント値Count_h[18:0]を出力する(B入力端子側)。構成要素302〜304がこのように構成されたことにより、制御信号DB_SEL_A_0がハイレベルになったとき、クロック信号CLKの立ち上がりエッジにおいて、カウント値Count[18:0]がDフリップフロップ304に取り込まれる。Dフリップフロップ304から出力される遅延したカウント値Count_h[18:0]は、セレクタ303及び311に送られる。
セレクタ305は、3ビット幅のA入力端子、3ビット幅のB入力端子、及び入力端子SELを有する。A入力端子には、図1のDフリップフロップ210〜212から出力されるデータ信号I_ff[2:0]が入力され、B入力端子には、後段のDフリップフロップ306から出力される遅延したデータ信号I_h[2:0]が入力される。入力端子SELには、制御回路301からの制御信号DB_SEL_A_0が入力される。制御信号DB_SEL_A_0がハイレベルであるとき、セレクタ305はデータ信号I_ff[2:0]を出力し(A入力端子側)、ローレベルであるとき、セレクタ305は遅延したデータ信号I_h[2:0]を出力する(B入力端子側)。構成要素305及び306がこのように構成されたことにより、制御信号DB_SEL_A_0がハイレベルになったとき、クロック信号CLKの立ち上がりエッジにおいて、データ信号I_ff[2:0]がDフリップフロップ306に取り込まれる。Dフリップフロップ306から出力される遅延したデータ信号I_h[2:0]は、セレクタ305及び311に送られる。
Dフリップフロップ307は、図1のDフリップフロップ206〜208から出力されるデータ信号In_ff[2:0]をいったん格納し、1クロックにわたって遅延したデータ信号In_h[2:0]として出力する。遅延したデータ信号In_h[2:0]は、後段のDフリップフロップ308及びセレクタ311に送られる。Dフリップフロップ308は、遅延したデータ信号In_h[2:0]をいったん格納し、1クロックにわたってさらに遅延したデータ信号In_hd[2:0]として出力する。さらに遅延したデータ信号In_hd[2:0]は、後段のセレクタ311に送られる。
Dフリップフロップ309は、図1のRAM213から出力されるデータ信号RDO[7:0]をいったん格納し、1クロックにわたって遅延したデータ信号RDO_D[7:0]として出力する。遅延したデータ信号RDO_D[7:0]は、後段のDフリップフロップ310及びセレクタ311に送られる。Dフリップフロップ310は、遅延したデータ信号RDO_D[7:0]をいったん格納し、1クロックにわたってさらに遅延したデータ信号RDO_DD[7:0]として出力する。さらに遅延したデータ信号RDO_DD[7:0]は、後段のセレクタ311に送られる。
セレクタ311は、22ビット幅のA入力端子、22ビット幅のB入力端子、及び入力端子SELを有する。A入力端子の上位19ビットA[21:3]には、遅延したカウント値Count_h[18:0]が入力され、下位3ビットA[2:0]には、遅延したデータ信号I_h「2:0」が入力される。B入力端子の上位3ビットB[21:19]には、遅延したデータ信号I_h[2:0]が入力され、次の3ビットB[18:16]には、さらに遅延したデータ信号I_hd[2:0]が入力される。B入力端子のさらに次の8ビットB[15:8]には、遅延したデータ信号RDO_D[7:0]が入力され、下位8ビットB[7:0]には、さらに遅延したデータ信号RDO_DD[7:0]が入力される。言い換えると、A入力端子には、カウント値と、集積回路200の内部レジスタ値とが入力され、B入力端子には、2クロック分の集積回路200の入力データ信号値と、2クロック分のRAM213からのデータ信号値とが入力される。入力端子SELには、制御回路301からの制御信号DB_SEL_A_1が入力される。制御信号DB_SEL_A_1がハイレベルであるとき、セレクタ311はA入力端子側に入力された信号を出力し、ローレベルであるとき、セレクタ311はB入力端子側に入力された信号を出力する。セレクタ311から出力される信号は、データ信号DB_RDI[21:0]としてデバッグRAM312に送られる。
デバッグRAM312には、制御信号DB_RWE_N、DB_ROE_N、アドレス信号DB_RA[2:0]、及びデータ信号DB_RDI[21:0]が入力される。デバッグRAM312の端子RCS_Nは、抵抗R1を介して接地され、これにより、デバッグRAM312へのデータの読み書きが有効にされている。デバッグRAM312は、データ信号DB_RDI[21:0]のデータを格納し、また、格納されたデータを読み出して22ビット幅のデータ信号DB_OUT[21:0]として図1のセレクタ219に送る。
クロック信号CLKの立ち上がりエッジにおいて、制御信号DB_RWE_Nがハイレベルであるとき、デバッグRAM312へのデータの格納が禁止され、ローレベルであるとき、デバッグRAM312にデータが格納される。制御信号DB_ROE_Nがハイレベルであるとき、デバッグRAM312からのデータの読み出しが禁止され、ローレベルであるとき、デバッグRAM312からデータが読み出される。
集積回路200は、制御信号MON_IN1及びMON_IN0に応じて、第1のモード及び第2のモードを有する。制御回路301は、第1のモードにおいて、組み合わせ回路214から出力されたデータを出力端子215から集積回路200の外部に出力させ、第2のモードにおいて、デバッグRAM312内のデータを出力端子215から集積回路200の外部に出力させる。このため、制御回路301は、アドレス信号DB_RA[2:0]、制御信号DB_RWE_N、及びDB_ROE_NによりデバッグRAM312へのデータの入出力を制御し、制御信号DB_SEL_Aによりセレクタ319を制御する。
図3は、図2のデバッグRAM312にデータを格納するレイアウトを示す図である。図3を参照して、デバッグRAM312の使い方及び記憶フォーマットを説明する。図3に示すように、デバッグRAM312は、アドレス信号DB_RAによって指定されるアドレス0〜5をそれぞれ有する6個の記憶単位を有する。各記憶単位は22ビット幅の大きさを有する(すなわち、ビットD[0]〜ビットD[21]を含む)。デバッグRAM312は複数の領域に分割される。図3では、デバッグRAM312は2つの領域1及び2に分割され、領域1はアドレス0〜2の記憶単位を含み、領域2はアドレス3〜5の記憶単位を含む。領域1及び2は、互いに同じ記憶フォーマットを有する。各記憶単位には、セレクタ311のA入力端子側又はB入力端子側に入力された信号が格納される。領域1のアドレス0の記憶単位に、カウント値(Count_h)と、集積回路200の内部レジスタ値(I_h)とが格納される。領域1のアドレス1〜2の各記憶単位に、2クロック分の集積回路200の入力データ信号値(In_h、In_hd)と、2クロック分のRAM213からのデータ信号値(RDO_D、RDO_DD)とが格納される。領域2にも、領域1と同様にデータが格納される。領域1及び2のそれぞれに格納されるデータは、ある時点における集積回路200の内部の論理状態を表す。
デバッグRAM312は、複数の領域を有するリングバッファとして使用される。制御回路301は、所定の時間期間にわたって、Dフリップフロップ206〜208、210〜212、及びRAM213内のデータの少なくとも一部をデバッグRAM312に周期的に格納する。このとき、制御回路301は、デバッグRAM312の各領域に順番に書き込みを行う。各領域に対する書き込みが一巡しても、書き込み動作を継続する場合には、最初に書き込みを行った領域から順番に上書きを行う。
デバッグのために集積回路の内部のデータを集積回路の内部のメモリに格納する場合、任意長さの時間区間にわたるデータのすべての論理状態を記憶しておくことができるとは限らない。書き込みによりメモリが一杯になってしまった場合、最も古いデータを破棄してメモリの空き領域を作成し、新しいデータの書き込みを継続することになる。図1の集積回路200の動作のシミュレーションを行う場合、シミュレーションの開始時点に対応する集積回路200の動作中の時点における、集積回路200の内部の記憶手段内のデータが必要になる。従って、当該データをデバッグRAM312に格納し、格納されたデータを読み出して論理シミュレータに入力する必要がある。図3のレイアウトを有するデバッグRAM312によれば、古いデータを格納した領域を上書きしても、少なくとも「領域の個数−1」個の、集積回路200の内部の論理状態が保持されていることになる。従って、デバッグRAM312の領域の個数に応じて、長い時間区間にわたるシミュレーションを行うこともできる。
次に、図4及び図5を参照して、図1の集積回路200の動作について説明する。
図4は、図2のデバッグRAM312にデータを格納するときのデバッグ回路216内の各信号を示すタイミングチャートである。デバッグRAM312は図3のレイアウトを有する。図4において、信号CLK、信号RESET_N、DATI、In_ff、I_ff、DATO、RDO、MON_IN1、MON_IN0は、図1の同名の信号の状態を示す。また、図4において、信号Count、DB_SEL_A_0、Count_h、I_h、In_h、In_hd、RDO_D、RDO_DD、DB_RA、DB_SEL_A_1、DB_RWE_Nは、図2の同名の信号の状態を示す。
図4の時間T1において、カウント値(Count_h)と、集積回路200の内部レジスタ値(I_h)とが、デバッグRAM312のアドレス0に格納される。時間T2において、2クロック分の集積回路200の入力データ信号値(In_h、In_hd)と、2クロック分のRAM213からのデータ信号値(RDO_D、RDO_DD)とが、デバッグRAM312のアドレス1に格納される。同様に、時間T3において、アドレス1に格納されたデータに後続するデータ(In_h、In_hd、RDO_D、RDO_DD)が、デバッグRAM312のアドレス2に格納される。
デバッグ回路216は、セレクタ305を備えたことにより、集積回路200の内部レジスタ値(I_ff)を間欠的に取得する。集積回路200の動作中にわたるすべての内部レジスタ値を格納しようとすると、必要なデバッグRAM312の容量が過度に増大してしまうことがある。従って、デバッグ回路216は、集積回路200の内部レジスタ値(I_ff)を間欠的に取得してデバッグRAM312に格納する。シミュレーションを行う際には、内部レジスタ値(I_ff)を取得した時点からシミュレーションを開始し、その後の(取得されなかった)内部レジスタ値をシミュレーションにより生成する。図2の構成によれば、シミュレーションを開始可能な時点が集積回路200の内部レジスタ値(I_ff)を取得した時点に限定されるが、必要なデバッグRAM312の容量を削減することができる。
また、デバッグ回路216は、集積回路200の入力データ信号値(In_f)及びRAM213からのデータ信号値(RDO)を欠落なく連続的に取得する。デバッグ回路216は、2段のDフリップフロップ307及び308を備えたことにより、2クロック分の集積回路200の入力データ信号値(In_h、In_hd)を並列化してセレクタ311に送っている。同様に、デバッグ回路216は、2段のDフリップフロップ309及び310を備えたことにより、2クロック分のRAM213からのデータ信号値(RDO_D、RDO_DD)を並列化してセレクタ311に送っている。従って、デバッグ回路216は、セレクタ311を備えていても、集積回路200の入力データ信号値(In_f)及びRAM213からのデータ信号値(RDO)を欠落なく連続的に取得してデバッグRAM312に格納する。
集積回路200は、Dフリップフロップ210〜212及びRAM213を備えたことにより、順序回路として動作する。内部レジスタ値(I_ff)は、シミュレーションを開始するための初期値として取得される。シミュレーション対象期間のある時点における内部レジスタ値(I_ff)が決まれば、その後の集積回路200の振る舞いは、集積回路200の入力データ信号値(In_f)により一意に決まる。内部レジスタ値(I_ff)を間欠的に取得すること、すなわち、内部レジスタ値(I_ff)を取得しない期間が存在することによる影響は、シミュレーションを開始可能な時点に制約が発生することのみである。
また、本実施形態に係る集積回路200は、論理シミュレータ上の集積回路の動作を、実機の集積回路200の動作と一致させることを前提としている。このため、入力データ信号値(In_ff)を取得しないと、テスト環境での集積回路への入出力値を決定できず、論理シミュレータ上の集積回路の動作を、実機の集積回路の動作と一致させることができない。しかしながら、入力データ信号値(In_ff)及びRAM213からのデータ信号値(RDO)を欠落なく連続的に取得しているので、これらの情報の欠落により、集積回路200の内部の振る舞いを決定できずにシミュレーションを継続できなくなることはない。
上述したように、Dフリップフロップ307〜310により、2クロック分の集積回路200の入力データ信号値を並列化し、2クロック分のRAM213からのデータ信号値を並列化している。従って、並列化されたデータ信号値の重複を生じさせないために、データをアドレス1に格納した後(時間T2)、アドレス信号DB_RAは2クロックにわたってアドレス2を指定する。時間T2の1クロック後におけるクロック信号CLKの立ち上がりエッジでは、制御信号DB_RWE_Nがハイレベルであり、デバッグRAM312に新たなデータは格納されない。従って、時間T3におけるクロック信号CLKの立ち上がりエッジでは、デバッグRAM312のアドレス(アドレス信号DB_RAによって指定されるアドレス)は更新されない。デバッグRAM312への書き込みがないときにデバッグRAM312のアドレスを更新すると、デバッグRAM312の容量が無駄になり、また、デバッグRAM312から読み出したデータをシミュレーションで使用するときの処理が複雑になってしまう。図4に示すようにアドレス指定することにより、デバッグRAM312の容量を無駄なく使用することができ、デバッグRAM312から読み出したデータをシミュレーションで使用するときの処理を簡単化することができる。
次いで、図4の時間T4において、カウント値(Count_h)と、集積回路200の内部レジスタ値(I_h)とが、デバッグRAM312のアドレス3に格納される。時間T5において、2クロック分の集積回路200の入力データ信号値(In_h、In_hd)と、2クロック分のRAM213からのデータ信号値(RDO_D、RDO_DD)とが、デバッグRAM312のアドレス4に格納される。同様に、時間T6において、アドレス4に格納されたデータに後続するデータ(In_h、In_hd、RDO_D、RDO_DD)が、デバッグRAM312のアドレス5に格納される。
図4の時間T7〜T9では、時間T1〜T3においてデータを書き込んだデバッグRAM312のアドレス0〜2に、新たなデータを上書きする。時間T7において、カウント値(Count_h)と、集積回路200の内部レジスタ値(I_h)とが、デバッグRAM312のアドレス0に格納される。時間T8において、2クロック分の集積回路200の入力データ信号値(In_h、In_hd)と、2クロック分のRAM213からのデータ信号値(RDO_D、RDO_DD)とが、デバッグRAM312のアドレス1に格納される。同様に、時間T9において、アドレス1に格納されたデータに後続するデータ(In_h、In_hd、RDO_D、RDO_DD)が、デバッグRAM312のアドレス2に格納される。
図4のタイミングチャートに従って動作する結果、図3に示すフォーマットで、デバッグRAM312にデータが格納される。
デバッグRAM312では、時間T1〜T3に取得したデータは上書きされて残っていないが、時間T4〜T9に取得したデータが格納されている。時間T4〜T6で取得したデータは、集積回路200の内部レジスタ値(I_h)及びRAM213からのデータ信号値(RDO)を含んでいる。従って、デバッグRAM312に格納されたデータを集積回路200の外部に出力し、このデータに基づいて、データを取得した時点からシミュレーションを開始することができる。
図5は、図2のデバッグRAM312から集積回路200の外部にデータを出力するときのデバッグ回路216内の各信号を示すタイミングチャートである。制御信号MON_IN1がハイレベルであり、かつ、制御信号MON_IN0がローレベルであるとき、デバッグ回路216は、デバッグRAM312に格納したデータを、セレクタ219及び出力端子215を介して集積回路200の外部に出力する。デバッグRAM312から先入れ先出し(FIFO)でデータを読み出すために、デバッグRAM312に最後にデータが書き込まれたアドレス(例えばアドレス2)の次のアドレス(例えばアドレス3)から順番にデータを読み出す。制御信号DATO_SEL_Aがローレベルであるとき、セレクタ219はデータ信号DB_OUTを出力し、これが、集積回路200の出力データ信号DATOとして集積回路200の外部に出力される。
以上説明したように、デバッグ回路216は、その内部の論理状態を示すデータをデバッグRAM312に格納し、このデータをシミュレーションのために集積回路200の外部に出力する。
図6は、集積回路200の外部に出力されたデータから元データを復元する方法を説明するためのタイミングチャートである。デバッグRAM312から読み出されたデータ信号DB_OUT(すなわち、制御信号DATO_SEL_Aがローレベルであるときの出力データ信号DATO)は、図3の記憶フォーマットと同じフォーマットを有する。従って、出力データ信号DATOから、最初のクロックにおいてカウント値Count_h及びデータ信号I_hを取り出し、その後の2クロックにおいてデータ信号In_h、In_hd、RDO_D、及びRDO_DDを取り出す。図6では、タイミング調整のために、出力データ信号DATOに1クロック分の待機時間を挿入している。集積回路200の内部の論理状態は、出力データ信号DATOから取り出されたデータ信号I_h、In_h、In_hd、RDO_D、及びRDO_DDを、タイミング調整のために予め決められた時間だけ遅延させることによって復元される。データ信号I_ffは、データ信号I_hを2クロック分だけ遅延させることによって復元される。データ信号In_ffは、データ信号In_hdを1クロック分だけ遅延させたものと、データ信号In_hを2クロック分だけ遅延させたものとを交互に取り込むことによって復元される。データ信号RDOは、データ信号RDO_DDの1クロック分だけ遅延させたものと、データ信号RDO_Dを2クロック分だけ遅延させたものとを交互に取り込むことによって復元される。入力データ信号DATIは、データ信号In_hdと、データ信号In_hを1クロック遅延させたものとを交互に取り込むことによって復元される。
図6に従って復元されたデータに基づいて、集積回路200の動作のシミュレーションが行われる。
図7は、図1の集積回路200のテスト装置の構成を示すブロック図である。図7のテスト装置は、テスト対象である図1の集積回路200、コンピュータ401、インターフェース装置402、ユーザ入力装置403、及び表示装置404を備える。コンピュータ401は、論理シミュレータであり、例えば、論理シミュレータのソフトウェアを実行するパーソナルコンピュータである。論理シミュレータは、例えばVerilogシミュレータであるが、それに限定されるものではない。インターフェース装置402は、図1の入力端子201〜205、217〜218、及び出力端子215に接続される。インターフェース装置402は、コンピュータ401の制御下で、集積回路200に入力データ信号DATIを供給し、集積回路200から出力データ信号DATOを取得してコンピュータ401に送る。特に、インターフェース装置402は、集積回路200からデバッグRAM312内のデータを取得してコンピュータ401に送る。コンピュータ401は、インターフェース装置402から取得されたデバッグRAM312内のデータに基づいて集積回路200の動作のシミュレーションを行う。
コンピュータ401は、集積回路200に等価な仮想的モデル200Aを生成する。次いで、コンピュータ401は、インターフェース装置402から取得されたデバッグRAM312内のデータを、仮想的モデル200Aに含まれるDフリップフロップ206〜208、210〜212、及びRAM213に書き込む。次いで、コンピュータ401は、仮想的モデル200Aの論理状態の変化を所定時間にわたって追跡する。
図7のテスト装置では、従来の集積回路の開発に用いる論理シミュレータ同様、コンピュータ401上で、テスト対象である実機の集積回路200と等価な仮想的モデル200Aを生成する。従来の集積回路の開発では、テスト対象の集積回路に対し、専ら、入力端子から入力データ信号を供給することでシミュレーションを行った。一方、図7のテスト装置では、仮想的モデル200Aの内部の記憶手段に直接に値を設定することで、リセット解除の直後に限らず任意の時点から、実機の集積回路と同じ動作をシミュレーションにより再現することができる。
図1の集積回路200によれば、大規模かつ複雑な構成を有していても、シミュレーションにおいて実機の集積回路200と同じ動作状態を容易に生成することができる。
以上説明したように、図1の集積回路200によれば、デバッグ回路216は、集積回路200の入力データ信号値、集積回路200の内部レジスタ値、及びRAM213からのデータ信号値をデバッグRAM312に格納する。さらに、デバッグ回路216は、デバッグRAM312に格納されたデータを集積回路200の外部に出力する。図7のテスト装置は、集積回路200の外部に出力されたデータに基づいてシミュレーションを行うことで、集積回路200の動作をシミュレーションにより再現することができる。
図1の集積回路200によれば、デバッグ回路216は、集積回路200の内部レジスタ値及びRAM213からのデータ信号値を間欠的(周期的)に取得する。従って、図7のテスト装置は、リセット解除の直後だけでなく、周期的な、これらのデータを取得した時点から、シミュレーションを開始することができる。
第2の実施形態.
第2の実施形態では、集積回路の内部の少なくとも1つの信号の論理状態が予め決められた条件を満たすとき、集積回路の内部の論理状態を集積回路の内部の記憶手段に格納することを開始及び/又は終了する場合について説明する。これにより、データの格納の開始及び/又は終了をプログラマブルに制御可能になる。デバッグのために集積回路の内部の論理状態を集積回路の内部の記憶手段に格納する場合、データの格納の開始条件及び終了条件を適切に選択することが極めて重要である。
図8は、本発明の第2の実施形態に係る集積回路501の構成を示すブロック図である。集積回路501には、他の集積回路502から入力データ信号DATI[3:0]が供給される。集積回路501及び502には、外部からクロック信号CLKが供給され、リセット回路503からリセット信号RESET_Nが供給され、電源回路504から電源電圧PWRが供給される。
集積回路501は、回路モジュール511、インバータ512、判定回路513、及びデバッグ回路514を備える。デバッグ回路514は、図1のデバッグ回路216に対応し、回路モジュール511は、図1の集積回路200におけるデバッグ回路216以外の構成要素に対応する構成要素を含む。判定回路513は、Dフリップフロップ521〜524及び論理演算回路525を備える。
回路モジュール511は、信号M_EN及びERR_DETを論理演算回路525に送る。信号M_ENがハイレベルであるとき、回路モジュール511が起動していることを示し、ローレベルであるとき、回路モジュール511が停止していることを示す。信号ERR_DETがハイレベルであるとき、回路モジュール511の内部でエラーが発生したことを示し、ローレベルであるとき、回路モジュール511の内部でエラーが発生していないことを示す。
デバッグ回路514は、集積回路501の内部の少なくとも1信号の論理状態が予め決められた条件を満たすとき、回路モジュール511の内部の記憶手段内のデータの少なくとも一部を、デバッグ回路514の内部の記憶手段に格納することを開始又は終了する。回路モジュール511の内部の記憶手段を「第1の記憶手段」とし、デバッグ回路514の内部の記憶手段を「第2の記憶手段」とする。データの格納の開始及び終了を制御するために、デバッグ回路514には、図1の制御信号MON_IN1に代えて、判定回路513からの制御信号START及びSTOPが入力される。制御信号STARTがローレベルからハイレベルになったとき、デバッグ回路514はデータの格納を開始し、制御信号STOPがローレベルからハイレベルになったとき、デバッグ回路514はデータの格納を終了する。
データの格納の開始条件及び/又は終了条件を設定するために、入力データ信号DATI[3:0]の各ビットDATI[0]〜DATI[3]の信号線に抵抗R10〜R13が接続される。図8の例では、抵抗R10及びR13がプルダウン抵抗であり、抵抗R11及びR12がプルアップ抵抗である。プルアップ抵抗又はプルダウン抵抗を接続したことにより、リセット解除時における入力データ信号DATI[3:0]の各ビットDATI[0]〜DATI[3]の論理状態が決まる。
判定回路513は、リセット解除時における入力データ信号DATI[3:0]の各ビットDATI[0]〜DATI[3]の論理状態を取得して、Dフリップフロップ521〜524にいったん格納する。次いで、判定回路513は、Dフリップフロップ521〜524内のデータを信号Q[0]〜Q[3]として論理演算回路525に送る。論理演算回路525は、信号Q[0]〜Q[3]及び信号M_EN及びERR_DETに基づいて、制御信号START及びSTOPを生成する。論理演算回路525は、信号Q[2]及びQ[3]の論理状態に応じて、データの格納の開始条件を設定し、信号Q[0]及びQ[1]の論理状態に応じて、データの格納の終了条件を設定する。信号Q[3]がハイレベルである場合、信号ERR_DETがハイレベルであることを、データの格納の開始条件とする。信号Q[2]がハイレベルである場合、信号M_ENがハイレベルであることを、データの格納の開始条件とする。信号Q[1]がハイレベルである場合、信号ERR_DETがハイレベルであることを、データの格納の終了条件とする。信号Q[0]がハイレベルである場合、信号M_ENがハイレベルであることを、データの格納の終了条件とする。各信号Q[0]〜Q[3]がローレベルである場合は、条件は設定されない。
図9は、図8の集積回路501内の各信号を示すタイミングチャートである。図9の時間T11において、電源回路504がオンされて電源電圧PWRがハイレベルになり、また、リセット信号RESET_Nがローレベルになる。これに伴い、時間T11からT12までの期間、入力データ信号DATI[3:0]の各ビットDATI[0]〜DATI[3]の論理状態は、抵抗R10〜R13に応じてハイレベル又はローレベルになる。これらの論理状態はDフリップフロップ521〜524にいったん格納され、信号Q[0]〜Q[3]として論理演算回路525に送られる。図9の例では、信号Q[3]はローレベルであり、信号Q[2]はハイレベルであり、信号Q[1]はハイレベルであり、信号Q[0]はローレベルである。従って、論理演算回路525は、信号M_ENがハイレベルであることを、データの格納の開始条件とし、信号ERR_DETがハイレベルであることを、データの格納の終了条件とする。時間T12以後は、集積回路502から集積回路501に任意のデータを伝送中である。時間T13において、論理演算回路525は、信号M_ENがハイレベルになったことを検知し、信号STARTをローレベルからハイレベルにする。時間T14において、論理演算回路525は、信号ERR_DETがハイレベルになったことを検知し、信号STOPをローレベルからハイレベルにする。
以上説明したように、集積回路501の内部における複数の信号の論理状態の組み合わせが予め決められた条件を満たすとき、回路モジュール511の内部の論理状態をデバッグ回路514の内部の記憶手段に格納することを開始及び/又は終了する。従って、設定に応じて、例えばエラーの発生を検出したときなど、任意の条件でデータの格納を開始及び/又は終了することができる。
変形例.
本発明の実施形態に係る集積回路は、図1に示したものに限定されず、少なくとも1つの信号処理回路(組み合わせ回路)及び少なくとも1つの第1の記憶手段(Dフリップフロップ、RAMなど)を内部に備えた集積回路であってもよい。
少なくとも1つの組み合わせ回路により論理演算を行った後でDフリップフロップに格納されて出力されたデータ信号を、集積回路の内部への入力データ信号を表すデータ信号としてデバッグ回路の内部に格納してもよい。
デバッグ回路は、2段のDフリップフロップ307〜310に代えて、1段又は3段以上のDフリップフロップを備えてもよい。1段ではなく2段のDフリップフロップを用いた場合には、1クロック内で処理すべきデータ量を削減することができる。
図2のデバッグRAM312は、デバッグ回路216の内部にあってもよく、外部にあってもよい。また、デバッグRAM312は、図1のRAM213の一部であってもよい。
本発明の実施形態は、以下のように構成されたことを特徴とする。
本発明の第1の態様に係る集積回路は、
入力端子及び出力端子を有し、少なくとも1つの信号処理回路及び少なくとも1つの第1の記憶手段を内部に備えた集積回路において、
上記集積回路は、第2の記憶手段及びデバッグ手段をさらに備え、
上記デバッグ手段は、上記第1の記憶手段内のデータの少なくとも一部を上記第2の記憶手段に格納し、上記第2の記憶手段内のデータを上記集積回路の外部に出力することを特徴とする。
本発明の第2の態様に係る集積回路は、第1の態様に係る集積回路において、
上記少なくとも1つの第1の記憶手段は、上記入力端子を介して上記集積回路に入力されたデータを格納する少なくとも1つの第1のレジスタを含むことを特徴とする。
本発明の第3の態様に係る集積回路は、第1又は第2の態様に係る集積回路において、
上記少なくとも1つの第1の記憶手段は、上記少なくとも1つの信号処理回路のうちの少なくとも1つから出力されたデータを格納する少なくとも1つの第2のレジスタを含むことを特徴とする。
本発明の第4の態様に係る集積回路は、第1〜第3のうちの1つの態様に係る集積回路において、
上記少なくとも1つの第1の記憶手段は、上記少なくとも1つの信号処理回路のうちの少なくとも1つから出力されたデータを格納する少なくとも1つのRAMを含み、
上記デバッグ手段は、上記少なくとも1つのRAMから出力されたデータを上記第2の記憶手段に格納することを特徴とする。
本発明の第5の態様に係る集積回路は、第1〜第4のうちの1つの態様に係る集積回路において、
上記第2の記憶手段は複数の領域を有するリングバッファであり、
上記デバッグ手段は、所定の時間期間にわたって、上記第1の記憶手段内のデータの少なくとも一部を上記第2の記憶手段に周期的に格納することを特徴とする。
本発明の第6の態様に係る集積回路は、第1〜第5のうちの1つの態様に係る集積回路において、
上記集積回路は、第1のモード及び第2のモードを有し、
上記デバッグ手段は、
上記第1のモードにおいて、上記少なくとも1つの信号処理回路のうちの1つから出力されたデータを上記出力端子から上記集積回路の外部に出力させ、
上記第2のモードにおいて、上記第2の記憶手段内のデータを上記出力端子から上記集積回路の外部に出力させることを特徴とする。
本発明の第7の態様に係る集積回路は、第1〜第6のうちの1つの態様に係る集積回路において、
上記デバッグ手段は、上記集積回路の内部の少なくとも1つの信号の論理状態が予め決められた条件を満たすとき、上記第1の記憶手段内のデータの少なくとも一部を上記第2の記憶手段に格納することを開始又は終了することを特徴とする。
本発明の第8の態様に係る集積回路のテスト装置は、第1〜第6のうちの1つの態様に係る集積回路のテスト装置であって、上記テスト装置は、
上記集積回路から上記第2の記憶手段内のデータを取得するインターフェース装置と、
上記第2の記憶手段内のデータに基づいて上記集積回路の動作のシミュレーションを行うコンピュータとを備え、
上記コンピュータは、
上記集積回路に等価な仮想的モデルを生成し、
上記インターフェース装置から取得された上記第2の記憶手段内のデータを、上記仮想的モデルに含まれる第1の記憶手段に書き込み、
上記仮想的モデルの論理状態の変化を所定時間にわたって追跡することを特徴とする。
本発明の第9の態様に係る集積回路のテスト方法は、第1〜第6のうちの1つの態様に係る集積回路のテスト方法であって、上記テスト方法は、
インターフェース装置を用いて、上記集積回路から上記第2の記憶手段内のデータを取得するステップと、
コンピュータ上で、上記集積回路に等価な仮想的モデルを生成するステップと、
上記コンピュータ上で、上記インターフェース装置から取得された上記第2の記憶手段内のデータを、上記仮想的モデルに含まれる第1の記憶手段に書き込むステップと、
上記コンピュータ上で、上記仮想的モデルの論理状態の変化を所定時間にわたって追跡するステップとを含むことを特徴とする。
200…集積回路、
201〜205、217、218…入力端子、
215…出力端子、
206〜208、210〜212…Dフリップフロップ、
209、214…組み合わせ回路、
213…RAM、
219…セレクタ、
216…デバッグ回路、
301…制御回路、
302…カウンタ、
303、305、311…セレクタ、
304、306〜310…Dフリップフロップ、
312…デバッグRAM、
401…コンピュータ、
402…インターフェース装置、
403…入力装置、
404…表示装置、
501、502…集積回路、
503…リセット回路、
504…電源回路、
511…回路モジュール、
512…インバータ、
513…判定回路、
514…デバッグ回路、
521〜524…Dフリップフロップ、
525…論理演算回路、
R1、R10〜R13…抵抗。
特開2002−132536号公報 特開2004−219246号公報 特開2005−346227号公報

Claims (9)

  1. 入力端子及び出力端子を有し、少なくとも1つの信号処理回路及び少なくとも1つの第1の記憶手段を内部に備えた集積回路において、
    上記集積回路は、第2の記憶手段及びデバッグ手段をさらに備え、
    上記デバッグ手段は、上記第1の記憶手段内のデータの少なくとも一部を上記第2の記憶手段に格納し、上記第2の記憶手段内のデータを上記集積回路の外部に出力することを特徴とする集積回路。
  2. 上記少なくとも1つの第1の記憶手段は、上記入力端子を介して上記集積回路に入力されたデータを格納する少なくとも1つの第1のレジスタを含むことを特徴とする請求項1記載の集積回路。
  3. 上記少なくとも1つの第1の記憶手段は、上記少なくとも1つの信号処理回路のうちの少なくとも1つから出力されたデータを格納する少なくとも1つの第2のレジスタを含むことを特徴とする請求項1又は2記載の集積回路。
  4. 上記少なくとも1つの第1の記憶手段は、上記少なくとも1つの信号処理回路のうちの少なくとも1つから出力されたデータを格納する少なくとも1つのRAMを含み、
    上記デバッグ手段は、上記少なくとも1つのRAMから出力されたデータを上記第2の記憶手段に格納することを特徴とする請求項1〜3のうちの1つに記載の集積回路。
  5. 上記第2の記憶手段は複数の領域を有するリングバッファであり、
    上記デバッグ手段は、所定の時間期間にわたって、上記第1の記憶手段内のデータの少なくとも一部を上記第2の記憶手段に周期的に格納することを特徴とする請求項1〜4のうちの1つに記載の集積回路。
  6. 上記集積回路は、第1のモード及び第2のモードを有し、
    上記デバッグ手段は、
    上記第1のモードにおいて、上記少なくとも1つの信号処理回路のうちの1つから出力されたデータを上記出力端子から上記集積回路の外部に出力させ、
    上記第2のモードにおいて、上記第2の記憶手段内のデータを上記出力端子から上記集積回路の外部に出力させることを特徴とする請求項1〜5のうちの1つに記載の集積回路。
  7. 上記デバッグ手段は、上記集積回路の内部の少なくとも1つの信号の論理状態が予め決められた条件を満たすとき、上記第1の記憶手段内のデータの少なくとも一部を上記第2の記憶手段に格納することを開始又は終了することを特徴とする請求項1〜6のうちの1つに記載の集積回路。
  8. 請求項1〜6のうちの1つに記載の集積回路のテスト装置であって、上記テスト装置は、
    上記集積回路から上記第2の記憶手段内のデータを取得するインターフェース装置と、
    上記第2の記憶手段内のデータに基づいて上記集積回路の動作のシミュレーションを行うコンピュータとを備え、
    上記コンピュータは、
    上記集積回路に等価な仮想的モデルを生成し、
    上記インターフェース装置から取得された上記第2の記憶手段内のデータを、上記仮想的モデルに含まれる第1の記憶手段に書き込み、
    上記仮想的モデルの論理状態の変化を所定時間にわたって追跡することを特徴とするテスト装置。
  9. 請求項1〜6のうちの1つに記載の集積回路のテスト方法であって、上記テスト方法は、
    インターフェース装置を用いて、上記集積回路から上記第2の記憶手段内のデータを取得するステップと、
    コンピュータ上で、上記集積回路に等価な仮想的モデルを生成するステップと、
    上記コンピュータ上で、上記インターフェース装置から取得された上記第2の記憶手段内のデータを、上記仮想的モデルに含まれる第1の記憶手段に書き込むステップと、
    上記コンピュータ上で、上記仮想的モデルの論理状態の変化を所定時間にわたって追跡するステップとを含むことを特徴とするテスト方法。
JP2014204167A 2014-10-02 2014-10-02 集積回路、集積回路のテスト装置及びテスト方法 Pending JP2016075493A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014204167A JP2016075493A (ja) 2014-10-02 2014-10-02 集積回路、集積回路のテスト装置及びテスト方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014204167A JP2016075493A (ja) 2014-10-02 2014-10-02 集積回路、集積回路のテスト装置及びテスト方法

Publications (1)

Publication Number Publication Date
JP2016075493A true JP2016075493A (ja) 2016-05-12

Family

ID=55951313

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014204167A Pending JP2016075493A (ja) 2014-10-02 2014-10-02 集積回路、集積回路のテスト装置及びテスト方法

Country Status (1)

Country Link
JP (1) JP2016075493A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117389870A (zh) * 2023-09-28 2024-01-12 珠海微度芯创科技有限责任公司 车规级芯片的asic毫米波雷达算法测试方法、装置、介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117389870A (zh) * 2023-09-28 2024-01-12 珠海微度芯创科技有限责任公司 车规级芯片的asic毫米波雷达算法测试方法、装置、介质
CN117389870B (zh) * 2023-09-28 2024-04-05 珠海微度芯创科技有限责任公司 车规级芯片的asic毫米波雷达算法测试方法、装置、介质

Similar Documents

Publication Publication Date Title
JP5432127B2 (ja) 自動回路設計及びシミュレーションに使用するための技術
JP5410414B2 (ja) 回路エミュレーションの入力及び遅延入力のマルチプレクシング
JP5405451B2 (ja) 自動回路設計及びシミュレーションに使用するための技術
JP5432126B2 (ja) 自動回路設計及びシミュレーションに使用するための技術
US6961872B2 (en) Microcomputer and debugging system
EP3369015B1 (en) Methods and circuits for debugging circuit designs
KR20000017333A (ko) 반도체 집적 회로 설계 및 검증 시스템
US20170141764A9 (en) Metastability glitch detection
US20070005322A1 (en) System and method for complex programmable breakpoints using a switching network
US9513334B2 (en) System on a chip FPGA spatial debugging using single snapshot
US7886244B2 (en) Driving values to DC adjusted/untimed nets to identify timing problems
US20030233601A1 (en) Non-intrusive signal observation techniques usable for real-time internal signal capture for an electronic module or integrated circuit
US20130097462A1 (en) Embedded logic analyzer
US10664637B2 (en) Testbench restoration based on capture and replay
Chuang et al. Hybrid approach to faster functional verification with full visibility
US11775718B2 (en) Methods and apparatus to simulate metastability for circuit design verification
US8195441B1 (en) Hardware co-simulation involving a processor disposed on a programmable integrated circuit
JP2016075493A (ja) 集積回路、集積回路のテスト装置及びテスト方法
US9946624B1 (en) Systems and methods to capture data signals from a dynamic circuit
KR20020069468A (ko) 초대규모급 설계 검증을 위한 하드웨어적으로 구현된대규모 디지털 시스템과 시뮬레이션을 이용하는 디버깅장치 및 이를 이용한 디버깅 방법
JP2004280426A (ja) 論理集積回路の内部信号トレース装置
JP5170246B2 (ja) 半導体検証装置、方法およびプログラム
Che FPGA-based memory test system design and test algorithm implementation
CN117370257B (zh) 串口转总线的装置、现场可编程门阵列及其调试方法
CN117113908B (zh) 一种验证方法、装置、电子设备及可读存储介质