(57)【要約】【課題】ＩＣの設計ソースコードを論理合成することなく、ＩＣの入出力端子がソースコードに記載された機能を模擬して動くようにするための、ＩＣエミュレーション方法を提供する。【解決手段】バウンダリスキャンを実行してＩＣの入力信号を取得し、得られた入力信号と与えられたＩＣのソースコードから出力信号を論理シミュレーションによって計算し、その出力結果をバウンダリスキャンの入力として用いることによって、ＩＣの端子を操作する。【選択図】  図２
2009009325.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットＩＣから取得したバウンダリスキャンレジスタビット列に基づいて当該ＩＣの入力信号論理値テーブルを生成するバウンダリスキャンプログラムと、
前記入力信号論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成する論理シミュレーションプログラムと、
前記出力信号論理値テーブルに基づいてバウンダリスキャンビット列を生成して当該ＩＣのバウンダリスキャンレジスタにセットする前記バウンダリスキャンプログラム、
を用いて当該ＩＣの動作を模擬することを特徴としたＩＣエミュレーション装置。
【請求項２】
バウンダリスキャンプログラムにおいて、ターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成して論理シミュレーションプログラムの入力に与える機能と、前記論理シミュレーションプログラムが生成する出力信号論理値テーブルに基づいて当該ＩＣのバウンダリスキャンビット列を生成する機能を備えたバウンダリスキャンプログラム。
【請求項３】
論理シミュレーションプログラムにおいて、バウンダリスキャンプログラムがターゲットＩＣから取得したバウンダリスキャンレジスタビット列に基づいて生成した入力信号論理値テーブルと、当該ＩＣの設計ソースコードとを入力として、論理シミュレーションを行い、その結果を出力信号論理値テーブルとして前記バウンダリスキャンプログラムに与えることを特徴とした論理シミュレーションプログラム。
【請求項４】
ターゲットＩＣから取得したバウンダリスキャンレジスタビット列に基づいて当該ＩＣの入力信号論理値テーブルを生成するバウンダリスキャンプログラムと、
前記入力信号論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成する論理シミュレーションプログラム、から構成され、
前記バウンダリスキャンプログラムは前記出力信号論理値テーブルに基づいて当該ＩＣに出力するバウンダリスキャンビット列を生成することを特徴とするＩＣエミュレーションプログラム。
【請求項５】
バウンダリスキャンプログラムがターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成し、
論理シミュレーションプログラムが前記入力信号論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成し、
前記バウンダリスキャンプログラムが前記出力信号論理値テーブルに基づいてバウンダリスキャンビット列を生成することによって、当該ＩＣの動作を模擬するＩＣエミュレーション方法。
【請求項６】
ターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成するバウンダリスキャンプログラムと、
前記入力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて入力信号修正論理値テーブルを作成する入力信号修正プログラムと、
前記の入力信号修正論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成する論理シミュレーションプログラムと、
前記出力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて出力信号修正論理値テーブルを作成する出力信号修正プログラムと、
前記出力信号修正論理値テーブルに基づいてバウンダリスキャンビット列を生成して当該ＩＣのバウンダリスキャンレジスタにセットする機能を備えた前記バウンダリスキャンプログラム、
を用いて当該ＩＣの動作を模擬することを特徴とした、ＩＣエミュレーション装置。
【請求項７】
ターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成するバウンダリスキャンプログラムと、
前記入力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて入力信号修正論理値テーブルを作成する入力信号修正プログラムと、
前記の入力信号修正論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成する論理シミュレーションプログラムと、
前記出力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて出力信号修正論理値テーブルを作成する出力信号修正プログラムと、
前記出力信号修正論理値テーブルに基づいてバウンダリスキャンビット列を生成して当該ＩＣのバウンダリスキャンレジスタにセットする機能を備えた前記バウンダリスキャンプログラム、から構成されるＩＣエミュレーションプログラム。
【請求項８】
バウンダリスキャンプログラムがターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成し、
入力信号修正プログラムが前記入力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて入力信号修正論理値テーブルを生成し、
論理シミュレーションプログラムが前記入力信号修正論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成し、
出力信号修正プログラムが前記出力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて出力信号修正論理値テーブルを生成し、
前記バウンダリスキャンプログラムが前記出力信号修正論理値テーブルに基づいてバウンダリスキャンビット列を生成して当該ＩＣのバウンダリスキャンレジスタにセットすることによって、当該ＩＣの動作を模擬するＩＣエミュレーション方法。
【請求項９】
請求項６に記載するＩＣエミュレーション装置において、入力信号修正論理値テーブルには、当該ＩＣの入力信号が前回取得した状態と異なる場合のみ記載することを特徴とした、ＩＣエミュレーション装置。
【請求項１０】
請求項７に記載するＩＣエミュレーションプログラムにおいて、入力信号修正論理値テーブルには、当該ＩＣの入力信号が前回取得した状態と異なる場合のみ記載することを特徴とした、ＩＣエミュレーションプログラム。
【請求項１１】
請求項８に記載するＩＣエミュレーション方法において、入力信号修正論理値テーブルには、当該ＩＣの入力信号が前回取得した状態と異なる場合のみ記載することを特徴とした、ＩＣエミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣの動作をエミュレーションする装置に関する。また、ＩＣの動作をエミュレーションする装置のプログラムに関する。さらにＩＣの動作をエミュレーションする方法に関するものである。
【背景技術】
【０００２】
近年の電子回路基板とりわけ組み込みシステム用の回路基板は、一般的にＦＰＧＡやＣＰＬＤやＡＳＩＣやＣＰＵなど能動的に動作する機能を持った大規模ＬＳＩ（以下、ＦＰＧＡ等と略す）を中心として、コネクタや受動部品、電源、各種インタフェースＩＣ、メモリＩＣ、アナログＩＣ、その他のＩＣ（以下、各種ＩＣと略す）などの電子部品を周辺に配置した構成となっている。
【０００３】
このような回路基板を設計し、ＦＰＧＡやＣＰＵ内部の回路やプログラムを開発する段階においては、回路の中心となるＦＰＧＡ等と、基板上の各種ＩＣとの論理的な接続を確立する作業が行われる。
【０００４】
ＦＰＧＡ等と各種ＩＣとの間で論理的な接続を確立するためには、ＦＰＧＡ等は、各種ＩＣが規定する手順で電気信号を入出力しなければならない。ＦＰＧＡ等の設計者は、各種ＩＣが目的の機能を果たすよう動作することが確認できるまで、ＦＰＧＡ等のソースコードを修正あるいは加筆して論理合成を行うという作業を繰り返し行うことになる。
【０００５】
ＦＰＧＡの設計においては論理シミュレータが使われることがある。論理シミュレータはＦＰＧＡ内部の回路の動作をコンピュータ上で模擬するものである。論理シミュレータはハードウェア記述言語で記述されたＦＰＧＡの設計ソースコードに基づいて、ＦＰＧＡの内部信号と出力信号の論理値を計算するプログラムである。ＦＰＧＡ外部の各種ＩＣとの接続シーケンスを含めた回路全体をシミュレーションするためには、それらの各種ＩＣが入出力するであろうと予測される信号のパターンを記述したテストベクタというものを、人が作成する必要があった。
【０００６】
しかしながら、テストベクタはあくまでも、ＦＰＧＡ外の回路の動作を人が予測して記述するものであるため、必ずしも周辺回路の動作をすべて正確に記述したものではない。したがって、シミュレーション後には実機を用いて、周囲の各種ＩＣを動作させる動作確認が行われてきた。
【０００７】
実機での動作確認を行うためには、ＦＰＧＡの論理合成とダウンロードという作業を行う必要があった。一般にＦＰＧＡの論理合成は長時間を要するものである。ソースコードを修正して論理合成を行うという作業を何度も繰り返した場合、論理合成に要する時間長いと作業効率が低下した。
【０００８】
さて、近年のＦＰＧＡやＣＰＬＤ、ＡＳＩＣ、ＣＰＵなどの大規模ＬＳＩは、バウンダリスキャンに対応しているものが多い。バウンダリスキャンとは、ＩＥＥＥ１１４９．１で規格化されたスキャンテスト方式である。ＩＥＥＥ１１４９．１はＪＴＡＧ（ジェイタグ）とも呼ばれる。ＪＴＡＧおよびバウンダリスキャンについては非特許文献１に詳しい解説がある。
【０００９】
バウンダリスキャンを利用すると、ＦＰＧＡ等が入出力する信号端子の論理状態を、そのＦＰＧＡ等に設けられたＪＴＡＧ信号端子を介して、外部のコンピュータから自由に観測したり操作したりすることができる。
【００１０】
従来の技術においては、バウンダリスキャンはプリント基板の実装検査などの分野で応用されてきた。これは、バウンダリスキャン対応ＩＣの端子が出力する信号の論理値を、テスト技術者があらかじめ作成したテストパターンにしたがって順番に操作し、その結果周囲の回路から返される各種信号の論理をコンピュータ上に取り込み、それを人またはコンピュータが解析して良否を判定するものである。
【００１１】
バウンダリスキャン以外のＪＴＡＧの活用方法としてはＪＴＡＧ−ＩＣＥが挙げられる。ＪＴＡＧ−ＩＣＥとは、ターゲットＣＰＵの動作をエミュレーションする技術である。この方法は、ＪＴＡＧポートを介してホストコンピュータとＣＰＵ内部のテスト回路間で通信し、ＣＰＵの命令実行ユニットなど遠隔制御して任意の機械語命令を実行させる方法である。したがって、実際の制御手順はＣＰＵの品種ごとに異なる。ＪＴＡＧ−ＩＣＥの説明および実現方法については特許文献１に詳しい解説がある。
【特許文献１】特開２００４−２８０５８８号公報
【非特許文献１】ＪＴＡＧテストの基礎と応用、１９９８年、ＣＱ出版社
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明が解決しようとする課題は、ＩＣの設計ソースコードを論理合成することなく、ＩＣの入出力端子がソースコードに記載された機能を模擬して動くようにするための、ＩＣエミュレーション方法を提供することである。
【課題を解決するための手段】
【００１３】
バウンダリスキャンプログラムと、論理シミュレーションプログラムを用意し、バウンダリスキャンプログラムはＩＣから得たバウンダリスキャンビット列をもとにＩＣが入力する信号の論理値の一覧を記載したテーブルを作成し、論理シミュレーションプログラムは前記テーブルとＩＣの設計ソースコードを用いて論理シミュレーションを実行し、その結果得られた出力信号の論理値をテーブルとして出力し、バウンダリスキャンプログラムは前記の出力信号テーブルをもとにバウンダリスキャンビット列を生成し、ＪＴＡＧポートを介してそのビット列をＩＣのバウンダリスキャンにセットすることによって、ＩＣの端子を操作する。
【００１４】
すなわち、本発明は、ターゲットＩＣから取得したバウンダリスキャンレジスタビット列に基づいて当該ＩＣの入力信号論理値テーブルを生成するバウンダリスキャンプログラムと、前記入力信号論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成する論理シミュレーションプログラムと、前記出力信号論理値テーブルに基づいてバウンダリスキャンビット列を生成して当該ＩＣのバウンダリスキャンレジスタにセットする前記バウンダリスキャンプログラムとを用いて当該ＩＣの動作を模擬することを特徴としたＩＣエミュレーション装置である。
【００１５】
また、本発明は、バウンダリスキャンプログラムにおいて、ターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成して論理シミュレーションプログラムの入力に与える機能と、前記論理シミュレーションプログラムが生成する出力信号論理値テーブルに基づいて当該ＩＣのバウンダリスキャンビット列を生成する機能を備えたバウンダリスキャンプログラムである。
【００１６】
また、本発明は、論理シミュレーションプログラムにおいて、バウンダリスキャンプログラムがターゲットＩＣから取得したバウンダリスキャンレジスタビット列に基づいて生成した入力信号論理値テーブルと、当該ＩＣの設計ソースコードとを入力として、論理シミュレーションを行い、その結果を出力信号論理値テーブルとして前記バウンダリスキャンプログラムに与えることを特徴とした論理シミュレーションプログラムである。
【００１７】
また、本発明は、ターゲットＩＣから取得したバウンダリスキャンレジスタビット列に基づいて当該ＩＣの入力信号論理値テーブルを生成するバウンダリスキャンプログラムと、前記入力信号論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成する論理シミュレーションプログラムとから構成され、前記バウンダリスキャンプログラムは前記出力信号論理値テーブルに基づいて当該ＩＣに出力するバウンダリスキャンビット列を生成することを特徴とするＩＣエミュレーションプログラムである。
【００１８】
また、本発明は、バウンダリスキャンプログラムがターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成し、論理シミュレーションプログラムが前記入力信号論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成し、前記バウンダリスキャンプログラムが前記出力信号論理値テーブルに基づいてバウンダリスキャンビット列を生成することによって、当該ＩＣの動作を模擬するＩＣエミュレーション方法である。
【００１９】
また、本発明は、ターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成するバウンダリスキャンプログラムと、前記入力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて入力信号修正論理値テーブルを作成する入力信号修正プログラムと、前記の入力信号修正論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成する論理シミュレーションプログラムと、前記出力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて出力信号修正論理値テーブルを作成する出力信号修正プログラムと、前記出力信号修正論理値テーブルに基づいてバウンダリスキャンビット列を生成して当該ＩＣのバウンダリスキャンレジスタにセットする機能を備えた前記バウンダリスキャンプログラム、を用いて当該ＩＣの動作を模擬することを特徴としたＩＣエミュレーション装置である。
【００２０】
また、本発明は、ターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成するバウンダリスキャンプログラムと、前記入力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて入力信号修正論理値テーブルを作成する入力信号修正プログラムと、前記の入力信号修正論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成する論理シミュレーションプログラムと、前記出力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて出力信号修正論理値テーブルを作成する出力信号修正プログラムと、前記出力信号修正論理値テーブルに基づいてバウンダリスキャンビット列を生成して当該ＩＣのバウンダリスキャンレジスタにセットする機能を備えた前記バウンダリスキャンプログラム、から構成されるＩＣエミュレーションプログラムである。
【００２１】
また、本発明は、バウンダリスキャンプログラムがターゲットＩＣから取得したバウンダリスキャンレジスタビット列を解析して当該ＩＣの入力信号論理値テーブルを生成し、入力信号修正プログラムが前記入力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて入力信号修正論理値テーブルを生成し、論理シミュレーションプログラムが前記入力信号修正論理値テーブルと当該ＩＣの設計ソースコードに基づいて当該ＩＣが出力する信号を計算してそれを出力信号論理値テーブルとして生成し、
出力信号修正プログラムが前記出力信号論理値テーブルに記載された特定の信号の論理値を指定された手順で書き換えて出力信号修正論理値テーブルを生成し、前記バウンダリスキャンプログラムが前記出力信号修正論理値テーブルに基づいてバウンダリスキャンビット列を生成して当該ＩＣのバウンダリスキャンレジスタにセットすることによって、当該ＩＣの動作を模擬するＩＣエミュレーション方法である。
【００２２】
好適には、本発明は、上記ＩＣエミュレーション装置において、入力信号修正論理値テーブルには、当該ＩＣの入力信号が前回取得した状態と異なる場合のみ記載することを特徴としたＩＣエミュレーション装置である。
【００２３】
また、好適には、本発明は、上記ＩＣエミュレーションプログラムにおいて、入力信号修正論理値テーブルには、当該ＩＣの入力信号が前回取得した状態と異なる場合のみ記載することを特徴とした、ＩＣエミュレーションプログラムである。
【００２４】
また、好適には、本発明は、上記ＩＣエミュレーション方法において、入力信号修正論理値テーブルには、当該ＩＣの入力信号が前回取得した状態と異なる場合のみ記載することを特徴とした、ＩＣエミュレーション方法である。
【発明の効果】
【００２５】
本発明を用いれば、バウンダリスキャンに対応したＩＣの入出力端子を、バウンダリスキャンを用いて操作することによって、ＩＣの論理合成を行うことなく、かつソースコードで記述したとおりに動作させることができ、コンピュータで計算したとおりにＩＣの動作をエミュレーションできるようになる。
【発明を実施するための最良の形態】
【００２６】
図１は、本発明を実施する際のシステム構成の例を示したものである。
【００２７】
検査対象ターゲット回路基板上には、ＪＴＡＧバウンダリスキャンに対応したＩＣとして、ＦＰＧＡが実装されており、ＦＰＧＡの入出力端子には不揮発性メモリＩＣとＬＥＤ、コネクタ、スイッチなどが接続されている。ＦＰＧＡのＪＴＡＧ端子は回路基板上に設置されたＪＴＡＧコネクタを介して基板外に出力されている。
【００２８】
本発明のＩＣエミュレーション装置は、このＦＰＧＡをバウンダリスキャンで操作することによって、ＦＰＧＡ内部の論理回路は停止させたまま、ＦＰＧＡの端子のみをコンピュータから制御するものである。このことによって、回路基板上の不揮発性メモリＩＣなどを操作する機能を持ったＦＰＧＡのソースコードのデバッグを支援することを目的とする。
【００２９】
コンピュータとターゲット回路基板との間は、ＪＴＡＧ信号入出力装置を用いて接続する。ＪＴＡＧ信号入出力装置は、コンピュータ上のＵＳＢポートもしくはパラレルポートに接続する。コンピュータ上のプログラムは、ＪＴＡＧ信号入出力装置を介してＴＤＩ、ＴＤＯ、ＴＣＫ、ＴＭＳの４本のＪＴＡＧ信号を操作する。ＪＴＡＧ信号入出力装置内にはマイコンなどを搭載して、ＪＴＡＧ信号をより高速に生成する機能を備えても良い。
【００３０】
コンピュータにはキーボードとマウスが接続され、オペレータが操作することができるようになっている。このコンピュータは本発明に係る手順を実行するためのプログラムが格納されている。コンピュータはネットワーク接続機能を備えていてもよい。なお、このコンピュータは一般的なパソコンでよい。
【００３１】
ターゲット基板上のＦＰＧＡを論理合成するためのソースコードファイルは、前記コンピュータのハードディスク装置に格納されている。当然ながら、コンピュータがネットワークに接続されている場合は、このファイルは他のサーバ上にあってもよい。
ターゲット基板上のＦＰＧＡのＪＴＡＧに関する情報が記述されたファイル、すなわちＩＥＥＥ１１４９．１で規定するところのＢＳＤＬファイルは、前記コンピュータのハードディスク装置に格納されている。コンピュータがネットワークに接続されている場合は、このファイルは他のサーバ上にあってもよい。
【００３２】
次に図２を用いて本発明に係る装置の動作を説明する。本発明はバウンダリスキャンプログラム、論理シミュレーションプログラムから構成される。バウンダリスキャンプログラムはＪＴＡＧ信号入出力装置を操作して、ターゲットＩＣ内のバウンダリスキャンレジスタを読み込み、またはセットする。バウンダリスキャンプログラムは入力ビット列を生成して、論理シミュレーションプログラムに与える。論理シミュレーションプログラムは入力信号論理値テーブルと当該ＩＣに係る設計ソースコードを読み込み、論理シミュレーションを実行する。その結果を出力信号論理値テーブルとしてバウンダリスキャンプログラムに与える。バウンダリスキャンプログラムは与えられた出力信号論理値テーブルに基づいてビット列を生成し、ＪＴＡＧ信号入出力装置を介して当該ＩＣへ送信する。
【００３３】
図３は、バウンダリスキャンプログラムのより詳細な構成を表したものである。バウンダリスキャンプログラムは、ＢＳＤＬファイルを読み込んで解釈する「ＢＳＤＬ解釈ルーチン」と、ＪＴＡＧ信号入出力装置を操作する「ＪＴＡＧ入出力ルーチン」と、バウンダリスキャンで取得したビット列から入力信号の論理値を記載したテーブルを生成する「バウンダリスキャン入力ルーチン」と、出力信号の論理値を記載したテーブルからバウンダリスキャンで出力するビット列を生成する「バウンダリスキャン出力ルーチン」から構成される。
【００３４】
図４は本発明を実施するより発展的な構成である。図２の構成と比べると、バウンダリスキャンプログラムが出力した入力信号論理値テーブルの中にある特定の信号の状態を、入力値修正手順に従って修正する「入力信号修正プログラム」と、論理シミュレーションの結果得られた出力信号論理値テーブルを出力値修正手順に従って修正する「出力信号修正プログラム」が追加されている。図４で追加されたこれらのプログラムの効果については、後で説明する。
【００３５】
次に、図３に戻ってバウンダリスキャンプログラムの動作について説明する。バウンダリスキャンプログラム内のＢＳＤＬ解釈ルーチンは、ターゲット基板上のＦＰＧＡに関する情報が記述されたＢＳＤＬファイルを読み込み、解釈する機能を持つ。ＢＳＤＬファイルには、当該ＦＰＧＡのＪＴＡＧコマンドの一覧、当該ＦＰＧＡのバウンダリスキャンレジスタ長と、バウンダリスキャンレジスタの各ビットと端子の対応などが記述されている。本プログラムはＢＳＤＬファイルに記述されたこれらの情報を読み込み、「内部端子名−セル番号・機能対応テーブル」を作成して格納する。
【００３６】
一般的に、ＢＳＤＬファイルの前半には、入出力端子の名称と入出力端子の番号が一覧として記述されている。ＢＳＤＬの後半には、入出力端子の名称と、当該入出力端子から出力する値を保持するバウンダリスキャンセルの番号と、当該入出力端子から入力された値を保持するバウンダリスキャンセルの番号と、当該入出力端子の入出力方向を設定する値を保持するバウンダリスキャンセルの番号と、前記セルの意味付けとが一覧表として記載されている。
【００３７】
ＪＴＡＧ入出力制御ルーチンは、コンピュータに接続されたＪＴＡＧ信号入出力装置を操作して、ＦＰＧＡのＴＡＰステートマシンを操作するためのＴＭＳ信号とＴＣＫ信号を送出する制御を行う。また、バウンダリスキャンルーチンから受け取った出力ビット列を、ＪＴＡＧ信号入出力装置を介してＦＰＧＡのＴＤＩ端子に送信し、ＴＤＯ端子から受信したビット列をバウンダリスキャン入力ルーチンに送る機能を持つ。
【００３８】
ＪＴＡＧ入出力制御ルーチンの動作を、図５に示した一般的なＪＴＡＧ対応ＩＣの構造を用いて説明する。ＪＴＡＧ対応ＩＣは、各種のシフトレジスタと、ＴＡＰステートマシン、ＤＲマルチプレクサ、ＩＲマルチプレクサなどから構成されている。各種のシフトレジスタには、命令レジスタとデータ系レジスタがある。データ系レジスタには、バウンダリスキャンレジスタ、バイパスレジスタ、ＩＤＣＯＤＥレジスタ、および各種のオプションレジスタなどがある。これらのビット長はＩＣごとに異なるが、その長さについてはＢＳＤＬファイルに記載されている。
【００３９】
図５に示したように、ＴＤＩ端子とＴＤＯ端子の間には各種のシフトレジスタとマルチプレクサがあり、いずれかひとつのシフトレジスタが選択して接続されている。命令レジスタとデータ系レジスタの選択は、ＴＡＰステートマシンの状態によって決定される。データ系レジスタの中のいずれのレジスタが選択されるかは、一般的には命令レジスタにセットされている命令コードの値によって決定される。
【００４０】
ＪＴＡＧ入出力制御ルーチンは動作開始後、最初のステップで、ＦＰＧＡ内のＴＡＰステートマシンを、ＳＨＩＦＴ＿ＩＲ状態に遷移させるための信号を出力する。ＳＨＩＦＴ＿ＩＲなどのＴＡＰステートについてはＩＥＥＥ１１４９．１で規定されている。具体的な手順としては、ＴＭＳ信号をＨ→Ｈ→Ｈ→Ｈ→Ｈ→Ｌ→Ｈ→Ｌ→Ｌの順に指定しながらＴＣＫ信号にクロックを出力すればよい。その後、ＢＳＤＬファイルに記載されたＥＸＴＥＳＴ命令ビット列を調べてＴＤＩ信号に送出する。例えば、当該ＦＰＧＡの命令ビット長が５ビットであって、ＥＸＴＥＳＴ命令のビット列が“０００００”であれば、ＴＤＩをＬレベルに保ったまま、ＴＣＫに５回のクロックを与えることでＥＸＴＥＳＴ命令を与えることができる。
【００４１】
ＥＸＴＥＳＴ命令を与えた後、ＴＡＰステートマシンをＵＰＤＡＴＥ＿ＩＲ状態に遷移させると、当該ＦＰＧＡはＥＸＴＥＳＴモードに遷移する。ＦＰＧＡはそのときにプログラムされている論理回路コアの状態に関わらず、各入出力端子は内部の論理回路コアから切り離される。
【００４２】
ＦＰＧＡがＥＸＴＥＳＴ状態にあるとき、ＩＣのＴＤＩ端子とＴＤＯ端子の間にはバウンダリスキャンレジスタが接続される。ＴＡＰステートマシンがＵＰＤＡＴＥ＿ＩＲステートにある場合、ＴＭＳ信号をＨ→Ｈ→Ｌ→Ｌと遷移させながらＴＣＫにクロックを与えると、ＴＡＰステートマシンはＳＨＩＦＴ＿ＤＲステートに遷移する。この過程ではＣＡＰＴＵＲＥ＿ＤＲステートを経由するので、バウンダリスキャンレジスタにはその時点での入出力端子の状態が取り込まれることになる。ＩＣがＳＨＩＦＴ＿ＤＲステートにある時に、バウンダリスキャンレジスタ長の数だけＴＣＫにクロックを与えると、ＴＤＯ端子からバウンダリスキャンレジスタの値がシフト出力される。ＪＴＡＧ信号入出力装置はこのＴＤＯ端子の状態をキャプチャし、パソコン上のプログラムへ送信する。
【００４３】
本発明で用いたバウンダリスキャンプログラムは、上記のような手順でＪＴＡＧ信号を操作することができる。なお、ＴＤＯ端子をキャプチャして得られたバウンダリスキャンレジスタのビット列は、ＣＡＰＴＵＲＥ＿ＤＲステートを通過した時点での端子の状態が反映されたものである。バウンダリスキャンレジスタの何ビット目がどの端子に接続されているか、という情報は前記ＢＳＤＬファイルから抽出した「内部端子名−バウンダリスキャンセル機能対応テーブル」を参照することで判明する。
【００４４】
ＩＣ内部のロジックが入出力する信号は出力バッファと入力バッファを介して入出力端子と接続されるのが一般的であるが、バウンダリスキャン対応ＩＣでは図６に示したように、内部回路と入出力バッファ間にバウンダリスキャンセルが挿入されている。ＩＣが通常動作を行っている時は、バウンダリスキャンセルは信号を通過させるだけである。ＩＣがバウンダリスキャンモードでは、内部回路と入出力のバッファ間の信号は電気的に切り離される。バウンダリスキャンセルは前述したシフトレジスタであるため、ＴＤＩ端子とＴＤＯ端子を通じてバウンダリスキャンセルの値をシリアルに入出力することによって、当該ＩＣが入出力する信号を自由に調べ、または設定することができる。バウンダリスキャン対応ＩＣの中には、出力ができない入力専用構造の端子を持つものや、複数の端子で入出力の方向を決めるセルを共有しているものなど例外はあるが、１つの端子あたり３つのバウンダリスキャンセルを用いて制御しているものが多い。
【００４５】
例えば図６に例示した入出力端子は、ＥＸＴＥＳＴモード時にＣＴＲＬセルに１、ＯＵＴＰＵＴセルに１というデータを与えた場合は出力状態となり、Ｈレベルを出力する。一方、ＣＴＲＬセルを０に設定した場合は、この端子は入力状態となって、現在の端子の値がＩＮＰＵＴセルに格納される。
【００４６】
バウンダリスキャン入力ルーチンは、前記の「内部端子名−バウンダリスキャンセル機能対応テーブル」を参照することで、まず内部端子名とその論理値を把握する。このテーブルは図１０のような構造をしている。
【００４７】
バウンダリスキャン入力ルーチンは、次に図９に示した「端子番号−内部端子名対応テーブル」を参照することで、内部端子名を端子番号に変換し、端子番号と入力信号の論理値を把握する。さらにその次に図８の「信号名−端子番号対応テーブル」を参照することによって、端子番号を信号名に変換し、信号名とその信号の論理値を把握する。
【００４８】
このようにして、ユーザが設定した信号の名前と、その信号名の端子からＩＣが入力した論理値を対応付けるデータが作成される。この手順を繰り返し行うことによって、シミュレーションに必要なすべての端子の状態を調べ、図７に示した入力信号情報テーブルが作成される。
【００４９】
次に、論理シミュレーションプログラムの動作を説明する。
【００５０】
論理シミュレーションプログラムは、入力端子状態に記載された情報と、与えられたソースコードから次の出力状態を計算するプログラムである。論理シミュレーションの方法には、イベントドリブン型、サイクルベース型、コンパイラ型など様々な方法がある。イベントドリブン型は入力信号が変化した場合に計算を行う方式で、非同期式回路にも適用できるという特徴がある。サイクルベース型は同期式回路に特化された方式で、クロックが変化した時点で計算を行う方式である。コンパイラ型は、ＶＨＤＬやＶｅｒｉｌｏｇやＳｙｓｔｅｍＣ言語などのハードウェア記述言語で与えられたソースコードを、Ｃ言語やＣ＋＋言語に変換して、ソフトウェアとしてコンパイルして実行するものである。
【００５１】
いずれの方式の論理シミュレーションであっても本発明の方法は適用できるが、ここではイベントドリブン型のシミュレーションプログラムのある実装例を用いて説明する。
【００５２】
論理シミュレーションプログラムは、ソースコード中に記載された変数や、出力端子の状態を内部変数として持つ。またシミュレーションとして計算している時刻を変数として持つ。論理シミュレーションプログラムはハードウェア記述言語で記述されたソースコードを字句軸解析および構文解析して、ＡＮＤ文やＯＲ文などの論理演算、ＩＦ文などの条件分岐、ＦＯＲ文ＷＨＩＬＥ文などのループ構造、＜＝文などの代入式、およびクロック同期文を認識する。
【００５３】
論理シミュレーションプログラムは、ソースコードに記載された入力信号が変化すると、「変化した信号名と、シミュレーション時刻と、変化後の論理値」の組みを記載したイベントという事象を発生させる。発生したイベントはイベントキューに登録される。
【００５４】
論理シミュレーションプログラムは、イベントキューから順番にイベントを取り出し、そのイベントに記載されたシミュレーション時刻が、現在のシミュレーション時刻である場合に、当該信号が変化したと判断する。信号の状態が変化するとソースコードを調べて、当該信号が、論理式の各入力項か、ＩＦ文などの条件文の条件式か、もしくは代入式の右辺にある場合に論理計算を実行し、代入式の左辺にある内部変数の値を更新する。他の変数や出力値に影響を及ぼさないイベントは何も影響を与えずに終了する。
【００５５】
内部変数の値が変更されると、それに伴って新規のイベントが発生し、イベントキューに登録される。そして、その内部変数を参照する論理式や代入式、条件式を探し、さらに次の内部変数を変化させる。このように入力信号の変化によって連鎖的にイベントが発生して内部変数が変化する。最終的にすべての内部変数が定常状態に落ち着くまでイベントの発生と処理が繰り返される。
【００５６】
すべてのイベントが処理され、イベントキューが空になると、入力の変化に対応した出力値の計算が完了したことになる。このような手順によって、回路における非同期回路と組み合わせ回路の部分は計算される。
【００５７】
論理シミュレーションは基本的には上記の手順を利用して行うことができるが、クロック同期文を解釈できるものや、論理圧縮を行ってからシミュレーションを行うもの、ネットリストに翻訳してから実行するもの、ソフトウェアに変換してコンパイルして実行するものなど様々な実装方法がある。しかしながら、いずれの方式も本質的には与えられたソースコードと端子の入力状態から、次の出力状態を計算するという点では一致しており、本発明に適用することができる。
【００５８】
前記の論理シミュレーションの手順によって、当該ＦＰＧＡにおけるすべての出力端子状態が計算されたら、バウンダリスキャン出力ルーチンに渡される。
【００５９】
次に、バウンダリスキャン出力ルーチンが、出力用のバウンダリスキャンビット列を作成する方法を説明する。本発明でいうところの、入力信号情報テーブルと出力信号情報テーブルとは、具体的には図７に例示するようなユーザが設定した信号名とその論理値の羅列されたテーブルである。
【００６０】
このテーブルはすべての信号を記載するのではなく、信号の値が前回の値から変化のあった部分だけを記載することで、データ量を削減してもよい。データ量を削減することは演算回数を低減する効果もある。
【００６１】
バウンダリスキャン出力ルーチンは、出力信号情報テーブルの中にある信号名と論理値をから、前記の「信号名−端子番号対応テーブル」を参照することにより、ＦＰＧＡの端子番号と論理値の組を作成する。次いで、「端子番号−内部端子名対応テーブル」を参照することによって内部端子名と論理値の組のデータを作成する。こうして信号名から内部端子名が得られたら、「内部端子名−バウンダリスキャンセル機能対応テーブル」を参照することによって、当該端子の入力出力の方向を設定するためのＣＴＲＬセルの番号と、目的の出力を行うためのＯＵＴＰＵＴセルの番号を知ることができる。これらの情報からバウンダリスキャン出力ルーチンは、出力ビット列中の目的のビットを設定する。
【００６２】
図７〜図１０に示した各種テーブルを例に、上記の手順の具体な計算手順を説明する。いま、得られたバウンダリスキャンビット列中の１１番目のビットが０であったとする。図１０のテーブルを参照することで、ビット１１は内部端子名ＩＯＰＡＤ＿９９を持つ端子の入力状態を保持したビットであることがわかる。次に図９のテーブルを参照することで、ＩＯＰＡＤ＿９９という内部信号名の端子は、９９番の端子であることがわかる。さらに、図８のテーブルを参照することでＰＵＳＨＳＷという信号は、当該ＦＰＧＡの９９番の端子に接続されていることがわかる。したがって、ＰＵＳＨＳＷという名前の信号は０を入力していることがわかる。入力ビット列中のすべてビットについて同様の計算を行うと、図７に示したような、入力信号情報テーブルが作成できる。
【００６３】
論理シミュレーションを行うと、図７の出力信号情報テーブルが作成される。今度はＡＤＤＲ（２）信号について注目して出力ビット列を作る過程を説明する。図８のテーブルを参照すると、ＡＤＤＲ（２）信号はＦＰＧＡの１２４番の端子に接続されていることがわかる。図９のテーブルを参照すると、ＦＰＧＡの１２４番の端子はＩＯＰＡＤ＿１２４という内部名を持つことがわかる。図１０のテーブルを参照すると、ＩＯＰＡＤ＿１２４番の信号は、５１番目のセルで方向を制御し、５０番目のセルで出力値を設定することがわかる。こうして、目的の信号を出力するための出力ビット列をセットする。
【００６４】
上記のような手順を必要なだけ繰り返し、すべての出力端子に対応するビットを設定したら、目的の出力用バウンダリスキャンビット列が生成できたことになる。このビット列をＪＴＡＧ入出力制御ルーチンに渡すことによって、ＪＴＡＧ入出力装置から信号が出力され、対象としているＦＰＧＡ内のバウンダリスキャンレジスタに出力ビット列がセットされる。この手順を実行するときＦＰＧＡはＥＸＴＥＳＴモードであるため、ＦＰＧＡの各入出力端子は論理シミュレータが計算した出力状態にセットされることになる。
【００６５】
なお、上に述べた、出力端子状態からバウンダリスキャンビット列の生成する手順の説明は、説明のために最も原理的な方法を用いた。高速化のためには複数のテーブルを１つに纏めてテーブルを参照する回数を減らすのも有効である。
【００６６】
上記の手順を繰り返し実行することによって、ＦＰＧＡの入力端子をバウンダリスキャンで調べ、論理シミュレーションの実行により出力端子が出力すべき状態を得て、バウンダリスキャンで出力する、という操作を連続して実行することが可能になる。また繰り返しのステップを任意のタイミングで停止したり、あるいはオペレータの指示によって１ステップづつ実行したりする手段を設ければ、ＦＰＧＡの動作を一時停止あるいはステップ実行することができる。また、論理シミュレータの内部変数をコンピュータの画面に表示することによって、ＦＰＧＡが入出力する信号を容易に観測できるようになる。こうしてＢＧＡパッケージや多層基板を用いたにおいても信号観測が容易に行えるようになる。
【００６７】
図１１は本ＩＣエミュレーション装置が表示する画面の例である。図１０の上部には、当該ＦＰＧＡが出力する信号（アドレス信号の一部とリード信号）が、画面下部には当該ＦＰＧＡが入力する信号（データ信号の一部とプッシュスイッチ入力）の波形が記載されている。図の下にある、「実行」「一時停止」「停止」「閉じる」は画面上に設置されたボタンである。「実行」ボタンを押すことにより、エミュレーションを開始あるいは再開することができる。「一時停止」ボタンは、エミュレーションのサイクルを一時的に停止し、または１サイクルだけ実行することによってステップ実行を行うために用いられる。図１１に示した画面の例は、ＦＰＧＡがアドレス信号とリード信号を出力して、周囲の回路がそれに応答してデータ信号を送信してきたものを、ＦＰＧＡでサンプリングした場合の波形を例示している。
【００６８】
上記の手順は、説明を簡略化するためいくつかの付加的な手順を省いて行った。以下に本発明を実行するのにより望ましい方法をいくつか示す。
【００６９】
ＪＴＡＧ信号を入出力する速度は、ＦＰＧＡのバウンダリスキャンレジスタ長をＴＣＫ速度で割った値となる。仮にバウンダリスキャン長が３０００ビット、ＴＣＫ速度が３０ＭＨｚの場合、理論上は毎秒１００００回のバウンダリスキャンが可能である。しかしながら、ＵＳＢやパラレルインタフェースの問題、ソフトウェアの処理速度の問題などにより、実際はそれよりも遅くなる。実際には、バウンダリスキャンが可能な速度は、毎秒数百から数千回程度である。それに対してＦＰＧＡのクロックは数十ＭＨｚから数百ＭＨｚで動作しているため、クロック信号のように、バウンダリスキャンのサイクルよりも高速に動作している信号をバウンダリスキャンによってサンプリングした場合は、正しくその信号の遷移を見ることができない。したがって、そのような信号、とりわけクロック信号の入力状態を調べる際には、バウンダリスキャン入力ルーチンは、実際のＦＰＧＡから得られた値を無視して入力端子状態の当該信号に０と１を交互に設定し、見かけ上０と１が交互に入力されたように見せて、シミュレーションプログラムに渡してもよい。
【００７０】
また、ＦＰＧＡが外部にクロック信号を出力するような場合や、ソースコードに記載されたとおりの結果ではなく一時的に任意の値を出力させたいような場合は、バウンダリスキャン出力ルーチンは論理シミュレーションで得られた出力端子情報のうち当該端子の状態を変更して出力してもよい。本発明にはこのような操作を行う出力信号修正プログラムを付加することができる。
【００７１】
また、ＪＴＡＧ対応デバイスはＥＸＴＥＳＴモードに移行すると、その時点でバウンダリスキャンレジスタに設定されている値にしたがって、各入出力端子から出力が行われてしまう。バウンダリスキャンレジスタの初期値は不定であることがあるため、ＩＣが出力してはならない値を出力する可能性がある。したがって、ＥＸＴＥＳＴモードに移行する前に一度ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤモードに移行させるのが望ましい。ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤモードでも、ＥＸＴＥＳＴと同様にＩＣの入出力端子の状態を調べることができる。逆に、ＥＸＴＥＳＴとは異なりバウンダリスキャンレジスタにセットした内容は実際の端子から出力されない。したがって、ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤモードではバウンダリスキャンレジスタを安全な値にセットした後、ＥＸＴＥＳＴモードに移行させるのが望ましい。
【００７２】
なお、バウンダリスキャンレジスタの入力と出力は同時に行われる。したがって、バウンダリスキャンレジスタへ値を設定すると、目的の信号をＦＰＧＡから出力することができるが、その時点で入力として得られたバウンダリスキャンレジスタの値は、ＦＰＧＡの出力が更新される前の状態に対応した、周囲の回路の状態である。すなわち、ＦＰＧＡの出力が変化してから周囲の回路の状態が変化し、それによってＦＰＧＡの入力が変化するため、ＦＰＧＡの出力結果に対応した外部の回路からの反応を得るには、バウンダリスキャンを同じ出力データを用いて２回実行する必要がある。１度目のバウンダリスキャンはＦＰＧＡの出力端子から信号を出力するため、２度目のバウンダリスキャンはＦＰＧＡの入力端子から信号を入力するために行われる。
【００７３】
入力信号論理値テーブルを修正する際の効果を以下に述べる。例えば、入力信号のうちＣＬＫという名称の端子は、ＦＰＧＡが入力するクロック信号であるとあらかじめ指定しておく。前述したように、通常ＦＰＧＡのクロック入力はバウンダリスキャンの周期よりもはるかに短い時間で遷移しているため、バウンダリスキャンを行うごとにＨとＬが交互に入力される保証はない。したがって、入力信号修正プログラムは、入力されたＣＬＫ端子の状態を変更して、強制的に交互にＨとＬを設定する。これによって、ＨとＬとが交互に入力されるクロック入力をエミュレーションすることが可能になる。ＦＰＧＡが複数のクロックを入力している場合は、それらのタイミングと位相を考えて入力信号を修正するとより効果的である。
【００７４】
また、ある周辺ＩＣとの接続方法を調べる際に、そのＩＣが持つＲＤという名前の信号が本来負論理であったのに、ＦＰＧＡの設計者は間違えて正論理として回路を設計してしまっていたような場合を考える。この場合は単純な誤りであり、ＦＰＧＡのソースコードを修正してもよいが、より簡単に動作確認を継続するには出力信号修正プログラムを用いて強制的に反転出力させてしまうように設定すると便利である。
【００７５】
本発明を用いることで、与えられたソースコードで動作するＦＰＧＡが外部の回路との間でやりとりする信号を調べることができる。本発明の手順によれば論理合成を行う必要がないため、ＩＣの設計者は論理合成に要する時間を気にすることなく、ソースコードを修正して周囲の回路の動作を確認する、という作業を気軽に行うことができるようになる。その結果、開発効率の向上に寄与することになる。
【００７６】
本発明は、当然ながらバウンダリスキャンに対応したＩＣであれば何に対しても適用できる。ＦＰＧＡだけではなく、ＣＰＬＤにも、ＣＰＵにもＡＳＩＣにも適用できる。その際に、従来の論理シミュレーションや基板検査で用いられてきたような、テストベクタを作成する必要は全くない。また本方式のＩＣエミュレーションは、ＪＴＡＧ−ＩＣＥやフルＩＣＥとは異なり特定のＣＰＵだけを対象としたものでもない。
【００７７】
また、本発明は、ＦＰＧＡの論理合成ツールが入手できない場合や、論理合成ツールが何らかの事情により使用できない場合でも、回路基板上のＦＰＧＡを動作させて周囲の回路の動作確認するような状況にも活用できる。
【００７８】
次に、本発明を用いることで、ＦＰＧＡの開発手順がどのように変化するかを示す。
【００７９】
図１２は、従来のＦＰＧＡの開発手順をフローチャートで表したものである。従来、ＦＰＧＡを開発するには、まずソースコードを入力し、その後テストベクタを作成し、論理シミュレーションを行っていた。テストベクタはＦＰＧＡ外の回路がＦＰＧＡに与える信号を、人が予測して記述したものである。これらを用いて論理シミュレーションを行い、その結果が設計者の予想したとおりであれば論理合成へと進む。もし、結果が予想と異なる場合には再度ソースコードの入力から繰り返すことになる。従来の論理シミュレーションでは、ソースコードとテストベクタのどちらかに誤りがあると正しい結果が得られない。論理合成は一般に非常に長い時間を要する。数１００万ゲート規模のＦＰＧＡでは数十分から数時間かかることも珍しくない。論理合成が完了したら、ＦＰＧＡに回路データをダウンロードし、実機での動作確認を行うことになる。実機での動作確認には、オシロスコープやロジックアナライザを使って波形を観測することや、ＬＥＤ等の表示を確認すること、メモリの内容や通信状況から判断するなど様々な方法で行われる。それらの確認の結果、設計者の予想したとおりにＦＰＧＡと周囲の回路が連携して動作していれば、当該ＦＰＧＡの当該ソースコードは正常に作成されたと判断され、設計完了となる。もし動作結果が予想と異なれば、再度ソースコードの入力から上記のステップを繰り返すことになる。この場合、論理合成に要する時間が長いと、開発効率が低下するという欠点があった。
【００８０】
図１３は、本発明のＩＣエミュレーション方法を用いたＦＰＧＡ開発手順である。従来の手順とは異なり、テストベクタを作成する手順と論理合成の手順は必要ない。ソースコードを入力したら、即座にエミュレーションを行って、波形の観測と動作確認を行うことができる。論理合成に要する時間が省略できるので、従来の方法と比べて開発効率は向上する。また、ＦＰＧＡが入出力する波形は、本装置内の論理シミュレータが入出力する信号であるため、コンピュータ上で把握されている。したがって、オシロスコープやロジックアナライザを使用しなくとも、コンピュータ上で波形を観測することができる。
【００８１】
その後、本発明を用いた場合でも最終的には論理合成を行って実機での動作確認を行うわけであるが、ソースコードの変更を伴う設計のやり直しを行う際に毎回すべて論理合成を行うわけではない。周囲のＩＣとの論理的な接続方法が判明して、ＦＰＧＡの正しいコードができた設計の最終段階のみで、論理合成を行えばよくなるという点が大きなメリットである。
【００８２】
本発明が有益な効果を生じる理由としては、従来の技術ではＦＰＧＡを設計どおりに動作させるためには論理合成という一種のコンパイラ的な処理を行うしか方法がなかったのに対し、本発明を用いればインタプリタ的な処理手順で、実際のＦＰＧＡが動作しているように見せることができるようになるためである。
【００８３】
従来の技術では、論理合成時間の時間の問題や、テストベクタを作成する手間の問題、シミュレーションと実機の動作が一致しない問題、ＦＰＧＡの動作を途中で停止させるには内部に特殊な回路を作りこまなければならないこと、高密度実装基板では信号の観測が困難であること、ＦＰＧＡの出力信号を気軽に変更できないこと、などデバッグ上の様々な問題があったが、本発明の実施例はこれらの問題を解決するものである。
【００８４】
結論として本発明を用いることにより、回路基板上のＩＣの動作をソフトウェアで操作することによって、汎用のＩＣエミュレーション装置を構築することができるようになる。本発明の方法を用いれば、回路基板の不良検証や各種の周辺ＩＣの使用方法を検証することが容易になる。
【図面の簡単な説明】
【００８５】
【図１】図１は、ＩＣエミュレーション装置を実施するためのハードウェア構成を示す図である。
【図２】図２は、ＩＣエミュレーション装置の構成を示す図である。
【図３】図３は、バウンダリスキャンプログラムの詳細な構成を示す図である。
【図４】図４は、ＩＣエミュレーション装置の構成を示す図である。
【図５】図５は、バウンダリスキャン対応ＩＣの内部構造を示す図である。
【図６】図６は、バウンダリスキャン対応ＩＣの入出力端子構造を示す図である。
【図７】図７は、入力信号情報テーブルおよび出力信号情報テーブルを示す図である。
【図８】図８は、信号名−端子番号対応テーブルを示す図である。
【図９】図９は、端子番号−内部端子名対応テーブルを示す図である。
【図１０】図１０は、内部端子名−セル番号・機能対応テーブルを示す図である。
【図１１】図１１は、ＩＣエミュレーション装置の実行結果例を示す図である。
【図１２】図１２は、従来のＦＰＧＡ開発手順を示す図である。
【図１３】図１３は、本発明によるＦＰＧＡの開発手順を示す図である。
【図１】
2009009325.tif 000003
【図２】
2009009325.tif 000004
【図３】
2009009325.tif 000005
【図４】
2009009325.tif 000006
【図５】
2009009325.tif 000007
【図６】
2009009325.tif 000008
【図７】
2009009325.tif 000009
【図８】
2009009325.tif 000010
【図９】
2009009325.tif 000011
【図１０】
2009009325.tif 000012
【図１１】
2009009325.tif 000013
【図１２】
2009009325.tif 000014
【図１３】
2009009325.tif 000015