(57)【要約】【課題】本発明はそれぞれ設定データにより内部機能が決まる複数のセル・ロジック・アレイ・ブロック（ＣＬＡＢ）が各ＣＬＡＢ間の信号の接続を切り替えるスイッチにより接続されたフィールド・プログラマブル・ゲート・アレイに関し，フィールド・プログラマブル・ゲート・アレイについて評価を行う時に，合成及びマッピングの度にタイミングが異なることによる不安定な状態が設計ミスなのかマッピングによるものかを解析することができることを目的とする。【解決手段】各ＣＬＡＢにスキャン切り替え信号，スキャン用データ信号及びスキャン用クロック信号の各信号を入力する端子と前記スキャン用信号により内部状態を保持するフリップフロップの状態を出力するスキャン出力信号の端子とを設け，複数のＣＬＡＢのフリップフロップの出力を後続のＣＬＡＢのスキャン用データ信号として予め決められた順に入力するよう構成する。【選択図】図１
2005348297.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ設定データにより内部機能が決まる複数のセル・ロジック・アレイ・ブロック（ＣＬＡＢ）と各ＣＬＡＢ間の信号線の接続路を切り替える複数のスイッチとで構成されるフィールド・プログラマブル・ゲート・アレイであって，
前記各ＣＬＡＢにスキャン切り替え信号，スキャン用データ信号及びスキャン用クロック信号の各信号を入力する端子と前記スキャン用信号により内部状態を保持するフリップフロップの状態を出力するスキャン用出力信号の端子とを設け，
前記複数のＣＬＡＢのフリップフロップの出力を後続のＣＬＡＢのスキャン用データ信号として予め決められた順に入力することを特徴とするフィールド・プログラマブル・ゲート・アレイ。
【請求項２】
請求項１において，
前記スキャン切り替え信号を前記フィールド・プログラマブル・ゲート・アレイ内の各ＣＬＡＢに供給することにより，各ＣＬＡＢ内の全てのフリップフロップはシフトレジスタ形式に接続路を形成することを特徴とするフィールド・プログラマブル・ゲート・アレイ。
【請求項３】
請求項１において，
スキャン用データ信号が入力される先頭ＣＬＡＢから予め設定されたスキャン用の接続路を介して各ＣＬＡＢのフリップフロップを順番にシフトして終端のＣＬＡＢのスキャン用出力信号を外部に出力することにより，外部からフィールド・プログラマブル・ゲート・アレイの内部状態を評価可能とすることを特徴とするフィールド・プログラマブル・ゲート・アレイ。
【請求項４】
請求項１において，
前記各セル・ロジック・アレイ・ブロック内には，スキャン用データ信号と通常のデータ信号の一方を選択する第１のセレクタと，スキャン用クロック信号と通常のクロック信号の一方を選択する第２のセレクタとを備え，各セレクタはスキャン切り替え信号によりスキャン動作か否かの一方を選択し，前記第１のセレクタから出力されたデータ信号を前記第２のセレクタから出力されたクロック信号に同期して前記フリップフロップにセットすることを特徴とするフィールド・プログラマブル・ゲート・アレイ。
【請求項５】
請求項１において，
前記スキャン出力信号の端子を前記スキャン用データ信号の入力端子と接続し，前記スキャン切り替え信号を入力してから前記スキャン用クロック信号を所定個数供給することにより，前記複数のＣＬＡＢの各フリップフロップの状態を元の状態に入れ替えることを特徴とするフィールド・プログラマブル・ゲート・アレイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，それぞれ設定データにより内部機能が決まる複数のＣＬＡＢ（Cell Logic Array Block）と各ＣＬＡＢ間の信号線の接続路を切り替える複数のスイッチとで構成されて評価・チェックのためのデータ設定機能による不良箇所を検出可能なフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：Field Programable Gate Array) に関する。
【背景技術】
【０００２】
フィールド・プログラマブル・ゲート・アレイ（以下，ＦＰＧＡという）はＲＯＭ等の外部からのデータ設定により内部の論理機能が決められ，複数のＦＰＧＡの論理機能を合成，マッピングする度に微妙にタイミングが異なり，評価機能毎に動作したり，しなかったりと，不安定な状態になることがあり，その問題が何処にあるのか解析するのに，かなりの時間を要する場合がある。
【０００３】
従来はＦＰＧＡのマッピング毎に実動作でエラーが出ると，その都度実配線のデータを利用し，実動作のタイミングや信号のデータをロジックアナライザ等で調べ，動作検証するパターンを作成する必要があり，実際の解析に時間を要していた。
【０００４】
具体例により以下に説明すると，最近のＬＳＩの開発費用はかなり高価になってきており，数千万から一億程度の費用がかかる場合もある。そのため，ＬＳＩを作る前に動作確認をするため，論理シミュレーションが行われるが，回路規模も費用と同様に増加傾向にあり，ワークステーションレベルでシミュレーションするには時間がかかり過ぎ，またターゲットとなっている商品（ＦＰＧＡ）で正確に動作するかは，その商品をエミュレートする精度の問題となり，動作しない可能性も出てくる。
【０００５】
そこで近年では，動作評価を行う事を目的としてＦＰＧＡを作り，実際に動作させることで検証を行うことが少なくない。それは，実際のＬＳＩと同速で動作させることが可能で，実際のＬＳＩ規模が搭載可能なＦＰＧＡがテクノロジの進歩により登場してきたことにより実現可能になったが，それによりＦＰＧＡの動作精度が問題となるケースが増えた。それは，ＦＰＧＡ特有のマッピング毎にデータ（回路）配置が変化する可能性が高く，それにより動作がマッピング毎に不安定になったりするからである。この問題点から，設定の問題なのかマッピングの問題なのかの解析に時間を要し，設計，検証の時間短縮の効率を損なってきた。
【０００６】
具体例により説明すると，図６はＦＰＧＡの内部構成例であり，ＦＰＧＡの内部には複数のＣＬＡＢ（セル・ロジック・アレイ・ブロック：Cell Logic Array Block) を複数個配列し，そのＣＬＡＢの機能をＮＡＮＤ，ＡＮＤ等の論理回路に構成したり，ＦＦ（フリップフロップ）回路に構成することと，各ＣＬＡＢ間を相互に接続する各信号線上に図示省略（後述する図７に示す）されたスイッチ（ＳＷ）で構成され，このＣＬＡＢとスイッチ（ＳＷ）の組み合わせにより，回路（設計データ）が作られる。なお，図６に示すＣＬＡＢ−Ａ，ＣＬＡＢ−Ｂ，……，ＣＬＡＢ−Ｆのそれぞれは，上部と左部を入力信号とし，下部と右部を出力信号とし，細線は配線で，クロスしている所に全てスイッチ（ＳＷ）が存在しており，ＣＬＡＢ間の信号伝達に使用され，クロス部分をショートさせることで信号のパスを作成する。
【０００７】
図７はスイッチの接続構成例を示し，上記図６の各ＣＬＡＢ間の信号線上に設けられている。図７において９０はスイッチ（ＳＷ），９１は記憶素子で構成された設定信号記憶部，Ｓ１〜Ｓ６は設定信号記憶部９１によりオン／オフされるスイッチ素子である。設定信号によりＳ１〜Ｓ６を選択的にオンにすることで，各種の接続が可能となり，例えば，Ｓ１をオンにすると，左の信号線と上の信号線が接続され，Ｓ１とＳ４をオンにすると，左の信号線と上の信号線の接続と下の信号線と右の信号線の接続ができる。また，Ｓ１，Ｓ５及びＳ２をオンにすると，左の信号線を上，右及び下の３つの信号線と接続することができる。
【０００８】
図８はＣＬＡＢの内部構成例を示し，図９は図８のＣＬＡＢにより構成できるセルアレイの例を示す。図８において，８０はＣＬＡＢ，８１は外部から入力される設定信号を記憶するためのＳＲＡＭ，ＦＬＡＳＨ，ＦＲＡＭ，ＭＲＡＭ等の記憶素子が内蔵された設定信号記憶部であり，その記憶素子に設定されたデータによりＣＬＡＢの機能が設定される。８２は第１のセレクタとマルチプレクサ群，８３はＦＦ（フリップフロップ），８４は第２のセレクタとマルチプレクサ群，８５は組み合わせ回路生成部，８６は第３のセレクタとマルチプレクサである。
【０００９】
第１〜第３のセレクタとマルチプレクサ群８２，８４，８６は，各入力をどの端子に入れるかをセレクトする機能とどの信号出力をどの端子に入力されるかを決める。
【００１０】
例えば，第１のセレクタとマルチプレクサ群８２で入力端子の一つをＦＦ８３のＤ端子に入力し，その出力Ｑの信号を第２のセレクタとマルチプレクサ群８４によって組み合わせ回路生成部８５に入力するようにし，組み合わせ回路生成部８５を２入力ＡＮＤとした場合，一つの入力が第２のセレクタとマルチプレクサ群８４により選択されたＱの出力，もう一つを第１のセレクタとマルチプレクサ群８２から出力される他の入力端子の信号とし，その出力を第３のセレクタとマルチプレクサ群８６によって出力端子のどこかに出力されるようにすると，図９に示すような回路として機能するセルアレイとなる。
【００１１】
複数のＣＬＡＢを組み合わせるよう設定することで，各種の機能回路が実現され，その具体例を図１０，図１１に示す。図１０は２ビットカウンタの例であり，図１１はエッジ検出回路の例であり，両図において，Ａ．はＦＰＧＡの構成，Ｂ．は設計回路を示す。
【００１２】
図１０と図１１の何れもＣＬＡＢ−ＡとＣＬＡＢ−ＢをＦＦ（フリップフロップ）とし，ＣＬＡＢ−ＣをＸＯＲ（排他的論理和回路）して設定しているが，ＦＦとＦＦの間のスイッチ（ＳＷ）及びＸＯＲと接続するスイッチ（ＳＷ）の設定により，図１０のような２ビットカウンタを構成したり，図１１のようなエッジ検出回路を構成したりし，これがＦＰＧＡのマッピングと言われる。
【００１３】
このように，ＦＰＧＡはマッピングにより様々な回路（設計データ）に変化するものであるが，各配線やスイッチ（ＳＷ）等の製造的バラツキや配置による信号の遅延（配置された距離等により信号の通る経路が長くなり遅延する）があったりするため，同一の設計データでもマッピングによっては性能が変わったりする（遅延によるもの）。そのため，タイミングがズレて正常な動作をしなくなったりする可能性がある。
【００１４】
上記図１０，図１１の例によれば，ＣＬＡＢ−Ａ，ＣＬＡＢ−ＣをＦＦ（フリップフロップ）に，ＣＬＡＢ−ＢをＸＯＲにすることも可能な為，それに伴うスイッチ（ＳＷ）のポイントが異なるため，上記した回路（カウンタやエッジ検出回路）と後述の（エッジ検出回路とカウンタ）とで性能が異なることになる。
【００１５】
ここで，問題となるのはＦＦ−ＦＦ間の遅延であり，上記した図１０のカウンタを例にとると，ＸＯＲ（ＣＬＡＢ−Ｃ）の出力が次段のＦＦ（ＣＬＡＢ−Ｂ）の入力になっている個所の遅延によっては正常な動作をしない場合が出てくる。これを図１２に示すカウンタのタイミングチャートにより示す。
【００１６】
図１２の上段のＡ．に示すａ〜ｆは正常動作を示し，下段のＢ．に示すａ’〜ｆ’及びｇ’は遅延が生じた場合の異常動作を示す。正常動作の場合，ａに示すクロックに対し，１段目のＣＬＡＢ−ＡのＦＦのＱ出力はｂに示すように奇数番目のクロックで立上り，偶数番目のクロックで立下る動作を繰り返して，その出力がＸＯＲの入力１となる。２段目のＣＬＡＢ−Ｂはｆのような出力が発生して，その出力がＸＯＲの入力２となり，ＸＯＲの出力はｅのように，第１，第２のクロック期間は“Ｈ”（高レベル）で，第３，第４のクロック期間は“Ｌ”（低レベル）になることを繰り返す。
【００１７】
これに対し，図１２の下段の場合，１段目のＣＬＡＢ−ＡのＦＦのＱ出力がＸＯＲの入力１として供給される時に，ｃ’に示すように遅延により１クロック以上遅れた場合，２段目のＣＬＡＢ−ＢのＦＦのＱ出力が図１２のｆ’に示す波形であるため，その信号がｄ’に示すＸＯＲの入力２となるため，ＸＯＲの出力は，ｅ’に示すように，上記正常動作の場合のＸＯＲの波形であるｅとは全く異なってしまう。なお，図１２のｇ’は，遅延がクロックと同一タイミングになった場合であり，この場合はどのように動作するか不明となり，これが，解析を難航させる原因となる。
【００１８】
従来の技術として，回路修正用のためだけに使用するスペアセル（フリップフロップ）を備えた半導体集積回路のテストパターンでテストするための回路と修正方法がある（特許文献１参照）。その構成を従来例の説明図として図１３に示す。図中，９２，９３は組合せ回路，９４，９６はマルチプレクサ，９５は回路修正用セルであるＦＦ（フリップフロップ）またはスキャンセルと呼ばれる。マルチプレクサ９４はスキャンイネーブル信号の“０”，“１”に応じて入力端子０，１を選択し，その出力はＦＦ９５で保持される。マルチプレクサ９６はスキャンモード信号の“０”，“１”に応じて入力端子０，１を選択する。図１３に示す構成において，マルチプレクサ９６へ供給するスキャンモード信号を“０”とする通常動作時の場合は，マルチプレクサ９６は組合せ回路９２からの出力を選択し，スキャンモード信号を“１”とするテストモード動作時には，マルチプレクサ９６からはＦＦ９５からの出力が選択される。
【００１９】
テスト動作時には，マルチプレクサ９４へ供給するスキャンイネーブル信号を“０”にすると，マルチプレクサ９４は組合せ回路９２からの出力を選択出力し，その間にクロック信号を立ち上げることにより，組合せ回路９２からの出力がＦＦ９５に保持され，マルチプレクサ９６を通して組み合わせ回路９３に入力されると共に，スキャンアウト信号として出力される。テスト動作時に，スキャンイネーブル信号を“１”にすると，マルチプレクサ９４はスキャンイン信号（前段のスキャンセルからの出力）がスキャンセルのＦＦ９５には前段のスキャンセルからの出力が順次シフトされ，その出力はマルチプレクサ９６を介して組み合わせ回路９３に入力されると共にスキャンアウト信号として順次出力される。
【特許文献１】特開２００１−１８５６２２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
上記の図６〜図１２に示すＦＰＧＡのデータ設定により回路を構成した場合，タイミング動作の各部の動きをチェックすることが困難であった。そのために，上記特許文献１に記載の技術では回路修正用のために使用するスペアセルを備えた集積回路に対するテストを行うための技術であり，回路修正用のスペアセルを備えないＦＰＧＡにより設定した回路においてフリップフロップのデータを随時に読み書きして内部の状態を解析することができなかった。
【００２１】
本発明は，回路修正用のスペアセルを備えないＦＰＧＡについて評価を行う時，合成及びマッピングの度にタイミングが異なることによる不安定な状態が設計ミスなのかマッピングによるものかを解析することができるＦＰＧＡを提供することを目的とする。
【課題を解決するための手段】
【００２２】
図１は本発明の原理構成を示す図である。図中，１はＦＰＧＡを構成する複数のセル・ロジック・アレイ・ブロック（以下，ＣＬＡＢという）の中の一つのＣＬＡＢであり，１０はＣＬＡＢの機能（合計・マッピング）を設定する設定信号記憶部，１１は内部にセレクタやマルチプレクサを含み設定信号記憶部１０により論理機能が設定されるセレクタとマルチプレクサ群，１１ａ，１１ｂはスキャン切り替え信号により制御されるセレクタ，１２はフリップフロップ（ＦＦ），２０ａはデータ信号，２０ｂはクロック信号，２１は通常の出力信号，２２はスキャン用信号であり，２２ａはスキャン用データ信号，２２ｂはスキャン用クロック信号，２２ｃはスキャン切り替え信号，２３はスキャン用出力信号である。なお，図１には１個のＣＬＡＢだけ示すが，ＦＰＧＡはそれぞれ設定信号により論理構成が規定される多数のＣＬＡＢ１から成り，複数のＣＬＡＢは設定データにより制御されるスイッチにより接続される。なお，図１に示すＣＬＡＢ１には１つのセレクタとマルチプレクサ群１１だけ示すが，実際には図示省略されているが複数のセレクタとマルチプレクサ群が設けられる。
【００２３】
図１において，通常の入力信号であるデータ信号２０ａとクロック信号２０ｂの信号線やスキャン用の入力信号２２ａ〜２２ｃの信号線は何れも隣接する他のＣＬＡＢの信号線とスイッチにより相互接続され，出力信号２１の信号線とスキャン用出力信号２３の信号線も隣接するＣＬＡＢの信号線とスイッチにより相互接続される。
【００２４】
ＣＬＡＢ１は設定信号記憶部１０に設定された信号によりセレクタとマルチプレクサ群１１の内部のセレクタ及びマルチプレクサ群が切り替えられ，設定された論理機構が構成され，スキャン切り替え信号２２ｃが通常動作を表す信号であるためセレクタ１１ａ，１１ｂは，それぞれス通常の入力信号であるデータ信号２０ａ，クロック信号２０ｂを選択し，論理動作を行ってＦＦ１２へ入力し，その出力は出力端子２１から出力され，更にスイッチ（図示省略）を介して他のＣＬＡＢへ入力して，複数のＣＬＡＢを組み合わせた出力が最終のＣＬＡＢから発生する。
【００２５】
このＣＬＡＢ１のＦＦ１２に対し特定のデータを設定し，その設定状態を検出したい場合，スキャン切り替え信号２２ｃとしてパス切り替えの信号を供給し，スキャン用データ信号２２ａに設定したいデータを供給し，スキャン用クロック信号２２ｂにスキャン用クロック信号を供給すると，セレクタとマルチプレクサ群１１の内部のセレクタ１１ａ，１１ｂによりスキャン用データとスキャン用クロックが選択され，それぞれＦＦ１２のデータ入力端子（Ｄで表示）とクロック入力端子（ＣＫで表示）に入力され，スキャン用データが設定される。このＦＦ１２の出力（端子Ｑの出力）はスキャン用出力信号２３として発生する。このスキャン用出力信号２３から出力されたデータは，次（後段）のＣＬＡＢへのスキャン用データ入力として供給される。
【００２６】
スキャン切り替え信号２２ｃと，スキャン用クロック信号２２ｂは，ＦＰＧＡ内の複数の各ＣＬＡＢに対して並列に供給され，スキャン用データ入力は先頭のＣＬＡＢのＦＦからスキャン用出力信号２３として出力され，この出力データを予め特定のパターンで接続した後段のＣＬＡＢのスキャン用データ入力に供給して，以下同様に特定のパターンで接続したチェーン（スキャンチェーンという）でスキャン用データ入力とスキャン用データ出力が順番に接続され，クロック入力に応じて先頭のＣＬＡＢのＦＦに入力されたデータは順番にシフトされ，最後段のＣＬＡＢのＦＦからシフトデータが外部に出力される。
【発明の効果】
【００２７】
本発明によれば，ＦＰＧＡを構成する複数のセル・ロジック・アレイ・ブロック（ＣＬＡＢ）の各ＣＬＡＢ内のフリップフロップ（ＦＦ）の入力，出力をある特定のパターンで接続したチェーンを設け，外部からの信号で通常回路接続とスキャン用のチェーン接続を切り替え内部の信号を読み取ったり書き換えたりすることができる構成と，それらのスキャン信号を含むＣＬＡＢを配線するためのスイッチを設けることで解析時間を短縮することが可能になる。
【発明を実施するための最良の形態】
【００２８】
図２は実施例のＣＬＡＢの構成例である。図中，１はＣＬＡＢ，１０は設定信号記憶部，１１’は第１のセレクタとマルチプレクサ群（図１の１１に対応），１２はフリップフロップ（ＦＦ）である。２０は通常の入力信号が供給される入力端子，２１は通常の出力信号が発生する出力端子，２２はスキャン用信号であり，２２ａはスキャン用データ信号，２２ｂはスキャン用クロック信号，２２ｃはスキャン切り替え信号，２３はスキャン用出力信号である。そして，ＣＬＡＢ内の１３は第２のセレクタとマルチプレクサ群，１４は組み合わせ回路生成部，１５は第３のセレクタとマルチプレクサ群であり，１３〜１５の各部は設定信号記憶部１０に設定された内容に従って，内部構成が規定される。なお，図２には，上記図１と同様に１個のＣＬＡＢだけ示すが，ＦＰＧＡはそれぞれ設定信号により論理構成が規定される多数のＣＬＡＢ１から成り，複数のＣＬＡＢは設定データにより制御されるスイッチにより接続される。
【００２９】
このＣＬＡＢ１は，通常は設定信号記憶部１０の設定データに従って，第１〜第３のセレクタとマルチプレクサ群１１’，１３，１５の論理構成及び組み合わせ回路生成部１４の回路構成が規定され，スキャン切り替え信号２２ｃが，スキャンパスを形成するよう切り替える信号を発生していない場合，ＣＬＡＢ１の第１のセレクタとマルチプレクサ群１１’の内部のセレクタ１１ａ，１１ｂは通常の入力端子２０からのデータ信号，クロック信号を選択し，図示省略された論理動作を実行し，ＦＦ１２のデータ端子（Ｄで表示）にクロック（ＣＫで表示）端子に供給されるクロック信号に同期して設定されるか，またはＦＦ１２の“１”設定端子（ＰＲで表示）または“０”設定端子（ＣＲで表示）に入力される信号により“１”または“０”に設定される。ＦＦ１２の出力は第２のセレクタとマルチプレクサ群１３に入力され設定信号記憶部１０の設定信号により論理動作が設定され，第２のセレクタとマルチプレクサ群１３の出力の一部は組み合わせ回路生成部１４へ入力されて，設定信号記憶部１０の設定信号により決まる組み合わせ回路による論理動作が行われ，この組み合わせ回路生成部１４の出力及び第２のセレクタとマルチプレクサ群１３の一部の出力と共に第３のセレクタとマルチプレクサ群１５に入力されて，設定信号記憶部１０の設定信号による論理動作が実行される。
【００３０】
スキャン動作を行う場合，スキャン切り替え信号２２ｃを駆動状態の信号（切り替え状態の信号）にすると，セレクタ１１ａ，１１ｂはスキャン用データ信号とクロック信号を選択して内部（図示省略）の論理動作が実行されてＦＦ１２に設定される。この場合，ＦＦ１２へのＰＲ端子とＣＲ端子への入力をマスクするようになっている。ＦＦ１２の端子Ｑの出力はスキャン用出力信号２３として出力される。この出力は次段のＣＬＡＢのスキャン用データ信号（図２の２２ａに相当）として入力され，最終段のＣＬＡＢの場合にはＦＰＧＡのスキャン出力信号を発生する。
【００３１】
ＦＰＧＡ内に複数のＣＬＡＢを含む場合，各ＣＬＡＢの接続経路を形成するスイッチの数（クロスポイントを構成する数：配線の数）を増やしてスキャン用の接続を確保することにより，１つのＣＬＡＢのフリップフロップ（ＦＦ）から次段のＣＬＡＢのフリップフロップ，更に次段のフリップフロップという複数のフリップフロップにより形成されるシフトレジスタを，スキャン切り替え信号１つで瞬時に形成することができる。このシフトレジスタの端にあたるＣＬＡＢへの入力データ信号と出力データ信号及び全ＣＬＡＢに入力されている１本のスキャン切り替え信号と，クロック信号（ＣＫ）の４本で内部の状態を読み取ると，書き換えることが可能になる。
【００３２】
図３はスキャン用の接続路（パス）と通常の信号の経路を示す。この例は，エッジ検出回路における例であり，スキャン用の接続路が予め埋め込まれたエッジ検出回路のＦＰＧＡは上記図１１に示され（実際は図１１にはＣＬＡＢ−Ｇ，ＣＬＡＢ−Ｈが図示省略されている），エッジ検出回路はＣＬＡＢ−Ａ，ＣＬＡＢ−Ｂ及びＣＬＡＢ−Ｃの３つの回路を実線により相互接続し，各ＣＬＡＢの内部は上記図１１のＢ．に示す構成を備え，エッジ検出出力はＣＬＡＢ−Ｃから出力される。このＦＰＧＡに対し，スキャン用信号（データ，クロック），スキャン切り替え信号が供給されることにより，各ＣＬＡＢ内のＦＦの信号が，エッジ検出回路に全く影響を受けることなく，ＣＬＡＢ−Ｂから順にスキャン回路の出力が発生する。この場合，ＦＰＧＡに埋め込まれた図３の太線で示すスキャン用の接続路（パス）を介してＣＬＡＢ−Ｂ，ＣＬＡＢ−Ｄ，ＣＬＡＢ−Ｆ，ＣＬＡＢ−Ｈ，ＣＬＡＢ−Ｇ，ＣＬＡＢ−Ｅ，ＣＬＡＢ−Ｃ，ＣＬＡＢ−Ａの順に，各ＣＬＡＢ内のＦＦの内容が出力される。
【００３３】
この例では，ユーザ回路が，ＣＬＡＢ−Ａ，ＣＬＡＢ−Ｂ及びＣＬＡＢ−Ｃで構成されているが，これらがＣＬＡＢ−Ｃ〜ＣＬＡＢ−Ｅ等で構成されても，スキャンの接続は変化しない。従って，常にＦＦが読み出される順番が固定であり，１番目，７番目，８番目のスキャン出力データがユーザ回路で使用されているＣＬＡＢ−Ｂ，ＣＬＡＢ−Ｃ，ＣＬＡＢ−ＡのＦＦの内容であることが分かる。これにより，ＦＰＧＡの内部のデータの何処に何があるかが判別可能となる。
【００３４】
図４はスキャン用の接続により形成されたシフトレジスタの構成を示す。図中，ＦＦ１〜ＦＦ４は複数のＣＬＡＢに分散して配置されたフリップフロップであり，スキャン切り替え信号を信号２２ｃに供給することで，瞬時にこのＦＦ１〜ＦＦ４のシフトレジスタの接続が形成される。先頭のフリップフロップであるＦＦ１のスキャン用データ信号２２ａに，スキャン用データ信号が入力され，後段のフリップフロップＦＦ２〜ＦＦ４のスキャン用データの入力はそれぞれ前段の出力信号が供給されているため，各ＣＬＡＢのフリップフロップに並列に供給されるスキャン用クロック信号２２ｂのクロックが入力される度に，ＦＦ１へ供給されたスキャン用データが順次ＦＦ２〜ＦＦ４内をシフトして出力される。
【００３５】
これが，論理データ（設計データ）に応じたスキャンチェーンの方法であり，スキャン用の信号線（データ，クロック，スキャンパス切り替え信号）の数に対応して複数のＣＬＡＢ間のスイッチ数を増やすことでスキャンパスを形成することができる。この方法の他に，予めＣＬＡＢ同士を接続した固定の方法が考えられ，それはスイッチの数は増えず，専用の内部配線（ユーザでは変更できない配線）でスキャンパスを形成する方法である。
【００３６】
図５は内部データチェック時の外部回路との関係を示す図である。図５のＡ．及びＢ．において，４は上記図３のように複数のＣＬＡＢが設定データにより決められた論理機能を実行するＦＰＧＡであり，内部には複数のＣＬＡＢ間を接続する各種信号線及び本発明によるスキャンパスが設けられている。２２ａ〜２２ｃ及び２３は上記図１及び図２の同一符号と同じであり，２２ａはスキャン用データ（ＳＣＡＮ用Ｄ）信号，２２ｂはスキャン用クロック（ＳＣＡＮ用ＣＫ）信号，２２ｃはスキャン（ＳＣＡＮ）切り替え信号，２３はスキャン用出力（ＳＣＡＮ用Ｑ出力）信号である。２２ａ〜２２ｃ及び２３の各信号は外部回路として例えば，パソコンのバスと接続されている。
【００３７】
図５のＡ．の場合は，ＦＰＧＡ４はスキャン切り替え信号２２ｃ及びスキャン用クロック信号２２ｂが外部から入力されると，スキャン用出力信号２３からクロック入力毎に順次読み出される。この読み出した信号が外部回路に供給されると共に，スキャン用データ信号２２ａとして折り返し入力される。これにより，読み出したデータがＦＰＧＡ４内に入力されて，ＦＰＧＡ４内の各ＦＦは元のデータの状態に戻され，引き続き動作させることができる。但し，スキャン用クロック信号をシフトレジスタを構成する内部のＦＦの個数分だけ入力して各フリップフロップの全てのデータを読み出す必要がある。
【００３８】
図５のＢ．の場合は，ＦＰＧＡ４に対してスキャン切り替え信号２２ｃ及びスキャン用クロック信号２２ｂ及びスキャン用データ信号２２ａを入力することで，ＦＰＧＡ４から内部のＦＦの状態をスキャン用出力信号２３として読み出し，読み出し信号を一旦，外部のパソコン等に保存する。そのデータを書き換えてＦＰＧＡ４にスキャン用データ信号２２ａとしてシフト入力させることで，特定（任意）のデータをＦＦに書き込むことができる。
【００３９】
図５に示すように，パソコン等の外部回路でデータを読み出すことで内部状態が分かるため，そのデータをシミュレータに入れ，ＦＰＧＡ４と同一のフリップフロップ（ＦＦ）に値をセットすることでＦＰＧＡと同じ状態にシミュレーションを設定することにより，その続きをシミュレータで検証または解析することができる。
【００４０】
本発明によるＦＰＧＡの動作中にスキャン切り替えにより内部の特定のＦＦの値を変えることで，エラーになったフリップフロップ（ＦＦ）またはエラーと推定できるフリップフロップ（ＦＦ）の動作を確認することができる。
【００４１】
また，ＦＰＧＡの物理的な配置を行ってＦＰＧＡを生成するマッピングする際に使用する論理データ（ネットリスト），またはマッピングした後の論理データに，読み出した内部フリップフロップ（ＦＦ）の状態を読み取ったデータを利用し論理シミュレータに載せる（実際のＦＦの値をシミュレータ内のＦＦの値にする）ことで現在動作している状態を作り出すことが可能なシミュレータ（内部の状態の続きをシミュレーション可能）に利用することができる。
【００４２】
また，シミュレータにおいて，ＦＰＧＡのデータとシミュレータ間でデータの比較を行って，一致，不一致を判別して結果を表示することでＦＰＧＡの評価・チェックを行うことができる。すなわち，シミュレーション結果と現在動作中のＦＰＧＡのデータを比較することでエラーとなっているフリップフロップ（ＦＦ）を特定し，問題となっている内部ノードを見つける手助けとなる。
【図面の簡単な説明】
【００４３】
【図１】本発明の原理構成を示す図である。
【図２】実施例のＣＬＡＢの構成例を示す図である。
【図３】スキャン用の接続路と通常の信号の経路を示す図である。
【図４】スキャン用の接続により形成されたシフトレジスタの構成を示す図である。
【図５】内部データチェック時の外部回路との関係を示す図である。
【図６】ＦＰＧＡの内部構成例を示す図である。
【図７】スイッチの接続構成例を示す図である。
【図８】ＣＬＡＢの内部構成例を示す図である。
【図９】図８のＣＬＡＢにより構成できるセルアレイの例を示す図である。
【図１０】ＣＬＡＢを組み合わせて実現する２ビットカウンタの例を示す図である。
【図１１】ＣＬＡＢを組み合わせて実現するエッジ検出回路の例を示す図である。
【図１２】カウンタのタイミングチャートを示す図である。
【図１３】従来例の説明図である。
【符号の説明】
【００４４】
１          ＣＬＡＢ
１０        設定信号記憶部
１１        セレクタとマルチプレクサ群
１１ａ      セレクタ（ＳＥＬ）
１１ｂ      セレクタ（ＳＥＬ）
１２        フリップフロップ（ＦＦ）
２０ａ      データ信号
２０ｂ      クロック信号
２１        通常の出力信号
２２ａ      スキャン用データ信号
２２ｂ      スキャン用クロック信号
２２ｃ      スキャン切り替え信号
２３        スキャン用出力信号
【図１】
2005348297.tif 000003
【図２】
2005348297.tif 000004
【図３】
2005348297.tif 000005
【図４】
2005348297.tif 000006
【図５】
2005348297.tif 000007
【図６】
2005348297.tif 000008
【図７】
2005348297.tif 000009
【図８】
2005348297.tif 000010
【図９】
2005348297.tif 000011
【図１０】
2005348297.tif 000012
【図１１】
2005348297.tif 000013
【図１２】
2005348297.tif 000014
【図１３】
2005348297.tif 000015