JP3953243B2 - システム分析のためにバス・アービトレーション制御を使用する同期方法及び装置 - Google Patents

システム分析のためにバス・アービトレーション制御を使用する同期方法及び装置 Download PDF

Info

Publication number
JP3953243B2
JP3953243B2 JP35238099A JP35238099A JP3953243B2 JP 3953243 B2 JP3953243 B2 JP 3953243B2 JP 35238099 A JP35238099 A JP 35238099A JP 35238099 A JP35238099 A JP 35238099A JP 3953243 B2 JP3953243 B2 JP 3953243B2
Authority
JP
Japan
Prior art keywords
agents
bus
agent
synchronization
processor
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.)
Expired - Fee Related
Application number
JP35238099A
Other languages
English (en)
Other versions
JP2000194610A (ja
Inventor
モニカ・ファーカス
ラーナン・ジェワーツマン
ダニエル・ジスト
カレン・ホルツ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2000194610A publication Critical patent/JP2000194610A/ja
Application granted granted Critical
Publication of JP3953243B2 publication Critical patent/JP3953243B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータ・システムを分析する装置及び方法に関する。
【0002】
【従来の技術】
本出願人の知るところによれば、システム検証及び関連技術の最新技術が、次の文献等で述べられている。
【0003】
[1]A. Aharon、D. Goodman、M. Levinger、Y. Lichtenstein、Y. Malka、C. Metzger、M. Molcho、及びG. Shurekによる"Test Program generation for functional verification of PowerPC processors in IBM"、in 32nd Design Automation Conference、DAC 95、pages 279-285、1995。
[2]Y. Lichtenstein、Y. Malka、及びA. Aharonによる"Model-based test generation for processor design verification"、in Innovative Applications of Artificial Intelligence(IAAI)、AAAI Press、1994。[3]IBMによる欧州特許出願第94303181.5号(公開番号0 628 911 A2)。
[4]D. Marr、S. Thakkar、及びR. Zuckerによる"Multiprocessor Validation of the Pentium pro Microprocessor"、Proceedings of the COMPCON'96。[5]J. Walterらによる"Hierarchical Random Simulation Approach for the Verification of S/390 CMOS Multiprocessors"、Proceedings of the DAC'97、pages 89-94。
[6]K. Hines及びG. Borrielloによる"Dynamic Communication Models in Embedded System Co-Simulation"、Proceedings of the DAC'97、pages 395-400。
[7]M. Bauer及びW. Eckerによる"Hardware/Software Co-Simulation in a VHDL-based Test Bench Approach"、Proceedings of the DAC'97、pages 774-779。
[8]Kreulenらによる米国特許第5740353号。
【0004】
本発明の概要:
本発明はシステム分析のための、改善された装置及び方法を提供することを目的とする。
【0005】
分析は検証、テスト、デバッグ及び性能分析を含むものと理解される。システム検証における同期の適用について述べることにする。
【0006】
ハードウェア・システム検証は、あらゆるコンピュータ・システムの開発において、不可欠で重要な活動である。システム検証の目的は、製造の開始前に、バグと呼ばれる機能誤りから設計を浄化することである。システム設計誤りは異なる原因に起因し、それらには、別々の設計労力の結果生じ得るシステム・コンポーネント間の矛盾するインタフェース、システム・コンポーネントの検証プロセスからもれてしまう誤り、及びその他の理由などがある。全体的に、システム検証の目的は、システムの設計がその使用に準ずるか否かを検証することである。システムが製造される前に、システム検証により、こうした誤りを露呈することが重要である。なぜなら、製造後にバグを修正するコストは、非常に高額になり得るからである。
【0007】
ハードウェア・システム検証のために使用される1方法は、システム・モデルのシミュレーションである。各システム・モデルは、システム・コンポーネントの設計から構成される。更に、周辺装置などのシステム・コンポーネントの振舞いをシミュレートするために、ビヘイビュラル・ユニットがモデルに追加され得る。システム振舞いの検証は、テスト・プログラムのシミュレーションにより達成される。システム・テスト・プログラムは、システム・コンポーネントの各々に対する実行スレッドにより構成される。これらのシステム・テストは自動テスト生成ルールにより、自動的に生成され得る(従来の技術のセクションのところで掲げた文献1及び2は、シングル・プロセッサのためのテスト生成ツールについて述べている)。
【0008】
システム・シミュレーション・モデルは、非常に大規模となり得る。すなわち、複数のプロセッサ、複数のバス・ブリッジ、メモリ制御装置、及びI/Oバスビヘイビュラルを含むようになる。こうしたモデルに対するテストのシミュレーションは、時間を消費する。多くのランダム・テストの単なる大規模シミュレーションでは、良好な検証効果は得られない。システム・テストの質を向上させる方法は、異なるシステム・コンポーネントを同期させることにより、興味深い事象シーケンスを強制することである。更に、良好な効果が、1つの事象セットの全ての可能な順序をテストすることにより獲得され得る。これは本発明で述べる同期法を使用することにより達成され得る。
【0009】
システム検証はかなり複雑なテスト・プログラムにもとづく。プロセッサ検証のために使用されるテスト・プログラムに比較して、システム・テスト・プログラムは異なる独立のシステム・コンポーネントの同期を要求する。システム活動は、分散されたプロトコルのセットにより決定され、従って中央制御が欠如する。システム・コンポーネントが対話するシーケンスは、テストにより異なる。検証プランの良好な効果は、異なるシーケンスの組合せにより獲得される。従って、テストの間にシステム・コンポーネントの同期を制御する能力が、効率的なシステム検証にとって重要となる。
【0010】
システム検証は自動テスト・プログラム生成にもとづく。自動テスト・プログラム生成ツールへの入力は、テスト生成命令のリストを含み得、出力は全てのシステム・コンポーネントへの初期化及び実行命令を含むテスト・プログラム、並びに期待結果を含み得る。同期は、設計自動化ツールの生産性を利用するために、テスト生成方法に統合されるべきである。更に、テスト同期は、同期されるシステム・コンポーネント間の遅延を制御するために、柔軟性を提供すべきである。短い遅延がシステム活動間の競合を増加させ、最終的に設計誤りの検出をもたらす。
【0011】
エージェント間の同期を実現する幾つかの方法が存在する。次のフィーチャが、好適な同期方法にとって重要である。
【0012】
高速性:
シグナリング事象と保留トランザクション間のできる限り少ないサイクル数。経験的に同期遅延が小さいほど、資源競合の機会が高いことが知れている。換言すると、シグナリング事象後、待機エージェントが保留トランザクションの実行を開始するために要する時間が、逼迫した対話を達成するのに重要である。
【0013】
総称的な適用可能性:
例えばメモリ制御装置などの非始動システム・コンポーネントを含む、異なるタイプのエージェントによる使用可能性。
【0014】
従来のテスト・システムは、それらがターゲットとするコンポーネントのタイプに依存した。プロセッサのために開発された同期機構、異なるビヘイビュラルの各々の詳細に依存して、それらに適用可能な技術が存在する。例えば、システム検証[上記文献4及び5];ハンドシェーク同期[文献6];マスタ同期[文献7]など。
【0015】
本発明は、シグナリング事象と保留トランザクション間で可能な最短時間を一般に達成する同期方法を提供する。また、本発明は、プロセッサ、I/O装置、及びバスへのアクセスを有する非始動システム・コンポーネントと共に使用され得る。これはバス・ベースのシステムで使用される効率的で強力な同期方法である。
【0016】
本発明の好適な実施例は、バス・アービトレーションを制御することにより、同期方法を提供する。この実施例は好適には、SC(同期制御装置)プログラムを含む。
【0017】
本発明のシステムは、正規の複数コンポーネント・システム・オペレーションの間に使用され得る。本発明の好適な1実施例は、検証品質を改善する技術を含む。検証は通常、新たなシステムの設計労力の約50%を占め、何十億ドルものコストがかかる。ここで述べられる同期技術は、設計バグを含むことで有名であり、ランダム検証ではシミュレーションが非常に困難な領域である資源競合をターゲットとする。従って、本発明の好適な実施例の1つの目的は、問題領域をターゲットとすることにより、限られたシミュレーション時間内で、システム検証労力をより効率化することである。
【0018】
本発明の好適な実施例の特定のフィーチャは、ここで提供される同期はアーキテクチャ・レベルで述べられるが、任意のインプリメンテーション・レベルの同期を提供することである。これは一般に、バス・アービトレーションによりバス・トランザクション順序を制御する任意のバス・プロトコルと共に使用され得る。
【0019】
一般に、本発明は、外部コードに対するAPIを提供するシミュレータを使用し、これがシミュレーションの間にシミュレーション信号をポーリングし、それを変更可能にする。モデル・テクノロジ社及びシノプシス社からそれぞれ販売される、ModelSim/VHDL及びSynopsis VHDL System Simulation(VSS)などの最新のシミュレータは、この機能を有する。この方法は、今日のほとんどのバス・プロトコルがそうであるように、バス・プロトコルがアービトレーションを使用する広範囲のシステム検証問題に適用するのに一般に十分である。
【0020】
本発明のアービトレーション同期機構は、例えばAS/400及びRS/6000のシステム検証、並びにL2キャッシュ制御装置などのバス上に載置する他の装置の検証に好適である。
【0021】
バス・アービトレーション同期は、少なくとも一部のアプリケーションでは、バスに接続されるエージェントを解放するための最速の非割込み方法(non-intrusive way)である。バス・アービトレーション同期の可能なアプリケーションには、次のものが含まれる。
a.システム検証プロセスの自動化において使用される同期制御装置。
b.設計内のバグを検出するための手動テスト・プロセス。
c.設計内の誤動作原因を識別するための手動デバッグ・プロセス。
d.ハードウェア・システムの所与の設計の期待性能を評価するための全ての方法を含む性能分析。例えば、本発明のバス・アービトレーション同期は、評価システム内の所与のレベルのバス利用を確立するために使用され得る。
【0022】
【発明が解決しようとする課題】
ここで示され、述べられる同期方法は、シーケンスの制御を達成するためのシステム・テストにおいて、非常に有用である。設計されるシステムの複雑度は、コンポーネントの数及び機能と共に増大するので、益々システム検証が重要視されるようになり、システム・テストにおける高度に洗練された方法として、アービトレーション同期の有用性が向上する。
【0023】
用語説明:
エージェント(または装置):
バスに接続されるシステム・コンポーネント。このコンポーネントはバス(アドレスまたはデータ・バス)のアービトレーションを要求し、バス保有期間のバス・マスタとなることができる。例えば、プロセッサは分割アドレス/データ・バス上でのアドレス保有期間のための、及び書込みデータ保有期間のためのバス・マスタとなり得る。他方、メモリ制御装置は、読出しデータ保有期間だけのバス・マスタとなり得る。
【0024】
エージェント・タイプ:
例えば、PowerPC603プロセッサ、PCI装置。
【0025】
アービトレーション:
バスに接続される複数のシステム・コンポーネントが存在する場合、2つのシステム・コンポーネントが同時にバスに書込まないように保証するために使用される機構。この機構はアービトレーションとして知られ、同様にバスに接続されるアービタ・システム・コンポーネントの利用により達成される。しばしば、バス上の各システム・コンポーネントは要求ラインを介してバスへのアクセスを要求し、グラント・ラインを介してバスへのアクセスを与えられる。
【0026】
ステーションへの到来(Arrival at the Station):
保留のトランザクション以前に待機エージェントがトランザクションを完了した、従って、今にもその保留のトランザクションを実行しようとしている時点。
【0027】
ビヘイビュラル(Behavioral):
ビヘイビュラルはシステム検証のために、周辺(I/O)装置の振舞いをシミュレートするために使用される、または実際の設計ではない余分なエージェントの役割をする。
【0028】
バス:
バスはシステム・コンポーネント間の共用通信リンクとして作用し、その上をアドレス及びデータが転送される。
【0029】
初期エージェント:
アドレスをその関連バス上に出力するエージェント。
【0030】
非始動エージェント:
アドレスをその関連バス上に決して出力しないが、バス上へのデータの提供者であり得るエージェント。
【0031】
参照モデル:
システムの参照モデルは、特定の入力がシステム状態に対して有する効果を予測する。テスト生成の間の参照モデルの使用により、ジェネレータはテストにとって関心となるシステム資源の現状態を推定する。
【0032】
事象(Event):
シミュレーション実行時間中の意義深いバス/エージェント状態の特定の発生(例えば、PCIバスにおけるアドレス・フェーズの発生)。
【0033】
シグナリング・エージェント/装置:
別のエージェント("待機エージェント"または"保留エージェント"と呼ばれる)のオペレーションのための条件として作用する事象("シグナリング事象")が発生するエージェント。シグナリング・エージェントにおいてシグナリング事象が発生するまで、待機/保留エージェントのオペレーションは保留にされる。
【0034】
同期:
同期は事象シーケンスの順序を保存する。例えば同期は、あるエージェントがアドレスAへのそのアクセスを完了後にだけ、別のエージェントにAへの書込みを強制するために使用される。待機エージェントは待機(または保留)エージェント/装置と呼ばれる。待機エージェントは、シグナリング事象と呼ばれる所定の事象が発生するまで、その実行を継続しない。一旦シグナリング事象が発生すると、待機エージェントの保留トランザクションが実行される。
【0035】
同期制御装置(SC):
動機制御装置の目的は、所与の事象シーケンスを保証することである。シミュレーションの間、シミュレーションと並行して実行されるシミュレーション制御プログラムの存在が仮定される。このプログラムすなわち同期制御装置(SC)は、現システム状態をモニタでき、またエージェント間の同期を強要できる。SCはシステム信号をモニタする能力を有し、またシステム信号を新たな特定の値に変化させることができる。
【0036】
テスト・ジェネレータ:
検証の目的のためにシミュレートされるテストを生成するプロセス。
【0037】
タイト・スヌーピング(tight snooping):
これは2つのエージェントが同一のシステム資源、例えばメモり位置を、時間的に接近してアクセスする任意の事象シーケンスである。
【0038】
時間:
本開示では、時間はシミュレーション・サイクルまたはクロック・サイクルに関して測定されるものとする。
【0039】
トランザクション:
本開示の目的上、トランザクションは、システム・モデルの残りのものとのエージェントの外部インタフェースに反映される、そのエージェントの任意のオペレーションとして定義される。
【0040】
保有期間(tenure):
バス保有期間は、あるタイプの情報がバス上に出力される時間間隔である。例えば、メモリからのプロセッサ読出しの間、2保有期間すなわちアドレス保有期間及びデータ保有期間が存在する。アドレス保有期間の間、プロセッサはアドレスをバス上に出力する。データ保有期間の間、メモリ制御装置が要求データをバス上に出力する。
【0041】
非アサート(de-asserted):
非活動化を意味する。
【0042】
エイエイオ(eieio):
PowerPCアーキテクチャ使用は、エイエイオ命令を含む("PowerPC 601 RISC Microprocessor User's Manual"、1993参照)。この命令はバス上でエイエイオ・トランザクションを生成する。エイエイオは本明細書では、単に、テスト・シミュレーションの間に、他の目的のためにバス上に現れないバス・トランザクションを生成する命令の例として使用される。同期制御装置が、保留トランザクションに対して準備完了状態の待機エージェントからの信号と解釈できる、専用のバス・トランザクションが要求される。
【0043】
【課題を解決するための手段】
従って、本発明の好適な実施例によれば、並列動作の複数のエージェントを有するシステムを実行し、少なくとも1介入時点に、複数のエージェント間の同期順序を強制する同期方法が提供される。
【0044】
更に、本発明の好適な実施例によれば、複数のエージェントが、ほとんど同時に1つのアドレスをアクセスする少なくとも2つのエージェントを含み、同期順序を強制するステップが、2つのエージェントの内の所定の1つが、他方がそのアドレスをアクセスするよりも先に、それをアクセスするように強制するステップを含む。
【0045】
更に、本発明の好適な実施例によれば、複数のエージェントが第1及び第2のエージェントを含み、同期順序を強制するステップが、第1の介入時点に、第1及び第2のエージェント間の順序を強制するステップを含む。また、複数のエージェントが第3及び第4のエージェントを含み、それらの少なくとも一方が第1及び第2のエージェントと異なり、同期順序を強制するステップが、第1の介入時点と異なる第2の介入時点に、第3及び第4のエージェント間の順序を強制するステップを含む。
【0046】
更に、本発明の好適な実施例によれば、複数のエージェントが個々のプロセッサ上に複数のスレッドを含む。
【0047】
更に、本発明の好適な実施例によれば、複数のエージェントが、少なくとも1介入時点において、並列動作の少なくとも3つのエージェントを含む。
【0048】
更に、本発明の好適な実施例によれば、複数のエージェントが、少なくとも1シグナリング事象を実行する少なくとも1シグナリング・エージェントと、少なくとも1保留トランザクションを実行する少なくとも1待機エージェントとを含み、同期順序を強制するステップが、少なくとも1シグナリング・エージェントが少なくとも1シグナリング事象を実行するまで、少なくとも1待機エージェントのオペレーションを保留にするステップを含む。
【0049】
更に、本発明の好適な実施例によれば、少なくとも1シグナリング事象が複数のシグナリング事象を含み、同期順序を強制するステップが、複数のシグナリング事象が実行されるまで、少なくとも1待機エージェントのオペレーションを保留にするステップを含む。
【0050】
更に、本発明の好適な実施例によれば、少なくとも1保留トランザクションが複数の保留トランザクションを含み、同期順序を強制するステップが、少なくとも1シグナリング事象が実行されるまで、複数の保留トランザクションを遅延するステップを含む。
【0051】
更に、本発明の好適な実施例によれば、3つのエージェントを含み、第1のエージェントによるあるアドレスに対するアクセス・オペレーションが、第2及び第3のエージェントが同一のキャッシュ・ラインを一般に同時にアクセスする前に、発生しなければならない。
【0052】
更に、本発明の好適な実施例によれば、並列動作の複数のエージェントが、バス・ブリッジの少なくとも1つのバッファを充填するように作用する。
【0053】
更に、本発明の好適な実施例によれば、並列動作の複数のエージェントが、メモリ制御装置の少なくとも1つのバッファを充填するように作用する。
【0054】
更に、本発明の好適な実施例によれば、並列動作の複数のエージェントを有するシステムを実行するシステム・マニピュレータと、少なくとも1介入時点において、複数のエージェント間の同期順序を強制するように作用する順序インポーザとを含む同期システムが提供される。
【0055】
更に、本発明の好適な実施例によれば、複数のエージェントが複数の事象に参加し、同期順序を強制するステップが、複数の事象が全ての可能な順序で発生するように強制するステップを含む。
【0056】
更に、本発明の好適な実施例によれば、少なくとも1シグナリング・エージェントが、少なくとも1シグナリング事象を実行する複数のシグナリング・エージェントを含み、同期順序を強制するステップが、複数のシグナリング・エージェントが少なくとも1シグナリング事象を実行するまで、少なくとも1待機エージェントのオペレーションを保留にするステップを含む。
【0057】
更に、本発明の好適な実施例によれば、少なくとも1待機エージェントが複数の待機エージェントを含み、同期順序を強制するステップが、少なくとも1シグナリング・エージェントが少なくとも1シグナリング事象を実行するまで、複数の待機エージェントのオペレーションを保留にするステップを含む。
【0058】
更に、本発明の好適な実施例によれば、各々が共通バスへの少なくとも1つの経路を有する、並列動作の複数のエージェントを有するシステムを実行するステップと、バス・アービトレーション機構により所定の技法に従い、複数のエージェント間を同期させるステップとを含む、同期方法が提供される。前記同期させるステップは、前記技法が個々のエージェントが活動化されないことを示す場合、共通バスへの前記エージェントの少なくとも1つの経路を遮断するステップと、一旦前記技法が個々のエージェントが活動化され得ることを示すと、共通バスへの個々のエージェントの少なくとも1つの経路を回復するステップとを含む。
【0059】
更に、本発明の好適な実施例によれば、複数のエージェントが複数のプロセッサを含む。
【0060】
更に、1本発明の好適な実施例によれば、複数のエージェントが少なくとも1つのプロセッサ及び少なくとも1つのI/Oユニットを含む。
【0061】
更に、本発明の好適な実施例によれば、複数のエージェントが、少なくとも1つの中間バスを介する共通バスへの経路を有する、少なくとも1つのエージェントを含む。
【0062】
更に、本発明の好適な実施例によれば、前記同期させるステップが外部的に、従ってエージェントの各々の内部構造とは無関係に実行される。
【0063】
更に、本発明の好適な実施例によれば、前記同期させるステップが、体系的信号を強制するステップを含む。
【0064】
更に、本発明の好適な実施例によれば、複数のエージェントが、ほとんど同時に1つのアドレスをアクセスする少なくとも2つのエージェントを含み、前記同期させるステップが、2つのエージェントの内の所定の1つが、他方がそのアドレスをアクセスするよりも先に、それをアクセスするように強制するステップを含む。
【0065】
更に、本発明の好適な実施例によれば、複数のエージェントが第1及び第2のエージェントを含み、前記同期させるステップが、第1の介入時点に、第1及び第2のエージェント間の順序を強制するステップを含む。また、複数のエージェントが第3及び第4のエージェントを含み、それらの少なくとも一方が第1及び第2のエージェントと異なり、前記同期させるステップが、第1の介入時点と異なる第2の介入時点に、第3及び第4のエージェント間の順序を強制するステップを含む。
【0066】
更に、本発明の好適な実施例によれば、複数のエージェントが、メモリ制御装置の少なくとも1つのバッファを充填するように動作し、前記同期させるステップが、メモリ制御装置が共通バスをアクセスするのを阻止するステップを含む。
【0067】
更に、本発明の好適な実施例によれば、複数のエージェントが、バス・ブリッジの少なくとも1つのバッファを充填するように作用し、前記同期させるステップが、バス・ブリッジが共通バスをアクセスするのを阻止するステップを含む。
【0068】
更に、本発明の好適な実施例によれば、各々が共通バスへの少なくとも1つの経路を有する、並列動作の複数のエージェントを有するシステムを実行するシステム・マニピュレータと、所定の技法に従い、複数のエージェント間を同期させるバス・アービトレーション機構とを含む、同期装置が提供される。前記同期させるステップは、前記技法が個々のエージェントが活動化されないことを示す場合、共通バスへの個々のエージェントの少なくとも1つの経路を遮断するステップと、一旦前記技法が個々のエージェントが活動化され得ることを示すと、共通バスへの個々のエージェントの少なくとも1つの経路を回復するステップとを含む。
【0069】
更に、本発明の好適な実施例によれば、システム・マニピュレータが、システムをシミュレートするように作用するシステム・シミュレータを含む。
【0070】
更に、本発明の好適な実施例によれば、システム・マニピュレータが、システムの性能分析を行うように動作する性能アナライザを含む。
【0071】
更に、本発明の好適な実施例によれば、システム・マニピュレータが、システムを検証するように作用するシステム・ベリファイヤを含む。
【0072】
更に、本発明の好適な実施例によれば、システム・マニピュレータが、システムをデバッグするように作用するシステム・デバッガを含む。
【0073】
更に、本発明の好適な実施例によれば、実行するステップが、システムをシミュレートするステップを含む。
【0074】
更に、本発明の好適な実施例によれば、システムの性能分析を行うステップを含む。
【0075】
更に、本発明の好適な実施例によれば、実行するステップが、システムを検証するステップを含む。
【0076】
更に、本発明の好適な実施例によれば、実行するステップが、システムをデバッグするステップを含む。
【0077】
【発明の実施の形態】
本文献の開示の一部では、著作権保護を受けた資料を含む。著作権の所有者は、特許文献または特許開示のファクシミリ複製に意義を唱えるものではない。なぜなら、それは特許及び商標局(Patent and Trademark Office)のファイルまたは記録に現れるからである。しかしながら、それ以外では、全ての著作権が保護される。
【0078】
前述の説明は順序付け機構に関連し、自動システム・テスト・ジェネレータの例の一部を成す機構のレビューを含む。ここで示され述べられる本発明の適用性は、ここで述べられるテスト・システムに限られるものでないことが理解されよう。
【0079】
本発明で提供される最小の同期機構は、図1に示される次のステップを含む。
ステップ20:
同期制御装置または待機エージェントが、待機エージェントがその保留のトランザクションを実行しようとする時期を検出する。すなわち、検出は、待機エージェントの前のトランザクションの完了と、バス上での保留のトランザクションの出現との間に発生する。このステージは、"ステーションへの到来(arrival in the station)"と呼ばれる。
ステップ30:
待機エージェントが、その保留のトランザクションの実行を阻止される。これは同期制御装置により、または待機エージェント自身により行われる。このステップはこれ以後、"ステーションにおける待機"または待機フェーズと呼ばれる。
ステップ40:
同期制御装置または待機エージェントが、シグナリング事象が発生する時を検出する。これはシグナリング条件と呼ばれる。
ステップ50:
待機エージェントが、その保留のトランザクションの実行を許可される。これは同期制御装置自身により、または待機エージェント自身により行われる。このステップは、シグナリング・フェーズと呼ばれる。
【0080】
上述の同期機構は、システム・テスト・ジェネレータ内で実現され得る。
【0081】
用語"ステーション"は、保留の装置の準備完了状態を検出するステップを指し示す。従って、ステップ20及び40は活動をチェックし、ステップ30及び50はアクションである。
【0082】
図1は、上述の事象の順序を示す。待機エージェントがステーションに到来し、待機フェーズに入る。シグナリング事象が検出されるとき、待機エージェントを解放するための信号が送信される。
【0083】
勿論、シグナリング条件が既に満足されたときに、待機エージェントがステーションに到来する場合、待機エージェントはそこに0サイクル留まる。このような場合、退化待機フェーズ(degenerated wait phase)と呼ばれる。こうしたケースでは、信号がステーションへの到来前に、若しくは到来直後に送信されるか、または決して送信されない。
【0084】
本発明の好適な実施例に従い構成され動作する同期制御装置の好適な実施例の4つのフェーズが、図2の仮想フロー図に示される。このフロー図は、どの単一コンポーネントもその全てを実行せず、実行の順序が必ずしも図示の順序である必要がない点で、仮想的である。代わりに、その実行は通常分散され、並列に実行される。
【0085】
同期は次の現象を生成するために使用され得る。
1.トランザクション順序付け:2つの事象が所与の順序で発生しなければならない。
2.ランデブ:複数の事象が同時に開始しなければならない。
3.相互排他:複数の事象が同時に発生すべきでない。
【0086】
同期はこれらの任意の機能を生成するために使用され得る。
【0087】
図3は、3つのエージェント間のランデブを示す。各エージェントはそのステーションに到来し、シグナリング条件が満足されるまで待機する。シグナリング条件は、3つの全てエージェントのそれらのステーションへの到来である。全てのエージェントに対して1つの条件が存在するが、3つの同期すなわち各エージェントに対して1つの同期が存在する。
【0088】
図4は、2つのエージェントの相互実行を示す。4つの同期が使用される。なぜなら、各エージェントのクリティカル・ゾーンの開始及び終わりが別々のステーションであるからである。エージェントAのその第1のステーション(stA)におけるシグナリング条件は、エージェントBがまだstBに達していないか、或いは既にstB'に達していることである。stBにおけるエージェントBのシグナリング条件は、エージェントAがstAに達していないか、既にstA'に達していることである。stA'(stB')におけるA(B)のシグナリング条件は、待機及びシグナリング・フェーズのように退化される。図5乃至図10は、様々な同期の時間的振舞いを示す。図5及び図6はトランザクション順序付けを示し、図7はランデブを示し、図8及び図9は相互実行を示す。
【0089】
上述の同期は様々な態様で結合され得る。例えば、タイト・スヌーピングを達成するために、2つのエージェント間のランデブが、トランザクション順序付けの直前に発生すべきである。これは保留のトランザクションがシグナリング事象の後で、時間的に接近して発生することを保証する。
【0090】
図13は、本発明の好適な実施例に従い構成され動作する同期制御装置の動作の好適な方法を示す、単純化されたフロー図である。図13のフロー図では、入力パラメータは次のようである。
AG:テスト中のエージェント
S_cond:ステーションへの到来を検出する条件(本発明のステップ1)
G_cond:シグナリング事象を検出する条件(本発明のステップ3)
【0091】
STOP()及びGO()は、図1のステップ30及び50にそれぞれ対応する。S_cond及びG_condは好適には、シミュレーション実行中にシミュレートされるモデル上で発生する事象に関する論理関数である。
【0092】
内部構造及び変数:
好適には、入力として受信される各タプル(AG、S_cond、G_cond)に対して、図13のフロー図にもとづく同期制御装置がOC(順序制御)オブジェクトを生成し、それをOCのリストに記憶する。このリストはタイプOCのnbOC個のオブジェクトを含む。OC(i)は、リスト内の位置i(ここでi=1、..、nbOC)に記憶されるオブジェクトOCである。
【0093】
SCプログラムにより使用される各OCは、次のものを含む。
AG:エージェント
AG_state:エージェントの状態={アクティブ/待機}、アクティブに初期化
S_cond
G_cond
COND={S_cond、G_cond、FALSE}は、評価されるそれぞれの状態を指し示す変数。CONDはS_cond、G_condまたはFALSEを指し示し、S_condに初期化される。
【0094】
図2と図13を比較すると、図13は多重サイクル同期を示し、そこでは(ステップ130、140、160)複数のエージェントが複数の介入時点において同期される。図13のステップ120、150、170、190及び200は一般に、図2のステップ60、110、70、80、100にそれぞれ対応する。
【0095】
上述の同期機構の次に示すような多くの変形が使用され得る。
ステーション検出(図1のステップ20)の変形:
ステップ1に対して、少なくとも次のオプションが存在する。そこでは同期制御装置が、待機エージェントがその保留のトランザクションを実行しようとする時期に注意を払う。
a.待機プロセッサが非ゼロ値を所定のレジスタに書込む。同期制御装置が次にこのレジスタを読出し、その値に従い、待機エージェントがその保留のトランザクションを実行するのを阻止する時期を知る(下記の例1(タイト・スヌーピング)のTrigReg参照)。
b.同期制御装置は、待機エージェントの前のトランザクションの完了をチェックする。これはプロセッサの場合、非プログラム順序の実行により影響され得る。ビヘイビュラルの場合、これは単にビヘイビュラルの現トランザクション番号のチェックである。
c.待機エージェントは、例えばPowerPCのバス上のエイエイオなどの、同期命令を実行できる。この命令は単に、同期制御装置に、エージェントが待機準備完了状態であることを知らせるために実行されるべきである。同期制御装置はこの時、エイエイオ・トランザクションの成功終了のために、適切なバスをモニタできる。
【0096】
シグナリング事象の検出(図1のステップ40)の変形:
ステップ3すなわちシグナリング・エージェントの事象を検出する1つの可能なインプリメンテーションは、所与のバス上での所与のアドレスの出現である。別の例は、メモリ制御装置の読出しバッファがフルになることである。
【0097】
待機及びシグナリング方法(図1のステップ30及び50)の変形:
信号がSCにより、またはモデル化装置により駆動され得る。SCにより駆動される信号は、シミュレーション信号(またはシミュレーション信号のセット)の値の変化である。シミュレーション信号はプロセッサ・レジスタであり、イネーブル・ビット(またはイネーブル・アクション)、またはアービトレーション信号である。テスト・システムはまた、他の装置により送信される信号、すなわち(装置:プロセッサ信号:セマフォ値の変更)及び(装置:プロセッサ信号:構成サイクル)を使用し得る。
【0098】
送信される信号は、装置により使用される待機方法に対応する。
【0099】
図11は、本発明の5つの異なる実施例に従い構成され動作する同期制御方法を比較するテーブルであり、これらは図1の"待機"及び"シグナリング"・ステップのインプリメンテーションと主に異なる。図11の方法は、次の方法を含む。
a)レジスタ法(図16)
初期化:各プロセッサが、同期制御装置のためだけに使用される専用のTrigRegレジスタを有する。初期には、その値は0である。
待機:待機プロセッサがループし、そのTrigRegレジスタが0でない特定の値にセットされるのを待機する。
シグナリング:同期制御装置が待機プロセッサのTrigRegレジスタを、それが待機している値に変更する。
制限:プロセッサ専用
b)バス・アービトレーション方法(図14)
待機:同期制御装置が待機エージェントのアービトレーション信号をアサート解除することにより、待機エージェントがバス上でアービトレーションを受信するのを阻止する。
シグナリング:同期制御装置が待機エージェントのアービトレーション信号のアサート解除を中止し、待機エージェントがその保留のバス・トランザクションを実行することを可能にする。
制限:技術的困難
c)イネーブル・ビット方法(図17)
初期化:各トランザクションに対するイネーブル・ビットを有するビヘイビュラルに対して使用される。すなわち、0の場合、トランザクションは実行され得ず、1の場合、実行され得る。初期には、保留のトランザクションのイネーブル・ビットは、0にセットされる。
待機:保留のトランザクションに対する待機ビヘイビュラルのイネーブル・ビットは、初期に0にセットされるので、ビヘイビュラルは実行を継続できない。
シグナリング:同期制御装置は、ビヘイビュラルの保留のトランザクションのイネーブル・ビットを1にセットし、ビヘイビュラルが実行を継続することを可能にする。
制限:1トランザクションにつき1イネーブル・ビットを有するビヘイビュラルに限られる。
d)構成方法(図18)
待機:この方法は、自身に向けられる構成トランザクションを介してコマンドを受信するビヘイビュラルに対して使用される。構成トランザクションを受信することなく、ビヘイビュラルは実行を継続する。
シグナリング:シグナリング・エージェントが、待機エージェントをイネーブルにする構成トランザクションを実行する。
制限:構成トランザクションをサポートするビヘイビュラル/装置に限られる。非常に低速。
e)セマフォ方法(図19)
初期化:初期に、セマフォが−1にセットされる。
待機:プロセッサがセマフォにおいて待機する。すなわち、特定のメモリ位置が0になるのを待機してループする。
シグナリング:シグナリング・エージェントがセマフォを解除する。すなわち、0を特定のメモリ位置に書込むことにより、待機エージェントをそのループから解放する。
制限:プロセッサ専用
【0100】
好適なアービトレーション同期機構は、図15に示される次のステップを含む。
ステップ300:同期制御装置がバス上において、待機エージェントの保留トランザクションの保留の出現を検出する。
ステップ310:同期制御装置が待機エージェントのアービトレーション信号をアサート解除することにより、待機エージェントがバス上でアービトレーションを受信するのを阻止する。これは待機エージェントがバス上で更に別のトランザクションを実行するのを阻止する。
ステップ315乃至340:シグナリング事象が発生すると、同期制御装置は、待機エージェントのアービトレーション信号のアサート解除を中止する。これにより待機エージェントはバスへのアクセスを許可され、その保留のバス・トランザクションの実行が可能になる。
【0101】
図14及び図15を比較すると、図15のステップ300、310及び315は一般に、図14のステップ220、230及び240にそれぞれ対応する。図15のステップ320は一般に、図14のステップ250、260及び270に対応する。ステップ330及び340は、同期制御装置により実行されるステップではなく、従って図14では対応するステップを有さない。
【0102】
アービトレーション同期はデッドロックのリスクの結果生じ得る。デッドロックは、一旦待機エージェントがそのバスへのアービトレーションの獲得を阻止されると、何らかの理由によりバスをアクセスできないことから発生し得る。こうした理由には、実際の同期に接続されていないなどが含まれる。デッドロックの阻止は一般に、テスト・ライタまたは自動テスト・ジェネレータの責任である。
【0103】
次に、3つのアプリケーション例について述べる。
例1:2つのプロセッサ間のタイト・スヌーピング
テスト・プログラムの第1の例は、2つのプロセッサ間のタイト・スヌーピングである。この状況の目的は、次の事象が順次的に、時間的に非常に接近して発生することである。
1.プロセッサAがレジスタRaからアドレスXに書込む。
2.プロセッサBがアドレスXからレジスタRbに読出す。
【0104】
前記の2つの事象が要求順序に従い発生する場合、Rbの最終値は、プロセッサAにより書込まれた値である。しばしば、メモリ・アドレス上での競合が設計バグを暴露する。この例はまた、単一プロセッサ上の2つのスレッドにも当てはまる。この場合、図16に示されるようなレジスタ待機/シグナリング方法が使用される。
【0105】
例2:読出しバッファの充填
この例では、テスト・プログラムがメモり制御装置の読出しバッファを充填する。図12の部分的システムは、例えばメモり制御装置が8個の読出しバッファを含む例において使用される。
【0106】
この状況では、8個の読出しバッファを充填することが好ましい。これを達成するために、少なくとも8個のエージェント(プロセッサ及びI/O装置)が、メモリに対する読出し要求を実行するために使用され、その間、メモリ制御装置が任意の要求を満足するのを阻止する。一旦バッファがフルになると、メモリ制御装置は応答を許可される。バッファをしばしば充填することは、設計バグを暴露する。この例は、バス・ブリッジのバッファを充填するためにも、同様に使用され得る。
【0107】
例3:3つのプロセッサ間のスヌーピング
この状況の目的は、2つの他のプロセッサがあるアドレスから読出す前に、1プロセッサがその同一のアドレスに書込むことである。すなわち、後述のトランザクション1が、任意の順序で発生し得るトランザクション2及び3の両方より先に発生すべきである。Rb及びRcの最終値は、プロセッサAにより書込まれた値であるべきである。
1.プロセッサAがレジスタRaからアドレスXに書込む。
2.プロセッサBがアドレスXからレジスタRbに読出す。
3.プロセッサCがアドレスXからレジスタRcに読出す。
【0108】
上述の3つの例について詳述する。一般に、テスト・コンポーネントは、同期制御装置を介して同期されない限り互いに独立に実行される。
【0109】
例1:2つのプロセッサすなわちプロセッサA及びプロセッサB間のタイト・スヌーピング(Bの読出し前にAの書込みが発生)
以下のテスト説明では、TrigRegは残りのテストにおいて使用される任意の定義済みのレジスタである。同期制御装置は、プロセッサAのTrigReg(ProcA.TrigReg)及びプロセッサBのTrigReg(ProcB.TrigReg)の値をそれぞれモニタすることにより、プロセッサA及びBのアービトレーション・ラインをアサート解除する時期を知る。従って、プロセッサA及びBは同期制御装置に、それらが待機準備完了状態であることを知らせる。
【0110】
テスト記述:
プロセッサA:初期には、ProcA.TrigReg==0
1.ProcA.TrigReg=1にセット
2.アドレスXにストア命令を実行
プロセッサB:初期には、ProcB.TrigReg==0
1.ProcB.TrigRegを1にセット
2.アドレスXにロード命令を実行
同期制御装置:
1.ProcA.TrigReg==1及びProcB.TrigReg==0であれば、プロセッサAのアービトレーション・ラインをアサート解除。
2.ProcB.TrigReg==1であれば、プロセッBのアービトレーション・ラインをアサート解除し、プロセッサAのアービトレーション・ラインのアサート解除を中止。
3.システム・バス上で、アドレス=X及びマスタ=プロセッサAなるトランザクションが発生する場合、プロセッサBのアービトレーション・ラインのアサート解除を中止。
【0111】
分析:
このタイト・スヌーピングの例は、実際には、2つの単純な同期を結合し、ランデブ(同時に発生しなければならない複数の事象)の後に、トランザクション順序付け(2つの事象が所与の順序で発生)を伴う。ランデブのためのシグナリング事象は、ProcB.TrigReg==1である。ランデブのための保留トランザクションは、プロセッサAがアドレスXをシステム・バス上に出力することである。トランザクション順序付けのためのシグナリング事象もまた、プロセッサAがアドレスXをシステム・バス上に出力することである。トランザクション順序付けのための保留トランザクションは、プロセッサBがアドレスXをシステム・バス上に出力することである。
【0112】
例2:読出しバッファの充填
この例では、メモリ制御装置は、そのデータ・バス・アービトレーション・ラインをアサートできないので、自身に転送される多くの読出し要求に応えることを阻止される。一旦同期制御装置が、読出しバッファがフルであることを検出すると、同期制御装置はデータ・バス・アービトレーション・ラインのアサート解除を中止する。
【0113】
テスト記述:
全てのプロセッサ及びI/Oエージェント(少なくとも8個):
1.読出しトランザクションを実行
同期制御装置:
1.メモリ制御装置のデータ・バス・アービトレーション・ラインをアサート解除
2.読出しバッファがフルの場合、メモリ制御装置のデータ・バス・アービトレーション・ラインのアサート解除を中止
【0114】
分析:
この例では、シグナリング事象は読出しバッファがフルになることである。実際には、複数の保留トランザクションが存在する。換言すると、メモリ制御装置が、それに向けられる全ての読出しトランザクションのためのデータを提供する。実際には、一緒にシグナリング事象を発生させる複数のシグナリング・エージェントが存在する。
【0115】
例3:3つのプロセッサ間のスヌーピング
次のテスト記述では、TrigRegが残りのテストにおいて使用される任意の定義済みのレジスタである。同期制御装置は、プロセッサBのTrigReg(ProcB.TrigReg)及びプロセッサCのTrigReg(ProcC.TrigReg)の値をそれぞれモニタすることにより、プロセッサB及びCのアービトレーション・ラインをアサート解除する時期を知る。従って、プロセッサB及びCは同期制御装置に、それらが待機準備完了状態であることを知らせる。
【0116】
テスト記述:
プロセッサA:
1.アドレスXにストア命令を実行
プロセッサB:初期には、ProcB.TrigReg==0
1.ProcB.TrigRegを1にセット
2.アドレスXにロード命令を実行
プロセッサC:初期には、ProcC.TrigReg==0
1.ProcC.TrigRegを1にセット
2.アドレスXにロード命令を実行
同期制御装置:
1.ProcB.TrigReg==1であれば、プロセッBのアービトレーション・ラインをアサート解除。
2.ProcC.TrigReg==1であれば、プロセッCのアービトレーション・ラインをアサート解除。
3.システム・バス上で、アドレス=X及びマスタ=プロセッサAなるトランザクションが発生する場合、プロセッサB及びプロセッサCのアービトレーション・ラインのアサート解除を中止。
【0117】
分析:
この例では、実際2つの待機エージェント及び2つの保留トランザクションが存在する。シグナリング事象は、プロセッサAがシステム・バス上にアドレスXを出力することである。保留のトランザクションは、プロセッサBがシステム・バス上にアドレスXを出力し、プロセッサCがシステム・バス上にアドレスXを出力することである。
【0118】
出願人により実施された実験において、ここで提案されるアービトレーション同期方法が、本発明の概要のセクションで上述したプロセッサ・レジスタ・ポーリング方法と比較された。シミュレートされた各テストは、少なくとも10個のプロセッサ・ロード/ストア命令を含み、2つのプロセッサ間の少なくとも1つのタイト・スヌーピング状況を含んだ。テストはインハウス自動システム・テスト・ジェネレータを用いて生成された。使用されたAS/400シミュレーション・モデルは、2つのプロセッサを含んだ。10のテストが各方法を用いて実行された。各テストにおける2つの同期事象間のサイクル数が表1に示される。
【表1】
Figure 0003953243
【0119】
マーク(*)付きのテーブル・エントリは、シグナリング・エージェントのバス・トランザクションと、待機エージェントの次のバス・トランザクション間に、命令フェッチが存在したテストを表す。ランダム・テスト生成の間、非常に多数のテストが生成される。これらのテストの大多数が要求された振舞いを果たす限り、要求された振舞いを果たさないテストは無視され得る。これらの値が無視される場合、アービトレーション同期方法は平均3.5サイクルの差を与えたのに対して、レジスタ・ポーリング方法は25.4サイクルの平均を与えた。換言すると、平均してアービトレーション方法は、レジスタ・ポーリング方法の7倍の向上を達成した。更に、アービトレーション方法はしばしば、3サイクルの差を与えた。これは使用されたPowerPC60x方式のバス・プロトコルにおいて、トランザクション間で可能な最小バス・サイクル数に相当する。
【0120】
レジスタ・ポーリング同期機構では、プロセッサは保留のバス・トランザクションを開始準備できる前に、複数の命令を実行する。しかしながら、アービトレーション同期機構では、遅延は、バス・アービタがプロセッサのバス要求に応答するのに要する時間だけである。待機エージェント、特にプロセッサは、待機に続く命令のための全ての準備を完了できる。プロセッサの場合、トリガされる命令は、プロセッサがバスの調停を許可されるまでに、既にプロセッサのバス・インタフェース・ユニット(BIU)内に存在する。この理由から、レジスタ・ポーリング同期機構は、アービトレーション同期機構により達成されるような、最小を達成することができない。
【0121】
本発明の好適な実施例の特定のフィーチャは、それがエージェント・タイプ及びそれが使用されるシステムに依存しない点である。
【0122】
各異なるタイプ対の同期装置が、異なる同期機構を使用する必要がある従来のシステムに比較して、この同期方法はプロセッサ、ビヘイビュラル、I/O装置、及び非始動システム・コンポーネントにより使用され得る。
【0123】
本発明の方法は好適には、アービトレーション機構を有する任意のシステムにおいて使用され得る。
【0124】
他のテスト方法は、後述の好適なフィーチャの全てでは無しに、幾つかを有し得る。期待結果を予測可能なランダム・テスト・ジェネレータをサポートするために、次のフィーチャの全てを提供することが好ましい。
【0125】
本発明の好適なフィーチャ:
1.本方法は好適には、インプリメンテーションには依存しない。本方法は、プロトコル・バス・インタフェースのアーキテクチャすなわち体系記述だけに依存する。異なるコンポーネント(及びこれらのコンポーネントのインプリメンテーション)が、同一のトリガを使用できる(唯一の変更は、体系的信号名への設計信号名のマッピングである)。更に、設計ライフ・サイクル内で頻繁に発生するインプリメンテーションの内部変更は、ジェネレータ内の変更を課さない。
2.本方法は、シミュレーションの間にランタイム同期制御装置を使用するので、好適にはシミュレーション実行タイミングに依存しない。従って、本方法は、いかなる人の介入も必要としないテストをランダムに生成するために使用され得る。
3.本方法は好適には、テストされるインプリメンテーション(IUT)の振舞いを変更しない。本方法は、テスト結果を導くために、IUTの外部のアービトレーション機構を使用する。
4.本方法は好適には"高速"である。本方法は、2つのバス事象間の"最小可能"時間遅延を有するテストを生成する。例えば、実験で使用されたバス上の2つの異なるバス・トランザクション間の最小可能時間遅延は、3バス・クロックである。この方法によれば、テストはランダムに生成され、シミュレーションにおいて、この実際の最小を達成した。これは非常に強力な利点である。なぜなら、他の同期方法は単にそれを有さないからである。例えば、プロセッサにおいて、同期がプロセッサ命令を介して達成される場合、PowerPC6xxバス上における2つの異なるプロセッサ・トランザクションの実際の出現は、バス・プロトコルにより許可される最小よりも、常に多大に長い。
5.本方法は好適には"強力"である。この同期方法を使用することにより、シミュレーションにおいて事象の実際の順序を予測することが可能になる。これはランダムに生成されるテストにおいてさえ、期待結果の生成を可能にする。
6.本方法は好適には、メモリ制御装置及びI/O制御装置などの、命令ストリームを有さないシステム・コンポーネント上で使用され得る。
7.好適には、本方法は、命令ストリームを用いる同期から要求されるもの以外に、バス・プロトコルの理解にもとづく。これは命令ストリーム・レベルの同期にとっては無関係であるが、バス・レベルの同期にとってはそうでない、非プログラム順序の実行を行うプロセッサにとっても、好ましい。更に、デッドロックが好適には回避される。これらのフィーチャを提供する利点は、開発される同期が、広範囲のシステム及びコンポーネントに渡って使用され得ることである。
8.事象間の短時間遅延が決定論的に達成され得る。なぜなら、命令フェッチ及び他のこうした事象は一般に、実際のタイミングを予測する能力を阻み、順序の制御だけを可能にするからである。しかしながら、多くのランダムに生成されるテストのシミュレーションは、一部のテストにおいて、短い遅延を獲得する確率を増加させる。
【0126】
図14は、本発明の同期制御装置が単一の同期を実行するための好適な方法の単純化されたフロー図を示し、この方法は通常、各同期に対して各サイクル繰り返される。同期制御装置のコードは、付録Aに示される。要求される各同期に対して、すなわち各OC(順序制御)に対して、次の整数変数が好適には維持される。
ステーション(station):どのくらい長く待機エージェントが待機しているか?
条件(condition):シグナリング・エージェントが発生したか?
保留ユニット(pending_unit):待機エージェントのユニット番号
保留トランザクション番号(pending_trans_num):保留トランザクションのトランザクション番号
シグナリング事象ユニット(signal_event_unit):シグナリング・エージェントのユニット番号
シグナリング事象トランザクション番号(signal_event_trans_num):シグナリング・トランザクションのトランザクション番号
【0127】
図14のフロー図は、1サイクルにつき1つの同期のフローを示し、従って、フロー図は、毎同期ごとに毎サイクル繰り返される。
【0128】
トランザクション番号は、各エージェントの現トランザクションをモニタするために使用される専用のシミュレーション変数を記録する。例えば、PowerPCプロセッサにおいて現在使用されるインプリメンテーションは、CTRレジスタである。各プロセッサがトランザクションを実行する前に、プロセッサは通常、そのCTRレジスタを増分する。hold()ルーチンは、保留ユニットのアドレス及びデータ・バス要求、及びグラント・ラインを非活動化する。同様に、signal()ルーチンは、同一のラインの非活動化を中止する。現トランザクション番号及びアービトレーション信号として使用する実際のシミュレーション変数は、テスト・ファイル内で定義され、これが総称的な同期制御装置により解析される。
【0129】
図14の方法は、テスト・シミュレーションにおいて、2つの事象が、それらの間の経過時間が最も少ない状況で発生することを自動的に保証する。この方法により克服される難題は、ハードウェア・コードがどのように振る舞うかを予測可能でないことである。なぜなら、設計者がコードを開発するとき、コードは常に変化するからである。ここで述べられ、示されるテストは、ハードウェア・インプリメンテーションとは無関係である。なぜなら、ここで述べられるツールは、シミュレーションの間に、所望の事象シーケンスが発生するための条件を設定する作用をするからである。利点はツールがハードウェア・コード振舞いを予測する必要がないことである。なぜなら、ツールはシミュレーション時に、ハードウェア振舞いからのフィードバックにより作用するからである。ここで述べられ、示される方法は、2対以上の事象及び異なる研究課題に適用されるのに十分に汎用的である。本発明の方法は、手操作により実行されることの単なる自動化ではない。なぜなら、手動方法は、異なるテストによる複数のシミュレーションを含むのに対して、本発明の方法は一般に、同一の結果を得るために、単一のテスト・シミュレーションを要求するだけであるからである。
【0130】
図16は、図11に示される同期のレジスタ方法の単純化されたフロー図である。
【0131】
図17は、図11に示される同期のイネーブル・ビット方法の単純化されたフロー図である。
【0132】
図18は、図11に示される同期の構成方法の単純化されたフロー図である。
【0133】
図19は、図11に示される同期のセマフォ方法の単純化されたフロー図である。
【0134】
図20は、複数の事象を並列動作で実行する複数のエージェントを有するシステムが繰り返し実行され、複数の事象が全ての可能な順序で発生するように強制される同期方法の、単純化されたフロー図である。
【0135】
付録Aは、本発明の好適な実施例に従い構成され、図14の同期制御方法を実行する同期制御装置の好適なソフトウェア・インプリメンテーションのコンピュータ・リストである。
【0136】
付録Aの同期制御装置を、Cコードとインタフェースする能力を有する任意のシミュレータXと共に使用するために、次のステップが実行され得る。
1)テストに関わるエージェントが、0から始まる実行番号を割当てられる。
2)テストに関わるエージェントがシミュレーション信号を提供し、それがサンプリングされて、エージェントの現トランザクション番号を決定する。例えば、プロセッサのレジスタの1つが、このタスクに割当てられる。この場合、プロセッサの命令ストリームが変更され、割当てられたレジスタが各トランザクション前に増分される。
3)次のアレイが、テストに関わる各エージェントに対する適切なシミュレーション信号を含むように、初期化される。
トランザクション番号:上記(2)参照
グラント・アレイ:バスへのアービトレーション要求及びグラントを制御するシミュレーション信号
4)順序制御(OC)テーブル・アレイは、要求される各同期に対して、順序制御タイプのコンポーネントを含むように初期化される。1つの可能な方法は、シミュレーションの開始前に呼び出されるInit()関数内で、アレイを初期化することである。
5)HandleOrderControl()関数は、シミュレーション・サイクル毎に1度呼び出される。イベント・ドリブン型シミュレータでは、シミュレーション・サイクルがシステム・クロックの使用によりシミュレートされ得る。
6)シミュレータXとインタフェースするために、3つの関数、すなわちGetSimSignal()、StickSimSignal()、及びUnStickSimSignal()が提供される。これらの関数の作用はそれぞれ、シミュレーション信号の現在値を返却する;シミュレーション信号に特定値を取らせる;及び、シミュレーション信号が特定値を取るのを中止するである。
【0137】
或いは、付録Aの同期制御装置は、ModelSim/VHDLシミュレータに動的にリンクされ得る。そのコンパイルは、それに従い実行される。リンケージ・フェーズの間、実行可能な同期制御装置に対して、エントリ・ポイントが定義される。エントリ・ポイントは好適には、次の内容を実行する初期化関数である。
a)前記ステップ(5)のセットアップ、すなわち毎クロック・サイクル後に、シミュレータにHandleOrderControl()関数を呼び出すように指示する。
HandleOrderControl()関数のためのModelSim/VHDLプロセスを生成する。
プロセスID process=mti_CreateProcess(name、HandleOrderControl、0);
毎シミュレーション・サイクルごとに、シミュレータにこのプロセスを実行するように指示する。シミュレーション・サイクルはCLK信号の支援により定義され得る。プロセスは、CLK信号がアクティブになる度に、実行され得る。
mti_Sensitize(process、mti_FindSignal("CLK")、MTI_EVENT);
前記ステップ(3)及び(4)をセットアップ、すなわち要求されるシミュレーション信号及び順序制御アレイを初期化する。
HandleOrderControl()関数で使用されるドライバ信号を生成する。
ドライバID drive_this_signal=mti_CreateDriver(signalID signal);
HandleOrderControl()関数で使用される全てのアレイを、この特定のシミュレーション実行のために定義される値により初期化する。
【0138】
HandleOrderControl()関数が呼び出される度に、それはモデルの現状態を読出すための関数、及びそれを変更する関数を使用する。次の項目では、前記のステップ(6)をいかに実行するかについて説明する。
GetSimSignal()。ModelSim/VHDLでは、駆動する必要がある信号のタイプに応じて、次の関数が使用される。
mti_GetSignalValue(Signal)、または
mti_GetArraySignalValue(Signal)
StickSimSignal()は信号を特定の値に強制する。論理に応じて、この効果を得るために、異なる使用が必要とされる。
mti_SetSignalValue(signal、value)
mti_ScheduleDriver(signal、...)
UnStickSimSignal()は、信号を特定の値に強制するのを中止する。論理に応じて、この効果を得るために、異なる使用が必要とされる。使用される関数には次のものがある。
mti_SetSignalValue(signal、HIGH_IMPEDANCE/UNDEFINED/Z)
mti_ScheduleDriver(signal、...)
関数及びそれらの使用に関する詳細については、モデル・テクノロジ社から販売されるModelSim/VHDLユーザ・マニュアルで述べられている。
【0139】
本発明のソフトウェア・コンポーネントは、要求に応じて、ROM(読出し専用メモリ)形式で実現され得る。ソフトウェア・コンポーネントは一般に、要求に応じて、従来技術の使用により、ハードウェアにより実現され得る。
【0140】
[表2]
本発明の好適な実施例に従い構成され、図14の同期制御方法を実行する同期制御装置の好適なソフトウェア・インプリメンテーションのコンピュータ・リストである。
Figure 0003953243
Figure 0003953243
Figure 0003953243
Figure 0003953243
Figure 0003953243
Figure 0003953243
付録に記載される特定の実施例は、本発明の極めて詳細な開示を提供することだけを意図するものであり、本発明を制限するものではない。明瞭化のために、別々の実施例の状況において述べられた本発明の様々なフィーチャは、組み合わされて、単一の実施例としても提供され得る。逆に、簡潔のために、単一の実施例の状況において述べられた本発明のフィーチャは、別々に、または任意の好適なサブ組み合わせによっても提供され得る。
【0141】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0142】
(1)各々が共通バスへの少なくとも1つの経路を有する、並列動作の複数のエージェントを有するシステムを実行するステップと、
バス・アービトレーション機構を用い、所定の技法に従い前記複数のエージェント間を同期させるステップにおいて、
前記技法が、個々の前記エージェントが活動化されないことを示す場合、前記共通バスへの前記エージェントの前記少なくとも1つの経路を遮断するステップと、
一旦前記技法が、前記個々のエージェントが活動化され得ることを示すと、前記共通バスへの前記エージェントの前記少なくとも1つの経路を回復するステップと
を含む、同期させるステップと、
を含む、同期方法。
(2)前記複数のエージェントが複数のプロセッサを含む、前記(1)記載の方法。
(3)前記複数のエージェントが少なくとも1つのプロセッサ及び少なくとも1つのI/Oユニットを含む、前記(1)記載の方法。
(4)前記複数のエージェントが、少なくとも1つの中間バスを介して、前記共通バスへの経路を有する少なくとも1つのエージェントを含む、前記(1)記載の方法。
(5)前記同期させるステップが外部的に実行され、従って、各前記エージェントの内部構造とは無関係に実行される、前記(1)記載の方法。
(6)前記同期させるステップが、体系的信号を強制するステップを含む、前記(1)記載の方法。
(7)前記複数のエージェントが、1つのアドレスをほぼ同時にアクセスする少なくとも2つのエージェントを含み、前記同期させるステップが、前記2つのエージェントの所定の1つが、他のエージェントが前記アドレスをアクセスする以前に、該アドレスをアクセスするように強制する、前記(1)記載の方法。
(8)前記複数のエージェントが第1及び第2のエージェントを含み、前記同期させるステップが、第1の介入時点に、前記第1及び第2のエージェント間の順序を強制するステップを含み、
前記複数のエージェントが第3及び第4のエージェントを含み、それらの少なくとも一方が前記第1及び第2のエージェントと異なり、前記同期させるステップが、前記第1の介入時点と異なる第2の介入時点に、前記第3及び第4のエージェント間の順序を強制するステップを含む、前記(1)記載の方法。
(9)前記複数のエージェントがメモリ制御装置の少なくとも1つのバッファを充填するように動作し、前記同期させるステップが、前記メモリ制御装置が前記共通バスをアクセスするのを阻止するステップを含む、前記(1)記載の方法。
(10)前記複数のエージェントがバス・ブリッジの少なくとも1つのバッファを充填するように動作し、前記同期させるステップが、前記バス・ブリッジが前記共通バスをアクセスするのを阻止するステップを含む、前記(1)記載の方法。
(11)各々が共通バスへの少なくとも1つの経路を有する、並列動作の複数のエージェントを有するシステムを実行するシステム・マニピュレータと、
所定の技法に従い、前記複数のエージェント間を同期させるバス・アービトレーション機構であって、
前記技法が、個々の前記エージェントが活動化されないことを示す場合、前記共通バスへの前記エージェントの前記少なくとも1つの経路を遮断するステップと、
一旦前記技法が、前記個々のエージェントが活動化され得ることを示すと、前記共通バスへの前記エージェントの前記少なくとも1つの経路を回復するステップと
を含む、バス・アービトレーション機構と
を含む、同期装置。
(12)前記システム・マニピュレータが、前記システムをシミュレートするシステム・シミュレータを含む、前記(11)記載の装置。
(13)前記システム・マニピュレータが、前記システムの性能分析を実行する性能アナライザを含む、前記(11)記載の装置。
(14)前記システム・マニピュレータが、前記システムを検証するシステム・ベリファイヤを含む、前記(11)記載の装置。
(15)前記システム・マニピュレータが、前記システムをデバッグするシステム・デバッガを含む、前記(11)記載の装置。
(16)前記実行するステップが、前記システムをシミュレートするステップを含む、前記(1)記載の方法。
(17)前記実行するステップが、前記システムの性能分析を実行するステップを含む、前記(1)記載の方法。
(18)前記実行するステップが、前記システムを検証するステップを含む、前記(1)記載の方法。
(19)前記実行するステップが、前記システムをデバッグするステップを含む、前記(1)記載の方法。
【図面の簡単な説明】
【図1】本発明の好適な実施例に従い構成され動作する、保留装置の実行を示すフロー図である。
【図2】本発明の好適な実施例に従い構成され動作する、好適な同期制御装置の単純化された仮想フロー図である。
【図3】本発明の好適な実施例に従い動作する、3つのエージェント間のランデブの単純化された図である。
【図4】本発明の好適な実施例に従い動作する、2つのエージェント間で発生する相互排他状況の単純化された図である。
【図5】ステーションへの到来が関連シグナリング事象前に発生する、トランザクション順序付けの時間体系を示す図である。
【図6】ステーションへの到来が関連シグナリング事象後に発生する、トランザクション順序付けの時間体系を示す図である。
【図7】ランデブの時間体系を示す図である。
【図8】2つの競合エージェントの同時クリティカル・アクセスが阻止される相互排他状況の時間体系を示す図である。
【図9】2つの競合エージェントに別々のアクセスが提供される相互排他状況の時間体系を示す図である。
【図10】図5乃至図8で使用される主要解釈図式表記法を示す図である。
【図11】図1の"待機"及び"信号"ステップに関して主に異なる、本発明の5つの異なる実施例に従い構成され動作する同期制御方法を比較した表である。
【図12】テストされるシステムの単純化されたブロック図である。
【図13】本発明の好適な実施例に従い構成され動作する、同期制御装置の動作の好適な方法を示す単純化されたフロー図である。
【図14】図11に示される同期のバス・アービトレーション方法の1サイクルの単純化されたフロー図である。
【図15】本発明の好適な実施例に従い構成され動作する同期制御装置により実行される、アービトレーション同期のための好適な方法を示す図である。
【図16】図11に示される同期のレジスタ方法の単純化されたフロー図である。
【図17】図11に示される同期のイネーブル・ビット方法の単純化されたフロー図である。
【図18】図11に示される同期の構成方法の単純化されたフロー図である。
【図19】図11に示される同期のセマフォ方法の単純化されたフロー図である。
【図20】複数の事象を並列動作で実行する複数のエージェントを有するシステムが繰り返し実行され、複数の事象が全ての可能な順序で発生するように強制される同期方法の、単純化されたフロー図である。

Claims (16)

  1. (A)各々が共通バスへの少なくとも1つの経路を有する、並列動作の複数のエージェントを有するシステムを実行するステップと、
    (B)バス・アービトレーション機構を用い、所定の技法に従い前記複数のエージェント間を同期させるステップにおいて、
    (a)前記技法が、前記エージェントの少なくとも1つが保留のトランザクションを実行しようとする時期を検出し、該エージェントの少なくとも1つが活動化されないことを示す場合、前記保留のトランザクションの実行を阻止するため、前記共通バスへの該少なくとも1つのエージェントの前記少なくとも1つの経路を遮断するステップと、
    (b)一旦前記技法が、前記エージェントの少なくとも1つが活動化され得ることを示すと、前記保留のトランザクションの実行を可能にするため、前記共通バスへの該少なくとも1つのエージェントの前記少なくとも1つの経路を回復するステップと、
    を含む、同期させるステップと、
    を含む、システム分析方法。
  2. 前記複数のエージェントが複数のプロセッサを含む、請求項1記載の方法。
  3. 前記複数のエージェントが少なくとも1つのプロセッサ及び少なくとも1つのI/Oユニットを含む、請求項1記載の方法。
  4. 前記複数のエージェントが、少なくとも1つの中間バスを介して、前記共通バスへの経路を有する少なくとも1つのエージェントを含む、請求項1記載の方法。
  5. 前記複数のエージェントが、1つのアドレスをほぼ同時にアクセスする少なくとも2つのエージェントを含み、前記同期させるステップが、前記2つのエージェントの所定の1つが、他のエージェントが前記アドレスをアクセスする以前に、該アドレスをアクセスするように強制する、請求項1記載の方法。
  6. 前記複数のエージェントがメモリ制御装置の少なくとも1つのバッファを充填するように動作し、前記同期させるステップが、前記メモリ制御装置が前記共通バスをアクセスするのを阻止するステップを含む、請求項1記載の方法。
  7. 前記複数のエージェントがバス・ブリッジの少なくとも1つのバッファを充填するように動作し、前記同期させるステップが、前記バス・ブリッジが前記共通バスをアクセスするのを阻止するステップを含む、請求項1記載の方法。
  8. (A)各々が共通バスへの少なくとも1つの経路を有する、並列動作の複数のエージェントを有するシステムを実行するシステム・マニピュレータと、
    (B)所定の技法に従い、前記複数のエージェント間を同期させるバス・アービトレーション機構であって、
    (a)前記エージェントの少なくとも1つが保留のトランザクションを実行しようとする時期を検出し、該エージェントの少なくとも1つが活動化されないことを示す場合、前記保留のトランザクションの実行を阻止するため、前記共通バスへの該少なくとも1つのエージェントの経路を遮断するステップと、
    (b)一旦前記技法が、前記エージェントの少なくとも1つが活動化され得ることを示すと、前記保留のトランザクションの実行を可能にするため、前記共通バスへの該少なくとも1つのエージェントの前記少なくとも1つの経路を回復するステップと、
    を含む、バス・アービトレーション機構と
    を含む、装置。
  9. 前記システム・マニピュレータが、前記システムをシミュレートするシステム・シミュレータを含む、請求項8記載の装置。
  10. 前記システム・マニピュレータが、前記システムの性能分析を実行する性能アナライザを含む、請求項8記載の装置。
  11. 前記システム・マニピュレータが、前記システムを検証するシステム・ベリファイヤを含む、請求項8記載の装置。
  12. 前記システム・マニピュレータが、前記システムをデバッグするシステム・デバッガを含む、請求項8記載の装置。
  13. 前記実行するステップが、前記システムをシミュレートするステップを含む、請求項1記載の方法。
  14. 前記実行するステップが、前記システムの性能分析を実行するステップを含む、請求項1記載の方法。
  15. 前記実行するステップが、前記システムを検証するステップを含む、請求項1記載の方法。
  16. 前記実行するステップが、前記システムをデバッグするステップを含む、請求項1記載の方法。
JP35238099A 1998-12-29 1999-12-10 システム分析のためにバス・アービトレーション制御を使用する同期方法及び装置 Expired - Fee Related JP3953243B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP98480098.7 1998-12-29
EP98480098 1998-12-29

Publications (2)

Publication Number Publication Date
JP2000194610A JP2000194610A (ja) 2000-07-14
JP3953243B2 true JP3953243B2 (ja) 2007-08-08

Family

ID=8235788

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35238099A Expired - Fee Related JP3953243B2 (ja) 1998-12-29 1999-12-10 システム分析のためにバス・アービトレーション制御を使用する同期方法及び装置

Country Status (2)

Country Link
US (1) US6629174B1 (ja)
JP (1) JP3953243B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7548841B2 (en) * 2001-11-16 2009-06-16 Canon Kabushiki Kaisha Method for logic checking to check operation of circuit to be connected to bus
JP3951925B2 (ja) * 2003-01-31 2007-08-01 セイコーエプソン株式会社 ハードウェア/ソフトウェア協調検証方法
US8832403B2 (en) * 2009-11-13 2014-09-09 International Business Machines Corporation Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses
US20140195482A1 (en) 2013-01-08 2014-07-10 Lyve Minds, Inc. Data synchronization in a storage network
US9678678B2 (en) 2013-12-20 2017-06-13 Lyve Minds, Inc. Storage network data retrieval
US10896106B2 (en) 2018-05-10 2021-01-19 Teradyne, Inc. Bus synchronization system that aggregates status

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5167022A (en) * 1988-10-25 1992-11-24 Hewlett-Packard Company Multiprocessor bus locking system with a winning processor broadcasting an ownership signal causing all processors to halt their requests
US5613128A (en) * 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
US5450586A (en) * 1991-08-14 1995-09-12 Hewlett-Packard Company System for analyzing and debugging embedded software through dynamic and interactive use of code markers
US5602729A (en) * 1994-03-15 1997-02-11 Mercury Computer Systems, Inc. Method and apparatus for monitoring and controlling multiprocessor digital data processing systems
US5493672A (en) * 1994-05-16 1996-02-20 Sun Microsystems, Inc. Concurrent simulation of host system at instruction level and input/output system at logic level with two-way communication deadlock resolution
US5546546A (en) * 1994-05-20 1996-08-13 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
JP3519182B2 (ja) * 1995-09-05 2004-04-12 株式会社日立製作所 情報処理システムおよびバスアービタならびにバス制御方法
US5740353A (en) * 1995-12-14 1998-04-14 International Business Machines Corporation Method and apparatus for creating a multiprocessor verification environment
US5826060A (en) * 1996-04-04 1998-10-20 Westinghouse Electric Corporation Stimulated simulator for a distributed process control system
US5905883A (en) * 1996-04-15 1999-05-18 Sun Microsystems, Inc. Verification system for circuit simulator
US6016527A (en) * 1996-09-30 2000-01-18 Lsi Logic Corporation Method and apparatus for improving fairness in SCSI bus arbitration
US5909559A (en) * 1997-04-04 1999-06-01 Texas Instruments Incorporated Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width
US5948089A (en) * 1997-09-05 1999-09-07 Sonics, Inc. Fully-pipelined fixed-latency communications system with a real time dynamic bandwidth allocation
JPH1185609A (ja) * 1997-09-09 1999-03-30 Mitsubishi Electric Corp 半導体記憶装置及びそのデータ管理方法
US6275914B1 (en) * 1999-10-15 2001-08-14 Micron Technology, Inc Apparatus for preserving memory request ordering across multiple memory controllers

Also Published As

Publication number Publication date
JP2000194610A (ja) 2000-07-14
US6629174B1 (en) 2003-09-30

Similar Documents

Publication Publication Date Title
US6757847B1 (en) Synchronization for system analysis
US8180620B2 (en) Apparatus and method for performing hardware and software co-verification testing
US6117181A (en) Synchronization mechanism for distributed hardware simulation
Loghi et al. Analyzing on-chip communication in a MPSoC environment
US6356862B2 (en) Hardware and software co-verification employing deferred synchronization
US6598178B1 (en) Peripheral breakpoint signaler
KR100257516B1 (ko) 멀티프로세서회로의 시뮬레이션을 위한 방법 및 장치
Pasricha et al. Extending the transaction level modeling approach for fast communication architecture exploration
Roychoudhury et al. Using formal techniques to debug the AMBA system-on-chip bus protocol
US6571204B1 (en) Bus modeling language generator
US7979822B2 (en) Apparatus and method for performing a sequence of verification tests to verify a design of a data processing system
US8762779B2 (en) Multi-core processor with external instruction execution rate heartbeat
WO2009123848A2 (en) Apparatus and method for low overhead correlation of multi-processor trace information
JP3953243B2 (ja) システム分析のためにバス・アービトレーション制御を使用する同期方法及び装置
Zachariah et al. A novel algorithm to extract two-node bridges
Bacivarov et al. Timed HW-SW cosimulation using native execution of OS and application SW
Pasricha et al. Fast exploration of bus-based communication architectures at the CCATB abstraction
US6904480B1 (en) Testing a bus using bus specific instructions
Yen et al. Overview of PowerPC 620 multiprocessor verification strategy
Maillet-Contoz et al. Transaction Level Modeling: An Abstraction Beyond RTL
Heinrich et al. Hardware/software co-design of the stanford FLASH multiprocessor
US11144687B1 (en) Method and system providing visualization of sub-circuit iterations based on handshake signals
Bhatia et al. Leveraging semi-formal and sequential equivalence techniques for multimedia SoC performance validation
CN117422026B (zh) 一种基于risc-v架构的处理器验证系统
JPH10221410A (ja) Lsiの自動論理検証方式

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060427

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060515

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070301

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070410

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070424

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees