JP2004519041A - 効率的なデータロード及びアンロードのために統合されるパケット基準のプロトコル論理を用いるハードウェア支援設計検証システム - Google Patents
効率的なデータロード及びアンロードのために統合されるパケット基準のプロトコル論理を用いるハードウェア支援設計検証システム Download PDFInfo
- Publication number
- JP2004519041A JP2004519041A JP2002563381A JP2002563381A JP2004519041A JP 2004519041 A JP2004519041 A JP 2004519041A JP 2002563381 A JP2002563381 A JP 2002563381A JP 2002563381 A JP2002563381 A JP 2002563381A JP 2004519041 A JP2004519041 A JP 2004519041A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- logic
- register
- command
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
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)
- Tests Of Electronic Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【解決手段】パケット基準のプロトコルは、論理シミュレーション中、検証下の目標設計(DUV)内のレジスタ及びメモリにデータをロードし及びデータをアンロードするためのホストワークステーションとハードウェアアクセラレータとの間でのデータ転送動作を実行するために用いられる。方法及び装置は、ハードウェアアクセラレータの支援によってシミュレートされる目標DUV内のレジスタ及びメモリへの良好なアクセスを提供するために、インターフェース論理をDUV内に統合する。
【選択図】図1
Description
【発明の属する技術分野】
本発明は、一般的には、デジタルハードウェア設計検証システムに関し、特に、論理シミュレーションのためのハードウェアアクセラレータ(hardware accelerator)を使用するハードウェア支援設計検証システム(hardware−assisted design verification system)に関する。
【0002】
【従来の技術】
近年の電子産業では、多くのデジタルハードウェア設計は、ハードウェ記述言語で記述されている。例えば、IEEEによって1996年に発行された“Verilogハードウェア記述言語に基づくIEEE標準ハードウェア記述言語”で規定されているIEEE標準1364−1995ハードウェア記述言語が、一般的なハードウェア記述言語の1つである。このようなハードウェア記述言語で書かれているデジタルハードウェア設計は、製造のための最終のネットリストを発生するためにコンパイル(compile)される前に、意図されている機能に対した検証される必要がある。この設計検証作業は、論理シミュレーションと協同する。
【0003】
ハードウェア支援設計検証システムは、ソフトウェア基準の検証システム(software−based verification system)が提供可能な性能よりも高度の性能を要求する、設計検証作業等級のための論理シミュレーションの作業を強調するハードウェアアクセラレータを使用する。ハードウェアアクセラレータは、それぞれ論理ゲートをシミュレート可能な多くの論理プロセッサを有する特別の論理シミュレーションマシン(logic simulation machine)である。例えば、1981年12月15日に特許された、Cockeらの米国特許第4306286号の“論理シミュレーションマシン”には、このような論理シミュレーションマシンが開示されている。このようなハードウェアアクセラレータを使用しないでも、検証を実行することができることに注意する。
【0004】
ハードウェアアクセラレータとして使用可能なハードウェア装置の1つは、カリフルニア州、サンホセのクイックターン・デザインシステムズ・インコーポレイテッド(本発明の譲受人)からの製品“Cobalt(登録商標)”である。典型的なハードウェア支援設計検証システムでは、ハードウェアアクセラレータは、ホストワークステーションに接続される。ホストワークステーションは、検証を受けるコンパイルされた設計(以下では、“DUV”あるいは“ユーザー設計”という)をハードウェアアクセラレータにロードし、論理シミュレーションを開始させ、論理シミュレーションを終了させ、ハードウェアアクセラレータからのシミュレーション結果をアンロードする、検証制御プログラムを実行する。ユーザーは、DUVが期待通りにシミュレートされたか否かを判別するために、シミュレーション結果を期待されている結果と比べる。設計検証の初期の段階では、シミュレーション結果が間違っていることをユーザーが発見する時に、ユーザーがDUV内の問題を発見することは、比較的容易である。しかしながら、後の設計検証段階では、DUVをデバッグするのはより困難となる。この問題のため、ユーザーは、しばしば、論理シミュレーションの間、DUV内の重要な信号の中間値を検査することを望む。ユーザーからのそのような要求を満たすために、設計検証システムは、論理シミュレーションの間、DUV内の信号をユーザーが視認可能あるいはアクセス可能とするために、信号可視動作のための支援を提供する。
【0005】
ホストワークステーションと、DUVをシミュレートするハードウェアアクセラレータとの間の特別の通信を必要とするため、信号可視動作のための支援を提供することは、ソフトウェア基準の検証システムにとっては容易であるが、ハードウェア支援検証システムにとってはそれほど容易ではない。
【0006】
ハードウェアアクセラレータへのDUVの初期ロードは、通常、SCSIインターフェースのような非常に一般的なI/Oインターフェースを介して実行される。この場合、ハードウェアアクセラレータ内のインターフェース制御プログラムは、先ず要求信号を識別し、それらを配置し、それらの値を読み取り、それらをホストワークステーションに送り返す。
【0007】
信号可視動作は、通常、特別の信号の中間の値を試験する動作だけでなく、その後のシミュレーションステップのための信号上に論理値を置く動作も含んでいる。これらの基本動作を用いることによって、ユーザーは、レジスタビットに対応する信号グループをアクセスすることによって、レジスタの値を試験し、あるいはレジスタ上に値を置くことができる。
【0008】
【発明が解決しようとする課題】
進歩した半導体チップ技術を利用するために、大容量のメモリを含むDUVの数が増加している。通常の信号可視動作では、基本の信号可視動作が、個々の信号の低レベルの試験あるいは信号を置く動作に基づいているため、DUV内の大容量メモリにデータをロードしあるいはデータをアンロードするのに長時間を要する。
【0009】
DUV内のレジスタ及びメモリのためのロード動作及びアンロード動作を加速するために、ハードウェア支援設計検証システムは、信号可視動作のために供されたホストワークステーションとハードウェアアクセラレータとの間の特別の通信チャンネルを用いることができる。ハードウェアアクセラレータ上にシミュレートされたDUV内の要求信号をアクセスする際の費用を最小化するために、特別の通信チャンネルは、インターフェース制御プログラムを必要とすることなくDUVに順に直接にインターフェースする、入力及び出力データバッファに直接に接続される。
【0010】
データバッファを有するインターフェース構成の1つは、インターフェース遅延を最小化するために、ホストコンピュータと論理シミュレーションマシンとの間に設けられるファーストイン−ファーストアウトバッファあるいはFIFOバッファとのインターフェースについて述べている、1998年2月24日に発行された、Fogg,Jr.らの米国特許第5721953号“同時転送のためのパラレルバスを使用し、準備が整った受信ユニットにデータを送信するためのFIFOバッファを有する論理シミュレーションのためのインターフェース”に開示されている。米国特許第5721953号の開示内容は、全て参照として本明細書中に組み込まれる。
【0011】
出力信号は、出力データバッファのビットに割り当てられ、一方、入力信号は、入力データバッファのビットに割り当てられる。例示の動作(すなわち、信号の値の監視あるいは読み取り)では、検証制御プログラムは、出力データバッファに蓄積されている信号の値をホストワークステーションに送信するためにデータ転送を開始し、要求された信号の値を選択する。信号を置く動作(すなわち、信号の値の書き込み)に対しては、検証制御プログアムは、置く信号を組み立て(assemble)、それらをハードウェアアクセラレータ内の入力データバッファに送信するためにデータ転送を開始する。DUVにインターフェースするために必要な、付加的な書込及び論理構成要素は、DUVが論理シミュレーションのためにコンパイルされる時に統合(synthesize)される。
【0012】
信号可視動作のために統合される書込及び論理構成要素は、DUVの部分ではなく、論理シミュレーションのためにDUVと合併された仮想の構成要素である。仮想の論理構成要素は、1998年6月のACM/IEEE設計自動化会議の会報において、Beeceらによって発行された技術論文“IBM工学検証エンジン”(p218−224)に開示されているように、DUVへの入力を発生し、シミュレーション出力を検査するテストベンチ(testbench)のためにしばしば用いられる。
【0013】
入力及び出力信号の入力及び出力データバッファへの静的な割り当ては、信号可視動作のための可視信号の数が比較的少ない場合には許容される。しかしながら、物理的に利用可能なデータバッファのビット数に制限があるため、可視信号の数が多いことは好ましくない。
【0014】
DUV内での信号に対するアクセス可能性の問題の解決手段の1つは、可視信号の数を効果的に増加させるために、データバッファ内の各ビットに対して2あるいは3以上の信号を時間多重することである。多数の信号を時間多重する方法の1つは、多数の論理ワイヤ間で各物理ワイヤを知的に多重化し、これらをパイプライン(pipeline)接続するコンパイル技術を述べている、1997年1月21日に発行された、Agarwalらの米国特許第5596742号“再構築可能な論理システムのための仮想相互接続”に開示されている。Argarwalらの開示内容と大きく異なる他の時間多重方法は、多数の設計信号を物理的な論理チップピン及び印刷回路ボード上に時間多重するハードウェアエミュレーションシステムを開示している、2000年2月1日に発行された米国特許第6020760号“ピン多重を有するI/Oバッファ回路”に開示されている。米国特許第5596742号、米国特許第5960191号及び米国特許第6020760号は、その全てが、本明細書中で参照として組み込まれている。
【0015】
これらの時間多重方法は、データバッファを介する可視信号の数を効率よく増加させることができるが、DUV内のレジスタ及びメモリをアクセスする動作結果をもたらさない。レジスタあるいはメモリをアクセスするために必要な信号のグルーピングは、グループ内の信号に対するビットの値を集めて散乱させることによって生じる費用を低減することができる。しかしながら、グループ内の全ての信号が同時に可視可能でなければならず、そのような信号グループが多く存在し、2あるいは3以上のグループによって分配される信号が存在するため、この信号グルーピング法は、複数の信号を時間多重する際に厳しい制限を課する。
【0016】
信号グルーピングを有していてもいなくても、ローレベルの試験及び信号を置く動作を用いる1つのレジスタをアクセスするために、数ステップが必要である(1つのメモリワードをアクセスするためには、より多くのステップが必要である。)。したがって、メモリに多数のデータをロードしあるいはメモリから多数のデータをアンロードする検証制御プログラムのために、非常に長い時間を要することが予想される。全体のシミュレーション動作を実質的に低下させる、このような時間を消費するロード動作及びアンロード動作は、数クロックサイクルがシミュレートされるような、実際的でないシミュレーションを与える。
【0017】
DUVが多くの大容量のメモリを有している場合には、この動作低下は非常に重大となり、ハードウェアアクセラレータを有するシミュレーション動作の価値を実質的に無効にする。データのロード及びデータのアンロードのために必要な時間を低減する方法及び装置の提供が望まれている。また、レジスタ及びメモリに容易にアクセスするための方法及び装置の提供が望まれている。
【0018】
【課題を解決するための手段】
本発明は、検証下の目標設計(目標設計あるいはユーザー設計としても知られている)内のレジスタ及びメモリにデータをロードしあるいはデータをアンロードするために、ホストワークステーションとハードウェアアクセラレータとの間のデータ転送動作を実行する新規なパケット基準のプロトコル(packet−based protocol)を用いる。プロトコルは、可変サイズの要求パケット(request packet)及び応答パケット(response packet)に基づいている。要求パケットは、ホストワークステーションからハードウェアアクセラレータへの入力パケットであり、コマンド、独立変数(argument)及び任意のデータを含んでいる。一方、応答パケットは、ハードウェアアクセラレータからホストワークステーションへの出力パケットであり、DUV内の目標レジスタあるいは目標メモリからの読出データを含んでいる。
【0019】
本発明の実施の形態の1つのアスペクトでは、ユーザー設計内の全てのメモリ及びレジスタが識別される、ユーザー設計をコンパイルするための方法が示されている。メモリ及びレジスタが識別された後、アクセス可能論理(accesibility logic)が、ユーザー設計内に統合される。アクセス可能論理は、メモリ及びレジスタへのアクセスポートを有している。本発明の他のアスペクトでは、ユニークな識別子(identifier)が、ユーザー設計内のメモリ及びレジスタのそれぞれに割り当てられる。本発明の更に他のアスペクトでは、アクセス可能な論理は、選択論理(select logic)を有している。この選択論理は、ユニークな識別子を受信し、ユーザー設計内のメモリあるいはレジスタの所定の1つを選択するように構成されている。本発明の他のアスペクトでは、アクセス可能論理は、ユーザー設計内のメモリあるいはレジスタの所定の1つから読み出しあるいは書き込むための論理を有している。本発明の更に他のアスペクトでは、アクセス可能論理は、ホストからのコマンドを受信し、ユーザー設計内のメモリ及びレジスタに対するデータの読み出し及び書き込みの実行を制御するデコード論理(decode logic)を有している。
【0020】
要求パケット及び応答パケットを扱うために、プロトコルインターフェース論理(protocol interface logic)が、目標DUV内のレジスタ及びメモリのサイズパラメータと共にコンパイル時に統合され、実行時に目標DUVと共にシミュレートされる。統合されるプロトコルインターフェース論理は、パケットレジスタ、限定状態マシン(finite state machine)、コマンドデコード論理、コマンド実行論理、データロード動作及びデータアンロード動作のためのデータ読出制御論理及びデータ書込制御論理を含んでいる。プロトコルインターフェース論理は、ホストワークステーション上で作動している検証制御プログラムからの要求パケットをデコードし、パケット内にデコードされているコマンドを実行する。コマンドがデータ書込要求である場合には、プロトコルインターフェース論理は、パケット内のデータを目標レジスタ位置あるいは目標メモリ位置に書き込む。コマンドがデータ読出要求である場合には、プロトコルインターフェース論理は、目標レジスタ位置あるいは目標メモリ位置からデータを読み出し、それをホストワークステーションへの応答パケット内に送る。
【0021】
実施化の種々の新規な詳細及び要素の組み合わせを含む、本発明の前記した及び他の好ましい特徴は、添付の図面を参照してより詳細に説明され、クレームに記載されている。本発明を実施する特別の方法及び回路は、説明のためにのみ示されており、本発明を限定するものでないことが理解できる。当業者であれば理解できるように、本発明の原理及び特徴は、本発明の概念を逸脱することなく、種々のまた多くの実施の形態において用いることができる。
【0022】
【発明の実施の形態】
図面には、本発明の現時点での好ましい装置及び方法が開示されている。
第1のステップは、DUV内のメモリ及びレジスタを識別することである。1つの実施の形態では、この第1のステップは、DUVの全てのメモリ及びレジスタの識別を含んでいる。他の実施の形態では、この第1のステップは、DUV内のメモリ及びレジスタのサブセットのみの識別を含んでいる。この実施の形態では、ユーザーは、特に関係があるあるいは興味があるメモリ及びレジスタを識別する必要がある。DUVのメモリ及びレジスタのサブセットのみを識別することの利点は、DUVを、検証のためにより迅速にコンパイル可能であることである。しかしながら、メモリ及びレジスタのサブセットを識別することのみでは、本発明の種々の実施の形態によって提供される利点は、識別される特別のメモリ及びレジスタに制限される。以下により詳細に説明するように、メモリ及びレジスタが識別されると、それらは、各識別されたメモリ及びレジスタがユニークな識別子(unique identifier)を有するようにインデックスされる。
【0023】
第2のステップは、DUVに付加される論理を統合することである。この統合される論理は、第1のステップで識別されたレジスタ及びメモリへのアクセスを提供する。第2のステップで統合される論理は、以下に詳細に説明されている。一般に、この統合される論理は、所定のメモリあるいはレジスタが読み出しあるいは書き込みのためにアクセスできるように、前述したユニークな識別子を受信する選択論理を有している。
【0024】
第3のステップは、レジスタ及びメモリへのパスを形成するステップである。このステップも、以下により詳細に説明されている。
【0025】
図1は、本発明の好ましい実施の形態のブロック図である。図1は、検証下の設計(DUV)30が、DUV30のメモリ及びレジスタへの良好なアクセスを提供するために統合される論理と共に示されている。図1は、ハードウェアアクセラレータ20に通信チャンネル14を介して接続され、検証下の設計(DUV)をシミュレートし、通信チャンネル14を介してハードウェアアクセラレータ20に接続されるホストワークステーション10と、効率的なデータロード動作及びデータアンロード動作のためにDUV30に統合されるプロトコルインターフェース論理40を示している。制御プログラム11は、プロトコルインターフェース40を介してDUV30内のレジスタ及びメモリにデータをロードし及びデータをアンロードするために、ホストワークステーション10上で作動する検証制御プログラムである。例示のハードウェアアクセラレータ20は、クイックターン・デザインシステムズ・インコーポレイテッドから販売されている“Cobalt(米国商標)”である。例示の制御プログラム11は、クイックターン・デザインシステムズ・インコーポレイテッドから販売されている“PowerSuite(米国商標)”である。
【0026】
制御プログラム11が、データをDUV30内のレジスタ位置あるいはメモリ位置にロードする場合には、先ず、データと共に書込コマンドを、内部バス12を介してデータバッファ13に送り、その後、デーアバッファ13からハードウェアアクセラレータ20内のデータバッファ21への、通信チャンネル14を介するデータ転送を開始する。プロトコルインターフェース論理40は、データバッファ21からの書込コマンドと書込データを受信し、データをDUV30内の目標レジスタ位置あるいは目標メモリ位置にロードする書込みコマンドを実行する。
【0027】
制御プログラム11が、DUV30内のレジスタ位置あるいはメモリ位置からのデータをアンロードする場合には、先ず、読出コマンドを、内部バス12を介してデータバッファ13に送り、その後、データバッファ13からハードウェアアクセラレータ20内のデータバッファ21への、通信チャンネル14を介するデータ転送を開始する。プロトコルインターフェース論理40は、データバッファ21からの読出コマンドを受信し、DUV30内の目標レジスタ位置あるいは目標メモリ位置からのデータをデータバッファ21内にアンロードするために読出コマンドを実行する。データバッファ21内に蓄積されたデータは、内部バス12を介してデータバッファ13からのデータを受信する制御プログラム11によって開始される転送動作によって、通信チャンネル14を介してデータバッファ13に転送される。
【0028】
前述したように、プロトコルインターフェース論理40は、DUV30のために統合される特別の論理である。現時点での好ましい実施の形態では、プロトコルインターフェース論理40は、パケットI/Oブロック41、状態制御ブロック42、コマンドデコードブロック43、読出/書込制御ブロック44、メモリアドレスブロック45及び読出データブロック46により構成されている。
【0029】
パケットI/Oブロック41は、ホストワークステーション10からのコマンド及び書込データを入力パケットレジスタ(図1には示されていない)に保持する。また、パケットI/Oブロック41は、DUV30からの情報及び読出データを出力パケットレジスタ(図1には示されていない)に保持する。パケットI/Oブロック41は、データバッファ21からのコマンド及び書込みデータ信号22を受信し、読出データブロック46からの読出データ信号57を読み取る。パケットI/Oブロック41は、制御情報及び読出データ信号23をデータバッファ21に送り、コマンド及びデータ信号50を状態制御ブロック42、コマンドデコードブロック43、読出/書込制御ブロック44、メモリアドレスブロック45及びDUV30に送る。
【0030】
状態制御ブロック42は、プロトコルインターフェース論理40の現在状態を保持し、状態遷移を行う。状態制御ブロック42は、コマンドデコードブロック43からのデコードされたコマンド情報信号51及びパケットI/Oブロック41からのコマンド信号50を受信する。状態制御ブロック42は、読出/書込制御ブロック44への状態信号52を発生する。
【0031】
コマンドデコードブロック43は、パケットI/Oブロック41からのコマンドをデコードする。コマンドデコードブロック43は、パケットI/Oブロック41からのコマンド信号50を受信し、状態制御ブロック42及び読出/書込制御ブロック44への、デコードされた情報信号51を発生する。
【0032】
読出/書込制御ブロック44は、内部及び外部の読出及び書込制御信号を発生する。読出/書込制御ブロック44は、コマンドデコードブロック43からのデコードされたコマンド情報51、状態制御ブロック42からの状態情報信号52、パケットI/Oブロック41からの書込データ信号50を受信する。読出/書込制御ブロック44は、プロトコルインターフェース論理40内部への読出及び書込制御信号53、DUV30内のレジスタ及びメモリブロックへの読出及び書込制御信号54を発生する。
【0033】
メモリアドレスブロック45は、メモリアクセス動作のためにメモリアドレスを保持し、アップデートする。メモリアドレスブロック45は、パケットI/Oブロック41からのメモリアドレス信号を受信し、DUV30への現在メモリアドレス信号55を発生する。
【0034】
読出データブロック46は、DUV30内のレジスタ及びメモリからのデータ信号56を受信し、パケットI/Oブロック41への選択されたデータ信号57を発生する。
【0035】
図2Aは、例示のDUV30内に存在する、3つの例示のレジスタREG0、REG1及びREG2と、これらのレジスタに対する読み出し及び書き込みを許可するためにDUV30内に統合されるアクセス論理を示している。レジスタREG0、REG1及びREG2は、前述した第1のステップにおいて識別される。この例では、レジスタREG0、REG1及びREG2は、それぞれ48ビット、16ビット及び32ビットレジスタ60、63及び66である。レジスタは、本発明の種々の実施の形態の柔軟性を許容する。DUV30内では、レジスタREG0、REG1及びREG2は、DUV論理31からの書込データ及び制御信号32を受信し、DUV論理31への読出データ信号56を発生する。データマルチプレクサ61、64及び67、制御マルチプレクサ62、65及び68は、プロトコルインターフェース論理40が、レジスタREG0、REG1及びREG2にデータをロード及びデータをアンロードすることができるように、統合され、DUV30に加えられる。マルチプレクサ61、62、64、65、67及び68は、プロトコルインターフェース論理40からの信号グループ54内の信号REGSを選択することによって制御される。RWE0、RWE1及びRWE2は、プロトコルインターフェース論理40からの信号グループ54内のレジスタ書込制御信号であり、それぞれ制御マルチプレクサ62、65及び68に接続される。DIN〈47:0〉は、プロトコルインターフェース論理40からの48ビットのデータ信号のグループ50であり、データマルチプレクサ61、64及び67に接続される。RRD0〈47:0〉は、REG0からの48ビットのデータ信号のグループであり、RRD1〈15:0〉は、REG1からの16ビットのデータ信号のグループであり、RRD2〈31:0〉は、REG2からの32ビットのデータ信号のグループである。RRD0、RRD1及びRRD2は、信号グループ56として、DUV論理31及びプロトコルインターフェース論理40に接続される。
【0036】
選択信号REGSが存在しない場合には、REG0、REG1及びREG2は、DUV論理31からのデータ及び制御信号32を受信する。選択信号REGSが存在する場合には、REG0、REG1及びREG2は、プロトコルインターフェース論理40からの書込データ信号50及び制御信号54を受信する。選択信号REGSに関係なく、読出データ信号56は、DUV論理31及びプロトコルインターフェース論理40に送られる。
【0037】
図2Bは、例示のDUV30内に存在する、DUV30内の2つの例示のメモリMEM0及びMEM1と、これらのメモリに対する読み出し及び書き込みを許容するためにDUV30内に統合されるアクセス論理を示している。メモリMEM0及びMEM1は、前述した第1のステップにおいて識別される。MEM0は、40ビットのデータ及び8ビットのアドレスを有するメモリ70であり、MEM1は、18ビットのデータ及び14ビットのアドレスを有するメモリ74である。これらのデータのサイズ及びアドレスの長さは、本発明の柔軟性を示すように選択され、DUV30内に存在可能なメモリの種類に限定されない。DUV30内では、MEM0及びMEM1は、DUV論理33からの書込データ、メモリアドレス及び書込イネーブル信号34を受信し、DUV論理33への読出データ信号56を発生する。データマルチプレクサ71及び75、アドレスマルチプレクサ72及び76、書込イネーブルマルチプレクサ73及び77は、プロトコルインターフェース論理40が、MEM0及びMEM1にデータをロードし及びデータをアンロードするように、統合され、DUV30に加えられる。マルチプレクサ71、72、73、75、76及び77は、プロトコルインターフェース論理41からの信号グループ54内の選択信号MEMSによって制御される。MWE0及びMWE1は、プロトコルインターフェース論理40からの信号グループ54内のメモリ書込イネーブル信号であり、それぞれ書込イネーブルマルチプレクサ73及び77に接続される。DIN〈39:0〉は、プロトコルインターフェース論理40からの40ビットのデータ信号のグループ50であり、データマルチプレクサ71及び75に接続される。MAD〈13:0〉は、プロトコルインターフェース論理40からの14ビットのアドレス信号のグループ55であり、アドレスマルチプレクサ72及び76に接続される。MRD0〈39:0〉は、MEM0からの40ビットのデータ信号のグループであり、MRD1〈17:0〉は、MEM1からの18ビットのデータ信号のグループである。MRD0及びMEM1は、信号グループ56として、DUV30論理33及びプロトコルインターフェース論理40に接続される。
【0038】
選択信号MEMSが存在しない場合には、メモリMEM0及びMEM1は、DUV論理33からの書込データ、メモリアドレス及び書込イネーブル信号34を受信する。選択信号MEMSが存在する場合には、MEM0及びMEM1は、プロトコルインターフェース論理40からの書込データ信号50、メモアドレス信号55及び書込イネーブル信号54を受信する。選択信号MEMSに関わらず、読出データ信号56は、DUV論理33及びプロトコルインターフェース論理40に送られる。
【0039】
図3は、プロトコルインターフェース論理40内のパケットI/Oブロック41の詳細ブロック図である。データバッファ21内の要求パケットは、コマンド実行のために、信号22を介して入力パケットレジスタ80に移動する。現時点での好ましい実施の形態では、レジスタ80内に蓄積される要求パケットは、5つの領域(field)(1ビットのTAG、3ビットのCMD、1ビットのEND、2ビットのID及び48ビットのDATA領域)に分割されている。これらの領域の長さは、これらの特別な長さに限定されず、特別なシステムの必要性によって設定される。CMD、END、ID及びDATA領域の値は、他のブロックへの信号50上に送られる。TAG領域の値は、その前のサイクルのTAGの値を保持する、1ビットのレジスタ81に送られる。レジスタ81内のTAG領域の値は、信号83上に新しいパケットがレジスタ80に到達したか否かを示すNEWINを発生するためのイクスクルーシブORゲート82において、レジスタ81に蓄積されているその前のTAGの値と照合される。NEWINが「1」である場合には、レジスタ80は、データバッファ21からの新しいパケットを受信している。この特別の実施の形態におけるTAG領域のサイズは、図3の例示のパケットI/Oブロック41内では1ビットであるが、2ビット以上でもよい。この場合、イクスクルーシブORゲート82は、2つの値が等しいことを照合するための適当な論理ブロックによって置き換えられなければならない。
【0040】
応答パケットは、出力パケットレジスタ84に蓄積され、そして、データバッファ21への信号23上を移動する。この特別の実施の形態では、レジスタ84内の応答パケット84は、3つの領域(1ビットのTAG、6ビットのUNUSED及び48ビットのDATA領域)に分割される。これらの領域の長さは、これらの特別の長さに限定されず、特別なシステムの必要性によって設定される。信号57上の値は、レジスタ84内のDATA領域に蓄積される。UNUSED領域内の値は、使用されず、常に「0」である。TAG領域の値は、NOTゲート85によって切り換えられる。信号86上のNEWOUTは、レジスタ84が、NEWOUTが存在する時にのみ新しいデータ及び新しいTAGのビットを蓄積するように、レジスタ84を制御する。この特別の実施の形態では、TAG領域のサイズは、例示のパケットI/Oブロック41内では1ビットであるが、2ビット以上でもよい。この場合、NOTゲート85は、TAG領域の値をアップデートするための適当な論理ブロックによって置き換えられる。
【0041】
図4は、プロトコルインターフェース論理40内のメモリアドレスブロック45の、現時点での好ましい実施の形態の詳細ブロック図である。レジスタ90は、アドレスマルチプレクサ91を介して到来する14ビットのメモリアドレスを保持する。マルチプレクサ選択信号MADS及びレジスタ制御信号MADEは、信号53上に到来する。MADSが「0」の場合には、マルチプレクサ91は、アドレスインクリメンター(address incrementer)92によってインクリメントされたアドレスを選択する。MADSが「1」の場合には、マルチプレクサ91は、信号50上のDIN〈13:0〉上のメモリアドレスを選択する。現在メモリアドレスMAD〈13:0〉は、DUV30への信号55上に送られる。
【0042】
図5は、プロトコルインターフェース論理40内の、現時点での好ましい読出データブロック46の詳細ブロック図を示している。3つのレジスタ読出データRRD0〈47:0〉、RRD1〈15:0〉及びRRD2〈31:0〉は、信号53上のRRDS〈1:0〉によって制御されるレジスタデータマルチプレクサ93への信号56上に送られる。RRDS〈1:0〉の値「0」、「1」及び「2」は、それぞれRRD0、RRD1及びRRD2を選択する。メモリ読出データMRD0〈39:0〉及びMRD1〈17:0〉は、信号53上のMRDSによって制御されるメモリデータマルチプレクサ94への信号56上に送られる。MRDSの値「0」及び「1」は、それぞれMRD0及びMRD1を選択する。マルチプレクサ93及び94からのデータは、選択信号MRSによって制御される他のデータマルチプレクサ95に送られる。MRSの値「0」及び「1」は、それぞれマルチプレクサ93の出力及びマルチプレクサ94の出力を選択する。マルチプレクサ95の出力は、パケットI/Oブロック41への信号57上に送られる最終の読出データである。
【0043】
図6は、プロトコルインターフェース論理41によってデコードされ、実行される、現時点での好ましいプロトコルコマンドのチャート図である。図3に示されているように、入力パケットレジスタ80に蓄積されるデータバッファ21からの要求パケットは、5つの領域に分割される。3ビットのCMD領域は、7つのコマンドをエンコードする。NOP(非動作)コマンドは、CMD=「0」あるいは「1」によって特定され、何も実行しないが、少なくとも1クロックサイクル消費する。WR(書込レジスタ)コマンドは、CMD=「2」によって特定され、DATA領域内の書込データをレジスタIDあるいはID領域内のRidによって特定される目標レジスタに書き込む。RR(読出レジスタ)コマンドは、CMD=「3」によって特定され、レジスタIDあるいはID領域内のRidによって特定される目標レジスタ内のデータを読み出し、それを出力パケットレジスタ84内のデータ領域に蓄積する。
【0044】
SWM(選択書込メモリ)及びWM(書込メモリ)コマンドは、連続モードにおいてメモリ内にデータをロードするために用いられる。SWMコマンドは、CMD=「4」によって特定され、メモリIDあるいはID領域内のMIDを図10のメモリアIDレジスタ130に蓄積するとともに、DATA領域内のスタートアドレスを図4のメモリアドレスレジスタ90に蓄積する。SWMコマンドの実行によって、プロトコルインターフェース論理40はメモリ書込モードに設定される。WMコマンドは、CMD=「5」によって特定され、DATA領域内の書込データを、メモリIDレジスタ130によって示されている目標メモリ(目標書込メモリアドレスは、メモリアドレスRジスタ90内に蓄積されたアドレスである。)に書き込む。WMコマンドが最後のデータを目標メモリに書き込む場合には、END領域に値「1」(それ以外では「0」)が置かれる。プロトコルインターフェース論理40がメモリ書込モードにある場合には、WMコマンドは、受信及び実行されるコマンドのみである。END領域の最後のデータの指示は、プロトコルインターフェース論理40を通常の非メモリモードに戻す。
【0045】
SRM(選択読出メモリ)及びRM(読出メモリ)コマンドは、連続モードにあるメモリからデータをアンロードするために用いられる。SRMコマンドは、CMD=「6」によって特定され、メモリIDあるいはID領域内のMIDをメモリIDレジスタ130に蓄積するとともに、DATA領域内のスタートアドレスをメモリアドレスレジスタ90に蓄積する。SRMコマンドの実行によって、プロトコルインターフェース論理40はメモリ読出モードに設定される。RMコマンドは、CMD=「7」によって特定され、メモリIDレジスタ130によって示されている目標メモリ(目標読出メモリアドレスは、メモリアドレスレジスタ90内に蓄積されているアドレスである。)からデータを読み出す。目標メモリ位置から読み出されたデータは、出力パケットレジスタ84のDATA領域に蓄積される。RMコマンドが、目標メモリから最後のデータを読み出す場合には、END領域に値「1」(それ以外は「0」)が置かれる。プロトコルインターフェース論理40がメモリ読出モードに置かれる場合には、RMコマンドは、受信及び実行されるコマンドのみである。END領域の最終のデータの指示は、プロトコルインターフェース論理40を通常の非メモリモードに戻す。
【0046】
WMあるいはRMコマンドの実行によって、図4に示されているように、メモリアドレスが「1」だけインクリメントされる。第1のメモリアドレスは、SWMコマンドあるいはSRMコマンドによって蓄積される。SWMコマンドの後の第1のWMコマンドは、メモリアドレスレジスタ90に蓄積されているメモリアドレスによって示されているメモリ位置を書き込み、第2のWMコマンドは、次のメモリ位置を書き込む。同様に、SRMコマンドの後の第1のRMコマンドは、メモリアドレスレジスタ90に蓄積されているメモリアドレスによって示されているメモリ位置を読み出し、第2のRMは、次のメモリ位置を読み出す。
【0047】
図7は、プロトコルインターフェース論理40内の、現時点での好ましいコマンドデコードブロック43の詳細ブロック図を示している。入力パケットレジスタ80のCMD領域からの信号50上のCMD〈2:0〉は、6つの信号を発生するデコーダ100に送られる。6つの信号は、ANDゲート101においてWRコマンド信号CMDWRを発生するために、ANDゲート102においてRRコマンド信号CMDRRを発生するために、ANDゲート103においてSMWコマンド信号CMDSMWを発生するために、ANDゲート104においてWMコマンド信号CMDWMを発生するために、ANDゲート105においてSRMコマンド信号CMDSRMを発生するために、ANDゲート106においてRMコマンド信号CMDRMを発生するためにNEWINと加算される。全てのコマンド信号は、他のブロックへの信号51上の信号上に送られる。
【0048】
図8は、プロトコルインターフェース論理40の状態及び状態遷移図である。それぞれ、110、111及び112によって示されている3つの状態、NM(非メモリ)、MW(メモリ書込)及びMR(メモリ読出)が存在する。シミュレーションがハードウェアアクセラレータ20上で開始される場合、プロトコルインターフェース論理40は、NM状態にある。NOP、WR及びRRコマンドの実行は、状態を変化させない。NM状態でのSWMコマンドの実行は、状態をNMからMWに変化させる。END=「0」を有するWMコマンド及びNOPコマンドの実行は、状態を変化させない。END=「1」を有するWMコマンドの実行は、状態をMWからNWに変化させる。NM状態でのSRMコマンドの実行は、状態をNMからMRに変化させる。END=「0」を有するRMコマンド及びNOPコマンドの実行は、状態を変化させない。END=「1」を有するRMコマンドの実行は、状態をMRからNMに変化させる。
【0049】
図9は、プロトコルインターフェース論理40内の、現時点での好ましい状態制御ブロック42の詳細ブロック図である。現在状態STATEは、状態レジスタ120に蓄積され、状態レジスタ120に戻されて蓄積される次の状態を発生する状態遷移制御121に送られる。状態遷移制御121への入力信号は、信号51上のCMDSWM及びCMDSRM、ANDゲート122において信号51上のCMDRMと信号50上のENDを加算することによって発生される信号、ANDゲート123において信号51上のCMDWMと信号50上のENDを加算することによって発生される信号を含んでいる。状態遷移制御121は、図8に示されている状態遷移を実現する。現在状態STATEは、信号52上に3つの状態信号STATENM、STATEMW及びSTATEMRを発生するデコーダ124でデコードされる。
【0050】
図10は、プロトコルインターフェース論理40内の、現時点での好ましい読出/書込制御ブロック44の詳細ブロック図である。読出/書込制御ブロック44は、入力信号50、52及び51からの出力制御信号54、53及び86を発生する。入力パケットレジスタ80のID領域からの信号50上のID<1:0>は、制御論理131及びメモリIDレジスタ130に送られる。また、メモリIDレジスタ130からの出力MIDは、制御論理131に送られる。制御論理131は、[(CMDWR+CMDRR)*STATENM]によってレジスタ読出データ選択信号REGSを、[CMDWR*STATENM*(ID=0)]によってレジスタ書込イネーブル0信号RWE0を、[CMDWR*STATENM*(ID=1)]によってレジスタ書込イネーブル1信号RWE1を、[CMDWR*STATENM*(ID=2)]によってレジスタ書込イネーブル2信号を、[STATEMW+ATATEMR]によってメモリ読出データ選択信号MEMSを、[CMDWM*STATEWM*(MID=0)]によってメモリ書込イネーブル0信号MWE0を、[CMDWM*STATEWM*(MID=1)]によってメモリ書込イネーブル1信号MWE1を、MEMSによってメモリ/レジスタ選択信号MRSを、[(CMDSWM+CMDSRM)*STATENM]によってメモリアドレス選択信号MADSを、[MEMS+MADS]によってメモリアドレスイネーブル信号MADEを、[CMDRR*STATENM+CMDRM*STATEMR]によってNOUTを発生する。ここで、“+”は論理OR演算子であり、“*”は論理AND演算子であり、“=”は等号演算子である。制御論理131からのREGS、RWE0、RWE1、RWE2、MEMS、MWE0及びMWE1は、外部への信号54上に送られる。制御論理131からのMRS、MADS及びMADEは、外部への信号53上に送られる。制御論理131からのNOUTは、1ビットのレジスタ132に蓄積され、レジスタ132からの出力は、外部への信号86上に送られるNEWOUTである。
【0051】
図11Aは、プロトコルインターフェース論理40内のレジスタ書込コマンドの実行の例示のタイムチャート図である。列140(サイクル)、141(NEWIN)、142(CMD)、143(DIN)及び144(REG)は、それぞれクロックサイクル、NEWIN信号の値、コマンド、書込データ、目標レジスタの値を示している。4つのWRコマンドは、それぞれサイクルN、N+1、N+3及びN+4において、書込データA、B、C及びDと共に到達する。書込データA、B、C及びDは、それぞれサイクルN、N+1、N+3及びN+4において目標レジスタに蓄積される。この例示のタイムチャート図では、WRコマンドの実行に1サイクル要すると仮定している。WRコマンドの実行のために2あるいは3サイクル以上要する場合には、次のコマンドの実行をWRコマンドの実行が完了するまで阻止するために、簡単な制御論理が必要である。
【0052】
図11Bは、プロトコルインターフェース論理40内のレジスタ読出コマンドの実行の例示のタイムチャート図である。列145(POUT)及び146(TRANSFER)は、それぞれ出力パケットレジスタ84に蓄積される読出データ及びハードウェアアクセラレータ20からホストワークステーション10に転送されるデータを示している。サイクルNにおいて到達するRRコマンドは、目標レジスタからのデータAを読み出し、サイクルN+1において、それを出力パケットレジスタ84のDATA領域に蓄積する。サイクルN+2におけるデータ転送は、出力パケットレジスタ84内のレジスタデータと共に応答パケットを、データバッファ21を介してホストワークステーション10に送る。サイクルN+3において到達するRRコマンドは、目標レジスタからのデータBを読み出し、サイクルN+4において、それを出力パケットレジスタ84のDATA領域に蓄積する。サイクルN+5におけるデータ転送は、出力パケットレジスタ84内のレジスタデータと共に応答パケットを、データバッファ21を介してホストワークステーション10に送る。この例示のタイムチャート図では、RRコマンドの実行に1サイクル要すると仮定している。RRコマンドの実行に2あるいは3サイクル以上を要する場合には、次のコマンドの実行をRRコマンドの実行が完了するまで阻止するために、簡単な制御論理が必要である。
【0053】
出力パケットレジスタ内に蓄積された応答パケットのデータ転送は、ホストワークステション10上で作動する検証制御プログラム11によって開始される。この例示のタイムチャート図では、簡略化のために、検証制御プログラム11は、RRコマンドの送信後、読出データを得るためにデータ転送を開始すべき時期を知っているものと仮定する。検証制御プログラムが、データ転送を開始する時期を知る方法を有していない場合には、パケットが新しい読出データを含んでいることを示す、その前のTAG領域の値と異なるTAG領域の値を有する応答パケットを受信するまで、データ転送動作を繰り返す必要がある。プロトコルインアーフェース論理が、RRコマンドを実行してから1サイクル後に出力パケットレジスタ84内にレジスタデータを準備することができることを、検証制御プログラムムが予め知っているため、RRコマンドの後にNOPコマンドを送ることができ、そして、検証制御プログラム11が、応答パケット内のレジスタデータを受信することができるように、データ転送を開始することができる。あるいは、検証制御プログラム11は、少なくとも1クロックサイクル消費するNOPコマンドと実質的に等価である、アップデートされたTAG領域の値を有していないコマンドを送り、その後、データ転送を開始することができる。
【0054】
図11Cは、プロトコルインターフェース論理40内の連続モードメモリ書込動作の例示のタイムチャート図である。列147(MAD)及び148(MEM)は、それぞれ目標メモリのメモリアドレス及びデータを示している。サイクルNにおいて到達するSWMコマンドは、サイクルN+1において、第1の書込メモリアドレス10をメモリアドレスレジスタ90に蓄積する。プロトコルインターフェース論理40は、サイクルN+1において、メモリ書込モードで動作する。第1のWMコマンドは、サイクルN+1において、書込データAと共に到達する。書込データAは、サイクルN+1において、目標メモリのメモリ位置「10」に蓄積される。メモリアドレスは、サイクルN+1において「1」だけインクリメントされ、そして、サイクルN+2において、アップデートされたメモリアドレス「11」がメモリアドレスレジスタ90に蓄積される。サイクルN+2において書込データBと共に到達する第2のWMコマンドは、サイクルN+2において、目標メモリのメモリ位置「11」にデータBを書き込む。メモリアドレスは、「1」だけインクリメントされ、サイクルN+3において、アップデートされたメモリアドレス「12」がメモリアドレスレジスタ90に蓄積される。サイクルN+4において書込データCと共に到達する第3のMWコマンドは、サイクルN+4において、目標メモリのメモリ位置「12」にデータCを書き込む。サイクルN+4において、メモリアドレスが「1」だけインクリメントされ、サイクルN+5において、アップデートされたメモリアドレス「13」が、メモリアドレスレジスタ90に蓄積される。この例示のタイムチャート図では、SWMコマンドの実行に1サイクル要し、次のサイクルにおいて、メモリアドレスレジスタ90内にメモリアドレスを用意するものと仮定している。SWMコマンドの実行に2あるいは3サイクル以上要する場合には、次のコマンドの実行をSWMコマンドの実行が完了するまで阻止するために、簡単な制御論理が必要である。WMコマンドについても同様である。
【0055】
図11Dは、プロトコルインターフェース論理40ン内の連続モードメモリ読出動作の例示のタイムチャート図である。サイクルNにおいて到達するSRMコマンドは、サイクルN+1において、メモリアドレスレジスタ90に対する第1の読出メモリアドレス「10」を蓄積する。プロトコルインターフェース論理40は、サイクルN+1において、メモリ読出モードで動作する。第1のRMコマンドは、サイクルN+1において到達し、目標メモリのメモリ位置10からのデータAを読み出し、サイクルN+1において、それを出力パケットレジスタ84のDATA領域に蓄積する。メモリアドレスは、サイクルN+1において、「1」だけインクリメントされ、サイクルN+2において、アップデートされたメモリアドレス「11」が蓄積される。サイクルN+3におけるデータ転送は、出力パケットレジスタ84内のメモリデータと共に応答パケットを、データバッファ21を介してホストワークステーション10に送る。同様に、サイクルN+4において到達する第2のRMコマンドは、目標メモリのメモリ位置「11」からデータBを読み出し、サイクルN+5において、それを出力パケットレジスタ84のDATA領域に蓄積する。メモリアドレスは、サイクルN+4において「1」だけインクリメントされ、サイクルN+5において、アップデートされたメモリアドレス「12」が蓄積される。サイクルN+6におけるデータ転送は、出力パケットレジスタ84内のメモリデータと共に応答パケットを、デーアバッファ21を介してホストワークステーション10に送る。この例示のタイムチャート図では、SRMコマンドの実行に1サイクル要し、次のサイクルにおいて、メモリアドレスレジスタ90内にメモリアドレスを用意すると仮定している。SRMコマンドの実行に2あるいは3サイクル以上を要する場合には、次のコマンドの実行をSRMコマンドの実行が完了するまで阻止するために、簡単な制御論理が必要である。RMコマンドについても同様である。再び、この例示のタイムチャート図では、簡略化のために、RMコマンドを送った後に各メモリデータを得るためにデータ転送を開始させる時期を、検証制御プログラム11が知っているものと仮定している。検証制御プログラム11が、応答パケット内の有効なメモリデータを得るためにデータ転送を開始する時期を知る方法を有していない場合には、RRコマンドに対して述べたオプションが、RMコマンドに対しても適用可能である。
【0056】
図12は、プロトコルインターフェース論理を発生するために用いられるコンパイル時間ステップ(compile−time step)を示すフローチャート図である。処理は、150で開始する。第1のステップ151では、目標設計のネットリスト(netlist)を生成するために、1あるいは複数のHDLあるいはハードウェア表記言語ファイルに書かれている目標設計をコンパイルする。第2のステップ152では、ステップ151で生成されたネットリスト内のレジスタ及びメモリのサイズを検査し、レジスタ及びメモリのサイズに基づいてプロトコル領域のサイズを計算する。第3のステップ153では、目標設計のためのプロトコルインターフェース論理を統合し、それをネットリストに加える。処理は、154で終了する。
【0057】
図13は、目標設計のネットリストからプロトコル領域のサイズを計算するための、図12のステップ152の詳細フローチャート図である。処理は、160で開始する。ステップ161では、変数“Nr”として示されている、ネットリスト内のレジスタの数を発見するための“レジスタ数カウント(countNumOfRegs)” 関数(function)を呼び出し、各レジスタにユニークな識別子を割り当てる。ステップ162では、変数“Nm”として示されている、ネットリスト内のメモリの数を発見するための“メモリ数カウント(countNumOfMems)”関数を呼び出し、各メモリにユニークな識別子を割り当てる。ステップ163では、NrとNmの値を比較するための“最大値(max)”関数を呼び出し、大きい方の値を変数Nsに割り当てる。ステップ164では、Nsの最大値を表すために必要なビットの数を計算するために、Nsの値と共に呼び出される“log2”関数によって結果を戻す“シール(ceil)”関数を呼び出し、その結果を変数Nslに割り当てる。ステップ165では、ネットリスト内の最も広いレジスタデータのビットの数を発見するための“最大巾レジスタデータ判別(findWidestRegData)”関数を呼び出し、それを変数“Rd”に割り当てる。ステップ166では、ネットリスト内の最も広いメモリデータのビットの数を発見するための“最大巾メモリデータ判別(findWidestMemData)”関数を呼び出し、それを変数“Md”に割り当てる。ステップ167では、ネットリスト内の最も広いメモリアドレスのビットの数を発見するための“最大巾メモリアドレス判別(findWidestMemAddress)”関数を呼び出し、それを変数“Ma”に割り当てる。ステップ168では、Rd、Md及びMaの値を比較するための“最大値(max)”関数を呼び出し、最も大きい値を変数“Nd”に割り当てる。ステップ169では、TAG領域のサイズに対する可変sizeTagに「1」を割り当て、CMD領域のサイズに対する可変sizeCmdに「3」を割り当て、END領域のサイズに対する可変sizeEndに「1」を割り当て、ID領域のサイズに対するsizeIdにNslの値を割り当て、DATA領域のサイズに対する可変sizeDataにNdの値を割り当てる。処理は、170で終了する。
【0058】
図2A及び図2Bに示されている例示のDUV30に適用する場合には、処理は、図3に示されているように、Nr=3、Nm=2、Ns=3、Nsl=2、Rd=48、Md=40、Ma=14及びNd=48を計算し、ID及びDATA領域のサイズをそれぞれ2及び48ビットに設定する。
【0059】
図14は、プロトコルインターフェース論理の構成要素を構成する、図12のステップ153の詳細フローチャート図である。処理は、171で開始する。ステップ172では、図3に示されているようなパケットI/Oブロック41を生成するために、“Nsl”及び“Nd”の値と共に“パケットI/Oブロック生成(createPacketIoBlock)”関数を呼び出す。Nsl及びNdの値は、入力及び出力パケットレジスタ80及び84のサイズ、ID及びDATA領域信号50及び57の数を決定する。ステップ173では、図7に示すようなコマンドデコードブロック43を生成する“コマンドデコードブロック生成(createCommandDedodeBlock)”関数を呼び出す。このブロック43は、DUVに依存しない。ステップ174では、図8及び図9に示されているような状態制御ブロック42を生成する“状態制御ブロック生成(createStateControlBlock)”関数を呼び出す。このブロック42も、DUVに依存しない。ステップ175では、図4に示されているようなメモリアドレスブロック45を生成する“メモリアドレスブロック生成(createMemoryAddressBlock)”関数を呼び出す。Maの値は、メモリアドレスレジスタ90のサイズを決定する。ステップ176では、図5に示されているような読出データブロック46を生成するために、Ndの値と共に“読出データブロック生成(createReadDataBlock)”関数を呼び出す。Ndの値は、レジスタ及びメモリからの読出データ57の最大サイズを決定する。ステップ177では、図10に示されているような読出/書込制御ブロック44を生成するために、Nsl、Nr及びNmと共に“読出/書込制御ブロック生成(createReadWriteControlBlock)”関数を呼び出す。Nslの値は、ID信号50の数及びメモリIDレジスタ130のサイズを決定する。Nr及びNmの値は、それぞれレジスタ書込イネーブル信号の数及びメモリ書込イネーブル信号の数を決定する。ステップ178では、DUV内に少なくとも1つのレジスタが存在する場合には、DUV内のレジスタにデータマルチプレクサ及び制御マルチプレクサ(図2Aのマルチプレクサ61、62、63、64、65、66、67を参照)を加えるために、“DUV内レジスタブロック修正(modifyRegBlockInDuv)”関数を呼び出す。DUVに加えられるマルチプレクサは、図2Aに示されているように、プロトコルインターフェース論理が、DUV内のいずれかのレジスタに直接にアクセスすることを許可する。ステップ179では、DUV内に少なくとも1つのメモリが存在する場合には、DUV内のメモリにデータマルチプレクサ及び制御マルチプレクサ(図2Bのマルチプレクサ71、72、73、75、76、77を参照)を加えるために、“DUV内メモリブロック修正(modifyMemBlockInDuv)”関数を呼び出す。加えられたマルチプレクサは、図2Bに示されているように、プロトコルインターフェース論理が、DUV内のいずれかのメモリに直接にアクセスすることを許可する。
【0060】
図15は、DUV及びDUVのために統合されるプロトコルインターフェース論理のシミュレーションのための動作の典型的な動作シーケンスのフローチャート図である。処理は、190で開始する。ステップ191では、コンパイルされたDUVが、ハードウェアアクセラレータ20内にロードされる。ステップ192では、DUVとの通信チャンネル14がセットアップされる。ステップ193では、初期データが、DUV内のレジスタ及びメモリにロードされる。ステップ194では、DUVが、サイクル数に対してシミュレートされる。ステップ195では、シミュレーション結果が、レジスタ及びメモリからアンロードされる。ステップ196では、シミュレーション結果が、期待値と照合される。処理は、ステップ197で終了する。ステップ193及び195では、以下に示されているプロトコルインターフェース論理40が、DUV内のレジスタ及びメモリにアクセスするために用いられる。ステップ194では、DUV内のいくつかのレジスタ及びメモリが、シミュレーション中にアクセスされる、いくつかの場合が存在する。
【0061】
図16−18は、省略されるいくつかのローカル可変宣言(local variable declaration)を有するCプログラム言語で書かれているコードリストを示している。Cプログラム言語は、ソフトウェアを開発するために幅広く用いられている周知のプログラム言語である。例えば、1988年にPrentice Hallによって発行された、B.W.Kernighan及びD.M.Ritchieらの“Cプログラム言語(第2版)”に記載されている。コードリストの以下の説明では、より読み易くするためにのみ用いられている空白の行は言及されていない。
【0062】
図16は、プロトコルインターフェース論理との動作を説明するために用いられる主要な定数、変数及び関数の定義及び宣言のコードリストである。1−7行は、それぞれ7つのプロトコルコマンドNOP(非動作)、WR(書込レジスタ)、RR(読出レジスタ)、SWM(選択書込メモリ)、WM(書込メモリ)、SRM(選択読出メモリ)及びRM(読出メモリ)に対する7つの定数“CMD_NOP”、“CMD_WR”、“CMD_RR”、“CMD_SWM”、“CMD_WM”、“CMD_SRM”及び“CMD_RM”を定義している。10行は、“uint”を“サインされていないint(unsigned int)”として定義している。11行及び12行は、それぞれ応答パケットのID及びDATA領域のサイズを保持する“int”変数“sizeId”及び“sizeData”を宣言している。14行及び15行は、それぞれ出力及び入力パケットに対するTAGの値を保持するための、初期値「0」を有する“uint”変数“tagOut”及び“tagIn”を宣言している。17行及び18行は、それぞれ要求及び応答パケットに対する指示(pointer)を保持するための“uint”変数“packetOut”及び“packetIn”を宣言している。
【0063】
20〜25行は、6つの外部の有用な関数を宣言している。20行は、データビットを目標パケット内に置くための4つの独立変数(argument)を有する値を戻さない“put_bits”関数、すなわち、ボイド関数(void)“put_bits(uint*packet,int pos,int size,uint data)”を宣言している。ここで、“packet”は、目標パケットに対する指示(pointer)であり、“pos”は、目標パケット内のデータの第1ビットの位置であり、“size”は、コピーするデータビットの数であり、“data”は、コピーするデータビットを保持する。21行は、目標パケットからデータビットを得るための4つの独立変数を有する値を戻さない“get_bits”関数、すなわち、ボイド関数“get_bits(uint*packet,int pos,int size,uint*data)”を宣言している。ここで、“packet”は、目標パケットに対する指示であり、“pos”は、目標パケット内のデータビットの第1のビット位置であり、“size”は、コピーするデータビットの数であり、“data”は、目標パケットからのデータビットを保持する。22行は、パケットをホストワークステーション内のデータバッファにコピーするための2つの独立変数を有する値を戻さない“copy_to_dbuff”関数、すなわち、ボイド関数“copy_to_dbuff(int size,uint*packet)”を宣言している。ここで、“size”は、コピーするパケット内のビットの総数であり、“packet”は、パケットビットを保持する位置に対する指示である。23行は、ホストワークステーション内のデータバッファからのパケットをコピーするための2つの独立変数を有する値を戻さない“copy_from_dbuff”関数、すなわち、ボイド関数“copy_from_dbuff(int size,uint*packet)”を宣言している。ここで、“size”は、コピーするパケット内のビットの総数であり、“packet”は、コピーされるパケットデータを保持する位置に対する指示である。24行は、ホストワークステーション内のデータバッファ内のパケットをハードウェアアクセラレータに転送するための1つの独立変数を有する値を戻さない“transfer_to_haccel”関数、すなわち、ボイド関数“transfer_to_haccel(int size)”を宣言している。ここで、“size”は、転送するパケット内のビットの総数である。25行は、ハードウェアアクセラレータからのパケットをホストワークステーション内のデータバッファに転送するための1つの独立変数を有する値を戻さない“transfer_from_haccel”関数、すなわち、ボイド関数“transfer_from_haccel(int size)”を宣言している。ここで、“size”は、転送するパケット内のビットの総数である。
【0064】
簡略化のために、データビットの最大数が32以下であると仮定している。データビットの最大数が32より大きいと、“put_bits”関数の第4の独立変数データは、データビットを保持するuintアレイに対する指示となる。同様に、“get_bits”関数の第4の独立変数データは、データビットを保持するuintアレイに対する指示となる。以下のコードフラグメント(code fragment)では、簡略化のために、データビットの最大数が32以下であると仮定している。データビットの最大数が32より大きい場合には、コードに対して何らかの変更を行う必要があるが、当業者に困難な作業ではない。
【0065】
図17は、プロトコルインターフェース論理に要求パケットを送信し、プロトコルインターフェース論理からの応答パケットを受信する2つの関数のコードリストである。30行−41行は、要求パケットをハードウェアアクセラレータに送信するための5つの独立変数を有する値を戻さない“sendPacket”関数、すなわち、ボイド関数“sendPacket(uint cmd,uint end,uint id,uint ds,uint data)”を宣言する。ここで、“cmd”は、図16の1行−7行に定義されている7つのコマンド定数の1つである、CMD領域の値であり、“end”は、パケットが最後のメモリアクセスコマンドであるか否かを示すEND領域のビットであり、“id”は、目標レジスタ/メモリIDを示すID領域の値であり、“ds”は、送信するデータビットの数であり、“data”は、送信するデータビットを保持する。32行は、5(TAG、CMD及びEND領域に対するビットの総数)、“sizeId”の値及び“ds”の値を加算することによって、要求パケットのビットの総数を計算し、それを変数“ps”に割り当てる。33行は、“tagOut”の1つのビットの値を逆にし、それを要求パケットに対する“tagOut”に蓄積する。34行は、“tagOut”の値を、“packetOut”によって指示されている要求パケットのTAG領域にコピーする“put_bits(packetOut,0,1,tagOut)”を呼び出す。第35行は、“cmd”の値を“packetOut”によって指示されている要求パケットのCMD領域にコピーする“put_bits(packetOut,1,3,cmd)”を呼び出す。36行は、“end”の値を“packetOut”によって指示されている要求パケットのEND領域にコピーする“put_bits(packetOut,4,1,end)”を呼び出す。37行は、“id”の値を“packetOut”によって指示されている要求パケットのID領域にコピーする“put_bits(packetOut,5,sizeId,id)”を呼び出す。38行は、“data”内のデータビットを“packetOut”によって指示されている要求パケットのDATA領域にコピーするための“put_bits(packetOut,5+sizeId,ds,data)”を呼び出す。39行は、“packetOut”によって指示されている要求パケットをホストワークステーション内のデータバッファにコピーする“copy_to_dbuff(ps,packetOut)”を呼び出す。40行は、ホストワークステーション内のデータバッファからの要求パケットをハードウェアアクセラレータに転送するための“transfer_to_haccel(ps)”を呼び出す。
【0066】
43行−54行は、ハードウェアアクセラレータからのデータを有する応答パケットを受信するための2つの独立変数を有する値を戻さない“receivePacket”関数、すなわち、ボイド関数“receivePakcet(int ds,uint*data)”を宣言する。ここで、“ds”は、応答パケット内のビットの総数であり、“data”は、応答パケットのデータビットを保持する位置に対する指示である。45行は、5、“sizeId”の値及び“ds”の値を加算することによって応答パケットのビットの総数を計算し、それを変数“ps”に割り当てる。46行−51行は、ハードウェアアクセラレータからの有効応答パケットを読み出す“while”ループをコードする。47行は、ハードウェアアクセラレータからのパケットをホストワークステーション内のデータバッファに転送する“transfer_from_haccel(ps)”を呼び出す。48行は、データバッファからのパケットを“packetIn”によって指示されている位置にコピーする“copy_from_dbuff(ps,packetIn)”を呼び出す。49行は、パケットのTAG領域の値を抽出し、それを変数“tag”内に蓄積する“get_bits(packetIn,0,1,&tag)”を呼び出す。50行は、“tag”の値を、その前の“tag”を蓄積している“tagIn”の値と比較し、両者の値が異なって、受信したパケットが新しく有効であることを意味している場合には、“while”ループを抜け出す。そうでない場合には、47行−50行の動作が繰り返される。52行は、新しい“tag”の値を“tagIn”に蓄積する。53行は、応答パケットのDATA領域内のデータビットを抽出し、それらを“data”変数によって指示されている位置に蓄積する“get_bits(packetIn,5+sizeId,ds,data)”を呼び出す。
【0067】
図18は、4つの関数(writeReg,readReg,writeMem及びreadMem)のコードリストである。60行−63行は、3つの独立変数を有する値を戻さない“writeReg”関数、すなわち、ボイド関数“writeReg(uint rid,int ds,uint data)”を宣言する。ここで、“rid”は、目標レジスタIDであり、“ds”は、書き込むデータビットの数であり、“data”は、書き込むデータビットを保持する。“writeReg”関数は、62行において、書き込むためのデータビットを有するRWコマンドパケットを送信する“sendPacket(CMD_WR,0,rid,ds,data)”を呼び出す。65行−69行は、3つの独立変数を有する値を戻さない“readReg”関数、すなわち、ボイド関数“readReg(uint rid,int ds,uint data)”を宣言する。ここで、“rid”は、目標レジスタIDであり、“ds”は、読み出すビットの数であり、“data”は、目標レジスタから読み出されるデータビットを保持する。“readReg”関数は、67行において、データを有していないRRコマンドパケットを送信する“sendPacket(CMD_RR,0,rid,0,NULL)”を呼び出し、68行において、目標レジスタからデータビットを読み出す“receivePacket(ds,data)”を呼び出す。
【0068】
71行−80行は、6つの独立変数を有する値を戻さない“writeMem”関数、すなわち、ボイド関数“writeMem(uint mid,int as,uint start,int nw,int ds,uint*data)”を宣言する。ここで、“mid”は、目標メモリIDであり、“as”は、メモリアドレスビットの数であり、“start”は、スタートメモリアドレスであり、“nw”は、書き込むメモリワードの数であり、“ds”は、メモリワード当たりのビットの数であり、“data”は、書き込むメモリワードを保持するアレイ(array)に対する指示である。“writeMem”関数は、74行において、目標メモリID及びスタートメモリアドレスを有するSWMコマンドを送信する“sendPacket(CMD_SWM,0,mid,as,start)”を呼び出す。75行において、初期値「0」を変数“end”に設定した後、“writeMem”関数は、書き込むメモリワードの数に対して、77行−78行での動作を繰り返すために、76行−79行において“for”ループを実行する。77行は、i番目の繰返しが最後である場合に、値「1」を変数“end”に設定する。78行は、データアレイのi番目の要素からのメモリワードを有するWMコマンドを送信する“sendPacket(CMD_WM,0,end,ds,data[i])”を呼び出す。
【0069】
82行−92行は、6つの独立変数を有する値を戻さない“readMem”関数、すなわち、ボイド関数“readMem(uint mid,int as,uint start,int nw,int ds,uint*data)”を宣言する。ここで、“mid”は、目標メモリIDであり、“as”は、アドレスビットの数であり、“start”は、スタートメモリアドレスであり、“nw”は、読み出すメモリワードの数であり、“ds”は、メモリワード当たりのビットの数であり、“data”は、目標メモリから読み出されるメモリワードを保持するアレイに対する指示である。“readMem”関数は、85行において、目標メモリID及びスタートメモリアドレスを有するSRMコマンドを送信する“sendPacket(CMD_SRM,0,mid,as,start)”を呼び出す。86行において、初期値「0」を変数“end”に設定した後、“readMem”関数は、読み出すメモリワードの数に対して、88行−90行での動作を繰り返すために、87行−91行において“for”ループを実行する。88行は、i番目の繰返しが最後である場合に、値「1」を変数“end”に設定する。89行は、目標メモリからのi番目のメモリワードを読み出すRMコマンドを送信する“sendPacket(CMD_RM,0,end,ds,data[i])”を呼び出す。90行は、i番目のメモリワードを受信し、それをデータアレイのi番目の要素に蓄積する“receivePacket(ds,&data[i])”を呼び出す。
【0070】
要するに、機能検証を受けるユーザー設計のメモリ及びレジスタへの非常に改良されたアクセスを有するハードウェア支援検証システムが提供される。ある実施の形態では、目標DUV内のレジスタ及びメモリにデータをロードするため及びデータをアンロードするために、ホストワークステーションとハードウェアアクセラレータとの間でのデータ転送を実行するパケット基準のプロトコルを用いる。プロトコルは、コンパイル時に目標DUV内のレジスタ及びメモリのサイズパラメータとともに統合され、作動時に目標DUVと共にシミュレートされるプロトコルインターフェース論理と協同する。統合されるプロトコルインターフェース論理は、ホストワークステーション上で動作する検証制御プログラムからの要求パケット内にエンコードされる要求コマンドをデコードし、それを実行する。要求コマンドが読出コマンドである場合には、応答パケット内のデータは、ホストワークステーションに送信される。
【0071】
本発明の例示の実施の形態では、図2A及び2Bに示されているように、3つのレジスタと2つのメモリを有する例示のDUVについて詳細に説明したが、当業者には、本発明の精神の範囲内で修正や置換を行うことできることがわかる。このように、好ましい方法及び装置が説明されているが、当業者に明らかなように、前述した本発明の概念から逸脱しない範囲で、種々の実施の形態及び応用が可能である。したがって、本発明は添付の請求項の精神以外に限定されない。
【図面の簡単な説明】
【図1】
検証下の例示の設計あるいは例示のDUVのために統合されるプロトコルインターフェース論理を示す主要システムのブロック図である。
【図2A】
プロトコルインターフェース論理と結合される例示のDUV内のレジスタブロックのブロック図である。
【図2B】
プロトコルインターフェース論理と結合される例示のDUV内のメモリブロックのブロック図である。
【図3】
プロトコルインターフェース論理のパケットI/Oブロックの詳細ブロック図である。
【図4】
プロトコルインターフェース論理のメモリアドレスブロックの詳細ブロック図である。
【図5】
プロトコルインターフェース論理の読出データブロックの詳細ブロック図である。
【図6】
プロトコルインターフェース論理によって扱われるプロトコルコマンドのチャート図である。
【図7】
プロトコルインターフェース論理のコマンドデコードブロックの詳細ブロック図である。
【図8】
プロトコルインターフェース論理の状態及び状態遷移を示す図である。
【図9】
プロトコルインターフェース論理の状態制御ブロックの詳細ブロック図である。
【図10】
プロトコルインターフェース論理の読出/書込制御ブロックの詳細ブロック図である。
【図11A】
プロトコルインターフェース論理内のレジスタ書込コマンドの実行のタイムチャート図である。
【図11B】
プロトコルインターフェース論理内のレジスタ読出コマンドの実行のタイムチャート図である。
【図11C】
プロトコルインターフェース論理内のメモリ書込コマンドの実行のタイムチャート図である。
【図11D】
プロトコルインターフェース論理内のメモリ読出コマンドの実行のタイムチャート図である。
【図12】
プロトコルインターフェース論理を発生するためのコンパイル時間ステップのフローチャート図である。
【図13】
プロトコルインターフェース論理のためのプロトコル領域サイズの計算の詳細フローチャート図である。
【図14】
プロトコルインターフェース論理の構成要素の構成の詳細フローチャート図である。
【図15】
プロトコルインターフェース論理を有するDUVのシミュレーションのための実行動作のフローチャート図である。
【図16】
プロトコルインターフェース論理を有する動作を説明するために用いられる定数、変数及び関数の定義及び宣言のコードリストである。
【図17】
プロトコルインターフェース論理にパケットを送信するため及びプロトコルインターフェースからのパケットを受信する関数コードリストである。
【図18】
プロトコルインターフェース論理を有する、書込レジスタ、読出レジスタ、書込メモリ及び読出メモリに対する関数コードリストである。
【符号の説明】
10 ホストワークステーション
11 制御プログラム
13、21 データバッファ
20 ハードウェアアクセラレータ
30 検証下の設計(DUV)
31、33 DUV論理
40 プロトコルインターフェース論理
41 パケットI/Oブロック
42 状態制御ブロック
43 コマンドデコードブロック
44 読出/書込制御ブロック
45 メモリアドレスブロック
46 読出データブロック
Claims (10)
- ユーザー設計内のメモリ及びレジスタへの読み出し及び書き込に対する良好なアクセスを許容するためにユーザ設計をコンパイルする方法であって、
ユーザー設計内の全てのメモリ及びレジスタを識別するステップと、
メモリ及びレジスタへのアクセスポートを生成するアクセス可能論理をユーザー設計内に統合するステップと、
を有している。 - 請求項1に記載の方法であって、更に、ユーザー設計内の各メモリ及びレジスタにユニークな識別子を割り当てるステップを有している。
- 請求項2に記載の方法であって、前記アクセス可能論理は、前記ユニークな識別子を受信し、ユーザー設計内のメモリ及びレジスタの所定の1つを選択するように構成されている選択論理を有している。
- 請求項3に記載の方法であって、前記アクセス可能論理は、ユーザー設計内のメモリ及びレジスタの前記所定の1つから読み出し及び1つに書き込むための論理を有している。
- 請求項4に記載の方法であって、前記アクセス可能論理は、ホストからのコマンドを受信し、ユーザー設計内のメモリ及びレジスタに対するデータの読み出し及び書き込みの実行を制御するデコード論理を有している。
- ハードウェアアクセラレータと通信するホストワークステーションを有し、目標設計を検証するためのハードウェア支援検証システムであり、目標設計は、レジスタ及びメモリを有し、ホストワークステーションは、レジスタ及びメモリにデータをロードしあるいはデータをアンロードするものであって、
論理回路内に統合されるプロトコル論理を有し、該プロトコル論理は、
前記ホストワークステーションと通信する入力パケットレジスタと、
前記ホストワークステーションと通信する出力パケットレジスタと、
目標設計内の所定の動作、レジスタあるいはメモリ位置を識別するために、前記入力パケットレジスタ内のコマンドをデコードするコマンドデコード論理と、
前記コマンドデコード論理でデコードされる書込コマンドのために、前記入力パケットレジスタ内に蓄積されているデータを、前記目標設計内の前記レジスタあるいはメモリ位置に書き込む書込コマンド実行論理と、
前記コマンドデコード論理でデコードされる読出コマンドのために、前記目標設計内の前記レジスタあるいはメモリ位置からデータを読み出し、前記データを前記出力パケットレジスタ内に蓄積する読出コマンド実行論理と、
前記目標設計内の前記レジスタ及びメモリをインターフェースするインターフェース論理と、
を有している。 - 請求項6に記載のハードウェ支援設計検証システムであって、前記プロトコル論理は、前記入力パケットレジスタからのデータが新しいか否かを決定し、コマンドのデコード及び実行の作動を制御する論理を含んでいる。
- ハードウェアアクセラレータを用いて機能検証を実行する際に、目標設計内のレジスタ及びメモリに対するアクセスを提供するために、パケット基準のプロトコル論理を統合する方法であって、
タグ、コマンド及びデータエンド領域を有する要求パケットの固定サイズを決定するステップと、
目標設計内に存在するレジスタの数を計数するステップと、
目標設計内に存在するメモリの数を計数するステップと、
前記要求パケットの最大識別領域サイズを決定するステップと、
目標設計内のレジスタの最大データビット数を決定するステップと、
目標設計内のメモリの最大データビット数を決定するステップと、
目標設計内のメモリの最大アドレスビット数を決定するステップと、
前記要求パケットのデータ領域サイズを決定するために、レジスタデータ、メモリデータ及びメモリアドレスを目標設計に送信する最大ビット数を決定するステップと、
を有している。 - 請求項8に記載の方法であって、更に、
ハードウェアアクセラレータ内の入力データバッファに結合される入力パケットレジスタを生成するステップと、
ハードウェアアクセラレータ内の出力データバッファに結合される出力パケットレジスタを生成するステップと、
前記入力パケットレジスタ内のコマンドをデコードするコマンドデコードブロックを生成するステップと、
前記デコードブロックでデコードされるコマンドを実行する実行論理を生成するステップと、
前記目標設計内のレジスタ及びメモリをアクセスするインターフェース論理を生成するステップと、
を有している。 - 請求項9に記載の方法であって、更に、
目標設計内のメモリを識別するメモリ識別レジスタを生成するステップと、
アクセスのために現在メモリアドレスを提供するメモリアドレスレジスタを生成するステップと、
メモリ読出コマンドあるいはメモリ書込コマンドが実行された後に前記現在メモリをインクリメントするステップと、
パケット基準のプロトコル論理が非メモリモード、連続メモリ書込モードあるいは連続メモリ読出モードのいずれかにあることを示す限定状態マシンを生成するステップと、
連続メモリ動作が終了すると前記非メモリモードを選択し、連続メモリ書込動作が開始されると前記連続メモリ書込モードを選択し、連続メモリ読出動作が開始されると前記連続メモリ読出モードを選択する状態遷移制御を生成するステップと、
を有している。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US24240700P | 2000-10-20 | 2000-10-20 | |
US09/879,658 US7054802B2 (en) | 2000-10-20 | 2001-06-11 | Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading |
PCT/US2001/050388 WO2002063507A2 (en) | 2000-10-20 | 2001-10-19 | Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004519041A true JP2004519041A (ja) | 2004-06-24 |
Family
ID=26935074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002563381A Pending JP2004519041A (ja) | 2000-10-20 | 2001-10-19 | 効率的なデータロード及びアンロードのために統合されるパケット基準のプロトコル論理を用いるハードウェア支援設計検証システム |
Country Status (7)
Country | Link |
---|---|
US (1) | US7054802B2 (ja) |
EP (1) | EP1399858A2 (ja) |
JP (1) | JP2004519041A (ja) |
KR (1) | KR20030066641A (ja) |
CN (1) | CN1313957C (ja) |
CA (1) | CA2423824A1 (ja) |
WO (1) | WO2002063507A2 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITMI20010997A1 (it) * | 2001-05-16 | 2002-11-16 | Cit Alcatel | Metodi per testare il software di controllo di una apparecchiatura per telecomunicazioni dotata di un controllo di tipo distribuito |
US7401015B1 (en) * | 2001-06-17 | 2008-07-15 | Brian Bailey | Coherent state among multiple simulation models in an EDA simulation environment |
US7305633B2 (en) * | 2001-10-30 | 2007-12-04 | Mentor Graphics Corporation | Distributed configuration of integrated circuits in an emulation system |
US7120571B2 (en) * | 2003-06-16 | 2006-10-10 | Fortelink, Inc. | Resource board for emulation system |
US20050036502A1 (en) * | 2003-07-23 | 2005-02-17 | International Business Machines Corporation | System and method for handling multicast traffic in a shared buffer switch core collapsing ingress VOQ's |
US7706394B2 (en) * | 2003-07-23 | 2010-04-27 | International Business Machines Corporation | System and method for collapsing VOQ's of a packet switch fabric |
JP2005084956A (ja) * | 2003-09-09 | 2005-03-31 | Nec Corp | 論理回路の検証方法および検証システム |
US8060799B2 (en) * | 2004-06-11 | 2011-11-15 | Samsung Electronics Co., Ltd. | Hub, memory module, memory system and methods for reading and writing to the same |
US20060089829A1 (en) * | 2004-10-21 | 2006-04-27 | International Business Machines Corporation | Method and apparatus to efficiently access modeled memory in a logic simulation hardware emulator |
US8536664B1 (en) | 2007-04-16 | 2013-09-17 | DigitalOptics Corporation MEMS | MEMS device with integrated memory cells |
WO2010054871A1 (de) * | 2008-11-12 | 2010-05-20 | Siemens Ag Österreich | Verfahren zum testen von schaltungen und baugruppen mit programmierbaren logikbauteilen mittels fehlereinbringung |
KR101647817B1 (ko) | 2010-03-31 | 2016-08-24 | 삼성전자주식회사 | 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법 |
US10078356B2 (en) * | 2015-08-20 | 2018-09-18 | Intel Corporation | Apparatus and method for saving and restoring data for power saving in a processor |
US10628373B2 (en) * | 2015-12-01 | 2020-04-21 | Marvell International Ltd. | Systems and methods for transmitting an access request via a flexible register access bus |
CN105893036B (zh) * | 2016-03-30 | 2019-01-29 | 清华大学 | 一种嵌入式系统的兼容式加速器扩展方法 |
US9747396B1 (en) * | 2016-10-31 | 2017-08-29 | International Business Machines Corporation | Driving pervasive commands using breakpoints in a hardware-accelerated simulation environment |
US10816600B1 (en) * | 2017-11-28 | 2020-10-27 | Xilinx, Inc. | Protocol analysis and visualization during simulation |
US11295051B2 (en) * | 2018-03-13 | 2022-04-05 | Hcl Technologies Limited | System and method for interactively controlling the course of a functional simulation |
US20230206379A1 (en) * | 2021-12-28 | 2023-06-29 | Advanced Micro Devices, Inc. | Inline suspension of an accelerated processing unit |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5495482A (en) * | 1989-09-29 | 1996-02-27 | Motorola Inc. | Packet transmission system and method utilizing both a data bus and dedicated control lines |
US5477541A (en) * | 1989-09-29 | 1995-12-19 | White; Richard E. | Addressing technique for storing and referencing packet data |
US5546562A (en) * | 1995-02-28 | 1996-08-13 | Patel; Chandresh | Method and apparatus to emulate VLSI circuits within a logic simulator |
US5841967A (en) | 1996-10-17 | 1998-11-24 | Quickturn Design Systems, Inc. | Method and apparatus for design verification using emulation and simulation |
WO1999014891A2 (en) * | 1997-09-12 | 1999-03-25 | Communication & Control Electronics Limited | Development and test tools for communication system |
US6931572B1 (en) * | 1999-11-30 | 2005-08-16 | Synplicity, Inc. | Design instrumentation circuitry |
US6618839B1 (en) * | 1999-11-30 | 2003-09-09 | Synplicity, Inc. | Method and system for providing an electronic system design with enhanced debugging capabilities |
-
2001
- 2001-06-11 US US09/879,658 patent/US7054802B2/en not_active Expired - Fee Related
- 2001-10-19 CA CA002423824A patent/CA2423824A1/en not_active Abandoned
- 2001-10-19 CN CNB018209831A patent/CN1313957C/zh not_active Expired - Fee Related
- 2001-10-19 JP JP2002563381A patent/JP2004519041A/ja active Pending
- 2001-10-19 WO PCT/US2001/050388 patent/WO2002063507A2/en not_active Application Discontinuation
- 2001-10-19 KR KR10-2003-7005426A patent/KR20030066641A/ko not_active Application Discontinuation
- 2001-10-19 EP EP01271071A patent/EP1399858A2/en not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
CN1543618A (zh) | 2004-11-03 |
CA2423824A1 (en) | 2002-08-15 |
WO2002063507A2 (en) | 2002-08-15 |
US7054802B2 (en) | 2006-05-30 |
WO2002063507A3 (en) | 2004-01-08 |
US20020049578A1 (en) | 2002-04-25 |
EP1399858A2 (en) | 2004-03-24 |
CN1313957C (zh) | 2007-05-02 |
KR20030066641A (ko) | 2003-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004519041A (ja) | 効率的なデータロード及びアンロードのために統合されるパケット基準のプロトコル論理を用いるハードウェア支援設計検証システム | |
US7146300B2 (en) | Method of co-simulating a digital circuit | |
US5771370A (en) | Method and apparatus for optimizing hardware and software co-simulation | |
US7769577B2 (en) | Hardware accelerator with a single partition for latches and combinational logic | |
US7805638B2 (en) | Multi-frequency debug network for a multiprocessor array | |
US7865346B2 (en) | Instruction encoding in a hardware simulation accelerator | |
JPH07334384A (ja) | 多重プロセッサ・エミュレーション・システム | |
US6691287B2 (en) | Functional verification system | |
US7437282B2 (en) | Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator | |
US6567962B2 (en) | Method, apparatus, and program for multiple clock domain partitioning through retiming | |
JP2002358340A (ja) | 論理エミュレーションに使用される回路、その回路を備える論理基板、論理エミュレータ及び、論理エミュレーションにおける通信方法 | |
JP5146451B2 (ja) | ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置 | |
JPH04233040A (ja) | コンピュータプログラム実行シミュレーションシステム | |
US7131099B2 (en) | Method, apparatus, and computer program product for RTL power sequencing simulation of voltage islands | |
US6470480B2 (en) | Tracing different states reached by a signal in a functional verification system | |
JP2001256048A (ja) | データ処理装置のシミュレーション | |
US6480988B2 (en) | Functional verification of both cycle-based and non-cycle based designs | |
Appleton et al. | Two-phase asynchronous pipeline control | |
US20020120907A1 (en) | Run-time controller in a functional verification system | |
US7299425B2 (en) | Method and apparatus to create bypass logic in a digital circuit design | |
JP2755646B2 (ja) | データ駆動型データ処理装置 | |
EP0483965A2 (en) | Logic simulation | |
EP0449579A2 (en) | A logic simulation machine | |
van de Snepscheut | Reporting Period: 1 March 1991–31 October 1991 | |
JP2006338144A (ja) | プロセッサベースのエミュレーションシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040728 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070403 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070628 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070705 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071002 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071122 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080321 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080409 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20080409 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080519 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20080613 |