トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 エミュレーション装置およびその制御方法
【発明者】 【氏名】小倉 康嗣

【要約】 【課題】システムLSIの設計・評価を行うエミュレーション・システムであって、低コストで結線情報の変更などに柔軟に対処することができるシステムを提供する。

【解決手段】FPGA3に搭載されたロジック64に対する入力データφiと、それによる出力データφoを配線21、FPGA3のシフトレジスタ4および5、制御回路部10のシフトレジスタ17および18によりシリアル転送する。これにより配線21の量を大幅に低減することが可能となり、さらに、結線情報が変更になったときでも入出力データの順番をかえることにより簡単に対処することができる。
【特許請求の範囲】
【請求項1】 エミュレーションの対象となる論理を搭載可能な少なくとも1つの集積回路装置と、その集積回路装置に搭載された前記論理の入力端に供給する入力データを生成し、前記論理の出力端に出力された出力データを評価可能な制御手段と、前記入力データを前記制御手段から前記入力端にシリアル転送し、前記入力データにより前記出力端に発生した前記出力データをラッチして前記集積回路装置から前記制御手段へシリアル転送可能なデータ転送手段とを有するエミュレーション装置。
【請求項2】 請求項1において、複数の前記集積回路装置を有し、さらに、前記制御手段は、前記出力データによって前記入力データを更新する手段と、前記出力データの安定状態を評価する手段と、前記出力データが安定すると次の検証用の前記入力データを生成する手段とを備えており、前記データ転送手段は、前記出力データが安定するまで繰り返し前記入力データおよび出力データを転送可能なエミュレーション装置。
【請求項3】 請求項1において、前記データ転送手段は、前記入力端に入力データをシリアル転送し、前記出力端から出力データをシリアル転送するシフトレジスタを備えており、このシフトレジスタは、前記集積回路装置内のレジスタにより構成されているエミュレーション装置。
【請求項4】 請求項1において、複数の前記集積回路装置を有し、前記データ転送手段は、少なくとも前記集積回路装置毎に前記入力データまたは前記出力データを転送する配線を備えているエミュレーション装置。
【請求項5】 請求項1において、制御手段は、前記入力データに対する前記出力データを供給可能なソフトウェアシミュレータとのインタフェース手段を備えているエミュレーション装置。
【請求項6】 請求項1ないし5のいずれかにおいて、前記集積回路装置の少なくとも1つは、FPGAであるエミュレーション装置。
【請求項7】 エミュレーションの対象となる論理を搭載可能な複数の集積回路装置と、それらの集積回路装置に搭載された前記論理の入力端に供給する入力データを生成し、前記論理の出力端に出力された出力データを評価可能な制御手段と、前記入力データを前記制御手段から前記入力端にシリアル転送し、前記入力データにより前記出力端に発生した前記出力データをラッチして前記集積回路装置から前記制御手段へシリアル転送可能なデータ転送手段とを有するエミュレーション装置の制御方法であって、前記出力データが安定するまで、前記データ転送手段により、前記出力データにより更新した前記入力データおよびそれによる出力データを繰り返し転送するデータ転送工程と、前記出力データが安定すると次の検証用の前記入力データを転送する工程とを有するエミュレーション装置の制御方法。
【請求項8】 請求項7において、前記データ転送工程では、少なくとも前記集積回路装置毎に前記入力データまたは前記出力データを転送するエミュレーション装置の制御方法。
【請求項9】 請求項7において、前記データ転送手段は、前記入力端に入力データをシリアル転送し、前記出力端から出力データをシリアル転送するシフトレジスタを備えており、このシフトレジスタは、前記集積回路装置内のレジスタにより構成されているエミュレーション装置の制御方法。
【請求項10】 請求項7ないし9のいずれかにおいて、前記集積回路装置の少なくとも1つは、FPGAであるエミュレーション装置の制御方法。
【請求項11】 エミュレーションの対象となる論理を搭載可能な複数の集積回路装置と、それらの集積回路装置に搭載された前記論理の入力端に供給する入力データを生成し、前記論理の出力端に出力された出力データを評価可能な制御手段と、前記入力データを前記制御手段から前記入力端にシリアル転送し、前記入力データにより前記出力端に発生した前記出力データをラッチして前記集積回路装置から前記制御手段へシリアル転送可能なデータ転送手段とを有するエミュレーション装置の制御プログラム製品であって、前記出力データが安定するまで、前記データ転送手段により、前記出力データにより更新した前記入力データおよびそれによる出力データを繰り返し転送するデータ転送工程と、前記出力データが安定すると次のロジックの前記入力データを転送する工程とを実行可能な命令を有するエミュレーション装置の制御プログラム製品。
【請求項12】 請求項11において、前記データ転送工程では、少なくとも前記集積回路装置毎に前記入力データまたは前記出力データを転送する処理を実行可能なエミュレーション装置の制御プログラム製品。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、LSIまたはVLSIと称される半導体集積回路装置の開発に有用なエミュレーション装置および方法に関するものである。
【0002】
【従来の技術】大規模化および微細化が進行する半導体集積回路装置、特に、システムLSIあるいはVLSIと称される集積回路装置においては、論理ゲート規模において数百万ゲートにもなるものが開発されている。しかしながら、このような大規模な半導体集積回路装置(以降においてはLSI)では、開発にかかる時間とコストが膨大になりつつある。特に、システムLSIの評価・検証は大規模化するにつれ困難な問題となっている。
【0003】
【発明が解決しようとする課題】近年、大規模高速化の進展の著しいフィールドプログラマブルゲートアレイ(以降においてはFPGA)を使用したエミュレーション・システムが提供されている。FPGAは、フィールドプログラム可能な半導体装置であり、プログラミングを随時設定あるいは変更することが可能である。このため、所望の論理を実行可能なゲートアレイをシリコンプロセスから始めなくても得ることができる。そして、システムLSIを開発する際に、その機能(要求仕様)を複数のFPGAに分割して実現することにより、評価・検証を行うためのシステムLSIのエミュレーション・システムまたはプロトタイピングを得ることができる。このため、FPGAを用いたエミュレーション・システムは大規模なシステムLSIの開発においては必須のシステムとなりつつある。
【0004】従来のエミュレーション・システムにおいては、あらかじめ複数のFPGAが、接続情報だけをフィールドでプログラム可能なフィールドプログラマブルインターコネクトデバイス(FPID)またはフィールドプログラマブルインターコネクトチップ(FPIC)といった半導体装置(以下、両者を代表してFPICと呼ぶ)を経由して接続された装置が提供されている。そして、エミュレーションしたい論理は、エミュレーション・システムの複数のFPGAに分割して実行できるように複数の実装用のプログラム(通常はレジスタレベルの記述言語RTLで記述される)として提供され、さらに、生成したRTLに基づき、これらのFPGA間の結線状態をFPICにより確定する。このようなエミュレーション・システムの適当なデータを入力し、所望のデータが出力されるか否かにより、実際のシステムLSIに近い状態で、開発されたシステムLSIの動作を検証することが可能となる。
【0005】しかしながら、プログラマブルなFPGAを用いたエミュレーション・システムは、システムLSIで実現しようとするロジックをプログラムレベルでフレキシブルにFPGAに実装できる半面、FPGAに実装可能な論理の面積効率は低いのでシステムLSIに実装する論理をエミュレートするためには複数のFPGAを用いる必要がある。したがって、複数のFPGAを入力端および出力端を接続するために膨大な配線を用意する必要があり、配線基板を含めてエミュレーション・システムが大型化し、製造コストも高くなる。特に、FPGAに実装する論理に合致する配線を搭載した配線基板を設計および製造するために費やされる時間とコストは大きい。
【0006】さらに、FPGAに実装した論理を何らかの都合により変更あるいは追加する必要が生ずることは性能を評価する段階では通常発生することであり、FPGAを用いたエミュレーション・システムでは、FPGAに実装された論理はプログラムレベルで変更できるので対処が容易である。しかしながら、各FPGAに実装される論理の変更に伴ってFPGA間を接続する配線も変更する必要があり、配線量が膨大であると、その変更に手間とコストが必要となる。したがって、設計ミスを見つけてから次の検証を行うまでのTAT(Turn Around Time)はFPGAを採用することにより短縮されたとはいえ、システムLSIの処理対象となるゲームや画像処理系のアプリケーションの開発速度に対して十分とは言えない。
【0007】そこで、本発明においては、複数の集積回路装置、特に、FPGAを用いたエミュレーション・システムにおいて、さらに低コストで短期間に供給可能なエミュレーション装置およびその制御方法を提供することを目的としている。さらに、配線も含めて修正のためのフレキシビリティを確保することができるエミュレーション装置およびその制御方法を提供することを目的としている。そして、TATをさらに短縮し、アプリケーションなどの開発速度に対して十分に対処できる期間でシステムLSIを開発することができるエミュレーション装置およびその制御方法を提供することを目的としている。
【0008】
【課題を解決するための手段】このため、本発明のエミュレーション装置においては、システムLSIを開発する際に、エミュレーションの対象となるロジックが搭載されるFPGAなどの集積回路装置の入力端および出力端を個々に配線で接続するのではなく、入力端および出力端をスキャンし、それぞれの端末におけるデータをシリアル転送している。このため、配線量を大幅に低減することが可能となり、それと共に、FPGAに実装される論理に対する配線の依存性をなくすことにより、個々のエミュレーション装置あるいは評価段階における修正および変更に対する配線および配線基板の物理的な設計および変更をほとんど無くすことが可能となる。したがって、低コストで、製造期間が短く、さらに配線も含めて修正のためのフレキシビリティの確保されたエミュレーション装置を提供することができる。
【0009】すなわち、本発明のエミュレーション装置は、エミュレーションの対象となる論理を搭載可能な少なくとも1つの集積回路装置と、その集積回路装置に搭載された論理の入力端に供給する入力データを生成し、集積回路装置に搭載された論理の出力端に出力された出力データを評価可能な制御手段と、入力データを制御手段から入力端にシリアル転送し、その入力データにより出力端に発生した出力データをラッチして集積回路装置から制御手段へシリアル転送可能なデータ転送手段とを有する。本発明のエミュレーション装置においては、入力データおよび出力データを、制御手段との間でシリアル転送するため、入力端あるいは出力端を、個別の配線により1対1あるいは1対多で接続する必要がない。したがって、配線量を大幅に低減することができる。
【0010】また、制御手段から入力端にシリアル転送する入力データの順番を変えることにより入力端の変更に柔軟に対処することが可能であり、同様に、出力端からシリアル転送される出力データの順番の制御手段における認識を変えることにより出力端の変更にも柔軟に対処できる。したがって、集積回路装置にFPGAなどのフィールドプログラマブルな半導体装置を採用したときに、それらに実装される論理を変更して入力端あるいは出力端が変更になったときでも、配線自体は変更しないで制御手段のプログラムあるいは接続を変更することにより対処できる。このため、配線の接続変更も含めて論理の変更に非常に短時間にフレキシブルに対処できるエミュレーション装置を提供できる。さらに、配線自体は、FPGAに実装される論理に左右されないので、集積回路装置を搭載する配線基板を事前に製造することも可能となり、短期間に低コストで供給可能なエミュレーション装置を提供することができる。
【0011】論理を複数のFPGAに分けて実装することも可能であり、その場合、本発明のエミュレーション装置においては、入力端および出力端は、1対1あるいは1対多で接続されていないので、出力データが安定するまで、あるFPGAの出力データに基づき、他のFPGAの入力データを変更して繰り返し供給し、安定すると次のロジックの入力データを供給するというプロセスでエミュレーションが進行する。すなわち、本発明のエミュレーション装置は、制御手段が、出力データによって入力データを更新する手段と、出力データの安定状態を評価する手段と、出力データが安定すると次のロジックの入力データを生成する手段とを備えており、データ転送手段は、出力データが安定するまで繰り返して入力データおよび出力データを転送可能であることが望ましい。
【0012】また、本発明の、複数の集積回路装置と、それらの集積回路装置に搭載された論理の入力端に供給する入力データを生成し、集積回路装置に搭載された論理の出力端に出力された出力データを評価可能な制御手段と、入力データを制御手段から入力端にシリアル転送し、入力データにより出力端に発生した出力データをラッチして集積回路装置から制御手段へシリアル転送可能なデータ転送手段とを有するエミュレーション装置は、出力データが安定するまで、データ転送手段により、出力データにより更新した入力データおよびそれによる出力データを繰り返し転送するデータ転送工程と、出力データが安定すると次のロジックの入力データを転送する工程とを有する制御方法により制御されることが望ましい。このような制御方法は、ハードワイヤードロジックにより実現することも可能であるし、上記の工程を実行可能な命令を有する制御プログラム製品あるいは制御プログラム装置により制御することも可能である。これらの制御プログラム製品あるいは装置は、ROMあるいはメモリカードなどのコンピュータ読取可能な適当な記録媒体に記憶して、あるいはインターネットなどのコンピュータ間の通信により伝送可能な伝送媒体に埋め込んで提供することができる。
【0013】データ転送手段および工程では、入力データおよび出力データを、複数の集積回路装置の入力端および出力端に対して順番にシリアルに入出力するようにしても良い。すなわち、複数の集積回路装置の入力端および出力端を1つの共通の配線で接続し、シリアルに入力データおよび出力データを転送することができ、配線量を最小限にすることができる。しかしながら、データの転送時間を短縮するには複数の配線を用いてある程度入力データおよび出力データを並列に転送できることが望ましい。したがって、データ転送手段としては、少なくとも集積回路装置毎に入力データまたは出力データを転送する配線を設け、データ転送工程では、少なくとも集積回路装置毎に入力データまたは出力データを転送することが望ましい。
【0014】集積回路装置に搭載された論理の入力端および出力端は、集積回路装置の外部接続されるように配置された入出力ピンなどであっても良い。しかしながら、その場合は、入力データおよび出力データの量は入出力ピンの数に限定される。これに対し、集積回路装置に搭載された論理の入力端に入力データをシリアル転送し、出力端から出力データをシリアル転送するシフトレジスタを、FPGAなどのプログラム可能な集積回路装置内のレジスタにより構成することが可能であり、入力端および出力端を集積回路装置内に設定することも可能である。このような構成をバウンダリースキャンと本明細書では称することにするが、この場合は、入出力ピンの数に限定されずに入力データおよび出力データを選択することが可能であり、フレキシビリティがさらに大きくなる。また、入出力ピン数が少なくても多くの入力データおよび出力データを制御手段との間で交換できるので、低コストな集積回路装置によりエミュレーション・システムを構築することも可能となる。
【0015】制御手段に、入力データに対する出力データを供給可能なソフトウェアシミュレータとのインタフェース手段を設け、本発明のエミュレーション装置で出力データが安定する時間と、ソフトウェアシミュレータから出力データが得られる時間とが同程度になるようにすれば、データをシリアル転送することによる時間遅れが発生しても実質的にはストレスなくシステムLSI用に開発された論理の評価を行うことができる。そして、本発明のエミュレーション装置は、初期の製造および仕様変更などに伴う論理の変更にも短時間でフレキシブルに対処できる。したがって、本発明により、システムLSIを開発および設計するためのRTLを評価する時間およびコストを最小限にすることができるエミュレーション装置およびその制御方法を提供することができる。
【0016】
【発明の実施の形態】以下に図面を参照して本発明の実施の形態を説明する。図1に、本発明にかかるエミュレーション装置1を示してある。本例のエミュレーション装置1は、配線基板2と、この配線基板2に実装された複数のFPGA3と、制御回路部10とを備えており、配線群20によりFPGA3と制御回路部10がそれぞれ接続され、各FPGA3にはエミュレーションの対象となる論理(RTL)64が搭載されている。配線群20には、制御回路部10から各FPGA3に入力データφiをシリアル転送し、各FPGA3から制御回路部10へ出力データφoをシリアル転送するデータ転送配線21と、データ転送配線21でデータ転送する際のクロック(転送用クロック)φctを供給するクロック配線25と、各FPGA3に搭載されたロジックを実行するためのクロック(実行用クロック)φceを供給するクロック配線28が含まれている。
【0017】図2に、本例のエミュレーション・システム1を用いたシステムLSIの開発手順を示してある。まず、システムLSIとして実現するシステム仕様(要求仕様)51が与えられる。システム仕様は言語で書かれるとすればC言語で記述されるのが通常である。次に、ステップ52で、そのシステム仕様を機能分割し、かつ、RTL(レジスタ−トランジスタ言語)に変換あるいは生成する。従って、この段階で複数のRTLが、要求仕様を実現するための初期論理として生成される。C言語により提供されるシステム仕様51ではクロック・タイミングまたはレジスタという概念は明確には規定されず、あくまでもLSIに要求される機能仕様の完全な記述に専念される。一方、ステップ52で生成されるRTLでは、レジスタの概念が明確に規定されている必要がある。したがって、ステップ52の処理は、システム仕様を示すC言語からRTLへの変換といった単なるプログラミング言語の変換というよりレジスタレベルの設計(論理設計)そのものであるといえる。そして、レジスタの概念が明確となったRTLがエミュレーション・システムへの入力、すなわち初期論理となる。
【0018】これに続いて、ステップ53で、初期論理である複数のRTLが、エミュレーション・システム1を構成する複数のFPGA3に対応し、各々のFPGA3に実装および実現できる論理の大きさを考慮してさらに分割および細分化される。この段階で、各FPGA3にインストールしてシミュレーションする実装用のRTLと、それに基づく各FPGA内の接続情報54が生成され、同時に、初期論理を実現するために各FPGAを接続する結線情報、すなわち、各FPGAの間の結線情報55も生成される。
【0019】そして、ステップ56で実装用のRTLを、エミュレーション・システムを構成する各FPGA3の論理素子を用いて論理合成する。すなわち、FPGA3をRTLに基づきプログラミングする。それと共に接続情報に基づいてFPGA内をマッピング(配線配置)する。また、ステップ57で、結線情報55に基づいて本例のエミュレーション・システム1において各FPGA3を接続する制御回路部10の内の、入力データφiを生成するデータ生成部11や、出力データφoに基づき入力データφiを更新するデータ更新部12などをマッピングする。
【0020】これにより、複数のFPGA3を制御回路部10で接続したエミュレーション・システム1が、上記のように設計した初期論理に基づくRTLによる論理を検証できるプロトタイプ・ボードとなるので、ステップ58でこのプロトタイプ・ボード1による評価を行う。そして、ステップ59で評価が良ければ、ステップ52で生成したRTLによる論理回路をステップ60でシリコン化してLSIを製造する。これにより、要求仕様にしたがった機能を発揮するLSIを提供することができる。
【0021】一方、評価の結果、RTLあるいは各FPGA3を接続する結線情報に修正の必要がある場合には再度処理を行う。このような場合は、ステップ61で分割前のRTLを修正し、さらにそれを分割して再びFPGAに実装するといった修正工程をとることが一般的であり、修正されたRTLをFPGA3に合わせて分割し、さらに、それとともに得られる結線情報55に基づき制御回路部10のデータ生成部11やデータ更新部12などをマッピングする。本例のエミュレーション・システム1においては、入力データφiおよび出力データφoがFPGA3と制御回路部10との間で配線21を介してシリアル転送されるようになっている。このため、論理変更に伴う結線情報55の変更は制御回路部10の内部でプログラムなどにより処理することが可能であり、基板1の配線群20を変更することなく変更あるいは修正したロジック(RTL)に基づき即座に次の評価作業を行うことができる。
【0022】本例のエミュレーション・システム1においては、入出力データをシリアル転送するデータ転送手段として、制御回路部10のデータ入出力部15には、各FPGA3との間で転送する入力データφiおよび出力データφoに対応したデータ転送用の入力dデータ用のシフトレジスタ17と、出力データ用のシフトレジスタ18とが設けられている。さらに、各FPGA3には、内部のレジスタを用いて入力データ用のシフトレジスタ4と、出力データ用のシフトレジスタ5とが設けられ、各FPGA3に搭載されたロジックの入力端および出力端として動作し、それらとの間でデータを入出力できるようになっている。そして、これらのシフトレジスタ17および18、シフトレジスタ4および5が、データ転送用の配線21により接続されている。すなわち、FPGA3に搭載されたロジックの入力端および出力端と制御回路部10との間でデータをシリアル転送する手段が、制御回路部10のシフトレジスタ17および18と、各FPGA3のシフトレジスタ4および5と、これらを接続する配線21により構成されており、各FPGA3にインストールされたロジック境界における信号を制御回路部10によりスキャンできる構成となっている。したがって、以降においては、このような方法で入出力データをシリアル転送することをバウンダリースキャン(Boundary Scan、BS)と称することにする。
【0023】特に、本例のエミュレーション・システム1においては、FPGA3の内部レジスタを用いてデータ転送用のシフトレジスタを構成することにより、一般の入出力ピンの量に限定されることなく入力データおよび出力データの数を決めることが可能であり、入力データおよび出力データの数が多くなった場合でも、配線量あるいは配線可能な面積などに限定されずにシリアル転送することができる。したがって、エミュレーションする際に、モニターできる信号量は非常に多くなり、ロジックの内部状態なども含めてモニターすることが可能となる。
【0024】さらに、本例のエミュレーション・システム1においては、バウンダリースキャンを構成する複数のシフトレジスタにセットする、あるいはセットされるデータを変えることにより、結線情報55を満足するように各FPGA3にデータを入出力することが可能である。このため、結線情報55が無くても配線20を含めた基板2を製造することが可能であり、また、結線情報55が修正あるいは変更されてもそれに対応して配線20を変更しなくても良い。すなわち、デバイスのI/Oピンを通して入出力すべき信号を、デバイス内部の信号としてバウンダリースキャン用のシフトレジスタに接続し、これを通ってアクセスすることで、電源ピン等の、設計変更の可能性の低い配線のみ考慮するだけで、ボード設計や実装が可能になる。したがって、配線設計や配線基板2の製造および配線20の変更を最小限に止めることが可能であり、低コストで短期間にプロトタイプ・ボード1の機能を検証することができる。そして、このようにして製造されるLSIは、プロトタイプ・ボードで機能が検証されているので作り直しなどが発生することがなく、短期間に、低コストで所望の機能をそなえたシステムLSIを提供することができる。
【0025】図3に、本例のエミュレーション・システム1のFPGA3の側の構成および処理の概要を示してある。図2に示したフローチャートのステップ52または61において、図3(a)に示すようなロジックのRTL65が生成され、このRTL65は2つのロジックRTA66aおよび66bに分割できるとする。したがって、エミュレーション・システム1においては、図3(b)および(c)に示すようにFPGA3aにRTA66aが搭載され、FPGA3bにRTA66bが搭載され、これらのRTA66aおよび66bで交換される信号Aから信号Cは、バウンダリースキャンを用いて制御回路部10を介して入出力される。このため、それぞれのFPGA3aおよび3bには、入力用のシフトレジスタ4と、出力用のシフトレジスタ5がFPGA3aおよび3bの内部に構成、すなわちマッピングされており、各々のFPGA3aおよび3bにダウンロードされたRTL66aおよび66bの入力端に入力データφiを入力し、出力端から出力データφoを得られるようになっている。
【0026】図3(d)に示すように、入力端を兼ねる入力用のシフトレジスタ4は、複数のフリップフロップ4aがシリアルに接続された構成となっており、これらのフリップフロップ4aを転送用のクロック(バウンダリースキャンBSのクロック)φctにより制御回路部10から入力データφiがシリアルに転送される。また、各々のフリップフロップ4aが各々のFPGA3aおよび3bでエミュレーションされる論理(RTL)66aおよび66bの入力端となっており、全ての入力端に入力データφiが転送されたタイミングで実行用のクロックφceが供給され、RTL66aおよび66bが入力データφiにより動作する。
【0027】出力端を兼ねる出力用のシフトレジスタ5は、RTL66aおよび66bから出力された信号をラッチするためのセレクタ5aと、ラッチされた出力信号φoをシリアル転送するために直列に接続されたフリップフロップ5bとを備えた構成になっている。したがって、バウンダリースキャンBSのラッチ用の信号φcsにより、RTL66aおよび66bの出力端となっているセレクタ5aに現れた、エミュレーションされる論理であるRTL66aおよび66bの出力がラッチされ、転送用のクロック(BSのクロック)φctにより出力データφoが制御回路部10にシリアルに転送される。本例の入力用シフトレジスタ4と、出力用シフトレジスタ5はシリアルに接続されており、これらのシフトレジスタ4および5が1つのシフトレジスタを構成している。したがって、図3(b)および(c)に示した例では、制御回路部10から2つの入力データφiをシリアル転送すると、2つの出力データφoを制御回路部10は受信できるようになっている。
【0028】図4に、本例の制御回路部10の概略構成を示してある。まず、データ入出力部15には、入力データ用のシフトレジスタ17と、出力データ用のシフトレジスタ18とが設けられている。これらのシフトレジスタ17および18は、上記と同様に複数のフリップフロップ17aおよび18aがシリアルに接続された構成になっており、データ転送用のBSクロックφctにより複数のフリップフロップ17aにパラレルにセットされた入力データφiをシリアル転送し、複数のフリップフロップ18aにシリアル転送された出力データφoをパラレル出力できるようになっている。制御回路部10からは、入力データφiおよび出力データφoに加えて、データ転送用のクロックφct、出力データをラッチするための信号φcsおよびロジックを実行するためのクロックφceもFPGA3に供給される。
【0029】さらに制御回路部10は、入力データ用のシフトレジスタ17に入力データφiをセットするためのデータ更新部12と、ソフトウェアシミュレータからのデータをラッチして、次の検証用の入力データを生成する入力データ生成部11とを備えている。このため、入力データ生成部11は、ソフトウェアシミュレータ90とデータ交換するためのインターフェース16からデータをラッチできるフリップフロップ11aを備えており、制御部14から供給されるラッチ信号φdによりデータをラッチする。また、データ更新部12は、データ入力部11からのデータと、出力用のシフトレジスタ18からフィードバックされた出力信号φoの一部をラッチすることができるセレクタ12aを備えており、制御部14から供給されるデータ更新用の信号φrにより適当なタイミングでデータをラッチして入力用のシフトレジスタ17に供給する入力信号φiを生成または更新する。
【0030】一方、出力用のシフトレジスタ18にシリアル転送された出力データφoは、安定状態を検出するデータ評価部13に供給される。このデータ評価部13は、直前の出力データφiを保持するためのフリップフロップ13aと、このフリップフロップ13aにラッチされた値と、シフトレジスタ18に転送された値とをビット単位で比較するコンパレータ13bとを備えており、これらのコンパレータ13bの比較結果はアンドゲート13cにより評価される。そして、シフトレジスタ18にシリアル転送された全ての出力データφoが直前の出力データと一致すると、出力データφoが安定したと評価され、ソフトウェアシミュレータインタフェース16を介して次の検証用のデータが取得され、入力データφiが新たになって次の検証が開始される。
【0031】なお、図4には、1つのFPGA3にデータをシリアル転送する構成を代表して示してあり、制御部14およびソフトウェアシミュレータとのインターフェース16を除き、各々のFPGA毎にデータ生成部11、データ更新部12、データ評価部13およびシリアル転送用のシフトレジスタ17および18が必要となる。また、この例では、すべての出力データφoの安定度が評価部13によって評価されているが、モニターするだけの出力信号は安定状態の検出を省略することも可能である。そして、FPGA3にダウンロードされたRTLの検証結果をモニターする出力データφoは、ソフトウェアシミュレータとのインタフェース16を介してソフトウェアシミュレータとしての機能を果たすパーソナルコンピュータなどに送られ、FPGA3に搭載されたRTLの良否が判断される。
【0032】図5に、本例のエミュレーション・システム1において実行される処理の概要をフローチャートにより示してある。このフローチャートで示した各処理は、制御回路部10の制御部14であるプロセッサにより実行される制御プログラムにより制御される。図5に示した各工程を実行可能な命令を有する本例の制御プログラム製品は、ROMあるいはRAMなどの適当な記録媒体に記録された状態で提供され、制御回路部10のROM19などの適当な媒体に記録されて用いられる。まず、ステップ71において、エミュレーション・システム1およびソフトウェア・シミュレータ90を初期化する。エミュレーション・システム1においては、エミュレーションの対象となる論理(RTL)をFPGA3にダウンロードし、制御回路部10のマッピングなどを行い、入力データφiを入力できる状態にする。
【0033】次に、ステップ72において、最初の検証のための入力値(入力データ)φiを設定する。このステップにおいては、ソフトウェア・シミュレータ90から取得するエミュレーションの対象となるデータを入力データ生成部11でセットすると共に、他の入力データは適当な初期値をセットし、データ更新部12を経て入力用のシフトレジスタ17にセットする。そして、ステップ73において、シフトレジスタ17にセットされたデータφiをデータ転送用のクロックφctにより各FPGA3の入力用のシフトレジスタ4にシリアル転送する。入力データφiが所定の位置へ転送されるまでデータ転送用のクロックφctを送り、所定の位置まで転送されると、ステップ74でエミュレーション用のクロック信号φceを各FPGA3へ供給する。この段階で、入力用のシフトレジスタ4に転送された入力データφiはFPGA3にダウンロードされたRTLにしたがって処理され、出力データφoが現れる。
【0034】FPGA3の内部における遅延を考慮したタイミングで、ステップ75で出力データφoをラッチする信号φcsを各FPGA3に供給し、出力されたデータを出力用のシフトレジスタ5に格納する。そして、ステップ76で、データ転送用のクロック信号φctを再び出力して、出力データφoを制御回路部10の出力用のシフトレジスタ18に回収する。回収された出力データφoは、ステップ77で、評価部13により直前に得られた出力データと比較し、安定度が評価される。いずれかの出力データφoが変動している場合は、ステップ78で、データ更新部12により入力データφiのうち、所定のデータを出力データφoで更新する。その後、更新した入力データφiをステップ79でステップ73と同様にシリアル転送し、ステップ80でFPGA内部における遅延を待ち、ステップ75で出力データφoをラッチする。そして、ステップ77で信号が安定したと評価されるまで、このプロセスを繰り返す。一方、ステップ77で出力データφoが安定した場合は、ステップ80で出力データφoのうち、モニターすべき信号をソフトウェア・シミュレータ90に送信して比較する。
【0035】ソフトウェア・シミュレータ90では、ステップ81で、FPGA3にエミュレーション用のクロックφceが供給されるのと同じタイミングで実行用のクロックが出力されており、エミュレーション・システム1とほぼ同じ時間でソフトウェア・シミュレータ90のシミュレーション結果が得られるようになっている。したがって、ステップ82では、ソフトウェア・シミュレータ90における出力結果と、エミュレーション・システム1の出力データが比較評価され、その結果が表示される。これにより、FPGA3でエミュレーションされているRTLの良否を判断することができる。
【0036】ステップ82の結果により、次の検証に進むか否かが判断され、ステップ83で次の検証を行う場合は、ステップ72に戻って、次の検証用の入力データφiが入力データ生成部11の機能を用いて生成される。
【0037】図6のタイミングチャートは、図3に示したRTL65を2つのRTL66aおよび66bに分割して2つのFPGA3aおよび3bにダウンロードし、本例のエミュレーション・システム1で検証した例を示してある。図6(a)は、図3(a)に示したRTL65において、入力信号に対して信号A、信号B、信号Cが次々と変わり、組み合わせ回路の遅延があった後に、出力信号が出力される様子を示してある。図6(b)は、本例のエミュレーション・システム1において、同じ信号A、信号Bおよび信号Cの動きがシリアル転送によって制御回路部10を経て2つのFPGA3aおよび3bで行われる様子を示してある。概要は、入力により入力端子a01の信号が変わると、出力端子a11に信号Aが現れ、それにより入力端子b02の信号が更新され、出力端子b12に信号Bが現れる。さらに、それにより入力端子a02の信号が更新され、出力端子a12に信号Cが現れ、それによって入力端子b01の信号が更新され、出力端子b11に出力値が現れる。さらに、ワンサイクルの入出力が行われ、出力信号が変わらず、安定したことにより1つのロジックサイクルが終了する。すなわち、このケースでは、入力データφiおよび出力データφoのシリアル転送を5サイクル繰り返すことにより、1つの検証サイクルが終了する。
【0038】さらに詳しく説明すると、時刻t1に入力値が反映された入力データφiが制御回路部10の入力用のシフトレジスタ17にセットされると、それがBSの転送クロックφctにより転送され、時刻t2にFPGA3aおよび3bのシフトレジスタ4にセットされる。そのときに、エミュレーション用のクロックφceが供給される。すなわち、エミュレーションされるロジックのクロックを1回、高レベルと低レベルに反転させる。これにより、入力データφiがRTL66aおよび66bに取り込まれ、出力データφoが出力される。したがって、時刻t3にラッチ信号φcsを供給して出力信号φoを出力用のシフトレジスタ5にラッチする。そして、時刻t4に、再び転送用のクロック信号φctを供給して時刻t5に出力データφoを制御回路部10の出力用のシフトレジスタ18に回収する。回収された出力データφoは安定性が評価され、それと共に出力データφoにより入力データφiが更新される。この段階で、2つのFPGA3aおよび3bの間の接続が確立されたことになる。
【0039】更新された入力データφiは、再び、時刻t6にFPGA3aおよび3bにシリアル転送され、入力データφiが揃った時刻t7からFPGA内部の遅延を待つ。そして、時刻t8に、出力された新しい出力データφoがラッチされて、シリアル転送により制御回路部10に回収される。回収された出力データφoは同様に安定性が評価され、安定していない場合は、再び入力データφiが更新されてFPGA3aおよび3bにシリアル転送される。そして、データが揃った時刻t9からFPGA内部の最大遅延を考慮した時刻t10に出力された信号がラッチされる。同様のプロセスをさらに時刻t11およびt12と繰り返した段階で、本ケースでは、出力が安定する。したがって、時刻13に供給された入力信号φiにより時刻t14に得られる出力データφoは変わらない。このため、時刻t15からの転送クロックφctにより回収された出力データφoは、時刻t16に安定性が評価されたときに、前回の出力データと同じとなり、次の検証に移行することができる。
【0040】本例のエミュレーション・システム1においては、このように、繰り返して入力データおよび出力データを照合し、安定したところで、次の検証に移行する。したがって、制御部14にインストールされる制御プログラムは、この繰り返しの回数をモニターし、数回以上の繰り返しを生じた場合は、FPGA3にダウンロードされたロジックによる回路が発振状態になっているとみなしてエミュレーションを停止し、警告を出す機能を持たせている。エミュレーションの対象となるロジックは、クロックに同期した設計なので、一般に、発振状態になる事はない。また、繰り返しの回数を減らす事が、エミュレーション・システム1の性能を向上させる事になるので、制御プログラムが安定状態になりにくい信号を知らせるようにすることにより、そのような信号がシリアル転送する、すなわち、バウンダリースキャンされる対象とならない様にロジックの分割を再検討する事が可能となり、有意義である。すなわち、このような機能を持たせることにより、本例のエミュレーション・システム1は、ロジックの分割を最適化するための支援機能を持つことになる。
【0041】また、入力データおよび出力データの転送を繰り返してエミュレーション・システム1の内部が安定状態に遷移した後、必要であればソフトウエア・シミュレータ90にモニター用の値を返すことは上述した通りである。そして、シリアル転送の対象になった入力データφiおよび出力データφoは、全て制御回路部10を経由して転送されるので、これらを制御回路部10あるいは制御部14を駆動する制御ソフトウェア内に保持することも可能であり、ソフトウエア・シミュレータ90が最終の出力値だけではなく、安定する間にFPGA間で交換されたデータにアクセスすることも容易である。さらに、シリアル転送されるデータ以外の、レジスタの値等の内部信号をモニターしたい場合であっても、デバイス間、すなわちFPGA間での接続先がない出力信号として、シリアル転送するデータとして追加することが可能である。また、FPGAなどのデバイスが持つ、独自のデバッグ機能を併用することも可能であり、それにより内部信号の状態をモニターする事も可能である。
【0042】このように、本例にエミュレーション・システム1は、FPGA等のロジックをダウンロードできるデバイスを使うと共に、これらエミュレーションの対象となるロジックを構成するのに必要なデバイス間の接続に、バウンダリースキャンのシリアル転送を利用する事を特徴としたものである。そして、バウンダリースキャンを利用した接続でエミュレーションを実行するに当たり、シリアル転送される信号の安定状態を監視しながら実行する制御機構10を持ち、ロジックの良否を確実に検証することができる。そして、一般にはデバイスの入出力ピンを通して入出力する信号をデバイス内部の信号としてバウンダリースキャン用のシフトレジスタ4および5を介して制御回路部10と接続するようにしているので、電源ピンなどの設計変更の可能性の低い配線のみを考慮することでボード2の設計や実装が可能になる。
【0043】さらに、従来の複数のFPGAなどのデバイスを用いたエミュレーション・システムでは、FPGAに分割されたロジックの接続は、FPGAの出力ピンから入力ピンに対して、1対1、あるいは1対多で接続され、その接続はその信号の専用であった。これに対し、本例のエミュレーション・システムにおいては、シリアル転送することにより、多対多で接続することが可能となり、配線量を大幅に削減することができる。そして、入力データあるいは出力データの順番を変えることにより、結線情報の変更にも極めて柔軟に対応することができる。したがって、低コストで、短期間にエミュレーション・システム1を構築することが可能であり、システムLSIの開発期間および開発費用を削減するのに非常に有効である。
【0044】一方、バウンダリースキャンを使う事は、入力データおよび出力データをシリアル転送するために必要な時間の分、エミュレーションの実行速度が低下する事を意味する。しかしながら、本例のエミュレーション・システム1のようにソフトウエア・シミュレータ90をインターフェースに使うシステムでは、ソフトウェア・シミュレータ90の実行速度の限界よりもシリアル転送の量が上回る様にすることで、実行速度の遅さが実際のエミュレーション結果を求める過程では、影響を与えないようにすることができる。したがって、本例のエミュレーション・システムでは、ロジックの変更に伴う結線情報の変更に対し、極めて柔軟に低コストおよび短期間に対処することができるので、TATが短くでき、ゲームや画像処理系のアプリケーションの開発にも十分に対応できる開発速度の速いエミュレーション・システムとなっている。
【0045】データをシリアル転送する時間を短縮する方法としては、まず、図7に示すように、FPGA3の内部に構成された入力データおよび出力データ用のシフトレジスタ4および5を複数に分割して、バウンダリースキャンの本数を増やす事が可能である。これにより、データを所定の位置まで転送するために必要なデータ転送用のクロックφctの量を削減することができるので、データ転送に係る時間を短縮することができ、出力データφoが安定するまでの時間を短縮することができる。
【0046】また、データをシリアル転送する回数を削減することによっても実行時間を短縮することが可能である。すなわち、本例のエミュレーション・システム1では、RTLが複数に分割されたFPGA3に搭載されるが、その分割方法を改善することによりエミュレーションの速度を向上することができる。たとえば、図3においては、図3(a)に示したロジック(RTL)65を単純に左右のロジック66aおよび66bに分割している。これに対し、図3(a)と同じロジックである図8(a)のロジック65を、図8(b)および(c)に示すように、これらのロジックで交換されるデータを考慮して、ロジック66aおよび66bの組み合わせ回路と順序回路の組み合わせを変えて分割することができる。この新しい分割では、2つのFPGA3aおよび3bにダウンロードされるロジック(RTL)67aおよび67bでは、組み合わせ回路同士で交換される信号BのみがFPGA3aおよび3bで交換される。したがって、図9に示すように、シリアル転送を3サイクル繰り返すだけで出力データφoが安定したことを判断することが可能となり、図3(b)および(c)に示した分割方法であると5サイクル必要としたのに対し、2サイクル短縮することができる。
【0047】すなわち、時刻t21に入力データφiがセットされてシリアル転送され、時刻t22に入力用のシフトレジスタ4にセットされると、エミュレーションを実行するクロックφceが供給され、その結果出力されたデータがラッチ信号φcsで時刻t23にラッチされ、その後のシリアル転送で制御回路部10に回収される。本例においては、信号Bのみが次のサイクルのシリアル転送で供給され、時刻t24に実行されると時刻t25に出力値が出力端b11に得られる。したがって、次のサイクルの時刻t26に供給された入力データφiで時刻t27に得られる出力データφoは、前のサイクルの出力データと同じになる。このため、出力データφoが制御回路部10に回収された時刻t28に出力データφoが安定していると判断され、次の検証に進むことができる。
【0048】このように、組み合わせ回路を素通りする経路の入力信号と出力信号を、シリアル転送するデータの対象とならない様に分割するなどの方法により、シリアル転送されるデータ量を削減することにより、エミュレーション・システム1のパフォーマンスを向上することができる。
【0049】さらに、本例のエミュレーション・システム1においては、バウンダリースキャンによりFPGA3だけではなく、図1に示すように、既存のデバイス9もエミュレーション・システムに取り込むことが可能であり、これらのデバイスの間で信号を交換することも極めて容易に行うことができる。特に、デバイス間のプリント基板配線の接続試験、または専用の入出力ピンを使用したデバイス内部の試験を目的としたJTAG機能を備えたデバイスであり、その試験機能を使う事で通常と同じ動作が得られるのであれば、図1に示すような、既存のデバイス9との接続にバウンダリースキャン用のシフトレジスタ持ったインターフェイス用のFPGA3cを用意しなくても、JTAGを使って直接に接続することも可能となる。しかしながら、JTAGの目的は試験接続であり、一般的にデバイスの入出力ピン数に限定され、バウンダリースキャンで想定する、FPGAの内部レジスタ数まで入力端および出力端を拡張する機能は持たない。しかしながら、FPGA内部のレジスタまで入出力端を広げたバウンダリースキャンの限定的なエミュレーション・システムとしてJTAGのように入出力ピンベースで入力データおよび出力データを供給するエミュレーション・システムを構築することは可能であり、その限定的な範囲でエミュレーションを実行できるのであれば極めて有効である。
【0050】本例のエミュレーション・システム1では、クロックに同期して設計されたロジックしかサポートできない。しかしながら、クロックが複数存在し、それぞれのクロックの関係が、非同期で動作する事は問題ない。また、クロックに非同期の動作を持つとしても、エミュレーションに使用するクロックに同期させて使用可能であればエミュレーション・システムに加えることができる。例えば、クロック非同期の既存のチップであっても、シリアル転送用のシフトレジスタで囲む事で使用可能になる。
【0051】また、本例のミュレーション・システム1に搭載できるデバイスは、スタティック動作が可能でなければならない。すなわち、クロックをハイまたはローのどちらかに固定して、デバイスの動作を停止しても、再びクロックがハイまたはローに反転すれば、正常な動作に復帰できるデバイスでなければならない。ただし、クロックが常にハイまたはローに反転していても、外部からの入力信号により、動作を停止できる機構を持つデバイスであればエミュレーション・システムに加えることは問題ない。
【0052】以上に説明したように、従来のエミュレーション・システムのように、FPGAなどのデバイスをハード・ワイヤード(専用配線)で接続するシステムでは、その後のロジックの変更が困難になる。FPICなどを採用することにより、ソフトウェア的に配線経路を変更可能なシステムにする事も可能であるが、入出力ピンに対して1対1あるいは1対多の接続配線が必要となるので、膨大な配線量となる。したがって、デバイスの入出力ピン数の制約、プリント基板上の配線経路の制約があり、その結果、ロジック変更の自由度は高くなりにくい。これに対し、本例のエミュレーション・システム1においては、データをシリアル転送することを特徴としている。したがって、デバイスを接続する配線量は非常に少なくてよい。さらに、シリアル転送するためのシフトレジスタをFPGAなどのプログラム可能なデバイス内部のレジスタを用いて構成することにより、複数のFPGAに分割されたロジック間の信号の接続に際し、FPGAの入出力ピン数に制約されない。したがって、配線の物理的な変更を伴わずに、接続変更の自由度が非常に高いエミュレーション・システムを提供することが可能となる。
【0053】また、このようなエミュレーション・システムでは、データを入出力するための接続に使用する入出力ピン数が少なくて良い。したがって、安価なパッケージに入ったデバイスを使用して多量のデータを入出力するエミュレーション・システムを構築することが可能となる。また、入出力ピン数の少ないパッケージを使用することにより、プリント基板への実装コストを削減することも可能となる。
【0054】さらに、使用する入出力ピン数が少なくてよいので、少ない本数のプリント基板配線でエミュレーションシステムを構築出来ることは上述した通りであるが、配線を多少増やすことにより、データ転送速度を顕著に高速化することができる。すなわち、シリアル転送に必要な入出力ピンは最小限1組であるが、複数組の入出力ピンを使用することで、転送されるデータ量を増大させたり、転送時間を短縮することが可能となる。また、FPGAの入出力ピンは、データの転送作業に特化する事が可能なので、最新のFPGAが持つ、高速データ転送の機能を有効利用することも可能となる。
【0055】また、本例のエミュレーション・システム1では、シリアル転送されて来たデバイスからの出力信号φoは、制御回路部10、もしくは制御部14で実行される制御ソフトウェアによって、信号φoの値が安定状態に遷移する事を監視されながら動作する。この際、シリアル転送された出力データφoの何番目の値が、論理分割された、どのネット、すなわち、どのFPGAあるいはどのRTLに対応するかは、分割時に記録され、同時にそのネットの接続先(シリアル転送順)が認識可能になる。出力信号φoの状態管理を制御部14で実行されるプログラムで行う場合、この情報を元にjメモリー上に対応表を作る等の方法が考えられる。一方、安定状態の評価などの出力信号φoの処理を、他の制御回路部10のハードウェア(専用回路)で行うことも可能であり、この場合は、新たな接続先の情報を元に、新たな接続を持ったネットリストを備えた制御回路部10をFPGAなどのプログラム可能なデバイスを用いて構築する。そして、出力データφoをバウンダリースキャンして取り込んでも、全てのネットが安定状態に達しない間は、その出力信号φoは変動する。このため、それらの出力信号φoの接続先として定義されたデバイスの入力に対する入力データが更新され、再びバウンダリースキャンによって転送される。そして、このバウンダリースキャンの出力データφoと入力データφiの接続を制御する事で、自由にデバイス間の接続を変更可能であることは上述した通りである。
【0056】さらに、一般にエミュレーションの対象となるロジックは、例えばFPGAに構築された際、信号の入出力に入出力ピンを使用する。したがって、入力ピンに値を設定したり、出力ピンの値をモニターするには、その目的の為の接続を用意しなければならない。これに対し、上述した本例のエミュレーション・システム1においては、FPGA3の内部のレジスタでシリアル転送用のシフトレジスタを構成している。このため、これらデバイスの入出力ピンを通して入出力すべき信号を、デバイス内部の信号としてシリアル転送することが可能となり、ソフトウエア・シミュレータにより、デバイスの外部、内部の区別なくアクセスすることができ、検証に必要とされるデータをモニターすることができる。また、これらのモニター用のデータ接続の変更は、例えば、合成後のネットリストにおいて、使用されている入出力セルを、バウンダリースキャンのシフトレジスタへの置き換える事で、実現可能となる。
【0057】また、エミュレーション・システム上に、例えばプロセッサの様な、既存のデバイスを搭載することも可能であることは上述した通りである。さらに、その既存のデバイスが、JTAGの機能を備えており、1クロック単位での動作が可能であれば、データをシリアル転送することにより直接利用する事が可能となる。JTAGなどの機能を持たなくとも、クロック停止によるスタティック動作が可能であれば、例えばFPGAを利用し、プロセッサの入出力に接続するシリアル転送手段を構築する事が可能となる。この場合、プロセッサと入出力用のFPGAの間は、プリント基板上に、専用の配線を準備する事になるが、既存のデバイスを使用した場合、それに対してのアクセス方法が変更になり、配線を変更することは少ないので、本例のエミュレーション・システムのフレキシビリティに与える影響は少ない。
【0058】なお、上記では、C言語によりシステムLSIの仕様が与えられたケースを例に説明しているが、仕様は必ずしもC言語で与えられなくても良い。また、本例では、複数のFPGAに論理が分割される例を示してあるが、単一のFPGAに論理が搭載されたエミュレーション・システムにおいても、本発明を適用することが可能であり、配線を削減でき、ロジックの変更に対するフレキシビリティが高いといった効果を得ることができる。また、本例では、システムLSIを製造および開発する例を説明しているが、本発明は、既存の配線形態でLSIを搭載するようなシステムボードの作成にも有効に使用することが可能である。
【0059】
【発明の効果】以上に説明したように、本発明のエミュレーション装置では、FPGAなどの検証するロジックが搭載される集積回路装置に対する入力データおよび出力データをシリアル転送するデータ伝送手段を設けている。したがって、配線量が非常に少なくなり、また、ロジックの修正あるいは変更に伴う接続情報の変更にも簡単に対処することができる。このため、TATが短縮でき、携帯電話や情報家電やゲーム機のように最終ユーザが消費者であり流行に左右されやすい商品のシステムLSIの短期間開発に極めて有効な低コストのエミュレーション装置を提供することができる。
【出願人】 【識別番号】598149242
【氏名又は名称】パシフィック・デザイン株式会社
【出願日】 平成12年9月29日(2000.9.29)
【代理人】 【識別番号】100102934
【弁理士】
【氏名又は名称】今井 彰
【公開番号】 特開2002−108645(P2002−108645A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2000−300253(P2000−300253)