(57)【特許請求の範囲】
【請求項１】
エミュレーションの対象となる論理を搭載可能な複数の集積回路装置と、
それらの集積回路装置に搭載された前記論理の入力端に供給する入力データを生成し、前記論理の出力端に出力された出力データを評価可能な制御手段と、
前記入力データを前記制御手段から前記入力端にシリアル転送し、前記入力データにより前記出力端に発生した前記出力データをラッチして前記集積回路装置から前記制御手段へシリアル転送可能なデータ転送手段とを有し、
前記制御手段は、前記出力データによって前記入力データを更新する手段と、前記出力データの安定状態を評価する手段と、前記出力データが安定すると次の検証用の前記入力データを生成する手段とを備えており、
前記データ転送手段は、前記出力データが安定するまで繰り返し前記入力データおよび出力データを転送可能なエミュレーション装置。
【請求項２】
請求項１において、前記データ転送手段は、前記入力端に入力データをシリアル転送し、前記出力端から出力データをシリアル転送するシフトレジスタを備えており、このシフトレジスタは、前記集積回路装置内のレジスタにより構成されているエミュレーション装置。
【請求項３】
請求項１または２において、前記データ転送手段は、少なくとも前記集積回路装置毎に前記入力データまたは前記出力データを転送する配線を備えているエミュレーション装置。
【請求項４】
請求項１ないし３のいずれかにおいて、前記制御手段は、前記入力データに対する前記出力データを供給可能なソフトウェアシミュレータとのインタフェース手段を備えているエミュレーション装置。
【請求項５】
請求項１ないし４のいずれかにおいて、前記複数の集積回路装置の少なくとも１つは、ＦＰＧＡであるエミュレーション装置。
【請求項６】
エミュレーションの対象となる論理を搭載可能な複数の集積回路装置と、それらの集積回路装置に搭載された前記論理の入力端に供給する入力データを生成し、前記論理の出力端に出力された出力データを評価可能な制御手段と、前記入力データを前記制御手段から前記入力端にシリアル転送し、前記入力データにより前記出力端に発生した前記出力データをラッチして前記集積回路装置から前記制御手段へシリアル転送可能なデータ転送手段とを有するエミュレーション装置の制御方法であって、
前記出力データが安定するまで、前記データ転送手段により、前記出力データにより更新した前記入力データおよびそれによる出力データを繰り返し転送するデータ転送工程と、
前記出力データが安定すると次の検証用の前記入力データを転送する工程とを有するエミュレーション装置の制御方法。
【請求項７】
請求項６において、前記データ転送工程では、少なくとも前記集積回路装置毎に前記入力データまたは前記出力データを転送するエミュレーション装置の制御方法。
【請求項８】
請求項６または７において、前記データ転送手段は、前記入力端に入力データをシリアル転送し、前記出力端から出力データをシリアル転送するシフトレジスタを備えており、このシフトレジスタは、前記集積回路装置内のレジスタにより構成されているエミュレーション装置の制御方法。
【請求項９】
請求項６ないし８のいずれかにおいて、前記複数の集積回路装置の少なくとも１つは、ＦＰＧＡであるエミュレーション装置の制御方法。
【請求項１０】
エミュレーションの対象となる論理を搭載可能な複数の集積回路装置と、それらの集積回路装置に搭載された前記論理の入力端に供給する入力データを生成し、前記論理の出力端に出力された出力データを評価可能な制御手段と、前記入力データを前記制御手段から前記入力端にシリアル転送し、前記入力データにより前記出力端に発生した前記出力データをラッチして前記集積回路装置から前記制御手段へシリアル転送可能なデータ転送手段とを有するエミュレーション装置の制御プログラムであって、
前記出力データが安定するまで、前記データ転送手段により、前記出力データにより更新した前記入力データおよびそれによる出力データを繰り返し転送するデータ転送工程と、
前記出力データが安定すると次のロジックの前記入力データを転送する工程とを実行可能な命令を有するエミュレーション装置の制御プログラムが記録されていることを特徴とする記録媒体。
【請求項１１】
請求項１０において、前記データ転送工程では、少なくとも前記集積回路装置毎に前記入力データまたは前記出力データを転送する処理を実行可能なエミュレーション装置の制御プログラムが記録されていることを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＬＳＩまたはＶＬＳＩと称される半導体集積回路装置の開発に有用なエミュレーション装置および方法に関するものである。
【０００２】
【従来の技術】
大規模化および微細化が進行する半導体集積回路装置、特に、システムＬＳＩあるいはＶＬＳＩと称される集積回路装置においては、論理ゲート規模において数百万ゲートにもなるものが開発されている。しかしながら、このような大規模な半導体集積回路装置（以降においてはＬＳＩ）では、開発にかかる時間とコストが膨大になりつつある。特に、システムＬＳＩの評価・検証は大規模化するにつれ困難な問題となっている。
【０００３】
【発明が解決しようとする課題】
近年、大規模高速化の進展の著しいフィールドプログラマブルゲートアレイ（以降においてはＦＰＧＡ）を使用したエミュレーション・システムが提供されている。ＦＰＧＡは、フィールドプログラム可能な半導体装置であり、プログラミングを随時設定あるいは変更することが可能である。このため、所望の論理を実行可能なゲートアレイをシリコンプロセスから始めなくても得ることができる。そして、システムＬＳＩを開発する際に、その機能（要求仕様）を複数のＦＰＧＡに分割して実現することにより、評価・検証を行うためのシステムＬＳＩのエミュレーション・システムまたはプロトタイピングを得ることができる。このため、ＦＰＧＡを用いたエミュレーション・システムは大規模なシステムＬＳＩの開発においては必須のシステムとなりつつある。
【０００４】
従来のエミュレーション・システムにおいては、あらかじめ複数のＦＰＧＡが、接続情報だけをフィールドでプログラム可能なフィールドプログラマブルインターコネクトデバイス（ＦＰＩＤ）またはフィールドプログラマブルインターコネクトチップ（ＦＰＩＣ）といった半導体装置（以下、両者を代表してＦＰＩＣと呼ぶ）を経由して接続された装置が提供されている。そして、エミュレーションしたい論理は、エミュレーション・システムの複数のＦＰＧＡに分割して実行できるように複数の実装用のプログラム（通常はレジスタレベルの記述言語ＲＴＬで記述される）として提供され、さらに、生成したＲＴＬに基づき、これらのＦＰＧＡ間の結線状態をＦＰＩＣにより確定する。このようなエミュレーション・システムの適当なデータを入力し、所望のデータが出力されるか否かにより、実際のシステムＬＳＩに近い状態で、開発されたシステムＬＳＩの動作を検証することが可能となる。
【０００５】
しかしながら、プログラマブルなＦＰＧＡを用いたエミュレーション・システムは、システムＬＳＩで実現しようとするロジックをプログラムレベルでフレキシブルにＦＰＧＡに実装できる半面、ＦＰＧＡに実装可能な論理の面積効率は低いのでシステムＬＳＩに実装する論理をエミュレートするためには複数のＦＰＧＡを用いる必要がある。したがって、複数のＦＰＧＡを入力端および出力端を接続するために膨大な配線を用意する必要があり、配線基板を含めてエミュレーション・システムが大型化し、製造コストも高くなる。特に、ＦＰＧＡに実装する論理に合致する配線を搭載した配線基板を設計および製造するために費やされる時間とコストは大きい。
【０００６】
さらに、ＦＰＧＡに実装した論理を何らかの都合により変更あるいは追加する必要が生ずることは性能を評価する段階では通常発生することであり、ＦＰＧＡを用いたエミュレーション・システムでは、ＦＰＧＡに実装された論理はプログラムレベルで変更できるので対処が容易である。しかしながら、各ＦＰＧＡに実装される論理の変更に伴ってＦＰＧＡ間を接続する配線も変更する必要があり、配線量が膨大であると、その変更に手間とコストが必要となる。したがって、設計ミスを見つけてから次の検証を行うまでのＴＡＴ（Turn Around Time）はＦＰＧＡを採用することにより短縮されたとはいえ、システムＬＳＩの処理対象となるゲームや画像処理系のアプリケーションの開発速度に対して十分とは言えない。
【０００７】
そこで、本発明においては、複数の集積回路装置、特に、ＦＰＧＡを用いたエミュレーション・システムにおいて、さらに低コストで短期間に供給可能なエミュレーション装置およびその制御方法を提供することを目的としている。さらに、配線も含めて修正のためのフレキシビリティを確保することができるエミュレーション装置およびその制御方法を提供することを目的としている。そして、ＴＡＴをさらに短縮し、アプリケーションなどの開発速度に対して十分に対処できる期間でシステムＬＳＩを開発することができるエミュレーション装置およびその制御方法を提供することを目的としている。
【０００８】
【課題を解決するための手段】
このため、本発明のエミュレーション装置においては、システムＬＳＩを開発する際に、エミュレーションの対象となるロジックが搭載されるＦＰＧＡなどの集積回路装置の入力端および出力端を個々に配線で接続するのではなく、入力端および出力端をスキャンし、それぞれの端末におけるデータをシリアル転送している。このため、配線量を大幅に低減することが可能となり、それと共に、ＦＰＧＡに実装される論理に対する配線の依存性をなくすことにより、個々のエミュレーション装置あるいは評価段階における修正および変更に対する配線および配線基板の物理的な設計および変更をほとんど無くすことが可能となる。したがって、低コストで、製造期間が短く、さらに配線も含めて修正のためのフレキシビリティの確保されたエミュレーション装置を提供することができる。
【０００９】
すなわち、本発明のエミュレーション装置は、エミュレーションの対象となる論理を搭載可能な少なくとも１つの集積回路装置と、その集積回路装置に搭載された論理の入力端に供給する入力データを生成し、集積回路装置に搭載された論理の出力端に出力された出力データを評価可能な制御手段と、入力データを制御手段から入力端にシリアル転送し、その入力データにより出力端に発生した出力データをラッチして集積回路装置から制御手段へシリアル転送可能なデータ転送手段とを有する。本発明のエミュレーション装置においては、入力データおよび出力データを、制御手段との間でシリアル転送するため、入力端あるいは出力端を、個別の配線により１対１あるいは１対多で接続する必要がない。したがって、配線量を大幅に低減することができる。
【００１０】
また、制御手段から入力端にシリアル転送する入力データの順番を変えることにより入力端の変更に柔軟に対処することが可能であり、同様に、出力端からシリアル転送される出力データの順番の制御手段における認識を変えることにより出力端の変更にも柔軟に対処できる。したがって、集積回路装置にＦＰＧＡなどのフィールドプログラマブルな半導体装置を採用したときに、それらに実装される論理を変更して入力端あるいは出力端が変更になったときでも、配線自体は変更しないで制御手段のプログラムあるいは接続を変更することにより対処できる。このため、配線の接続変更も含めて論理の変更に非常に短時間にフレキシブルに対処できるエミュレーション装置を提供できる。さらに、配線自体は、ＦＰＧＡに実装される論理に左右されないので、集積回路装置を搭載する配線基板を事前に製造することも可能となり、短期間に低コストで供給可能なエミュレーション装置を提供することができる。
【００１１】
論理を複数のＦＰＧＡに分けて実装するため、本発明のエミュレーション装置においては、入力端および出力端は、１対１あるいは１対多で接続されていないので、出力データが安定するまで、あるＦＰＧＡの出力データに基づき、他のＦＰＧＡの入力データを変更して繰り返し供給し、安定すると次のロジックの入力データを供給するというプロセスでエミュレーションが進行する。すなわち、本発明のエミュレーション装置は、制御手段が、出力データによって入力データを更新する手段と、出力データの安定状態を評価する手段と、出力データが安定すると次のロジックの入力データを生成する手段とを備えており、データ転送手段は、出力データが安定するまで繰り返して入力データおよび出力データを転送可能である。
【００１２】
また、本発明の、複数の集積回路装置と、それらの集積回路装置に搭載された論理の入力端に供給する入力データを生成し、集積回路装置に搭載された論理の出力端に出力された出力データを評価可能な制御手段と、入力データを制御手段から入力端にシリアル転送し、入力データにより出力端に発生した出力データをラッチして集積回路装置から制御手段へシリアル転送可能なデータ転送手段とを有するエミュレーション装置は、出力データが安定するまで、データ転送手段により、出力データにより更新した入力データおよびそれによる出力データを繰り返し転送するデータ転送工程と、出力データが安定すると次のロジックの入力データを転送する工程とを有する制御方法により制御されることが望ましい。このような制御方法は、ハードワイヤードロジックにより実現することも可能であるし、上記の工程を実行可能な命令を有する制御プログラムにより制御することも可能である。これらの制御プログラムは、ＲＯＭあるいはメモリカードなどのコンピュータ読取可能な適当な記録媒体に記憶して、あるいはインターネットなどのコンピュータ間の通信により伝送可能な伝送媒体に埋め込んで提供することができる。
【００１３】
データ転送手段および工程では、入力データおよび出力データを、複数の集積回路装置の入力端および出力端に対して順番にシリアルに入出力するようにしても良い。すなわち、複数の集積回路装置の入力端および出力端を１つの共通の配線で接続し、シリアルに入力データおよび出力データを転送することができ、配線量を最小限にすることができる。しかしながら、データの転送時間を短縮するには複数の配線を用いてある程度入力データおよび出力データを並列に転送できることが望ましい。したがって、データ転送手段としては、少なくとも集積回路装置毎に入力データまたは出力データを転送する配線を設け、データ転送工程では、少なくとも集積回路装置毎に入力データまたは出力データを転送することが望ましい。
【００１４】
集積回路装置に搭載された論理の入力端および出力端は、集積回路装置の外部接続されるように配置された入出力ピンなどであっても良い。しかしながら、その場合は、入力データおよび出力データの量は入出力ピンの数に限定される。これに対し、集積回路装置に搭載された論理の入力端に入力データをシリアル転送し、出力端から出力データをシリアル転送するシフトレジスタを、ＦＰＧＡなどのプログラム可能な集積回路装置内のレジスタにより構成することが可能であり、入力端および出力端を集積回路装置内に設定することも可能である。このような構成をバウンダリースキャンと本明細書では称することにするが、この場合は、入出力ピンの数に限定されずに入力データおよび出力データを選択することが可能であり、フレキシビリティがさらに大きくなる。また、入出力ピン数が少なくても多くの入力データおよび出力データを制御手段との間で交換できるので、低コストな集積回路装置によりエミュレーション・システムを構築することも可能となる。
【００１５】
制御手段に、入力データに対する出力データを供給可能なソフトウェアシミュレータとのインタフェース手段を設け、本発明のエミュレーション装置で出力データが安定する時間と、ソフトウェアシミュレータから出力データが得られる時間とが同程度になるようにすれば、データをシリアル転送することによる時間遅れが発生しても実質的にはストレスなくシステムＬＳＩ用に開発された論理の評価を行うことができる。そして、本発明のエミュレーション装置は、初期の製造および仕様変更などに伴う論理の変更にも短時間でフレキシブルに対処できる。したがって、本発明により、システムＬＳＩを開発および設計するためのＲＴＬを評価する時間およびコストを最小限にすることができるエミュレーション装置およびその制御方法を提供することができる。
【００１６】
【発明の実施の形態】
以下に図面を参照して本発明の実施の形態を説明する。図１に、本発明にかかるエミュレーション装置１を示してある。本例のエミュレーション装置１は、配線基板２と、この配線基板２に実装された複数のＦＰＧＡ３と、制御回路部１０とを備えており、配線群２０によりＦＰＧＡ３と制御回路部１０がそれぞれ接続され、各ＦＰＧＡ３にはエミュレーションの対象となる論理（ＲＴＬ）６４が搭載されている。配線群２０には、制御回路部１０から各ＦＰＧＡ３に入力データφｉをシリアル転送し、各ＦＰＧＡ３から制御回路部１０へ出力データφｏをシリアル転送するデータ転送配線２１と、データ転送配線２１でデータ転送する際のクロック（転送用クロック）φｃｔを供給するクロック配線２５と、各ＦＰＧＡ３に搭載されたロジックを実行するためのクロック（実行用クロック）φｃｅを供給するクロック配線２８が含まれている。
【００１７】
図２に、本例のエミュレーション・システム１を用いたシステムＬＳＩの開発手順を示してある。まず、システムＬＳＩとして実現するシステム仕様（要求仕様）５１が与えられる。システム仕様は言語で書かれるとすればＣ言語で記述されるのが通常である。次に、ステップ５２で、そのシステム仕様を機能分割し、かつ、ＲＴＬ（レジスタ−トランジスタ言語）に変換あるいは生成する。従って、この段階で複数のＲＴＬが、要求仕様を実現するための初期論理として生成される。Ｃ言語により提供されるシステム仕様５１ではクロック・タイミングまたはレジスタという概念は明確には規定されず、あくまでもＬＳＩに要求される機能仕様の完全な記述に専念される。一方、ステップ５２で生成されるＲＴＬでは、レジスタの概念が明確に規定されている必要がある。したがって、ステップ５２の処理は、システム仕様を示すＣ言語からＲＴＬへの変換といった単なるプログラミング言語の変換というよりレジスタレベルの設計（論理設計）そのものであるといえる。そして、レジスタの概念が明確となったＲＴＬがエミュレーション・システムへの入力、すなわち初期論理となる。
【００１８】
これに続いて、ステップ５３で、初期論理である複数のＲＴＬが、エミュレーション・システム１を構成する複数のＦＰＧＡ３に対応し、各々のＦＰＧＡ３に実装および実現できる論理の大きさを考慮してさらに分割および細分化される。この段階で、各ＦＰＧＡ３にインストールしてシミュレーションする実装用のＲＴＬと、それに基づく各ＦＰＧＡ内の接続情報５４が生成され、同時に、初期論理を実現するために各ＦＰＧＡを接続する結線情報、すなわち、各ＦＰＧＡの間の結線情報５５も生成される。
【００１９】
そして、ステップ５６で実装用のＲＴＬを、エミュレーション・システムを構成する各ＦＰＧＡ３の論理素子を用いて論理合成する。すなわち、ＦＰＧＡ３をＲＴＬに基づきプログラミングする。それと共に接続情報に基づいてＦＰＧＡ内をマッピング（配線配置）する。また、ステップ５７で、結線情報５５に基づいて本例のエミュレーション・システム１において各ＦＰＧＡ３を接続する制御回路部１０の内の、入力データφｉを生成するデータ生成部１１や、出力データφｏに基づき入力データφｉを更新するデータ更新部１２などをマッピングする。
【００２０】
これにより、複数のＦＰＧＡ３を制御回路部１０で接続したエミュレーション・システム１が、上記のように設計した初期論理に基づくＲＴＬによる論理を検証できるプロトタイプ・ボードとなるので、ステップ５８でこのプロトタイプ・ボード１による評価を行う。そして、ステップ５９で評価が良ければ、ステップ５２で生成したＲＴＬによる論理回路をステップ６０でシリコン化してＬＳＩを製造する。これにより、要求仕様にしたがった機能を発揮するＬＳＩを提供することができる。
【００２１】
一方、評価の結果、ＲＴＬあるいは各ＦＰＧＡ３を接続する結線情報に修正の必要がある場合には再度処理を行う。このような場合は、ステップ６１で分割前のＲＴＬを修正し、さらにそれを分割して再びＦＰＧＡに実装するといった修正工程をとることが一般的であり、修正されたＲＴＬをＦＰＧＡ３に合わせて分割し、さらに、それとともに得られる結線情報５５に基づき制御回路部１０のデータ生成部１１やデータ更新部１２などをマッピングする。本例のエミュレーション・システム１においては、入力データφｉおよび出力データφｏがＦＰＧＡ３と制御回路部１０との間で配線２１を介してシリアル転送されるようになっている。このため、論理変更に伴う結線情報５５の変更は制御回路部１０の内部でプログラムなどにより処理することが可能であり、基板１の配線群２０を変更することなく変更あるいは修正したロジック（ＲＴＬ）に基づき即座に次の評価作業を行うことができる。
【００２２】
本例のエミュレーション・システム１においては、入出力データをシリアル転送するデータ転送手段として、制御回路部１０のデータ入出力部１５には、各ＦＰＧＡ３との間で転送する入力データφｉおよび出力データφｏに対応したデータ転送用の入力ｄデータ用のシフトレジスタ１７と、出力データ用のシフトレジスタ１８とが設けられている。さらに、各ＦＰＧＡ３には、内部のレジスタを用いて入力データ用のシフトレジスタ４と、出力データ用のシフトレジスタ５とが設けられ、各ＦＰＧＡ３に搭載されたロジックの入力端および出力端として動作し、それらとの間でデータを入出力できるようになっている。そして、これらのシフトレジスタ１７および１８、シフトレジスタ４および５が、データ転送用の配線２１により接続されている。すなわち、ＦＰＧＡ３に搭載されたロジックの入力端および出力端と制御回路部１０との間でデータをシリアル転送する手段が、制御回路部１０のシフトレジスタ１７および１８と、各ＦＰＧＡ３のシフトレジスタ４および５と、これらを接続する配線２１により構成されており、各ＦＰＧＡ３にインストールされたロジック境界における信号を制御回路部１０によりスキャンできる構成となっている。したがって、以降においては、このような方法で入出力データをシリアル転送することをバウンダリースキャン（Boundary Scan、ＢＳ）と称することにする。
【００２３】
特に、本例のエミュレーション・システム１においては、ＦＰＧＡ３の内部レジスタを用いてデータ転送用のシフトレジスタを構成することにより、一般の入出力ピンの量に限定されることなく入力データおよび出力データの数を決めることが可能であり、入力データおよび出力データの数が多くなった場合でも、配線量あるいは配線可能な面積などに限定されずにシリアル転送することができる。したがって、エミュレーションする際に、モニターできる信号量は非常に多くなり、ロジックの内部状態なども含めてモニターすることが可能となる。
【００２４】
さらに、本例のエミュレーション・システム１においては、バウンダリースキャンを構成する複数のシフトレジスタにセットする、あるいはセットされるデータを変えることにより、結線情報５５を満足するように各ＦＰＧＡ３にデータを入出力することが可能である。このため、結線情報５５が無くても配線２０を含めた基板２を製造することが可能であり、また、結線情報５５が修正あるいは変更されてもそれに対応して配線２０を変更しなくても良い。すなわち、デバイスのＩ／Ｏピンを通して入出力すべき信号を、デバイス内部の信号としてバウンダリースキャン用のシフトレジスタに接続し、これを通ってアクセスすることで、電源ピン等の、設計変更の可能性の低い配線のみ考慮するだけで、ボード設計や実装が可能になる。したがって、配線設計や配線基板２の製造および配線２０の変更を最小限に止めることが可能であり、低コストで短期間にプロトタイプ・ボード１の機能を検証することができる。そして、このようにして製造されるＬＳＩは、プロトタイプ・ボードで機能が検証されているので作り直しなどが発生することがなく、短期間に、低コストで所望の機能をそなえたシステムＬＳＩを提供することができる。
【００２５】
図３に、本例のエミュレーション・システム１のＦＰＧＡ３の側の構成および処理の概要を示してある。図２に示したフローチャートのステップ５２または６１において、図３（ａ）に示すようなロジックのＲＴＬ６５が生成され、このＲＴＬ６５は２つのロジックＲＴＡ６６ａおよび６６ｂに分割できるとする。したがって、エミュレーション・システム１においては、図３（ｂ）および（ｃ）に示すようにＦＰＧＡ３ａにＲＴＡ６６ａが搭載され、ＦＰＧＡ３ｂにＲＴＡ６６ｂが搭載され、これらのＲＴＡ６６ａおよび６６ｂで交換される信号Ａから信号Ｃは、バウンダリースキャンを用いて制御回路部１０を介して入出力される。このため、それぞれのＦＰＧＡ３ａおよび３ｂには、入力用のシフトレジスタ４と、出力用のシフトレジスタ５がＦＰＧＡ３ａおよび３ｂの内部に構成、すなわちマッピングされており、各々のＦＰＧＡ３ａおよび３ｂにダウンロードされたＲＴＬ６６ａおよび６６ｂの入力端に入力データφｉを入力し、出力端から出力データφｏを得られるようになっている。
【００２６】
図３（ｄ）に示すように、入力端を兼ねる入力用のシフトレジスタ４は、複数のフリップフロップ４ａがシリアルに接続された構成となっており、これらのフリップフロップ４ａを転送用のクロック（バウンダリースキャンＢＳのクロック）φｃｔにより制御回路部１０から入力データφｉがシリアルに転送される。また、各々のフリップフロップ４ａが各々のＦＰＧＡ３ａおよび３ｂでエミュレーションされる論理（ＲＴＬ）６６ａおよび６６ｂの入力端となっており、全ての入力端に入力データφｉが転送されたタイミングで実行用のクロックφｃｅが供給され、ＲＴＬ６６ａおよび６６ｂが入力データφｉにより動作する。
【００２７】
出力端を兼ねる出力用のシフトレジスタ５は、ＲＴＬ６６ａおよび６６ｂから出力された信号をラッチするためのセレクタ５ａと、ラッチされた出力信号φｏをシリアル転送するために直列に接続されたフリップフロップ５ｂとを備えた構成になっている。したがって、バウンダリースキャンＢＳのラッチ用の信号φｃｓにより、ＲＴＬ６６ａおよび６６ｂの出力端となっているセレクタ５ａに現れた、エミュレーションされる論理であるＲＴＬ６６ａおよび６６ｂの出力がラッチされ、転送用のクロック（ＢＳのクロック）φｃｔにより出力データφｏが制御回路部１０にシリアルに転送される。本例の入力用シフトレジスタ４と、出力用シフトレジスタ５はシリアルに接続されており、これらのシフトレジスタ４および５が１つのシフトレジスタを構成している。したがって、図３（ｂ）および（ｃ）に示した例では、制御回路部１０から２つの入力データφｉをシリアル転送すると、２つの出力データφｏを制御回路部１０は受信できるようになっている。
【００２８】
図４に、本例の制御回路部１０の概略構成を示してある。まず、データ入出力部１５には、入力データ用のシフトレジスタ１７と、出力データ用のシフトレジスタ１８とが設けられている。これらのシフトレジスタ１７および１８は、上記と同様に複数のフリップフロップ１７ａおよび１８ａがシリアルに接続された構成になっており、データ転送用のＢＳクロックφｃｔにより複数のフリップフロップ１７ａにパラレルにセットされた入力データφｉをシリアル転送し、複数のフリップフロップ１８ａにシリアル転送された出力データφｏをパラレル出力できるようになっている。制御回路部１０からは、入力データφｉおよび出力データφｏに加えて、データ転送用のクロックφｃｔ、出力データをラッチするための信号φｃｓおよびロジックを実行するためのクロックφｃｅもＦＰＧＡ３に供給される。
【００２９】
さらに制御回路部１０は、入力データ用のシフトレジスタ１７に入力データφｉをセットするためのデータ更新部１２と、ソフトウェアシミュレータからのデータをラッチして、次の検証用の入力データを生成する入力データ生成部１１とを備えている。このため、入力データ生成部１１は、ソフトウェアシミュレータ９０とデータ交換するためのインターフェース１６からデータをラッチできるフリップフロップ１１ａを備えており、制御部１４から供給されるラッチ信号φｄによりデータをラッチする。また、データ更新部１２は、データ入力部１１からのデータと、出力用のシフトレジスタ１８からフィードバックされた出力信号φｏの一部をラッチすることができるセレクタ１２ａを備えており、制御部１４から供給されるデータ更新用の信号φｒにより適当なタイミングでデータをラッチして入力用のシフトレジスタ１７に供給する入力信号φｉを生成または更新する。
【００３０】
一方、出力用のシフトレジスタ１８にシリアル転送された出力データφｏは、安定状態を検出するデータ評価部１３に供給される。このデータ評価部１３は、直前の出力データφｉを保持するためのフリップフロップ１３ａと、このフリップフロップ１３ａにラッチされた値と、シフトレジスタ１８に転送された値とをビット単位で比較するコンパレータ１３ｂとを備えており、これらのコンパレータ１３ｂの比較結果はアンドゲート１３ｃにより評価される。そして、シフトレジスタ１８にシリアル転送された全ての出力データφｏが直前の出力データと一致すると、出力データφｏが安定したと評価され、ソフトウェアシミュレータインタフェース１６を介して次の検証用のデータが取得され、入力データφｉが新たになって次の検証が開始される。
【００３１】
なお、図４には、１つのＦＰＧＡ３にデータをシリアル転送する構成を代表して示してあり、制御部１４およびソフトウェアシミュレータとのインターフェース１６を除き、各々のＦＰＧＡ毎にデータ生成部１１、データ更新部１２、データ評価部１３およびシリアル転送用のシフトレジスタ１７および１８が必要となる。また、この例では、すべての出力データφｏの安定度が評価部１３によって評価されているが、モニターするだけの出力信号は安定状態の検出を省略することも可能である。そして、ＦＰＧＡ３にダウンロードされたＲＴＬの検証結果をモニターする出力データφｏは、ソフトウェアシミュレータとのインタフェース１６を介してソフトウェアシミュレータとしての機能を果たすパーソナルコンピュータなどに送られ、ＦＰＧＡ３に搭載されたＲＴＬの良否が判断される。
【００３２】
図５に、本例のエミュレーション・システム１において実行される処理の概要をフローチャートにより示してある。このフローチャートで示した各処理は、制御回路部１０の制御部１４であるプロセッサにより実行される制御プログラムにより制御される。図５に示した各工程を実行可能な命令を有する本例の制御プログラム製品は、ＲＯＭあるいはＲＡＭなどの適当な記録媒体に記録された状態で提供され、制御回路部１０のＲＯＭ１９などの適当な媒体に記録されて用いられる。まず、ステップ７１において、エミュレーション・システム１およびソフトウェア・シミュレータ９０を初期化する。エミュレーション・システム１においては、エミュレーションの対象となる論理（ＲＴＬ）をＦＰＧＡ３にダウンロードし、制御回路部１０のマッピングなどを行い、入力データφｉを入力できる状態にする。
【００３３】
次に、ステップ７２において、最初の検証のための入力値（入力データ）φｉを設定する。このステップにおいては、ソフトウェア・シミュレータ９０から取得するエミュレーションの対象となるデータを入力データ生成部１１でセットすると共に、他の入力データは適当な初期値をセットし、データ更新部１２を経て入力用のシフトレジスタ１７にセットする。そして、ステップ７３において、シフトレジスタ１７にセットされたデータφｉをデータ転送用のクロックφｃｔにより各ＦＰＧＡ３の入力用のシフトレジスタ４にシリアル転送する。入力データφｉが所定の位置へ転送されるまでデータ転送用のクロックφｃｔを送り、所定の位置まで転送されると、ステップ７４でエミュレーション用のクロック信号φｃｅを各ＦＰＧＡ３へ供給する。この段階で、入力用のシフトレジスタ４に転送された入力データφｉはＦＰＧＡ３にダウンロードされたＲＴＬにしたがって処理され、出力データφｏが現れる。
【００３４】
ＦＰＧＡ３の内部における遅延を考慮したタイミングで、ステップ７５で出力データφｏをラッチする信号φｃｓを各ＦＰＧＡ３に供給し、出力されたデータを出力用のシフトレジスタ５に格納する。そして、ステップ７６で、データ転送用のクロック信号φｃｔを再び出力して、出力データφｏを制御回路部１０の出力用のシフトレジスタ１８に回収する。回収された出力データφｏは、ステップ７７で、評価部１３により直前に得られた出力データと比較し、安定度が評価される。いずれかの出力データφｏが変動している場合は、ステップ７８で、データ更新部１２により入力データφｉのうち、所定のデータを出力データφｏで更新する。その後、更新した入力データφｉをステップ７９でステップ７３と同様にシリアル転送し、ステップ８０でＦＰＧＡ内部における遅延を待ち、ステップ７５で出力データφｏをラッチする。そして、ステップ７７で信号が安定したと評価されるまで、このプロセスを繰り返す。一方、ステップ７７で出力データφｏが安定した場合は、ステップ８０で出力データφｏのうち、モニターすべき信号をソフトウェア・シミュレータ９０に送信して比較する。
【００３５】
ソフトウェア・シミュレータ９０では、ステップ８１で、ＦＰＧＡ３にエミュレーション用のクロックφｃｅが供給されるのと同じタイミングで実行用のクロックが出力されており、エミュレーション・システム１とほぼ同じ時間でソフトウェア・シミュレータ９０のシミュレーション結果が得られるようになっている。したがって、ステップ８２では、ソフトウェア・シミュレータ９０における出力結果と、エミュレーション・システム１の出力データが比較評価され、その結果が表示される。これにより、ＦＰＧＡ３でエミュレーションされているＲＴＬの良否を判断することができる。
【００３６】
ステップ８２の結果により、次の検証に進むか否かが判断され、ステップ８３で次の検証を行う場合は、ステップ７２に戻って、次の検証用の入力データφｉが入力データ生成部１１の機能を用いて生成される。
【００３７】
図６のタイミングチャートは、図３に示したＲＴＬ６５を２つのＲＴＬ６６ａおよび６６ｂに分割して２つのＦＰＧＡ３ａおよび３ｂにダウンロードし、本例のエミュレーション・システム１で検証した例を示してある。図６（ａ）は、図３（ａ）に示したＲＴＬ６５において、入力信号に対して信号Ａ、信号Ｂ、信号Ｃが次々と変わり、組み合わせ回路の遅延があった後に、出力信号が出力される様子を示してある。図６（ｂ）は、本例のエミュレーション・システム１において、同じ信号Ａ、信号Ｂおよび信号Ｃの動きがシリアル転送によって制御回路部１０を経て２つのＦＰＧＡ３ａおよび３ｂで行われる様子を示してある。概要は、入力により入力端子ａ０１の信号が変わると、出力端子ａ１１に信号Ａが現れ、それにより入力端子ｂ０２の信号が更新され、出力端子ｂ１２に信号Ｂが現れる。さらに、それにより入力端子ａ０２の信号が更新され、出力端子ａ１２に信号Ｃが現れ、それによって入力端子ｂ０１の信号が更新され、出力端子ｂ１１に出力値が現れる。さらに、ワンサイクルの入出力が行われ、出力信号が変わらず、安定したことにより１つのロジックサイクルが終了する。すなわち、このケースでは、入力データφｉおよび出力データφｏのシリアル転送を５サイクル繰り返すことにより、１つの検証サイクルが終了する。
【００３８】
さらに詳しく説明すると、時刻ｔ１に入力値が反映された入力データφｉが制御回路部１０の入力用のシフトレジスタ１７にセットされると、それがＢＳの転送クロックφｃｔにより転送され、時刻ｔ２にＦＰＧＡ３ａおよび３ｂのシフトレジスタ４にセットされる。そのときに、エミュレーション用のクロックφｃｅが供給される。すなわち、エミュレーションされるロジックのクロックを１回、高レベルと低レベルに反転させる。これにより、入力データφｉがＲＴＬ６６ａおよび６６ｂに取り込まれ、出力データφｏが出力される。したがって、時刻ｔ３にラッチ信号φｃｓを供給して出力信号φｏを出力用のシフトレジスタ５にラッチする。そして、時刻ｔ４に、再び転送用のクロック信号φｃｔを供給して時刻ｔ５に出力データφｏを制御回路部１０の出力用のシフトレジスタ１８に回収する。回収された出力データφｏは安定性が評価され、それと共に出力データφｏにより入力データφｉが更新される。この段階で、２つのＦＰＧＡ３ａおよび３ｂの間の接続が確立されたことになる。
【００３９】
更新された入力データφｉは、再び、時刻ｔ６にＦＰＧＡ３ａおよび３ｂにシリアル転送され、入力データφｉが揃った時刻ｔ７からＦＰＧＡ内部の遅延を待つ。そして、時刻ｔ８に、出力された新しい出力データφｏがラッチされて、シリアル転送により制御回路部１０に回収される。回収された出力データφｏは同様に安定性が評価され、安定していない場合は、再び入力データφｉが更新されてＦＰＧＡ３ａおよび３ｂにシリアル転送される。そして、データが揃った時刻ｔ９からＦＰＧＡ内部の最大遅延を考慮した時刻ｔ１０に出力された信号がラッチされる。同様のプロセスをさらに時刻ｔ１１およびｔ１２と繰り返した段階で、本ケースでは、出力が安定する。したがって、時刻１３に供給された入力信号φｉにより時刻ｔ１４に得られる出力データφｏは変わらない。このため、時刻ｔ１５からの転送クロックφｃｔにより回収された出力データφｏは、時刻ｔ１６に安定性が評価されたときに、前回の出力データと同じとなり、次の検証に移行することができる。
【００４０】
本例のエミュレーション・システム１においては、このように、繰り返して入力データおよび出力データを照合し、安定したところで、次の検証に移行する。したがって、制御部１４にインストールされる制御プログラムは、この繰り返しの回数をモニターし、数回以上の繰り返しを生じた場合は、ＦＰＧＡ３にダウンロードされたロジックによる回路が発振状態になっているとみなしてエミュレーションを停止し、警告を出す機能を持たせている。エミュレーションの対象となるロジックは、クロックに同期した設計なので、一般に、発振状態になる事はない。また、繰り返しの回数を減らす事が、エミュレーション・システム１の性能を向上させる事になるので、制御プログラムが安定状態になりにくい信号を知らせるようにすることにより、そのような信号がシリアル転送する、すなわち、バウンダリースキャンされる対象とならない様にロジックの分割を再検討する事が可能となり、有意義である。すなわち、このような機能を持たせることにより、本例のエミュレーション・システム１は、ロジックの分割を最適化するための支援機能を持つことになる。
【００４１】
また、入力データおよび出力データの転送を繰り返してエミュレーション・システム１の内部が安定状態に遷移した後、必要であればソフトウエア・シミュレータ９０にモニター用の値を返すことは上述した通りである。そして、シリアル転送の対象になった入力データφｉおよび出力データφｏは、全て制御回路部１０を経由して転送されるので、これらを制御回路部１０あるいは制御部１４を駆動する制御ソフトウェア内に保持することも可能であり、ソフトウエア・シミュレータ９０が最終の出力値だけではなく、安定する間にＦＰＧＡ間で交換されたデータにアクセスすることも容易である。さらに、シリアル転送されるデータ以外の、レジスタの値等の内部信号をモニターしたい場合であっても、デバイス間、すなわちＦＰＧＡ間での接続先がない出力信号として、シリアル転送するデータとして追加することが可能である。また、ＦＰＧＡなどのデバイスが持つ、独自のデバッグ機能を併用することも可能であり、それにより内部信号の状態をモニターする事も可能である。
【００４２】
このように、本例にエミュレーション・システム１は、ＦＰＧＡ等のロジックをダウンロードできるデバイスを使うと共に、これらエミュレーションの対象となるロジックを構成するのに必要なデバイス間の接続に、バウンダリースキャンのシリアル転送を利用する事を特徴としたものである。そして、バウンダリースキャンを利用した接続でエミュレーションを実行するに当たり、シリアル転送される信号の安定状態を監視しながら実行する制御機構１０を持ち、ロジックの良否を確実に検証することができる。そして、一般にはデバイスの入出力ピンを通して入出力する信号をデバイス内部の信号としてバウンダリースキャン用のシフトレジスタ４および５を介して制御回路部１０と接続するようにしているので、電源ピンなどの設計変更の可能性の低い配線のみを考慮することでボード２の設計や実装が可能になる。
【００４３】
さらに、従来の複数のＦＰＧＡなどのデバイスを用いたエミュレーション・システムでは、ＦＰＧＡに分割されたロジックの接続は、ＦＰＧＡの出力ピンから入力ピンに対して、１対１、あるいは１対多で接続され、その接続はその信号の専用であった。これに対し、本例のエミュレーション・システムにおいては、シリアル転送することにより、多対多で接続することが可能となり、配線量を大幅に削減することができる。そして、入力データあるいは出力データの順番を変えることにより、結線情報の変更にも極めて柔軟に対応することができる。したがって、低コストで、短期間にエミュレーション・システム１を構築することが可能であり、システムＬＳＩの開発期間および開発費用を削減するのに非常に有効である。
【００４４】
一方、バウンダリースキャンを使う事は、入力データおよび出力データをシリアル転送するために必要な時間の分、エミュレーションの実行速度が低下する事を意味する。しかしながら、本例のエミュレーション・システム１のようにソフトウエア・シミュレータ９０をインターフェースに使うシステムでは、ソフトウェア・シミュレータ９０の実行速度の限界よりもシリアル転送の量が上回る様にすることで、実行速度の遅さが実際のエミュレーション結果を求める過程では、影響を与えないようにすることができる。したがって、本例のエミュレーション・システムでは、ロジックの変更に伴う結線情報の変更に対し、極めて柔軟に低コストおよび短期間に対処することができるので、ＴＡＴが短くでき、ゲームや画像処理系のアプリケーションの開発にも十分に対応できる開発速度の速いエミュレーション・システムとなっている。
【００４５】
データをシリアル転送する時間を短縮する方法としては、まず、図７に示すように、ＦＰＧＡ３の内部に構成された入力データおよび出力データ用のシフトレジスタ４および５を複数に分割して、バウンダリースキャンの本数を増やす事が可能である。これにより、データを所定の位置まで転送するために必要なデータ転送用のクロックφｃｔの量を削減することができるので、データ転送に係る時間を短縮することができ、出力データφｏが安定するまでの時間を短縮することができる。
【００４６】
また、データをシリアル転送する回数を削減することによっても実行時間を短縮することが可能である。すなわち、本例のエミュレーション・システム１では、ＲＴＬが複数に分割されたＦＰＧＡ３に搭載されるが、その分割方法を改善することによりエミュレーションの速度を向上することができる。たとえば、図３においては、図３（ａ）に示したロジック（ＲＴＬ）６５を単純に左右のロジック６６ａおよび６６ｂに分割している。これに対し、図３（ａ）と同じロジックである図８（ａ）のロジック６５を、図８（ｂ）および（ｃ）に示すように、これらのロジックで交換されるデータを考慮して、ロジック６６ａおよび６６ｂの組み合わせ回路と順序回路の組み合わせを変えて分割することができる。この新しい分割では、２つのＦＰＧＡ３ａおよび３ｂにダウンロードされるロジック（ＲＴＬ）６７ａおよび６７ｂでは、組み合わせ回路同士で交換される信号ＢのみがＦＰＧＡ３ａおよび３ｂで交換される。したがって、図９に示すように、シリアル転送を３サイクル繰り返すだけで出力データφｏが安定したことを判断することが可能となり、図３（ｂ）および（ｃ）に示した分割方法であると５サイクル必要としたのに対し、２サイクル短縮することができる。
【００４７】
すなわち、時刻ｔ２１に入力データφｉがセットされてシリアル転送され、時刻ｔ２２に入力用のシフトレジスタ４にセットされると、エミュレーションを実行するクロックφｃｅが供給され、その結果出力されたデータがラッチ信号φｃｓで時刻ｔ２３にラッチされ、その後のシリアル転送で制御回路部１０に回収される。本例においては、信号Ｂのみが次のサイクルのシリアル転送で供給され、時刻ｔ２４に実行されると時刻ｔ２５に出力値が出力端ｂ１１に得られる。したがって、次のサイクルの時刻ｔ２６に供給された入力データφｉで時刻ｔ２７に得られる出力データφｏは、前のサイクルの出力データと同じになる。このため、出力データφｏが制御回路部１０に回収された時刻ｔ２８に出力データφｏが安定していると判断され、次の検証に進むことができる。
【００４８】
このように、組み合わせ回路を素通りする経路の入力信号と出力信号を、シリアル転送するデータの対象とならない様に分割するなどの方法により、シリアル転送されるデータ量を削減することにより、エミュレーション・システム１のパフォーマンスを向上することができる。
【００４９】
さらに、本例のエミュレーション・システム１においては、バウンダリースキャンによりＦＰＧＡ３だけではなく、図１に示すように、既存のデバイス９もエミュレーション・システムに取り込むことが可能であり、これらのデバイスの間で信号を交換することも極めて容易に行うことができる。特に、デバイス間のプリント基板配線の接続試験、または専用の入出力ピンを使用したデバイス内部の試験を目的としたＪＴＡＧ機能を備えたデバイスであり、その試験機能を使う事で通常と同じ動作が得られるのであれば、図１に示すような、既存のデバイス９との接続にバウンダリースキャン用のシフトレジスタ持ったインターフェイス用のＦＰＧＡ３ｃを用意しなくても、ＪＴＡＧを使って直接に接続することも可能となる。しかしながら、ＪＴＡＧの目的は試験接続であり、一般的にデバイスの入出力ピン数に限定され、バウンダリースキャンで想定する、ＦＰＧＡの内部レジスタ数まで入力端および出力端を拡張する機能は持たない。しかしながら、ＦＰＧＡ内部のレジスタまで入出力端を広げたバウンダリースキャンの限定的なエミュレーション・システムとしてＪＴＡＧのように入出力ピンベースで入力データおよび出力データを供給するエミュレーション・システムを構築することは可能であり、その限定的な範囲でエミュレーションを実行できるのであれば極めて有効である。
【００５０】
本例のエミュレーション・システム１では、クロックに同期して設計されたロジックしかサポートできない。しかしながら、クロックが複数存在し、それぞれのクロックの関係が、非同期で動作する事は問題ない。また、クロックに非同期の動作を持つとしても、エミュレーションに使用するクロックに同期させて使用可能であればエミュレーション・システムに加えることができる。例えば、クロック非同期の既存のチップであっても、シリアル転送用のシフトレジスタで囲む事で使用可能になる。
【００５１】
また、本例のミュレーション・システム１に搭載できるデバイスは、スタティック動作が可能でなければならない。すなわち、クロックをハイまたはローのどちらかに固定して、デバイスの動作を停止しても、再びクロックがハイまたはローに反転すれば、正常な動作に復帰できるデバイスでなければならない。ただし、クロックが常にハイまたはローに反転していても、外部からの入力信号により、動作を停止できる機構を持つデバイスであればエミュレーション・システムに加えることは問題ない。
【００５２】
以上に説明したように、従来のエミュレーション・システムのように、ＦＰＧＡなどのデバイスをハード・ワイヤード（専用配線）で接続するシステムでは、その後のロジックの変更が困難になる。ＦＰＩＣなどを採用することにより、ソフトウェア的に配線経路を変更可能なシステムにする事も可能であるが、入出力ピンに対して１対１あるいは１対多の接続配線が必要となるので、膨大な配線量となる。したがって、デバイスの入出力ピン数の制約、プリント基板上の配線経路の制約があり、その結果、ロジック変更の自由度は高くなりにくい。これに対し、本例のエミュレーション・システム１においては、データをシリアル転送することを特徴としている。したがって、デバイスを接続する配線量は非常に少なくてよい。さらに、シリアル転送するためのシフトレジスタをＦＰＧＡなどのプログラム可能なデバイス内部のレジスタを用いて構成することにより、複数のＦＰＧＡに分割されたロジック間の信号の接続に際し、ＦＰＧＡの入出力ピン数に制約されない。したがって、配線の物理的な変更を伴わずに、接続変更の自由度が非常に高いエミュレーション・システムを提供することが可能となる。
【００５３】
また、このようなエミュレーション・システムでは、データを入出力するための接続に使用する入出力ピン数が少なくて良い。したがって、安価なパッケージに入ったデバイスを使用して多量のデータを入出力するエミュレーション・システムを構築することが可能となる。また、入出力ピン数の少ないパッケージを使用することにより、プリント基板への実装コストを削減することも可能となる。
【００５４】
さらに、使用する入出力ピン数が少なくてよいので、少ない本数のプリント基板配線でエミュレーション・システムを構築出来ることは上述した通りであるが、配線を多少増やすことにより、データ転送速度を顕著に高速化することができる。すなわち、シリアル転送に必要な入出力ピンは最小限１組であるが、複数組の入出力ピンを使用することで、転送されるデータ量を増大させたり、転送時間を短縮することが可能となる。また、ＦＰＧＡの入出力ピンは、データの転送作業に特化する事が可能なので、最新のＦＰＧＡが持つ、高速データ転送の機能を有効利用することも可能となる。
【００５５】
また、本例のエミュレーション・システム１では、シリアル転送されて来たデバイスからの出力信号φｏは、制御回路部１０、もしくは制御部１４で実行される制御ソフトウェアによって、信号φｏの値が安定状態に遷移する事を監視されながら動作する。この際、シリアル転送された出力データφｏの何番目の値が、論理分割された、どのネット、すなわち、どのＦＰＧＡあるいはどのＲＴＬに対応するかは、分割時に記録され、同時にそのネットの接続先（シリアル転送順）が認識可能になる。出力信号φｏの状態管理を制御部１４で実行されるプログラムで行う場合、この情報を元にｊメモリー上に対応表を作る等の方法が考えられる。一方、安定状態の評価などの出力信号φｏの処理を、他の制御回路部１０のハードウェア（専用回路）で行うことも可能であり、この場合は、新たな接続先の情報を元に、新たな接続を持ったネットリストを備えた制御回路部１０をＦＰＧＡなどのプログラム可能なデバイスを用いて構築する。そして、出力データφｏをバウンダリースキャンして取り込んでも、全てのネットが安定状態に達しない間は、その出力信号φｏは変動する。このため、それらの出力信号φｏの接続先として定義されたデバイスの入力に対する入力データが更新され、再びバウンダリースキャンによって転送される。そして、このバウンダリースキャンの出力データφｏと入力データφｉの接続を制御する事で、自由にデバイス間の接続を変更可能であることは上述した通りである。
【００５６】
さらに、一般にエミュレーションの対象となるロジックは、例えばＦＰＧＡに構築された際、信号の入出力に入出力ピンを使用する。したがって、入力ピンに値を設定したり、出力ピンの値をモニターするには、その目的の為の接続を用意しなければならない。これに対し、上述した本例のエミュレーション・システム１においては、ＦＰＧＡ３の内部のレジスタでシリアル転送用のシフトレジスタを構成している。このため、これらデバイスの入出力ピンを通して入出力すべき信号を、デバイス内部の信号としてシリアル転送することが可能となり、ソフトウエア・シミュレータにより、デバイスの外部、内部の区別なくアクセスすることができ、検証に必要とされるデータをモニターすることができる。また、これらのモニター用のデータ接続の変更は、例えば、合成後のネットリストにおいて、使用されている入出力セルを、バウンダリースキャンのシフトレジスタへの置き換える事で、実現可能となる。
【００５７】
また、エミュレーション・システム上に、例えばプロセッサの様な、既存のデバイスを搭載することも可能であることは上述した通りである。さらに、その既存のデバイスが、ＪＴＡＧの機能を備えており、１クロック単位での動作が可能であれば、データをシリアル転送することにより直接利用する事が可能となる。ＪＴＡＧなどの機能を持たなくとも、クロック停止によるスタティック動作が可能であれば、例えばＦＰＧＡを利用し、プロセッサの入出力に接続するシリアル転送手段を構築する事が可能となる。この場合、プロセッサと入出力用のＦＰＧＡの間は、プリント基板上に、専用の配線を準備する事になるが、既存のデバイスを使用した場合、それに対してのアクセス方法が変更になり、配線を変更することは少ないので、本例のエミュレーション・システムのフレキシビリティに与える影響は少ない。
【００５８】
なお、上記では、Ｃ言語によりシステムＬＳＩの仕様が与えられたケースを例に説明しているが、仕様は必ずしもＣ言語で与えられなくても良い。また、本例では、複数のＦＰＧＡに論理が分割される例を示してあるが、単一のＦＰＧＡに論理が搭載されたエミュレーション・システムにおいても、本発明を適用することが可能であり、配線を削減でき、ロジックの変更に対するフレキシビリティが高いといった効果を得ることができる。また、本例では、システムＬＳＩを製造および開発する例を説明しているが、本発明は、既存の配線形態でＬＳＩを搭載するようなシステムボードの作成にも有効に使用することが可能である。
【００５９】
【発明の効果】
以上に説明したように、本発明のエミュレーション装置では、ＦＰＧＡなどの検証するロジックが搭載される集積回路装置に対する入力データおよび出力データをシリアル転送するデータ伝送手段を設けている。したがって、配線量が非常に少なくなり、また、ロジックの修正あるいは変更に伴う接続情報の変更にも簡単に対処することができる。このため、ＴＡＴが短縮でき、携帯電話や情報家電やゲーム機のように最終ユーザが消費者であり流行に左右されやすい商品のシステムＬＳＩの短期間開発に極めて有効な低コストのエミュレーション装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態にかかるエミュレーション・システムの概要を示す図である。
【図２】エミュレーション・システムを用いてＬＳＩを評価する工程を示すフローチャートである。
【図３】図１に示すエミュレーション・システムのＦＰＧＡ側の概略構成を説明する図である。
【図４】図１に示すエミュレーション・システムの制御回路部の概略構成を示す図である。
【図５】図１に示すエミュレーション・システムにおいて、入力値から出力値を求めるプロセスを示すフローチャートである。
【図６】図６（ａ）は、図３に示す分割前のロジックにおける信号のタイミングを示すタイミングチャートであり、図６（ｂ）は、エミュレーション・システムにおいて、図３に示した分割例のロジックにより出力値が得られるまでの信号の変化を示したタイミングチャートである。
【図７】図１に示すエミュレーション・システムにおいて、シリアル転送する回路あるいは配線を増やす例を示す図である。
【図８】図３に示す論理の分割方法と異なる方法で論理を分割してエミュレーションの時間を短縮する例を示す図である。
【図９】エミュレーション・システムにおいて、図８に示した分割例のロジックにより出力値が得られるまでの信号の変化を示したタイミングチャートである。
【符号の説明】
１    エミュレーション・システム
２    配線用基板
３    ＦＰＧＡ
４    入力データ用シフトレジスタ
５    出力データ用シフトレジスタ
１０    制御回路部
１１    データ生成部
１２    データ更新部
１３    安定性の評価部
１４    制御部（プロセッサ）
１５    データ入出力部
１６    ソフトウェア・シミュレータとのインタフェース
１７    入力データ用のシフトレジスタ
１８    出力データ用のシフトレジスタ
１９    プログラム用のＲＯＭ
２０    配線群
２１    シリアル転送用の配線
６５    初期論理
６４、６６、６７    分割され、ＦＰＧＡに搭載された論理
【図１】
0004347509.tif 000002
【図２】
0004347509.tif 000003
【図３】
0004347509.tif 000004
【図４】
0004347509.tif 000005
【図５】
0004347509.tif 000006
【図６】
0004347509.tif 000007
【図７】
0004347509.tif 000008
【図８】
0004347509.tif 000009
【図９】
0004347509.tif 000010