(57)【特許請求の範囲】
【請求項１】
入力信号を受信するロジックを含む設計回路の記述を受け取るステップと、
入力信号及び遅延入力信号をマルチプレクスしてそれらを前記ロジックに与えるためのマルチプレクサ、及び前記ロジックからの出力信号及び遅延出力信号をデマルチプレクスするためのデマルチプレクサの記述を含む付加的な記述を、少なくとも１つのコンピュータプログラムを通して発生するステップと、
前記遅延出力信号の一部分を、シミュレータの初期条件信号として使用するために与えて、前記設計回路の少なくとも一部分を含む回路のシミュレーションを遂行するステップとを備え、
前記入力信号と遅延入力信号とが互いの間の時間遅延とともに同じ情報を担持し、前記記述を受信するステップと前記付加的記述を発生するステップが回路設計表現に対して実行され、該表現が、前記受信と前記発生を実行するプロセッサを含むコンピュータシステムのメモリに格納されている、ことを特徴とする方法。
【請求項２】
前記付加的な記述は、入力信号を受信して遅延入力信号を与えるための遅延回路の記述を含む、請求項１に記載の方法。
【請求項３】
前記遅延回路からの遅延入力信号の一部分をシミュレータへの入力信号として与えて、前記設計回路の少なくとも一部分を含む回路のシミュレーションを遂行するステップを更に備えた、請求項２に記載の方法。
【請求項４】
トリガー信号に応答して、前記遅延回路が凍結され、そして前記遅延入力信号の幾つかは、シミュレータにより使用されて、前記設計回路の少なくとも一部分を含む回路のシミュレーションを遂行するために与えられる、請求項２に記載の方法。
【請求項５】
前記遅延回路、マルチプレクサ、ロジック及びデマルチプレクサに第１クロック信号が与えられる、請求項３に記載の方法。
【請求項６】
前記記述の発生は、少なくとも１つの前記プログラムを実行する前記コンピュータシステムへの少なくとも１つのコマンドに応答して行われる、請求項１に記載の方法。
【請求項７】
前記設計回路は、前記ロジックに入力信号を与えるためのレジスタの第１グループと、前記ロジックからの出力信号を受信するためのレジスタの第２グループとを備え、更に、前記付加的な記述は、マルチプレクサを前記レジスタの第１グループと前記ロジックとの間に入れると共に、デマルチプレクサを前記ロジックと前記レジスタの第２グループとの間に入れる、請求項１に記載の方法。
【請求項８】
前記設計回路の記述は、第２ロジックを含み、そして前記付加的な記述は、この第２ロジックの入力信号及び遅延入力信号を時分割マルチプレクシングするために第２マルチプレクサ／デマルチプレクサ対の記述を含む、請求項１に記載の方法。
【請求項９】
前記設計回路の記述は、入力信号の第２グループを受信するための第２ロジックを含み、そして前記付加的な記述は、複製第２ロジックと、前記入力信号の前記第２グループを遅延させて、前記複数第２ロジックに与えるための遅延回路との記述を含み、更に、トリガー条件に応答して、前記遅延回路の信号は、前記設計回路の少なくとも一部分を含む回路をシミュレーションするためのシミュレータへの入力信号として与えられ、そして前記複製第２ロジックの幾つかのコンテンツは、前記シミュレータへの初期条件信号として与えられる、請求項１に記載の方法。
【請求項１０】
前記設計回路は、更に、メモリ入力信号を受信するための設計メモリを備え、そして前記付加的な記述は、前記メモリ入力信号の少なくとも幾つかを、それらが遅延された後に受信するための複製メモリの記述を含む、請求項１に記載の方法。
【請求項１１】
前記付加的な記述は、前記複製メモリのコンテンツにアクセスするためのアクセス回路の記述を含む、請求項１０に記載の方法。
【請求項１２】
前記複製メモリは、前記設計回路の一部分のオペレーションをシミュレーションするために初期条件信号を与え、そして前記遅延回路は、シミュレーションのための入力信号を与える、請求項１０に記載の方法。
【請求項１３】
前記設計回路は、レジスタ入力信号を受信するための設計レジスタを含み、そして前記付加的な記述は、遅延されたレジスタ入力信号を受信するための複製レジスタの記述を含む、請求項１に記載の方法。
【請求項１４】
実行時に、コンピュータが、
請求項２ないし１３に記載のいずれか１つの動作を実行するプログラムを含む
コンピュータ可読記録媒体。
【請求項１５】
入力信号及び遅延入力信号をロジックへマルチプレクスするためのマルチプレクサと、前記ロジックからの出力信号及び前記ロジックからの遅延出力信号をデマルチプレクスするためのデマルチプレクサとを含むチップを含むハードウエアデバイスを動作させるステップであって、前記遅延入力信号が、前記入力信号と同じ情報を担持しており、かつ遅延回路を通して前記入力信号を遅延することによって発生されるようになっているステップと、
トリガー条件を検出するステップと、
前記遅延出力信号の一部分を初期条件信号として与え且つ前記遅延回路からの遅延入力信号の幾つかをシミュレータの入力信号として与えて、前記ロジックを含む回路のオペレーションをシミュレーションするステップと、
を備えた方法。
【請求項１６】
前記シミュレータは、トリガー条件まで導く前記ハードウエアデバイスのオペレーションをシミュレーションする、請求項１５に記載の方法。
【請求項１７】
入力信号を受信してそれをマルチプレクサに与えるためのレジスタの第１グループと、  遅延入力信号をマルチプレクサに与えるための遅延回路と、
前記マルチプレクサからマルチプレクスされた入力信号及び遅延入力信号を受信して、マルチプレクスされた出力信号及び遅延出力信号を与えるためのロジックであって、
前記入力信号と遅延入力信号とが互いの間の時間遅延ととともに同じ情報を担持しているロジックと、
前記ロジックからの出力信号及び遅延出力信号をデマルチプレクスするためのデマルチプレクサと、
前記ロジックにおいてトリガー条件を検出するのに応答してトリガー信号を発生するためのトリガー回路と、
前記デマルチプレクサから遅延出力信号を受信するためのレジスタの第２グループと、を備え、
前記トリガー信号に応答して、前記遅延回路とレジスタの第２グループとが凍結され、かつ前記遅延回路のコンテンツが入力信号として、前記レジスタの第２グループの遅延出力信号が初期条件信号として、それぞれ前記ロジックを含む回路をシミュレートするためのシミュレータに与えられるようになっていることを特徴とするハードウエアデバイス。
【請求項１８】
前記ロジックにおいてトリガー条件を検出するのに応答してトリガー信号を発生するためのトリガー回路と、前記デマルチプレクサから遅延出力信号を受信するためのレジスタの第２グループとを更に備えた、請求項１７に記載のハードウエアデバイス。
【請求項１９】
前記全体ハードウエアデバイスに対する入力信号及び遅延入力信号を時分割マルチプレクシングするために１つ以上の第２ロジックをサンドイッチする１つ以上の第２マルチプレクサ／デマルチプレクサ対を更に備えた請求項１８に記載のハードウエアデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般に、自動回路設計及び／又は回路シミュレーションに係る。
【０００２】
関連出願：本出願は、２００７年５月９日に出願された米国プロビジョナル特許出願第６０／９１７，０１５号（代理人管理番号０２９８６．Ｐ０６４Ｚ）、２００７年５月９日に出願された米国プロビジョナル特許出願第６０／９１７，０２４号（代理人管理番号０２９８６．Ｐ０６６Ｚ）、２００７年５月９日に出願された米国プロビジョナル特許出願第６０／９１７，０２７号（代理人管理番号０２９８６．Ｐ０６７Ｚ）、及び２００７年５月９日に出願された米国プロビジョナル特許出願第６０／９１７，０３３号（代理人管理番号０２９８６．Ｐ０６８Ｚ）の利益を主張するもので、これらの出願は、参考としてここにそのまま援用される。本出願は、２００８年５月８日に出願された“Techniques for Use with Automated Circuit Design and Simulations”と題する特許出願第１２／１１７，７０５号（代理人管理番号０２９８６．Ｐ０６６）、２００８年５月８日に出願された“Techniques for Use with Automated Circuit Design and Simulations”と題する特許出願第１２／１１７，６９３号（代理人管理番号０２９８６．Ｐ０６４）、及び２００８年５月８日に出願された“Techniques for Use with Automated Circuit Design and Simulations”と題する特許出願第１２／１１７，７１４号（代理人管理番号０２９８６．Ｐ０６８）と同日に出願されている。これら４つの特許出願は、本節、名称、概要部分、請求の範囲、及び要約書を除いて、同じである。
【背景技術】
【０００３】
幾つか例を挙げると、パーソナルコンピュータ、埋め込み型コントローラ、セルラー電話及び他の通信装置を含む種々様々なシステムに集積回路（ＩＣ又はチップ）が使用されている。回路設計者は、回路設計及びシミュレーションのためにコンピュータ支援技術をしばしば使用する。複雑なデジタル回路の設計及びシミュレーションに役立つようにデジタル回路を記述するために、ハードウェア記述言語（ＨＤＬ）のような標準的言語が開発された。これに限定されないが、ＶＨＤＬ及びＶｅｒｉｌｏｇを含む多数のハードウェア記述言語が工業標準として発展している。ＶＨＤＬ及びＶｅｒｉｌｏｇは、抽象的データ形式を使用してゲートレベル、レジスタ転送レベル（ＲＴＬ）又は振舞いレベルでハードウェアモデルを定義できるようにする汎用ハードウェア記述言語である。装置技術が進歩し続けるにつれて、新規な装置及び設計スタイルに使用するようにＨＤＬを適応させるために種々の製品設計ツールが開発された。
【０００４】
ＨＤＬコードで集積回路を設計する際に、先ず、コードが書かれ、ＨＤＬコンパイラーでコンパイルされる。ＨＤＬソースコードは、あるレベルで回路エレメントを記述し、そしてコンパイラーが、このコンピレーションからＲＴＬネットリストを形成する。ＲＴＬネットリストは、典型的に、現場でプログラム可能なゲートアレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ）のような特定ベンダー集積回路のテクノロジー／アーキテクチャーとは独立しているという点で、テクノロジー的に独立したネットリストである。ＲＴＬネットリストは、回路エレメントの概略表現に対応する（振舞い表現に対抗して）。次いで、相関（マッピング）オペレーションを遂行して、テクノロジー的に独立したＲＴＬネットリストから、ベンダーのテクノロジー／アーキテクチャーで回路を形成するのに使用できるテクノロジー特有のネットリストへと変換する。ＦＰＧＡベンダーは、異なるテクノロジー／アーキテクチャーを使用して、それらの集積回路内で論理回路を具現化する。従って、テクノロジー的に独立したＲＴＬネットリストは、特定ベンダーテクノロジー／アーキテクチャーに対して特有のネットリストを形成するようにマップされる。
【０００５】
ＨＤＬコードが書かれてコンパイルされた後に、集積回路（ＩＣ又はチップ）、或いは複数のＩＣを含むシステムの設計が正しいことが検証される。進歩し続ける処理技術及びそれに対応する設計サイズ及び複雑さの急増は、これに限定されないが慣習的なシミュレーションツール及び技術を使用して解決するのが困難なＡＳＩＣのような複雑な回路設計に対する検証の問題を招いた。現在のシミュレーションツールは、例えば、ＭｏｄｅｌＳｉｍ、ＶＣＳ及びＮＣＳＩＭシミュレーションツールを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
その結果、何人かの設計者は、ＡＳＩＣ設計を検証するために、ＦＰＧＡのような複数のＩＣを使用してプロートタイプボードを構築した。しかしながら、ハードウェア設計のデバッグに伴う問題が依然ある。デバッグ中にエラーが検出されると、設計者は、回路から当該信号を取り出し、そして論理分析器を使用してエラーの原因を決定するように試みることができる。ＪＴＡＧ（ジョイントテストアクショングループ）は、サブブロックに関する情報へのアクセスを得ることにより集積回路のサブブロックをテストし、デバッグするための良く知られた技術である。しかしながら、これは、困難なプロセスであると共に、特に、断続的なエラーがある場合には、しばしば有効でない。シミュレータを使用して、エラーをデバッグすることができる。しかしながら、既に発生したエラーは、それを繰り返し且つ再構成することがしばしば困難である。更に、複雑さにもよるが、シミュレーションでは、エラーが発生したポイントを得るのに実質的な量の時間を要する。
【課題を解決するための手段】
【０００７】
幾つかの実施形態における方法は、入力信号を受信するロジックを含む設計回路の記述を受け取ることを含む。この方法は、更に、入力信号及び遅延入力信号をマルチプレクスしてそれらをロジックに与えるためのマルチプレクサ、及びロジックからの出力信号及び遅延出力信号をデマルチプレクスするためのデマルチプレクサの記述を含む付加的な記述を、少なくとも１つのコンピュータプログラムを通して発生することも含む。
【０００８】
幾つかの実施形態における方法は、ロジックへの入力信号及び遅延入力信号をマルチプレクスするためのマルチプレクサ、及びロジックからの出力信号及びロジックからの遅延出力信号をデマルチプレクスするためのデマルチプレクサを含むチップを動作することを含み、遅延入力信号は、遅延回路を通して入力信号を遅延することにより発生される。この方法は、更に、トリガー条件を検出し、そして遅延出力信号の一部分を初期条件信号として与えると共に、遅延回路からの遅延入力信号の幾つかをシミュレータの入力信号として与えて、ロジックを含む回路の動作をシミュレーションすることも含む。
【０００９】
幾つかの実施形態におけるチップは、入力信号を受信してそれらをマルチプレクサに与えるためのレジスタの第１グループと、遅延入力信号をマルチプレクサに与えるための遅延回路とを含む。このチップは、更に、マルチプレクサからのマルチプレクスされた入力信号及び遅延入力信号を受信しそしてマルチプレクスされた出力信号及び遅延出力信号を与えるためのロジックと、このロジックからの出力信号及び遅延出力信号をデマルチプレクスするためのデマルチプレクサとを備えている。
【００１０】
他の実施形態も、以下に述べるようにソフトウェアを実行し又は信号を処理する方法、装置、システム、チップ、ソフトウェア、信号、及びコンピュータにおいて具現化することができる。
【００１１】
本発明の実施形態は、以下の説明、及び本発明の実施形態を示すために使用される添付図面を参照することにより、理解することができよう。しかしながら、本発明は、これら図面の細部に限定されない。
【図面の簡単な説明】
【００１２】
【図１】本発明の幾つかの実施形態によるコンピュータ、インターフェイス及びチップを備えたシステムのブロック図である。
【図２】本発明の幾つかの実施形態によるコンピュータ、製造装置、インターフェイス及びチップを備えたシステムのブロック図である。
【図３】本発明の幾つかの実施形態によりチップを構成又は製造するためのファイルを発生するプログラムの種々の観点を示すフローチャートである。
【図４】本発明の幾つかの実施形態によりチップを動作する種々の観点を示すフローチャートである。
【図５】本発明の幾つかの実施形態によるシミュレータにおいて初期条件信号及び入力信号を使用する種々の観点を示すフローチャートである。
【図６】本発明の幾つかの実施形態によるチップにおける関連回路を伴うロジック及び複製ロジックを示すブロック図である。
【図７】本発明の幾つかの実施形態によるチップにおけるロジック及び関連回路、並びに別のチップにおける複製ロジック及び関連回路を示すブロック図である。
【図８】本発明の幾つかの実施形態による関連回路を伴うロジック及び複製ロジックを示すブロック図である。
【図９】本発明の幾つかの実施形態の種々の観点を示すフローチャートである。
【図１０】本発明の幾つかの実施形態によるＲＡＭハードウェア置き換えを示すブロック図である。
【図１１】本発明の幾つかの実施形態により非同期クロック信号間の位相関係を決定するためのシステムを示すブロック図である。
【図１２】図１１のシステムに対するタイミング図である。
【図１３】図１１のシステムに対するタイミング図である。
【図１４】本発明の幾つかの実施形態により非同期クロック信号間の位相関係を決定するためのシステムを示すブロック図である。
【図１５】図１４のシステムに対するタイミング図である。
【図１６】本発明の幾つかの実施形態により非同期クロック信号間の位相関係を決定するためのシステムを示すブロック図である。
【図１７】図１６のシステムに対するタイミング図である。
【図１８】本発明の幾つかの実施形態による設計モジュール、複製モジュール及び関連回路を示すブロック図である。
【図１９】本発明の幾つかの実施形態による設計モジュール、複製モジュール及び関連回路を示すブロック図である。
【図２０】本発明の幾つかの実施形態による設計モジュール、複製モジュール及び関連回路を示すブロック図である。
【図２１】本発明の幾つかの実施形態によるスナップショット解決策に使用される回路を伴うチップを示すブロック図である。
【図２２】本発明の幾つかの実施形態による図１９のチップの一部分を例示するブロック図である。
【図２３】本発明の幾つかの実施形態による図２１のチップの一部分を例示するブロック図である。
【図２４】本発明の幾つかの実施形態による図２２の回路の一部分を例示するブロック図である。
【図２５】本発明の幾つかの実施形態による図２３の回路の一部分を例示するブロック図である。
【図２６】本発明の幾つかの実施形態による図２１のチップの一部分を例示するブロック図である。
【図２７】本発明の幾つかの実施形態によるスナップショット解決策に使用される回路を伴うチップを示すブロック図である。
【図２８】本発明の幾つかの実施形態による時分割マルチプレクサ解決策に使用される回路を伴うチップを示すブロック図である。
【図２９】本発明の幾つかの実施形態による図２８のシステムに対するタイミング図である。
【図３０】本発明の幾つかの実施形態による図２８のシステムに対するタイミング図である。
【図３１】本発明の幾つかの実施形態による時分割マルチプレクサ解決策に使用される回路を伴うチップを示すブロック図である。
【図３２】本発明の幾つかの実施形態による時分割マルチプレクサ解決策に使用される回路を伴うチップを示すブロック図である。
【図３３】図３２のシステムに対するタイミング図である。
【図３４】本発明に使用される例示的コンピュータシステムを示す。
【発明を実施するための形態】
【００１３】
以下の説明及び添付図面は、本発明の実施形態を例示するもので、本発明を何ら限定するものではない。本発明の実施形態を理解するために、多数の特定の細部について説明する。しかしながら、ある場合には、本発明を不明瞭にしないために良く知られた又は従来の細部は説明しない。
【００１４】
ここに述べる本発明の幾つかの実施形態は、エラー、又は他の当該事象が発生する前の時点において疑わしいロジック設計の状態を捕捉することを含む。この開示は、本発明の３つのカテゴリ、即ち（１）ロジック複製解決策、（２）スナップショット解決策、及び（３）時分割マルチプレクサ解決策、を網羅するものである。更に、本発明のいずれのカテゴリにも使用できる本発明の多数の特徴がある（セクションIIIで述べる）。本発明の幾つかの実施形態は、２つ以上の解決策及び２つ以上の付加的な列挙された特徴を含む。他の実施形態は、回路を設計し、初期条件信号及び入力信号をチップから抽出し、そして初期条件信号及び入力信号をシミュレーションに使用するためのプログラムを含む。ここで使用する「チップ」という語は、「モジュール」を含む。次の目次は、この開示のあらましを示す。
Ｉ．システムの概略
II．ロジック複製解決策
III.幾つかの実施形態のための付加的な特徴
Ａ．機能的に同等であるが異なる複製モジュール
Ｂ．シミュレータにおいて初期条件をＨＤＬコードに相関
Ｃ．ハードウェア置き換えのリストの作成
Ｄ．内部状態へのアクセス
Ｅ．公式検証フロー技術
Ｆ．区画化
Ｇ．ブラックボックス
Ｈ．マルチクロックドメイン
Ｉ．低速クロックを高速クロックでサンプリング
Ｊ．低速クロックから発生された信号を高速クロックでサンプリング
Ｋ．個別のＦＰＧＡ又はＡＳＩＣにおける複製
IV．スナップショット解決策
Ｖ．時分割マルチプレクサ解決策
VI．付加的な情報及び実施形態
【００１５】
この開示は、ここに述べる種々の発明の１つ以上の具現化を指すために「幾つかの実施形態において」及び「他の実施形態において」という句を使用する。「幾つかの実施形態」を指すときには、必ずしも、そのたびに同じ実施形態を指していない。ある方法、装置、システム及びチップは、２つ以上の実施形態を含むことがある。
【００１６】
Ｉ．システムの概略
ロジック設計をテストすることは、ランニングシミュレーションにより故障が分析される重要なステップである。実際のエラーを招く初期条件及び入力のセットをシミュレーションに使用して、問題を再現し、設計者が最終的にそれを取り除く解決策を発見できるようにする。例示的構成では、故障が生じるまでチップがテストされる。又、チップは、故障を招く入力及び条件を記録できるようにインターフェイスによって接続もされる。次いで、情報は、シミュレーションプログラムへ供給され、問題の原因を分析する。
【００１７】
図１を参照すれば、チップ（又はモジュール）１４は、インターフェイス１６（ＪＴＡＧインターフェイスでよい）を通してコンピュータ２０にインターフェイスする。幾つかの実施形態では、チップ１４は、コンピュータ２０のプログラムによりＪＴＡＧインターフェイス１６を通して構成されたゲートアレイを備えている。この構成は、ＪＴＡＧインターフェイスを通してチップの種々の信号を目に見えるようにする。ここに詳細に述べるように、チップ１４が構成された後、エラー又は別の当該事象が発生する回路で初期条件信号（初期条件）及び入力信号を収集するように動作が行われる。本発明の幾つかの実施形態では、トリガー条件（例えば、エラー条件）が生じるまで入力信号が遅延され、そしてその遅延された信号が凍結される。ある複製又は追加レジスタ（及び幾つかの具現化では、他のメモリ）のコンテンツは、遅延されて凍結された入力信号のグループの開始又はその付近におけるレジスタ（及び他のメモリ）のコンテンツである初期条件を保持する。遅延された入力信号は、次いで、トリガー条件を導く入力信号となる。初期条件及び入力信号をシミュレータに与えて、トリガー条件を導く当該回路の動作を（とりわけ）シミュレーションすることができる。
【００１８】
初期条件及び入力信号は、ＪＴＡＧインターフェイス１６を通してコンピュータ２０のシミュレータへ与えられる。一般的に、データは、インターフェイスからシミュレータへ直接与えられるのではなく、別のソフトウェアプログラムを通して与えられる。シミュレータは、メモリ２４に記憶されてプロセッサ２２で実行されるソフトウェアプログラムを含む。初期条件及び入力信号のために、シミュレータは、チップを詳細にシミュレーションして、エラー又は他の当該事象の性質を発見するよう試みることができる。従って、シミュレータは、デバッグ及び他の目的で使用することができる。プログラミング及び構成を行うコンピュータは、必ずしも、シミュレーションを行うコンピュータではない。他の実施形態では、ゲートアレイが含まれず、ＪＴＡＧ以外のインターフェイスが使用されない。
【００１９】
故障を分析するには、早期のデータ伝播がしばしば必要とされる。というのは、故障が発生すると、データが著しく変化して故障の原因を覆ってしまうからである。更に、データ処理は、後方に実行することが困難であり、従って、データの後方追跡を行って初期のデータを検索することはできない。ある例示的構成では、遅延入力を有し、従って、エラーの早期兆候を与えてシミュレーションを踏み出せるようにする新規なチップモジュールが製造される。
【００２０】
図２は、チップ（又はモジュール）３８を製造するための製造装置４０へチップ製造ファイル（１つ又は複数）を与えるプログラム（１つ又は複数）をコンピュータ３０が備えたシステムを示す。図１のコンポーネントは、２つ以上のコンピュータ、及び製造装置の種々の断片を異なる位置に備え、異なる時間に動作することができる。チップ３８が製造された後に、エラー又は別の当該事象が発生する回路に関連した初期条件及び入力信号を収集するように動作が行われる。初期条件及び入力信号は、インターフェイス４２を通してコンピュータ３０のシミュレータに与えられる。シミュレータは、メモリ３４に記憶されてプロセッサ３２で実行されるソフトウェアプログラムを含む。初期条件及び入力信号のために、シミュレータは、チップを詳細にシミュレーションして、エラー又は他の当該事象の性質を発見するよう試みることができる。製造ファイル（１つ又は複数）を与えるコンピュータ（１つ又は複数）は、必ずしも、シミュレーションを行うコンピュータではない。
【００２１】
幾つかの実施形態に関連したプロセスの概略は、次の通りである。しかしながら、他の実施形態では、細部が列挙されたものとは異なることがある。設計者は、ソースコードにおける１つ以上のモジュールを分析のために選択できる。デバッグハードウェアに対するトリガーとして使用するために幾つかの信号を選択することができる。これら信号の状態は、デバッグハードウェアをトリガーするための厳密な条件を定義するために設計者により指定することができる。デバッグハードウェアが合成され、ネットリストが作成され、最終的な設計がプレース・アンド・ルートを通して進められる。これらのプロセスに対して種々のソフトウェアツールが使用される。例えば、合成ツールは、ハードウェア合成に使用される。次いで、設計は、ＦＰＧＡ又はＡＳＩＣのようなハードウェア装置に入れられる。ハードウェアが実行される。トリガー条件が検出されると、全てのデバッグハードウェアは、デバッグハードウェアにおいて遅延のために使用される先入れ先出し回路（ＦＩＦＯ）と共に、凍結される。ＦＩＦＯ及びデバッグハードウェアの状態は、制御コンピュータによって取得される。この情報は、ソフトウェアシミュレータにより使用できるフォームへ変換される。設計は、シミュレータへインポートされ、そして初期条件信号及び入力信号が印加される。設計者又は別の個人（１人又は複数）は、シミュレータを使用して、ハードウェアモジュールをデバッグすることができる。異なる具現化においては、人・対・プログラムによる自動化が異なるレベルで含まれる。
【００２２】
ここに述べる回路は、幾つか挙げると、マイクロプロセッサ、埋め込み型コントローラ、チップセット、セルラー電話チップ、を含む種々の形式のチップに使用することができる。
【００２３】
図３は、チップを構成又は製造するためのファイル（１つ又は複数）を作成するフローチャートである。コンピュータ２０又は３０におけるプログラム（１つ又は複数）は、回路の機能及びレイアウト、或いは回路の他の記述のファイル（１つ又は複数）を作成する（ブロック５０）。あるケースでは、記述は、回路の機能及びレイアウトの完全な記述に満たないものを含んでもよい。この開示のセクションＩ．からVI．に述べる解決策の１つ以上に対して適宜に回路を含むようにファイル（１つ又は複数）が改訂されるか又は新規なファイル（１つ又は複数）が作成される（ブロック５２）。例えば、プログラム（１つ又は複数）は、回路（設計回路又はオリジナル回路と称される）の記述を分析し、そしてその分析で得られた少なくとも幾つかの情報を使用して、回路の改訂ファイル又は新規なファイルのための付加的な記述を発生する。又、設計回路の記述に加えて、種々の他の情報を使用して、新規な回路を作成することができる。記述の分析の程度は、どれほど多くの情報が分析プログラム（１つ又は複数）に別々に与えられるか、及びプログラム（１つ又は複数）がそれ自身で収集しなければならないのはどれほど多く情報であるか、を含む種々のファクタに依存する。又、分析の程度は、プログラムに与えられる特定のコマンドに基づいて変化してもよい。あるコマンドは、他のコマンドより多くの分析を伴う。分析の範囲は、具現化及び他の状況に基づいて、広範囲から比較的僅かまで変化してもよい。
【００２４】
改訂ファイル（１つ又は複数）は、ブロック５０の場合と同じプログラム（１つ又は複数）によって作られてもよいし、又は異なるプログラム（１つ又は複数）によって作られてもよい。例えば、改訂ファイルは、複製回路コンポーネントを指定してもよい。チップ構成又は製造ファイルは、改訂ファイルに基づいて作成される（ブロック５４）。次いで、チップは、構成又は製造ファイルに応答して構成又は製造される（ブロック５６）。
【００２５】
ここに述べる回路を表現するための種々の技術が存在する。簡単な概略を以下に述べる。例えば、回路のテキスト表現（例えば、ＨＤＬでの）は、第１レジスタ転送レベル（ＲＴＬ）ネットリストを作成するようにコンパイルされる。ＲＴＬネットリストは、テキスト表現で記述された回路を通るデータの流れを示すために相互接続されたレジスタ及び他のロジックを示すことができる。コンパイラーの一例は、ロジック合成コンパイラーであり、これは、典型的に、汎用コンピュータシステムで動作するコンピュータプログラムであるが、幾つかの実施形態では、コンピュータシステムは、専用の特殊目的コンピュータシステムでよい。ロジック合成コンパイラーの一例は、カリフォルニア州サニーベールのSynplicity Inc.からの“Ｓｙｎｐｌｉｆｙ（登録商標）”である。
【００２６】
第１のＲＴＬネットリストは、回路をデバッグするプロートタイプボードを作成するために、ＦＰＧＡのようなターゲットアーキテクチャーと相関させることができる。ターゲットアーキテクチャーは、典型的に、集積回路の供給者により決定される。ターゲットアーキテクチャーは、例えば、Altera、Xilinx、Lucent Technology、Advanced Micro Devices(AMD)、及びLattice SemiconductorのようなベンダーからのＦＰＧＡ及び複雑なプログラム可能なロジック装置を含む。相関（マッピング）オペレーションは、希望の回路のＲＴＬレベル記述を、ターゲットアーキテクチャーの構築ブロックを使用して具現化された等価回路へと変換することができる。テクノロジー特有のネットリストを作成することができる。次いで、プレース・アンド・ルートソフトウェアツールを使用して、ターゲットアーキテクチャーにおける回路の設計を作成することができる。
【００２７】
デバッグプロセスは、回路における問題エリアを識別することができる。更なる分析のために複製すべき回路の一部分を選択する、等の、ここに述べる解決策を使用することができる。この例では、回路の選択された部分が複製され、そして関連回路が追加される。改訂された（例えば、第２の）ＲＴＬネットリストを作成するために回路のテキスト表現をコンパイルし直すことができる。改訂ＲＴＬネットリストは、ターゲットアーキテクチャー、例えば、ＦＰＧＡ又はＡＳＩＣ或いは他のチップ、例えば、マイクロプロセッサ、通信チップ、等に相関（マップ）させることができる。本発明は、これらの細部に限定されない。種々の他の手順が使用されてもよい。例えば、複製回路を組み込むことは、ソースコード記述へ全面的に戻ることを必要としない。複製回路の具現化は、ＲＴＬネットリストにおいて行うことができ、或いはおそらく設計ＲＴＬネットリストを増分的に変更し又は追加する。
【００２８】
図４は、この開示で述べるように初期条件及び入力信号を得るためにチップを動作するフローチャートである。チップが動作される（ブロック６０）。トリガー条件に応答してトリガー信号が発生される（ブロック６２）。初期条件及び入力信号は、この開示のセクションＩ．からVI．で述べた解決策の１つ以上に基づいて得られる（ブロック６４）。初期条件及び入力信号は、チップインターフェイスに与えられる（ブロック６６）。
【００２９】
図５は、初期条件及び入力信号を使用してシミュレーションを遂行するフローチャートである。この開示のセクションＩ．からVI．に述べる解決策の１つ以上に基づいて得られた初期条件及び入力信号は、シミュレータにより使用するために受け取られる（ブロック７０）。この初期条件及び入力信号に基づいてシミュレーションが遂行される（ブロック７２）。トリガー条件に関連した回路動作に関する細部は、シミュレーションを通して識別される（ブロック７４）。シミュレータは、種々のテスト又は手順を使用することができる。
【００３０】
図３から５のフローチャートは、幾つかの実施形態に対する単なる概略に過ぎない。他の実施形態は、これらのフローチャートに従わず、又はそれらの異なる細部を伴わない。実際の具現化では、種々の付加的なプログラム及び構造を使用することができる。
【００３１】
ここで使用する「設計回路」、「設計メモリ」及び「設計レジスタ」という語は、この開示で述べる技術の１つにおいて回路の分析及び追加（又は付加的な回路の記述）の前のオリジナル設計（又は設計の記述）の一部分である回路、メモリ及びレジスタを指す。設計回路は、オリジナル回路又は出発点の回路と称される。しかしながら、設計回路は、良く知られた特徴を含んでもよい。以下に述べるように、回路（又は回路の記述）の追加は、例えば、ロジック複製及び関連回路、スナップショットレジスタ及び関連回路、マルチプレクサ及びデマルチプレクサ並びに関連回路を含む。
【００３２】
II．ロジック複製解決策
初期条件信号及び入力信号を得るためのロジック複製解決策は、設計ロジックが与えない情報をオファーするロジックを複製することを含む。米国特許第６，９０４，５７６号の図３に類似した図８は、複製されたロジックを伴うシステムを示す。図８は、設計ロジックブロック２０２及び複製ロジックブロック２０４を含むチップにおける回路を例示している。一例として、オリジナル設計のデバッグで、ロジックブロック２０２に伴う問題が明らかになったとする。それ故、ロジックブロック２０２が選択され、そして複製ロジックブロック２０４として複製されて、問題の更なる分析を行えるようにする。例えば、図３のプログラム（ブロック５２）を使用して、複製ロジック２０４を作成する。遅延ロジック２１２（ＦＩＦＯのような）は、複製ロジックブロック２０４に与えられる入力信号を遅延させる。遅延ロジック２１２は、入力が設計ロジックブロック２０２に到達するよりも時間的に遅れて入力信号を複製ロジックブロック２０４に到達させる典型的な回路ロジック及びエレメント、例えば、ＦＩＦＯを含む。このように、設計ロジックブロック２０２にエラーが発生すると分かった後にエラーを分析することができる。というのは、エラーが後で複製ロジックブロック２０４に現れるからである。
【００３３】
回路の複製部分を休止させるトリガー条件を設定できるように回路にトリガーロジック２３０が挿入される。トリガーロジックを制御するために１つ以上のコントローラを挿入することもできる。この例では、トリガーロジック２３０は、２つの出力、即ちアサートされたときにクロック制御ロジック２１４が進行を停止できるようにするブレークポイント信号２１８と、アサートされたときに遅延ロジック２１２が進行を停止できるようにする遅延休止信号とを有する。遅延休止信号は、複製ロジック２０４がそのレジスタ及びメモリのコンテンツを凍結するようにもさせる。
【００３４】
クロック制御ロジック２１４は、複製ロジックブロック２０４へ送られるクロック信号（１つ又は複数）を制御する。クロック制御ロジック２１４は、複製ロジックブロック２０４へ送られるクロック信号を休止させて、ある条件が生じたとき複製ロジックの実行を停止できるようにする典型的なロジック及び回路エレメントを含むことができる。又、クロック制御ロジック２１４は、クロックごとに信号が複製ロジックを経て歩進してエラーを分析できるようにもする。ブレークポイント２１８は、ある条件が生じたとき、例えば、トリガー条件が生じたときに、クロックを休止するようにセットできる。幾つかの実施形態では、通常のオペレーション中に、回路をクロックするシステムクロックが、クロック制御ロジック２１４のラッチを通して流れ、複製ロジックブロック２０４へのクロックとして働く。ブレークポイント信号は、クロックを、システムクロックのラッチ形態へとスイッチすることができ、これは、クロック信号をサイクルごとに休止して１つ歩進できるようにクロック制御信号により制御することができる。初期条件信号は、複製ロジック２０４内のレジスタ及びメモリから得ることができ、そして入力信号は、遅延ロジック２１２から得ることができる。本発明は、図示してここに説明する細部を含むことが要求されず、他の仕方で実施することもできる。
【００３５】
幾つかの実施形態では、本発明は、ロジック複製解決策を具現化するための種々の革新的な仕方を開示する。一実施形態において、複製モジュールからデータを直列に受け取るために付加的な直列回路を設けることができる。例えば、図６は、設計回路１０４及び複製モジュール１０６を含むチップ１００を含む。設計回路１０４は、供試設計ロジック１１０及び付加的なロジック１１２を備えている。供試設計ロジック１１０は、設計モジュールと称することもできる。供試設計ロジック１１０及び付加的なロジック１１２は、当該チップの製造形態で使用するように意図された回路である。もちろん、設計回路は、設計の製造形態が完成される前に変更されてもよい。この実施例では、供試設計ロジック１１０は、レジスタ１１６及び１１８を含み、又、付加的なレジスタ、メモリ、種々の回路、及びある実施形態では、ファームウェア、のような種々の他のコンポーネントを含むこともできる。複製モジュール１０６は、供試複製ロジック１３０を備え、これは、供試設計ロジック１１０の場合と同様の回路、即ちレジスタ１１６及び１１８と同様のレジスタ１３８及び１４０を含む。
【００３６】
動作に際し、設計ロジック１１０及び複製ロジック１３０は、各々、同じ入力を受け取るが、複製ロジック１３０は、遅延形態の入力を受け取る。例えば、設計ロジック１１０は、導体１１４から入力信号（データ入力を含む）を、そして付加的なロジック１１２から付加的な入力信号（付加的なデータ入力信号を含む）を受け取る。又、複製ロジック１３０は、導体１１４から遅延回路１３４を経て入力信号を、そして付加的なロジック１１２から遅延回路１３６を経て付加的な入力信号を受け取る。図６の実施例では、遅延回路１３４及び１３６は、入力信号の巾に等しい巾と、所与の形式の状況及び／又はシグナリングに対する希望の遅延に等しい深さとを有するＦＩＦＯである。設計ロジック１１０、設計ロジック１３０、ＦＩＦＯ１３４及びＦＩＦＯ１３６は、導体１２６からの１つ以上のクロック信号によりクロックされる。ロジック１１０及び１３０は、たとえＦＩＦＯ１３４及び１３６が１つのクロック信号のみでクロックされても、２つ以上のクロック信号によりクロックすることができる。図６には示されていないが、１つ以上の他のクロック信号によりクロックされる付加的なＦＩＦＯがあってもよい。
【００３７】
入力信号は、データ、アドレス、制御、及び他の信号を含む異なる形式の信号を含んでもよい。時々、これらの入力信号は、単にデータ信号と称されるが、単なる慣習的なデータ以上のものを含んでもよい。設計及び複製モジュールは、メモリ及びレジスタを含むことができる。
【００３８】
図３のプログラム（ブロック５２）は、例えば、複製モジュール１０６を設計するのに使用される。プログラムの異なる具現化は、異なるレベルの設計者関与を有する。例えば、幾つかの実施形態では、設計者は、コマンドを与え、そしてプログラムは、複製モジュールを作成する。他の具現化では、設計者は、複製モジュールに関する更なる細部を与え、そしてある具現化において、複製モジュールの設計に双方向に関与する。
【００３９】
動作に際して、トリガーロジック１２２は、設計ロジック１１０をモニタする。トリガー条件と称される特定の当該事象が生じると、トリガーロジック１２２は、トリガー信号をＦＩＦＯ１３４及び１３６に与え、ＦＩＦＯがクロック信号に応答するのを停止させる。又、トリガー信号は、複製ロジック１３０へと進み、レジスタ１３８及び１４０におけるレジスタ値を凍結する。又、トリガーロジック１２２は、制御回路１２４に信号を与えて、制御回路１２４が制御モードに入るようにし、このモードでは、ＦＩＦＯ１３４及び１３６のコンテンツがシミュレータのための入力信号として使用できるようにされ、且つ複製ロジック１３０のあるコンテンツがシミュレータの初期条件として使用できるようにされる。レジスタ１３８及び１４０は、初期条件を与えるように連鎖にされる。図６は、トリガーロジックによる影響も受けるレジスタ１３８及び１４０が、制御ロジック１２４の制御のもとで、マルチプレクサ１４４、レジスタ１４６、マルチプレクサ１４８、及びレジスタ１５０を通して初期条件信号を与える実施例を示す。マルチプレクサ１４４は、ＪＴＡＧチェーンの入力も受け取る。制御回路１２４は、ＪＴＡＧ制御回路でもよい。制御回路１２４又は他の回路は、ＦＩＦＯ１３４及び１３６の出力とレジスタ１４６及び１５０のコンテンツとの間の時間遅延を考慮に入れることができる。マルチプレクサ１４４、１４８及びレジスタ１４６、１５０の回路の組み合わせは、チップから初期条件を得る特定の仕方を表すだけである。他の回路、例えば、複製ロジック１３０におけるレジスタ値をスキャニングし検索するための直列スキャニング回路を使用することもできる。
【００４０】
一実施形態において、複製モジュールは、同じチップ又は異なるチップに配置することができる。図７は、設計回路１０４、トリガーロジック１２２及び制御回路１２４がチップ１６０にあり、一方、複製モジュール１０６がチップ１６２にあることを示している。複製モジュールを異なるチップに入れる理由は、チップ１６０に充分な余地がないためである。
【００４１】
III. 幾つかの実施形態のための付加的な特徴
特に指示のない限り、（セクションII、IV及びＶにおける）３つの主たる解決策の各々の幾つかの実施形態に関連して使用される幾つかの付加的な特徴は、次の通りである。しかしながら、各主たる解決策の他の実施形態は、これらの特徴の１つ、幾つか又は全部を含まない。更に、これら付加的な特徴の幾つかは、主たる解決策とは別個に使用されてもよい。
【００４２】
Ａ．設計回路と機能的に同等であるが異なる複製モジュール
好ましい実施形態では、複製モジュールは、設計モジュールの機能を保存するが、デバッグを容易にするか又は複製回路を簡単化するために設計モジュールとは異なる回路を有する。複製回路は、潜在的な故障を分析する上で助けとなるように条件又は入力を収集することに焦点を当てた設計回路とは異なる。
【００４３】
複製モジュールは、デバッグを容易にするための回路変更に自由度をもつことができる。例えば、複製モジュールでは回路の最適化を抑制することができる。複製モジュールの目的は、デバッグシミュレーションのための初期条件及び入力を与え、従って、効率に関して表面上無関係の回路も、実際に、デバッグのために必要とされる。１つの観点において、複製モジュールにおいてハードウェアの置き換えが行われる。例えば、設計モジュール内の専有回路を、デバッグを容易にするために複製モジュールでは一般的な回路と置き換えることができる。ハードウェアの置き換えは、非露出状態へのアクセスを与える上で特に有用であり、これは、例えば、設計モジュール内のブラックボックスの内部状態を得るための困難なタスクである。内部状態のような非露出状態へのアクセスは、メモリ内の記憶データのようなモジュールの内部状態を検索するための制御回路を設けることを含む。別の観点において、複製モジュールが設計モジュールの一部分しか含まず、又は設計モジュールのある部分を省略するように、設計モジュールを区画化することができる。この区画化は、例えば、種々のタイミング問題に対処するために、複数の遅延回路を設計モジュール内から複製モジュールへ与えることを更に含むことができる。
【００４４】
Ｂ．シミュレータにおいて初期条件をＨＤＬコードに相関
幾つかの実施形態では、チップからの少なくとも幾つかの初期条件の値をシミュレータにおいてＨＤＬコード内の特定の位置に相関（即ち、マッピング又は関連付け）させることが含まれる。特定の位置は、ＨＤＬにおけるオブジェクト、例えば、信号、レジスタ、導体、メモリ、等でよい。幾つかの実施形態では、これは、ＨＤＬ設計をネットリストへ相関するのに使用されるコンパイラーソフトウェア内の逐次最適化を禁止することを含む。回避すべき逐次最適化は、例えば、再タイミング、パイプライン化、配置複製及び状態指定を含むが、これらに限定されない。相関に使用されるコンパイラーソフトウェアは、初期条件の値がシミュレータプロセッサにより取得されるシーケンスと相関（マップ又は関連付け）させることのできる順序でのモジュール内の全メモリ及び記憶エレメントのリストを作成することができる。メモリエレメントの名前は、ソフトウェアシミュレータに適合できる信号インスタンスに直接相関させることができる。
【００４５】
図１、６及び９に関連して一実施形態が与えられる。図１のコンピュータ２０における１つ以上のプログラムは、ＨＤＬコードを含むファイルを作成して、図６の回路に対する回路機能及びレイアウトを発生する（図９のブロック２４０）。コンピュータ２０における同じ又は別のプログラム（１つ又は複数）は、機能及びレイアウト設計を変更し最適化する（図９のブロック２４２）。ここに使用する「最適化」という語は、単に改善を意味し、必ずしも、数学的な最適値に到達することではない。図６の回路を含むチップが構成され又は製造される（図９のブロック２４４）。トリガー信号に応答して、初期条件及び入力信号が、図６を参照して述べたように収集され、そしてコンピュータ２０又は別のコンピュータで実行されるシミュレータプログラムに対して使用可能となる。収集された初期条件をシミュレータにおいてＨＤＬコード内の特定位置と相関させるために、相関技術（１つ又は複数）が使用される（図９のブロック２４６（１））。例えば、相関は、ＦＰＧＡに対する相関（マップ）されたネットリストとＨＤＬソースコードとの相関である。もちろん、図９のブロック間には、種々の中間及び改訂ファイルがある。
【００４６】
相関技術（１つ又は複数）において種々の発見的解決法を使用することができる。１つのこのような発見的解決法は、回路のコンポーネントの命名である。スキャンチェーンにおける初期条件状態の順序と、ＨＤＬコードにおいて見つかるデータの関連エレメントの名前及び位置との間のリンケージを確立することができる。複製される全てのロジックに対してソースコードを使用することができる。ブラックボックス、例えば、内部装置についての詳細な情報をもたない回路ブロックの場合に、それらの出力は、複製設計への付加的な入力として取り扱うことができる。オリジナル設計におけるブラックボックスからの出力は、ＦＩＦＯを通して複製回路の入力へと延びる。合成ツールは、モジュールごとに再タイミング及び逐次最適化をディスエイブルすることをサポートできる。他の実施形態は、このセクションの細部を含まず、又はそれらの変更も含まない。
【００４７】
幾つかの実施形態は、ＨＤＬ設計をネットリストへマップするのに使用されるコンパイラーソフトウェア内での逐次最適化を禁止することにより、ハードウェアから収集された初期条件の値をＨＤＬコード内の特定位置に関連付ける方法を提供する。マッピングに使用されるコンパイラーソフトウェアは、初期条件の値がプロセッサにより取得されるシーケンスに関連付けることのできる順序でのモジュール内の全メモリエレメントのリストを生成する。メモリエレメントの名前は、ソフトウェアシミュレータに適合できる信号インスタンスに直接相関させることができる。
【００４８】
Ｃ．ハードウェア置き換えのリストの作成
幾つかの実施形態は、ネットリストの作成においてコンパイラーにより遂行される全ハードウェア置き換えのリストを作成することによりハードウェアから収集された初期条件の値を相関することを含む。置き換えのリストは、物理的具現化からの信号名及び値を、ソフトウェアシミュレータに適合するＨＤＬレベル表現へとさかのぼるのに使用される。一実施形態では、専有モジュールを等価回路と置き換えることができる。等価回路は、例えば、非露出状態へのアクセスを与えることで、デバッグを容易にすることができる。
【００４９】
Ｄ．内部状態へのアクセス
メモリエレメントを複製すべきときは、デバッグのために厳密な複製が有用でないことがある。というのは、オリジナルメモリエレメントは、通常、内部状態にアクセスしないからである。即ち、オリジナルメモリは、幾つかの非露出状態を有する。複製メモリは、典型的に、これら状態へのアクセスを与える。複製メモリは、置き換えられたメモリでよい（ハードウェア置き換えの一例）。というのは、非露出状態へのアクセスを許すための付加的な構造を含むからである。複製メモリは、メモリデータへのアクセスを許すための制御回路を含むことができる。シミュレータにおいてＨＤＬコードで置き換えられたメモリを関連付けるために相関（マッピング）が与えられる。図９のフローチャートは、特にブロック２４６のパート（２）が適用される。
【００５０】
図１０は、置き換えられたメモリを示す。複製ランダムアクセスメモリ（ＲＡＭ）２５４は、設計（オリジナル）ＲＡＭと同じでよい。制御回路２５２は、トリガー条件の後にＲＡＭ２５４を凍結すると共に、スキャンチェーン２５６を通してＲＡＭ２５４のコンテンツをクロック出力して、例えば、制御コンピュータへ直列データを与えることができるようにする。複製モジュールからのアドレス及び複製モジュールからのデータは、制御回路２５２及びＲＡＭ２５４に与えられる。幾つかの実施形態では、必要なときに、合成ツールは、置き換えＲＡＭ設計を含むネットリストへポインタを戻す例えばＣライブラリーのファンクションをコールすることができる。
【００５１】
ある実施形態は、図１０の制御回路２５２のようなアクセス制御ロジックを含む特殊なＲＡＭ構造体に置き換えることにより複製回路における種々の形式のＲＡＭを取り扱うための回路及び方法を包含する。このアクセス制御ロジックは、全ての通常の読み取り／書き込み信号及びクロックがイネーブルされたときに特殊なＲＡＭ構造体が通常のＲＡＭのように動作できるようにする。又、アクセス制御ロジックは、トリガー条件が検出されると、ＲＡＭのオペレーションを凍結できるようにする。次いで、アクセス制御ロジックは、ＲＡＭのコンテンツを制御コンピュータへスキャン出力できるようにする。又、アクセス制御ロジックは、ＲＡＭのコンテンツを直列出力できるようにするスキャンチェーンを含むこともできる。ＲＡＭのコンテンツは、ソフトウェアシミュレーションのためにＲＡＭの初期条件を収集するのに使用される。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。例えば、ＲＡＭは、ブラックボックスのように取り扱うこともできる。ＲＡＭの出力は、遅延ＦＩＦＯへ供給することができ、これらＦＩＦＯは、入力と同様に複製モジュールに供給を行う。この解決策は、ＲＡＭ構造体、例えば、ＢｌｏｃｋＲＡＭを推測できない場合に、好ましい。
【００５２】
幾つかの実施形態は、複製ロジックにおいて種々の基本的専有ロジックモジュール（例えば、Ｘｉｌｉｎｘ  ＳＲＬ１６シフトレジスタ及びＡｌｔｅｒａ  Ａｌｔｓｈｉｆｔｔａｐシフトレジスタ）を取り扱う回路及び方法を包含する。これは、これらの専有モジュールを、それらモジュールの内部状態へのアクセスを許す論理的等価回路と置き換えることを含む。これら内部状態は、コンピュータによってスキャンされ、ソフトウェアシミュレーション中に初期条件として使用することができる。例えば、外部回路へ接続するための入力及び出力ピンをもつ専有モジュールとして表されるＸｉｌｉｎｘ  ＳＲＬ１６シフトレジスタは、アクセス可能な内部状態をもつ機能的等価回路と置き換えることができる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
【００５３】
Ｅ．公式検証フロー技術
過去に、実際の設計がＨＤＬコードでの記述に一致することを確認するために公式検証フロー技術が使用されている。幾つかの実施形態は、この公式検証フロー技術を使用することによりハードウェアからの初期条件の値を関連付けることを含む。その一例が、図９に、特に、ブロック２４６（３）で示されている。他の実施形態は、この特徴を含まず、又はそれらの変形も含まない。
【００５４】
Ｆ．区画化
一実施形態では、複製モジュールは、設計モジュール内から複製モジュールの各位置までの付加的な遅延回路を備えている。例えば、第１の遅延回路は、設計モジュールの入力を複製モジュールの入力に接続する。第２の（及び任意の他の）遅延回路は、設計モジュールの位置から複製モジュール内の適当な位置へ接続することができる。付加的な遅延回路は、特に、マルチクロックドメインに対してモジュールとモジュールとの間に正確なタイミングを与えることができる。
【００５５】
幾つかの実施形態では、設計モジュールは、複数の設計セグメントへと区画化される。ある観点において、設計セグメントを全て複製し、各複製セグメントを、遅延回路を経て各設計セグメントに接続することができる。別の観点において、設計セグメントの一部分だけを複製し、各複製セグメントを、遅延回路を経てその各々の設計セグメントに接続する。設計セグメントの各部分は、分離することもできるし、設計モジュール内に互いに埋め込むこともできる。別の観点では、設計セグメントの少なくとも一部分が複製されず、そして複製される各設計セグメントが遅延回路へ出力信号を与え、遅延回路の出力が複製セグメントの各位置へ与えられる。
【００５６】
Ｇ．ブラックボックス
設計モジュールは、複製されない少なくとも１つのセグメント、例えば、ブラックボックスモジュールをもつセグメントへと区画化することができる。回路設計は、ブラックボックス、例えば、内部状態や振舞いの知識がないモジュール、例えば、ＩＰブロック又は専有ロジックモジュールをしばしば含む。本発明の幾つかの実施形態は、内部回路の細部を必要とせずにブラックボックス及び種々の専有ロジックモジュールを取り扱う回路及び方法を包含する。幾つかの実施形態では、振舞いが未知の専有ロジックは、複製ロジックへとコピーされない。むしろ、この方法は、設計モジュールにおける専有モジュールの出力を、複製ロジック内の各位置への付加的な入力として処理する。例えば、図２０は、設計モジュール３６０及び複製モジュール３６２を含む。設計モジュールは、ロジック３６４を含み、その出力は、ブラックボックス３６６に与えられる。ブラックボックス３６６は、入力及び出力信号は既知であるが、未知の種々のファンクションを遂行する回路である。ブラックボックスロジック３６６の出力は、設計モジュール３６０のロジック３６８に与えられると共に、複製モジュール３６２の遅延回路ＦＩＦＯ３７６にも与えられ、全複製ロジック遅延を考慮する。ＦＩＦＯ３７６の出力は、ロジック３７８に与えられる。この点に関して、ブラックボックスロジック３６６は、複製モジュール３６２に直接複製されない。図２０の実施例では、ロジック３７４の出力は、ロジック３７８に与えられない。幾つかの実施形態では、ロジック３７４は、複製されず、そしてＦＩＦＯ３７６の出力は、複製モジュール内の各入力位置に接続される。トリガー条件に応答して、ＦＩＦＯ３７６のコンテンツは、コンピュータにより取得され、そしてソフトウェアシミュレーションにおいて専有ロジック３６６の出力をシミュレーションするのに使用される。一実施形態では、ロジック３６４の入力を複製ロジック３７４の入力に接続するために遅延回路（図示せず）が設けられる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
【００５７】
Ｈ．マルチクロックドメイン
設計モジュールは、別々の遅延入力を各々受け取るクロックドメインに基づいて区画化することができる。幾つかの実施形態は、２つの個別の非同期クロックによりクロックされる２つのロジック回路間のデータ転送のタイミングを取り扱う回路及び方法を包含する。この回路及び方法は、「同期フリップ・フロップ」を使用して、２つのクロックの相対的周波数により深さを決定できるＦＩＦＯへの供給を行うことができる。図１８は、設計モジュール３０２における同期フリップ・フロップ３１２を示す。この回路及び方法は、多数のクロックドメイン間に交差する１つ以上の信号を同期するのに使用するよう拡張することができる。
【００５８】
多くの設計は、複数の独立したクロックを使用する。信号経路があるクロックドメインから別のクロックドメインへ交差するときにタイミングの問題が生じる。図１８は、信号がクロック１のドメインからクロック２のドメインへ進む実施例を示す。設計モジュール３０２では、クロック１によりクロックされるフリップ・フロップ３０６によってデータ信号が受け取られる。フリップ・フロップ３１２の出力は、クロック１のドメインの一部分であるロジック３０８に与えられる。もちろん、より多くのデータ信号が並列に存在し得る。従って、フリップ・フロップ３０６及びフリップ・フロップ３１２は、各々、複数の並列なフリップ・フロップを表す。ロジック３０８の出力は、クロック２によりクロックされる同期フリップ・フロップ３１２に与えられる。フリップ・フロップ３１２の出力は、クロック２のドメインの一部分であるロジック３１４に与えられる。
【００５９】
複製モジュール３０４もクロック１及び２を受け取り、複製モジュールへのデータは、設計モジュールのデータを正確にエミュレートする。複製モジュール３０４は、フリップ・フロップ３２６を備え、これは、データを受け取り、そしてクロック１によりクロックされる。データは、フリップ・フロップ３０６により受け取られるデータでよく、そして遅延回路（図示せず）により遅延されてもされなくてもよい。フリップ・フロップ３２６の出力は、クロック１のドメインの一部分であるロジック３２８に与えられる。ロジック３２８の出力は、クロック２によってクロックされる同期フリップ・フロップ３３２に与えられる。クロックドメインの境界に交差する全ての信号は、合成ツールによって確認される。
【００６０】
図１８の実施例では、同期フリップ・フロップ３３２の出力は、クロック２のドメインの一部分である（クロック２によってクロックされる）ロジック３３４へ通過されない。しかしながら、幾つかの実施形態では、フリップ・フロップ３３２の出力は、回路の状態を、例えば、レジスタ３１２のコンテンツの指示として収集するのに使用される。幾つかの実施形態では、同期フリップ・フロップ３３２は含まれない。
【００６１】
クロックドメインに交差する信号は、設計モジュール３０２における同期装置３１２を使用する。フリップ・フロップ３１２の出力は、クロック２によりクロックされるＦＩＦＯ３２０により遅延された後に、ロジック３３４に与えられる。これは、ロジック３３４がロジック３１４と同じデータを得ることを補償する。トリガー条件に応答して、ＦＩＦＯ３２０は、新たなデータを受け入れないように凍結され、そしてそのコンテンツは、スキャンチェーンの一部分としてスキャンされて、シミュレータの入力信号を得ることができる。初期条件信号は、ロジック３３４におけるレジスタ及びメモリから得ることができる。
【００６２】
ＦＩＦＯは、ＦＩＦＯへクロックされるデータと同じクロックによりクロックされてもよい。１つのクロックドメインに対するＦＩＦＯの深さは、別のドメインにおける別のＦＩＦＯとは異なってもよい。この深さは、全てのドメインにおける全クロックに対して同じ量の時間遅延を与えるように計算することができる。クロックドメインを横切って信号を搬送するのに使用されるＦＩＦＯは、トリガー条件が検出されると、凍結されてもよい。ＦＩＦＯのコンテンツは、シミュレーションに使用するためにスキャンチェーンへクロック出力されてもよい。
【００６３】
１つの設計内に複数のクロックがあるときには、ドメイン間のタイミングが正しいことを保証するために特定のガイドラインに従うことができる。例えば、図１９において、データ信号は、クロック１の信号（クロック１）により設計モジュール３４０へクロックされる。設計モジュール３４０及び複製モジュール３４８内には、クロック２から離れて動作するクロックドメインがある。又、データ信号は、深さＮ１の入力ＦＩＦＯ３４４を通して複製モジュール３４８へ与えられる。設計モジュール３４０からのデータは、深さＮ２のドメイン間ＦＩＦＯ３４６を通して複製モジュール３４８へ与えられる。複製モジュール３４６の合計遅延は、クロック１の周期及び入力ＦＩＦＯ３４６の深さＮ１の両方に依存する。典型的に、遅延回路の合計遅延は、クロックの周期に逆比例する。ドメイン間ＦＩＦＯ３４６の目標は、以下に述べる遅延を与えることである。クロック２の周期が既知であると仮定すれば、深さＮ２は、次のように計算することができる。Ｐ１をクロック１の周期とし、Ｐ２をクロック２の周期とすれば、目標は、次のように、Ｎ２を導出することである。
(Ｐ１ｘＮ１)／(Ｐ２ｘＮ２)＝１であるか又は実際にそうであるように１に近い。
Ｐ１ｘＮ２がＰ２で均一に割れる場合には、
Ｎ２＝(Ｐ１ｘＮ１)／Ｐ２である。
さもなければ、Ｎ２は、
Ｎ２＝((Ｐ１ｘＮ１)／Ｐ２)＋１
の係数部分となる。
【００６４】
Ｎ２は、入力ＦＩＦＯにより導入される遅延を補償するに充分な量の遅延をもつことができる。しかしながら、ＦＩＦＯ３４６からのデータがどんなものになるかについて依然曖昧である。シミュレーションの開始における２つのクロックの相対的な整列に基づき、クロック２のドメインの複製ハードウェアは、もう一度クロックされる必要がある。以下の基準が満足された場合には、クロック２は、複製モジュール３４８に対してもう一度クロックされる必要がある。Ｙをある数とし、
Ｙ＝((Ｐ１ｘＮ１)／Ｐ２)＋１
Ｔをある時間周期とする。
Ｔ＝ｆｒａｃｔ(Ｙ)ｘＰ２
【００６５】
ここで、ｆｒａｃｔ(Ｙ)は、Ｙの分数部分である。従って、Ｔ＜Ｄ＜Ｐ２として、遅延Ｄが与えられると、ハードウェアクロック２は、もう１サイクル、クロックされる必要がある。さもなければ、Ｄが０とＴとの間に入るときには、付加的なクロック動作は必要でなくなる。
【００６６】
クロック１及び２のアクティブな縁の関係は、捕捉が完了するまでに決定することができない。それ故、次のシーケンスをたどることになる。プロセスをスタートする；トリガー条件が生じる；クロックの位相関係を決定する；クロック２の遅延条件を満足する場合にはクロック２をパルス化する；及びレジスタ及びＲＡＭの状態を収集する。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
【００６７】
Ｉ．低速クロックを高速クロックでサンプリング
幾つかの実施形態は、設計において低速クロックを高速クロックで直接的にサンプリングすることにより２つの個別の非同期クロック間の関係を計算するための回路及び方法を包含する。各クロックの周波数及びデューティサイクルが既知である場合には、サンプルされたデータパターンに一致するように低速クロックのオフセットを調整することにより１つのクロックと他のクロックとの間の関係を計算することができる。このプロセスを使用して、２つ以上のクロック間の関係を決定することができる。各々の低速クロック信号は、最も速い（最高周波数）クロック信号と比較される。クロックは、一般的に、非同期であるが、特定のケースでは、クロックの２つ以上が同期することになり、しかし、この回路及び方法は、これを要求するものではないことに注意されたい。
【００６８】
マルチクロック設計では、各クロックの周波数が既知である。合成ツールは、ドメインごとにこの情報を与えることができる。データ捕捉の開始におけるアクティブなクロック縁の互いの関係は、未知である。例えば、図６において、図１２のクロック信号（クロック）１及びクロック信号（クロック）２が設計ロジック１１０及び複製ロジック１３０への導体１２６に与えられると仮定する。時間ｔ０において、導体１２６及び１１４のクロック及びデータが設計ロジック１１０に与えられるときに、クロック１及び２は、特定の位相関係を有する。この位相関係を表現する１つの仕方は、クロック１の立ち上り縁と、クロック２の次に続く立ち上り縁との間の時間である。時間ｔ０＋遅延において、導体１１４上のデータは、遅延回路１３４を通して複製ロジック１３０に到達する。時間ｔ０＋遅延において、導体１２６上のクロック１と２との間の位相関係は、通常、時間ｔ０のときとは異なる。
【００６９】
設計における最も速いクロックでこれらのクロックをサンプリングすることでクロックごとにクロック縁を分析することによって位相関係を近似することができる。クロックサンプルは、回路、シミュレータ又は他のソフトウェアのような分析ロジック又はモジュールによりスキャンして分析できるＦＩＦＯに記憶することができる。ほとんどのケースでは、サンプルの数が増加すると、縁を取り巻く曖昧さのウインドウが減少される。クロックのサンプリングは、異なる仕方で処理することができる。全てのクロックが、例えば、少なくとも約５０％のデューティサイクルを有するケースでは、サンプルされるクロックが、最も速いクロックにより直接的にサンプルされ、そしてその結果がＦＩＦＯに入れられる。精度を高めるために、クロックは、最も速いクロックの立ち上り縁及び立ち下り縁の両方においてサンプルすることができる。
【００７０】
例えば、図１１では、フリップ・フロップ２７０及び２７２は、クロック２を入力として受け取る。フリップ・フロップ２７０は、クロック１によりクロックされ、そしてフリップ・フロップ２７２は、インバータ２７４を通して反転されたクロック１によりクロックされ、フリップ・フロップ２７０がクロック１の立ち上り縁でクロック２をサンプルし、且つフリップ・フロップ２７２がクロック１の立ち下り縁でクロック２をサンプルするようにする。フリップ・フロップ２７０及び２７２におけるサンプル値は、ＦＩＦＯ２７６へクロック入力され、このＦＩＦＯは、クロックの配置を決定するために回路又はプログラム２７８のような分析ロジック又はモジュールによりスキャン及び分析することができる。ＦＩＦＯ２７６と回路又はプログラム２７８との間には、付加的な回路があってもよい。
【００７１】
図１２は、クロック１及び２と、クロック１の立ち上り縁及び立ち下り縁によりサンプルされたクロック２とを例示する。本発明の請求の範囲の回路及び方法は、３つ以上のクロックを含む。例えば、クロック２に類似しているが、クロック１及び２とは位相がずれている（及びおそらく周波数が異なる）クロック３は、クロック２と同様に、クロック１によりサンプリングされる。第１及び第２のクロック信号の位相関係は、上述したように確かめられる。というのは、その関係は、少なくとも１つの特定の時間（例えば、第１の時間）だからである。第１及び第３のクロック信号の位相関係は、少なくとも１つの特定の時間（例えば、第１の時間と同じでも異なってもよい第２の時間）について確かめられる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
【００７２】
Ｊ．低速クロックから発生された信号を高速クロックでサンプリング
幾つかの実施形態は、高速クロックのサンプリング周期内で低速クロックの各縁遷移を検出することにより２つの個別の非同期クロック間の関係を計算するための回路及び方法を包含する。各クロックの周波数及びデューティサイクルが既知である場合は、検出された縁データパターンに一致するように低速クロックのオフセットを調整することにより、１つのクロックと他のクロックとの間の関係を計算することができる。この回路及び方法は、２つ以上のクロック間の関係を決定するのに使用できる。
【００７３】
クロックを取り扱うこの第２の仕方は、サンプルされるべきクロックが、例えば、実質的に５０％未満のデューティサイクルを有する場合に適用できる。デューティサイクルが小さ過ぎる場合には、図１１のサンプリング装置は、幾つかのサンプル、又は１つのサンプルも、見出せないことがある。例えば、図１３は、クロック１と、５０％デューティサイクルより遥かに低いクロック２とを示す。図１１の回路においてクロック２がクロック１によりサンプルされた場合に、その結果が図１３に示されており、ここでは、クロック２のデューティサイクルが、クロック１により捕捉されるには狭過ぎるので、出力は一定である。クロックを整列するのに使用できる有効なデータは、捕捉されない。
【００７４】
図１１の回路とは対照的に、クロックを直接的にサンプリングするのではなく、図１４のように、クロックを使用して、例えば、２で除算する回路を駆動することができる。これは、アクティブな縁が検出されたときしか状態を変化しない信号を生じさせる。図１４を参照すれば、クロック２（Ｃｌｋ２）によりクロックされるフリップ・フロップ２８２の負（Ｑ＊）の出力は、その入力にフィードバックされる。フリップ・フロップ２８２の正（Ｑ）の出力は、クロック１によりクロックされるフリップ・フロップ２８４へ入力として与えられる。フリップ・フロップ２８４の出力は、クロック１によりクロックされるフリップ・フロップ２８６及び排他的ＯＲ（ＸＯＲ）ゲート２８８へ入力として与えられる。フリップ・フロップ２８６のＱ出力も、ＸＯＲ２８８へ送られる。ＸＯＲ２８８の出力は、後で分析するためにＦＩＦＯに与えられる。ＸＯＲゲートの出力は、クロック１のサンプリングサイクル中にアクティブなクロック２の縁が生じたときに高になる。これにより生じる結果が図１５に示され、この図は、クロック２の各アクティブな縁が、クロック１のドメインからクロックされる正レベル出力へとマップされることを示している。従って、図１４の回路は、クロック２のデューティサイクルとは独立している。クロック１（最高周波数クロック）と比較される１つ以上の付加的なクロック信号があってもよい。この付加的なクロック信号（１つ又は複数）は、他のクロックとは位相ずれし及びおそらく周波数の異なるものでよい。図１４は、立ち上り及び立ち下りの両クロック縁に回路が応答するように付加的なフリップ・フロップを含むよう変更することができる。幾つかのチップは、あるものは図１１のような、又、あるものは図１４のような複数のサンプリング装置を有することができる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
【００７５】
図１６及び１７は、図１４及び１５に代わるものを示す。図１６及び１７を参照すれば、ダブルクロック（ダブルＣｌｋ１）は、クロック１（ｃｌｋ１）の立ち上り縁及び立ち下り縁のパルスである。図１６は、ダブルＣｌｋ１がフリップ・フロップ２８４及び２８６のクロック入力に与えられる以外は、図１４と同様である。それにより得られるタイミング図が図１７で、ダブルＣｌｋ１を使用してＣｌｋ２の正の縁が検出されている。負の縁の検出も使用できる。回路（図１１、１４及び１６の回路、並びにこの開示に示す他の回路）の異なる実施形態では、その実施形態に基づき、クロック信号の立ち上り遷移、クロック信号の立ち下り遷移、又はクロック信号の立ち上り及び立ち下り遷移においてサンプルが作られるように回路を変更することができる。即ち、幾つかの実施形態では、サンプルが立ち上り遷移において作られ、他の実施形態では、サンプルが立ち下り遷移において作られ、そして更に別の実施形態では、サンプルが立ち上り及び立ち下り遷移において作られる。
【００７６】
Ｋ．個別のＦＰＧＡ又はＡＳＩＣにおける複製
幾つかの実施形態は、個別のＦＰＧＡ又はＡＳＩＣ装置においてロジックの複製部分を具現化するための方法（図３のような）を包含する。例えば、図６では、複製モジュール１３０は、設計ロジック１１０と同じチップにあり、一方、図７では、複製モジュール１３０は、設計モジュール１１０とは異なるチップにある。この方法は、単にあるチップから別のチップへの複製に適用されるのではなく、複数のチップから複数の付加的なチップへの複製（例えば、２個のチップから４個のチップ、３個のチップから６個のチップ、等々）にも適用できる。他の実施形態では、複数のチップからの回路の複製部分は、単一のチップに置くこともできるし、又はオリジナルチップの数より少ないチップに置くこともできる。例えば、２個のチップにおける回路の複製部分は、その両方を、１つの付加的なチップに置くこともできるし、或いは４個のチップにおける回路の複製部分を、その具現化にもよるが、１個、２個又は３個のチップに置くこともできる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
【００７７】
IV．スナップショット解決策
上述したように、種々のスナップショット解決技術を使用して、シミュレーションのための初期条件信号及び入力信号を得ることができる。スナップショット解決策は、デバッグされるロジックの完全な複製を要求するものではなく、典型的に、規則的な間隔で選択された設計レジスタのスナップショットを記憶することを含む。１つの解決策は、設計モジュールにおいて記憶エレメントに対する所定の深さをもつ一連のデバッグ記憶レジスタ（スナップショットレジスタ）を生成する。オリジナル設計モジュールにおける各記憶エレメントは、新たに生成される記憶エレメントのセットに接続される。周期的ベースで、設計モジュールにおける記憶エレメントの値がスナップショットレジスタにストローブされる。スナップショットレジスタのデータは、トリガー条件が生じる所定時間前の、供試設計モジュールのレジスタに対する初期条件を含む。このデータは、次いで、収集されて、デバッグのためのソフトウェアシミュレーションプログラムへ入力として与えられる。スナップショット解決策の幾つかの具現化を以下に説明する。
【００７８】
図２１は、図１のチップ１４又は図２のチップ３８の一例であるチップ４１４を示す。図２１を参照すれば、チップ４１４は、設計メモリ及び複製メモリ４２６と、設計レジスタ及びスナップショットレジスタ４２８と、動作中にロジック４２２−１・・・ロジック４２２−Ｎから入力信号を受け取る入力ＦＩＦＯ４３０とを備えている。入力信号は、データ、アドレス、制御及びイネーブル信号を含む種々の形式の信号を含んでいる。クロック信号も含まれるが、他の図に示されている。エラー又は他の指定条件のようなトリガー条件（又は事象）に応答して、トリガーロジック４１８は、メモリ４２６、レジスタ４２８及びＦＩＦＯ４３０における幾つかの又は全部のユニットがそれらのオペレーションを凍結させるようなトリガー信号（１つ又は複数）を与える。以下に詳細に述べるように、メモリ４２６及びレジスタ４２８は、信号ＴｄｏＭｓ及びＴｄｏＲｓを通して初期条件を与え、そしてＦＩＦＯ４３０は、シミュレータにより使用するためにＪＴＡＧコントローラ４２０から、例えば、インターフェイス１６を通してコンピュータ２０（図１）へ送られる信号に応答して、入力信号を与える。１つの観点では、複製メモリは、遅延メモリ入力ＦＩＦＯにより遅延されたメモリデータを含み、これは、複製メモリのコンテンツが、メモリ入力ＦＩＦＯの長さであるクロックサイクル数だけ前の設計メモリのコンテンツであることを意味している。別の観点では、スナップショットレジスタは、スナップショットパルスにより制御される規則的な間隔での設計レジスタのスナップショットデータを含む。
【００７９】
トリガー信号アクションを具現化する種々の仕方がある。例えば、トリガー信号は、異なるコンポーネントを各々凍結する複数の信号を含む。複数の信号をもつ利点は、異なる長さの時間中それらをアサートできることである。
【００８０】
図２２は、入力信号１・・・入力信号Ｎ、並びにクロック、トリガー及びＪＴＡＧ信号を受信する設計メモリ及び複製メモリ４２６における設計及び複製メモリユニット４３４−１・・・４３４−Ｎを示す。クロック信号は、各メモリユニットに対して同じでもよいし、或いは幾つか又は全部のメモリユニットに対して異なってもよい。同様に、トリガー及びＪＴＡＧ信号も、各メモリユニットに対して同じでもよいし、或いは幾つか又は全部のメモリユニットに対して異なってもよい。メモリユニット４３４−１・・・４３４−Ｎは、出力信号ＴｄｏＭ１・・・ＴｄｏＭＮを与え、その幾つか又は全部を使用して、初期条件信号を与えることができる。
【００８１】
図２３は、入力信号１・・・入力信号Ｎ、並びにクロック、トリガー及びＪＴＡＧ信号を受信する設計レジスタ及びスナップショットレジスタ４２８における設計及びスナップショットレジスタユニット４３６−１・・・４３６−Ｎを示す。クロック信号は、各レジスタユニットに対して同じでもよいし、或いは幾つか又は全部のレジスタユニットに対して異なってもよい。同様に、トリガー及びＪＴＡＧ信号も、各レジスタユニットに対して同じでもよいし、或いは幾つか又は全部のレジスタユニットに対して異なってもよい。レジスタユニット４３６−１・・・４３６−Ｎは、出力信号ＴｄｏＲ１・・・ＴｄｏＲＮを与え、その幾つか又は全部を使用して、初期条件信号を与えることができる。メモリユニット４３４−１への入力は、レジスタユニット４３６−１へのユニットに必ずしも一致しないことに注意されたい。更に、図２１、２２及び２３における文字Ｎの値は、必ずしも同じでなく、実際には、典型的に異なるものである。例えば、図２３のＮは、図２１及び２２のＮより著しく大きい。初期条件信号は、図示されたものに加えて、多数のレジスタから与えることができる。
【００８２】
図２１、２２及び２３は、幾つかの実施形態の幾つかの観点を伝えるために概略的性質のもので、完全な回路レイアウトを与えるものではない。図２１、２２及び２３に示されたコンポーネントの間には中間回路があってもよい。例えば、ロジック４２２−１からの同じ信号が、必ずしも、メモリ４２６及びレジスタ４２８の両方へ直接付与されない。他の実施形態は、異なる細部を含む。
【００８３】
スナップショット解決策は、同じ周波数のクロック信号を受信するか又は異なる周波数のクロックを受信するメモリ及びレジスタとで機能する。メモリ４２６、レジスタ４２８及びＦＩＦＯ４３０のあるメモリユニット、レジスタユニット及びＦＩＦＯが、メモリ４２６、レジスタ４２８及びＦＩＦＯ４３０の他のメモリユニット、レジスタユニット及びＦＩＦＯとは異なるクロック信号を受信する場合の図２１のチップ４１４の例を以下に述べる。以下の例では、クロックＡは、クロックＢより高い周波数を有する。
【００８４】
図２４は、図２２におけるユニット４３４−１・・・４３４−Ｎのうちの２つのユニットの実施例である設計及び複製メモリユニット４４６及び４４８を例示する。メモリユニット４４６は、設計メモリＡ１と、メモリ入力ＦＩＦＯ４５０と、リコール制御回路４５４と、複製メモリＡ１と、直列出力制御回路４５６とを備えている。メモリユニット４４８は、設計メモリＢ１と、メモリ入力ＦＩＦＯ４６０と、リコール制御回路４６４と、複製メモリＢ１と、直列出力制御回路４６６とを備えている。
【００８５】
設計メモリＡ１及びＦＩＦＯ４５０は、図２１のロジック４２２−１・・・４２２−Ｎのうちの１つ以上であるロジックＡ１からメモリ入力信号を受け取る。設計メモリＡ１及びＦＩＦＯ４５０は、クロックＡによりクロックされる。トリガー条件の前に、複製メモリＡ１もクロックＡ１によりクロックされる。リコール制御回路４５４は、ＦＩＦＯ４５０から信号を受け取り、それを複製メモリＡ１へ通す。ＦＩＦＯ４５０の深さは、ルックバック(look back)することのできる最大サイクル数である最大リコールルックバック長さであるが、以下に述べるように、ルックバックされる実際のサイクル数は、最大ルックバック長さ未満でよい。１つの観点では、最大リコールルックバック長さは、スナップショットパルスのインターバルであり、スナップショットレジスタコンテンツのサイクルを表す。しかしながら、トリガー信号は、２つのスナップショットパルス間にいつでも生じることができ、従って、ルックバックできるクロックサイクルの数は、１と、最大リコールルックバック長さとの間で変化する。ルックバックサイクルの最小数を確保するために、スナップショットレジスタは、２つの段で設計され（図２５及び以下の説明を参照）、そしてＦＩＦＯ４５０の深さは、最大リコールルックバック長さの２倍である。例えば、２倍の最大リコールルックバック長さのＦＩＦＯ及び２段のスナップショットレジスタ（段１は、１０００クロック前のスナップショットコンテンツを記憶し、段１は、２０００クロック前のスナップショットコンテンツを記憶する）を伴うクロックＡの１０００サイクルのスナップショットパルスサイクルに対して、信号は、クロックＡの２０００サイクルでＦＩＦＯ４５０を通過する。この設計では、段１のスナップショットコンテンツは、トリガーの１ないし１０００クロックサイクル前のクロックサイクルの値を記憶する。段２のスナップショットコンテンツは、トリガーの１０００ないし２０００クロックサイクル前のクロックサイクルの値を記憶する。複製メモリコンテンツは、トリガーの２０００クロックサイクル前の設計メモリコンテンツを記憶する。
【００８６】
ここで使用する「クロックサイクル」とは、必ずしも、クロックサイクルの周期に等しくない。例えば、ダブルデータレートシステムでは、クロック周期当たり２つのクロックサイクルがあり、そしてクオドデータレートシステムでは、具現化にもよるが、クロック周期当たり４つのクロックサイクルがある。しかしながら、これは、具現化特有のものである。幾つかの実施形態では、ダブルデータレート又はクオドデータレートのクロックでも、クロックサイクルがクロック信号の周期に等しくてもよい。
【００８７】
同様に、設計メモリＢ１及びＦＩＦＯ４６０は、図２１のロジック４２２−１・・・４２２−Ｎのうちの１つ以上であるロジックＢからメモリ入力信号を受け取る。設計メモリＢ１及びＦＩＦＯ４６０は、この例ではクロックＡより低周波数であるクロックＢによりクロックされる。トリガー条件の前に、複製メモリＢ１も、クロックＡによりクロックされる。ＦＩＦＯ４６０の深さは、クロックＢ及びクロックＡの周波数に比例するように選択され、信号がＦＩＦＯ４５０を通過するのと同じ長さの時間中、信号がＦＩＦＯ４６０を通過するようにする（が、ＦＩＦＯ４５０の周波数及び深さに基づき、厳密に同じ長さの時間中それらを通過させられないこともある）。リコール制御回路４６４は、ＦＩＦＯ４６０から信号を受け取り、それを複製メモリＢ１へ通す。ＦＩＦＯ４５０及び４６０は、その巾が、各々、入力Ａ１及びＢ１の巾に等しい。
【００８８】
設計メモリＡ１及びＢ１と、複製メモリＡ１及びＢ１は、必ずしも、クロックＡ及びＢのサイクルごとに信号を書き込むものではなく、他の条件が満足されるとき、例えば、メモリへ書き込むコマンドがあるときのサイクルだけ、そのようになされることに注意されたい。メモリは、イネーブル入力（図示せず）を有してもよい。従って、メモリ入力信号Ａ１及びＢ２は、必ずしも、クロックサイクルごとにメモリへ信号を書き込まない。
【００８９】
トリガー条件が生じると、トリガーロジック４１８（図２１）がトリガー信号を与え、ＦＩＦＯ４５０及び４６０、リコール制御回路４５４及び４６４、並びに複製メモリＡ１及びＢ１を凍結させる（もはやクロックに応答しない）。この実施例では、コンポーネントが凍結されるときに、複製メモリＡ１は、設計メモリＡ１の２０００クロック後方にあり、そして複製メモリＢ１は、上述したように、ある数のクロック、設計メモリＢ１の後方にある。以下に述べるように、ＪＴＡＧ信号は、複製メモリＡ１及びＢ１のコンテンツの幾つか又は全部を、図２２の信号ＴｄｏＭ１・・・ＴｄｏＭＮの例であるＴｄｏＭｅｍＡ１及びＴｄｏＭｅｍＢ１信号として、直列出力制御回路４５６及び４６６を通して書き込ませる。
【００９０】
図２５は、図２３における設計及びスナップショットレジスタユニット４３６−１・・・４３６−Ｎの実施例である２つの設計及びスナップショットレジスタユニット４７６及び４７８を例示する。レジスタユニット４７６は、設計レジスタＡ１、段１レジスタ４８８、段２レジスタ４９２、及び直列出力回路４９６を備えている。レジスタユニット４７８は、設計レジスタＢ１、段１レジスタ５０８、段２レジスタ５１２、及び直列出力回路５１６を備えている。カウンタ４８２、ゼロ検出回路４８４、及びカウンタリーダー＆直列出力回路４９０は、レジスタユニット３７６及び４７８の両方にサービスする。単一のトリガー信号は、レジスタユニット４７６及び４８８の幾つかのコンポーネントを凍結するように働くことに注意されたい。図２３において、１つのトリガー信号があってもよいし又は２つ以上のトリガー信号があってもよい。段１及び段２のレジスタは、スナップショットレジスタとも称される。レジスタユニット４７６は、クロックＡを受け取り、設計レジスタＢ１は、クロックＢを受け取り、更に、初期条件出力ＴｄｏＲｅｇＡ１及びＴｄｏＲｅｇＢ１の同期をとることができる。設計レジスタＡ１及びＢ１は、それらのレジスタ値を、他の図示されたロジックと同じでも異なってもよいロジックに与える。幾つかの実施形態では、信号は、クロックＡ及びＢの各サイクルで設計レジスタＡ１及びＢ１へ書き込まれ（同じ値が繰り返されてもよいが）、そして他の実施形態では、条件が満足されたときだけ、イネーブル信号のような信号が設計レジスタＡ１及びＢ１に書き込まれる。
【００９１】
クロックＡのクロックサイクルに応答して、設計レジスタＡ１は、図２１におけるロジック４２２−１・・・４２２−Ｎのうちの１つのようなロジックにより与えられる信号Ａ１からビットをラッチする。クロックＢのクロックサイクルに応答して、設計レジスタＢ１は、図２１におけるロジック４２２−１・・・４２２−Ｎのうちの１つのようなロジックにより与えられる信号Ｂ１からビットをラッチする。設計レジスタＡ１のビットは、ロジック及び段１レジスタ４８８に得られる。段１レジスタ４８８のビットは、段２レジスタ４９２に得られる。段２レジスタ４９２のビットは、ＪＴＡＧ信号に応答して動作する直列出力回路４９６に得られる。設計レジスタＢ１のビットは、ロジック（設計レジスタＡ１のビットを受け取るロジックとは異なる）及び段１レジスタ５０８に得られる。段１レジスタ５０８のビットは、段２レジスタ５１２に得られる。段２レジスタ５１２のビットは、ＪＴＡＧ信号に応答して動作する直接出力回路５１６に得られる。
【００９２】
設計レジスタＡ１及びＢ１は、各々、クロックＡ及びクロックＢのサイクルごとにレジスタ入力信号Ａ１及びＢ１からビットを受け取るが、段１及び２のレジスタ４８８、４９２、５０８及び５１２は、ゼロ検出回路４８４からのレジスタイネーブル信号を通してそれらがイネーブルされたときしか新たな信号をラッチしない。このイネーブル動作は、次のように生じる。カウンタ４８２は、クロックＡの各サイクルでカウントを行い、カウントの長さは、リコールの長さに等しい。この実施例では、リコールの長さは、１０００のカウント長さ（この実施例では、クロックＡの１０００クロックサイクル）である。カウンタ４８２がこのカウント長さからゼロまでカウントダウンすると、ゼロ検出回路４８４がリコールレジスタイネーブル信号をアサートし、これは、段１レジスタ４８８及び５０８と、段２レジスタ４９２及び５１２とをイネーブルする。カウンタ４８２は、ゼロに到達した後、全深さカウントから１を引いた値に戻る。従って、クロックＡの１０００クロックサイクルごとに、段１及び２のレジスタ４８８及び４９２は、手前の段のレジスタ値を受け取る。即ち、段２レジスタ４９２は、段１レジスタ４８８のレジスタ値を受け取り、又、段１レジスタ４８８は、設計レジスタＡ１のレジスタ値を受け取る。従って、ゼロ検出回路４８４がイネーブル信号を発生するときには、段１レジスタ４８８が設計レジスタＡ１の現在値を保持し、そして段２レジスタ４９２が１０００クロックサイクル手前からの設計レジスタＡ１のレジスタ値を保持する。同様に、イネーブル信号がアサートされたときには、段１レジスタ５０８が設計レジスタＢ１の現在レジスタ値をラッチし、又、段２レジスタ５１２が、１０００クロックＡサイクル手前の設計レジスタＢ１のレジスタ値である段１レジスタ５０８のレジスタ値を受け取る。
【００９３】
トリガー条件が生じると、トリガー信号がカウンタ４８２を凍結し、段１及び２のレジスタ４８８、４９２、５０８及び５１２のレジスタ値が変化しないようにする。例えば、ゼロ検出回路４８２がレジスタイネーブル信号をイネーブルし、段１及び２のレジスタ４８８、４９２、５０８及び５１２が更新されるようにすると仮定する。次いで、５５個のクロックの後に、トリガー信号がカウンタ４８２を凍結し、カウンタのカウントは、１０００−１−５５＝９４４となる。５５のカウントから、システムは、段１レジスタ４８８及び５０８の値が５５クロックサイクル手前からのものであり、且つ段２レジスタ４９２及び５１２の値が１０５５クロックサイクル手前からのものであると知ることができる。カウンタリーダー＆直列出力回路４９０は、制御回路により使用するためのカウント値を与える（図２５）。
【００９４】
図２５のトリガー信号（１つ又は複数）は、図２４と同じであり、従って、メモリＡ１及びＢ１は、段１及び２のレジスタ４８８、４９２、５０８及び５１２と同時に凍結される。メモリ入力ＦＩＦＯは、指定のクロックサイクル数の深さの２倍であるから、複製メモリのコンテンツは、トリガー時の２０００サイクル前から設計メモリと同じである。幾つかの実施形態では、クロックサイクルの数は、設計者により指定することができる。段２レジスタ４９２は、１０５５サイクル前から設計レジスタＡ１のレジスタ値を有するので、ＪＴＡＧ制御信号は、ＦＩＦＯ４５０を９４５クロックサイクル（２０００−１０５５＝９４５）進めることにより複製メモリＡ１のコンテンツを同じクロックサイクルまで進ませ、これら９４５クロックサイクルに対するＦＩＦＯ４５０のコンテンツを、リコール制御回路４５４を通して複製メモリＡ１に与える。メモリ書き込みサイクルを実際に遂行するのは（もしあっても）これらメモリクロックサイクル全部ではなく、これは、メモリが必ずしもクロックサイクルごとに変化しないことを意味する点に注意されたい。９４５サイクルの終わりに、複製メモリＡ１は、１０５５サイクル手前からの設計メモリＡ１のスナップショットとなる。これは、段２レジスタ４９２及び５１２のクロックサイクルタイムに一致する。
【００９５】
図２５に示す回路は、ある実施形態を示すもので、本発明の範囲内で他の変更も考えられる。例えば、スナップショットレジスタは、クロックＢによりクロックすることができ、又はスナップショットレジスタは、イネーブルポートをもたないスナップショットパルスジェネレータによりクロックすることもできる。
【００９６】
図２６は、クロックＡによりクロックされるクロックＡドメイン入力ＦＩＦＯ５２０、及びクロックＢによりクロックされるクロックＢドメイン入力ＦＩＦＯ５２２を示す。ＦＩＦＯ５２０は、図２４の設計メモリＡ１及びＦＩＦＯ４５０と、図２６の設計レジスタＡ１とによって受け取られるメモリデータを受け取る。ＦＩＦＯ５２２は、図２４の設計メモリＢ１及びＦＩＦＯ４６０と、図２６の設計レジスタＢ１とによって受け取られるメモリデータを受け取る。ＦＩＦＯ５２０の深さは、図２４のＦＩＦＯ４５０の深さに一致し、そしてＦＩＦＯ５２２の深さは、図２６のＦＩＦＯ４６０の深さに一致する。この実施例では、ＦＩＦＯ５２０及び５２２の出力は、設計ロジックに供給されず、他の実施形態では、供給することができる。
【００９７】
ＦＩＦＯ５２０及び５２２は、トリガー信号に応答して入力信号の受信を停止する。ＪＴＡＧ制御ロジック４２０（図２１）からのＪＴＡＧ制御信号は、ある入力データを、直列出力コントローラ５２４を通してＴｄｏＡ入力及びＴｄｏＢ入力として書き出させる。トリガー条件の後の時間に対するＦＩＦＯ５２０及び５２２のコンテンツが入力信号として与えられる。この実施例では、これは、ＦＩＦＯ５２０に対する入力信号の最新の１０５５サイクルと、ＦＩＦＯ５２２に対する関連数についてのものである。幾つかの実施形態では、これは、ＦＩＦＯ５２０のポインタ又は他のメカニズムが９４５サイクルだけ進まされ、そしてＦＩＦＯ５２２が、同じ位置に到達する量だけ進まされることを含む。
【００９８】
この点において、複製メモリＡ１及びＢ１並びに段２レジスタ４９２及び５１２のコンテンツは、ＪＴＡＧ制御のもとで初期条件信号として与えることができ、そして入力ＦＩＦＯ５２０及び５２２のコンテンツは、ＪＴＡＧ制御のもとで入力信号として与えることができる。初期条件信号の付加的な部分を与える付加的な複製メモリ（又はメモリの他の形態）及び段２レジスタがあってもよく、又、特定のシミュレーションに対する付加的な入力信号を与えるための付加的なＦＩＦＯがあってもよい。又、ユーザ設計におけるＸｉｌｉｎｘ  ＳＲＬ（シフトレジスタ）のような他のメモリが、上述したメモリについて行われたのと同様に複製されてもよいことに注意されたい。幾つかの実施形態では、ＳＲＬのコンテンツを、ＪＴＡＧ制御入力により操作されるその入力を制御することで検索することができる。例えば、ＳＲＬのコンテンツは、設計ＳＲＬの２０００サイクル後方にあってもよい。
【００９９】
図２４−２６に示されたメモリ及びレジスタユニット並びにＦＩＦＯの幾つかがクロックＡによりクロックされ、そして他のものがクロックＢによりクロックされても、異なるコンポーネントを同期することについて問題は生じない。むしろ、初期条件及び入力信号は、単に使用のために出力される。
【０１００】
スナップショット解決策を具現化する種々の仕方が存在する。例えば、図２６のような回路を含むシステムは、１段のスナップショットレジスタしか含まない（即ち、段１レジスタ４８８のみを含み、段２レジスタ４９２は含まない）。図２６のような回路を含むシステムは、３段以上のスナップショットレジスタを含んでもよい（例えば、段１レジスタ４８８、段２レジスタ４９２、及び段３レジスタ（図示せず））。上述した実施例では、ＦＩＦＯ４５０は、最大リコールルックバック長さを２倍にするが、他の実施形態では、他の長さ、例えば、最大リコールルックバック長さの２倍以上でもよい。
【０１０１】
スナップショット解決策の一実施形態は、設計モジュールの選択されたレジスタ（又はメモリ又は記憶エレメント）としてスナップショットレジスタを含むことができる。１つの観点では、全てのレジスタが複製される。別の観点では、選択されたレジスタだけが複製される。又、複製モジュールは、設計モジュールの入力データを記憶するために遅延回路、例えば、ＦＩＦＯも含む。遅延回路の深さは、スナップショットパルスの周期に対して充分でなければならない。設計レジスタごとに複数のスナップショットレジスタがある場合には、遅延回路の深さは、スナップショット周期の倍数である。又、設計モジュールの選択されたメモリ部分に対する複製回路を、メモリコンテンツにアクセスするための制御回路と共に、又、複製メモリの入力に対する任意の遅延回路と共に、設けることができる。トリガー条件が生じたときに、メモリ及びスナップショットレジスタは、互いに相関されない。この場合に、メモリコンテンツは、スナップショットレジスタのタイミングに一致するように、ある数のクロックサイクルでクロックされる。
【０１０２】
図２７は、幾つかのスナップショット解決策に使用できる別の回路を示す。図２７を参照し、フリップ・フロップのようなレジスタ又はメモリエレメントと、それに続く、フリップ・フロップ５４４、ロジック５４８及びフリップ・フロップ５５２と同様のロジック及び別のフリップ・フロップとを含むオリジナル設計について考える。図２７の付加的なコンポーネントは、スナップショット解決策を具現化するために設けられている。
【０１０３】
入力信号がフリップ・フロップ５４４及びＦＩＦＯ５４２に与えられ、これらは、両方とも、クロック信号によりクロックされる。もちろん、多数の信号経路があり、フリップ・フロップ５４４は、それらの１つしか取り扱わない。フリップ・フロップ５４４の出力は、ロジック５４８に与えられ、その出力は、フリップ・フロップ５５２に与えられ、これは、データ出力信号を発生する。フリップ・フロップ５５２及び５４４の出力は、フリップ・フロップ５５４及び５５６に与えられ、これらは、次いで、その出力をフリップ・フロップ５５８及び５６０に与える。スナップショットパルスがフリップ・フロップ５５４、５５８、５５６及び５６０をクロックする。幾つかの実施形態では、設計者は、スナップショットパルスの周波数を選択することができる。トリガー条件が検出されると、スナップショットパルスが停止される。フリップ・フロップ５５８及び５６０の出力は、初期条件信号を与え、そしてＦＩＦＯ５４２は、トリガー信号に応答してシミュレータのための入力信号を保持する。初期条件信号及び入力信号は、コンピュータ又は他の外部テスター装置へスキャン出力され、そして回路シミュレーションのために再フォーマットされてシミュレータへ提示される。
【０１０４】
スナップショット解決策に伴う１つの問題は、トリガー条件がいつでも生じることである。その間に、スナップショットパルスが規則的な間隔で発生するが、そのようにしなくてもよい。バッファの深さが２５６である場合には、スナップショットパルスは、２５６クロックサイクルごとに生じる。トリガーは、スナップショットパルス後の第１クロックサイクルと第２５５クロックサイクルとの間にいつでも生じ得る。単一のフリップ・フロップバッファしかない場合には、２５５までのクロックサイクルが生じ得るが、典型的に、トリガー条件まではそれより少ない。フリップ・フロップ５５８及び５６０を追加することにより、スナップショットの結果が別のスナップショット周期（この場合は、２５６個のサイクル）にパイプライン処理され、２５６ないし５１２サイクルサンプルが収集される。ＦＩＦＯ５４２の深さも、同様に、２倍にすることができる。更に、スナップショットレジスタのタイミングに一致するようにメモリコンテンツを早送りするために、付加的な回路を設けることができる。
【０１０５】
スナップショット解決策は、図示して上述したものとは異なる幾つかの細部を有する種々の他の実施形態において具現化することができる。
【０１０６】
スナップショット解決策は、セクションIIIで述べる特徴に関連して使用することができる。又、幾つかのセクションの特徴を同じチップに使用することもできるが、それらは、直接的にスナップショット解決策の一部分でないこともある。しかしながら、スナップショット解決策の幾つかの実施形態に対する付加的な特徴は、ＲＡＭの出力をＦＩＦＯへルーティングすることにより設計（オリジナル）ロジックにおいて種々の形態のＲＡＭを取り扱うための方法を含むことができる。幾つかの実施形態では、ＦＩＦＯをシステムコンピュータにより読み取って、ソフトウェアシミュレーションにおいてＲＡＭからの出力として使用することができる。
【０１０７】
Ｖ．時分割マルチプレクサ解決策
時分割マルチプレクサ（ＴＤＭ）解決策を具現化する種々の仕方がある。この解決策は、時間マルチプレクス型チャンネルシステムを生成し、そして第２のチャンネルを使用して、遅延複製ロジックの全てのレジスタ及びメモリエレメントに対する状態を維持する。ＴＤＭ解決策に対する付加的なロジックは、マルチプレクサ／デマルチプレクサ対により取り巻かれた回路と共に、オリジナル設計モジュールに含ませることができる。オリジナル経路からのデータは、マルチプレクサの１つの入力に接続され、一方、遅延ＦＩＦＯを通して遅延された同じデータ経路は、他の入力に接続される。マルチプレクサは、オリジナルデータ及び遅延データの両方を、時間マルチプレクスにより動作する設計ロジックを通して、同じデータ経路へと合成する。典型的に、２倍の速度で動作するクロックは、データ及び遅延データの両方に対して設計ロジックをクロックするのに使用される。例えば、偶数サイクルごとに、オリジナルデータが設計モジュールパイプラインへとマルチプレクスされ、一方、奇数サイクルごとに、遅延データがマルチプレクスされる。デマルチプレクサは、データをそれらの各々のデータストリームへと分離して戻す。トリガー条件が検出されると、回路が凍結され、遅延出力データストリームにおける値が捕捉されて、デバッグシミュレーションのための初期条件として働く。
【０１０８】
時分割マルチプレクサ解決策の一実施形態では、初期条件と、トリガー条件に関連した入力信号とを、次のように与えることができる。入力信号は、例えば、ＦＩＦＯを通して遅延される。入力信号と、遅延された入力信号とをマルチプレクスして、ロジックに与え、次いで、デマルチプレクスする。遅延された出力信号は、初期条件信号を含む。遅延された出力信号からの初期条件信号と、入力信号とをシミュレータにおいて検査して、例えば、トリガー条件の原因を識別する。時分割マルチプレクサ解決策は、時間のクローニング解決策と称される。ロジックを複製する必要がなく、チップスペース及び設計時間の著しい節約となる。
【０１０９】
例えば、図２８は、図１のチップ１４又は図２のチップ３８の一例であるチップ６１４を示す。図２９は、図２８のある実施形態における幾つかの信号のタイミング図であり、そして図３０は、図２８の他の実施形態における幾つかの信号のタイミング図である。
【０１１０】
図２８及び２９を参照すれば、設計回路（又はオリジナル回路）は、レジスタ６２４、ロジック６３８、及びレジスタ６４４を備えている。初期条件及び入力信号を与えるために、ＦＩＦＯ６２８、マルチプレクサ回路６３４、デマルチプレクサ回路６４２、レジスタ６４８及び相互接続部は、設計回路を改訂し且つそこへの追加を行う少なくとも１つのプログラム（例えば、図３、ブロック５２）によって追加される。このプログラムは、例えば、ＪＴＡＧを通してシミュレータプログラムにより使用するためにＦＩＦＯ６２８及びレジスタ６４８のコンテンツへの外部アクセスを与える。
【０１１１】
レジスタ６２４及びＦＩＦＯ６２８は、データ入力信号（データ入力）を受け取る。ＦＩＦＯ６２８は、入力信号の巾に等しい巾と、入力信号に希望の遅延を与えるための深さとを有する。レジスタはフリップ・フロップでよい。レジスタ６２４は、セル（又は考えられる遷移間の時間）Ｔ１ｉ、Ｔ２ｉ、Ｔ３ｉ、等での信号を与え、ここで、Ｔ１ｉは、ロジック６３８へ入力されるべきデータの第１セルを意味する。ＦＩＦＯ６２８は、セルセルＤＴ１ｉ、ＤＴ２ｉ、ＤＴ３ｉ、等での信号を与え、ここで、ＤＴ１ｉは、ロジック６３８へ入力されるべきデータの第１遅延セルを意味する。明らかなように、セルＴ１ｉ、Ｔ２ｉ、Ｔ３ｉ、等、及びＤＴ１ｉ、ＤＴ２ｉ、ＤＴ３ｉ、等の長さは、２つ分のクロック周期である。これは、レジスタ６２４及びＦＩＦＯ６２４がクロック１の１つおきのクロックサイクルに応答する場合に生じる。これを生じさせるように回路を追加することができる。
【０１１２】
ＦＩＦＯ６２８は、信号を遅延させるので、初期遅延長さに対するＦＩＦＯ６２８からの信号は、無効データである。しかしながら、これは、初期遅延が完了した後までトリガー条件が生じない場合には問題とならない。図示を容易にするため、図２０では、ＦＩＦＯ６２８を通る遅延は、クロック１の２つ分のクロック周期に過ぎない。しかしながら、実際には、遅延は、２つのクロック周期より相当に大きくなりがちである。例えば、１０００個のクロック周期、或いはそれより大きな又は小さな数のクロック周期になり得る。
【０１１３】
マルチプレクサ６３４は、例えば、奇数番号のクロックサイクル中にはレジスタ６２４からロジック６３８へ信号を通過させ、そして偶数番号のクロックサイクル中にはＦＩＦＯ６２８からロジック６３８へ信号を通過させる。明らかなように、マルチプレクサ６３４から出てくる信号は、データセル間の遷移の周波数が、レジスタ６２４及びＦＩＦＯ６２８からの信号の２倍である。デマルチプレクサ６４２は、例えば、奇数クロックサイクル中には信号（Ｔ１ｏｕｔ、Ｔ２ｏｕｔ、等）をロジック６３８からレジスタ６４４へ通過させ、そして偶数クロックサイクル中には信号（無効、ＤＴ１ｏｕｔ、ＤＴ２ｏｕｔ、等）をロジック６３８からレジスタ６４８へ通過させる。一般的に、レジスタ６４４及び６４８は、同時にクロックされることはなく、従って、クロックの負の縁から外れてクロックされる必要がある。図２９から明らかなように、デマルチプレクサ６４２から出てくる信号は、セル長さが、デマルチプレクサ６４２へ入る信号の２倍である。レジスタ６４４の出力は、具現化に基づく種々の目的に対して与えることができる。トリガー信号に応答して、ＦＩＦＯ６２８及びレジスタ６４８が凍結する。レジスタ６４８のコンテンツは、初期条件信号Ｔｄｏｓ１として使用することができ、そしてＦＩＦＯ６２８のコンテンツは、例えば、ＪＴＡＧインターフェイスを経てシミュレータのための入力信号Ｔｄｏｓ２として使用することができる。具現化にもよるが、マルチプレクサ６３４からロジック６３８を経てデマルチプレクサ６４２へデータを通過させるのに１クロック周期しか必要としない。他の実施形態では、２つ以上のクロック周期を必要とすることがある。幾つかの実施形態では、トリガー信号がレジスタ６４８に印加されるまでに１サイクル又は２サイクルの遅延が生じ得る。この遅延は、どの信号が初期条件信号であるかを判断する上で考えることができる。
【０１１４】
図２８及び２９の細部は、全ての実施形態に必要とされるものではない。例えば、幾つかの実施形態では、典型的にレジスタ又は状態情報を含むロジック６３８は、２Ｘクロックに等しいデータレートを取り扱うことができる。幾つかの実施形態では、マルチプレクサ６３４及び／又はデマルチプレクサ６４２も、２Ｘクロックによりクロックされる。具現化にもよるが、他のコンポーネントは、より高い周波数クロックを受け取ることもできる。２倍又は４倍データレートのシグナリングを使用することもできる。
【０１１５】
図３０は、クロック動作に２Ｘクロック１信号を使用する図２８の種々の具現化の１つに対するタイミング図である。図３０において、Ｔ１ｉ、Ｔ２ｉ、等、及び無効、ＤＴ１ｉ、ＤＴ２ｉ、等の信号セルは、その長さがクロック１周期に等しい。マルチプレクサ６３４は、信号Ｔ１ｉ、無効、Ｔ２ｉ、無効、Ｔ３ｉ、ＤＴ１ｉ、Ｔ４ｉ、ＤＴ２ｉ、等を与え、セルは、その長さが２Ｘクロック１の１つの周期に等しい。Ｔ１ｏｕｔ、Ｔ２ｏｕｔ、等、及び無効、無効、ＤＴ１ｏｕｔ、ＤＴ２ｏｕｔ信号は、長さがクロック１の周期に等しいセルを有する。幾つかの実施形態では、図２９及び３０の信号は、セルを技術的に含まず、図面は、考えられる遷移の間の時間を依然概略的に示している。
【０１１６】
図３１は、クロック１によりクロックされる時分割マルチプレクサ回路６５０及びクロック２によりクロックされる第２の時分割マルチプレクサ回路６５２の両方を示す。クロック１及び２は、非同期で、異なる周波数を有することができる。或いは又、クロック１及び２は、同じものでもよいし、又は一方が他方の整数倍のような異なる周波数を有してもよい。回路６５０は、図２８の回路６２０と同じであるが、立ち下り縁に応答するレジスタ６３０が追加される。レジスタ６３０は、任意であり、更に別の形態を示すに過ぎない。回路６５２は、レジスタ６５４、入力信号２（データ入力）を受け取るＦＩＦＯ６５８、及び（幾つかの実施形態において）レジスタ６６０を含む。マルチプレクサ６６４は、レジスタ６５４及びレジスタ６６０からの信号をマルチプレクスして、ロジック６６８に与える。デマルチプレクサ６７２は、ロジック６６８からの出力信号を受け取り、それらをデマルチプレクスして、レジスタ６７４及び６７８へ信号を与える。トリガー条件に応答してトリガー信号がアサートされると、ＦＩＦＯ６５８及びレジスタ６７８が凍結され、シミュレータプログラムのための入力データ及び初期条件を与える。図２８を参照して述べたように、時分割マルチプレクサ回路６２０の異なるコンポーネントが、周波数の異なるクロックによりクロックされる。同様に、時分割マルチプレクサ回路６５０及び６５２も、周波数の異なるクロックによりクロックされる。
【０１１７】
図３２は、時分割マルチプレクサ回路の別の実施形態を示す。フリップ・フロップレジスタ７１４、ロジック７２０、及びレジスタ７３０は、設計回路の一部分である。図３２の付加的な回路は、トリガー条件に関連した初期条件及び入力信号を収集するために設けられる。幾つかの実施形態では、図３２（及び他の図面）の付加的な回路は、プログラム（１つ又は複数）により自動的に設計される。異なる具現化においては、異なる回路設計者がこのプロセスに含まれる。
【０１１８】
図３３は、図３２の回路に対するタイミング図である。図３２及び３３を参照すれば、入力信号（データ入力）Ｔ１、Ｔ２、Ｔ３、Ｔ４、等は、マルチプレクサ７１０及びＦＩＦＯ７０４により受け取られ、このＦＩＦＯは、遅延されたデータ入力信号ＴＤ１、ＴＤ２、ＴＤ３、ＴＤ４、等をマルチプレクサ７１０に与える。ＦＩＦＯ７０４は、複数の並列データ入力信号を受け取るための巾を有する。フリップ・フロップレジスタ７１２及び７１４は、２Ｘクロック信号によりクロックされる。１Ｘクロック信号は、２で除算する回路７０６により導出される。（或いは又、２Ｘクロックは、１Ｘクロックに２を乗算することにより発生することもできる。）１Ｘクロック信号は、ＦＩＦＯ７０４、マルチプレクサ７１０、及びデマルチプレクサ７２４をクロックする。好ましい実施形態では、ロジックＬｏｇｉｃ７２０は、２Ｘクロックでクロックされてもよいが、他の実施形態では、１Ｘクロックによりクロックされる。レジスタ７３０及び７３２は、１Ｘクロック（又は他の具現化では２Ｘクロック）によりクロックされる。例えば、奇数サイクルごとに、データがマルチプレクス入力される一方、偶数サイクルごとに、遅延データがマルチプレクス入力される。マルチプレクサ７１０の出力（Ｔ１、ＴＤ１、Ｔ２、ＴＤ２、Ｔ３、ＴＤ３）は、レジスタ７１２（Ｑ１）へ送られて、出力を２Ｘクロックの１つの周期だけ遅延すると共に、それをレジスタ７１４に与え、これも、同様に、２Ｘクロックの別の周期だけそれを遅延する。パイプラインレジスタ７１２及び７１４は、一度に、マルチプレクサ７１０へのデータ入力及び遅延データ入力の両方からのデータを含む。
【０１１９】
ロジック７２０は、同じ周波数であるが更に遅延された出力（Ｔ１ｄ、ＴＤ１ｄ、Ｔ２ｄ、ＴＤ２ｄ、等）を与えることができる。デマルチプレクサ７２４は、データ出力信号（Ｔ１ｄ、Ｔ２ｄ、Ｔ３ｄ、等）及び遅延データ出力信号（ＴＤ１ｄ、ＴＤ２ｄ、ＴＤ３ｄ、等）を半分の周波数で与え、これらは、各々、レジスタ７３０及びレジスタ７３２へ送られる。図３２の回路は、トリガー条件が検出されるまで動作することが許される。そのときに、ＦＩＦＯ７０４及びレジスタ７３２は、凍結されて、シミュレーション及びデバッグのための入力信号及び初期条件を与える。図３２の時分割マルチプレクサ回路は、種々の仕方で変更することができる。
【０１２０】
時分割マルチプレクシングでは、リアルタイムレジスタ及び遅延レジスタの両方に対する次の状態を決定するために、同じ設計ロジック（例えば、ロジック６３８又はロジック７２０）を使用することができる。ＴＤＭ解決策・対・オリジナル設計を使用して、設計内の共通エレメントを通して２倍程度のデータが処理される。共通エレメントを通る伝播遅延が著しい場合には、回路が適切に機能するよう確保するためにクロック速度を下げることができる。ＴＤＭ解決策は、セクションIIIで述べた特徴に関連して使用することができる。
【０１２１】
VI．付加的な情報及び実施形態
本発明は、特定の形式のシグナリングに制限されない。入力及びクロック信号は、シングルエンド又は差動でよい。クロックは、「アイ(eyes)」を含んでもよい。クロックは、シングルデータレート、ダブルデータレート、クオドデータレート、等でよい。ダブルデータレートでは、単一のクロック信号の立ち上り縁又は立ち下り縁が使用されてもよく、又は２つの位相ずれしたクロックが使用されてもよい。信号は、パケット化されてもよいし、そうでなくてもよい。クロック信号（１つ又は複数）は、チップ内で発生されても、チップの外部で発生されてもよい。これは、常に、データ信号とは個別でもよいし、又はデータ信号に埋め込まれてそこから回復されてもよい。
【０１２２】
シミュレーションのための初期条件信号及び入力信号を設計し、構成し、形成し、動作し、デバッグし、収集するためにここに述べたプログラム（図３のような及び図４及び５に関連して使用されるような）は、インターネットを経て（例えば、ダウンロードされた信号を通して）、或いはＣＤ、ＲＯＭ、ＤＶＤ、フラッシュメモリ、又は他のメモリのような記憶媒体を通して提供することができる。このプログラムは、受け取られると、コンピュータメモリ又は他のメモリに記憶することができる。幾つかの実施形態では、チップの機能を遂行するためのインストラクションは、回路へ固定配線される。他の実施形態では、少なくとも幾つかの機能を、ファームウェア及び／又はソフトウェアを通して開始することができる。このようなファームウェア又はソフトウェアは、インターネットを経て提供することもできるし、或いはＣＤ、ＲＯＭ、ＤＶＤ、フラッシュメモリ又は他のメモリのような記憶媒体を通して提供することもできる。あるケースでは、ロジックは、回路しか含まず、又、他のケースでは、ロジックは、ソフトウェア又はファームウェアに応答して動作する回路を含む。
【０１２３】
図面は、概略的な性質のもので、必ずしも実際の回路レイアウトを意図していない。更に、実際の具現化では、種々の付加的な回路がチップにあり、又、図示された回路と回路との間にも回路がある。図示されたコンポーネントは、種々の付加的な入力及び出力を有する。本発明の種々の実施形態は、図示してここに説明したものとは異なる細部を含むことがある。
【０１２４】
レジスタは、メモリの形式であるが、一度に１ビットを保持し、又、この開示で言及されるメモリは、一度に２ビット以上を保持する。幾つかの図面において、単一のレジスタ（又はフリップ・フロップ）が入力信号を受け取るように示されている。しかしながら、これらのレジスタは、並列データビットを受け取る複数の並列レジスタを表すことができる。例えば、図２５において、設計レジスタＡ１、段１レジスタ４８８、及び段２レジスタ４９２は、各々、並列信号を受信する複数の並列レジスタを表すことができる。
【０１２５】
幾つかの実施形態では、レジスタのビットは、２ビット以上の価値のある情報を保持するマルチレベルビットである。即ち、あるケースでは、信号は、単に、高電圧又は低電圧しかもたず、又、他のケースでは、信号は、ビット当たり３つ以上の値を表すように複数のレベルを有する。上述した解決策は、マルチレベルシグナリングを組み込むように変更することができる。
【０１２６】
ある具現化では、ＦＩＦＯは、固定の深さを有し、又、他の具現化では、ＦＩＦＯは、製造又は構成の後に変更できる深さを有する。カウンタは、ゼロ又は別の値にカウントダウンするか、或いはゼロ又は別の値からカウントアップする。本発明の多数の方法を、従来の汎用コンピュータシステムのようなデジタル処理システムで遂行することができる。限定された機能しか遂行しないように設計又はプログラムされた特殊目的コンピュータを使用することもできる。
【０１２７】
コンポーネント、特徴、構造又は特性を「含んでもよい」、「含むかもしれない」又は「含むことができる」と明細書で記載する場合には、その特定のコンポーネント、特徴、構造又は特性を含むことが要求されるのではない。明細書又は特許請求の範囲で「ある」構造と称される場合には、１つの構造しかないことを意味するのではない。
【０１２８】
本発明の１つの実施形態は、ＣＤ  ＲＯＭ又は磁気ハードディスク又は光学ディスク或いは種々の他の別の記憶装置のようなマシン読み取り可能な媒体に記憶されるコンピュータプログラムとして具現化される回路設計及び合成コンピュータ支援設計ソフトウェアである。更に、本発明の多くの方法は、従来の汎用コンピュータシステムのようなデジタル処理システムで遂行することができる。１つの機能しか遂行しないように設計又はプログラムされた特殊目的コンピュータを使用することもできる。
【０１２９】
図３４は、本発明により使用できる典型的なコンピュータシステムの一例を示す。このコンピュータシステムは、ＨＤＬコードで記述された設計のロジック合成を遂行するのに使用できる。図３４は、コンピュータシステムの種々のコンポーネントを示すが、そのような細部は本発明に密接に関連していないので、コンポーネントを相互接続する特定のアーキテクチャー又は仕方を表すように意図されていない点に注意されたい。図３４のアーキテクチャーは、例示のために設けられたに過ぎず、本発明に関連して使用されるコンピュータシステム又は他のデジタル処理システムは、この特定のアーキテクチャーに限定されないことに注意されたい。又、より少数のコンポーネント又はおそらくより多くのコンポーネントを有するネットワークコンピュータ及び他のデータ処理システムも、本発明に使用できることが明らかであろう。図３４のコンピュータシステムは、例えば、ＩＢＭ又はアップルマッキントッシュコンピュータでよい。
【０１３０】
図３４に示すように、データ処理システムの形態のコンピュータシステム１１０１は、マイクロプロセッサ１１０３、ＲＯＭ１１０７、揮発性ＲＡＭ１１０５、及び不揮発性メモリ１１０６に接続されたバス１１０２を備えている。インテル、モトローラ又はＩＢＭからのマイクロプロセッサでよいマイクロプロセッサ１１０３は、キャッシュメモリ１１０４に結合される。バス１１０２は、これらの種々のコンポーネントを一緒に相互接続すると共に、これらコンポーネント１１０３、１１０７、１１０５及び１１０６を、ディスプレイコントローラ及びディスプレイ装置１１０８に相互接続し、且つマウス、キーボード、モデム、ネットワークインターフェイス、プリンタ、スキャナ、ビデオカメラ、及びこの技術で良く知られた他の装置である入力／出力（Ｉ／Ｏ）装置のような周辺装置にも相互接続する。典型的に、入力／出力装置１１１０は、入力／出力コントローラ１１０９を通してシステムに結合される。揮発性ＲＡＭ１１０５は、典型的に、メモリのデータをリフレッシュし又は維持するために常時電力を必要とするダイナミックＲＡＭ（ＤＲＡＭ）として具現化される。不揮発性メモリ１１０６は、典型的に、システムから電力が除去された後もデータを維持する磁気ハードドライブ、磁気光学ドライブ、光学的ドライブ、ＤＶＤ  ＲＡＭ、又は他の形式のメモリシステムである。典型的に、不揮発性メモリは、ランダムアクセスメモリでもあるが、これは、必要でない。図３４は、不揮発性メモリがデータ処理システムにおいて残りのコンポーネントに直結されたローカル装置であることを示すが、本発明は、システムから離れた不揮発性メモリ、例えば、モデムやイーサネットインターフェイスのようなネットワークインターフェイスを通してデータ処理システムに結合されたネットワーク記憶装置を利用できることが明らかであろう。バス１１０２は、この技術で良く知られた種々のブリッジ、コントローラ、及び／又はアダプタを通して互いに接続される１つ以上のバスを含むことができる。一実施形態では、Ｉ／Ｏコントローラ１１０９は、ＵＳＢ周辺装置を制御するためのＵＳＢ（ユニバーサルシリアルバス）アダプタ、及び／又はＩＥＥＥ１３９４周辺装置を制御するためのＩＥＥＥ１３９４バスアダプタを含む。
【０１３１】
以上の説明から、本発明の観点は、少なくとも一部分はソフトウェアで実施できることが明らかであろう。即ち、この技術は、コンピュータシステム又は他のデータ処理システムにおいて、マイクロプロセッサのようなそのプロセッサに応答して、ＲＯＭ１１０７、揮発性ＲＡＭ１１０５、不揮発性メモリ１１０６、キャッシュ１１０４、又はリモート記憶装置のようなメモリに含まれたインストラクションのシーケンスを実行するように実施される。種々の実施形態では、固定布線回路をソフトウェアインストラクションと組み合せて使用して、本発明を具現化することができる。従って、この技術は、ハードウェア回路及びソフトウェアの特定の組み合せに限定されず、又、データ処理システムにより実行されるインストラクションに対する特定のソースにも限定されない。加えて、この説明全体にわたり、種々の機能及び動作は、説明を簡略化するためにソフトウェアコードにより遂行され又は生じるとして説明された。しかしながら、当業者であれば、このような表現は、マイクロプロセッサ１１０３のようなプロセッサによるコードの実行から機能が得られることを意味することが明らかであろう。
【０１３２】
データ処理システムにより実行されたときにシステムが本発明の種々の方法を遂行するようにさせるソフトウェア及びデータを記憶するのに、マシン読み取り可能な媒体を使用することができる。この実行可能なソフトウェア及びデータは、例えば、ＲＯＭ１１０７、不揮発性ＲＡＭ１１０５、不揮発性メモリ１１０６、及び／又はキャッシュ１１０４を含む種々の場所に記憶されてもよい。このソフトウェア及び／又はデータの各部分は、これら記憶装置のいずれか１つに記憶されてもよい。
【０１３３】
従って、マシン読み取り可能な媒体は、マシン（例えば、コンピュータ、ネットワーク装置、パーソナルデジタルアシスタント、製造ツール、１つ以上のプロセッサのセットをもつ装置、等）によりアクセスできる形態で情報を与える（即ち、記憶し及び／又は送信する）メカニズムを含む。例えば、マシン読み取り可能な媒体は、記録可能／記録不能な媒体（例えば、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、等）、電気的、光学的、音響的又は他の形態の伝播信号（例えば、搬送波、赤外線信号、デジタル信号、等）、等々を含む。
【０１３４】
幾つかの実施形態に関して本発明を説明したが、本発明は、上述した実施形態のみに限定されるものではなく、本発明の精神及び特許請求の範囲内で種々の変更及び修正がなされ得る。従って、以上の説明は、例示に過ぎず、それに限定されるものではない。
【符号の説明】
【０１３５】
１４：チップ（モジュール）
１６：インターフェイス
２０：コンピュータ
２２：プロセッサ
２４：メモリ
３０：コンピュータ
３２：プロセッサ
３４：メモリ
３８：チップ
４０：製造装置
４２：インターフェイス
１００：チップ
１０４：設計回路
１０６：複製モジュール
１１０：供試設計ロジック
１１２：付加的なロジック
１１６、１１８：レジスタ
１２２：トリガーロジック
１２４：制御ロジック
１３０：供試複製ロジック
１３４、１３６：遅延回路
１３８、１４０：レジスタ
１４４、１４８：マルチプレクサ
１４６、１５０：レジスタ
１６０：チップ
２０２：設計ロジックブロック
２０４：複製ロジックブロック
２１２：遅延ロジック
２１４：クロック制御ロジック
２１８：ブレークポイント
２３０：トリガーロジック
２５２：制御回路
２５４：複製ＲＡＭ
２５６：スキャンチェーン
【図１】
0005410414.tif 000002
【図２】
0005410414.tif 000003
【図３】
0005410414.tif 000004
【図４】
0005410414.tif 000005
【図５】
0005410414.tif 000006
【図６】
0005410414.tif 000007
【図７】
0005410414.tif 000008
【図８】
0005410414.tif 000009
【図９】
0005410414.tif 000010
【図１０】
0005410414.tif 000011
【図１１】
0005410414.tif 000012
【図１２】
0005410414.tif 000013
【図１３】
0005410414.tif 000014
【図１４】
0005410414.tif 000015
【図１５】
0005410414.tif 000016
【図１６】
0005410414.tif 000017
【図１７】
0005410414.tif 000018
【図１８】
0005410414.tif 000019
【図１９】
0005410414.tif 000020
【図２０】
0005410414.tif 000021
【図２１】
0005410414.tif 000022
【図２２】
0005410414.tif 000023
【図２３】
0005410414.tif 000024
【図２４】
0005410414.tif 000025
【図２５】
0005410414.tif 000026
【図２６】
0005410414.tif 000027
【図２７】
0005410414.tif 000028
【図２８】
0005410414.tif 000029
【図２９】
0005410414.tif 000030
【図３０】
0005410414.tif 000031
【図３１】
0005410414.tif 000032
【図３２】
0005410414.tif 000033
【図３３】
0005410414.tif 000034
【図３４】
0005410414.tif 000035