以下、図面を用いて実施形態が説明される。以下では、信号等の情報が伝達される信号線には、信号名と同じ符号を使用する。また、図中に単線で示す信号線が、複数ビットの場合もある。
図1は、一実施形態におけるリセット制御回路を含む検証システムの一例を示す。図1に示す検証システム100は、FPGA2(2-11、2-12、2-21、2-22)を各々含む複数の基板1(1-11、1-12、1-21、1-22)と、制御装置5とを有する。FPGA2は、回路をプログラム可能であり、プログラムされた回路を再構成可能な第1プログラマブル部の一例である。
例えば、基板1は、図1の縦方向と横方向とに2次元に配列される。縦方向は、第1の方向の一例であり、横方向は、第1の方向に交差する第2の方向の一例である。横方向に隣接する基板1-11、1-12(または、1-21、1-22)は、図示しないコネクタを介して互いに接続される。同様に、縦方向に隣接する基板1-11、1-21(または、1-12、1-22)は、図示しないコネクタを介して互いに接続される。制御装置5は、例えば、サーバであり、2次元配列の角部(この例では、左下)に配置される基板1-11に接続される。
制御装置5に接続される基板1-11は、制御装置5からリセット信号RST0を受信する起点であり、他の基板1-12、1-21、1-21は、起点に対して末端側に配置される。また、基板1-11に搭載されるFPGA2-11は、起点であり、他のFPGA2は、末端側である。すなわち、FPGA2は、起点側から末端側に順次配列される。
例えば、リセット分配部4を介してリセット信号が順次伝達される各FPGA2において、リセット信号を出力するFPGA2は、リセット信号を受信するFPGA2に対して起点側(上流側)に位置するFPGA2である。リセット信号を受信するFPGA2は、リセット信号を送信するFPGA2に対して末端側(下流側)に位置するFPGA2である。
すなわち、リセット信号は、起点側のFPGA2から末端側のFPGA2に向けて順次伝達される。例えば、FPGA2-12、2-21は、FPGA2-22に対して起点側に位置し、FPGA2-11は、FPGA2-12、2-21、2-22に対して起点側に位置する。FPGA2-12、2-21は、FPGA2-11に対して末端側に位置し、FPGA2-22は、FPGA2-11、2-12、2-21に対して末端側に位置する。
検証システム100に含まれる基板1の数は、図1に示す例に限定されない。例えば、検証システム100は、制御装置5に接続される基板1-11と、基板1-11に順次接続される少なくとも1つの基板1を有すればよい。基板1の配列は、1次元配列でもよい。
各基板1の構成は、互いに同様であるため、以下では、主に基板1-11の構成について説明する。基板1-11には、FPGA2(2-11)、リセット発生部3(3-11)およびリセット分配部4(4-11)が搭載される。各FPGA2には、例えば、論理設計中のASICに搭載される回路の一部がそれぞれプログラムされる。すなわち、ASIC全体の回路は、複数のFPGA2に分割してプログラムされる。なお、図示を省略するが、各基板1には、基板1上のFPGA2にプログラムする回路の論理情報を記憶するメモリが搭載される。
リセット発生部3(3-11)は、例えば、オン状態またはオフ状態に設定可能な押し下げスイッチ等のスイッチを含む。例えば、リセット発生部3は、検証システム100の操作者等によるオフ状態からオン状態への操作(リセット操作)を検出し、オン状態の間、リセット信号をリセット分配部4(4-11)に出力する。これにより、後述するように、所定数のFPGA2にプログラムされたASICの論理検証を実施する場合、基板1のいずれかのスイッチを操作者がリセット操作することで、所定の範囲の論理回路を選択的にリセットすることができる。なお、スイッチがオフ状態の間、リセット発生部3は、リセット信号の出力を停止する。
リセット分配部4-11は、制御装置5からリセット信号RSTまたはリセット発生部3-11からのリセット信号を受けている期間、リセット信号RST11を出力する。リセット信号RST11は、自基板1-11のFPGA2-11と、隣接する基板1(1-12、1-21)のリセット分配部4(4-12、4-21)に伝達される。FPGA2-11にプログラムされたフリップフロップ等の回路は、リセット信号RST11に応答してリセットされる。
リセット分配部4-12は、リセット信号RST11またはリセット発生部3-12からのリセット信号を受けている期間、リセット信号RST12を出力する。リセット信号RST12は、自基板1-11のFPGA2-12と、隣接する基板1(1-22)のリセット分配部4(4-22)に伝達される。FPGA2-12にプログラムされたフリップフロップ等の回路は、リセット信号RST12に応答してリセットされる。
リセット分配部4-21は、リセット信号RST11またはリセット発生部3-21からのリセット信号を受けている期間、リセット信号RST21を出力する。リセット信号RST21は、自基板1-21のFPGA2-21と、隣接する基板1(1-22)のリセット分配部4(4-22)に伝達される。FPGA2-21にプログラムされたフリップフロップ等の回路は、リセット信号RST21に応答してリセットされる。
リセット分配部4-22は、リセット信号RST12、RST21またはリセット発生部3-22からのリセット信号を受けている期間、リセット信号RST22を出力する。リセット信号RST22は、自基板1-22のFPGA2-22に伝達される。FPGA2-22にプログラムされたフリップフロップ等の回路は、リセット信号RST22に応答してリセットされる。
リセット発生部3(3-11、3-12、3-21、3-22)およびリセット分配部4(4-11、4-12、4-21、4-22)は、リセット制御回路の一例である。ここで、各種リセット信号(リセット発生部3が出力するリセット信号およびRST0、RST11、RST12等)が出力されているとは、リセット信号が有効レベル(例えば、ロウレベル)に設定されていることを示す。各種リセット信号の出力が停止しているとは、リセット信号が無効レベル(例えば、ハイレベル)に設定されていることを示す。
図1に示す例では、リセット信号RST(RST0、RST11、RST12、RST21、RST22)は、ロウレベルのときにリセット状態を示すロウアクティブの信号である。このため、各リセット分配部4において、リセット信号を受けない入力ピンは、T字形状の図形で示した電源線に接続される。なお、リセット信号RSTがハイアクティブの信号の場合、各リセット分配部4において、リセット信号を受けない入力ピンは、接地線に接続される。
図2は、検証対象のASIC200の論理と、図1の検証システム100のFPGA2にプログラムする論理との関係の一例を示す。例えば、ASIC200は、各々が組合せ回路とフリップフロップFFとを含む論理回路LC1および論理回路LC2を有する。各論理回路LC1、LC2は、1つのFPGA2に搭載しきれない規模であるとする。
論理回路LC1は、FPGA2-11、2-21にプログラムされ、論理回路LC2は、FPGA2-12、2-22にプログラムされる。そして、検証システム100により、FPGA2にプログラムされた論理回路LC1、LC2の論理検証が実施される。最初の論理検証では、例えば、論理回路LC1、LC2のフリップフロップFFを同時にリセットした後、論理回路LC1、LC2に所望の動作を実行させ、論理回路LC1、LC2の動作後にフリップフロップFFが保持するデータの論理が比較される。
また、次の論理検証では、論理回路LC1、LC2に所望の動作を実行させた後、論理回路LC2のみのフリップフロップFFがリセットされる。この後、論理回路LC1、LC2に所望の動作を再び実行させ、論理回路LC1、LC2の動作後にフリップフロップFFが保持するデータの論理が比較される。以下では、FPGA2にプログラムされた論理回路中のフリップフロップFF等をリセットする動作をリセット動作と称し、論理回路中のフリップフロップFF等をリセットすることを、論理回路をリセットするとも称する。
基板1を2次元配列することで、ASIC200内のリセットする論理回路と、FPGA2にプログラムされた論理回路のうち、リセットする論理回路とを容易に対応付けすることができる。これにより、検証システム100の操作者等は、どのリセット発生部3のスイッチをリセット操作するかを容易に識別することができる。この結果、ASIC200の論理検証において、リセット範囲が誤って設定される可能性を低減することができ、正しい論理検証を実施することができる。
図3は、図2のASIC200に搭載される論理回路LC1、LC2の概要を示す。論理回路LC1、LC2は、一対のフリップフロップFFの間に配置された複数の組み合わせ回路を有する。各組み合わせ回路は、信号の入力から出力までが1クロックサイクル以内に完結する論理ゲートを含む。各フリップフロップFFは、クロック源からのクロック信号を三角印で示すクロックピンで受信し、受信したクロック信号に同期して前段の組み合わせ回路から出力される論理を取り込み、取り込んだ論理を後段の組み合わせ回路に出力する。また、各フリップフロップFFは、リセット回路からのリセット信号を図示しないリセットピンで受信し、受信したリセット信号に同期してリセットされ、リセット状態を示す初期値を出力する。
なお、論理回路LC1、LC2がFPGA2にプログラムされる場合、リセット回路は、各FPGA2内に配置される。そして、各リセット回路は、各FPGA2が受信するリセット信号(図1のRST11、RST12、RST21、RST22)に基づいて、フリップフロップFFにリセット信号を出力する。
図4は、図1のFPGA2のリセット動作の一例(リセット制御回路によるリセット)を示す。図4において、太い矢印は、リセット信号の伝達経路を示す。図4は、リセット制御回路によるリセット方法の一例を示す。図4では、ASIC200の論理検証において、太枠で示すFPGA2-12、2-22にプログラムされた論理回路LC2がリセットされ、FPGA2-11、2-21にプログラムされた論理回路LC1はリセットされない。
まず、検証システム100の操作者等により、リセット発生部3-12の図示しないスイッチがリセット操作され、リセット発生部3-12は、リセット信号をリセット分配部4-12に出力する。リセット分配部4-12は、リセット発生部3-12からのリセット信号に応答して、リセット信号RST12を出力する。これにより、リセット操作されるリセット発生部3-12とともに基板1-12に搭載されたFPGA2-12にプログラムされた論理回路LC2の一部がリセットされる。
リセット分配部4-22は、リセット分配部4-12からのリセット信号RST12を受信し、リセット信号RST12に応答してリセット信号RST22を出力する。これにより、FPGA2-22にプログラムされた論理回路LC2の別の一部がリセットされ、論理回路LC2に含まれる全てのフリップフロップFFがリセットされる。
一方、FPGA2-11、2-21にプログラムされた論理回路LC1は、リセット信号RST11、RST21のいずれも受けないため、リセットされない。したがって、リセット発生部3-12の操作により、論理回路LC2のみを選択的にリセットすることができる。換言すれば、リセット操作させるリセット発生部3が出力するリセット信号の伝送経路の末端側のFPGA2にプログラムされた論理回路のみをリセットすることができる。この結果、リセットする論理回路とリセットしない論理回路とを切り分けて、検証システム100によるASIC200の論理検証を実施することができる。
図5は、図1のFPGAのリセット動作の別の例(システムリセット)を示す。図4と同様に、太い矢印は、リセット信号の伝達経路を示す。図5は、リセット制御回路によるリセット方法の別の例を示す。図5では、ASIC200の論理検証において、太枠で示すFPGA2-11、2-21、2-12、2-22にプログラムされた論理回路LC1、LC2がリセットされる。検証対象の論理回路LC1、LC2がプログラムされたFPGA2-11、2-21、2-12、2-22内の論理回路LC1、LC2の全てのフリップフロップFFをリセットする場合、制御装置5からリセット信号RSTが出力される。
リセット分配部4-11は、制御装置5からのリセット信号RSTに応答して、リセット信号RST11を出力する。これにより、FPGA2-11にプログラムされた論理回路LC1の一部がリセットされる。リセット分配部4-21は、リセット分配部4-11からのリセット信号RST11を受信し、リセット信号RST11に応答してリセット信号RST21を出力する。これにより、FPGA2-21にプログラムされた論理回路LC1の別の一部がリセットされ、論理回路LC1に含まれる全てのフリップフロップFFがリセットされる。
リセット分配部4-12は、リセット信号RST11に応答して、リセット信号RST12を出力する。これにより、図4と同様に、FPGA2-12にプログラムされた論理回路LC2の一部がリセットされる。リセット分配部4-22は、リセット信号、RST21またはリセット信号RST12を受信し、リセット信号RST21またはリセット信号RST12に応答してリセット信号RST22を出力する。これにより、FPGA2-22にプログラムされた論理回路LC2の別の一部がリセットされ、論理回路LC2に含まれる全てのフリップフロップFFがリセットされる。
このように、図5では、FPGA2-11、2-21、2-12、2-22にプログラムされた全ての論理回路LC1、LC2がリセットされる。なお、図5に示すリセット動作は、リセット発生部3-11の図示しないスイッチをリセット操作することで実施されてもよい。
以上、図1から図5に示す実施形態では、リセット発生部3のスイッチのリセット操作により、FPGA2にプログラムされたASIC200の論理回路のうち、所定の範囲の論理回路を選択的にリセットすることができる。また、各基板1にリセット発生部3が搭載されるため、任意の位置のFPGA2と、そのFPGA2の末端側に位置するFPGA2とにプログラムされた論理回路をリセットすることができる。この結果、リセットする論理回路とリセットしない論理回路とを切り分けて、検証システム100によるASIC200の論理検証を実施することができる。
基板1が2次元配列されるため、論理検証において、ASIC200のリセット範囲と、FPGA2にプログラムされた論理回路のリセット範囲とを容易に対応付けすることができる。これにより、操作者等は、どのリセット発生部3のスイッチをリセット操作するかを容易に識別することができる。この結果、ASIC200の論理検証において、リセット範囲が誤って設定される可能性を低減することができ、正しい論理検証を実施することができる。
図6は、別の実施形態におけるリセット制御回路を含む検証システムの一例を示す。図1から図5で説明した要素および機能と同様の要素および機能については、詳細な説明は省略する。
図6に示す検証システム102は、複数のFPGA基板11(11-11、11-12、11-21、11-22)、PCI(Peripheral Component Interconnect)カード40およびサーバ50を有する。PCIカード40およびサーバ50は、FPGA基板11を制御する制御装置の一例である。隣接するFPGA基板11は、コネクタCNを介して相互に接続可能であり、FPGA基板11は、2次元配列される。各FPGA基板11は、互いに同様の構成であるため、以下では、主にFPGA基板11-11の構成について説明する。
FPGA基板11-11は、FPGA12-11、メモリ15-11、CPLD(Complex Programmable Logic Device)14-11、スイッチSW13-11を有する。各FPGA基板11は、矩形形状を有し、各辺にコネクタCNを有し、一辺にコネクタCN1を有する。コネクタCN1およびPCIカード40を介してサーバ50に接続されるFPGA基板11-11とFPGA基板11-11に搭載される各種部品は、基点の基板および起点の部品である。FPGA12(12-11、12-12、12-21、12-22)は、回路をプログラム可能であり、プログラムされた回路を再構成可能な第1プログラマブル部の一例である。
FPGA基板11-12、11-21は、起点のFPGA基板11-11に対して末端側に配置される。また、FPGA基板11-22は、FPGA基板11-12、11-21に対して末端側に配置される。FPGA基板11-12、11-21は、FPGA基板11-22に対して基点側に配置される。
同様に、FPGA12-12、12-21は、起点のFPGA12-11に対して末端側に配置される。また、FPGA12-22は、FPGA12-12、12-21に対して末端側に配置される。FPGA12-12、12-21は、FPGA12-22に対して基点側に配置される。すなわち、FPGA基板11およびFPGA12は、起点側から末端側に順次2次元配列される。
各FPGA基板11は、コネクタCNを介して信号を送受信する機能を有する。各FPGA基板11に搭載されるメモリ15(15-11、15-12、15-21、15-22)は、例えば、フラッシュメモリであり、各FPGA基板11に搭載されるFPGA12に回路をプログラムする論理情報を記憶する。メモリ15に記憶される論理情報は、PCIカード40を介してサーバ50から書き込まれる。
この際、末端側のFPGA基板11のメモリ15に書き込む論理情報は、起点側のFPGA基板11からコネクタCNを介して順次転送される。サーバ50とPCIカード40との間、PCIカード40とFPGA基板11との間、および互いに隣接する一対のFPGA基板11の間は、シリアルインタフェースで接続されている。例えば、シリアルインタフェースによるデータ等の情報の通信は、PCIexpress(登録商標)インタフェースを使用して実施される。
各FPGA基板11に搭載されるスイッチSW13(13-11、13-12、13-21、13-22)は、リセット発生部の一例であり、検証システム102の操作者等によるリセット操作によりリセット信号を出力する。図1から図5に示した実施形態と同様に、リセット信号の有効レベルは、ロウレベルであり、リセット信号の無効レベルは、ハイレベルである。
各FPGA基板11に搭載されるCPLD14(14-11、14-12、14-21、14-22)は、各FPGA基板11に搭載されるFPGA12に回路をプログラムする制御を実行する。例えば、各CPLD14は、2次元配列されたFPGA基板11の集合体(以下、大規模FPGAとも称する)に電源が投入されたことに基づいて、各FPGA12に書き込む論理情報を各メモリ15から読み出して各FPGAに転送する。これにより、各FPGA12に回路がプログラムされる。また、各CPLD14は、PCIカード40を介してサーバ50から転送される各FPGA12用の論理情報を各メモリ15に書き込む。さらに、各CPLD14は、図9および図10で説明するようにリセット分配回路141を有し、起点側から受信したリセット信号を末端側に分配する機能を有する。
PCIカード40は、FPGA41、CPLD42、メモリ43、およびコネクタCN1、CN2を有する。コネクタCN1は、ケーブルCBLを介して起点のFPGA基板11-11のコネクタCN1に接続され、コネクタCN2は、サーバ50の図示しないカードスロットに接続される。FPGA41にプログラムする回路の論理情報は、メモリ43に記憶され、CPLD42を介してメモリ43からFPGA41に転送される。FPGA41にプログラムされる回路の例は、図9で説明する。
なお、コネクタCNは、FPGA基板11の側面だけでなく、FPGA12等が搭載される表面と、裏面とにそれぞれ設けられてもよい。この場合、FPGA基板11を縦方向(第1の方向)と横方向(第2の方向)と高さ方向とに3次元で配列することができる。高さ方向は、第1の方向と第2の方向とに交差する第3の方向の一例である。FPGA基板11が3次元配列される場合にも、任意のFPGA基板11上のスイッチSW13を操作することで、所定の範囲の末端側のFPGA12にプログラムされる回路をリセットすることができる。
FPGA基板11が3次元で配列される場合、FPGA基板11-11と同じ平面上のFPGA基板11が基点側になり、FPGA基板11-11と異なる平面上のFPGA基板11は、末端側となる。また、各平面上に配列される複数のFPGA基板11でのリセット信号の伝達経路は、図8から図10で説明する経路と同様であり、左下側が基点側になる。
図7は、図6の検証システム102で検証を実施する検証対象のASIC202の論理の一例を示すブロック図である。例えば、ASIC202は、演算を並列に実行する演算器21(21-1、21-2、21-3)を含む複数の演算部20(20-1、20-2、20-3)を有する。また、ASIC202は、各演算部20にデータを転送し、各演算部20による演算結果を受信するデータ分配制御部24を有する。
各演算部20は、互いに同様の構成であるため、以下では、主に演算部20-1の構成について説明する。演算部20-1は、演算器21-1、演算データ制御回路22-1および演算結果収集回路23-1を有する。各演算器21は、例えば、積和演算器であり、演算データ制御回路22(22-1、22-2、22-3)から転送されるデータの積和演算を実行し、演算結果を演算結果収集回路23(23-1、23-2、23-3)に出力する。
例えば、各演算データ制御回路22は、対応する演算器21に出力する演算前のデータを量子化する。例えば、各演算結果収集回路23は、対応する演算器21から出力される演算結果を統計処理する。各演算データ制御回路22は、対応する演算結果収集回路23で統計処理された演算結果に基づいて、小数点位置を決定してもよい。
なお、演算データ制御回路22および演算結果収集回路23の機能は、上記の機能に限定されない。また、各演算部20は、並列に演算を実行する複数の演算器21を有してもよい。この場合、各演算データ制御回路22および各演算結果収集回路23は、対応する演算部20内の複数の演算器21に共通に設けられてもよい。演算器21は、積和演算器以外の演算器でもよく、複数種の演算を実行可能な演算器でもよい。
例えば、ASIC202は、ディープラーニング用の専用プロセッサであり、各演算部20に積和演算等を実行させて、ディープニューラルネットワークの学習を実行する。なお、ASIC202は、ディープニューラルネットワークの推論を実行してもよい。
例えば、ASIC202の論理検証を実施する場合、所定の範囲の演算器21をリセットし、他の演算器21をリセットしたくない場合がある。図7は、演算部20-1の状態と、演算データ制御回路22-2、22-3の状態をリセットせず、演算器21-2、21-3と演算結果収集回路23-2、23-3との状態をリセットしたい場合を示す。
図6に示した検証システム102は、演算器21-2、21-3と演算結果収集回路23-2、23-3をリセットした状態で、例えば、共通のデータを使用して各演算器21に演算を実行させる。そして、3つの演算器21の演算結果が互いに同じ場合、各演算部20の論理が正しいと判定され、3つの演算器21の演算結果のいずれかが異なる場合、各演算部20の少なくともいずれかの論理が正しくないと判定される。
図8は、図7の演算部20の回路を複数のFPGA12に分けてプログラムする一例を示すブロック図である。例えば、ASIC202は、図3と同様に、各々が組合せ回路とフリップフロップFFとを含む複数の論理回路を有する。そして、2つのフリップフロップFF間に配置される組み合わせ回路が、クロックサイクル毎に順次動作し、パイプライン処理が実行されることで、各演算部20の機能が実現される。
例えば、演算部20-1において、演算データ制御回路22-1は、FPGA12-11にプログラムされ、演算器21-1は、FPGA12-21にプログラムされ、演算結果収集回路23-1は、FPGA12-31にプログラムされる。演算部20-2において、演算データ制御回路22-2は、FPGA12-12にプログラムされ、演算器21-2は、FPGA12-22にプログラムされ、演算結果収集回路23-2は、FPGA12-32にプログラムされる。
演算部20-3において、演算データ制御回路22-3は、FPGA12-13にプログラムされ、演算器21-3は、FPGA12-23にプログラムされ、演算結果収集回路23-3は、FPGA12-33にプログラムされる。大規模FPGAにおいて、図7のリセットしたい範囲に対応するリセットしたい範囲は、FPGA12-22、12-23、12-32、12-33である。
この場合、図8に太枠で示すスイッチSW13-22が操作者等によりリセット操作され、スイッチSW13-22からリセット信号が出力される。リセット信号は、太い矢印で示すように、CPLD14-22、14-23、14-32、14-33を介して、FPGA基板11-22から末端側のFPGA基板11-23、11-32、11-33に伝達される。これにより、破線枠で示すリセットしたい範囲のFPGA12-22、12-23、12-32、12-33の回路を選択的にリセットすることができる。
なお、各演算部20の論理検証を実施する場合、サーバ50は、検証プログラムを実行して、演算器21に演算させるデータを、PCIカード40を介して各FPGA基板11のFPGA12に転送する。演算器21等の回路は、FPGA12にプログラムされているとする。例えば、図7に示したデータ分配制御部24は、PCIカード40のFPGA41(図6)にプログラムされる。
この後、サーバ50は、PCIカード40を介して、転送したデータの演算を各演算部20の演算器21に実行させる。そして、サーバ50は、各演算結果収集回路23から演算結果を受信し、演算結果が期待しているデータであるか否かを判定することで、各演算部20の論理検証を実施する。FPGA12にプログラムした回路(ハードウェア)を動作させて論理検証を実施することで、論理検証シミュレーターを使用する場合に比べて、高速に論理検証を実施することができる。
図8に示すように、FPGA基板11を2次元で配列し、互いに隣接するFPGA基板11間をコネクタCNで接続することで、FPGA12の配列を自由に設定することができる。これにより、ASIC等の任意の規模の集積回路の論理を複数のFPGA12に分割してプログラムすることができる。そして、リセット操作された任意のスイッチSW13から出力されるリセット信号を、起点側のFPGA基板11から末端側のFPGA基板11に順次伝送することができる。この結果、集積回路の所定の範囲のみをリセットした状態で、論理検証を実施することができる。
図9は、図6のPCIカード40とFPGA基板11との一例を示すブロック図である。なお、FPGA基板11-11以外のFPGA基板11も、FPGA基板11-11と同様の構成を有するため、以下では、主にFPGA基板11-11の構成を説明する。また、図9では、リセット信号の伝送経路のみを説明する。データおよびコマンド等の伝送経路は、リセット信号の伝送経路と同様であるため、説明は省略する。
PCIカード40のFPGA41には、予め、パラレル/シリアル変換回路411、リセットコマンド検出回路412およびパラレル/シリアル変換回路413がプログラムされる。パラレル/シリアル変換回路411は、サーバ50から受信するシリアルデータをパラレルデータに変換し、変換したデータをリセットコマンド検出回路412に出力する。
リセットコマンド検出回路412は、受信したパラレルデータがリセットコマンド(ソフトリセット)またはリセット解除コマンドであるか否かを検出する。リセットコマンド検出回路412は、リセットコマンドを検出した場合、リセットコマンドを示すリセット情報をパラレルデータとしてパラレル/シリアル変換回路413に出力する。リセットコマンド検出回路412は、リセット解除コマンドを検出した場合、リセット解除コマンドを示すリセット情報をパラレルデータとしてパラレル/シリアル変換回路413に出力する。パラレル/シリアル変換回路413は、受信したパラレルデータをシリアルデータに変換し、変換したデータをFPGA基板11-11に送信する。
各CPLD14は、リセット分配回路141を有する。リセット分配回路141は、リセット分配部の一例である。リセット分配回路141は、リセット入力ピンIN(IN1、IN2、IN3、IN4)でそれぞれ受信するリセット信号をリセット出力ピンOUTから出力する。出力ピンから出力されるリセット信号は、自FPGA基板11のFPGA12のリセット回路122と、図9の上方向または右方向に隣接する末端側のFPGA基板11のCPLD14とに伝達される。
リセット信号を起点側から末端側に順次伝送するリセット分配回路141をFPGA基板11上のCPLD14にプログラムすることで、例えば、CPLD14にプログラムされた既存の回路にリセット分配回路141の論理を追加することができる。各CPLD14は、リセット分配回路141がプログラムされ、回路を再構成可能な第2プログラマブル部の一例である。
なお、FPGA基板11が3次元で配列される場合、リセット出力ピンOUTから出力されるリセット信号は、基板面が対向するFPGA基板11のリセット分配回路141にも伝達される。このため、各リセット分配回路141は、対向するFPGA基板11からのリセット信号を入力する5番目のリセット入力ピン(例えば、IN5)を有する。そして、リセット分配回路141は、リセット入力ピンIN1、IN2、IN3、IN4、IN5でそれぞれ受信するリセット信号をリセット出力ピンOUTから出力する。
例えば、リセット分配回路141において、リセット信号を受信するリセット入力ピンINは、プルアップされている。このため、リセット分配回路141は、各リセット入力ピンINの接続がオープン状態の場合、無効レベルのリセット信号を受けているとして動作する。
各FPGA12は、リセット回路122、パラレル/シリアル変換回路123、125、フリップフロップFF、組み合わせ回路124およびクロック源126を有する。リセット回路122、フリップフロップFF、組み合わせ回路124およびクロック源126の構成および機能は、図3のリセット回路、フリップフロップFF、組み合わせ回路およびクロック源の構成および機能とそれぞれ同様である。
パラレル/シリアル変換回路123は、PCIカード40のパラレル/シリアル変換回路413から受信するシリアルデータをパラレルデータに変換する。パラレル/シリアル変換回路123は、変換したパラレルデータがリセットコマンドを示す場合、ロウレベル(有効レベル)のリセット信号をリセット回路122に出力する。また、パラレル/シリアル変換回路123は、変換したパラレルデータがリセット解除コマンドを示す場合、ハイレベル(無効レベル)のリセット信号をリセット回路122に出力する。
パラレル/シリアル変換回路123は、PCIカード40から受信するシリアルデータが論理検証用のデータである場合、パラレルデータに変換した論理検証用のデータを、フリップフロップFFを介して組み合わせ回路に出力する。ここで、論理検証用のデータは、例えば、図8に示したFPGA12にプログラムされた演算器21に演算させるデータである。パラレル/シリアル変換回路125は、パラレルデータをシリアルデータに変換して、変換したシリアルデータを、例えば、シリアルインタフェースを介してFPGA基板11の外部に出力する。
リセット回路122は、リセット分配回路141から受信するリセット信号またはパラレル/シリアル変換回路123から受信するリセット信号をFPGA12の内部回路に出力する。また、リセット回路122は、パラレル/シリアル変換回路123から受信するリセット信号をリセット分配回路141に出力する。
各CPLD14において、リセット入力ピンIN1は、図9の下側に配置される起点側のFPGA基板11からのリセット信号の受信用に設けられる。リセット入力ピンIN2は、図9の左側に配置される起点側のFPGA基板11からのリセット信号の受信用に設けられる。リセット入力ピンIN3は、自FPGA基板11のスイッチSW13からのリセット信号の受信用に設けられる。リセット入力ピンIN4は、自FPGA基板11のFPGA12内のリセット回路122からのリセット信号の受信用に設けられる。
検証システム102の複数のFPGA基板11に搭載されるリセット分配回路141とスイッチSW13とは、リセット制御回路の一例である。各CPLD14は、起点側のFPGA基板11から受信するリセット信号、スイッチSW13から受信するリセット信号またはリセット回路122から受信するリセット信号に基づいて、末端側のFPGA基板11にリセット信号を出力する。但し、起点のFPGA基板11-11は、起点側のFPGA基板11が存在しない。また、起点のFPGA基板11-11のCPLD14-11は、リセット回路122からリセット信号を受信するが、起点以外のFPGA基板11のCPLD14は、リセット回路122からリセット信号を受信しない。
そして、起点のFPGA基板11-11のCPLD14-11は、サーバ50が送信したリセットコマンド(ソフトリセット)に応答してパラレル/シリアル変換回路123が生成するロウレベルのリセット信号を末端側のFPGA基板11に出力する。あるいは、起点のFPGA基板11-11のCPLD14-11は、スイッチSW13-11のリセット操作に基づいてリセット入力ピンIN3で受信するロウレベルのリセット信号を末端側のFPGA基板11に出力する。
また、起点のFPGA基板11-11のCPLD14-11は、サーバ50が送信したリセット解除コマンドに応答してパラレル/シリアル変換回路123が生成するハイレベルのリセット信号を末端側のFPGA基板11に出力する。あるいは、起点のFPGA基板11-11のCPLD14-11は、スイッチSW13-11のリセット操作の解除に基づいてリセット入力ピンIN3で受信するハイレベルのリセット信号を末端側のFPGA基板11に出力する。
これにより、サーバ50が送信したリセットコマンドに基づいて、全てのFPGA基板11のFPGA12にプログラムされた回路をリセットすることができる。また、FPGA基板11のスイッチSW13のリセット操作に基づいて、リセット操作されたスイッチSW13を搭載するFPGA基板11のFPGA12と、その末端側のFPGA基板11のFPGA12とにプログラムされた回路をリセットすることができる。すなわち、スイッチSW13のリセット操作により、任意の矩形状の範囲に含まれるFPGA基板11のFPGA12にプログラムされた回路をリセットすることができる。なお、起点のFPGA基板11-11には、スイッチSW13-11が搭載されてなくてもよい。
図10は、図6のFPGA基板11に搭載されるリセット分配回路141の一例を示す回路図である。リセット分配回路141は、4入力のアンド回路ANDを有する。アンド回路ANDの4つの入力は、リセット分配回路141のリセット入力ピンIN1、IN2、IN3、IN4にそれぞれ接続される。そして、アンド回路ANDは、リセット入力ピンIN1、IN2、IN3、IN4のいずれかがロウレベルの場合、ロウレベルのリセット信号をリセット出力ピンOUTから出力する。アンド回路ANDは、リセット入力ピンIN1、IN2、IN3、IN4の全てがハイレベルの場合、ハイレベルのリセット信号をリセット出力ピンOUTから出力する。
この実施形態のリセット信号は、ロウアクティブであるため、リセット入力ピンIN1、IN2、IN3は、FPGA基板11内で抵抗素子を介して電源線VCCに接続される(プルアップ)。これにより、リセット入力ピンIN1、IN2、IN3がオープン状態の場合に、ロウレベルのリセット信号がリセット出力ピンOUTから出力されることを抑止することができる。
なお、図9に示したリセット回路122は、パラレル/シリアル変換回路123からロウレベルのリセット信号を受けていない期間、リセット入力ピンIN4にハイレベルを出力する。このため、リセット入力ピンIN4は、プルアップされなくてよい。
例えば、各FPGA基板11のスイッチSW13は、一端が接地線GNDに接続され、他端(リセット信号線)がリセット入力ピンIN3に接続される押下スイッチである。各スイッチSW13の他端は、押下中にロウレベルに設定され、押下されていないときにプルアップによりハイレベルに設定される。このため、スイッチSW13のリセット操作は、スイッチSW13の押下により実現される。
図11は、図7のASIC202の論理検証を図6の検証システム102により実施する場合の一例を示すフロー図である。なお、PCIカード40のFPGA41およびCPLD42は、図11に示すフローを実施する前に予め回路がプログラムされているとする。
まず、ステップS10において、サーバ50の制御により各FPGA基板11の電源がオンされる。次に、ステップS12において、電源のオンに基づいて、各FPGA基板11のCPLD14に回路がプログラムされる。次に、ステップS14において、各CPLD14は、対応するメモリ15から論理情報を読み出して対応するFPGA12に書き込むことで、図8に示したように、各FPGA12に回路がプログラムされる。
次に、ステップS16において、サーバ50は、各演算器21に演算させるデータを大規模FPGAに転送することで、論理検証を開始する。次に、ステップS18において、各演算器21-1、21-2、21-3は、サーバ50から演算データを受信する。次に、ステップS20において、各演算器21-1、21-2、21-3は、受信した演算データを使用して演算を実行する。次に、ステップS22において、各演算器21-1、21-2、21-3は、対応する演算結果収集回路23-1、23-2、23-3とPCIカード40とを介して演算結果をサーバ50に送信する。
次に、ステップS24において、サーバ50は、受信した演算結果を比較する。サーバ50は、3つの演算器21-1、21-2、21-3による演算結果が互いに同じ場合、ステップS18で送信した演算データによる演算部20-1、20-2、20-3の動作が正常であると判定する。一方、サーバ50は、演算結果の比較で演算結果が一致しない場合、3つの演算部20-1、20-2、20-3の論理の少なくともいずれかが間違っていると判断し、エラー情報を出力する。
次に、ステップS26において、サーバ50は、FPGA基板11のうちの所定の選択範囲のFPGA12にプログラムされた回路をリセットするか否かを判定する。ステップS26の判定は、例えば、操作者等からサーバ50に入力される情報に基づいて実施される。サーバ50は、操作者等により入力された情報が所定の選択範囲のリセットを示す場合、ステップS34まで論理検証の動作を停止する。
例えば、所定の選択範囲は、図8に示したリセットしたい範囲である。所定の選択範囲をリセットする場合、処理はステップS28に移行される。一方、ステップS16で送信した演算データとは異なる演算データを使用して、論理検証を実施する場合、処理はステップS16に戻される。
ステップS28において、検証システム102の操作者等によるスイッチSW13-22の押下により、スイッチSW13-22は、ロウレベルのリセット信号を出力する。次に、ステップS30において、スイッチSW13-22が出力するロウレベルのリセット信号に基づいて、図8に太い矢印で示したように、所定の範囲のFPGA基板11のFPGA12にプログラムされた回路が順次リセットされる。ここで、所定の範囲は、リセット操作されたスイッチSW13-22を含むFPGA基板11-22と、FPGA基板11-22の末端側のFPGA基板11-23、11-32、11-33である。
次に、ステップS32において、検証システム102の操作者等によるスイッチSW13-22の押下の解除により、スイッチSW13-22は、リセット信号をハイレベルにすることで、リセット信号の出力を停止する。これにより、上記所定の範囲のリセットが解除される。この後、サーバ50は、操作者等からサーバ50に入力される情報に基づいて、リセット後の演算器21-2、21-3に演算させる演算データを送信する。
次に、ステップS34において、各演算器21-2、21-3は、サーバ50から演算データを受信する。次に、ステップS36において、各演算器21-2、21-3は、受信した演算データを使用して演算を実行する。なお、演算器21-1は、演算を実行しない。また、演算器21-1は、リセットされていないため、ステップS20で実行した演算結果を保持している。
次に、ステップS38において、各演算器21-2、21-3は、対応する各演算結果収集回路23-2、23-3とPCIカード40とを介して演算結果をサーバ50に送信する。次に、ステップS40において、サーバ50は、受信した演算器21-2、21-3の演算結果と、ステップS22で受信した演算器21-1の演算結果とを比較する。サーバ50は、3つの演算器21-1、21-2、21-3による演算結果が互いに同じ場合、ステップS18、S34で送信した演算データによる3つの演算部20-1、20-2、20-3の論理が同一であると判定する。すなわち、サーバ50は、3つの演算部20-1、20-2、20-3の動作が正常であると判定する。
一方、サーバ50は、演算結果の比較で演算結果が一致しない場合、3つの演算部20-1、20-2、20-3の論理の少なくともいずれかが間違っていると判断し、エラー情報を出力する。すなわち、サーバ50は、論理のバグ等により、リセットした状態での演算とリセットしない状態での演算とで、例えば、演算器21-1、21-2、21-3内に論理が相違するノードが存在すると判断する。
次に、ステップS42において、サーバ50は、操作者等からサーバ50に入力される情報に基づいて、論理検証を終了するか否かを判定する。サーバ50は、論理検証を終了する場合、図11に示す処理フローを終了し、論理検証を続ける場合、処理をステップS16に戻す。
図12は、図7のASICの論理検証を図6の検証システムにより実施する場合の別の例を示すフロー図である。図11と同じ処理には、同じステップ番号を付け、詳細な説明を省略する。ステップS10からステップS24までの処理は、図11と同様である。
ステップS24の後、ステップS50において、サーバ50は、全てのFPGA基板11のFPGA12にプログラムされた回路(フリップフロップFF)をリセットするか否かを判定する。ステップS50の判定は、例えば、操作者等からサーバ50に入力される情報に基づいて実施される。サーバ50は、操作者等から入力された情報が全てのFPGA基板11のFPGA12のリセットを示す場合、処理をステップS52に移行する。一方、ステップS16で送信した演算データとは異なる演算データを使用して、論理検証を実施する場合、処理はステップS16に戻される。
次に、ステップS52において、サーバ50は、リセットコマンド(ソフトリセット)を起点のFPGA基板11-11のFPGA12-11に送信する。FPGA12-11は、リセットコマンドを受信し、受信したリセットコマンドに基づいてロウレベルのリセット信号を出力する。すなわち、リセット信号は、有効レベルに設定される。ロウレベルのリセット信号は、起点のFPGA基板11-11に搭載されたCPLD14-11のリセット分配回路141から末端側のリセット分配回路141に順次伝達される。
次に、ステップS54において、順次伝搬されるロウレベルのリセット信号により全てのFPGA基板11のFPGA12にプログラムされた回路の全てのフリップフロップFFがリセットされる。次に、ステップS56において、サーバ50は、リセット解除コマンドを起点のFPGA基板11-11のFPGA12-11に送信する。FPGA12-11は、リセット解除コマンドを受信し、受信したリセット解除コマンドに基づいてリセット信号をハイレベルにすることで、リセット信号の出力を停止する。すなわち、リセット信号は、無効レベルに設定される。ハイレベルのリセット信号は、起点のFPGA基板11に搭載されたリセット分配回路141から末端側のリセット分配回路141に順次伝達される。
次に、ステップS58において、順次伝搬されるハイレベルのリセット信号により全てのFPGA基板11のFPGA12にプログラムされた回路の全てのフリップフロップFFのリセット状態が解除される。次に、ステップS60において、サーバ50は、操作者等からサーバ50に入力される情報に基づいて、論理検証を終了するか否かを判定する。サーバ50は、論理検証を終了する場合、図12に示す処理フローを終了し、論理検証を続ける場合、処理をステップS16に戻す。
図13は、任意のスイッチSWを押下して、スイッチSWを含むFPGA基板11と末端側のFPGA基板11とのFPGA12にプログラムされた回路をリセットする動作の一例を示す。図13に示す例では、図8のスイッチSW13-22を押下され、FPGA基板11-22を起点としてリセットの対象範囲に含まれるFPGA12-22、12-23、12-32、12-33にプログラムされた回路をリセットする動作を示す。
まず、ステップS70において、FPGA基板11-22のスイッチSW13-22が押下され、スイッチSW13-22は、ロウレベルLのリセット信号を出力する。次に、ステップS72において、CPLD14-22のリセット分配回路141のアンド回路ANDは、スイッチSW13-22からのロウレベルLのリセット信号を受け、ロウレベルLのリセット信号を出力する。次に、ステップS74において、CPLD14-22のアンド回路ANDが出力するリセット信号により、FPGA12-22にプログラムされた回路のフリップフロップFFがリセットされる。
次に、ステップS76において、CPLD14-23、14-32のリセット分配回路141のアンド回路ANDは、CPLD14-22のアンド回路ANDからロウレベルLのリセット信号を受け、ロウレベルLのリセット信号を出力する。次に、ステップS78において、CPLD14-23、14-32のアンド回路ANDが出力するリセット信号により、FPGA12-23、12-32にプログラムされた回路のフリップフロップFFがリセットされる。
次に、ステップS80において、CPLD14-33のリセット分配回路141のアンド回路ANDは、CPLD14-23またはCPLD14-32のアンド回路ANDからロウレベルLのリセット信号を受け、ロウレベルLのリセット信号を出力する。次に、ステップS82において、CPLD14-33のアンド回路ANDが出力するリセット信号により、FPGA12-33にプログラムされた回路のフリップフロップFFがリセットされる。ステップS70からステップS82の動作は、図11のステップS28、S30の処理に対応する。
次に、ステップS84において、FPGA基板11-22のスイッチSW13-22の押下が解除され、スイッチSW13-22が出力するリセット信号は、リセット信号線のプルアップに応じてハイレベルHに設定される。次に、ステップS86において、CPLD14-22のリセット分配回路141のアンド回路ANDは、スイッチSW13-22からハイレベルHのリセット信号を受け、ハイレベルHのリセット信号を出力する。次に、ステップS88において、CPLD14-22のアンド回路ANDが出力するハイレベルHのリセット信号により、FPGA12-22にプログラムされた回路のフリップフロップFFのリセットが解除される。
次に、ステップS90において、CPLD14-23、14-32のリセット分配回路141のアンド回路ANDは、CPLD14-22のアンド回路ANDからハイレベルHのリセット信号を受け、ハイレベルHのリセット信号を出力する。次に、ステップS92において、CPLD14-23、14-32のアンド回路ANDが出力するハイレベルHのリセット信号により、FPGA12-23、12-32にプログラムされた回路のフリップフロップFFのリセットが解除される。
次に、ステップS94において、CPLD14-33のリセット分配回路141のアンド回路ANDは、CPLD14-23またはCPLD14-32のアンド回路ANDからハイレベルHのリセット信号を受け、ハイレベルHのリセット信号を出力する。次に、ステップS96において、CPLD14-33のアンド回路ANDが出力するハイレベルHのリセット信号により、FPGA12-33にプログラムされた回路のフリップフロップFFのリセットが解除され、図13に示す動作が終了する。ステップS84からステップS96の動作は、図11のステップS32の処理に対応する。
以上、図6から図13に示す実施形態においても、図1から図5に示す実施形態と同様の効果を得ることができる。例えば、FPGA基板11上のスイッチSW13のリセット操作により、FPGA基板11上のFPGA12にプログラムされたASIC202の論理回路のうち、所定の範囲の論理回路を選択的にリセットすることができる。この結果、リセットする論理回路とリセットしない論理回路とを切り分けて、検証システム102によるASIC202の論理検証を実施することができる。
FPGA基板11が2次元配列されるため、論理検証において、ASIC202のリセット範囲と、FPGA基板11上のFPGA12にプログラムされた論理回路のリセット範囲とを容易に対応付けすることができる。これにより、ASIC202の論理検証において、リセット範囲が誤って設定される可能性を低減することができ、正しい論理検証を実施することができる。
さらに、図6から図13に示す実施形態では、コネクタCNを介して所定数のFPGA基板11を相互に接続することで、FPGA12の配列を自由に設定することができる。これにより、ASIC等の任意の規模の集積回路の論理を複数のFPGAに分割してプログラムすることができる。この結果、集積回路の論理規模にかかわりなく、リセット操作されたスイッチSW13から出力されるリセット信号を、起点側から末端側に順次伝送して、集積回路の所定の範囲をリセットすることができ、論理検証を実施することができる。
リセット信号を起点側から末端側に順次伝送するリセット分配回路141をFPGA基板11上のCPLD14にプログラムすることで、CPLD14にプログラムされた既存の回路にリセット分配回路141の論理を追加することができる。FPGA基板11が3次元で配列される場合にも、任意のFPGA基板11上のスイッチSW13をリセット操作することで、所定の範囲のFPGA12にプログラムされる回路をリセットすることができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。