JP2004157986A - 論理検証システムとfpgaモジュール - Google Patents
論理検証システムとfpgaモジュール Download PDFInfo
- Publication number
- JP2004157986A JP2004157986A JP2003280650A JP2003280650A JP2004157986A JP 2004157986 A JP2004157986 A JP 2004157986A JP 2003280650 A JP2003280650 A JP 2003280650A JP 2003280650 A JP2003280650 A JP 2003280650A JP 2004157986 A JP2004157986 A JP 2004157986A
- Authority
- JP
- Japan
- Prior art keywords
- logic
- fpga module
- fpga
- signal
- 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
Links
Images
Landscapes
- Microcomputers (AREA)
- Logic Circuits (AREA)
Abstract
【課題】 開発時間を改善し、設計品質を向上した論理検証システムとFPGAモジュールを提供する。
【解決手段】 論理シミュレーション加速装置と、論理エミュレーション装置での検証工程に用いられるFPGAモジュールとブリッジ回路間において、FPGAモジュールの全ピンを直結配線し、かつ論理シミュレーションの加速を行う場合に、FPGAモジュールの外部インタフェースコネクタに検証対象論理の切り口を割り当て、上記FPGAモジュールの外部インタフェースコネクタの各ピンと論理信号との対応付けを汎用プロセッサ上の論理シミュレータ上で行うようにする。
【選択図】 図12
【解決手段】 論理シミュレーション加速装置と、論理エミュレーション装置での検証工程に用いられるFPGAモジュールとブリッジ回路間において、FPGAモジュールの全ピンを直結配線し、かつ論理シミュレーションの加速を行う場合に、FPGAモジュールの外部インタフェースコネクタに検証対象論理の切り口を割り当て、上記FPGAモジュールの外部インタフェースコネクタの各ピンと論理信号との対応付けを汎用プロセッサ上の論理シミュレータ上で行うようにする。
【選択図】 図12
Description
この発明は、論理検証システムとFPGAモジュールに関し、例えばシステムLSI(大規模集積回路装置)の開発設計に用いられる論理シミュレータ(エミュレータ)に利用して有効な技術に関するものである。
近年、FPGA(フィールド・プログラマブル・ゲート・アレイ)を利用した論理エミュレーションシステムが論理検証手段として取り入れられるようになってきている。論理エミュレーションを実施した場合、実LSIを作成しないと検出できなかった、周辺実部品とのI/F(インタフェース)確認や、搭載基板の確認、論理シミュレーションでは検出し難い不良の摘出等が可能となり、設計期間とコストを削減することができる。また、近年のLSIの論理規模増加に伴い処理時間が長大化してきたことから、FPGAに検証対象論理の一部またはすべてを搭載することで、論理シミュレーションの加速(処理速度向上)を実現するシステムが製品化され始めている。
特開平11−352190号公報(以下、先行技術1という)には、FPGAモジュールとして、FPGA、スイッチングデバイス、コネクタを搭載し、各FPGAに割り当てた論理のインタフェースを比較的容易に変更可能とすると共に、搭載されたコネクタ経由で周辺部品等、論理の外部周辺部品と接続し、市販の論理エミュレーションシステムよりも高密度で小型の形状とすることで、周辺部品等と同一の基板に搭載することを可能とすることが記載されている。
米国特許第6,009,256号公報(以下、先行技術2という)には、HDL記述された論理とテストベンチを入力とし、HDLから論理構成要素(レジスタ、組み合わせ回路、ワイヤ、クロック発生回路)を読み取ることで、論理及びテストベンチをS/Wで実現する部分とH/Wで実現する部分に自動分離し、それぞれをもとにCPUで実行可能なソフトウェアモデルとFPGAにプログラムするハードウェアモデルを作成し、CPU、システムバス(PCI等)、FPGAを構成要素とするプラットフォーム上でこれら2つのモデルを連動動作させることができる論理シミュレーション装置または論理検証装置が開示されている。
特開平11−352190号公報
米国特許第6,009,256号公報
前記先行技術1のシステムのように、FPGAが搭載されているか、またはFPGAが搭載可能となっており、各FPGA間をスイッチングデバイスで接続するエミュレーションシステムの場合、ブリッジ回路は前記先行技術1のシステム上に搭載可能なFPGAで実現できるが、ブリッジ回路と各FPGAとの接続において必ずスイッチングデバイスを経由するため、このスイッチングデバイスをプログラムする処理が必要となる。また、論理シミュレーションの加速から論理エミュレーションに移行する場合に、ブリッジ回路を搭載したデバイスを取り外し、代わりに周辺実部品を搭載するかもしくはインタフェースコネクタを搭載して、論理とこれら部品とのインタフェースをスイッチングデバイスをプログラムし直すことで再構成する必要がある。
そして、上記先行技術1のシステムのように、FPGAが搭載されているか、またはFPGAが搭載可能となっており、各FPGA間をスイッチングデバイスで接続するエミュレーションシステムの場合、ブリッジ回路と検証対象論理のインタフェースに双方向の信号がある場合で、かつ論理シミュレータ側にその双方向信号の方向を切り替える信号(双方向信号の方向制御信号)が存在しない場合に、検証対象論理のインタフェースにこの双方向信号の方向制御信号を追加して、その信号を論理シミュレータに渡す必要がある。この双方向信号の方向制御信号は、論理の各双方向バス毎に存在するため本数が多く、ブリッジ回路と検証対象論理のインタフェースのピン数が増加してしまうという問題が発生する。また、検証すべき論理回路を複数のFPGAに分担させて構成した場合、FPGAをまたがってクロックを伝達させることとなり、FPGA毎のクロック間のスキューが大きくなって高速動作での検証が行えないという問題も有する。
この発明の目的は、開発時間を改善した論理検証システムとFPGAモジュールを提供することにある。この発明の他の目的は、設計品質を向上した論理検証システムとFPGAモジュールを提供することにある。この発明の前記ならびにそのほかの目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記の通りである。論理シミュレーション加速装置と、論理エミュレーション装置での検証工程に用いられるFPGAモジュールとブリッジ回路間において、FPGAモジュールの全ピンを直結配線し、かつ論理シミュレーションの加速を行う場合に、FPGAモジュールの外部インタフェースコネクタに検証対象論理の切り口を割り当て、上記FPGAモジュールの外部インタフェースコネクタの各ピンと論理信号との対応付けを汎用プロセッサ上の論理シミュレータ上で行うようにする。
本願において開示される発明のうち他の代表的なものの概要を簡単に説明すれば、下記の通りである。検証すべき論理回路が複数のFPGAに分割して実装され、複数のFPGAの相互の接続をスイッチングデバイスによってプログラマブルに行って上記検証すべき論理回路を実現するFPGAモジュールにおいて、上記FPGAに対してクロックを供給するクロック生成回路を上記スイッチングデバイスに設ける。
開発時間を改善し設計品質を向上させることができる。複数のFPGAに供給されるクロックのスキューが低減でき、高いクロックでの検証が可能になる。論理検証工数を短時間で立ち上げることができるシステム及びそれに好適なFPGAモジュールを提供することができる。動作不具合が生じた場合に、その近辺での論理ネットの状態が観測可能な為に不良原因が短時間で解析できる。
図1には、この発明が適用されるLSIにおける設計及び検証方法を説明するためのフローチャート図が示されている。図1において、ステップS0101にあるように実現する回路の仕様を決定する仕様設計を行う。次に、ステップS0102で、ステップS0101で決定した仕様に基づきHDL(ハードウェア記述言語)を用いて論理回路をレジスタトランスファレベルで記述し、論理設計を行う。その後、ステップS0103で、ステップS0102の論理回路を汎用プロセッサ上で擬似的に動作させることによりその動作を検証する機能を持つ論理シミュレータと呼ばれるシステムを用いて、設計した論理回路の検証を行う。この検証は、一般的には論理シミュレーションと呼ばれている。ここでは、論理機能が仕様通りかどうかを検証する。
論理機能が確認されると、ステップS0104の論理合成処理を行い、レジスタトランスファレベルで記述された回路を、ターゲットとなるASIC(LSI)ゲート回路に変換する処理を行う。ステップS0104では、実際にターゲットとなるASICゲートで構成された回路が出力として得られるため、実行後にステップS0105にあるようにタイミングが仕様を満たすかどうかの検証を行うことが行われる。
ステップS0106にあるように論理シミュレーションによる検証の終わり頃から、論理シミュレーションによる検証、論理合成、レイアウトと並行して、FPGA (Field Programmable Gate Array)などの再構成可能なデバイスを利用した論理エミュレーションを行う。この検証は、再構成可能なデバイスに設計した論理をプログラムすることで、実際の周辺部品と組み合わせて実動作に近い速度で論理を動作させ、実部品の仕様誤解の検出やテストパターンが長大で論理シミュレーションでは実行が不可能なケースにおける不良などをLSI製造前に摘出することを目的としたものである。
上記再構成可能なデバイスに設計した論理をプログラムすると、実動作に近い速度で論理を動作させることが可能であるため、組み込みシステムなどの開発のように、設計した論理と組み合わせて動くソフトウェアを同時期に設計する場合、ステップS0107のようにソフトウェアデバッグをLSIのサンプル製造前から実施することができ、これによって設計期間を短縮することができる。
ステップS0105にてタイミングに問題がなければ、ステップS0108に進み、ステップS0104においてターゲットとなるASICゲート回路に変換された論理を入力として、セルをチップに配置し、そのセルのピン同士を各セル間の論理接続に従って配線するレイアウト処理を行う。この後、ステップS0109にあるようにタイミングが仕様を満たすかどうかの最終検証を行う。
ステップS0106、ステップS0109の検証が終わると、ステップS0110にて、実際にLSIを製造する。この後、ステップS0111にて最終確認のために実機検証を行うが、ステップS0106の論理エミュレーションを実施している場合、共通のテストデータや環境を使用することができ、また本来はこの時点でしか摘出できなかった不良を早期に検出しているため、実機検証期間を大幅に短くすることができる。
この発明は、図1の各フローのうち、ステップS0103における再構成可能なデバイスを利用した論理シミュレーションの加速と、ステップS0106における再構成可能なデバイスを利用した論理エミュレーションの改良に関するものである。
上記論理エミュレーションは、開発論理規模の増加に対応して複数の再構成可能なデバイスを搭載し、その再構成可能なデバイスに検証対象の論理を分割して割りあて、同一のボードに搭載された周辺実部品やコネクタを経由して接続される入出力装置とともに論理動作を実現する。論理エミュレーションで用いるマザーボードは、LSI開発者が、設計するLSIにあわせて製作したり、あるいは市販のFPGAを複数個搭載し、かつその相互間を直接またはスイッチングデバイスで接続した論理エミュレーションシステムを使用したりすることが知られている。
しかし、前者のマザーボードを設計するLSIにあわせて製作する場合、そのマザーボードを他のLSI開発に流用できないという問題が発生する。また、各FPGAに割り当てた論理のインタフェース、すなわち各FPGA間の結線を容易に変更できないという問題もある。一方、後者の市販の論理エミュレーションシステムの場合、スイッチングデバイスにより、比較的容易に各FPGAに割り当てた論理のインタフェース変更に対応できる。また、論理エミュレーションシステムに汎用的なコネクタを用意し、周辺部品等をそのコネクタ経由で外付けにすることで論理エミュレーションシステムにプログラムするLSIを自由に変更、交換可能としている。
しかながら、通常の論理エミュレーションシステムは大型であり、周辺部品等と同一の基板に搭載することができない。このような問題を解決する手段として、前記先行技術1で示されたFPGAモジュールを利用する手法が知られている。このようなFPGAモジュールは、FPGA、スイッチングデバイス、コネクタを搭載し、各FPGAに割り当てた論理のインタフェースを比較的容易に変更可能とすると共に、搭載されたコネクタ経由で周辺部品等、論理の外部周辺部品と接続する。市販の論理エミュレーションシステムよりも高密度で小型の形状とすることで、周辺部品等と同一の基板に搭載することを可能とする。
再構成可能なデバイスを利用し論理シミュレーションの加速を実現するシステムとして、FPGAを複数個搭載し、かつ論理シミュレーションを実行する汎用プロセッサとの汎用インタフェースを備えるものがある。検証対象の論理を複数個のFPGAに分割搭載し、汎用プロセッサとつながる汎用インタフェースと接続することで、汎用プロセッサ上で動作する論理シミュレータから、汎用インタフェースを通して複数個のFPGAに信号を送り、また汎用インタフェースを通して複数個のFPGAから論理シミュレータへ信号を返すという処理が可能となる。これにより、本来は汎用プロセッサ上で擬似動作させる必要のあった論理動作を、複数個のFPGA上で実行することができるようになり、処理時間が短縮される。
このような論理シミュレーションの加速装置では、汎用プロセッサとつながる汎用インタフェースと接続され、汎用インタフェースのバス仕様に従って汎用プロセッサと通信を行う機能を持つことで、装置上のFPGAと汎用プロセッサとの通信の仲介を行うブリッジ回路を持ち、このブリッジ回路と複数個のFPGAがローカルバスで接続され、定められたバス仕様に則りシーケンシャルに相互で信号のやり取りを行うことが行われる。このような接続の場合、各FPGAおよびブリッジ回路間の結線は、搭載する論理に依存せず、ローカルバスの仕様にのみ従って配線することができる。しかしながら、もともと装置に搭載する対象の論理には存在しないローカルバスとのインタフェース論理を、各FPGAに搭載された分割論理の切り口に追加する必要が発生する。
この問題を解決するシステムとして、複数のFPGAを搭載でき、FPGAに搭載した論理間のインタフェースをプログラマブルに変更できる論理エミュレーション装置と、汎用プロセッサによって動作する装置とインタフェースを持ち、論理シミュレータと信号のやり取りが可能な装置とを組み合わせることで論理シミュレーションと論理エミュレーションの協調動作を可能とし、論理エミュレーション側で検証対象の論理を実動作させて論理シミュレーションを加速するものが考えられる。
このようなシステムの場合、汎用インタフェースのバス仕様に従って汎用プロセッサと通信を行う機能を持ち、装置上のFPGAと汎用プロセッサとの通信の仲介を行うブリッジ回路とFPGAとの接続は、スイッチングデバイスにより、フレキシブルに変更可能となっており、FPGA間の接続についても同様であるから、ブリッジ回路と各FPGAとの接続を前記先行技術2のように検証対象論理と異なるローカルバスとする必要がなく、FPGAで実現する論理の切り口とすることができる。
しかし、ブリッジ回路と各FPGAとの接続において必ずスイッチングデバイスを経由するため、このスイッチングデバイスをプログラムする処理が必要となる。また、論理シミュレーションの加速から論理エミュレーションに移行する場合に、ブリッジ回路を搭載したデバイスを取り外し、代わりに周辺実部品を搭載するかもしくはインタフェースコネクタを搭載して、論理とこれら部品とのインタフェースをスイッチングデバイスをプログラムし直すことで再構成する必要がある。
このシステムの場合、ブリッジ回路と検証対象論理のインタフェースに双方向の信号がある場合で、かつ論理シミュレータ側にその双方向信号の方向を切り替える信号(双方向信号の方向制御信号)が存在しない場合に、検証対象論理のインタフェースにこの双方向信号の方向制御信号を追加して、その信号を論理シミュレータに渡す必要がある。この双方向信号の方向制御信号は、論理の各双方向バス毎に存在するため本数が多く、ブリッジ回路と検証対象論理のインタフェースのピン数が増加してしまうという問題が発生する。
なお、先行技術2の場合には、論理シミュレーションの加速時に、各FPGAに割り当てられた論理にローカルバスのインタフェースを追加しているため、論理シミュレーションの加速から論理エミュレーションに移行する場合に、FPGAを搭載した論理エミュレーションマザーボードを論理にあわせて作成し、FPGA間および周辺実部品などとの論理の外部インタフェースとの接続を、ローカルバスから実際の論理の切り口に変更する必要がある。
本願発明では、論理シミュレーションと論理エミュレーションの2つの検証工程において、検証対象の論理を搭載した同一のFPGA群のプログラムデータを使用することを可能とするために案出されたものである。すなわち、本願発明の概要を説明するならば、以下の通りである。汎用プロセッサ上で動作する装置と、再構成可能な論理装置(FPGA等)を含む装置とで構成される論理シミュレーションの加速装置と、再構成可能な論理装置(FPGA等)を含む論理エミュレーション装置において、同一のFPGAモジュールを使用する。
上記FPGAモジュールとブリッジ回路間において、FPGAモジュールの全ピンを直結配線し、かつ論理シミュレーションの加速を行う場合に、FPGAモジュールの外部インタフェースコネクタに検証対象論理の切り口を割り当てる。そして、FPGAモジュールの外部インタフェースコネクタの各ピンと論理信号との対応付けを、汎用プロセッサ上の論理シミュレータ上で行うようにする。
FPGAモジュールに搭載する論理に、双方向信号の方向制御信号を、その信号が制御する双方向信号のインタフェースを用いてブリッジ回路に送信する手段を設けるFPGAモジュールとブリッジ回路を搭載するデバイス間で双方向信号の信号方向を自動検出する手段を設けることで、論理シミュレーションの加速と論理エミュレーションの2つの検証工程において、検証対象の論理を搭載した同一のFPGA群のプログラムデータを使用することを実現する。
図2には、この発明に係る論理エミュレーションシステムの一実施例の構成図が示されている。この実施例は、図1におけるステップS0106で実施する論理エミュレーションをFPGAモジュールを利用して行う場合のシステムに向けられている。同図において、0001−1は、検証対象の論理をプログラムするFPGAモジュール0027、市販部品、既存LSIなどを搭載した論理エミュレーションマザーボードであり、0002は、上記マザーボード0001−1に信号を入出力するための信号入力/出力装置であり、例えばスピーカやディスプレイ、マイクなどからなる。
0003は、入力/出力装置0002と接続するためにマザーボード0001−1に搭載されたコネクタである。0027は、検証対象の論理をプログラムするFPGAモジュールである。0004,0005は検証対象論理の周辺部品の一例であり、0005は既存LSIを、0004はメモリを例示している。この実施例では、FPGAをモジュール0027が1つにまとめ取り外し可能とされている。
この実施例の論理エミュレーションシステムでは、前記説明したと同様に、開発論理規模の増加に対応して複数の再構成可能なデバイスを搭載し、その再構成可能なデバイスに検証対象の論理を分割して割り当てられ、同一のボードに搭載された周辺実部品やコネクタを経由して接続される入出力装置とともに論理動作を実現する。この実施例の論理エミュレーションで用いるマザーボードは、上記のように市販の、FPGAを複数個搭載し、かつその相互間を直接またはスイッチングデバイスで接続した論理エミュレーションシステムを使用する。
図3には、この発明に用いられるFPGAモジュールの一実施例のブロック図が示されている。この実施例のFPGAモジュールは、複数個のFPGAとスイッチングデバイス、コネクタを備えて大規模論理が搭載される。0027は、FPGAモジュールである。0028〜0031はFPGAモジュールで実現する論理を分割してプログラムするためのFPGAである。0032〜0035は、は各FPGAにマッピングされた論理間を接続するためのスイッチングデバイスである。0036〜0039は各FPGA0028〜0031にマッピングされた論理の外部インタフェース信号をFPGAモジュール0027から入出力するためのコネクタである。
0040は、FPGAモジュール0027を搭載するためのマザーボードであり、前記図1では0001−1として表している。コネクタ0036〜0039と接続可能なコネクタを搭載することで、マザーボード0040からFPGAモジュール0027に対して信号を入出力できる。0041は、FPGAモジュール上の2つ以上のFPGAを直接結ぶワイヤである。0042は、FPGAモジュール上でスイッチデバイスとFPGAを結ぶワイヤである。
図4には、この発明に係る論理シミュレーションアクセラレータの一実施例の構成図が示されている。この実施例の論理シミュレーションアクセラレータは、前記図1におけるステップS0103で実施する論理シミュレーションを加速する装置であり、前記図3のFPGAモジュールを利用して実現される。
0010−1は、論理シミュレーションを加速するために、検証対象論理をハードウェア化するためのFPGAモジュール0027と、パーソナルコンピュータ/ワークステーション(P/W)と信号を送受信するための汎用インタフェースと、その汎用インタフェースとFPGAとの間でデータの受け渡しをするブリッジ回路0011を実現したデバイスを搭載したボードである。0027は、上記の図3で示したFPGAモジュールであり、0011は、汎用のインタフェースとFPGAとの間でデータの受け渡しをするブリッジ回路を実現するデバイスであり、0012は、上記ボード0010−1を汎用のインタフェースを介して搭載する対象の装置であり、例としてパーソナルコンピュータPCから構成される。
上記パーソナルコンピュータPCは、以下の各装置を備えている。0013は汎用プロセッサ(CPU)である。0014は、ディスクメモリ装置であり、論理シミュレーションプログラムや論理シミュレーションへの入力データ、論理シミュレーションからの出力結果を格納する。0015は、ディスプレイなどの表示装置であり、論理シミュレーション結果の表示などを行う。0016は、キーボードなどの入力装置であり、論理シミュレーション実行を行うためのユーザインタフェースとなる。
この実施例の論理シミュレーションアクセラレータは、汎用プロセッサ0013上で、ディスクメモリ装置0014上の論理シミュレーションプログラムを実行する。ブリッジ回路0011は、汎用インタフェースを介して、FPGA上でハードウェア化されたシミュレーション対象論理と信号を送受信し、検証対象論理のシミュレートを行う。上記FPGAモジュール0010−1がない場合には、上記汎用プロセッサ0013で実行しなければならなかった検証対象論理の擬似動作を、FPGA上でハードウェア化された論理を実動作させるようにし、汎用プロセッサ0013での処理を減らすことで、処理速度を加速する。この実施例の論理シミュレーションアクセラレータは、FPGAをモジュールとして1つにまとめ取り外し可能としている。
図11には、前記FPGAをモジュールに論理をプログラムする方法の一例を簡単に説明するためのフローチャート図が示されている。ステップS0901では、FPGAモジュールに実現する検証対象論理を設計しているLSIから切り出す処理を行う。最終的には検証対象論理は設計しているLSI全体となるが、設計の終了した機能からFPGAモジュールに実現することで、論理シミュレーションの加速や論理エミュレーションを実行することができる。
図5に、上記切り出された検証対象論理を説明するためのブロック図が示されている。検証対象論理は、検証対象論理と外部とで信号をやり取りするためのインタフェース(切り口)を持つ。この切り口を以下ポートと呼ぶ。また、検証対象論理は1つ以上の機能を持つ。LSIのレジスタトランスファレベルの設計においては、これら機能をブロックとしてまとめて設計することが多い。以下このブロックを機能ブロックと呼ぶ。検証対象論理は、同図に示すようにポート、機能ブロック、および機能ブロック間で信号をやり取りするためのネットで構成される。
図11において、ステップS0902にて、ステップS0901で切り出した論理を、ターゲットとなる再構成可能なデバイスのゲートで記述された回路に変換する。この実施例では、以下、再構成可能なデバイスをFPGAと言い表す。次に、ステップS0903で、検証対象の論理をFPGAモジュール上の複数のFPGAに割り当てる。
図6には、上記検証対象の論理をFPGAモジュール上の複数のFPGAに割り当てた例のブロック図が示されている。0010は、論理シミュレーションを加速するために、検証対象論理をハードウェア化するためのFPGAと、PCと信号を送受信するための汎用インタフェースと、その汎用インタフェースとFPGAとの間でデータの受け渡しをするブリッジ回路を実現したデバイスを搭載したボードである。
0006〜0009は、前記図5の論理を分割して割り当てるためのFPGAである。0011は、汎用インタフェースとFPGAとの間でデータの受け渡しをするブリッジ回路を実現したデバイスである。0026は、汎用プロセッサとつながる汎用インタフェースである。0052は、上記ブリッジ回路を実現したデバイス0011と上記ボード0010上のFPGA0006〜0009を結ぶローカルバスである。0043〜0047は、上のFPGAに割り当てられた図5の論理機能ブロックである。0053〜0056は、機能ブロック0043〜0047のインタフェースをローカルバス0052のインタフェースに変換してブリッジ回路0011とのデータ送受信を行うローカルバスインタフェース回路である。
上記検証対象の論理をFPGAモジュール上の複数のFPGAに割り当てた例のブロック図が示されている。同図のように、複数のFPGAへの割りあてを機能ブロック単位とすることが、例えば前記先行技術1においても行われているが、この実施例では、機能ブロックをまたいで複数のFPGAへの割りあてを行っても良い。
図11において、ステップS0904では、FPGAモジュールのコネクタのピンに、検証対象論理のポートを割り当てるとともに、FPGAモジュール上で複数のFPGAへの割りあてを行った論理間および論理とポート間の論理接続を、前記図3のFPGAモジュール上でスイッチデバイスとFPGAを結ぶワイヤ0041や0042を用いて行う。この際、FPGAモジュールに搭載されたスイッチングデバイス内の接続も決定される。
図10には、複数のFPGAを搭載したFPGAモジュールに前記図5の論理を割り当てた例のブロック図が示されている。0027は、FPGAモジュールである。0029〜0032は、図5の論理を分割して割り当てるためのFPGAである。0036と0039は、FPGAモジュール0027上に搭載されたコネクタであり、FPGAに割り当てられた論理の外部インタフェースをFPGAモジュールの外側に接続するためのコネクタである。
0043〜0047は、FPGAモジュール0027上のFPGAに割り当てられた図5の論理機能ブロックである。0048〜0051は、上記コネクタ0036、0039に接続された、図5の論理の外部インタフェースである。0057、0059は、図5の機能ブロック間を結ぶネットである。この実施例では、ポートA、ポートDをコネクタ0048のピンに割り当てており、ポートB、ポートCをコネクタ0049のピンに割り当てている。また、論理間の接続0057、0058がワイヤ0041や0042に割り当てられる。
図11において、ステップS0905で、ステップS0903で各FPGAに割り当てた分割結果論理毎に、ステップS0904で決定された論理間接続のワイヤ割り当て結果をFPGAのピン配置制約として入力し、FPGA内の配置配線処理を行う。ステップS0905が終了すると、ステップS0906にあるようにステップS0904で決定されたスイッチングデバイス内の接続と、ステップS0905の処理結果であるFPGA内の配置配線結果をFPGAにプログラム(コンフィギュレーション)する処理を行う。この処理を行うことで、プログラムした論理をFPGAモジュールで動作させることが可能となる。
FPGAやスイッチングデバイスに論理をプログラム(コンフィギュレーション)する方法は、FPGAメーカやスイッチングデバイスメーカによりさまざまな方法が提供、提示されているが、一般的にはメモリにコンフィギュレーションデータを格納しておき、直接またはコンフィギュレーションを制御するLSIを経由してFPGAやスイッチングデバイスにコンフィギュレーションデータをプログラムする手法が用いられている。
参考として、図7には、論理エミュレーション装置の複数FPGAに論理を割り当てた例を、図8には、スイッチングデバイスを搭載した論理エミュレーション装置の複数FPGAに論理を割り当てた例を、図9には図8と接続される論理シミュレーションの加速装置の複数FPGAに論理を割り当てた例をそれぞれ示す。
上記図7においては、上記のように複数のFPGAを搭載した論理エミュレーション装置に図7の論理を割り当てた例が示されている。0001は検証対象の論理をプログラムするFPGA、市販部品、既存LSIなどを搭載した論理エミュレーションマザーボードである。0002は、論理エミュレーションマザーボードに信号を入出力するための信号入力/出力装置。例えば、スピーカやディスプレイ、マイクなどである。0003は、上記信号入力/出力装置0002とインタフェースをとるためのコネクタである。0004は、は検証対象論理の周辺部品であり、同図ではメモリを例としてあげている。0006〜0009は、図5の論理を分割して割り当てるためのFPGAである。0043〜0047は、論理エミュレーションマザーボード0001上のFPGAに割り当てられた図5の論理機能ブロックA〜Eである。
図8においては、上記のように複数のFPGAを搭載し、各FPGAにプログラムした論理間のインタフェースをプログラマブルに変更できる論理エミュレーション装置に図7の論理を割り当てた例が示されている。0017は検証対象の論理をプログラムするFPGA、市販部品、既存LSIなどを搭載でき、各搭載品のインタフェースをプログラマブルに変更できる論理エミュレーション装置であり、0006〜0009は、図5の論理を分割して割り当てるためのFPGAである。0043〜0047は、論理エミュレーションマザーボード0001上のFPGAに割り当てられた図5の論理機能ブロックA〜Eである。0002は、エミュレーションマザーボードに信号を入出力するための信号入力/出力装置であり、例えばスピーカやディスプレイ、マイクなどからなる。0003は、信号入力/出力装置0002とインタフェースをとるためのコネクタである。0004は、検証対象論理の周辺部品であり、メモリを例としてあげている。0018,0019は、論理エミュレーションマザーボード0001に搭載する部品間のインタフェースをプログラマブルに接続するためのスイッチングデバイスである。
図9においては、上記のように複数のFPGAを搭載し、各FPGAにプログラムした論理間のインタフェースをプログラマブルに変更できる論理エミュレーション装置に、汎用プロセッサによって動作する装置とインタフェースを持ち、論理シミュレータと信号の送受信が可能な装置とを組み合わせたシステムに図5の論理を割り当てた例が示されている。0017は、検証対象の論理をプログラムするFPGA、市販部品、既存LSIなどを搭載でき、各搭載品のインタフェースをプログラマブルに変更できる論理エミュレーション装置である。0006〜0009は、図5の論理を分割して割り当てるためのFPGAである。0043〜0047は、論理エミュレーション装置0001上のFPGAに割り当てられた図7の論理機能ブロックである。
0018,0019は、論理エミュレーション装置0001に搭載する部品間のインタフェースをプログラマブルに接続するためのスイッチデバイスである。0020は、論理エミュレーション装置0001に搭載する論理回路のインタフェースと接続され、コネクタ、ケーブル配線を経由して汎用プロセッサとの汎用インタフェースを持つボード0021を経由して、汎用プロセッサと論理エミュレーション装置0001に搭載する論理回路との間で信号の送受信を行うブリッジ回路が搭載されたデバイスである。0021は、汎用プロセッサとの汎用インタフェースを持ち、コネクタ、ケーブルを介して論理エミュレーション装置0001に搭載されたコネタク0021と、汎用プロセッサとの間でデータの送受信をする汎用プロセッサで動作する装置に搭載可能なボードである。0022は、ブリッジ回路0020とボード0021とを結ぶケーブルを論理エミュレーション装置0001に接続するためのコネクタである。
0023は、ブリッジ回路0020とボード0021とを結ぶケーブルである。0024は、ボード0021側でケーブル0023を受けるコネクタである。0025は、汎用プロセッサとつながる汎用インタフェースに接続されケーブル0023およびコネクタ0022、0024を介して接続されるブリッジ回路0020と、汎用インタフェースとの間での信号の受け渡しをとりもつブリッジ回路を実現したデバイスである。0026は、汎用プロセッサとつながる汎用インタフェースである。
図10には、この発明に係る複数のFPGAを搭載したFPGAモジュールに図5の論理を割り当てた一実施例のブロック図が示されている。同図において、0027は、FPGAモジュールであり、0029〜0032は、図5の論理を分割して割り当てるためのFPGAであり、0036,0039は、FPGAモジュール0027上に搭載されたコネクタであり、FPGAに割り当てられた論理の外部インタフェースをFPGAモジュール0027の外側に接続するためのコネクタである。0043〜0047は、FPGAモジュール0027上のFPGAに割り当てられた図5の論理機能ブロックA〜Eである。0048〜0051は、コネクタ0036,0039に接続された、図5の論理の外部インタフェースである。0057,0058は、図5の機能ブロック間を結ぶネットである。
前記図11のステップS0901〜S0905からなる処理Aは、図1のステップS0103のみで実施し、ステップS0106ではS0103で作成したものを流用する。そして、ステップS0906(処理B)は、図1のステップS0103とS0106で実施する。
図12には、この発明に係るFPGAモジュール及びFPGAモジュール搭載ボードの接続例を説明するための外観図が示されている。0027はFPGAモジュールであり、0029〜0032はFPGAモジュール0027に搭載されたFPGAであり、0036〜0039はFPGAモジュール0027に搭載されたコネクタである。
0010−1は、論理シミュレーションを加速するために、検証対象論理をハードウェア化するためのFPGAモジュール0027と接続するためのコネクタ0036〜0039と、パーソナルコンピュータやワークステーションと信号を送受信するための汎用インタフェースと、汎用インタフェースとFPGAモジュール0027との間でデータの受け渡しをするブリッジ回路0011を実現したデバイスを搭載したボードである。
0011は、パーソナルコンピュータ/ワークステーションと信号を送受信するための汎用インタフェースとFPGAモジュールとの間でデータの受け渡しをするブリッジ回路を実現したデバイスである。0059〜0062は、FPGAモジュール0027をボード0010−1に搭載するためのコネクタである。0063は、FPGAモジュール0027をコンフィギュレーションするためのデバイスである。0001は、論理エミュレーションマザーボードである。0059−1〜0062−1は、FPGAモジュール0027をボード0001−1に搭載するためのコネクタである。0063−1は、FPGAモジュール0027をコンフィギュレーションするためのデバイスである。0004,0005は、ボード0001−1に搭載した論理とのインタフェースを検証したい実部品であり、例えばメモリ、既存LSIなどからなる。0003は、論理エミュレーションマザーボードと外部機器などの信号入出力装置を接続するためのコネクタである。
上記図10において、上記FPGAモジュール0027を論理シミュレーションの加速(図1のステップS0103)と論理エミュレーション(図1のステップS0106)の2つの検証手法で共有する方法を説明する。論理シミュレーションを加速するために、上記のようにパーソナルコンピュータ/ワークステーションと信号を送受信するための汎用インタフェースと、汎用インタフェースとFPGAモジュールとの間でデータの受け渡しをするブリッジ回路を実現したデバイスを搭載したボード0001−1と、周辺実部品や、入出力装置とのインタフェースコネクタを搭載した論理エミュレーションマザーボード0001−1に、FPGAモジュール0027に搭載されたコネクタと接続可能な、共通のコネクタを搭載する。これにより、物理的にFPGAモジュール0027が、0010−1と0001−1の両者に搭載可能となる。
さらに、FPGAモジュール0027に、図11のフローで説明した手順に従って作成した、FPGAモジュール上のFPGA、スイッチデバイスのコンフィギュレーションデータをプログラムする。コンフィギュレーションデータをFPGA、スイッチデバイスにコンフィギュレーションする手法をボード0010−1と0001−1で同一とし、0010−1と0001−1のボード上にコンフィギュレーションのための回路を同じ構成、接続で搭載するか、ボードまたはFPGAモジュールに搭載したコネクタを介してコンフィギュレーションのための回路を接続することで、同じデータをFPGAモジュールにコンフィギュレーションして0010−1と0001−1のボードを動作させることができる。0063、0063−1はコンフィギュレーションのための回路を表す。通常は、メモリまたはメモリとコントロール回路からなる。
図13には、この発明に係るFPGAモジュール及びFPGAモジュールコンフィギュレーションボードの接続例を説明するための外観図が示されている。0027は、FPGAモジュールであり、0029〜0032はFPGAモジュールに搭載されたFPGAであり、0063〜0066はFPGAモジュールに搭載されたコネクタであり、FPGAモジュールのスタッキングやコンフィギュレーション機能などを持つオプションモジュールとの接続に使用される。0067は、FPGAモジュール0027のコンフィギュレーション機能を実現するオプションモジュールである。0068は、FPGAモジュール0027のコンフィギュレーションをコントロールする回路を実現したデバイスである。0069は、FPGAモジュール0027のコンフィギュレーションデータを格納するメモリであり、0070〜0073は、オプションモジュール0067をFPGAモジュール0027に接続するためのコネクタである。
例えば、図13のようにFPGAモジュール0027の上部にコネクタを搭載し、FPGAモジュール0027をコンフィギュレーションする機能を持ったコンフィギュレーションボード0067をそのコネクタ経由で搭載し、そのコネクタを通してコンフィギュレーションデータをFPGAモジュール0027にダウンロードしプログラムするようにしておくと、前記ボード0010−1、0001−1にコンフィギュレーション回路0063、0063−1を搭載しなくても、FPGAモジュール0027とコンフィギュレーションボード0067とをセットでボード0010−1から0001−1にのせかえることで、同じデータをFPGAモジュール0027にコンフィギュレーションして上記0010−1と0001−1のボードを動作させることができる。
図14には、この発明に係る論理シミュレーションを加速する装置と論理エミュレーション装置とでFPGAモジュールのデータの共有例を説明するための説明図が示されている。0001−1は、論理エミュレーションマザーボードであり、0010−1は、論理シミュレーションを加速するために、検証対象論理をハードウェア化するためのFPGAモジュール0027と接続するためのコネクタと、パーソナルコンピュータやワークステーションと信号を送受信するための汎用インタフェースと、汎用インタフェースとFPGAモジュールとの間でデータの受け渡しをするブリッジ回路を実現したデバイスを搭載したボードである。
0063と0063−1は、FPGAモジュール0027をコンフィギュレーションするためのデバイスであり、0067は、FPGAモジュール0027のコンフィギュレーション機能を実現するオプションモジュールであり、0068は、FPGAモジュール0027のコンフィギュレーションをコントロールする回路を実現したデバイスであり、0069は、FPGAモジュール0027のコンフィギュレーションデータを格納するメモリである。
0073−1は、FPGAモジュール0027にダウンロードする実装情報付きの論理情報であるところのコンフィギュレーションデータであり、デバイス0063,0063−1内のメモリ、メモリ0069を経由し、またはデバイス0063,0063−1、メモリ0069経由、もしくは、FPGAモジュール0027に直接入力し、FPGAモジュールのコンフィギュレーションを実行する。
同図のように、FPGAモジュール0027は別個に同じ物をそれぞれボード0010−1,0001−1に搭載しておき、FPGAモジュール0027に論理をプログラムするためのデータ(コンフィギュレーションデータ)のみを共有することも可能である。すなわち、ボード0010−1,0001−1上のコンフィギュレーションのための回路0063,0063−1に対して、同一のコンフィギュレーションデータ0073−1を入力すると、コンフィギュレーションデータをFPGA、スイッチデバイスにコンフィギュレーションする手法がボード0010−1と0001−1とで同一で、回路0063,0063−1がボード0010−1と0001−1に同じ構成、接続で搭載されていれば、それぞれのFPGAモジュール0027に同一のコンフィギュレーションデータ0073−1をプログラムすることができる。
図15に示すように、FPGAモジュール0027の上部に搭載可能なのようなコンフィギュレーションボード0067を使う場合には、コンフィギュレーションボード0067のみを乗せかえることもできるし、コンフィギュレーションボード0067に入力するFPGAモジュール0027のコンフィギュレーションデータ0073−1のみを共有し、コンフィギュレーションボード0067、FPGAモジュール0027をボード0010−1と0001−1に別々に用意することも可能である。
ところで、FPGAモジュール0027を0010−1、0001−1で共有するためには、FPGAモジュール0027にプログラムされた論理と外部(周辺部品など)とのインタフェースをボード0010−1、0001−1で同一としなければならない。FPGAモジュール0027の外部インタフェースは、図11の処理(ステップS0904)によりFPGAモジュール上のコネクタのピンへの割り当てが決定される。前述したように、このコネクタのピンへの割りあてはボード0001−1の基板の配線をもとに決定することが一般的である。このため、ボード0010−1側において、少なくてもFPGAモジュールのすべてのピンに対して任意の信号を入出力可能とする必要があるが、ボード0010−1上で、FPGAモジュールのすべてのピンとブリッジ回路0011とを直結接続しておき、かつ後述のように汎用プロセッサ側でFPGAモジュールのピン情報とデータ情報とをセットで送受信することにより、全てのピンに対してブリッジ回路を介した汎用プロセッサから信号の入出力が可能となる。
FPGAモジュールにプログラムした論理の外部インタフェースにあわせて、汎用プロセッサ上の論理シミュレータとFPGAモジュールとで信号を送受信する方法を説明する。FPGAモジュールにプログラムした論理の外部インタフェースは、FPGAモジュール上のコネクタのいずれかのピンに割り当てられている。汎用プロセッサとブリッジ回路間のデータ転送において、例えばFPGAモジュール上のコネクタのピンに、予め番号を割り当てておき、その番号の順番に各信号の値を論理シミュレータ側でセットしてブリッジ回路に送信、ブリッジ回路でセットして論理シミュレータ側で受信すれば、FPGAモジュールにプログラムした論理の外部インタフェースがどのようなピン割りあてになっていても、論理シミュレータ側に予めコネクタピンに割り当てた番号と外部インタフェース信号との対応を入力することにより、各コネクタピンに割り当てられた信号の変化を、論理シミュレータとFPGAモジュールで送受信することが可能となる。
図16には、この発明に係るFPGAモジュールと論理シミュレータとの間で信号対応付けを行う手法を説明する構成図が示されている。0027はFPGAモジュールであり、0011はFPGAモジュール0027と汎用プロセッサ0013の間のデータ送受信を受け持つブリッジ回路である。0096は、汎用プロセッサ0013上で動作する論理シミュレータである。0097は、FPGAモジュール0027における論理の外部インタフェースのコネクタピン割り当てた結果であり、0098は、FPGAモジュール0027のコネクタピンに番号を割り当てた対応表である。0099は、FPGAモジュール0027における論理の外部インタフェースと対応表0098で定まるコネクタピンに与えられた番号との対応表であり、上記ピン配置結果0097と対応表0098から作られる。
例えば、上記FPGAモジュール0027に、1#A1、2#E1、3#X1というピンが存在するとし、前記図11のステップS0904における処理で、ピン1#A1にポートA、ピン2#E1にポートBが割り当てられ、ピン3#X1は割りあてなしとなったとする。また、FPGAモジュール0027のコネクタピンが番号付けされた表が予め用意されているとする。
図11のステップS0904における処理結果として上記のピン1#A1にポートA、1#E1にポートBが割り当てられ、ピン3#X1は割りあてなしの結果を得、この処理結果とFPGAモジュールのコネクタピンに与えられた番号1、2、3のそれぞれに対応した1#A1、2#E1、3#X1とFPGAモジュールの外部インタフェースとの対応表(ピン番号1はポートA、2はポートB)を作成する。その後、論理シミュレータ0096に上記対応表(ピン番号1はポートA、2はポートB)を入力することで、論理シミュレータがその対応付けに従った順番でブリッジ回路0011と信号を送受信する。
この際、3#X1に関しては、ダミーのデータを送受信する。または、論理シミュレータとブリッジ回路との間で、この番号3#X1と信号値をセットで送受信しても良い。ブリッジ回路は、予めFPGAモジュール0027のピンと番号との対応を記憶しておくことにより、前記いずれかの方法で受信したデータを、FPGAモジュールの所定のピンに出力することができる。また、この予め記憶されたFPGAモジュールのピンと番号との対応に従ってFPGAモジュールから取得した信号を番号順に並べ、または番号とセットにして汎用プロセッサに送信することも同様に可能である。この手法を取ることにより、FPGAモジュールは、ボード0010−1のブリッジ回路とFPGAモジュール0027との物理的な接続に関わらず、自由にボード0001−1の基板にあわせて論理のポートに対するコネクタピン割りあてが可能となり、その結果ボード0010−1と0001−1でのコンフィギュレーションデータの共有が可能となる。
しかし前述したように、ボード0010−1にプログラムする論理のポートに双方向信号があった場合、論理シミュレータ側がその双方向信号の方向を認識できない場合があるため、その双方向信号の方向制御信号を、FPGAモジュール0027内から取得し、論理シミュレータ側に送信することが必要となる。この問題の解決策として、FPGAモジュールのコネクタのピンに対し、その双方向信号の方向制御信号をポートとして論理に追加し、論理シミュレータ側に送信する方法が考えられる。この場合、前述したようにFPGAモジュールの切り口が検証対象論理と異なり、またピン数も増加してしまう。これを防ぐ方法として、本願では以下のような双方向信号の方向制御信号転送方法を開発した。
図17には、検証対象論理に双方向信号の方向制御信号を追加する例の説明図が示されている。0042−1は、複数のFPGAまたはFPGAモジュールにプロクラムする論理の最上位階層を表す。0043〜0047は、論理の各機能を実現する機能ブロックを表す。この実施例では機能ブロックが最上位階層下にあるが、最上位階層と機能ブロックの間に複数機能をまとめた階層があっても良い。機能ブロック間は、お互いに信号を送受信するためのネットで結合されている。0048〜0051は、最上位階層のポートを表し、論理と外部とのインタフェースである。0103〜0105は、それぞれポート0049、0050、0051に接続されたI/O双方向セルである。0106、0107は、I/O双方向セル0103〜0105の方向制御信号を、ブリッジ回路経由で汎用プロセッサに送信するために追加したポートである。
図18には、この発明に係るブリッジ回路とFPGAモジュール間の一実施例のブロック図が示されている。図18の回路は、双方向信号の方向制御信号を、その信号が制御する双方向信号の接続を用いて時分割でFPGAモジュールからブリッジ回路に送信する。回路0078(A)、0079(B)をFPGAモジュールにプログラムされる論理の双方向信号のI/O記述個所に予め挿入しておく。この回路0078(A)、0079(B)は2つの機能を持つ。
1つは、信号(mode)0076に関する機能であり、もう1つは信号(re)0077に関する機能である。信号(mode)0076に関する機能は、信号(mode)が例えば論理値‘0'の時には回路挿入前の論理動作を行い、論理値‘1'の時には時分割で双方向信号の方向制御信号と双方向信号自身を転送する動作を行うといったように、2つの双方向ポートの動作を切り替える機能である。このモードを切り替えることで、論理エミュレーション時には、本来の論理動作を行い、論理シミュレーションの加速を行う場合にはピンを増やさずに双方向信号の方向制御信号を、双方向信号と対応付けてブリッジ回路に渡すことが可能となる。信号(mode)0076は、ブリッジ回路および、論理エミュレーションマザーボードから、それぞれの値を設定する。
真理値表1
┌───┬───┬───┬────┬┬────┐
│M │R │E │OI ││OO │
├───┼───┼───┼────┼┼────┤
│0 │− │− │0/1 ││OI │
│1 │1 │1/0│ − ││E │
│1 │0 │− │0/1 ││OI │
└───┴───┴───┴────┴┴────┘
真理値表2
┌───┬───┬───┬┬────┐
│M │R │E ││EO │
├───┼───┼───┼┼────┤
│0 │− │1/0││E │
│1 │1 │− ││0 │
│1 │0 │1/0││E │
└───┴───┴───┴┴────┘
┌───┬───┬───┬────┬┬────┐
│M │R │E │OI ││OO │
├───┼───┼───┼────┼┼────┤
│0 │− │− │0/1 ││OI │
│1 │1 │1/0│ − ││E │
│1 │0 │− │0/1 ││OI │
└───┴───┴───┴────┴┴────┘
真理値表2
┌───┬───┬───┬┬────┐
│M │R │E ││EO │
├───┼───┼───┼┼────┤
│0 │− │1/0││E │
│1 │1 │− ││0 │
│1 │0 │1/0││E │
└───┴───┴───┴┴────┘
一方、信号(re)に関する機能は、時分割で双方向信号の方向制御信号と、双方向信号自身を転送する動作が選択された場合に、双方向信号と方向制御信号の送信タイミングがブリッジ回路からFPGAモジュールに送信され、その信号変化に従って双方向信号と方向制御信号をそれぞれブリッジ回路に送信する機能である。図18の回路では、信号(re)0077が双方向信号と方向制御信号の送信タイミングを表す信号であり、信号(re)0077の論理値‘1'の場合に方向制御信号が、それ以外では双方向信号自身が送信されるようになっている。信号(re)0077は、論理シミュレーションの加速の場合にブリッジ回路からそれぞれの値を設定する。論理エミュレーションにおいては、マザーボード上で信号(re)0077は、論理値‘0'または‘1'に固定しておけば良い。上記回路0078と0079の回路動作を表した真理値表が、前記の真理値表1と2に示されている。
真理値表3
┌───┬───┬────┬────┬┬────┐
│M │R │EP │NE ││EO │
├───┼───┼────┼────┼┼────┤
│0 │− │0/1 │− ││EP │
│1 │1 │− │− ││1 │
│1 │0 │− │1/0 ││NE │
└───┴───┴────┴────┴┴────┘
真理値表4
┌───┬───┬───┬┬────┐
│C │R │I ││NE │
├───┼───┼───┼┼────┤
│↑ │1 │1/0││I │
│↑ │0 │− ││保持 │
└───┴───┴───┴┴────┘
┌───┬───┬────┬────┬┬────┐
│M │R │EP │NE ││EO │
├───┼───┼────┼────┼┼────┤
│0 │− │0/1 │− ││EP │
│1 │1 │− │− ││1 │
│1 │0 │− │1/0 ││NE │
└───┴───┴────┴────┴┴────┘
真理値表4
┌───┬───┬───┬┬────┐
│C │R │I ││NE │
├───┼───┼───┼┼────┤
│↑ │1 │1/0││I │
│↑ │0 │− ││保持 │
└───┴───┴───┴┴────┘
一方、ブリッジ回路側では、FPGAモジュールから送られてくる双方向信号と方向制御信号をそれぞれ切り分けて取得するための回路0080(C)を持つ。回路0080は、信号(re)が論理値‘1'の場合にFPGAモジュールから送信されてくる方向制御信号を記憶するための記憶素子0081を持つ。回路0080は、信号(mode)が論理値‘0'の時には、FPGAモジュールから読み出す方向制御信号ではなく、論理シミュレータ側から送信される方向制御信号の値をもとにブリッジ回路のI/Oの方向制御を行う。信号(mode)が論理値‘1'の時には、FPGAモジュールから読み出した方向制御信号の値をもとにブリッジ回路のI/Oの方向制御を行う機能を持つ。また、信号(re)が論理値‘1'の場合に方向制御信号を読み出すためにブリッジ回路のI/Oの方向を、ブリッジ回路から見て入力の方向に設定する機能を持ち、読み取った値を記憶素子0081に記憶する。回路0080と記憶素子0081の動作を表した真理値表が、前記の真理値表3と4に示されている。
回路0082は、論理シミュレータ側が各双方向信号の方向を認識している場合に、論理シミュレータ側からその双方向信号の方向を信号値と同様の方法で取得し、信号(mode)を論理値‘1'とした場合にFPGAモジュールから送られてくる双方向信号の方向制御信号の値と比較する回路である。この比較の結果不一致が発生した場合、論理シミュレータ上の回路とFPGAモジュールにプログラムした論理間で、信号の衝突が発生していることを意味する。この比較結果を例えば、汎用インタフェース経由でブリッジ回路から読み出すことにより、双方向信号の衝突が検出可能となる。なお、この比較は汎用プロセッサ上で実行しても良い。
図19には、図18の実施例回路の動作を説明するためのタイミングチャート図が示されている。同図において、双方向信号の方向制御信号を、その信号が制御する双方向信号の接続を用いて時分割でFPGAモジュールからブリッジ回路に送信する場合の、ブリッジ回路とFPGAモジュール間のワイヤ0073−2の信号変化を説明する。まず、論理シミュレーションを加速する場合の、ブリッジ回路とFPGAモジュールにおけるクロック信号について説明する。ブリッジ回路のクロックは、汎用インタフェースとデータをやり取りするため、汎用インタフェースにあわせたクロック周波数で動作する。
一方、FPGAモジュールのクロックは、汎用プロセッサから、汎用インタフェース、ブリッジ回路を経由してプログラムした論理に対する入力信号が送られてくるため、その送信タイミングに従ってクロックを動作させる必要がある。このため、ブリッジ回路側からFPGAモジュールに対してクロック波形を送信するか、クロックイネーブルを送信する手法が取られる。FPGAモジュールにプログラムされた論理は、1つまたは複数のクロック変化に従って内部のレジスタの値を更新し、また、出力を変化させる。このため、ブリッジ回路とFPGAモジュールとの間の信号送受信は、例えば次の順序で行われる。
(1)FPGAモジュールへの信号入力
(2)FPGAモジュールのクロックを変化させる
(3)FPGAモジュールからの出力信号の読み取り
双方向信号の方向制御信号をFPGAモジュールから読み出すタイミングは、上記(2)と(3)の間で行う。図18では、最初の状態でFPGAモジュール側のイネーブルすなわち制御信号が論理値‘0'(ロウレベル)となっており、ブリッジ回路側のイネーブルが論理値‘1'(ハイレベル)となっている。FPGAモジュール、ブリッジ回路のI/Oセルが共にロウアクティブ(Low-Active)である場合、この状態は、FPGAモジュールが出力であることを表す。このため、この時点でのワイヤ0073−2の信号値は、FPGAモジュールから出力される双方向信号の論理値となっている。この状態は、上記の(1)の状態である。
(1)FPGAモジュールへの信号入力
(2)FPGAモジュールのクロックを変化させる
(3)FPGAモジュールからの出力信号の読み取り
双方向信号の方向制御信号をFPGAモジュールから読み出すタイミングは、上記(2)と(3)の間で行う。図18では、最初の状態でFPGAモジュール側のイネーブルすなわち制御信号が論理値‘0'(ロウレベル)となっており、ブリッジ回路側のイネーブルが論理値‘1'(ハイレベル)となっている。FPGAモジュール、ブリッジ回路のI/Oセルが共にロウアクティブ(Low-Active)である場合、この状態は、FPGAモジュールが出力であることを表す。このため、この時点でのワイヤ0073−2の信号値は、FPGAモジュールから出力される双方向信号の論理値となっている。この状態は、上記の(1)の状態である。
次に上記(2)の状態に移行し、FPGAモジュールに対してクロックが発行される。すると、このクロック変化に従いFPGAモジュール側のイネーブルが次のサイクルの値に変化する。図19の場合、論理値‘0'から‘1'に変化している。しかし、ブリッジ回路側では、まだFPGAモジュールにおけるイネーブルの変化を読み取っていないため、論理値‘1'のままである。ブリッジ回路側は、FPGAモジュールに対してクロックを発行した後、FPGAモジュールが変化したクロックによって動作を確定するのに十分な時間を置いて、そのクロック変化に従ったサイクルのFPGAモジュール側のイネーブルの状態を読み出すために、信号(re)を論理値‘1'に変化させる。
すると、一時的に信号方向がFPGAモジュールが出力でブリッジ回路側が入力となるように設定され、ワイヤ0073−2にFPGAモジュールから出力されるFPGAモジュールにおけるイネーブルの論理値をブリッジ回路が取りこむ。すなわち信号(re)が論理値‘1'のときに、ワイヤ0073−2はFPGAモジュールにおけるイネーブルの論理値‘1'となり、この値をブリッジ回路が取りこむ。取りこみ終わった後、ブリッジ回路は信号(re)を論理値‘0'に戻し、かつ、FPGAモジュールにおけるイネーブルの論理値が‘1'であることからFPGAモジュールが入力となったことを検出し、自身の方向制御を出力側すなわち論理値‘0'に変更する。すると、ワイヤ0073−2には、ブリッジ回路からの出力値がドライブされる。これら一連の処理を繰り返すことで、クロック変化により値が変更されるFPGAモジュールにおけるイネーブルの値をブリッジ回路のI/O制御に反映させることができる。
この手法は、双方向信号数に依存せず信号(mode,re)の2本の信号を論理に追加するだけで良いため、従来の方向制御信号をポートに追加する手法に比べ、検証対象論理のインタフェースに対する変更の度合いが少なく、また信号(mode,re )を論理エミュレーションにて設定することで同じコンフィギュレーションデータを論理シミュレーションの加速と論理エミュレーションで使用することができるという利点がある。
図20には、この発明に係るブリッジ回路とFPGAモジュール間の他の一実施例のブロック図が示されている。図20の回路は、検証対象論理のインタフェースに対する変更がなく、また検証対象論理に全く手を加えないように工夫されている。この実施例の特徴は、ブリッジ回路側の、FPGAモジュールとのインタフェースを持つI/Oセル0089の出力バッファの駆動力を、FPGAモジュールのそれ0090よりも充分に弱いものとし、一時的にブリッジ回路とFPGAモジュール間のワイヤ1304において信号を衝突させ、その時の信号変化を読み取ることにより、FPGAモジュール側の双方向信号の方向を判定するというものである。
図21には、上記20の信号方向の判定方法を説明するためのレベル設定図が示されている。駆動力の強い出力バッファと駆動力の弱い出力バッファとで信号が衝突した場合、同図のように、両者の出力値が同一ならば、信号の電位はその出力値に従う。また異なる値の場合には、駆動力の強い出力バッファのドライブした値に近い電位をとる。前記図20回路の場合、ブリッジ回路側ではFPGAモジュールに比べて充分に弱い出力バッファを使用しているため、ブリッジ回路のI/OセルのH/L(ハイレベル/ロウレベル)両方のスレッシュホールドよりも駆動力の強い出力バッファがドライブする値により近い電位となる。この結果、ブリッジ回路のI/OセルではH側のスレッシュホールドよりも電位が高ければ論理値‘1'、L側のスレッシュホールドよりも電位が低ければ論理値‘0'が取りこまれる。
これにより、ブリッジ回路からH(論理値‘1'),L(論理値‘0')の2値を出力すれば、FPGAモジュール側が値を出力していた場合にはどちらかが出力値と異なる値となり、出力していない場合には出力した値がそのまま読込まれるため、FPGAモジュール側の信号方向をブリッジ回路側で判定することが可能となる。この判定を行う回路が図20の回路0090である。また回路0091により、判定した結果をブリッジ回路側のI/Oセルの方向制御に反映させる。なお、図18の実施例回路と同様に、論理シミュレータ側が各双方向信号の方向を認識している場合に、回路0092にて、論理シミュレータ側からその双方向信号の方向を信号値と同様の方法で取得し、回路0090の判定結果と比較することで、双方向信号の衝突が検出可能である。
図22には、図20の実施例回路の動作を説明するためのタイミングチャート図が示されている。ブリッジ側のI/Oセルの状態とFPGAモジュール側のI/Oセルの状態を説明する。ブリッジ回路とFPGAモジュールのクロックについては、前記図19で説明した通りである。このタイミングチャートの最初の状態では、図19と同様に、FPGA側モジュールが出力、ブリッジ回路側が入力となっている。
FPGAモジュールのクロック変化により、FPGA側モジュールが論理値‘0'から‘1'に変化する。ブリッジ回路側では、クロックを発行した後、FPGAモジュールが変化したクロックによって動作を確定するのに十分な時間を置いて、そのクロック変化に従ったサイクルのFPGAモジュール側のイネーブルの状態を読み出すために、最初に論理値‘1'を次に論理値‘0'をワイヤ0073−2に出力する。なお、この際、論理値‘0'、‘1'の順に信号を出力しても構わない。この信号の出力タイミングは、図19の信号(re)の発行タイミングと同じである。
同図に示した例の場合、FPGAのI/Oは入力(I)となっているため、状態はHi−Z(出力ハイインピーダンス)である。このため、ワイヤ0073−2上の信号値は、ブリッジ回路側で読込むと論理値‘1'出力時には論理値‘1'、‘0'出力時には論理値‘0'となる。この場合は、ブリッジ回路の出力バッファ088の出力値に対応してリードデータが変化するので、ブリッジ回路側は出力と判定される。
次のクロック変化で、FPGAモジュール側のイネーブルが論理値‘0'に変化し、FPGAモジュール側のI/Oが出力に変化する。ブリッジ回路は、そのクロック変化サイクルでのFPGAモジュール側のイネーブルの状態を読み出すために、出力バッファ0088により再び最初に論理値‘1'を出力し、次に論理値‘0'をワイヤ0073−2に出力する。FPGAのI/Oは出力となっているため状態は、出力バッファ0089が出力する論理値‘0'または‘1'のままとなる。
同図の例の場合は、出力バッファ0089の出力が論理値‘0'であるから、ブリッジ回路側で読込むと出力バッファ0088から論理値‘1'出力してもリードデータは‘0'、論理値‘0'出力してもリードデータは‘0'となる。この場合は、ブリッジ回路側は入力と判定される。これら一連の処理を繰り返すことで、クロック変化により値が変更されるFPGAモジュールにおけるイネーブルの値を、図18の回路と同様にブリッジ回路のI/O制御に反映させることができる。
以上、述べたような手法をとることにより、検証対象論理のインタフェースに双方向信号があってもインタフェースを論理に依存して変更することがなく、また、FPGAモジュールを使用すること、FPGAモジュールのコネクタのピンに対する論理信号割りあてを論理エミュレーションマザーボードに合わせることにより、物理位置を含めて論理エミュレーションと論理シミュレーションの加速とでFPGAモジュールのインタフェースを一致させることができる。これらにより、論理エミュレーションと論理シミュレーションの2つの検証工程において、同一のFPGAモジュールと同一のコンフィギュレーションデータを使用することが可能となる。なお、FPGAモジュールは、同タイプを個別に用意し、同一のコンフィギュレーションデータを使用することも可能である。
以上説明した実施例においては、論理エミュレーションと論理シミュレーションの2つの検証工程において、同一のFPGAモジュールと同一のコンフィギュレーションデータを使用することが可能であるため、2つの検証工程で個別にデータを用意する必要がない。すなわち、図11のステップS0901からステップS0905までの作業をステップS0103で実施しておけば、ステップS0106ではこの作業を行う必要がないため、論理シミュレーションの加速から論理エミュレーションへの移行がスムーズに行える。
また、ステップS0901からステップS0905での作業ミスなどにより論理シミュレーションの加速は正しく動作するが論理エミュレーションは動作しないまたはその逆の現象は発生せず、また、論理シミュレーションの工程においてある程度確認されたデータで論理エミュレーションを実行できるため、論理エミュレーションの立ち上げが容易である。このため、ステップS0103とステップS0106の2工程での検証工数を大幅に削減することができる。
また、論理エミュレーションでの周辺部品とのインタフェースの不具合を、論理シミュレーションに戻って解析、確認することもできる。さらに、論理エミュレーションでしか検出できなかった双方向信号の衝突を、論理シミュレーションで先に検出することが可能となる。
上記効果は、図1のステップS0103とステップS0106において使用するFPGAモジュールを共有する場合と、コンフィギュレーションデータのみを共有し、個別のFPGAモジュールを使用する場合との共通の効果であるが、コンフィギュレーションデータのみを共有する場合には、更に、ステップS0103とステップS0106の実施期間をある程度並走させることができ、論理検証期間の短縮が図れるという効果がある。また、離れた場所で作業している場合でも、データを送る手段(例えばインターネット)があれば論理シミュレーションの加速と論理エミュレーションが同一のデータを使って実施できる。
上記のように論理シミュレーションの加速と論理エミュレーションが、同一のFPGAモジュールで、論理データを変更することなしに実現できる。つまり、FPGAモジュール搭載論理の切り口を変更する必要がない。H/WとS/Wを連結するための論理の内容、タイミング、インタフェースが論理に依存して変更されないため、論理側のタイミング設計が容易となる。つまり、H/WとS/Wを連結するための論理が、FPGAモジュール搭載論理に依存しないため、論理に合わせて作成し直す必要がない。S/W側で、双方向ポートに対するイネーブル情報を持っている場合に、この情報とFPGAモジュールから読み出した情報を比較できるのでバス衝突を検出できる。
論理シミュレーションの実行時間の短縮が可能なためLSI開発における検証フェーズの期間を短縮できる。そして、論理シミュレーションである程度品質が確保された論理を搭載したFPGAモジュールをそのまま論理エミュレーションに適用できるため論理シミュレーションの実行時間の短縮が可能となりテストケースを多く実行できるとともに、論理エミュレーションにより論理シミュレーションでは検出が難しい論理不良を検出できるためLSI開発において設計品質を向上できる。
図23には、この発明が適用されるLSIにおける設計及び検証方法を説明するためのフローチャート図が示されている。図23においては前記図1の実施例と基本的には同様であり、ステップ(1)において、実現する回路の仕様を決定する仕様設計、つまりLSI方式設計を行う。次に、ステップ(2)で、ステップ(1)で決定した仕様、LSI方式設計に基づき、例えば前記のようなHDL(ハードウェア記述言語)を用いて論理回路をレジスタトランスファレベルで記述し、論理設計を行う。
その後、一方では、ステップ(3)で、ステップ(2)の論理回路を汎用プロセッサ上で擬似的に動作させることによりその動作を検証する機能を持つ論理シミュレータと呼ばれるシステムを用いて、設計した論理回路の論理検証を行う。この論理検証は、一般的には論理シミュレーションと呼ばれている。ここでは、論理機能が仕様通りかどうかを検証する。
論理機能が確認されると、ステップ(4)の論理合成処理を行い、レジスタトランスファレベルで記述された回路を、ターゲットとなるASIC(LSI)ゲート回路に変換する処理を行う。ステップ(5)では、実際にターゲットとなるASICゲート(LSI)に回路が実装され、LSI化されたサンプルが形成される。このLSIを用いてステップ(6)により、タイミングが仕様を満たすか同化の実機検証が行われる。
ステップ(8)〜(11)にあるように、前記ステップ(3)の論理シミュレーションによる論理検証と並行して、前記FPGA (Field Programmable Gate Array)などの再構成可能なデバイスを利用した論理エミュレーションを行う。この検証は、ステップ(8)により論理設計の設計ファイルデータを取り出してステップ(9)〜(11)によるFPGA実装フローが行われる。つまり、ステップ(9)では、論理合成を行い、ステップ(10)では論理を複数のFPGAに分割/配線処理を行い、ステップ(11)では複数のFPGAとスイッチングデバイスによりFPGA配置配線が行われてFPGA化(サンプル)が形成される。上記ステップ(10)での分割/配線において、この発明に係るPSD配線方法が適用される。
このようなFPGA実装フローによって再構成可能なデバイス(FPGAモジュール)に設計した論理をプログラムすることで、実際の周辺部品と組み合わせて実動作に近い速度で論理を動作させることがきるので、ステップ(12)の論理検証/ソフトウェアデバッグでは、出力やテストパターンが長大で論理シミュレーションでは実行が不可能なケースにおける不良などを前記ステップ(5)でのLSI製造前に摘出する。
上記再構成可能なデバイスであるFPGAに設計した論理をプログラムすると、実動作に近い速度で論理を動作させることが可能であるため、組み込みシステムなどの開発のように、設計した論理と組み合わせて動くソフトウェアを同時期に設計する場合、ステップ(12)のようにソフトウェアデバッグもLSIのサンプル製造前から実施することができ、これによって設計期間を短縮することができる。つまり、ステップ(6)やステップ(7)では、最終確認のために実機検証を行うが、ステップ(12)の論理エミュレーションを実施している場合、共通のテストデータや環境を使用することができ、また本来はこの時点でしか摘出できなかった不良を早期に検出しているため、実機検証期間を大幅に短くすることができる。
図24には、この発明に係るFPGAモジュールの一実施例のブロック図が示されている。この実施例のFPGAモジュールは、特に制限されないが、それぞれがFPGAから構成された4つプログラマブルデバイスPDと、上記4つのプログラマブルデバイスPD間をプログラマブルに接続可能なスイッチングデバイスPSD及びI/Oコネクタを備える。
図25には、図24のFPGAモジュールの一実施例の表面図が示されている。FPGAモジュールの表面は、論理データ実装部を構成し、プリント基板等の実装基板の表面側に前記図24の4つのプログラマブルデバイスPDに対応した4つのFPGAと、4つのコネタクとが搭載される。
図26には、図24のFPGAモジュールの一実施例の裏面図が示されている。FPGAモジュールの裏面は、スイッチコネクション部を構成し、上記実装基板の裏面側に前記スイッチングデバイスPSDを構成する4つのFPGAと、4つのコネクタとが搭載される。このスイッチングデバイスPSDを構成する4つのFPGAは、その回路規模が前記表面側に搭載されて論理データ実装部を構成するFPGAよりも小さい回路規模のものが用いられる。
図25のように、4つのFPGAを用いることにより、大規模な論理回路を再構成可能なデバイスにより実現することができる。実機では1つのLSIチップに形成される論理回路を上記のように4つのFPGAに分割して実現する場合において、1つのFPGAにクロック生成回路を配置した場合、FPGAを跨がってクロックが伝播されるものであり、しかも相互の接続が前記FPGAを用いたスイッチングデバイスにより行われるものであるので、信号伝播遅延を均等にすることができず、4つのFPGAに供給されるクロックにスキューが発生してしまう。
このようなクロックにスキューが存在する場合、1つのFPGAの論理出力を他のFPGAの論理入力として伝播させるとき、論理出力を送出するクロックと、上記論理入力を受けるクロックとの間にスキューがあると、かかるスキューのワーストケースを想定して正しく信号が伝播されるようなクロック周期を設定する必要があり、前記実機LSIで使用するようなクロックを用いることができない可能性が高くなる。したがって、FPGAモジュールを用いた論理エミレーションでのタイミング検証が不十分になってしまうという問題が生じる。
そこで、この実施例では、図24のようにスイッチングデバイスPSDにクロック生成部を設けるようにするものである。つまり、図26に示したスイッチングデバイスを構成する4つのFPGAの中の1つのFPGAを用いてクロック生成回路を形成する。同図では、スイッチングデバイスPSDは、1つのブロックとして示されているが、前記図26のように4つのFPGAにより構成されている。このようなスイッチングデバイスPSDを構成する1つのFPGAに設けられたクロック生成部は、FPGAモジュールに供給される外部クロックに同期したクロックを生成し、4つのプログラマブルデバイスPD(FPGA)に対して、ほぼ同じ配線長となるような配線経路を以てクロックを供給する。
上記クロック生成部では、上記クロックをN倍した高い周波数にされた基準クロックが生成される。この基準クロックは、上記同様に等長のクロック供給経路を用いて4つのプログラマブルデバイスPDの多重化制御部及びスイッチングデバイスPSDを構成する各FPGAに設けられた多重化制御部及び境界レジスタ部に供給される。
図27には、図24のスイッチングデバイスPSDの一実施例のブロック図が示されている。基準クロック生成部は、外部から供給されたクロックに同期し、それをN倍にした基準クロックを生成する。上記外部から供給されたクロックは、論理クロック生成部に供給される。論理クロック生成部で形成されたクロックは、各FPGAに対して4つのグループに分けられて、境界レジスタ部に設けられたフリップフロップ回路FFを介して各プログラマブルデバイスPDに向けて出力される。これらのフリップフロップ回路FFは、上記クロックのN倍にされた基準クロックを用いることにより同期化が図られる。
つまり、各プログラマブルデバイスPDに対するスイッチングデバイスPSDでの出力部において、そこまでの信号伝播によって生じるスキューを、最も遅く伝播されるクロックに対応したものに基準クロックを用いて同期化させることによりスキューを解消させるものである。そして、かかる出力部から先においては、信号配線の等長化等によって信号伝播遅延時間を互いに等しくなるようにして、各プログラマブルデバイスPDを構成するFPGAに伝えられる。上記境界レジスタ部に設けられたフリップフロップ回路FFは、上記のような基準クロックを用いた同期化の他、後述するようにモジュールストップ制御部で発生された制御信号によりクロックの供給/停止が機能モジュール毎に制御可能とするためにも供される。
図28には、図24のFPGAモジュールにおけるPD及びPSDに設けられる多重化制御部の一実施例のブロック図が示されている。2つのプログラマブルデバイスPD間をスイッチングデバイスPSDにより接続する場合、信号毎に配線経路を構成するとプログラマブルデバイスPD及びスイッチングデバイスPSDの端子数及び配線数が膨大となってしまう。この実施例では、上記PD−PSD−PD間で伝播される複数の信号を、1つの端子及び配線を用いつつ上記基準クロックにより時分割を利用して信号伝播させる。
例えば、プログラマブルデバイスPD1からPD2に向けて複数ビットのデータを転送する場合、信号送信側のプログラマブルデバイスPD1では、基準クロックを計数するアドレスカウンタの計数値をデコードした信号で複数信号を受けるマルチプレクサを制御して、論理クロックの1周期内にパラレル/シリアル変換する。このシリアル変換されたデータは、上記基準クロックに同期し、信号伝播方向を制御する出力バッファを通してスイッチングデバイスPSDに伝えられる。スイッチングデバイスPSDでは、プログラマブルに信号伝達経路が形成されて、信号伝播方向を制御する入力バッファ及び出力バッファを介して受信側のプログラマブルデバイスPD2の特定端子と接続する。
受信送信側のプログラマブルデバイスPD2では、基準クロックにより上記シリアル信号を受信し、基準クロックを計数するアドレスカウンタの計数値をデコーダした信号でシリアル信号を受けるデマルチプレクサ(シフトレジスタ又はフリップフロップ回路)を制御して、シリアル/パラレル変換する。このパラレル変換されたデータは、論理クロックに同期して内部論理回路に伝えられる。このような多重化制御部を用いることにより、論理データ実装部及びスイッチングコネクション部を構成するFPGAの外部端子及びそれらを接続する配線を少なくすることができる。
上記とは逆に、プログラマブルデバイスPD2からPD1に向けて複数ビットのデータを転送する場合には、信号伝送方向を制御する信号によって、信号伝達方向が逆方向に設定されて、上記同様にプログラマブルデバイスPD2ではパラレル/シリアル変換してデータ送信を行い、プログラマブルデバイスPD1では、シリアル入力されたデータを受信する。そして、上記同様にシリアル受信したデータをパラレル変換して論理クロックに同期して内部論理回路に伝える。
図29には、図24のPSDの境界レジスタに設けられるモジュールストップ制御部の一実施例のブロック図が示されている。クロック生成回路で形成されたクロックは、複数個のフリップフロップ回路FF1〜FF4を介してプログラマブルデバイスPDに設けられた複数の機能モジュール1〜4に対応して供給される。各フリップフロップ回路FF1〜FF4は、基準クロックに同期してクロック生成回路で形成された論理クロックを送出する。モジュールストップ制御部では、上記プログラマブルデバイスPDに設けられた複数の機能モジュール1〜4毎に対応したモジュールストップ制御信号を形成する。このストップ制御信号により、上記フリップフロップ回路FF1〜FF4の動作が制限される。
具体的には、フリップフロップ回路FF1〜FF4を強制リセット状態にしたり、あるいは基準クロックによる論理クロックの取り込みを停止させることにより、プログラマブルデバイスPDに設けられた特定の機能モジュールに対する論理クロックをロウレベルに固定して、その機能モジュールの論理動作そのものを停止させる。上記基準クロックとフリップフロップ回路FF1〜FF4を用いることにより、各プログラマブルデバイスPDに供給される論理クロックの同期化が図られるとともに、フリップフロップ回路FF1〜FF4の動作の制限によって、機能モジュール毎での選択的な論理クロックの供給/停止を実現することができる。
図30には、図24のPSDの境界レジスタに設けられる高速I/Oインタフェース部の説明図が示されている。図30(A)の例は、プログラマブルデバイスPDからI/Oコネクタを介して信号出力を行う原理図が示されている。本来は、同図のようにプログラマブルデバイスPDに設けられたフリップフロップ回路FFを論理クロックで動作させて、I/Oコネクタに向けて信号出力を行う。
しかしながら、FPGAモジュールでは、プログラマブルデバイスPDに設けられたフリップフロップ回路FFの出力は、そのままI/Oコネタクに向けて直結されるのではなく、いずれのI/Oコネクタに接続するがスイッチングデバイスPSDによりプログラマブルに設定される。したがって、上記フリップフロップ回路FFの出力信号は、実際にはスイッチングデバイスPSDにより設定された接続経路を介して上記I/Oコネクタに至るため、そこでの信号遅延が大きくなってしまう。
この実施例では図30(B)に示すように、スイッチングデバイスPSDに前記プログラマブルデバイスPDからの出力信号を受けるフリップフロップ回路FFが設けられる。この結果、フリップフロップ回路FFに取り込まれた信号は、短い配線経路によりI/Oコネタクに伝えられるので、そこでの信号遅延を大幅に小さくすることができる。この結果、FPGA及びスイッチングデバイスを用いつつ、高速I/Oインタフェースを実現することができる。
図31には、図24のPSDのダンプ機能部の一実施例のブロック図が示されている。PSDは、前記のようにプログラマブルなスイッチングデバイスであるが、その中身は論理データ実装部を構成するFPGAと同じであり、配線経路を設定するデータを格納するスタティック型メモリを備えている。そこで、このメモリの空き領域を利用し、プログラマブルデバイスPD間を接続する配線経路の一部の信号をメモリ部に記憶させる。つまり、クロック生成回路で形成されたクロックをアドレスカウンタで計数してアドレス信号を生成し、ダンプ制御信号により上記空き領域のメモリセルを順次選択して、上記配線経路を通して伝えられる信号を記憶させる。そして、必要に応じてその読み出しを行ってコネクタから出力させる。
つまり、動作に不具合が生じた場合には、プログラマブルな信号伝達経路の設定ができることを利用して、動作の不具合の原因となっている信号を上記メモリ部に記憶させる。これを読み出すことにより、観測する信号の値をトレースすることができ、不良原因を短時間で探し出すことができる。
前記説明したように、FPGA、PLD等を利用した論理エミュレーションシステムが、LSI開発の論理検証工程の1つとして、導入されるようになってきている。FPGAやPLDを利用した論理エミュレーションを実施した場合、論理シミュレーションより高速な検証環境を実現でき、また論理回路を再実装可能であるという利点がある。つまり、LSIのサンプルを作成し、実機動作検証しないと検出できなかった周辺実部品とのインタフェース(IF)確認や、搭載基板の確認、論理シミュレーションでは確認し難い論理不良の摘出が早期可能となり、LSI開発期間とLSI再製コストを削減することができる。
LSIのシステム化による搭載論理回路の規模増加に伴い、論理検証工数が増加する傾向にある。このため、実装効率向上、検証環境の立ち上げ工数、及び不具合発生時の解析工数の削減が課題となる。本発明では、前記説明したようにこれらの課題を解決することで、論理検証工数を短時間で立ち上げることができるシステム及びそれに好適なFPGAモジュールを提供することができる。
この実施例では、前記説明したように、論理回路を実装する再実装可能な複数のプログラマブル論理デバイスPD(FPGA)、それらのPDをプログラマブルに接続し、かつ論理回路実装可能なスイッチングデバイスPSDを含むブログラマブルデバイスモジュール(FPGAモジュール)とし、各PD間の論理信号をPSD内でプログラマブルに物理接続可能とするようにコンピュータ上で設定(実装)する。
このことを前提として、前記実施例ではPSD内に外部からクロックを供給することにより、プログラマブルデバイス(FPGA)モジュール全体の論理動作を管理できる論理クロック及びそれをN倍の周波数にした基準クロックを生成するクロック生成回路を設けられる。また、I/O境界部にフリップフロップ回路を構成可能なアーキテクチャが設けられる。
上記スイッチングデバイスPSDは、論理ネットの配線だけでなく、論理回路が実装できるものであり、ここにフリップフロップ回路を実装して、各PDに基準クロックを用いて同期化された論理クロックを供給することにより、複数のプログラマブルデバイスPDに実装する論理回路の動作タイミングを中央制御部として司ることができる。PSD上に1つのクロック制御論理を実装することにより、PD上での論理ゲート規模削減ができ、複数のPDのタイミングを容易に司ることが可能となる。つまり、各PDにクロック制御論理を実装すると、PD間のクロックタイミングの調整が困難となるが、これを回避できる。
上記PSD内を配線する双方向ネットを含む論理ネットを送信側でパラレル/シリアル変換及び受信側でシリアル/パラレル変換による時分割多重化制御する論理回路(マルチプレクサ、デマルチプレクサ)をPD及びPSDに設け、基準クロックを利用して時分割多重化制御回路の動作タイミングを司る。論理ネットの配線経路に依存しない時分割多重化処理が可能となる。つまり、この実施例では、配線する位置に依存せず、実装レベルで処理可能となる。
クロック生成回路及びプログラマブルデバイスPDに設けられる複数の機能モジュールで使用する論理クロックを停止/供給の選択的な制御を行うようにすることにより、論理クロックでの同期化処理とともに必要に応じた論理クロックの停止/供給が可能となる。各プログラマブルデバイスPD及び機能モジュールで使用するクロックが低スキューで供給可能となり、論理回路上の修正が不要となる。
上記PSDを経由してI/O端子と入出力インタフェースをもつ論理ネット、その論理ネットをラッチするフリップフロップ回路を実装可能とすることにより、通常プログラブルデバイスPD内に実装するフリップフロップ回路をスイッチングデバイスPSD内に実装する様、実装形態を自動変更することにより、外部インタフェースの高速化が実現可能となる。つまり、配線する論理ネットがPSDを通過するデバイス遅延を回避可能となり、論理クロックに同期した信号出力を行うことができる。
上記PSDを配線する論理ネット、及びその信号状態を常時観測可能な機能をもつ制御回路を設けることにより、論理ネット信号値を常時一定期間分をメモリ内にダンプし、ある指定した信号をトリガーに上記制御回路をブレイクし、観測する信号の値をトレースすることにより、論理ネツトの動作を容易に確認可能となる。つまり、動作不具合が生じた場合に、その近辺での論理ネットの状態が観測可能な為に不良原因が短時間で解析できる。
以上により、大規模LSIの論理検証環境の立上げ期間が短縮可能となる。複数プログラマブルデバイスの実装効率を向上させることができる。例えば、マイクロプロセッサあるいはマイクロプロセッサコアを搭載した大規模LSIの開発時のデバッグ効率と論理品質を向上、後工程のシステム検証期間を前倒し可能となる。また、コアIP流用化可能となる。
以上本発明者よりなされた発明を実施例に基づき具体的に説明したが、本願発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、FPGAモジュールやブリッジ回路等とそれに関連する各回路の具体的構成は種々の実施形態をとることができる。この発明は、論理検証システムとFPGA(プログラマブル論理デバイス)モジュールとして広く利用できる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。論理シミュレーション加速装置と、論理エミュレーション装置での検証工程に用いられるFPGAモジュールとブリッジ回路間において、FPGAモジュールの全ピンを直結配線し、かつ論理シミュレーションの加速を行う場合に、FPGAモジュールの外部インタフェースコネクタに検証対象論理の切り口を割り当て、上記FPGAモジュールの外部インタフェースコネクタの各ピンと論理信号との対応付けを汎用プロセッサ上の論理シミュレータ上で行うようにすることにより、開発時間を改善し設計品質を向上させることができる。
検証すべき論理回路を複数のFPGAに分割して実装し、複数のFPGAの相互の接続をスイッチングデバイスによってプログラマブルに行って上記検証すべき論理回路を実現しつつ、上記FPGAに対してクロックを供給するクロック生成回路を上記スイッチングデバイスに備えることにより、上記複数のFPGAに供給されるクロックのスキューが低減でき、高いクロックでの検証が可能になる。
0001…論理エミュレーションマザーボード、0002…信号入力/出力装置、0003…コネクタ、0006〜0009…FPGA、0008…既存LSI、0009…メモリ、0011…ブリッジ回路、0013…汎用プロセッサ、0014…ディスク装置、0015…表示装置、0016…入力装置、0027…FPGAモジュール、0028〜0031…FPGA、0032〜0035…スイッチングデバイス、0036〜0039…コネクタ、0040…マザーボード、0041,0042…ワイヤ、0010−1…論理エミュレーションマザーボード、0043〜0047…機能ブロック、0053〜0056…ローカルバスインタフェース回路、0057,0058…ネット、0059〜0062…コネクタ、0063…コンフィギュレーションデバイス、0063−1…コンフィギュレーションデバイス、0063〜0066…コネクタ、0067…オプションモジュール、0068…コントロールデバイス、0069…メモリ、0070〜0073…コネクタ、0073−1…コンフィギュレーションデータ、0073−2…ワイヤ、0074…I/Oセル、
PD…プログラマブルデバイス、PSD…スイッチングデバイス、FF1〜FF4…フリップフロップ回路。
PD…プログラマブルデバイス、PSD…スイッチングデバイス、FF1〜FF4…フリップフロップ回路。
Claims (13)
- 論理エミュレーションと論理シミュレーションの2つの検証工程において、同一のFPGAモジュールと同一のコンフィギュレーションデータを使用することを特徴とする論理検証システム。
- 汎用プロセッサ上で動作する装置と、FPGAを用いて再構成可能な論理装置を含む装置と、上記汎用プロセッサ上で動作する装置と上記FPGAを用いて再構成可能な論理装置を含む装置との間でデータの送受信を行うブリッジ回路とで構成される論理シミュレーション加速装置を備え、
上記論理エミュレーション装置での検証工程に用いられるFPGAモジュールとブリッジ回路間を、FPGAモジュールの全ピンについて直結配線し、かつ論理シミュレーションの加速を行う場合に、FPGAモジュールの外部インタフェースコネクタに検証対象論理の切り口を割り当て、上記FPGAモジュールの外部インタフェースコネクタの各ピンと論理信号との対応付けを上記汎用プロセッサ上の論理シミュレータ上で行うことを特徴とする論理検証システム。 - 請求項2において、
上記FPGAモジュールに搭載する論理に、その信号が制御する双方向信号の方向制御信号をインタフェースを用いてブリッジ回路に送信する手段を設けてなることを特徴とする論理検証システム。 - 請求項2において、
上記FPGAモジュールとブリッジ回路を搭載するデバイス間で双方向信号の信号方向を自動検出する手段を設け、論理シミュレーションの加速と論理エミュレーションの2つの検証工程において、検証対象の論理を搭載した同一のFPGA群のプログラムデータを使用することを特徴とする論理検証システム。 - 請求項4において、
上記デバイス間で双方向信号の信号方向を自動検出する手段は、両デバイスの出力回路のドライバビリティの強弱を設定し、ドライバビリティが強い方のデバイスに信号方向決定の優先度を設けるものであることを特徴とする論理検証システム。 - 請求項4において、
上記FPGAモジュールとブリッジ回路を搭載するデバイス間で双方向信号の信号方向を自動検出する手段と、汎用プロセッサ上の論理シミュレータに双方向信号の信号方向を入力する手段を設け、上記2つの信号方向を比較することで
論理シミュレータでの信号方向とFPGAモジュールでの信号方向の不一致を検出することを特徴とする論理検証システム。 - 請求項6において、
上記デバイス間で双方向信号の信号方向を自動検出する手段は、両デバイスの出力回路のドライバビリティの強弱を設定し、ドライバビリティが強い方のデバイスに信号方向決定の優先度を設けるものであることを特徴とする論理検証システム。 - 検証すべき論理回路が分割して実装される再構成可能な複数のFPGAと、
上記複数のFPGAの相互の接続をプログラマブルに行って上記検証すべき論理回路を実現するスイッチングデバイスと、
上記FPGAに対してクロックを供給するクロック生成回路を備えたデバイスとを備えてなることを特徴とするFPGAモジュール。 - 請求項8において、
上記スイッチングデバイスは、プログラマブルに論理回路を実装できる機能を備え、かかる論理回路を用いて上記クロック生成回路が構成され、上記複数のFPGAに対して供給されるクロック相互のスキューが小さくなるようにクロックの分配を行うことを特徴とするFPGAモジュール。 - 請求項9において、
上記クロック生成回路は、FPGAの動作に必要なクロックに対してN倍にされた基準クロックを形成するものであり、
上記スイッチングデバイス及び上記FPGAのインタフェース部の動作を上記基準クロックを用いて制御して、上記スイッチングデバイスとFPGAとの間で信号を時分割的に伝達させることを特徴とするFPGAモジュール。 - 請求項9において、
上記クロック生成回路は、上記FPGAに実現された複数の機能モジュール毎にクロックの供給と停止を選択的に行う機能を持つことを特徴とするFPGAモジュール。 - 請求項9において、
上記スイッチングデバイスは、上記論理回路を用いてプログラマブルに構成され、上記クロックにより信号の取り込みと送出を行うフリップフロップ回路を実装するものであり、
検証すべき論理回路の出力端子から出力される出力信号は、上記フリップフロップ回路を介して出力させることを特徴とするFPGAモジュール。 - 請求項9において、
上記スイッチングデバイスは、上記論理回路を用いてプログラマブルに構成され、それにより伝達させる信号値を一定期間分記憶させ、必要に応じて取り出すトレース機能を実装することを特徴とするFPGAモジュール。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003280650A JP2004157986A (ja) | 2002-10-17 | 2003-07-28 | 論理検証システムとfpgaモジュール |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002303415 | 2002-10-17 | ||
JP2003280650A JP2004157986A (ja) | 2002-10-17 | 2003-07-28 | 論理検証システムとfpgaモジュール |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004157986A true JP2004157986A (ja) | 2004-06-03 |
Family
ID=32827966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003280650A Pending JP2004157986A (ja) | 2002-10-17 | 2003-07-28 | 論理検証システムとfpgaモジュール |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004157986A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008171360A (ja) * | 2007-01-15 | 2008-07-24 | Hitachi Information & Communication Engineering Ltd | 論理モジュール搭載用ボード |
JP2010072843A (ja) * | 2008-09-17 | 2010-04-02 | Nec Electronics Corp | 検証用デバイス及び検証装置並びに検証システム |
JP2012014321A (ja) * | 2010-06-30 | 2012-01-19 | Nippon Telegr & Teleph Corp <Ntt> | 集積回路 |
WO2016043516A1 (ko) * | 2014-09-17 | 2016-03-24 | 서울대학교 산학협력단 | 현장 프로그래머블 아날로그 어레이 및 이를 이용한 현장 프로그래머블 혼성신호 어레이 |
JP2016116059A (ja) * | 2014-12-15 | 2016-06-23 | メガシス株式会社 | Fpga用ic基板 |
CN109240978A (zh) * | 2018-09-21 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种搭建加速平台的fpga系统、设备及加速平台 |
JP7048776B1 (ja) * | 2021-01-22 | 2022-04-05 | Necプラットフォームズ株式会社 | プログラマブルデバイス、システム、検証支援方法、およびプログラム |
CN117610472A (zh) * | 2024-01-24 | 2024-02-27 | 上海合见工业软件集团有限公司 | 超大规模集群fpga原型验证系统 |
-
2003
- 2003-07-28 JP JP2003280650A patent/JP2004157986A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008171360A (ja) * | 2007-01-15 | 2008-07-24 | Hitachi Information & Communication Engineering Ltd | 論理モジュール搭載用ボード |
JP2010072843A (ja) * | 2008-09-17 | 2010-04-02 | Nec Electronics Corp | 検証用デバイス及び検証装置並びに検証システム |
JP2012014321A (ja) * | 2010-06-30 | 2012-01-19 | Nippon Telegr & Teleph Corp <Ntt> | 集積回路 |
WO2016043516A1 (ko) * | 2014-09-17 | 2016-03-24 | 서울대학교 산학협력단 | 현장 프로그래머블 아날로그 어레이 및 이를 이용한 현장 프로그래머블 혼성신호 어레이 |
US10050628B2 (en) | 2014-09-17 | 2018-08-14 | Snu R&Db Foundation | Field-programmable analog array and field programmable mixed signal array using same |
JP2016116059A (ja) * | 2014-12-15 | 2016-06-23 | メガシス株式会社 | Fpga用ic基板 |
CN109240978A (zh) * | 2018-09-21 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种搭建加速平台的fpga系统、设备及加速平台 |
JP7048776B1 (ja) * | 2021-01-22 | 2022-04-05 | Necプラットフォームズ株式会社 | プログラマブルデバイス、システム、検証支援方法、およびプログラム |
CN117610472A (zh) * | 2024-01-24 | 2024-02-27 | 上海合见工业软件集团有限公司 | 超大规模集群fpga原型验证系统 |
CN117610472B (zh) * | 2024-01-24 | 2024-03-29 | 上海合见工业软件集团有限公司 | 超大规模集群fpga原型验证系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20080306722A1 (en) | Logic verification system | |
US7418681B2 (en) | Simulation system, simulation method and simulation program for verifying logic behavior of a semiconductor integrated circuit | |
US6279146B1 (en) | Apparatus and method for verifying a multi-component electronic design | |
US6701491B1 (en) | Input/output probing apparatus and input/output probing method using the same, and mixed emulation/simulation method based on it | |
KR101297513B1 (ko) | 범용 프로토콜 엔진 | |
EP2145272B1 (en) | Multiplexing of inputs and delayed inputs of a circuit emulation | |
US6732068B2 (en) | Memory circuit for use in hardware emulation system | |
US7353162B2 (en) | Scalable reconfigurable prototyping system and method | |
CN109783954B (zh) | 一种ies联合fpga硬件仿真加速系统 | |
US20070226541A1 (en) | Memory-based trigger generation scheme in an emulation environment | |
US7120571B2 (en) | Resource board for emulation system | |
KR19980032933A (ko) | 에뮬레이션 및 시뮬레이션을 이용한 설계 검증 방법 및 장치 | |
JP2002501646A (ja) | ハードウェア・ロジック・エミュレーション・システムで使用するための分配ロジック・アナライザ | |
US6842728B2 (en) | Time-multiplexing data between asynchronous clock domains within cycle simulation and emulation environments | |
TW201428521A (zh) | 設計及模擬系統、裝置及方法 | |
US20140173343A1 (en) | Method and Apparatus For Supporting A Unified Debug Environment | |
US8352242B2 (en) | Communication scheme between programmable sub-cores in an emulation environment | |
CN116029242A (zh) | 一种云原生的硬件逻辑仿真fpga加速方法及系统 | |
JP2004157986A (ja) | 論理検証システムとfpgaモジュール | |
US7747423B1 (en) | Systems and methods of co-simulation utilizing multiple PLDs in a boundary scan chain | |
US20040230934A1 (en) | System and method for emulating systems with multiple field programmable gate arrays | |
KR20010006983A (ko) | 신속 프로토타이핑 장치와 그것의 입출력 탐침방법 및그것을 이용한 혼합 검증 방법 | |
JP2000215226A (ja) | 論理検証装置 | |
JP5407257B2 (ja) | 回路試験装置及び回路試験システム | |
US20230306169A1 (en) | Hybrid Switching Architecture For SerDes Communication Channels In Reconfigurable Hardware Modeling Circuits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060706 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081217 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090527 |