(57)【要約】      （修正有）【課題】方向制御のためのイネーブル情報の送受信を排除した高速、高効率な双方向バスの方向制御技術を提供する。【解決手段】入力ポート００５に接続されたバスの各信号線からの信号の論理積が供給されるイネーブル端子００９を備え、前記バスを構成する各信号線からの信号をそれぞれ増幅する論理シミュレータ側３ステートバッファ００１と、前記３ステートバッファの出力に接続した内部バス００７と、内部バスに接続した論理シミュレータ機能ブロックを備えた論理シミュレータ０４０と、複数の出力信号端子を備える検証ターゲット論理からの信号がそれぞれ供給されるイネーブル端子を備え、前記論理シミュレータ機能ブロックは、前記内部バスの状態を監視し、前記内部バスを構成する各信号線の電位の全てが所定の電位であるとき、エミュレーションボードと論理シミュレータを接続する双方向バスは非アクティブであると判断する。【選択図】図２
2009032072.tif 000002
【特許請求の範囲】
【請求項１】
入力ポートに接続されたバスの各信号線からの信号の論理積が供給されるイネーブル端子を備え、前記バスを構成する各信号線からの信号をそれぞれ増幅する論理シミュレータ側３ステートバッファと、
該バッファの出力を所定の電位点に接続するプルアップ抵抗と、
前記３ステートバッファの出力に接続した内部バスと、
該内部バスの状態を外部に出力ポートを介して出力する出力バッファと、
前記内部バスに接続した論理シミュレータ機能ブロックを備えた論理シミュレータと、
複数の出力信号端子を備える検証ターゲット論理からの信号がそれぞれ供給されるイネーブル端子を備え、前記検証ターゲット論理からの信号をそれぞれ増幅するエミュレーションボード側３ステートバッファと、
該バッファの出力を所定の電位点に接続するプルアップ抵抗と、
前記エミュレーションボード側３ステートバッファの出力を外部に出力する双方向ポートと、
該双方向ポートを介して受信した信号を前記検証ターゲット論理に供給する入力バッファを備え、
前記論理シミュレータ機能ブロックは、前記内部バスの状態を監視し、前記内部バスを構成する各信号線の電位の全てが前記プルアップ抵抗によりプルアップされた電位であるとき、前記エミュレーションボードと論理シミュレータを接続する双方向バスは非アクティブであると判断し、前記論理シミュレータ側からのデータ送信を許可することを特徴とする双方向バスの方向制御装置。
【請求項２】
請求項１記載の双方向バスの方向制御装置において、
前記論理シミュレータの入出力ポートとエミュレーションボードの双方向ポート間はＰＣＩバスを介して接続したことを特徴とする双方向バスの方向制御装置。
【請求項３】
請求項１記載の双方向バスの方向制御装置において、
論理シミュレータの前記内部バスには、セレクタを介して複数の論理シミュレータ機能ブロックを接続したことを特徴とする双方向バスの方向制御装置。
【請求項４】
請求項１記載の双方向バスの方向制御装置において、
エミュレーションボードは複数の検証ターゲット論理を備え、該複数の検証ターゲット論理をセレクタで切り替えて使用することを特徴とする双方向バスの方向制御装置。
【請求項５】
入力ポートに接続されたバスの各信号線からの信号の論理積が供給されるイネーブル端子を備え、前記バスを構成する各信号線からの信号をそれぞれ増幅する論理シミュレータ側３ステートバッファと、
前記３ステートバッファの出力に接続した内部バスと、
該内部バスに接続した論理シミュレータ機能ブロックを備えた論理シミュレータと、
複数の出力信号端子を備える検証ターゲット論理からの信号がそれぞれ供給されるイネーブル端子を備え前記検証ターゲット論理からの信号をそれぞれ増幅するエミュレーションボード側３ステートバッファと、
該３ステートバッファの出力を前記論理シミュレータに出力する双方向ポートを備え、
前記論理シミュレータ機能ブロックは、前記内部バスの状態を監視し、前記内部バスを構成する各信号線の電位の全てが所定の電位であるとき、前記エミュレーションボードと論理シミュレータを接続する双方向バスは非アクティブであると判断することを特徴とする双方向バスの方向制御方法。
【請求項６】
入力ポートに接続されたバスの各信号線からの信号の論理積が供給されるイネーブル端子を備え、前記バスを構成する各信号線からの信号をそれぞれ増幅する論理シミュレータ側３ステートバッファと、
前記３ステートバッファの出力に接続した内部バスと、
該内部バスの状態を外部に出力ポートを介して出力する出力バッファと、
前記内部バスに接続した論理シミュレータ機能ブロックを備えた論理シミュレータと、
複数の出力信号端子を備える検証ターゲット論理からの信号がそれぞれ供給されるイネーブル端子を備え、前記検証ターゲット論理からの信号をそれぞれ増幅するエミュレーションボード側３ステートバッファと、
前記エミュレーションボード側３ステートバッファの出力を外部に出力する双方向ポートと、
該双方向ポートを介して受信した信号を前記検証ターゲット論理に供給する入力バッファを備え、
前記論理シミュレータ機能ブロックは、前記内部バスの状態を監視し、前記内部バスを構成する各信号線の電位の全てが所定の電位であるとき、前記エミュレーションボードと論理シミュレータを接続する双方向バスは非アクティブであると判断することを特徴とする双方向バスの方向制御方法。
【請求項７】
入力ポートに接続されたバスの各信号線からの信号の論理積が供給されるイネーブル端子を備え、前記バスを構成する各信号線からの信号をそれぞれ増幅する論理シミュレータ側３ステートバッファと、
前記３ステートバッファの出力に接続した内部バスと、
該内部バスの状態を外部に出力ポートを介して出力する出力バッファと、
前記内部バスに接続した論理シミュレータ機能ブロックを備えた論理シミュレータと、
複数の出力信号端子を備える検証ターゲット論理からの信号がそれぞれ供給されるイネーブル端子を備え、前記検証ターゲット論理からの信号をそれぞれ増幅するエミュレーションボード側３ステートバッファと、
前記エミュレーションボード側３ステートバッファの出力を外部に出力する双方向ポートと、
該双方向ポートを介して受信した信号を前記検証ターゲット論理に供給する入力バッファを備え、
前記論理シミュレータ機能ブロックは、前記内部バスの状態を監視し、前記内部バスを構成する各信号線の電位の少なくとも１つが所定の電位でないとき、前記エミュレーションボードと論理シミュレータを接続する双方向バスはアクティブであると判断して、前記エミュレーションボードからの信号を論理シミュレータ側で読み取るリードシーケンスのみを実行することを特徴とする双方向バスの方向制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、双方向バスの方向制御技術に係り、特に、高速かつ高効率な方向制御を実現することのできる方向制御技術に関する。
【背景技術】
【０００２】
近年では、サーバあるいはネットワーク機器等の情報処理装置に適用される大規模集積回路（ＬＳＩ）の大規模化、多ピン化、小形化が進んでいる。このようなＬＳＩを設計する際には、設計したＬＳＩの論理検証精度を向上させるために、従来のソフトウェアによる論理シミュレーションに加え、プログラム可能な論理素子であるＦＰＧＡ(Field Programmable Gate Array)等をボードに搭載したエミュレーションボードを用いたハードウェア論理エミュレーション技術が用いられている。
【０００３】
このようなＬＳＩの大規模化の流れとアドレスバスのビット幅拡張を伴うアーキテクチャの進歩などにしたがって、ＦＰＧＡにマッピングする論理および論理シミュレータ間で送受信されるデータの信号の本数は増加の一途を辿っている。
【０００４】
一般に、ハードウェアデバイスと連動する論理エミュレーションでは、実行プラットフォームに依存した、たとえばＰＣＩ（Peripheral Components Interconnect）等のＰＣ搭載の標準インターフェースを採用したデータ通信によりエミュレーションボードとのデータ送受信を行う。また、前記エミュレーションボードに配置したブリッジ回路とＦＰＧＡ間についてもデータ送受信を行う必要がある。このため、配置可能なコネクタピン数は物理的に制限される。すなわち、１回のアクセスにて送受信できるデータ信号本数が制限される。したがって、このように物理的に制限された信号本数を効率良く使用することが必要不可欠となる。
【０００５】
エミュレーションボードに搭載されるＦＰＧＡにマッピングされる検証ターゲット論理は、双方向バスを含む場合がある。前記双方向バスを用いてデータ通信を行う場合、ＰＣからエミュレーションボードへ、あるいはエミュレーションボードからＰＣへというような、データをドライブする側がＰＣ側であるか、あるいはエミュレーションボード側の何れであるかを示すイネーブル情報を備えるのが通常である。
【０００６】
このようなイネーブル情報を備える場合、ＰＣＩバスを用いて前記ＰＣとエミュレーションボード間を接続するに際しては、エミュレーションボードに搭載したブリッジ回路とＦＰＧＡ間におけるデータ送受信に際して、双方向バス信号値のほかに、双方向バスの方向を示すイネーブル情報を同時に送付しなければならない。
【０００７】
特許文献１には、エミュレーションボード上のブリッジ回路とＦＰＧＡ間で、双方向バスを用いてデータ送受信する事例が二つ記載されている。これらの事例は、何れもインタフェース信号本数による制限に配慮した内容である。これらの事例の内、第１の事例では、時分割多重の方式を用い、双方向バスの方向属性とデータ値を順次送付し制御する方法である。第２の事例は、出力バッファのドライバビリティに強弱を持たせた回路を組み込むことにより、これらの信号同士にコンフリクトを発生させ、そのときの電圧レベル値からＦＰＧＡ側が信号をドライブしているかブリッジ回路側がドライブしているかを判断し方向を制御する方法である。
【特許文献１】特開２００４−１５７９８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述したように、論理エミュレーション環境を用いて機能検証を行う際の、ＰＣとエミュレーションボード上のＦＰＧＡ間におけるデータ送受信において双方向バス信号を取り扱う場合、データ入出力の方向を示すイネーブル情報を利用するのが一般的である。しかし、バス単位にイネーブル情報を送受信した場合、インタフェース信号本数が増加することになる。また、前記イネーブル情報は、バスの状態をもとに専用の論理により生成し、生成したイネーブル情報により双方向信号の方向切替えを行い、その後、双方向信号路にデータを送出するといったシーケンスを取るため、バスの方向切替え処理によるオーバーヘッドが存在する。
【０００９】
また、前記特許文献に示される第１の事例では、データ送受信時のパフォーマンスが低下し、また、時分割多重方式でデータを送受信するための論理回路による複雑な制御が必要となる。また、前記特許文献に示される第２の事例では、バスファイトを前提とした専用の回路が必要となる。
【００１０】
本発明はこれらの問題点に鑑みてなされたもので、方向制御のためのイネーブル情報の送受信を排除した高速、高効率な双方向バスの方向制御技術を提供するものである。
【課題を解決するための手段】
【００１１】
本発明は上記課題を解決するため、次のような手段を採用した。
【００１２】
入力ポートに接続されたバスの各信号線からの信号の論理積が供給されるイネーブル端子を備え、前記バスを構成する各信号線からの信号をそれぞれ増幅する論理シミュレータ側３ステートバッファと、該バッファの出力を所定の電位点に接続するプルアップ抵抗と、前記３ステートバッファの出力に接続した内部バスと、該内部バスの状態を外部に出力ポートを介して出力する出力バッファと、前記内部バスに接続した論理シミュレータ機能ブロックを備えた論理シミュレータと、複数の出力信号端子を備える検証ターゲット論理からの信号がそれぞれ供給されるイネーブル端子を備え、前記検証ターゲット論理からの信号をそれぞれ増幅するエミュレーションボード側３ステートバッファと、該バッファの出力を所定の電位点に接続するプルアップ抵抗と、前記エミュレーションボード側３ステートバッファの出力を外部に出力する双方向ポートと、該双方向ポートを介して受信した信号を前記検証ターゲット論理に供給する入力バッファを備え、前記論理シミュレータ機能ブロックは、前記内部バスの状態を監視し、前記内部バスを構成する各信号線の電位の全てが前記プルアップ抵抗によりプルアップされた電位であるとき、前記エミュレーションボードと論理シミュレータを接続する双方向バスは非アクティブであると判断し、前記論理シミュレータ側からの送信を許可する。
【発明の効果】
【００１３】
本発明は、以上の構成を備えるため、方向制御のためのイネーブル情報の送受信を排除した高速・高効率な双方向バスの方向制御技術を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、最良の実施形態を添付図面を参照しながら説明する。図１は、本実施形態にかかる双方向バスの方向制御装置（エミュレーションボードを備えた論理シミュレータに適用した例）の概要を説明する図である。
【００１５】
図１に示すように、テストベンチＳ０１はＰＣに搭載した論理シミュレータと呼ばれるソフトウェアにより構成される。また、エミュレーションボードＨ０１はＩＯアダプタＨ０２を介して接続される。
【００１６】
ＰＣはＩＯアダプタＨ０２を介して接続したエミュレーションボードＨ０１を動作させ、論理検証を行うことができる。このように、ＰＣが、論理シミュレーションにより行う論理検証の一部をハードウェア（エミュレーションボード）に行わせることにより、論理シミュレーションを加速させることができる。
【００１７】
図２は、双方向バスの方向制御装置をエミュレーションボードを備えた論理シミュレータに適用した例（第１の実施例）を説明する図である。この図の例では、双方向バス信号のイネーブル情報をテストベンチとエミュレーションボード間で送受信することなくバス方向を制御することができる。
【００１８】
論理シミュレータ（テストベンチ）側には、３ステートバッファ００１の入力として、Dio[n]信号０１１が接続される。ここで、[n]は、バスのビット幅を示し、任意ビット数分存在する。仮に[n]が３２ビットであると仮定した場合、３ステートバッファ００１も３２個実装される。３ステートバッファ００１の出力は、Do[n]信号０１０に接続され、内部バス００７に接続される。Dio[n]信号０１１は、バスのビット幅分全ての信号を入力として、ＡＮＤゲート００３に接続される。このDio[n]信号０１１の値が全て論理値'１'であれば、ＥＮで示されるイネーブル信号００９が論理値'１'を持ち、３ステートバッファ００１の出力はハイインピーダンスとなる。
【００１９】
Dio[n]信号０１１の値が１ビットでも論理値'０'であるならば、イネーブル信号００９は論理値'０'を持ち、Dio[n]信号０１１の値がDo[n]信号０１０に出力され、バス００７へ伝えられる。
【００２０】
３ステートバッファ００１の出力がハイインピーダンスの場合、Do[n]信号０１０に接続されるプルアップ抵抗００４により、Do[n]信号０１０の値は全て論理値'１'となる。なお、バス００７には、ＣＰＵモデルを含む論理機能ブロック００８が接続されており、Do[n]信号０１０を監視することで、バスのアクティブおよび非アクティブ状態を認識できる。
【００２１】
また、エミュレーションボード上に搭載する検証ターゲット論理０２５が非アクティブの場合で、論理機能ブロック（ＣＰＵモデル）側がバスマスタとなる場合において、検証ターゲット論理０２５に対しデータ送信するバッファとして、出力バッファ００２を備えている。なお、このバッファ００２は、Do[n]信号０１０を入力とし、Di[n]信号０１２を出力する。また、論理シミュレータ（テストベンチ）０４０の入力ポート００５より、Dio[n]信号０１１を入力し、出力ポート００６からはDi[n]信号０１２を出力する。
【００２２】
エミュレーションボード０７０側に搭載されるＦＰＧＡ０７２には３ステートバッファ０２１および入力バッファ０２２を実装する。３ステートバッファ０２１の入力側にはDo[n]信号０２６が入力される。このDo[n]信号０２６は、３ステートバッファ０２１のイネーブル信号をも兼ねており、３ステートバッファ０２１は、入力が論理値'０'の場合は'０'を出力し、入力が論理値'１'の場合は、ハイインピーダンスを出力する。すなわちＬｏｗアクティブ回路である。
【００２３】
Dio[n]信号０２８がハイインピーダンスの場合、３ステートバッファ０２１の出力に接続されるプルアップ抵抗０２３によりDio[n]信号０２８の値は全て論理値'１'となる。また、入力バッファ０２２は、Dio[n]信号０２８を入力とし、Di[n]０２７を出力する。なお、Do[n]信号０２６とDi[n]０２７は、それぞれ、検証ターゲット論理(ＤＵＴ)０２５に接続されている。
【００２４】
また、ＦＰＧＡ０７２の双方向ポート０２４には、Dio[n]信号０２８が入出力される。エミュレーションボード０７０には、専用のブリッジ回路０７１が搭載されており、ＦＰＧＡ０７２が複数搭載される場合などにおいてディスパッチャ（dispatcher）として機能する。ブリッジ回路０７１とＦＰＧＡ０７２間は、インタフェース信号本数を考慮し、双方向ポート０２４で接続される。また、論理シミュレータ（テストベンチ）０４０とエミュレーションボード０７０間は、ＡＰＩ（Application Program Interface）／デバイスドライバ０５０およびＩＯアダプタ０６０内に含まれるＰＣＩソケット０６１、０６２を経由してデータが送受信される。
【００２５】
ＡＰＩ／デバイスドライバ０５０は、論理シミュレータにて動作する論理シミュレータ（テストベンチ）０４０上のデータ信号をハードウェアと接続するためのソフトウェアであり、ＩＯアダプタ０６０を介してブリッジ回路０７１とデータ送受信を行う。
【００２６】
ＩＯアダプタ０６０を構成するＰＣＩバス規格はＰＣの標準的なインターフェース規格であり、このバス規格に準じた標準プロトコルによりデータ送受信が行われるようＡＰＩ／デバイスドライバ０５０が構築される。エミュレーションボード上に搭載されるブリッジ回路０７１は、ＩＯアダプタ０６０とＦＰＧＡ０７２間を仲介する回路であり、ＰＣＩバスプロトコルによってＩＯアダプタ０６０から送受信されるデータをＦＰＧＡ０７２上に構築される回路にデータ送受信する役割を持つ。また、ＦＰＧＡ０７２上に構築される論理回路を動作させる基準信号(Clock)を生成する機能を備え、ソフトウェアとハードウェア間の接続を仲介する。
【００２７】
上述したように、図２に示す装置においては、論理シミュレータ（テストベンチ）０４０でＬｏｗアクティブであるバス状態を監視するのみで、すなわち双方向バス信号のイネーブル信号を送受信することなく、双方向制御することが可能となる。
【００２８】
図３は、図２に示す装置を構成する論理回路の信号変化を説明する図である。この図の例では、バスの幅を８ビットと仮定し、論理シミュレータ（テストベンチ）のDi[n]信号０１２をh'AA（１６進表示）という論理値に設定して検証ターゲット論理DUTに送信した場合、検証ターゲット論理DUTは、バスの値（Do[n]信号０２６）を、論理h'00から、毎サイクル、インクリメントしながら出力すると仮定している。
【００２９】
前述のように、論理機能ブロック００８は、論理シミュレータ（テストベンチ）のＥＮ信号が'0'の場合にＤＵＴがアクティブ状態であり、ＥＮ信号が'1'の場合にＤＵＴが非アクティブ状態であると判断する。エミュレーションボード（ハードウェア）側のＤＵＴが非アクティブ状態である場合、ハードウェアはデータ信号をドライブしていない状態である。つまり、論理シミュレータ（テストベンチ）からハードウェアに対しデータを送信してもデータ衝突は起きない状態であり、論理シミュレータ（テストベンチ）側からデータ信号を出力することができる。
【００３０】
一方、エミュレーションボード（ハードウェア）側のＤＵＴがアクティブ状態である場合、ハードウェアがデータ信号をドライブしている状態にあるため、論理シミュレータ（テストベンチ）上のデータ信号方向は入力方向となり、ハードウェア側からのデータを論理シミュレータ（テストベンチ）側で受け取る必要がある。
【００３１】
次に、図３におけるデータ信号の流れを説明する。まず、検証ターゲット論理ＤＵＴが非アクティブ状態で、しかもテストベンチ上のデータ信号方向が出力方向であるタイミングにおけるDi[n]の論理値をh'AAとする。この論理値h'AAのデータ値は、ＡＰＩデバイスドライバを介しエミュレーションボード（ハードウェア）に送信され、ＦＰＧＡのDi[n]信号はh'AAの値となる。このとき、ＦＰＧＡ上のClock信号が立ち上がり、検証ターゲット論理が動作すると、ＦＰＧＡのDio[n]はh'00の値となる。このh'00の値は、ＡＰＩデバイスドライバを介し論理シミュレータ（テストベンチ）にDio[n]信号として送信される。
【００３２】
論理シミュレータ（テストベンチ）のDio[n]信号がh'00となった場合には、EN信号が'０'の値をとなる。このため、この時点からハードウェア側論理状態がアクティブであると判断する。ハードウェア側論理状態がアクティブである期間は、論理シミュレータ（テストベンチ）側の信号方向は入力であり、検証ターゲット論理ＤＵＴが、次のサイクルでインクリメントされて出力する値（h'01，h'02・・・）を順次読み込む。
【００３３】
なお、この図３の例では、検証ターゲット論理ＤＵＴを非アクティブ状態に遷移させる場合、データ値をh'FFとする必要がある。
【００３４】
図４は、論理シミュレータ（テストベンチ）が複数のバスを備え、エミュレーションボードが複数のノードを備える例（第２の実施例）を説明する図である。
【００３５】
図４に示す例は、図２に示す例に比して、論理シミュレータ（テストベンチ）１４０が複数のバス（バスＡ１０７とバスＢ１１６）を備える点、前記複数のバスを切り替えて３ステートバッファ１０１の出力（バッファ１０２の入力）に接続するセレクタ回路１１８、該セレクタ回路１１８による接続バス切替えを制御する切替えコントロール回路１１５、および該切替えコントロール回路１１５によりデコードされるバス番号に対応したバスのイネーブル状態を保持するとともにアクティブ判定を踏まえて内部バスにアクティブ報告を行うアクティブ判定回路１１９を備える点で相違する。
【００３６】
また、エミュレーションボード１７０上のＦＰＧＡ１７２に搭載する論理エミュレーションボードＤＵＴが複数のノードを備え、該複数のノードをそれぞれセレクタ回路１２９、１３０により切り替えて３ステートバッファ１２１の入力およびバッファ１２２の出力に接続している。また、セレクタ回路１２９、１３０による接続ノード切替えは、論理シミュレータ（テストベンチ１４０）の切替えコントロール回路１１５から出力されるSEL_s信号１１４（エミュレーションボード側ではSEL_h信号１３２）により行われる点で相違する。
【００３７】
まず、論理シミュレータ（テストベンチ）１４０は複数のバスを備えない（単一バス接続）場合で、且つ、ＦＰＧＡ１７２上のＤＵＴ１２５が複数のノードを備える場合について制御を説明する。ここで、論理シミュレータ（テストベンチ）１４０は単一バスのみの接続として説明するため、接続バスはバスＡ１０７とし、バスＢ１１６及びセレクタ回路１１８は存在しないものとし、Do[n]信号１１０は、バスＡ１０７と直結されているものと仮定する。
【００３８】
バス信号におけるイネーブル信号を論理シミュレータ（テストベンチ）とエミュレーションボード間で共有しない場合において、ＤＵＴにノードを複数持つ場合、それぞれのノードについて論理シミュレータ（テストベンチ）側から双方のノードに関する、双方向バスの値をリードしてアクティブ／非アクティブの判定をしなければならない。
【００３９】
この各ノードに対するリードのシーケンスとして、切替えコントロール回路１１５により、どのノードをアクセスするかを示すSEL_s信号１１４をデコードする。SEL_s信号１１４のビット幅は、ＤＵＴ内に含まれるノード数を選択可能な数値とする。図４で示す例のように、ＤＵＴ内に２ノード存在する場合、SEL_s信号１１４のビット幅は１ビットでよく、SEL_s信号１１４の値が'０'の場合はノード１、SEL_s信号１１４の値が'１'の場合はノード２をアクセスできるとした場合、そのノード選択情報は、FPGA１７２のSEL_h信号１３２によりセレクタ回路１２９、１３０を切り替えて接続ノードを切り替える。
【００４０】
論理シミュレータ（テストベンチ）上の毎クロックサイクルに同期したアクセスとして、まずSEL_s信号１１４を'０'にデコードし、ノード１側のDio[n]信号１２８をリードする。このDio[n]信号１２８は、Dio[n]信号１１１に伝えられ、双方向バス信号のすべてのビットが'１'以外の状態であれば、ＥＮ信号１０９が'０'となり、それ以外の状態であればＥＮ信号１０９が'１'となる。EN信号１０９の状態は、アクティブ判定回路１１９内にSEL_s信号のデコード値とともに保持される。次に、SEL_s信号１１４を'1'にデコードし、ノード２側のDio[n]信号１２８についてもリードし、ＥＮ信号１０９の値を、アクティブ判定回路１１９内にSEL_s信号１１４のデコード値とともに保持する。
【００４１】
ＤＵＴに搭載されたノード数分のリード完了後、アクティブ判定回路１１９内に保持したノード数分のＥＮ信号状態をチェックし、アクティブ／非アクティブを判断する。ここで、同時に保持したSEL_s信号１１４の値から、アクティブであるノード番号を判断することも可能となる。アクティブ判定回路１１９からのEN_a信号１２０は、バスＡ１０７に接続され、ノード番号を含めたバスのアクティブ／非アクティブを示すイネーブル情報として渡される。
【００４２】
次に、論理シミュレータ（テストベンチ）１４０に、複数のバス（バスＡ１０７、バスＢ１１６）が接続される場合における制御について説明する。バス同士は、セレクタ回路１１８により接続を切替えることが可能なように実装される。バスの切替えに際しては、切替えコントロール回路１１５によりデコードされるSEL_s信号１１４を用いる。ひとつのバスに、ＤＵＴ内に含まれるノードが１つ接続される構成であれば、前述した通り、１ビットからなるSEL_s信号１１４の値にしたがって、すなわち、前記値が論理値'０'であれば、バスＡ１０７と接続されるノードとしてノード１を対応させ、論理値'1' であれば、バスＢ１１６にノード２を対応させ、それぞれの双方向バスの値からＥＮ信号１１９を生成し、この値をもとにバスがアクティブであるか非アクティブであるかを判断することが可能となる。
【００４３】
３以上の複数バスに、それぞれノードが複数接続される場合においては、切替えコントロール回路１１５によりデコードされるSEL_s信号１１４のビット幅を増加させ、バス制御及びFPGA上のノード制御を行うことで、個々のイネーブル／非イネーブル状態を監視することができる。
【００４４】
図５は、単一のバス（例えばバスＡ）に一つのノード（ノード１）が接続される場合において、論理シミュレータ（テストベンチ）からＦＰＧＡにアクセスする際の手順（アクティブ／非アクティブの判定なし）を説明する図である。図に示すように、論理シミュレータ（テストベンチ）０４０からのＦＰＧＡ０７２に対する書き込みデータ（Ｓｉｍライトデータ）は、ＡＰＩ／デバイスドライバ０５０、ＩＯアダプタ０６１，０６２によるＰＣＩ通信、およびブリッジ回路０７１を介してＦＰＧＡの検証ターゲット論理ＤＵＴにDi[n]信号として供給される（ステップＳ２０１〜２０６）。
【００４５】
次いで、ＦＰＧＡにクロック(clock)が供給されると、検証ターゲット論理ＤＵＴはエミュレーション結果としてDo[n]信号を出力する（ステップＳ２０７）。
【００４６】
次いで、前記Do[n]信号は、ＦＰＧＡ０７２、ブリッジ回路０７１、ＩＯアダプタ０６０、ＡＰＩ／デバイスドライバ０５０を介して論理シミュレータに供給される（ステップＳ２０８〜２１３）。ステップＳ２０８〜２１３の処理によりＦＰＧＡにより演算された値（双方向バスの値）を論理シミュレータ（テストベンチ）側に取り込むことができる。これら一連の動作により、論理シミュレータ（テストベンチ）とＦＰＧＡを上の検証ターゲット論理を連動させることができる。
【００４７】
図６は、単一のバスに一つのノードが接続される場合において、論理シミュレータ（テストベンチ）からＦＰＧＡにアクセスする際の手順（アクティブ／非アクティブの判定あり）を説明する図である。
【００４８】
図に示すように、イネーブル信号をもとにバス状態がアクティブであるか非アクティブであるかを判定し、バスがアクティブである場合はステップＳ３０８に進み、非アクティブである場合はステップＳ３０２に進む（ステップＳ３０１）。ステップＳ３０２において、論理シミュレータ（テストベンチ）０４０からのＦＰＧＡ０７２に対する書き込みデータ（Ｓｉｍライトデータ）は、ＡＰＩデバイスドライバ０５０、ＩＯアダプタ０６１，０６２によるＰＣＩ通信、およびブリッジ回路０７１を介してＦＰＧＡの検証ターゲット論理ＤＵＴにDi[n]信号として供給される（ステップＳ３０２〜３０６）。
【００４９】
次いで、ＦＰＧＡにクロック(clock)が供給されると、検証ターゲット論理ＤＵＴはエミュレーション結果としてDo[n]信号を出力する（ステップＳ３０７）。
【００５０】
次いで、前記Do[n]信号は、ＦＰＧＡ０７２、ブリッジ回路０７１、ＩＯアダプタ０６０、ＡＰＩデバイスドライバ０５０を介して論理シミュレータに供給される（ステップＳ３０８〜３１３）。ステップＳ３０８〜３１３の処理によりＦＰＧＡにより演算された値（双方向バスの値）を論理シミュレータ（テストベンチ）側に取り込むことができる。これら一連の動作により、論理シミュレータ（テストベンチ）とＦＰＧＡを上の検証ターゲット論理を連動させることができる。
【００５１】
ＦＰＧＡ搭載回路から論理シミュレータ（テストベンチ）に双方向バスの値をリードするシーケンス（ステップＳ３０８〜３１４）が完了後、バス状態がアクティブであるか非アクティブであるかを示すイネーブル情報を論理シミュレータ（テストベンチ）で判定している。このため、次サイクルにおいて、バスがアクティブであれば、双方向バスに対するライトシーケンス（ステップＳ３０２〜３０７）を行わず、ＦＰＧＡに搭載された検証ターゲット論理を動作させるクロックを発生させる処理を含むリードシーケンス（ステップＳ３０８〜３１４）を実施することで、高速化を図ることが可能である。
【００５２】
ここで、検証ターゲット論理ＤＵＴが非アクティブとなれば、ＥＮで示されるイネーブル信号が論理値'０'とされるため、論理シミュレータ（テストベンチ）は双方向バスに対し、ライト動作を行うことができる。
【００５３】
以上説明したように、本発明の実施例によれば、例えばＬｏｗアクティブの論理回路（ＤＵＴ）をＦＰＧＡ上の双方向バス信号線に備え、前記論理回路がＬｏｗレベルを出力しない場合は、プルアップ抵抗により、Ｈｉｇｈレベル信号を出力し、この信号をブリッジ回路側で読み取る。また、論理シミュレータ（テストベンチ）は、前記読み取った信号値から、バスの各ビットに対応した信号が１本でもＬｏｗであれば、ＦＰＧＡ上の検証ターゲット論理がアクティブと判断するイネーブル信号を生成し、これを双方向バスの方向制御に使用する。ＦＰＧＡ側の検証ターゲット論理が非アクティブの場合も考慮し、論理シミュレータ（テストベンチ）側の双方向信号にも、プルアップ抵抗を設け、これら回路の組み合わせにより、多ノードの検証ターゲット論理ＤＵＴと複数の内部バス（Ａ，Ｂ）との接続を可能にしている。
【００５４】
また、ＰＣとエミュレーションボード上のＦＰＧＡ間を伝送レートの低いＰＣＩインタフェースを介して接続する場合においても、双方向バスのイネーブル情報が送受信データに含まれないように設定しているため、パフォーマンスを低下させることなくデータ送受信を行うことができる。
【００５５】
このように、方向制御のためのイネーブル情報の送受信を排除し、双方向データ信号値から双方向バスの方向制御を行うため、専用回路による複雑な方向制御を排除し、高速、高効率な双方向バス制御が可能となる。
【図面の簡単な説明】
【００５６】
【図１】双方向バスの方向制御装置の概要を説明する図である。
【図２】第１の実施例を説明する図である。
【図３】図２に示す装置を構成する論理回路の信号変化を説明する図である。
【図４】第２の実施例を説明する図である。
【図５】論理シミュレータからＦＰＧＡにアクセスする際の手順を説明する図である。
【図６】論理シミュレータからＦＰＧＡにアクセスする際の手順を説明する図である。
【符号の説明】
【００５７】
００１，０２１  ３ステートバッファ
００２，０２２  バッファ
００３  ＡＮＤゲート
００４，０２３  プルアップ抵抗
００５，００６  信号ポート
００７  内部バス
００８  論理機能ブロック
００９  イネーブル信号
０１０，０１１，０１２，０２６，０２７，０２８  データ信号
０２４  双方向ポート
０２５  ＤＵＴ（検証ターゲット論理）
Ｓ０１，０４０  論理シミュレータ（テストベンチ）
０５０  ＡＰＩデバイスドライバ
Ｈ０２，０６０  ＰＣＩ  ＩＯアダプタ
０６１，０６２  ＰＣＩソケット
Ｈ０１，０７０  エミュレーションボード
０７１  ブリッジ回路
０７２  ＦＰＧＡ
１０１，１２１  ３ステートバッファ
１０２，１２２  バッファ
１０３  ＡＮＤゲート
１０４，１２３  プルアップ抵抗
１０５，１０６，１１３，１３１  信号ポート
１０７，１１６  内部バス信号
１０８，１１７  論理機能ブロック
１０９  イネーブル信号
１１０，１１１，１１２，１２６，１２７，１２８  データ信号
１１４，１３２  セレクト信号
１１５  切り替えコントロール回路
１１８，１２９，１３０  セレクタ回路
１１９  バスアクティブ判定回路
１２０  バスイネーブル信号
１２４  双方向ポート
１２５  ＤＵＴ（検証ターゲット論理）
１４０  論理シミュレータ（テストベンチ）
１５０  ＡＰＩデバイスドライバ
１６０  ＰＣＩ  ＩＯアダプタ
１６１，１６２  ＰＣＩソケット
１７０  エミュレーションボード
１７１  ブリッジ回路
１７２  ＦＰＧＡ
【図１】
2009032072.tif 000003
【図２】
2009032072.tif 000004
【図３】
2009032072.tif 000005
【図４】
2009032072.tif 000006
【図５】
2009032072.tif 000007
【図６】
2009032072.tif 000008