JP2004500609A - 多要素電子回路設計を検証するための装置および方法 - Google Patents
多要素電子回路設計を検証するための装置および方法 Download PDFInfo
- Publication number
- JP2004500609A JP2004500609A JP2000592759A JP2000592759A JP2004500609A JP 2004500609 A JP2004500609 A JP 2004500609A JP 2000592759 A JP2000592759 A JP 2000592759A JP 2000592759 A JP2000592759 A JP 2000592759A JP 2004500609 A JP2004500609 A JP 2004500609A
- Authority
- JP
- Japan
- Prior art keywords
- bus
- component
- target system
- model
- pin
- 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
- 238000013461 design Methods 0.000 title claims abstract description 104
- 238000000034 method Methods 0.000 title claims description 67
- 238000012795 verification Methods 0.000 claims abstract description 116
- 238000004891 communication Methods 0.000 claims abstract description 52
- 230000004044 response Effects 0.000 claims abstract description 20
- 238000012360 testing method Methods 0.000 claims description 50
- 238000007667 floating Methods 0.000 claims description 29
- 238000004088 simulation Methods 0.000 claims description 25
- 230000002457 bidirectional effect Effects 0.000 claims description 22
- 230000006399 behavior Effects 0.000 claims description 19
- 238000010200 validation analysis Methods 0.000 claims description 15
- 230000003542 behavioural effect Effects 0.000 claims description 12
- 239000000872 buffer Substances 0.000 claims description 9
- 238000004519 manufacturing process Methods 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 8
- 239000004020 conductor Substances 0.000 claims description 5
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000003278 mimic effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 238000005530 etching Methods 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 238000012942 design verification Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 206010017577 Gait disturbance Diseases 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- QWCRAEMEVRGPNT-UHFFFAOYSA-N buspirone Chemical compound C1C(=O)N(CCCCN2CCN(CC2)C=2N=CC=CN=2)C(=O)CC21CCCC2 QWCRAEMEVRGPNT-UHFFFAOYSA-N 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011981 development test Methods 0.000 description 1
- 238000004870 electrical engineering Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000005293 physical law Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- 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)
- Test And Diagnosis Of Digital Computers (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
複数のターゲットシステムバスによって相互接続される複数の構成要素を有するターゲットシステム(10)の設計を検証するための検証エンジン(60)が開示される。検証エンジン(60)は、ともに1つの構成要素として構成され、ハードウェアモデル入力/出力ピン(147、168)の集合を有する、第1ハードウェアモデル(70)および第2ハードウェアモデル(72)を備える。さらに、第1バスラッパー82は第1ハードウェアモデル(70)に接続され、第2バスラッパー(84)は第2ハードウェアモデル(72)に接続される。さらに、バスライン(110)の集合が、それぞれ第1バスラッパー(82)および第2バスラッパー(84)に接続される。システム制御装置(112)はバスライン(110)の少なくともいくつかに接続され、バスライン(110)によって各バスラッパー制御ブロックに、時間同期情報のシーケンスを送信するように適応されている。最後に、時間スロット番号(3)の所定の番号に応えて、制御ブロックの両方とも、第1ハードウェアモデル(70)からの少なくとも1つの入力/出力回線が第2ハードウェアモデル(72)の入力/出力回線に接続されるように、少なくとも1本の入力/出力ピンをバスライン(110)との通信連絡に切り替える。
Description
【0001】
本特許協力条約出願は、以下の4つの米国特許出願より優先順位を主張する。つまり、1999年1月6日に提出された出願番号第09/228,542号、ともに1999年6月18日に提出された出願番号第09/336,445号および第09/336,284号、ならびに1999年11月19日に提出された出願番号第09/443,175号である。
【0002】
(発明の背景)
本発明は、多くのマルチトランジスタ構成部品を含むターゲットシステム電子設計で開発用の試験を実行するための装置および方法に関連している。このような設計は、チップ実装システムまたはPC基板実装として実現できるだろう。
【0003】
IC設計の複雑度が高まるにつれて、各設計を検証するために要する時間も増す。典型的な現在の設計検証方法論での第1ステップとは、設計を多様な機能ブロックに分割してから、各ブロックを別個に設計し、検証することである。(「構成要素」とも呼ばれる)これらのブロックは、複雑度で50ゲートから10万ゲート以上であり、第1信頼順序までブロックを検証するには数時間から数日の間のコンピュータシミュレーション実行を要することがある。この用途の文脈では、用語「構成要素」はこの種のブロックを指す。
【0004】
しかしながら、これらのすでに検証されたブロックから構成されるターゲットシステム全体の性能を検証するという必要性により大きな課題が提示されている。ターゲットシステム設計は数百万ゲートを含むことがあるため、設計全体をシミュレーションするには、コンピュータ時間の1週間が必要とされる可能性がある。さらに、設計が変更されるたびに、新しいシミュレーション実行が実行されなければならず、設計プロセスを大幅に低速化する。加えて、ターゲットシステムシミュレーションは、電子ファイルフォーマット(「ネットリスト」)での完全な回路説明が使用できる場合にだけ実行することができる。将来は、ある会社が、該会社にとって固有であるいくつかの構成要素、およびターゲットシステム設計者により設計されるそれ以外の構成要素を含むターゲットシステムを製造することはますます典型的となるだろう。典型的には、会社に固有な構成要素にはネットリストは使用できないだろう。
【0005】
さらにプロセスを複雑化するのは、今日、大部分の電子システムが、それらがハードウェア構成要素と埋め込まれているソフトウェア構成要素の両方を含むという点で「埋め込みシステム」である。過去においては、境界線は比較的に単純であった。マイクロプロセッサがシステムのコアとして選ばれ、このプロセッサが特定用途向け集積回路(ASIC)およびその他のカスタム論理回路を含むその周辺環境に接続された。これが基本的なハードウェアシステムを完成させ、ソフトウェア開発のために試作品基板が構築され、使用された。速度が重大であったタスクの場合、生産と開発の両方で多大なコストがかかったが、カスタムハードウェアで実現できたソフトウェアルーチンがあった。今日、IC設計者は、以前はソフトウェアによって実行されていたハードウェア内の多くのタスクを実現し、このようにしてはるかに高速なシステムを作成する大型ICを製造する能力を備えている。このようなシステム内でのハードウェアの大半は特定のソフトウェアと作業するように設計されるため、これには、ハードウェアとソフトウェアの両方をいっしょに開発することが必要となる。残念なことに、ソフトウェア検証には、ハードウェア検証を行うより数桁多いシミュレーションパターンが必要となる。現在では、システムのハードウェア試作品が、典型的にはハードウェア設計の完了時に存在するまで、これらの検証試験を実行する手段はない。ハードウェアエラーがソフトウェア試験中に明らかにされると、それにより、最終化されたハードウェア設計に対する非常に高価な変更を取るか、あるいは面倒くさく、おそらくゆっくりとしたソフトウェアの回避策を講じるかの間で難しい決定を下すことが強制される。
【0006】
埋め込みシステム内に常駐するソフトウェアをデバッグするというタスクを容易にするために、多様な特別なソフトウェアツールが開発されてきた。これらのパッケージは、典型的には、マイクロセッサがアクセス可能である読取専用メモリアセンブリ内に常駐するROMモニタ構成要素を含む。マイクロプロセッサは、ブート時、ROMモニタ内の命令を使用して動作を開始する。別のデバッグパッケージ構成要素は、マイクロプロセッサのピンの何本かに接続される試験コンピュータ上に常駐する。試験コンピュータは、ROMモニタに対し、動作をROMモニタにジャンプさせるブレークポイントとともにマイクロコントローラ上で実行するソフトウェアプログラムをロードするように命令することができる。ROMモニタ命令により、マイクロコントローラCPUは、開発者に表示するために試験コンピュータに接続されるピンを通して指定されたレジスタの内容を送出する。現在では、すべてのハードウェア構成要素が完成され、システム全体が試験される準備ができるまでこの種のデバッグパッケージをその完全な効果まで使用することは、通常、不可能である。代わりに、デバッグパッケージは、ハードウェア構成要素がなくても使用できるだろう。言うまでもなく、これはソフトウェアとハードウェアの対話で発生する問題に遭遇しないだろう。このようなデバッグパッケージが初期に使用されると、システム全体が構築される前にソフトウェアをデバッグするためのその作業においてソフトウェア開発者にとって相当有益となるだろう。
【0007】
ターゲットシステム設計の検証時間を加速するために、多様な方法が使用されてきた。これらは、通常、以下の3つのカテゴリに該当する。つまり、ハードウェアモデラ、エミュレータ、およびシミュレーションアクセラレータである。
【0008】
ハードウェアモデラは、ターゲットシステムブロックの1つにネットリストが存在しないという前記に注記された問題のある状況に対処する。この状況では、ブロックの物理的な実施態様がICまたは外部で接合されたICコア(抽出され、コネクタピンを備えられたICの一部)という形で存在することが通常のケースである。ハードウェアモデラは、このような物理的な実施態様をシミュレーションモデル(「シミュレータ」)を実行しているコンピュータに接続するように設計される。残念なことに、単一のハードウェアもデラは単一の物理実施態様をシミュレータに接続するだけである。追加のハードウェアモデラによってシミュレータに追加の物理実施態様を接続することはできるが、2つの物理的な実施態様間の通信はシミュレータによって実現されねばならず、大幅にシステム性能を低速化するだろう。このため、ハードウェアモデラは、通常、複雑なシステムのシミュレーションプロセスを大幅に加速しない。
【0009】
少なくとも1つのカレントハードウェアモデラにより、ユーザは、モデラの中に挿入されるアダプタボード上に1つまたは複数の物理構成要素を設置できるようになる。このモデラもシミュレータに接続される。モデラにより、設計者は、アダプタボード上の構成要素をイベント駆動型シミュレーションに実装できるようになり、このようにしてネットリストを必要としなくとも構成要素の正確なモデルを入手する。残念なことに、それにも関わらず、物理実施態様間のすべてのコネクションはシミュレータを通過しなければならない。マイクロプロセッサは、ハードウェアモデラ内に設置されると、すべての通信がシミュレータを通して送られなければならないため、それはその目的のために有用であるにははるかに低速すぎるという点を除き、ハードウェア/ソフトウェア共同検証を実行するために使用できるだろう。
【0010】
1つの最近にリリースされた製品は、マイクロプロセッサICまたは外部に接合されたコアを採用し、それをイベント駆動型シミュレータに接続し、ハードウェアおよびソフトウェアの設計者がシステム設計検証中にコアプロセッサの本物のハードウェアモデルを使用できるようにするために、ソフトウェアデバッグツールを活用することを目標としている。しかしながら、この製品を用いて開発されているシステムの実行の全体的な速度は、常に、設計の主要な部分が存在するイベント駆動型シミュレータの速度によって制限されるだろう。これは、効果的なハードウェア/ソフトウェアシミュレーションには低速すぎるだろう。
【0011】
別の使用可能な製品は、システムレベルの高速試作解決策であることが意図される。製品は、事前に穿孔された穴があり、ICが取り付けられていない2つの試作品領域を有する一般試作基板から成り立っている。試作品領域とは、カスタマが、IC、またはプリント回路基板設計でのさまざまなビルディングブロックを表す利用者書き込み可能ゲートアレイ(FGPA)を設置するところである。両方の試作領域内のピンのすべては、固有のカスタムクロスバースイッチの集合を介して(任意のピンから任意のピンへ)送ることができる。これらのクロスバースイッチはプログラム可能であり、その結果送る際の誤りは容易に補正することができる。この製品は、ターゲットシステムの設計速度に近く実行でき、ハードウェア設計が完了した後のソフトウェア開発のために、あるいはシステムレベルの検証のために使用することができる柔軟な試作品の作成を容易にする。残念なことに、この製品とのソフトウェアデバッグツールまたはイベント駆動型シミュレータの統合がないため、それは開発段階中の容易なハードウェア/ソフトウェア共同検証を可能としない。さらに、システムが3つまたは4つ以上の構成要素を含むとき、この素子はかなり有用ではない。
【0012】
シミュレーションアクセラレータは、基本的には、シミュレーション実行時間を大幅に加速するカスタマイズされた並列処理コンピュータである。しかしながら、アクセラレータは、ネットリストが使用できないシステム構成要素に関して前記に注記された問題に対処しない。
【0013】
エミュレータは、作成されている設計をエミュレートするためにFPGAを使用する。ソフトウェアツールを使用すると、設計ネットリストは、FGPAのハードウェアエミュレーションセットの間で細分される。FGPAの相互接続セットは、FPGAのハードウェアエミュレーションセットを再構成できるように相互接続するために使用される。エミュレータは、他のシミュレーション方法より大幅に高速であるが、それらは設計ソースファイルのフォーマットに大きな制約を課し、大幅に拡張し、チップ上でシステムをエミュレートするのは困難である。
【0014】
新しいターゲットシステム設計方法論は、仮想構成要素(VC)の再利用に大いに依存するだろう。VCは、典型的には、FPGAロード可能符号化ファイルの形で開発者が利用できるだろう。加えて、契約会社は、VCをシリコン上にエッチングするためのホトリトグラフィマスクを含む、生産ツールのセットにアクセスするだろう。ターゲットシステムの中に実装される多様なVCを設計し、販売することから成り立つ新規事業分野が展開されている。実際のシステム設計は、通常、VCの集合体を使用し、通常複数の新しいカスタム設計ブロックを追加し、完全なシステムを作成する同期設計となるだろう。設計を中規模の設計ブロックに区分することは、設計者によって実行され、これらのブロックは2本から4本の標準バスによって相互接続されるだろう。
【0015】
電子設計に精通している者は、集積回路上で実現されなければならない複雑な設計の場合、概略図セットの作成が冗長なプロセスの第1歩にすぎないことを容易に認識するだろう。そこで、集積回路の物理レイアウトが決定されなければならない。特にシリコンの中にエッチングすることが物理的なレイアウトに対しいくつかの制約を課すことが考慮される場合には、これはときには困難なプロセスである。いったん設計が集積回路の中に提供されると、会社がICを生産できるようにするホトリトグラフィマスクを含む情報および生産のツールは、典型的には企業秘密として守られる1つの貴重な知的財産となる。しかしながら、製品設計を企業秘密として守りたいという希望は、設計の使用、または設計の構成要素部分を、設計創始者と直接的に競合していない可能性のある関心のある関係者に販売したいという希望と矛盾する。例えば、第1の企業が、それがレーダシステム用の信号処理を実行するチップで使用できる(おそらく数千のトランジスタを含む)信号処理構成部品を設計したことがある。第2の企業が、同じ構成部品を音声認識ICの一部として、あるいはおそらく地震信号を解析するために使用されるだろうICの一部として使用することを希望する場合がある。
【0016】
この問題に対処するため、第1企業のためにICを生産する会社は、第2企業のために全体的な設計の一部として構成部品を生産することを許可されてよい。このようにして、設計は、第2企業が設計の詳細に一度もアクセスすることなく許可されてよい。しかしながら、第2企業は、この時点で、面倒な設計問題に直面する。つまり、その内部活動が第2企業には未知である構成部品を使用するシステムの設計をどのようにして検証できるのかである。第2企業の状況を緩和するために、第1企業は、構成部品をモデル化するが、第2企業が回路説明にアクセスできないように符号化されているFGPAロード可能ファイルを供給してよい。代わりに、ICまたは外部に接合されているICコアが使用されてもよい。しかしながら、これは、それにも関わらずシステム統合を困難なタスクとして残し、構成部品をシステムの残りの中にモデル化するように構成されているFGPAをブレッドボード上に組むことを必要とする。さらに、試験段階においても、構成部品の内部活動を知らなければ、チップを他の構成部品に相互接続するタスクは問題となる可能性がある。
【0017】
電子システムを試験する上で遭遇されるもう1つの問題とは、試験の完全さの何らかのレベルを保証することである。複雑なシステムのあらゆる状態を完全に試験することは、何世紀でなくても数十年を要するだろうため実際的ではない。試験の完全さのより達成可能なレベルとは、あらゆる構成要素ピンをトグル(両方のバイナリ状態へ駆動)することである。現在のところ、ユーザが少なくともこのレベルの完全さまでターゲットシステムを試験することを許すハードウェアシステムは使用できない。
【0018】
回路の少なくとも一部がハードウェア内でモデル化されるシステムにおいて、問題は、シミュレータ内の行動モデルが検証されているシステムの一部を表すときに遭遇される。設計者は、自分がある構成部品の内部論理回路を設計していないが、行動モデル、つまり設計者が完成した攻勢部品内に存在することを期待する入力対出力の関係性を模倣するコンピュータプログラムを開発したときに、これを行うことを選ぶことができる。検証エンジンに常駐するハードウェアモデルであらゆるそれ以外の構成要素をモデル化することは可能であることがあるが、これまで検証エンジン内で行動モデルをホストすることは可能ではなかっただろう。
【0019】
この制限が、少なくとも2つの悩ませる問題を提起する。第1の問題は、設計の一部またはターゲットシステム自体の一部が、ネットリストが使用できる点まで最終化されないときに遭遇される。関連する問題は、ターゲットシステムが、利用者書き込み可能ゲートアレイ(FGPA)によってエミュレートできない電気機械装置を制御する、あるいは制御しない場合には電気機械装置と接続するときに遭遇される。
【0020】
実際の世界のインタフェースも、回路検証者に問題を提起する。例えば、原子力発電所内の電子機器回路は、操作上使用される前に完全に検証されなければならない。しかしながら、原子力発電所を運用するためにそれを使用せずに、この制御回路要素を検証することは困難である。原子力災害の危険を冒さずに制御回路の動作を検証する1つの方法は、制御回路をシミュレーションするシミュレーションプログラムの中に原子力発電所の電気機械部分の行動モデルを含めることである。制御回路がハードウェア内でモデル化されている場合、現在では、前述されたように通信上制限されていない関連付けられた電気機械要素の行動をモデル化するための準備ができた機能はない。
【0021】
(発明の要約)
第1の好ましい実施態様においては、本発明は、複数のターゲットシステムバスにより相互接続される複数の構成要素を有するターゲットシステムの設計を検証するための検証エンジンである。検証エンジンは、ともに1つの前記構成要素として構成され、ハードウェアモデル入力/出力ピンの集合を有する第1ハードウェアモデルおよび第2ハードウェアモデルを備える。さらに、第1バスラッパーが第1ハードウェアモデルに接続され、第2バスラッパーが第2ハードウェアモデルに接続される。さらに、バスラインの集合はそれぞれ第1バスラッパーおよび第2バスラッパーに接続される。各バスラッパーは、バスラインにそれぞれのハードウェアモデル入力/出力ピンを切り替え自在に通信可能に接続し、切り替え可能通信構成回路を制御する制御ブロックを有する切り替え可能通信回路も有する。バスラインの少なくとも数本に接続されるシステム制御装置は、バスラインによって前記バスラッパーごとに時間同期情報のシーケンスを送信するように適応されている。時間同期情報は、前記制御ブロックが、時間スロット番号を統一して決定できるようにするのに十分である。応えて、制御ブロックは、時間スロット番号を統一して決定し、そこに応えて、それぞれの制御ブロックは少なくとも1本の入力/出力ピンを、第1ハードウェアモデルからの少なくとも1本の入力/出力回線が第2ハードウェアモデルの入力/出力回線に接続されるように、前記バスラインとの通信連絡に切り替える。
【0022】
別個の好ましい態様では、本発明は、複数のターゲットシステムバスによって相互接続される複数の構成要素を有するターゲットシステムの設計を検証するための検証エンジンである。検証エンジンは、それぞれがピンのバスラッパー/ハードウェアモデル集合、およびピンのバスラッパー/バスライン集合を有する複数の再構成可能なバスラッパー、各前記バスラッパー/ハードウェアモデルピンをバスラッパー/バスラインピンに切り替え自在に通信可能に接続する切り替え可能通信回路、および前記切り替え可能通信回路を制御する制御ブロックを備える。バスラインの集合は、それぞれバスラッパーごとにバスライン/バスラッパーピンを有する。各バスライン/バスラッパーピンは、バスラッパー/バスラインピンに接続される。システム制御装置は、バスラインの少なくとも数本に接続され、制御ブロックが時間スロット番号を統一して決定するのに十分な時間同期情報を伝送するように適応されている。さらに、時間同期情報に応えて、各制御ブロックは、時間スロット番号を決定し、時間スロット番号の所定の番号に応えて、少なくとも1つのバスラパー/ハードウェアモデルピンを、前記バスラッパー/バスラインピンとの通信連絡に切り替える。
【0023】
追加の別個の好ましい態様においては、本発明は、第1ドライバの第1ドライバ入力ピンに通信可能に接続される第1回路ノードと、第2ドライバの第2ドライバ入力ピンに通信可能に接続される第2回路ノードの間の駆動方向を決定する方法である。第1ドライバおよび第2ドライバは、1本の接続回線により相互に反対に接続される。さらに、第1および第2回路ノードは、第1ドライバまたは第2ドライバのどちらかをイネーブルすることによって、それぞれ第1回路ノードまたは第2回路ノードからの入力と接続されるように一時的に命令される。方法は、第1回路ノードが駆動中であり、第1フォーマットで第1試験結果を記録しているかどうかを判断することによって自動的に第1試験結果を備える。
【0024】
依然として別の追加の別個の好ましい態様においては、本発明は、第1構成要素入力/出力ピンの集合を有する第1電気的構成要素を、第2構成要素入力/出力ピンの集合を有する第2電気的構成要素に選択的に結合するように適応されているバスである。バスは、前記第1構成要素入力/出力ピンに接続されるように適応された第1バスラッパー対構成要素ピンの集合、第1バスラッパーバスラインピンの集合、各ラッチが、前記第1バスラッパー対構成要素ピンへ、および前記第1バスラッパーバスラインピンに切り替え自在で通信可能に接続されるラッチの集合、およびローカル状態センサを有する第1バスラッパーを備える。第2バスラッパーは、第2構成要素入力/出力ピンに接続されるように適応されている第2バスラッパー対構成要素ピンの集合、第2バスラッパーバスラインピンの集合、および各ラッチが、前記第2バスラッパー対構成要素ピンへ、および前記第2バスラッパーバスラインピンへ切り替え自在で通信可能に接続されているラッチの集合を有する。バスライン導線の集合は、各第1バスラッパーバスラインピンを第2バスラッパーバスラインピンに接続する。システム制御装置は、バスライン導線の集合に接続され、時間スロットのシーケンスを定義する時間スロット番号のシーケンスを前記バスラッパーに送信するように適応されているシステム制御装置バスラインピンの集合を有する。各バスラッパーは、各時間スロット番号列挙子の受信時に、存在するならば、そのラッチの内のどれが時間スロット番号の間にアクティブであるのかを決定するように適応され、第1バスラッパーではさらに、少なくとも部分的に前記ローカル状態センサおよび前記時間スロット番号によって、どのアクティブラッチが第1バスラッパー対構成要素ピンとの送信通信結合に切り替えられるのか、およびどれが第1バスラッパーバスラインピンとの送信通信結合に切り替えられるのかを判断するように適応されている。
【0025】
依然として別の追加の別の好ましい態様においては、本発明は、前記構成要素間でデータの定められたフローを可能にする複数のバスによって接続される複数の構成部品から構成されるターゲットシステム設計の検証試験のための方法であり、該方法は、構成要素の少なくともいくつかのハードウェアモデルを時間多重化されたバスに接続することと、時間多重化されたバスを制御し、ハードウェアモデルの間の前記定められたデータのフローを可能にすることを備える。
【0026】
追加の別個の好ましい態様においては、本発明は、装置または双方向ピンを備える集積回路に接続するために、装置用のネットリストを記憶するコンピュータ読取り専用メモリデバイスを備える仮想装置のどちらかである。装置または仮想装置は、高駆動時間中に双方向ピンを高にソフト駆動するように、および低駆動時間中に双方向ピンを低にソフト駆動するように適応されているソフト駆動装置を備える。さらに、第1フリップフロップは、その高駆動時間中に双方向ピンの出力を保存するように構成され、第2フリップフロップは、その低駆動時間中に双方向ピンの出力を保存するように構成される。さらに、排他的論理和ORゲートは、第1フリップフロップの出力に接続される第1入力、および第2フリップフロップの出力に接続される第2入力を有する。高駆動時間および低駆動時間の後、排他的論理和ORゲートの出力は、それによりピン駆動方向を示す。この段落の説明に従って、回路用の回路記述を記憶するコンピュータ読取り可能媒体は、本発明のまた別の別個の好ましい態様である。
【0027】
依然としてさらに好ましい態様においては、本発明は、開発者によるターゲットシステム電子機器回路設計の試作を容易にするための装置を備える。試作されなければならないターゲットシステム電子機器回路設計は、開発者にとって未知である場合がある内部構造を有し、第1ピンを有する第1構成要素、第2構成要素、および第1構成要素の第1ピンに第1信号を送信する第3構成要素を含む必要がある。デバイスは、ソケット、およびシミュレーション言語で作成されるプログラムを持ち、第3構成要素をシミュレーションし、第1信号をモデル化する第1モデル状態を形成するように適応されているメモリアセンブリを含むコンピュータを備える。コンピュータのメモリ内に記憶されているコンピュータソフトウェアオブジェクトは、第1モデル状態を第1ソケットコマンドに変換し、それにより第1信号をモデル化する第1ソケット出力信号をソケットから送信させるように適応されている。さらに、通信アセンブリは、コンピュータ、および第1構成要素をモデル化するように適応されている第1ハードウェアモデルに作動できるように結合され、第1ピンをモデル化し、通信アセンブリに作動できるように接続される第1モデルピンを含む。さらに、第2ハードウェアモデルは、第2構成要素をモデル化するように適応され、通信アセンブリに作動できるように接続される。最後に、サーバアセンブリは、ソケットと通信アセンブリの間で相互接続され、第1ソケット出力信号に応えて、第1信号をモデル化する第1通信アセンブリ信号を作成するように適応され、ここで通信アセンブリは第1通信アセンブリ信号を第1モデルピンに渡すように適応されている。
【0028】
依然としてさらに別個の好ましい態様においては、本発明は、開発者によるターゲットシステム電子設計の試作を容易にするための装置である。ターゲットシステム電子設計は、開発者にとっては未知である場合がある内部構造を有し、第1ピンを有する第1構成要素、第2構成要素、および第1構成要素の第1ピンから第1信号を受信し、第1信号に応えて第1状態を形成する第3構成要素を含む必要がある。デバイス自体は、通信アセンブリ、および第1構成要素をモデル化するように適応され、第1ピンをモデル化する第1モデルピンを含む第1ハードウェアモデルを備える。さらに、第1モデルピンは、通信アセンブリに作動できるように接続され、第1ハードウェアモデルは、第1ピンから第1信号を送信するようにさらに適応されている。デバイスは、さらに、第2構成要素をモデル化するように適応されている第2ハードウェアモデルを含み、それは通信アセンブリに作動できるように接続されている。コンピュータは、ソケット、および第1構成要素をシミュレーションし、ソケット上で第1ソケット信号を受信するプログラムを持つメモリアセンブリを含む。コンピュータは、さらに、通信アセンブリに作動できるように接続される。コンピュータソフトウェアオブジェクトは、コンピュータのメモリ内に記憶され、第3構成要素をモデル化し、第1ソケット信号を受信し、第1ソケット信号に応えて第1状態をモデル化する第1モデル状態を形成するように適応されている。サーバアセンブリは、ソケットと通信アセンブリの間で相互接続され、第1通信アセンブリ信号の受信に応えて、第1信号をモデル化する第1ソケット信号を作成、送信するように適応されている。
【0029】
依然としてまだ別個の好ましい態様においては、本発明は、開発者によるターゲットシステム電気機器回路の試作を容易にするデバイスである。電子機器回路設計は、レジスタ内容を持つレジスタを有するマイクロプロセッサ、マイクロプロセッサ上で実行するように適応されているプログラムを持つコンピュータメモリアセンブリ、および開発者およびマイクロプロセッサをコンピュータメモリおよび構成要素と接続する第1通信リンクアセンブリにとって未知である場合がある内部構造を有する構成要素とを含まなければならない。デバイスは、モデルレジスタ内容を形成することにより少なくとも部分的にマイクロプロセッサをモデル化するように適応されているハードウェアで実現されるマイクロプロセッサモデルを備える。構成要素モデルメモリアセンブリをモデル化するように適応されている構成要素モデルは、プログラムおよびメモリ内容を持つ。モデル通信アセンブリはモデルメモリアセンブリおよび構成要素モデルをマイクロプロセッサモデルに接続する。コンピュータおよびリンクと報告アセンブリが、コンピュータをモデル通信アセンブリにリンクし、メモリ内容の選択された内容をプログラム内の開発者によって指定される点でコンピュータに送達するように適応されている。
【0030】
依然としてさらに別個の好ましい態様においては、本発明は、構成要素の集合を試験するための検証エンジンであり、そのそれぞれは入力/出力ピンの集合を有する。検証エンジンは、構成要素ピンの集合のトグルカバレージを保証する能力を有する。検証エンジンは、入力/出力ピンのそれぞれにトグル検出器を有する相互接続アセンブリを備える。各トグル検出器の出力はメモリ空間に記録される。検出および報告アセンブリは、存在する場合、入力/出力ピンのどれがトグルされていないのかを検出し、ユーザに対し報告する。
【0031】
依然としてさらに別個の好ましい態様においては、本発明は、そのそれぞれがシステムハードウェア記述のターゲットシステム構成要素名によって指定されるターゲットシステム構成要素の集合を含むシステムレベルハードウェア記述を、そのそれぞれがハードウェアモデルのライブラリ内に存在し、仮想構成要素名によって指定される仮想構成要素の集合の中にマッピングする方法である。方法は、システムレベルハードウェア記述をターゲットシステム構成要素の中に解析するステップと、ターゲットシステム構成要素を表すターゲットシステム構成要素名を表示するステップとを備える。仮想構成要素名が表示され、ユーザは、ターゲットシステム構成要素名を仮想構成要素名に一致させ、それにより仮想構成要素名に対応するハードウェアモデルをターゲットシステム構成要素用のモデルとして指定する。
【0032】
依然としてさらに別個の好ましい態様においては、本発明は、ターゲットシステム構成要素の集合を含むシステムレベルハードウェア記述を、検証エンジン内でモデル化されなければならない構成要素の第1サブ集合、およびシミュレータの中でモデル化されなければならない構成要素の第2サブ集合に区分する方法である。各ターゲットシステム構成要素は、ターゲットシステム構成名により指定される。方法は、システムレベルハードウェア記述をターゲットシステム構成要素の集合の中に解析するステップと、ターゲットシステム構成要素名を表示するステップと、ユーザがターゲットシステム構成要素名に対応するターゲットシステム構成要素を、構成要素の第1サブ集合または構成要素の第2サブ集合に属するとして指定することができるようにするステップとを備える。
【0033】
依然としてさらに別個の好ましい態様においては、本発明は、その内部構造およびIC生産情報が存在するが、設計者が利用できない構成要素を有する集積回路(IC)の第1部分を、および第2部分モデルが存在するICの第2部分に構成要素を相互接続するための相互接続方式を効率的に設計するために、設計者によって使用されるための方法である。方法は、再構成可能相互接続アセンブリ、FPGA、およびそのそれぞれが使用可能なFPGAロード可能ファイルによって実現されてよく、その内部構造に関し生産情報が存在するが、設計者が利用できない仮想構成要素指示子の集合を提供するステップとを備える。設計者は、第1部分のさらに高いレベルのシステム記述を作成するために電子設計ソフトウェアパッケージを使用し、さらに高いレベルのシステム記述が構成要素の第1機能記述を含む。それから、設計者は、仮想構成要素の集合にアクセスし、第1機能記述に基づき、ライブラリから仮想構成要素を選択する。第1FPGAロード可能ファイルは、仮想構成要素をFPGAで実現するために利用できる。第1FPGAロード可能ファイルは第1FPGAにロードされる。再構成可能相互接続アセンブリは、第1FPGAを第2部分モデルに相互接続し、多成分電子システムを形成するために使用される。多成分電子システムはその動作を検証するために試験され、補正された多成分電子システムを形成するために、エラーが発見されると補正される。
【0034】
依然として別の追加の別個の好ましい態様においては、本発明は、構成要素の集合を有するターゲットシステムをモデル化するように適応されている検証エンジンである。検証エンジンは、各ハードウェアモデルが1つの構成要素を表す、非常に多数のハードウェアモデルを備える。バスは、ともにハードウェアモデルをリンクし、システム制御装置を含む。コンピュータはハードウェアモデルによって表されない構成要素のシミュレーションプログラムを実行し、それによりシミュレーションされる構成要素である。さらに、コンピュータは、システム制御装置の作動できるように接続される。ラッチの集合はバスに作動できるように接続される。システム制御装置は、すべての出力信号をシミュレーションプログラムからラッチの集合に向け、ラッチの集合はバスおよびハードウェアモデルに対してシミュレーションされた構成要素を表す。
【0035】
発明の前記およびそれ以外の目的、特徴、および優位点は、添付図面とともに解釈される本発明の以下の詳細な説明を考慮するときにさらに容易に理解されるだろう。
【0036】
(好ましい実施態様の詳細な説明)
I.架空ターゲットシステム
図1は、本発明の好ましい実施態様によってどのようにターゲットシステムが検証されてよいのかを図解する目的で、架空音声認識ターゲットシステムを示す。以下の説明においては、用語「ターゲットシステム」は、検証エンジンの一部であるというのと対照的に、ターゲットシステム設計の動作または一部を示すための形容として使用される。例えば、ターゲットシステムクロック信号とは、検証されているターゲットシステム設計の一部であるクロック信号である。検証エンジンシステムクロック信号とは、検証エンジンが独自のタイミングを調整するために使用する信号のことである。
【0037】
ターゲットシステム10は、アナログ/デジタル(A/D)変換器12、離散フーリエ変換(DFT)エンジン14、音素認識プロセッサ16、データプロセッサ18(8051マイクロプロセッサ)、およびデータプロセッサ18がプロセッサ16からの音素情報に基づいたワード認識を可能とするためのプログラムを含むDRAM20を含む。さらに、コンテキスト認識ポストプロセッサ40は、同音異義語の場合、どの同音異義語が正しいのか、あるいはワードが部分的に不鮮明に発音される場合には、話者が言わんとすることが何かを判断するためにデータプロセッサ18によって生じるワードを調べる。コンテキスト認識ポストプロセッサ40によって補正されたワードは、データプロセッサ18が話者の音声パターンに適応できるように、データプロセッサ18に戻される。それから、データプロセッサ18は、コンテキスト認識プロセッサ40から受け取られるワードから音素を決定し、これらの音素を、それが話者の音声パターンに適応できるように、音素認識プロセッサ16に送り返す。
【0038】
提案されているターゲットシステム10は、典型的にはマイクロフォンまたはテーププレーヤーに接続される、入力回線22によって外界に接続される。出力バス23は、ASCIIフォーマットで、認識されたワードを表す一連の文字を、表示システムなどのなんらかの受信装置に送達する。ターゲットシステムクロック36は、通常、システム10を200MHZで駆動するが、出力バスは子の速度の1024分の1でクロックされる。出力バスはターゲットシステム10の内部バスより長く、さらに多くのエネルギーを使用するため、エネルギーを節約するにはさらに低速度が望ましいが、依然としてターゲットシステム10の出力を送達するほど十分に速い。さらに低速のバス速度を実現するには、ポストプロセッサ40は2つのクロック入力「A」と「B」を含み、「A」はコンテキスト認識回路を駆動し、「B」はポストプロセッサ40の出力を読み出し、1024カウンタ42による除算によって駆動される。
【0039】
ターゲットシステム10の内部コネクションは、デジタル化された音をDFTエンジン14に移す16ビットA/D出力データバス24、DFT出力データを音素認識プロセッサ16に移す96ビットDFT出力データバスを含む。40ビット双方向マルチポートデータプロセッサバス28は、データプロセッサ18にコメントデータとともに認識された音素を送信し、データプロセッサ18から音素認識プロセッサ16にときおり補正される音素を送信し、コンテキスト認識ポストプロセッサ40にワードを送信し、ポストプロセッサ40からデータプロセッサ18に補正されたワードを送信し、データプロセッサ18がDRAM20から指示を得ることができるようにする。さらに、離散データ回線34の第2集合がデータプロセッサ16をA/D変換器12にリンクするに従って、離散データ回線32の第1集合が、データプロセッサ18を音素認識回路16にリンクする。
【0040】
システム運用では、前記に注記されたように、A/Dが65マイクロ秒ごとに入力回線22をサンプリングする。ターゲットシステムクロックは200MHz速度で動作する。しかしながら、人間の耳は10ミリ秒未満内に発生する遷移を検出することはできないため、スペクトルは毎秒100回だけ96ビットDFTバス上で送達される。しかしながら、スペクトルが送達されるとき、音素認識回路16を送達するには、1,000クロックサイクル、つまり5マイクロ秒を要する。音素認識回路16は、それが音素を認識するたびに、音素コードをデータプロセッサ18に送信する。このイベントは、非周期的に発生し、データPロセッサ18に送信される割込みを生じさせ、それがその後で、音素コードおよび識別タグを検索するためにデータ処理バス28を制御する。音素認識は、平均毎秒約9回発生する。データプロセッサ18によって実行されるワード認識は、平均毎秒約3回発生する。コンテキスト認識明確化は、平均4秒毎に発生し、その結果識別タグによって特定される正しい音素を音素認識回路に送り返すデータプロセッサに、逆方向に送られなければならない。
【0041】
II.架空ターゲットシステムのモデル化
図2は、本発明に従った検証エンジン60を示す。音素認識回路16を除き、ターゲットシステム10の構成要素のすべては、ハードウェアモデルによってモデル化され、データプロセッサ18は、実際の8051マイクロコントローラの動作を模倣するように構成されるFPGA66によってモデル化されている。また、抽出され、入力/出力ピンを備えるIC設計の一部である、外部に接合されたICコアを使用することも可能である。多くの状況では、マイクロプロセッサは、直接的に使用されてよいチップとして販売されてよい。DFTエンジン14およびA/D変換器12は、それぞれDFTエンジンIC64およびAD変換器IC62によってシミュレーションされる。エスオーディム(SODIMM)モジュールを含む中央メモリ装置68がDRAM20をモデル化する。コンテキスト認識ポストプロセッサ40は、FPGAロード可能ファイルで適切に構成されている利用者書き込み可能ゲートアレイ(FPGA)70によってモデル化される。ダミーハードウェアモデルFPGA72は、シミュレーションされた音素認識回路16のために入力/出力データを記憶する。リンク機構は、以下にさらに詳細に説明されるだろう。ハードウェアモデル62、64,66、68、70および72のそれぞれ一つが、再構成可能な、適切に構成された「バスラッパー」それぞれFPGA74、76、78、80、82、および84を介して検証エンジン128ビット時間多重化バス(TMB)110にリンクされる。システム制御装置112は、時間多重化バス110を制御する。さらに、「スヌープ」バッファ67には、「スヌープ」バッファバスラッパー79が備えられ、ユーザが標準モード動作の割込みの後に、TMB110で送信されるメッセージを見ることができるようにする。これらの値はデバッグに有効である。人間の話のテープ録音を収容するテーププレーヤー89は、A/D変換器IC62に対する入力として使用され、それによって検証エンジン60に対する試験ベクタの集合を提供する。
【0042】
図3を参照すると、TMB110は、その動作を時間スロット番号のシーケンスに分離し、各時間スロット番号で少なくとも1つのターゲットシステムバスによって取り扱われる通信の少なくとも一部を実行することによってターゲットシステムの構成要素を接続するバスの動作を連続してモデル化させられる。時間スロット番号のシーケンスは、検証エンジン60の標準モード動作中に連続して反復される。特に、バス110は、A/D出力バス24およびDFTバス26(時間スロット番号1)、データプロセッサバス28(時間スロット番号2)、離散信号(時間スロット番号3)、および出力バス23(時間スロット番号4)の機能を実行する。代替の好ましい実施態様においては、システム制御装置112から時間スロット番号は送信されないが、各バスラッパー144が、独立してであるが、統一して時間スロット番号をシステムクロックおよび/またはシステム制御装置112から送信されるその他の信号から計算する。
【0043】
III.外部ツールへの検証エンジンコネクション
図2を参照すると、システム制御装置112は、標準インテル(Intel)R960バス134に接続される。インテルR960バスは、アダプタカード136を介して、その結果としてシステム制御装置112を制御するワークステーション114に接続される標準周辺コネクションインタフェース(PCI)バス138に接続される。
【0044】
ホストワークステーション14は、後述されるサーバプロセス117も干すとする。さらにホストワークステーション114に接続されているのは、開発者の検証エンジン60の構成および使用を容易にするGUI115をホストするグラフィックユーザインタフェース(GUI)ホストコンピュータ119である。さらに標準ローカルエリアネットワーク116を介してホストワークステーション114に接続されているのは、音素認識回路16のシミュレーションプログラム86を実行しているシミュレーションホストコンピュータ118である。
【0045】
デバッグプログラム126も、コンピュータ118によってホストされ、コンピュータ118に着席している開発者にパラメータ値送達する目的で8051マイクロコントローラのフラッシュRAM内の協調プログラムと対話する。
【0046】
GUI115は、開発者からシステム設計情報を受信する。それから開発者は、GUIを使用し、シミュレーションプログラム86によってシミュレーションされなければならない部分と検証エンジン60内に常駐する部分の間でターゲットシステム設計を分割する。それから、GUI115はシミュレーションプログラム86内に挿入される適切な設計データ、(後述され、典型的にはやはりワークステーション114に常駐する)サーバプロセス117用のデータ変換テーブル、および検証エンジン60にロードされる構成データを作成する。さらに、GUI115は、検証エンジン60内に記憶され、ユーザ設計の一部を表すFPGAの中にロードされなければならないあらゆるFPGA構成ファイルのユーザによる入力を容易にする。検証システム問題が発生すると、GUIは、デバッグモードで検証エンジンを制御するために使用することもできる。その他の動作中、GUI115はスヌープバッファ67からのデータ検索を容易にすることができる。それから、GUI115はこの情報をフォーマットし、開発者に表示することができる。
【0047】
ホストワークステーション114上で実行しているサーバプロセス117は、検証エンジン60およびGUI115と対話するシミュレーションプログラム86などの多様なソフトウェアプログラム間でのリアルタイム連続通信を担当する。要求がホストコンピュータ118または119から出現すると、サーバ117はその要求を、エンジンシステム制御装置112に適切なフォーマットにフォーマットし直し、接続するPCIバス138を介して制御装置112にそれを送信する。検証エンジン60がホストコンピュータ118または119に転送されるデータを有するとき、それはまずこのデータを、それをフォーマットし直してから、データを適切なホストコンピュータ118または119に戻すサーバ117に転送する。
【0048】
シミュレーションプログラム86は、ダミーハードウェアモジュール72を介してターゲットシステム10の残りの検証エンジン実現と通信する。ダミーハードウェアモジュール72は、ハードウェアモデル72の外部導線に、ターゲットシステム10内の音素認識回路16の入力/出力ピンの動作を模倣させるラッチの集合を含む。バスラッパー84は、すべてのバスラッパー74−84が含む(後述される)標準レジスタを含む。したがって、ダミーハードウェアモデル72は、定期検証エンジン60動作中にダミーハードウェアモデル72が残りの検証エンジン60にとって実際の音素認識回路16のように見えるように、他のハードウェアモデル62から70のすべてが行うのと同じように検証エンジン60の残りに接続する。
【0049】
技能のある人が認識するように、ダミーハードウェアモデル72は、シミュレーションプログラム86が新しい出力を持つたびにシミュレーションプログラム86によって更新されなければならない。同様に、検証エンジンインプリメンテーションからの新規データ、ターゲットシステム10の他の部分は、ダミーハードウェアモデル72に対してだけではなくシミュレーションプログラム86にも送信されなければならない。この通信は、TMB110からの新しい、変更された入力を受信し、割込みを介してこのイベントをシステム制御装置112に通知するダミーハードウェアモデル72で開始する一連のステップで実行される。それから、システム制御装置112は、ダミーハードウェアモデル72内に記憶されるデータワードをフェッチし、それらをシミュレーションホストコンピュータ118に中継する。
【0050】
システム制御装置112は、それが、ダミーハードウェアモデル72に中継するシミュレーションホストコンピュータ118からの応答を受信するまでTMBの動作を凍結する。このようにして、ダミーハードウェアモデル72は、TMB110に対して、実際のターゲットシステム10内で音素認識回路によって提示されるだろう出力状態を提示する。これらの更新を行うのに必要な時間はシステム運用を低速化するが、それは、シミュレーションプログラム86が実行し、データを送信し、ホストワークステーション114からデータを受信するのに必要なはるかに長い時間と比較すると、かなり小さい時間要求である。
【0051】
ダミーハードウェアモデル72は、おもに試験中に割込み信号を発光または受信する目的で、外部出力ピン73および外部入力ピン75も含む。
【0052】
シミュレータに接続する検証エンジン60での1つの潜在的な問題は、音素認識回路がソフトウェアでシミュレーションされる場合、DFTバス26で発生する。このバスは、実際には、ターゲットシステムが動作中である時間の.05%だけデータを送達している。しかしながら、バスは技術的にはつねに動作中であり、実際のデータ伝送が発生していないときにはすべてのゼロの集合を読み出すだけである。音素認識はネットワーク116によってホストワークステーション114に接続されるコンピュータ118でシミュレーションされる(図2を参照すること)ため、データをそれに送信するのに必要とされる時間の長さは、それがハードウェアモデル化された回路にとってよりはるかに長くなる。ダミーのすべてのゼロの出力がクロックサイクルごとにコンピュータ118に送信されなければならなかった場合、システム動作は徐行まで低速化されるだろう。この状況を回避するために、ダミーハードウェアモジュール72は、TMB110からのその入力が変更するときだけ、システム制御装置112に割込みを送信するように構成される。その結果として、DFT IC64がDFTを発しない限り、検証エンジン60の動作は実際の予測される可動速度に相対的に近い高速ペースで進行する。前記に注記されたように、DFTは10ミリ秒ごとに発せられるにすぎない。検証エンジン動作はDFTの送達に必要とされる1,000のターゲットシステムクロックサイクルの間、大幅に低速化するが、これはすべての総ターゲットシステムクロックサイクルの2%を表すにすぎない。
【0053】
検証エンジン60の1つの考えられる優位点とは、設計の多様な段階でのシステム構成要素は、システム試験のためにともにリンクされてよいという点である。この例では、データプロセッサ18、DFTエンジン14、およびA/D変換機12はすべて完了された設計である。この執筆の時点では、さらに大きな設計に組み込むためにこのような設計を購入することはますます容易になってきている。しかしながら、この図解では、音素認識回路16およびコンテキスト認識ポストプロセッサ40は、ともに依然として開発中である。図示されている試験構成では、音声認識回路16の設計は、最も注意深く精査されており、シミュレータ内で試験中に変更されてよい。試験のそれ以降の区切りで、音素認識回路16の設計がFPGAにロードされ、ポストプロセッサ40の設計がシミュレーションされ、さらにデバッグされ、開発されることが考えられる。
【0054】
図4は検証エンジン60の汎用化された物理図面であり、コアカードと呼ばれるハードウェアモデル/バスラッパーカードを、時間多重バス物理バックプレーン124のバスピンソケット122へのユニット内のプラグとして示す。各コアカードはバスラッパー140およびハードウェアモデル142を含む。図4Aは、それぞれのコアカード120が1組のカード、つまりバスラッパーカード120aと合わせハードウェアモデルカード120bに分割される代替の好ましい実施態様を示す。図4Bは、バスラッパーとハードウェアモデルの両方として信号FPGA141が使用される代替の好ましい実施態様を示す。図4Cに示されている代替の好ましい実施態様においては、システム制御装置112は、別個のプラグイン式のカードとしてではなく、物理バックプレーン124の底部上の一連の構成要素として実現される。
【0055】
IV.バスラッパー構成
図5を参照すると、それぞれの汎用化されたバスラッパー140が、TMB110バスデータ回線(BDL)144の瞬間的な内容を採取し、時間スロット番号で、およびハードウェアモデルデータピン147の集合の適切なもので、取り付けられている汎用化されたハードウェアモデル142の入力が、この内容を使用できるようにしなければならない(本出願では、たとえワイヤの集合がバスラッパー140をハードウェアモデル142に接続するにしても、用語「ピン」が使用される。このような場合、ハードウェアモデルに最も近い各ワイヤの部分が、バスラッパー140にとってハードウェアモデルピン140および同様に見なされるだろう)。同様に、各バスラッパー140は、取り付けられているハードウェアモデルピン147の出力を採取し、それぞれの適切な時間スロット番号の間、TMB BEL114がそれを使用できるようにしなければならない。入力機能と出力機能の両方とも、双方向ドライバ146の集合によって達成される。しかしながら、モデル化され、検証されているターゲットシステム10では、多くの構成要素が、複数のバスを使用することにより通信してよい。したがって、いくつかのバスラッパー140は、複数の仮想バスのために複数の仮想バスラッパーの機能を果さなければならない。ある好ましい実施態様では、この特徴は、レジスタの完全な集合150、152および154を有することにより最高3つの仮想バスに達成される。特定の時間スロット中に特定のレジスタ150、152または154を使用するかどうかは、レジスタ集合150、152および154ごとに時間スロットバスライン126の集合からの入力を使用し、それぞれ制御ブロック155、156および157によって比較される時間スロット番号によって決定される。一致が検出されると、関連付けられたレジスタがカレント時間スロットの間、アクティブになる。(集合150、152、または154の)一次レジスタは、カレント時間スロット中にどのピン147がアクティブになるのかを記述し、これらのピンは対応するBEL144と連絡させられる。それらがどのように連絡させられるのか(つまり、それらが駆動しているのか、それとも受信しているのか)は、添付図7の説明で詳細に記述される。
【0056】
2ビットopコードが、TMBopコード回線129の組で各バスラッパー140に送信される。opコードに含まれているのは、発行される任意のターゲットシステムクロックに対し正でなければならないターゲットシステムクロック表示信号である(図9の説明を参照すること)。さらに、特定のクロックドメインでのクロック入力ピンの場合、クロックドメインに対応する時間スロット番号−比較レジスタ130内に一致がなければならない。これが発生すると、ターゲットシステム事前クロック回線ドライバの1つが、ハードウェアモデル142内のターゲットシステム事前クロック入力ピン(複数の場合がある)168の集合の内の1つにクロック入力を発行する。
【0057】
図3を参照すると、ターゲットシステム10の場合、時間スロット番号3と4は、レジスタ130内の単独のエントリにすぎず、時間スロット3はクロックドメインAに関連付けられており、それはポストプロセッサ40のクロック入力ピンBを除きあらゆるターゲットシステムクロック入力ピンを含む。図3に図示されるように、時間スロット番号3が発生するたびに、opコード内のターゲットシステムクロックビットは正になり、クロックドメインA(図3を参照)内のあらゆるピンがクロック入力を受け取るだろう。しかし、このビットは時間スロット番号4の1024番目の発生のたびだけに正になり、その時点では(およびこの時点だけで)クロックドメインBの単独ピンがクロック入力を受け取るだろう。
【0058】
(図5に示されている)この好ましい実施態様では、レジスタのそれぞれ1つは完全128ビット幅で、TMB110上のバスデータ回線(BDLS)の数に一致する。代替の好ましい実施態様では、レジスタの6つの完全な集合、6倍スロット復号一致および接続される6集合ターゲットシステムピンがあるが、空間の制限のため、各レジスタは64ビット幅にすぎない。
【0059】
1つの好ましい実施態様では、バスラッパー140はFPGAで実現されるが、代替の好ましい実施態様では、バスラッパーは、図5に図示されている構造に類似する基本構造を持つ、配線による回路として実現される。バスラッパーがハードウェアモデルを実現するためにFGPAと(コアカードを供給してよい)ともに使用されることが予定される場合、ピンルーティングはハードウェアモデルFPGA内で実行でき、このタスクを実行するニーズからバスラッパーを救うだろう。バスラッパーが、ICまたは外部に接合されるICコアなどの、配線によるハードウェアモデルとともに使用されることが予定される場合には、それはICピン147からTMB110までのピンルーティングにはクロスバースイッチの集合を必要とするであろう。
【0060】
V.試験検証プロセス
図6を参照すると、図2に示されている検証エンジン構成は、示されているステップによって(必要なICを入手し、設置した後に)構成、実行されてよく、さらに高いレベルでの設計言語での構成要素レベルシステム記述の特定、およびFPGAでモデル化されるそれらのハードウェアアイテムのFPGAロード可能ファイル(ブロック310)の特定で開始する。これらのファイルは、典型的にはフロッピーディスクまたはCD−ROMなどのコンピュータ読取り可能媒体で使用できるだろう。次に、GUIプログラム115は、FPGAロード可能ファイルに一覧表示されているピンを、さらに高いレベルのターゲットシステム設計ファイルのピンと一致させようとし、ユーザは結果を補正する機会を与えられる(ブロック312)。
【0061】
好ましい実施態様では、ユーザはハードウェアモデルのそれぞれ1つごとにバスラッパーを設計する(ブロック314)検証エンジンホストワークステーション114内でのコンピュータプログラムの実行を命令する。このプログラムの出力は、そのそれぞれがバスラッパーFPGA内にロードされるFPGAロード可能ファイルに変換される(ブロック316)ネットリストの集合であり、ハードウェアモデルFPGAも、中央メモリ68(ターゲットシステム10のDRAM20に常駐しなければならない、データプロセッサ18用のプログラム)の内容とともにこの時点でロードされる。
【0062】
代替の好ましい実施態様では、各バスラッパーネットリストが、前述されるように、例えば、ネットリストの事前に設計された集合から選ばれ、1つの設計は3集合のレジスタ150、152および154を有し、別の設計は6集合のレジスタを有する。各バスラッパーは、FPGAロード可能ファイルでFPGAがロードされた後にホストワークステーションによってロードされる多くのレジスタを含めることにより、多様なターゲットシステムバスの間で分散される、入力ピン、出力ピン、および入出力ピンのさまざまな構成に対処するために個々に区別される。これらのレジスタは、さらに詳細に説明されるだろう。この時点では、検証エンジンは、典型的には中央メモリ68に記憶されているプログラムによって起動される(ブロック318)。加えて、外部刺激データ319の集合が導入されてよい。例えば、テーププレーヤー89は、このデータをA/D変換器カード62、架空例では図2に示されている検証集合アップに送る。
【0063】
実行の各段階では、問題が検出されてよい(決定ボックス320)。問題が検出されない場合、実行が続行する。しかし、問題が検出されると、「スヌープ」バッファ67がワークステーション114の赤に読み出され、問題の原因を突き止めるために検討されてよい(ブロック321)。スヌープバッファ67は、TMB110の最近の履歴のBDL14値のすべてを記憶している。このアプローチが答えを出さない場合(決定ボックス323)、デバッグ(レジスタ)モードが使用され(ブロック322)、ワークステーション114の人間のオペレータが、コアカード120内のレジスタの内容を調べることができるようになる。問題が無視できる、あるいは検証されているターゲットシステムの部分を設計し直さなくても補正できる場合(決定ボックス324)には、試験は続行してよい(ブロック318)。それ以外の場合、試験は停止され、再設計が開始される(ブロック326)。
【0064】
VI.ハードウェアモデルピン駆動方向の検出、およびバス競争および浮動状態の回避
双方向ピンを含む試験回路では、数多くの問題が発生する。第1に、双方向ピンが、どの方向で任意の時点でハードウェアモデル142によって駆動されているのかを判断する問題がある。これは数多くの理由から予測できない。第1に、ハードウェアモデルがICまたは外部に接合されたICコアである場合、製造メーカは、予想される模倣者より有利な立場を保つためにシステム設計のいくつかの要素の排他的な知識を保持するだろう。さらに、完全な回路記述が入手できる場合、回路記述とともにロードされたFPGAでの場合のように、それは双方向ピン状態を予測するためにかなりの努力を伴う。しかしながら、バスラッパーが、(バス出力を使用して)ピン147を駆動するのか、あるいはピンがバスデータ回線14を駆動できるようにするのかを知るためには、駆動方向が決定されなければならない。
【0065】
別の問題は、ターゲットシステムが完全に設計され、検証されていないという事実によって生じる。このため、2本のピンが同じ時間スロットの間に同じバスコネクション(ワイヤ)を駆動しようとするという状況がある場合がある。これが「バス競争」と呼ばれ、どちらの駆動信号も受信されないため、送信側回路が予測するように、それによりシステム動作がつまずく。関連した状況では、ある特定の時間スロット中に接続される双方向ピンの集合のどちらもコネクションを駆動せず、各ピンに、予測された信号よりむしろ無作為な雑音を受信させる。この状態が「バス浮動」として知られて言える。再び、これにより、典型的にはシステム動作はつまづく。従来の試験において、この種の問題は、検出するのがやや難しく、システム検証人員にとっての不満の源であった。
【0066】
これらの問題を回避するために、検証エンジン60は、各双方向ピンに関して、それが駆動中であるのか、それとも入力信号に対し開いているのかを判断するように設計されたサブシステムを有する。加えて、ある特定の時間スロット中に接続されなければならない双方向ピンの集合ごとに、システム制御装置は、バス競争があるのか、それともバス浮動があるのかを判断する。
【0067】
【表1】
【0068】
図7を参照すると、切り替え可能接続回路146aが、特定のターゲットシステムピン144aが入力であるのか、出力であるのか、あるいは双方向ピン144であるのかに関係なく、各ハードウェアモデルターゲットシステムピンまたは回路ノード144をバッファに入れるために提供される。各バッファの駆動方向は、部分的には、表1に記載されるようなレジスタセット150からのコアカードレジスタによって決定され、入力によってピンがどのように処理されるのかをともに決定するスイッチ182と184に示される。駆動方向オプション1と2は自明である。オプション3は、バスラッパー用の特殊化した設計を必要とする。これは、典型的には、1本の特定のピンが、ハードウェアモデル内のピンのすべてまたは一部が現在の時間スロットまたは将来の時間スロットのための特定の方向を有する信号として動作する場合に実現されるだろう。駆動方向がある特定のターゲットシステム構成要素ピンによって信号で知らされるいくつかの種類のターゲットシステム内蔵バスがある。この種のバスの場合、ローカル論理回路は、信号ピンの状態を試験し、他のピンの駆動方向をこのピンの状態に基づかせるように構成されてよい。
【0069】
オプション4では、ピンの駆動方向は、それがそれ自体駆動されているかどうかを判断するために、ピン147aを試験することによって決定される。この機能を実行する回路は、それがバスラッパー140によって遭遇される状態を感知するため、ローカル状態センサである。この決定は、ピン147aがソフトドライバ、つまり高インピーダンスドライバによって駆動できるかどうかを検出することによって下される。このソフトドライバは、シフトレジスタ218、および抵抗器R1によって形成される。シフトレジスタ218は、ターゲットシステム事前クロックA信号がブロック130から受信されると(図5)、ゼロから数え上げ始める。ターゲットシステム事前クロックAの発行後の第1TMBクロックサイクルでは、実際のターゲットシステムクロックは、ターゲットシステムクロックA入力回線168上のハードウェアモデルに送信される。
【0070】
入力ドライバ240がイネーブルされると、ピン147aは、ターゲットシステムクロック信号が回線168に適用される瞬間にドライバ240から入力を受け入れるだろう。しかしながら、ピン147aが双方向である場合、それはターゲットシステムクロックの到来直後に(つまり、次のターゲットシステムクロックパルスの前に)出力値も形成してよい。次のシステムクロックでは、シフトレジスタ218が、ANDゲート244に対する低入力によって入力ドライバ240をディスエーブルする。この目的とは、ハードウェアモデル142が駆動ピン147aであるかどうかが判断される期間中、このような入力は試験と干渉し、潜在的にピン147aからの出力と矛盾するため、ピン147aへの入力を妨げることである。それ以降、シフトレジスタ218は、低を発してから、抵抗器R1に接続される回線で高を発する。
【0071】
ハードウェアモデルピン147aが(抵抗器R1のための)この高インピーダンスによって高と低の両方に駆動できる場合には、それはハードウェアモデル142によって駆動されていない。この場合には、第1フリップフロップ220が、第2フリップフロップ222とは異なる出力を有し、駆動方向XNORゲート224の出力は低になり、入力フリップフロップ225のQ出力をハードウェアモデルピン147aに送信する入力ドライバ240をイネーブルする。それ以外の場合、XNORゲート224の出力は高になり、ピン147aからである出力フリップフロップ226のQ出力をTMB BDL114aに送信する出力ドライバ242をイネーブルする。それぞれANDゲート260および262は、競争状態または浮動状態をそれぞれ競争レジスタおよび浮動レジスタ262、266に報告する。このような競争または浮動の状態は、例えば一次レジスタ1が駆動方向を決定するために選択されたが、このレジスタが決定した駆動方向がシフトレジスタ214およびフリップフロップ220と222によって実行される試験と矛盾していた場合に発生するだろう。1組のレジスタ264と266の内容は隠され、ともに論理和を取られ、バスラッパー140から「エラー」出力を生じさせる。マスク操作は、競争または浮動が予想される、および/または許容できる例があるため実行される。マスクはこの現実を反映し、予想されたあるいは許容できる競争または浮動が発生したときにエラーフラグが発行されるのを妨げるためにユーザによって構成される。
【0072】
図8、図9および図11を参照すると、システムレベルでバス競争状態およびバス浮動状態を検出するタスクは、システム制御装置112とダミーハードウェアモデル72の両方によって実行される。システム制御装置112(図9)は、競争または浮動がエラーを示さないときに、競争エラーまたは浮動エラーが発行されるのを防ぐために、それぞれ128のビットから構成されている競争マスクアプリケーション論理回路402、および浮動マスクアプリケーション論理回路404を有する。例えば、浮動マスクアプリケーション論理回路404を使用しない場合に、特定のTMB BDL144が使用されると、これはシステム制御装置によって競争エラーとして誤って報告されるだろう。ダミーハードウェアモデル72は、シミュレーションソフトウェアプログラムでは標準的である2ビットフォーマットで「高」、「低」、「競争」または「浮動」のどれかの存在を記録し、報告するだけである。モデル72はエラー検出時に処置を講じないため、競争または浮動がエラー状態を示さない例でエラーを宣言するのを回避するために、競争検出および浮動検出を隠す必要はない。
【0073】
システム制御装置では、競争および浮動マスクレジスタメモリ406(図9)は、アクティブ時間スロット、および時間スロットでアクティブである各基板ごとに適切なマスクの中にロードされる128ビットのワードを含む。マスクでは、それぞれの「0」がそれぞれ競争状態または浮動状態がないかチェックされなければならないビットを示し、「1」はこのようにしてチェックされてはならない各ビットがないか示す。マスク操作を容易にするため、コアカード時間スロットレジスタ408が、どのコアカードが各時間スロットの間にアクティブであるのかを示す。「定期」モード動作では、各時間スロットの前、それぞれの時間スロットアクティブカードのピン駆動レジスタがポーリングされる。すなわち、図11を参照すると、時間スロットNが増分された後(ブロック620)、駆動方向データ(時間スロット番号比較に応じたレジスタセット150、152、または154からの一次レジスタ1が各アクティブコアカードから順番に(ブロック622と624、および決定ボックス626と628)読み出される。図8を参照すると、各ビット、回線147a(図8)の結果が第1フリップフロップ412に読み込まれ、その出力が駆動する第1フリップフロップ412、およびその他の入力が再び回線147aである2つの入力ANDゲート414を備える。ゲート414の出力は第2フリップフロップ416に送り込まれる。バス競争は高くなるフリップフロップ416の出力によって示されるが、バス浮動はプロセスの最後で低状態のままとなる第1フリップフロップ412の出力によって示される。第1フリップフロップ412出力(段階1)は、時間スロットN(ブロック632)の間浮動マスク適用機構402で隠され、第2フリップフロップ416出力(段階2)は競争マスク適用機構404で隠される(ブロック630)。試験結果は、ブロック558とブロック570の中でともに論理和を取られ、結果として生じるビットは、コアカード割込みピン572上のシステム制御装置でコアカード120から受け取られる割込みで論理和が取られる。このため、ピンのどれかに関してバス競争またはバス浮動のどちらかが検出される(決定ボックス634と636)と、割込みがホストワークステーション114(ブロック638)に送信される。バス競争またはバス浮動が検出されない場合、TMB110がハードウェアモデル142間での転送の現実を可能にするために起動される(ブロック640)。
【0074】
前述されたポーリングを実行するためには、システム制御装置112が、各コアカーアド120を別個に処理できることが必要である。実際にはこれが達成できるようにするための機構がある。時間多重化バスでは6本のコアカード選択回線540(図9および図10を参照すること)がある。各コアカードスロットは、6本のカード選択回線540によって一致されるときに、挿入されたカードの選択を引き起こす、一つの6ビット配線済みコードを有する。6本の回線が番号63、(1つの特定の実施態様における)その最高可能数を表すとき、これはカードが特に選択されていないこと、およびすべてのカードが時間スロット回線126に呼応する必要があることを示す。
【0075】
標準モード動作の2つのそれ以外のサブモード、つまり高速サブモードおよびチェックサブモードが、システム制御装置112のために存在する。高速モードでは、ポーリングが実行されない。バス競争または浮動は未検出のままとなるだろうが、システムは定期サブモードでは何倍も高速で動作するだろう。高速サブモードは、典型的には、ターゲットシステムが大いに検証され、かなりの信頼度で使用できたときに使用されるだろう。チェックサブモードは、以下の問題に対処する。
【0076】
検証を必要とするいくつかのシステムは、完全には同期でないことがある。ときどき、コネクションの検証シーケンスのために非同期信号が時間内に正しく表されないことが考えられる。例えば、非同期離散信号は、実際のシステムで発生する内蔵バスクロックの前に発生するが、検証エンジン60内では後に表示される可能性がある。非同期離散信号がバス通信への正しい時間関係性でモデルかされたならば、バス状態の内の1つは異なるだろうと考えられる。そこで、チェックモードでは、すべての非同期通信がその適切な効果を出すことができるためには、第1インスタンス作動の出力が第2インスタンス作動によって正確に一致されるまで、毎回、各時間スロット番号が、ターゲットシステムクロックが発生されなくても繰り返される。
【0077】
VII.システム制御装置の動作
図9および図10は、それぞれ標準モードおよびデバッグモード中にアクティブであるシステム制御装置112のそれらの部分を示す。960バス134からの入力は、960バス134上の限られた数のワイヤがそれ以外の場合許可するよりはるかに幅広い情報のアレイが、ワークステーション114によってシステム制御装置112に送達できるように、符号化される。したがって、システム制御装置の左側に示されるポートは、物理ピンとしてよりむしろアドレス空間内に存在する。
【0078】
システム制御装置112には3つの本質的なタスクがある。第1に、それはシステム試験の始めにコアカードFPGAをロードし、試験しなければならない。第2に、それは標準モードでTMB110を循環しなければならない。これは、前述された競争/浮動チェックを含む。第3に、デバッグモードでは、それはホストワークステーション114からコアカード120へ情報に対する要求を転送し、関心のあるコアカード120からホストワークステーション114に情報の回答を転送して戻さなければならない。
【0079】
図10を参照すると、FPGAロードポート508を通したFPGAのロードは、技術では古く、ここでは詳細に取り扱われないだろう。情報はFPGAロードポート506上のホストワークステーション114から受信され、FPGAロード回線508からコアカードに創出される。JTAGインタフェースポート542およびJTAGインタフェース回線544の集合が、標準FPGA試験を、システム制御装置112を通してホストワークステーション114によって実施できるようにする。
【0080】
図9を参照すると、標準モードでは、開始時間スロット番号ポート584で示される時間スロット番号で、および開始基板番号584で示される基板で開始するシーケンサ510は、時間スロットポート513の番号で示されるように各時間スロットを通って順番に並ぶ。各時間スロットが、(レジスタ408によって知らされる)各コアカードを通して前述されたバス競争/浮動を達成するため(ロードマスク記憶装置406およびレジスタ408用のポートがあるが、簡略さのためそれらは図示されていない)。周波数シンセサイザ580によって生じるシステムクロック514は、検証エンジン60用の基本的な時間単位である。周波数シンセサイザ590によって生じるシステムクロック514の周波数は、ポート(図示されていない)を通してワークステーション114から設定されてよい。この柔軟性により、クロックは、正しいシステム動作を保証しつつ、システム構成要素の指定された集合に関して可能な限り速く実行できる。サイクルカウントポート512は、動作が自動的に停止される前にシーケンサ510によって実行される時間スロットサイクルを設定する。加えて、複数のブレークポイント条件が、適切なコアカード120の二次レジスタを適切にロードすることによって各コアカード120上で設定されてよい。カレント時間スロットポート532およびカレント基板番号ポート534は、ワークステーション114に量を渡し、その結果、それは、それが開始基板番号ポート582および開始時間スロット番号ポート584を正しく設定することによって終了された動作を開始することができる。
【0081】
OPコード論理回路516は、OPコード回線129上で時間スロットごとにopコードを発行する。このコードが、各コアカードに以下の情報を知らせる。I.標準モード(モード選択ポート536から選ばれる標準モードまたはデバッグモード)
A.ターゲットシステムクロックを生成する、または生成しない。
B.読取り/書込みサイクル(すべての選択されたカードが、データの読取りと書込みの両方を行う。)
C.読取りサイクル:すべての選択されたカードがTMBにデータを読み込む。
D.書込みサイクル:すべての選択されたカードがTMBにデータを書き込む。
E.動作なし
II.デバッグモード
A.書込みまたは読取りサイクル
B.一次レジスタ番号(0−7)
【0082】
ターゲットシステムクロックタイミングブロック520は、定期的にターゲットシステムクロックに、OPコード内で反映されるように命令する。これは、図5の説明に記述されるようにバスラッパーによって処理される。ターゲットシステムクロック用のコマンドの周期性は、時間スロット番号ごとの定期パターンとしてユーザ定義される。例えば、発生のたびに時間スロット番号7が、ターゲットシステムクロックを含んでよい。
【0083】
ターゲットシステムクロックが発行されると、ターゲットシステムクロックに対応するクロックドメインに区分化されたあらゆるターゲットシステムクロックピンがそのバスラッパー140からクロック入力を受信する。
【0084】
標準モードでは、128バスデータ回線144の集合に対する入力が、競争/浮動段階1および段階2のラッチ412と416の集合に送信される。競争マスクおよび浮動マスクは、適用論理回路(ANDゲートバンク)402と404によって、前述されたように適用される。競争/浮動最終検出ブロック558が、マスク適用レジスタ402と404から結果の論理積をともに取る。この状態は、ブロック570によって、回線572からの他のコアカード割込みとブロック570によってともに論理和が取られ、割込みポート上でホストワークステーション114によって使用できるようになる。しかしながら、デバッグモードでは、回線セット144上の値は、バスデータポート556(図10を参照すること)に直接的に逸らされ、その結果システム制御装置112はTMB110からホストワークステーション114へのダクトとして動作する。
【0085】
図10は、それがデバッグモード中に機能上出現するときのシステム制御装置112を示す。カード選択機能およびコアカード内のレジスタがデバッグモードの基礎を形成し、それによりシステム制御装置112は、問題検出後に試験中のシステムをデバッグするためにホストワークステーション114の人間のオペレータを補助できるようにする。一次レジスタは、OPコード回線129上で、前記に注記されたように、ポート552で受信され、OPコードの一部として送出される一次レジスタアドレスビットによってアドレス指定されてよい。レジスタ内容はバスデータ回線144のセット上で受信され、仮想バスポート556からワークステーション114に送信される。同様に、レジスタ内容は、ポート556でワークステーション114から受信され、ワークステーション114が回線144上でコアカード選択ポート576を介して選んだ(およびコアカード選択回線540上のバスで送信した)コアカードに送信されてよい。このようにして一次レジスタ#2をロードすることによって、任意の二次レジスタがアドレス指定されてよい。加えて、特定の時間スロット動作が、時間スロット選択ポート574によって並べられてよい。
【0086】
VII.仮想試作システム―架空設計の説明
図12を参照すると、および図解のために、本出願は、架空回路設計者が架空の将来のチップに実装されたシステムの一部2010を設計することを望んでいる特定のケースを記述する。部分2010は、8051マイクロコントローラ2012、デジタル信号処理エンジン2014、音素認識回路2016、および液晶ディスプレイ2022を駆動するビデオプロセッサ2020を含む。設計者は、自分の設計のためのゲートおよびさらに高いレベルの構成要素を選択し、ともにリンクし、その結果がコンピュータモニタに表示できるようにする1つの共通した電子機器回路設計ツールを使用する。設計者は、それぞれが設計ツールと関連付けられたライブラリの一部である回路記述によって表されているデジタル信号処理エンジンおよびビデオプロセッサを選択し、一連のマウスクリックにより両方の要素を自分の回路図に載せる。しかしながら、音素認識回路は、ゲートレベルから構築されなければならない。設計者は、自分が名前を付ける多様な要素を通信回線の集合とともにリンクさせる。設計者は、音素認識回路2016を構成しようと努力するにつれて、その動作をチェックするために(設計ツールに提供される)DSPエンジン2014からの出力を使用できるようになる。設計者は、8051マイクロコントローラ2012用のソフトウェアをすぐに作成できるが、8051マイクロコントローラ2012を使用することを決定し、音声認識回路2016が完了した後に、ソフトウェアを検証することを決定した。
【0087】
設計者は、自分の初期の音素認識回路2016設計を完了した後、初期の方式に従ってプログラムされた8051マイクロコントローラ2012とともに動作する4つの構成要素の設計の検証を希望する。言うまでもなく、彼はデジタル化された音声信号のバンクを必要とし、彼はこれらを持ち、コンピュータ2089を介してDSPエンジン2014の入力に接続されてよいフロッピーディスクを提供する。この時点で、設計者はDSPエンジン2014、音素認識回路2016、およびビデオプロセッサ2020の回路記述を有し、自分が使用することを希望するマイクロコントローラ2012を特定した。これらのすべてはさらに高水準の設計言語総合システム記述でともにリンクされる。しかしながら、彼は、DSPプロセッサ2014、音素認識回路2016またはビデオプロセッサ2020のどれかの物理回路レイアウトを持っていない。この時点で、設計者は、本発明の主題である仮想試作システム2050を使用し始めてよい。
【0088】
設計者の目標は、さらに詳しく後述されるだろう、図13に図示されているシステムなどの仮想試作システム2050を構成することである。システム2050は、8051マイクロコントローラIC2066、DSPエンジンIC2064、ビデオプロセッサ2068およびポート2112として構成されるFPGAをともにリンクする再構成可能相互接続アセンブリ2110を有する検証エンジン2060を含む。トグルレジスタ2310を含み、存在する場合どのピンがトグルされないまま残されたのかを報告するトグル検証報告システム。サーバプロセス2117をホストするホストワークステーション2114は、検証エンジン2060を、(音素認識回路2016の動作をシミュレーションスするための)シミュレーションプログラム2086をホストするシミュレーションホストコンピュータ2118に接続する。生め込まれたソフトウェア開発コンピュータ2800は、デバッグツール2812を含む埋め込み設計環境2810をホストする。
【0089】
IX.仮想試作システム−グラフィックユーザインタフェース
やはりワークステーション2114を介して接続されているのは、GUI2115をホストするグラフィックユーザインタフェース(GUI)ホストデバイス2119である。ある好ましい実施態様においては、再構成可能相互接続アセンブリ2110は、原出願および関連出願に図示され、記述されている形式を取る。アセンブリ2110の異なる好ましい実施態様は、バスラッパー2140の集合によってともにリンクされている構成要素2064,2066、2068および2072を示す、図20に示されている。ある好ましい実施態様では、各バスラッパー2140は、構成要素の双方向ピンを収容するために関連出願の図17に図示されているものに類似した双方向駆動アセンブリの集合を含むだろう。図19に示される実施態様では、時間多重化は不必要である。
【0090】
GUI2115は、仮想試作システム2050の構成を容易にする。最初に、GUI2115が、Verilog言語またはVHDLのどちらかで総合的なシステム記述を含むファイルを示すようにユーザにプロンプトを出す。ユーザがこのファイルを示した後、GUI2115は、どの構成要素がシステムで表されているのかを決定するために、ファイルを自動的に解析する。図14を参照すると、GUIはターゲットシステム構成要素、マイクロコントローラ2012、音素認識回路2016およびDSP2014を、それから(ワークステーション2114に関連付けられるマウスの使用により)どの構成要素が検証エンジン2060でモデル化されなければならないのかを指定するように依頼されるユーザに対して、列形式で表示する。図15に図示されているように、設計者はDSPエンジン2014およびマイクロコントローラ2012、およびビデオプロセッサ2020を指定する。音素認識回路2016は指定されたばかりで、たぶん
【0091】
重大な変更を経験するため、設計者は、自分がシステムを設計するために使用してきた、ネットワークによってワークステーション2114に接続される同じワークステーションでプログラムのこの部分をシミュレーションすることを決定する。GUIは、関連付けられたシミュレーション実行コンピュータ2118が、検証エンジン2060に示される構成要素をシミュレーションすると推定する。
【0092】
図16を参照すると、GUI2115は、検証エンジンでモデル化される構成要素の列とともに仮想構成要素(VC)のライブラリを示す列を表示する。VCは、少なくとも3つの基本的な形式の内の1つを取ってよい。それは、FPGAロード可能ファイル、またはIC、または外部に接合されたICコアを含んでよい。これらのケースのどれかにおいて、VCパッケージがピン記述ファイルを含むだろう。現在の例では、DSPエンジンICおよび8051マイクロコントローラICはすでに検証エンジン2060に物理的に含まれ、GUIライブラリ内に関連付けられたピン記述ファイルを有する。設計者は、検証エンジン2060内でモデル化されたターゲットシステム構成要素ごとにVCを示すようにプロンプトを出される。VCのパッケージがユーザに販売され、ユーザがVCの専用のライブラリも構築することが期待される。いくつかのケースでは、VCは、特定のターゲットシステムをモデル化することを予期して、取得され、ワークステーション2114内にロードされるだろう。現在の例では、設計者は、自分がすでに精通しており、自分が設計ツール内で使用してきたビデオプロセッサモデルと同じ入力/出力方式および動作特性を有するビデオプロセッサVCを見つけ出す。しかしながら、そのビデオプロセッサモデルとは異なり、彼がGUI2115内で特定するビデオプロセッサVCは、さらに大型のチップに実装されたシステムの一部としてビデオプロセッサVCを作成するための生産ツールの完全な集合と関連付けられる。この情報は、実際のビデオプロセッサネットリストとともに設計者が利用することはできないが、生産ツールを有し、料金のためにビデオプロセッサVCを含むICを作成する会社がある。しかしながら、ピンリストと結合される符号化されたFGPAロード可能ファイルは使用可能であり、ビデオプロセッサVCを選ぶ際の設計者は、この関連付けられたFPGAロード可能ファイルが、ビデオプロセッサエンジン構成要素をモデル化するために使用されることを示す。
【0093】
この際、GUI2115は、ビデオプロセッサVC用のピンリストを、後述される初期設計プロセスの間に設計者によって提供されるシステム接続回線名と合わせる。図17を参照すると、この合わせ動作の結果は、並んだ列に表示される。良好な一致が選ばれる場合、GUI2115がこの合わせ動作を高い信頼度で実行できるケースがある。反対の極端では、ユーザがエラーをして、それがモデル化するように指定されるシステム構成要素にまったく一致しないVCネットリストファイルを指定すると、ピン割当てのだいぶぶんが行われないままとなるだろう。これらの2つの極端な状態の間では、一致は通常良好であるが、GUI2115が合わせることができない、または不確かな一致が形成されるかのどちらかの数本のピンがあるケースもあることが予測される。一致を確信するレベルは、ピンを強い確実性を示す第1色、より少ない確実性を示す第2色、およびほとんど確実性がないことを示すか、一致するピンが見つけられないだろうことを注記する別の色で一致するピンの列表示の中にカラーコード化される。近いが、正確な一致ではなかった仮想構成要素が指定できるというのは電気エンジニアリングの初心者にとってはおかしなことに見える可能性があるが、多くの設計は、設計者にとっての便宜として存在する、および/またはなんらかのときおり望ましい機能を実行する数本のピンを含む。言うまでもなく、VCの主要な機能上のピンとターゲットシステム回路記述の間に食い違いがある場合、VCはターゲットシステム回路を検証するために使用できないだろう。しかし、多くの場合、単にVCピンを使用しないことによって、あるいは便宜上ときおり使用されるだけのピンを排除するための軽微なターゲットシステム再設計によって、軽微な簡便ピンの間の食い違いを矯正することが可能である。ユーザは、多様な列エントリを指し、クリックすることによってピンマッピングを変更する機会を与えられる。この同じプロセスが8051マイクロコントローラ2066接続ピンおよびビデオプロセッサVC2068接続ピンに対して実行されなければならない。
【0094】
例のケースでは、設計者は、それに関してはターゲットシステム回路記述に同等物がない、2本のピンがビデオプロセッサVC列で強調表示されていることに気付く。幸いなことに、これらは、その使用がオプションであるバス制御ピンである。しばらく、設計者はこれらの未接続を音素認識回路に任せることを決めるが、その存在を自分が将来利用することを希望する可能性のある何かとして注記する。
【0095】
図17に示される次のステップでは、GUI2115は、ピンを別個のクロックドメインに区分する。ユーザは、GUI2115によって実行されるクロックドメイン区分化の望ましくない特徴を補正し、ドメインごとにクロック速度を指定するようにプロンプトを出される。例のケースでは、すべてのクロック入力ピンが1つの共通したクロック入力信号を共用する可能性がある。
【0096】
図19を参照すると、ユーザは、次に、動作の開始時にターゲットシステムをリセットするための初期化シーケンスを指定するようにプロンプトを出される。このプロセスは、素の内のどれか1つが選択され、初期化入力を与えられてよい信号のリストによって容易にされる。この場合、ユーザは、製造メーカによって提供される8051チップのブートシーケンスを指定する。
【0097】
次に、各離散信号およびターゲットシステムバスがユーザに表示され、ユーザは、(自動的にシミュレーションコンピュータに送信されるターゲットシステムのシミュレーション済みの部分に送信される信号に加えて)シミュレータに送信される必要のあるバス信号を指定する機会を与えられる。例のシステムは非常に小型であるため、この特徴を示す機会はほとんどない。しかしながら、音素認識回路2016がシミュレーションされない場合、その出力は、設計者が表示のためにシミュレーション実行コンピュータに転送することを希望していた可能性のある自然アイテムだろう。
【0098】
次に、GUI2115は、検証エンジン再構成可能相互接続アセンブリ2110を構成しなければならない。相互接続アセンブリ2110の形式に関係なく、これは、構成要素ピンを接続アセンブリ回線に割り当てることを意味する。例えば、接続アセンブリが、(関連出願でのように)単一時間多重化バスの形を取る場合、それぞれのアクティブ構成要素ピンがバスラインおよび時間スロットに割り当てられなければならない。多くのターゲットシステムの場合、任意の順序で進行する非常に簡略なアルゴリズムが、ほとんど人が割当てを行うようにこれを行ってよい。このプロセスの結果が、各ターゲットシステム信号がバスライン/時間スロット組み合わせに割り当てられる「構成ファイル」と呼ばれる。構成ファイルは、バスラッパーを設計するために使用される。しかしながら、多くの場合、既存のバスラッパーは、容易に使用されてよく、バスラッパー設計は必要とされていない。バスラッパー構成および動作のより完全な説明については、関連特許出願を参照すること。
【0099】
最後に、GUI2115は、構成ファイルをサーバ2117に送信し、その結果サーバ2117はダミーソフトウェアモジュール2086と検証エンジン2060間の通信を手配してよい。サーバプロセスがどのようにしてこれを行うのかを理解するためには、後述されるシミュレーションホストコンピュータ2118の構造から検証エンジン2060コネクションまで理解することが必要である。
【0100】
X.仮想試作システム―検証エンジンおよびシミュレータの統合
図13に戻ると、音素認識回路2016は、ダミーハードウェアモデル2072により検証エンジン2060内で表される。モジュール2072に対する一種の鏡像として、ダミーソフトウェアモジュール2710は、シミュレーションプログラム2086のために、検証エンジン260内で検証中のターゲットシステム2010構成要素の部分を表す。ちょうどダミーハードウェアモジュール2072が完全に機能的なハードウェアモジュールから区別できないように、検証エンジン2060、ダミーソフトウェアモジュール2710の残りもシミュレーションプログラム2086の残りにとってターゲットシステム2010の構成要素をシミュレーションする完全に機能的なソフトウェアモジュールから区別できない。つまり、ダミーソフトウェアモジュール2710は、まるでダミーソフトウェアモジュール2710が実際に検証エンジン2060で検証中である構成要素の論理機能を実行しているかのように、シミュレーションプログラム2086の残りがアクセス可能である状態を形成する。同様の関係性においても、シミュレーションプログラム2086は、検証エンジン2060がアクティブである間はイナクティブであり、検証エンジン2060は、シミュレーションプログラムがアクティブである間はイナクティブである。ダミーハードウェアモジュール2072がその状態での変化に気付くと、それは、再構成可能相互接続アセンブリ2110の動作を停止し、それ以降サーバプロセス2117を収容するワークステーション2114にダミーハードウェアモジュール2072の内容を送信するシステム制御装置2112に割込みを送信する。サーバプロセスが、この受信されたデータを、それがシミュレーションホストコンピュータ2118に送信する表の中に入れる。
【0101】
ダミーソフトウェアモジュール2710は、新規入力によって支配される新しい状態を受け入れ、これらの新しい状態は、ダミーソフトウェアモジュール2710の状態が再び変化するまで実行することが許可されるプログラム2086の残りでの活動を生じさせ、その点で、ダミーソフトウェアモジュール2710はシミュレーションプログラム2086の実行を停止し、コードをコンピュータ2118のソケットから送出する。コードはダミーモジュール2072の一部である記憶装置バッファ2073をミラーリングするサーバ2117内の表に入れられる。この結果を達成するために、サーバ2117は、検証エンジン動作の開始前に、それがシミュレーションホストコンピュータ2118から受信する信号内の各時間位置をテーブル位置に変換する変換テーブルを構築しなければならない。同様に、サーバ2117は検証エンジン2060からデータを受信すると、変換テーブルを使用し、テーブル位置から、コンピュータ2118の入力/出力ソケットにつながるデータ回線上での時間位置に変換する。変換テーブルは、ダミーソフトウェアモジュール2710に、およびダミーソフトウェアモジュールから送信されるパラメータの時間位置が任意に設定されるのと同時に、GUI2115によって作成される構成ファイルから計算される。
【0102】
前記に注記されたように、埋め込みソフトウェア開発コンピュータ2800は、デバッグツール2812を含む埋め込み設計開発(EDE)2810をホストする。埋め込み設計環境(EDE)は、www.tasking.com.でインターネット上で連絡されてよいタスキング(TASKING)のものであってよい。EDE2810は、典型的には、やはりタスキング(TASKING)から入手可能なクロスビュープロ(CrossView Pro)などのROMモニタとともに使用されるだろう。ROMモニタは8051メモリ領域内に常駐し、ユーザがEDE2810を使用し、ブレークポイントを8051で実行中であるコードの中に導入できるようにする。ブレークポイントに遭遇すると、ユーザ選択されたメモリ内容またはCPUレジスタ内容がユーザに送達される。ROMモニタは、それがUARTポート上で受信するコードの第1行が、後に続くコードの第1行のメモリロケーションを示すという規約に従って動作する。したがって、このメモリロケーションは、所望されるブレークポイントに設定され、ROMモニタ内のブレークポイント処理ルーチンを指すだろう。このようにして、コンピュータ2118の表示画面に着席しているユーザは、8051マイクロコントローラプログラムの動作中にブレークポイントを設定し、定期的にこのプログラム内に定義されている多様な変数の値を調べるだろう。
【0103】
入力/出力ピントグルレジスタ2310の集合は、それぞれ対応するVCでアクティブな入力/出力ピンごとに1ビットを含む。各トグルレジスタビットは、対応する入力/出力ピンが状態を切り替える(トグルされる)と、ゼロから1に変化する。これらのビットのすべては、トグル論理積装置2312によってともに論理積が取られ、その結果このAND演算の結果が1に等しいとき、試験されているシステムのあらゆる入力/出力ピンが実行されたという正の徴候がある。さらに、デバイス2312は、ホストワークステーション2114にトグルされていないすべてのピンのアイデンティティを転送するための報告機能を有し、それによって検証エンジニアが試験を完了するのを補助する。
【0104】
XI.行動モデル化カードを有する検証エンジン
図21は、モータ制御装置3012を含む作動アセンブリ3010の形を取る架空ターゲットシステムのブロック図を示し、3相ブラシレスDCモータアセンブリ3014アセンブリ3010は、本発明を明確に説明する目的だけに提示され、それはアセンブリ3010などのアセンブリの検証試験のための方法と関係する。
【0105】
モータアセンブリ3014は、モータ316および可変負荷3018を含む。実践では、モータアセンブリ3014はロボットのアームの位置を決定するだろう。負荷は、存在する場合、ロボットが持ち上げていた物体に応じて変化するだろう。モータ3016の回転体位置は、モータ制御装置3012に電気的に接続されている回転体位置エンコーダ3020によって検出される。モータ3016は、3相切り替え調節器3022の出力によって駆動される。
【0106】
モータ制御装置3012は、位置コマンド入力装置3030からの入力を受け入れる。ロボットの例では、このデバイスは、人がロボットアーム位置を命令できるようにするアクチュエータだろう。デバイス3030を介して命令される位置は、命令された位置を現在位置に比較し、現在位置から所望の位置に回転体を移動するための速度および加速予定を計算するマイクロコントローラ3032の中に送り込まれる。マイクロコントローラ3032は、マイクロプロセッサ3034、およびモータ制御タスクを実行するためのプログラムをホストするメモリ3036を含む。切り替え調節器入力変換ボックス3040は、整流補正コマンドおよび速度補正コマンドを受け入れ、速度補正機能および整流機能を達成するために、切り替え調節器3022のトランジスタを作動する一連のパルスを決定し、送信する。回転体位置コードフォーマット回路3042は、エンコーダ302から回転体位置コードを受け入れ、それらをマイクロプロセッサ3034にとって許容できる形式に変換する。
【0107】
図22を参照すると、作動アセンブリ3010の動作を検証するように適応されている検証システム3110は、本出願の前記図に示される任意の構造に類似した構造を有してよい相互接続アセンブリ3112を含む。相互接続アセンブリ3112は、マイクロプロセッサカード3114、メモリ3036がターゲットシステム内で持つモータ制御プログラムを持つ中央メモリカード3116、回転体位置コードフォーマット回路ハードウェアモデル3118、および回転体位置コードフォーマット回路ハードウェアモデル3120を接続する。ハードウェアモデル3118と3120は、過去の出願に記述されるように、おそらくそれぞれ利用者書き込み可能ゲートアレイ(FGPA)上で実現されるだろう。やはり相互接続アセンブリ3112に接続されているのは、ピコプロセッサ3132、つまりともにカリフォルニア州パロアルト(Palo Alto,California)のサンマイクロシステムズ(Sun Microsystems)およびヒューレットパッカード(Hewlett−Packard)から入手できるジャバピコプロセッサ、およびピコプロセッサ3132が電気モータ3014の行動に基づき入力/出力を模倣できるようにするプログラムを持つメモリ装置3134を含む行動モデルカード3130である。
【0108】
実際の電気機械装置を使用するよりむしろ、電気モータまたはその他の電気機械装置をモデル化する数多くの優位点がある。第1に、電気モータの例には安全性の問題はそれほどないが、それが制御するように設計されている実際の電気機械装置でソフトウェアを検証することがきわめて危険となるだろう多くのインスタンスがあってよい。例えば、原子力発電所の制御で使用されなければならないソフトウェアは、原子力事故を回避するために試験環境で最良検証される。第2に、検証システム3110は、モータ制御装置3012よりはるかに低速である速度で動作してよい。このようにして、それは、モータ制御装置3012の動作をリアルタイムで正確に模倣するために必要とされる時間インスタンスで制御パラメータを送出できない可能性がある。しかしながら、モータ3016の回転体は、不変の物理法則に従って入力の指定された集合に応えて加速、減速する。対照的に、時間は精度の損失なしに行動モデルに関して減速されてよい。電気機械装置の行動モデルの使用に対する別の優位点は、単一行動モデルカードが、メモリ装置3134内に記憶されるプログラムに従って、多くの異なる電気機械装置の内の任意の1つの行動を模倣できるという点である。行動モデルのライブラリは、カリフォルニア州マウンテンビュー(Moutain View,California)のシノプシス社(Synopsys,Inc.)から入手できる。
【0109】
ハードウェアモデルカード3118と3120に同様に、行動モデルカード3130は、それがエミュレートしているターゲットシステムモータアセンブリ3114のあらゆる入力/出力ピンごとに入力/出力ピンを含む。このため、入力/出力信号を狭いバス上にパックする、およびアンパックするには役立たない。
【0110】
ゲート遅延の集合の数および期間によって決定される時間の期間内の入力の集合に呼応するハードウェアモデル3118および3120とは異なり、行動モデルカード3130は、典型的には、その出力が状態を変える前にかなりの数の命令を実行する。相互接続アセンブリ3112が、組み込まれている出願番号第09/336,485号に開示されているように、時間多重化バスである場合、カード3130は、入力の新規集合のその出力を計算するために時間多重化バスシステムクロックの周期性に等しい時間の期間を有する。この種のシステムクロックは、典型的にはMHz範囲の周波数で実行され、ピコプロセッサ3132は、典型的には100MHZ範囲の周波数で実行されるため、これは簡略な行動モデルが出力を生じさせるのに十分な時間を提供するだろう。しかしながら、行動モデルカードには、相互接続アセンブリ制御装置3113内で相互接続アセンブリ休止ピンに送られる出力準備が完了していないピンが備えられる。相互接続アセンブリ3112が時間多重化バスである場合では、これにより、バス制御装置は、行動モデルカード3112が準備完了になるまでシステムクロックを休止させるだろう。
【0111】
さらに、電気機械システムのそれ以外の部分をシミュレーションするプログラムを実行するシミュレーションホストコンピュータ3140は、電気モータ行動モデルカード3130に負荷入力を提供し、記憶装置デバイスはベクタ3142のユーザ入力集合を提供する。
【0112】
図23は、検証を必要とすることがある純粋に通信の、該して電気的な(部分が光学となるだろう)デバイスの例を示す。これは、インターネットまたは該インターネット上でメッセージを送るために使用される種類のルータ3210である。ルータ3210によって適切に送られるためには、接続されたネットワーク3212からのメッセージは特定の規格に従ってフォーマットされなければならない。しかしながら、本規格の範囲内には、そのそれぞれがいくぶん異なって処理されなければならない9つの許可されたフォーマット規格がある。このため、ルータ3210には、9つの異なるフォーマットルーティングブロック3214−3230がある。初期ルーティング3234ブロックは、各メッセージを正しいフォーマットルーティングブロックに送り、パッキングおよび最終ルーティングブロック3236は、同じロケーションに移動するメッセージをともにパックする。
【0113】
図24は、ルータ3210の動作を検証するように構成される検証エンジンを示す。図24の参照番号は、図23のターゲットシステム参照番号に一致し、各ハードウェアモデルが、100が加えられた、モデル化されているルータ3210の一部の参照番号を持つ。人がチップに実装されるシステムという形でルータ3210を設計するとしたら、それをシリコンの中にエッチングする前に、回路設計を注意深く検証することは重要だろう。これを行う1つの方法とは、相互接続アセンブリ3340によって組み込まれている出願で教示される方法で、ルーティングブロック3212−3226および3234ごとにハードウェアモデル3312−3326および3334を構築し、ハードウェアモデルのすべてをともに接続することである。図24に提示される例では、フォーマット9ルーティングブロック3240は、依然として設計されているプロセスにあり、したがってシミュレーションホストコンピュータ3330内でシミュレーションされる。代わりに、フォーマット8ルーティングブロック3228に関して図示されるように、ルーティングブロックは、ターゲットシステムフォーマット9(九)ルーティングブロック3230の入力/出力ピンごとに入力/出力ピンを有する、行動モデルカード3328によってモデル化することができる。この種の回路構成のために検証プロセスで生じる1つの難しさとは、ルータ3210が接続されなければならない環境を正確にモデル化する困難さである。言うまでもなく、人はインターネットに、検証を受ける回路を接続することはできない。したがって、図24上の検証エンジンは、検証されているターゲットシステムを徹底的に試験するために、インターネットトラフィックの完全な範囲を提供するインターネット行動モデル3342を含む。好ましい実施態様では、行動モデル3342は、ユーザ入力を受け取るための手段、例えば、キーボードに接続されるジャックを含み、それによってユーザが、相互接続アセンブリ3340に送信されているデータパケット上で制御の基準を実行できるようにする。
【0114】
加えて、インターネットまたはネットワークモデル3342は、実際のネットワークが、ルータモデル3310を正確に試験するために応えるのと同じ方法で、ルータモデル3310を通して送られるメッセージに応えなければならない。シミュレーションホストコンピュータがネットワークの行動モデルをホストする場合、これは発明の項の背景に記述される方法で検証プロセスを大幅に低速化するだろう。したがって、相互接続アセブリに直接的に接続され、おもに、典型的にはすべての入力がバスの中にパックされ、バスからアンパックされることを必要とするだろうシミュレータをホストしないカードの上で行動モデルをホストすることはきわめて望ましい。メモリ3346内の行動モデルプログラムにより、マイクロプロセッサまたはピコプロセッサ3348は、インターネットの動作を模倣する。バスからデータをパック、アンパックするニーズによってあるがままに制約されていない、行動モデルカード3342と相互接続アセンブリの間のコネクションが専用ポートと呼ばれる。
【0115】
本出願で使用されるように、用語「副部分」は「部分」のすべてを含んでよい。
【0116】
本出願で使用されるように、用語「ピン」は任意の種類の電気導線を意味する。
【0117】
用語「集合」あるいは「セット」は、本出願では数学的な意味で使用され、ただ1つの要素を含む集合をも含む。
【0118】
前記明細書で利用されている用語および表現は、そこで制限の擁護としてではなく、説明の用語として使用され、このような用語および表現の使用においては、図示され、記述されている特徴の同等物、またはその部分を排除する意図はなく、本発明の範囲が以下に続くクレームによってだけ定義、制限されることが認識される。
【図面の簡単な説明】
【図1】
図1は、本発明の好ましい方法および装置を示すために提示される架空のターゲットシステムのブロック図である。
【図2A】
図2Aは、好ましい方法に従って、および本発明の好ましい装置に、図1のターゲットシステムをモデル化するように構成される検証エンジンのブロック図の2分の1である。、
【図2B】
図2Bは、好ましい方法に従って、および本発明の好ましい装置に図1のターゲットシステムをモデル化するように構成される検証エンジンの完全なブロックを形成するために図2Aと結合する。
【図3】
図3は、図2の検証エンジン構成の検証エンジン時間多重化バス時間期間割当ての表である。
【図4】
図4は、本発明の好ましい装置の実施態様の物理的な側面図である。
【図4A】
図4Aは、本発明の代替の好ましい装置の実施態様の物理的な側面図である。
【図4B】
図4Bは、本発明の追加の代替の好ましい装置の実施態様の物理的な側面図である。
【図4C】
図4Cは、本発明のさらに代替の好ましい装置の実施態様の物理的な側面図である。
【図5】
図5は、本発明に従った図4のコアカードの機能ブロック図である。
【図6】
図6は、本発明の好ましい全体的な試験方法のフロー図である。
【図7】
図7は、本発明の好ましい方法に従った駆動方向検出回路の概略図である。
【図8】
図8は、競争/浮動検出論理回路のビットの概略図である。
【図9】
図9は、標準モードの間の図4の装置のシステム制御装置のアクティブ部分のブロック図である。
【図10】
図10は、デバッグモードの間の図4の装置のシステム制御装置のアクティブ部分のブロック図である。
【図11】
図11は、本発明の好ましい実施態様に従ったTMB 競争/浮動チェックアルゴリズムのフローチャートである。
【図12】
図12は、集積回路(IC)設計の架空部分のブロック図である。
【図13】
図13は、本発明に従った仮想試作システム内で実現されるような、図12の集積回路設計の架空部分のブロック図である。
【図14】
図14は、本発明の一部を形成する、インスタンス選択前に示される、インスタンス選択のためのグラフィックユーザインタフェース画面表示である。
【図15】
図15は、本発明の一部を形成する、インスタンス選択後に示される、インスタンス選択のためのグラフィックユーザインタフェース画面表示である。
【図16】
図16は、本発明の一部を形成するVC選択用のグラフィックユーザインタフェース画面表示である。
【図17】
図17は、本発明の一部を形成する入力/出力ピン選択のためのグラフィックユーザインタフェース画面表示である。
【図18】
図18は、本発明の一部を形成するクロックドメイン選択のためのグラフィックユーザインタフェース画面表示である。
【図19】
図19は、本発明の一部を形成するリセットシーケンス選択のためのグラフィックユーザインタフェース画面表示である。
【図20】
図20は、本発明に従った仮想試作システム内の仮想構成要素間でコネクションを実現する代替方法のブロック図である。
【図21】
図21は、本発明を図解する目的で提示される架空のモータおよびモータ制御装置アセンブリのブロック図である。
【図22】
図22は、本発明に従って、図1のモータおよびモータ制御装置アセンブリの動作を検証するように構成される検証エンジンのブロック図である。
【図23】
図23は、本発明を示す目的で提示される架空の信号ルータのブロック図である。
【図24】
図24は、本発明に従って、図23の信号ルータの動作を検証するように構成される検証エンジンのブロック図である。
本特許協力条約出願は、以下の4つの米国特許出願より優先順位を主張する。つまり、1999年1月6日に提出された出願番号第09/228,542号、ともに1999年6月18日に提出された出願番号第09/336,445号および第09/336,284号、ならびに1999年11月19日に提出された出願番号第09/443,175号である。
【0002】
(発明の背景)
本発明は、多くのマルチトランジスタ構成部品を含むターゲットシステム電子設計で開発用の試験を実行するための装置および方法に関連している。このような設計は、チップ実装システムまたはPC基板実装として実現できるだろう。
【0003】
IC設計の複雑度が高まるにつれて、各設計を検証するために要する時間も増す。典型的な現在の設計検証方法論での第1ステップとは、設計を多様な機能ブロックに分割してから、各ブロックを別個に設計し、検証することである。(「構成要素」とも呼ばれる)これらのブロックは、複雑度で50ゲートから10万ゲート以上であり、第1信頼順序までブロックを検証するには数時間から数日の間のコンピュータシミュレーション実行を要することがある。この用途の文脈では、用語「構成要素」はこの種のブロックを指す。
【0004】
しかしながら、これらのすでに検証されたブロックから構成されるターゲットシステム全体の性能を検証するという必要性により大きな課題が提示されている。ターゲットシステム設計は数百万ゲートを含むことがあるため、設計全体をシミュレーションするには、コンピュータ時間の1週間が必要とされる可能性がある。さらに、設計が変更されるたびに、新しいシミュレーション実行が実行されなければならず、設計プロセスを大幅に低速化する。加えて、ターゲットシステムシミュレーションは、電子ファイルフォーマット(「ネットリスト」)での完全な回路説明が使用できる場合にだけ実行することができる。将来は、ある会社が、該会社にとって固有であるいくつかの構成要素、およびターゲットシステム設計者により設計されるそれ以外の構成要素を含むターゲットシステムを製造することはますます典型的となるだろう。典型的には、会社に固有な構成要素にはネットリストは使用できないだろう。
【0005】
さらにプロセスを複雑化するのは、今日、大部分の電子システムが、それらがハードウェア構成要素と埋め込まれているソフトウェア構成要素の両方を含むという点で「埋め込みシステム」である。過去においては、境界線は比較的に単純であった。マイクロプロセッサがシステムのコアとして選ばれ、このプロセッサが特定用途向け集積回路(ASIC)およびその他のカスタム論理回路を含むその周辺環境に接続された。これが基本的なハードウェアシステムを完成させ、ソフトウェア開発のために試作品基板が構築され、使用された。速度が重大であったタスクの場合、生産と開発の両方で多大なコストがかかったが、カスタムハードウェアで実現できたソフトウェアルーチンがあった。今日、IC設計者は、以前はソフトウェアによって実行されていたハードウェア内の多くのタスクを実現し、このようにしてはるかに高速なシステムを作成する大型ICを製造する能力を備えている。このようなシステム内でのハードウェアの大半は特定のソフトウェアと作業するように設計されるため、これには、ハードウェアとソフトウェアの両方をいっしょに開発することが必要となる。残念なことに、ソフトウェア検証には、ハードウェア検証を行うより数桁多いシミュレーションパターンが必要となる。現在では、システムのハードウェア試作品が、典型的にはハードウェア設計の完了時に存在するまで、これらの検証試験を実行する手段はない。ハードウェアエラーがソフトウェア試験中に明らかにされると、それにより、最終化されたハードウェア設計に対する非常に高価な変更を取るか、あるいは面倒くさく、おそらくゆっくりとしたソフトウェアの回避策を講じるかの間で難しい決定を下すことが強制される。
【0006】
埋め込みシステム内に常駐するソフトウェアをデバッグするというタスクを容易にするために、多様な特別なソフトウェアツールが開発されてきた。これらのパッケージは、典型的には、マイクロセッサがアクセス可能である読取専用メモリアセンブリ内に常駐するROMモニタ構成要素を含む。マイクロプロセッサは、ブート時、ROMモニタ内の命令を使用して動作を開始する。別のデバッグパッケージ構成要素は、マイクロプロセッサのピンの何本かに接続される試験コンピュータ上に常駐する。試験コンピュータは、ROMモニタに対し、動作をROMモニタにジャンプさせるブレークポイントとともにマイクロコントローラ上で実行するソフトウェアプログラムをロードするように命令することができる。ROMモニタ命令により、マイクロコントローラCPUは、開発者に表示するために試験コンピュータに接続されるピンを通して指定されたレジスタの内容を送出する。現在では、すべてのハードウェア構成要素が完成され、システム全体が試験される準備ができるまでこの種のデバッグパッケージをその完全な効果まで使用することは、通常、不可能である。代わりに、デバッグパッケージは、ハードウェア構成要素がなくても使用できるだろう。言うまでもなく、これはソフトウェアとハードウェアの対話で発生する問題に遭遇しないだろう。このようなデバッグパッケージが初期に使用されると、システム全体が構築される前にソフトウェアをデバッグするためのその作業においてソフトウェア開発者にとって相当有益となるだろう。
【0007】
ターゲットシステム設計の検証時間を加速するために、多様な方法が使用されてきた。これらは、通常、以下の3つのカテゴリに該当する。つまり、ハードウェアモデラ、エミュレータ、およびシミュレーションアクセラレータである。
【0008】
ハードウェアモデラは、ターゲットシステムブロックの1つにネットリストが存在しないという前記に注記された問題のある状況に対処する。この状況では、ブロックの物理的な実施態様がICまたは外部で接合されたICコア(抽出され、コネクタピンを備えられたICの一部)という形で存在することが通常のケースである。ハードウェアモデラは、このような物理的な実施態様をシミュレーションモデル(「シミュレータ」)を実行しているコンピュータに接続するように設計される。残念なことに、単一のハードウェアもデラは単一の物理実施態様をシミュレータに接続するだけである。追加のハードウェアモデラによってシミュレータに追加の物理実施態様を接続することはできるが、2つの物理的な実施態様間の通信はシミュレータによって実現されねばならず、大幅にシステム性能を低速化するだろう。このため、ハードウェアモデラは、通常、複雑なシステムのシミュレーションプロセスを大幅に加速しない。
【0009】
少なくとも1つのカレントハードウェアモデラにより、ユーザは、モデラの中に挿入されるアダプタボード上に1つまたは複数の物理構成要素を設置できるようになる。このモデラもシミュレータに接続される。モデラにより、設計者は、アダプタボード上の構成要素をイベント駆動型シミュレーションに実装できるようになり、このようにしてネットリストを必要としなくとも構成要素の正確なモデルを入手する。残念なことに、それにも関わらず、物理実施態様間のすべてのコネクションはシミュレータを通過しなければならない。マイクロプロセッサは、ハードウェアモデラ内に設置されると、すべての通信がシミュレータを通して送られなければならないため、それはその目的のために有用であるにははるかに低速すぎるという点を除き、ハードウェア/ソフトウェア共同検証を実行するために使用できるだろう。
【0010】
1つの最近にリリースされた製品は、マイクロプロセッサICまたは外部に接合されたコアを採用し、それをイベント駆動型シミュレータに接続し、ハードウェアおよびソフトウェアの設計者がシステム設計検証中にコアプロセッサの本物のハードウェアモデルを使用できるようにするために、ソフトウェアデバッグツールを活用することを目標としている。しかしながら、この製品を用いて開発されているシステムの実行の全体的な速度は、常に、設計の主要な部分が存在するイベント駆動型シミュレータの速度によって制限されるだろう。これは、効果的なハードウェア/ソフトウェアシミュレーションには低速すぎるだろう。
【0011】
別の使用可能な製品は、システムレベルの高速試作解決策であることが意図される。製品は、事前に穿孔された穴があり、ICが取り付けられていない2つの試作品領域を有する一般試作基板から成り立っている。試作品領域とは、カスタマが、IC、またはプリント回路基板設計でのさまざまなビルディングブロックを表す利用者書き込み可能ゲートアレイ(FGPA)を設置するところである。両方の試作領域内のピンのすべては、固有のカスタムクロスバースイッチの集合を介して(任意のピンから任意のピンへ)送ることができる。これらのクロスバースイッチはプログラム可能であり、その結果送る際の誤りは容易に補正することができる。この製品は、ターゲットシステムの設計速度に近く実行でき、ハードウェア設計が完了した後のソフトウェア開発のために、あるいはシステムレベルの検証のために使用することができる柔軟な試作品の作成を容易にする。残念なことに、この製品とのソフトウェアデバッグツールまたはイベント駆動型シミュレータの統合がないため、それは開発段階中の容易なハードウェア/ソフトウェア共同検証を可能としない。さらに、システムが3つまたは4つ以上の構成要素を含むとき、この素子はかなり有用ではない。
【0012】
シミュレーションアクセラレータは、基本的には、シミュレーション実行時間を大幅に加速するカスタマイズされた並列処理コンピュータである。しかしながら、アクセラレータは、ネットリストが使用できないシステム構成要素に関して前記に注記された問題に対処しない。
【0013】
エミュレータは、作成されている設計をエミュレートするためにFPGAを使用する。ソフトウェアツールを使用すると、設計ネットリストは、FGPAのハードウェアエミュレーションセットの間で細分される。FGPAの相互接続セットは、FPGAのハードウェアエミュレーションセットを再構成できるように相互接続するために使用される。エミュレータは、他のシミュレーション方法より大幅に高速であるが、それらは設計ソースファイルのフォーマットに大きな制約を課し、大幅に拡張し、チップ上でシステムをエミュレートするのは困難である。
【0014】
新しいターゲットシステム設計方法論は、仮想構成要素(VC)の再利用に大いに依存するだろう。VCは、典型的には、FPGAロード可能符号化ファイルの形で開発者が利用できるだろう。加えて、契約会社は、VCをシリコン上にエッチングするためのホトリトグラフィマスクを含む、生産ツールのセットにアクセスするだろう。ターゲットシステムの中に実装される多様なVCを設計し、販売することから成り立つ新規事業分野が展開されている。実際のシステム設計は、通常、VCの集合体を使用し、通常複数の新しいカスタム設計ブロックを追加し、完全なシステムを作成する同期設計となるだろう。設計を中規模の設計ブロックに区分することは、設計者によって実行され、これらのブロックは2本から4本の標準バスによって相互接続されるだろう。
【0015】
電子設計に精通している者は、集積回路上で実現されなければならない複雑な設計の場合、概略図セットの作成が冗長なプロセスの第1歩にすぎないことを容易に認識するだろう。そこで、集積回路の物理レイアウトが決定されなければならない。特にシリコンの中にエッチングすることが物理的なレイアウトに対しいくつかの制約を課すことが考慮される場合には、これはときには困難なプロセスである。いったん設計が集積回路の中に提供されると、会社がICを生産できるようにするホトリトグラフィマスクを含む情報および生産のツールは、典型的には企業秘密として守られる1つの貴重な知的財産となる。しかしながら、製品設計を企業秘密として守りたいという希望は、設計の使用、または設計の構成要素部分を、設計創始者と直接的に競合していない可能性のある関心のある関係者に販売したいという希望と矛盾する。例えば、第1の企業が、それがレーダシステム用の信号処理を実行するチップで使用できる(おそらく数千のトランジスタを含む)信号処理構成部品を設計したことがある。第2の企業が、同じ構成部品を音声認識ICの一部として、あるいはおそらく地震信号を解析するために使用されるだろうICの一部として使用することを希望する場合がある。
【0016】
この問題に対処するため、第1企業のためにICを生産する会社は、第2企業のために全体的な設計の一部として構成部品を生産することを許可されてよい。このようにして、設計は、第2企業が設計の詳細に一度もアクセスすることなく許可されてよい。しかしながら、第2企業は、この時点で、面倒な設計問題に直面する。つまり、その内部活動が第2企業には未知である構成部品を使用するシステムの設計をどのようにして検証できるのかである。第2企業の状況を緩和するために、第1企業は、構成部品をモデル化するが、第2企業が回路説明にアクセスできないように符号化されているFGPAロード可能ファイルを供給してよい。代わりに、ICまたは外部に接合されているICコアが使用されてもよい。しかしながら、これは、それにも関わらずシステム統合を困難なタスクとして残し、構成部品をシステムの残りの中にモデル化するように構成されているFGPAをブレッドボード上に組むことを必要とする。さらに、試験段階においても、構成部品の内部活動を知らなければ、チップを他の構成部品に相互接続するタスクは問題となる可能性がある。
【0017】
電子システムを試験する上で遭遇されるもう1つの問題とは、試験の完全さの何らかのレベルを保証することである。複雑なシステムのあらゆる状態を完全に試験することは、何世紀でなくても数十年を要するだろうため実際的ではない。試験の完全さのより達成可能なレベルとは、あらゆる構成要素ピンをトグル(両方のバイナリ状態へ駆動)することである。現在のところ、ユーザが少なくともこのレベルの完全さまでターゲットシステムを試験することを許すハードウェアシステムは使用できない。
【0018】
回路の少なくとも一部がハードウェア内でモデル化されるシステムにおいて、問題は、シミュレータ内の行動モデルが検証されているシステムの一部を表すときに遭遇される。設計者は、自分がある構成部品の内部論理回路を設計していないが、行動モデル、つまり設計者が完成した攻勢部品内に存在することを期待する入力対出力の関係性を模倣するコンピュータプログラムを開発したときに、これを行うことを選ぶことができる。検証エンジンに常駐するハードウェアモデルであらゆるそれ以外の構成要素をモデル化することは可能であることがあるが、これまで検証エンジン内で行動モデルをホストすることは可能ではなかっただろう。
【0019】
この制限が、少なくとも2つの悩ませる問題を提起する。第1の問題は、設計の一部またはターゲットシステム自体の一部が、ネットリストが使用できる点まで最終化されないときに遭遇される。関連する問題は、ターゲットシステムが、利用者書き込み可能ゲートアレイ(FGPA)によってエミュレートできない電気機械装置を制御する、あるいは制御しない場合には電気機械装置と接続するときに遭遇される。
【0020】
実際の世界のインタフェースも、回路検証者に問題を提起する。例えば、原子力発電所内の電子機器回路は、操作上使用される前に完全に検証されなければならない。しかしながら、原子力発電所を運用するためにそれを使用せずに、この制御回路要素を検証することは困難である。原子力災害の危険を冒さずに制御回路の動作を検証する1つの方法は、制御回路をシミュレーションするシミュレーションプログラムの中に原子力発電所の電気機械部分の行動モデルを含めることである。制御回路がハードウェア内でモデル化されている場合、現在では、前述されたように通信上制限されていない関連付けられた電気機械要素の行動をモデル化するための準備ができた機能はない。
【0021】
(発明の要約)
第1の好ましい実施態様においては、本発明は、複数のターゲットシステムバスにより相互接続される複数の構成要素を有するターゲットシステムの設計を検証するための検証エンジンである。検証エンジンは、ともに1つの前記構成要素として構成され、ハードウェアモデル入力/出力ピンの集合を有する第1ハードウェアモデルおよび第2ハードウェアモデルを備える。さらに、第1バスラッパーが第1ハードウェアモデルに接続され、第2バスラッパーが第2ハードウェアモデルに接続される。さらに、バスラインの集合はそれぞれ第1バスラッパーおよび第2バスラッパーに接続される。各バスラッパーは、バスラインにそれぞれのハードウェアモデル入力/出力ピンを切り替え自在に通信可能に接続し、切り替え可能通信構成回路を制御する制御ブロックを有する切り替え可能通信回路も有する。バスラインの少なくとも数本に接続されるシステム制御装置は、バスラインによって前記バスラッパーごとに時間同期情報のシーケンスを送信するように適応されている。時間同期情報は、前記制御ブロックが、時間スロット番号を統一して決定できるようにするのに十分である。応えて、制御ブロックは、時間スロット番号を統一して決定し、そこに応えて、それぞれの制御ブロックは少なくとも1本の入力/出力ピンを、第1ハードウェアモデルからの少なくとも1本の入力/出力回線が第2ハードウェアモデルの入力/出力回線に接続されるように、前記バスラインとの通信連絡に切り替える。
【0022】
別個の好ましい態様では、本発明は、複数のターゲットシステムバスによって相互接続される複数の構成要素を有するターゲットシステムの設計を検証するための検証エンジンである。検証エンジンは、それぞれがピンのバスラッパー/ハードウェアモデル集合、およびピンのバスラッパー/バスライン集合を有する複数の再構成可能なバスラッパー、各前記バスラッパー/ハードウェアモデルピンをバスラッパー/バスラインピンに切り替え自在に通信可能に接続する切り替え可能通信回路、および前記切り替え可能通信回路を制御する制御ブロックを備える。バスラインの集合は、それぞれバスラッパーごとにバスライン/バスラッパーピンを有する。各バスライン/バスラッパーピンは、バスラッパー/バスラインピンに接続される。システム制御装置は、バスラインの少なくとも数本に接続され、制御ブロックが時間スロット番号を統一して決定するのに十分な時間同期情報を伝送するように適応されている。さらに、時間同期情報に応えて、各制御ブロックは、時間スロット番号を決定し、時間スロット番号の所定の番号に応えて、少なくとも1つのバスラパー/ハードウェアモデルピンを、前記バスラッパー/バスラインピンとの通信連絡に切り替える。
【0023】
追加の別個の好ましい態様においては、本発明は、第1ドライバの第1ドライバ入力ピンに通信可能に接続される第1回路ノードと、第2ドライバの第2ドライバ入力ピンに通信可能に接続される第2回路ノードの間の駆動方向を決定する方法である。第1ドライバおよび第2ドライバは、1本の接続回線により相互に反対に接続される。さらに、第1および第2回路ノードは、第1ドライバまたは第2ドライバのどちらかをイネーブルすることによって、それぞれ第1回路ノードまたは第2回路ノードからの入力と接続されるように一時的に命令される。方法は、第1回路ノードが駆動中であり、第1フォーマットで第1試験結果を記録しているかどうかを判断することによって自動的に第1試験結果を備える。
【0024】
依然として別の追加の別個の好ましい態様においては、本発明は、第1構成要素入力/出力ピンの集合を有する第1電気的構成要素を、第2構成要素入力/出力ピンの集合を有する第2電気的構成要素に選択的に結合するように適応されているバスである。バスは、前記第1構成要素入力/出力ピンに接続されるように適応された第1バスラッパー対構成要素ピンの集合、第1バスラッパーバスラインピンの集合、各ラッチが、前記第1バスラッパー対構成要素ピンへ、および前記第1バスラッパーバスラインピンに切り替え自在で通信可能に接続されるラッチの集合、およびローカル状態センサを有する第1バスラッパーを備える。第2バスラッパーは、第2構成要素入力/出力ピンに接続されるように適応されている第2バスラッパー対構成要素ピンの集合、第2バスラッパーバスラインピンの集合、および各ラッチが、前記第2バスラッパー対構成要素ピンへ、および前記第2バスラッパーバスラインピンへ切り替え自在で通信可能に接続されているラッチの集合を有する。バスライン導線の集合は、各第1バスラッパーバスラインピンを第2バスラッパーバスラインピンに接続する。システム制御装置は、バスライン導線の集合に接続され、時間スロットのシーケンスを定義する時間スロット番号のシーケンスを前記バスラッパーに送信するように適応されているシステム制御装置バスラインピンの集合を有する。各バスラッパーは、各時間スロット番号列挙子の受信時に、存在するならば、そのラッチの内のどれが時間スロット番号の間にアクティブであるのかを決定するように適応され、第1バスラッパーではさらに、少なくとも部分的に前記ローカル状態センサおよび前記時間スロット番号によって、どのアクティブラッチが第1バスラッパー対構成要素ピンとの送信通信結合に切り替えられるのか、およびどれが第1バスラッパーバスラインピンとの送信通信結合に切り替えられるのかを判断するように適応されている。
【0025】
依然として別の追加の別の好ましい態様においては、本発明は、前記構成要素間でデータの定められたフローを可能にする複数のバスによって接続される複数の構成部品から構成されるターゲットシステム設計の検証試験のための方法であり、該方法は、構成要素の少なくともいくつかのハードウェアモデルを時間多重化されたバスに接続することと、時間多重化されたバスを制御し、ハードウェアモデルの間の前記定められたデータのフローを可能にすることを備える。
【0026】
追加の別個の好ましい態様においては、本発明は、装置または双方向ピンを備える集積回路に接続するために、装置用のネットリストを記憶するコンピュータ読取り専用メモリデバイスを備える仮想装置のどちらかである。装置または仮想装置は、高駆動時間中に双方向ピンを高にソフト駆動するように、および低駆動時間中に双方向ピンを低にソフト駆動するように適応されているソフト駆動装置を備える。さらに、第1フリップフロップは、その高駆動時間中に双方向ピンの出力を保存するように構成され、第2フリップフロップは、その低駆動時間中に双方向ピンの出力を保存するように構成される。さらに、排他的論理和ORゲートは、第1フリップフロップの出力に接続される第1入力、および第2フリップフロップの出力に接続される第2入力を有する。高駆動時間および低駆動時間の後、排他的論理和ORゲートの出力は、それによりピン駆動方向を示す。この段落の説明に従って、回路用の回路記述を記憶するコンピュータ読取り可能媒体は、本発明のまた別の別個の好ましい態様である。
【0027】
依然としてさらに好ましい態様においては、本発明は、開発者によるターゲットシステム電子機器回路設計の試作を容易にするための装置を備える。試作されなければならないターゲットシステム電子機器回路設計は、開発者にとって未知である場合がある内部構造を有し、第1ピンを有する第1構成要素、第2構成要素、および第1構成要素の第1ピンに第1信号を送信する第3構成要素を含む必要がある。デバイスは、ソケット、およびシミュレーション言語で作成されるプログラムを持ち、第3構成要素をシミュレーションし、第1信号をモデル化する第1モデル状態を形成するように適応されているメモリアセンブリを含むコンピュータを備える。コンピュータのメモリ内に記憶されているコンピュータソフトウェアオブジェクトは、第1モデル状態を第1ソケットコマンドに変換し、それにより第1信号をモデル化する第1ソケット出力信号をソケットから送信させるように適応されている。さらに、通信アセンブリは、コンピュータ、および第1構成要素をモデル化するように適応されている第1ハードウェアモデルに作動できるように結合され、第1ピンをモデル化し、通信アセンブリに作動できるように接続される第1モデルピンを含む。さらに、第2ハードウェアモデルは、第2構成要素をモデル化するように適応され、通信アセンブリに作動できるように接続される。最後に、サーバアセンブリは、ソケットと通信アセンブリの間で相互接続され、第1ソケット出力信号に応えて、第1信号をモデル化する第1通信アセンブリ信号を作成するように適応され、ここで通信アセンブリは第1通信アセンブリ信号を第1モデルピンに渡すように適応されている。
【0028】
依然としてさらに別個の好ましい態様においては、本発明は、開発者によるターゲットシステム電子設計の試作を容易にするための装置である。ターゲットシステム電子設計は、開発者にとっては未知である場合がある内部構造を有し、第1ピンを有する第1構成要素、第2構成要素、および第1構成要素の第1ピンから第1信号を受信し、第1信号に応えて第1状態を形成する第3構成要素を含む必要がある。デバイス自体は、通信アセンブリ、および第1構成要素をモデル化するように適応され、第1ピンをモデル化する第1モデルピンを含む第1ハードウェアモデルを備える。さらに、第1モデルピンは、通信アセンブリに作動できるように接続され、第1ハードウェアモデルは、第1ピンから第1信号を送信するようにさらに適応されている。デバイスは、さらに、第2構成要素をモデル化するように適応されている第2ハードウェアモデルを含み、それは通信アセンブリに作動できるように接続されている。コンピュータは、ソケット、および第1構成要素をシミュレーションし、ソケット上で第1ソケット信号を受信するプログラムを持つメモリアセンブリを含む。コンピュータは、さらに、通信アセンブリに作動できるように接続される。コンピュータソフトウェアオブジェクトは、コンピュータのメモリ内に記憶され、第3構成要素をモデル化し、第1ソケット信号を受信し、第1ソケット信号に応えて第1状態をモデル化する第1モデル状態を形成するように適応されている。サーバアセンブリは、ソケットと通信アセンブリの間で相互接続され、第1通信アセンブリ信号の受信に応えて、第1信号をモデル化する第1ソケット信号を作成、送信するように適応されている。
【0029】
依然としてまだ別個の好ましい態様においては、本発明は、開発者によるターゲットシステム電気機器回路の試作を容易にするデバイスである。電子機器回路設計は、レジスタ内容を持つレジスタを有するマイクロプロセッサ、マイクロプロセッサ上で実行するように適応されているプログラムを持つコンピュータメモリアセンブリ、および開発者およびマイクロプロセッサをコンピュータメモリおよび構成要素と接続する第1通信リンクアセンブリにとって未知である場合がある内部構造を有する構成要素とを含まなければならない。デバイスは、モデルレジスタ内容を形成することにより少なくとも部分的にマイクロプロセッサをモデル化するように適応されているハードウェアで実現されるマイクロプロセッサモデルを備える。構成要素モデルメモリアセンブリをモデル化するように適応されている構成要素モデルは、プログラムおよびメモリ内容を持つ。モデル通信アセンブリはモデルメモリアセンブリおよび構成要素モデルをマイクロプロセッサモデルに接続する。コンピュータおよびリンクと報告アセンブリが、コンピュータをモデル通信アセンブリにリンクし、メモリ内容の選択された内容をプログラム内の開発者によって指定される点でコンピュータに送達するように適応されている。
【0030】
依然としてさらに別個の好ましい態様においては、本発明は、構成要素の集合を試験するための検証エンジンであり、そのそれぞれは入力/出力ピンの集合を有する。検証エンジンは、構成要素ピンの集合のトグルカバレージを保証する能力を有する。検証エンジンは、入力/出力ピンのそれぞれにトグル検出器を有する相互接続アセンブリを備える。各トグル検出器の出力はメモリ空間に記録される。検出および報告アセンブリは、存在する場合、入力/出力ピンのどれがトグルされていないのかを検出し、ユーザに対し報告する。
【0031】
依然としてさらに別個の好ましい態様においては、本発明は、そのそれぞれがシステムハードウェア記述のターゲットシステム構成要素名によって指定されるターゲットシステム構成要素の集合を含むシステムレベルハードウェア記述を、そのそれぞれがハードウェアモデルのライブラリ内に存在し、仮想構成要素名によって指定される仮想構成要素の集合の中にマッピングする方法である。方法は、システムレベルハードウェア記述をターゲットシステム構成要素の中に解析するステップと、ターゲットシステム構成要素を表すターゲットシステム構成要素名を表示するステップとを備える。仮想構成要素名が表示され、ユーザは、ターゲットシステム構成要素名を仮想構成要素名に一致させ、それにより仮想構成要素名に対応するハードウェアモデルをターゲットシステム構成要素用のモデルとして指定する。
【0032】
依然としてさらに別個の好ましい態様においては、本発明は、ターゲットシステム構成要素の集合を含むシステムレベルハードウェア記述を、検証エンジン内でモデル化されなければならない構成要素の第1サブ集合、およびシミュレータの中でモデル化されなければならない構成要素の第2サブ集合に区分する方法である。各ターゲットシステム構成要素は、ターゲットシステム構成名により指定される。方法は、システムレベルハードウェア記述をターゲットシステム構成要素の集合の中に解析するステップと、ターゲットシステム構成要素名を表示するステップと、ユーザがターゲットシステム構成要素名に対応するターゲットシステム構成要素を、構成要素の第1サブ集合または構成要素の第2サブ集合に属するとして指定することができるようにするステップとを備える。
【0033】
依然としてさらに別個の好ましい態様においては、本発明は、その内部構造およびIC生産情報が存在するが、設計者が利用できない構成要素を有する集積回路(IC)の第1部分を、および第2部分モデルが存在するICの第2部分に構成要素を相互接続するための相互接続方式を効率的に設計するために、設計者によって使用されるための方法である。方法は、再構成可能相互接続アセンブリ、FPGA、およびそのそれぞれが使用可能なFPGAロード可能ファイルによって実現されてよく、その内部構造に関し生産情報が存在するが、設計者が利用できない仮想構成要素指示子の集合を提供するステップとを備える。設計者は、第1部分のさらに高いレベルのシステム記述を作成するために電子設計ソフトウェアパッケージを使用し、さらに高いレベルのシステム記述が構成要素の第1機能記述を含む。それから、設計者は、仮想構成要素の集合にアクセスし、第1機能記述に基づき、ライブラリから仮想構成要素を選択する。第1FPGAロード可能ファイルは、仮想構成要素をFPGAで実現するために利用できる。第1FPGAロード可能ファイルは第1FPGAにロードされる。再構成可能相互接続アセンブリは、第1FPGAを第2部分モデルに相互接続し、多成分電子システムを形成するために使用される。多成分電子システムはその動作を検証するために試験され、補正された多成分電子システムを形成するために、エラーが発見されると補正される。
【0034】
依然として別の追加の別個の好ましい態様においては、本発明は、構成要素の集合を有するターゲットシステムをモデル化するように適応されている検証エンジンである。検証エンジンは、各ハードウェアモデルが1つの構成要素を表す、非常に多数のハードウェアモデルを備える。バスは、ともにハードウェアモデルをリンクし、システム制御装置を含む。コンピュータはハードウェアモデルによって表されない構成要素のシミュレーションプログラムを実行し、それによりシミュレーションされる構成要素である。さらに、コンピュータは、システム制御装置の作動できるように接続される。ラッチの集合はバスに作動できるように接続される。システム制御装置は、すべての出力信号をシミュレーションプログラムからラッチの集合に向け、ラッチの集合はバスおよびハードウェアモデルに対してシミュレーションされた構成要素を表す。
【0035】
発明の前記およびそれ以外の目的、特徴、および優位点は、添付図面とともに解釈される本発明の以下の詳細な説明を考慮するときにさらに容易に理解されるだろう。
【0036】
(好ましい実施態様の詳細な説明)
I.架空ターゲットシステム
図1は、本発明の好ましい実施態様によってどのようにターゲットシステムが検証されてよいのかを図解する目的で、架空音声認識ターゲットシステムを示す。以下の説明においては、用語「ターゲットシステム」は、検証エンジンの一部であるというのと対照的に、ターゲットシステム設計の動作または一部を示すための形容として使用される。例えば、ターゲットシステムクロック信号とは、検証されているターゲットシステム設計の一部であるクロック信号である。検証エンジンシステムクロック信号とは、検証エンジンが独自のタイミングを調整するために使用する信号のことである。
【0037】
ターゲットシステム10は、アナログ/デジタル(A/D)変換器12、離散フーリエ変換(DFT)エンジン14、音素認識プロセッサ16、データプロセッサ18(8051マイクロプロセッサ)、およびデータプロセッサ18がプロセッサ16からの音素情報に基づいたワード認識を可能とするためのプログラムを含むDRAM20を含む。さらに、コンテキスト認識ポストプロセッサ40は、同音異義語の場合、どの同音異義語が正しいのか、あるいはワードが部分的に不鮮明に発音される場合には、話者が言わんとすることが何かを判断するためにデータプロセッサ18によって生じるワードを調べる。コンテキスト認識ポストプロセッサ40によって補正されたワードは、データプロセッサ18が話者の音声パターンに適応できるように、データプロセッサ18に戻される。それから、データプロセッサ18は、コンテキスト認識プロセッサ40から受け取られるワードから音素を決定し、これらの音素を、それが話者の音声パターンに適応できるように、音素認識プロセッサ16に送り返す。
【0038】
提案されているターゲットシステム10は、典型的にはマイクロフォンまたはテーププレーヤーに接続される、入力回線22によって外界に接続される。出力バス23は、ASCIIフォーマットで、認識されたワードを表す一連の文字を、表示システムなどのなんらかの受信装置に送達する。ターゲットシステムクロック36は、通常、システム10を200MHZで駆動するが、出力バスは子の速度の1024分の1でクロックされる。出力バスはターゲットシステム10の内部バスより長く、さらに多くのエネルギーを使用するため、エネルギーを節約するにはさらに低速度が望ましいが、依然としてターゲットシステム10の出力を送達するほど十分に速い。さらに低速のバス速度を実現するには、ポストプロセッサ40は2つのクロック入力「A」と「B」を含み、「A」はコンテキスト認識回路を駆動し、「B」はポストプロセッサ40の出力を読み出し、1024カウンタ42による除算によって駆動される。
【0039】
ターゲットシステム10の内部コネクションは、デジタル化された音をDFTエンジン14に移す16ビットA/D出力データバス24、DFT出力データを音素認識プロセッサ16に移す96ビットDFT出力データバスを含む。40ビット双方向マルチポートデータプロセッサバス28は、データプロセッサ18にコメントデータとともに認識された音素を送信し、データプロセッサ18から音素認識プロセッサ16にときおり補正される音素を送信し、コンテキスト認識ポストプロセッサ40にワードを送信し、ポストプロセッサ40からデータプロセッサ18に補正されたワードを送信し、データプロセッサ18がDRAM20から指示を得ることができるようにする。さらに、離散データ回線34の第2集合がデータプロセッサ16をA/D変換器12にリンクするに従って、離散データ回線32の第1集合が、データプロセッサ18を音素認識回路16にリンクする。
【0040】
システム運用では、前記に注記されたように、A/Dが65マイクロ秒ごとに入力回線22をサンプリングする。ターゲットシステムクロックは200MHz速度で動作する。しかしながら、人間の耳は10ミリ秒未満内に発生する遷移を検出することはできないため、スペクトルは毎秒100回だけ96ビットDFTバス上で送達される。しかしながら、スペクトルが送達されるとき、音素認識回路16を送達するには、1,000クロックサイクル、つまり5マイクロ秒を要する。音素認識回路16は、それが音素を認識するたびに、音素コードをデータプロセッサ18に送信する。このイベントは、非周期的に発生し、データPロセッサ18に送信される割込みを生じさせ、それがその後で、音素コードおよび識別タグを検索するためにデータ処理バス28を制御する。音素認識は、平均毎秒約9回発生する。データプロセッサ18によって実行されるワード認識は、平均毎秒約3回発生する。コンテキスト認識明確化は、平均4秒毎に発生し、その結果識別タグによって特定される正しい音素を音素認識回路に送り返すデータプロセッサに、逆方向に送られなければならない。
【0041】
II.架空ターゲットシステムのモデル化
図2は、本発明に従った検証エンジン60を示す。音素認識回路16を除き、ターゲットシステム10の構成要素のすべては、ハードウェアモデルによってモデル化され、データプロセッサ18は、実際の8051マイクロコントローラの動作を模倣するように構成されるFPGA66によってモデル化されている。また、抽出され、入力/出力ピンを備えるIC設計の一部である、外部に接合されたICコアを使用することも可能である。多くの状況では、マイクロプロセッサは、直接的に使用されてよいチップとして販売されてよい。DFTエンジン14およびA/D変換器12は、それぞれDFTエンジンIC64およびAD変換器IC62によってシミュレーションされる。エスオーディム(SODIMM)モジュールを含む中央メモリ装置68がDRAM20をモデル化する。コンテキスト認識ポストプロセッサ40は、FPGAロード可能ファイルで適切に構成されている利用者書き込み可能ゲートアレイ(FPGA)70によってモデル化される。ダミーハードウェアモデルFPGA72は、シミュレーションされた音素認識回路16のために入力/出力データを記憶する。リンク機構は、以下にさらに詳細に説明されるだろう。ハードウェアモデル62、64,66、68、70および72のそれぞれ一つが、再構成可能な、適切に構成された「バスラッパー」それぞれFPGA74、76、78、80、82、および84を介して検証エンジン128ビット時間多重化バス(TMB)110にリンクされる。システム制御装置112は、時間多重化バス110を制御する。さらに、「スヌープ」バッファ67には、「スヌープ」バッファバスラッパー79が備えられ、ユーザが標準モード動作の割込みの後に、TMB110で送信されるメッセージを見ることができるようにする。これらの値はデバッグに有効である。人間の話のテープ録音を収容するテーププレーヤー89は、A/D変換器IC62に対する入力として使用され、それによって検証エンジン60に対する試験ベクタの集合を提供する。
【0042】
図3を参照すると、TMB110は、その動作を時間スロット番号のシーケンスに分離し、各時間スロット番号で少なくとも1つのターゲットシステムバスによって取り扱われる通信の少なくとも一部を実行することによってターゲットシステムの構成要素を接続するバスの動作を連続してモデル化させられる。時間スロット番号のシーケンスは、検証エンジン60の標準モード動作中に連続して反復される。特に、バス110は、A/D出力バス24およびDFTバス26(時間スロット番号1)、データプロセッサバス28(時間スロット番号2)、離散信号(時間スロット番号3)、および出力バス23(時間スロット番号4)の機能を実行する。代替の好ましい実施態様においては、システム制御装置112から時間スロット番号は送信されないが、各バスラッパー144が、独立してであるが、統一して時間スロット番号をシステムクロックおよび/またはシステム制御装置112から送信されるその他の信号から計算する。
【0043】
III.外部ツールへの検証エンジンコネクション
図2を参照すると、システム制御装置112は、標準インテル(Intel)R960バス134に接続される。インテルR960バスは、アダプタカード136を介して、その結果としてシステム制御装置112を制御するワークステーション114に接続される標準周辺コネクションインタフェース(PCI)バス138に接続される。
【0044】
ホストワークステーション14は、後述されるサーバプロセス117も干すとする。さらにホストワークステーション114に接続されているのは、開発者の検証エンジン60の構成および使用を容易にするGUI115をホストするグラフィックユーザインタフェース(GUI)ホストコンピュータ119である。さらに標準ローカルエリアネットワーク116を介してホストワークステーション114に接続されているのは、音素認識回路16のシミュレーションプログラム86を実行しているシミュレーションホストコンピュータ118である。
【0045】
デバッグプログラム126も、コンピュータ118によってホストされ、コンピュータ118に着席している開発者にパラメータ値送達する目的で8051マイクロコントローラのフラッシュRAM内の協調プログラムと対話する。
【0046】
GUI115は、開発者からシステム設計情報を受信する。それから開発者は、GUIを使用し、シミュレーションプログラム86によってシミュレーションされなければならない部分と検証エンジン60内に常駐する部分の間でターゲットシステム設計を分割する。それから、GUI115はシミュレーションプログラム86内に挿入される適切な設計データ、(後述され、典型的にはやはりワークステーション114に常駐する)サーバプロセス117用のデータ変換テーブル、および検証エンジン60にロードされる構成データを作成する。さらに、GUI115は、検証エンジン60内に記憶され、ユーザ設計の一部を表すFPGAの中にロードされなければならないあらゆるFPGA構成ファイルのユーザによる入力を容易にする。検証システム問題が発生すると、GUIは、デバッグモードで検証エンジンを制御するために使用することもできる。その他の動作中、GUI115はスヌープバッファ67からのデータ検索を容易にすることができる。それから、GUI115はこの情報をフォーマットし、開発者に表示することができる。
【0047】
ホストワークステーション114上で実行しているサーバプロセス117は、検証エンジン60およびGUI115と対話するシミュレーションプログラム86などの多様なソフトウェアプログラム間でのリアルタイム連続通信を担当する。要求がホストコンピュータ118または119から出現すると、サーバ117はその要求を、エンジンシステム制御装置112に適切なフォーマットにフォーマットし直し、接続するPCIバス138を介して制御装置112にそれを送信する。検証エンジン60がホストコンピュータ118または119に転送されるデータを有するとき、それはまずこのデータを、それをフォーマットし直してから、データを適切なホストコンピュータ118または119に戻すサーバ117に転送する。
【0048】
シミュレーションプログラム86は、ダミーハードウェアモジュール72を介してターゲットシステム10の残りの検証エンジン実現と通信する。ダミーハードウェアモジュール72は、ハードウェアモデル72の外部導線に、ターゲットシステム10内の音素認識回路16の入力/出力ピンの動作を模倣させるラッチの集合を含む。バスラッパー84は、すべてのバスラッパー74−84が含む(後述される)標準レジスタを含む。したがって、ダミーハードウェアモデル72は、定期検証エンジン60動作中にダミーハードウェアモデル72が残りの検証エンジン60にとって実際の音素認識回路16のように見えるように、他のハードウェアモデル62から70のすべてが行うのと同じように検証エンジン60の残りに接続する。
【0049】
技能のある人が認識するように、ダミーハードウェアモデル72は、シミュレーションプログラム86が新しい出力を持つたびにシミュレーションプログラム86によって更新されなければならない。同様に、検証エンジンインプリメンテーションからの新規データ、ターゲットシステム10の他の部分は、ダミーハードウェアモデル72に対してだけではなくシミュレーションプログラム86にも送信されなければならない。この通信は、TMB110からの新しい、変更された入力を受信し、割込みを介してこのイベントをシステム制御装置112に通知するダミーハードウェアモデル72で開始する一連のステップで実行される。それから、システム制御装置112は、ダミーハードウェアモデル72内に記憶されるデータワードをフェッチし、それらをシミュレーションホストコンピュータ118に中継する。
【0050】
システム制御装置112は、それが、ダミーハードウェアモデル72に中継するシミュレーションホストコンピュータ118からの応答を受信するまでTMBの動作を凍結する。このようにして、ダミーハードウェアモデル72は、TMB110に対して、実際のターゲットシステム10内で音素認識回路によって提示されるだろう出力状態を提示する。これらの更新を行うのに必要な時間はシステム運用を低速化するが、それは、シミュレーションプログラム86が実行し、データを送信し、ホストワークステーション114からデータを受信するのに必要なはるかに長い時間と比較すると、かなり小さい時間要求である。
【0051】
ダミーハードウェアモデル72は、おもに試験中に割込み信号を発光または受信する目的で、外部出力ピン73および外部入力ピン75も含む。
【0052】
シミュレータに接続する検証エンジン60での1つの潜在的な問題は、音素認識回路がソフトウェアでシミュレーションされる場合、DFTバス26で発生する。このバスは、実際には、ターゲットシステムが動作中である時間の.05%だけデータを送達している。しかしながら、バスは技術的にはつねに動作中であり、実際のデータ伝送が発生していないときにはすべてのゼロの集合を読み出すだけである。音素認識はネットワーク116によってホストワークステーション114に接続されるコンピュータ118でシミュレーションされる(図2を参照すること)ため、データをそれに送信するのに必要とされる時間の長さは、それがハードウェアモデル化された回路にとってよりはるかに長くなる。ダミーのすべてのゼロの出力がクロックサイクルごとにコンピュータ118に送信されなければならなかった場合、システム動作は徐行まで低速化されるだろう。この状況を回避するために、ダミーハードウェアモジュール72は、TMB110からのその入力が変更するときだけ、システム制御装置112に割込みを送信するように構成される。その結果として、DFT IC64がDFTを発しない限り、検証エンジン60の動作は実際の予測される可動速度に相対的に近い高速ペースで進行する。前記に注記されたように、DFTは10ミリ秒ごとに発せられるにすぎない。検証エンジン動作はDFTの送達に必要とされる1,000のターゲットシステムクロックサイクルの間、大幅に低速化するが、これはすべての総ターゲットシステムクロックサイクルの2%を表すにすぎない。
【0053】
検証エンジン60の1つの考えられる優位点とは、設計の多様な段階でのシステム構成要素は、システム試験のためにともにリンクされてよいという点である。この例では、データプロセッサ18、DFTエンジン14、およびA/D変換機12はすべて完了された設計である。この執筆の時点では、さらに大きな設計に組み込むためにこのような設計を購入することはますます容易になってきている。しかしながら、この図解では、音素認識回路16およびコンテキスト認識ポストプロセッサ40は、ともに依然として開発中である。図示されている試験構成では、音声認識回路16の設計は、最も注意深く精査されており、シミュレータ内で試験中に変更されてよい。試験のそれ以降の区切りで、音素認識回路16の設計がFPGAにロードされ、ポストプロセッサ40の設計がシミュレーションされ、さらにデバッグされ、開発されることが考えられる。
【0054】
図4は検証エンジン60の汎用化された物理図面であり、コアカードと呼ばれるハードウェアモデル/バスラッパーカードを、時間多重バス物理バックプレーン124のバスピンソケット122へのユニット内のプラグとして示す。各コアカードはバスラッパー140およびハードウェアモデル142を含む。図4Aは、それぞれのコアカード120が1組のカード、つまりバスラッパーカード120aと合わせハードウェアモデルカード120bに分割される代替の好ましい実施態様を示す。図4Bは、バスラッパーとハードウェアモデルの両方として信号FPGA141が使用される代替の好ましい実施態様を示す。図4Cに示されている代替の好ましい実施態様においては、システム制御装置112は、別個のプラグイン式のカードとしてではなく、物理バックプレーン124の底部上の一連の構成要素として実現される。
【0055】
IV.バスラッパー構成
図5を参照すると、それぞれの汎用化されたバスラッパー140が、TMB110バスデータ回線(BDL)144の瞬間的な内容を採取し、時間スロット番号で、およびハードウェアモデルデータピン147の集合の適切なもので、取り付けられている汎用化されたハードウェアモデル142の入力が、この内容を使用できるようにしなければならない(本出願では、たとえワイヤの集合がバスラッパー140をハードウェアモデル142に接続するにしても、用語「ピン」が使用される。このような場合、ハードウェアモデルに最も近い各ワイヤの部分が、バスラッパー140にとってハードウェアモデルピン140および同様に見なされるだろう)。同様に、各バスラッパー140は、取り付けられているハードウェアモデルピン147の出力を採取し、それぞれの適切な時間スロット番号の間、TMB BEL114がそれを使用できるようにしなければならない。入力機能と出力機能の両方とも、双方向ドライバ146の集合によって達成される。しかしながら、モデル化され、検証されているターゲットシステム10では、多くの構成要素が、複数のバスを使用することにより通信してよい。したがって、いくつかのバスラッパー140は、複数の仮想バスのために複数の仮想バスラッパーの機能を果さなければならない。ある好ましい実施態様では、この特徴は、レジスタの完全な集合150、152および154を有することにより最高3つの仮想バスに達成される。特定の時間スロット中に特定のレジスタ150、152または154を使用するかどうかは、レジスタ集合150、152および154ごとに時間スロットバスライン126の集合からの入力を使用し、それぞれ制御ブロック155、156および157によって比較される時間スロット番号によって決定される。一致が検出されると、関連付けられたレジスタがカレント時間スロットの間、アクティブになる。(集合150、152、または154の)一次レジスタは、カレント時間スロット中にどのピン147がアクティブになるのかを記述し、これらのピンは対応するBEL144と連絡させられる。それらがどのように連絡させられるのか(つまり、それらが駆動しているのか、それとも受信しているのか)は、添付図7の説明で詳細に記述される。
【0056】
2ビットopコードが、TMBopコード回線129の組で各バスラッパー140に送信される。opコードに含まれているのは、発行される任意のターゲットシステムクロックに対し正でなければならないターゲットシステムクロック表示信号である(図9の説明を参照すること)。さらに、特定のクロックドメインでのクロック入力ピンの場合、クロックドメインに対応する時間スロット番号−比較レジスタ130内に一致がなければならない。これが発生すると、ターゲットシステム事前クロック回線ドライバの1つが、ハードウェアモデル142内のターゲットシステム事前クロック入力ピン(複数の場合がある)168の集合の内の1つにクロック入力を発行する。
【0057】
図3を参照すると、ターゲットシステム10の場合、時間スロット番号3と4は、レジスタ130内の単独のエントリにすぎず、時間スロット3はクロックドメインAに関連付けられており、それはポストプロセッサ40のクロック入力ピンBを除きあらゆるターゲットシステムクロック入力ピンを含む。図3に図示されるように、時間スロット番号3が発生するたびに、opコード内のターゲットシステムクロックビットは正になり、クロックドメインA(図3を参照)内のあらゆるピンがクロック入力を受け取るだろう。しかし、このビットは時間スロット番号4の1024番目の発生のたびだけに正になり、その時点では(およびこの時点だけで)クロックドメインBの単独ピンがクロック入力を受け取るだろう。
【0058】
(図5に示されている)この好ましい実施態様では、レジスタのそれぞれ1つは完全128ビット幅で、TMB110上のバスデータ回線(BDLS)の数に一致する。代替の好ましい実施態様では、レジスタの6つの完全な集合、6倍スロット復号一致および接続される6集合ターゲットシステムピンがあるが、空間の制限のため、各レジスタは64ビット幅にすぎない。
【0059】
1つの好ましい実施態様では、バスラッパー140はFPGAで実現されるが、代替の好ましい実施態様では、バスラッパーは、図5に図示されている構造に類似する基本構造を持つ、配線による回路として実現される。バスラッパーがハードウェアモデルを実現するためにFGPAと(コアカードを供給してよい)ともに使用されることが予定される場合、ピンルーティングはハードウェアモデルFPGA内で実行でき、このタスクを実行するニーズからバスラッパーを救うだろう。バスラッパーが、ICまたは外部に接合されるICコアなどの、配線によるハードウェアモデルとともに使用されることが予定される場合には、それはICピン147からTMB110までのピンルーティングにはクロスバースイッチの集合を必要とするであろう。
【0060】
V.試験検証プロセス
図6を参照すると、図2に示されている検証エンジン構成は、示されているステップによって(必要なICを入手し、設置した後に)構成、実行されてよく、さらに高いレベルでの設計言語での構成要素レベルシステム記述の特定、およびFPGAでモデル化されるそれらのハードウェアアイテムのFPGAロード可能ファイル(ブロック310)の特定で開始する。これらのファイルは、典型的にはフロッピーディスクまたはCD−ROMなどのコンピュータ読取り可能媒体で使用できるだろう。次に、GUIプログラム115は、FPGAロード可能ファイルに一覧表示されているピンを、さらに高いレベルのターゲットシステム設計ファイルのピンと一致させようとし、ユーザは結果を補正する機会を与えられる(ブロック312)。
【0061】
好ましい実施態様では、ユーザはハードウェアモデルのそれぞれ1つごとにバスラッパーを設計する(ブロック314)検証エンジンホストワークステーション114内でのコンピュータプログラムの実行を命令する。このプログラムの出力は、そのそれぞれがバスラッパーFPGA内にロードされるFPGAロード可能ファイルに変換される(ブロック316)ネットリストの集合であり、ハードウェアモデルFPGAも、中央メモリ68(ターゲットシステム10のDRAM20に常駐しなければならない、データプロセッサ18用のプログラム)の内容とともにこの時点でロードされる。
【0062】
代替の好ましい実施態様では、各バスラッパーネットリストが、前述されるように、例えば、ネットリストの事前に設計された集合から選ばれ、1つの設計は3集合のレジスタ150、152および154を有し、別の設計は6集合のレジスタを有する。各バスラッパーは、FPGAロード可能ファイルでFPGAがロードされた後にホストワークステーションによってロードされる多くのレジスタを含めることにより、多様なターゲットシステムバスの間で分散される、入力ピン、出力ピン、および入出力ピンのさまざまな構成に対処するために個々に区別される。これらのレジスタは、さらに詳細に説明されるだろう。この時点では、検証エンジンは、典型的には中央メモリ68に記憶されているプログラムによって起動される(ブロック318)。加えて、外部刺激データ319の集合が導入されてよい。例えば、テーププレーヤー89は、このデータをA/D変換器カード62、架空例では図2に示されている検証集合アップに送る。
【0063】
実行の各段階では、問題が検出されてよい(決定ボックス320)。問題が検出されない場合、実行が続行する。しかし、問題が検出されると、「スヌープ」バッファ67がワークステーション114の赤に読み出され、問題の原因を突き止めるために検討されてよい(ブロック321)。スヌープバッファ67は、TMB110の最近の履歴のBDL14値のすべてを記憶している。このアプローチが答えを出さない場合(決定ボックス323)、デバッグ(レジスタ)モードが使用され(ブロック322)、ワークステーション114の人間のオペレータが、コアカード120内のレジスタの内容を調べることができるようになる。問題が無視できる、あるいは検証されているターゲットシステムの部分を設計し直さなくても補正できる場合(決定ボックス324)には、試験は続行してよい(ブロック318)。それ以外の場合、試験は停止され、再設計が開始される(ブロック326)。
【0064】
VI.ハードウェアモデルピン駆動方向の検出、およびバス競争および浮動状態の回避
双方向ピンを含む試験回路では、数多くの問題が発生する。第1に、双方向ピンが、どの方向で任意の時点でハードウェアモデル142によって駆動されているのかを判断する問題がある。これは数多くの理由から予測できない。第1に、ハードウェアモデルがICまたは外部に接合されたICコアである場合、製造メーカは、予想される模倣者より有利な立場を保つためにシステム設計のいくつかの要素の排他的な知識を保持するだろう。さらに、完全な回路記述が入手できる場合、回路記述とともにロードされたFPGAでの場合のように、それは双方向ピン状態を予測するためにかなりの努力を伴う。しかしながら、バスラッパーが、(バス出力を使用して)ピン147を駆動するのか、あるいはピンがバスデータ回線14を駆動できるようにするのかを知るためには、駆動方向が決定されなければならない。
【0065】
別の問題は、ターゲットシステムが完全に設計され、検証されていないという事実によって生じる。このため、2本のピンが同じ時間スロットの間に同じバスコネクション(ワイヤ)を駆動しようとするという状況がある場合がある。これが「バス競争」と呼ばれ、どちらの駆動信号も受信されないため、送信側回路が予測するように、それによりシステム動作がつまずく。関連した状況では、ある特定の時間スロット中に接続される双方向ピンの集合のどちらもコネクションを駆動せず、各ピンに、予測された信号よりむしろ無作為な雑音を受信させる。この状態が「バス浮動」として知られて言える。再び、これにより、典型的にはシステム動作はつまづく。従来の試験において、この種の問題は、検出するのがやや難しく、システム検証人員にとっての不満の源であった。
【0066】
これらの問題を回避するために、検証エンジン60は、各双方向ピンに関して、それが駆動中であるのか、それとも入力信号に対し開いているのかを判断するように設計されたサブシステムを有する。加えて、ある特定の時間スロット中に接続されなければならない双方向ピンの集合ごとに、システム制御装置は、バス競争があるのか、それともバス浮動があるのかを判断する。
【0067】
【表1】
【0068】
図7を参照すると、切り替え可能接続回路146aが、特定のターゲットシステムピン144aが入力であるのか、出力であるのか、あるいは双方向ピン144であるのかに関係なく、各ハードウェアモデルターゲットシステムピンまたは回路ノード144をバッファに入れるために提供される。各バッファの駆動方向は、部分的には、表1に記載されるようなレジスタセット150からのコアカードレジスタによって決定され、入力によってピンがどのように処理されるのかをともに決定するスイッチ182と184に示される。駆動方向オプション1と2は自明である。オプション3は、バスラッパー用の特殊化した設計を必要とする。これは、典型的には、1本の特定のピンが、ハードウェアモデル内のピンのすべてまたは一部が現在の時間スロットまたは将来の時間スロットのための特定の方向を有する信号として動作する場合に実現されるだろう。駆動方向がある特定のターゲットシステム構成要素ピンによって信号で知らされるいくつかの種類のターゲットシステム内蔵バスがある。この種のバスの場合、ローカル論理回路は、信号ピンの状態を試験し、他のピンの駆動方向をこのピンの状態に基づかせるように構成されてよい。
【0069】
オプション4では、ピンの駆動方向は、それがそれ自体駆動されているかどうかを判断するために、ピン147aを試験することによって決定される。この機能を実行する回路は、それがバスラッパー140によって遭遇される状態を感知するため、ローカル状態センサである。この決定は、ピン147aがソフトドライバ、つまり高インピーダンスドライバによって駆動できるかどうかを検出することによって下される。このソフトドライバは、シフトレジスタ218、および抵抗器R1によって形成される。シフトレジスタ218は、ターゲットシステム事前クロックA信号がブロック130から受信されると(図5)、ゼロから数え上げ始める。ターゲットシステム事前クロックAの発行後の第1TMBクロックサイクルでは、実際のターゲットシステムクロックは、ターゲットシステムクロックA入力回線168上のハードウェアモデルに送信される。
【0070】
入力ドライバ240がイネーブルされると、ピン147aは、ターゲットシステムクロック信号が回線168に適用される瞬間にドライバ240から入力を受け入れるだろう。しかしながら、ピン147aが双方向である場合、それはターゲットシステムクロックの到来直後に(つまり、次のターゲットシステムクロックパルスの前に)出力値も形成してよい。次のシステムクロックでは、シフトレジスタ218が、ANDゲート244に対する低入力によって入力ドライバ240をディスエーブルする。この目的とは、ハードウェアモデル142が駆動ピン147aであるかどうかが判断される期間中、このような入力は試験と干渉し、潜在的にピン147aからの出力と矛盾するため、ピン147aへの入力を妨げることである。それ以降、シフトレジスタ218は、低を発してから、抵抗器R1に接続される回線で高を発する。
【0071】
ハードウェアモデルピン147aが(抵抗器R1のための)この高インピーダンスによって高と低の両方に駆動できる場合には、それはハードウェアモデル142によって駆動されていない。この場合には、第1フリップフロップ220が、第2フリップフロップ222とは異なる出力を有し、駆動方向XNORゲート224の出力は低になり、入力フリップフロップ225のQ出力をハードウェアモデルピン147aに送信する入力ドライバ240をイネーブルする。それ以外の場合、XNORゲート224の出力は高になり、ピン147aからである出力フリップフロップ226のQ出力をTMB BDL114aに送信する出力ドライバ242をイネーブルする。それぞれANDゲート260および262は、競争状態または浮動状態をそれぞれ競争レジスタおよび浮動レジスタ262、266に報告する。このような競争または浮動の状態は、例えば一次レジスタ1が駆動方向を決定するために選択されたが、このレジスタが決定した駆動方向がシフトレジスタ214およびフリップフロップ220と222によって実行される試験と矛盾していた場合に発生するだろう。1組のレジスタ264と266の内容は隠され、ともに論理和を取られ、バスラッパー140から「エラー」出力を生じさせる。マスク操作は、競争または浮動が予想される、および/または許容できる例があるため実行される。マスクはこの現実を反映し、予想されたあるいは許容できる競争または浮動が発生したときにエラーフラグが発行されるのを妨げるためにユーザによって構成される。
【0072】
図8、図9および図11を参照すると、システムレベルでバス競争状態およびバス浮動状態を検出するタスクは、システム制御装置112とダミーハードウェアモデル72の両方によって実行される。システム制御装置112(図9)は、競争または浮動がエラーを示さないときに、競争エラーまたは浮動エラーが発行されるのを防ぐために、それぞれ128のビットから構成されている競争マスクアプリケーション論理回路402、および浮動マスクアプリケーション論理回路404を有する。例えば、浮動マスクアプリケーション論理回路404を使用しない場合に、特定のTMB BDL144が使用されると、これはシステム制御装置によって競争エラーとして誤って報告されるだろう。ダミーハードウェアモデル72は、シミュレーションソフトウェアプログラムでは標準的である2ビットフォーマットで「高」、「低」、「競争」または「浮動」のどれかの存在を記録し、報告するだけである。モデル72はエラー検出時に処置を講じないため、競争または浮動がエラー状態を示さない例でエラーを宣言するのを回避するために、競争検出および浮動検出を隠す必要はない。
【0073】
システム制御装置では、競争および浮動マスクレジスタメモリ406(図9)は、アクティブ時間スロット、および時間スロットでアクティブである各基板ごとに適切なマスクの中にロードされる128ビットのワードを含む。マスクでは、それぞれの「0」がそれぞれ競争状態または浮動状態がないかチェックされなければならないビットを示し、「1」はこのようにしてチェックされてはならない各ビットがないか示す。マスク操作を容易にするため、コアカード時間スロットレジスタ408が、どのコアカードが各時間スロットの間にアクティブであるのかを示す。「定期」モード動作では、各時間スロットの前、それぞれの時間スロットアクティブカードのピン駆動レジスタがポーリングされる。すなわち、図11を参照すると、時間スロットNが増分された後(ブロック620)、駆動方向データ(時間スロット番号比較に応じたレジスタセット150、152、または154からの一次レジスタ1が各アクティブコアカードから順番に(ブロック622と624、および決定ボックス626と628)読み出される。図8を参照すると、各ビット、回線147a(図8)の結果が第1フリップフロップ412に読み込まれ、その出力が駆動する第1フリップフロップ412、およびその他の入力が再び回線147aである2つの入力ANDゲート414を備える。ゲート414の出力は第2フリップフロップ416に送り込まれる。バス競争は高くなるフリップフロップ416の出力によって示されるが、バス浮動はプロセスの最後で低状態のままとなる第1フリップフロップ412の出力によって示される。第1フリップフロップ412出力(段階1)は、時間スロットN(ブロック632)の間浮動マスク適用機構402で隠され、第2フリップフロップ416出力(段階2)は競争マスク適用機構404で隠される(ブロック630)。試験結果は、ブロック558とブロック570の中でともに論理和を取られ、結果として生じるビットは、コアカード割込みピン572上のシステム制御装置でコアカード120から受け取られる割込みで論理和が取られる。このため、ピンのどれかに関してバス競争またはバス浮動のどちらかが検出される(決定ボックス634と636)と、割込みがホストワークステーション114(ブロック638)に送信される。バス競争またはバス浮動が検出されない場合、TMB110がハードウェアモデル142間での転送の現実を可能にするために起動される(ブロック640)。
【0074】
前述されたポーリングを実行するためには、システム制御装置112が、各コアカーアド120を別個に処理できることが必要である。実際にはこれが達成できるようにするための機構がある。時間多重化バスでは6本のコアカード選択回線540(図9および図10を参照すること)がある。各コアカードスロットは、6本のカード選択回線540によって一致されるときに、挿入されたカードの選択を引き起こす、一つの6ビット配線済みコードを有する。6本の回線が番号63、(1つの特定の実施態様における)その最高可能数を表すとき、これはカードが特に選択されていないこと、およびすべてのカードが時間スロット回線126に呼応する必要があることを示す。
【0075】
標準モード動作の2つのそれ以外のサブモード、つまり高速サブモードおよびチェックサブモードが、システム制御装置112のために存在する。高速モードでは、ポーリングが実行されない。バス競争または浮動は未検出のままとなるだろうが、システムは定期サブモードでは何倍も高速で動作するだろう。高速サブモードは、典型的には、ターゲットシステムが大いに検証され、かなりの信頼度で使用できたときに使用されるだろう。チェックサブモードは、以下の問題に対処する。
【0076】
検証を必要とするいくつかのシステムは、完全には同期でないことがある。ときどき、コネクションの検証シーケンスのために非同期信号が時間内に正しく表されないことが考えられる。例えば、非同期離散信号は、実際のシステムで発生する内蔵バスクロックの前に発生するが、検証エンジン60内では後に表示される可能性がある。非同期離散信号がバス通信への正しい時間関係性でモデルかされたならば、バス状態の内の1つは異なるだろうと考えられる。そこで、チェックモードでは、すべての非同期通信がその適切な効果を出すことができるためには、第1インスタンス作動の出力が第2インスタンス作動によって正確に一致されるまで、毎回、各時間スロット番号が、ターゲットシステムクロックが発生されなくても繰り返される。
【0077】
VII.システム制御装置の動作
図9および図10は、それぞれ標準モードおよびデバッグモード中にアクティブであるシステム制御装置112のそれらの部分を示す。960バス134からの入力は、960バス134上の限られた数のワイヤがそれ以外の場合許可するよりはるかに幅広い情報のアレイが、ワークステーション114によってシステム制御装置112に送達できるように、符号化される。したがって、システム制御装置の左側に示されるポートは、物理ピンとしてよりむしろアドレス空間内に存在する。
【0078】
システム制御装置112には3つの本質的なタスクがある。第1に、それはシステム試験の始めにコアカードFPGAをロードし、試験しなければならない。第2に、それは標準モードでTMB110を循環しなければならない。これは、前述された競争/浮動チェックを含む。第3に、デバッグモードでは、それはホストワークステーション114からコアカード120へ情報に対する要求を転送し、関心のあるコアカード120からホストワークステーション114に情報の回答を転送して戻さなければならない。
【0079】
図10を参照すると、FPGAロードポート508を通したFPGAのロードは、技術では古く、ここでは詳細に取り扱われないだろう。情報はFPGAロードポート506上のホストワークステーション114から受信され、FPGAロード回線508からコアカードに創出される。JTAGインタフェースポート542およびJTAGインタフェース回線544の集合が、標準FPGA試験を、システム制御装置112を通してホストワークステーション114によって実施できるようにする。
【0080】
図9を参照すると、標準モードでは、開始時間スロット番号ポート584で示される時間スロット番号で、および開始基板番号584で示される基板で開始するシーケンサ510は、時間スロットポート513の番号で示されるように各時間スロットを通って順番に並ぶ。各時間スロットが、(レジスタ408によって知らされる)各コアカードを通して前述されたバス競争/浮動を達成するため(ロードマスク記憶装置406およびレジスタ408用のポートがあるが、簡略さのためそれらは図示されていない)。周波数シンセサイザ580によって生じるシステムクロック514は、検証エンジン60用の基本的な時間単位である。周波数シンセサイザ590によって生じるシステムクロック514の周波数は、ポート(図示されていない)を通してワークステーション114から設定されてよい。この柔軟性により、クロックは、正しいシステム動作を保証しつつ、システム構成要素の指定された集合に関して可能な限り速く実行できる。サイクルカウントポート512は、動作が自動的に停止される前にシーケンサ510によって実行される時間スロットサイクルを設定する。加えて、複数のブレークポイント条件が、適切なコアカード120の二次レジスタを適切にロードすることによって各コアカード120上で設定されてよい。カレント時間スロットポート532およびカレント基板番号ポート534は、ワークステーション114に量を渡し、その結果、それは、それが開始基板番号ポート582および開始時間スロット番号ポート584を正しく設定することによって終了された動作を開始することができる。
【0081】
OPコード論理回路516は、OPコード回線129上で時間スロットごとにopコードを発行する。このコードが、各コアカードに以下の情報を知らせる。I.標準モード(モード選択ポート536から選ばれる標準モードまたはデバッグモード)
A.ターゲットシステムクロックを生成する、または生成しない。
B.読取り/書込みサイクル(すべての選択されたカードが、データの読取りと書込みの両方を行う。)
C.読取りサイクル:すべての選択されたカードがTMBにデータを読み込む。
D.書込みサイクル:すべての選択されたカードがTMBにデータを書き込む。
E.動作なし
II.デバッグモード
A.書込みまたは読取りサイクル
B.一次レジスタ番号(0−7)
【0082】
ターゲットシステムクロックタイミングブロック520は、定期的にターゲットシステムクロックに、OPコード内で反映されるように命令する。これは、図5の説明に記述されるようにバスラッパーによって処理される。ターゲットシステムクロック用のコマンドの周期性は、時間スロット番号ごとの定期パターンとしてユーザ定義される。例えば、発生のたびに時間スロット番号7が、ターゲットシステムクロックを含んでよい。
【0083】
ターゲットシステムクロックが発行されると、ターゲットシステムクロックに対応するクロックドメインに区分化されたあらゆるターゲットシステムクロックピンがそのバスラッパー140からクロック入力を受信する。
【0084】
標準モードでは、128バスデータ回線144の集合に対する入力が、競争/浮動段階1および段階2のラッチ412と416の集合に送信される。競争マスクおよび浮動マスクは、適用論理回路(ANDゲートバンク)402と404によって、前述されたように適用される。競争/浮動最終検出ブロック558が、マスク適用レジスタ402と404から結果の論理積をともに取る。この状態は、ブロック570によって、回線572からの他のコアカード割込みとブロック570によってともに論理和が取られ、割込みポート上でホストワークステーション114によって使用できるようになる。しかしながら、デバッグモードでは、回線セット144上の値は、バスデータポート556(図10を参照すること)に直接的に逸らされ、その結果システム制御装置112はTMB110からホストワークステーション114へのダクトとして動作する。
【0085】
図10は、それがデバッグモード中に機能上出現するときのシステム制御装置112を示す。カード選択機能およびコアカード内のレジスタがデバッグモードの基礎を形成し、それによりシステム制御装置112は、問題検出後に試験中のシステムをデバッグするためにホストワークステーション114の人間のオペレータを補助できるようにする。一次レジスタは、OPコード回線129上で、前記に注記されたように、ポート552で受信され、OPコードの一部として送出される一次レジスタアドレスビットによってアドレス指定されてよい。レジスタ内容はバスデータ回線144のセット上で受信され、仮想バスポート556からワークステーション114に送信される。同様に、レジスタ内容は、ポート556でワークステーション114から受信され、ワークステーション114が回線144上でコアカード選択ポート576を介して選んだ(およびコアカード選択回線540上のバスで送信した)コアカードに送信されてよい。このようにして一次レジスタ#2をロードすることによって、任意の二次レジスタがアドレス指定されてよい。加えて、特定の時間スロット動作が、時間スロット選択ポート574によって並べられてよい。
【0086】
VII.仮想試作システム―架空設計の説明
図12を参照すると、および図解のために、本出願は、架空回路設計者が架空の将来のチップに実装されたシステムの一部2010を設計することを望んでいる特定のケースを記述する。部分2010は、8051マイクロコントローラ2012、デジタル信号処理エンジン2014、音素認識回路2016、および液晶ディスプレイ2022を駆動するビデオプロセッサ2020を含む。設計者は、自分の設計のためのゲートおよびさらに高いレベルの構成要素を選択し、ともにリンクし、その結果がコンピュータモニタに表示できるようにする1つの共通した電子機器回路設計ツールを使用する。設計者は、それぞれが設計ツールと関連付けられたライブラリの一部である回路記述によって表されているデジタル信号処理エンジンおよびビデオプロセッサを選択し、一連のマウスクリックにより両方の要素を自分の回路図に載せる。しかしながら、音素認識回路は、ゲートレベルから構築されなければならない。設計者は、自分が名前を付ける多様な要素を通信回線の集合とともにリンクさせる。設計者は、音素認識回路2016を構成しようと努力するにつれて、その動作をチェックするために(設計ツールに提供される)DSPエンジン2014からの出力を使用できるようになる。設計者は、8051マイクロコントローラ2012用のソフトウェアをすぐに作成できるが、8051マイクロコントローラ2012を使用することを決定し、音声認識回路2016が完了した後に、ソフトウェアを検証することを決定した。
【0087】
設計者は、自分の初期の音素認識回路2016設計を完了した後、初期の方式に従ってプログラムされた8051マイクロコントローラ2012とともに動作する4つの構成要素の設計の検証を希望する。言うまでもなく、彼はデジタル化された音声信号のバンクを必要とし、彼はこれらを持ち、コンピュータ2089を介してDSPエンジン2014の入力に接続されてよいフロッピーディスクを提供する。この時点で、設計者はDSPエンジン2014、音素認識回路2016、およびビデオプロセッサ2020の回路記述を有し、自分が使用することを希望するマイクロコントローラ2012を特定した。これらのすべてはさらに高水準の設計言語総合システム記述でともにリンクされる。しかしながら、彼は、DSPプロセッサ2014、音素認識回路2016またはビデオプロセッサ2020のどれかの物理回路レイアウトを持っていない。この時点で、設計者は、本発明の主題である仮想試作システム2050を使用し始めてよい。
【0088】
設計者の目標は、さらに詳しく後述されるだろう、図13に図示されているシステムなどの仮想試作システム2050を構成することである。システム2050は、8051マイクロコントローラIC2066、DSPエンジンIC2064、ビデオプロセッサ2068およびポート2112として構成されるFPGAをともにリンクする再構成可能相互接続アセンブリ2110を有する検証エンジン2060を含む。トグルレジスタ2310を含み、存在する場合どのピンがトグルされないまま残されたのかを報告するトグル検証報告システム。サーバプロセス2117をホストするホストワークステーション2114は、検証エンジン2060を、(音素認識回路2016の動作をシミュレーションスするための)シミュレーションプログラム2086をホストするシミュレーションホストコンピュータ2118に接続する。生め込まれたソフトウェア開発コンピュータ2800は、デバッグツール2812を含む埋め込み設計環境2810をホストする。
【0089】
IX.仮想試作システム−グラフィックユーザインタフェース
やはりワークステーション2114を介して接続されているのは、GUI2115をホストするグラフィックユーザインタフェース(GUI)ホストデバイス2119である。ある好ましい実施態様においては、再構成可能相互接続アセンブリ2110は、原出願および関連出願に図示され、記述されている形式を取る。アセンブリ2110の異なる好ましい実施態様は、バスラッパー2140の集合によってともにリンクされている構成要素2064,2066、2068および2072を示す、図20に示されている。ある好ましい実施態様では、各バスラッパー2140は、構成要素の双方向ピンを収容するために関連出願の図17に図示されているものに類似した双方向駆動アセンブリの集合を含むだろう。図19に示される実施態様では、時間多重化は不必要である。
【0090】
GUI2115は、仮想試作システム2050の構成を容易にする。最初に、GUI2115が、Verilog言語またはVHDLのどちらかで総合的なシステム記述を含むファイルを示すようにユーザにプロンプトを出す。ユーザがこのファイルを示した後、GUI2115は、どの構成要素がシステムで表されているのかを決定するために、ファイルを自動的に解析する。図14を参照すると、GUIはターゲットシステム構成要素、マイクロコントローラ2012、音素認識回路2016およびDSP2014を、それから(ワークステーション2114に関連付けられるマウスの使用により)どの構成要素が検証エンジン2060でモデル化されなければならないのかを指定するように依頼されるユーザに対して、列形式で表示する。図15に図示されているように、設計者はDSPエンジン2014およびマイクロコントローラ2012、およびビデオプロセッサ2020を指定する。音素認識回路2016は指定されたばかりで、たぶん
【0091】
重大な変更を経験するため、設計者は、自分がシステムを設計するために使用してきた、ネットワークによってワークステーション2114に接続される同じワークステーションでプログラムのこの部分をシミュレーションすることを決定する。GUIは、関連付けられたシミュレーション実行コンピュータ2118が、検証エンジン2060に示される構成要素をシミュレーションすると推定する。
【0092】
図16を参照すると、GUI2115は、検証エンジンでモデル化される構成要素の列とともに仮想構成要素(VC)のライブラリを示す列を表示する。VCは、少なくとも3つの基本的な形式の内の1つを取ってよい。それは、FPGAロード可能ファイル、またはIC、または外部に接合されたICコアを含んでよい。これらのケースのどれかにおいて、VCパッケージがピン記述ファイルを含むだろう。現在の例では、DSPエンジンICおよび8051マイクロコントローラICはすでに検証エンジン2060に物理的に含まれ、GUIライブラリ内に関連付けられたピン記述ファイルを有する。設計者は、検証エンジン2060内でモデル化されたターゲットシステム構成要素ごとにVCを示すようにプロンプトを出される。VCのパッケージがユーザに販売され、ユーザがVCの専用のライブラリも構築することが期待される。いくつかのケースでは、VCは、特定のターゲットシステムをモデル化することを予期して、取得され、ワークステーション2114内にロードされるだろう。現在の例では、設計者は、自分がすでに精通しており、自分が設計ツール内で使用してきたビデオプロセッサモデルと同じ入力/出力方式および動作特性を有するビデオプロセッサVCを見つけ出す。しかしながら、そのビデオプロセッサモデルとは異なり、彼がGUI2115内で特定するビデオプロセッサVCは、さらに大型のチップに実装されたシステムの一部としてビデオプロセッサVCを作成するための生産ツールの完全な集合と関連付けられる。この情報は、実際のビデオプロセッサネットリストとともに設計者が利用することはできないが、生産ツールを有し、料金のためにビデオプロセッサVCを含むICを作成する会社がある。しかしながら、ピンリストと結合される符号化されたFGPAロード可能ファイルは使用可能であり、ビデオプロセッサVCを選ぶ際の設計者は、この関連付けられたFPGAロード可能ファイルが、ビデオプロセッサエンジン構成要素をモデル化するために使用されることを示す。
【0093】
この際、GUI2115は、ビデオプロセッサVC用のピンリストを、後述される初期設計プロセスの間に設計者によって提供されるシステム接続回線名と合わせる。図17を参照すると、この合わせ動作の結果は、並んだ列に表示される。良好な一致が選ばれる場合、GUI2115がこの合わせ動作を高い信頼度で実行できるケースがある。反対の極端では、ユーザがエラーをして、それがモデル化するように指定されるシステム構成要素にまったく一致しないVCネットリストファイルを指定すると、ピン割当てのだいぶぶんが行われないままとなるだろう。これらの2つの極端な状態の間では、一致は通常良好であるが、GUI2115が合わせることができない、または不確かな一致が形成されるかのどちらかの数本のピンがあるケースもあることが予測される。一致を確信するレベルは、ピンを強い確実性を示す第1色、より少ない確実性を示す第2色、およびほとんど確実性がないことを示すか、一致するピンが見つけられないだろうことを注記する別の色で一致するピンの列表示の中にカラーコード化される。近いが、正確な一致ではなかった仮想構成要素が指定できるというのは電気エンジニアリングの初心者にとってはおかしなことに見える可能性があるが、多くの設計は、設計者にとっての便宜として存在する、および/またはなんらかのときおり望ましい機能を実行する数本のピンを含む。言うまでもなく、VCの主要な機能上のピンとターゲットシステム回路記述の間に食い違いがある場合、VCはターゲットシステム回路を検証するために使用できないだろう。しかし、多くの場合、単にVCピンを使用しないことによって、あるいは便宜上ときおり使用されるだけのピンを排除するための軽微なターゲットシステム再設計によって、軽微な簡便ピンの間の食い違いを矯正することが可能である。ユーザは、多様な列エントリを指し、クリックすることによってピンマッピングを変更する機会を与えられる。この同じプロセスが8051マイクロコントローラ2066接続ピンおよびビデオプロセッサVC2068接続ピンに対して実行されなければならない。
【0094】
例のケースでは、設計者は、それに関してはターゲットシステム回路記述に同等物がない、2本のピンがビデオプロセッサVC列で強調表示されていることに気付く。幸いなことに、これらは、その使用がオプションであるバス制御ピンである。しばらく、設計者はこれらの未接続を音素認識回路に任せることを決めるが、その存在を自分が将来利用することを希望する可能性のある何かとして注記する。
【0095】
図17に示される次のステップでは、GUI2115は、ピンを別個のクロックドメインに区分する。ユーザは、GUI2115によって実行されるクロックドメイン区分化の望ましくない特徴を補正し、ドメインごとにクロック速度を指定するようにプロンプトを出される。例のケースでは、すべてのクロック入力ピンが1つの共通したクロック入力信号を共用する可能性がある。
【0096】
図19を参照すると、ユーザは、次に、動作の開始時にターゲットシステムをリセットするための初期化シーケンスを指定するようにプロンプトを出される。このプロセスは、素の内のどれか1つが選択され、初期化入力を与えられてよい信号のリストによって容易にされる。この場合、ユーザは、製造メーカによって提供される8051チップのブートシーケンスを指定する。
【0097】
次に、各離散信号およびターゲットシステムバスがユーザに表示され、ユーザは、(自動的にシミュレーションコンピュータに送信されるターゲットシステムのシミュレーション済みの部分に送信される信号に加えて)シミュレータに送信される必要のあるバス信号を指定する機会を与えられる。例のシステムは非常に小型であるため、この特徴を示す機会はほとんどない。しかしながら、音素認識回路2016がシミュレーションされない場合、その出力は、設計者が表示のためにシミュレーション実行コンピュータに転送することを希望していた可能性のある自然アイテムだろう。
【0098】
次に、GUI2115は、検証エンジン再構成可能相互接続アセンブリ2110を構成しなければならない。相互接続アセンブリ2110の形式に関係なく、これは、構成要素ピンを接続アセンブリ回線に割り当てることを意味する。例えば、接続アセンブリが、(関連出願でのように)単一時間多重化バスの形を取る場合、それぞれのアクティブ構成要素ピンがバスラインおよび時間スロットに割り当てられなければならない。多くのターゲットシステムの場合、任意の順序で進行する非常に簡略なアルゴリズムが、ほとんど人が割当てを行うようにこれを行ってよい。このプロセスの結果が、各ターゲットシステム信号がバスライン/時間スロット組み合わせに割り当てられる「構成ファイル」と呼ばれる。構成ファイルは、バスラッパーを設計するために使用される。しかしながら、多くの場合、既存のバスラッパーは、容易に使用されてよく、バスラッパー設計は必要とされていない。バスラッパー構成および動作のより完全な説明については、関連特許出願を参照すること。
【0099】
最後に、GUI2115は、構成ファイルをサーバ2117に送信し、その結果サーバ2117はダミーソフトウェアモジュール2086と検証エンジン2060間の通信を手配してよい。サーバプロセスがどのようにしてこれを行うのかを理解するためには、後述されるシミュレーションホストコンピュータ2118の構造から検証エンジン2060コネクションまで理解することが必要である。
【0100】
X.仮想試作システム―検証エンジンおよびシミュレータの統合
図13に戻ると、音素認識回路2016は、ダミーハードウェアモデル2072により検証エンジン2060内で表される。モジュール2072に対する一種の鏡像として、ダミーソフトウェアモジュール2710は、シミュレーションプログラム2086のために、検証エンジン260内で検証中のターゲットシステム2010構成要素の部分を表す。ちょうどダミーハードウェアモジュール2072が完全に機能的なハードウェアモジュールから区別できないように、検証エンジン2060、ダミーソフトウェアモジュール2710の残りもシミュレーションプログラム2086の残りにとってターゲットシステム2010の構成要素をシミュレーションする完全に機能的なソフトウェアモジュールから区別できない。つまり、ダミーソフトウェアモジュール2710は、まるでダミーソフトウェアモジュール2710が実際に検証エンジン2060で検証中である構成要素の論理機能を実行しているかのように、シミュレーションプログラム2086の残りがアクセス可能である状態を形成する。同様の関係性においても、シミュレーションプログラム2086は、検証エンジン2060がアクティブである間はイナクティブであり、検証エンジン2060は、シミュレーションプログラムがアクティブである間はイナクティブである。ダミーハードウェアモジュール2072がその状態での変化に気付くと、それは、再構成可能相互接続アセンブリ2110の動作を停止し、それ以降サーバプロセス2117を収容するワークステーション2114にダミーハードウェアモジュール2072の内容を送信するシステム制御装置2112に割込みを送信する。サーバプロセスが、この受信されたデータを、それがシミュレーションホストコンピュータ2118に送信する表の中に入れる。
【0101】
ダミーソフトウェアモジュール2710は、新規入力によって支配される新しい状態を受け入れ、これらの新しい状態は、ダミーソフトウェアモジュール2710の状態が再び変化するまで実行することが許可されるプログラム2086の残りでの活動を生じさせ、その点で、ダミーソフトウェアモジュール2710はシミュレーションプログラム2086の実行を停止し、コードをコンピュータ2118のソケットから送出する。コードはダミーモジュール2072の一部である記憶装置バッファ2073をミラーリングするサーバ2117内の表に入れられる。この結果を達成するために、サーバ2117は、検証エンジン動作の開始前に、それがシミュレーションホストコンピュータ2118から受信する信号内の各時間位置をテーブル位置に変換する変換テーブルを構築しなければならない。同様に、サーバ2117は検証エンジン2060からデータを受信すると、変換テーブルを使用し、テーブル位置から、コンピュータ2118の入力/出力ソケットにつながるデータ回線上での時間位置に変換する。変換テーブルは、ダミーソフトウェアモジュール2710に、およびダミーソフトウェアモジュールから送信されるパラメータの時間位置が任意に設定されるのと同時に、GUI2115によって作成される構成ファイルから計算される。
【0102】
前記に注記されたように、埋め込みソフトウェア開発コンピュータ2800は、デバッグツール2812を含む埋め込み設計開発(EDE)2810をホストする。埋め込み設計環境(EDE)は、www.tasking.com.でインターネット上で連絡されてよいタスキング(TASKING)のものであってよい。EDE2810は、典型的には、やはりタスキング(TASKING)から入手可能なクロスビュープロ(CrossView Pro)などのROMモニタとともに使用されるだろう。ROMモニタは8051メモリ領域内に常駐し、ユーザがEDE2810を使用し、ブレークポイントを8051で実行中であるコードの中に導入できるようにする。ブレークポイントに遭遇すると、ユーザ選択されたメモリ内容またはCPUレジスタ内容がユーザに送達される。ROMモニタは、それがUARTポート上で受信するコードの第1行が、後に続くコードの第1行のメモリロケーションを示すという規約に従って動作する。したがって、このメモリロケーションは、所望されるブレークポイントに設定され、ROMモニタ内のブレークポイント処理ルーチンを指すだろう。このようにして、コンピュータ2118の表示画面に着席しているユーザは、8051マイクロコントローラプログラムの動作中にブレークポイントを設定し、定期的にこのプログラム内に定義されている多様な変数の値を調べるだろう。
【0103】
入力/出力ピントグルレジスタ2310の集合は、それぞれ対応するVCでアクティブな入力/出力ピンごとに1ビットを含む。各トグルレジスタビットは、対応する入力/出力ピンが状態を切り替える(トグルされる)と、ゼロから1に変化する。これらのビットのすべては、トグル論理積装置2312によってともに論理積が取られ、その結果このAND演算の結果が1に等しいとき、試験されているシステムのあらゆる入力/出力ピンが実行されたという正の徴候がある。さらに、デバイス2312は、ホストワークステーション2114にトグルされていないすべてのピンのアイデンティティを転送するための報告機能を有し、それによって検証エンジニアが試験を完了するのを補助する。
【0104】
XI.行動モデル化カードを有する検証エンジン
図21は、モータ制御装置3012を含む作動アセンブリ3010の形を取る架空ターゲットシステムのブロック図を示し、3相ブラシレスDCモータアセンブリ3014アセンブリ3010は、本発明を明確に説明する目的だけに提示され、それはアセンブリ3010などのアセンブリの検証試験のための方法と関係する。
【0105】
モータアセンブリ3014は、モータ316および可変負荷3018を含む。実践では、モータアセンブリ3014はロボットのアームの位置を決定するだろう。負荷は、存在する場合、ロボットが持ち上げていた物体に応じて変化するだろう。モータ3016の回転体位置は、モータ制御装置3012に電気的に接続されている回転体位置エンコーダ3020によって検出される。モータ3016は、3相切り替え調節器3022の出力によって駆動される。
【0106】
モータ制御装置3012は、位置コマンド入力装置3030からの入力を受け入れる。ロボットの例では、このデバイスは、人がロボットアーム位置を命令できるようにするアクチュエータだろう。デバイス3030を介して命令される位置は、命令された位置を現在位置に比較し、現在位置から所望の位置に回転体を移動するための速度および加速予定を計算するマイクロコントローラ3032の中に送り込まれる。マイクロコントローラ3032は、マイクロプロセッサ3034、およびモータ制御タスクを実行するためのプログラムをホストするメモリ3036を含む。切り替え調節器入力変換ボックス3040は、整流補正コマンドおよび速度補正コマンドを受け入れ、速度補正機能および整流機能を達成するために、切り替え調節器3022のトランジスタを作動する一連のパルスを決定し、送信する。回転体位置コードフォーマット回路3042は、エンコーダ302から回転体位置コードを受け入れ、それらをマイクロプロセッサ3034にとって許容できる形式に変換する。
【0107】
図22を参照すると、作動アセンブリ3010の動作を検証するように適応されている検証システム3110は、本出願の前記図に示される任意の構造に類似した構造を有してよい相互接続アセンブリ3112を含む。相互接続アセンブリ3112は、マイクロプロセッサカード3114、メモリ3036がターゲットシステム内で持つモータ制御プログラムを持つ中央メモリカード3116、回転体位置コードフォーマット回路ハードウェアモデル3118、および回転体位置コードフォーマット回路ハードウェアモデル3120を接続する。ハードウェアモデル3118と3120は、過去の出願に記述されるように、おそらくそれぞれ利用者書き込み可能ゲートアレイ(FGPA)上で実現されるだろう。やはり相互接続アセンブリ3112に接続されているのは、ピコプロセッサ3132、つまりともにカリフォルニア州パロアルト(Palo Alto,California)のサンマイクロシステムズ(Sun Microsystems)およびヒューレットパッカード(Hewlett−Packard)から入手できるジャバピコプロセッサ、およびピコプロセッサ3132が電気モータ3014の行動に基づき入力/出力を模倣できるようにするプログラムを持つメモリ装置3134を含む行動モデルカード3130である。
【0108】
実際の電気機械装置を使用するよりむしろ、電気モータまたはその他の電気機械装置をモデル化する数多くの優位点がある。第1に、電気モータの例には安全性の問題はそれほどないが、それが制御するように設計されている実際の電気機械装置でソフトウェアを検証することがきわめて危険となるだろう多くのインスタンスがあってよい。例えば、原子力発電所の制御で使用されなければならないソフトウェアは、原子力事故を回避するために試験環境で最良検証される。第2に、検証システム3110は、モータ制御装置3012よりはるかに低速である速度で動作してよい。このようにして、それは、モータ制御装置3012の動作をリアルタイムで正確に模倣するために必要とされる時間インスタンスで制御パラメータを送出できない可能性がある。しかしながら、モータ3016の回転体は、不変の物理法則に従って入力の指定された集合に応えて加速、減速する。対照的に、時間は精度の損失なしに行動モデルに関して減速されてよい。電気機械装置の行動モデルの使用に対する別の優位点は、単一行動モデルカードが、メモリ装置3134内に記憶されるプログラムに従って、多くの異なる電気機械装置の内の任意の1つの行動を模倣できるという点である。行動モデルのライブラリは、カリフォルニア州マウンテンビュー(Moutain View,California)のシノプシス社(Synopsys,Inc.)から入手できる。
【0109】
ハードウェアモデルカード3118と3120に同様に、行動モデルカード3130は、それがエミュレートしているターゲットシステムモータアセンブリ3114のあらゆる入力/出力ピンごとに入力/出力ピンを含む。このため、入力/出力信号を狭いバス上にパックする、およびアンパックするには役立たない。
【0110】
ゲート遅延の集合の数および期間によって決定される時間の期間内の入力の集合に呼応するハードウェアモデル3118および3120とは異なり、行動モデルカード3130は、典型的には、その出力が状態を変える前にかなりの数の命令を実行する。相互接続アセンブリ3112が、組み込まれている出願番号第09/336,485号に開示されているように、時間多重化バスである場合、カード3130は、入力の新規集合のその出力を計算するために時間多重化バスシステムクロックの周期性に等しい時間の期間を有する。この種のシステムクロックは、典型的にはMHz範囲の周波数で実行され、ピコプロセッサ3132は、典型的には100MHZ範囲の周波数で実行されるため、これは簡略な行動モデルが出力を生じさせるのに十分な時間を提供するだろう。しかしながら、行動モデルカードには、相互接続アセンブリ制御装置3113内で相互接続アセンブリ休止ピンに送られる出力準備が完了していないピンが備えられる。相互接続アセンブリ3112が時間多重化バスである場合では、これにより、バス制御装置は、行動モデルカード3112が準備完了になるまでシステムクロックを休止させるだろう。
【0111】
さらに、電気機械システムのそれ以外の部分をシミュレーションするプログラムを実行するシミュレーションホストコンピュータ3140は、電気モータ行動モデルカード3130に負荷入力を提供し、記憶装置デバイスはベクタ3142のユーザ入力集合を提供する。
【0112】
図23は、検証を必要とすることがある純粋に通信の、該して電気的な(部分が光学となるだろう)デバイスの例を示す。これは、インターネットまたは該インターネット上でメッセージを送るために使用される種類のルータ3210である。ルータ3210によって適切に送られるためには、接続されたネットワーク3212からのメッセージは特定の規格に従ってフォーマットされなければならない。しかしながら、本規格の範囲内には、そのそれぞれがいくぶん異なって処理されなければならない9つの許可されたフォーマット規格がある。このため、ルータ3210には、9つの異なるフォーマットルーティングブロック3214−3230がある。初期ルーティング3234ブロックは、各メッセージを正しいフォーマットルーティングブロックに送り、パッキングおよび最終ルーティングブロック3236は、同じロケーションに移動するメッセージをともにパックする。
【0113】
図24は、ルータ3210の動作を検証するように構成される検証エンジンを示す。図24の参照番号は、図23のターゲットシステム参照番号に一致し、各ハードウェアモデルが、100が加えられた、モデル化されているルータ3210の一部の参照番号を持つ。人がチップに実装されるシステムという形でルータ3210を設計するとしたら、それをシリコンの中にエッチングする前に、回路設計を注意深く検証することは重要だろう。これを行う1つの方法とは、相互接続アセンブリ3340によって組み込まれている出願で教示される方法で、ルーティングブロック3212−3226および3234ごとにハードウェアモデル3312−3326および3334を構築し、ハードウェアモデルのすべてをともに接続することである。図24に提示される例では、フォーマット9ルーティングブロック3240は、依然として設計されているプロセスにあり、したがってシミュレーションホストコンピュータ3330内でシミュレーションされる。代わりに、フォーマット8ルーティングブロック3228に関して図示されるように、ルーティングブロックは、ターゲットシステムフォーマット9(九)ルーティングブロック3230の入力/出力ピンごとに入力/出力ピンを有する、行動モデルカード3328によってモデル化することができる。この種の回路構成のために検証プロセスで生じる1つの難しさとは、ルータ3210が接続されなければならない環境を正確にモデル化する困難さである。言うまでもなく、人はインターネットに、検証を受ける回路を接続することはできない。したがって、図24上の検証エンジンは、検証されているターゲットシステムを徹底的に試験するために、インターネットトラフィックの完全な範囲を提供するインターネット行動モデル3342を含む。好ましい実施態様では、行動モデル3342は、ユーザ入力を受け取るための手段、例えば、キーボードに接続されるジャックを含み、それによってユーザが、相互接続アセンブリ3340に送信されているデータパケット上で制御の基準を実行できるようにする。
【0114】
加えて、インターネットまたはネットワークモデル3342は、実際のネットワークが、ルータモデル3310を正確に試験するために応えるのと同じ方法で、ルータモデル3310を通して送られるメッセージに応えなければならない。シミュレーションホストコンピュータがネットワークの行動モデルをホストする場合、これは発明の項の背景に記述される方法で検証プロセスを大幅に低速化するだろう。したがって、相互接続アセブリに直接的に接続され、おもに、典型的にはすべての入力がバスの中にパックされ、バスからアンパックされることを必要とするだろうシミュレータをホストしないカードの上で行動モデルをホストすることはきわめて望ましい。メモリ3346内の行動モデルプログラムにより、マイクロプロセッサまたはピコプロセッサ3348は、インターネットの動作を模倣する。バスからデータをパック、アンパックするニーズによってあるがままに制約されていない、行動モデルカード3342と相互接続アセンブリの間のコネクションが専用ポートと呼ばれる。
【0115】
本出願で使用されるように、用語「副部分」は「部分」のすべてを含んでよい。
【0116】
本出願で使用されるように、用語「ピン」は任意の種類の電気導線を意味する。
【0117】
用語「集合」あるいは「セット」は、本出願では数学的な意味で使用され、ただ1つの要素を含む集合をも含む。
【0118】
前記明細書で利用されている用語および表現は、そこで制限の擁護としてではなく、説明の用語として使用され、このような用語および表現の使用においては、図示され、記述されている特徴の同等物、またはその部分を排除する意図はなく、本発明の範囲が以下に続くクレームによってだけ定義、制限されることが認識される。
【図面の簡単な説明】
【図1】
図1は、本発明の好ましい方法および装置を示すために提示される架空のターゲットシステムのブロック図である。
【図2A】
図2Aは、好ましい方法に従って、および本発明の好ましい装置に、図1のターゲットシステムをモデル化するように構成される検証エンジンのブロック図の2分の1である。、
【図2B】
図2Bは、好ましい方法に従って、および本発明の好ましい装置に図1のターゲットシステムをモデル化するように構成される検証エンジンの完全なブロックを形成するために図2Aと結合する。
【図3】
図3は、図2の検証エンジン構成の検証エンジン時間多重化バス時間期間割当ての表である。
【図4】
図4は、本発明の好ましい装置の実施態様の物理的な側面図である。
【図4A】
図4Aは、本発明の代替の好ましい装置の実施態様の物理的な側面図である。
【図4B】
図4Bは、本発明の追加の代替の好ましい装置の実施態様の物理的な側面図である。
【図4C】
図4Cは、本発明のさらに代替の好ましい装置の実施態様の物理的な側面図である。
【図5】
図5は、本発明に従った図4のコアカードの機能ブロック図である。
【図6】
図6は、本発明の好ましい全体的な試験方法のフロー図である。
【図7】
図7は、本発明の好ましい方法に従った駆動方向検出回路の概略図である。
【図8】
図8は、競争/浮動検出論理回路のビットの概略図である。
【図9】
図9は、標準モードの間の図4の装置のシステム制御装置のアクティブ部分のブロック図である。
【図10】
図10は、デバッグモードの間の図4の装置のシステム制御装置のアクティブ部分のブロック図である。
【図11】
図11は、本発明の好ましい実施態様に従ったTMB 競争/浮動チェックアルゴリズムのフローチャートである。
【図12】
図12は、集積回路(IC)設計の架空部分のブロック図である。
【図13】
図13は、本発明に従った仮想試作システム内で実現されるような、図12の集積回路設計の架空部分のブロック図である。
【図14】
図14は、本発明の一部を形成する、インスタンス選択前に示される、インスタンス選択のためのグラフィックユーザインタフェース画面表示である。
【図15】
図15は、本発明の一部を形成する、インスタンス選択後に示される、インスタンス選択のためのグラフィックユーザインタフェース画面表示である。
【図16】
図16は、本発明の一部を形成するVC選択用のグラフィックユーザインタフェース画面表示である。
【図17】
図17は、本発明の一部を形成する入力/出力ピン選択のためのグラフィックユーザインタフェース画面表示である。
【図18】
図18は、本発明の一部を形成するクロックドメイン選択のためのグラフィックユーザインタフェース画面表示である。
【図19】
図19は、本発明の一部を形成するリセットシーケンス選択のためのグラフィックユーザインタフェース画面表示である。
【図20】
図20は、本発明に従った仮想試作システム内の仮想構成要素間でコネクションを実現する代替方法のブロック図である。
【図21】
図21は、本発明を図解する目的で提示される架空のモータおよびモータ制御装置アセンブリのブロック図である。
【図22】
図22は、本発明に従って、図1のモータおよびモータ制御装置アセンブリの動作を検証するように構成される検証エンジンのブロック図である。
【図23】
図23は、本発明を示す目的で提示される架空の信号ルータのブロック図である。
【図24】
図24は、本発明に従って、図23の信号ルータの動作を検証するように構成される検証エンジンのブロック図である。
Claims (50)
- 複数のターゲットシステムバスによって相互接続される複数の構成要素を有するターゲットシステムの設計を検証するための検証エンジンであって、
(a)ともに前記構成要素として構成され、ハードウェアモデル入力/出力ピンの集合を有する第1ハードウェアモデルおよび第2ハードウェアモデルと、
(b)前記第1ハードウェアモデルに接続される第1バスラッパー、および第2ハードウェアモデルに接続される第2バスラッパーと、
(c)それぞれの前記バスラインが前記第1バスラッパーおよび前記第2バスラッパーに接続されている、バスラインの集合と、
(d)ここで、各前記バスラッパーが、さらに、各前記ハードウェアモデル入力/出力ピンをバスラインに切り替え自在に通信可能に接続する切り換え可能通信回路と、該切り替え可能通信回路を制御する制御ブロックとを有し、
(e)前記バスラインの少なくともいくつかに接続され、それぞれの前記バスラッパー制御ブロックに時間同期情報のシーケンスを送信するように適応されているシステム制御装置であって、前記時間同期情報が、前記制御ブロックが時間スロット番号を統一して決定できるようにするほど十分であるシステム制御装置と、
(f)ここで、前記制御ブロックが、前記時間同期情報に応えて前記時間スロット番号を統一して決定し、それに応えて、各制御ブロックが、少なくとも1つの前記入力/出力ピンを前記バスラインとの通信接続の状態に切り替えて、前記第1ハードウェアモデルからの少なくとも1つの前記入力/出力ピンが前記第2ハードウェアモデルの前記入力/出力ピンに接続されるようにするものである、
を備える前記検証エンジン。 - 前記バスラインの集合に接続される追加バスラッパーにそれぞれが接続される追加のハードウェアモデルを含む、請求項1に記載される検証エンジン。
- 前記システム制御装置が、各時間スロット番号の間にターゲットシステムクロック情報の中から1つを送信し、前記第1ハードウェアモデルが第1ターゲットシステムクロック入力ピンを有し、前記第1バスラッパーがクロック入力を生成し、第1ターゲットシステムクロック表示信号に応えて、それを前記第1ターゲットシステムクロック入力ピンに送信することができる請求項1に記載される検証エンジン。
- 前記ターゲットシステムクロック情報の集合が、前記ターゲットシステムクロック信号が、前記バスラッパーのどれかによって送信されてはならないことを示すヌルコマンドを含む、請求項3に記載される検証エンジン。
- 前記第2ハードウェアモデルが、第2ターゲットシステムクロック入力ピンを含み、前記第2バスラッパーが、さらに、前記第2ターゲットシステムクロック入力ピンに接続される第2バスラッパーターゲットシステムクロック出力ピンを含み、前記第2バスラッパーが、それぞれの前記時間スロットで、前記ターゲットシステムクロック表示信号に基づき、前記第2バスラッパーターゲットシステムクロック出力ピンでターゲットシステムクロック信号を送信するかどうかを決定する、請求項3に記載される検証エンジン。
- 前記ターゲットシステムクロック信号の集合が第1クロック表示信号および第2クロック表示信号を含み、前記第1バスラッパーが、前記第1クロック表示信号に応えて前記第1バスラッパーターゲットシステムクロック出力ピンでターゲットシステムクロックを送信し、前記第2バスラッパーが、前記第2クロック表示信号に応えて、前記第2バスラッパーターゲットシステムクロック出力ピンでターゲットシステムクロックを送信する、請求項5に記載される検証エンジン。
- 前記ターゲットシステムクロック信号の集合が、さらに、第2クロック表示信号を含み、前記第1ハードウェアモデルが、さらに、第2ターゲットシステムクロック入力ピンを含み、前記第1バスラッパーがさらに第2クロック入力を生成し、第2ターゲットシステムクロック表示信号に応えて前記第2ターゲットシステムクロック入力ピンにそれを送信することができる、請求項3に記載される検証エンジン。
- 前記時間同期情報が、複数の時間スロット内で送信される時間スロット番号を含む、請求項1に記載される検証エンジン。
- 複数のターゲットシステムバスによって相互接続される複数の構成要素を有するターゲットシステムの設計を検証するための検証エンジンであって、
(a)それぞれが、バスラッパー/ハードウェアモデル集合のピンおよびバスラッパー/バスライン集合のピンと、それぞれの前記バスラッパー/ハードウェアモデルピンをバスラッパー/バスラインピンに切り替え自在に通信可能に接続する切り替え可能通信回路と、前記切り替え可能通信回路を制御する制御ブロックとを有する複数の再構成可能なバスラッパーと、
(b)バスラインの集合であって、該バスラインのそれぞれがバスラッパーごとにバスライン/バスラッパーピンを有し、各バスライン/バスラッパーピンがバスラッパー/バスラインピンに接続されている、バスラインの集合と、
(c)前記バスラインの少なくともいくつかに接続され、前記制御ブロックが時間スロット番号を統一して決定するために十分な時間同期情報を送信するように適応されているシステム制御装置と
を備え、
(d)ここで、前記時間同期信号に応えて、各前記制御ブロックが前記時間スロット番号を決定し、前記時間スロット番号の内の所定の番号に応えて、少なくとも1本のバスラッパー/ハードウェアモデルピンを、バスラッパー/バスラインピンとの通信連絡に切り替える、
前記検証エンジン。 - 前記時間同期情報が時間スロット番号を含む、請求項9に記載される検証エンジン。
- 第1ドライバの第1ドライバ入力ピンに通信可能に接続される第1回路ノードと、第2ドライバの第2ドライバ入力に通信可能に接続される第2回路ノードとの間で駆動方向を決定する方法であって、前記第1ドライバおよび前記第2ドライバが接続回線により接続され、前記第1回路ノードおよび第2回路ノードが、前記第1ドライバまたは前記第2ドライバのどちらかを、それぞれ前期第1回路ノードまたは前記第2回路ノードからの入力でイネーブルすることによって接続されるように一時的に命令され、
(a)前記第1回路ノードが駆動されているかどうかを判断することによって第1試験結果を自動的に形成することと、
(b)第1フォーマットで、前記第1試験結果を記録することと、
を備える前記方法。 - さらに、
(a)前記第2回路ノードが駆動されているかどうかを判断することによって第2試験結果を自動的に形成するステップと、
(b)前記第1フォーマットで前記第2試験結果を記録するステップと、
(c)前記第1試験結果を前記第2試験結果と比較するステップと、
(d)前記第1試験結果が前記第2試験結果と異なる場合に、前記第1ドライバまたは前記第2ドライバを使用して、前記回路ノードのどちらかがが駆動されている前記相互接続回線を駆動するステップと
を含む、請求項11の駆動方向を決定する方法。 - 前記第1回路ノードと前記第2回路ノードの両方とも駆動されている場合に、これが競争状態として記録され、前期第1回路ノードと前記第2回路ノードのどちらも駆動されていない場合に、これが浮動状態として記録される、請求項12に記載される方法。
- 前記競争状態により、前記第1ノードと前記第2ノードのコネクションのために前記一時コマンドの取消しが引き起こされる、請求項12に記載される方法。
- 前記浮動状態により、システム動作への割込みが引き起こされる、請求項12に記載される方法。
- 前記第1ノードが、第1ハードウェアモデルと第1バスラッパーの間で第1導リンクを含み、前記第2ノードが第2ハードウェアモデルと第2バスラッパーの間で第2導線リンクを含み、前記相互接続回線が、前記第1バスラッパーを前記第2バスラッパーに接続するバスラインである、請求項12に記載される方法。
- 前記第1ノードが、非常に多数の第1ノードの中からのノードであり、それぞれが、前記第1ハードウェアモデルと、検証エンジンの一部である第1バスラッパーの間の導線リンクを含み、前記第2ノードが非常に多数の第2ノードの内のノードであり、それぞれが、前記検証エンジン内で前記第2ハードウェアモデルと前記第2ラッパーの間の導線リンクを含み、前記バスラインが、前記第1バスラッパーを前記第2バスラッパーに接続する非常に多数のバスラインの中からの1つである、請求項12に記載される方法。
- 前記検証エンジンが、さらに、前記バスライン上の将来のバス競争が、検証エンジン動作の割込みを生じさせることかどうかを示す少なくとも1つのバイナリ値を各バスラインに関して指定するバス競争報告テーブルを含む、請求項13に記載される方法。
- 前記検証エンジンが、さらに、前記バスライン上の将来のバス浮動が、検証エンジン動作の割込みを生じさせることかどうかを示す少なくとも1つのバイナリ値を、各バスラインごとに指定するバス浮動報告テーブルを含む、請求項13に記載される方法。
- 前記バスラインが時間スロットに時間多重化され、ここで前記バス競争報告テーブルが、前記時間スロット内の前記バスラインでの将来のバス競争が、検証エンジン動作の割込みを生じさせることかどうかを示す各時間スロットのバイナリ値を、バスラインごとに指定する、請求項18に記載される方法。
- 前記バスラインの動作が時間スロットに時間多重化され、前記バス浮動報告テーブルが、前記時間スロット内の前記バスラインでの将来のバス浮動が、検証エンジン動作の割込みを生じさせるかどうかを示すバイナリ値を、各バスラインごとに、各時間スロットごとに指定する、請求項19に記載される方法。
- (a)(i)前記第1構成要素入力/出力ピンに接続されるように適応されている第1バスラッパー対構成要素ピンの集合と、
(ii)第1バスラッパーバスラインピンの集合と、
(iii)各前記ラッチが、前記第1バスラッパー対構成要素ピンに、および前記第1バスラッパーバスラインピンに、切り替え自在で通信可能に接続されているラッチの集合と、
(iv)ローカル状態センサと
を有する第1バスラッパーと、
(b)(i)前記第2構成要素入力/出力ピンに接続されるように適応されている第2バスラッパー対構成要素ピンの集合と、
(ii)第2バスラッパーバスラインピンの集合と、
(iii)各前記ラッチが、前記第2バスラッパー対構成要素ピンおよび前記第2バスラッパーバスラインピンに切り替え自在に通信可能に接続されているラッチの集合と
を有する第2バスラッパーと、
(c)各前記第1バスラッパーバスラインピンを前記第2バスラッパーバスラインピンに接続するバスライン導体の集合と、
(d)バスライン導体の前記集合に接続されるシステム制御装置バスラインピンの集合を有し、前記バスラッパーが時間スロット番号を統一して決定するために十分な時間同期情報を前記バスラッパーに送信するように適応されているシステム制御装置と
を備え、
(e)ここで、各バスラッパーが、前記各時間スロット番号について、その前記ラッチの内のどれが前記時間スロットの間にアクティブであるのかを、アクティブなものがある場合には、判断するように適応されており、前記第1バスラッパーがさらに前記ローカル状態センサおよび前記時間スロット番号によって少なくとも部分的に、どの前記アクティブラッチが前記第1バスラッパー対構成要素ピンとの送信通信結合状態に切り替えられるのか、およびどれが前記第1バスラッパーバスラインピンとの送信通信結合に切り替えられるのかを判断するように適応されている、
第2構成要素入力/出力ピンの集合を有する第2電気的構成要素へと第1構成要素入力/出力ピンの集合を有する第1電気的構成要素を選択的に結合するように適応されているバス。 - 前記ローカル状態センサが、前記第1電気的構成要素の第1入力/出力ピンが駆動しているのかどうかを感知する、請求項22に記載されるバス。
- 構成要素間でデータの定められたフローを可能にする複数のバスによって接続される複数の前記構成要素から構成されているターゲットシステム設計の検証試験用の方法であって、
(a)前記構成要素の少なくともいくつかのハードウェアモデルを、時間多重化バスに接続することと、
(b)前記時間多重化バスを制御し、前記ハードウェアモデル間のデータの前記定められたフローを可能にすることと
を備えた方法。 - 双方向ピンを備える集積回路に接続するための装置であって、
(a)高駆動時間中に、前記双方向ピンを高にソフト駆動し、低駆動時間中に前記双方向ピンを低にソフト駆動するように適応されているソフト駆動装置と、
(b)その高駆動時間中に、前記双方向ピンの出力を保存するように構成される第1フリップフロップと、
(c)その低駆動時間中に、前記双方向ピンの出力を保存するように構成される第2フリップフロップと、
(d)前記第1フリップフロップの前記出力に接続される第1入力、および前記第2フリップフロップの前記出力に接続される第2入力を有し、前記高駆動時間および低駆動時間の後に、それによりピン駆動方向を示す出力を有する、排他的ORゲートと
を備えた装置。 - さらに、前記双方向ピン用の双方向バッファを含み、前記双方向バッファが、前記排他ORゲートの前記出力に応えて駆動方向を変更する、請求項25に記載される装置。
- 構成要素の集合を有するターゲットシステムをモデル化するように適応されている検証エンジンであって、
(a)各ハードウェアモデルが前記構成要素を表す、非常に多数のハードウェアモデルと、
(b)前記ハードウェアモジュールをともにリンクし、システム制御装置を含むバスと、
(c)前記ハードウェアモデルによって表されずに、シミュレーションされた構成要素である前記構成要素についてのシミュレーションプログラムを実行するコンピュータであって、さらに、前記システム制御装置と通信可能に接続されている前記コンピュータと
を備えた検証エンジン。 - 設計者によるターゲットシステム電子回路設計の試作を容易にするための装置であって、前記ターゲットシステム電子回路設計が、前記開発者に未知であってよい内部構造を有し、第1ピンを有する第1構成要素、第2構成要素、および前記第1構成要素の前記第1ピンに第1信号を送信する第3構成要素を含み、
(a)ソケット、およびシミュレーション言語で記述されたプログラムを格納しているメモリアセンブリとを含み、前記第3構成要素をシミュレーションし、前記第1信号をモデル化する第1モデル状態を形成するように適応されているコンピュータと、
(b)前記コンピュータの前記メモリ内に記憶され、さらに前記第1モデル状態を前記ソケットコマンドに変換し、それによって前記第1信号をモデル化する第1ソケット出力信号を、前記ソケットから転送させるように適応されているコンピュータソフトウェアオブジェクトと、
(c)前記ソケットに作動できるように結合される通信アセンブリと、
(d)前記第1構成要素をモデル化するように適応され、前記第1ピンをモデル化する第1モデルピンを含む第1ハードウェアモデルであって、前記第1モデルピンが前記通信アセンブリに作動できるように接続される第1ハードウェアモデルと、
(e)前記第2構成要素をモデル化するように適応され、前記通信アセンブリに作動できるように接続される第2ハードウェアモデルと
を備えた装置。 - 前記第1ハードウェアモデルが前記第1構成要素に物理的に同一である、請求項28に記載される装置。
- 前記第1ハードウェアモデルが、第1構成要素の回路を実現するように構成されるFPGAを備える、請求項28に記載される装置。
- 開発者によるターゲットシステム電子機器回路設計の試作を容易にするためのデバイスであって、前記ターゲットシステム電子機器回路設計が、前記開発者に未知であってよい内部構造を有し、第1ピンを有する第1構成要素、第2構成要素、および前記第1構成要素の前記第1ピンから第1信号を受信し、前記第1信号に応えて第1状態を形成する第3構成要素を含み、
(a)通信アセンブリと、
(b)前記第1構成要素をモデル化するように適応されている第1ハードウェアモデルであって、前記第1ピンをモデル化する第1モデルピンを含み、前記第1モデルピンが前記通信アセンブリに作動できるように接続され、さらに前記第1ピンより前記第1信号を送信するように適応されている前記第1ハードウェアモデルと、
(c)前記第2構成要素をモデル化するように適応され、前記通信アセンブリに作動できるように接続される第2ハードウェアモデルと、
(d)シミュレーション言語で記述されたプログラムを持つソケットとメモリアセンブリを含み、前記第3構成要素をシミュレーションし、前記ソケットで第1ソケット信号を受信するように適応され、前記ソケットが前記通信アセンブリに作動できるように接続されるコンピュータと、
(e)前記コンピュータの前記メモリ内に記憶され、前記第3構成要素をモデル化し、前期第1ソケット信号を受信し、前記第1ソケット信号に応えて第1モデル状態を形成するように適応され、前記第1モデル状態が前記第1状態をモデル化するコンピュータソフトウェアオブジェクトと、
を備える前記デバイス。 - 開発者によるターゲットシステム電子機器回路設計の試作を容易にするためのデバイスであって、前記電子機器回路設計は、マイクロプロセッサと、前記マイクロプロセッサ上で実行するように適応されているプログラムを格納する第1メモリアセンブリと、前記開発者に未知である場合がある内部構造を有する構成要素と、前記マイクロプロセッサを前記コンピュータメモリおよび前記構成要素に接続する第1通信リンクアセンブリとを含み、
(a)少なくとも部分的に前記マイクロプロセッサをモデル化するように適応されているハードウェアによって実現されるマイクロプロセッサモデルと、
(b)前記構成要素をモデル化するように適応されているハードウェア構成要素モデルと、
(c)前記プログラムおよびメモリの内容を格納すしている第2メモリアセンブリと、
(d)前記モデルメモリアセンブリおよび前記構成要素モデルを前記マイクロプロセッサモデルに接続するモデル通信アセンブリと、
(e)コンピュータと、
(f)前記コンピュータを前記モデル通信アセンブリにリンクし、前記プログラムの開発者によって指定される点で、前記メモリ内容の選択された内容を前記コンピュータに送達するように適応されているリンク報告アセンブリと
を備えたデバイス。 - 前記マイクロプロセッサモデルが、物理的に、前記マイクロプロセッサを備える、請求項32に記載される方法。
- 構成要素の集合を試験するための検証エンジンであって、各構成要素が、入力/出力ピンを集合を有し、前記検証エンジンが、構成要素ピンの集合のトグルカバレージを測定する能力を有し、
(a)前記入力/出力ピンごとにトグル検出器を有する相互接続アセンブリと、
(b)各トグル検出器の出力を記録するためのメモリ空間と、
(c)存在する場合には、前記入力/出力ピンのどれがトグルされていないのかを検出し、ユーザに報告するための検出報告アセンブリと
を備えた、構成要素の集合を試験するための検証エンジン。 - それぞれのターゲットシステム構成要素が、システムレベルハードウェア記述内のターゲットシステム構成要素名によって指定される、ターゲットシステム構成要素の集合を含むシステムレベルハードウェア記述を、それぞれがハードウェアモデルのライブラリ内に存在し、仮想校正要素名によって指定される仮想構成要素の集合にマッピングするための方法であって、
(a)前記システムレベルハードウェア記述をターゲットシステム構成要素の前記集合中に展開し、前記ターゲットシステム構成要素を表す前記ターゲットシステム構成要素名を表示するステップと、
(b)前記仮想構成要素名を表示するステップと、
(c)ユーザが、前記ターゲットシステム構成要素名を、前記仮想構成要素名に一致させることを可能にし、それにより前記ターゲットシステム構成要素の前記仮想構成要素名と関連付けられる前記ハードウェアモデルを指定するステップとを備えた方法。 - 複数の前記仮想構成要素名が同時に表示される、請求項35に記載される方法。
- 複数の前記ターゲットシステム構成要素名が同時に表示さえる、請求項35に記載される方法。
- ターゲットシステム構成要素の集合を含み、各前記ターゲットシステム構成要素が前記システムレベルハードウェア記述のターゲットシステム構成要素名によって指定されている、システムレベルハードウェア記述を、検証エンジン内でモデル化される構成要素の第1サブ集合と、シミュレータ内でモデル化される構成要素の第2サブ集合とに区分する方法であって、
(a)前記システムレベルハードウェア記述を、前記ターゲットシステム構成要素の集合に解析し、前記ターゲットシステム構成要素名を表示するステップと、
(b)ユーザが、前記ターゲットシステム構成要素名に対応する前記ターゲットシステム構成要素を、構成要素の前記第1サブ集合または構成要素の前記第2に属するとして指定できるようにするステップと、
(c)前記構成要素の第1集合と前記構成要素の第2集合の間で相互接続ネットリストを作成するステップと
を備えた方法。 - 複数のターゲットシステム構成要素名が同時に表示される、請求項38に記載される方法。
- 前記ターゲットシステム構成要素名に対応する前記ターゲットシステム構成要素が、前記ターゲットシステム構成要素が構成要素の前記第2サブ集合に属さなければならないことを前記ユーザが明確に示さない限り、構成要素の第1サブ集合に属するとして自動的に指定される、請求項38に記載される方法。
- 副部分入力/出力ピンの集合を有する副部分を含む、第1構成要素、第2構成要素、および追加の部分を有するターゲットシステムの設計を検証するための検証エンジンであって、
(a)それぞれ前記第1構成要素および前記第2構成要素として構成される、第1ハードウェアモデルおよび第2ハードウェアモデルと、
(b)前記第1ハードウェアモデルおよび前記第2ハードウェアモデルをともに通信でリンクする相互接続アセンブリと、
(c)(i)前記相互接続アセンブリに接続されるプロセッサアセンブリ入力/出力ピンの集合と、
(ii)前記プロセッサアセンブリで実行されるときに、前記副部分の行動モデルを作成するように適応され、ターゲットシステム動作中に、前記副部分入力/出力ピンが応答するにつれて刺激に応えるためにプロセッサアセンブリ入力/出力ピンの前記集合を制御するように適応されているプログラムを格納しているメモリアセンブリと
を含むプロセッサアセンブリと
を備えた検証エンジン。 - 前記再構成可能相互接続アセンブリが時間多重化バスを備える、請求項41に記載される検証エンジン。
- さらに、前記再構成可能相互接続アセンブリに接続される、実行シミュレーションプログラムをホストするコンピュータを含む、請求項1に記載される検証エンジン。
- 第1構成要素、第2構成要素、および副部分を含む追加部分を有するターゲットシステムの設計を検証するための方法であって、
(a)それぞれ前記第1構成要素および前記第2構成要素として構成される第1ハードウェアモデルおよび第2ハードウェアモデルを提供するステップと、
(b)前記第1ハードウェアモデルおよび第2ハードウェアモデルをともに通信可能にリンクする相互接続アセンブリを提供するステップと、
(c)前記相互接続アセンブリに接続されるプロセッサアセンブリを提供するステップと、
(d)前記第1ハードウェアモデルおよび前記第2ハードウェアモデルを動作し、それにより、相互接続アセンブリ信号を作成し、前記相互接続アセンブリ信号を前記プロセッサアセンブリが使用できるようにするステップと、
(e)前記プロセッサでプログラムを実行し、前記プログラムが
(i)前記副部分のサイクルベースの行動モデルを確立するステップと、
(ii)前記相互接続アセンブリ出力信号を、前記行動モデルに直接的にポートし、前記行動モデル出力信号を前記相互接続アセンブリに直接ポートするステップと
を実行するステップと
を備えた前記方法。 - 前記再構成可能相互接続アセンブリが時間多重化バスを備える、請求項44に記載される方法。
- さらに、前記再構成可能相互接続アセンブリに接続される、実行するシミュレーションプログラムをホストするコンピュータを提供することを含む、請求項44に記載される方法。
- 第1電気的構成要素および第2電気的構成要素を有しているターゲットシステムの設計を検証するための検証エンジンであって、この検証エンジンは、第1入力/出力ピンの集合を有していて前記第1および第2電気的構成要素に作動できるように接続されているような電気機械装置を、制御するように適応されており、さらに、
(a)それぞれ第1構成要素および第2構成要素として構成される第1ハードウェアモデルおよび第2ハードウェアモデルと、
(b)前記第1ハードウェアお出るおよび第2ハードウェアモデルをともに通信可能にリンクする相互接続アセンブリと、
(c)(i)前記相互接続アセンブリに接続される第2入力/出力ピンの集合と、
(ii)前記プロセッサアセンブリでの実行時に前記電子機械装置の行動モデルを生成するように適応し、ターゲットシステム運用中に第1入力/出力ピンの前記集合が応えるように、第2入力/出力ピンの前記集合に刺激に応えさせるようにも適応されているプログラムを格納しているメモリアセンブリと
を含むプロセッサアセンブリと
を備えた検証エンジン。 - 第1電気的構成要素、第2電気的構成要素、および副部分を含む追加部分を有するターゲットシステムの設計を検証するための検証エンジンであって、
(a)それぞれ前記第1構成要素および前記第2構成要素として構成される第1ハードウェアモデルおよび第2ハードウェアモデルと、
(b)前記第1ハードウェアモデルおよび前記第2ハードウェアモデルをともに通信可能にリンクする相互接続アセンブリと、
(c)前記相互接続アセンブリに作動できるように接続され、前記相互接続アセンブリを介して、システムクロック信号を前記第1ハードウェアモデルおよび前記第2ハードウェアモデルに送信するシステム制御装置と、
(d)(i)前記相互接続アセンブリに接続される入力/出力ピンの集合と、(ii)前記プロセッサアセンブリでの実行時に、行動モデルを作成するように適応されているプログラムを格納しているメモリアセンブリと、
(iii)前記マイクロプロセッサのクロック入力に電気的に接続され、前記システムクロックより高速である内蔵クロックと、
(iv)前記プロセッサアセンブリが、単一システムクロック期間内に前記相互接続アセンブリから受信される入力の集合に応えるように適応されている、
を含むプロセッサアセンブリと
を備えた前記検証エンジン。 - 前記再構成可能相互接続アセンブリが、時間多重化バスを備える、請求項48に記載される検証エンジン。
- さらに、前記再構成可能相互接続アセンブリに接続される、実行するシミュレーションプログラムをホストするコンピュータを含む、請求項48に記載される検証エンジン。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22854299A | 1999-01-06 | 1999-01-06 | |
US33628499A | 1999-06-18 | 1999-06-18 | |
US33644599 | 1999-06-18 | ||
US44317599A | 1999-11-19 | 1999-11-19 | |
PCT/US2000/000292 WO2000041101A1 (en) | 1999-01-06 | 2000-01-05 | Apparatus and method for verifying a multi-component electronic design |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004500609A true JP2004500609A (ja) | 2004-01-08 |
Family
ID=27499511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000592759A Pending JP2004500609A (ja) | 1999-01-06 | 2000-01-05 | 多要素電子回路設計を検証するための装置および方法 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP1222580A1 (ja) |
JP (1) | JP2004500609A (ja) |
AU (1) | AU3581200A (ja) |
WO (1) | WO2000041101A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4371856B2 (ja) | 2004-03-04 | 2009-11-25 | 株式会社東芝 | 安全保護計装システムおよびその取扱方法 |
CN115932667B (zh) * | 2023-01-09 | 2024-01-12 | 广东氧迪力电气科技有限公司 | 电气元器件接线关系检测方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4357678A (en) * | 1979-12-26 | 1982-11-02 | International Business Machines Corporation | Programmable sequential logic array mechanism |
US4744084A (en) * | 1986-02-27 | 1988-05-10 | Mentor Graphics Corporation | Hardware modeling system and method for simulating portions of electrical circuits |
US5353243A (en) * | 1989-05-31 | 1994-10-04 | Synopsys Inc. | Hardware modeling system and method of use |
US5483640A (en) * | 1993-02-26 | 1996-01-09 | 3Com Corporation | System for managing data flow among devices by storing data and structures needed by the devices and transferring configuration information from processor to the devices |
US5596742A (en) * | 1993-04-02 | 1997-01-21 | Massachusetts Institute Of Technology | Virtual interconnections for reconfigurable logic systems |
US5479355A (en) * | 1993-09-14 | 1995-12-26 | Hyduke; Stanley M. | System and method for a closed loop operation of schematic designs with electrical hardware |
US5649176A (en) * | 1995-08-10 | 1997-07-15 | Virtual Machine Works, Inc. | Transition analysis and circuit resynthesis method and device for digital circuit modeling |
US5794012A (en) * | 1996-10-09 | 1998-08-11 | Hewlett-Packard Company | Verification of strongly ordered memory accesses in a functional model of an out-of-order computer system |
US6006022A (en) * | 1996-11-15 | 1999-12-21 | Microsystem Synthesis, Inc. | Cross-linked development and deployment apparatus and method |
US5991529A (en) * | 1997-05-16 | 1999-11-23 | Sony Corporation | Testing of hardware by using a hardware system environment that mimics a virtual system environment |
-
2000
- 2000-01-05 AU AU35812/00A patent/AU3581200A/en not_active Abandoned
- 2000-01-05 WO PCT/US2000/000292 patent/WO2000041101A1/en not_active Application Discontinuation
- 2000-01-05 EP EP00914418A patent/EP1222580A1/en not_active Withdrawn
- 2000-01-05 JP JP2000592759A patent/JP2004500609A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2000041101A1 (en) | 2000-07-13 |
AU3581200A (en) | 2000-07-24 |
EP1222580A1 (en) | 2002-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6279146B1 (en) | Apparatus and method for verifying a multi-component electronic design | |
US5663900A (en) | Electronic simulation and emulation system | |
US5339262A (en) | Method and apparatus for interim, in-situ testing of an electronic system with an inchoate ASIC | |
KR100483636B1 (ko) | 에뮬레이션및시뮬레이션을이용한설계검증방법및장치 | |
US5629876A (en) | Method and apparatus for interim in-situ testing of an electronic system with an inchoate ASIC | |
US8136065B2 (en) | Integrated prototyping system for validating an electronic system design | |
US6083269A (en) | Digital integrated circuit design system and methodology with hardware | |
US7120571B2 (en) | Resource board for emulation system | |
JP2002505024A (ja) | 並行ハードウェア―ソフトウェア・コシミュレーション | |
KR20000029237A (ko) | 반도체 집적 회로 평가 시스템 | |
CN111859834B (zh) | 一种基于uvm的验证平台开发方法、系统、终端及存储介质 | |
EP0410502B1 (en) | Method and apparatus for emulating interaction between application specific integrated circuit (asic) under development and target system | |
CN116340150A (zh) | 一种基于uvm的可重用的寄存器性能交互验证系统及其应用 | |
US7627462B2 (en) | Hardware simulation using a test scenario manager | |
US20030145290A1 (en) | System for controlling external models used for verification of system on a chip (SOC) interfaces | |
JP2004500609A (ja) | 多要素電子回路設計を検証するための装置および方法 | |
CN113204929B (zh) | 基于sv和uvm实现ahb vip的方法、电子装置及存储介质 | |
Wageeh et al. | FPGA based accelerator for functional simulation | |
Kurula | A FRAMEWORK FOR EARLY SYSTEM-ON-CHIP CO-VALIDATION | |
Shakhmatov et al. | A functional verification system of IP-blocks in network protocols | |
CN117272883A (zh) | 电路设计的分布式仿真同步 | |
JP2921087B2 (ja) | ハードウェアアクセラレータにおける実チップシミュレーション方式 | |
CN117436375A (zh) | 使用多周期路径特性的波形捕获 | |
CN116187233A (zh) | 检查器控制方法、验证系统、计算机设备以及存储介质 | |
Zhang et al. | Integrated iss and fpga soc hw/sw co-verification environment design |