(57)【特許請求の範囲】
【請求項１】
フィールド・プログラマブル・ゲート・アレイ内に組み込まれ、該フィールド・プログラマブル・ゲート・アレイ内部の状態保持素子の論理状態を該フィールド・プログラマブル・ゲート・アレイの外部端子に出力する状態出力回路において、
前記状態出力回路に前記状態保持素子の論理状態を取り込むための取り込み信号がアサートの場合、前記状態保持素子に入力される信号である第１の外部入力信号を選択し、前記取り込み信号がネゲートの場合、第１の内部保持信号を選択する第１のセレクタと、
前記第１のセレクタが選択した信号をラッチして、該ラッチした信号である前記第１の内部保持信号を前記第１のセレクタと第２のセレクタとに出力する第１の状態保持回路と、
第２の状態保持回路に任意の値を設定するための保持選択信号がアサートの場合、外部端子から入力される第２の外部入力信号を選択し、前記保持選択信号がネゲートの場合、前記第１の状態保持回路から出力される前記第１の内部保持信号を選択する前記第２のセレクタと、
前記取り込み信号がアサートの場合、前記第２のセレクタが選択した信号を選択し、前記取り込み信号がネゲートの場合、第２の内部保持信号を選択する前記第３のセレクタと、
前記第３のセレクタが選択した信号をラッチして、該ラッチした信号である前記第２の内部保持信号を前記第３のセレクタと第４のセレクタとに出力する第２の状態保持回路と、
前記状態保持素子に保持する信号を選択するための書き込み選択信号がアサートの場合、前記第２の状態保持回路から出力される前記第２の内部保持信号を選択し、前記書き込み選択信号がネゲートの場合、前記第１の外部入力信号を選択して前記状態保持素子に出力する前記第４のセレクタと、
を備え、
前記取り込み信号がアサートであって、かつ前記保持選択信号がネゲートの場合、前記第１の状態保持回路と前記第２の状態保持回路とがシフトレジスタとして動作し、前記取り込み信号がネゲートの場合、前記第１の状態保持回路および前記第２の状態保持回路がそれぞれの状態を保持し、前記取り込み信号がアサートであって、かつ前記保持選択信号がアサートの場合、前記第２の状態保持回路は前記第２の外部入力信号を前記第２の内部保持信号として出力することを特徴とする状態出力回路。
【請求項２】
フィールド・プログラマブル・ゲート・アレイ内に組み込まれ、該フィールド・プログラマブル・ゲート・アレイ内部の複数の状態保持素子の論理状態を該フィールド・プログラマブル・ゲート・アレイの外部端子に出力する状態出力回路群であって、
請求項１に記載の状態出力回路を複数個シリアルに設け、前段の状態出力回路の第２の状態保持回路から出力される第２の内部保持信号を、後段の状態出力回路の第２の外部入力信号として入力して、取り込み信号および保持選択信号がアサートの場合、前記前段の状態出力回路の第２の状態保持回路と前記後段の状態出力回路の第２の状態保持回路とがシフトレジスタを構成されることを特徴とする状態出力回路群。
【請求項３】
フィールド・プログラマブル・ゲート・アレイ内に組み込まれ、該フィールド・プログラマブル・ゲート・アレイ内部の複数の状態保持素子の論理状態を該フィールド・プログラマブル・ゲート・アレイの外部端子に出力する状態出力回路群であって、
前記状態出力回路に前記状態保持素子の論理状態を取り込むための取り込み信号がアサートの場合、前記状態保持素子に入力される信号を選択し、前記取り込み信号がネゲートの場合、第１の内部保持信号を選択する第１のセレクタと、
前記第１のセレクタが選択した信号をラッチして、該ラッチした信号である前記第１の内部保持信号を前記第１のセレクタと第２のセレクタとに出力する第１の状態保持回路と、
第２の状態保持回路に任意の値を設定するための保持選択信号がアサートの場合、外部から入力される第１の外部入力信号を選択し、前記保持選択信号がネゲートの場合、前記第１の状態保持回路から出力される前記第１の内部保持信号を選択する前記第２のセレクタと、
前記取り込み信号がアサートの場合、前記第２のセレクタが選択した信号を選択し、前記取り込み信号がネゲートの場合、第２の内部保持信号を選択する第３のセレクタと、
前記第３のセレクタが選択した信号をラッチして、該ラッチした信号である前記第２の内部保持信号を前記第３のセレクタに出力する第２の状態保持回路と、
を有し、
前記取り込み信号がアサートの場合、前記第１の状態保持回路と前記第２の状態保持回路とがシフトレジスタとして動作し、前記取り込み信号がネゲートの場合、前記第１の状態保持回路および前記第２の状態保持回路がそれぞれの状態を保持する状態出力回路を複数個シリアルに設け、
前段の状態出力回路の第２の状態保持回路から出力される第２の内部保持信号を、後段の状態出力回路の第１の外部入力信号として入力して、取り込み信号および保持選択信号がアサートの場合、前記前段の状態出力回路の第２の状態保持回路と前記後段の状態出力回路の第２の状態保持回路とがシフトレジスタを構成されることを特徴とする状態出力回路群。
【請求項４】
請求項１に記載の状態出力回路が組み込まれたフィールド・プログラマブル・ゲート・アレイの回路記述のシミュレーションパターンを生成するシミュレーションパターン生成装置であって、
前記請求項１に記載の状態出力回路の第２の状態保持回路から出力される第２の内部保持信号である保持信号を記憶する内部状態記憶部と、
前記保持信号を取得した際のフィールド・プログラマブル・ゲート・アレイの外部入力端子の入力信号を記憶する入出力信号記憶部と、
前記保持信号を前記第２の外部入力信号として入力して前記第２の状態保持回路に設定した後、前記書き込み選択信号をアサートにして前記第２の状態保持回路に設定された保持信号を前記状態保持素子に設定し、前記入力信号記憶部に記憶されている外部入力端子の入力信号を前記状態保持素子が前記保持信号を保持していた時刻に対応させて外部入力端子に入力するシミュレーションパターンを生成するパターン生成部、
を備えたことを特徴とするシミュレーションパターン生成装置。
【請求項５】
請求項３に記載の状態出力回路群が組み込まれたフィールド・プログラマブル・ゲート・アレイの回路記述のシミュレーションパターンを生成するシミュレーションパターン生成装置であって、
前記請求項２または３に記載の状態出力回路群によって構成されるシフトレジスタの最終段となる状態出力回路の第２の状態保持回路から出力される第２の内部保持信号を保持信号として記憶する内部状態記憶部と、
前記保持信号を取得した際のフィールド・プログラマブル・ゲート・アレイの外部入力信号の入力信号を記憶する入力信号記憶部と、
前記保持信号を初段の状態出力回路の第１の外部入力信号として入力して前記各状態保持回路の第２の状態保持回路に設定した後、書き込み選択信号をアサートにして前記各第２の状態保持回路に設定された保持信号を前記各状態保持素子に設定し、前記入力信号記憶部に記憶されている外部入力端子の入力信号を前記各状態保持素子が前記保持信号を保持していた時刻に対応させて外部入力端子に入力するシミュレーションパターンを生成するパターン生成部、
をさらに備えたことを特徴とするシミュレーションパターン生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：Field Programmable Gate Array）に関するものであり、特に、ＦＰＧＡで実現したデジタル回路を検証するための状態出力回路および状態出力回路群に関するものである。
【０００２】
【従来の技術】
近年、半導体製造の多層配線技術や微細化技術の向上により、半導体集積回路の１チップの搭載ゲート規模も大きくなり、高性能・高機能の半導体集積回路が１チップで実現可能となっている。しかしながら、半導体集積回路の１チップの搭載ゲート規模が大きくなると、設計時のソフトウエアによるシミュレーション時間も膨大なものとなってしまう。そのため、ＦＰＧＡで半導体集積回路の機能を実現して、実機による検証を行うことがある。
【０００３】
また、ＰＬＬ（Phase Locked Loop）、大規模高速メモリ、高速Ｉ／Ｏインターフェースを備えるＦＰＧＡもあり、専用の半導体集積回路を開発するよりも開発期間が短く低価格であるなどの理由から、ＦＰＧＡを用いてシステムを開発することもある。
【０００４】
ソフトウエアによるシミュレーションの場合、所望のノードを指定してシミュレーションを実行することで、ＦＰＧＡ内部の信号の変化を確認することができる。しかしながら、実機を用いて検証を行う場合には、確認したい信号を外部端子に出力しなければならない。
【０００５】
従来技術では、ＦＰＧＡなどの集積回路の内部情報を出力するために、所望の集積回路の回路記述から作成されたモジュールツリーと、新たに追加する内部ノードの指定情報に基づいて、内部ノードが関連するすべてのモジュールを抽出し、下層のモジュールからトップモジュールまで内部ノードの論理状態を伝達するように、モジュール引き数、宣言、モジュール呼び出し引数の回路記述を追加するモジュール変換処理を実行して、所望の集積回路の回路記述を任意の内部ノードの論理状態を出力する回路記述に修正する。そして、修正した回路記述をＦＰＧＡを用いて実現することで、ＦＰＧＡ内部の任意の内部ノードの論理状態を外部端子に出力するようにしている（たとえば、特許文献１参照）。
【０００６】
【特許文献１】
特開平１１−２２３６６３号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、従来技術では、任意の内部ノードに対して１つのシフトレジスタしか割り当てていない。そのため、意図した瞬間の内部ノードの論理状態を出力することはできるが、任意の時間より前の論理状態を出力することはできないという問題があった。すなわち、内部の論理状態を保持しておくことができないという問題があった。
【０００８】
また、動作時に回路の不具合を発見し、シミュレーションを行うことがある。この場合、不具合が発生する際の回路動作の遷移を再現するために、ＦＰＧＡの入力端子から入力した信号と内部の状態保持回路の論理状態とを保持しておく必要がある。入力端子に入力した信号に関しては、既存のトレース装置等で連続して保持することができる。しかしながら、内部の状態保持回路の論理状態に関しては、一般的に、入力端子の数に比べてその数は極めて多く、既存のトレース装置等で必要な信号をすべて保持することはできないという問題があった。
【０００９】
任意の瞬間の状態のみを保持することが可能であったとしても、不具合が発生する時間が特定できなければ、適切な状態を保持することはできなという問題があった。たとえば、適当な時間で状態保持回路の論理状態を保持しても、ＦＰＧＡの回路の不具合を解析するためのシミュレーションに十分な入力を得られなかったり、不具合の発生までにかなりの時間を要する入力を保持したりして、解析に時間がかかってしまうという問題があった。
【００１０】
この発明は上記に鑑みてなされたもので、ＦＰＧＡ回路内部の状態保持回路の任意の時間より前の論理状態を外部端子に出力し、出力した論理状態を用いてシミュレーションパターンを生成する状態出力回路および状態出力回路群を得ることを目的としている。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、この発明にかかる状態出力回路は、フィールド・プログラマブル・ゲート・アレイ内に組み込まれ、該フィールド・プログラマブル・ゲート・アレイ内部の状態保持素子の論理状態を該フィールド・プログラマブル・ゲート・アレイの外部端子に出力する状態出力回路において、前記状態出力回路に前記状態保持素子の論理状態を取り込むための取り込み信号がアサートの場合、前記状態保持素子に入力される信号である第１の外部入力信号を選択し、前記取り込み信号がネゲートの場合、第１の内部保持信号を選択する第１のセレクタと、前記第１のセレクタが選択した信号をラッチして、該ラッチした信号である前記第１の内部保持信号を前記第１のセレクタと第２のセレクタとに出力する第１の状態保持回路と、第２の状態保持回路に任意の値を設定するための保持選択信号がアサートの場合、外部端子から入力される第２の外部入力信号を選択し、前記保持選択信号がネゲートの場合、前記第１の状態保持回路から出力される前記第１の内部保持信号を選択する前記第２のセレクタと、前記取り込み信号がアサートの場合、前記第２のセレクタが選択した信号を選択し、前記取り込み信号がネゲートの場合、第２の内部保持信号を選択する前記第３のセレクタと、前記第３のセレクタが選択した信号をラッチして、該ラッチした信号である前記第２の内部保持信号を前記第３のセレクタと第４のセレクタとに出力する第２の状態保持回路と、前記状態保持素子に保持する信号を選択するための書き込み選択信号がアサートの場合、前記第２の状態保持回路から出力される前記第２の内部保持信号を選択し、前記書き込み選択信号がネゲートの場合、前記第１の外部入力信号を選択して前記状態保持素子に出力する前記第４のセレクタと、を備え、前記取り込み信号がアサートであって、かつ前記保持選択信号がネゲートの場合、前記第１の状態保持回路と前記第２の状態保持回路とがシフトレジスタとして動作し、前記取り込み信号がネゲートの場合、前記第１の状態保持回路および前記第２の状態保持回路がそれぞれの状態を保持し、前記取り込み信号がアサートであって、かつ前記保持選択信号がアサートの場合、前記第２の状態保持回路は前記第２の外部入力信号を前記第２の内部保持信号として出力することを特徴とする。
【００１３】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる状態出力回路および状態出力回路群の好適な実施の形態を詳細に説明する。
【００１４】
実施の形態１．
図１〜図３を用いてこの発明の実施の形態１を説明する。図１は、この発明における実施の形態１の状態出力回路１の構成を示す回路図である。状態出力回路１は、第１の状態保持回路であるフリップフロップ１１と、第２の状態保持回路であるフリップフロップ１２と、フリップフロップ１１がラッチするデータを選択する第１のセレクタであるセレクタ１３と、フリップフロップ１２がラッチするデータを選択する第３のセレクタであるセレクタ１４とを備えている。
【００１５】
セレクタ１３は、端子ＬＤから入力される信号が“Ｈ”の時に端子ＤＩから入力される信号を、端子ＬＤから入力される信号が“Ｌ”の時にフリップフロップ１１の出力である内部保持信号ＨＯＬＤ１を選択して、フリップフロップ１１の端子Ｄに出力する。
【００１６】
フリップフロップ１１は、端子ＣＫから入力される信号の立上りで、端子Ｄに入力される信号をラッチする。すなわち、端子ＬＤから入力される信号が“Ｌ”の時には、自出力である内部保持信号ＨＯＬＤ１を、端子ＬＤから入力される信号が“Ｈ”の時には、端子ＤＩから入力される信号をラッチする。そして、内部保持信号ＨＯＬＤ１をセレクタ１３とセレクタ１４とに出力する。
【００１７】
セレクタ１４は、端子ＬＤから入力される信号が“Ｈ”の時に内部保持信号ＨＯＬＤ１を、端子ＬＤから入力される信号が“Ｌ”の時にフリップフロップ１２の出力である内部保持信号ＨＯＬＤ２を選択して、フリップフロップ１２の端子Ｄに出力する。
【００１８】
フリップフロップ１２は、端子ＣＫから入力される信号の立上りで、端子Ｄに入力される信号をラッチする。すなわち、端子ＬＤから入力される信号が“Ｌ”の時には、自出力である内部保持信号ＨＯＬＤ２を、端子ＬＤから入力される信号が“Ｈ”の時には、フリップフロップ１１から出力される内部保持信号ＨＯＬＤ１をラッチする。そして、内部保持信号ＨＯＬＤ２をセレクタ１４と端子ＨＯとに出力する。
【００１９】
図２は、この発明における実施の形態１の状態出力回路１を用いてＦＰＧＡ内部の状態保持素子であるフリップフロップ２の論理状態を外部端子に出力する際の接続を示すブロック図である。フリップフロップ２は、所望の機能を実現したＦＰＧＡ内部のフリップフロップであり、端子Ｔに入力された信号の立上りで、端子Ｄに入力された信号をラッチする。
【００２０】
外部端子から入力されるユーザー入力信号ＤＩＮは、フリップフロップ２の端子Ｄおよび状態出力回路１の端子ＤＩに入力される。フリップフロップ２の出力であるユーザー出力信号ＤＯＵＴは外部端子に出力される。なお、ユーザー入力信号ＤＩＮおよびユーザー出力信号ＤＯＵＴは、図示していないＦＰＧＡ内部の他の回路の入力として接続されている場合もある。
【００２１】
外部端子から入力されるシステムクロックＣＬＫは、フリップフロップ２の端子Ｔおよび状態出力回路１の端子ＣＫに入力される。外部端子から入力される取り込み信号ＬＯＡＤは、状態出力回路１の端子ＬＤに入力される。状態出力回路１の端子ＨＯから出力される保持信号ＨＯＵＴは外部端子に出力される。
【００２２】
図３のタイムチャートを参照して、フリップフロップ２の論理状態を外部に出力する状態出力回路１の動作を説明する。
【００２３】
ユーザー入力信号ＤＩＮは、周期ＴのシステムクロックＣＬＫの立下りに同期して、Ｄ０、Ｄ１、Ｄ２、…、Ｄ２３と変化する。フリップフロップ２は、システムクロックＣＬＫの立上りでユーザー入力信号ＤＩＮをラッチして、ユーザー出力信号ＤＯＵＴを出力する。この場合、ユーザー出力信号ＤＯＵＴは、クロックの立上りに同期してＤ０、Ｄ１、Ｄ２、…、Ｄ２３と変化する。
【００２４】
一方、取り込み信号ＬＯＡＤを、周期Ｐでアサート（この場合“Ｈ”）にする。この場合、対象となるフリップフロップ２がシステムクロックＣＬＫの立上りでデータをラッチしているので、システムクロックＣＬＫの立下りからシステムクロックＣＬＫの周期Ｔの期間、取り込み信号ＬＯＡＤを“Ｈ”にする。
【００２５】
取り込み信号ＬＯＡＤが“Ｈ”になると、セレクタ１３は、ユーザー入力信号ＤＩＮを選択して、フリップフロップ１１の端子Ｄに出力する。また、セレクタ１４は、フリップフロップ１１が出力する内部保持信号ＨＯＬＤ１を選択して、フリップフロップ１２の端子Ｄに出力する。
【００２６】
フリップフロップ１１は、システムクロックＣＬＫの立上りで、セレクタ１３が選択したユーザー入力信号ＤＩＮをラッチして、内部保持信号ＨＯＬＤ１をセレクタ１３とセレクタ１４とに出力する。フリップフロップ１２は、システムクロックＣＬＫの立上りで、セレクタ１４が選択した内部保持信号ＨＯＬＤ１をラッチして、内部保持信号ＨＯＬＤ２をセレクタ１４と状態出力回路１の端子ＨＯとに出力する。状態出力回路１の端子ＨＯから出力される内部保持信号ＨＯＬＤ２は、保持信号ＨＯＵＴとしてＦＰＧＡの外部端子に出力される。
【００２７】
取り込み信号ＬＯＡＤがネゲート（この場合“Ｌ”）になると、セレクタ１３は、フリップフロップ１１が出力する内部保持信号ＨＯＬＤ１を選択して、フリップフロップ１１の端子Ｄに出力する。セレクタ１４は、フリップフロップ１２が出力する内部保持信号ＨＯＬＤ２を選択して、フリップフロップ１２の端子Ｄに出力する。
【００２８】
フリップフロップ１１は、システムクロックＣＬＫの立上りで、セレクタ１３が選択した内部保持信号ＨＯＬＤ１、すなわち、自出力をラッチする。これにより、フリップフロップ１１は、取り込み信号ＬＯＡＤが“Ｈ”になるまでの間、内部保持信号ＨＯＬＤ１を保持する。
【００２９】
フリップフロップ１２は、システムクロックＣＬＫの立上りで、セレクタ１４が選択した内部保持信号ＨＯＬＤ２、すなわち、自出力をラッチする。これにより、フリップフロップ１２は、取り込み信号ＬＯＡＤが“Ｈ”になるまでの間、内部保持信号ＨＯＬＤ２を保持する。
【００３０】
このようにこの実施の形態１では、取り込み信号ＬＯＡＤがアサートの場合、第１の状態保持回路であるフリップフロップ１１が対象となる状態保持素子であるフリップフロップ２がラッチするユーザー入力信号ＤＩＮをラッチするとともに、第１の状態保持回路であるフリップフロップ１１と第２の状態保持回路であるフリップフロップ１２とが２段のシフレジスタとして動作し，取り込み信号ＬＯＡＤがネゲートの場合、第１の状態保持回路であるフリップフロップ１１と第２の状態保持回路であるフリップフロップ１２が、それぞれ自出力をラッチする保持状態となるようにしている。これにより、取り込み信号ＬＯＡＤの１周期分から２周期までの期間、対象となる状態保持素子であるフリップフロップ２の任意のタイミングの論理状態を外部端子に出力することができる。
【００３１】
なお、ユーザー入力信号ＤＩＮ、システムクロックＣＬＫおよび取り込み信号ＬＯＡＤは、外部端子から入力される信号として説明したが、ＦＰＧＡ内部の他の回路からの信号でもよい。
【００３２】
また、ユーザー入力信号ＤＩＮ入力をシステムクロックＣＬＫの立下りに同期して入力して説明したが、ユーザー入力信号ＤＩＮを入力するタイミングは、ユーザー入力信号ＤＩＮをラッチするフリップフロップ２およびフリップフロップ１１のそれぞれのセットアップタイムおよびホールドタイムを満足するように入力すればよい。
【００３３】
さらに、取り込み信号ＬＯＡＤをアサートにするタイミングおよび期間については、フリップフロップ１１がユーザー入力信号ＤＩＮを、フリップフロップ１２が内部保持信号ＨＯＬＤ１をラッチするためのセットアップタイムおよびホールドタイムを満足するように入力すればよい。
【００３４】
実施の形態２．
図４〜図６を用いてこの発明の実施の形態２を説明する。図４は、この発明における実施の形態２の状態出力回路３の構成を示す回路図である。この実施の形態２の状態出力回路３は、実施の形態１の状態出力回路に、端子Ｓから入力される信号に基づいて、第２の状態保持回路であるフリップフロップ３２がラッチするデータとして、端子ＨＩＮから入力される信号と第１の状態保持回路であるフリップフロップ３１の出力とを選択する第２のセレクタであるセレクタ３５が追加された構成となっている。
【００３５】
状態出力回路３は、第１の状態保持回路であるフリップフロップ３１と、第２の状態保持回路であるフリップフロップ３２と、フリップフロップ３１がラッチするデータを選択する第１のセレクタであるセレクタ３３と、フリップフロップ３２がラッチするデータを選択する第３のセレクタであるセレクタ３４，第２のセレクタであるセレクタ３５とを備えている。
【００３６】
セレクタ３３は、端子ＬＤから入力される信号が“Ｈ”の時に端子ＤＩから入力される信号を、端子ＬＤから入力される信号が“Ｌ”の時にフリップフロップ３１の出力である内部保持信号ＨＯＬＤ１を選択して、フリップフロップ３１の端子Ｄに出力する。
【００３７】
フリップフロップ３１は、端子ＣＫから入力される信号の立上りで、端子Ｄに入力される信号をラッチする。すなわち、端子ＬＤから入力される信号が“Ｌ”の時には、自出力である内部保持信号ＨＯＬＤ１を、端子ＬＤから入力される信号が“Ｈ”の時には、端子ＤＩから入力される信号をラッチする。そして、内部保持信号ＨＯＬＤ１をセレクタ３３とセレクタ３５とに出力する。
【００３８】
セレクタ３５は、端子Ｓから入力される信号が“Ｈ”の時に端子ＨＩＮから入力される信号を、端子Ｓから入力される信号が“Ｌ”の時にフリップフロップ３１の出力である内部保持信号ＨＯＬＤ１を選択して、セレクタ３４に出力する。
【００３９】
セレクタ３４は、端子ＬＤから入力される信号が“Ｈ”の時にセレクタ３５の出力を、端子ＬＤから入力される信号が“Ｌ”の時にフリップフロップ３２の出力である内部保持信号ＨＯＬＤ２を選択して、フリップフロップ３２の端子Ｄに出力する。
【００４０】
フリップフロップ３２は、端子ＣＫから入力される信号の立上りで、端子Ｄに入力される信号をラッチする。すなわち、端子ＬＤから入力される信号が“Ｈ”かつ端子Ｓから入力される信号が“Ｈ”の場合には、端子ＨＩＮから入力される信号を、端子ＬＤから入力される信号が“Ｈ”かつ端子Ｓから入力される信号が“Ｌ”の場合には、フリップフロップ３１の出力である内部保持信号ＨＯＬＤ１を、端子ＬＤから入力される信号が“Ｌ”の場合には、端子Ｓから入力される信号に関係なく自出力である内部保持信号ＨＯＬＤ２をラッチする。そして、内部保持信号ＨＯＬＤ２をセレクタ３４と端子ＨＯとに出力する。
【００４１】
つぎに、この発明における実施の形態２の状態出力回路３を用いてＦＰＧＡ内部の複数のフリップフロップの論理状態を外部端子に出力する場合を説明する。図５は、２つのフリップフロップ２ａ，２ｂの論理状態を２つの状態出力回路３ａ、３ｂを用いて外部に出力する場合の構成を示すブロック図である。図５において、状態出力回路３ａ，３ｂは、この実施の形態２の状態出力回路３を示している。また、フリップフロップ２ａ，２ｂは、所望の機能を実現したＦＰＧＡ内部のフリップフロップであり、端子Ｔに入力された信号の立上りで、端子Ｄに入力された信号をラッチする。
【００４２】
外部端子から入力されるユーザー入力信号ＤＩＮは、フリップフロップ２ａの端子Ｄおよび状態出力回路３ａの端子ＤＩに入力される。フリップフロップ２ａの出力であるユーザー内部信号ＤＡＴＡは、フリップフロップ２ｂの端子Ｄおよび状態出力回路３ｂの端子ＤＩに出力される。フリップフロップ２ｂの出力であるユーザー出力信号ＤＯＵＴは外部端子に出力される。なお、ユーザー入力信号ＤＩＮ、ユーザー出力信号ＤＯＵＴは、図示していないＦＰＧＡ内部の他の回路の入力として接続されている場合もある。また、フリップフロップ２ａとフリップフロップ２ｂと間に、ＦＰＧＡ内部の他の回路がある場合には、フリップフロップ２ｂの端子Ｄに入力される信号を状態出力回路３ｂの端子ＤＩに入力すればよい。
【００４３】
外部端子から入力されるシステムクロックＣＬＫは、フリップフロップ２ａ，２ｂの端子Ｔと状態出力回路３ａ，３ｂの端子ＣＫとに入力される。外部端子から入力される取り込み信号ＬＯＡＤは、状態出力回路３ａ，３ｂの端子ＬＤに入力される。外部端子から入力される保持選択信号ＳＥＬは、状態出力回路３ａ，３ｂの端子Ｓに入力される。
【００４４】
状態出力回路３ａの端子ＨＩＮは、固定値（この場合“Ｌ”）が入力される。状態出力回路３ａの端子ＨＯから出力される内部保持信号ＨＯＬＤ２は、状態出力回路３ｂの端子ＨＩＮに出力される。状態出力回路３ｂの端子ＨＯから出力される内部保持信号ＨＯＬＤ２は、保持信号ＨＯＵＴとして外部端子に出力される。
【００４５】
図６のタイムチャートを参照して、フリップフロップ２ａ，２ｂの論理状態を外部に出力する状態出力回路３ａ，３ｂの動作を説明する。
【００４６】
ユーザー入力信号ＤＩＮは、Ｄ１、Ｄ２、Ｄ３、…、Ｄ２２と変化する。フリップフロップ２ａは、システムクロックＣＬＫの立上りでユーザー入力信号ＤＩＮをラッチして、ユーザー内部信号ＤＡＴＡを出力する。この場合、ユーザー内部信号ＤＡＴＡは、Ｄ１、Ｄ２、Ｄ３、…、Ｄ２２と変化する。フリップフロップ２ｂは、システムクロックＣＬＫの立上りでユーザー内部信号ＤＡＴＡをラッチして、ユーザー出力信号ＤＯＵＴを出力する。この場合、ユーザー出力信号ＤＯＵＴは、Ｄ１、Ｄ２、Ｄ３、…、Ｄ２１と変化する。
【００４７】
一方、保持選択信号ＳＥＬがネゲート（この場合“Ｌ”）かつ取り込み信号ＬＯＡＤがアサート（この場合“Ｈ”）の時、状態出力回路３ａのセレクタ３３はユーザー入力信号ＤＩＮを、状態出力回路３ｂのセレクタ３３はユーザー内部信号ＤＡＴＡをそれぞれ選択する。したがって、状態出力回路３ａのフリップフロップ３１はユーザー入力信号ＤＩＮを、状態出力回路３ｂのフリップフロップ３１はユーザー内部信号ＤＡＴＡをそれぞれラッチする。また、保持選択信号ＳＥＬが“Ｌ”であるので、状態出力回路３ａ，３ｂのセレクタ３５は内部保持信号ＨＯＬＤ１を選択する。また、取り込み信号ＬＯＡＤが“Ｈ”であるので、状態出力回路３ａ，３ｂのセレクタ３４は、セレクタ３５の出力、すなわち、内部保持信号ＨＯＬＤ１を選択する。したがって、状態出力回路３ａ，３ｂのフリップフロップ３２は、内部保持信号ＨＯＬＤ１をラッチして内部保持信号ＨＯＬＤ２を状態出力回路３ａ，３ｂのそれぞれの端子ＨＯに出力する。
【００４８】
取り込み信号ＬＯＡＤがネゲート（この場合“Ｌ”）に変化すると、状態出力回路３ａのセレクタ３３は内部保持信号ＨＯＬＤ１を、セレクタ３４は内部保持信号ＨＯＬＤ２をそれぞれ選択する。状態出力回路３ｂのセレクタ３３およびセレクタ３４も、それぞれ内部保持信号ＨＯＬＤ１および内部保持信号ＨＯＬＤ２を選択する。したがって、取り込み信号が“Ｈ”になるまで、それぞれの状態を保持する。すなわち、保持選択信号ＳＥＬが“Ｌ”の場合には、状態出力回路３ａ，３ｂは、取り込み信号ＬＯＡＤが“Ｈ”になった時のユーザー入力信号ＤＩＮとユーザー内部信号ＤＡＴＡを保持するシフトレジスタとして動作する。
【００４９】
保持選択信号ＳＥＬがアサート（この場合“Ｈ”）になると、状態出力回路３ａのセレクタ３５は、固定値“Ｌ”を選択する。また、状態出力回路３ｂのセレクタ３５は、端子ＨＩＮに入力されている状態出力回路３ａの内部保持信号ＨＯＬＤ２を選択する。
【００５０】
取り込み信号ＬＯＡＤが“Ｈ”になると、状態出力回路３ａ，３ｂのセレクタ３４は、セレクタ３５の出力を選択する。すなわち、状態出力回路３ａのセレクタ３４は固定値“Ｌ”を選択し、状態出力回路３ｂのセレクタ３４は状態出力回路３ａの内部保持信号ＨＯＬＤ２を選択する。これにより、状態出力回路３ａのフリップフロップ３２は、“Ｌ”を、状態出力回路３ｂのフリップフロップ３２は、状態出力回路３ａの内部保持信号ＨＯＬＤ２をラッチする。
【００５１】
取り込み信号ＬＯＡＤが“Ｌ”になると、状態出力回路３ａ，３ｂのセレクタ３４は、それぞれの内部保持信号ＨＯＬＤ２を選択する。したがって、状態出力回路３ａ，３ｂの内部保持信号ＨＯＬＤ２は、取り込み信号ＬＯＡＤが“Ｈ”になるまで保持される。
【００５２】
このようにこの実施の形態２では、第２の状態保持回路であるフリップフロップ３２にラッチするデータを選択する第３のセレクタであるセレクタ３４の前段に、端子Ｓから入力される保持選択信号ＳＥＬがアサートの場合、端子ＨＩＮから入力された信号を選択し、端子Ｓから入力される保持選択信号ＳＥＬがネゲートの場合、第１の状態保持回路であるフリップフロップ３１の出力を選択する第２のセレクタであるセレクタ３５を追加して、第２の状態保持回路であるフリップフロップ３２に、任意の値を設定できるようにした。すなわち、複数の状態出力回路を直列接続した場合に、保持選択信号ＳＥＬをアサートにしておき、取り込み信号ＬＯＡＤを周期的にアサートにすることで、直列接続した状態出力回路の第２の状態保持回路であるフリップフロップ３２が接続されてシフトレジスタとして動作するようにした。これにより、外部端子を増やすことなく、ＦＰＧＡ内部の複数のフリップフロップの論理状態を出力することができる。
【００５３】
なお、ユーザー入力信号ＤＩＮ、システムクロックＣＬＫ、取り込み信号ＬＯＡＤおよび保持選択信号ＳＥＬは、外部端子から入力される信号として説明したが、ＦＰＧＡ内部の他の回路からの信号でもよい。
【００５４】
また、ユーザー入力信号ＤＩＮ入力をシステムクロックＣＬＫの立下りに同期して入力して説明したが、ユーザー入力信号ＤＩＮを入力するタイミングは、ユーザー入力信号ＤＩＮをラッチするフリップフロップ２ａのセットアップタイムおよびホールドタイムを満足するように入力すればよい。
【００５５】
さらに、取り込み信号ＬＯＡＤをアサートにするタイミングおよび期間については、状態出力回路３ａ，３ｂのフリップフロップ３１，３２が端子Ｄに入力されたデータをラッチするためのセットアップタイムおよびホールドタイムを満足するようにすればよい。
【００５６】
さらにまた、フリップフロップ２ａ，２ｂと状態出力回路３ｂとは，直接接続されているが、他の回路であってもよいし、接続はこれに限るものではない。
【００５７】
実施の形態３．
図７〜図９を用いてこの発明の実施の形態３を説明する。図７は、この発明における実施の形態３の状態出力回路４の構成を示す回路図である。この実施の形態３の状態出力回路４は、実施の形態２の状態出力回路３に、端子ＤＳから入力される信号に基づいて、端子ＤＩから入力される信号または内部保持信号ＨＯＬＤ２を選択して端子ＤＯに出力する第４のセレクタであるセレクタ４０が追加されている。実施の形態２の状態出力回路３と同じ回路については同一符号を付し、重複する説明を省略する。
【００５８】
セレクタ４０は、端子ＤＳから入力される信号が“Ｌ”の時に端子ＤＩから入力される信号を、端子ＤＳから入力される信号が“Ｈ”の時にフリップフロップ３２の出力である内部保持信号ＨＯＬＤ２を選択して、端子ＤＯに出力する。
【００５９】
図８は、状態出力回路４ａ，４ｂを用いてＦＰＧＡ内部のフリップフロップ５ａ，５ｂに任意の値を設定する場合の構成を示すブロック図である。図８において、状態出力回路４ａ，４ｂは、この実施の形態３の状態出力回路４を示している。また、フリップフロップ５ａ，５ｂは、所望の機能を実現したＦＰＧＡ内部のフリップフロップであり、端子Ｔに入力された信号の立上りで、端子Ｄに入力された信号をラッチする。
【００６０】
外部端子から入力されるユーザー入力信号ＤＩＮは、状態出力回路４ａの端子ＤＩに入力される。外部端子から入力される書き込み信号ＷＤＩは、状態出力回路４ａの端子ＨＩＮに入力される。外部端子から入力されるユーザー選択信号ＤＳＥＬは、状態出力回路４ａ，４ｂの端子ＤＳに入力される。外部端子から入力される書き込み選択信号ＷＳＥＬは、状態出力回路４ａ，４ｂの端子Ｓに入力される。外部端子から入力される取り込み信号ＬＯＡＤは、状態出力回路４ａ，４ｂの端子ＬＤに入力される。外部端子から入力されるシステムクロックＣＬＫは、状態出力回路４ａ，４ｂの端子ＣＫに入力される。
【００６１】
状態出力回路４ａの端子ＨＯから出力される内部保持信号ＨＯＬＤ２は、状態出力回路４ｂの端子ＨＩＮに出力される。状態出力回路４ｂの端子ＨＯから出力される内部保持信号ＨＯＬＤ２は、保持信号ＨＯＵＴとして外部端子に出力される。
【００６２】
状態出力回路４ａの端子ＤＯの出力であるユーザー内部信号ＤＡＴＡ１は、フリップフロップ５ａの端子Ｄに出力される。フリップフロップ５ａの出力であるユーザー内部信号ＤＡＴＡ２は、状態出力回路４ｂの端子ＤＩに出力される。状態出力回路４ｂの端子ＤＯの出力であるユーザー内部信号ＤＡＴＡ３は、フリップフロップ５ｂの端子Ｄに出力される。フリップフロップ５ｂの出力であるユーザー出力信号ＤＯＵＴは、外部端子に出力される。なお、ユーザー入力信号ＤＩＮ、およびユーザー出力信号ＤＯＵＴは、図示していないＦＰＧＡ内部の他の回路の入力として接続されている場合もある。また、フリップフロップ５ａと状態出力回路４ｂとが、直接接続されているが、ＦＰＧＡ回路の他の回路があってもよい。
【００６３】
つぎに、フリップフロップ５ａ，５ｂの論理状態を出力する動作を簡単に説明する。ユーザー選択信号ＤＳＥＬを“Ｌ”にすると、状態出力回路４ａのセレクタ４０はユーザー入力信号ＤＩＮを選択してフリップフロップ５ａの端子Ｄに、状態出力回路４ｂのセレクタ４０はフリップフロップ５ａの出力であるユーザー内部信号ＤＡＴＡ２を選択してフリップフロップ５ｂの端子Ｄに出力する。すなわち、ユーザー内部信号ＤＡＴＡ３は、ユーザー内部信号ＤＡＴＡ２の値となる。したがって、フリップフロップ５ａ，５ｂは、所望の機能を実現するための通常の信号をラッチする動作を行う。
【００６４】
また、書き込み選択信号ＷＳＥＬが状態出力回路４ａ，４ｂの端子Ｓに接続されている。すなわち、書き込み選択信号ＷＳＥＬは、状態出力回路４ａ，４ｂのセレクタ３５が内部保持信号ＨＯＬＤ１を出力するか、端子ＨＩＮからの入力を選択するかを決定する。したがって、書き込み選択信号ＷＳＥＬを実施の形態２の保持選択信号ＳＥＬと同様に変化させることで、実施の形態２の状態出力回路３ａ，３ｂと同様に取り込み信号ＬＯＡＤが“Ｈ”になった時のフリップフロップ５ａ，５ｂの論理状態を保持して外部端子に出力する動作となる。
【００６５】
つぎに、図９のタイムチャートを参照して、フリップフロップ５ａ，５ｂに任意の値を設定する場合の状態出力回路４ａ，４ｂの動作を説明する。
【００６６】
ユーザー選択信号ＤＳＥＬをネゲート（この場合は“Ｌ”）に、書き込み選択信号ＷＳＥＬと取り込み信号ＬＯＡＤとをそれぞれアサート（この場合は“Ｈ”）にする。これにより、状態出力回路４ａのセレクタ３５は書き込み信号ＷＤＩを、状態出力回路４ａのセレクタ３４はセレクタ３５の出力を選択する。したがって、状態出力回路４ａのフリップフロップ３２は、システムクロックＣＬＫの立ち上がりで書き込み信号ＷＤＩをラッチする。
【００６７】
また、状態出力回路４ｂのセレクタ３５は状態出力回路４ａのフリップフロップ３２の出力である内部保持信号ＨＯＬＤ２を、状態出力回路４ｂのセレクタ３４はセレクタ３５の出力を選択する。しがたって、状態出力回路４ｂのフリップフロップ３２は、システムクロックＣＬＫの立ち上がりで状態出力回路４ａのフリップフロップ３２の出力である内部保持信号ＨＯＬＤ２をラッチする。
【００６８】
このように、ユーザー選択信号ＤＳＥＬが“Ｌ”、書き込み選択信号ＷＳＥＬと取り込み信号ＬＯＡＤとがそれぞれ“Ｈ”の場合、状態出力回路４ａのフリップフロップ３２と状態出力回路４ｂのフリップフロップ３２とが、シフトレジスタとして動作して、書き込み信号ＷＤＩの値を順次、状態出力回路４ａ，４ｂのフリップフロップ３２に設定する。
【００６９】
図９のタイムチャートの場合は、書き込み選択信号ＷＳＥＬと取り込み信号ＬＯＡＤとがそれぞれ“Ｈ”の時に、書き込み信号ＷＤＩがＤｂ、Ｄａとなっている。したがって、状態出力回路４ａのフリップフロップ３２は、Ｄｂ、Ｄａをラッチして状態出力回路４ａの内部保持信号ＨＯＬＤ２をＤｂ、Ｄａにする。また、状態出力回路４ｂのフリップフロップ３２は、Ｄｂをラッチして状態出力回路４ｂの内部保持信号ＨＯＬＤ２をＤｂにする。ここで書き込み選択信号ＷＳＥＬと取り込み信号ＬＯＡＤとがそれぞれネゲート（この場合は“Ｌ”）になるので、状態出力回路４ａのフリップフロップ３２はＤａを、状態出力回路４ｂのフリップフロップ３２はＤｂを保持する。
【００７０】
ユーザー入力信号ＤＩＮは、Ｄ０、Ｄ１、Ｄ２、…、Ｄ１９と変化する。ユーザー選択信号ＤＳＥＬが“Ｌ”の場合、状態出力回路４ａ，４ｂのセレクタ４０は端子ＤＩから入力される信号を選択する。したがって、フリップフロップ５ａはユーザー入力信号ＤＩＮを、フリップフロップ５ｂはユーザー内部信号ＤＡＴＡ２をラッチする。
【００７１】
ユーザー選択信号ＤＳＥＬをシステムクロックＣＬＫの立下りから１周期分だけアサート（この場合は“Ｈ）”にする。状態出力回路４ａ、４ｂのセレクタ４０は、ユーザー選択信号ＤＳＥＬが“Ｈ”の期間だけ、フリップフロップ３２の出力である内部保持信号ＨＯＬＤ２を選択して端子ＤＯに出力する。これにより、ユーザー内部信号ＤＡＴＡ１はＤａ、ユーザー内部信号ＤＡＴＡ３はＤｂになる。システムクロックＣＬＫの立ち上がりで、フリップフロップ５ａはユーザー内部信号ＤＡＴＡ１を、フリップフロップ５ｂはユーザー内部信号ＤＡＴＡ３をラッチする。すなわち、フリップフロップ５ａはＤａをラッチしてユーザー内部信号ＤＡＴＡ２をＤａに、フリップフロップ５ｂはＤｂをラッチしてユーザー出力信号ＤＯＵＴをＤｂにする。
【００７２】
このようにこの実施の形態３では、実施の形態２の状態出力回路３に、端子ＤＳから入力されるユーザー選択信号ＤＳＥＬがアサートの場合、第２の状態保持回路であるフリップフロップ３２の出力である内部保持信号ＨＯＬＤ２を選択し、端子ＤＳから入力されるユーザー選択信号ＤＳＥＬがネゲートの場合、端子ＤＩから入力された信号を選択する第４のセレクタであるセレクタ４０を追加して、端子Ｓから入力される書き込み選択信号ＷＳＥＬおよび端子ＬＤから入力される取り込み信号ＬＯＡＤをアサートにして第２の状態保持回路であるフリップフロップ３２に設定した任意の値と端子ＤＩから入力される信号とを選択して出力するようにした。これにより、ＦＰＡＧ内部の対象となっているフリップフロップの論理状態を外部端子に出力するとともに、対象となっているフリップフロップに任意の値を設定することができる。
【００７３】
また、複数の状態出力回路を直列に接続して、書き込み選択信号ＷＳＥＬおよび取り込み信号ＬＯＡＤをアサートにすることで、直列接続した状態出力回路の第２の状態保持回路であるフリップフロップ３２を接続し、シフトレジスタとして動作させて任意の値を設定した後、システムクロックＣＬＫ１周期分だけユーザー選択信号ＤＳＥＬをアサートにすることで、外部端子を増やすことなくＦＰＧＡ内部の複数のフリップフロップに任意の値を設定することができる。
【００７４】
なお、ユーザー入力信号ＤＩＮ、システムクロックＣＬＫ、取り込み信号ＬＯＡＤ、書き込み選択信号ＷＳＥＬおよびユーザー選択信号ＤＳＥＬは、外部端子から入力される信号として説明したが、ＦＰＧＡ内部の他の回路からの信号でもよい。
【００７５】
また、ユーザー入力信号ＤＩＮ入力をシステムクロックＣＬＫの立下りに同期して入力して説明したが、ユーザー入力信号ＤＩＮを入力するタイミングは、ユーザー入力信号ＤＩＮをラッチするフリップフロップ５ａのセットアップタイムおよびホールドタイムを満足するように入力すればよい。
【００７６】
さらに、取り込み信号ＬＯＡＤおよび書き込み選択信号ＷＳＥＬをアサートにするタイミングおよび期間については、状態出力回路４ａ，４ｂのフリップフロップ３１，３２が端子Ｄに入力されたデータをラッチするためのセットアップタイムおよびホールドタイムを満足するようにすればよい。
【００７７】
実施の形態４．
図１０および図１１を用いてこの発明の実施の形態４を説明する。この実施の形態４では、実施の形態１〜３の状態出力回路を用いてＦＰＧＡ回路内部のフリップフロップの論理状態を外部端子に出力した保持信号と、既存のトレース装置により取り込んだＦＰＧＡ回路の外部入力端子の入力信号に基づいて、ＦＰＧＡ回路の回路記述を用いてシミュレーションを行うためのシミュレーションパターンを生成するパターン生成部について説明する。
【００７８】
図１０は、この発明における実施の形態４のパターン生成部７の入出力関連図である。内部状態記憶部７１は、ＦＰＧＡ回路を実動作させた時のＦＰＧＡ回路内部のｎ（ｎは自然数）個のフリップフロップの論理状態をｎ個の状態出力回路３を用いて実施の形態２で説明した手順にしたがって、周期的にＦＰＧＡ回路の外部端子に出力した保持信号ＨＯＵＴ（図５参照）を記憶する。
【００７９】
入力信号記憶部７２は、たとえば、既存のトレース装置を用いて生成したＦＰＧＡ回路を実動作させて内部状態記憶部７１に記憶されている保持信号ＨＯＵＴをＦＰＧＡ回路の外部端子に出力した際のＦＰＧＡ回路の入力信号と取り込み信号ＬＯＡＤを記憶する。以下、入力信号記憶部７２に記憶されている入力信号をトレース入力信号とし、入力信号記憶部７２に記憶されている取り込み信号をトレース取り込み信号とする。
【００８０】
パターン生成部７は、内部状態記憶部７１に記憶されている保持信号ＨＯＵＴと、入力信号記憶部７２に記憶されているトレース入力信号およびトレース取り込み信号とに基づいて、実施の形態３の状態出力回路４をｎ個用いてＦＰＧＡ回路内の各フリップフロップに任意の論理状態を設定可能にした回路記述のシミュレーションパターン７３を生成する。すなわち、実施の形態３で説明した書き込み手順にしたがって、ＦＰＧＡ回路の回路記述の各フリップフロップに実動作させたＦＰＧＡ回路の任意の時刻の論理状態を設定して、実動作させたＦＰＧＡ回路の動作をＦＰＧＡ回路の回路記述を用いたシミュレーションで再現するためのシミュレーションパターン７３を生成する。
【００８１】
つぎに、ＦＰＧＡ回路のフリップフロップ数ｎが２の場合を例にあげて、パターン生成部７の動作を説明する。ここでは、内部状態記憶部７１には、図６のタイムチャートに示した保持信号ＨＯＵＴが記憶されているものとする。また、実動作させるＦＰＧＡ回路は図５に示した接続であり、ＦＰＧＡ回路の回路記述は図８に示した接続となっており、図５に示したフリップフロップ２ａ，２ｂが図８に示したフリップフロップ５ａ，５ｂに対応するものとする。
【００８２】
パターン生成部７は、内部状態記憶部７１の保持信号ＨＯＵＴを読み出し、フリップフロップ２ａ，２ｂの論理状態である保持信号ＨＯＵＴの“Ｄ２”，“Ｄ３”を図１１に示すように、システムクロックＣＬＫの立下りで変化させて書き込み信号ＷＤＩに入力するパターンを生成する。
【００８３】
パターン生成部７は、書き込み信号ＷＤＩに入力した“Ｄ３”を状態出力回路４ａのフリップフロップ３２（図７参照）に、書き込み信号ＷＤＩに入力した“Ｄ２”を状態出力回路４ｂのフリップフロップ３２にそれぞれラッチするために、書き込み信号ＷＤＩに“Ｄ２”，“Ｄ３”を入力している期間だけ書き込み選択信号ＷＳＥＬおよび取り込み信号ＬＯＡＤをアサート（この場合は“Ｈ”）にするパターンを生成する。
【００８４】
パターン生成部７は、状態出力回路４ａのフリップフロップ３２から出力される内部保持信号ＨＯＬＤ２（この場合は“Ｄ３”）をフリップフロップ５ａに、状態出力回路４ｂのフリップフロップ３２から出力される内部保持信号ＨＯＬＤ２（この場合は“Ｄ２”）をフリップフロップ５ｂにラッチするために、書き込み選択信号ＷＳＥＬおよび取り込み信号ＬＯＡＤをネゲート（この場合は“Ｌ”）に変化させた時刻からシステムクロック１周期の期間だけ、ユーザー選択信号ＤＳＥＬをアサート（この場合は“Ｈ”）にするパターンを生成する。
【００８５】
パターン生成部７は、入力信号記憶部７２に記憶されているＦＰＧＡ回路の入力信号を読み出して、フリップフロップ５ａの論理状態が“Ｄ３”、フリップフロップ５ｂの論理状態が“Ｄ２”の時のトレース入力信号を回路記述のＦＰＧＡ回路の入力端子に入力するようにタイミングを調整して入力信号のパターンを生成する。
【００８６】
図６に示したように、時刻ｔ１においてフリップフロップ５ｂの論理状態が“Ｄ２”になり、ユーザー出力信号ＤＯＵＴに“Ｄ２”が出力されてから、時刻ｔ２において保持信号ＨＯＵＴに“Ｄ２”が出力されるまでには取り込み信号ＬＯＡＤの周期Ｐだけ遅延がある。したがって、ＦＰＧＡ回路の回路記述の入力端子には、取り込み信号ＬＯＡＤの周期Ｐだけ前のトレース入力信号を入力しなければならない。フリップフロップ５ａの論理状態を“Ｄ３”に、フリップフロップ５ｂの論理状態を“Ｄ２”に設定した場合、時刻ｔ１におけるトレース入力信号を、ＦＰＧＡ回路の回路記述の入力端子に入力するようにタイミングを調整する。
【００８７】
図１１の場合は、入力信号記憶部７２に記憶されている取り込み信号Ｌ１が、図６の時刻ｔ１の取り込み信号ＬＯＡＤに、入力信号記憶部７２に記憶されている取り込み信号Ｌ２が図６の時刻ｔ２の取り込み信号ＬＯＡＤに対応している。パターン生成部７は、ＦＰＧＡ回路の回路記述の各入力端子にトレース取り込み信号Ｌ１が“Ｌ”に変化した時刻のトレース入力信号を、ユーザー選択信号ＤＳＥＬが“Ｌ”に変化したタイミングで入力信号として入力するパターンを生成する。
【００８８】
このようにしてパターン生成部７は、ＦＰＧＡ回路の回路記述のパターンを生成して、シミュレーションパターン７３として出力する。なお、トレース取り込み信号は、シミュレーションパターン７３に出力する必要はない。
【００８９】
このようにこの実施の形態４では、パターン生成部７が、ＦＰＧＡ回路内部のフリップフロップの論理状態を状態出力回路を用いて出力した保持信号ＨＯＵＴと、既存のトレース装置を用いてＦＰＧＡ回路の入力信号をトレースした入力信号に基づいて、任意の時間のＦＰＧＡ回路内部のフリップフロップの値を設定した後、設定した値のタイミングに対応するＦＰＧＡ回路の入力信号をＦＰＧＡ回路に入力するシミュレーションパターン７３を生成するようにした。これにより、実動作時の任意の時間のＦＰＧＡ回路の状態を、状態出力回路を含むＦＰＧＡ回路の回路記述のシミュレーションで再現することができ、不具合が生じた場合の解析を効率よく行うことができる。
【００９０】
なお、書き込み信号ＷＤＩをクロックの立下りに同期して入力するようにしたが、状態出力回路４のフリップフロップ３２のセットアップタイムおよびホールドタイムを満足するようにすればよい。
【００９１】
また、書き込み選択信号ＷＳＥＬ、取り込み信号ＬＯＡＤおよびユーザー選択信号ＤＳＥＬをアサートにするタイミングについても、これらの信号に制御されてデータをラッチするフリップフロップのセットアップタイムおよびホールドタイムを満足するようにすればよい。
【００９２】
さらに、実施の形態２の状態出力回路３を用いて保持信号ＨＯＵＴを出力して内部状態記憶部７１に記憶する例をあげて説明したが、保持信号ＨＯＵＴを出力する際に用いる状態出力回路は、これに限るものではなく、実施の形態１の状態出力回路１または実施の形態３の状態出力回路４を用いてもよい。
【００９３】
さらにまた、実施の形態１〜４では、フリップフロップ２，２ａ，２ｂ，５ａ，５ｂ，１１，１２，３１，３２はクロックの立ち上がりで動作するものとして説明したが、クロックの立下りで動作してもかまわない。
【００９４】
【発明の効果】
以上説明したように、この発明における状態出力回路によれば、取り込み信号がアサートであって、かつ保持選択信号がネゲートの場合、第１の状態保持回路が対象となる状態保持素子がラッチする信号をラッチするとともに、第１の状態保持回路と第２の状態保持回路とが２段のシフレジスタとして動作し、取り込み信号がネゲートの場合、第１の状態保持回路と第２の状態保持回路とが、それぞれ自出力をラッチする保持状態となるようにしているため、取り込み信号の１周期分から２周期までの期間、対象となる状態保持素子の任意のタイミングの論理状態を外部端子に出力することができる。また、この発明における状態出力回路によれば、取り込み信号がアサートであって、かつ保持選択信号がアサートの場合、第２の状態保持回路に第２の外部入力信号の値を設定できるようにしているため、複数の状態出力回路を直列接続した場合に、保持選択信号をアサートにしておき、取り込み信号を周期的にアサートにすることで、直列接続した状態出力回路の第２の状態保持回路が接続されてシフトレジスタとして動作することができ、外部端子を増やすことなく、ＦＰＧＡ内部の複数のフリップフロップの論理状態を出力することができる。さらに、この発明における状態出力回路によれば、状態保持素子に保持する信号を選択するための書き込み選択信号がアサートの場合、第２の状態保持回路から出力される前記第２の内部保持信号を選択し、書き込み選択信号がネゲートの場合、第１の外部入力信号を選択して出力するようにしているため、フィールド・プログラマブル・ゲート・アレイ内部の対象となっている状態保持素子に任意の値を設定することができる。
【図面の簡単な説明】
【図１】  この発明における実施の形態１の状態出力回路の構成を示す回路図である。
【図２】  この発明における実施の形態１の状態出力回路を含むＦＰＧＡ回路の接続を示すブロック図である。
【図３】  この発明における実施の形態１の状態出力回路の動作を説明するためのタイムチャートである。
【図４】  この発明における実施の形態２の状態出力回路の構成を示す回路図である。
【図５】  この発明における実施の形態２の状態出力回路を含むＦＰＧＡ回路の接続を示すブロック図である。
【図６】  この発明における実施の形態２の状態出力回路の動作を説明するためのタイムチャートである。
【図７】  この発明における実施の形態３の状態出力回路の構成を示す回路図である。
【図８】  この発明における実施の形態３の状態出力回路を含むＦＰＧＡ回路の接続を示すブロック図である。
【図９】  この発明における実施の形態３の状態出力回路の動作を説明するためのタイムチャートである。
【図１０】  この発明における実施の形態４のパターン生成装置の入出力を示す概念図である。
【図１１】  この発明における実施の形態４のパターン生成装置の出力を示すタイムチャートである。
【符号の説明】
１，３，３ａ，３ｂ，４，４ａ，４ｂ  状態保持回路、２，２ａ，２ｂ，５ａ，５ｂ，１１，１２，３１，３２  フリップフロップ、７  パターン生成装置、１３，１４，３３，３４，３５，４０  セレクタ、７１  内部状態記憶部、７２入力信号記憶部、７３  シミュレーションパターン。
【図１】
0003717901.tif 000002
【図２】
0003717901.tif 000003
【図３】
0003717901.tif 000004
【図４】
0003717901.tif 000005
【図５】
0003717901.tif 000006
【図６】
0003717901.tif 000007
【図７】
0003717901.tif 000008
【図８】
0003717901.tif 000009
【図９】
0003717901.tif 000010
【図１０】
0003717901.tif 000011
【図１１】
0003717901.tif 000012