JP2007508638A - 特定用途向け集積回路設計の設計検証を高速化する方法及び装置 - Google Patents

特定用途向け集積回路設計の設計検証を高速化する方法及び装置 Download PDF

Info

Publication number
JP2007508638A
JP2007508638A JP2006535372A JP2006535372A JP2007508638A JP 2007508638 A JP2007508638 A JP 2007508638A JP 2006535372 A JP2006535372 A JP 2006535372A JP 2006535372 A JP2006535372 A JP 2006535372A JP 2007508638 A JP2007508638 A JP 2007508638A
Authority
JP
Japan
Prior art keywords
subroutine
clock
design
simulator
hardware
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.)
Withdrawn
Application number
JP2006535372A
Other languages
English (en)
Inventor
スタンレイ・エム・ハイデューク
スラヴォミル・グラボウスキー
Original Assignee
スタンレイ・エム・ハイデューク
スラヴォミル・グラボウスキー
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 スタンレイ・エム・ハイデューク, スラヴォミル・グラボウスキー filed Critical スタンレイ・エム・ハイデューク
Publication of JP2007508638A publication Critical patent/JP2007508638A/ja
Withdrawn legal-status Critical Current

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)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

フィールド・プログラマブル・ゲート・アレイ・デバイス(FPGA)などのリプログラマブル・デバイスを用いてソフトウェア・シミュレータの動作を高速化する方法及びシステムである。この方法及びシステムは、リプログラマブル・デバイスを用いて、特定用途向け集積回路(ASIC)のデジタル回路設計のエミュレーション及びプロトタイピングを行うようにしたものである。このシステムは、設計検証マネージャ・ソフトウェア・プログラムを備えており、このソフトウェア・プログラムは、クロック・ソースを探索するサブルーチン、クロック・ソースからクロック信号を受取っている同期要素を探索するサブルーチン、それに、クロック・ソースとかかる同期要素との間にエッジ検出回路を挿入するサブルーチンを含んでいる。この新規な方法は、基本クロックである設計クロックを、クロック・トリガ入力端子へ供給する替わりにクロック・イネーブル入力端子へ供給するようにし、また、その設計に含まれているその他全てのクロックに対して自動的に遅延させた新たなクロックを生成してクロック・トリガ入力端子へ供給することにより、クロック・タイミングに関する問題を解消できるようにしたものである。このシステムは、自動的なリターゲッティングによってASIC設計をリプログラマブル・デバイスに変換する際に、その変換後のリプログラマブル・デバイスが、ASICとFPGAとで互いにクロッキング・チェーンのタイミングが異なることから、複数のフリップフロップ及び複数のラッチを異なった時刻にトリガすることになるような場合に生じていた障害を解消するものである。

Description

本発明は、電子回路設計の設計検証に関し、より詳しくは、最新の回路設計の設計検証を高速化することに関するものであって、この高速化は、ソフトウェア・シミュレータの高速化と、フィールド・プログラマブル・ゲート・アレイ(FPGA)などのリプログラマブル・デバイスを用いた電子設計のエミュレーションとによってなされるものである。更に詳しくは、本発明は、一般的に、特定用途向け集積回路(ASIC)設計及びハイ・デフィニション・ロジック(HDL)設計を、特別の種類のリプログラマブル・デバイスに自動リターゲッティングすることによって高速化する検証に関するものである。
今日のASIC設計は、そのゲート数が数千万個にも達している。このような多数のゲートを備えたASIC設計の設計検証は、例えば、Cadence Design社の製品であるNC-Sim(登録商標)や、Synopsys 社の製品であるVCS Simulator(登録商標)、それに、米国、ネバダ州、ラスベガスに所在のAldec社の製品であるRiviera(登録商標)及びActive-HDL(登録商標)などのソフトウェア・シミュレータを用いて行われている。しかしながら、ASIC設計のゲート数が増大する速さは、コンピュータの演算速度が向上する速さをはるかに凌いでおり、そのため、ASIC設計の設計検証のための設計シミュレータの動作を更に高速化することが求められている。
この高速化のための1つの方策は、シミュレーションを、より高度に抽象化したレベルで行うようにするというものであり、そのようなシミュレータには、例えば、SystemC(登録商標)、Behavioral VHDL(登録商標)、SystemVerilog(登録商標)などがある。しかしながら、この種のシミュレータに必要とされる精緻なコンパイラは、高コストである上に、未だ開発途上にある。また、この種のシミュレータのパフォーマンス・ゲインは、最新の最大級規模のASICデバイスの設計検証を効率的に行えるだけの十分なものとはなっていない。
この高速化のためのもう1つの方策は、在来のシミュレータの動作を高速化するというものであり、これは、全般的にシミュレーションの替わりにエミュレーションを利用することによって行われる。そのようなアクセラレータないしエミュレータは、リプログラマブル・デバイスで構成され、Quickturn社及びIkos社によって製造されている。この種のものに付随する主たる短所は、設計の基本特性をリプログラマブル・デバイスによって再現するために、ASICのクロッキング・チェーンをFPGAデバイスで発生させるクロッキング・チェーンに変換する作業を、手作業で行わねばならず、そのために数百時間もの作業時間が必要とされることにある。
また、大規模デバイスとして構成されたASIC設計では、発熱量も大きな問題となっており、そのような設計では、フリップフロップやラッチどうしの間での全てのデータ転送を同期させるためのクロックが、1つのシステム・クロックではなく、20ないし40もの多数のクロックとなっている。リプログラマブル・デバイスにおけるゲート及びゲート配線の動作タイミングは、ASIC設計におけるゲート及びゲート配線の動作タイミングとは異なるため、ASIC設計の特性をリプログラマブル・デバイスでエミュレートできるように、ASIC設計を高い信頼性をもって確実にリプログラマブル・デバイスに変換するには、高度の集中力と長い作業時間とが必要とされる。本発明の目的は、このASIC設計からリプログラマブル・デバイスへの自動的な変換を保証することにある。
従って、本発明の1つの課題は、最新の非常に大規模なASIC設計の設計検証を高速化することにある。
本発明の別の1つの課題は、ASIC設計のシミュレーションを高速化することによって、非常に大規模なASIC設計の設計検証を高速化するシステム及び装置を提供することにある。
本発明の1つの課題は、ASIC設計からリプログラマブル・デバイスへの変換が自動的に行われるようにすることで、ASIC設計の機能上の設計検証を迅速に行えるようにすることにある。このことは、リプログラマブル・デバイスをASICデバイスと同一機能を果たすように動作させるための、ASICのクロッキング・チェーンからリプログラマブル・デバイスにおけるクロッキング・チェーンへの変換が、自動的に行われるようにすることによって、達成されるものである。
更に、本発明の別の1つの課題は、様々なフリップフロップ及びラッチのクロッキングに操作を加えることによって、様々なASIC設計を、ハードウェア・アクセラレータ、エミュレータ、及び様々なASICプロトタイピング装置によって、効果的に且つ容易に取り扱えるようにすることにある。
本発明の別の1つの課題は、回路設計ファイルの中の、クロック・ソースからクロック信号を受取っている同期要素を探索し、クロック・ソースとかかる同期要素との間にエッジ検出回路を挿入することにより、非常に大規模なASIC設計の設計検証を高速化するシステム及び装置を提供することにある。
本発明の別の1つの課題は、クロック・イネーブル入力端子を備えていない同期要素を探索し、クロック・イネーブル入力端子を備えている同期要素に置き換えることにより、ASIC設計の設計検証を高速化する方法及び装置を提供することにある。
本発明の更に別の1つの課題は、設計検証マネージング・ソフトウェアを備え、この設計検証マネージング・ソフトウェアが、同期要素の入力と非同期要素の出力との間の接続を解析して、それら入力の間にデータ・バッファを挿入するようにした、ASIC設計の設計検証のための方法及び装置を提供することにある。
本発明の更に別の1つの課題は、検証マネージャ・ソフトウェアが、クロック立下りエッジ駆動型の要素を探索して、クロック立下りエッジ駆動型の要素をクロック立上り駆動型の要素に置き換えるようにした、ASIC設計の設計検証のための方法及び装置を提供することにある。
本発明の更に別の1つの課題は、設計検証マネージャ・ソフトウェアが、ASIC設計ファイルを格納するメモリと、前記設計ファイルに処理を施すための設計検証マネージャ・ソフトウェアと、前記設計ファイルまたはその選択された部分をシミュレートするためのシミュレータ・ソフトウェアとを備えた、非常に大規模なASIC設計の設計検証のための装置及び方法を提供することにある。
本発明の更に別の1つの課題は、設計ファイルと、設計検証マネージャ・ソフトウェアと、シミュレーション・ソフトウェアと、シミュレータの動作を刺激するためのテストベンチ・ファイルとを格納しているコンピュータを備え、また更に、ハードウェア・アクセラレータを備えた、ASIC設計の設計検証を高速化するための方法及び装置を提供することにある。設計検証マネージャ・ソフトウェアは、複数の設計ファイルを、選択されたシミュレーション・ファイルと、選択されたハードウェア実行ファイルとに分類し、分類されたそれらファイルは、前記シミュレータの中の選択されたシミュレーション・ファイルと、前記ハードウェア・アクセラレータの中の選択されたハードウェア実行ファイルとにダウンロードされる。
本発明の目的は、ASICのシミュレーション及び検証を格段に高速化する、改良した方法及び装置を提供することにある。ここに開示する本発明は、シミュレータ及びハードウェア・アクセラレータを備えた環境で動作する、完璧なASIC設計の設計検証のための方法及び装置である。複数のASIC設計セクションのうちの一部はソフトウェア・シミュレータに処理させ、別の一部はハードウェア・アクセラレータに処理させている。ただし、それら複数の設計セクションの全てが、1つのユニットとして動作するようになっており、これは、シミュレータとアクセラレータとが、複数の信号線を介して緊密に相互接続されていることによるものである。
ASIC設計の設計データは、キーボードや、マウス・デバイスなどの、任意のデータ入力デバイスを介して入力される。或いはまた、図1に示したものと同様の構成の別のコンピュータ上において、オフラインでASIC設計を作成するようにしてもよく、そのようにしたものも本発明の範囲に含まれる。新たに作成されたASIC設計の設計ファイルは、ランダム・アクセス・メモリ(RAM)に一時的に格納され、また、コンピュータのハードディスクに永久的に格納される。
データ入力デバイスは、シミュレータとアクセラレータとの間の通信リンクをセットアップするためにも用いられる。このセットアップは、設計検証マネージャ(DVM)に含まれている入出力(I/O)制御プログラム・サブルーチンに働きかけるものであり、このI/O制御プログラム・サブルーチンによって、設計シミュレータとハードウェア・アクセラレータとの間のデータの流れが制御される。また、ユーザは、このセットアップの一環として、シミュレータ及びアクセラレータのどのテストポイントを観察するのか、また、シミュレータのどの信号データにアクセラレータのどのテストポイントを刺激させるのか、それに、アクセラレータのどの信号データにシミュレータのどのテストポイントを刺激させるのかについて、DVMに指示を与えることができる。
シミュレータとターゲット・ハードウェア内の複数の設計セクションの間では、通常、何百もの信号がやり取りされるため、それら各方向に転送される全ての信号を一旦格納して、適切なタイミングでシミュレータ及び/またはターゲット・ハードウェアへ供給するためのバッファが必要とされる。シミュレータとハードウェア・アクセラレータとの間の信号データ転送は、32ビットの周辺機器インターフェース(PCI)を介して行うため、全てのデータを32ビットのデータ・セグメントに区切るようにしている。ただし、64ビットのPCIを使用する場合には、64ビットに区切るようにすればよい。更に、このデータ転送は、ユニフォーム・シリアル・バス(USB)又はイーサネット(登録商標)・バス、又は同様にその他のバスを介して行うようにしてもよい。ターゲット・ハードウェアからシミュレータへ供給される信号を格納するバッファを、入力信号バッファと呼ぶ。例えば、ターゲット・ハードウェアからシミュレータへ供給される信号の数が80であるならば、通常、入力バッファ内のデータは、3個の32ビット・ワードから成るものとする。同様に、シミュレータからターゲット・ハードウェアへ供給される信号の数が100であるならば、出力バッファは、4個の32ビット・レジスタを組み合わせたものとすればよい。また、ハードウェア・アクセラレータは、全ての信号が同時に供給されることを必要とするため、出力バッファは、2組のバッファから成るものとする必要がある。第1組のバッファは、テンポラリ・バッファであり、シミュレータから供給されるデータを収集するものである。選択されたテストベクターに対応した全ての信号がこのテンポラリ・バッファに格納されたならば、クロックの1つのエッジが発生したときに、それら信号を一斉に、ターゲット・ハードウェアを直接的に駆動するバッファである「ドライバ・バッファ」へ転送する。
入力信号バッファは、ターゲット・ハードウェアにおいて生成された複数の信号を、設計シミュレータへ供給するためのバッファである。設計シミュレータは、更に、I/Oプログラム・サブルーチンを起動して、このシミュレータの制御下にあるメモリ・ロケーションから、ハードウェア・アクセラレータを制御する出力信号バッファの中の対応するチャネルへ、信号データを送出させることもできる。出力信号バッファは、複数の信号線を介してターゲット・ハードウェアへ、それらデータを供給する。このデータ転送は、1回のシミュレーション・サイクルの完了によって起動される。
ターゲット・ハードウェアがプロセッサを含む場合には、そのターゲット・ハードウェアが割込信号を送出することによって、入力バッファからデータを読み込むようシミュレータに指示する。割込信号を送出するという方法に替えて、信号スキャンを行うという方法を用いることも可能であるが、この方法は動作速度がより遅いため、推薦されない。ターゲット・ハードウェアがプロセッサを含まない場合には、そのターゲット・ハードウェアの入力端子に接続されている信号線の信号遷移が発生してから、そのターゲット・ハードウェアが安定状態になるのに必要な所定の時間が経過した時点で、入力バッファからの読み込みが行われるようにすればよい。
ハードウェア・アクセラレータが割込信号を送出したならば、シミュレータ内のデータ入力プログラム・サブルーチンによって、入力信号バッファからRAMの対応するメモリ・ロケーションへのデータ転送が行われる。このデータ転送に続いて、1つのプログラム・サブルーチンによって、新たにロードされた複数の信号のデータと、それらデータがそれまでロードされていたメモリ・ロケーションに存在していた以前のデータとの間に、変化が生じているか否かがチェックされる。もし変化がなければ、シミュレータは何の動作もせず、データ入力プログラム・サブルーチンは、新たな割込信号が送出されるのを待つ。
一方、ターゲット・ハードウェアから供給されて読み込んだ新たなデータが、以前のデータと相違していたならば、プログラム・サブルーチンは、設計シミュレータの動作を開始させ、設計シミュレータはシミュレーション・ステップを実行して新たに受取ったデータに処理を施す。続いて、別のサブルーチンが、このシミュレータの複数の出力のモニタを開始して、それら出力が安定状態に達したか否かをチェックする。シミュレータの複数の出力が安定状態に達したならば、更に別のサブルーチンが、出力バッファへのデータ転送を開始し、それによって再び、ハードウェア・アクセラレータの動作が開始される。
本発明の上述した課題、効果、及び新規な特徴、並びにその他の課題、効果、及び新規な特徴については、以下の詳細な説明並びに添付図面を参照することにより、更に明瞭に理解することができる。
図1に示したのは、コンピュータ・システム1のブロック図であり、このコンピュータ・システム1は、リプログラマブル・デバイスを用いて、ASIC設計の設計検証及び自動的プロトタイピングを行えるようにしたものである。コンピュータ・システム1としては、例えばSun Microsystems社の製品であるSunBlade 1000(登録商標)などのような、ワークステーションを使用することもでき、また、例えばDell社や、Hwelett-Packard社をはじめとする様々なメーカーが製造しているパーソナル・コンピュータ(PC)を使用することも可能である。コンピュータ・システム1は、プロセッサ170、ランダム・アクセス・メモリ(RAM)171、ハードディスク・ストレージ172、データ入力デバイス173、それに、ディスプレイ、即ちモニタ180を備えている。データ入力装置173としては、様々な入力装置を使用することができるが、説明を簡明にするために、本明細書では多くの箇所で、データ入力装置173をキーボードと称している。
以上に加えて、コンピュータ・システム1は、コンピュータ・メモリ171に格納されたソフトウェア・シミュレータ4、プログラムにより設計セクションを構築することのできる1つまたは複数のリプログラマブル・デバイスで構成されたリプログラマブル・ハードウェア・アクセラレータ5、それに、設計検証マネージャ(DVM)ソフトウェア3を含んでおり、DVMソフトウェア3は、ASIC設計を、リプログラマブル・ハードウェア・アクセラレータ5内にインプリメントするのに適したフォーマットに変換するためのソフトウェアである。また、DVMソフトウェア3は、1つのデバイス・ファミリーに対応するように製作されたコンプレックス・プログラマブル・ロジック・デバイス(CPLD)及びFPGAの設計を、別のCPLDまたはFPGAのデバイス・ファミリーで動作する設計に変換する機能も備えている。
シミュレータ4としては、例えばCadence Design社の製品であるNC-Sim(登録商標)や、米国、ネバダ州、ラスベガスに所在のAldec社の製品であるActive-HDL(登録商標)のような、広く一般的に用いられているシミュレータのうちの適当なものを使用することができる。ハードウェア・アクセラレータ5としては、Alatek Sp. zo.o.社のハードウェア・エンベッデッド・シミュレーション(HES)製品などを使用することができる。また、DVM3としては、Alatek社の製品を使用することができ、このDVM3は、HDL及びネットリストの設計を、例えばXilinx社の製品であるVirtex II(登録商標)や、Altera社の製品であるStratix(登録商標)などのようなフィールド・プログラマブル・デバイスに適合させる機能を備えている。
ASIC設計は、1つ1つのASIC設計が、複数の設計ファイル2によって構成されている。それら複数の設計ファイル2は、DVM3に含まれている一連のソフトウェア・サブルーチンへ供給される。DVM3は、ユーザの操作に従って、供給された複数の設計ファイル2を、シミュレータ4に処理させる設計ファイルとハードウェア・アクセラレータ5に処理させる設計ファイルとに分類する。即ち、「設計ファイルを分類するサブルーチン」231(図13)が、信号線230を介して供給されてくるASIC設計の複数の設計ファイル2を、ユーザからの入力に応答して、選択されたシミュレーション・ファイル(ユーザがシミュレーション・ファイルとして選択した設計ファイル)233と、選択されたハードウェア実行ファイル(ユーザがハードウェア実行ファイルとして選択した設計ファイル)235とに分類する。選択されたシミュレーション・ファイル233は信号線232を介してRAMメモリ171に、また、選択されたハードウェア実行ファイル235は信号線234を介してこれもRAMメモリ171に、それぞれ格納される。更に、選択されたシミュレーション・ファイル233は信号線7を介してソフトウェア・シミュレータ4へ供給され、選択されたハードウェア実行ファイル235は信号線10を介してハードウェア・アクセラレータ5へ供給される。通常、ユーザは、少数の信号遷移しか含まないそれらの設計ファイルをシミュレータ4へ供給することによって、より高速でシミュレーションが行われるようにする。一方、通常のテストベンチ刺激ファイルによって多数の信号遷移が生成されるような設計ファイル2は、ハードウェア・アクセラレータ5へ送るようにする。Aldec社の製品であるRiviera(登録商標)や、Mentor Graphics社の製品であるModelSim(登録商標)などをはじめとして、大多数のソフトウェア・シミュレータ4は「プロファイラ」ソフトウェアを含んでおり、この「プロファイラ」ソフトウェアは、設計をスキャンして、複数の設計ファイル2のうちのどの部分が多くの信号遷移を発生し、どの部分が僅かな信号遷移しか発生しないかを判定することができる。
選択されたシミュレーション・ファイル233と、選択されたハードウェア実行ファイル235との間の直接的な相互作用を確保するために、「シミュレータからハードウェア・アクセラレータへデータが供給されるテストポイントを探索するサブルーチン」237と、「ハードウェア・アクセラレータからシミュレータへデータが供給されるテストポイントを探索するサブルーチン」241とが、信号線236及び240上に送出される設計ファイル233及び235を解析して、両者間のコモン信号であるテストポイントを判別するようにしている。より詳しくは、「シミュレータからハードウェア・アクセラレータへデータが供給されるテストポイントを探索するサブルーチン」237は、シミュレータ4のどのテストポイントが、ハードウェア・アクセラレータ5へデータが供給されるテストポイントであるかを判別する。そして、それに該当するテストポイントのリストを、信号線238を介して、選択されたハードウェア実行データベース(SHAデータベース)239へ供給する。同様に、「ハードウェア・アクセラレータからシミュレータへデータが供給されるテストポイントを探索するサブルーチン」241は、信号線240上に送出されるデータ(このデータには、選択されたシミュレーション・ファイル233及び選択されたハードウェア実行ファイル235が含まれている)を解析し、ハードウェア・アクセラレータ5の出力部からシミュレータ4の入力部へデータが供給されるテストポイントのリストを生成する。そして、「ハードウェア・アクセラレータからシミュレータへデータが供給されるテストポイントを探索するサブルーチン」241は、そのテストポイントのリストを、信号線242を介して、選択されたハードウェア実行データベース(HASデータベース)243へ供給する。
DVMソフトウェア3は、SHAデータベース239のデータに基づき、「データをテンポラリ・バッファへ転送するサブルーチン」221(図14)に、ハードウェア・アクセラレータ5を制御するための信号として、どの信号をテンポラリ・バッファ196(図12)へ転送すべきかを指示する。同様に、DVM3は、HASデータベース243に基づき、「入力信号バッファからの読み込みを行うサブルーチン」213(図14)を制御して、必要な信号データをシミュレータ4にロードさせる。以上を要約すると、シミュレータ4は、みずからの内部動作を完了したならば、ハードウェア・アクセラレータ5の動作を刺激する信号を送出する。一方、ハードウェア・アクセラレータ5は、みずからの動作が安定状態に達したならば、シミュレータ4の動作を制御する信号を送出する。この「ピンポン」のように行き来する動作が反復して実行され、この反復動作は、全てのテストベンチ181(図14)が、信号線182と、DVM3と、信号線7とを介してシミュレータ4の中へ供給されてしまうまで、或いは、信号線208上のデータが全てターゲット・ハードウェア190(図12)へ供給されてしまうまで続けられる。
DVMソフトウェア3は、図2のフローチャートの中に列挙した複数のサブルーチンで構成されている。「クロック・ソフトウェアを探索するサブルーチン」11は、信号線6上に送出される複数の設計ファイル2をスキャンして、設計クロック(ユーザ・クロックともいう)を探索し、そして、発見した設計クロックのネーム及びデータを、信号線12を介して「クロック探索データベース(第1データベース)」13へ送出する。「クロック・ソースを探索するサブルーチン」15は、信号線14上に送出される前処理が施された設計ファイル2(これには、設計クロックのリストが含まれている)を受取る。「クロック・ソースを探索するサブルーチン」15は、信号線14上に送出される設計ファイル2をスキャンして、クロック・ソースを探索し、そして、発見したクロック・ソースのリストを、信号線16を介して「クロック・ソース探索データベース(第2データベース)」17へ送出する。更に、クロックのリスト13及びクロック・ソースのリスト17は、信号線18上へも送出される。
本発明の基本を成しているのは、「クロック・ソース」と、「クロックに従属する入力端子」とを探索し、そして、発見したそれらに対して、然るべき回路変換処理即ち回路変換アルゴリズムを適用することである。ここでいうクロック・ソースとは、フリップフロップまたはラッチであって、他のラッチまたはフリップフロップのクロック入力端子を駆動するものをいう。例えば、図5のフリップフロップ82は「クロック・ソース」であり、なぜならば、このフリップフロップ82は、信号線93上に信号を送出し、送出された信号は、ゲート84、信号線95、ゲート85、及び信号線97を介して、フリップフロップ81のクロック入力端子へと供給されているからである。また、このフリップフロップ82は、信号線93、ゲート84、及び信号線95を介して、フリップフロップ83の同期D入力端子を駆動しているということからも、「クロック・ソース」に該当するものであるといえる。ゲート84やゲート85などのように、クロック出力を受取らない要素は、非同期要素と呼ばれる。このような非同期要素が、フリップフロップの駆動端子Dまたはクロック入力端子を駆動している場合には、そのことが原因となって、ある1つのデバイス・レイアウトから別の1つのデバイス・レイアウトへの回路の挙動が予測不可能なものとなるおそれがある。本発明は、回路動作におけるこのような非同期要素の影響を排除するものである。
「クロック・ソースを探索するサブルーチン」15は、フリップフロップ81及び83などのフリップフロップへ入力する非同期入力を解析して、フリップフロップ82が「クロック・ソース」であることを検出する。「クロック・ソースを探索するサブルーチン」15は、フリップフロップ81のC−クロック入力端子から、信号線97を逆にたどり、それによって、ゲート85の出力端子を発見する。続いて「クロック・ソースを探索するサブルーチン」15は、このゲート85の入力を調べる。そのために「クロック・ソースを探索するサブルーチン」15は、信号線95を逆にたどり、それによって、ゲート84を発見する。「クロック・ソースを探索するサブルーチン」15は、ゲート84の一方の入力端子に接続されている信号線93を解析し、それによってフリップフロップ82を発見し、そして、上述した定義に従って、そのフリップフロップ82が、「クロック・ソース」であることを宣言する。
「クロックで駆動される入力端子を備えている同期要素」とは、同期入力端子を備えているフリップフロップ及びラッチであり、例えば、フリップフロップ83は、そのD入力端子に「クロック・ソース」の信号線である信号線95が接続している。この信号線95が「クロック・ソース」の信号線であることは、それが「クロック・ソース」に接続されていることが「クロック・ソースを探索するサブルーチン」15によって発見されたことにより既に認識されている。そのため、この要素83は、「クロックで駆動される入力端子を備えている同期要素を探索するサブルーチン」19によって、クロックで駆動される入力端子を備えている要素であると識別される。「クロックで駆動される入力端子を備えている同期要素を探索するサブルーチン」19は、信号線18を介して供給される設計データに処理を施して、何らかの形で「クロック・ソース」に接続されている同期入力端子(例えばプリセット入力端子、リセット入力端子、イネーブル入力端子、或いはデータ入力端子)を識別し、そして、そのデータを「同期要素探索データベース(第4データベース)」184に格納する。更に、この「同期要素探索データベース」のデータは、設計ファイル2のデータ、クロック探索データベース13のデータ、及びクロック・ソース探索データベース17のデータと共に信号線22上へ送出される。
「クロック・ドメインを探索するサブルーチン」23は、信号線22上のデータを解析して、全ての同期要素を、その要素のクロック入力端子に接続している信号線に従って分類する。例えば信号線97はそのクロック名称に基づいて分類され、また信号線95はクロックに関連した信号線であることによって分類され、このように分類された各分類をクロック・ドメインという。クロック・ドメインに関する情報は、信号線181を介して、「クロック・ドメイン探索データベース(第4データベース)」184へ供給される。クロック・ドメインに関して要素を分類することが重要であるのは、そうすることにより、所与の1つのクロック・ドメインに所属する全ての要素を、ただ1つのエッジ検出回路によって駆動することが可能になるからである。
「クロック・ドメインを探索するサブルーチン」23は更に、ポジティブ・エッジによってトリガされる要素とネガティブ・エッジによってトリガされる要素とを分別し、それぞれを信号線26、24上へ送出する。
4つのデータベース(第1〜第4データベース)13、17、21、及び184は、設計者がそれらを参照可能なように構築されており、また、それら4つのデータベースは、例えばMicrosoft Word(登録商標)や、Active-HDL(登録商標)などの、適当なソフトウェアを用いることにより、コンピュータ1が、ディスプレイ即ちモニタ180上に表示できるようにしてある。
信頼性の高い動作を行わせるには、クロック信号によってトリガされる要素の全てが、同一のクロック・エッジによってトリガされるようにしておくのがよく、そのためには、ネガティブ・エッジ・トリガ型の要素は、全て、ポジティブ・エッジ・トリガ型の要素に変換しておく必要がある。「フリップフリップをポジティブ・エッジ・トリガ型のものに変換するサブルーチン」25は、信号線24上のデータを解析して、ネガティブ・エッジ・トリガ型の要素を、ポジティブ・エッジ・トリガ型の要素に置き換えるサブルーチンである。こうして置き換えられたポジティブ・エッジ・トリガ型の要素を示すリストが、信号線27上に送出される。尚、以上に説明したものでは、ポジティブ・エッジ・トリガ型の要素の方に揃えるようにしたものであったが、これとは逆に、ネガティブ・エッジ・トリガ型の要素の方に揃えるようにしたものも、当然、本発明の範囲に含まれる。
クロックを受取っている要素の、クロックで駆動される入力端子はいずれも、メイン・システム・クロック(MSC)のポジティブ遷移が発生する直前の時点で、安定状態にある必要があり、そのため、「分離用フリップフロップを挿入するサブルーチン」28によって、該当する要素の入力端子に、バッファ・フリップフロップ、即ち「分離用」フリップフロップが挿入される。バッファ・フリップフロップに該当するのは、例えば図6のフリップフロップ106であり、バッファ・フリップフロップは、システム・クロックのポジティブ遷移が発生する前にトリガされるようにしておく。例えば、図7に示したように、MSCクロックのネガティブ・エッジによって、バッファ・フリップフロップがトリガされることができる。
フリップフロップ82のようなクロック・ソースを制御するクロックは、エッジ検出回路を介することなしに、ユーザ・クロックCLKがそのまま供給されるようにすることが好ましい。そうするためには、例えば要素83iなどのように、クロックで駆動される入力端子を備えた要素には、フリップフロップ106のようなバッファが、その要素に入力する同期入力を安定化するために必要である。
本発明を構成する上での基本概念は、ASICデバイスからFPGAデバイスへの変換を行う際に、様々に異なったタイミングとなり得るユーザ・クロックCLKは、要素82などのクロック・ソースをクロックする目的にのみ使用して、その他の同期要素をクロックするためには一切使用すべきでないということにある。その替わりに、全てのユーザ・クロックCLKは、クロック・イネーブル(CE)信号として使用するようにしており、それによって、設計全体に含まれる全ての同期要素をトリガするために発生されるMSC信号70によって、それら要素をトリガできるようにしている。この概念を現実化するために、「CE入力端子を備えていない全てのフリップフロップをCE入力端子を備えているフリップフロップに置き換えるサブルーチン」が、信号線29を介して供給されるデータ・ファイルをスキャンして、どのクロック要素が「クロック・イネーブル(CE)入力端子」を備えていない要素であるかを識別している。「CE入力端子を備えていない全てのフリップフロップをCE入力端子を備えているフリップフロップに置き換えるサブルーチン」30は、該当する要素を、CE入力端子を備えていること以外はその要素と同等の要素に置き換えるサブルーチンである。例えば、図5に示した要素80、81、及び83は、このサブルーチン30によって、図6に示したように、CE入力端子を備えたフリップフロップである要素80i、81i、及び83iに置き換えられる。
ユーザ・クロック信号をクロック・イネーブル(CE)入力端子へ供給するには、ユーザ・クロック信号における信号遷移を、例えば図4のエッジ検出回路79のような「エッジ検出器」で検出して、CE入力端子へ供給する必要がある。このエッジ検出器の動作については、後に図4を参照して詳細に説明する。
「エッジ検出回路を挿入し、クロックをD入力端子に接続するサブルーチン」32は、信号線31を介して供給される前処理された設計のデータを受取り、その前処理された設計の中に「エッジ検出回路」を挿入して、同期要素のクロック・イネーブル入力端子へ、同期要素からのクロック入力の替わりに、ローカルすなわちユーザ・クロックが供給されるようにするものである。そして、それら同期要素(例えば要素81i)のクロック入力端子へ、システム・クロックであるMSC信号70が供給されるようにすることにより、それら同期要素の全てが、システム・クロックであるMSC信号70の同一のエッジ(立上りエッジまたは立下りエッジ)に応答できるようになる。
「全ての同期要素をMSCクロック70に接続するサブルーチン」34は、全てのクロックによりトリガされる要素を示したデータを信号線33を介して受取り、そして、MSCクロック信号をそれら要素のクロック入力端子に接続する。この時点での設計は、尚、ローカル・クロック(ユーザ・クロック)の立上りエッジと立下りエッジとのいずれにも応答する必要があり、そのため、「エッジ検出回路の出力を接続するサブルーチン」36が、信号線35を介して供給される設計のデータに応答して、エッジ検出回路から出力されるローカル・クロックの立上りエッジと立下りエッジとのいずれか一方を、選択された要素のCE入力端子に接続するようにしている。例えば、この「エッジ検出回路の出力を接続するサブルーチン」36(図2)が、そのように改造を加えた設計を、例えば、ハードウェア・エンベッデッド(HE)設計ファイルの形で信号線37上へ出力する。出力されたHE設計ファイルは、この信号線37を介して、ソフトウェア・サブルーチンである「プレース・アンド・ルート・サブルーチン」38へ供給される。このサブルーチン38は、例えば、Xilinx社の製品であるISE 5.1(登録商標)などであって、以上の改造が加えられた設計をダウンロード可能にするためのビット・ストリーム・ファイルを作成し、このビット・フォーマットとなったファイルを、信号線39を介してFPGAデバイス40へ送出する。
以下に、図面を参照して、図2のフローチャートに列挙した、DVM3に含まれる複数のサブルーチンの動作について、更に詳細に説明する。
図3に、出力信号線54及びゲート44を介してクロックCLKにより駆動される2つのクロック・ドメインを含む設計を示した。ゲート43及び44では、夫々に固有の時間遅れが生じるため、要素42は不適当なタイミングでトリガされるおそれがあり、そのため競合状態が発生するおそれがある。この競合状態を排除すべく、図2のフローチャートに示した複数のサブルーチンによって、図3の回路が図4の回路に変換される。「クロックを探索するサブルーチン」11は、クロックを探索することによって、信号線50及び54がクロック信号線であることを発見する。「クロック・ソースを探索するサブルーチン」15は、CLK端子47が外部ユーザ・クロック信号端子であること、並びに、信号線54上の信号が、信号線50上の外部ユーザ・クロック信号からゲート44が直接的に生成したユーザ・クロックであることを識別する。ゲート44が送出するクロックは信号線50上のユーザ・クロックであり、フリップフロップによって生成されたクロックではないため、ゲート44は、先にその定義を説明した本発明における「クロック・ソース」には該当せず、なぜならば、独立した「クロック・ソース」となり得るのは、フリップフロップとラッチとのいずれかに限られるからである。
本発明において採用されている定義によれば、「クロック・ソース」が存在している場合にのみ、「クロックで駆動される入力端子」を備えた要素の有無が問題となる。図3の回路では、「クロック・ソースを探索するサブルーチン」15は、「クロック・ソース」を発見しないため、「同期要素を探索するサブルーチン」19による「クロックで駆動される入力端子」の探索は行われない。
「クロック・ドメインを探索するサブルーチン」23は、フリップフロップ41、42が、ポジティブ・エッジ・トリガ型のフリップフロップであることを発見し、その情報を信号線26上へ送出する。一方、ネガティブ・エッジ・トリガ型のフリップフロップを示す情報が信号線24上へ送出されることはなく、なぜならば、サブルーチン23は、そのようなデバイスを、信号線22を介して供給される設計のデータ(図3)の中に発見しないからである。
「クロック・ドメインを探索するサブルーチン」23は、図3の回路の中に、2つの同期要素の夫々の入力端子を駆動する2つのクロックが存在していることを発見する。従って、そこには2つの「クロック・ドメイン」が存在しており、その一方は、信号線50を介して供給されるクロックCLKであり、他方は、信号線54を介して供給されるゲート44の出力信号である。信号線50及び54のようなクロック信号線に関して、もし1本のクロック信号線が2つ以上の入力端子に接続されている場合には、「クロック・ドメインを探索するサブルーチン」23が、各クロック・ドメインに所属する全ての要素を示すリストを作成する。図5においては、全ての要素がポジティブ・エッジ・トリガ型の要素であるため、「フリップフロップをポジティブ・エッジ・トリガ型のものに変換するサブルーチン」25を起動する必要はない。更に、図3においては、全てのフリップフロップがCE入力端子を備えているため、「フリップフロップを置き換えるサブルーチン」30によるCE型フリップフロップへの置き換えも実行されない。
「クロック・ドメインを探索するサブルーチン」23が、要素41及び42が同期要素であることを識別したため、「エッジ検出回路を挿入するサブルーチン」32が、それらの入力端子に夫々に「エッジ検出回路」78及び79を挿入する。MSC信号線70は、時刻t4の時点(図7)で、「エッジ検出回路」79のフリップフロップ67をセットしてその出力Qを論理状態「0」にする。また、時刻t5から、ゲート43及び44で生じる正の遅延に相当する時間が経過した時点で、ゲート68の出力が論理状態「1」になるため、それによってゲート62を介してフリップフロップ42のCE入力端子がイネーブルされる。時刻t6の時点では、MSC信号が、信号線70を介して要素42をトリガする。エッジ検出回路78の動作も、以上のエッジ検出回路79の動作と同様である。
「全ての同期要素をMSCクロックに接続するサブルーチン」34によって、MSC信号線70が要素41及び42の夫々のクロック入力端子に接続されているため、図4には共通する1本のクロック信号線70が示されている。要素41及び42は、ポジティブ・エッジによってトリガされるフリップフロップであるため、「エッジ検出回路の出力を接続するサブルーチン」36によって、エッジ検出回路78及び79の立上りエッジ72及び75が、それらに対応する同期要素41及び42の夫々のCE入力端子に接続されている。要素41及び42は夫々CEAイネーブル信号とCEBイネーブル信号とに接続されているため、ANDゲート60及び62が付加されている。ANDゲート60及び62はCEA及びCEBイネーブル信号と信号線72及び75上の信号の立上りエッジとの論理和を取るものである。図4は、図2のフローチャートに示した複数のソフトウェア・サブルーチンがどのように用いられて図3に示した設計が処理されるかについての具体例を示したものである。図3に示した設計と対比したときに、図4の設計では付加されているハードウェアは、クロック・スキュー及び競合状態を自動的に排除するためのものであり、それらを排除することで、設計検証スケジュールにおける数ヶ月もの短縮が可能になる。
図5に示した同期要素80、81、及び83は、いずれもCE入力端子を備えていないため、それら要素は、「CE入力端子を備えていない全てのフリップフロップをCE入力端子を備えているフリップフロップに置き換えるサブルーチン」30によって、図6に示したように、夫々、CE入力端子を備えている要素80i、81i、及び83iに置き換えられる。また、「クロック・ソースを探索するサブルーチン」15によって、要素82がクロック・ソースであることが認識されており、更に、要素83は、そのD入力端子に競合状態信号95が接続されているため、「分離用のフリップフロップを挿入するサブルーチン」28によって、「バッファ」即ち分離用のブリッジ部106が付加されている。このバッファ106は、信号線70上のMSC信号の否定信号によってトリガされるようにしてあり、そのため、フリップフロップ83iのD入力端子は、信号線70上のMSC信号にポジティブ・エッジが発生した時点でも安定状態にある。
フリップフロップが、フリップフロップ82のようなクロック・ソース要素であるならば、エッジ検出回路はそのようなフリップフロップ82には必要がない。
同期フリップフロップが、そのクロック入力端子に入力しているクロックのエッジに反応するのに対して、同期ラッチは、その「ゲーティング」入力端子に入力している電圧レベルに反応する。実用上の観点からは、ラッチのゲート・イネーブル(GE)入力端子はフリップフロップのCE入力端子と同一性質のものとみなすことができ、また、ラッチのゲート(G)入力端子はフリップフロップのクロック入力端子と同一性質のものとみなすことができる。そのため、DVMソフトウェア3は、フリップフロップ及びラッチに対して、同一の処理を施すものとしてある。それゆえ、図2に示したソフトウェア・サブルーチン11、15、19、23、24、25、28、及び30は、フリップフロップに対しても、ラッチに対しても、同じように動作する。
図8に示した回路設計は、2つのラッチ110及び111を含んでいる。それらラッチはゲート・イネーブル(GE)入力端子を備えていないため、それらラッチは、「CE入力端子を備えていない全てのフリップフロップをCE入力端子を備えているフリップフロップに置き換えるサブルーチン」30によって、夫々、GE入力端子を備えているラッチ110i及び111iに置き換えられる。ラッチは、みずからの「ゲーティング(クロッキング)」入力端子に入力している電圧レベルに反応するものであり、そのため、「エッジ検出回路を挿入するサブルーチン」32によって、ラッチ110iにはイネーブル・インバータ131が挿入され、ラッチ111iにはイネーブル・インバータ132が挿入される。インバータから成るイネーブル回路131及び132は、図8の回路設計では、電圧レベルによってトリガされるようになっている。これ以外の点に関しては、それらイネーブル回路131、132は、図4に示したエッジ・イネーブル回路と同様に動作するものとなっている。
場合によっては、2つ以上のラッチがシリアルに接続されていて、それらラッチの全てがクロック・ソースであるということもあり、その具体例を示したのが図10である。このようなラッチに該当するのはラッチ141及び142であり、それら2つのラッチは、独立クロック・ソースとして扱われ、図11に示したように、それらラッチに元々接続されていた信号線150によって駆動される。そのため、「クロック・ソースを探索するサブルーチン」15は、最初にラッチ141を発見した時点で探索を終了せずに、更に、そのラッチ142の入力端子が、そのラッチ141と同様の別のラッチ駆動要素に接続されていないかどうかを調べる。ラッチ141及び142がクロック駆動要素であるならば、それらラッチの入力端子には、イネーブル・インバータ131のようなイネーブル・インバータも、また、バッファ・ラッチ164のようなバッファ・ラッチも接続されていないはずである。ラッチ141及び142は、本来の入力信号によって直接駆動されるようにしておくことが重量であり、なぜならば、そうすることによって、可及的に早い時点で出力信号を発生させることができるからである。
DVM3は、ASIC設計の複数の設計ファイル2に対する処理を完了したならば、続いて、複数の選択された設計セクションを、信号線7を介してシミュレータ4の中へダウンロードし、それら設計セクションの機能特性のソフトウェア・シミュレーションを行わせる。複数の選択された設計セクションは、実際には、ASIC設計の複数の設計ファイル2が格納されているメモリ・ロケーションに存在しているのであるが、それらメモリ・ロケーションのアドレス権限及びコントロール権限が、DVM3から、シミュレータ4に含まれているソフトウェア・サブルーチンへ渡されるのである。図1にシミュレータ用の設計メモリ200を描き加えてあるのは、選択された設計セクションに対して、シミュレータ4が直接的に制御を行っていることを強調して示すためである。シミュレータ4は、シミュレータ用の設計論理メモリ200に格納されているシミュレートされた設計セクションに対して、信号線207を介して制御を行う。このシミュレータ用の設計論理メモリ200は、物理メモリであるRAM171に含まれている多くのメモリ・ロケーションにより構成されているものである。
DVM3は、以上に説明した、ASICからFPGAのネットリストへの自動変換プロシージャを通じて、残りの設計セクションを、信号線10を介してハードウェア・アクセラレータ5へダウンロードし、より詳しくは、その中の、好ましくはFPGAから成るターゲット・ハードウェア190へダウンロードする。信号線7及び10は、設計ファイル2の選択された設計セクションを、シミュレータ4及びハードウェア・アクセラレータ5へダウンロードするために用いられると共に、テストベンチ181などの刺激信号を供給するためにも用いられる。
テストベンチ181は、通常は、ユーザがキーボード173からの入力によって作成して、信号線179、プロセッサ170、及び信号線178を介してハードディスク172に格納されるものである。また、通常は、動作を高速化するために、テストベンチは一旦ローカルRAMにセーブされ、そこからシミュレータ4及びハードウェア・アクセラレータ5へ供給される。このため、テストベンチ181は、ハードディスク172から、信号線178、プロセッサ170、信号線175、及びDVM3を介して、メモリの中にダウンロードされ、またそのとき、DVM3のソフトウェア・サブルーチンのうち、「RAM171を制御してダウンロード動作を制御するサブルーチン」が、テストベンチ181を信号線182上へ送出する。こうしてメモリの中にダウンロードされたテストベンチ信号は、キーボード173から入力される指示によって、或いは、DVM3のサブルーチンのコマンドによって、信号線182を介して読み出され、読み出されたテストベンチ信号は、信号線176、プロセッサ170、及び信号線174を介して、シミュレータ4及びハードウェア・アクセラレータ5へ供給される。尚、信号線7及び10は、信号線176、プロセッサ170、及び信号線174の組み合わせによって代替することも可能である。
ハードウェア・アクセラレーション・プロセスは、シミュレータ4と、ハードウェア・アクセラレータ5と、それらに付属する信号線及びソフトウェア・サブルーチンとによって実行されるものであり、このプロセスについては、米国特許第5,479,355号公報(発明者:Hyduke、発行日:1995年12月26日)に詳細に記載されている。尚、同特許公報の開示内容はこの言及をもって本願開示に組込まれたものとする。更に、ソフトウェア・シミュレータの動作については、米国特許第5,051,938号(発明者:Hyduke、発行日:1991年9月24日)に詳細に記載されている。尚、同特許公報の開示内容もこの言及をもって本願開示に組込まれたものとする。これら特許公報に記載があるため、ソフトウェア・シミュレータ4の動作については、本明細書では詳細に説明するまでもない。尚、これら2件の特許公報において使用されている用語・名称を、本明細書でも使用している。
シミュレータ用の設計論理メモリ200へダウンロードされた上述した複数の選択された設計セクションを、図12に更に詳細に示した。それら複数の設計セクションは、RAM171内の様々な領域にロードされるため、図にはそれら設計セクションを、シミュレータ設計回路の第1回路〜第i回路として示した。
シミュレータ4及びハードウェア・アクセラレータ5に、設計セクションをロードしたならば、続いて、外部信号イベントを表している刺激信号を、シミュレータ4又はハードウェア・アクセラレータ5のいずれか一方へ供給する。例えば、シミュレータ4がUARTデバイスをシミュレートする場合には、そのUARTデバイスの入力端子に入力される種類の信号によって、シミュレータ4及びハードウェア・アクセラレータ5の中にロードされている複数の設計セクションにより構成された設計全体を刺激するようにし、これは、連結信号線8a〜8i、及び9a〜9nによって連結されていることによって行われる。同様に、ハードウェア・アクセラレータ5の中にロードされたUSBデバイスがその入力線を介してデータ・ファイルを受取ったならば、それによってハードウェア・アクセラレータ5の内部で動作がトリガされ、そして、信号線8a〜8i、及び9a〜9nを介して、シミュレータ4とアクセラレータ5の設計ブロックとの間で、一連のデータ交換が行われる。
ハードウェア・アクセラレータ5が非常に高速のクロック速度で動作するのに対して、シミュレータ4は比較的低速のソフトウェア・クロック速度で動作するため、ハードウェア環境とソフトウェア環境との両方のイベントの間の同期を取る必要がある。これに関して、図12に示したように、シミュレータ4からアクセラレータ5への信号の流れと、アクセラレータ5からシミュレータ4への信号の流れとを、別個に取扱うようにしている。
ハードウェア・アクセラレータ5の中核を成しているのは、プログラマブル・ターゲット・ハードウェア190であり、DVM3が信号線10を介してハードウェア・アクセラレータ5の中にダウンロードする複数の選択された設計セクションは、このプログラマブル・ターゲット・ハードウェア190の中に格納される。このターゲット・ハードウェア190へ供給される全ての信号193a〜193iは、同時に供給されなければならず、なぜならば、それら信号193a〜193iがランダムな順番で供給されたなら、ターゲット・ハードウェアの動作がランダムに発生してしまうからである。そのため、シミュレータ4が1回のシミュレーション・サイクルを完了して、その複数の出力をハードウェア・アクセラレータ5へダウンロードするときには、そのダウンロードを、2段階のステップで実行するようにしている。先ず、ダウンロードしようとするデータの複数のバイトないしワードは、数多くのクロック・サイクルに亘って「テンポラリ・バッファ」196の中にロードされる。そして、シミュレータ4の中には、このシミュレータ4からバッファ196へのデータ転送を制御するためのソフトウェア・サブルーチンが組込まれており、このソフトウェア・サブルーチンが信号線202上へ送出する信号に制御されて、そのデータの複数のワードがバッファ196の中に格納される。
ハードウェア・アクセラレータ5へ供給すべき全ての信号が、バッファ196内で更新されたならば、シミュレータ4の中の、このシミュレータ4からハードウェア・アクセラレータ5へのデータ転送を制御するためのソフトウェア・サブルーチンが、信号線203上に信号を送出することにより、テンポラリ・バッファ196からドライバ・バッファ194の中へデータが転送される。このデータ転送は、最短の時間で、また、複数のチャネルの間の「タイム・スキュー」が最小となるようにして、行われなければならない。通常、このスキューは1ナノ秒〜数ナノ秒程度の大きさとなる。
ハードウェア・アクセラレータ5の中の複数の設計セクションは、その複数の入力端子における全ての信号遷移に対して高速で反応し、それら信号遷移は、図示例において、信号線193a〜193iを介して供給される信号遷移である。通常、ターゲット・ハードウェア190は、信号線193a〜193iを介して新たな信号を受取ってから、数ナノ秒以内に、出力信号線197a〜197n上に安定状態で信号を送出する。従って、もしハードウェア・アクセラレータ5が、マイクロプロセッサや遅延線を含んでいない場合には、シミュレータ4は、信号線203上に信号を送出した後の最初のソフトウェア・クロック・サイクルにおいて、出力信号197a〜197nを読み取ることができる。図2に示した「プレース・アンド・ルート・サブルーチン」38は、ターゲット・ハードウェア190における最も長い経路遅延の長さを算出することができるため、ターゲット・ハードウェア190が信号線197a〜197n上に新たに送出したデータを、どれ程の時間が経過した後に、「ハードウェアのタイムアウトを調べるサブルーチン」211が読み込むべきかについてのアドバイス情報を、この「プレース・アンド・ルート・サブルーチン」38はシミュレータ4に供給することができる。この時間の長さは、シミュレータ4のクロック期間の何個分という表し方で表すことができる。
しかしながら、ターゲット・ハードウェア190が、マイクロプロセッサや、タイマや、遅延線を含んでいる場合には、読み込み検出回路205を装備する必要がある。1つのプロセッサが必要な動作を完了するたびに、また、1つの遅延時間が経過するたびに、また、1つのタイマがタイムアウトするたびに、ターゲット・ハードウェア190が信号線204上に信号を送出し、読み込み検出回路205が信号線206上に、シミュレータ4によって読み取られる割込信号を送出する。シミュレータ4は、信号線206上のこの割込信号に反応して、入力信号バッファ191からのデータの読み込みを行う。シミュレータ4がこのデータの読み込みを行っている間は、信号線197a〜197n上のデータは安定状態にあるため、入力信号バッファ191は、マルチプレクサで構成することが可能であり、その場合に、そのマルチプレクサが、シミュレータ4に制御されて、ターゲット・ハードウェア5における様々なテストポイントを選択するようにすればよい。
次に図13及び図14を参照して、シミュレータ4及びハードウェア・アクセラレータ5における設計ブロックの閉ループ動作について説明する。図13はDVM3に含まれている複数のソフトウェア・サブルーチンと、それらサブルーチンに関連した、シミュレータ4とアクセラレータ5との間で行われる閉ループ動作のセットアップとを示した図である。ソフトウェア・サブルーチンである「設計ファイルを分類するサブルーチン」231は、ユーザの操作に従って、ASIC設計の複数の設計ファイル2を、ソフトウェア・シミュレータでシミュレートするファイルと、ハードウェアで実行する設計ブロックを含む別のファイルとに分類する。「設計ファイルを分類するサブルーチン」231は、シミュレーションのために選択されたファイルである「選択されたシミュレーション・ファイル」を、信号線232を介して、好ましくはRAM171内に存在する「選択されたシミュレーション・ファイルのデータベース」233へ転送する。「設計ファイルを分類するするサブルーチン」231は、ハードウェアで実行するためのファイルとして選択されたファイルを、信号線234を介して、好ましくはRAM171内に存在する「選択されたハードウェア実行ファイルのデータベース」235に格納する。「選択されたシミュレーション・ファイルのデータベース」233の中の情報は、信号線7を介してシミュレータへ供給される。一方、「選択されたハードウェア実行ファイルのデータベース」235の中の情報に対しては、図2に示した、DVM3に含まれている一連のサブルーチンによって更なる処理が施される。
また、サブルーチン237によって、信号線236上の情報の解析が行われており、この信号線236上の情報は、シミュレータ4に現在何がロードされているか、ハードウェア・アクセラレータ5に次に何をダウンロードするか、それに、シミュレータ4の複数の出力信号のうちのどの出力信号が次にハードウェア・アクセラレータの入力信号線を駆動するかについてのデータを提供している。この情報は、信号線238を介してSHAデータベース239に格納される。このデータベース239は、RAM171内に構築することが好ましく、シミュレータ4のサブルーチンによって参照される。そして、シミュレータ4のソフトウェア・サブルーチンは、この情報に基づいて、シミュレータ4が「出力信号テンポラリ・バッファ」196へ送出し、そして、そこからドライバ・バッファ194へ転送されるデータの設定を行う。
「ハードウェア・アクセラレータからシミュレータへデータが供給されるテストポイントを探索するサブルーチン」241は、ハードウェア・アクセラレータ5の出力信号線から次に入力信号を受取るシミュレータ4内のテストポイントを識別する。この情報は、信号線242を介してHASデータベース243に格納される。HASデータベース243は、RAM171内に構築することが好ましい。このHASデータベース243内の情報に基づいて、信号線から「入力信号バッファ」191へデータが供給されると共に、バッファ191内の信号の配列が設定される。
シミュレータ4の中とハードウェア・アクセラレータ5の中とにロードされた複数の設計ブロックによって形成される閉ループ構成を、それに刺激を付与することによりアクティブにさせる方法の1つは、ターゲット・ハードウェア(図12)の信号線191上に送出する信号によるものであり、もう1つは、「テストベンチ・データベース」181が駆動する信号線182上の信号によるものである。ターゲット・ハードウェア190へ入力している信号線189上に刺激信号が送出されたならば、ターゲット・ハードウェア190は、その新たな入力条件をエミュレートして、信号線209上に出力信号を出力する。ターゲット・ハードウェア190がマイクロプロセッサを含んでいるものである場合には、「割込またはハードウェア・タイムアウト・サブルーチン」211が割込信号を発生するようにする。このサブルーチン211は、ハードウェアで構成することも、ソフトウェアで構成することもでき、また両者を組合せて構成してもよい。同様に、ターゲット・ハードウェア190がタイマや遅延線を含むものである場合にも、「割込またはハードウェア・タイムアウト・サブルーチン」211が、そのタイマや遅延線が動作を終了した時点で信号線212上に信号を送出するようにしておけばよい。一方、ターゲット・ハードウェアが、プロセッサや、タイマや、遅延線を含んでいない場合には、「割込またはハードウェア・タイムアウト・サブルーチン」211が、シミュレータ4の入力を制御するための制御信号をレジスタ191の中へダウンロードするようにし、そして、信号線190を介してデータを受取ったときからハードウェア・クロック・サイクル1回分または数回分の後に、信号線212上に信号が送出されるようにしておくことが好ましい。この信号線212上の信号は、「入力信号バッファ」191からデータを読み取ってよいことをシミュレータ4に知らせるものである。
「入力信号バッファからの読み込みを行うサブルーチン」213は、シミュレータ4に含まれている複数のソフトウェア・サブルーチンのうちの1つであって、バッファ191からデータを読み込んで、そのデータをRAM171内の適当なロケーションに格納するものであり、これらはシミュレータ4の制御下で行われる。この動作が完了したならば、シミュレータ4は信号線214上に信号を送出する。この信号線214上のデータに反応して、「入力信号に変化があったか否かを調べるサブルーチン」215が、シミュレータ4へのそれまでの入力信号のデータと、この新たな入力信号のデータとが相違しているか否かをチェックする。両者の間に相違があったならば、シミュレーション・サイクルを実行する。一方、バッファ191から供給された入力信号に変化がなかったならば、シミュレータ4は、シミュレーションを実行せず、ハードウェア・デバイスから新たな1組の入力信号228が入力してくるのを待つ。それら入力信号228は、信号線189を介してターゲット・ハードウェア190へ供給される新たなハードウェア信号である。
シミュレータ4は、「設計のシミュレーションを実行するサブルーチン」217によってシミュレーション・サイクルを実行した後に、信号線218上に、シミュレーション・データを送出する。このとき、「信号線上のデータが安定状態か否かを調べるサブルーチン」219が、シミュレーションが完了したか否かをチェックしている。シミュレーション・サイクルが完了したときに、この「信号線上のデータが安定状態にあるか否かを調べるサブルーチン」219は、テンポラリ・バッファ196へのデータ転送を制御する出力を送出する。このデータ転送は、コンピュータ1の内部バス構造に対応した32ビットまたは64ビットのワードによって行われるようにしておくのがよい。この出力信号テンポラリ・バッファ196へ転送される信号線222上のワードを、「全ての信号が転送されたか否かを調べるサブルーチン」223がモニタしており、この出力信号テンポラリ・バッファ196へ最後のデータ・ワードが転送されたならば、「全ての信号が転送されたか否かを調べるサブルーチン」223は、信号線224上にコマンドを送出し、このコマンドは、テンポラリ・バッファ196から、ターゲット・ハードウェアを直接制御している出力信号ドライバ・バッファ194へ、データを転送することを命じるコマンドである。そして、「ドライバ・バッファへのデータ転送を行うサブルーチン」225が、信号線203上に信号を送出することによって、出力信号テンポラリ・バッファ196から出力信号ドライバ・バッファ196へのダウンロードが実際に実行される。
シミュレータ4とハードウェア・アクセラレータ5とを組合せた以上の構成は、信号線182を介して供給されるテストベンチ信号181によって刺激されたならば、「設計のシミュレーションを実行するサブルーチン」217によって、設計のシミュレーションの1回のサイクルが実行される。このとき、「信号線上のデータが安定状態にあるか否かを調べるサブルーチン」219が、信号線218をモニタしており、そのシミュレーション・サイクルが完了したときに、その完了を認識して信号線220上に信号を送出する。この信号が送出されたときには、シミュレーション・データが、安定状態になっていて、ターゲット・ハードウェア190へ供給可能な状態になっている。これ以後、以上に説明したサイクルが反復される。
図面に示して本明細書において説明した実施の形態は、具体例を提示することを目的としたものであって、本発明はこの実施の形態に限定されるものではなく、本発明の範囲は特許請求の範囲に記載した通りのものである。
ハードウェア・アクセラレータを備え設計シミュレータを実行するコンピュータ・システムのブロック図である。 設計ファイルをASICアプリケーションからFPGAインプリメンテーションへ変換するための一連のソフトウェア・サブルーチンを列挙したフローチャートである。 2つのクロック・ドメインを含み競合状態を伴うASIC設計の典型例を示した図である。 2つのクロック・ドメインを単一のクロック・ドメインに変換した設計を示した図である。 複数のD型フリップフロップと2つのクロック・ドメインとを含み競合状態を伴う設計を示した図である。 単一クロック・ドメインに変換したD型フリップフロップを含む設計を示した図である。 クロック・タイミングを示したチャートである。 複数のラッチを含み競合状態を伴う回路設計のブロック図である。 複数のラッチを含み競合状態を排除した回路設計のブロック図である。 複数のラッチを含み競合状態を伴う別の回路設計を示したブロック図である。 複数のラッチを含み競合状態を伴う別の回路設計を示したブロック図である。 ハードウェア検証ブロックとソフトウェア検証ブロックとの間の接続を示したブロック図である。 設計ファイルをシミュレーション・ファイルとハードウェア・アクセラレータ・ファイルとに分類することを示したブロック図である。 シミュレータとハードウェア・アクセラレータとの間のデータ転送のための複数のサブルーチンを示したフローチャートである。

Claims (9)

  1. デジタル回路設計におけるクロック・スキュー及び競合状態を排除することでASIC設計の設計検証を高速化するシステムにおいて、
    コンピュータを備え、
    前記コンピュータはランダム・アクセス・メモリを有しており、
    前記ランダム・アクセス・メモリにはデジタル回路設計ファイルが格納されており、
    前記メモリに格納されている前記デジタル回路設計ファイルに処理を施すための設計検証マネージャ・プログラムを備え、
    前記設計検証プログラムは、
    前記デジタル回路設計ファイルの中のクロック・ソースを探索するための「クロック・ソースを探索するサブルーチン」と、
    前記「クロック・ソースを探索するサブルーチン」によって発見された前記クロック・ソースからクロック信号を受け取っている前記デジタル回路設計ファイルの中の同期要素を探索するための「同期要素を探索するサブルーチン」と、
    発見された前記クロック・ソースと前記同期要素との間にエッジ検出回路を挿入するための「エッジ検出回路を挿入するサブルーチン」とを含んでおり、
    以上によってデジタル回路設計の設計検証が高速化されるようにした、
    ことを特徴とするシステム。
  2. 前記設計検証マネージャは、「クロック・イネーブル入力端子を備えていない同期要素を探索し、クロック・イネーブル入力端子を備えていない同期要素をクロック・イネーブル入力端子を備えている同期要素に置き換えるサブルーチン」を含んでいることを特徴とする請求項1記載のシステム。
  3. 前記設計検証マネージャは、「前記同期要素の入力端子と前記同期要素の出力端子との間の接続を解析して前記同期要素の入力端子と前記同期要素の出力端子との間にデータ・バッファを挿入するサブルーチン」を含んでいることを特徴とする請求項1記載のシステム。
  4. 前記設計検証マネージャは、「クロックの立下りエッジにより駆動されるクロック立下りエッジ駆動型の要素を探索し、クロック立下りエッジ駆動型の要素をクロック立上りエッジ駆動型の要素に置き換えるサブルーチン」を含んでいることを特徴とする請求項1記載のシステム。
  5. 前記設計検証マネージャは、「クロックの立上りエッジにより駆動されるクロック立上りエッジ駆動型の要素を探索し、クロック立上りエッジ駆動型の要素をクロック立下りエッジ駆動型の要素に置き換えるサブルーチン」を含んでいることを特徴とする請求項1記載のシステム。
  6. デジタル回路設計をシミュレートするシステムにおいて、
    コンピュータを備え、
    前記コンピュータは設計ファイルを格納するメモリを有しており、
    前記メモリに格納されている前記設計ファイルに処理を施すための設計検証マネージャ・プログラムを備え、
    前記メモリに格納されている複数の設計ファイルを、またはそれら複数の設計ファイルのうちの選択された部分を、シミュレートするためのシミュレータ・プログラムを備え、
    前記シミュレータの動作を刺激するためのテストベンチ・ファイルを備え、
    前記コンピュータはハードウェア・アクセラレータを含んでおり、
    前記設計検証マネージャ・プログラムは、「設計ファイルを、選択されたシミュレーション・ファイルと、選択されたハードウェア実行ファイルとに分類するサブルーチン」を含んでおり、
    前記設計検証マネージャ・プログラムは、前記選択されたシミュレーション・ファイルを前記シミュレータにダウンロードし、前記選択されたハードウェア実行ファイルを前記ハードウェア・アクセラレータにダウンロードし、
    前記設計検証マネージャ・プログラムに含まれる「前記選択されたハードウェア実行ファイルの中のクロック・ソースを探索するサブルーチン」を備え、
    「クロック・ソースからクロック信号を受取っている、前記回路設計ファイルの中の、クロックで駆動される入力端子を備えている同期要素を探索するサブルーチン」を備え、
    「前記クロック・ソースと前記同期要素との間にエッジ検出回路を挿入するソフトウェア・サブルーチン」を備え、
    前記「クロック・ソースを探索するサブルーチン」、前記「同期要素を探索するサブルーチン」、及び前記「エッジ検出回路を挿入するサブルーチン」は、前記設計検証マネージャによって、前記選択されたハードウェア実行ファイルに対して動作し、
    以上によってデジタル回路設計の設計検証が高速化されるようにした、
    ことを特徴とするデジタル回路設計をシミュレートするシステム。
  7. 前記ハードウェア・アクセラレータは、
    ターゲット・ハードウェアと、
    テンポラリ・バッファと、
    ドライバ・バッファとを含んでおり、
    前記シミュレータは、
    「前記選択されたシミュレーション・ファイルの機能シミュレーションを実行するサブルーチン」と、
    「前記「機能シミュレーションを実行するサブルーチン」によって実行される選択されたシミュレーション・ファイルのシミュレーションの終了を検出するサブルーチン」とを含んでおり、
    前記ハードウェア・アクセラレータは、
    「前記テンポラリ・バッファへデータを転送するサブルーチン」と、
    「前記テンポラリ・バッファへのデータ転送の終了を検出するサブルーチン」と、
    「前記「前記テンポラリ・バッファへのデータ転送の終了を検出するサブルーチン」に応答して、前記テンポラリ・バッファから前記ドライバ・バッファへデータを転送するサブルーチン」とを含んでおり、
    前記ドライバ・バッファの複数の出力が、互いに略々同時に前記ターゲット・ハードウェアの複数の入力信号線に供給されるようにしてある、
    ことを特徴とする請求項6記載のデジタル回路をシミュレートするシステム。
  8. 前記ハードウェアは、
    入力信号バッファを含んでおり、
    前記シミュレータは、
    「入力信号バッファからの読み込みを行うサブルーチン」を含んでおり、該「入力信号バッファからの読み込みを行うサブルーチン」は、ハードウェア・アクセラレータから前記シミュレータへデータを読み込むためのサブルーチンであり、前記入力信号バッファは、前記ターゲット・ハードウェアの中の論理要素からの入力を格納するものであり、
    「ハードウェア・タイムアウト・サブルーチン」を含んでおり、該「ハードウェア・タイムアウト・サブルーチン」は、データ転送の終了の検出に応答する前記サブルーチンに応答するものであり、前記入力信号バッファから前記シミュレータへのデータの読み込みを実行し、このデータの読み込みは、好ましくは前記シミュレータの内部クロックを基準として定められる間隔で行われ、その間隔は前記シミュレータの内部クロックの1間隔から100分の1間隔までの範囲内の間隔である、
    ことを特徴とする請求項7記載のデジタル回路をシミュレートするシステム。
  9. 前記ハードウェア・アクセラレータは、
    読み込み検出回路と、
    入力信号バッファとを含んでおり、
    前記シミュレータは、
    「割込サブルーチン」と、
    「入力信号バッファからの読み込みを行うサブルーチン」とを含んでおり、該「入力信号バッファからの読み込みを行うサブルーチン」は、入力信号バッファから前記シミュレータへデータを読み込むためのサブルーチンであり、前記入力信号バッファは、前記ターゲット・ハードウェアの中の論理要素からの出力を格納するものであり、
    前記読み込み検出回路は、ターゲット・ハードウェアの内部の信号処理に応答して、該信号処理の完了時に割込信号を送出し、
    前記「割込サブルーチン」は、前記割込信号に応答して、前記入力信号バッファから前記シミュレータへのデータの読み込みを実行し、このデータの読み込みは、好ましくは即時に行われるものである、
    ことを特徴とする請求項7記載のデジタル回路をシミュレートするシステム。
JP2006535372A 2003-10-14 2004-10-14 特定用途向け集積回路設計の設計検証を高速化する方法及び装置 Withdrawn JP2007508638A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/686,022 US7003746B2 (en) 2003-10-14 2003-10-14 Method and apparatus for accelerating the verification of application specific integrated circuit designs
PCT/US2004/034196 WO2005038622A2 (en) 2003-10-14 2004-10-14 Method and apparatus for accelerating the verification of application specific integrated circuit designs

Publications (1)

Publication Number Publication Date
JP2007508638A true JP2007508638A (ja) 2007-04-05

Family

ID=34423234

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006535372A Withdrawn JP2007508638A (ja) 2003-10-14 2004-10-14 特定用途向け集積回路設計の設計検証を高速化する方法及び装置

Country Status (5)

Country Link
US (1) US7003746B2 (ja)
EP (1) EP1683007A4 (ja)
JP (1) JP2007508638A (ja)
CN (1) CN1867893A (ja)
WO (1) WO2005038622A2 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7207038B2 (en) * 2003-08-29 2007-04-17 Nokia Corporation Constructing control flows graphs of binary executable programs at post-link time
JP2005093563A (ja) * 2003-09-12 2005-04-07 Matsushita Electric Ind Co Ltd 半導体集積回路およびその設計方法
US7117143B2 (en) * 2003-12-11 2006-10-03 Fortelink, Inc. Clock distribution in a circuit emulator
TWI240531B (en) * 2003-12-24 2005-09-21 Inst Information Industry Multitasking system level system for Hw/Sw co-verification
US7370311B1 (en) * 2004-04-01 2008-05-06 Altera Corporation Generating components on a programmable device using a high-level language
US7409670B1 (en) * 2004-04-01 2008-08-05 Altera Corporation Scheduling logic on a programmable device implemented using a high-level language
US7243329B2 (en) * 2004-07-02 2007-07-10 Altera Corporation Application-specific integrated circuit equivalents of programmable logic and associated methods
US8073672B2 (en) * 2004-07-06 2011-12-06 Mentor Graphics Corporation Managing communication bandwidth in co-verification of circuit designs
US8036873B2 (en) * 2005-02-28 2011-10-11 Synopsys, Inc. Efficient clock models and their use in simulation
US7346863B1 (en) 2005-09-28 2008-03-18 Altera Corporation Hardware acceleration of high-level language code sequences on programmable devices
US20070266349A1 (en) * 2006-05-09 2007-11-15 Craig Jesse E Directed random verification
JP2008065640A (ja) * 2006-09-07 2008-03-21 Toshiba Corp シミュレーション装置およびそのシミュレーション制御方法
US7917882B2 (en) * 2007-10-26 2011-03-29 Mips Technologies, Inc. Automated digital circuit design tool that reduces or eliminates adverse timing constraints due to an inherent clock signal skew, and applications thereof
CN101441564B (zh) * 2008-12-04 2011-07-20 浙江大学 为程序定制的可重构加速器实现方法
BRPI1006739A2 (pt) * 2009-03-04 2017-06-13 Aaren Scientific Inc "método e aparelho para a geração de um mapa da córnea de um olho, método para determinação da clareza de visão de paciente, determinação da estrutura dos tecidos da região interior da córnea e determinação de um ajuste óptico para uma lente intra ocular personalizada para um paciente".
US8156457B2 (en) * 2009-09-24 2012-04-10 Synopsys, Inc. Concurrent simulation of hardware designs with behavioral characteristics
US8645117B2 (en) 2010-05-27 2014-02-04 Freescale Semiconductor, Inc. Clock simulation device and methods thereof
US9002693B2 (en) 2012-01-02 2015-04-07 International Business Machines Corporation Wire like link for cycle reproducible and cycle accurate hardware accelerator
US9471315B2 (en) 2012-03-16 2016-10-18 International Business Machines Corporation Run-time instrumentation reporting
US9483268B2 (en) 2012-03-16 2016-11-01 International Business Machines Corporation Hardware based run-time instrumentation facility for managed run-times
US9495490B2 (en) * 2012-07-16 2016-11-15 International Business Machines Corporation Active power dissipation detection based on erroneus clock gating equations
US10140413B2 (en) * 2015-04-21 2018-11-27 Synopsys, Inc. Efficient resolution of latch race conditions in emulation
US9747396B1 (en) * 2016-10-31 2017-08-29 International Business Machines Corporation Driving pervasive commands using breakpoints in a hardware-accelerated simulation environment
US10558477B2 (en) * 2016-11-16 2020-02-11 International Business Machines Corporation Array clocking in emulation
US11138089B2 (en) * 2018-12-19 2021-10-05 International Business Machines Corporation Performance benchmark generation
CN111967209B (zh) * 2020-08-21 2024-06-14 广芯微电子(广州)股份有限公司 一种soc仿真验证方法、装置及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475830A (en) * 1992-01-31 1995-12-12 Quickturn Design Systems, Inc. Structure and method for providing a reconfigurable emulation circuit without hold time violations
US5452239A (en) * 1993-01-29 1995-09-19 Quickturn Design Systems, Inc. Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system
US5579510A (en) * 1993-07-21 1996-11-26 Synopsys, Inc. Method and structure for use in static timing verification of synchronous circuits
US5649176A (en) * 1995-08-10 1997-07-15 Virtual Machine Works, Inc. Transition analysis and circuit resynthesis method and device for digital circuit modeling
US6301553B1 (en) * 1996-05-31 2001-10-09 Luc M. Burgun Method and apparatus for removing timing hazards in a circuit design
US6389379B1 (en) * 1997-05-02 2002-05-14 Axis Systems, Inc. Converification system and method
US6009256A (en) * 1997-05-02 1999-12-28 Axis Systems, Inc. Simulation/emulation system and method
US20030105617A1 (en) * 2001-12-05 2003-06-05 Nec Usa, Inc. Hardware acceleration system for logic simulation

Also Published As

Publication number Publication date
US20050081170A1 (en) 2005-04-14
EP1683007A2 (en) 2006-07-26
WO2005038622A3 (en) 2005-12-29
WO2005038622A2 (en) 2005-04-28
CN1867893A (zh) 2006-11-22
US7003746B2 (en) 2006-02-21
EP1683007A4 (en) 2011-07-06

Similar Documents

Publication Publication Date Title
JP2007508638A (ja) 特定用途向け集積回路設計の設計検証を高速化する方法及び装置
KR100483636B1 (ko) 에뮬레이션및시뮬레이션을이용한설계검증방법및장치
Coelho The VHDL handbook
JP4456420B2 (ja) ネットワークベースの階層エミュレーションシステム
US7475288B2 (en) Accelerated hardware emulation environment for processor-based systems
US20050131670A1 (en) Clock distribution in a circuit emulator
Ganapathy et al. Hardware emulation for functional verification of K5
EP1600865A1 (en) Dynamic programming of trigger conditions in hardware emulation systems
US7484196B2 (en) Method for asynchronous clock modeling in an integrated circuit simulation
US20120117413A1 (en) METHOD AND INFRASTRUCTURE FOR CYCLE-REPRODUCIBLE SIMULATION ON LARGE SCALE DIGITAL CIRCUITS ON A COORDINATED SET OF FIELD-PROGRAMMABLE GATE ARRAYS (FPGAs)
JP2002535684A (ja) 集積回路のリアルバージョンテストとシミュレートバージョンテストを行うシステム
US20090287468A1 (en) Event-driven emulation system
US7886244B2 (en) Driving values to DC adjusted/untimed nets to identify timing problems
US7822909B2 (en) Cross-bar switching in an emulation environment
KR100767957B1 (ko) 에뮬레이션과 시뮬레이션 정식검증을 혼용한 설계 검증 방법
US20020188432A1 (en) Circuit model generation and circuit model testing
KR20020069468A (ko) 초대규모급 설계 검증을 위한 하드웨어적으로 구현된대규모 디지털 시스템과 시뮬레이션을 이용하는 디버깅장치 및 이를 이용한 디버깅 방법
US11474844B1 (en) Emulator synchronization subsystem with enhanced slave mode
JP4205525B2 (ja) 並列シミュレーション装置および並列シミュレーション方法
US20040158443A1 (en) Functional verification using heterogeneous simulators
Tsasakou et al. High-level co-simulation based on the extension of processor simulators
JP2923893B1 (ja) ハードウェア論理シミュレーション装置
CN114868130A (zh) 用于仿真中的通信链路错误恢复的回滚
Tomko et al. Design Techniques to Implement Reconfigurable Hardware Watch-Points for Hardware/Software Co-Debugging
Tessier Rethinking Your Verification Strategies for Multimillion-Gate FPGAs

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080108