説明

回路検証装置および回路検証方法

【課題】半導体デバイスのシミュレーションに必要なパラメータを読み出すための構成を簡素化する。
【解決手段】ハードウェア記述言語に基づく論理回路が形成された半導体デバイス(102)のエミュレーションのための信号をデバイスへ入力する手段(140)と、論理回路に対応したハードウェア記述言語によりシミュレーションを実行する手段(110)と、シミュレーションに係るパラメータをデバイスから取得する手段(107)と、取得したパラメータをシミュレーションに適用する手段(111)と、パラメータ取得前に論理回路を修正する手段(130)とを備える。論理回路を修正するとき、その論理回路にてパラメータを記憶する記憶素子がリング型のシフトレジスタとして動作するためのバイパス配線(101A)と、バイパス配線を介して各記憶素子のパラメータを読み出す読出部(101B)とを付加する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体デバイスの検証技術に関し、特に、ハードウェア記述言語に基づく論理回路が形成されたデバイスの動作を検証する技術に関する。
【背景技術】
【0002】
半導体技術の進歩により、半導体デバイスにおける論理LSI(Large Scale Integrated circuit)の集積度が年々向上し、大規模なシステムを1チップに集積することが可能になっている。また、半導体デバイスの製造コストは、極めて高価であるとともに、その製造期間には1月以上を必要とするため、製造前に十分な検証を行うことが重要である。
【0003】
半導体デバイスの検証は、設計の様々なフェーズで行われる。設計プロセスは、初期設計における抽象的なレベルから、最終段階における詳細な製造レベルに至るまで、各レベルに応じた論理情報を取り扱う。例えば、初期設計の段階では、入出力関係程度を確定する抽象レベルの論理情報を取り扱い、機能設計段階では、論理各部の機能を確定する機能レベルの論理情報を取り扱う。そして、最終的な詳細設計段階では、論理構造を確定する構造レベルの論理情報が取り扱われる。上述の各設計段階の論理情報は、一般に使用される各種ハードウェア記述言語(SystemC、SystemVerilog、Verilog-HDL、VHDL等)により表現することが可能である。
【0004】
半導体デバイスの論理検証や、複数の半導体デバイスを使用したシステムの論理検証の方法には、ソフトウェアシミュレータによるものと、ハードウェアエミュレータによるもの、実際の半導体デバイスを利用したものがある。
【0005】
ソフトウェアシミュレータは、ハードウェア記述言語で記述された論理情報をコンピュータプログラムとして実行するため、種々の設計段階において使用することができ、また、使用するハードウェア記述言語の変数等を容易に観測できるという利点を持っている。
【0006】
一方、実際の半導体デバイスによる検証やハードウェアエミュレータは、ハードウェアを用いることから、論理検証をソフトウェアシミュレータよりも高速に実行することができる。ハードウェアエミュレータは、一般的に、FPGA(Field Programmable Gate Array)やFPID(Field Programmable Interconnect Device)などで構成され、外部からの入力信号により所望の論理構造を編成することができる。
【0007】
ソフトウェアシミュレータの具体例としては、日本シノプシス株式会社のVCS(商標)やメンター・グラフィックス・ジャパンのModelSim(商標)などが挙げられる。ハードウェアエミュレータとしては、特許文献1や特許文献2に代表されるFPGAエミュレータが挙げられる。また、特許文献3には、ソフトウェアシミュレータとハードウェアエミュレータとを組み合わせた論理検証装置が開示されている。
【0008】
ソフトウェアシミュレータの問題点は、動作速度が遅いということである。その理由は、回路全体の動作をコンピュータプログラムにより実現するため、クロックサイクルごとに変化する全ての値を計算しなければならないからである。近年、CPUの動作速度は高速化しているが、検証対象の回路規模も大型化しているため、ソフトウェアシミュレータの速度は遅くなるばかりで、最近では最大でも100Hz程度となっている。実際のLSIの動作速度を例えば1GHzとすると、そのシミュレーションの速度は、LSIの1/10,000,000の速度となる。よって、このLSIの1秒の動作をシミュレーションするためには、10,000,000秒=約115日が必要になる。
【0009】
一方、実際の半導体デバイスによる検証や、FPGAを利用したハードウェアエミュレータは、回路の内部信号の観測性が悪い、すなわち回路内の信号の状態を外部から観測しにくいという問題点がある。実際の半導体デバイスの場合、一部の信号を観測するだけであれば、その信号を外部ピンから出力すればよいが、観測しようとする信号を変更することは困難である。なぜなら、それは、半導体デバイスの再製造を意味し、コストの面で現実的でないからである。
【0010】
また、FPGAを利用したハードウェアエミュレータの場合は、特定の信号を観測するだけであれば、回路を動作させている速度と同じ速度で観測することは可能である。しかしながら、回路の動作途中で、例えば、観測する信号を追加する、あるいは、信号の値を変更することは困難である。なぜなら、そのためには、ハードウェア記述言語の修正、合成(ハードウェア記述言語で記載された内容をネットリストにする作業)、配置配線(ネットリストをFPGAに実装する形式にする作業)が必要となり、作業に膨大な時間を要するからである。
【0011】
これらの問題点に対処するための手法が、例えば、特許文献4に記載されている。特許文献4に記載の手法は、エミュレーション中にエミュレーション装置の記憶素子の値を所定の間隔でダンプし、回路の動作に不具合が起きたとき、ダンプしたデータをシミュレーション装置に読み込み、シミュレーションを開始するというものである。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2000−132420号公報
【特許文献2】特開2001−209556号公報
【特許文献3】特開2000―215226号公報
【特許文献4】特開平11―249930号公報
【特許文献5】特願2006−553063号公報、段落0085
【非特許文献】
【0013】
【非特許文献1】ザイリンクス株式会社、Virtex-4 Configuration Guide、2007年6月21日発行
【発明の概要】
【発明が解決しようとする課題】
【0014】
上記特許文献4の手法では、シミュレーションに必要な記憶素子にスキャン用のフリップフロップ(SFF)を追加することで、上記動作が実現される。しかしながら、半導体デバイスのシミュレーションには、そのデバイスにある全ての記憶素子が持つパラメータを必要とする。したがって、上記特許文献4の手法にあっては、回路中のフリップフロップの数が元の2倍となる。そのため、回路の規模が大型化し、本来の回路レイアウトに影響を及ぼす可能性がある。
【0015】
本発明の目的は、半導体デバイスのシミュレーションに必要なパラメータを読み出すための構成を簡素化することにある。
【課題を解決するための手段】
【0016】
本発明に係る回路検証装置は、ハードウェア記述言語に基づく論理回路が形成された半導体デバイスの回路検証装置であって、前記半導体デバイスのエミュレーションを実行するための信号を含む制御信号を当該半導体デバイスへ入力するエミュレーション部と、前記半導体デバイスの論理回路に対応したハードウェア記述言語により当該論理回路のシミュレーションを実行するシミュレーション部と、前記半導体デバイスのエミュレーション開始後にシミュレーションに係るパラメータを当該半導体デバイスから取得する取得部と、前記取得部が取得したパラメータを前記シミュレーション部によるシミュレーションに適用する設定部と、前記半導体デバイスの論理回路を前記取得部によるパラメータ取得前に修正する回路修正部とを備え、前記回路修正部は、前記半導体デバイスの論理回路を修正するとき、当該論理回路にてパラメータを記憶する記憶素子が前記制御信号によりリング型のシフトレジスタとして動作するためのバイパス配線と、前記バイパス配線を介して当該記憶素子のパラメータを読み出し且つ該パラメータを前記取得部へ出力する読出部とを当該論理回路に付加する。
【0017】
本発明に係る回路検証方法は、ハードウェア記述言語に基づく論理回路が形成された半導体デバイスにおいて該半導体デバイスのシミュレーションに係るパラメータを記憶する記憶素子がリング型のシフトレジスタとして動作するための配線を当該論理回路に付加し、前記半導体デバイスのエミュレーションを開始し、前記エミュレーションの開始後、前記記憶素子をシフトレジスタとして動作させて当該記憶素子のパラメータを読み出し、前記半導体デバイスの論理回路に対応したハードウェア記述言語に前記読み出したパラメータを適用して当該論理回路のシミュレーションを実行するという方法である。
【発明の効果】
【0018】
本発明によれば、半導体デバイスのシミュレーションに必要なパラメータを読み出すための構成を簡素化することができる。これにより、論理回路の大型化を防ぐことができる。
【図面の簡単な説明】
【0019】
【図1】本発明の第1の実施形態の構成を示すブロック図である。
【図2】本発明の実施形態における回路修正部の動作例(修正前)に関する説明図である。
【図3】本発明の実施形態における回路修正部の動作例(修正後)に関する説明図である。
【図4】本発明の第1の実施形態の動作に関するフローチャートである。
【図5】本発明の第2の実施形態の構成を示すブロック図である。
【図6】本発明の第3の実施形態の構成を示すブロック図である。
【図7】本発明の第3の実施形態の動作に関するフローチャートである。
【図8】本発明の第4の実施形態の構成を示すブロック図である。
【図9】本発明の実施形態の第1の具体例の構成を示すブロック図である。
【図10】本発明の実施形態の第2の具体例の構成を示すブロック図である。
【図11】本発明の実施形態の第2の具体例の構成を示すブロック図である。
【図12】本発明の実施形態の第2の具体例の構成を示すブロック図である。
【図13】本発明の実施形態の応用例の構成を示すブロック図である。
【発明を実施するための形態】
【0020】
図1に、本発明の第1の実施形態の構成を示す。本実施形態の回路検証装置1001は、ハードウェア記述言語に基づく論理回路が形成された半導体デバイスの動作を検証するための装置である。半導体デバイス102を除く図示の構成は、回路検証装置1001においてCPUのような制御IC(図示略)がプログラムを実行することにより実現される機能構成を表す。
【0021】
ハードウェア記述言語100は、半導体デバイス102の論理回路に対応した、SystemC、SystemVerilog、Verilog、VHDLのようなハードウェア記述言語である。なお、JTAG(IEEE1149.1)やBIST(Build-In Self Test)のように、検証の対象外やシミュレーションに不要な回路モジュールはハードウェア記述言語100から除外しておいてもよい。
【0022】
半導体デバイス102の論理回路は、上記のようなハードウェア記述言語で記述された回路をネットリストに変換し、そのネットリストをもとに作成されたマスクデータから形成される。半導体デバイス102の論理回路は、ハードウェア記述言語により動作が規定されたものであればよく、その形成過程は、上記のものに限定されない。ハードウェア記述言語による論理回路が、後述するエミュレーション制御部140からの入力信号やクロック信号に従って動作することで、半導体デバイス102のエミュレーションが実行される。
【0023】
回路検証装置1001において、ユーザI/F部120は、回路検証装置1001に対する外部からの指示を入力するためのインターフェースである。外部からの指示としては、半導体デバイス102の動作の開始・停止、取得部107の動作の開始、シミュレーション部110の動作の開始・停止、設定部111の動作の開始・停止などがある。また、半導体デバイス102について、エミュレーションやシミュレーションの状況をディスプレイ装置(図示略)に表示する。
【0024】
エミュレーション制御部140は、本発明におけるエミュレーション部に相当し、本実施形態では入力信号制御部104およびクロック信号制御部105から構成される。入力信号制御部104は、予め設定されている入力信号情報103に基づいて、半導体デバイス102のエミュレーションに必要な信号を入力する。クロック信号制御部105は、半導体デバイス102の動作基準となるクロック信号の入力を制御する。
【0025】
取得部107は、後述する回路修正部130により半導体デバイス102に設けられる読出部101Bを利用して、エミュレーション時の動作に関わるパラメータを半導体デバイス102から取得し、それを読出パラメータ106として保存する。
【0026】
制御部108は、半導体デバイス102が適正に動作するように入力信号及びクロック信号のタイミングを制御しながら、ユーザI/F部120から入力された指示を入力信号制御部104、クロック信号制御部105、取得部107へ伝える。なお、回路検証装置1001から制御部108を省略してもよい。その場合、入力信号制御部104とクロック信号制御部105とが協調して適切な信号を半導体デバイス102に与え、取得部107をユーザI/F部120から直接制御する。
【0027】
シミュレーション部110は、日本シノプシス株式会社のVCS(商標)や、メンター・グラフィックス・ジャパン株式会社のModelSim(商標)などに代表される、いわゆるソフトウェアシミュレータである。シミュレーション部110は、ハードウェア記述言語100と入力信号情報103とを読み込み、半導体デバイス102が動作を停止した時点からのシミュレーションを実行する。
【0028】
設定部111は、シミュレーション部110が使用するハードウェア記述言語100のパラメータに、取得部107が半導体デバイス102から取得した読出パラメータ106を設定する。この設定部111としては、ハードウェア記述言語100の規格が、例えばVerilogである場合、IEEE1164で定義されているVerilog PLI(Programming Language Interface)を適用することができる。また、ハードウェア記述言語100の規格が上記以外でも、シミュレーション部110が持つ同等の機能を用いて設定部111を実現することが出来る。例えば、シミュレーション部110がメンター・グラフィックス・ジャパン株式会社のModelSim(商標)であれば、設定部111としてSignal Spy(商標)を利用すればよい。
【0029】
回路修正部130は、取得部107が半導体デバイス102からパラメータ(106)を取得するために、ハードウェア記述言語100を用いて半導体デバイス102の論理回路を修正する。この修正において、回路修正部130は、半導体デバイス102のフリップフロップ、ラッチ、RAM等の複数の記憶素子をシフトレジスタとして動作させるためのバイパス配線101Aおよび読出部101Bを付加する。
【0030】
図2及び図3を参照して、回路修正部130による回路の修正に関し、例を挙げて説明する。図2は、半導体デバイス102における記憶素子周辺の修正前の構成である。図示の構成において、N個の記憶素子201-1〜201-Nは、クロック信号制御部105(図1)からの共通のクロック信号が供給され、また、組合せ回路を挟んで直列的に配置されている。かかる構成に対し、回路修正部130は、半導体デバイス102のシミュレーションが開始されるまでに、例えばエミュレーション開始時などに、図3に示すような修正を行う。
【0031】
図3より、修正後の半導体デバイス102には、バイパス配線101A(101A-1〜101A-N)および読出部101Bが追加されている。記憶素子201-1〜201-Nは、バイパス配線101Aにより、各組合せ回路を迂回してリング状に接続される。また、各記憶素子(201-1〜201-N)の前段には、その記憶素子への入力を読出部101Bの制御により切り替えるためのセレクタ302-1〜302-Nが追加される。この修正後の半導体デバイス102の動作については、後に説明する。
【0032】
図4に示すフローチャートに沿って、図1の構成による動作を説明する。回路検証装置1001は、半導体デバイス102の動作を検証するにあたり、まず、回路修正部130を起動し、半導体デバイス102における記憶素子周辺の回路をハードウェア記述言語100を用いて修正する(ステップS400)。ここでは、一例として、前述の図3に示す構成のように修正されたとする。
【0033】
次に、制御部108が、ユーザI/F部120からの指示に従い、回路検証装置1001の各部が適切に動作するように初期設定を行う(ステップS401)。初期設定は、例えば、各部への起動指示や、起動に必要な情報の設定を行い、また読出部101Bは、組合せ回路からの出力を記憶素子(201-1〜201-N)へ入力するよう、各セレクタ(302-1〜302-N)を設定する。
【0034】
初期設定が完了すると、ユーザI/F部120からの指定により、制御部108がエミュレーション制御部140を制御し、半導体デバイス102に適切な入力信号およびクロック信号を与える。これにより、半導体デバイス102のエミュレーションが開始する(ステップS402)。このとき、入力信号制御部104は、入力信号として入力信号情報103からデータを読み込み、値を設定する。
【0035】
エミュレーション開始後、回路検証装置1001は、半導体デバイス102の詳細な動作状況を検証するために、ある時点までの動作、あるいは、ある時点から先の動作についてシミュレーションを行う。そのある時点、すなわちシミュレーションのタイミングは、例えば、オペレータからの指示、あるいは、タイマ制御により、ユーザI/F部120が認識できるようにしておく。ユーザI/F部120は、シミュレーションのタイミングが到来したことを認識すると、その旨を制御部108へ通知する。
【0036】
制御部108は、エミュレーション制御部140に対し、エミュレーションのためのクロック信号および入力信号を停止するよう指示する。これにより、いったん半導体デバイス102のエミュレーションが停止する(ステップS403)。
【0037】
続いて、制御部108は、取得部107を起動し、現時点で各記憶素子に保存されているパラメータを半導体デバイス102から取得するよう指示する。指示を受けた取得部107は、半導体デバイス102の読出部101Bに対し、パラメータの読み出しを要求する。
【0038】
ここで、図3を参照して、半導体デバイス102の読出部101Bが各記憶素子(201-1〜201-N)のパラメータを読み出す動作を説明する。読出部101Bは、半導体デバイス102の通常の動作時、すなわちエミュレーション中は、組合せ回路からの出力を記憶素子(201-1〜201-N)へ入力するよう、各セレクタ(302-1〜302-N)を設定する。
【0039】
一方、エミュレーション開始後、取得部107からパラメータの読み出し要求を受けたとき、読出部101Bは、記憶素子201-1〜201-N間をバイパス配線101Aにより接続するようセレクタ(302-1〜302-N)を切り替える。これにより、記憶素子201-1〜201-Nが、バイパス配線101Aを介してリング状に直列接続される。
【0040】
続いて、読出部101Bは、記憶素子201-1〜201-Nをリング型のシフトレジスタとして動作させ、出力端が自身(101B)に接続されている特定の記憶素子201-Nからパラメータを順次読み込む。シフトレジスタとして動作させるために、読出部101Bは、各記憶素子(201-1〜201-N)に共通のクロック信号を与える。
【0041】
各記憶素子(201-1〜201-N)は、1クロックごとに、自身で保持するパラメータを出力側のバイパス配線101Aを介して後段の記憶素子へ供給し、また、前段の記憶素子からのパラメータを入力側のバイパス配線101Aを介して受け取る。これにより、リング状の記憶素子201-1〜201-Nにおいて、パラメータの記憶場所が順次シフトする。
【0042】
したがって、上記のクロック動作をN回繰り返すことにより、N個の記憶素子(201-1〜201-N)のパラメータを1つの記憶素子(201-N)から読み出すことができる。なお、前述したように、記憶素子201-1〜201-Nはリング状に接続されることから、例えば、図3の左端の記憶素子201-1が出力したパラメータは、右端の記憶素子201-Nへ到達した後、一巡して元の記憶素子201-1へ戻る。よって、パラメータの読み出し処理後に、各記憶素子のパラメータが変更されることはない。
【0043】
上記動作により、読出部101Bが記憶素子から順次パラメータを読み出すと、それらが取得部107へ供給される。取得部107は、読出部101Bからのパラメータを読出パラメータ106として保存する(ステップS404)。
【0044】
読出パラメータ106の保存が完了すると、ユーザI/F部120は、シミュレーション部110および設定部111を起動する。起動したシミュレーション部110は、ハードウェア記述言語100を読み込み、シミュレーションを準備する(ステップS405)。設定部111は、シミュレーション部110が読み込んだハードウェア記述言語100のパラメータに、半導体デバイス102からの読出パラメータ106を設定する(ステップS406)。
【0045】
シミュレーション部110は、設定された読出パラメータ106により、半導体デバイス102の動作についてシミュレーションを実行する(ステップS407)。これにより、エミュレーション開始(S402)から停止(S403)までの半導体デバイス102の動作を省略することができ、さらに、エミュレーション停止後の半導体デバイス102の動作がシミュレートされ、その様子がユーザI/F部120により画面表示される。
【0046】
このように、本実施形態は、半導体デバイス102の記憶素子をリング型のシフトレジスタとして動作させることで、各記憶素子のパラメータを読み出す。したがって、パラメータ読み出しのために論理回路が大型化することを防止できる。また、ハードウェアによるエミュレーションと、ソフトウェアシミュレーションとを併用することから、動作速度および動作の観測性の双方を満足させることができる。
【0047】
本実施形態では、クロック信号が1種類の場合について説明したが、記憶素子によってクロック周波数が異なっていてもよい。その場合、エミュレーション中は、各記憶素子に対し本来のクロックを分配し、各記憶素子の値を取得するときは、共通のクロックを与えるようにする。これにより、クロック周波数が異なる記憶素子もバイパス配線101Aを介して、リング状に直接接続することができる。
【0048】
また、記憶素子を複数のブロックに分け、ブロック単位でリングを構成することも可能である。このようにすることで、記憶素子のパラメータを取得するときに、複数のリングを同時に動かすことが可能となり、パラメータを取得するまでの時間を短縮することが可能となる。
【0049】
本発明の第2の実施形態について説明する。図5に、本実施形態の回路検証装置1002の構成を示す。回路検証装置1002の構成は、前述の回路検証装置1001(図1)に停止判定部150を追加したものに相当する。図1の実施形態では、半導体デバイス102のエミュレーションの停止タイミングをユーザI/F部120から指示したが、本実施形態は停止判定部150により行う。
【0050】
停止判定部150は、エミュレーション開始後に、半導体デバイス102の状態が所定条件を満たす場合に、そのエミュレーションを停止すると判定する。判定のための条件としては、1)ある信号の値が特定の値になった場合、2)ある信号の値が特定の値の範囲内・範囲外になった場合、3)前記1)または2)が所定回数発生した場合、4)ブレークが発生した場合、5)複数の信号に対して前記1)〜4)を組み合わせた場合等、検証内容に応じて適宜設定する。
【0051】
停止判定部150は、上記のような判定を行うために、例えば、半導体デバイス102の一部のパラメータや動作状態を表す信号をデバイスの外部端子を通じて取得する。なお、本実施形態のように停止判定部150を半導体デバイス102の外部に設けることに代えて、半導体デバイス102内に停止判定部150と同等な機能を形成しておいてもよい。
【0052】
回路検証装置1002の動作は、下記の点を除き、基本的には図4に沿ったものと同様である。本実施形態では、初期設定(ステップS400)において、停止判定部150に停止条件を設定する。また、条件が成立したことにより、エミュレーションを停止するとき(ステップS402)、停止判定部150が、エミュレーション制御部140に対し、半導体デバイス102への入力信号およびクロック信号を停止するよう指示する。
【0053】
本実施形態によれば、エミュレーションの停止タイミングを、そのエミュレーションの実際の状況に応じて決定することができる。
【0054】
本発明の第3の実施形態について説明する。図6に、本実施形態の回路検証装置1003の構成を示す。回路検証装置1003の構成は、前述の回路検証装置1001(図1)にシミュレーション判定部160を追加したものに相当する。シミュレーション判定部160は、取得部107が半導体デバイス102から取得した読出パラメータ106を用いて、シミュレーションの要否を判定する。
【0055】
図7に示すフローチャートに沿って、本実施形態の動作を説明する。回路修正部130による回路の修正後、半導体デバイス102で開始したエミュレーションが停止し、その半導体デバイス102からパラメータを読み出すまでの手順(ステップS700〜S704)は、図4に沿った前述の手順(S400〜S404)と同様であり、説明を省略する。
【0056】
パラメータの取得が完了すると、シミュレーション判定部160が、その読出パラメータ106を所定の判定基準に照らし合わせ、この時点でシミュレーションを行うべきか否かを判定する(ステップS705)。判定基準は、例えば、今回の読出パラメータ106の値が、1)特定の値になった場合、2)特定の値の範囲内・範囲外になった場合、3)前記1)または2)が所定回数発生した場合、4)ブレークが発生した場合、5)複数の信号に対して前記1)〜4)を組み合わせた場合等、検証内容に応じて適宜設定する。はシミュレーションを行うと判定するといったものである。
【0057】
上記判定の結果、シミュレーションを行う場合は(ステップS706:Yes)、前述の実施形態(図4:S405〜S407)と同様に、シミュレーション部110を起動し、読出パラメータ106に基づくシミュレーションを実行する(ステップS707)。
【0058】
一方、シミュレーションを行わないと判定した場合(ステップS706:No)、シミュレーション判定部160は、エミュレーション制御部140にエミュレーションの再開を指示する(ステップS708)。これにより、半導体デバイス102に対するクロック信号等の供給が再開されると共に、一旦停止していたエミュレーションが再開される。その後、エミュレーションが停止されたときは、上記と同様な手順で、シミュレーションの要否を判定する。
【0059】
本実施形態によれば、シミュレーションするか否かを半導体デバイス102のパラメータの状態に応じて決定することができる。また、前述したように、半導体デバイス102からパラメータを読み出す際は、各記憶素子をリング状のシフトレジスタとして動作させることから(図3)、各記憶素子の記憶状態が、読み出し前と同じ状態に維持される。したがって、シミュレーションを行わない場合に、エミュレーションを直ちに再開させることができる。
【0060】
本発明の第4の実施形態について説明する。図8に、本実施形態の回路検証装置1004の構成を示す。回路検証装置1004は、検証対象の半導体デバイス(102)が複数ある場合を想定したものである。本実施形態は、ハードウェア記述言語の種別が異なる2つの半導体デバイス(102-1,102-2)を検証する構成であるが、検証対象の数量は、図示のものに限定されず、3つ以上であってもよい。
【0061】
回路検証装置1004は、半導体デバイス102-1のためのハードウェア記述言語100-1、取得部107-1および読出パラメータ106-1と、半導体デバイス102-2のためのハードウェア記述言語100-2、取得部107-2および読出パラメータ106-2とを備える。
【0062】
図8の構成は、入力信号およびクロック信号を2つの半導体デバイス(102-1,102-2)で共通のものとする構成であるが、これに代えて、入力信号およびクロック信号を個別にする構成、あるいは、入力信号は個別であるがクロック信号は共通とした構成、もしくは、入力信号は共通であるがクロック信号は個別とした構成であってもよい。信号供給を個別にする場合、半導体デバイス別にエミュレーション制御部140を設ける構成となる。
【0063】
本実施形態の動作は、回路検証装置1004が、各半導体デバイス(102-1,102-2)について、概ね図4に沿った前述の手順を実行することになる。なお、本実施形態では、複数のハードウェア記述言語(100-1,100-2)を取り扱うことから、シミュレーション部110が、シミュレーションに使用するハードウェア記述言語を事前に判別できるようにすることが望ましい。そのためには、例えば、使用すべきハードウェア記述言語をユーザI/F部120からシミュレーション部110へ指示する、あるいは、設定部111がシミュレーション部110に対し、今回の読出パラメータ(106-1,106-2)が何れのハードウェア記述言語(100-1,100-2)に対応するかの情報を通知すればよい。
【0064】
本実施形態によれば、一つの半導体デバイスだけでなく、複数の半導体デバイスの検証も可能である。これにより、ハードウェア記述言語の種別が異なる複数のデバイスの検証を単一の回路検証装置により行うことができる。
【0065】
上記の第2〜第4の実施形態は、個別に実施することに限らず、適宜組み合わせて実施してもよい。
【0066】
(具体例1)
上記実施形態の構成について具体例を挙げる。図9に、第1の具体例の構成を示す。この構成は、一般的な計算機800と半導体テスト装置806とをPCI(Peripheral Component Interconnect)バス805により、相互にアクセス可能に接続したものである。計算機800は、CPU801、RAM802、ブリッジ803およびHDD804を含む。計算機800はブリッジ803を介して、前述のユーザI/F部(120)を実現する入力ユニット809および表示ユニット810が接続されている。
【0067】
計算機800は、前述のシミュレーション部(110)、設定部(111)、回路修正部(130)の機能を実現する。計算機800のHDD804またはRAM802には、ハードウェア記述言語(100)と、取得部(107)により取得した読出パラメータ(106)を格納する。
【0068】
半導体テスト装置806において、制御FPGA807は、前述のエミュレーション制御部(140)、制御部(108)および取得部(107)に対応する。メモリ808は、前述の入力信号情報(103)を格納する記憶手段である。
【0069】
図9の構成において、ユーザから入力ユニット809を通じて動作の開始を指定されたとき、CPU801は、HDD804に格納されたプログラムにより初期設定を実行する(図4:S401)。この初期設定では、HDD804の入力信号情報(103)を半導体テスト装置806上のメモリ808に転送する。また、必要に応じて、制御FPGA807に対し、クロック数や周波数、位相関係の設定、半導体デバイス102に与える入力信号とメモリ808の値とに関する設定などを行う。
【0070】
初期設定を終了したら、表示ユニット810に、半導体デバイス102のエミュレーションを開始できる状態になったことを表示し、ユーザが次のステップの実行を指示するまで待機する。
【0071】
その後、ユーザからの指示により半導体デバイス102のエミュレーション開始が指示されたとき、CPU801は、制御FPGA807により半導体デバイス102の動作を開始する(図4:S402)。その後、ユーザが、計算機800に接続されたキーボードやマウスなどの入力ユニット809を通じて、半導体デバイス102の動作の停止を指示を行う。CPU801は、この指示を認識すると、制御FPGA807に対し半導体デバイス102の動作停止を指示する。これにより、半導体デバイス102のエミュレーションが停止する(図4:S403)。
【0072】
CPU801は、エミュレーションの停止を認識すると、制御FPGA807に対し、半導体デバイス102の各記憶素子からパラメータを読み出すよう指示する。制御FPGA807は、半導体デバイス102の一連の記憶素子をシフトレジスタとして動作させることで、各記憶素子のパラメータを順次読み出し、それを計算機800へ転送する。CPU801は、制御FPGA807からのパラメータ(106)をHDD804あるいはRAM802に保存する(図4:S404)。なお、半導体デバイス102から読み出されるデータ量を考慮して、パラメータは、RAM802よりもHDD804に記憶するのが望ましい。
【0073】
続いて、CPU801は、HDD804に記憶されているシミュレーション部110のプログラムを実行することで、シミュレータ(110)を起動する(図4:S405)。起動したシミュレータ(110)は、HDD804にあるハードウェア記述言語(100)および入力信号情報(103)を読み込む。また、半導体デバイス102から読み出されたパラメータ(106)をシミュレーションのパラメータとして設定する(図4:S406)。そして、シミュレーションを実行する(図4:S407)。
【0074】
(具体例2)
半導体デバイス102として、汎用のFPGAを利用することができる。この場合の構成は、前述の図9のシステムにおいて、検証対象の半導体デバイス102をFPGAに置き換えた構成に相当する。一般的に、半導体デバイスは、動作周波数、電圧、入力I/F(LVTTL(Low Voltage TTL),HSTL(High Speed Transceiver Logic),LVDS(Low Voltage Differential Signaling)等)、パッケージ(DIP(Dual Inline Package),BGA(Ball Grid Array)等)などが異なるため、規格ごとに専用ボードを必要とすることが多い。一方で、FPGAを利用して半導体デバイス102をエミュレーションすることで、ハードウェア記述言語ごとの専用ボードが不要となる。
【0075】
FPGAに関し、例えば、ザイリンクス株式会社のFPGAには、JTAGおよびSelectMAP(商標)用の端子から記憶素子を読み出すための機能を用意したものがある(特許文献5および非特許文献1を参照)。このようなFPGAを用いる場合、前述した回路修正部130による回路の修正(図4:S400)は省略することができる。すなわち、JTAGもしくはSelectMAPを操作するように取得部107を構成すれば、FPGA内の記憶素子の値を読み出すことが可能となる。
【0076】
図10に、半導体デバイス102としてFPGAを用いた場合の構成を示す。図示の構成は、図9に示す前述の具体例における半導体テスト装置806をFPGAエミュレータ900に置き換えると共に、検証対象として複数のFPGA903.1〜903.Nを備えたものである。かかる構成の動作は、図8に沿って説明した第4の実施形態のものに準じる。
【0077】
なお、先に述べたように、ザイリンクス株式会社などのFPGAには、本発明の読出部(101B)に相当する機能が実装されている。よって、この場合、例えば、図11に示すように、FPGA903.1〜903.NをJTAGで直列に接続して、シフトレジスタに準じた動作を行うよう指示することで、制御FPGA901により全てのFPGA903.1〜903.Nからパラメータを読み出すことができる。
【0078】
また、図11の形態に代えて、図12のようにSelectMAPインターフェースを制御FPGA901に接続することでも、全てのFPGA903.1〜903.Nからパラメータを読み出すことができる。
【0079】
半導体デバイス102にFPGAを利用する形態において、そのFPGAが、初期値を変更できる仕様である場合は、シミュレーション終了時点のパラメータをFPGAの新たな初期値としてもよい。この場合、新たな初期値を利用して、FPGAの構成データ(コンフィグレーションデータ)を作成し、そのコンフィグレーションデータをFPGAに書き込む。これにより、シミュレーションにより検証した動作を、FPGAエミュレータで再現することが可能になる。
【0080】
なお、本発明は、デバイス内部でクロックを生成するためのPLL(Phase-Locked Loop)が搭載された半導体デバイスの検証にも適用可能である。PLLは、クロックに存在するジッタや周波数を逓倍する機能、位相シフトする機能などがあるため、多くの半導体デバイスで採用されている。PLLは、内部のVCO(Voltage Controlled Oscillator)によって自発的にクロック信号を生成するため、入力信号の周波数が制限される。原理上、その下限周波数は、0[Hz]より大きい値に設定される。
【0081】
しかしながら、エミュレーションがいったん停止すると(図4:S403)、クロック周波数が0[Hz]になり、PLL動作に不都合が生じる。この問題を解決するためには、例えば、図13に示すような構成を半導体デバイス102に追加すればよい。
【0082】
図13の構成は、PLL用の外部端子500とは別に、セレクタに直接アクセスするための外部端子501及び502を追加したものである。エミュレーション中は、外部端子500を通じてPLLを動作させてクロック信号をセレクタへ入力する。また、エミュレーションを停止してパラメータを読み出すときは、外部端子501からセレクタにクロック信号を直接入力する。この切り替えのために、例えば、入力信号制御部104(図1)などが、外部端子502を通じてセレクタに選択信号を与える。これにより、PLLを搭載した半導体デバイス102であっても、エミュレーション中およびパラメータ読み出し時の双方で、適正にクロック信号を供給することができる。
【符号の説明】
【0083】
1001,1002,1003,1004 回路検証装置
100:ハードウェア記述言語、101A:バイパス配線、101B:読出部、102:半導体デバイス、103:入力信号情報、104:入力信号制御部、105:クロック信号制御部、106:読出パラメータ、107:取得部、108:制御部、110:シミュレーション部、111:設定部、120:ユーザI/F部、130:回路修正部、140:エミュレーション制御部、150:停止判定部、160:シミュレーション判定部、201-1〜201-N:記憶素子、301-1〜301-N:セレクタ、

【特許請求の範囲】
【請求項1】
ハードウェア記述言語に基づく論理回路が形成され且つ該論理回路の記憶素子からパラメータを読み出す手段を具備するFPGA(Field Programmable Gate Array)を有する回路検証装置であって、
前記FPGAのエミュレーションを実行するための信号を含む制御信号を当該FPGAへ入力するエミュレーション部と、前記FPGAの論理回路に対応したハードウェア記述言語により当該論理回路のシミュレーションを実行するシミュレーション部と、前記FPGAのエミュレーション開始後にシミュレーションに係るパラメータを当該FPGAの記憶素子から取得する取得部と、前記取得部が取得したパラメータを前記シミュレーション部によるシミュレーションに適用する設定部とを備えることを特徴とする回路検証装置。
【請求項2】
さらに、前記FPGAのエミュレーション中に当該FPGAの信号が所定条件に該当する場合に前記エミュレーション部に対し当該エミュレーションの停止命令を発行する停止判定部を備え、
前記取得部は、前記停止判定部により停止命令が発行されたとき、前記FPGAからパラメータを取得することを特徴とする請求項1記載の回路検証装置。
【請求項3】
さらに、前記取得部が取得したパラメータと所定条件との照合により前記シミュレーション部によるシミュレーションを実行するか否かを判定するシミュレーション判定部を備えることを特徴とする請求項1又は2記載の回路検証装置。
【請求項4】
さらに、前記シミュレーション部のシミュレーションにより得られたパラメータ、もしくは、前記取得部が取得したパラメータを前記FPGAのコンフィグレーションデータに変換して当該FPGAに設定する手段を備えることを特徴とする請求項1乃至3のいずれか1項に記載の回路検証装置。
【請求項5】
ハードウェア記述言語に基づく論理回路が形成され且つ該論理回路の記憶素子からパラメータを読み出す手段を具備するFPGA(Field Programmable Gate Array)を用いてエミュレーションを実行し、
前記エミュレーションの開始後、当該FPGAから当該記憶素子のパラメータを取得し、
前記FPGAの論理回路に対応したハードウェア記述言語に前記取得したパラメータを適用して当該論理回路のシミュレーションを実行することを特徴とする回路検証方法。
【請求項6】
さらに、前記FPGAのエミュレーション中に当該FPGAの信号が所定条件に該当する場合に前記エミュレーション部に対し当該エミュレーションの停止命令を発行し、
前記停止命令が発行されたとき、前記FPGAからパラメータを取得することを特徴とする請求項5記載の回路検証方法。
【請求項7】
さらに、前記取得したパラメータと所定条件との照合により前記シミュレーションを実行するか否かを判定することを特徴とする請求項5又は6記載の回路検証方法。
【請求項8】
さらに、前記シミュレーションにより得られたパラメータ、もしくは、前記取得部が取得したパラメータを前記FPGAのコンフィグレーションデータに変換して当該FPGAに設定することを特徴とする請求項5乃至7のいずれか1項に記載の回路検証方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2013−93041(P2013−93041A)
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願番号】特願2012−284817(P2012−284817)
【出願日】平成24年12月27日(2012.12.27)
【分割の表示】特願2008−92124(P2008−92124)の分割
【原出願日】平成20年3月31日(2008.3.31)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】