(57)【特許請求の範囲】
【請求項１】
半導体装置の内部状態をモニタするモニタ回路を備えた半導体装置と、
前記モニタ回路からの信号を受けるロジック解析端末と、
を備え、
前記モニタ回路は、
前記半導体装置内部の複数の観測対象ノードの複数の観測対象信号を入力し第１選択信号に応じて観測対象信号を選択して出力する第１マルチプレクサと、
複数のクロック信号を入力し第２選択信号に応じてモニタ用のクロック信号を選択して出力する第２マルチプレクサと、
を少なくとも含み、前記第１及び第２マルチプレクサの少なくとも１つは、複数の信号入力のうち少なくとも１つの信号入力の極性変化に対して出力へのグリッチの伝搬を抑止する構成とされたマルチプレクサを含み、
前記ロジック解析端末は、
第２クロック源と、
前記モニタ回路からシリアルに送信された信号を受けパラレル信号に変換するシリアル受信回路と、
前記シリアル受信回路からのパラレル信号を、前記シリアル受信回路からのパラレル書き込み用クロック信号で書き込み、前記第２のクロック源からのクロック信号で読み出す第２バッファ部と、
前記モニタ回路からパラレルに送信された信号の遅延の補正を行う第２遅延補正回路と、
前記モニタ回路の前記第２マルチプレクサで選択されたクロック信号又は前記第２クロック源からのクロック信号を受け、第４選択信号に基づき１方を選択する第４マルチプレクサと、
前記モニタ回路から受信したパラレル観測対象信号を遅延補補正回路で遅延補正し第５のマルチプレクサを介した信号を前記第４マルチプレクサで選択されたクロック信号で書き込み、前記第２のクロック源からのクロック信号で読み出す第３バッファ部と、
前記第２及び第３バッファ部から読み出された信号を記憶する記憶部と、
を含む、ことを特徴とするロジック解析システム。
【請求項２】
前記モニタ回路において、少なくとも、前記観測対象ノードから前記第１マルチプレクサの出力に至る経路は、動作周波数、最大許容遅延に関するタイミング制約なしで配置配線されている、ことを特徴とする請求項１に記載のロジック解析システム。
【請求項３】
前記モニタ回路が、
前記第２マルチプレクサから出力されるクロック信号に同期して試験信号を出力する試験信号発生回路と、
前記試験信号と前記第１マルチプレクサで選択された観測対象信号を入力し第３選択信号に応じて一方を選択して出力する第３マルチプレクサと、
をさらに含む、ことを特徴とする請求項１又は２に記載のロジック解析システム。
【請求項４】
前記モニタ回路が、
前記第１マルチプレクサから出力される前記観測対象信号に対して遅延を補正して出力する第１遅延補正回路と、
前記第１遅延補正回路で遅延が補正された前記観測対象信号を受け、前記第２マルチプレクサで選択されたクロック信号を書込みクロック信号として前記観測対象信号の書き込みを行い、読み出しクロックにしたがって読み出しを行う第１バッファ部と、
前記第１バッファ部から読み出された前記観測対象信号を入力しビット幅及びレート変換を行うビット幅・レート変換部と、
前記ビット幅・レート変換部から出力された前記観測対象信号をシリアル信号に変換して前記半導体装置の出力端子からシリアル出力するシリアル送信回路と、
を備え、
前記第３マルチプレクサで選択出力された信号は、前記半導体装置の出力端子からパラレルに出力される、ことを特徴とする請求項３に記載のロジック解析システム。
【請求項５】
前記半導体装置が、組み合わせ論理回路をさらに備え、
前記観測対象ノードが前記組み合わせ論理回路の出力ノードであり、
前記組み合わせ論理回路の前記出力ノードに至る経路の前記組み合わせ論理回路の複数の入力間のスキューは、前記クロック信号の１周期以内とされている、ことを特徴とする請求項３又は４に記載のロジック解析システム。
【請求項６】
前記ロジック解析端末が、
ホストコンピュータに接続するインターフェース部と、
前記記憶部の内容を読み出し前記ホストコンピュータに送信する読み出し制御回路と、
前記記憶部への信号の書き込み開始・停止制御を行う制御部と、
をさらに含む、ことを特徴とする請求項３乃至５のいずれか１項に記載のロジック解析システム。
【請求項７】
前記ロジック解析端末に接続するホストコンピュータを備え、
前記ホストコンピュータが、
前記ロジック解析端末の前記第２遅延補正回路の遅延補正を制御するにあたり、
前記半導体装置の配置配線後のタイミング解析結果から、前記半導体装置内の前記試験信号発生回路から前記半導体装置の出力端子に至る経路の遅延：Ａと、前記半導体装置内の観測対象ノードから前記半導体装置の出力端子に至る経路の遅延：Ｂを取得して記憶しておき、
前記半導体装置内の前記試験信号発生回路の試験信号をモニタ対象として、前記ロジック解析端末の前記第２遅延補正回路に対して遅延量をゼロに初期化し、
前記半導体装置内の前記試験信号発生回路からの受信データパターンが既知の試験信号パターンに合致するかを判断し、既知の試験信号パターンに合致するまで前記第２遅延補正回路に対して遅延量を可変させ、前記受信データパターンが前記既知の試験信号パターンに合致すると、その時の前記ロジック解析端末の前記第２遅延補正回路に設定された遅延量：Ｃを記憶し、
前記半導体装置内の前記観測対象ノードからの観測対象信号をモニタ対象として、前記遅延量：Ｃに、前記半導体装置内の前記試験信号発生回路から前記半導体装置の出力端子に至る経路の遅延：Ａから、前記半導体装置内の前記観測対象ノードから前記半導体装置の出力端子に至る経路の遅延：Ｂを差し引いた値を足した遅延量：Ａ−Ｂ＋Ｃを、前記ロジック解析端末の前記第２遅延補正回路に対して設定する手段を含む、ことを特徴とする請求項６に記載のロジック解析システム。
【請求項８】
半導体装置に実装され、前記半導体装置の内部状態をモニタするモニタ回路であって、前記半導体装置内部の複数の観測対象ノードの複数の観測対象信号を入力し第１選択信号に応じて観測対象信号を選択して出力する第１マルチプレクサと、複数のクロック信号を入力し第２選択信号に応じてモニタ用のクロック信号を選択して出力する第２マルチプレクサと、を少なくとも含み、前記第１及び第２マルチプレクサの少なくとも１つは、複数の信号入力のうち少なくとも１つの信号入力の極性変化に対して出力へのグリッチの伝搬を抑止する構成とされたマルチプレクサを含むモニタ回路からの信号を受けるロジック解析端末であって、
第２クロック源と、
前記モニタ回路からシリアルに送信された信号を受けパラレル信号に変換するシリアル受信回路と、
前記シリアル受信回路からのパラレル信号を、前記シリアル受信回路からのパラレル書き込み用クロック信号で書き込み、前記第２のクロック源からのクロック信号で読み出す第２バッファ部と、
前記モニタ回路からパラレルに送信された信号の遅延の補正を行う第２遅延補正回路と、
前記モニタ回路の前記第２マルチプレクサで選択されたクロック信号又は前記第２クロック源からのクロック信号を受け、第４選択信号に基づき１方を選択する第４マルチプレクサと、
前記モニタ回路から受信したパラレル観測対象信号を遅延補補正回路で遅延補正し第５のマルチプレクサを介した信号を前記第４マルチプレクサで選択されたクロック信号で書き込み、前記第２のクロック源からのクロック信号で読み出す第３バッファ部と、
前記第２及び第３バッファ部から読み出された信号を記憶する記憶部と、
を含む、ことを特徴とするロジック解析端末。
【請求項９】
半導体装置内部の観測対象ノードの観測対象信号と、試験信号発生回路からの試験信号とを切り替える切り替え回路からの信号を送信する送信端と、前記送信端からの信号の受信端との間に遅延が存在する回路における前記送信端からの前記信号の遅延の補正を、コンピュータを用いて行う方法であって、
前記コンピュータが、前記半導体装置の配置配線後のタイミング解析結果から、前記試験信号発生回路の駆動クロック源から前記送信端に至る経路に関する第１の遅延解析結果：Ａと、前記観測対象ノードの駆動クロック源から前記送信端に至る経路に関する第２の遅延解析結果：Ｂを取得して記憶し、
前記コンピュータが、前記切り替え回路を前記試験信号側に設定し、前記試験信号発生回路から前記試験信号が送信されているときに前記受信端における前記試験信号の受信データパターンを取り込んで既知の試験信号パターンに合致するか判断し、前記受信データパターンが前記既知の試験信号パターンに合致するまで、前記送信端からの前記信号の遅延を補正する遅延補正回路の遅延量を可変させ、受信データパターンが前記既知の試験信号パターンに合致したときの遅延補正値：Ｃを記憶し、
前記コンピュータが、Ａ−Ｂ＋Ｃを、前記観測対象信号の受信に必要な遅延補正値として、前記遅延補正回路に対して設定する、ことを特徴とする遅延補正方法。
【請求項１０】
半導体装置内部の観測対象ノードの観測対象信号と、試験信号発生回路からの試験信号とを切り替える切り替え回路からの信号を送信する送信端と、前記送信端からの信号の受信端との間に遅延が存在する回路における前記送信端からの前記信号の遅延の補正を、コンピュータに実行させるプログラムであって、
前記半導体装置のタイミング解析結果から、前記試験信号発生回路の駆動クロック源から前記送信端に至る経路に関する第１の遅延解析結果：Ａと、前記観測対象ノードの駆動クロック源から前記送信端に至る経路に関する第２の遅延解析結果：Ｂを取得して記憶する処理と、
前記切り替え回路を前記試験信号側に切り替え、前記試験信号発生回路から前記試験信号が送信されているときに前記受信端における前記試験信号の受信データパターンを取り込んで既知の試験信号パターンに合致するか判断し、前記受信データパターンが前記既知の試験信号パターンに合致するまで、前記送信端からの前記信号の遅延を補正する遅延補正回路の遅延量を可変させ、受信データパターンが前記既知の試験信号パターンに合致したときの遅延補正値：Ｃを記憶する処理と、
Ａ−Ｂ＋Ｃを、前記観測対象信号の受信に必要な遅延補正値として、前記遅延補正回路に対して設定する処理と、を含む、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はロジック解析端末及びロジック解析システムと遅延補正方法並びにプログラムに関する。
【背景技術】
【０００２】
ＡＳＩＣ（Application Specific IC; 特定目的向け集積回路）の開発では、個別ブロックをブレッドボード上で組みあげた試験や論理シミュレータ等を利用して設計検証が行われる。例えば特許文献１や特許文献２に開示されているように、ＦＰＧＡ（Field Programmable Gate Array）などのＰＬＤ（Programmable Logic Device; プログラム可能論理素子)が開発されている。ＦＰＧＡは多数のＳＲＡＭ（Static RAM（random Access memory）)構造のＬＵＴ（Look-up Table）と、フリップフロップ(Flip-Flop: ＦＦ)と、それらを相互に接続するインターコネクト(Interconnect)と呼ばれるスイッチ・マトリクスやその他の要素を１チップに集積したＬＳＩ（Large Scale Integrated circuit)である。ＬＵＴの記憶内容とインターコネクトによる内部配線状態を制御することにより、その集積度の範囲内で、所望の論理動作を実現することができる。ＬＵＴやインターコネクトの設定は書き換え可能（programmable）である。すなわち、ＦＰＧＡの論理動作は、何度でも書き換えることができる。ＦＰＧＡは、最終製品に組み込まれることもあるが、ＡＳＩＣとして製造する予定の論理回路の試作等に利用されることも多い。
【０００３】
図１は、ＦＰＧＡの一般的な構成を模式的に示す図である。ＦＰＧＡのチップ１は、各々が不図示のＬＵＴとＦＦを含む複数のロジックエレメント（Logic Element; LE）１０１が規則的にならべられ、ＬＥ１０１同士やＩ／Ｏピン１０３を相互に接続するインターコネクト(interconnect)１０２と呼ばれるスイッチ・マトリクスを備える。なお、乗算器やメモリブロックなどの専用マクロブロックを内蔵する品種もある。ＬＥ１０１はＬＵＴとフリップフロップで構成されている。
【０００４】
図２は、図１のＬＥ１０１の一般的な概略構成を模式的に示す図である。ＬＵＴ１１０は、複数のＳＲＡＭ（Static RAM）セル１１１と、２入力の一方を選択するマルチプレクサ１１２を備えている。複数のＳＲＡＭセル１１１と、複数のマルチプレクサ１１２はアドレスデコーダを構成する。ＬＵＴ１１０の入力ＩＮ［０］〜ＩＮ［２］は、３段にトーナメント方式に接続されたマルチプレクサ１１２の各段の選択信号とされ、３段目のマルチプレクサ１１２の出力がＬＵＴ１１０の出力になっている。
【０００５】
図３は、図２のＬＵＴ１１０の一般的な構造を模式的に示す図である。ＬＵＴは、ＬＵＴマスクと呼ばれる、ＳＲＡＭセル１１１に記憶される内容により、任意の論理函数（真理値表）を実現することができる。ＳＲＡＭセル１１１−１、１１１−２の出力を入力とするマルチプレクサ１１２−１、ＳＲＡＭセル１１１−３、１１１−４の出力を入力とするマルチプレクサ１１２−２、マルチプレクサ１１２−１、１１２−２の出力を入力とするマルチプレクサ１１２−３を備え、入力Ｘはマルチプレクサ１１２−１、１１２−２の選択信号、入力Ｙはマルチプレクサ１１２−３の選択信号とされ、マルチプレクサ１１２−３の出力がＬＵＴ１１０の出力Ｚとされる。図４（Ａ）のＬＵＴ１１０は、２つの入力Ｘ、Ｙを有する、２入力ＬＵＴでＡＮＤ函数（Ｚ＝ＡＮＤ（Ｘ，Ｙ））を実現するＬＵＴマスクの内容を示している。図４（Ｂ）は、図４（Ａ）のＡＮＤ函数の真理値表である。なお、図４（Ａ）は２入力ＬＵＴの例であるが、ＬＵＴの入力数は２、３等に限定されるものではないことは勿論である。１個のＬＵＴでは実現できない複雑な組み合わせ論理回路（組み合わせ回路）は、ＬＵＴの組み合わせ論理出力ＣＯＵＴが隣接する別のＬＵＴの入力にインターコネクトを経由して接続され、従属接続される構成とすることにより実現できる。また、ＬＵＴの入力が‘１’や‘０’に固定接続される構成とすることで、より少ない入力数のＬＵＴを模擬することも可能である。
【０００６】
近時の半導体技術の微細化の進展、集積度の向上に伴い、論理回路の複雑度も増大する傾向にある。このため、汎用モジュールや論理シミュレータによる事前の設計検証だけでは、最初から誤りのない状態に仕上げることは困難、ないし不可能な状況が生じている。現在の論理回路設計では、初期段階では誤りが含まれることを前提とし、ＦＰＧＡなどのＰＬＤ（Programmable Logic Device）素子に試作中の論理回路を書き込み（あるいは「設定」し）、実機試験をしながら誤りを取り除く作業（デバッグ作業）を重ねる方法が主流となっている。
【０００７】
図５に示すように、観測対象回路の内部ノードをＰＬＤのＩ／Ｏピンに引き出し、外部のロジックアナライザ５０により表示させる手法がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第４８７０３０２号明細書
【特許文献２】米国特許第４６４２４８７号明細書
【特許文献３】特開平１１−２９６４０３号公報
【特許文献４】特許第３８６８８３３号公報
【特許文献５】特開２００６−３０８５８４号公報
【非特許文献】
【０００９】
【非特許文献１】"XC3000 Series Technical Information," XAPP 024 (Version 1.0), 1997/11/24, インターネット（URL: http://www.xilinx.com/support/documentation/application_notes/xapp024.pdf）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
以下に関連技術の分析を与える。
【００１１】
図５に示した手法はその簡便さから広く利用されているが、いくつかの問題点がある。
【００１２】
第一の問題点は、ロジックアナライザ５０は大型かつ高価であるため、可用性に難がある、ということである。
【００１３】
第二の問題点は、ＰＬＤ（ＦＰＧＡ２０）においてモニタ用のＩ／Ｏピンを、観測したい内部ノードの数と同じだけ使用することになる、ということである。このため、特にＩ／Ｏピン数の少ないＰＬＤを使用する場合には、本来の要求機能を果たす目的と、内部信号の観測用の目的とでＩ／Ｏピンの取り合いが起こる。ＦＢＧＡ（Fine-line Ball Grid Array)パッケージの普及により２０００本程度のピン数を有するＦＰＧＡも利用可能であるが、観測用信号の引き回しが基板のレイアウトに制限を与え、基板上の外部ロジックアナライザとの接続用のコネクタのサイズが大きくなる。
【００１４】
この問題を部分的に解決するために、例えば図５に示すように、ＦＰＧＡ２０の内部にマルチプレクサ２２を設置し、必要に応じて観測対象ノードを切り替えることが行われている。この手法を用いても、ＦＰＧＡ２０においてモニタ用のＩ／Ｏピンの使用数は、同時に観測すべき内部ノードの数以下にはできない。
【００１５】
第三の問題点は、観測対象信号の信号品質（例えば観測対象信号としての見易さ）と、ＦＰＧＡの配置配線の容易性を両立させることが難しくなる、ということである。
【００１６】
なお、特許文献３には、プログラマブル論理デバイスにロジック（論理）アナライザを埋め込むことにより、トリガ条件（ブレークポイント）の前および後の双方で信号を捕捉することを可能とした構成が開示されている。この構成では、ロジックアナライザ機能をＦＰＧＡ自体に取り込み、ＦＰＧＡのＪＴＡＧ(Joint Test Action Group）ポートを介して外部のホストコンピュータから同機能を制御するようにしている。ホストコンピュータとＦＰＧＡの接続には「Byte Blaster」として公知の安価かつ小型な製品を利用しているため、外部ロジックアナライザを不要とすることができ、安価かつ小型であり、上記第一の問題点（可用性）の面では向上している。また、ＦＰＧＡのＩ／Ｏピンをモニタピンとして確保する必要もないため、第二の問題点も改善しているといえる。さらに、観測対象信号は、クロックエッジに同期して取り込まれるため、ビット間スキューや非同期グリッチが観測対象信号の見易さを損なうこともなく、第三の問題点も一部解決しているといえる。
【００１７】
しかしながら、特許文献３の構成では、観測対象波形を内部に記憶するために、ＦＰＧＡの配置配線資源を大量に使用する、という問題がある。ＦＰＧＡの内部に確保できる記憶容量は限られている。このため、例えば長時間にわたり観測対象波形を観測・記憶することができない。
【００１８】
特許文献４には、ＦＰＧＡ内部の記憶容量に依拠する代わりに、観測対象信号をポッドボックス部に記憶し、ポッドボックスからホストコンピュータに転送する構成が開示されている。
【００１９】
特許文献４では、開発対象ＦＰＧＡからポッドボックス部に観測対象信号を引き出すために、同期化用のフリップフロップ（「レジスタ」）を使用している。これが、高速クロックを使用する大規模ＦＰＧＡの設計では、問題になる。同期化用のフリップフロップを使用することは、観測対象ノードから、該同期化用のフリップフロップに至る経路のタイミング制約を付す、ということであり、モニタ関連経路だけでなく、ＦＰＧＡ全体のタイミング要求を満たすことが困難となる可能性が高くなる。
【００２０】
特許文献５には、データ受信機をそれぞれが有するチャネルでデジタル信号を受信するシステムであって少なくとも２つのチャネルと該２つのチャネルの該データ受信機とを含む少なくとも１つの集まりで動作するシステムにおいて、該集まりについて制約されたサンプリングパラメータ値を選択するための方法が開示されている。特許文献５によれば、モニタデータの安定点をモニタクロックで確定することが、ビット毎には可能であっても、複数ビットが束ねられてバスになったモニタデータで、ビット間スキューが大きい場合には、各ビットの安定点がどのクロックサイクルに属するかを誤る可能性がある。例えば図８では、並列４ビットデータDATA[3]〜[0]の黒丸●を付けた変化点は、モニタクロックの立ち上がりエッジのうち数字「１」を付した白丸○の立ち上がりに属するが、特許文献５の構成では、DATA[2]については、数字「０」を付した立ち上がりに属し、DATA[0]については、数字「２」を付した立ち上がりに属すると判断される可能性がある。
【００２１】
また、特許文献５では、モニタ回路に、タイミング緩和条件を付して配置配線を行うときに、ＦＰＧＡ内部の遅延は、モニタ面（例えばモニタ対象信号の一揃え（集まり）のバス）ごとに大きくばらつく。このため、仮に試験信号にモニタ面を切り替えてデータの取り込み位相を調整しても、その後、観測対象ノードを含むモニタ面に切り替えた時点で、ＦＰＧＡ内部での遅延量がずれると（特に１サイクル以上変化すると）、正しいデータ取り込み位相からずれる、という問題がある。
【００２２】
したがって、本発明は、上記問題点に鑑みてなされたもので、その目的は、観測対象信号の観測を容易化するロジック解析システムを提供することにある。
【課題を解決するための手段】
【００２３】
本発明の１つの側面によれば、半導体装置に実装され、前記半導体装置の内部状態をモニタするモニタ回路であって、前記半導体装置内部の複数の観測対象ノードの複数の観測対象信号を入力し第１選択信号に応じて観測対象信号を選択して出力する第１マルチプレクサと、複数のクロック信号を入力し第２選択信号に応じてモニタ用のクロック信号を選択して出力する第２マルチプレクサと、を少なくとも含み、前記第１及び第２マルチプレクサの少なくとも１つは、複数の信号入力のうち少なくとも１つの信号入力の極性変化に対して出力へのグリッチの伝搬を抑止する構成とされたマルチプレクサを含むモニタ回路と、
前記モニタ回路からの信号を受けるロジック解析端末であって、
第２クロック源と、
前記モニタ回路からシリアルに送信された信号を受けパラレル信号に変換するシリアル受信回路と、
前記シリアル受信回路からのパラレル信号を、前記シリアル受信回路からのパラレルクロック信号で書き込み、前記第２のクロック源からのクロック信号で読み出す第２バッファ部と、
前記モニタ回路からパラレルに送信された信号の遅延の補正を行う第２遅延補正回路と、
前記モニタ回路の前記第２マルチプレクサで選択されたクロック信号又は前記第２クロック源からのクロック信号を受け、第４選択信号に基づき１方を選択する第４マルチプレクサと、
前記モニタ回路から受信した観測対象信号を前記第４マルチプレクサで選択されたクロック信号で書き込み、前記第２のクロック源からのクロック信号で読み出す第３バッファ部と、
前記第２及び第３バッファ部から読み出された信号を記憶する記憶部と、を含むロジック解析端末を備えたロジック解析システムが提供される。
【００２４】
本発明の他の側面によれば、半導体装置内部の観測対象ノードの観測対象信号と、試験信号発生回路からの試験信号とを切り替えて送信する送信端と、前記送信端からの信号の受信端との間に遅延が存在する回路における遅延の補正を、コンピュータを用いて行う方法であって、
前記試験信号発生回路の駆動クロック源から、前記送信端に至る経路の配置配線結果のタイミング解析より第１の遅延解析結果：Ａを取得し、
前記観測対象ノードの駆動クロック源から送信端に至る経路の配置配線結果のタイミング解析より第２の遅延解析結果：Ｂを取得し、
前記試験信号が送信されているときに前記受信端において前記試験信号が正常に受信できた時の遅延補正値：Ｃを取得し、Ａ−Ｂ＋Ｃにより、前記観測対象信号を、正常に受信するのに必要な遅延補正値を求める遅延補正方法が提供される。
【００２５】
本発明の他の側面によれば、半導体装置内部の観測対象ノードの観測対象信号と、試験信号発生回路からの試験信号とを切り替えて送信する送信端と、前記送信端からの信号の受信端と、の間に未知の遅延が存在する回路における遅延の補正をコンピュータに実行させるプログラムであって、
前記試験信号発生回路の駆動クロック源から、前記送信端に至る経路の配置配線結果のタイミング解析より第１の遅延解析結果：Ａを取得する処理と、
前記観測対象ノードの駆動クロック源から送信端に至る経路の配置配線結果のタイミング解析より第２の遅延解析結果：Ｂを取得する処理と、
前記試験信号が送信されているときに前記受信端において前記試験信号が正常に受信できた時の遅延補正値：Ｃを取得し、Ａ−Ｂ＋Ｃにより、前記観測対象信号を、正常に受信するのに必要な遅延補正値を求める処理と、を含む、プログラムが提供される。本発明によれば、該プログラムを記録したコンピュータ読み出し可能な記録媒体（例えば半導体メモリや磁気／光ディスク等媒体等）が提供される。
【発明の効果】
【００２６】
本発明によれば、観測対象信号の観測を容易化することができる。
【図面の簡単な説明】
【００２７】
【図１】関連技術を説明する図である。
【図２】図１のＬＥを説明する図である。
【図３】図２のＬＵＴを説明する図である。
【図４】（Ａ）は図２のＬＵＴを説明する図、（Ｂ）は真理値表である。
【図５】（Ａ）は関連技術を説明する図、（Ｂ）は（Ａ）における遅延を説明する図である。
【図６】（Ａ）は配置配線例を説明する図、（Ｂ）は（Ａ）のタイミングを説明する図である。
【図７】（Ａ）は配置配線例を説明する図、（Ｂ）は（Ａ）のタイミングを説明する図である。
【図８】ビット間スキューを説明する図である。
【図９】（Ａ）はＤＮＦ形式の２入力ＭＵＸを論理回路に置き換えた例配置配線例を説明する図、（Ｂ）は（Ａ）の信号波形を模式的に例示する図である。
【図１０】（Ａ）はＡＮＦ形式の２入力ＭＵＸを論理回路に置き換えた例配置配線例を説明する図、（Ｂ）は（Ａ）の信号波形を模式的に例示する図である。
【図１１】（Ａ）は２段パイプライン構成のモニタ回路を説明する図、（Ｂ）は（Ａ）における遅延を説明する図である。
【図１２】図１１の動作を説明するタイミング図である。
【図１３】本発明の一実施形態の構成を説明する図である。
【図１４】本発明の一実施形態におけるビット変換の例を説明する図である。
【図１５】本発明の一実施形態におけるビット変換の別の例を説明する図である。
【図１６】本発明の一実施形態の構成を説明する図である。
【図１７】（Ａ）は３入力ＬＵＴで構成した２入力ＭＵＸの構成、（Ｂ）は真理値表、（Ｃ）は信号波形、（Ｄ）、（Ｅ）は（Ｃ）の波形を拡大した図である。
【図１８】（Ａ）は本発明の一実施形態におけるタイミング制約を説明する図、（Ｂ）は信号波形を模式的に例示する図である。
【図１９】本発明の一実施形態における試験信号発生回路の出力を説明する図である。
【図２０】（Ａ）と（Ｂ）は本発明の一実施形態におけるＦＰＧＡ内の遅延を説明する図である。
【図２１】本発明の一実施形態における遅延補正の例を説明する図である。
【図２２】（Ａ）と（Ｂ）は本発明の一実施形態のパラレルモニタ回路において試験信号出力時の遅延を説明する図である。
【図２３】（Ａ）と（Ｂ）は本発明の一実施形態のパラレルモニタ回路において観測対象信号出力時の遅延を説明する図である。
【図２４】本発明の一実施形態におけるパラレルモニタの遅延測定を説明する図である。
【図２５】本発明の一実施形態における遅延補正量の計算手順を説明する流れ図（その１）である。
【図２６】本発明の一実施形態における遅延補正量の計算手順を説明する流れ図（その２）である。
【発明を実施するための形態】
【００２８】
以下では、はじめに、発明の前提として、本発明者による分析に基づき、前述した第三の問題点について説明し、つづいて発明の概要、実施形態について説明する。
【００２９】
観測対象信号の動作クロックスピードの高速化、ＦＰＧＡの集積度の向上にしたがって、観測対象信号の信号品質（観測対象信号としての見易さ）とＦＰＧＡの配置配線の容易性を両立することが難しくなる。先ず、ＦＰＧＡの代表的な開発工程について説明する。該開発工程は、例えば以下の（１）から（６）の工程の繰り返しとなる。
【００３０】
（１）ＶＨＤＬ（VHSIC(Very High-Speed Integrated Circuit) Hard-ware Description Language）やＶｅｒｉｌｏｇなどのハードウェア記述言語（HDL）により希望する論理動作を記述したソースコードを作成する。
【００３１】
（２）別途、論理回路のタイミング制約やその他の回路生成条件を定義する。
【００３２】
（３）上記ソースコードを論理合成ソフトウェアにより、ハードウェア記述言語よりも低位のゲートレベルのネットリストに変換する。
【００３３】
（４）上記論理合成結果を配置配線ソフトウェアにより、合成された論理回路をＦＰＧＡチップ上に散在するＬＵＴやインターコネクトに割り当て、ＦＰＧＡチップの設定内容（コンフィギュレーションデータ）に変換する。
【００３４】
（５）配置配線結果をタイミング解析ソフトウェアにより検証し、（２）で与えたタイミング制約を満たしているかどうかを確認する。満たしていない場合には、（４）の工程を繰り返す。この際、前回とは異なる初期の配置状態から開始することにより、前回とは異なる配置配線結果（ひいては異なるタイミング解析結果）が得られる。
【００３５】
（６）タイミング解析の結果、配置配線結果がタイミング制約を満たしていることが確認できたならば、実機試験を行い、論理回路に誤りがないかを確認する。誤りがあれば、（１）の論理動作の設計からやり直すことになる。
【００３６】
なお、上記（２）で与えたタイミング制約やその他の回路生成条件は、上記（５）のタイミング解析だけでなく、上記（３）の論理合成や上記（４）の配置配線の工程でのソフトウェアの挙動に影響を与える。
【００３７】
ここで、タイミング制約には、大別して、
（Ａ）論理回路が満たすべき最低動作周波数あるいは許容可能な最大遅延といった論理回路の要求諸元を定める系統（狭義の「タイミング制約」）のものと、
（Ｂ）論理回路のうち最低動作周波数などの定めがなく、タイミング解析を行わなくても良い部分（多少、動作速度が遅くても、構わない、つながってさえいれば、正しく動作すると期待される回路）を、緩和条件として定める系統（「緩和系統のタイミング制約」）のものがある。
【００３８】
（Ａ）のタイミング制約は、動作周波数や最大許容遅延などのパラメータとして与えることになる。
【００３９】
（Ｂ）は、フォルスパス（false path：タイミング解析中に無視できるパス）指定やマルチサイクル(multi cycle)指定として、パスごとに規定される。例えばマルチサイクル制約が指定された場合、セットアップまたはホールド検証の厳しさが、指定クロック・サイクル数だけ緩和される。 
【００４０】
（Ａ）、（Ｂ）いずれのタイミング制約も、例えばシノプシスインコーポレーテッド社のＳＤＣ(Synopsis Design Constraints) 形式など公知の記述言語により規定することができる。
【００４１】
原則として、すべての回路は、（Ａ）か（Ｂ）のいずれかの系統の制約を付加されることになる。以後、単純にタイミング制約という場合、（Ａ）のタイミング制約を指すものとする。
【００４２】
タイミング制約が与えられた回路は、与えられた条件を満たすべく、上記（３）の論理合成の工程で高速な動作を実現しやすい構成に合成される。また、上記（４）の配置配線の工程でも、タイミング制約を付された回路は、要求されたタイミングを満足すべく、その他の回路よりも優先的な扱いを受ける。
【００４３】
逆に、緩和系統のタイミング制約を付された回路は、上記（３）の論理合成の工程では、タイミング性能を考慮しなくても良いため、速度以外の点で最適化され、回路面積（例えばＬＥ使用数）や消費電力が低くなる構成に合成されることが多い。
【００４４】
また、緩和系統のタイミング制約を付された回路は、上記（４）の配置配線の工程では、よりタイミング要求の厳しい回路に優先度を譲ることになるので、多くの場合、タイミング性能は、タイミング制約付きの回路よりも、大幅に悪化する結果となる。もともと、緩和系のタイミング制約は、タイミング要求のない、あるいは、緩い回路に適用することが前提である。このため、仮に、タイミング性能が悪化しても、本来は、問題ないのであるが、モニタ回路に適用する場合には、事情が異なる。より詳しくは、後述する。
【００４５】
なお、ＦＰＧＡに集積されたＬＵＴやインターコネクトなどの資源の使用率が高い場合や、クロック周波数が高い場合には、上記（４）〜（５）の工程を、１回だけ実行してもタイミング制約を満足する配置配線結果とならない。このため、初期配置を変えながら、上記（４）〜（５）の工程を複数回繰り返す必要がしばしば生じる。初期配置をわずかに変えるだけで、最終的なタイミング解析結果が異なってくる。このため、例えば、初期配置をわずかに変えながら配置配線の試行を多数回実行することにより、タイミング制約を満たす結果が現れる。ここで、タイミング要求を満たすことが難しい事例として、以下に一具体例を挙げる。
【００４６】
使用ＦＰＧＡ品種の集積ロジックエレメント相当数：７００，０００、
ＦＰＧＡに実装する論理回路の動作クロック周波数：２５０ＭＨｚ（Mega Herz）、
ＦＰＧＡに実装する論理回路のロジックエレメント使用比率：９０％。
【００４７】
動作クロック周波数２５０ＭＨｚの実現は、ロジックエレメントＬＥの使用比率が低いうちは、配置配線の自由度が高いために、比較的、容易であることが多い。しかし、例えばロジックエレメントＬＥの全使用可能数の９０％を使用するような使用率が高い状況では、配置配線の自由度が大幅に低下する。このため、一般に、数回程度の配置配線の試行によりタイミングを満足することはほとんどあり得ない。すなわち、タイミング要求を満足するために要する配置配線の試行回数が増加する。例えば配置配線の試行を１００回程度繰り返さなければタイミング制約を満足する配置配線結果にならないことがある。これには、高性能なコンピュータのマシンタイムを、例えば数日間にわたり必要とする計算量となることもある。このため、開発コストに占める大きな要因となり得る。
【００４８】
モニタ信号にもタイミング制約を付すことは、配置配線の難易度を、さらに上昇させることになる。これは、以下の理由による。
【００４９】
（ａ）観測対象回路とモニタデータピン（図５参照）がＦＰＧＡチップ上で離れていることが多く、タイミング制約を与えても、該制約を満足することが事実上不可能なことが多い。
【００５０】
（ｂ）観測対象回路が多数あり、モニタデータピンの数を抑えるために、モニタする信号を選択するマルチプレクサ（例えば図５の２２）により、多数のモニタ信号を入力して所定数のモニタ信号を選択する場合、マルチプレクサ（例えば図５の２２）による遅延が大きくなり、タイミング制約を与えても、実際にその条件を満足することは不可能なことが多い。
【００５１】
（ｃ）上記（４）の工程において、モニタ回路のタイミング制約条件を満たすべく、モニタ回路が優先的に配置配線されるために、モニタ回路の観測対象となっている回路が、モニタ回路に無理に引き寄せられたり、非観測対象の回路が、モニタ回路に対して、劣後的扱いを受ける場合があり、その配置配線に影響する。
【００５２】
（ｄ）場合によっては、観測対象回路そのものがモニタデータピンに近い場所に配置されたことにより、本来の要求機能を実現するために必要な回路との配置距離が離れてしまい、タイミング制約を満たせなくなる、こともある。
【００５３】
ここで、モニタ回路に、タイミング緩和条件を付加しない場合には、モニタ回路自体のタイミングを満足することができないだけではなく、チップ本来の要求機能を実現するために必要な回路のタイミング制約の満足も困難となることも起こり得る。
【００５４】
図６は、無理なタイミング制約によりタイミング要求を満たせなくなる配置配線例を説明する図である。図６（Ａ）において、信号配線のうち太線（実線）は、タイミング制約のある配線を表している。図６（Ａ）では、一般的な回路記号を用いているが、図面上でこれらの回路記号の相対距離が、ＦＰＧＡチップ上で配置配線される資源の相対距離を表現しているものとする。
【００５５】
図６（Ａ）では、フリップフロップ１２０−１（ＦＦ１）の出力端子（Ｑ）からの出力信号（ＦＦ１出力）とフリップフロップ１２０−２（ＦＦ２）の出力端子（Ｑ）からの出力信号（ＦＦ２出力）の論理積をとるＡＮＤゲート１２３の出力ノードが観測対象ノードとなっている。このように論理回路の出力をロジックアナライザ（不図示）のトリガー条件（モニタ波形を取得する契機）とする場合が少なくない。ここで、フリップフロップ１２０―１、フリップフロップ１２０−２の出力からモニタピン（モニタデータピン）１２５の出力まですべてをタイミング制約の対象としている。
【００５６】
フリップフロップ１２０―１と１２０−２は、観測対象ノードとのタイミング制約が要求されている。このため、いずれも、タイミング制約を満たすために、ＡＮＤゲート１２３に近いところに配置されている。一方で、フリップフロップ１２０―１と１２０−２は、本来の要求機能を実現するために、それぞれの出力（ＦＦ１出力、ＦＦ２出力）は、次段のフリップフロップ１２０―３（ＦＦ３）とフリップフロップ１２０―４（ＦＦ４）にも接続される必要があり、それぞれの経路にもタイミング制約が付されている。フリップフロップ１２０―３と１２０―４は、さらにその先の回路との間でタイミング要求を満たす必要があり、該その先の回路に近い場所に配置されている。フリップフロップ１２０―１と１２０−２が観測対象ノードに「引きずられた」ために、フリップフロップ１２０―１と１２０−２と、フリップフロップ１２０―３と１２０―４とが離れてしまい、無理のある配置となっている。
【００５７】
図６（Ｂ）は、図６（Ａ）の回路の動作例を示すタイミング図である。フリップフロップ１２０−２の出力である「ＦＦ２出力」からフリップフロップ１２０−４の入力である「ＦＦ４入力」までの遅延が１クロックサイクルを超え、タイミング違反を発生させている。
【００５８】
以上の理由で、モニタ回路には、緩和系の制約条件を付加せざるを得ない。このため、モニタ信号に関する論理回路（図６（Ａ）のＡＮＤゲート１２３）は、緩和条件（「成り行き」の、タイミング制約がある回路にくらべ、劣後的条件での）での配置配線結果となり、観測可能なモニタ波形の品質が劣化することになる。
【００５９】
以下、図７を参照して説明する。図７（Ａ）は、モニタ回路にタイミング緩和条件を付して配置配線した例を説明する図である。図７（Ａ）には、フリップフロップ１２０―１と１２０−２からＡＮＤゲート１２３までの経路に、タイミング緩和条件を付して、配置配線を行った例が模式的に示されている。なお、図７（Ａ）において、信号配線の太実線は、タイミング制約のある配線を表している。フリップフロップ１２０―１と１２０−２から本来の要求機能を実現するために必要な次段のフリップフロップ１２０―３と１２０−４への配線は無理なく行われている。ＡＮＤゲート１２３への配線は、タイミング制約が緩和された条件で配置配線されることにより、フリップフロップ１２０−２の出力（ＦＦ２出力）からＡＮＤゲート１２３の入力（ＡＮＤ入力２）への配線距離は、図６（Ａ）の当該配線距離と比較して長く伸びている。
【００６０】
この結果、図７（Ｂ）に示すように、フリップフロップ１２０−２の出力（ＦＦ２出力）は、ＡＮＤゲート１２３の入力時点（ＡＮＤ２入力）で、ＡＮＤ入力１との遅延が１クロックサイクル以上ずれている。この結果、本来は、‘１’を出力すべきタイミングで、ＡＮＤゲート１２３の出力が‘０’のままである。
【００６１】
以上は、観測対象信号が１ビットの場合であるが、観測対象信号が複数の信号を束ねたバスとなっている場合には、ビット間のタイミングスキュー（以下「スキュー」という）が大きな問題になる。ビット間のスキューの問題について、再び、図５を参照して説明する。図５（Ｂ）は、図５（Ａ）における配置配線遅延を示している。
【００６２】
モニタデータ経路にかかわる配置配線遅延は、
・クロック源１１から、出力が観測対象ノードに接続するフリップフロップ２１までの遅延Dclk_tgt、
・観測対象フリップフロップ２１の出力、又は、場合により、その先で組み合わせ論理を通過した後の観測対象ノードからモニタデータマルチプレクサ２２までの遅延Dtgt_dmux、
・モニタデータマルチプレクサ２２からモニタデータピン２３までの遅延Ddmux_mpin、
となっている。
【００６３】
なお、特に添え字を付さないが、上記の各遅延は、観測対象回路からモニタデータマルチプレクサ２２までは、モニタデータピン２３の数とモニタデータマルチプレクサ２２で選択される信号の積だけ個別に存在しており、モニタデータマルチプレクサ２２から先の遅延に関してモニタデータピン２３の数だけ、それぞれ個別に存在することになる。
【００６４】
一方、ロジックアナライザ５０でモニタデータマルチプレクサ２２のサンプリングポイントを確定させる目的で使用するモニタクロック信号にかかわる配置配線遅延は、
・クロック源１１からモニタクロックピン２４に至る遅延Dclk_cpin
となっている。
【００６５】
なお、モニタクロックについても途中に、モニタクロックマルチプレクサ（例えば後の説明で参照される図１３の２０７）が挿入されることがある。この場合、モニタクロックマルチプレクサで選択対象となる複数のクロック源からモニタクロックマルチプレクサ（図１３の２０７）までの遅延は個別に存在することになる。
【００６６】
図８は、ビット間スキューが観測上の問題になる例を説明する図である。図８に示す波形は、並列4ビットの信号DATA[3:0]を外部にバス信号として引き出した例である。図８では、ビット間のスキューが１クロック周期以上になっている。このような信号を４ビットまとめてDATA[3:0]として表示すると、図８に示すように、同じクロックエッジに属する信号の静定箇所がなくなる。この結果、モニタクロックがいかなる位相であったとしても、並列４ビットDATA[3:0]として同期して取り込むことはできない。このため、観測信号としては使えない。このような場合には、モニタクロックにより、バス信号DATA[3:0]を同期化して観測することはあきらめて、例えばロジックアナライザの自走クロックで非同期に取り込みを行うことになる。この場合、バス信号DATA[3:0]に残るスキューは、そのままロジックアナライザに表示される。このため、デバッグを実行する担当者は、DATA[3:0]のビット毎の変化点がどのクロックエッジに属する変化点であるかを、推測しなくてはならない。ＦＰＧＡの動作速度が低い場合には、ビット間のスキューが１クロック周期以下になることが多い。ＦＰＧＡ内部の動作速度が向上する中で、ビット間のスキューは問題となっている。
【００６７】
また、組み合わせ論理回路では、グリッチ(glitch)と呼ばれる細いひげ状の波形が発生することがある。モニタ回路に用いられるマルチプレクサも、論理回路の一種であり、構成次第ではグリッチが発生する可能性がある。グリッチの発生により被観測信号の信号品質が低下する。この問題について説明する。
【００６８】
ＶＨＤＬやＶｅｒｉｌｏｇ  ＨＤＬといったハードウェア記述言語では、抽象度の高い（高級な）記述が可能であり、通常、マルチプレクサ程度の論理はマルチプレクサの入力と同数程度の行数での記述で済ませることが多い。このため、マルチプレクサが最終的にどのような論理回路として実装されるかが不明であることにある。同期式設計では、グリッチが発生しても、クロックで信号を確定するタイミングで、信号が静定していれば良いという仮定が置かれる。このため、仮にマルチプレクサに何らかのタイミング制約を加えたとしても、論理合成ソフトウェアがグリッチを発生させる回路形式に合成する可能性は否定できない。なお、仮に、基本論理ゲート程度の演算子のみを用いて抽象度の低い記述を行ったとしても、通常、論理合成ソフトウェアは、チップ面積又は動作速度(入力から出力までの遅延)を最小化することを目標として論理式の最適化（論理圧縮）を実行する。このため、特別の配慮をしない限り、抽象度の高い記述を行った場合と同等の論理合成結果となることが予想される。
【００６９】
グリッチが発生する具体例を説明する。単に説明の容易化のため、２入力ＬＵＴで個々の論理ゲートを実現し、それらを組み合わせて２入力マルチプレクサを構成する例で説明する。ここでは、論理ゲートは、それ自体では、グリッチを発生させないものとする。
【００７０】
表１は、マルチプレクサの中でも最も基本的な２入力形マルチプレクサの真理値表を示している。
【００７１】
【表１】
0006446937.tif 000002
【００７２】
選択入力Ｓが０であるとき出力ＺにはＸ入力と同じ極性が出力され、選択入力Ｓが１であるとき出力ＺにはＹ入力と同じ極性が出力される。この真理値表に対応する代表的な標準形式によるブール代数表現としては以下の論理式が挙げられる。
【００７３】
DNF : (S and Y) or ( not S and X)
【００７４】
CNF : ( not S or Y) and (S or X)
【００７５】
ANF : (S and X) xor (S and Y) xor X
【００７６】
NOR : ( not S nor Y) nor (S nor X)
【００７７】
NAND : (S nand Y) nand ( not S nand X)
【００７８】
AND :  not (S and  not Y) and  not ( not S and  not X)
【００７９】
OR : not ( not S or  not Y) or  not (S or  not X)
【００８０】
DNF : Disjunctive Normal Form： 加法標準形、
CNF : Conjunctive Normal Form： 乗法標準形、
ANF : Algebraic Normal Form 又はReed-Muller標準形、
【００８１】
ここでは、２入力マルチプレクサをＤＮＦ形式とＡＮＦ形式でブール代数表現した論理式を論理回路に置き換える。  
【００８２】
図９（Ａ）はＤＮＦ形式を論理回路に置き換えた回路形式を示す図である。２入力ＬＵＴ１３１−１、１３１−２はＡＮＤ演算回路、２入力ＬＵＴ１３２はＯＲ演算回路である。図９（Ｂ）は、図９（Ａ）において、S=1(Y入力選択中)のCLK、X、Y、S、X'、Y'、S&X'、！S&Y'、（S&X'）or (！S&Y')の波形を模式的に示す図である。
【００８３】
図９（Ａ）から分かるように、ＤＮＦ形式ではＸ入力やＹ入力がＳ入力とともにＡＮＤゲートに入力された結果がＯＲゲートに入力されるため、非選択中の入力はＡＮＤゲートで遮断される。このため、仮に、ＡＮＤ／ＯＲゲートを実現する２入力ＬＵＴ自体が発生し得るグリッチを考慮したとしても、Ｓ入力の極性が一定であれば、グリッチは発生しないという特徴を持つ。
【００８４】
Ｓ入力が変化する瞬間にはグリッチが発生する可能性がある。グリッチを避けるためには、Ｘ入力とＹ入力の値（極性）が一定である期間（瞬間）に、Ｓ入力を変化させる必要がある。モニタデータマルチプレクサとしての応用を考えるならば、興味の対象となる波形を観測中に、モニタ面を切り替えることはない（Ｓ入力を切り替えることはない）。このため、グリッッチの問題は無視しても良いことになる。
【００８５】
一方、図１０（Ａ）は、ＡＮＦ形式を論理回路に置き換えた論理回路を示す図である。２入力ＬＵＴ１３１−１、１３１−２はＡＮＤ演算回路、２入力ＬＵＴ１３３−１、１３３−２はＸＯＲ演算回路である。図１０（Ｂ）は、図１０（Ａ）において、S=1(Y入力選択中)のCLK、X、Y、S、X'、S&X'、S&Y、（S&X'）xor (S&Y)、（S&X'）xor (S&Y) xor Xの波形を示す図である。このように、ＡＮＦ形式の論理回路では、たとえＳ入力が一定に保たれていても、論理回路中の遅延により、グリッチが発生し得る。このようなマルチプレクサでモニタ面を切り替えようとすると、観測中の興味の対象ではない、他の観測対象回路からの波形により、グリッチが発生し得る。この結果、観測波形の品質の劣化につながる可能性がある。
【００８６】
このように、観測対象となる信号の数がある程度以上になると、モニタ回路自体のタイミングやその他の回路のタイミング収束が困難となる。モニタ回路のタイミングを緩和する制約を付すと、モニタ波形の品質を保証できなくなる。
【００８７】
観測対象ノードからモニタデータピンに至るまでの途中経路に同期化用のフリップフロップを挿入するという、一般的な技術が用いられる。これは、パイプライン化の技法として周知である。パイプライン化すると、モニタ波形の遅延やビット間スキュー(バス信号を観測する場合)が許容範囲以上になる前に、中間地点に挿入されたフリップフロップ（パイプライン段）により、ＦＦが駆動されるクロックエッジにデータ変化点が揃えられる。また、グリッチもパイプライン段により取り除くことができる（「リタイミング効果」等とも呼ばれる）。
【００８８】
図１１（Ａ）は、図５（Ａ）のモニタ回路に、２段のパイプライン化を施した例を模式的に示す図である。図１１（Ａ）において、フリップフロップ２１−３、２１−４はパイプライン１段目、モニタデータマルチプレクサ２２の後段のフリップフロップ２１−５はパイプライン２段目である。図１１（Ｂ）において、
（１）は、観測対象回路からパイプライン１段目までのデータ経路の遅延（Dclk_tgt＋Dtgt_pl1）、
（２）は、クロック源２５からパイプライン１段目までのクロック経路の遅延（Dclk_pl1）、
（３）のDpl1-pl2は、パイプライン１段目からパイプライン２段目までのデータ経路の遅延、
（４）は、クロック源２５からパイプライン２段目までのクロック経路の遅延（Dclk_pl2）、
（５）のDpl2-mpinは、パイプライン２段目からモニタデータピン２３の出力（コネクタ端）までのデータ経路の遅延、
（６）は、クロック源２５からモニタクロックピン２４の出力（コネクタ端）までのクロック経路の遅延(Dclk-cpin)である。
【００８９】
図１１（Ａ）の観測対象回路から１段目のパイプラインまでの遅延について考えると、データ経路の遅延は、図１１（Ｂ）の（１）に示すように、
・クロック源２５から観測対象回路のフリップフロップ２１−１（２１−２）までの遅延Dclk_tgtと、
・観測対象回路のフリップフロップ２１−１（２１−２）からパイプライン１段目のフリップフロップ２１−３（２１−４）までの遅延Dtgt_pl1
の和：
Dclk_tgt＋Dtgt_pl1
となる。
【００９０】
クロック経路の遅延は、図１１（Ｂ）の（２）に示すように、
・クロック源２５からパイプライン１段目のフリップフロップ２１−３（２１−４）までの遅延Dclk_pl1となる。
【００９１】
ここで、データ経路の遅延：Dclk_tgt＋Dtgt_pl1が、クロック経路の遅延：Dclk_pl1以下になると、パイプライン１段目のフリップフロップ（ＦＦ）２１−３（２１−４）のホールドタイム違反となる。また、データ経路の遅延がクロック経路の遅延よりも１ＣＬＫ周期以上になると、パイプライン１段目のフリップフロップ（ＦＦ）２１−３、２１−４のセットアップタイム違反となる。
【００９２】
0 ＜ Dclk_tgt + Dtgt_pl1 - Dclk_pl1 ＜ (1クロック周期)
が成り立つ限り、パイプライン１段目のフリップフロップ（ＦＦ）２１−３、２１−４の出力では、リタイミングができることになる。  
【００９３】
パイプライン１段目のフリップフロップ（ＦＦ）２１−３、２１−４から２段目のフリップフロップ（ＦＦ）２１−５までの経路と、２段目のフリップフロップ（ＦＦ）２１−５からモニタクロックピン２４までの経路についても同様の条件でリタイミングができることになる。
【００９４】
図１２は、図１１のパイプライン化によるリタイミングの効果を模式的に示す図である。このように、パイプライン段数を増やして、観測対象回路（出発地点）からモニタピン（目的地点）までの段数を細かく区切るほど、1クロック周期以上の遅延やビット間スキューが発生する前に、リタイミングによりそれらを吸収・平準化することが可能となる。
【００９５】
しかしながら、パイプライン化には、段数を増やせば増やすほど、多数のフリップフロップが必要になる。開発対象のＦＰＧＡにはパイプライン化に必要なフリップフロップの余りが殆ど無い状態に達している場合、パイプライン化を行うと、フリップフロップを消費して配置配線の自由度が小さくなる。さらに、パイプライン化はタイミング制約を満足することを容易化するが、タイミング緩和条件を付して配置配線する場合ほどには、配置配線の自由度が上がらない場合もある。
【００９６】
＜発明の概要＞
前述した第一〜第三の問題点の少なくとも１つを解決する発明の概要を以下に説明する。
【００９７】
本発明の一形態によれば、半導体装置（例えばＦＰＧＡ）に実装され、前記半導体装置の内部状態をモニタするモニタ回路であって、前記半導体装置内部の複数の観測対象ノードの複数の観測対象信号を入力し第１選択信号に応じて観測対象信号を選択して出力する第１マルチプレクサ（モニタデータマルチプレクサ：図１３の２０５、２０６）と、複数のクロック信号を入力し第２選択信号に応じてモニタ用のクロック信号を選択して出力する第２マルチプレクサ（モニタクロックマルチプレクサ：図１３の２０７）と、を少なくとも含み、前記第１及び第２マルチプレクサの少なくとも１つは、例えば複数の入力信号のうち選択されていない入力信号の極性変化等、複数の入力信号のうち少なくとも１つの入力信号の極性変化に対して出力へのグリッチの伝搬を抑止する構成とされたマルチプレクサを含む。少なくとも、前記観測対象ノードから前記第１マルチプレクサの出力に至る経路は、タイミング制約に関して緩和条件を付して配置配線された構成としてもよい。
【００９８】
本発明の一形態によれば、半導体装置のモニタ回路は、前記第２マルチプレクサから出力されるクロック信号に同期して試験信号を出力する試験信号発生回路（図１３の２０９）と、前記試験信号と前記第１マルチプレクサで選択された観測対象信号を入力し第３選択信号に応じて一方を選択して出力する第３マルチプレクサ（図１３の２０８）と、をさらに含む構成としてもよい。
【００９９】
本発明の一形態によれば、前記半導体装置が、組み合わせ論理回路をさらに備え、前記観測対象ノードが前記組み合わせ論理回路の出力ノードであり、前記組み合わせ論理回路の出力に至る経路の信号間のスキューは、前記観測対象信号の１周期以内とする構成としてもよい。
【０１００】
本発明の一形態によれば、半導体装置のモニタ回路は、前記第１マルチプレクサ（図１３の２０６）から出力される前記観測対象信号に対して遅延を補正して出力する第１遅延補正回路（図１３の２１１、２１２）と、前記第１遅延補正回路で遅延が補正された前記観測対象信号を受け、前記第２マルチプレクサ（図１３の２０７）で選択されたクロック信号を書き込みクロック信号として前記観測対象信号の書き込みを行い、読み出しクロックにしたがって読み出しを行う第１バッファ部（図１３の２１６）と、前記第１バッファ部から読み出された前記観測対象信号を入力しビット幅及びレート変換を行うビット幅・レート変換部（図１２の２１４）と、前記ビット幅・レート変換部から出力された前記観測対象信号をシリアル信号に変換して前記半導体装置の出力端子（図１３の２２１）からシリアル出力するシリアル送信回路（図１３の２１５）と、を備えた構成としてもよい。前記第３マルチプレクサ（図１３の２０８）で選択出力された信号は、前記半導体装置の出力端子（図１３の２２０）からパラレルに出力される構成としてもよい。
【０１０１】
本発明の一形態によれば、モニタ回路からの信号を受けるロジック解析端末（図１６の３０）であって、第２クロック源（図１６の３１３）と、前記モニタ回路からシリアルに送信された信号を受けパラレル信号に変換するシリアル受信回路（図１６の３０７）と、前記シリアル受信回路からのパラレル信号を、前記シリアル受信回路からのパラレルクロック信号で書き込み、前記第２のクロック源からのクロック信号で読み出す第２バッファ部（図１６の３１１）と、前記モニタ回路からパラレルに送信された信号の遅延の補正を行う第２遅延補正回路（図１６の３０６、３０８）と、前記モニタ回路の前記第２マルチプレクサで選択されたクロック信号又は前記第２クロック源（３１３）からのクロック信号を受け、第４選択信号に基づき１方を選択する第４マルチプレクサ（図１６の３０９）と、前記モニタ回路から受信した観測対象信号を前記第４マルチプレクサで選択されたクロック信号で書き込み、前記第２のクロック源からのクロック信号で読み出す第３バッファ部（図１６の３１０）と、前記第２及び第３バッファ部から読み出された信号を記憶する記憶部（図１６の３１６）と、を含む構成としてもよい。さらに、ホストコンピュータに接続するインターフェース部（図１６の３１８）と、前記記憶部の内容を読み出し前記ホストコンピュータに送信する読み出し制御回路（図１６の３１７）と、前記記憶部への信号の書き込み開始・停止制御を行う制御部（図１６の３１２）とを備えた構成としてもよい。
【０１０２】
本発明の一形態によれば、ホストコンピュータ（図１６の４０）は、例えば前記ロジック解析端末（図２２、図２３の３０）の前記第２遅延補正回路（図２２、図２３の３０６、３０８）の遅延補正を、制御するにあたり、
（Ａ）前記半導体装置の配置配線後のタイミング解析結果から、前記半導体装置（図２２の２０）内の前記試験信号発生回路（図２２の２０９）から前記半導体装置の出力端子（図２２の２２０）に至る経路の遅延と、前記半導体装置（図２３の２０）内の観測対象ノードから前記半導体装置の出力端子（図２３の２２０）に至る経路の遅延を取得して記憶しておき、
（Ｂ）記半導体装置（図２２の２０）内の前記試験信号発生回路（図２２の２０９）の試験信号をモニタ対象として、前記第２遅延補正回路（図２２の３０６、３０８）に対して遅延量をゼロに初期化し、
（Ｃ）前記半導体装置(図２２の２０)内の前記試験信号発生回路（図２２の２０９）からの受信したデータパターンが既知の試験信号パターンに合致するかを判断し、既知の試験信号パターンに合致するまで前記第２遅延補正回路（図２２の３０６、３０８）に対して遅延量を増加させ、前記受信したデータパターンが前記既知の試験信号パターンに合致すると、その時の第２遅延補正回路（図２２の３０６、３０８）に設定された遅延量を記憶し、
（Ｄ）前記半導体装置(図２３の２０）内の前記観測対象ノードからの観測対象信号をモニタ対象として、前記第２遅延補正回路（図２３の３０６、３０８）に設定された遅延量に対し、前記半導体装置(図２３の２０）内の前記観測対象ノードから前記半導体装置の出力端子（図２３の２２０）に至る経路の遅延から、前記半導体装置(図２２の２０）内の前記試験信号発生回路（図２２の２０９）から前記半導体装置の出力端子（図２２の２２０）に至る経路の遅延を差し引いた値を足した遅延量を、前記第２遅延補正回路（図２２、図２３の３０６、３０８）に対して設定する構成としてもよい。
【０１０３】
上記したように、本発明によれば、モニタ回路に、タイミング緩和条件を付して配置配線を行い、事後に別途の手段で遅延補正を行うことで、配置配線の容易さを損なうことなく、モニタデータの安定点をモニタクロックで識別している。
【０１０４】
本発明によれば、観測対象ＦＰＧＡに実装するモニタ回路は、観測対象ノードからパラレルモニタ信号をパラレルに受信する回路（パラレルモニタ受信回路）に至る経路中のフリップフロップを廃止している。また、上記モニタ回路のうち、観測対象ノードからパラレルモニタ受信回路に至る経路には、タイミング制約を付さない。また、上記モニタ回路に含まれるモニタ面の切り替えを行うマルチプレクサは、グリッチ・フリーマルチプレクサから構成される。マルチプレクサは、複数のグリッチ・フリーマルチプレクサを２進木形態に接続して構成してもよい。
【０１０５】
本発明によれば、ロジック解析システムは、ビット毎の遅延時間を解析するための試験信号発生回路と、遅延補正回路とを有する。
【０１０６】
本発明において、上記モニタ回路は、パラレルモニタ信号をロジック解析端末にシリアル信号に変換して送信するためのシリアル送信回路を有する。上記モニタ回路は、一部のモニタ信号は、シリアル信号に変換せず、パラレル信号のまま、直接、ＦＰＧＡの外部ピンに出力する。
【０１０７】
本発明において、ロジック解析端末は、モニタ回路からのシリアル信号をシリアルに受信しパラレル信号に変換するシリアル受信回路と、受信したデータを格納するメモリと、受信したデータを監視し、所定のトリガ条件が発生したときに、メモリへの書き込みを停止する制御回路を有する。上記ロジック解析端末は、シリアルレ受信回路のほか、観測対象ＦＰＧＡの外部ピンから出力されたパラレルモニタ信号を受信する入力ピンと、受信したパラレルモニタ信号の遅延を補正する遅延補正回路とを有する。
【０１０８】
本発明の遅延補正方法は、半導体デバイスからのモニタ出力を遅延させる遅延補正回路の遅延補正方法であって、
前記半導体デバイスの配置配線後のタイミング解析結果から、前記半導体デバイス内の試験信号発生回路から前記半導体デバイスの出力ピンに至る経路の遅延と、前記半導体デバイス内の観測対象ノードから前記半導体デバイスの出力ピンに至る経路の遅延を取得して記憶し、
前記試験信号発生回路の試験信号をモニタ対象として、前記遅延補正回路に対して遅延量をゼロに初期化し、
前記半導体デバイス内の前記試験信号発生回路からのデータパターンが既知の試験信号パターンに合致するかを判断し、既知の試験信号パターンに合致するまで前記遅延補正回路に対して遅延量を増加させ、前記受信したデータパターンが前記既知の試験信号パターンに合致すると、その時の遅延補正回路に設定された遅延量を記憶し、
前記半導体デバイス内の前記観測対象ノードからの観測対象信号をモニタ対象として、前記遅延補正回路に設定された遅延量に対し、前記観測対象ノードから前記半導体デバイスの出力ピンに至る経路の遅延から、前記試験信号発生回路から前記半導体デバイスの出力ピンに至る経路の遅延を差し引いた値を足した遅延量を、前記遅延補正回路に対して設定する。
【０１０９】
以下、図面を参照して実施形態について詳細に説明する。
【０１１０】
＜実施形態１＞
図１３は、本発明の一実施形態において、観測対象となるＦＰＧＡに実装されるべきモニタ回路の構成を例示する図である。なお、本実施形態では、シリアル送信回路とシリアル受信回路を利用する高速シリアルモニタと、通常のＩ／Ｏピンを用いるパラレルモニタとを同時に２種類実装した例を示しているが、どちらか一方のみを備えた構成としてもよい。モニタ回路に使用するＩ／Ｏピンの数を減らすには、高速シリアルモニタを実装することが好適である。シリアル送信回路を持たない品種のＦＰＧＡを利用する場合や、非同期信号をモニタしたい場合などには、パラレルモニタも、適宜の本数を併用することが有効である。
【０１１１】
観測対象の基板１０には、観測対象のＦＰＧＡ２０が搭載され、観測対象のＦＰＧＡ２０から引き出したモニタ回路関連信号がコネクタ１２とケーブル１３を介して後述するモニタ解析端末に接続される。なお、基板１０上の配線やコネクタ、ケーブルは関連信号の伝送に対応した電気的特性を有する。
【０１１２】
観測対象ＦＰＧＡ２０は、観測対象回路２００及びモニタ用の回路ブロック２１０が実装されるＦＰＧＡである。
【０１１３】
観測対象回路２００は、ＦＰＧＡ２０が本来の要求機能を実現するために実装される回路であり、デバッグ対象とされる回路である。観測対象ノードは、デバッグ対象箇所である。観測対象ノードは、フリップフロップ（ＦＦ）２０１の出力でも、組み合わせ論理回路２０２を通過した後の箇所でも良い。どちらでも良い場合は、配置配線の難易度を減らし、モニタ品質を向上させるためにフリップフロップ２０１の出力としたほうが良い。
【０１１４】
モニタデータマルチプレクサ２０５、２０６はモニタ面を切り替えるためのバス信号（複数ビットのセット）のマルチプレクサである。モニタデータマルチプレクサ２０５は非同期信号用、モニタデータマルチプレクサ２０６は同期信号用である。
【０１１５】
なお、モニタ面は、関心の対象となる観測対象回路をデバッグするために必要な観測対象信号の一揃えのバスのことを指す。１つの信号は信号線であるが、バスは複数の信号を束ねた面としてとらえることができることから、モニタ対象の信号（１本又は複数本）をモニタ面という。
【０１１６】
観測対象回路２００が複数あり、それらを同時に観測する必要がないときは、それぞれの回路の観測対象ノードを、モニタデータマルチプレクサ２０５、２０６の別の面（他の入力）に割り当て、モニタデータマルチプレクサ２０５、２０６にて、モニタ面選択信号で、選択するモニタ面を切り替え、観測ができるようになる。
【０１１７】
モニタクロックマルチプレクサ２０７は、観測対象回路２００のクロックドメインに応じてモニタ回路に導くクロックを選択するためのものである。モニタクロックマルチプレクサ２０７で選択されたクロック信号は、試験信号発生回路２０９の駆動源クロックとしても使用される。また、モニタクロックマルチプレクサ２０７で選択されたクロック信号は、デュアルクロックＦＩＦＯ(First In First Out)２１３にも入力され、さらに、モニタクロックピン２２３から基板配線１４を介してコネクタ１２に接続される。
【０１１８】
試験信号マルチプレクサ２０８は、遅延調整のため試験信号を送信する場合に、試験信号選択信号に基づき、本来のモニタデータと切り替えるためのものであり、モニタデータマルチプレクサと同様の構成とする。試験信号マルチプレクサ２０８は、試験信号面をモニタデータマルチプレクサ２０５の面に含める場合には省略される。
【０１１９】
モニタデータマルチプレクサ２０５、２０６と、モニタクロックマルチプレクサ２０７と、試験信号マルチプレクサ２０８の各々は、後述のようにグリッチの発生を防止するため、グリッチフリーマルチプレクサにより構成する。特に限定されるものでないが、各マルチプレクサは、例えば２入力の一方を選択するグリッチフリーマルチプレクサを複数段、樹状（ツリー状）に接続することで構成される。
【０１２０】
モニタデータマルチプレクサ２０５、２０６、モニタクロックマルチプレクサ２０７、試験信号マルチプレクサ２０８のモニタ面の切り替えは、例えば、不図示のホストコンピュータからロジック解析端末を経由して、ＪＴＡＧ  Ｉ／Ｆ（Joint Test Action Group  Interface）２１６で行う。試験信号マルチプレクサ２０８の出力は、出力端子（パラレルモニタピン）２２０から基板配線１４を介してコネクタ１２に接続される。
【０１２１】
遅延補正回路２１１はモニタデータの遅延補正を行い、ビット間のスキュー調整をする。遅延補正回路２１１の遅延量は不図示のホストコンピュータからロジック解析端末を経由し、ＪＴＡＧ  Ｉ／Ｆ２１６で行う。
【０１２２】
本実施形態では、遅延補正回路２１１は、遅延ラインに複数のタップ（遅延時間が互いに異なる）を設け、マルチプレクサ２１２で１つのタップを選択し、補正する遅延量を選択しているが、他の構成で実現しても良いことは勿論である。
【０１２３】
デュアルクロックＦＩＦＯ２１３は、観測対象回路２００のクロックドメイン（モニタクロックマルチプレクサ２０７で選択されたクロック信号）からシリアル送信回路２１５のクロックドメインにクロック乗せ替えを行うためのバッファである。
【０１２４】
シリアル送信回路２１５は、入力されたパラレルデータをシリアルビット列にパラレル・シリアル変換して出力端子（モニタデータピン）２２１からシリアル出力し、ＦＰＧＡ２０が実装される基板１０上の伝送路に差動出力する。品種にもよるが、例えばＦＰＧＡの標準的なハードマクロとして内蔵されているものが使用できる。シリアル送信回路２１５からのパラレルクロック信号は、シリアルビットの駆動用クロック信号をｍ分周したクロック信号に対応する。モニタデータピン２２１からのシリアルデータ（差動信号）は基板配線１４を介してコネクタ１２に接続される。
【０１２５】
なお、遅延補正回路２１１からシリアル送信回路２１５までの回路ブロック２１０のうち、シリアル送信回路２１５以外の回路は、通常のＦＰＧＡに集積された資源により実現することも可能である。しかしながら、回路ブロック２１０内の回路は所定のタイミング条件を満足する必要があるため、タイミング緩和条件を付す対象からは除外する必要がある。このためにＦＰＧＡの配置配線の難易度が増大することも考えられる。そこで、回路ブロック２１０全体をデバッグ支援用のハードマクロとして予めＦＰＧＡチップ上に集積することが望ましい。
【０１２６】
ビット幅・レート変換部２１４の役割を以下に例示する。
【０１２７】
（１）ビット幅変換：一般に、シリアル送信回路２１５は数Ｇｂｐｓ〜２８.０５Ｇｂｐｓ（Giga bits per second）で動作するのに対して、ＦＰＧＡ内部の動作クロックは、高々数百ＭＨｚに制限される。ＦＰＧＡ内部でのデータの授受は、いくつかのシリアルデータビットを組にしてパラレルデータにて行うことで、必要な伝送帯域幅を得ている。パラレルデータの入出力に使用するクロックがパラレルクロックである。このように、パラレルデータのデータ幅は、シリアル送信回路２１５の転送速度等に応じて決定されるので、モニタデータのビット幅とシリアル送信回路２１５のパラレルデータ幅は、必ずしも一致しない。このため、ビット幅をそろえる必要がある。
【０１２８】
（２）レート変換：モニタクロック信号とシリアル送信回路２１５のパラレルクロックは必ずしも周波数同調していない。このため、デュアルクロックＦＩＦＯ２１３を用いてクロックドメイン間のデータ受け渡しを行っている。
【０１２９】
ＦＰＧＡの設計者は、ビット幅変換後のモニタデータの伝送に必要な伝送帯域幅がシリアル送信回路の実効伝送帯域幅（８ｂ１０ｂ変換（８ビットデータを１０ビットのシンボルに変換して伝送）や６４ｂ６６ｂ変換（６４ビット（８×８ビット）のデータを６６ビットに変換する）などの符号化によるオーバーヘッドを除いた実質的な伝送帯域幅）を超過しないように、モニタデータ幅を選定する。パラレルクロック毎に、デュアルクロックＦＩＦＯ２１３からデータを読み出すとすれば、デュアルクロックＦＩＦＯ２１３がアンダーフロー（データ枯渇）を起こす。このため、調速機構が必要になる。
【０１３０】
具体的には、デュアルクロックＦＩＦＯ２１３から読み出せるデータがなくなった時点で、出力データに、他のデータとは分別可能なスキップコードを挿入し、受信側で判別できるようにする。
【０１３１】
ビット幅レート変換部２１４の動作例を挙げて説明する。図１４は、シリアル送信回路２１５のパラレルデータのビット幅が３２ビットで、モニタデータのビット幅が６０ビットの例である。図１４では、ビット幅変換動作は、１フレーム１２８ビットで行われている。
【０１３２】
２個のモニタデータ（１２０ビット）は、４個のパラレルデータ（３２×４＝１２８ビット）にまたがって収納され、末尾の８ビットはフィラー（未使用）ビットで埋められる。
【０１３３】
シリアル送信回路２１５が実効伝送帯域幅１０Ｇｂｐｓに対応しているとすれば、パラレルデータクロックは３１２．５ＭＨｚとなる。フィラービットも含めたモニタデータ幅は等価的に６４ビットとなるので、１５６．２５ＭＨｚまでのモニタクロックに対応できることになる。なお、ビット幅変換のフレームを、パラレルデータビット幅とモニタデータ幅の最小公倍数となるビット数で構成すれば、フィラービットによる無駄をなくすことができる。たただし、これは回路規模見合い（回路規模の増大がフィラービットによる無駄解消とつり合うか否か）となる。
【０１３４】
この例では、１フレームを４８０ビットで構成することにすれば、フィラービットが不要になり、６４ビット幅のモニタデータ幅を実現できる。
【０１３５】
スタートシンボルは、フレームの開始を判別するための特殊なシンボルであり、例えば、８ｂ１０ｂ符号化方式のK（カンマ）コードなどを用いることにすれば、通常のデータと識別することができる。スタートシンボルは、データ送信の最初だけ送信すればよいので、所要伝送帯域には影響しない。
【０１３６】
スキップシンボルは、調速に用いられ、ビット幅変換部がデュアルクロックＦＩＦＯ２１３のデータの格納状況を監視し、残りデータが枯渇寸前になったときに挿入することでアンダーフローを防止するものである。スキップシンボルも、Ｋコードなどを用いれば通常のデータと識別することができる。
【０１３７】
図１５は、シリアル送信回路２１５のパラレルデータ幅が１２８ビットで、モニタデータ幅が１２０ビットの例である。ここでは、ビット幅変換動作は１フレーム２５６ビットで行われている。
【０１３８】
２個のモニタデータ（１２０×２ビット）は、２個のパラレルデータにまたがって収納され、末尾の１６ビットはフィラー（未使用）ビットで埋められる。
【０１３９】
シリアル送信回路２１５が実効伝送帯域幅２７．２Ｇｂｐｓとすれば、パラレルデータクロックは２１２．５ＭＨｚとなる。フィラービットも含めたモニタデータ幅は等価的に１２８ビットとなるので、２１２．５ＭＨｚまでのモニタクロックに対応できる。
【０１４０】
図１６は、本実施形態におけるロジック解析端末３０の構成を示すブロック図である。特に制限されるものではないが、図１６の装置（端末）は、例えば、はがき大の基板に実装することが可能である。
【０１４１】
図１６において、シリアル受信回路３０７は、基板上の差動伝送路から入力されたシリアルビット列をパラレルデータにシリアル・パラレル変換する。なお、特に制限されるものではないが、シリアル受信回路３０７は、シリアルモニタ入力３０４から入力した受信データ（シリアルビット）から該データに同期したクロック信号を再生する不図示のクロック・データリカバリ（clock and data recovery）回路を備えた構成としてもよい。クロック・データリカバリ回路は、不図示のPLL（Phase Locked Loop）回路等から生成されるクロック信号（装置内クロック）を受信データに同期させてクロックの再生を行い、該再生クロックを用いて受信データをシリアル・パラレル変換し、パラレルデータを書き込みデータとしてパラレルクロック信号とともに出力する。ｍビットのシリアルビット列をパラレルデータに変換する場合、パラレルクロック信号はシリアルビット列の同期クロック信号をｍ分周した信号に対応する。
【０１４２】
遅延補正回路３０６は、観測対象ＦＰＧＡからシリアル送信回路２１５を経ずに出力されたパラレルモニタ入力のビット間のスキュー調整をする。遅延補正回路３０６は図１５の観測対象ＦＰＧＡ側の遅延補正回路２１１と同様の機能を有する。
【０１４３】
デュアルクロックＦＩＦＯ３１１、３１０は、シリアル受信回路３０７やパラレルモニタ入力側のクロックドメインから、メモリクロックドメインへのクロック乗せ替えを行うためのバッファである。デュアルクロックＦＩＦＯ３１１はシリアル受信回路３０７からのパラレル信号をシリアル受信回路３０７からのパラレルクロック信号で書き込み、メモリクロック源３１３からのクロック信号で読み出す。クロックマルチプレクサ３０９は、ＦＰＧＡ２０から送信されたモニタクロック信号（入力ピン３０３から入力される）又はメモリクロック源３１３からのクロック信号を取り込みクロック信号で選択して、デュアルクロックＦＩＦＯ３１０に書き込みクロックとして供給する。デュアルクロックＦＩＦＯ３１０は、パラレルモニタ入力ピン３０２からのパラレルモニタデータを遅延補正回路３０６、マルチプレクサ３０８で補正した信号を、書き込みデータとして、クロックマルチプレクサ３０９からのクロックで書き込み、メモリクロック源３１３からのクロック信号を読み出しクロックとして読み出す。
【０１４４】
Run/Stop/トリガ制御回路３１２は、ホストコンピュータ４０からの指示に従い、デュアルクロックＦＩＦＯ３１０、３１１から読み出される受信データのメモリ３１６への書き込みを開始・停止し、前記受信データを監視し、予めホストコンピュータ４０により設定されたトリガ条件に合致する条件を発見したとき、メモリ３１６への書き込みを停止する。
【０１４５】
タイムベース回路３１４は、モニタクロックやメモリクロックをカウントすることにより時刻情報を作成する。特に、後述する基準ビットの遅延を変化させながら、極性の判別を行う際の基準エッジ位置はタイムベース回路３１４にてモニタクロックをカウントすることにより得る。
【０１４６】
タイムスタンプ付加回路３１５は、タイムベース回路３１４から受け取った時刻情報を受信したモニタデータに添えてメモリ３１６に出力する。
【０１４７】
メモリ３１６は受信したモニタデータをリアルタイムに取り込み、保持する機能を有し、DDR3（Double Data Rate 3） SDRAM(Synchronous Dynamic Random Access Memory)やQDR(Quad Data Rate) SRAM(Static Random Access Memory)などにより実現される。
【０１４８】
読み出し制御回路３１７は、ホストコンピュータ４０からの要求に応じてメモリ３１６に記憶されたモニタデータを読み出し、ホストＩ／Ｆ３１８を経由してホストコンピュータ４０に送信する。
【０１４９】
ホストＩ／Ｆ３１８は、ホストコンピュータ４０からの指令をロジック解析端末の各部に送出し、それら指令への各部からの応答をホストコンピュータ４０に返送する。
【０１５０】
ＪＴＡＧブリッジ３０５は、観測対象ＦＰＧＡ２０とホストＩ／Ｆ３１８の中間に設置されることで、ホストコンピュータ４０からの指令を観測対象ＦＰＧＡに送出し、それら指令への応答をホストコンピュータ４０に返送する。
【０１５１】
次に、モニタデータマルチプレクサ、モニタクロックマルチプレクサ、試験データマルチプレクサの構成を説明する。
【０１５２】
観測対象ＦＰＧＡが２入力ＬＵＴを有する品種の場合には、すでに説明したＤＮＦ形式による２入力マルチプレクサを、単位グリッチフリーマルチプレクサとして利用することができる。ただし、ＦＰＧＡは、より多入力のＬＵＴを備えることが多く、それらのＬＵＴを２入力ＬＵＴとして使用することは不可能ではないが、不経済である。そこで、３入力以上のＬＵＴ  １個でグリッチフリーマルチプレクサを構成することを考える。
【０１５３】
ＬＵＴがグリッチを発生させない信号遷移の条件は、例えば以下の（Ｉ）又は（ＩＩ）のようになる。
【０１５４】
（Ｉ）入力のうちのいずれか１ビットの極性が反転する。
【０１５５】
（ＩＩ）複数の入力が同時に極性を反転させる場合で、その途中、入力間の微小な遅延により生じ得るすべての入力の組み合わせにより参照されるＬＵＴマスク（ＳＲＡＭセル）が保持するビットの極性が、同一の極性である。
【０１５６】
ここで、図１７（Ａ）に示すように、３入力ＬＵＴを用いて、２入力マルチプレクサを実現した例について説明する。図１７の例において、ＬＵＴマスク（ＳＲＡＭセルの記憶内容）は、Ｓ入力が０のときは、Ｘ入力の極性と同じ極性がＺ出力に現れる。また、Ｓ入力が１のときはＹ入力の極性がＺ出力に現れる。一般的なマルチプレクサには、Ｓ入力により選択中の入力の極性が変化するとき、出力が０→１→０→・・・→１→０→１と数回反転し、グリッチが発生するものも存在する。図１７（Ａ）に示すマルチプレクサは、上記（Ｉ）の条件を満たすことから、この問題が発生しないことは勿論である。
【０１５７】
図１７（Ｂ）の真理値表より、Ｘ、Ｙ入力が同時に変化する場合、上記（Ｉ）の条件には該当しないが、Ｓ入力が一定である限り、上記（ＩＩ）の条件が該当することがわかる。
【０１５８】
図１７（Ｃ）のタイミングチャートの第１の拡大図（図１７（Ｄ））は、Ｓ＝０一定の時、ＸとＹが同時に変化してもグリッチを生じない様子を示している。Ｓ入力が変化するときにはこの限りではなく、図１７（Ｃ）のタイミングチャートの拡大図（図１７（Ｅ））に示したように、遅延の影響により最終的な静定状態に辿り着く前に一瞬だけ他の入力状態が発生するためグリッチが発生する。
【０１５９】
しかしながら、通常のデバッグ作業では、モニタ面に切り替える瞬間のモニタ波形は、興味の対象とはならない。このため、事実上、Ｓ入力の変化により発生するグリッチは無視しても良いことになる。
【０１６０】
なお、ＬＵＴの構造は、ＦＰＧＡの品種により異なるため、必ずしも上記の挙動になるとは限らない。なお、このような単位グリッチフリーマルチプレクサをハードウェア記述言語により記述する場合は、論理合成ソフトウェアによる論理回路の最適化の挙動に注意する必要がある。
【０１６１】
以下のリスト１は、２入力グリッチフリーマルチプレクサをＶＨＤＬ言語により記述したものである。通常、このモジュールを多数並べても、論理合成ソフトウェアが面積や速度あるいは消費電力を優先して論理回路の構成を変形してしまう可能性があり、意図したとおりに実装されるとは限らない。
【０１６２】
そこで、例えばリスト２に示すように、「ｋｅｅｐ属性」を与えた中間ノードを作成する方法が知られている。「ｋｅｅｐ属性」は、論理合成ソフトウェアがその属性が付されたノードを最適化の過程で消失させることを防止する属性である。
【０１６３】
論理合成ソフトウェアによっても、挙動は異なるが、本実施形態の検証で使用した論理合成ソフトウェアでは、「ｋｅｅｐ属性」が与えられた中間ノードは、必ずＬＵＴの出力として最適化されずに残ることが分かっている。したがって、意図したとおりのマルチプレクサとすることができる。
【０１６４】
［リスト１］
library ieee;
use ieee.std_logic_1164.all;
entity MUX2to1 is port(
X, Y : in  std_logic;
S    : in  std_logic;
Z    : out std_logic;
end MUX2to1;
architecture RTL of MUX2to1 is
begin
process (S, X, Y)
begin
case S is
when '0' => Z <= X;
when '1' => Z <= Y;
end case;
end process;
end RTL;
［リスト１おわり］
【０１６５】
［リスト２］
library ieee;
use ieee.std_logic_1164.all;
entity MUX2to1_no_opt is port(
X, Y : in  std_logic;
S    : in  std_logic;
Z    : out std_logic;
end MUX2to1_no_opt;
architecture RTL of MUX2to1_no_opt is
signal Z_int            : std_logic;
attribute keep          : boolean;
attribute keep of Z_int : signal is true;
begin
process (S, X, Y)
begin
case S is
when '0' => Z_int <= X;
when '1' => Z_int <= Y;
end case;
end process;
Z <= Z_int;
end RTL;
［リスト２おわり］
【０１６６】
上記リスト１、２は、３入力ＬＵＴの場合であるが、より多数の入力を備えるＬＵＴの場合でも同様に拡張可能である。たとえば６入力のＬＵＴを使用すれば、４ビットのデータ入力を２ビットの選択信号入力により選択出力する４入力マルチプレクサを構成できる。
【０１６７】
また、クロック信号用のマルチプレクサとしては、マルチプレクサの選択信号入力の極性切り替わり時点も含めて、出力にグリッチの伝搬することがない、いわゆる、グリッチフリー・スイッチオーバー(glitch free switch-over)が可能な構成を用いてもよい。マルチプレクサの選択信号入力の極性切り替わり時点の動作は重要ではなく、必要なら関連する回路に対してモニタクロックの切り替え後にリセットをして復旧をさせても良い。モニタデータマルチプレクサと同じように選択信号入力が静定状態のときにグリッチが発生しないことが保証されていれば十分である。
【０１６８】
次に、観測対象ノードが組み合わせ論理回路の出力になっている場合のタイミング制約について説明する。
【０１６９】
本実施形態においては、観測対象ノードから遅延補正回路に至る経路はタイミング緩和条件を付して配置配線をすることが可能になる。観測対象ノードが組み合わせ論理回路の出力になっている場合は、スキューの影響により意図した通りの波形が得られなくなることがある。このため、組み合わせ論理回路の入力信号を駆動するフリップフロップから観測対象ノードまでの経路は、スキューが問題にならない程度に収まるように、タイミング制約を付する必要がある。このような制約は、前述した公知のＳＤＣ形式などにより与えることができる。
【０１７０】
図１８は、実施形態におけるタイミング制約の付し方を説明する図である。タイミング制約の範囲をフリップフロップ１２０−１、１２０−２の出力（ＦＦ１出力、ＦＦ２出力）から観測対象であるＡＮＤゲート１２３の出力（観測対象ノード）までにとどめている。このため、ＡＮＤゲート１２３の２つの入力（ＡＮＤ入力１、２）間のスキューは、許容範囲内に収められ、全体的な配置配線に大きな悪影響を与えることもない。ＡＮＤゲート１２３の出力以降は、タイミング制約を付していない（タイミング緩和条件で配置配線されている）。
【０１７１】
しかしながら、図１８（Ｂ）に示すように、観測対象ノード（ＡＮＤゲート１２３の出力）に仮に１クロック周期以上の遅延が発生しても、他のモニタビットを遅延補正回路２１１によって遅延させることで、相対的な時間関係をそろえることが可能となる。このため、波形観測に支障を生じることはない。なお、組み合わせ論理回路の出力が観測ノードになる場合、当該ノードが論理合成ソフトウェアの最適化の結果消えてしまうことがある。そのような場合、ｋｅｅｐ属性などを用いて最適化を抑制することができる。
【０１７２】
図１９は、本実施形態における試験信号発生回路（図１５の２０９）の出力波形を示す。この波形は、モニタクロックのクロックの１６周期毎に極性を反転させたものである（１周期は３２モニタクロッククロックサイクル）。このような波形は、５ビットカウンタ回路のMSB（Most Significant Bit）を利用して発生することができる。なお、試験信号発生回路２０９は1系統のみ設置し、同じ試験信号を、モニタデータの各ビットに分配する。
【０１７３】
次に、モニタデータの遅延補正の原理を詳細に説明する。本実施形態において、遅延補正箇所は、図１３のＦＰＧＡ２０の内部の遅延補正回路２１１において、シリアル送信回路２１５にて伝送する高速シリアルモニタに対して遅延を補正するものと、ＦＰＧＡ２０のＩ／Ｏピン（図１３の２２０）に出力されたパラレルモニタ信号の遅延補正を、ロジック解析端末３０内の遅延補正回路（図１８の３０６、３０８）で行うものの２種類が存在する。
【０１７４】
シリアルモニタは、観測対象ノードと同じＦＰＧＡチップ２０上に存在し、遅延補正値の計算は、すべてＦＰＧＡの配置配線結果をタイミング解析ソフトウェアにより解析して得られる結果のみで完結する。
【０１７５】
図２０（Ａ）、（Ｂ）は、図１３において、モニタ経路にシリアル送信回路２１５を含む高速シリアルモニタに関して、特定のモニタ面の特定のビットｎに着目して整理したＦＰＧＡ２０内の遅延を模式的に示す図である。図２０（Ｂ）に示すように、モニタクロックの経路にかかわる遅延Ｙ（ｎ）は次の要素に分解できる。
【０１７６】
・Dclk_cmux：観測対象回路を駆動するクロック源２０４からモニタクロックマルチプレクサ２０７までの遅延。
【０１７７】
・Dcmux_FIFO：モニタクロックマルチプレクサ２０７からデュアルクロックＦＩＦＯ２１３までの遅延。
【０１７８】
モニタデータの経路にかかわる遅延X(n)は以下の要素に分解できる。
【０１７９】
・Dclk_tgt(n)：観測対象回路を駆動するクロック源２０４から観測対象回路出力段ＦＦ２０１までの遅延。
【０１８０】
・Dtgt_dmux(n)：観測対象回路(組み合わせロジックがある場合には、これも含む)からモニタデータマルチプレクサ２０６までの遅延。
【０１８１】
・Ddmux_adj(n)：モニタデータマルチプレクサ２０６から遅延補正回路２１１までの遅延。
【０１８２】
・Dadj(n)：遅延補正回路２１１とマルチプレクサ２１２による遅延補正値。
【０１８３】
デュアルクロックＦＩＦＯ２１３のデータ入力地点でモニタデータとモニタクロックの遅延のスキューがなくなるには、次式（１）が成立すればよい。左辺は、クロック経路の遅延Y（ｎ）、右辺はデータ経路の遅延X（ｎ）を示す。
【０１８４】
(Dclk_cmux + Dcmux_FIFO) = (Dclk_tgt(n) + Dtgt_dmux(n) + Ddmux_adj(n) + Dadj(n))                          ・・・ (1)
【０１８５】
したがって、遅延補正回路２１１とマルチプレクサ２１２では、以下の遅延補正を行えば良いことになる。
【０１８６】
Dadj(n) = (Dclk_cmux + Dcmux_FIFO) - (Dclk_tgt(n) + Dtgt_dmux(n) + Ddmux_adj(n))                            ・・・(2)
【０１８７】
ただし、実用に当たっては、上式（２）を直接用いることはない。その理由は、Dadj(n)が負の値となり、遅延補正回路として実現不可能になる可能性があることと、ビット間のスキューを補正してバスとしての信号タイミングをそろえることができないためである。
【０１８８】
上式（２）において、遅延補正値Dadj(n)は、デュアルクロックＦＩＦＯ２１３地点でのモニタクロックの位相を、観測対象信号が当初セットアップされたクロックエッジに合わせる値である。
【０１８９】
モニタデータの遅延よりもモニタクロックの遅延の方が大きい場合、つまり、
(Dclk_cmux + Dcmux_FIFO) < (Dclk_tgt(n) + Dtgt_dmux(n) + Ddmux_adj(n))
・・・(3)
となる場合、Dadj(n)が負の値となる。
【０１９０】
実際には、モニタデータを識別するクロックエッジは、モニタデータをセットアップしたエッジと一致している必要はない。このため、以下に説明するように、遅延補正値Dadj(n)が正になるように、エッジをずらしても良いことになる（図２１参照）。
【０１９１】
図２１において、モニタクロック経路の遅延を、１モニタクロック周期Tmonclk以上の成分と未満の成分に分けるとき、後者Xを計算する。
【０１９２】
X = (Dclk_ｃmux + Dcmux_FIFO) - Tmonclk * Floor{(Dclk_ｃmux + Dcmux_FIFO) / Tmonclk}                              ・・・(4)
【０１９３】
ここで、Floor(x)はxの整数値への切り捨てを表すものとする。
【０１９４】
次に、モニタデータ経路の遅延を
Y(n)= Dclk_tgt(n) + Dtgt_dmux(n) + Ddmux_adj(n)                    ・・・ (5)
と置き、Y(n)よりも大きくモニタクロックのサイクルの整数倍となる最小のZ(n)を計算する。
【０１９５】
Z(n)= Tmonclk*Ceil[Y(n)/Tmonclk]                                 ・・・ (6)
【０１９６】
ここで、Ceil(x)はxの整数値への切り上げを表すものとする。
【０１９７】
すると、次のW(n)：
W(n) = Z(n) + X - Y(n)                               ・・・(7)
は、非負、かつ、モニタビットｎの安定点でモニタデータの極性を識別するための遅延補正量を与える。
【０１９８】
ただし、この遅延量は他のビットとのスキューを考慮していないので、ビットｎをほかのモニタビットとともにバス信号として観測する場合には正しい観測結果とならない。そのため、もっとも遅延の大きいビットに合わせるために必要なモニタクロック周期数を次式（８）のCYCalign(n)として求める。
【０１９９】
CYCalign(n) = Ceil[Max{Z(m)+X, m=0, m=mmax} / Tmonclk] - Ceil[{Z(n)+X} / Tmonclk]
・・・ (8)
【０２００】
ここで、Max｛x(w),w=y,w=z｝はx(w)の添え字wをyからzまで動かして得られる各x(w)のうち最大値を表すものとする。また、高速シリアルモニタのビット番号は０から数え始めものとし、ビット番号の最大値は、mmax+1であるとする。
【０２０１】
最終的には、W(n)にCYCalign(n)周期だけ遅延量を割り増す補正項を導入した以下の式（９）がビットnに適用すべき遅延量Dadj(n)となる。
【０２０２】
Dadj(n) = W(n) + CYCalign(n)*Tmonclk                              ・・・ (9)
【０２０３】
図２１は、2ビット(mmax=1)の観測対象信号に関して、2ビット間のスキューも考慮しつつ遅延補正を行う例を示している。
【０２０４】
X = (Dclk_ｃmux + Dcmux_FIFO) - Tmonclk * Floor{(Dclk_ｃmux + Dcmux_FIFO) / Tmonclk}                                    ・・・ (10) 
【０２０５】
Y(0)= Dclk_tgt(0) + Dtgt_dmux(0) + Ddmux_adj(0)             ・・・(11) 
【０２０６】
Z(0)= Tmonclk*Ceil[ Y(0)/Tmonclk ]                         ・・・(12) 
【０２０７】
W(0) = Z(0) + X - Y(0)                                    ・・・(13) 
【０２０８】
CYCalign(0) = Ceil[Max{Z(m)+X, m=0, m=1} / Tmonclk] - Ceil[{Z(0)+X} / Tmonclk]
=2-2=0               ・・・ (14) 
【０２０９】
Dadj(0) = W(0) + CYCalign(0)*Tmonclk= W(0)                ・・・(15) 
【０２１０】
CYCalign(1) = Ceil[Max{Z(m)+X, m=0, m=1} / Tmonclk] - Ceil[{Z(1)+X} / Tmonclk]
=2-1=1                 ・・・ (16) 
【０２１１】
Dadj(1) = W(1) + CYCalign(1)*Tmonclk= W(1)+Tmonclk                  ・・・ (17) 
【０２１２】
観測対象信号ｎ＝１だけに着目すれば、クロック源２０４から遅延補正回路２１１の入力に至る経路の遅延は、１クロック周期未満である。観測対象信号ｎ＝０のクロック源２０４から遅延補正回路２１１の入力地点に至る経路の遅延は、１クロック周期より大きい。
【０２１３】
このため、観測対象信号ｎ＝１については、
CYCalign(1) = 1
として、観測対象信号ｎ＝０に合わせ込んでいる。
【０２１４】
次に、パラレルモニタの遅延補正手続きについて説明する。本実施形態において、パラレルモニタの経路上には、基板上の配線や接続に使用するコネクタ、ケーブルが存在するため、観測対象ＦＰＧＡのタイミング解析をするだけでは不明な遅延要素が存在する。
【０２１５】
この不明な遅延要素は、試験信号発生回路により発生させた波形のモニタクロックに対する遅延量を遅延補正回路により徐々に変化させながら取り込み、試験信号の既知のパターンが検出された時点として明らかにすることができる。既知の試験信号を利用して、データの取り込み位相を自動調整するための各種方法が知られている。
【０２１６】
実施形態では、ＦＰＧＡの配置配線を容易化するため、モニタ回路には、タイミング緩和条件を付している。このため、各経路の遅延は試験信号選択中と被観測信号の選択中(試験信号マルチプレクサにより選択）とで、ＦＰＧＡの内部でも大きくばらつく。そのため、試験信号でデータが安定に取り込める位相に調整できても、その後観測対象ノードを含むモニタ面に切り替えた時点でＦＰＧＡ内部での遅延量が変化してしまい、最適なデータ取り込み位相がずれてしまう場合がある。そこで、本実施形態では、試験信号を用いて求めた遅延補正量に対して、タイミング解析から計算により求めた、試験信号を出力するときの内部遅延と、観測対象のモニタ信号を出力するときの内部遅延の差分を含めることにより、解決を図っている。
【０２１７】
図２２は、パラレルモニタにおいて、ＦＰＧＡ２０が試験信号を出力しているときの特定の１ビットに着目して整理した各部の遅延を示す。まず、モニタクロックの経路にかかわる遅延は以下の要素に分解できる。
【０２１８】
・Dclk_cmux：タイミング解析により確定される。観測対象回路を駆動するクロック源２０４からモニタクロックマルチプレクサ２０７までの遅延。
【０２１９】
・Dcmux_cpin：タイミング解析により確定される。モニタクロックマルチプレクサ２７からモニタクロックピン出力までの遅延。
【０２２０】
・Ducpin_anl：不確定遅延である。観測対象駆動クロック源からロジック解析端末３０のデュアルクロックＦＩＦＯ３１０までの遅延。
【０２２１】
なお、上付き添え字u (uncertain)はその記号であらわされる遅延が、タイミング解析では明らかにできない不確定な遅延（観測対象基板上の配線や、ケーブルなどの中間要素により生じる）であることを示す。
【０２２２】
次に、試験信号面が選択されているときのモニタデータの経路にかかわる遅延は以下の要素に分解できる。
【０２２３】
・Dclk_tst：タイミング解析により確定される。観測対象駆動クロック源２０４から試験信号発生回路２０９までの遅延。
【０２２４】
・Dtst_tmux(n)：タイミング解析により確定される。試験信号発生回路２０９から試験信号マルチプレクサ２０８までの遅延。
【０２２５】
・Ddmux_mpin(n)：タイミング解析により確定される。試験信号マルチプレクサ２０８からパラレルモニタピン（モニタ出力）２２０までの遅延。
【０２２６】
・Dumpin_anl(n)：不確定遅延：パラレルモニタピン（モニタ出力）２２０かららロジック解析端末３０のモニタ入力までの遅延。
【０２２７】
・Dtstadj(n)：後述する探索手続きにより確定される:ロジック解析端末３０のモニタ入力からのデュアルクロックＦＩＦＯ３１０までの遅延(試験信号を正常受信出来たときの遅延)。
【０２２８】
なお、試験信号は全モニタビット共通の回路が1系統だけあり、各モニタビットに同じ信号を分配している。このため、Dclk_tstには添え字nはない。
【０２２９】
ここで、計算手続きの第一段階では、後述するようにロジック解析端末３０にて試験信号を受信する。
【０２３０】
クロックとデータのスキューが揃う条件は次式（１８）で与えられる。左辺はクロック経路の遅延、右辺はモニタデータ経路の遅延を表す。
【０２３１】
(Dclk_cmux + Dcmux_cpin + Ducpin_anl) = (Dclk_tst + Dtst_tmux(n) + Dmux_mpn(n) + Dumpin_anl(n) + Dtstadj(n))                     ・・・ (18)
【０２３２】
ここで、
A(n) = Dclk_tst + Dtst_tmux(n) + Dmux_mpn(n)           ・・・ (19)
【０２３３】
C(n) = Dtstadj(n)                                      ・・・(20)
【０２３４】
U(n) = Ducpin_anl - Dumpin_anl(n)                       ・・・(21)
【０２３５】
V(n) = Dclk_cmux + Dcmux_cpin                         ・・・ (22)
【０２３６】
とすれば、クロック―データ間スキューのうちコネクタやケーブルなどの中間要素による不確定な成分U(n)は次式（２３）として計算できる。
【０２３７】
U(n) = A(n) + C(n) - V(n)                             ・・・(23)
【０２３８】
なお、式（２３）において、右辺のC(n) = Dtstadj(n)は、後述する遅延測定手続きを実行することで確定する。
【０２３９】
一方、図２３に、パラレルモニタに関して、ＦＰＧＡが観測対象信号を出力しているときの、特定の１ビットに着目して整理した各部の遅延を示す。モニタクロック経路の遅延は試験信号を出力しているときと同様である。
【０２４０】
データ経路の遅延は以下の要素に分解される。
【０２４１】
・Dclk_tgt(n)：観測対象駆動クロック源２０４から観測測対象回路の出力段のフリップフロップ２０１までの遅延。タイミング解析により確定する。
【０２４２】
・Dtgt_dmux(n)：観測対象ノード(場合により組み合わせ論理回路の出力からモニタデータマルチプレクサ２０６までの遅延。タイミング解析により確定する。
【０２４３】
・Ddmux_tmux(n)：モニタデータマルチプレクサ２０６から試験信号マルチプレクサ２０８までの遅延。タイミング解析により確定する。
【０２４４】
・Dmux_mpin(n)：試験信号マルチプレクサ２０８からパラレルモニタピン（モニタ出力）２２０までの遅延。タイミング解析により確定する。
【０２４５】
・Dumpin_anl(n)：パラレルモニタピン（モニタ出力）２２０からロジック解析端末３０までの遅延。不確定遅延。
【０２４６】
・Dtgtadj(n)：最終的に計算される遅延補正値。
【０２４７】
クロックエッジとデータエッジが揃う条件は次式（２４）で与えられる。左辺はモニタクロック経路の遅延、右辺はモニタデータ経路の遅延を表す。
【０２４８】
(Dclk_cmux + Dcmux_cpin + Ducpin_anl) = (Dclk_tgt(n) + Dtgt_dmux(n) + Ddmux_tmux(n) + Dmux_mpin(n) + Dumpin_anl(n) + Dtgtadj(n))                       ・・・ (24)
【０２４９】
したがって、クロックエッジとデータエッジを揃えるための最適遅延補正量は次式（２５）となる。
【０２５０】
Dtgtadj(n) = (Dclk_cmux + Dcmux_cpin) - (Dclk_tgt(n) + Dtgt_dmux(n) + Ddmux_tmux(n) + Dmux_mpin(n))  + (Ducpin_anl - Dumpin_anl(n))               ・・・(25)
【０２５１】
B(n) = Dclk_tgt(n) + Dtgt_dmux(n) + Ddmux_tmux(n) + Dmux_mpin(n)             ・・・(26)
とすれば、上式（２５）は次式（２７）で表される。
【０２５２】
Dtgtadj(n) = V(n) - B(n) + U(n)                 ・・・(27)
【０２５３】
ここで、不確定遅延成分であるU(n)は、上記のとおり
U(n) = A(n) + C(n) - V(n)                      ・・・(28)
であることから、最終的な遅延補正値Dtgtadj(n)は次式（２９）で与えられる。
【０２５４】
Dtgtadj(n) = A(n) - B(n) + C(n)                  ・・・(29)
【０２５５】
A(n)、B(n)の各成分はタイミング解析より所与であり、C(n)は遅延測定手続きにより測定済みであるため、Dtgtadj(n)が計算可能となる。
【０２５６】
なお、モニタクロックに関わる遅延V(n)は、計算過程で消失する。このことは、試験信号受信時と、観測対象受信時で、モニタクロックに関する経路は不変である、ことからも明らかである。
【０２５７】
なお、高速シリアルモニタの場合も同様にして、遅延補正値Dtgtadj(n)が負の値になることを防ぎ、ビット間のスキューを吸収させるために、実用上は、Dtgtadj(n)には、モニタクロックの整数倍の遅延を加算する修正項を含める必要がある。この遅延も含めたDtgtadj(n)の計算方法は、以下に示す手続きを行う過程で、自動的に考慮される。
【０２５８】
上記原理を用いて、パラレルモニタのあるモニタ面について、各モニタビットに適用すべき遅延補正値を測定する手続きを以下に説明する。以下の説明では、図２４を参照する。図２４は、パラレルモニタの遅延測定手続きを説明する図である。
【０２５９】
ビット間スキューを吸収し、ビット間のアラインメントを確保するために、アラインメントの基準になるビットを代表で1ビット選択する（以下基準ビットMと称する）。これは、どのビットであっても良い。
【０２６０】
図２４において、
（ａ）はモニタクロック（試験信号発生回路入力点）、
（ｂ）は試験信号発生回路出力、
（ｃ）はモニタクロック（ロジック解析端末ＦＩＦＯ地点）、
（ｄ）は試験信号（試験信号発生回路地点）、
（ｅ）はデータビットＭ（基準ビット）（遅延補正回路通過前）、
（ｆ）はデータビットＭ（基準ビット）（遅延補正回路通過後、１→０変化点探索開始直後）、
（ｇ）はデータビットＭ（基準ビット）（遅延補正回路後、１→０変化点探索完了時）、（ｈ）はデータビットＮ（従属ビット）（遅延補正回路通過前）、
（ｉ）はデータビットＮ（従属ビット）（遅延補正回路通過後、１→０変化点探索開始直後）、
（ｊ）はデータビットＮ（従属ビット）（遅延補正回路後、１→０変化点探索完了時）の波形である。
【０２６１】
（ｃ）のモニタクロックの（１）：１→０変化点探索開始直後であり、試験信号の極性が０→１に切り替わるエッジをビット間アラインの基準に設定する。
【０２６２】
（ｇ）の（１）：ビット間アライン基準エッジで取り込んだ信号の極性が１→０に切り替わったときに探索が完了する。
【０２６３】
（ｉ）において、従属ビットは遅延補正０から探索を開始する。
【０２６４】
（ｊ）の（１）：ビット間アライン基準エッジで取り込んだ信号の極性が１→０に切り替わったときに探索が完了する。
【０２６５】
図２５は、本発明の実施形態において、基準ビットＭの最適遅延補正量の計算手続きを示すフローチャートである。
【０２６６】
初めに、ホストコンピュータ（不図示）上で動作するソフトウェアは、観測対象ＦＰＧＡのタイミング解析結果を読み込む（ステップＳ１）。
【０２６７】
基準ビットＭについて、図２２の試験信号発生回路２０９を駆動するクロック源２０４から基準ビットＭのモニタデータピン２２０に至る経路の遅延解析結果Ａ（Ｍ）を検索し記憶する（ステップＳ２）。
【０２６８】
図２３において、モニタ面Ｘの観測対象ノードＭを駆動するクロック源２０４から基準ビットＭのモニタデータピン２２０に至る経路の遅延解析結果Ｂ（Ｍ）を検索し、記憶しておく（ステップＳ３）。
【０２６９】
遅延解析結果A(M) = Dclk_tst + Dtst_dmux(M) + Ddmux_mpn(M)               ・・・ (30)
【０２７０】
遅延解析結果B(M) = Dclk_tgt(M) + Dtgt_dmux(M) + Ddmux_tmux(M) + Dmux_mpin(M)                 ・・・ (31)
【０２７１】
次に、ホストコンピュータ４０上で動作するソフトウェア４０２は、観測対象ＦＰＧＡ２０に対してロジック解析端末３０を通じてモニタ面を試験信号面に切り替える指令を送信する（ステップＳ４）。
【０２７２】
ここで、遅延補正量が負となり、実現不可能となることを避けるために、遅延補正量の計算過程で、予め各ビットには、遅延補正回路（図２２、図２３の３０６）にて補正可能な最大遅延量の半分に相当する遅延オフセットを付加し、最終的に適用する遅延補正量が、最大遅延量の約半分の遅延量の付近に分布するようにする。
【０２７３】
このために、ホストコンピュータ４０上で動作するロジック解析ソフト（ソフトウェア）４０２は、ロジック解析端末３０内の遅延補正回路３０６に対して、設定可能な最大遅延の半分に相当する遅延を設定する指令を送信する（ステップＳ５）。なお、遅延補正回路３０６に設定可能な最大遅延量は、補正しようとする遅延量に比して十分に大きいものとする。
【０２７４】
この時点で、ロジック解析端末３０では試験信号が受信されていることから、ホストコンピュータ４０上で動作するロジック解析ソフトウェア４０２は、ロジック解析端末３０のRun/Stop/トリガ制御回路３１２に、Run指令(メモリ３１６への書き込み開始指令)を送信し、読み出し制御回路３１７を介して受信した試験信号の取り込みを行う。
【０２７５】
ホストコンピュータ４０上で動作するロジック解析ソフトウェア４０２は、取り込んだ試験信号を解析し、信号極性が0から1に変化しているモニタクロックのエッジを特定し、これを「基準エッジ」とする（ステップＳ６）。
【０２７６】
この基準エッジにより、タイムベース回路３１４内のカウンタ（不図示）を初期化し、以後、タイムベース回路３１４内のカウンタ（不図示）はモニタクロックに同期してカウント動作を行う。
【０２７７】
タイムベース回路３１４内のカウンタ（不図示）は試験信号と同じ周期（３２モニタクロック周期）で再び初期化し、このタイミングを、次の周期における基準エッジとする。
【０２７８】
ホストコンピュータ４０は、基準エッジを基準とすることで、試験信号の極性切り替わり点の変化を認識できることができる。
【０２７９】
次に、ホストコンピュータ４０上で動作するロジック解析ソフトウェア４０２は、ロジック解析端末３０内の遅延補正回路３０６に対して、遅延を1ステップ増加するよう指令を送信し、試験信号の取り込みを行う（ステップＳ７）。
【０２８０】
ここで、ビット間アライン基準エッジの発生時刻に受信した信号極性が１であるか０であるかの判別（基準エッジにおける信号極性が１→０に変化したか判別）を行い（ステップＳ８）、変化しない信号極性が０になるまで、ステップＳ７にて、遅延の１ステップずつ増加させる。
【０２８１】
ビット間アライン基準エッジにおける信号極性が0に変化したら、そのときの遅延量C(M)を記憶する（ステップＳ９）。
【０２８２】
次に、ホストコンピュータ４０上で動作するロジック解析ソフトウェア４０２は、以下の遅延量を計算する（ステップＳ１０）。
【０２８３】
遅延解析結果Ａ（Ｍ）− 遅延解析結果Ｂ（Ｍ）＋ 遅延量Ｃ（Ｍ）               ・・・ (32)
【０２８４】
この遅延量が、基準ビットに対するクロックエッジとデータエッジを揃えるための最適遅延補正量Dtgtadj(M)（図２３（Ｂ）参照）となる。
【０２８５】
基準ビットの最適遅延補正量の計算が完了したら、残りのすべてのモニタビット（以後「従属データビットN」）の最適遅延量の計算手続きを実行する。
【０２８６】
図２６は、従属ビットNの遅延補正量計算手順を説明するフローチャートである。
【０２８７】
遅延解析結果Ａ、Ｂを記憶するまでの手順は、図２５の基準ビットの手続き（ステップＳ１〜Ｓ３）と同様である（ステップＳ２１〜Ｓ２３）。
【０２８８】
次に、ホストコンピュータ４０上で動作するロジック解析ソフトウェア４０２は、観測対象ＦＰＧＡ２０に対してロジック解析端末３０を通じてモニタ面を試験信号面に切り替える指令を送信する（ステップＳ２４）。
【０２８９】
次に、ホストコンピュータ４０上で動作するロジック解析ソフトウェア４０２は、ロジック解析端末３０内の遅延補正回路３０６に対して、遅延量をゼロに設定する指令を送信する（ステップＳ２５）。この時点で、ロジック解析端末３０内の読み出し制御回路３１７を介して受信した試験信号の取り込みを行うと、基準エッジ時点では、試験信号の極性は1となっている。なお、「基準エッジ」は、基準ビットMの遅延測定時に確定したものを使用する。
【０２９０】
次に、ホストコンピュータ４０上で動作するロジック解析ソフトウェア４０２は、ロジック解析端末３０内の遅延補正回路３０６に対して、遅延を１ステップ増加するよう指令を送信し、試験信号の取り込みを行う（ステップＳ２６）。
【０２９１】
ここで、基準エッジの発生時刻に受信した信号極性が１であるか０であるかの判別を行い（ステップＳ２７）、信号極性が１であれば、ステップＳ２６に戻り、遅延の１ステップずつ増加させ、信号極性が０になるまで繰り返す。
【０２９２】
基準エッジにおいて信号極性が０に変化したら、そのときの遅延量Ｃを記憶する（ステップＳ２８）。
【０２９３】
次に、ホストコンピュータ４０上で動作するロジック解析ソフトウェア４０２は、次式（３３）の遅延量を計算する（ステップＳ２９）。
【０２９４】
遅延解析結果Ａ（Ｎ）− 遅延解析結果Ｂ（Ｎ）＋ 遅延量Ｃ（Ｎ）               ・・・ (33)
【０２９５】
この遅延量が、従属ビットに対するクロックエッジとデータエッジを揃えるための最適遅延補正量Dtgtadj(N)（図２３参照）となる。
【０２９６】
以上の計算手続きが完了したら、ホストコンピュータ４０上で動作するロジック解析ソフトウェア４０２は、ロジック解析端末３０を介して観測対象ＦＰＧＡ２０に観測対象モニタ面Ｘに切り替える指令を送信し、ロジック解析端末３０内の遅延補正回路３０６に、基準ビット及び従属ビット毎に、個別の最適遅延補正量Dtgtadj(N)を設定する指令を送信する。
【０２９７】
前記実施の形態では、図１３に示した観測対象となるＦＰＧＡ２０に実装されるべきモニタ回路の構成は、１個のＦＰＧＡ（すなわち１つの半導体チップ）上に、観測対象となる回路（当該ＦＰＧＡに要求される機能を実現する回路）とともに実装するものとしたが、ＦＰＧＡのＩ／Ｏピンを利用してモニタ回路の一部を切り出し、別のチップに実装しても良い。このようにすることで、観測対象となる回路の配置配線の難易度を一段と下げ、デバッグが完了したならば、モニタ回路の一部を実装したチップを観測対象基板から外すことにより、観測対象基板の製造コストや消費電力、寸法などの削減に役立つものと期待される。
【０２９８】
特に、近時、複数の半導体チップを積層し、Ｉ／Ｏピンとパッケージを共通化した素子も開発されている。そこで、積層チップの片方に観測対象となる回路を実装し、他方には、モニタ回路を実装した状態で開発を実行する。そして、モニタ回路が不要となったならば、観測対象となる回路が実装されるチップのみを封止した素子に切り替える。このようにすることで、観測対象基板のレイアウトの改版を行うことなく、製造コストや消費電力を下げることができるものと期待される。
【０２９９】
また、上記実施形態では、高速シリアルモニタ（シリアル送信回路を含むモニタ回路）は、観測対象ノードが存在するＦＰＧＡと同一チップ上に存在するため、途中に不確定な遅延要素がない。このため、遅延補正は、試験信号を用いずにタイミング解析結果のみを用いて計算している。何らかの理由により途中の経路に不確定な遅延要素が入る場合には、実施の形態のパラレルモニタと同様に試験信号を用いて、遅延補正値を決めるようにしても良い。
【０３００】
また、上記実施形態では高速シリアルモニタとパラレルモニタを併設するものとしたが、どちらか一方のみを実装することにしても良い。これにより、シリアル送信回路を搭載しないＦＰＧＡや、シリアル送信回路は搭載しているが、パラレルモニタを実装するには、Ｉ／Ｏピンが不足のＦＰＧＡでも、本発明を適用可能となる。
【０３０１】
また、上記実施形態ではシリアル送信回路、高速シリアル受信回路の数は１対としたが、これらの数を任意に増やして、より多くのモニタデータを同時に観測できるようにしても良い。
【０３０２】
また、上記実施形態では解析対象基板とロジック解析端末との接続に用いるコネクタとケーブルには高速シリアル伝送に対応するために、特性インピーダンスが規定された製品を用いている。そのような製品を用いたとしても、現時点の技術水準で最も高い伝送帯域を有するトランシーバ(例としては、28.05Gbps）と組み合わせて使用するのは困難な可能性がある。そこで、電気的な接続を用いる代わりに、光伝送を利用してもよい。具体的には、コネクタとしてＳＦＰ（small form-factor pluggable:スモールフォームファクタプラガブル）コネクタを用いてＯ／Ｅ(optic-electric:光電）変換を行い、ケーブルとして光ファイバを用いるようにしても良い。
【０３０３】
図１３に示したＦＰＧＡ２０にはＪＴＡＧ  ＩＦ２１６が搭載されているので、この機能を利用してホストコンピュータ４０から開発対象ＦＰＧＡへの設定データの設定（コンフィギュレーション）や、その他のJTAG機能を利用するための用途に使用できるように変形しても良い。具体的には、公知の製品「USB Blaster」（アルテラコーポレイション製）や「Platform Cable USB II」（ザイリンクス  インコーポレイテッド製）などの製品が提供する機能を、ロジック解析端末に取り込んでも良い。
【０３０４】
上記実施形態によれば、モニタ回路にかかわるＦＰＧＡの配置配線資源の利用や、モニタ回路にかかわるＦＰＧＡのＩ／Ｏピンの使用数を抑え、観測対象となるＦＰＧＡ全体の配置配線の難易度を上げることなく、モニタ回路を実装することが可能となる。
【０３０５】
また、上記実施形態によれば、グリッチの発生による観測信号の劣化やバス信号におけるビット間スキューの少ない観測対象信号とすることで、信号の観測性を高く保つことができる。
【０３０６】
上記実施形態によれば、ロジックアナライザを不要として容易に持ち運ぶことができるロジック解析システムを得ることができる。
【０３０７】
なお、上記特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０３０８】
１  半導体装置
１０  観測対象基板
１１  クロック源
１２  コネクタ
１３  ケーブル
１４  基板配線
２０  ＦＰＧＡ（観測対象ＦＰＧＡ）
２１  フリップフロップ
２２  モニタデータマルチプレクサ（ＭＵＸ）
２３  モニタデータピン（モニタピン）
２４  モニタクロックピン
２５  クロック源
３０  ロジック解析端末
４０  ホストコンピュータ
５０  ロジックアナライザ
１０１  ＬＥ
１０２  インターコネクト
１０３  Ｉ／Ｏピン
１１０  ＬＵＴ
１１１  ＳＲＡＭセル
１１２  マルチプレクサ
１１３  フリップフロップ（Ｄ−ＦＦ）
１２０  フリップフロップ（Ｄ−ＦＦ）
１２１、１２２  組み合わせ論理回路
１２３  ＡＮＤゲート
１２４  中間経路
１２５  モニタピン
１３１−１３３  ２入力ＬＵＴ
２００  観測対象回路
２０１  フリップフロップ
２０２  組み合わせ論理回路
２０３  パラレルモニタ対象信号
２０４  クロック源
２０５、２０６  モニタデータマルチプレクサ
２０７  モニタクロックマルチプレクサ
２０８  試験信号マルチプレクサ
２０９  試験信号発生回路
２１０  回路ブロック
２１１  遅延補正回路
２１２  マルチプレクサ
２１３  デュアルクロックFIFO
２１４  ビット幅・レート変換部
２１５  シリアル送信回路
２１６  ＪＴＡＧ  ＩＦ
２２０  パラレルモニタピン（モニタ出力）
２２１  モニタデータピン
２２２  入出力ピン
２２３  モニタクロックピン（モニタクロック出力）
２３０  ケーブル
３００  コネクタ
３０２  パラレルモニタピン
３０３  モニタクロック入力
３０４  シリアルモニタ入力
３０５  ＪＴＡＧブリッジ
３０６  遅延補正回路
３０７  シリアル受信回路
３０８  マルチプレクサ
３０９  クロックマルチプレクサ
３１０、３１１  デュアルクロックＦＩＦＯ
３１２  Run/Stop/トリガ制御回路
３１３  メモリクロック（クロック源）
３１４  タイムベース回路
３１５  タイムスタンプ付加回路
３１６  メモリ
３１７  読み出し制御回路
３１８  ホストＩ／Ｆ
３１９、４０１  ＵＳＢコネクタ
４０２  ロジック解析ソフトウェア
【図１】
0006446937.tif 000003
【図２】
0006446937.tif 000004
【図３】
0006446937.tif 000005
【図４】
0006446937.tif 000006
【図５】
0006446937.tif 000007
【図６】
0006446937.tif 000008
【図７】
0006446937.tif 000009
【図８】
0006446937.tif 000010
【図９】
0006446937.tif 000011
【図１０】
0006446937.tif 000012
【図１１】
0006446937.tif 000013
【図１２】
0006446937.tif 000014
【図１３】
0006446937.tif 000015
【図１４】
0006446937.tif 000016
【図１５】
0006446937.tif 000017
【図１６】
0006446937.tif 000018
【図１７】
0006446937.tif 000019
【図１８】
0006446937.tif 000020
【図１９】
0006446937.tif 000021
【図２０】
0006446937.tif 000022
【図２１】
0006446937.tif 000023
【図２２】
0006446937.tif 000024
【図２３】
0006446937.tif 000025
【図２４】
0006446937.tif 000026
【図２５】
0006446937.tif 000027
【図２６】
0006446937.tif 000028