(57)【要約】【課題】効率的な時分割多重化論理回路挿入を行う論理エミュレーションの提供。【解決手段】ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した機能ブロックを接続する論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように時分割多重化回路を挿入したＦＰＧＡ用データを生成する第１機能と、該生成したＦＰＧＡ用データを用い、コンピュータの１システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第２機能と、時分割多重化回路が多段挿入されている接続状態を検出し、該多段挿入を禁止するように物理的論理素子用データを修正する第３機能と、この修正物理的論理素子用データを用いて設定した最大駆動クロック数により論理エミュレーションを実行する第４機能とを実行させるもの。【選択図】図２
2011070343.tif 000002
【特許請求の範囲】
【請求項１】
所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが該ハードウェア論理エミュレーションプログラムによりハードウェア論理エミュレーションを行う論理エミュレーション方法であって、
前記論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第１機能と、
前記第１機能により生成した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第２機能と、
前記時分割多重化論理回路が前記複数の内部論理機能ブロック間に多段挿入されている内部論理機能ブロック接続状態を検出し、該検出した多段挿入を禁止するように物理的論理素子用データを修正する第３機能と、
該修正した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定し、該設定した最大駆動クロック数により論理エミュレーションを実行する第４機能とを、
実行させる論理エミュレーション方法。
【請求項２】
前記第４機能のコンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を増加させながら前記コンピュータの１システムクロック期間中に駆動クロック数を設定する請求項１記載の論理エミュレーション方法。
【請求項３】
前記第４機能のコンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を減少させながら前記コンピュータの１システムクロック期間中に駆動クロック数を設定する請求項１記載の論理エミュレーション方法。
【請求項４】
所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが該ハードウェア論理エミュレーションプログラムによりハードウェア論理エミュレーションを行う論理エミュレーション方法であって、
前記論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第１機能と、
前記第１機能により生成した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該駆動クロックにより論理エミュレーションを行う第２機能とを、
実行させる論理エミュレーション方法。
【請求項５】
所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが論理エミュレーションを行うための論理エミュレーションプログラムであって、
前記コンピュータが論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第１機能と、
前記第１機能により生成した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第２機能と、
前記時分割多重化論理回路が前記複数の内部論理機能ブロック間に多段挿入されている内部論理機能ブロック接続状態を検出し、該検出した多段挿入を禁止するように物理的論理素子用データを修正する第３機能と、
該修正した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定し、該設定した最大駆動クロック数により論理エミュレーションを実行する第４機能とを、
実現させるための論理エミュレーションプログラム。
【請求項６】
前記第４機能のコンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を増加させながら前記コンピュータの１システムクロック期間中に駆動クロック数を設定する請求項４記載の論理エミュレーションプログラム。
【請求項７】
前記第４機能のコンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を減少させながら前記コンピュータの１システムクロック期間中に駆動クロック数を設定する請求項４記載の論理エミュレーションプログラム。
【請求項８】
所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが論理エミュレーションを行うための論理エミュレーションプログラムであって、
前記コンピュータが論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第１機能と、
前記第１機能により生成した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該駆動クロックにより論理エミュレーションを行う第２機能とを、
実行させる論理エミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＰＧＡを複数搭載したエミュレーションボードを使用した論理エミュレーション環境におけるＦＰＧＡの物理的なピン数を超える本数のデータ信号を双方のＦＰＧＡ間で共有する様に信号多重化（時分割多重）転送を行うことができる論理エミュレーション方法及び論理エミュレーションプログラムに関する。
【背景技術】
【０００２】
近年、サーバやネットワーク等の情報処理装置に適用する大規模集積回路（ＬＳＩ）の大規模化、多ピン化、小形化が進んでおり、このようなＬＳＩを設計する際、ＬＳＩの論理検証精度を向上させるために、従来のソフトウェアによるＲＴＬ（Register transfer level）シミュレーション技術に加え、プログラム可能な物理的論理素子であるＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等をボード上に搭載するエミュレーションボードを用いた、ソフトウェアとハードウェアを連動動作させる、ハードウェア論理エミュレーションをＬＳＩの論理検証に適用する方式が用いられている。また、ＬＳＩにおける大規模化によるアドレス・データバスのビット幅拡張等のアーキテクチャ進歩などに伴い、ＦＰＧＡにマッピングを行う論理機能ブロック同士で送受信されるデータ信号本数は増加の一途を辿っている。
【０００３】
一般に、ＦＰＧＡの物理ピン数を超える信号本数のデータ信号の転送は、該当信号を論理的に束ねる信号多重化によって使用するピン数を低減し、時分割多重化によってＦＰＧＡが持つ物理ピン数の範囲内でエミュレーション可能なようにデータ送受信する方法がとられる。この信号の時分割多重化手法は、プログラム可能論理素子であるＦＰＧＡに対し、ターゲット論理回路を部分的にＦＰＧＡに割り当てる論理分割プランをもとにＦＰＧＡ同士で共有するデータ信号及び信号本数を算出し、ＦＰＧＡの物理ピン数の範囲内に収まるように信号の多重度を決定し、そのＦＰＧＡ間に配置される論理的な分割境界に対し、時分割多重化論理回路を論理的に挿入する手法である。
【０００４】
この信号の時分割多重化手法が記載された文献としては、下記特許文献１が挙げられ、この特許文献１には、時分割多重化論理回路の挿入に際し、ターゲット論理回路のタイミング情報を踏まえた上でデータ信号の転送順序入れ替えなどを行い、タイミング計算、配置配線を繰り返した後、エミュレーションを実行する技術が記載されている。
【０００５】
他方、時分割多重化論理回路挿入については、論理分割プランを元に算出した、ＦＰＧＡ同士で共有しなければならないデータ信号本数およびデータ信号名のキーワードをもとに、ソフトウェアによって時分割多重化論理回路を挿入する方法がとられる。この時分割多重化論理回路挿入に該当するデータ信号の多くは、論理機能ブロック同士を繋ぐインターフェース信号であるが、検証ターゲット論理規模が大規模であるほど該当インターフェース信号本数は多くなり、また、複数の設計者によって設計される論理回路であるほど、時分割多重化論理回路挿入可否を決める各信号に対する制約設定は困難を極める。
【０００６】
このため、時分割多重化論理回路挿入の対象となる信号は、検証ターゲット論理回路の制御系信号を除き、ＦＰＧＡ間に配置される全ての信号を多重化の対象とするのが、最も単純で設計者の作業工数的な負担が少ない方法となる。このように、前述した設計工数や制約設定の難しさなどの理由から、時分割多重化論理回路の挿入はソフトウェアの使用が必要不可欠である。
【特許文献１】特開２００２−７３７２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前述の時分割多重化論理回路挿入は、信号に対する多重化制約設定の難しさを回避するために、ＦＰＧＡ間に配置される全ての信号を無条件に多重化の対象とすることが望ましいが、例えば、ＦＦ（フリップフロップ）を含まない組み合わせ回路によって構成される論理機能ブロックが存在し、それを介する論理パスがある場合、信号を出力する側のＦＦと、その信号を受け取る入力側のＦＦと、そのＦＦ同士の論理パス上に存在するＦＦを含まない組み合わせ回路が、それぞれ異なるＦＰＧＡに存在する場合、そのＦＦからＦＦまでの一つの論理パス中に、時分割多重化論理回路が複数段挿入されてしまう場合がある。
【０００８】
このような場合は、時分割多重化論理回路を動作させるためのクロックを多段挿入された多重化論理回路の段数分多く発生させる必要があり、一般的に検証ターゲット論理回路のシステムクロックの動作周波数を低下させなければならないと言う不具合があり、このため、時分割多重化論理回路挿入に際しては、検証ターゲット論理回路のクロックドメイン分析結果／論理ネットリスト内の各機能ブロック接続情報／論理分割プラン／エミュレーションボード上のＦＰＧＡ同士の物理配線接続情報等を基に、汎用ＰＣやワークステーションによる膨大なマシンパワーを使用し、論理パスの配線経路を分析し、時分割多重化論理回路の多段挿入を抑止しなければならないと言う不具合があり、このような背景から、従来は、システム全体の動作周波数を低下させることのない、効率的な時分割多重化論理回路挿入手法が求められていた。
【０００９】
即ち、従来技術においては、論理エミュレーション環境にて機能検証を行う際のエミュレーションボード上に搭載される複数個のＦＰＧＡ間データ転送において、ＦＰＧＡの物理ピン数以上の信号を送受信するために、時分割多重化方法によって論理信号を束ね、ソフトウェアによりＦＰＧＡの入出力境界に時分割多重化論理回路を挿入する際、機能検証のターゲットとなる論理回路中に、ＦＦ（フリップフロップ）が無く組み合わせ回路のみでＦＰＧＡを通過する論理ネットが存在する場合、ＦＦからＦＦまでの論理パスに、複数段の時分割多重化論理回路が挿入される可能性があり、この場合、ターゲット論理回路を動作させる１システムクロック期間中に、時分割多重化論理回路用クロックを挿入段数分動作させる必要があるため、動作周波数が低下してしまうと言う不具合があった。
【００１０】
尚、特許文献１記載の技術は、エミュレーションボード上のＦＰＧＡ同士において、データ信号を多重化することが記載されているが、時分割多重化論理回路の多段挿入を抑止することは想定されていない。
【００１１】
本発明の目的は、時分割多重化論理回路の多段挿入を抑止し、高効率な時分割多重化論理回路を挿入することができる論理エミュレーション方法を提供することである。
【課題を解決するための手段】
【００１２】
前記目的を達成するために本発明は、所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが該ハードウェア論理エミュレーションプログラムによりハードウェア論理エミュレーションを行う論理エミュレーション方法であって、
前記論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第１機能と、
前記第１機能により生成した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第２機能と、
前記時分割多重化論理回路が前記複数の内部論理機能ブロック間に多段挿入されている内部論理機能ブロック接続状態を検出し、該検出した多段挿入を禁止するように物理的論理素子用データを修正する第３機能と、
該修正した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定し、該設定した最大駆動クロック数により論理エミュレーションを実行する第４機能とを、
実行させることを第１の特徴とする。
【００１３】
また本発明は、第１の特徴の論理エミュレーション方法において、前記第４機能のコンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を増加させながら前記コンピュータの１システムクロック期間中に最大となるように最大駆動クロック数を設定することを第２の特徴とする。
【００１４】
また本発明は、前記第１の特徴の論理エミュレーション方法において、前記第４機能のコンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数の値を増加させながら前記コンピュータの１システムクロック期間中に最大となるように最大駆動クロック数を設定することを第３の特徴とする。
【００１５】
更に本発明は、所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが該ハードウェア論理エミュレーションプログラムによりハードウェア論理エミュレーションを行う論理エミュレーション方法であって、
前記論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第１機能と、
前記第１機能により生成した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該駆動クロックにより論理エミュレーションを行う第２機能とを実行させることを第４の特徴とする。
【００１６】
更に本発明は、所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが論理エミュレーションを実行するための論理エミュレーションプログラムであって、
前記コンピュータが論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第１機能と、
前記第１機能により生成した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該論理エミュレーションを実行する第２機能と、
前記時分割多重化論理回路が前記複数の内部論理機能ブロック間に多段挿入されている内部論理機能ブロック接続状態を検出し、該検出した多段挿入を禁止するように物理的論理素子用データを修正する第３機能と、
該修正した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定し、該設定した最大駆動クロック数により論理エミュレーションを実行する第４機能とを、
実現させることを第５の特徴とする。
【００１７】
また本発明は、第５の特徴の論理エミュレーションプログラムにおいて、前記第４機能のコンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数を増加させながら前記コンピュータの１システムクロック期間中に最大となるように最大駆動クロック数を設定することを第６の特徴とする。
【００１８】
また本発明は、前記第６の特徴の論理エミュレーションプログラムにおいて、前記第４機能のコンピュータの１システムクロック期間中に最大となる最大駆動クロック数を設定するとき、前記多重化起動トリガ数の値を増加させながら前記コンピュータの１システムクロック期間中に最大となるように最大駆動クロック数を設定することを第７の特徴とする。
【００１９】
更に本発明は、所定の機能を達成する複数の内部論理機能ブロックをデータが通過する接続ピンにより接続する内部論理機能ブロック接続状態をハードウェア記述言語により記述し、該ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該論理分割した内部論理機能ブロック接続状態を、プログラム可能な物理的論理素子を用いたハードウェア論理エミュレーションプログラムを用い、コンピュータが論理エミュレーションを行うための論理エミュレーションプログラムであって、
前記コンピュータが論理エミュレーションプログラムに、
前記ハードウェア記述言語により記述した内部論理機能ブロック接続状態を論理分割し、該分割した内部論理機能ブロックを接続する論理的な接続ピン数が、前記物理的論理素子間を接続する物理的ピン数を超えるか否かを判定し、該判定により論理的接続ピン数が物理的ピン数を超えると判定したとき、論理的接続ピン数が物理的ピン数以下に収まるように、論理的接続ピンを通過するデータ転送タイミングをクロック信号を用いて時分割制御を行う時分割多重化回路を挿入した物理的論理素子用データを生成する第１機能と、
前記第１機能により生成した物理的論理素子用データを用い、コンピュータの１システムクロック期間中に、予め設定した多重化起動トリガ数にピン多重度数を乗算した数の駆動クロックを発生させ、該駆動クロックにより論理エミュレーションを行う第２機能とを実行させることを第８の特徴とする。
【発明の効果】
【００２０】
本発明による論理エミュレーション方法及びプログラムは、複数のＦＰＧＡを搭載したエミュレーションボードを用いた論理エミュレーションを実施する場合において、ＦＰＧＡの物理ピン数を超えるデータ信号の送受信が必要となった場合、ひとつの論理パスに時分割多重化論理回路が多段挿入されることによる動作周波数低下を抑止することができる。また、時分割多重化論理回路の多段挿入を抑止する場合、一般的には検証ターゲット論理回路を論理分割後に時分割多重化論理回路を挿入する場合、予め論理回路のクロックドメインと組み合わせ回路による論理パスを解析し、時分割多重化論理回路の挿入可否を判断する必要があり、近年の大規模論理回路の解析には、膨大なマシン性能が必要となるが、本発明によれば、これらマシン性能に依存するクロックドメインや論理パスの解析が不要であるため、効率的な時分割多重化論理回路挿入を行うことができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の対象となるＦＰＧＡ間のデータ信号に時分割多重化論理回路を挿入する前の論理回路の一例を示す図。
【図２】本発明の一実施形態による論理エミュレーション方法を用いた論理信号値を保持可能なフリップフロップを含まない一つの論理パスについて、時分割多重化論理回路が多段挿入されたことを検出する機能を説明するための図。
【図３】本発明の対象となるＦＰＧＡを用いたエミュレーションを行うためのハードウェア構成の説明図。
【図４】本実施形態による論理機能ブロックの接続と論理分割イメージを説明するための図。
【図５】本実施形態によるハードウェア記述言語にて記述される論理記述と該論理記述のＦＰＧＡ単位の分割からＦＰＧＡデータ生成までの流れを説明するための図。
【図６】本実施形態による時分割多重化論理回路を挿入する場合のハードウェア記述を説明するための図。
【図７】本実施形態の論理エミュレーション方法による一つの論理パスに多重化回路が多段挿入されることを抑止可能とする第１の動作説明図。
【図８】本実施形態の論理エミュレーション方法による一つの論理パスに多重化回路が多段挿入されることを抑止可能とする第２の動作説明図。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の一実施形態による論理エミュレーション方法を図面を参照して説明する。本実施形態による論理エミュレーション方法は、ＦＰＧＡを搭載するボードを用いた論理エミュレーション環境にて機能検証を行う際、エミュレーションボード上に搭載される複数個のＦＰＧＡ間データ転送用にＦＰＧＡの物理ピン以上の信号を送受信する場合、時分割多重化方法によってデータ信号を束ねるのが一般的であるが、この時分割多重化回路をＦＰＧＡ間の信号に挿入するときに、ソフトウェアによってＦＰＧＡの入出力境界に時分割多重化論理回路を挿入する手段を用いるが、機能検証のターゲットとなる論理回路中にＦＦ（フリップフロップ）が無く組み合わせ回路のみでＦＰＧＡを通過する論理ネットが存在する場合、ＦＦからＦＦまでの論理パスに、複数段の時分割多重化論理回路が挿入されることを防止するものであって、以下、詳細を説明する。
【００２３】
［時分割多重化論理回路を挿入前の論理接続の説明］
まず、時分割多重化論理回路を挿入前の論理接続を図１を参照して説明する。図１に示す回路は、複数のＦＰＧＡ１０１とＦＰＧＡ１１１とＦＰＧＡ１４１とを物理ピンにより接続した論理図であり、ＦＰＧＡ１０１には、検証ターゲット論理機能ブロックの一部であるＦＦを含む組み合わせ論理回路１０２が割り付けられ、この組み合わせ回路１０２の中には、論理信号のデータ値を保持可能なＦＦ１０３とＦＦ１０４が含まれ、二つのＦＦの出力信号は、ＦＦ１０３の出力であるｎｅｔＡ１０５、ＦＦ１０４の出力であるｎｅｔＢ１０６がそれぞれ存在し、ターゲット論理回路のクロック信号であるＳｙｓ＿ｃｌｏｃｋ１１０は、組み合わせ回路１０２に接続されている。
【００２４】
前記ＦＰＧＡ１１１には、検証ターゲット論理機能ブロックの一部であるＦＦを含む組み合わせ論理回路１２４が含まれ、この組み合わせ論理回路１２４には、ｎｅｔＡ１０５を入力とするＦＦ１２５とｎｅｔＢ１０６を入力とするＡＮＤ素子１２７とＮｅｔＣ１２８を出力に持つＦＦ１２６が含まれ、前記ＡＮＤ素子１２７の出力はＮｅｔＢＢ１２９として他のＦＰＧＡへ渡されるように接続されている。
【００２５】
前記ＦＰＧＡ１４１には、検証ターゲット論理機能ブロックの一部であるＦＦを含む組み合わせ論理回路１４６が含まれ、この組み合わせ論理回路１４６には、ＮｅｔＣ１２８を入力とするＦＦ１４７、ＮｅｔＢＢ１２９を入力とするＦＦ１４８が設けられている。
【００２６】
［時分割多重化論理回路を挿入後の論理接続の説明］
次に、時分割多重化論理回路を挿入後の論理接続状態を説明する。この論理接続における時分割多重化は、複数の異なる信号を時間的に配列して一本の信号でデータ転送を行う機構であり、その一本の信号を使って行われるデータの時間的な配列は時分割多重のための専用クロックを送出することによって行われるものである。この論理回路は、ターゲット論理を動作させるシステムクロックの１サイクル期間に、時分割多重化を含んだ回路動作を完了させる必要がある。このため時分割多重のための専用クロックは、システムクロックより高速に動作させる必要があり、例えば、１０ＭＨｚのシステムクロックで動作する論理回路について、２多重で信号をデータ送信する場合、２倍の性能を持つ２０ＭＨｚの時分割多重クロックを送出することによりシステムクロックの１サイクル期間内に多重化処理を完了するように論理接続を行う必要がある。尚、実際にはエミュレーションボードやＦＰＧＡ上の配線ディレイや素子ディレイなどの要因を動作上保障する必要があり、多重度と多重化性能は完全に比例しないが、一般的にはシステムクロックよりも高速・高性能な時分割多重クロックが要求される（時分割多重クロックの動作周波数と多重度の関係によって、システムクロックの１サイクルの長さが決定される）ため、高速にシステムを動作させるためには、多重度を可能な限り低下させること、多重化回路を挿入しなくてもよいような信号接続とすることなどが求められる。
【００２７】
本実施形態による時分割多重化論理回路を挿入後の論理接続状態を図２を参照して説明する。この論理接続状態は、図１の論理接続状態を前提とし、本実施形態によるエミュレーションボード上に実装される時分割多重化論理回路の多段挿入を検出するチェック機能回路を加えた例である。この論理接続状態（回路）は、前述したように、多重化回路をＦＰＧＡ間の信号に適用しないことが、最も高速にシステムを動作させるわけであるが、物理的な配線数が論理的な配線数より低い場合には多重化処理が必須であるため、本実施形態では、エミュレーションボード上の複数のＦＰＧＡ間をまたぐそれぞれ２本の信号について、ソフトウェアによって無条件にＦＰＧＡ間の信号に時分割多重化回路を挿入し、信号本数を１本に低下させる例を示している。本論理は、回路内に設けられたチェックフラグを監視することで時分割多重化論理回路の多段挿入を検出できる機構を含んだ回路となっている。
【００２８】
図２は、信号多重化に際し、論理信号値を保持可能なＦＦを含まない一つの論理パスについて、時分割多重化論理回路が多段挿入されたことの検出機能を説明するための図であって、図１に対応した複数のＦＰＧＡ２０１とＦＰＧＡ２１１とＦＰＧＡ２４１とを物理ピンにより接続しており、前記ＦＰＧＡ２０１には、検証ターゲット論理機能ブロックの一部であるＦＦを含む組み合わせ論理回路２０２が割り付けられ、この組み合わせ回路２０２の中には、論理信号のデータ値を保持し、信号ｎｅｔＡ２０５を出力するＦＦ２０３と、同様に論理信号のデータ値を保持し、信号ｎｅｔＢ２０６を出力するＦＦ２０４と、該信号ｎｅｔＡ２０５及びｎｅｔＢ２０６を入力とする時分割多重化論理回路の送信側機能ブロック２０７と、前記送信側機能ブロック２０７には駆動タイミングを制御する時分割多重用クロックＴｄｍ＿ｃｌｏｃｋ２０９が印加され、前記組み合わせ回路２０２にはターゲット論理回路のクロック信号であるＳｙｓ＿ｃｌｏｃｋ２１０が印加される様に構成されている。
【００２９】
前記ＦＰＧＡ２１１には、前記ＦＰＧＡ２０１から送出される多重化信号２０８を入力とする時分割多重化論理回路の受信側機能ブロック２１２と、時分割多重化論理回路の多段挿入を検出する検出回路２１３と、検証ターゲット論理機能ブロックの一部であるＦＦを含む組み合わせ論理回路２２４と、時分割多重化論理回路の送信側機能ブロック２３０とを備える。
【００３０】
前記組み合わせ回路２２４には、論理信号のデータ値を保持するＦＦ２２５及びＦＦ２２６と、ＡＮＤ素子２２７とを含み、ＦＦ２２６の出力信号である信号ＮｅｔＣ２２８とＡＮＤ素子２２７の出力である信号ＮｅｔＢＢ２２９が、時分割多重化論理回路の送信側機能ブロック２３０の入力となり、２本の論理信号を多重化処理し１本の多重化信号２３１として信号送出する様に構成している。
【００３１】
前記検出回路２１３は、時分割多重化論理回路の多段挿入を検出する機能を有し、受信側機能ブロック２１２からの出力である信号ＮｅｔＡ´２１４を入力とするＦＦ２１５と、前記信号ＮｅｔＡ´２１４を一方に入力し、前記ＦＦ２１５の出力信号２０６を他方に入力するＥＯＲ２１７と、受信側機能ブロック２１２からの出力である信号ＮｅｔＡ´２１５を入力とするＦＦ２１９と、前記信号ＮｅｔＡ´２１４を一方に入力し、前記ＦＦ２１９の出力信号２２０を他方に入力するＥＯＲ２２１とから構成される。このＦＰＧＡ２１１に含まれる時分割多重化論理回路も専用の時分割多重用クロックＴｄｍ＿ｃｌｏｃｋ２０９によって駆動され、ターゲット論理回路のクロック信号である信号Ｓｙｓ＿ｃｌｏｃｋ２１０が、組み合わせ回路２２４に接続されている。
【００３２】
前記信号ＮｅｔＡ´２１４は、一旦時分割多重化された信号２０８を、時分割多重化論理回路の受信側機能ブロック２１２によって展開した信号であり、ＮｅｔＡ２０５と論理的に同等の信号である。また、前記ＥＯＲ２１７の出力信号であるＣｈｅｃｋ＿ｆｌａｇ２２２は信号の変化を検出するためのものであって、ＮｅｔＡ´２１４の値とＦＦ２１５の出力信号２１６による１クロックサイクル前の値が異なった場合にアクティブとなる。
【００３３】
この回路構成により、ＦＦｔｏＦＦのひとつの論理パスに時分割多重化論理回路が多段挿入されない場合、ターゲット論理回路を動作させるクロック信号Ｓｙｓ＿ｃｌｏｃｋ２１０の１サイクル期間内は、ＮｅｔＡ´２１４の値とＦＦ２１５の出力信号２１６の値は常に同一であり、信号Ｃｈｅｃｋ＿ｆｌａｇ２２２はアクティブとならないことを利用し、信号Ｃｈｅｃｋ＿ｆｌａｇ２２２をレジスタやメモリのようなデータ保持可能な回路に出力し、エミュレーション実行時にアクティブとなったことをエミュレーション実行後に前記信号Ｃｈｅｃｋ＿ｆｌａｇ２２２を監視することにより、どの論理パスに時分割多重化論理回路の多段挿入されているかを検出できる。
【００３４】
前記信号ＮｅｔＢ´２１８は、一旦時分割多重化された信号２０８を、時分割多重化論理回路の受信側機能ブロック２１２によって展開した信号であり、ＮｅｔＢ２０６と論理的に同等の信号であり、入力値を保持するＦＦ２１９とＥＯＲ２２１に入力され、ＥＯＲ２２１の一方の入力にＦＦ２１９の出力信号２２０が接続することによって、ＥＯＲ２２１の出力である信号Ｃｈｅｃｋ＿ｆｌａｇ２２３がＮｅｔＢ´２１８とＦＦ２１９の出力信号２２０が異なった場合にアクティブとなることを利用し、時分割多重化論理回路の多段挿入を検出できる。
【００３５】
前記ＦＰＧＡ２４１は、ＦＰＧＡ２１１から送出される多重化信号２３１を入力とする時分割多重化論理回路の受信側機能ブロック２４２と、前記検出回路２１３と同等の検出回路２４３と、該検出回路２４３から出力される信号ＮｅｔＣ´２４４及びＮｅｔＢＢ´２４５を入力とする組み合わせ回路２４６とを備える。
【００３６】
前記検出回路２４３には、回路２１３で示すＦＦ２１５やＦＦ２１９で示す信号値を保持するＦＦのほかに、信号Ｃｈｅｃｋ＿ｆｌａｇが繋がるＥＯＲ２１７やＥＯＲ２２１と同等の回路が含まれる。前記時分割多重化論理回路の受信側機能ブロック２４２から出力されるＮｅｔＣ´２４４は、組み合わせ回路２４６に含まれるＦＦ２４７の入力として接続されるが、論理的には信号ＮｅｔＣ２２８と同等の信号である。また、時分割多重化論理回路の受信側機能ブロック２４２から出力される信号ＮｅｔＢＢ´２４５は、組み合わせ回路２４６に含まれるＦＦ２４８の入力として接続されるが、論理的には信号ＮｅｔＢＢ２２９と同等の信号である。
【００３７】
この様に構成された論理接続状態においては、ＦＰＧＡ２１１及び２４１の検出回路２１３及び２４３からの出力である信号Ｃｈｅｃｋ＿ｆｌａｇがアクティブか否かを監視することによって、多重化論理回路の多段挿入された箇所を検出することができる。
【００３８】
［ＦＰＧＡを用いたエミュレーションを行うためのハード構成］
図３は、ハードウェアとソフトウェアを連動させた本実施形態による論理エミュレーション方法を実現するためのハードウェアの構成例を示す図である。このハードウェア構成は、多数のＦＰＧＡ３０３を搭載したエミュレーションボード３０２と、本実施形態の特徴となる論理エミュレーション方法を実現するプログラムを搭載したパーソナルコンピュータ（ＰＣ）３０１とから成り、該ＰＣ３０１にエミュレーションボード３０２を接続し、前記論理エミュレーションプログラムを駆動することによって、論理エミュレーションを行うことができる。
【００３９】
この様に構成されたハードウェアにおいて前記論理エミュレーションプログラムによるハードウェア連動エミュレーション実行時、ＰＣ３０１上でシミュレータ（テストベンチ）やボード制御ソフトウェアが実行され、これらのＰＣ３０１上の演算値やＰＣ３０１からエミュレーションボード３０２を制御するためのトランザクションは、ＰＣ３０１とエミュレーションボード３０２を接続するケーブル３０４を経由してデータの送受信が行われ、エミュレーションボード３０２にデータが伝達される。
【００４０】
エミュレーションボード３０２上に搭載されるＦＰＧＡ３０３には、ＰＣ３０１からのデータが伝達され、ＦＰＧＡ３０３には検証ターゲット論理回路がロードされており、ＰＣ３０１側から入力されるデータ値やトランザクションに応じた演算が実行される。このＦＰＧＡ３０３にロードされた論理回路の演算によって得られる結果は、エミュレーションボード３０２とＰＣ３０１を繋ぐケーブル３０４を介して、１クロックサイクルまたは１トランザクションイベント単位に、ＰＣ３０１上で実行されるシミュレータなどのソフトウェアにデータ送信され、エミュレーション実行される。このエミュレーション実行の際、図１及び図２で示す例のような論理回路がＦＰＧＡ３０３上にロードされる。尚、図３に示したＦＰＧＡの個数は例示であり、本例に限られるものではない。
【００４１】
［ＦＰＧＡ向けのデータ生成動作］
本実施形態による論理エミュレーション方法は、前述の如く、論理エミュレーションプログラムによって実現されるものであり、次に図４から図８を参照してＦＰＧＡ向けのデータ生成および論理エミュレーション動作を説明する。この論理機能回路を機能ブロック単位に分割しＦＰＧＡ単位のデータとして生成する場合、ハードウェアは不要であり、ＰＣ上で稼動する専用ソフトウェアによって処理し、ＦＰＧＡ用データを生成する事になるが、ＦＰＧＡ用データ生成の処理には、論理エミュレーションの実行は不要である。尚、図の説明の中で信号のビット幅を明示している部分があるが、一例としての記述であり、図に明示されたビット幅に限定されることではない。
【００４２】
まず、図４は、論理機能回路に含まれる機能ブロックの接続とＦＰＧＡ単位に論理分割を行う境界を示した図である。図４の論理機能接続と機能ブロックの一実施例は、図１と図２で示す一実施例との論理回路構成としての関連は特に無く、あくまで論理分割の流れを説明するための回路例である。
【００４３】
図４に示した論理回路例は、ＤＥＳＩＧＮ＿ＴＯＰ階層４０１に、入力ポート４０２、出力ポート４０３および出力ポート４０４を備えている。また、論理回路の内部に、ＢＬＯＣＫ＿Ａ４０５、ＢＬＯＣＫ＿Ｂ４０６、ＢＬＯＣＫ＿Ｃ４０７、ＢＬＯＣＫ＿Ｄ４０８の４つの内部機能ブロックを有する。
【００４４】
この論理回路例では、ＢＬＯＣＫ＿Ｂ４０６、ＢＬＯＣＫ＿Ｃ４０７及びＢＬＯＣＫ＿Ｄ４０８の３つの機能ブロックは同一機能である事を前提条件としており、それぞれ入力ポートＳｉｇＹと出力ポートＳｉｇＺを備える。尚ＢＬＯＣＫ＿Ａ４０５はＢＬＯＣＫ＿Ｂ４０６とは異なる機能ブロックであり、入力ポートＳｉｇＷと出力ポートＳｉｇＸを備える機能ブロックである。
【００４５】
図４に示した論理回路例では、前記各機能ブロック同士の接続は、ＢＬＯＣＫ＿Ａ４０５の出力ポートＳｉｇＸとＢＬＯＣＫ＿Ｂ４０６の入力ポートＳｉｇＹおよびＢＬＯＣＫ＿Ｃ４０７の入力ポートＳｉｇＹをｄａｔａＯ１信号４１１によって接続し、ＢＬＯＣＫ＿Ｃ４０７の出力ポートＳｉｇＺとＢＬＯＣＫ＿Ｄ４０８の入力ポートＳｉｇＹをｄａｔａＯ２信号４１３にて接続している。前記入力ポート４０２とＢＬＯＣＫ＿Ａ４０５の入力ポートＳｉｇＷは、ｄａｔａＩ信号４１０によって接続され、論理機能回路であるＤＥＳＩＧＮ＿ＴＯＰ階層４０１へのデータ入力が可能である。また、ＢＬＯＣＫ＿Ｂ４０６の出力ポートＳｉｇＺと出力ポート４０３は、ｄａｔａ＿ｏｕｔ１信号４１２によって接続され、論理機能回路であるＤＥＳＩＧＮ＿ＴＯＰ階層４０１からのデータ出力となる。同様に、ＢＬＯＣＫ＿Ｄ４０８の出力ポートＳｉｇＺと出力ポート４０４はｄａｔａ＿ｏｕｔ２信号４１４によって接続され、ＤＥＳＩＧＮ＿ＴＯＰ階層４０１からのデータ出力となる。
【００４６】
それぞれのポートや機能ブロックを繋ぐ信号群は、実際にはビット幅を持ち、後に図５を用いた論理機能記述説明では３２ビット幅を持つが、図４で示す信号及びポートは全て３２ビット幅を持つため、ビット幅を省略し、図に明示しない。尚、通常、論理機能回路はクロックやＦＦの初期化のためのリセット信号を持つのが一般的だが、本回路例は、機能ブロック接続を分割する概要を説明するため、これらクロック及びリセット信号を省略している。
【００４７】
さて、一般にＤＥＳＩＧＮ＿ＴＯＰ階層４０１に含まれる機能全てが一つのＦＰＧＡに収まれば論理分割の必要性は無いが、本例では、分割境界４０９で示すように、ＢＬＯＣＫ＿Ａ４０５とＢＬＯＣＫ＿Ｂ４０６を１つのＦＰＧＡに割り当て、ＢＬＯＣＫ＿Ｃ４０７とＢＬＯＣＫ＿Ｄ４０８はそれぞれ単独でＦＰＧＡに割り当てる３分割する例として説明する。
【００４８】
［論理分割の基本的説明］
図５は、図４の論理機能ブロック接続図をハードウェア記述言語を用いて記述した設計ファイルをソフトウェアによって論理分割し、ＦＰＧＡ単位の機能記述に整形し、ＦＰＧＡ用データを生成するまでの流れを示した例である。
【００４９】
図５中の論理機能記述例５０１は、図４論理機能ブロック接続図相当の記述例であり、ＤＥＳＩＧＮ＿ＴＯＰ階層の入出力ポートや信号定義５１２が記述される。これらは３２ビット幅を持つ信号として本例では説明する。階層の単位は最上段の「ｍｏｄｕｌｅ」行から最下段の「ｅｎｄｍｏｄｕｌｅ」行までが該当するが、機能ブロックの定義としてＢＬＯＣＫ＿ＡからＢＬＯＣＫＤまでの４つのブロック定義５１１が記述される。このブロック定義に含まれる括弧「（」から括弧「）」間に含まれる記述は信号名であり、この各ブロック定義に含まれる信号名の記述が、機能ブロック間の接続を意味する。また、ＢＬＯＣＫ＿ＡからＢＬＯＣＫ＿Ｄまでの４つの機能ブロックは、２種類の論理機能ブロックから成ることを前提としているが、機能ブロック宣言５１３で「ｆｕｎｃｔｉｏｎ１」および「ｆｕｎｃｔｉｏｎ２」のモジュールとして定義される。尚、本説明では、機能ブロック内部の論理動作記述は全て省略している。
【００５０】
本例で示した論理機能記述例が論理機能記述のルールというわけではないが、一般的には使用するハードウェア論理記述言語の種類に応じてコーディングルールが決定されており、そのルールにもとづいて設計されたファイルがＦＰＧＡ向けデータ作成のインプットファイルとなる。
【００５１】
前記図５左側に示した論理機能記述例５０１は、専用のソフトウェアによって論理分割され、図５右側の論理機能記述例５０２／５０７／５０８に分割して書き換えられる。尚、論理分割とは、設計者が指定した設定を反映し機能記述内容を整形する処理であり、本例では、図４で示したように論理機能記述例５０１を３分割にし、必要な機能記述内容だけを残し３ファイルに整形することを意味する。また、この論理分割５０９が実行される際、論理機能記述例５０１のコーディングに不備がないか、シンタックスチェックや機能ブロック接続状態をチェックするプログラムが実行される場合がある。一方で、搭載ＦＰＧＡ個数やエミュレーションボードの物理配線接続をモデル化したライブラリ相当のデータベース等に格納されたボード情報５０６を読み込むことにより、ＦＰＧＡ間の物理配線本数などをソフトウェアが認識しながら最適な論理分割を行うこともできる。
【００５２】
このボード情報５０６に定義されたエミュレーションボード上の物理配線本数の上限値によって、時分割多重化論理回路を挿入するかどうかソフトウェアが判断可能となる。尚、専用ソフトウェアによって論理分割する際、論理機能記述内容を整形するが、そのアウトプットファイルはインプットファイルのハードウェア論理記述言語に準拠している必要性はなく、ＦＰＧＡ用データ変換ソフトウェアに入力可能な複数のフォーマット形式を選択可能であることが一般的に求められる。
【００５３】
専用のソフトウェアによって論理分割５０９が実行されると、図５右側の論理機能記述５０２／論理機能記述５０７／論理機能記述５０８が生成される。この３つの論理機能記述は、図４の分割境界で示した３分割の設定を反映した内容であり、図示した論理機能記述５０２には、ＢＬＯＣＫ＿ＡおよびＢＬＯＣＫ＿Ｂの２つのブロック定義５１４と、その２種類の論理機能ブロック宣言５１５が含まれる。また、図４の分割境界上に存在したｄａｔａＯ１信号４１１については、他のＦＰＧＡとのインターフェース信号として再定義する必要があるため、論理機能記述５０２では出力ポートの信号定義５１６が新たに追加されている。また、論理機能記述５０７にはＢＬＯＣＫ＿Ｃが含まれ、論理機能記述５０８にはＢＬＯＣＫ＿Ｄが含まれる。
【００５４】
本例では、論理分割５０９が完了し、ＦＰＧＡ単位の論理機能記述ファイルが生成された後、ソフトウェアによるデータ変換５１０が行われる。このデータ変換５１０は、論理機能記述のフォーマットからＦＰＧＡにロード可能なフォーマットに変換する処理であり、ファイル単位に実行される。ＢＬＯＣＫ＿ＡおよびＢＬＯＣＬ＿Ｂを含む論理機能記述５０２の変換結果がＦＰＧＡ用データ５０３となり、同様にＢＬＯＣＫ＿Ｃを含む論理機能記述５０７の変換結果がＦＰＧＡ用データ５０４となり、ＢＬＯＣＫ＿Ｄを含む論理機能記述５０８の変換結果がＦＰＧＡ用データ５０５となる。
【００５５】
［多重化回路が挿入される際の論理分割の説明］
以上のように図５で説明した内容が論理分割の基本的な流れであるが、次に図６を用いて多重化回路が挿入される場合の記述例を説明する。
多重化回路が挿入される場合の記述例６０１は、図５にて説明した論理分割後に得られるＢＬＯＣＫ＿ＡおよびＢＬＯＣＬ＿Ｂを含む論理機能記述５０２相当の記述に、多重化論理回路に関連する機能を追加したものである。この機能は、専用の論理分割ソフトウェアが、搭載ＦＰＧＡ個数やエミュレーションボードの物理配線接続をモデル化したライブラリ相当のボード情報から、ＦＰＧＡ間に存在する物理的な配線本数を論理的な信号本数が超過した場合、多重化論理回路を自動的に挿入する機能である。
【００５６】
図６に示す多重化論理回路が挿入された論理記述例６０１について、多重化論理回路に関連する機能記述は、ブロック定義６０２及び論理機能ブロック宣言６０３である。このブロック宣言６０３は、３２ビット幅の入力信号を１ビットの出力信号として送出する概念を示し、ブロック定義６０２の行に含まれる信号接続定義が、３２ビット幅を持つｄａｔａＯ１信号を入力とし、１ビットのｄａｔａＯ１＿ｏ信号が出力として定義され、出力ポート宣言６０４も同様に１ビットの信号となることを表している。
【００５７】
［論理エミュレーション動作第１例の説明］
図７は、本実施形態による論理エミュレーション方法を実現するためのシステム向け設計方法の全体フローであり、多重化処理を起動するトリガ信号発行回数を１から順次増加させる場合の例である。
【００５８】
本論理エミュレーション方法は、ＦＰＧＡ用のデータを生成するためのソフトウェア処理およびソフトウェアとハードウェアを連動するエミュレーション実行処理であって、大別して、ＦＰＧＡ用データを生成する第１工程と、ハードウェア連動エミュレーション実行する第２工程と、多段チェックを行い、多重化回路多段挿入を禁止する制約条件を生成する第３工程と、ハードウェア連動エミュレーションを実行する第４工程と、該多段チェック工程及びハードウェア連動エミュレーション実行工程終了後にＦＰＧＡ用データを生成する第５工程と、エミュレーションを実行するハードウェア連動エミュレーションを実行する第６工程の各工程により構成される。
【００５９】
この論理エミュレーション方法のＦＰＧＡ用データを生成する第１工程は、図５に示した如き論理機能記述を分割するステップ７０１と、該ステップ７０１により分割した後の論理ピン数が物理ピン数を超えるか否かを判定するステップ７０２と、該ステップ７０２において論理ピン数が物理ピン数を超えると判定したとき、ピン多重度（物理ピン数の範囲に収まる様に信号線を束ねる処理）及び多重化信号を決定するステップ７０３と、該ステップ７０３により決定したピン多重度（１つのＦＰＧＡ物理ピンに割り当てる信号本数の値）及び多重化信号の決定に基づいて多重化回路を論理的に挿入するステップ７０４とから成る。
【００６０】
前記ステップ７０１は、検証ターゲットである論理機能回路をエミュレーションボードに搭載されるＦＰＧＡに機能ブロック単位で割付を行う論理分割処理であり、ステップ７０２は、ステップ７０１による処理結果である、ＦＰＧＡ単位に割付を行った機能ブロック間の論理信号本数を基に、ＦＰＧＡで使用可能な物理ピン数に対し、機能ブロック間の論理信号本数が使用可能な物理ピン数以下であるか判定を行う処理である。この一つの多重化回路に接続する信号数は、前述したピン多重度により決定されるため、その多重化回路の信号接続本数は任意に変更可能であることを前提とする。前記ステップ７０３によって決定された内容は、ステップ７０２の条件を満たす結果でなければならないため、ステップ７０３で決定されたピン多重度と信号群を基に、ステップ７０４で時分割多重化論理回路を挿入する。ステップ７０４により挿入される時分割多重化論理回路は、多重化多段挿入のチェック機構を有する回路である。
【００６１】
更に前記ステップ７０４では、ステップ７０３によって決定された信号群の通り、転送先のＦＰＧＡ単位や論理のクロックドメイン単位に、各多重化回路に論理信号を接続した後、ステップ７０５によって、エミュレーション実行時の多重化処理起動トリガ信号発行回数設定が行われる。
【００６２】
このＦＰＧＡデータを生成する第１工程では、一般的に、エミュレーションボード上に搭載されるＦＰＧＡ個数やエミュレーションボードのアーキテクチャをモデル化したライブラリと、ハードウェア記述言語を用いて記述された検証ターゲット論理機能回路の設計ファイルをもとに、複数のＦＰＧＡ資源を有効に使用するための専用ソフトウェアを用いてＦＰＧＡ用データを生成する。
【００６３】
前記ハードウェア連動エミュレーションを実行する第２工程は、前記ステップ７０２又はステップ７０４に続き、ターゲット論理の分割プランや設計ルールに応じて多重化処理起動トリガ信号発行回数の上限値を設定するＭＡＸ設定を行うステップ７０５と、変数Ｎを初期化（値「０」設定）するステップ７０６と、該変数Ｎに値「１」を加算するステップ７０７と、前記変数Ｎに多重度を積算することにより多重化クロックを設定するステップ７０８と、該ステップ７８により多重化された論理回路のエミュレーションを実行するステップ７０９とから成る。この第２工程は、ＰＣ３０１により、検証ターゲット論理機能回路を動作させるためのシミュレータ（テストベンチ）やボード制御ソフトウェアを実行し、ＦＰＧＡにロードされた検証ターゲット論理機能回路を動作させるものであり、ＦＰＧＡ向けデータ作成のためのソフトウェアを実行し、ＰＣ上でのソフトウェアのみの実行でありハードウェア不要である。前記ステップ７０８による多重化クロックは、多重化処理起動トリガ信号発行回数（変数Ｎ）と多重化のためのピン多重度を基に算出することができる。
【００６４】
前記多重化回路多段挿入を禁止する制約条件を生成する第３工程は、前記ステップ７０４にて挿入された回路のチェックフラグの値を確認することにより時分割多重化論理回路の多段挿入を検出するチェックを行うステップ７１０と、該ステップ７１０により時分割多重化論理回路の多段挿入が検出された場合、この多段挿入を制約する制約条件を生成するステップ７１１とから成る。
【００６５】
この第３工程は、初回（変数Ｎ＝１）の場合、初期動作時の論理信号値は不明であるため、多重化多段チェックをスキップし、ステップ７１０によりチェックフラグがアクティブとなっていると判定した場合、ステップ７１１により該当信号を多重化候補から除外する禁止制約を生成し、これらステップ７０７からステップ７１１までは、多重化処理起動トリガ信号発行回数（変数Ｎ）と上限値が一致するまで、ステップ７１２の判定によって繰り返される。
【００６６】
前記ハードウェア連動エミュレーションを実行する第４工程は、多重化処理起動トリガ信号発行回数（変数Ｎ）と予め定めた上限値（ＭＡＸ）と一致か否かを判定し、一致しないと判定したときに前記ステップ７０７に戻るステップ７１２を含み、多重化処理起動トリガ信号発行回数が上限値（ＭＡＸ）に達するまで、多重化クロック設定及び多段挿入制約条件の生成を繰り返す様に動作する。
【００６７】
このステップ７１２によるＭＡＸ設定とは、多重化処理起動トリガ信号発行回数の上限値を設定することであって、ターゲット論理の分割プランや設計ルールに応じて設定し、例えば、アドレス信号をデコードしてその出力信号を返す論理機能ブロックが存在すると仮定し、アドレスを送信するブロックとデコードしてその出力信号を返す論理機能ブロックが異なるＦＰＧＡに割り付けられた場合、又はデコードしたその出力信号を受け取る機能ブロックが別のＦＰＧＡに割り付けられる場合を想定した場合、多重化処理起動トリガ信号発行回数の上限値は値「３」と設定できる。
【００６８】
前記ＦＰＧＡ用データの生成からエミュレーションを実行する第５工程及び第６工程は、多重化多段禁止の制約があるか否かを判定し、制約がないと判定したときには処理を終了するステップ７１３と、ステップ７１３において制約があると判定したとき、多重化禁止信号を除外するステップ７１４と、該多重化禁止信号を除外した論理回路に多重化回路を挿入するステップ７１５と、多重化クロックを設定するステップ７１６と、エミュレーションを実行するステップ７１７とから成る。
【００６９】
この第５工程によるエミュレーション実行は、検証ターゲット論理機能回路を動作させるためのシミュレータ（テストベンチ）やボード制御ソフトウェアを実行し、ＦＰＧＡにロードされた検証ターゲット論理機能回路を動作させるもので、前記第２工程がＰＣ上でのソフトウェアのみの実行であるのに対し、ＦＰＧＡにロードする論理機能回路を動作させるためのソフトウェア実行（ハードウェアとソフトウェアを連動させるエミュレーション実行）である。
【００７０】
この第５工程は、ＦＦｔｏＦＦのひとつのパスに対し、多重化回路が多段挿入され、チェックフラグがアクティブとなった結果、禁止制約が生成されたことを判定した場合、ステップ７１４にて、ステップ７１１で生成した生成した禁止制約を基にステップ７０３で決定した多重化信号リストから多重化を禁止する信号を除外する処理を行い、ステップ７１５にて、新たに作り出された多重化信号リストをもとに、多重化回路挿入を行う。
【００７１】
尚、前述のステップ７０４とステップ７１５の処理内容は同等であるが、ステップ７１５にて出力される結果は、多重化回路の多段挿入が解消された結果である。また前記ステップ７１５は、多重化回路挿入を行う際、既に多重化論理回路の多段挿入は解消されているため、多段チェック機構を含まない回路を適用でき、これにより、多段チェック機構を含まない回路を適用した場合、ＦＰＧＡのゲート、配線リソース使用量を抑えることや、ターゲット論理に対するＦＰＧＡ配置配線時のディレイ的負荷が低減されるなどのメリットが生まれる。更にステップ７１６によって多重化クロックの設定を行う際は、多重化回路の多段挿入はないため、ピン多重度と同じクロック発行回数でエミュレーション動作が可能となる。
【００７２】
この様に本実施形態による論理エミュレーション方法は、論理エミュレーションプログラムが、図７に示した第１工程から第６工程を実行することによって、時分割多重化論理回路の多段挿入を抑止した効率よいエミュレーションを行うことができる。
【００７３】
［論理エミュレーション動作第２例の説明］
前記図７に説明した論理エミュレーション動作は、多重化処理を起動するトリガ信号発行回数を順次増加させる例であるが、本発明においてはトリガ信号発行回数を順次減少させることによっても実施することができ、この動作例を図８を参照して説明する。
【００７４】
本論理エミュレーション方法は、前述の図にて説明した手順と同様に、大別して、ＦＰＧＡ用データを生成する第１工程と、ハードウェア連動エミュレーション実行する第２工程と、多段チェックを行い、多重化回路多段挿入を禁止する制約条件を生成する第３工程と、ハードウェア連動エミュレーションを実行する第４工程と、該多段チェック工程及びハードウェア連動エミュレーション実行工程終了後にＦＰＧＡ用データを生成する第５工程と、エミュレーションを実行するハードウェア連動エミュレーションを実行する第６工程の各工程により構成され、第１工程／第３工程／第５工程／第６工程は図７に示した動作と同様のため、詳細説明は省略する。
【００７５】
この論理エミュレーション方法のＦＰＧＡ用データを生成する第１工程は、論理機能記述を分割するステップ８０１と、該分割した後の論理ピン数が物理ピン数を超えるか否かを判定するステップ８０２と、該判定において論理ピン数が物理ピン数を超えると判定したとき、ピン多重度及び多情信号を決定するステップ８０３と、該決定したピン多重度及び多重化信号の決定に基づいて多重化回路を論理的に挿入するステップ８０４とから成り、複数のＦＰＧＡ資源を有効に使用するための専用ソフトウェアを用いてＦＰＧＡ用データを生成する。
【００７６】
前記ハードウェア連動エミュレーション実行する第２工程は、前記ステップ８０２又はステップ８０４に続き、多重化処理起動トリガ信号発行回数の上限値Ｎを設定するステップ８０５と、該上限値Ｎから値「１」を減算するステップ８０７と、前記上限値Ｎに多重度を積算することにより多重化クロックを設定するステップ８０８と、該ステップ８０８により多重化された論理回路のエミュレーションを実行するステップ８０９とから成り、ＰＣ３０１により、検証ターゲット論理機能回路を動作させるためのシミュレータ（テストベンチ）やボード制御ソフトウェアを実行し、ＦＰＧＡにロードされた検証ターゲット論理機能回路を動作させるものであり、ＦＰＧＡ向けデータ作成のためのソフトウェアを実行し、ＰＣ上でのソフトウェアのみの実行でありハードウェアは不要である。前記ステップ８０８による多重化クロックは、多重化処理起動トリガ信号発行回数（上限値Ｎ）と多重化のためのピン多重度を基に算出することができる。
【００７７】
前記多重化回路多段挿入を禁止制約条件を生成する第３工程は、前記ステップ８０４にて挿入された回路のチェックフラグの値を確認することにより時分割多重化論理回路の多段挿入を検出するチェックを行うステップ８１０と、該ステップ８１０により時分割多重化論理回路の多段挿入が検出された場合、この多段挿入を制約する制約条件を生成するステップ８１１とから成る。本例においては、初回（変数Ｎ＝上限値）の場合、初期動作時の論理信号値は不明であるため、多重化多段チェックはスキップし、ステップ８１０にて、チェックフラグがアクティブとなっていた場合、ステップ８１１によって該当信号を多重化候補から除外する禁止制約を生成する。これらステップ８０７からステップ８１１までは、多重化処理起動トリガ信号発行回数（変数Ｎ）が最低値「１」と一致するまで、ステップ８１２の判定によって繰り返されるものである。
【００７８】
前記ハードウェア連動エミュレーションを実行する第４工程は、多重化処理起動トリガ信号発行回数（上限値Ｎ）が値「１」（：最低値）であるか否かを判定し、一致しないと判定したときに前記ステップ８０７に戻るステップ８１２を含み、多重化処理起動トリガ信号発行回数が上限値「Ｎ」に達するまで、多重化クロック設定及び多段挿入制約条件の生成を繰り返す様に動作する。
【００７９】
前記ＦＰＧＡ用データの生成乃至エミュレーションを実行する第５工程及び第６工程は、多重化多段禁止の制約があるか否かを判定し、制約がないと判定したときには処理を終了するステップ８１３と、ステップ８１３において制約があると判定したとき、多重化禁止信号を除外するステップ８１４と、該多重化禁止信号を除外した論理回路に多重化回路を挿入するステップ８１５と、多重化クロックを設定するステップ８１６と、エミュレーションを実行するステップ８１７とから成る。尚、前記ステップ８０４とステップ８１５の処理内容は同一であるが、ステップ８１５にて出力される結果は、多重化回路の多段挿入が解消された結果である。
【００８０】
この様に本実施形態による論理エミュレーション方法は、論理エミュレーションプログラムが、トリガ信号発行回数を順次減少させる図８に示した第１工程から第６工程を実行することによって、時分割多重化論理回路の多段挿入を抑止した効率よいエミュレーションを行うことができる。
【００８１】
以上述べた如く本発明によれば、機能検証ターゲットである大規模論理回路の論理分割に際し、ＦＰＧＡの物理ピン数を超える論理信号の送受信を行うための時分割多重化論理回路が多段挿入されたことを検出できるチェック機能を有した時分割多重化論理回路を設け、この時分割多重化論理回路の駆動用クロックを、検証ターゲット論理回路を動作させるための１システムクロック期間中に、予め決定した多重化起動トリガ最大数分×ピン多重度分の発生させることにより、（処理時間が冗長となっても）一旦は正常動作を保障するエミュレーションを実行（第１工程〜第２工程）し、この後に、時分割多重化される当論理信号をＦＦによってデータ保持し、その論理信号を入力とするＥＯＲ（排他的論理和）の出力からなるデータ信号変化を検出するチェック機能により時分割多重化論理回路が多段挿入されている論理パスの箇所を特定（第３工程）し、この時分割多重化論理回路が多段挿入された位置情報を時分割多重化論理回路挿入禁止のための制約とし、その制約をもとに再度時分割多重化論理回路挿入を行う（第４工程〜第５工程）ことによって、時分割多重化論理回路の多段挿入が抑止された、動作周波数を低下させることのない効率的な時分割多重化論理回路挿入を行う論理エミュレーションが可能となる。
【００８２】
このため本実施形態によれば、複数のＦＰＧＡを搭載したエミュレーションボードを用いた論理エミュレーションを実施する場合において、ＦＰＧＡの物理ピン数を超えるデータ信号の送受信が必要となった場合、ひとつの論理パスに時分割多重化論理回路が多段挿入されることによる動作周波数低下を抑止でき、このため、クロックドメインや論理パスの解析が不要となり、効率的な時分割多重化論理回路挿入を行うことができる。
【符号の説明】
【００８３】
１０１，１１１，１４１，２０１，２１１，２４１：ＦＰＧＡ、１０２，１２４，１４７，２０２，２２４，２４７：組み合わせ論理回路、２０７：送信側機能ブロック、２０８：多重化信号、２１２：受信側機能ブロック、２１３：検出回路、２３０：送信側機能ブロック、２３１：多重化信号、２４２：受信側機能ブロック、２４３：検出回路、３０２：エミュレーションボード、３０４：ケーブル。
【図１】
2011070343.tif 000003
【図２】
2011070343.tif 000004
【図３】
2011070343.tif 000005
【図４】
2011070343.tif 000006
【図５】
2011070343.tif 000007
【図６】
2011070343.tif 000008
【図７】
2011070343.tif 000009
【図８】
2011070343.tif 000010