JP5405451B2 - 自動回路設計及びシミュレーションに使用するための技術 - Google Patents

自動回路設計及びシミュレーションに使用するための技術 Download PDF

Info

Publication number
JP5405451B2
JP5405451B2 JP2010507480A JP2010507480A JP5405451B2 JP 5405451 B2 JP5405451 B2 JP 5405451B2 JP 2010507480 A JP2010507480 A JP 2010507480A JP 2010507480 A JP2010507480 A JP 2010507480A JP 5405451 B2 JP5405451 B2 JP 5405451B2
Authority
JP
Japan
Prior art keywords
register
memory
additional
design
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010507480A
Other languages
English (en)
Other versions
JP2010531001A5 (ja
JP2010531001A (ja
Inventor
リチャード シー メクスナー
マリオ ラルシュ
チュン キット ヌグ
ケニス エス マケルヴェイン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Synopsys Inc
Original Assignee
Synopsys Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Synopsys Inc filed Critical Synopsys Inc
Publication of JP2010531001A publication Critical patent/JP2010531001A/ja
Publication of JP2010531001A5 publication Critical patent/JP2010531001A5/ja
Application granted granted Critical
Publication of JP5405451B2 publication Critical patent/JP5405451B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明の実施形態は、一般に、自動回路設計及び/又は回路シミュレーションに係る。
関連出願:本出願は、2007年5月9日に出願された米国プロビジョナル特許出願第60/917,015号(代理人管理番号02986.P064Z)、2007年5月9日に出願された米国プロビジョナル特許出願第60/917,024号(代理人管理番号02986.P066Z)、2007年5月9日に出願された米国プロビジョナル特許出願第60/917,027号(代理人管理番号02986.P067Z)、及び2007年5月9日に出願された米国プロビジョナル特許出願第60/917,033号(代理人管理番号02986.P068Z)の利益を主張するもので、これらの出願は、参考としてここにそのまま援用される。本出願は、2008年5月8日に出願された“Techniques for Use with Automated Circuit Design and Simulations”と題する特許出願第12/117,693号(代理人管理番号02986.P064)、2008年5月8日に出願された“Techniques for Use with Automated Circuit Design and Simulations”と題する特許出願第12/117,711号(代理人管理番号02986.P067)、及び2008年5月8日に出願された“Techniques for Use with Automated Circuit Design and Simulations”と題する特許出願第12/117,714号(代理人管理番号02986.P068)と同日に出願されている。これら4つの特許出願は、本節、名称、概要部分、請求の範囲、及び要約書を除いて、同じである。
幾つか例を挙げると、パーソナルコンピュータ、埋め込み型コントローラ、セルラー電話及び他の通信装置を含む種々様々なシステムに集積回路(IC又はチップ)が使用されている。回路設計者は、回路設計及びシミュレーションのためにコンピュータ支援技術をしばしば使用する。複雑なデジタル回路の設計及びシミュレーションに役立つようにデジタル回路を記述するために、ハードウェア記述言語(HDL)のような標準的言語が開発された。これに限定されないが、VHDL及びVerilogを含む多数のハードウェア記述言語が工業標準として発展している。VHDL及びVerilogは、抽象的データ形式を使用してゲートレベル、レジスタ転送レベル(RTL)又は振舞いレベルでハードウェアモデルを定義できるようにする汎用ハードウェア記述言語である。装置技術が進歩し続けるにつれて、新規な装置及び設計スタイルに使用するようにHDLを適応させるために種々の製品設計ツールが開発された。
HDLコードで集積回路を設計する際に、先ず、コードが書かれ、HDLコンパイラーでコンパイルされる。HDLソースコードは、あるレベルで回路エレメントを記述し、そしてコンパイラーが、このコンピレーションからRTLネットリストを形成する。RTLネットリストは、典型的に、現場でプログラム可能なゲートアレイ(FPGA)又は特定用途向け集積回路(ASIC)のような特定ベンダー集積回路のテクノロジー/アーキテクチャーとは独立しているという点で、テクノロジー的に独立したネットリストである。RTLネットリストは、回路エレメントの概略表現に対応する(振舞い表現に対抗して)。次いで、相関(マッピング)オペレーションを遂行して、テクノロジー的に独立したRTLネットリストから、ベンダーのテクノロジー/アーキテクチャーで回路を形成するのに使用できるテクノロジー特有のネットリストへと変換する。FPGAベンダーは、異なるテクノロジー/アーキテクチャーを使用して、それらの集積回路内で論理回路を具現化する。従って、テクノロジー的に独立したRTLネットリストは、特定ベンダーテクノロジー/アーキテクチャーに対して特有のネットリストを形成するようにマップされる。
HDLコードが書かれてコンパイルされた後に、集積回路(IC又はチップ)、或いは複数のICを含むシステムの設計が正しいことが検証される。進歩し続ける処理技術及びそれに対応する設計サイズ及び複雑さの急増は、これに限定されないが慣習的なシミュレーションツール及び技術を使用して解決するのが困難なASICのような複雑な回路設計に対する検証の問題を招いた。現在のシミュレーションツールは、例えば、ModelSim、VCS及びNCSIMシミュレーションツールを含む。
その結果、何人かの設計者は、ASIC設計を検証するために、FPGAのような複数のICを使用してプロートタイプボードを構築した。しかしながら、ハードウェア設計のデバッグに伴う問題が依然ある。デバッグ中にエラーが検出されると、設計者は、回路から当該信号を取り出し、そして論理分析器を使用してエラーの原因を決定するように試みることができる。JTAG(ジョイントテストアクショングループ)は、サブブロックに関する情報へのアクセスを得ることにより集積回路のサブブロックをテストし、デバッグするための良く知られた技術である。しかしながら、これは、困難なプロセスであると共に、特に、断続的なエラーがある場合には、しばしば有効でない。シミュレータを使用して、エラーをデバッグすることができる。しかしながら、既に発生したエラーは、それを繰り返し且つ再構成することがしばしば困難である。更に、複雑さにもよるが、シミュレーションでは、エラーが発生したポイントを得るのに実質的な量の時間を要する。
幾つかの実施形態における方法は、レジスタ入力信号を受け取るための設計レジスタを含む設計回路の記述を受け取ることを含む。又、この方法は、レジスタ入力信号のスナップショットを受け取るための付加的なレジスタの記述を含む付加的な記述を、少なくとも1つのコンピュータプログラムを通して発生することを含み、その付加的なレジスタは、設計回路の少なくとも一部分のシミュレーションに使用するためのレジスタ初期条件信号を与える。
幾つかの実施形態における方法は、遅延したメモリ入力信号を受け取るための複製メモリと、回路の動作のシミュレーションに使用する初期条件信号を与えるためにレジスタ入力信号のスナップショットを受け取る付加的なレジスタと、メモリ入力信号及びレジスタ入力信号を記憶する入力信号記憶回路とを備えたチップを動作することを含む。又、この方法は、前記与えられた初期条件と、メモリ及びレジスタ入力信号の少なくとも幾つかを少なくとも1つのシミュレーションプログラムに与え、そして少なくとも1つのシミュレーションプログラムを通してシミュレーションを遂行することも含む。
幾つかの実施形態における装置は、レジスタ入力信号を受け取るための設計レジスタと、この設計レジスタのコンテンツのスナップショットを受け取るための付加的なレジスタとを備えている。又、この装置は、レジスタ入力信号を受け取るための入力信号記憶回路も備え、トリガー条件に応答して、付加的なレジスタは、初期条件信号を与え、入力信号記憶回路は、レジスタ入力信号を与える。
他の実施形態も、以下に述べるようにソフトウェアを実行し又は信号を処理する方法、装置、システム、チップ、ソフトウェア、信号、及びコンピュータにおいて具現化することができる。
本発明の実施形態は、以下の説明、及び本発明の実施形態を示すために使用される添付図面を参照することにより、理解することができよう。しかしながら、本発明は、これら図面の細部に限定されない。
本発明の幾つかの実施形態によるコンピュータ、インターフェイス及びチップを備えたシステムのブロック図である。 本発明の幾つかの実施形態によるコンピュータ、製造装置、インターフェイス及びチップを備えたシステムのブロック図である。 本発明の幾つかの実施形態によりチップを構成又は製造するためのファイルを発生するプログラムの種々の観点を示すフローチャートである。 本発明の幾つかの実施形態によりチップを動作する種々の観点を示すフローチャートである。 本発明の幾つかの実施形態によるシミュレータにおいて初期条件信号及び入力信号を使用する種々の観点を示すフローチャートである。 本発明の幾つかの実施形態によるチップにおける関連回路を伴うロジック及び複製ロジックを示すブロック図である。 本発明の幾つかの実施形態によるチップにおけるロジック及び関連回路、並びに別のチップにおける複製ロジック及び関連回路を示すブロック図である。 本発明の幾つかの実施形態による関連回路を伴うロジック及び複製ロジックを示すブロック図である。 本発明の幾つかの実施形態の種々の観点を示すフローチャートである。 本発明の幾つかの実施形態によるRAMハードウェア置き換えを示すブロック図である。 本発明の幾つかの実施形態により非同期クロック信号間の位相関係を決定するためのシステムを示すブロック図である。 図11のシステムに対するタイミング図である。 図11のシステムに対するタイミング図である。 本発明の幾つかの実施形態により非同期クロック信号間の位相関係を決定するためのシステムを示すブロック図である。 図14のシステムに対するタイミング図である。 本発明の幾つかの実施形態により非同期クロック信号間の位相関係を決定するためのシステムを示すブロック図である。 図16のシステムに対するタイミング図である。 本発明の幾つかの実施形態による設計モジュール、複製モジュール及び関連回路を示すブロック図である。 本発明の幾つかの実施形態による設計モジュール、複製モジュール及び関連回路を示すブロック図である。 本発明の幾つかの実施形態による設計モジュール、複製モジュール及び関連回路を示すブロック図である。 本発明の幾つかの実施形態によるスナップショット解決策に使用される回路を伴うチップを示すブロック図である。 本発明の幾つかの実施形態による図19のチップの一部分を例示するブロック図である。 本発明の幾つかの実施形態による図21のチップの一部分を例示するブロック図である。 本発明の幾つかの実施形態による図22の回路の一部分を例示するブロック図である。 本発明の幾つかの実施形態による図23の回路の一部分を例示するブロック図である。 本発明の幾つかの実施形態による図21のチップの一部分を例示するブロック図である。 本発明の幾つかの実施形態によるスナップショット解決策に使用される回路を伴うチップを示すブロック図である。 本発明の幾つかの実施形態による時分割マルチプレクサ解決策に使用される回路を伴うチップを示すブロック図である。 本発明の幾つかの実施形態による図28のシステムに対するタイミング図である。 本発明の幾つかの実施形態による図28のシステムに対するタイミング図である。 本発明の幾つかの実施形態による時分割マルチプレクサ解決策に使用される回路を伴うチップを示すブロック図である。 本発明の幾つかの実施形態による時分割マルチプレクサ解決策に使用される回路を伴うチップを示すブロック図である。 図32のシステムに対するタイミング図である。 本発明に使用される例示的コンピュータシステムを示す。
以下の説明及び添付図面は、本発明の実施形態を例示するもので、本発明を何ら限定するものではない。本発明の実施形態を理解するために、多数の特定の細部について説明する。しかしながら、ある場合には、本発明を不明瞭にしないために良く知られた又は従来の細部は説明しない。
ここに述べる本発明の幾つかの実施形態は、エラー、又は他の当該事象が発生する前の時点において疑わしいロジック設計の状態を捕捉することを含む。この開示は、本発明の3つのカテゴリ、即ち(1)ロジック複製解決策、(2)スナップショット解決策、及び(3)時分割マルチプレクサ解決策、を網羅するものである。更に、本発明のいずれのカテゴリにも使用できる本発明の多数の特徴がある(セクションIIIで述べる)。本発明の幾つかの実施形態は、2つ以上の解決策及び2つ以上の付加的な列挙された特徴を含む。他の実施形態は、回路を設計し、初期条件信号及び入力信号をチップから抽出し、そして初期条件信号及び入力信号をシミュレーションに使用するためのプログラムを含む。ここで使用する「チップ」という語は、「モジュール」を含む。次の目次は、この開示のあらましを示す。
I.システムの概略
II.ロジック複製解決策
III.幾つかの実施形態のための付加的な特徴
A.機能的に同等であるが異なる複製モジュール
B.シミュレータにおいて初期条件をHDLコードに相関
C.ハードウェア置き換えのリストの作成
D.内部状態へのアクセス
E.公式検証フロー技術
F.区画化
G.ブラックボックス
H.マルチクロックドメイン
I.低速クロックを高速クロックでサンプリング
J.低速クロックから発生された信号を高速クロックでサンプリング
K.個別のFPGA又はASICにおける複製
IV.スナップショット解決策
V.時分割マルチプレクサ解決策
VI.付加的な情報及び実施形態
この開示は、ここに述べる種々の発明の1つ以上の具現化を指すために「幾つかの実施形態において」及び「他の実施形態において」という句を使用する。「幾つかの実施形態」を指すときには、必ずしも、そのたびに同じ実施形態を指していない。ある方法、装置、システム及びチップは、2つ以上の実施形態を含むことがある。
I.システムの概略
ロジック設計をテストすることは、ランニングシミュレーションにより故障が分析される重要なステップである。実際のエラーを招く初期条件及び入力のセットをシミュレーションに使用して、問題を再現し、設計者が最終的にそれを取り除く解決策を発見できるようにする。例示的構成では、故障が生じるまでチップがテストされる。又、チップは、故障を招く入力及び条件を記録できるようにインターフェイスによって接続もされる。次いで、情報は、シミュレーションプログラムへ供給され、問題の原因を分析する。
図1を参照すれば、チップ(又はモジュール)14は、インターフェイス16(JTAGインターフェイスでよい)を通してコンピュータ20にインターフェイスする。幾つかの実施形態では、チップ14は、コンピュータ20のプログラムによりJTAGインターフェイス16を通して構成されたゲートアレイを備えている。この構成は、JTAGインターフェイスを通してチップの種々の信号を目に見えるようにする。ここに詳細に述べるように、チップ14が構成された後、エラー又は別の当該事象が発生する回路で初期条件信号(初期条件)及び入力信号を収集するように動作が行われる。本発明の幾つかの実施形態では、トリガー条件(例えば、エラー条件)が生じるまで入力信号が遅延され、そしてその遅延された信号が凍結される。ある複製又は追加レジスタ(及び幾つかの具現化では、他のメモリ)のコンテンツは、遅延されて凍結された入力信号のグループの開始又はその付近におけるレジスタ(及び他のメモリ)のコンテンツである初期条件を保持する。遅延された入力信号は、次いで、トリガー条件を導く入力信号となる。初期条件及び入力信号をシミュレータに与えて、トリガー条件を導く当該回路の動作を(とりわけ)シミュレーションすることができる。
初期条件及び入力信号は、JTAGインターフェイス16を通してコンピュータ20のシミュレータへ与えられる。一般的に、データは、インターフェイスからシミュレータへ直接与えられるのではなく、別のソフトウェアプログラムを通して与えられる。シミュレータは、メモリ24に記憶されてプロセッサ22で実行されるソフトウェアプログラムを含む。初期条件及び入力信号のために、シミュレータは、チップを詳細にシミュレーションして、エラー又は他の当該事象の性質を発見するよう試みることができる。従って、シミュレータは、デバッグ及び他の目的で使用することができる。プログラミング及び構成を行うコンピュータは、必ずしも、シミュレーションを行うコンピュータではない。他の実施形態では、ゲートアレイが含まれず、JTAG以外のインターフェイスが使用されない。
故障を分析するには、早期のデータ伝播がしばしば必要とされる。というのは、故障が発生すると、データが著しく変化して故障の原因を覆ってしまうからである。更に、データ処理は、後方に実行することが困難であり、従って、データの後方追跡を行って初期のデータを検索することはできない。ある例示的構成では、遅延入力を有し、従って、エラーの早期兆候を与えてシミュレーションを踏み出せるようにする新規なチップモジュールが製造される。
図2は、チップ(又はモジュール)38を製造するための製造装置40へチップ製造ファイル(1つ又は複数)を与えるプログラム(1つ又は複数)をコンピュータ30が備えたシステムを示す。図1のコンポーネントは、2つ以上のコンピュータ、及び製造装置の種々の断片を異なる位置に備え、異なる時間に動作することができる。チップ38が製造された後に、エラー又は別の当該事象が発生する回路に関連した初期条件及び入力信号を収集するように動作が行われる。初期条件及び入力信号は、インターフェイス42を通してコンピュータ30のシミュレータに与えられる。シミュレータは、メモリ34に記憶されてプロセッサ32で実行されるソフトウェアプログラムを含む。初期条件及び入力信号のために、シミュレータは、チップを詳細にシミュレーションして、エラー又は他の当該事象の性質を発見するよう試みることができる。製造ファイル(1つ又は複数)を与えるコンピュータ(1つ又は複数)は、必ずしも、シミュレーションを行うコンピュータではない。
幾つかの実施形態に関連したプロセスの概略は、次の通りである。しかしながら、他の実施形態では、細部が列挙されたものとは異なることがある。設計者は、ソースコードにおける1つ以上のモジュールを分析のために選択できる。デバッグハードウェアに対するトリガーとして使用するために幾つかの信号を選択することができる。これら信号の状態は、デバッグハードウェアをトリガーするための厳密な条件を定義するために設計者により指定することができる。デバッグハードウェアが合成され、ネットリストが作成され、最終的な設計がプレース・アンド・ルートを通して進められる。これらのプロセスに対して種々のソフトウェアツールが使用される。例えば、合成ツールは、ハードウェア合成に使用される。次いで、設計は、FPGA又はASICのようなハードウェア装置に入れられる。ハードウェアが実行される。トリガー条件が検出されると、全てのデバッグハードウェアは、デバッグハードウェアにおいて遅延のために使用される先入れ先出し回路(FIFO)と共に、凍結される。FIFO及びデバッグハードウェアの状態は、制御コンピュータによって取得される。この情報は、ソフトウェアシミュレータにより使用できるフォームへ変換される。設計は、シミュレータへインポートされ、そして初期条件信号及び入力信号が印加される。設計者又は別の個人(1人又は複数)は、シミュレータを使用して、ハードウェアモジュールをデバッグすることができる。異なる具現化においては、人・対・プログラムによる自動化が異なるレベルで含まれる。
ここに述べる回路は、幾つか挙げると、マイクロプロセッサ、埋め込み型コントローラ、チップセット、セルラー電話チップ、を含む種々の形式のチップに使用することができる。
図3は、チップを構成又は製造するためのファイル(1つ又は複数)を作成するフローチャートである。コンピュータ20又は30におけるプログラム(1つ又は複数)は、回路の機能及びレイアウト、或いは回路の他の記述のファイル(1つ又は複数)を作成する(ブロック50)。あるケースでは、記述は、回路の機能及びレイアウトの完全な記述に満たないものを含んでもよい。この開示のセクションI.からVI.に述べる解決策の1つ以上に対して適宜に回路を含むようにファイル(1つ又は複数)が改訂されるか又は新規なファイル(1つ又は複数)が作成される(ブロック52)。例えば、プログラム(1つ又は複数)は、回路(設計回路又はオリジナル回路と称される)の記述を分析し、そしてその分析で得られた少なくとも幾つかの情報を使用して、回路の改訂ファイル又は新規なファイルのための付加的な記述を発生する。又、設計回路の記述に加えて、種々の他の情報を使用して、新規な回路を作成することができる。記述の分析の程度は、どれほど多くの情報が分析プログラム(1つ又は複数)に別々に与えられるか、及びプログラム(1つ又は複数)がそれ自身で収集しなければならないのはどれほど多く情報であるか、を含む種々のファクタに依存する。又、分析の程度は、プログラムに与えられる特定のコマンドに基づいて変化してもよい。あるコマンドは、他のコマンドより多くの分析を伴う。分析の範囲は、具現化及び他の状況に基づいて、広範囲から比較的僅かまで変化してもよい。
改訂ファイル(1つ又は複数)は、ブロック50の場合と同じプログラム(1つ又は複数)によって作られてもよいし、又は異なるプログラム(1つ又は複数)によって作られてもよい。例えば、改訂ファイルは、複製回路コンポーネントを指定してもよい。チップ構成又は製造ファイルは、改訂ファイルに基づいて作成される(ブロック54)。次いで、チップは、構成又は製造ファイルに応答して構成又は製造される(ブロック56)。
ここに述べる回路を表現するための種々の技術が存在する。簡単な概略を以下に述べる。例えば、回路のテキスト表現(例えば、HDLでの)は、第1レジスタ転送レベル(RTL)ネットリストを作成するようにコンパイルされる。RTLネットリストは、テキスト表現で記述された回路を通るデータの流れを示すために相互接続されたレジスタ及び他のロジックを示すことができる。コンパイラーの一例は、ロジック合成コンパイラーであり、これは、典型的に、汎用コンピュータシステムで動作するコンピュータプログラムであるが、幾つかの実施形態では、コンピュータシステムは、専用の特殊目的コンピュータシステムでよい。ロジック合成コンパイラーの一例は、カリフォルニア州サニーベールのSynplicity Inc.からの“Synplify(登録商標)”である。
第1のRTLネットリストは、回路をデバッグするプロートタイプボードを作成するために、FPGAのようなターゲットアーキテクチャーと相関させることができる。ターゲットアーキテクチャーは、典型的に、集積回路の供給者により決定される。ターゲットアーキテクチャーは、例えば、Altera、Xilinx、Lucent Technology、Advanced Micro Devices(AMD)、及びLattice SemiconductorのようなベンダーからのFPGA及び複雑なプログラム可能なロジック装置を含む。相関(マッピング)オペレーションは、希望の回路のRTLレベル記述を、ターゲットアーキテクチャーの構築ブロックを使用して具現化された等価回路へと変換することができる。テクノロジー特有のネットリストを作成することができる。次いで、プレース・アンド・ルートソフトウェアツールを使用して、ターゲットアーキテクチャーにおける回路の設計を作成することができる。
デバッグプロセスは、回路における問題エリアを識別することができる。更なる分析のために複製すべき回路の一部分を選択する、等の、ここに述べる解決策を使用することができる。この例では、回路の選択された部分が複製され、そして関連回路が追加される。改訂された(例えば、第2の)RTLネットリストを作成するために回路のテキスト表現をコンパイルし直すことができる。改訂RTLネットリストは、ターゲットアーキテクチャー、例えば、FPGA又はASIC或いは他のチップ、例えば、マイクロプロセッサ、通信チップ、等に相関(マップ)させることができる。本発明は、これらの細部に限定されない。種々の他の手順が使用されてもよい。例えば、複製回路を組み込むことは、ソースコード記述へ全面的に戻ることを必要としない。複製回路の具現化は、RTLネットリストにおいて行うことができ、或いはおそらく設計RTLネットリストを増分的に変更し又は追加する。
図4は、この開示で述べるように初期条件及び入力信号を得るためにチップを動作するフローチャートである。チップが動作される(ブロック60)。トリガー条件に応答してトリガー信号が発生される(ブロック62)。初期条件及び入力信号は、この開示のセクションI.からVI.で述べた解決策の1つ以上に基づいて得られる(ブロック64)。初期条件及び入力信号は、チップインターフェイスに与えられる(ブロック66)。
図5は、初期条件及び入力信号を使用してシミュレーションを遂行するフローチャートである。この開示のセクションI.からVI.に述べる解決策の1つ以上に基づいて得られた初期条件及び入力信号は、シミュレータにより使用するために受け取られる(ブロック70)。この初期条件及び入力信号に基づいてシミュレーションが遂行される(ブロック72)。トリガー条件に関連した回路動作に関する細部は、シミュレーションを通して識別される(ブロック74)。シミュレータは、種々のテスト又は手順を使用することができる。
図3から5のフローチャートは、幾つかの実施形態に対する単なる概略に過ぎない。他の実施形態は、これらのフローチャートに従わず、又はそれらの異なる細部を伴わない。実際の具現化では、種々の付加的なプログラム及び構造を使用することができる。
ここで使用する「設計回路」、「設計メモリ」及び「設計レジスタ」という語は、この開示で述べる技術の1つにおいて回路の分析及び追加(又は付加的な回路の記述)の前のオリジナル設計(又は設計の記述)の一部分である回路、メモリ及びレジスタを指す。設計回路は、オリジナル回路又は出発点の回路と称される。しかしながら、設計回路は、良く知られた特徴を含んでもよい。以下に述べるように、回路(又は回路の記述)の追加は、例えば、ロジック複製及び関連回路、スナップショットレジスタ及び関連回路、マルチプレクサ及びデマルチプレクサ並びに関連回路を含む。
II.ロジック複製解決策
初期条件信号及び入力信号を得るためのロジック複製解決策は、設計ロジックが与えない情報をオファーするロジックを複製することを含む。米国特許第6,904,576号の図3に類似した図8は、複製されたロジックを伴うシステムを示す。図8は、設計ロジックブロック202及び複製ロジックブロック204を含むチップにおける回路を例示している。一例として、オリジナル設計のデバッグで、ロジックブロック202に伴う問題が明らかになったとする。それ故、ロジックブロック202が選択され、そして複製ロジックブロック204として複製されて、問題の更なる分析を行えるようにする。例えば、図3のプログラム(ブロック52)を使用して、複製ロジック204を作成する。遅延ロジック212(FIFOのような)は、複製ロジックブロック204に与えられる入力信号を遅延させる。遅延ロジック212は、入力が設計ロジックブロック202に到達するよりも時間的に遅れて入力信号を複製ロジックブロック204に到達させる典型的な回路ロジック及びエレメント、例えば、FIFOを含む。このように、設計ロジックブロック202にエラーが発生すると分かった後にエラーを分析することができる。というのは、エラーが後で複製ロジックブロック204に現れるからである。
回路の複製部分を休止させるトリガー条件を設定できるように回路にトリガーロジック230が挿入される。トリガーロジックを制御するために1つ以上のコントローラを挿入することもできる。この例では、トリガーロジック230は、2つの出力、即ちアサートされたときにクロック制御ロジック214が進行を停止できるようにするブレークポイント信号218と、アサートされたときに遅延ロジック212が進行を停止できるようにする遅延休止信号とを有する。遅延休止信号は、複製ロジック204がそのレジスタ及びメモリのコンテンツを凍結するようにもさせる。
クロック制御ロジック214は、複製ロジックブロック204へ送られるクロック信号(1つ又は複数)を制御する。クロック制御ロジック214は、複製ロジックブロック204へ送られるクロック信号を休止させて、ある条件が生じたとき複製ロジックの実行を停止できるようにする典型的なロジック及び回路エレメントを含むことができる。又、クロック制御ロジック214は、クロックごとに信号が複製ロジックを経て歩進してエラーを分析できるようにもする。ブレークポイント218は、ある条件が生じたとき、例えば、トリガー条件が生じたときに、クロックを休止するようにセットできる。幾つかの実施形態では、通常のオペレーション中に、回路をクロックするシステムクロックが、クロック制御ロジック214のラッチを通して流れ、複製ロジックブロック204へのクロックとして働く。ブレークポイント信号は、クロックを、システムクロックのラッチ形態へとスイッチすることができ、これは、クロック信号をサイクルごとに休止して1つ歩進できるようにクロック制御信号により制御することができる。初期条件信号は、複製ロジック204内のレジスタ及びメモリから得ることができ、そして入力信号は、遅延ロジック212から得ることができる。本発明は、図示してここに説明する細部を含むことが要求されず、他の仕方で実施することもできる。
幾つかの実施形態では、本発明は、ロジック複製解決策を具現化するための種々の革新的な仕方を開示する。一実施形態において、複製モジュールからデータを直列に受け取るために付加的な直列回路を設けることができる。例えば、図6は、設計回路104及び複製モジュール106を含むチップ100を含む。設計回路104は、供試設計ロジック110及び付加的なロジック112を備えている。供試設計ロジック110は、設計モジュールと称することもできる。供試設計ロジック110及び付加的なロジック112は、当該チップの製造形態で使用するように意図された回路である。もちろん、設計回路は、設計の製造形態が完成される前に変更されてもよい。この実施例では、供試設計ロジック110は、レジスタ116及び118を含み、又、付加的なレジスタ、メモリ、種々の回路、及びある実施形態では、ファームウェア、のような種々の他のコンポーネントを含むこともできる。複製モジュール106は、供試複製ロジック130を備え、これは、供試設計ロジック110の場合と同様の回路、即ちレジスタ116及び118と同様のレジスタ138及び140を含む。
動作に際し、設計ロジック110及び複製ロジック130は、各々、同じ入力を受け取るが、複製ロジック130は、遅延形態の入力を受け取る。例えば、設計ロジック110は、導体114から入力信号(データ入力を含む)を、そして付加的なロジック112から付加的な入力信号(付加的なデータ入力信号を含む)を受け取る。又、複製ロジック130は、導体114から遅延回路134を経て入力信号を、そして付加的なロジック112から遅延回路136を経て付加的な入力信号を受け取る。図6の実施例では、遅延回路134及び136は、入力信号の巾に等しい巾と、所与の形式の状況及び/又はシグナリングに対する希望の遅延に等しい深さとを有するFIFOである。設計ロジック110、設計ロジック130、FIFO134及びFIFO136は、導体126からの1つ以上のクロック信号によりクロックされる。ロジック110及び130は、たとえFIFO134及び136が1つのクロック信号のみでクロックされても、2つ以上のクロック信号によりクロックすることができる。図6には示されていないが、1つ以上の他のクロック信号によりクロックされる付加的なFIFOがあってもよい。
入力信号は、データ、アドレス、制御、及び他の信号を含む異なる形式の信号を含んでもよい。時々、これらの入力信号は、単にデータ信号と称されるが、単なる慣習的なデータ以上のものを含んでもよい。設計及び複製モジュールは、メモリ及びレジスタを含むことができる。
図3のプログラム(ブロック52)は、例えば、複製モジュール106を設計するのに使用される。プログラムの異なる具現化は、異なるレベルの設計者関与を有する。例えば、幾つかの実施形態では、設計者は、コマンドを与え、そしてプログラムは、複製モジュールを作成する。他の具現化では、設計者は、複製モジュールに関する更なる細部を与え、そしてある具現化において、複製モジュールの設計に双方向に関与する。
動作に際して、トリガーロジック122は、設計ロジック110をモニタする。トリガー条件と称される特定の当該事象が生じると、トリガーロジック122は、トリガー信号をFIFO134及び136に与え、FIFOがクロック信号に応答するのを停止させる。又、トリガー信号は、複製ロジック130へと進み、レジスタ138及び140におけるレジスタ値を凍結する。又、トリガーロジック122は、制御回路124に信号を与えて、制御回路124が制御モードに入るようにし、このモードでは、FIFO134及び136のコンテンツがシミュレータのための入力信号として使用できるようにされ、且つ複製ロジック130のあるコンテンツがシミュレータの初期条件として使用できるようにされる。レジスタ138及び140は、初期条件を与えるように連鎖にされる。図6は、トリガーロジックによる影響も受けるレジスタ138及び140が、制御ロジック124の制御のもとで、マルチプレクサ144、レジスタ146、マルチプレクサ148、及びレジスタ150を通して初期条件信号を与える実施例を示す。マルチプレクサ144は、JTAGチェーンの入力も受け取る。制御回路124は、JTAG制御回路でもよい。制御回路124又は他の回路は、FIFO134及び136の出力とレジスタ146及び150のコンテンツとの間の時間遅延を考慮に入れることができる。マルチプレクサ144、148及びレジスタ146、150の回路の組み合わせは、チップから初期条件を得る特定の仕方を表すだけである。他の回路、例えば、複製ロジック130におけるレジスタ値をスキャニングし検索するための直列スキャニング回路を使用することもできる。
一実施形態において、複製モジュールは、同じチップ又は異なるチップに配置することができる。図7は、設計回路104、トリガーロジック122及び制御回路124がチップ160にあり、一方、複製モジュール106がチップ162にあることを示している。複製モジュールを異なるチップに入れる理由は、チップ160に充分な余地がないためである。
III. 幾つかの実施形態のための付加的な特徴
特に指示のない限り、(セクションII、IV及びVにおける)3つの主たる解決策の各々の幾つかの実施形態に関連して使用される幾つかの付加的な特徴は、次の通りである。しかしながら、各主たる解決策の他の実施形態は、これらの特徴の1つ、幾つか又は全部を含まない。更に、これら付加的な特徴の幾つかは、主たる解決策とは別個に使用されてもよい。
A.設計回路と機能的に同等であるが異なる複製モジュール
好ましい実施形態では、複製モジュールは、設計モジュールの機能を保存するが、デバッグを容易にするか又は複製回路を簡単化するために設計モジュールとは異なる回路を有する。複製回路は、潜在的な故障を分析する上で助けとなるように条件又は入力を収集することに焦点を当てた設計回路とは異なる。
複製モジュールは、デバッグを容易にするための回路変更に自由度をもつことができる。例えば、複製モジュールでは回路の最適化を抑制することができる。複製モジュールの目的は、デバッグシミュレーションのための初期条件及び入力を与え、従って、効率に関して表面上無関係の回路も、実際に、デバッグのために必要とされる。1つの観点において、複製モジュールにおいてハードウェアの置き換えが行われる。例えば、設計モジュール内の専有回路を、デバッグを容易にするために複製モジュールでは一般的な回路と置き換えることができる。ハードウェアの置き換えは、非露出状態へのアクセスを与える上で特に有用であり、これは、例えば、設計モジュール内のブラックボックスの内部状態を得るための困難なタスクである。内部状態のような非露出状態へのアクセスは、メモリ内の記憶データのようなモジュールの内部状態を検索するための制御回路を設けることを含む。別の観点において、複製モジュールが設計モジュールの一部分しか含まず、又は設計モジュールのある部分を省略するように、設計モジュールを区画化することができる。この区画化は、例えば、種々のタイミング問題に対処するために、複数の遅延回路を設計モジュール内から複製モジュールへ与えることを更に含むことができる。
B.シミュレータにおいて初期条件をHDLコードに相関
幾つかの実施形態では、チップからの少なくとも幾つかの初期条件の値をシミュレータにおいてHDLコード内の特定の位置に相関(即ち、マッピング又は関連付け)させることが含まれる。特定の位置は、HDLにおけるオブジェクト、例えば、信号、レジスタ、導体、メモリ、等でよい。幾つかの実施形態では、これは、HDL設計をネットリストへ相関するのに使用されるコンパイラーソフトウェア内の逐次最適化を禁止することを含む。回避すべき逐次最適化は、例えば、再タイミング、パイプライン化、配置複製及び状態指定を含むが、これらに限定されない。相関に使用されるコンパイラーソフトウェアは、初期条件の値がシミュレータプロセッサにより取得されるシーケンスと相関(マップ又は関連付け)させることのできる順序でのモジュール内の全メモリ及び記憶エレメントのリストを作成することができる。メモリエレメントの名前は、ソフトウェアシミュレータに適合できる信号インスタンスに直接相関させることができる。
図1、6及び9に関連して一実施形態が与えられる。図1のコンピュータ20における1つ以上のプログラムは、HDLコードを含むファイルを作成して、図6の回路に対する回路機能及びレイアウトを発生する(図9のブロック240)。コンピュータ20における同じ又は別のプログラム(1つ又は複数)は、機能及びレイアウト設計を変更し最適化する(図9のブロック242)。ここに使用する「最適化」という語は、単に改善を意味し、必ずしも、数学的な最適値に到達することではない。図6の回路を含むチップが構成され又は製造される(図9のブロック244)。トリガー信号に応答して、初期条件及び入力信号が、図6を参照して述べたように収集され、そしてコンピュータ20又は別のコンピュータで実行されるシミュレータプログラムに対して使用可能となる。収集された初期条件をシミュレータにおいてHDLコード内の特定位置と相関させるために、相関技術(1つ又は複数)が使用される(図9のブロック246(1))。例えば、相関は、FPGAに対する相関(マップ)されたネットリストとHDLソースコードとの相関である。もちろん、図9のブロック間には、種々の中間及び改訂ファイルがある。
相関技術(1つ又は複数)において種々の発見的解決法を使用することができる。1つのこのような発見的解決法は、回路のコンポーネントの命名である。スキャンチェーンにおける初期条件状態の順序と、HDLコードにおいて見つかるデータの関連エレメントの名前及び位置との間のリンケージを確立することができる。複製される全てのロジックに対してソースコードを使用することができる。ブラックボックス、例えば、内部装置についての詳細な情報をもたない回路ブロックの場合に、それらの出力は、複製設計への付加的な入力として取り扱うことができる。オリジナル設計におけるブラックボックスからの出力は、FIFOを通して複製回路の入力へと延びる。合成ツールは、モジュールごとに再タイミング及び逐次最適化をディスエイブルすることをサポートできる。他の実施形態は、このセクションの細部を含まず、又はそれらの変更も含まない。
幾つかの実施形態は、HDL設計をネットリストへマップするのに使用されるコンパイラーソフトウェア内での逐次最適化を禁止することにより、ハードウェアから収集された初期条件の値をHDLコード内の特定位置に関連付ける方法を提供する。マッピングに使用されるコンパイラーソフトウェアは、初期条件の値がプロセッサにより取得されるシーケンスに関連付けることのできる順序でのモジュール内の全メモリエレメントのリストを生成する。メモリエレメントの名前は、ソフトウェアシミュレータに適合できる信号インスタンスに直接相関させることができる。
C.ハードウェア置き換えのリストの作成
幾つかの実施形態は、ネットリストの作成においてコンパイラーにより遂行される全ハードウェア置き換えのリストを作成することによりハードウェアから収集された初期条件の値を相関することを含む。置き換えのリストは、物理的具現化からの信号名及び値を、ソフトウェアシミュレータに適合するHDLレベル表現へとさかのぼるのに使用される。一実施形態では、専有モジュールを等価回路と置き換えることができる。等価回路は、例えば、非露出状態へのアクセスを与えることで、デバッグを容易にすることができる。
D.内部状態へのアクセス
メモリエレメントを複製すべきときは、デバッグのために厳密な複製が有用でないことがある。というのは、オリジナルメモリエレメントは、通常、内部状態にアクセスしないからである。即ち、オリジナルメモリは、幾つかの非露出状態を有する。複製メモリは、典型的に、これら状態へのアクセスを与える。複製メモリは、置き換えられたメモリでよい(ハードウェア置き換えの一例)。というのは、非露出状態へのアクセスを許すための付加的な構造を含むからである。複製メモリは、メモリデータへのアクセスを許すための制御回路を含むことができる。シミュレータにおいてHDLコードで置き換えられたメモリを関連付けるために相関(マッピング)が与えられる。図9のフローチャートは、特にブロック246のパート(2)が適用される。
図10は、置き換えられたメモリを示す。複製ランダムアクセスメモリ(RAM)254は、設計(オリジナル)RAMと同じでよい。制御回路252は、トリガー条件の後にRAM254を凍結すると共に、スキャンチェーン256を通してRAM254のコンテンツをクロック出力して、例えば、制御コンピュータへ直列データを与えることができるようにする。複製モジュールからのアドレス及び複製モジュールからのデータは、制御回路252及びRAM254に与えられる。幾つかの実施形態では、必要なときに、合成ツールは、置き換えRAM設計を含むネットリストへポインタを戻す例えばCライブラリーのファンクションをコールすることができる。
ある実施形態は、図10の制御回路252のようなアクセス制御ロジックを含む特殊なRAM構造体に置き換えることにより複製回路における種々の形式のRAMを取り扱うための回路及び方法を包含する。このアクセス制御ロジックは、全ての通常の読み取り/書き込み信号及びクロックがイネーブルされたときに特殊なRAM構造体が通常のRAMのように動作できるようにする。又、アクセス制御ロジックは、トリガー条件が検出されると、RAMのオペレーションを凍結できるようにする。次いで、アクセス制御ロジックは、RAMのコンテンツを制御コンピュータへスキャン出力できるようにする。又、アクセス制御ロジックは、RAMのコンテンツを直列出力できるようにするスキャンチェーンを含むこともできる。RAMのコンテンツは、ソフトウェアシミュレーションのためにRAMの初期条件を収集するのに使用される。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。例えば、RAMは、ブラックボックスのように取り扱うこともできる。RAMの出力は、遅延FIFOへ供給することができ、これらFIFOは、入力と同様に複製モジュールに供給を行う。この解決策は、RAM構造体、例えば、BlockRAMを推測できない場合に、好ましい。
幾つかの実施形態は、複製ロジックにおいて種々の基本的専有ロジックモジュール(例えば、Xilinx SRL16シフトレジスタ及びAltera Altshifttapシフトレジスタ)を取り扱う回路及び方法を包含する。これは、これらの専有モジュールを、それらモジュールの内部状態へのアクセスを許す論理的等価回路と置き換えることを含む。これら内部状態は、コンピュータによってスキャンされ、ソフトウェアシミュレーション中に初期条件として使用することができる。例えば、外部回路へ接続するための入力及び出力ピンをもつ専有モジュールとして表されるXilinx SRL16シフトレジスタは、アクセス可能な内部状態をもつ機能的等価回路と置き換えることができる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
E.公式検証フロー技術
過去に、実際の設計がHDLコードでの記述に一致することを確認するために公式検証フロー技術が使用されている。幾つかの実施形態は、この公式検証フロー技術を使用することによりハードウェアからの初期条件の値を関連付けることを含む。その一例が、図9に、特に、ブロック246(3)で示されている。他の実施形態は、この特徴を含まず、又はそれらの変形も含まない。
F.区画化
一実施形態では、複製モジュールは、設計モジュール内から複製モジュールの各位置までの付加的な遅延回路を備えている。例えば、第1の遅延回路は、設計モジュールの入力を複製モジュールの入力に接続する。第2の(及び任意の他の)遅延回路は、設計モジュールの位置から複製モジュール内の適当な位置へ接続することができる。付加的な遅延回路は、特に、マルチクロックドメインに対してモジュールとモジュールとの間に正確なタイミングを与えることができる。
幾つかの実施形態では、設計モジュールは、複数の設計セグメントへと区画化される。ある観点において、設計セグメントを全て複製し、各複製セグメントを、遅延回路を経て各設計セグメントに接続することができる。別の観点において、設計セグメントの一部分だけを複製し、各複製セグメントを、遅延回路を経てその各々の設計セグメントに接続する。設計セグメントの各部分は、分離することもできるし、設計モジュール内に互いに埋め込むこともできる。別の観点では、設計セグメントの少なくとも一部分が複製されず、そして複製される各設計セグメントが遅延回路へ出力信号を与え、遅延回路の出力が複製セグメントの各位置へ与えられる。
G.ブラックボックス
設計モジュールは、複製されない少なくとも1つのセグメント、例えば、ブラックボックスモジュールをもつセグメントへと区画化することができる。回路設計は、ブラックボックス、例えば、内部状態や振舞いの知識がないモジュール、例えば、IPブロック又は専有ロジックモジュールをしばしば含む。本発明の幾つかの実施形態は、内部回路の細部を必要とせずにブラックボックス及び種々の専有ロジックモジュールを取り扱う回路及び方法を包含する。幾つかの実施形態では、振舞いが未知の専有ロジックは、複製ロジックへとコピーされない。むしろ、この方法は、設計モジュールにおける専有モジュールの出力を、複製ロジック内の各位置への付加的な入力として処理する。例えば、図20は、設計モジュール360及び複製モジュール362を含む。設計モジュールは、ロジック364を含み、その出力は、ブラックボックス366に与えられる。ブラックボックス366は、入力及び出力信号は既知であるが、未知の種々のファンクションを遂行する回路である。ブラックボックスロジック366の出力は、設計モジュール360のロジック368に与えられると共に、複製モジュール362の遅延回路FIFO376にも与えられ、全複製ロジック遅延を考慮する。FIFO376の出力は、ロジック378に与えられる。この点に関して、ブラックボックスロジック366は、複製モジュール362に直接複製されない。図20の実施例では、ロジック374の出力は、ロジック378に与えられない。幾つかの実施形態では、ロジック374は、複製されず、そしてFIFO376の出力は、複製モジュール内の各入力位置に接続される。トリガー条件に応答して、FIFO376のコンテンツは、コンピュータにより取得され、そしてソフトウェアシミュレーションにおいて専有ロジック366の出力をシミュレーションするのに使用される。一実施形態では、ロジック364の入力を複製ロジック374の入力に接続するために遅延回路(図示せず)が設けられる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
H.マルチクロックドメイン
設計モジュールは、別々の遅延入力を各々受け取るクロックドメインに基づいて区画化することができる。幾つかの実施形態は、2つの個別の非同期クロックによりクロックされる2つのロジック回路間のデータ転送のタイミングを取り扱う回路及び方法を包含する。この回路及び方法は、「同期フリップ・フロップ」を使用して、2つのクロックの相対的周波数により深さを決定できるFIFOへの供給を行うことができる。図18は、設計モジュール302における同期フリップ・フロップ312を示す。この回路及び方法は、多数のクロックドメイン間に交差する1つ以上の信号を同期するのに使用するよう拡張することができる。
多くの設計は、複数の独立したクロックを使用する。信号経路があるクロックドメインから別のクロックドメインへ交差するときにタイミングの問題が生じる。図18は、信号がクロック1のドメインからクロック2のドメインへ進む実施例を示す。設計モジュール302では、クロック1によりクロックされるフリップ・フロップ306によってデータ信号が受け取られる。フリップ・フロップ312の出力は、クロック1のドメインの一部分であるロジック308に与えられる。もちろん、より多くのデータ信号が並列に存在し得る。従って、フリップ・フロップ306及びフリップ・フロップ312は、各々、複数の並列なフリップ・フロップを表す。ロジック308の出力は、クロック2によりクロックされる同期フリップ・フロップ312に与えられる。フリップ・フロップ312の出力は、クロック2のドメインの一部分であるロジック314に与えられる。
複製モジュール304もクロック1及び2を受け取り、複製モジュールへのデータは、設計モジュールのデータを正確にエミュレートする。複製モジュール304は、フリップ・フロップ326を備え、これは、データを受け取り、そしてクロック1によりクロックされる。データは、フリップ・フロップ306により受け取られるデータでよく、そして遅延回路(図示せず)により遅延されてもされなくてもよい。フリップ・フロップ326の出力は、クロック1のドメインの一部分であるロジック328に与えられる。ロジック328の出力は、クロック2によってクロックされる同期フリップ・フロップ332に与えられる。クロックドメインの境界に交差する全ての信号は、合成ツールによって確認される。
図18の実施例では、同期フリップ・フロップ332の出力は、クロック2のドメインの一部分である(クロック2によってクロックされる)ロジック334へ通過されない。しかしながら、幾つかの実施形態では、フリップ・フロップ332の出力は、回路の状態を、例えば、レジスタ312のコンテンツの指示として収集するのに使用される。幾つかの実施形態では、同期フリップ・フロップ332は含まれない。
クロックドメインに交差する信号は、設計モジュール302における同期装置312を使用する。フリップ・フロップ312の出力は、クロック2によりクロックされるFIFO320により遅延された後に、ロジック334に与えられる。これは、ロジック334がロジック314と同じデータを得ることを補償する。トリガー条件に応答して、FIFO320は、新たなデータを受け入れないように凍結され、そしてそのコンテンツは、スキャンチェーンの一部分としてスキャンされて、シミュレータの入力信号を得ることができる。初期条件信号は、ロジック334におけるレジスタ及びメモリから得ることができる。
FIFOは、FIFOへクロックされるデータと同じクロックによりクロックされてもよい。1つのクロックドメインに対するFIFOの深さは、別のドメインにおける別のFIFOとは異なってもよい。この深さは、全てのドメインにおける全クロックに対して同じ量の時間遅延を与えるように計算することができる。クロックドメインを横切って信号を搬送するのに使用されるFIFOは、トリガー条件が検出されると、凍結されてもよい。FIFOのコンテンツは、シミュレーションに使用するためにスキャンチェーンへクロック出力されてもよい。
1つの設計内に複数のクロックがあるときには、ドメイン間のタイミングが正しいことを保証するために特定のガイドラインに従うことができる。例えば、図19において、データ信号は、クロック1の信号(クロック1)により設計モジュール340へクロックされる。設計モジュール340及び複製モジュール348内には、クロック2から離れて動作するクロックドメインがある。又、データ信号は、深さN1の入力FIFO344を通して複製モジュール348へ与えられる。設計モジュール340からのデータは、深さN2のドメイン間FIFO346を通して複製モジュール348へ与えられる。複製モジュール346の合計遅延は、クロック1の周期及び入力FIFO346の深さN1の両方に依存する。典型的に、遅延回路の合計遅延は、クロックの周期に逆比例する。ドメイン間FIFO346の目標は、以下に述べる遅延を与えることである。クロック2の周期が既知であると仮定すれば、深さN2は、次のように計算することができる。P1をクロック1の周期とし、P2をクロック2の周期とすれば、目標は、次のように、N2を導出することである。
(P1xN1)/(P2xN2)=1であるか又は実際にそうであるように1に近い。
P1xN2がP2で均一に割れる場合には、
N2=(P1xN1)/P2である。
さもなければ、N2は、
N2=((P1xN1)/P2)+1
の係数部分となる。
N2は、入力FIFOにより導入される遅延を補償するに充分な量の遅延をもつことができる。しかしながら、FIFO346からのデータがどんなものになるかについて依然曖昧である。シミュレーションの開始における2つのクロックの相対的な整列に基づき、クロック2のドメインの複製ハードウェアは、もう一度クロックされる必要がある。以下の基準が満足された場合には、クロック2は、複製モジュール348に対してもう一度クロックされる必要がある。Yをある数とし、
Y=((P1xN1)/P2)+1
Tをある時間周期とする。
T=fract(Y)xP2
ここで、fract(Y)は、Yの分数部分である。従って、T<D<P2として、遅延Dが与えられると、ハードウェアクロック2は、もう1サイクル、クロックされる必要がある。さもなければ、Dが0とTとの間に入るときには、付加的なクロック動作は必要でなくなる。
クロック1及び2のアクティブな縁の関係は、捕捉が完了するまでに決定することができない。それ故、次のシーケンスをたどることになる。プロセスをスタートする;トリガー条件が生じる;クロックの位相関係を決定する;クロック2の遅延条件を満足する場合にはクロック2をパルス化する;及びレジスタ及びRAMの状態を収集する。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
I.低速クロックを高速クロックでサンプリング
幾つかの実施形態は、設計において低速クロックを高速クロックで直接的にサンプリングすることにより2つの個別の非同期クロック間の関係を計算するための回路及び方法を包含する。各クロックの周波数及びデューティサイクルが既知である場合には、サンプルされたデータパターンに一致するように低速クロックのオフセットを調整することにより1つのクロックと他のクロックとの間の関係を計算することができる。このプロセスを使用して、2つ以上のクロック間の関係を決定することができる。各々の低速クロック信号は、最も速い(最高周波数)クロック信号と比較される。クロックは、一般的に、非同期であるが、特定のケースでは、クロックの2つ以上が同期することになり、しかし、この回路及び方法は、これを要求するものではないことに注意されたい。
マルチクロック設計では、各クロックの周波数が既知である。合成ツールは、ドメインごとにこの情報を与えることができる。データ捕捉の開始におけるアクティブなクロック縁の互いの関係は、未知である。例えば、図6において、図12のクロック信号(クロック)1及びクロック信号(クロック)2が設計ロジック110及び複製ロジック130への導体126に与えられると仮定する。時間t0において、導体126及び114のクロック及びデータが設計ロジック110に与えられるときに、クロック1及び2は、特定の位相関係を有する。この位相関係を表現する1つの仕方は、クロック1の立ち上り縁と、クロック2の次に続く立ち上り縁との間の時間である。時間t0+遅延において、導体114上のデータは、遅延回路134を通して複製ロジック130に到達する。時間t0+遅延において、導体126上のクロック1と2との間の位相関係は、通常、時間t0のときとは異なる。
設計における最も速いクロックでこれらのクロックをサンプリングすることでクロックごとにクロック縁を分析することによって位相関係を近似することができる。クロックサンプルは、回路、シミュレータ又は他のソフトウェアのような分析ロジック又はモジュールによりスキャンして分析できるFIFOに記憶することができる。ほとんどのケースでは、サンプルの数が増加すると、縁を取り巻く曖昧さのウインドウが減少される。クロックのサンプリングは、異なる仕方で処理することができる。全てのクロックが、例えば、少なくとも約50%のデューティサイクルを有するケースでは、サンプルされるクロックが、最も速いクロックにより直接的にサンプルされ、そしてその結果がFIFOに入れられる。精度を高めるために、クロックは、最も速いクロックの立ち上り縁及び立ち下り縁の両方においてサンプルすることができる。
例えば、図11では、フリップ・フロップ270及び272は、クロック2を入力として受け取る。フリップ・フロップ270は、クロック1によりクロックされ、そしてフリップ・フロップ272は、インバータ274を通して反転されたクロック1によりクロックされ、フリップ・フロップ270がクロック1の立ち上り縁でクロック2をサンプルし、且つフリップ・フロップ272がクロック1の立ち下り縁でクロック2をサンプルするようにする。フリップ・フロップ270及び272におけるサンプル値は、FIFO276へクロック入力され、このFIFOは、クロックの配置を決定するために回路又はプログラム278のような分析ロジック又はモジュールによりスキャン及び分析することができる。FIFO276と回路又はプログラム278との間には、付加的な回路があってもよい。
図12は、クロック1及び2と、クロック1の立ち上り縁及び立ち下り縁によりサンプルされたクロック2とを例示する。本発明の請求の範囲の回路及び方法は、3つ以上のクロックを含む。例えば、クロック2に類似しているが、クロック1及び2とは位相がずれている(及びおそらく周波数が異なる)クロック3は、クロック2と同様に、クロック1によりサンプリングされる。第1及び第2のクロック信号の位相関係は、上述したように確かめられる。というのは、その関係は、少なくとも1つの特定の時間(例えば、第1の時間)だからである。第1及び第3のクロック信号の位相関係は、少なくとも1つの特定の時間(例えば、第1の時間と同じでも異なってもよい第2の時間)について確かめられる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
J.低速クロックから発生された信号を高速クロックでサンプリング
幾つかの実施形態は、高速クロックのサンプリング周期内で低速クロックの各縁遷移を検出することにより2つの個別の非同期クロック間の関係を計算するための回路及び方法を包含する。各クロックの周波数及びデューティサイクルが既知である場合は、検出された縁データパターンに一致するように低速クロックのオフセットを調整することにより、1つのクロックと他のクロックとの間の関係を計算することができる。この回路及び方法は、2つ以上のクロック間の関係を決定するのに使用できる。
クロックを取り扱うこの第2の仕方は、サンプルされるべきクロックが、例えば、実質的に50%未満のデューティサイクルを有する場合に適用できる。デューティサイクルが小さ過ぎる場合には、図11のサンプリング装置は、幾つかのサンプル、又は1つのサンプルも、見出せないことがある。例えば、図13は、クロック1と、50%デューティサイクルより遥かに低いクロック2とを示す。図11の回路においてクロック2がクロック1によりサンプルされた場合に、その結果が図13に示されており、ここでは、クロック2のデューティサイクルが、クロック1により捕捉されるには狭過ぎるので、出力は一定である。クロックを整列するのに使用できる有効なデータは、捕捉されない。
図11の回路とは対照的に、クロックを直接的にサンプリングするのではなく、図14のように、クロックを使用して、例えば、2で除算する回路を駆動することができる。これは、アクティブな縁が検出されたときしか状態を変化しない信号を生じさせる。図14を参照すれば、クロック2(Clk2)によりクロックされるフリップ・フロップ282の負(Q*)の出力は、その入力にフィードバックされる。フリップ・フロップ282の正(Q)の出力は、クロック1によりクロックされるフリップ・フロップ284へ入力として与えられる。フリップ・フロップ284の出力は、クロック1によりクロックされるフリップ・フロップ286及び排他的OR(XOR)ゲート288へ入力として与えられる。フリップ・フロップ286のQ出力も、XOR288へ送られる。XOR288の出力は、後で分析するためにFIFOに与えられる。XORゲートの出力は、クロック1のサンプリングサイクル中にアクティブなクロック2の縁が生じたときに高になる。これにより生じる結果が図15に示され、この図は、クロック2の各アクティブな縁が、クロック1のドメインからクロックされる正レベル出力へとマップされることを示している。従って、図14の回路は、クロック2のデューティサイクルとは独立している。クロック1(最高周波数クロック)と比較される1つ以上の付加的なクロック信号があってもよい。この付加的なクロック信号(1つ又は複数)は、他のクロックとは位相ずれし及びおそらく周波数の異なるものでよい。図14は、立ち上り及び立ち下りの両クロック縁に回路が応答するように付加的なフリップ・フロップを含むよう変更することができる。幾つかのチップは、あるものは図11のような、又、あるものは図14のような複数のサンプリング装置を有することができる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
図16及び17は、図14及び15に代わるものを示す。図16及び17を参照すれば、ダブルクロック(ダブルClk1)は、クロック1(clk1)の立ち上り縁及び立ち下り縁のパルスである。図16は、ダブルClk1がフリップ・フロップ284及び286のクロック入力に与えられる以外は、図14と同様である。それにより得られるタイミング図が図17で、ダブルClk1を使用してClk2の正の縁が検出されている。負の縁の検出も使用できる。回路(図11、14及び16の回路、並びにこの開示に示す他の回路)の異なる実施形態では、その実施形態に基づき、クロック信号の立ち上り遷移、クロック信号の立ち下り遷移、又はクロック信号の立ち上り及び立ち下り遷移においてサンプルが作られるように回路を変更することができる。即ち、幾つかの実施形態では、サンプルが立ち上り遷移において作られ、他の実施形態では、サンプルが立ち下り遷移において作られ、そして更に別の実施形態では、サンプルが立ち上り及び立ち下り遷移において作られる。
K.個別のFPGA又はASICにおける複製
幾つかの実施形態は、個別のFPGA又はASIC装置においてロジックの複製部分を具現化するための方法(図3のような)を包含する。例えば、図6では、複製モジュール130は、設計ロジック110と同じチップにあり、一方、図7では、複製モジュール130は、設計モジュール110とは異なるチップにある。この方法は、単にあるチップから別のチップへの複製に適用されるのではなく、複数のチップから複数の付加的なチップへの複製(例えば、2個のチップから4個のチップ、3個のチップから6個のチップ、等々)にも適用できる。他の実施形態では、複数のチップからの回路の複製部分は、単一のチップに置くこともできるし、又はオリジナルチップの数より少ないチップに置くこともできる。例えば、2個のチップにおける回路の複製部分は、その両方を、1つの付加的なチップに置くこともできるし、或いは4個のチップにおける回路の複製部分を、その具現化にもよるが、1個、2個又は3個のチップに置くこともできる。他の実施形態は、このセクションの細部を含まず、又はそれらの変形も含まない。
IV.スナップショット解決策
上述したように、種々のスナップショット解決技術を使用して、シミュレーションのための初期条件信号及び入力信号を得ることができる。スナップショット解決策は、デバッグされるロジックの完全な複製を要求するものではなく、典型的に、規則的な間隔で選択された設計レジスタのスナップショットを記憶することを含む。1つの解決策は、設計モジュールにおいて記憶エレメントに対する所定の深さをもつ一連のデバッグ記憶レジスタ(スナップショットレジスタ)を生成する。オリジナル設計モジュールにおける各記憶エレメントは、新たに生成される記憶エレメントのセットに接続される。周期的ベースで、設計モジュールにおける記憶エレメントの値がスナップショットレジスタにストローブされる。スナップショットレジスタのデータは、トリガー条件が生じる所定時間前の、供試設計モジュールのレジスタに対する初期条件を含む。このデータは、次いで、収集されて、デバッグのためのソフトウェアシミュレーションプログラムへ入力として与えられる。スナップショット解決策の幾つかの具現化を以下に説明する。
図21は、図1のチップ14又は図2のチップ38の一例であるチップ414を示す。図21を参照すれば、チップ414は、設計メモリ及び複製メモリ426と、設計レジスタ及びスナップショットレジスタ428と、動作中にロジック422−1・・・ロジック422−Nから入力信号を受け取る入力FIFO430とを備えている。入力信号は、データ、アドレス、制御及びイネーブル信号を含む種々の形式の信号を含んでいる。クロック信号も含まれるが、他の図に示されている。エラー又は他の指定条件のようなトリガー条件(又は事象)に応答して、トリガーロジック418は、メモリ426、レジスタ428及びFIFO430における幾つかの又は全部のユニットがそれらのオペレーションを凍結させるようなトリガー信号(1つ又は複数)を与える。以下に詳細に述べるように、メモリ426及びレジスタ428は、信号TdoMs及びTdoRsを通して初期条件を与え、そしてFIFO430は、シミュレータにより使用するためにJTAGコントローラ420から、例えば、インターフェイス16を通してコンピュータ20(図1)へ送られる信号に応答して、入力信号を与える。1つの観点では、複製メモリは、遅延メモリ入力FIFOにより遅延されたメモリデータを含み、これは、複製メモリのコンテンツが、メモリ入力FIFOの長さであるクロックサイクル数だけ前の設計メモリのコンテンツであることを意味している。別の観点では、スナップショットレジスタは、スナップショットパルスにより制御される規則的な間隔での設計レジスタのスナップショットデータを含む。
トリガー信号アクションを具現化する種々の仕方がある。例えば、トリガー信号は、異なるコンポーネントを各々凍結する複数の信号を含む。複数の信号をもつ利点は、異なる長さの時間中それらをアサートできることである。
図22は、入力信号1・・・入力信号N、並びにクロック、トリガー及びJTAG信号を受信する設計メモリ及び複製メモリ426における設計及び複製メモリユニット434−1・・・434−Nを示す。クロック信号は、各メモリユニットに対して同じでもよいし、或いは幾つか又は全部のメモリユニットに対して異なってもよい。同様に、トリガー及びJTAG信号も、各メモリユニットに対して同じでもよいし、或いは幾つか又は全部のメモリユニットに対して異なってもよい。メモリユニット434−1・・・434−Nは、出力信号TdoM1・・・TdoMNを与え、その幾つか又は全部を使用して、初期条件信号を与えることができる。
図23は、入力信号1・・・入力信号N、並びにクロック、トリガー及びJTAG信号を受信する設計レジスタ及びスナップショットレジスタ428における設計及びスナップショットレジスタユニット436−1・・・436−Nを示す。クロック信号は、各レジスタユニットに対して同じでもよいし、或いは幾つか又は全部のレジスタユニットに対して異なってもよい。同様に、トリガー及びJTAG信号も、各レジスタユニットに対して同じでもよいし、或いは幾つか又は全部のレジスタユニットに対して異なってもよい。レジスタユニット436−1・・・436−Nは、出力信号TdoR1・・・TdoRNを与え、その幾つか又は全部を使用して、初期条件信号を与えることができる。メモリユニット434−1への入力は、レジスタユニット436−1へのユニットに必ずしも一致しないことに注意されたい。更に、図21、22及び23における文字Nの値は、必ずしも同じでなく、実際には、典型的に異なるものである。例えば、図23のNは、図21及び22のNより著しく大きい。初期条件信号は、図示されたものに加えて、多数のレジスタから与えることができる。
図21、22及び23は、幾つかの実施形態の幾つかの観点を伝えるために概略的性質のもので、完全な回路レイアウトを与えるものではない。図21、22及び23に示されたコンポーネントの間には中間回路があってもよい。例えば、ロジック422−1からの同じ信号が、必ずしも、メモリ426及びレジスタ428の両方へ直接付与されない。他の実施形態は、異なる細部を含む。
スナップショット解決策は、同じ周波数のクロック信号を受信するか又は異なる周波数のクロックを受信するメモリ及びレジスタとで機能する。メモリ426、レジスタ428及びFIFO430のあるメモリユニット、レジスタユニット及びFIFOが、メモリ426、レジスタ428及びFIFO430の他のメモリユニット、レジスタユニット及びFIFOとは異なるクロック信号を受信する場合の図21のチップ414の例を以下に述べる。以下の例では、クロックAは、クロックBより高い周波数を有する。
図24は、図22におけるユニット434−1・・・434−Nのうちの2つのユニットの実施例である設計及び複製メモリユニット446及び448を例示する。メモリユニット446は、設計メモリA1と、メモリ入力FIFO450と、リコール制御回路454と、複製メモリA1と、直列出力制御回路456とを備えている。メモリユニット448は、設計メモリB1と、メモリ入力FIFO460と、リコール制御回路464と、複製メモリB1と、直列出力制御回路466とを備えている。
設計メモリA1及びFIFO450は、図21のロジック422−1・・・422−Nのうちの1つ以上であるロジックA1からメモリ入力信号を受け取る。設計メモリA1及びFIFO450は、クロックAによりクロックされる。トリガー条件の前に、複製メモリA1もクロックA1によりクロックされる。リコール制御回路454は、FIFO450から信号を受け取り、それを複製メモリA1へ通す。FIFO450の深さは、ルックバック(look back)することのできる最大サイクル数である最大リコールルックバック長さであるが、以下に述べるように、ルックバックされる実際のサイクル数は、最大ルックバック長さ未満でよい。1つの観点では、最大リコールルックバック長さは、スナップショットパルスのインターバルであり、スナップショットレジスタコンテンツのサイクルを表す。しかしながら、トリガー信号は、2つのスナップショットパルス間にいつでも生じることができ、従って、ルックバックできるクロックサイクルの数は、1と、最大リコールルックバック長さとの間で変化する。ルックバックサイクルの最小数を確保するために、スナップショットレジスタは、2つの段で設計され(図25及び以下の説明を参照)、そしてFIFO450の深さは、最大リコールルックバック長さの2倍である。例えば、2倍の最大リコールルックバック長さのFIFO及び2段のスナップショットレジスタ(段1は、1000クロック前のスナップショットコンテンツを記憶し、段1は、2000クロック前のスナップショットコンテンツを記憶する)を伴うクロックAの1000サイクルのスナップショットパルスサイクルに対して、信号は、クロックAの2000サイクルでFIFO450を通過する。この設計では、段1のスナップショットコンテンツは、トリガーの1ないし1000クロックサイクル前のクロックサイクルの値を記憶する。段2のスナップショットコンテンツは、トリガーの1000ないし2000クロックサイクル前のクロックサイクルの値を記憶する。複製メモリコンテンツは、トリガーの2000クロックサイクル前の設計メモリコンテンツを記憶する。
ここで使用する「クロックサイクル」とは、必ずしも、クロックサイクルの周期に等しくない。例えば、ダブルデータレートシステムでは、クロック周期当たり2つのクロックサイクルがあり、そしてクオドデータレートシステムでは、具現化にもよるが、クロック周期当たり4つのクロックサイクルがある。しかしながら、これは、具現化特有のものである。幾つかの実施形態では、ダブルデータレート又はクオドデータレートのクロックでも、クロックサイクルがクロック信号の周期に等しくてもよい。
同様に、設計メモリB1及びFIFO460は、図21のロジック422−1・・・422−Nのうちの1つ以上であるロジックBからメモリ入力信号を受け取る。設計メモリB1及びFIFO460は、この例ではクロックAより低周波数であるクロックBによりクロックされる。トリガー条件の前に、複製メモリB1も、クロックAによりクロックされる。FIFO460の深さは、クロックB及びクロックAの周波数に比例するように選択され、信号がFIFO450を通過するのと同じ長さの時間中、信号がFIFO460を通過するようにする(が、FIFO450の周波数及び深さに基づき、厳密に同じ長さの時間中それらを通過させられないこともある)。リコール制御回路464は、FIFO460から信号を受け取り、それを複製メモリB1へ通す。FIFO450及び460は、その巾が、各々、入力A1及びB1の巾に等しい。
設計メモリA1及びB1と、複製メモリA1及びB1は、必ずしも、クロックA及びBのサイクルごとに信号を書き込むものではなく、他の条件が満足されるとき、例えば、メモリへ書き込むコマンドがあるときのサイクルだけ、そのようになされることに注意されたい。メモリは、イネーブル入力(図示せず)を有してもよい。従って、メモリ入力信号A1及びB2は、必ずしも、クロックサイクルごとにメモリへ信号を書き込まない。
トリガー条件が生じると、トリガーロジック418(図21)がトリガー信号を与え、FIFO450及び460、リコール制御回路454及び464、並びに複製メモリA1及びB1を凍結させる(もはやクロックに応答しない)。この実施例では、コンポーネントが凍結されるときに、複製メモリA1は、設計メモリA1の2000クロック後方にあり、そして複製メモリB1は、上述したように、ある数のクロック、設計メモリB1の後方にある。以下に述べるように、JTAG信号は、複製メモリA1及びB1のコンテンツの幾つか又は全部を、図22の信号TdoM1・・・TdoMNの例であるTdoMemA1及びTdoMemB1信号として、直列出力制御回路456及び466を通して書き込ませる。
図25は、図23における設計及びスナップショットレジスタユニット436−1・・・436−Nの実施例である2つの設計及びスナップショットレジスタユニット476及び478を例示する。レジスタユニット476は、設計レジスタA1、段1レジスタ488、段2レジスタ492、及び直列出力回路496を備えている。レジスタユニット478は、設計レジスタB1、段1レジスタ508、段2レジスタ512、及び直列出力回路516を備えている。カウンタ482、ゼロ検出回路484、及びカウンタリーダー&直列出力回路490は、レジスタユニット376及び478の両方にサービスする。単一のトリガー信号は、レジスタユニット476及び488の幾つかのコンポーネントを凍結するように働くことに注意されたい。図23において、1つのトリガー信号があってもよいし又は2つ以上のトリガー信号があってもよい。段1及び段2のレジスタは、スナップショットレジスタとも称される。レジスタユニット476は、クロックAを受け取り、設計レジスタB1は、クロックBを受け取り、更に、初期条件出力TdoRegA1及びTdoRegB1の同期をとることができる。設計レジスタA1及びB1は、それらのレジスタ値を、他の図示されたロジックと同じでも異なってもよいロジックに与える。幾つかの実施形態では、信号は、クロックA及びBの各サイクルで設計レジスタA1及びB1へ書き込まれ(同じ値が繰り返されてもよいが)、そして他の実施形態では、条件が満足されたときだけ、イネーブル信号のような信号が設計レジスタA1及びB1に書き込まれる。
クロックAのクロックサイクルに応答して、設計レジスタA1は、図21におけるロジック422−1・・・422−Nのうちの1つのようなロジックにより与えられる信号A1からビットをラッチする。クロックBのクロックサイクルに応答して、設計レジスタB1は、図21におけるロジック422−1・・・422−Nのうちの1つのようなロジックにより与えられる信号B1からビットをラッチする。設計レジスタA1のビットは、ロジック及び段1レジスタ488に得られる。段1レジスタ488のビットは、段2レジスタ492に得られる。段2レジスタ492のビットは、JTAG信号に応答して動作する直列出力回路496に得られる。設計レジスタB1のビットは、ロジック(設計レジスタA1のビットを受け取るロジックとは異なる)及び段1レジスタ508に得られる。段1レジスタ508のビットは、段2レジスタ512に得られる。段2レジスタ512のビットは、JTAG信号に応答して動作する直接出力回路516に得られる。
設計レジスタA1及びB1は、各々、クロックA及びクロックBのサイクルごとにレジスタ入力信号A1及びB1からビットを受け取るが、段1及び2のレジスタ488、492、508及び512は、ゼロ検出回路484からのレジスタイネーブル信号を通してそれらがイネーブルされたときしか新たな信号をラッチしない。このイネーブル動作は、次のように生じる。カウンタ482は、クロックAの各サイクルでカウントを行い、カウントの長さは、リコールの長さに等しい。この実施例では、リコールの長さは、1000のカウント長さ(この実施例では、クロックAの1000クロックサイクル)である。カウンタ482がこのカウント長さからゼロまでカウントダウンすると、ゼロ検出回路484がリコールレジスタイネーブル信号をアサートし、これは、段1レジスタ488及び508と、段2レジスタ492及び512とをイネーブルする。カウンタ482は、ゼロに到達した後、全深さカウントから1を引いた値に戻る。従って、クロックAの1000クロックサイクルごとに、段1及び2のレジスタ488及び492は、手前の段のレジスタ値を受け取る。即ち、段2レジスタ492は、段1レジスタ488のレジスタ値を受け取り、又、段1レジスタ488は、設計レジスタA1のレジスタ値を受け取る。従って、ゼロ検出回路484がイネーブル信号を発生するときには、段1レジスタ488が設計レジスタA1の現在値を保持し、そして段2レジスタ492が1000クロックサイクル手前からの設計レジスタA1のレジスタ値を保持する。同様に、イネーブル信号がアサートされたときには、段1レジスタ508が設計レジスタB1の現在レジスタ値をラッチし、又、段2レジスタ512が、1000クロックAサイクル手前の設計レジスタB1のレジスタ値である段1レジスタ508のレジスタ値を受け取る。
トリガー条件が生じると、トリガー信号がカウンタ482を凍結し、段1及び2のレジスタ488、492、508及び512のレジスタ値が変化しないようにする。例えば、ゼロ検出回路482がレジスタイネーブル信号をイネーブルし、段1及び2のレジスタ488、492、508及び512が更新されるようにすると仮定する。次いで、55個のクロックの後に、トリガー信号がカウンタ482を凍結し、カウンタのカウントは、1000−1−55=944となる。55のカウントから、システムは、段1レジスタ488及び508の値が55クロックサイクル手前からのものであり、且つ段2レジスタ492及び512の値が1055クロックサイクル手前からのものであると知ることができる。カウンタリーダー&直列出力回路490は、制御回路により使用するためのカウント値を与える(図25)。
図25のトリガー信号(1つ又は複数)は、図24と同じであり、従って、メモリA1及びB1は、段1及び2のレジスタ488、492、508及び512と同時に凍結される。メモリ入力FIFOは、指定のクロックサイクル数の深さの2倍であるから、複製メモリのコンテンツは、トリガー時の2000サイクル前から設計メモリと同じである。幾つかの実施形態では、クロックサイクルの数は、設計者により指定することができる。段2レジスタ492は、1055サイクル前から設計レジスタA1のレジスタ値を有するので、JTAG制御信号は、FIFO450を945クロックサイクル(2000−1055=945)進めることにより複製メモリA1のコンテンツを同じクロックサイクルまで進ませ、これら945クロックサイクルに対するFIFO450のコンテンツを、リコール制御回路454を通して複製メモリA1に与える。メモリ書き込みサイクルを実際に遂行するのは(もしあっても)これらメモリクロックサイクル全部ではなく、これは、メモリが必ずしもクロックサイクルごとに変化しないことを意味する点に注意されたい。945サイクルの終わりに、複製メモリA1は、1055サイクル手前からの設計メモリA1のスナップショットとなる。これは、段2レジスタ492及び512のクロックサイクルタイムに一致する。
図25に示す回路は、ある実施形態を示すもので、本発明の範囲内で他の変更も考えられる。例えば、スナップショットレジスタは、クロックBによりクロックすることができ、又はスナップショットレジスタは、イネーブルポートをもたないスナップショットパルスジェネレータによりクロックすることもできる。
図26は、クロックAによりクロックされるクロックAドメイン入力FIFO520、及びクロックBによりクロックされるクロックBドメイン入力FIFO522を示す。FIFO520は、図24の設計メモリA1及びFIFO450と、図26の設計レジスタA1とによって受け取られるメモリデータを受け取る。FIFO522は、図24の設計メモリB1及びFIFO460と、図26の設計レジスタB1とによって受け取られるメモリデータを受け取る。FIFO520の深さは、図24のFIFO450の深さに一致し、そしてFIFO522の深さは、図26のFIFO460の深さに一致する。この実施例では、FIFO520及び522の出力は、設計ロジックに供給されず、他の実施形態では、供給することができる。
FIFO520及び522は、トリガー信号に応答して入力信号の受信を停止する。JTAG制御ロジック420(図21)からのJTAG制御信号は、ある入力データを、直列出力コントローラ524を通してTdoA入力及びTdoB入力として書き出させる。トリガー条件の後の時間に対するFIFO520及び522のコンテンツが入力信号として与えられる。この実施例では、これは、FIFO520に対する入力信号の最新の1055サイクルと、FIFO522に対する関連数についてのものである。幾つかの実施形態では、これは、FIFO520のポインタ又は他のメカニズムが945サイクルだけ進まされ、そしてFIFO522が、同じ位置に到達する量だけ進まされることを含む。
この点において、複製メモリA1及びB1並びに段2レジスタ492及び512のコンテンツは、JTAG制御のもとで初期条件信号として与えることができ、そして入力FIFO520及び522のコンテンツは、JTAG制御のもとで入力信号として与えることができる。初期条件信号の付加的な部分を与える付加的な複製メモリ(又はメモリの他の形態)及び段2レジスタがあってもよく、又、特定のシミュレーションに対する付加的な入力信号を与えるための付加的なFIFOがあってもよい。又、ユーザ設計におけるXilinx SRL(シフトレジスタ)のような他のメモリが、上述したメモリについて行われたのと同様に複製されてもよいことに注意されたい。幾つかの実施形態では、SRLのコンテンツを、JTAG制御入力により操作されるその入力を制御することで検索することができる。例えば、SRLのコンテンツは、設計SRLの2000サイクル後方にあってもよい。
図24−26に示されたメモリ及びレジスタユニット並びにFIFOの幾つかがクロックAによりクロックされ、そして他のものがクロックBによりクロックされても、異なるコンポーネントを同期することについて問題は生じない。むしろ、初期条件及び入力信号は、単に使用のために出力される。
スナップショット解決策を具現化する種々の仕方が存在する。例えば、図26のような回路を含むシステムは、1段のスナップショットレジスタしか含まない(即ち、段1レジスタ488のみを含み、段2レジスタ492は含まない)。図26のような回路を含むシステムは、3段以上のスナップショットレジスタを含んでもよい(例えば、段1レジスタ488、段2レジスタ492、及び段3レジスタ(図示せず))。上述した実施例では、FIFO450は、最大リコールルックバック長さを2倍にするが、他の実施形態では、他の長さ、例えば、最大リコールルックバック長さの2倍以上でもよい。
スナップショット解決策の一実施形態は、設計モジュールの選択されたレジスタ(又はメモリ又は記憶エレメント)としてスナップショットレジスタを含むことができる。1つの観点では、全てのレジスタが複製される。別の観点では、選択されたレジスタだけが複製される。又、複製モジュールは、設計モジュールの入力データを記憶するために遅延回路、例えば、FIFOも含む。遅延回路の深さは、スナップショットパルスの周期に対して充分でなければならない。設計レジスタごとに複数のスナップショットレジスタがある場合には、遅延回路の深さは、スナップショット周期の倍数である。又、設計モジュールの選択されたメモリ部分に対する複製回路を、メモリコンテンツにアクセスするための制御回路と共に、又、複製メモリの入力に対する任意の遅延回路と共に、設けることができる。トリガー条件が生じたときに、メモリ及びスナップショットレジスタは、互いに相関されない。この場合に、メモリコンテンツは、スナップショットレジスタのタイミングに一致するように、ある数のクロックサイクルでクロックされる。
図27は、幾つかのスナップショット解決策に使用できる別の回路を示す。図27を参照し、フリップ・フロップのようなレジスタ又はメモリエレメントと、それに続く、フリップ・フロップ544、ロジック548及びフリップ・フロップ552と同様のロジック及び別のフリップ・フロップとを含むオリジナル設計について考える。図27の付加的なコンポーネントは、スナップショット解決策を具現化するために設けられている。
入力信号がフリップ・フロップ544及びFIFO542に与えられ、これらは、両方とも、クロック信号によりクロックされる。もちろん、多数の信号経路があり、フリップ・フロップ544は、それらの1つしか取り扱わない。フリップ・フロップ544の出力は、ロジック548に与えられ、その出力は、フリップ・フロップ552に与えられ、これは、データ出力信号を発生する。フリップ・フロップ552及び544の出力は、フリップ・フロップ554及び556に与えられ、これらは、次いで、その出力をフリップ・フロップ558及び560に与える。スナップショットパルスがフリップ・フロップ554、558、556及び560をクロックする。幾つかの実施形態では、設計者は、スナップショットパルスの周波数を選択することができる。トリガー条件が検出されると、スナップショットパルスが停止される。フリップ・フロップ558及び560の出力は、初期条件信号を与え、そしてFIFO542は、トリガー信号に応答してシミュレータのための入力信号を保持する。初期条件信号及び入力信号は、コンピュータ又は他の外部テスター装置へスキャン出力され、そして回路シミュレーションのために再フォーマットされてシミュレータへ提示される。
スナップショット解決策に伴う1つの問題は、トリガー条件がいつでも生じることである。その間に、スナップショットパルスが規則的な間隔で発生するが、そのようにしなくてもよい。バッファの深さが256である場合には、スナップショットパルスは、256クロックサイクルごとに生じる。トリガーは、スナップショットパルス後の第1クロックサイクルと第255クロックサイクルとの間にいつでも生じ得る。単一のフリップ・フロップバッファしかない場合には、255までのクロックサイクルが生じ得るが、典型的に、トリガー条件まではそれより少ない。フリップ・フロップ558及び560を追加することにより、スナップショットの結果が別のスナップショット周期(この場合は、256個のサイクル)にパイプライン処理され、256ないし512サイクルサンプルが収集される。FIFO542の深さも、同様に、2倍にすることができる。更に、スナップショットレジスタのタイミングに一致するようにメモリコンテンツを早送りするために、付加的な回路を設けることができる。
スナップショット解決策は、図示して上述したものとは異なる幾つかの細部を有する種々の他の実施形態において具現化することができる。
スナップショット解決策は、セクションIIIで述べる特徴に関連して使用することができる。又、幾つかのセクションの特徴を同じチップに使用することもできるが、それらは、直接的にスナップショット解決策の一部分でないこともある。しかしながら、スナップショット解決策の幾つかの実施形態に対する付加的な特徴は、RAMの出力をFIFOへルーティングすることにより設計(オリジナル)ロジックにおいて種々の形態のRAMを取り扱うための方法を含むことができる。幾つかの実施形態では、FIFOをシステムコンピュータにより読み取って、ソフトウェアシミュレーションにおいてRAMからの出力として使用することができる。
V.時分割マルチプレクサ解決策
時分割マルチプレクサ(TDM)解決策を具現化する種々の仕方がある。この解決策は、時間マルチプレクス型チャンネルシステムを生成し、そして第2のチャンネルを使用して、遅延複製ロジックの全てのレジスタ及びメモリエレメントに対する状態を維持する。TDM解決策に対する付加的なロジックは、マルチプレクサ/デマルチプレクサ対により取り巻かれた回路と共に、オリジナル設計モジュールに含ませることができる。オリジナル経路からのデータは、マルチプレクサの1つの入力に接続され、一方、遅延FIFOを通して遅延された同じデータ経路は、他の入力に接続される。マルチプレクサは、オリジナルデータ及び遅延データの両方を、時間マルチプレクスにより動作する設計ロジックを通して、同じデータ経路へと合成する。典型的に、2倍の速度で動作するクロックは、データ及び遅延データの両方に対して設計ロジックをクロックするのに使用される。例えば、偶数サイクルごとに、オリジナルデータが設計モジュールパイプラインへとマルチプレクスされ、一方、奇数サイクルごとに、遅延データがマルチプレクスされる。デマルチプレクサは、データをそれらの各々のデータストリームへと分離して戻す。トリガー条件が検出されると、回路が凍結され、遅延出力データストリームにおける値が捕捉されて、デバッグシミュレーションのための初期条件として働く。
時分割マルチプレクサ解決策の一実施形態では、初期条件と、トリガー条件に関連した入力信号とを、次のように与えることができる。入力信号は、例えば、FIFOを通して遅延される。入力信号と、遅延された入力信号とをマルチプレクスして、ロジックに与え、次いで、デマルチプレクスする。遅延された出力信号は、初期条件信号を含む。遅延された出力信号からの初期条件信号と、入力信号とをシミュレータにおいて検査して、例えば、トリガー条件の原因を識別する。時分割マルチプレクサ解決策は、時間のクローニング解決策と称される。ロジックを複製する必要がなく、チップスペース及び設計時間の著しい節約となる。
例えば、図28は、図1のチップ14又は図2のチップ38の一例であるチップ614を示す。図29は、図28のある実施形態における幾つかの信号のタイミング図であり、そして図30は、図28の他の実施形態における幾つかの信号のタイミング図である。
図28及び29を参照すれば、設計回路(又はオリジナル回路)は、レジスタ624、ロジック638、及びレジスタ644を備えている。初期条件及び入力信号を与えるために、FIFO628、マルチプレクサ回路634、デマルチプレクサ回路642、レジスタ648及び相互接続部は、設計回路を改訂し且つそこへの追加を行う少なくとも1つのプログラム(例えば、図3、ブロック52)によって追加される。このプログラムは、例えば、JTAGを通してシミュレータプログラムにより使用するためにFIFO628及びレジスタ648のコンテンツへの外部アクセスを与える。
レジスタ624及びFIFO628は、データ入力信号(データ入力)を受け取る。FIFO628は、入力信号の巾に等しい巾と、入力信号に希望の遅延を与えるための深さとを有する。レジスタはフリップ・フロップでよい。レジスタ624は、セル(又は考えられる遷移間の時間)T1i、T2i、T3i、等での信号を与え、ここで、T1iは、ロジック638へ入力されるべきデータの第1セルを意味する。FIFO628は、セルセルDT1i、DT2i、DT3i、等での信号を与え、ここで、DT1iは、ロジック638へ入力されるべきデータの第1遅延セルを意味する。明らかなように、セルT1i、T2i、T3i、等、及びDT1i、DT2i、DT3i、等の長さは、2つ分のクロック周期である。これは、レジスタ624及びFIFO624がクロック1の1つおきのクロックサイクルに応答する場合に生じる。これを生じさせるように回路を追加することができる。
FIFO628は、信号を遅延させるので、初期遅延長さに対するFIFO628からの信号は、無効データである。しかしながら、これは、初期遅延が完了した後までトリガー条件が生じない場合には問題とならない。図示を容易にするため、図20では、FIFO628を通る遅延は、クロック1の2つ分のクロック周期に過ぎない。しかしながら、実際には、遅延は、2つのクロック周期より相当に大きくなりがちである。例えば、1000個のクロック周期、或いはそれより大きな又は小さな数のクロック周期になり得る。
マルチプレクサ634は、例えば、奇数番号のクロックサイクル中にはレジスタ624からロジック638へ信号を通過させ、そして偶数番号のクロックサイクル中にはFIFO628からロジック638へ信号を通過させる。明らかなように、マルチプレクサ634から出てくる信号は、データセル間の遷移の周波数が、レジスタ624及びFIFO628からの信号の2倍である。デマルチプレクサ642は、例えば、奇数クロックサイクル中には信号(T1out、T2out、等)をロジック638からレジスタ644へ通過させ、そして偶数クロックサイクル中には信号(無効、DT1out、DT2out、等)をロジック638からレジスタ648へ通過させる。一般的に、レジスタ644及び648は、同時にクロックされることはなく、従って、クロックの負の縁から外れてクロックされる必要がある。図29から明らかなように、デマルチプレクサ642から出てくる信号は、セル長さが、デマルチプレクサ642へ入る信号の2倍である。レジスタ644の出力は、具現化に基づく種々の目的に対して与えることができる。トリガー信号に応答して、FIFO628及びレジスタ648が凍結する。レジスタ648のコンテンツは、初期条件信号Tdos1として使用することができ、そしてFIFO628のコンテンツは、例えば、JTAGインターフェイスを経てシミュレータのための入力信号Tdos2として使用することができる。具現化にもよるが、マルチプレクサ634からロジック638を経てデマルチプレクサ642へデータを通過させるのに1クロック周期しか必要としない。他の実施形態では、2つ以上のクロック周期を必要とすることがある。幾つかの実施形態では、トリガー信号がレジスタ648に印加されるまでに1サイクル又は2サイクルの遅延が生じ得る。この遅延は、どの信号が初期条件信号であるかを判断する上で考えることができる。
図28及び29の細部は、全ての実施形態に必要とされるものではない。例えば、幾つかの実施形態では、典型的にレジスタ又は状態情報を含むロジック638は、2Xクロックに等しいデータレートを取り扱うことができる。幾つかの実施形態では、マルチプレクサ634及び/又はデマルチプレクサ642も、2Xクロックによりクロックされる。具現化にもよるが、他のコンポーネントは、より高い周波数クロックを受け取ることもできる。2倍又は4倍データレートのシグナリングを使用することもできる。
図30は、クロック動作に2Xクロック1信号を使用する図28の種々の具現化の1つに対するタイミング図である。図30において、T1i、T2i、等、及び無効、DT1i、DT2i、等の信号セルは、その長さがクロック1周期に等しい。マルチプレクサ634は、信号T1i、無効、T2i、無効、T3i、DT1i、T4i、DT2i、等を与え、セルは、その長さが2Xクロック1の1つの周期に等しい。T1out、T2out、等、及び無効、無効、DT1out、DT2out信号は、長さがクロック1の周期に等しいセルを有する。幾つかの実施形態では、図29及び30の信号は、セルを技術的に含まず、図面は、考えられる遷移の間の時間を依然概略的に示している。
図31は、クロック1によりクロックされる時分割マルチプレクサ回路650及びクロック2によりクロックされる第2の時分割マルチプレクサ回路652の両方を示す。クロック1及び2は、非同期で、異なる周波数を有することができる。或いは又、クロック1及び2は、同じものでもよいし、又は一方が他方の整数倍のような異なる周波数を有してもよい。回路650は、図28の回路620と同じであるが、立ち下り縁に応答するレジスタ630が追加される。レジスタ630は、任意であり、更に別の形態を示すに過ぎない。回路652は、レジスタ654、入力信号2(データ入力)を受け取るFIFO658、及び(幾つかの実施形態において)レジスタ660を含む。マルチプレクサ664は、レジスタ654及びレジスタ660からの信号をマルチプレクスして、ロジック668に与える。デマルチプレクサ672は、ロジック668からの出力信号を受け取り、それらをデマルチプレクスして、レジスタ674及び678へ信号を与える。トリガー条件に応答してトリガー信号がアサートされると、FIFO658及びレジスタ678が凍結され、シミュレータプログラムのための入力データ及び初期条件を与える。図28を参照して述べたように、時分割マルチプレクサ回路620の異なるコンポーネントが、周波数の異なるクロックによりクロックされる。同様に、時分割マルチプレクサ回路650及び652も、周波数の異なるクロックによりクロックされる。
図32は、時分割マルチプレクサ回路の別の実施形態を示す。フリップ・フロップレジスタ714、ロジック720、及びレジスタ730は、設計回路の一部分である。図32の付加的な回路は、トリガー条件に関連した初期条件及び入力信号を収集するために設けられる。幾つかの実施形態では、図32(及び他の図面)の付加的な回路は、プログラム(1つ又は複数)により自動的に設計される。異なる具現化においては、異なる回路設計者がこのプロセスに含まれる。
図33は、図32の回路に対するタイミング図である。図32及び33を参照すれば、入力信号(データ入力)T1、T2、T3、T4、等は、マルチプレクサ710及びFIFO704により受け取られ、このFIFOは、遅延されたデータ入力信号TD1、TD2、TD3、TD4、等をマルチプレクサ710に与える。FIFO704は、複数の並列データ入力信号を受け取るための巾を有する。フリップ・フロップレジスタ712及び714は、2Xクロック信号によりクロックされる。1Xクロック信号は、2で除算する回路706により導出される。(或いは又、2Xクロックは、1Xクロックに2を乗算することにより発生することもできる。)1Xクロック信号は、FIFO704、マルチプレクサ710、及びデマルチプレクサ724をクロックする。好ましい実施形態では、ロジックLogic720は、2Xクロックでクロックされてもよいが、他の実施形態では、1Xクロックによりクロックされる。レジスタ730及び732は、1Xクロック(又は他の具現化では2Xクロック)によりクロックされる。例えば、奇数サイクルごとに、データがマルチプレクス入力される一方、偶数サイクルごとに、遅延データがマルチプレクス入力される。マルチプレクサ710の出力(T1、TD1、T2、TD2、T3、TD3)は、レジスタ712(Q1)へ送られて、出力を2Xクロックの1つの周期だけ遅延すると共に、それをレジスタ714に与え、これも、同様に、2Xクロックの別の周期だけそれを遅延する。パイプラインレジスタ712及び714は、一度に、マルチプレクサ710へのデータ入力及び遅延データ入力の両方からのデータを含む。
ロジック720は、同じ周波数であるが更に遅延された出力(T1d、TD1d、T2d、TD2d、等)を与えることができる。デマルチプレクサ724は、データ出力信号(T1d、T2d、T3d、等)及び遅延データ出力信号(TD1d、TD2d、TD3d、等)を半分の周波数で与え、これらは、各々、レジスタ730及びレジスタ732へ送られる。図32の回路は、トリガー条件が検出されるまで動作することが許される。そのときに、FIFO704及びレジスタ732は、凍結されて、シミュレーション及びデバッグのための入力信号及び初期条件を与える。図32の時分割マルチプレクサ回路は、種々の仕方で変更することができる。
時分割マルチプレクシングでは、リアルタイムレジスタ及び遅延レジスタの両方に対する次の状態を決定するために、同じ設計ロジック(例えば、ロジック638又はロジック720)を使用することができる。TDM解決策・対・オリジナル設計を使用して、設計内の共通エレメントを通して2倍程度のデータが処理される。共通エレメントを通る伝播遅延が著しい場合には、回路が適切に機能するよう確保するためにクロック速度を下げることができる。TDM解決策は、セクションIIIで述べた特徴に関連して使用することができる。
VI.付加的な情報及び実施形態
本発明は、特定の形式のシグナリングに制限されない。入力及びクロック信号は、シングルエンド又は差動でよい。クロックは、「アイ(eyes)」を含んでもよい。クロックは、シングルデータレート、ダブルデータレート、クオドデータレート、等でよい。ダブルデータレートでは、単一のクロック信号の立ち上り縁又は立ち下り縁が使用されてもよく、又は2つの位相ずれしたクロックが使用されてもよい。信号は、パケット化されてもよいし、そうでなくてもよい。クロック信号(1つ又は複数)は、チップ内で発生されても、チップの外部で発生されてもよい。これは、常に、データ信号とは個別でもよいし、又はデータ信号に埋め込まれてそこから回復されてもよい。
シミュレーションのための初期条件信号及び入力信号を設計し、構成し、形成し、動作し、デバッグし、収集するためにここに述べたプログラム(図3のような及び図4及び5に関連して使用されるような)は、インターネットを経て(例えば、ダウンロードされた信号を通して)、或いはCD、ROM、DVD、フラッシュメモリ、又は他のメモリのような記憶媒体を通して提供することができる。このプログラムは、受け取られると、コンピュータメモリ又は他のメモリに記憶することができる。幾つかの実施形態では、チップの機能を遂行するためのインストラクションは、回路へ固定配線される。他の実施形態では、少なくとも幾つかの機能を、ファームウェア及び/又はソフトウェアを通して開始することができる。このようなファームウェア又はソフトウェアは、インターネットを経て提供することもできるし、或いはCD、ROM、DVD、フラッシュメモリ又は他のメモリのような記憶媒体を通して提供することもできる。あるケースでは、ロジックは、回路しか含まず、又、他のケースでは、ロジックは、ソフトウェア又はファームウェアに応答して動作する回路を含む。
図面は、概略的な性質のもので、必ずしも実際の回路レイアウトを意図していない。更に、実際の具現化では、種々の付加的な回路がチップにあり、又、図示された回路と回路との間にも回路がある。図示されたコンポーネントは、種々の付加的な入力及び出力を有する。本発明の種々の実施形態は、図示してここに説明したものとは異なる細部を含むことがある。
レジスタは、メモリの形式であるが、一度に1ビットを保持し、又、この開示で言及されるメモリは、一度に2ビット以上を保持する。幾つかの図面において、単一のレジスタ(又はフリップ・フロップ)が入力信号を受け取るように示されている。しかしながら、これらのレジスタは、並列データビットを受け取る複数の並列レジスタを表すことができる。例えば、図25において、設計レジスタA1、段1レジスタ488、及び段2レジスタ492は、各々、並列信号を受信する複数の並列レジスタを表すことができる。
幾つかの実施形態では、レジスタのビットは、2ビット以上の価値のある情報を保持するマルチレベルビットである。即ち、あるケースでは、信号は、単に、高電圧又は低電圧しかもたず、又、他のケースでは、信号は、ビット当たり3つ以上の値を表すように複数のレベルを有する。上述した解決策は、マルチレベルシグナリングを組み込むように変更することができる。
ある具現化では、FIFOは、固定の深さを有し、又、他の具現化では、FIFOは、製造又は構成の後に変更できる深さを有する。カウンタは、ゼロ又は別の値にカウントダウンするか、或いはゼロ又は別の値からカウントアップする。本発明の多数の方法を、従来の汎用コンピュータシステムのようなデジタル処理システムで遂行することができる。限定された機能しか遂行しないように設計又はプログラムされた特殊目的コンピュータを使用することもできる。
コンポーネント、特徴、構造又は特性を「含んでもよい」、「含むかもしれない」又は「含むことができる」と明細書で記載する場合には、その特定のコンポーネント、特徴、構造又は特性を含むことが要求されるのではない。明細書又は特許請求の範囲で「ある」構造と称される場合には、1つの構造しかないことを意味するのではない。
本発明の1つの実施形態は、CD ROM又は磁気ハードディスク又は光学ディスク或いは種々の他の別の記憶装置のようなマシン読み取り可能な媒体に記憶されるコンピュータプログラムとして具現化される回路設計及び合成コンピュータ支援設計ソフトウェアである。更に、本発明の多くの方法は、従来の汎用コンピュータシステムのようなデジタル処理システムで遂行することができる。1つの機能しか遂行しないように設計又はプログラムされた特殊目的コンピュータを使用することもできる。
図34は、本発明により使用できる典型的なコンピュータシステムの一例を示す。このコンピュータシステムは、HDLコードで記述された設計のロジック合成を遂行するのに使用できる。図34は、コンピュータシステムの種々のコンポーネントを示すが、そのような細部は本発明に密接に関連していないので、コンポーネントを相互接続する特定のアーキテクチャー又は仕方を表すように意図されていない点に注意されたい。図34のアーキテクチャーは、例示のために設けられたに過ぎず、本発明に関連して使用されるコンピュータシステム又は他のデジタル処理システムは、この特定のアーキテクチャーに限定されないことに注意されたい。又、より少数のコンポーネント又はおそらくより多くのコンポーネントを有するネットワークコンピュータ及び他のデータ処理システムも、本発明に使用できることが明らかであろう。図34のコンピュータシステムは、例えば、IBM又はアップルマッキントッシュコンピュータでよい。
図34に示すように、データ処理システムの形態のコンピュータシステム1101は、マイクロプロセッサ1103、ROM1107、揮発性RAM1105、及び不揮発性メモリ1106に接続されたバス1102を備えている。インテル、モトローラ又はIBMからのマイクロプロセッサでよいマイクロプロセッサ1103は、キャッシュメモリ1104に結合される。バス1102は、これらの種々のコンポーネントを一緒に相互接続すると共に、これらコンポーネント1103、1107、1105及び1106を、ディスプレイコントローラ及びディスプレイ装置1108に相互接続し、且つマウス、キーボード、モデム、ネットワークインターフェイス、プリンタ、スキャナ、ビデオカメラ、及びこの技術で良く知られた他の装置である入力/出力(I/O)装置のような周辺装置にも相互接続する。典型的に、入力/出力装置1110は、入力/出力コントローラ1109を通してシステムに結合される。揮発性RAM1105は、典型的に、メモリのデータをリフレッシュし又は維持するために常時電力を必要とするダイナミックRAM(DRAM)として具現化される。不揮発性メモリ1106は、典型的に、システムから電力が除去された後もデータを維持する磁気ハードドライブ、磁気光学ドライブ、光学的ドライブ、DVD RAM、又は他の形式のメモリシステムである。典型的に、不揮発性メモリは、ランダムアクセスメモリでもあるが、これは、必要でない。図34は、不揮発性メモリがデータ処理システムにおいて残りのコンポーネントに直結されたローカル装置であることを示すが、本発明は、システムから離れた不揮発性メモリ、例えば、モデムやイーサネットインターフェイスのようなネットワークインターフェイスを通してデータ処理システムに結合されたネットワーク記憶装置を利用できることが明らかであろう。バス1102は、この技術で良く知られた種々のブリッジ、コントローラ、及び/又はアダプタを通して互いに接続される1つ以上のバスを含むことができる。一実施形態では、I/Oコントローラ1109は、USB周辺装置を制御するためのUSB(ユニバーサルシリアルバス)アダプタ、及び/又はIEEE1394周辺装置を制御するためのIEEE1394バスアダプタを含む。
以上の説明から、本発明の観点は、少なくとも一部分はソフトウェアで実施できることが明らかであろう。即ち、この技術は、コンピュータシステム又は他のデータ処理システムにおいて、マイクロプロセッサのようなそのプロセッサに応答して、ROM1107、揮発性RAM1105、不揮発性メモリ1106、キャッシュ1104、又はリモート記憶装置のようなメモリに含まれたインストラクションのシーケンスを実行するように実施される。種々の実施形態では、固定布線回路をソフトウェアインストラクションと組み合せて使用して、本発明を具現化することができる。従って、この技術は、ハードウェア回路及びソフトウェアの特定の組み合せに限定されず、又、データ処理システムにより実行されるインストラクションに対する特定のソースにも限定されない。加えて、この説明全体にわたり、種々の機能及び動作は、説明を簡略化するためにソフトウェアコードにより遂行され又は生じるとして説明された。しかしながら、当業者であれば、このような表現は、マイクロプロセッサ1103のようなプロセッサによるコードの実行から機能が得られることを意味することが明らかであろう。
データ処理システムにより実行されたときにシステムが本発明の種々の方法を遂行するようにさせるソフトウェア及びデータを記憶するのに、マシン読み取り可能な媒体を使用することができる。この実行可能なソフトウェア及びデータは、例えば、ROM1107、不揮発性RAM1105、不揮発性メモリ1106、及び/又はキャッシュ1104を含む種々の場所に記憶されてもよい。このソフトウェア及び/又はデータの各部分は、これら記憶装置のいずれか1つに記憶されてもよい。
従って、マシン読み取り可能な媒体は、マシン(例えば、コンピュータ、ネットワーク装置、パーソナルデジタルアシスタント、製造ツール、1つ以上のプロセッサのセットをもつ装置、等)によりアクセスできる形態で情報を与える(即ち、記憶し及び/又は送信する)メカニズムを含む。例えば、マシン読み取り可能な媒体は、記録可能/記録不能な媒体(例えば、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、等)、電気的、光学的、音響的又は他の形態の伝播信号(例えば、搬送波、赤外線信号、デジタル信号、等)、等々を含む。
幾つかの実施形態に関して本発明を説明したが、本発明は、上述した実施形態のみに限定されるものではなく、本発明の精神及び特許請求の範囲内で種々の変更及び修正がなされ得る。従って、以上の説明は、例示に過ぎず、それに限定されるものではない。
14:チップ(モジュール)
16:インターフェイス
20:コンピュータ
22:プロセッサ
24:メモリ
30:コンピュータ
32:プロセッサ
34:メモリ
38:チップ
40:製造装置
42:インターフェイス
100:チップ
104:設計回路
106:複製モジュール
110:供試設計ロジック
112:付加的なロジック
116、118:レジスタ
122:トリガーロジック
124:制御ロジック
130:供試複製ロジック
134、136:遅延回路
138、140:レジスタ
144、148:マルチプレクサ
146、150:レジスタ
160:チップ
202:設計ロジックブロック
204:複製ロジックブロック
212:遅延ロジック
214:クロック制御ロジック
218:ブレークポイント
230:トリガーロジック
252:制御回路
254:複製RAM
256:スキャンチェーン

Claims (19)

  1. レジスタ入力信号を受信するための設計レジスタとメモリ入力信号を受信するための設計メモリとを含む設計回路の記述を受け取るステップと、
    コンピュータ内で実行される、少なくとも1つのコンピュータプログラムを通して付加的な記述を発生するステップであって、前記付加的な記述は、設計レジスタからのコンテンツのスナップショットを受け取るために付加的なレジスタの記述と、前記付加的なレジスタのすくなくとも1つをクロックするクロック信号のクロックサイクルをカウントするためのカウンタの記述と、特定の数のクロックサイクルの後に少なくとも幾つかの前記付加的なレジスタへの書き込みをイネーブルするためのイネーブル回路とを含んでおり、前記付加的なレジスタは、前記設計回路の少なくとも一部分のシミュレーションに使用するためのレジスタ初期条件信号と、前記メモリ入力信号の少なくとも幾つかをそれらが遅延された後に、受信するために複製メモリの記述をと含み、そしてその複製メモリは、シミュレーションに使用するためのメモリ初期条件信号を与えるものであるステップと、
    を備えた、コンピュータにより実行される方法。
  2. 前記付加的な記述は、前記設計メモリと前記複製メモリのコンテンツにアクセスするためのアクセス回路の記述を含む、請求項1に記載の方法。
  3. 前記付加的な記述は、前記設計メモリ及び前記設計及び付加的なレジスタ入力信号を記憶すると共に、その記憶された信号の少なくとも幾つかを、シミュレーションのための入力信号として与えるために入力信号記憶回路の記述を含む、請求項2に記載の方法。
  4. 前記入力信号記憶回路は、先入れ先出し回路を含む、請求項3に記載の方法。
  5. 前記付加的な記述は、トリガー信号の受信時に前記カウンタのカウントを読み取るカウンタ読み取り回路、及び前記トリガー信号及びカウント値の受信に応答して前記複製メモリのコンテンツを変化させる制御回路(252)の記述を含む、請求項1に記載の方法。
  6. 前記付加的な記述は、前記メモリ入力信号を受信して遅延し且つ複製メモリに対してそれらを与えるための遅延回路の記述を含む、請求項1に記載の方法。
  7. 前記付加的な記述は、トリガー条件を感知し、それに応答してトリガー信号を発生し、前記遅延回路の動作と、前記複製メモリ及び付加的なレジスタへの入力信号の付与とを凍結するためにトリガーロジックの記述を含む、請求項6に記載の方法。
  8. 前記設計回路は、付加的なメモリ入力信号を受信するための付加的な設計メモリ、及び付加的なレジスタ入力信号を受信するための付加的な設計レジスタを備え、前記付加的な記述は、前記付加的なメモリ入力信号の少なくとも幾つかを受信するための付加的な複製メモリ、及び前記付加的なレジスタ入力信号のスナップショットを受け取るための付加的な追加レジスタの記述を含み、そして前記付加的な複製メモリ及び付加的な追加レジスタは、シミュレーションに使用するための付加的な初期条件信号を与える、請求項2に記載の方法。
  9. 設計レジスタコンテンツのスナップショットを受け取るための前記付加的なレジスタは、1つ以上のレベル深さを形成するレジスタを含む、請求項1に記載の方法。
  10. 1レベル深さを形成するスナップショットレジスタは、前記設計レジスタからスナップショットを受け取るための付加的なレジスタのグループを含む、請求項1に記載の方法。
  11. 2つ以上のレベル深さを形成するスナップショットレジスタは、前記設計レジスタからスナップショットを受け取る付加的なレジスタの第1レベルグループと、付加的なレジスタの手前のレベルグループからスナップショットを受け取る付加的なレジスタの1つ以上のレベルグループとを含む、請求項1に記載の方法。
  12. 前記設計回路は、更に、メモリ入力信号を受信するための設計メモリを備え、前記付加的な記述は、前記メモリ入力信号の少なくとも幾つかを、それらが遅延された後に、受信するために複製メモリの記述を含み、更に、前記付加的な記述は、前記付加的なレジスタの第1レベルグループのスナップショットタイミングに一致するように前記複製メモリのコンテンツを前方にクロックさせるために制御回路の記述を含む、請求項11に記載の方法。
  13. 前記付加的な記述の発生は、少なくとも1つのプログラムを実行するコンピュータのユーザにより与えられるコマンドに応答して行われる、請求項1に記載の方法。
  14. レジスタ入力信号を受信するために設計レジスタ及びメモリ入力信号を受信するための設計メモリと、を含む設計回路の記述を受け取ること、
    設計レジスタからのコンテンツのスナップショットを受け取るために付加的なレジスタの記述及び前記付加的なレジスタの少なくとも1つをクロックするクロック信号のクロックサイクルをカウントするカウンタ、及び特定数のクロックサイクルの後に前記付加的なレジスタの少なくとも幾つかへの書き込みをイネーブルするイネーブル回路の記述を含む付加的な記述であって 前記付加的なレジスタは、前記設計回路の少なくとも一部分のシミュレーションに使用するためのレジスタ初期条件信号と、前記メモリ入力信号の少なくとも幾つかを、それらが遅延された後に、受信するために複製メモリの記述とを与え、そして、その複製メモリは、シミュレーションに使用するためのメモリ初期条件信号を与えるものである前記付加的な記述を発生すること、
    を含む動作を、コンピュータに実行させるためのプログラムを記憶したコンピュータ読み取り可能記録媒体。
  15. レジスタ入力信号を受信するための設計レジスタと、メモリ入力信号を受信するための設計メモリと、遅延された前記メモリ入力信号を受信する複製メモリと、回路の動作のシミュレーションに使用する初期条件信号を与えるために設計レジスタのコンテンツのスナップショットを受け取る付加的なレジスタと、メモリ入力信号及び設計レジスタ入力信号を記憶するための入力信号記憶回路とを含むチップを動作するステップであって、前記チップが、さらに前記付加的なレジスタの少なくとも1つをクロックするクロック信号のクロックサイクルをカウントするカウンタ、及び特定数のクロックサイクルの後に前記付加的なレジスタの少なくとも幾つかへの書き込みをイネーブルするイネーブル回路を含む、ステップと、
    前記与えられた初期条件と、前記メモリ及び設計レジスタ入力信号の少なくとも幾つかを、少なくとも1つのシミュレーションプログラムに与えるステップと、
    前記少なくとも1つのシミュレーションプログラムを通してシミュレーションを遂行するステップと、
    を備えた、コンピュータにより実行される方法。
  16. 前記与えられた初期条件と、前記メモリ及びレジスタ入力信号の少なくとも幾つかを、少なくとも1つのシミュレーションプログラムに与える前記ステップと、シミュレーションを遂行する前記ステップは、シミュレーションを遂行する少なくとも1つのプログラムを実行するコンピュータのユーザにより与えられるコマンドに応答して行われる、請求項15に記載の方法。
  17. レジスタ入力信号を受信する設計レジスタ、及びこの設計レジスタのコンテンツのスナップショットを受け取る付加的なレジスタと、
    前記付加的なレジスタの少なくとも1つをクロックするクロック信号のクロックサイクルをカウントするカウンタ、及び特定数のクロックサイクルの後に前記付加的なレジスタの少なくとも幾つかへの書き込みをイネーブルするイネーブル回路と、
    前記レジスタ入力信号を受信する入力信号記憶回路と、
    を備え、前記付加的なレジスタはトリガー条件に応答して、シミュレーションに使用するための初期条件信号を与え、そして前記入力信号記憶回路はシミュレーションに使用するためのレジスタ入力信号を与えるようになっており、
    さらに、メモリ入力信号を受信する設計メモリと、メモリ入力信号の少なくとも幾つかを、それらが遅延回路により遅延された後に、受信する複製メモリとを更に備え、前記入力信号記憶回路は、メモリ入力信号を受信するものであり、そしてトリガー条件に応答して、前記複製メモリは、シミュレーションに使用するためのメモリ初期条件信号を与えると共に、前記入力信号記憶回路が、シミュレーションに使用するためのメモリ入力信号を与える、装置。
  18. 前記設計メモリ及び複製メモリは、単一の集積回路チップの一部分である、請求項17に記載の装置。
  19. 前記複製メモリ及びレジスタは、構成されたフィールドプログラマブルロジックアレイ(FPGA)にあり、そして前記初期条件及び入力信号は、JTAGインターフェイスを通して与えられる、請求項17に記載の装置。
JP2010507480A 2007-05-09 2008-05-09 自動回路設計及びシミュレーションに使用するための技術 Active JP5405451B2 (ja)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US91702407P 2007-05-09 2007-05-09
US91701507P 2007-05-09 2007-05-09
US91702707P 2007-05-09 2007-05-09
US91703307P 2007-05-09 2007-05-09
US60/917,015 2007-05-09
US60/917,024 2007-05-09
US60/917,027 2007-05-09
US60/917,033 2007-05-09
US12/117,705 US7984400B2 (en) 2007-05-09 2008-05-08 Techniques for use with automated circuit design and simulations
US12/117,705 2008-05-08
PCT/US2008/006011 WO2008140790A2 (en) 2007-05-09 2008-05-09 Recording of emulation states using replicated memory elements

Publications (3)

Publication Number Publication Date
JP2010531001A JP2010531001A (ja) 2010-09-16
JP2010531001A5 JP2010531001A5 (ja) 2011-06-30
JP5405451B2 true JP5405451B2 (ja) 2014-02-05

Family

ID=39722659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010507480A Active JP5405451B2 (ja) 2007-05-09 2008-05-09 自動回路設計及びシミュレーションに使用するための技術

Country Status (5)

Country Link
US (1) US7984400B2 (ja)
EP (1) EP2165280B1 (ja)
JP (1) JP5405451B2 (ja)
CN (1) CN101720466B (ja)
WO (1) WO2008140790A2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7765506B2 (en) * 2003-04-04 2010-07-27 Synopsys, Inc. Method and apparatus for automated synthesis of multi-channel circuits
US7904859B2 (en) * 2007-05-09 2011-03-08 Synopsys, Inc. Method and apparatus for determining a phase relationship between asynchronous clock signals
US8756557B2 (en) * 2007-05-09 2014-06-17 Synopsys, Inc. Techniques for use with automated circuit design and simulations
US8001497B2 (en) * 2008-10-01 2011-08-16 Lsi Corporation Control signal source replication
US20130144589A1 (en) * 2010-06-08 2013-06-06 Delon Levi Systems and methods for circuit design, synthesis, simulation, and modeling
US8707229B1 (en) 2010-07-28 2014-04-22 VSYNC Circuit, Ltd. Static analysis of VLSI reliability
US8661383B1 (en) * 2010-07-28 2014-02-25 VSYNC Circuits, Ltd. VLSI black-box verification
US8631364B1 (en) * 2010-12-26 2014-01-14 VSYNC Circuits Ltd. Constraining VLSI circuits
US8886507B2 (en) * 2011-07-13 2014-11-11 General Electric Company Methods and systems for simulating circuit operation
CN102955713B (zh) * 2011-08-31 2015-11-25 北京中电华大电子设计有限责任公司 一种802.11n无线网卡芯片仿真固件优化的处理方法
US9230046B2 (en) 2012-03-30 2016-01-05 International Business Machines Corporation Generating clock signals for a cycle accurate, cycle reproducible FPGA based hardware accelerator
US9286423B2 (en) 2012-03-30 2016-03-15 International Business Machines Corporation Cycle accurate and cycle reproducible memory for an FPGA based hardware accelerator
JP5949410B2 (ja) 2012-04-23 2016-07-06 株式会社ソシオネクスト 半導体装置
US9495492B1 (en) * 2015-01-05 2016-11-15 Cadence Design Systems, Inc. Implementing synchronous triggers for waveform capture in an FPGA prototyping system
US9552456B2 (en) * 2015-05-29 2017-01-24 Altera Corporation Methods and apparatus for probing signals from a circuit after register retiming
TWI579768B (zh) * 2016-01-12 2017-04-21 英業達股份有限公司 複雜可程式邏輯裝置之韌體之更新系統及其更新方法
CN107066707B (zh) * 2017-03-27 2019-07-30 中国科学院计算技术研究所 一种使用快照的可调试性设计追踪方法及装置
CN117112452B (zh) * 2023-08-24 2024-04-02 上海合芯数字科技有限公司 寄存器模拟配置方法、装置、计算机设备和存储介质
CN117113907B (zh) * 2023-10-17 2023-12-22 北京开源芯片研究院 一种验证方法、装置、电子设备及可读存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596742A (en) 1993-04-02 1997-01-21 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5553275A (en) 1993-07-13 1996-09-03 Intel Corporation Method and apparatus for synchronously detecting phase relationships between a high-frequency clock and a low-frequency clock
US5659716A (en) 1994-11-23 1997-08-19 Virtual Machine Works, Inc. Pipe-lined static router and scheduler for configurable logic system performing simultaneous communications and computation
US5761488A (en) * 1996-06-13 1998-06-02 International Business Machines Corporation Logic translation method for increasing simulation emulation efficiency
US6694464B1 (en) 1997-05-30 2004-02-17 Quickturn Design Systems, Inc. Method and apparatus for dynamically testing electrical interconnect
EP1031093B1 (en) 1997-10-10 2003-02-05 Rambus Inc. Method and apparatus for fail-safe resynchronization with minimum latency
US6286114B1 (en) * 1997-10-27 2001-09-04 Altera Corporation Enhanced embedded logic analyzer
WO2001001245A1 (en) 1999-06-26 2001-01-04 Yang Sei Yang Input/output probing apparatus and input/output probing method using the same, and mixed emulation/simulation method based on it
KR100710972B1 (ko) 1999-06-26 2007-04-24 양세양 혼합된 에뮬레이션과 시뮬레이션이 가능한 혼합 검증 장치및 이를 이용한 혼합 검증 방법
KR20010006983A (ko) 1999-06-26 2001-01-26 양세양 신속 프로토타이핑 장치와 그것의 입출력 탐침방법 및그것을 이용한 혼합 검증 방법
US6581191B1 (en) 1999-11-30 2003-06-17 Synplicity, Inc. Hardware debugging in a hardware description language
US7072818B1 (en) 1999-11-30 2006-07-04 Synplicity, Inc. Method and system for debugging an electronic system
US7379859B2 (en) 2001-04-24 2008-05-27 Mentor Graphics Corporation Emulator with switching network connections
KR100794916B1 (ko) 2001-09-14 2008-01-14 양세양 에뮬레이션과 시뮬레이션을 혼용한 점진적 설계 검증을위한 설계검증 장치 및 이를 이용한 설계 검증 방법
US7213216B2 (en) * 2002-08-09 2007-05-01 Synplicity, Inc. Method and system for debugging using replicated logic and trigger logic
US6904576B2 (en) 2002-08-09 2005-06-07 Synplicity, Inc. Method and system for debugging using replicated logic
US7398445B2 (en) 2002-08-09 2008-07-08 Synplicity, Inc. Method and system for debug and test using replicated logic
US7440884B2 (en) 2003-01-23 2008-10-21 Quickturn Design Systems, Inc. Memory rewind and reconstruction for hardware emulator
US7239681B2 (en) 2003-05-09 2007-07-03 Hewlett-Packard Development Company, L.P. System and method for maintaining a stable synchronization state in a programmable clock synchronizer
DE10345150B3 (de) * 2003-09-29 2005-04-14 Advanced Micro Devices, Inc., Sunnyvale Verfahren, Vorrichtung und System zum Analysieren digitaler Schaltungen
CN100447796C (zh) * 2005-09-29 2008-12-31 上海奇码数字信息有限公司 电路状态扫描链、数据采集系统和仿真验证方法
US7908574B2 (en) * 2007-05-09 2011-03-15 Synopsys, Inc. Techniques for use with automated circuit design and simulations

Also Published As

Publication number Publication date
WO2008140790A3 (en) 2009-05-07
WO2008140790A2 (en) 2008-11-20
EP2165280B1 (en) 2019-06-26
US20080313578A1 (en) 2008-12-18
CN101720466A (zh) 2010-06-02
US7984400B2 (en) 2011-07-19
JP2010531001A (ja) 2010-09-16
CN101720466B (zh) 2013-02-13
EP2165280A2 (en) 2010-03-24

Similar Documents

Publication Publication Date Title
JP5432127B2 (ja) 自動回路設計及びシミュレーションに使用するための技術
JP5410414B2 (ja) 回路エミュレーションの入力及び遅延入力のマルチプレクシング
JP5405451B2 (ja) 自動回路設計及びシミュレーションに使用するための技術
JP5432126B2 (ja) 自動回路設計及びシミュレーションに使用するための技術
Keating et al. Reuse Methodology Manual for System-on-a-Chip Designs: For System-on-a-chip Designs
US8781808B2 (en) Prediction-based distributed parallel simulation method
JP4806529B2 (ja) 複製されたロジックを使用するデバッグの方法とシステム
EP1872288A2 (en) Method and system for debugging using replicated logic and trigger logic
JP5039698B2 (ja) 複製されたロジックを使用するデバッグ及びテスト方法並びにシステム
US20080016480A1 (en) System and Method for Driving Values to DC Adjusted/Untimed Nets to Identify Timing Problems
CN107784185B (zh) 一种门级网表中伪路径的提取方法、装置及终端设备
US9449127B1 (en) System for verifying timing constraints of IC design
US8943457B2 (en) Simulating scan tests with reduced resources
US7694248B2 (en) Method and apparatus for supporting verification, and computer product
Plassan et al. Improving the efficiency of formal verification: the case of clock-domain crossings
Das et al. Testing Embedded Cores-Based System-on-a-Chip (SoC)–Test Architecture and Implementation

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110509

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110509

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130311

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130419

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130930

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131030

R150 Certificate of patent or registration of utility model

Ref document number: 5405451

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250