説明

論理エミュレーション方法及び論理エミュレーションプログラム

【課題】効率的な時分割多重化論理回路挿入を行う論理エミュレーションの提供。
【解決手段】ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した機能ブロックを接続する論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように時分割多重化回路を挿入したFPGA用データを生成する第1機能と、該生成したFPGA用データを用い、コンピュータの1システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第2機能と、時分割多重化回路が多段挿入されている接続状態を検出し、該多段挿入を禁止するように物理的論理素子用データを修正する第3機能と、この修正物理的論理素子用データを用いて設定した最大駆動クロック数により論理エミュレーションを実行する第4機能とを実行させるもの。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、FPGAを複数搭載したエミュレーションボードを使用した論理エミュレーション環境におけるFPGAの物理的なピン数を超える本数のデータ信号を双方のFPGA間で共有する様に信号多重化(時分割多重)転送を行うことができる論理エミュレーション方法及び論理エミュレーションプログラムに関する。
【背景技術】
【0002】
近年、サーバやネットワーク等の情報処理装置に適用する大規模集積回路(LSI)の大規模化、多ピン化、小形化が進んでおり、このようなLSIを設計する際、LSIの論理検証精度を向上させるために、従来のソフトウェアによるRTL(Register transfer level)シミュレーション技術に加え、プログラム可能な物理的論理素子であるFPGA(Field Programmable Gate Array)等をボード上に搭載するエミュレーションボードを用いた、ソフトウェアとハードウェアを連動動作させる、ハードウェア論理エミュレーションをLSIの論理検証に適用する方式が用いられている。また、LSIにおける大規模化によるアドレス・データバスのビット幅拡張等のアーキテクチャ進歩などに伴い、FPGAにマッピングを行う論理機能ブロック同士で送受信されるデータ信号本数は増加の一途を辿っている。
【0003】
一般に、FPGAの物理ピン数を超える信号本数のデータ信号の転送は、該当信号を論理的に束ねる信号多重化によって使用するピン数を低減し、時分割多重化によってFPGAが持つ物理ピン数の範囲内でエミュレーション可能なようにデータ送受信する方法がとられる。この信号の時分割多重化手法は、プログラム可能論理素子であるFPGAに対し、ターゲット論理回路を部分的にFPGAに割り当てる論理分割プランをもとにFPGA同士で共有するデータ信号及び信号本数を算出し、FPGAの物理ピン数の範囲内に収まるように信号の多重度を決定し、そのFPGA間に配置される論理的な分割境界に対し、時分割多重化論理回路を論理的に挿入する手法である。
【0004】
この信号の時分割多重化手法が記載された文献としては、下記特許文献1が挙げられ、この特許文献1には、時分割多重化論理回路の挿入に際し、ターゲット論理回路のタイミング情報を踏まえた上でデータ信号の転送順序入れ替えなどを行い、タイミング計算、配置配線を繰り返した後、エミュレーションを実行する技術が記載されている。
【0005】
他方、時分割多重化論理回路挿入については、論理分割プランを元に算出した、FPGA同士で共有しなければならないデータ信号本数およびデータ信号名のキーワードをもとに、ソフトウェアによって時分割多重化論理回路を挿入する方法がとられる。この時分割多重化論理回路挿入に該当するデータ信号の多くは、論理機能ブロック同士を繋ぐインターフェース信号であるが、検証ターゲット論理規模が大規模であるほど該当インターフェース信号本数は多くなり、また、複数の設計者によって設計される論理回路であるほど、時分割多重化論理回路挿入可否を決める各信号に対する制約設定は困難を極める。
【0006】
このため、時分割多重化論理回路挿入の対象となる信号は、検証ターゲット論理回路の制御系信号を除き、FPGA間に配置される全ての信号を多重化の対象とするのが、最も単純で設計者の作業工数的な負担が少ない方法となる。このように、前述した設計工数や制約設定の難しさなどの理由から、時分割多重化論理回路の挿入はソフトウェアの使用が必要不可欠である。
【特許文献1】特開2002−73720号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
前述の時分割多重化論理回路挿入は、信号に対する多重化制約設定の難しさを回避するために、FPGA間に配置される全ての信号を無条件に多重化の対象とすることが望ましいが、例えば、FF(フリップフロップ)を含まない組み合わせ回路によって構成される論理機能ブロックが存在し、それを介する論理パスがある場合、信号を出力する側のFFと、その信号を受け取る入力側のFFと、そのFF同士の論理パス上に存在するFFを含まない組み合わせ回路が、それぞれ異なるFPGAに存在する場合、そのFFからFFまでの一つの論理パス中に、時分割多重化論理回路が複数段挿入されてしまう場合がある。
【0008】
このような場合は、時分割多重化論理回路を動作させるためのクロックを多段挿入された多重化論理回路の段数分多く発生させる必要があり、一般的に検証ターゲット論理回路のシステムクロックの動作周波数を低下させなければならないと言う不具合があり、このため、時分割多重化論理回路挿入に際しては、検証ターゲット論理回路のクロックドメイン分析結果/論理ネットリスト内の各機能ブロック接続情報/論理分割プラン/エミュレーションボード上のFPGA同士の物理配線接続情報等を基に、汎用PCやワークステーションによる膨大なマシンパワーを使用し、論理パスの配線経路を分析し、時分割多重化論理回路の多段挿入を抑止しなければならないと言う不具合があり、このような背景から、従来は、システム全体の動作周波数を低下させることのない、効率的な時分割多重化論理回路挿入手法が求められていた。
【0009】
即ち、従来技術においては、論理エミュレーション環境にて機能検証を行う際のエミュレーションボード上に搭載される複数個のFPGA間データ転送において、FPGAの物理ピン数以上の信号を送受信するために、時分割多重化方法によって論理信号を束ね、ソフトウェアによりFPGAの入出力境界に時分割多重化論理回路を挿入する際、機能検証のターゲットとなる論理回路中に、FF(フリップフロップ)が無く組み合わせ回路のみでFPGAを通過する論理ネットが存在する場合、FFからFFまでの論理パスに、複数段の時分割多重化論理回路が挿入される可能性があり、この場合、ターゲット論理回路を動作させる1システムクロック期間中に、時分割多重化論理回路用クロックを挿入段数分動作させる必要があるため、動作周波数が低下してしまうと言う不具合があった。
【0010】
尚、特許文献1記載の技術は、エミュレーションボード上のFPGA同士において、データ信号を多重化することが記載されているが、時分割多重化論理回路の多段挿入を抑止することは想定されていない。
【0011】
本発明の目的は、時分割多重化論理回路の多段挿入を抑止し、高効率な時分割多重化論理回路を挿入することができる論理エミュレーション方法を提供することである。
【課題を解決するための手段】
【0012】
前記目的を達成するために本発明は、所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが該ハードウェア論理エミュレーションプログラムによりハードウェア論理エミュレーションを行う論理エミュレーション方法であって、
前記論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第1機能と、
前記第1機能により生成した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第2機能と、
前記時分割多重化論理回路が前記複数の内部論理機能ブロック間に多段挿入されている内部論理機能ブロック接続状態を検出し、該検出した多段挿入を禁止するように物理的論理素子用データを修正する第3機能と、
該修正した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定し、該設定した最大駆動クロック数により論理エミュレーションを実行する第4機能とを、
実行させることを第1の特徴とする。
【0013】
また本発明は、第1の特徴の論理エミュレーション方法において、前記第4機能のコンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を増加させながら前記コンピュータの1システムクロック期間中に最大となるように最大駆動クロック数を設定することを第2の特徴とする。
【0014】
また本発明は、前記第1の特徴の論理エミュレーション方法において、前記第4機能のコンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数の値を増加させながら前記コンピュータの1システムクロック期間中に最大となるように最大駆動クロック数を設定することを第3の特徴とする。
【0015】
更に本発明は、所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが該ハードウェア論理エミュレーションプログラムによりハードウェア論理エミュレーションを行う論理エミュレーション方法であって、
前記論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第1機能と、
前記第1機能により生成した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該駆動クロックにより論理エミュレーションを行う第2機能とを実行させることを第4の特徴とする。
【0016】
更に本発明は、所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが論理エミュレーションを実行するための論理エミュレーションプログラムであって、
前記コンピュータが論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第1機能と、
前記第1機能により生成した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第2機能と、
前記時分割多重化論理回路が前記複数の内部論理機能ブロック間に多段挿入されている内部論理機能ブロック接続状態を検出し、該検出した多段挿入を禁止するように物理的論理素子用データを修正する第3機能と、
該修正した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定し、該設定した最大駆動クロック数により論理エミュレーションを実行する第4機能とを、
実現させることを第5の特徴とする。
【0017】
また本発明は、第5の特徴の論理エミュレーションプログラムにおいて、前記第4機能のコンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を増加させながら前記コンピュータの1システムクロック期間中に最大となるように最大駆動クロック数を設定することを第6の特徴とする。
【0018】
また本発明は、前記第6の特徴の論理エミュレーションプログラムにおいて、前記第4機能のコンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数の値を増加させながら前記コンピュータの1システムクロック期間中に最大となるように最大駆動クロック数を設定することを第7の特徴とする。
【0019】
更に本発明は、所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが論理エミュレーションを行うための論理エミュレーションプログラムであって、
前記コンピュータが論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第1機能と、
前記第1機能により生成した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該駆動クロックにより論理エミュレーションを行う第2機能とを実行させることを第8の特徴とする。
【発明の効果】
【0020】
本発明による論理エミュレーション方法及びプログラムは、複数のFPGAを搭載したエミュレーションボードを用いた論理エミュレーションを実施する場合において、FPGAの物理ピン数を超えるデータ信号の送受信が必要となった場合、ひとつの論理パスに時分割多重化論理回路が多段挿入されることによる動作周波数低下を抑止することができる。また、時分割多重化論理回路の多段挿入を抑止する場合、一般的には検証ターゲット論理回路を論理分割後に時分割多重化論理回路を挿入する場合、予め論理回路のクロックドメインと組み合わせ回路による論理パスを解析し、時分割多重化論理回路の挿入可否を判断する必要があり、近年の大規模論理回路の解析には、膨大なマシン性能が必要となるが、本発明によれば、これらマシン性能に依存するクロックドメインや論理パスの解析が不要であるため、効率的な時分割多重化論理回路挿入を行うことができる。
【図面の簡単な説明】
【0021】
【図1】本発明の対象となるFPGA間のデータ信号に時分割多重化論理回路を挿入する前の論理回路の一例を示す図。
【図2】本発明の一実施形態による論理エミュレーション方法を用いた論理信号値を保持可能なフリップフロップを含まない一つの論理パスについて、時分割多重化論理回路が多段挿入されたことを検出する機能を説明するための図。
【図3】本発明の対象となるFPGAを用いたエミュレーションを行うためのハードウェア構成の説明図。
【図4】本実施形態による論理機能ブロックの接続と論理分割イメージを説明するための図。
【図5】本実施形態によるハードウェア記述言語にて記述される論理記述と該論理記述のFPGA単位の分割からFPGAデータ生成までの流れを説明するための図。
【図6】本実施形態による時分割多重化論理回路を挿入する場合のハードウェア記述を説明するための図。
【図7】本実施形態の論理エミュレーション方法による一つの論理パスに多重化回路が多段挿入されることを抑止可能とする第1の動作説明図。
【図8】本実施形態の論理エミュレーション方法による一つの論理パスに多重化回路が多段挿入されることを抑止可能とする第2の動作説明図。
【発明を実施するための最良の形態】
【0022】
以下、本発明の一実施形態による論理エミュレーション方法を図面を参照して説明する。本実施形態による論理エミュレーション方法は、FPGAを搭載するボードを用いた論理エミュレーション環境にて機能検証を行う際、エミュレーションボード上に搭載される複数個のFPGA間データ転送用にFPGAの物理ピン以上の信号を送受信する場合、時分割多重化方法によってデータ信号を束ねるのが一般的であるが、この時分割多重化回路をFPGA間の信号に挿入するときに、ソフトウェアによってFPGAの入出力境界に時分割多重化論理回路を挿入する手段を用いるが、機能検証のターゲットとなる論理回路中にFF(フリップフロップ)が無く組み合わせ回路のみでFPGAを通過する論理ネットが存在する場合、FFからFFまでの論理パスに、複数段の時分割多重化論理回路が挿入されることを防止するものであって、以下、詳細を説明する。
【0023】
[時分割多重化論理回路を挿入前の論理接続の説明]
まず、時分割多重化論理回路を挿入前の論理接続を図1を参照して説明する。図1に示す回路は、複数のFPGA101とFPGA111とFPGA141とを物理ピンにより接続した論理図であり、FPGA101には、検証ターゲット論理機能ブロックの一部であるFFを含む組み合わせ論理回路102が割り付けられ、この組み合わせ回路102の中には、論理信号のデータ値を保持可能なFF103とFF104が含まれ、二つのFFの出力信号は、FF103の出力であるnetA105、FF104の出力であるnetB106がそれぞれ存在し、ターゲット論理回路のクロック信号であるSys_clock110は、組み合わせ回路102に接続されている。
【0024】
前記FPGA111には、検証ターゲット論理機能ブロックの一部であるFFを含む組み合わせ論理回路124が含まれ、この組み合わせ論理回路124には、netA105を入力とするFF125とnetB106を入力とするAND素子127とNetC128を出力に持つFF126が含まれ、前記AND素子127の出力はNetBB129として他のFPGAへ渡されるように接続されている。
【0025】
前記FPGA141には、検証ターゲット論理機能ブロックの一部であるFFを含む組み合わせ論理回路146が含まれ、この組み合わせ論理回路146には、NetC128を入力とするFF147、NetBB129を入力とするFF148が設けられている。
【0026】
[時分割多重化論理回路を挿入後の論理接続の説明]
次に、時分割多重化論理回路を挿入後の論理接続状態を説明する。この論理接続における時分割多重化は、複数の異なる信号を時間的に配列して一本の信号でデータ転送を行う機構であり、その一本の信号を使って行われるデータの時間的な配列は時分割多重のための専用クロックを送出することによって行われるものである。この論理回路は、ターゲット論理を動作させるシステムクロックの1サイクル期間に、時分割多重化を含んだ回路動作を完了させる必要がある。このため時分割多重のための専用クロックは、システムクロックより高速に動作させる必要があり、例えば、10MHzのシステムクロックで動作する論理回路について、2多重で信号をデータ送信する場合、2倍の性能を持つ20MHzの時分割多重クロックを送出することによりシステムクロックの1サイクル期間内に多重化処理を完了するように論理接続を行う必要がある。尚、実際にはエミュレーションボードやFPGA上の配線ディレイや素子ディレイなどの要因を動作上保障する必要があり、多重度と多重化性能は完全に比例しないが、一般的にはシステムクロックよりも高速・高性能な時分割多重クロックが要求される(時分割多重クロックの動作周波数と多重度の関係によって、システムクロックの1サイクルの長さが決定される)ため、高速にシステムを動作させるためには、多重度を可能な限り低下させること、多重化回路を挿入しなくてもよいような信号接続とすることなどが求められる。
【0027】
本実施形態による時分割多重化論理回路を挿入後の論理接続状態を図2を参照して説明する。この論理接続状態は、図1の論理接続状態を前提とし、本実施形態によるエミュレーションボード上に実装される時分割多重化論理回路の多段挿入を検出するチェック機能回路を加えた例である。この論理接続状態(回路)は、前述したように、多重化回路をFPGA間の信号に適用しないことが、最も高速にシステムを動作させるわけであるが、物理的な配線数が論理的な配線数より低い場合には多重化処理が必須であるため、本実施形態では、エミュレーションボード上の複数のFPGA間をまたぐそれぞれ2本の信号について、ソフトウェアによって無条件にFPGA間の信号に時分割多重化回路を挿入し、信号本数を1本に低下させる例を示している。本論理は、回路内に設けられたチェックフラグを監視することで時分割多重化論理回路の多段挿入を検出できる機構を含んだ回路となっている。
【0028】
図2は、信号多重化に際し、論理信号値を保持可能なFFを含まない一つの論理パスについて、時分割多重化論理回路が多段挿入されたことの検出機能を説明するための図であって、図1に対応した複数のFPGA201とFPGA211とFPGA241とを物理ピンにより接続しており、前記FPGA201には、検証ターゲット論理機能ブロックの一部であるFFを含む組み合わせ論理回路202が割り付けられ、この組み合わせ回路202の中には、論理信号のデータ値を保持し、信号netA205を出力するFF203と、同様に論理信号のデータ値を保持し、信号netB206を出力するFF204と、該信号netA205及びnetB206を入力とする時分割多重化論理回路の送信側機能ブロック207と、前記送信側機能ブロック207には駆動タイミングを制御する時分割多重用クロックTdm_clock209が印加され、前記組み合わせ回路202にはターゲット論理回路のクロック信号であるSys_clock210が印加される様に構成されている。
【0029】
前記FPGA211には、前記FPGA201から送出される多重化信号208を入力とする時分割多重化論理回路の受信側機能ブロック212と、時分割多重化論理回路の多段挿入を検出する検出回路213と、検証ターゲット論理機能ブロックの一部であるFFを含む組み合わせ論理回路224と、時分割多重化論理回路の送信側機能ブロック230とを備える。
【0030】
前記組み合わせ回路224には、論理信号のデータ値を保持するFF225及びFF226と、AND素子227とを含み、FF226の出力信号である信号NetC228とAND素子227の出力である信号NetBB229が、時分割多重化論理回路の送信側機能ブロック230の入力となり、2本の論理信号を多重化処理し1本の多重化信号231として信号送出する様に構成している。
【0031】
前記検出回路213は、時分割多重化論理回路の多段挿入を検出する機能を有し、受信側機能ブロック212からの出力である信号NetA´214を入力とするFF215と、前記信号NetA´214を一方に入力し、前記FF215の出力信号206を他方に入力するEOR217と、受信側機能ブロック212からの出力である信号NetA´215を入力とするFF219と、前記信号NetA´214を一方に入力し、前記FF219の出力信号220を他方に入力するEOR221とから構成される。このFPGA211に含まれる時分割多重化論理回路も専用の時分割多重用クロックTdm_clock209によって駆動され、ターゲット論理回路のクロック信号である信号Sys_clock210が、組み合わせ回路224に接続されている。
【0032】
前記信号NetA´214は、一旦時分割多重化された信号208を、時分割多重化論理回路の受信側機能ブロック212によって展開した信号であり、NetA205と論理的に同等の信号である。また、前記EOR217の出力信号であるCheck_flag222は信号の変化を検出するためのものであって、NetA´214の値とFF215の出力信号216による1クロックサイクル前の値が異なった場合にアクティブとなる。
【0033】
この回路構成により、FFtoFFのひとつの論理パスに時分割多重化論理回路が多段挿入されない場合、ターゲット論理回路を動作させるクロック信号Sys_clock210の1サイクル期間内は、NetA´214の値とFF215の出力信号216の値は常に同一であり、信号Check_flag222はアクティブとならないことを利用し、信号Check_flag222をレジスタやメモリのようなデータ保持可能な回路に出力し、エミュレーション実行時にアクティブとなったことをエミュレーション実行後に前記信号Check_flag222を監視することにより、どの論理パスに時分割多重化論理回路の多段挿入されているかを検出できる。
【0034】
前記信号NetB´218は、一旦時分割多重化された信号208を、時分割多重化論理回路の受信側機能ブロック212によって展開した信号であり、NetB206と論理的に同等の信号であり、入力値を保持するFF219とEOR221に入力され、EOR221の一方の入力にFF219の出力信号220が接続することによって、EOR221の出力である信号Check_flag223がNetB´218とFF219の出力信号220が異なった場合にアクティブとなることを利用し、時分割多重化論理回路の多段挿入を検出できる。
【0035】
前記FPGA241は、FPGA211から送出される多重化信号231を入力とする時分割多重化論理回路の受信側機能ブロック242と、前記検出回路213と同等の検出回路243と、該検出回路243から出力される信号NetC´244及びNetBB´245を入力とする組み合わせ回路246とを備える。
【0036】
前記検出回路243には、回路213で示すFF215やFF219で示す信号値を保持するFFのほかに、信号Check_flagが繋がるEOR217やEOR221と同等の回路が含まれる。前記時分割多重化論理回路の受信側機能ブロック242から出力されるNetC´244は、組み合わせ回路246に含まれるFF247の入力として接続されるが、論理的には信号NetC228と同等の信号である。また、時分割多重化論理回路の受信側機能ブロック242から出力される信号NetBB´245は、組み合わせ回路246に含まれるFF248の入力として接続されるが、論理的には信号NetBB229と同等の信号である。
【0037】
この様に構成された論理接続状態においては、FPGA211及び241の検出回路213及び243からの出力である信号Check_flagがアクティブか否かを監視することによって、多重化論理回路の多段挿入された箇所を検出することができる。
【0038】
[FPGAを用いたエミュレーションを行うためのハード構成]
図3は、ハードウェアとソフトウェアを連動させた本実施形態による論理エミュレーション方法を実現するためのハードウェアの構成例を示す図である。このハードウェア構成は、多数のFPGA303を搭載したエミュレーションボード302と、本実施形態の特徴となる論理エミュレーション方法を実現するプログラムを搭載したパーソナルコンピュータ(PC)301とから成り、該PC301にエミュレーションボード302を接続し、前記論理エミュレーションプログラムを駆動することによって、論理エミュレーションを行うことができる。
【0039】
この様に構成されたハードウェアにおいて前記論理エミュレーションプログラムによるハードウェア連動エミュレーション実行時、PC301上でシミュレータ(テストベンチ)やボード制御ソフトウェアが実行され、これらのPC301上の演算値やPC301からエミュレーションボード302を制御するためのトランザクションは、PC301とエミュレーションボード302を接続するケーブル304を経由してデータの送受信が行われ、エミュレーションボード302にデータが伝達される。
【0040】
エミュレーションボード302上に搭載されるFPGA303には、PC301からのデータが伝達され、FPGA303には検証ターゲット論理回路がロードされており、PC301側から入力されるデータ値やトランザクションに応じた演算が実行される。このFPGA303にロードされた論理回路の演算によって得られる結果は、エミュレーションボード302とPC301を繋ぐケーブル304を介して、1クロックサイクルまたは1トランザクションイベント単位に、PC301上で実行されるシミュレータなどのソフトウェアにデータ送信され、エミュレーション実行される。このエミュレーション実行の際、図1及び図2で示す例のような論理回路がFPGA303上にロードされる。尚、図3に示したFPGAの個数は例示であり、本例に限られるものではない。
【0041】
[FPGA向けのデータ生成動作]
本実施形態による論理エミュレーション方法は、前述の如く、論理エミュレーションプログラムによって実現されるものであり、次に図4から図8を参照してFPGA向けのデータ生成および論理エミュレーション動作を説明する。この論理機能回路を機能ブロック単位に分割しFPGA単位のデータとして生成する場合、ハードウェアは不要であり、PC上で稼動する専用ソフトウェアによって処理し、FPGA用データを生成する事になるが、FPGA用データ生成の処理には、論理エミュレーションの実行は不要である。尚、図の説明の中で信号のビット幅を明示している部分があるが、一例としての記述であり、図に明示されたビット幅に限定されることではない。
【0042】
まず、図4は、論理機能回路に含まれる機能ブロックの接続とFPGA単位に論理分割を行う境界を示した図である。図4の論理機能接続と機能ブロックの一実施例は、図1と図2で示す一実施例との論理回路構成としての関連は特に無く、あくまで論理分割の流れを説明するための回路例である。
【0043】
図4に示した論理回路例は、DESIGN_TOP階層401に、入力ポート402、出力ポート403および出力ポート404を備えている。また、論理回路の内部に、BLOCK_A405、BLOCK_B406、BLOCK_C407、BLOCK_D408の4つの内部機能ブロックを有する。
【0044】
この論理回路例では、BLOCK_B406、BLOCK_C407及びBLOCK_D408の3つの機能ブロックは同一機能である事を前提条件としており、それぞれ入力ポートSigYと出力ポートSigZを備える。尚BLOCK_A405はBLOCK_B406とは異なる機能ブロックであり、入力ポートSigWと出力ポートSigXを備える機能ブロックである。
【0045】
図4に示した論理回路例では、前記各機能ブロック同士の接続は、BLOCK_A405の出力ポートSigXとBLOCK_B406の入力ポートSigYおよびBLOCK_C407の入力ポートSigYをdataO1信号411によって接続し、BLOCK_C407の出力ポートSigZとBLOCK_D408の入力ポートSigYをdataO2信号413にて接続している。前記入力ポート402とBLOCK_A405の入力ポートSigWは、dataI信号410によって接続され、論理機能回路であるDESIGN_TOP階層401へのデータ入力が可能である。また、BLOCK_B406の出力ポートSigZと出力ポート403は、data_out1信号412によって接続され、論理機能回路であるDESIGN_TOP階層401からのデータ出力となる。同様に、BLOCK_D408の出力ポートSigZと出力ポート404はdata_out2信号414によって接続され、DESIGN_TOP階層401からのデータ出力となる。
【0046】
それぞれのポートや機能ブロックを繋ぐ信号群は、実際にはビット幅を持ち、後に図5を用いた論理機能記述説明では32ビット幅を持つが、図4で示す信号及びポートは全て32ビット幅を持つため、ビット幅を省略し、図に明示しない。尚、通常、論理機能回路はクロックやFFの初期化のためのリセット信号を持つのが一般的だが、本回路例は、機能ブロック接続を分割する概要を説明するため、これらクロック及びリセット信号を省略している。
【0047】
さて、一般にDESIGN_TOP階層401に含まれる機能全てが一つのFPGAに収まれば論理分割の必要性は無いが、本例では、分割境界409で示すように、BLOCK_A405とBLOCK_B406を1つのFPGAに割り当て、BLOCK_C407とBLOCK_D408はそれぞれ単独でFPGAに割り当てる3分割する例として説明する。
【0048】
[論理分割の基本的説明]
図5は、図4の論理機能ブロック接続図をハードウェア記述言語を用いて記述した設計ファイルをソフトウェアによって論理分割し、FPGA単位の機能記述に整形し、FPGA用データを生成するまでの流れを示した例である。
【0049】
図5中の論理機能記述例501は、図4論理機能ブロック接続図相当の記述例であり、DESIGN_TOP階層の入出力ポートや信号定義512が記述される。これらは32ビット幅を持つ信号として本例では説明する。階層の単位は最上段の「module」行から最下段の「endmodule」行までが該当するが、機能ブロックの定義としてBLOCK_AからBLOCKDまでの4つのブロック定義511が記述される。このブロック定義に含まれる括弧「(」から括弧「)」間に含まれる記述は信号名であり、この各ブロック定義に含まれる信号名の記述が、機能ブロック間の接続を意味する。また、BLOCK_AからBLOCK_Dまでの4つの機能ブロックは、2種類の論理機能ブロックから成ることを前提としているが、機能ブロック宣言513で「function1」および「function2」のモジュールとして定義される。尚、本説明では、機能ブロック内部の論理動作記述は全て省略している。
【0050】
本例で示した論理機能記述例が論理機能記述のルールというわけではないが、一般的には使用するハードウェア論理記述言語の種類に応じてコーディングルールが決定されており、そのルールにもとづいて設計されたファイルがFPGA向けデータ作成のインプットファイルとなる。
【0051】
前記図5左側に示した論理機能記述例501は、専用のソフトウェアによって論理分割され、図5右側の論理機能記述例502/507/508に分割して書き換えられる。尚、論理分割とは、設計者が指定した設定を反映し機能記述内容を整形する処理であり、本例では、図4で示したように論理機能記述例501を3分割にし、必要な機能記述内容だけを残し3ファイルに整形することを意味する。また、この論理分割509が実行される際、論理機能記述例501のコーディングに不備がないか、シンタックスチェックや機能ブロック接続状態をチェックするプログラムが実行される場合がある。一方で、搭載FPGA個数やエミュレーションボードの物理配線接続をモデル化したライブラリ相当のデータベース等に格納されたボード情報506を読み込むことにより、FPGA間の物理配線本数などをソフトウェアが認識しながら最適な論理分割を行うこともできる。
【0052】
このボード情報506に定義されたエミュレーションボード上の物理配線本数の上限値によって、時分割多重化論理回路を挿入するかどうかソフトウェアが判断可能となる。尚、専用ソフトウェアによって論理分割する際、論理機能記述内容を整形するが、そのアウトプットファイルはインプットファイルのハードウェア論理記述言語に準拠している必要性はなく、FPGA用データ変換ソフトウェアに入力可能な複数のフォーマット形式を選択可能であることが一般的に求められる。
【0053】
専用のソフトウェアによって論理分割509が実行されると、図5右側の論理機能記述502/論理機能記述507/論理機能記述508が生成される。この3つの論理機能記述は、図4の分割境界で示した3分割の設定を反映した内容であり、図示した論理機能記述502には、BLOCK_AおよびBLOCK_Bの2つのブロック定義514と、その2種類の論理機能ブロック宣言515が含まれる。また、図4の分割境界上に存在したdataO1信号411については、他のFPGAとのインターフェース信号として再定義する必要があるため、論理機能記述502では出力ポートの信号定義516が新たに追加されている。また、論理機能記述507にはBLOCK_Cが含まれ、論理機能記述508にはBLOCK_Dが含まれる。
【0054】
本例では、論理分割509が完了し、FPGA単位の論理機能記述ファイルが生成された後、ソフトウェアによるデータ変換510が行われる。このデータ変換510は、論理機能記述のフォーマットからFPGAにロード可能なフォーマットに変換する処理であり、ファイル単位に実行される。BLOCK_AおよびBLOCL_Bを含む論理機能記述502の変換結果がFPGA用データ503となり、同様にBLOCK_Cを含む論理機能記述507の変換結果がFPGA用データ504となり、BLOCK_Dを含む論理機能記述508の変換結果がFPGA用データ505となる。
【0055】
[多重化回路が挿入される際の論理分割の説明]
以上のように図5で説明した内容が論理分割の基本的な流れであるが、次に図6を用いて多重化回路が挿入される場合の記述例を説明する。
多重化回路が挿入される場合の記述例601は、図5にて説明した論理分割後に得られるBLOCK_AおよびBLOCL_Bを含む論理機能記述502相当の記述に、多重化論理回路に関連する機能を追加したものである。この機能は、専用の論理分割ソフトウェアが、搭載FPGA個数やエミュレーションボードの物理配線接続をモデル化したライブラリ相当のボード情報から、FPGA間に存在する物理的な配線本数を論理的な信号本数が超過した場合、多重化論理回路を自動的に挿入する機能である。
【0056】
図6に示す多重化論理回路が挿入された論理記述例601について、多重化論理回路に関連する機能記述は、ブロック定義602及び論理機能ブロック宣言603である。このブロック宣言603は、32ビット幅の入力信号を1ビットの出力信号として送出する概念を示し、ブロック定義602の行に含まれる信号接続定義が、32ビット幅を持つdataO1信号を入力とし、1ビットのdataO1_o信号が出力として定義され、出力ポート宣言604も同様に1ビットの信号となることを表している。
【0057】
[論理エミュレーション動作第1例の説明]
図7は、本実施形態による論理エミュレーション方法を実現するためのシステム向け設計方法の全体フローであり、多重化処理を起動するトリガ信号発行回数を1から順次増加させる場合の例である。
【0058】
本論理エミュレーション方法は、FPGA用のデータを生成するためのソフトウェア処理およびソフトウェアとハードウェアを連動するエミュレーション実行処理であって、大別して、FPGA用データを生成する第1工程と、ハードウェア連動エミュレーション実行する第2工程と、多段チェックを行い、多重化回路多段挿入を禁止する制約条件を生成する第3工程と、ハードウェア連動エミュレーションを実行する第4工程と、該多段チェック工程及びハードウェア連動エミュレーション実行工程終了後にFPGA用データを生成する第5工程と、エミュレーションを実行するハードウェア連動エミュレーションを実行する第6工程の各工程により構成される。
【0059】
この論理エミュレーション方法のFPGA用データを生成する第1工程は、図5に示した如き論理機能記述を分割するステップ701と、該ステップ701により分割した後の論理ピン数が物理ピン数を超えるか否かを判定するステップ702と、該ステップ702において論理ピン数が物理ピン数を超えると判定したとき、ピン多重度(物理ピン数の範囲に収まる様に信号線を束ねる処理)及び多重化信号を決定するステップ703と、該ステップ703により決定したピン多重度(1つのFPGA物理ピンに割り当てる信号本数の値)及び多重化信号の決定に基づいて多重化回路を論理的に挿入するステップ704とから成る。
【0060】
前記ステップ701は、検証ターゲットである論理機能回路をエミュレーションボードに搭載されるFPGAに機能ブロック単位で割付を行う論理分割処理であり、ステップ702は、ステップ701による処理結果である、FPGA単位に割付を行った機能ブロック間の論理信号本数を基に、FPGAで使用可能な物理ピン数に対し、機能ブロック間の論理信号本数が使用可能な物理ピン数以下であるか判定を行う処理である。この一つの多重化回路に接続する信号数は、前述したピン多重度により決定されるため、その多重化回路の信号接続本数は任意に変更可能であることを前提とする。前記ステップ703によって決定された内容は、ステップ702の条件を満たす結果でなければならないため、ステップ703で決定されたピン多重度と信号群を基に、ステップ704で時分割多重化論理回路を挿入する。ステップ704により挿入される時分割多重化論理回路は、多重化多段挿入のチェック機構を有する回路である。
【0061】
更に前記ステップ704では、ステップ703によって決定された信号群の通り、転送先のFPGA単位や論理のクロックドメイン単位に、各多重化回路に論理信号を接続した後、ステップ705によって、エミュレーション実行時の多重化処理起動トリガ信号発行回数設定が行われる。
【0062】
このFPGAデータを生成する第1工程では、一般的に、エミュレーションボード上に搭載されるFPGA個数やエミュレーションボードのアーキテクチャをモデル化したライブラリと、ハードウェア記述言語を用いて記述された検証ターゲット論理機能回路の設計ファイルをもとに、複数のFPGA資源を有効に使用するための専用ソフトウェアを用いてFPGA用データを生成する。
【0063】
前記ハードウェア連動エミュレーションを実行する第2工程は、前記ステップ702又はステップ704に続き、ターゲット論理の分割プランや設計ルールに応じて多重化処理起動トリガ信号発行回数の上限値を設定するMAX設定を行うステップ705と、変数Nを初期化(値「0」設定)するステップ706と、該変数Nに値「1」を加算するステップ707と、前記変数Nに多重度を積算することにより多重化クロックを設定するステップ708と、該ステップ78により多重化された論理回路のエミュレーションを実行するステップ709とから成る。この第2工程は、PC301により、検証ターゲット論理機能回路を動作させるためのシミュレータ(テストベンチ)やボード制御ソフトウェアを実行し、FPGAにロードされた検証ターゲット論理機能回路を動作させるものであり、FPGA向けデータ作成のためのソフトウェアを実行し、PC上でのソフトウェアのみの実行でありハードウェア不要である。前記ステップ708による多重化クロックは、多重化処理起動トリガ信号発行回数(変数N)と多重化のためのピン多重度を基に算出することができる。
【0064】
前記多重化回路多段挿入を禁止する制約条件を生成する第3工程は、前記ステップ704にて挿入された回路のチェックフラグの値を確認することにより時分割多重化論理回路の多段挿入を検出するチェックを行うステップ710と、該ステップ710により時分割多重化論理回路の多段挿入が検出された場合、この多段挿入を制約する制約条件を生成するステップ711とから成る。
【0065】
この第3工程は、初回(変数N=1)の場合、初期動作時の論理信号値は不明であるため、多重化多段チェックをスキップし、ステップ710によりチェックフラグがアクティブとなっていると判定した場合、ステップ711により該当信号を多重化候補から除外する禁止制約を生成し、これらステップ707からステップ711までは、多重化処理起動トリガ信号発行回数(変数N)と上限値が一致するまで、ステップ712の判定によって繰り返される。
【0066】
前記ハードウェア連動エミュレーションを実行する第4工程は、多重化処理起動トリガ信号発行回数(変数N)と予め定めた上限値(MAX)と一致か否かを判定し、一致しないと判定したときに前記ステップ707に戻るステップ712を含み、多重化処理起動トリガ信号発行回数が上限値(MAX)に達するまで、多重化クロック設定及び多段挿入制約条件の生成を繰り返す様に動作する。
【0067】
このステップ712によるMAX設定とは、多重化処理起動トリガ信号発行回数の上限値を設定することであって、ターゲット論理の分割プランや設計ルールに応じて設定し、例えば、アドレス信号をデコードしてその出力信号を返す論理機能ブロックが存在すると仮定し、アドレスを送信するブロックとデコードしてその出力信号を返す論理機能ブロックが異なるFPGAに割り付けられた場合、又はデコードしたその出力信号を受け取る機能ブロックが別のFPGAに割り付けられる場合を想定した場合、多重化処理起動トリガ信号発行回数の上限値は値「3」と設定できる。
【0068】
前記FPGA用データの生成からエミュレーションを実行する第5工程及び第6工程は、多重化多段禁止の制約があるか否かを判定し、制約がないと判定したときには処理を終了するステップ713と、ステップ713において制約があると判定したとき、多重化禁止信号を除外するステップ714と、該多重化禁止信号を除外した論理回路に多重化回路を挿入するステップ715と、多重化クロックを設定するステップ716と、エミュレーションを実行するステップ717とから成る。
【0069】
この第5工程によるエミュレーション実行は、検証ターゲット論理機能回路を動作させるためのシミュレータ(テストベンチ)やボード制御ソフトウェアを実行し、FPGAにロードされた検証ターゲット論理機能回路を動作させるもので、前記第2工程がPC上でのソフトウェアのみの実行であるのに対し、FPGAにロードする論理機能回路を動作させるためのソフトウェア実行(ハードウェアとソフトウェアを連動させるエミュレーション実行)である。
【0070】
この第5工程は、FFtoFFのひとつのパスに対し、多重化回路が多段挿入され、チェックフラグがアクティブとなった結果、禁止制約が生成されたことを判定した場合、ステップ714にて、ステップ711で生成した生成した禁止制約を基にステップ703で決定した多重化信号リストから多重化を禁止する信号を除外する処理を行い、ステップ715にて、新たに作り出された多重化信号リストをもとに、多重化回路挿入を行う。
【0071】
尚、前述のステップ704とステップ715の処理内容は同等であるが、ステップ715にて出力される結果は、多重化回路の多段挿入が解消された結果である。また前記ステップ715は、多重化回路挿入を行う際、既に多重化論理回路の多段挿入は解消されているため、多段チェック機構を含まない回路を適用でき、これにより、多段チェック機構を含まない回路を適用した場合、FPGAのゲート、配線リソース使用量を抑えることや、ターゲット論理に対するFPGA配置配線時のディレイ的負荷が低減されるなどのメリットが生まれる。更にステップ716によって多重化クロックの設定を行う際は、多重化回路の多段挿入はないため、ピン多重度と同じクロック発行回数でエミュレーション動作が可能となる。
【0072】
この様に本実施形態による論理エミュレーション方法は、論理エミュレーションプログラムが、図7に示した第1工程から第6工程を実行することによって、時分割多重化論理回路の多段挿入を抑止した効率よいエミュレーションを行うことができる。
【0073】
[論理エミュレーション動作第2例の説明]
前記図7に説明した論理エミュレーション動作は、多重化処理を起動するトリガ信号発行回数を順次増加させる例であるが、本発明においてはトリガ信号発行回数を順次減少させることによっても実施することができ、この動作例を図8を参照して説明する。
【0074】
本論理エミュレーション方法は、前述の図にて説明した手順と同様に、大別して、FPGA用データを生成する第1工程と、ハードウェア連動エミュレーション実行する第2工程と、多段チェックを行い、多重化回路多段挿入を禁止する制約条件を生成する第3工程と、ハードウェア連動エミュレーションを実行する第4工程と、該多段チェック工程及びハードウェア連動エミュレーション実行工程終了後にFPGA用データを生成する第5工程と、エミュレーションを実行するハードウェア連動エミュレーションを実行する第6工程の各工程により構成され、第1工程/第3工程/第5工程/第6工程は図7に示した動作と同様のため、詳細説明は省略する。
【0075】
この論理エミュレーション方法のFPGA用データを生成する第1工程は、論理機能記述を分割するステップ801と、該分割した後の論理ピン数が物理ピン数を超えるか否かを判定するステップ802と、該判定において論理ピン数が物理ピン数を超えると判定したとき、ピン多重度及び多情信号を決定するステップ803と、該決定したピン多重度及び多重化信号の決定に基づいて多重化回路を論理的に挿入するステップ804とから成り、複数のFPGA資源を有効に使用するための専用ソフトウェアを用いてFPGA用データを生成する。
【0076】
前記ハードウェア連動エミュレーション実行する第2工程は、前記ステップ802又はステップ804に続き、多重化処理起動トリガ信号発行回数の上限値Nを設定するステップ805と、該上限値Nから値「1」を減算するステップ807と、前記上限値Nに多重度を積算することにより多重化クロックを設定するステップ808と、該ステップ808により多重化された論理回路のエミュレーションを実行するステップ809とから成り、PC301により、検証ターゲット論理機能回路を動作させるためのシミュレータ(テストベンチ)やボード制御ソフトウェアを実行し、FPGAにロードされた検証ターゲット論理機能回路を動作させるものであり、FPGA向けデータ作成のためのソフトウェアを実行し、PC上でのソフトウェアのみの実行でありハードウェアは不要である。前記ステップ808による多重化クロックは、多重化処理起動トリガ信号発行回数(上限値N)と多重化のためのピン多重度を基に算出することができる。
【0077】
前記多重化回路多段挿入を禁止制約条件を生成する第3工程は、前記ステップ804にて挿入された回路のチェックフラグの値を確認することにより時分割多重化論理回路の多段挿入を検出するチェックを行うステップ810と、該ステップ810により時分割多重化論理回路の多段挿入が検出された場合、この多段挿入を制約する制約条件を生成するステップ811とから成る。本例においては、初回(変数N=上限値)の場合、初期動作時の論理信号値は不明であるため、多重化多段チェックはスキップし、ステップ810にて、チェックフラグがアクティブとなっていた場合、ステップ811によって該当信号を多重化候補から除外する禁止制約を生成する。これらステップ807からステップ811までは、多重化処理起動トリガ信号発行回数(変数N)が最低値「1」と一致するまで、ステップ812の判定によって繰り返されるものである。
【0078】
前記ハードウェア連動エミュレーションを実行する第4工程は、多重化処理起動トリガ信号発行回数(上限値N)が値「1」(:最低値)であるか否かを判定し、一致しないと判定したときに前記ステップ807に戻るステップ812を含み、多重化処理起動トリガ信号発行回数が上限値「N」に達するまで、多重化クロック設定及び多段挿入制約条件の生成を繰り返す様に動作する。
【0079】
前記FPGA用データの生成乃至エミュレーションを実行する第5工程及び第6工程は、多重化多段禁止の制約があるか否かを判定し、制約がないと判定したときには処理を終了するステップ813と、ステップ813において制約があると判定したとき、多重化禁止信号を除外するステップ814と、該多重化禁止信号を除外した論理回路に多重化回路を挿入するステップ815と、多重化クロックを設定するステップ816と、エミュレーションを実行するステップ817とから成る。尚、前記ステップ804とステップ815の処理内容は同一であるが、ステップ815にて出力される結果は、多重化回路の多段挿入が解消された結果である。
【0080】
この様に本実施形態による論理エミュレーション方法は、論理エミュレーションプログラムが、トリガ信号発行回数を順次減少させる図8に示した第1工程から第6工程を実行することによって、時分割多重化論理回路の多段挿入を抑止した効率よいエミュレーションを行うことができる。
【0081】
以上述べた如く本発明によれば、機能検証ターゲットである大規模論理回路の論理分割に際し、FPGAの物理ピン数を超える論理信号の送受信を行うための時分割多重化論理回路が多段挿入されたことを検出できるチェック機能を有した時分割多重化論理回路を設け、この時分割多重化論理回路の駆動用クロックを、検証ターゲット論理回路を動作させるための1システムクロック期間中に、予め決定した多重化起動トリガ最大数分×ピン多重度分の発生させることにより、(処理時間が冗長となっても)一旦は正常動作を保障するエミュレーションを実行(第1工程〜第2工程)し、この後に、時分割多重化される当論理信号をFFによってデータ保持し、その論理信号を入力とするEOR(排他的論理和)の出力からなるデータ信号変化を検出するチェック機能により時分割多重化論理回路が多段挿入されている論理パスの箇所を特定(第3工程)し、この時分割多重化論理回路が多段挿入された位置情報を時分割多重化論理回路挿入禁止のための制約とし、その制約をもとに再度時分割多重化論理回路挿入を行う(第4工程〜第5工程)ことによって、時分割多重化論理回路の多段挿入が抑止された、動作周波数を低下させることのない効率的な時分割多重化論理回路挿入を行う論理エミュレーションが可能となる。
【0082】
このため本実施形態によれば、複数のFPGAを搭載したエミュレーションボードを用いた論理エミュレーションを実施する場合において、FPGAの物理ピン数を超えるデータ信号の送受信が必要となった場合、ひとつの論理パスに時分割多重化論理回路が多段挿入されることによる動作周波数低下を抑止でき、このため、クロックドメインや論理パスの解析が不要となり、効率的な時分割多重化論理回路挿入を行うことができる。
【符号の説明】
【0083】
101,111,141,201,211,241:FPGA、102,124,147,202,224,247:組み合わせ論理回路、207:送信側機能ブロック、208:多重化信号、212:受信側機能ブロック、213:検出回路、230:送信側機能ブロック、231:多重化信号、242:受信側機能ブロック、243:検出回路、302:エミュレーションボード、304:ケーブル。

【特許請求の範囲】
【請求項1】
所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが該ハードウェア論理エミュレーションプログラムによりハードウェア論理エミュレーションを行う論理エミュレーション方法であって、
前記論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第1機能と、
前記第1機能により生成した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第2機能と、
前記時分割多重化論理回路が前記複数の内部論理機能ブロック間に多段挿入されている内部論理機能ブロック接続状態を検出し、該検出した多段挿入を禁止するように物理的論理素子用データを修正する第3機能と、
該修正した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定し、該設定した最大駆動クロック数により論理エミュレーションを実行する第4機能とを、
実行させる論理エミュレーション方法。
【請求項2】
前記第4機能のコンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を増加させながら前記コンピュータの1システムクロック期間中に駆動クロック数を設定する請求項1記載の論理エミュレーション方法。
【請求項3】
前記第4機能のコンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を減少させながら前記コンピュータの1システムクロック期間中に駆動クロック数を設定する請求項1記載の論理エミュレーション方法。
【請求項4】
所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが該ハードウェア論理エミュレーションプログラムによりハードウェア論理エミュレーションを行う論理エミュレーション方法であって、
前記論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第1機能と、
前記第1機能により生成した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該駆動クロックにより論理エミュレーションを行う第2機能とを、
実行させる論理エミュレーション方法。
【請求項5】
所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが論理エミュレーションを行うための論理エミュレーションプログラムであって、
前記コンピュータが論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第1機能と、
前記第1機能により生成した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第2機能と、
前記時分割多重化論理回路が前記複数の内部論理機能ブロック間に多段挿入されている内部論理機能ブロック接続状態を検出し、該検出した多段挿入を禁止するように物理的論理素子用データを修正する第3機能と、
該修正した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定し、該設定した最大駆動クロック数により論理エミュレーションを実行する第4機能とを、
実現させるための論理エミュレーションプログラム。
【請求項6】
前記第4機能のコンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を増加させながら前記コンピュータの1システムクロック期間中に駆動クロック数を設定する請求項4記載の論理エミュレーションプログラム。
【請求項7】
前記第4機能のコンピュータの1システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を減少させながら前記コンピュータの1システムクロック期間中に駆動クロック数を設定する請求項4記載の論理エミュレーションプログラム。
【請求項8】
所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが論理エミュレーションを行うための論理エミュレーションプログラムであって、
前記コンピュータが論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第1機能と、
前記第1機能により生成した物理的論理素子用データを用い、コンピュータの1システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該駆動クロックにより論理エミュレーションを行う第2機能とを、
実行させる論理エミュレーションプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate