(57)【要約】【課題】産業界に広く普及している同期回路設計のハードウエア記述言語に習熟している技術者が比較的容易に非同期回路設計を行うための非同期回路設計ツールを提供する。【解決手段】非同期回路設計ツールは、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコードを同期回路設計用のハードウエア記述言語に変換する変換手段を備えたトランスレータを含む。非同期回路設計言語で記述されたコードを同期回路設計用のハードウエア記述言語に変換することで、同期回路用の市販シミュレータで回路設計の機能検証を行うことが可能となる。【選択図】図１
2006202262.tif 000002
【特許請求の範囲】
【請求項１】
同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコードを前記同期回路設計用のハードウエア記述言語に変換する変換手段を備えたトランスレータを含む、非同期回路設計ツール。
【請求項２】
同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述された非同期回路設計を機能検証するための検証手段を備えた専用シミュレータを含む、非同期回路設計ツール。
【請求項３】
請求項２に記載の非同期回路設計ツールであって、前記検証手段として、コンパイル方式により前記非同期回路設計言語を中間言語に変換してから機能検証を行う専用シミュレータを含む、非同期回路設計ツール。
【請求項４】
請求項２に記載の非同期回路設計ツールであって、前記検証手段として、インタープリタ方式により前記非同期回路設計言語を逐次解釈しながら機能検証を行う専用シミュレータを含む、非同期回路設計ツール。
【請求項５】
同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコードを論理合成してネットリストを生成する論理合成手段を備えた論理合成ツールを含む、非同期回路設計ツール。
【請求項６】
請求項５に記載の非同期回路設計ツールであって、前記論理合成ツールは、同期回路設計用のセルと非同期回路設計用のセルから成るセル・ライブラリーを更に備え、前記論理合成手段は、前記セル・ライブラリーを参照して前記ネットリストを生成する、非同期回路設計ツール。
【請求項７】
請求項１に記載の非同期回路設計ツールであって、前記非同期回路設計言語のプリミティブは、データ型としてcportとchannelを含み、cportを修飾する属性としてactive/passive及びinput/outputを含み、コマンドとしてsend、receive、syncを含み、Functionとしてprobeを含む、非同期回路設計ツール。
【請求項８】
同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコードを前記同期回路設計用のハードウエア記述言語に変換する変換手段として、コンピュータシステムを機能させるためのコンピュータプログラム。
【請求項９】
同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述された非同期回路設計を機能検証するための検証手段として、コンピュータシステムを機能させるためのコンピュータプログラム。
【請求項１０】
同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述された非同期回路設計をコンパイル方式により中間言語に変換してから機能検証を行う検証手段として、コンピュータシステムを機能させるためのコンピュータプログラム。
【請求項１１】
同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述された非同期回路設計をインタープリタ方式により前記非同期回路設計言語を逐次解釈しながら機能検証を行う検証手段として、コンピュータシステムを機能させるためのコンピュータプログラム。
【請求項１２】
同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコードを論理合成してネットリストを生成する論理合成手段として、コンピュータシステムを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は非同期回路設計言語によって記述されたコードを検証又は論理合成するための非同期回路設計ツール及びコンピュータプログラムに関する。
【背景技術】
【０００２】
IC技術の急速な発達による回路規模の飛躍的な増大に伴い、デジタル回路設計にはHDL（Hardware Description Language）によるテキスト・ベースの回路設計と検証が一般的となっている。回路規模の飛躍的な増大はグローバル・クロックによって全回路を駆動する同期設計手法を極めて短時間に標準的な手法として普及させた。現在の商用の設計環境を構成するCAE/CADツール、SSI・MSI部品、セル・ライブラリー等は殆ど全て同期設計用のみに準備されたものである。ところが、最近、半導体技術の微細化、VLSIチップの大型化、クロック周波数の増大が進むにつれてクロック・スキューの問題が顕在化してきた。プロセスの微細化によって、スイッチング素子のディレイは小さくなったが、その一方で配線ディレイは相対的に大きくなる。その結果、チップを横断するクロック全体系のディレイはチップ内の場所によって大きくばらつくこととなり、その大きくばらついたグローバル・クロック信号によって駆動される素子の入出力信号の位相の一貫性はもはや保証されなくなる。クロック・スキューの問題に加えて、消費電力の増大も大きな問題になりつつある。微細化に伴なう素子の高速化と回路規模の幾何級数的増大に伴なうVLSIの消費電力の幾何級数的な増大が大きな問題となっている。更に、同期回路のクロックに同期した輻射ノイズも問題である。非同期設計は、こうしたクロック・スキュー、消費電力及び輻射ノイズの問題を解決する技術として注目されている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
非同期回路を設計する場合、回路図入力から始めて構造的・階層的に設計を進める手法と、テキスト・ベースで設計言語を用いて設計・検証を行う方法がある。前者の手法は直感的であり、小規模回路の設計には適しているが、大規模回路の設計には不向きである。特に、設計された回路が所望の機能を発揮するか否かのベリフィケーション、設計変更に伴なうフォーマル検証、ソフトウエアとの結合検証、ブロック間結合検証等が必須である最近の回路規模を勘案すると極めて非現実的な手法である。後者の設計手法では、テキスト・ベースでの設計言語として、OCCAM、CSP、Tangram等がある。OCCAMはTransputer用の並列プログラミング言語としても用いられたが、米国Utha大学のBrunvand助教授等によって、非同期回路の設計に用いられた。CSPはカルフォニア工科大学のAlain Martin助教授のグループによって、VLSI Programming Languageとして使用された。TangramはCSPベースの独自言語としてフィリップス研究所のKees van Berkelによって開発された非同期回路記述言語である。論理合成がSyntax-directed Translationによって行われる点はCSPと同様である。これらの設計言語と合成ツールは未だ商用化されていないため、これらを駆使して非同期回路を設計できるエンジニアは研究所又は大学等の研究機関に限られている。さらに、これらの設計言語を用いて記述された設計を最終的なＬＳＩにするための各種ツールも現状では各機関独自のものであり、業界標準的なものは未だ提供されていないという問題がある。
【０００４】
そこで、本発明は産業界に広く普及している同期回路設計のハードウエア記述言語に習熟している技術者が比較的容易に非同期回路設計を行うための非同期回路設計ツール及びコンピュータプログラムを提供することを課題とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決するため、本発明の非同期回路設計ツールは、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコードを同期回路設計用のハードウエア記述言語に変換する変換手段を備えるトランスレータを含む。非同期回路設計言語で記述されたコードを同期回路設計用のハードウエア記述言語に変換することで、同期回路用の市販シミュレータで回路設計の機能検証を行うことが可能となる。
【０００６】
本発明の非同期回路設計ツールは、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述された非同期回路設計を機能検証するための検証手段を備える専用シミュレータを含む。非同期回路設計言語で記述された非同期回路設計を機能検証するための専用シミュレータを用いることにより、非同期回路設計言語を同期回路設計用のハードウエア記述言語に変換しなくても、機能検証を行うことができる。
【０００７】
本発明の非同期回路設計ツールを構成する専用シミュレータにおいて、検証手段はコンパイル方式により非同期回路設計言語を中間言語に変換してから機能検証を行ってもよく、或いは、インタープリタ方式により非同期回路設計言語を逐次解釈しながら機能検証を行ってもよい。大規模な回路設計ではコンパイル方式が好適であり、小規模な回路設計ではインタープリタ方式が好適である。
【０００８】
本発明の非同期回路設計ツールは、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコードを論理合成してネットリストを生成する論理合成手段を備える論理合成ツールを含む。非同期回路設計言語によって記述されたコードを論理合成してネットリストを生成することにより、実回路に実装可能な回路接続情報を得ることができる。
【０００９】
本発明の非同期回路設計ツールを構成する論理合成ツールにおいて、同期回路設計用のセルと非同期回路設計用のセルから成るセル・ライブラリーを更に備え、論理合成手段はセル・ライブラリーを参照してネットリストを生成する構成とするのが望ましい。同期回路設計用のセルに加えて非同期回路設計用のセルを追加するだけで、ネットリスト生成に必要なセル・ライブラリーを構築できる。
【００１０】
本発明の非同期回路設計言語において、プロセス間通信用のデータ型として、cportとchannelを含むのが好ましい。cportは、属性として、active／passive及びinput／outputを備えるのが好ましい。例えば、ステートメント
cport active input [7:0] A;
は、cport Aが、active portであり、８ビットのinput portであることを宣言する。
【００１１】
また、ステートメント
channel [7:0] T;
は、channel Tが、Sub-processのcportを接続する８ビット幅のchannelであることを宣言する。
【００１２】
本発明の非同期回路設計言語において、プロセス間通信用のコマンドとして、send、receive、sync及びprobeを含むのが好ましい。ステートメントで通信を行うcportと変数を指定する。
【００１３】
ステートメント
send (A,x);
receive (B,y);
は、変数xのデータをcport Aを通じて相手のプロセスに送信し、cport Bを通じて受信したデータを変数yに格納することを意味する。
【００１４】
また、ステートメント
sync (Z);
は、cport Zを用いて同期を取ることを意味するが、データの送受信は行わない。上記send、receive及びsyncコマンドは、実際の回路においては、２相乃至４相ハンドシェーキングを起動する。
【００１５】
更に、コマンドprobeは、値を返すFunctionであり、例えばステートメント
probe (B);
は、cport Bを通じて、cport Bに接続されているchannel上にある即値を返す。probeコマンドを使用することで、プロセス間のハンドシェイクを開始する前に、例えば準備として、任意の処理を行うことができる。
【００１６】
本発明のコンピュータプログラムは、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコードを同期回路設計用のハードウエア記述言語に変換する変換手段として、コンピュータシステムを機能させるためのコンピュータプログラムである。非同期回路設計言語で記述されたコードを同期回路設計用のハードウエア記述言語に変換するコンピュータプログラムを実行することで、同期回路用の市販シミュレータで回路設計の機能検証を行うことが可能となる。
【００１７】
本発明のコンピュータプログラムは、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述された非同期回路設計を機能検証するための検証手段として、コンピュータシステムを機能させるためのコンピュータプログラムである。非同期回路設計言語で記述された非同期回路設計を機能検証するためのコンピュータプログラムを実行させることにより、非同期回路設計言語を同期回路設計用のハードウエア記述言語に変換しなくても、機能検証を行うことができる。
【００１８】
本発明のコンピュータプログラムは、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述された非同期回路設計をコンパイル方式により中間言語に変換してから機能検証を行う検証手段としてコンピュータシステムを機能させるためのコンピュータプログラムである。大規模な回路設計ではコンパイル方式が好適である。
【００１９】
本発明のコンピュータプログラムは、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述された非同期回路設計をインタープリタ方式により非同期回路設計言語を逐次解釈しながら機能検証を行う検証手段として、コンピュータシステムを機能させるためのコンピュータプログラムである。小規模な回路設計ではインタープリタ方式が好適である。
【００２０】
本発明のコンピュータプログラムは、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコードを論理合成してネットリストを生成する論理合成手段として、コンピュータシステムを機能させるためのコンピュータプログラムである。非同期回路設計言語によって記述されたコードを論理合成してネットリストを生成するコンピュータプログラムを実行することにより、実回路に実装可能な回路接続情報を得ることができる。
【００２１】
本発明のコンピュータプログラムにおいて、プリミティブとしては、例えば、非同期プロセス間通信において、リクエスト信号の受信後、アクノリッジ信号の送信前に任意の処理を実行するprobeコマンドを含むのが好ましい。probeコマンドを使用することで、プロセス間のハンドシェイクを開始する前に、任意の処理を行うことができる。
【００２２】
本発明のコンピュータプログラムにおいて、プリミティブとしては、例えば、ポート間の同期をとるためのsyncコマンドを含むのが好ましい。syncコマンドを使用することで、非同期プロセス間通信を制御できる。
【００２３】
本発明のコンピュータプログラムは、記録媒体に記録できる。記録媒体として、例えば、半導体メモリ素子（ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭなど）、磁気記録媒体（フレキシブルディスク、磁気カード等の磁気的にデータの読み取りが可能な記録媒体）、光記録媒体（ＣＤ−ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＰＤディスク、ＭＤディスク、ＭＯディスク等の光学的にデータの読み取りが可能な記録媒体）が好適である。これらの記録媒体への情報の記録形式は特に限定されるものではない。
【発明を実施するための最良の形態】
【００２４】
以下、各図を参照して本発明の好適な実施形態について説明する。
図１は業界標準Verilog HDLを用いた典型的な回路設計フローを示している。同図において、単線の枠は設計記述又は設計プロセスの入出力データを意味し、二重線の枠は設計のプロセスを意味する。Design Specificationは該当の設計に関する仕様記述である。自然言語、表、図などの直感的で自然な記述を用いて予め定まっている仕様を詳細に記述する。これは製品の詳細仕様書のベースになるものである。Behavioral Descriptionは該当の設計に関する動作レベルの詳細記述である。Verilog HDLを用いて動作レベルの記述を行うことも可能であり、その場合は、Verilog HDL専用のシミュレータを用いてDesign Specificationとの整合性の検証を行うことができる。
【００２５】
RTL DescriptionはVerilog HDLを用いて記述されるが、Behavioral Descriptionがアーキテクチャ独立なのに対して、TL Descriptionはアーキテクチャに依存する。Behavioral Descriptionは論理合成の対象にはならないが、RTL Descriptionは論理合成可能な記述である。Behavioral DescriptionはDesign Specificationが正しく記述されているか否かを検証するためのシミュレーションに供せられるとともに、RTL Descriptionを用いたFunctional Verification ＆ Testing用のテスト・ベクターの生成に用いられる。Logic Synthesisの出力であるGate-Level Netlistはセル・ライブラリーと合わせてFunctional Verification ＆ Testingによる論理検証に供せられる。論理検証の後、Floor Planning Automatic Place ＆ Route以降の物理検証が行われ、Physical Layoutを得る。Layout Verificationの結果を見て必要であればレイアウトに修正を施した後にImplementationを行い、チップ製作を行う。
【００２６】
図２は非同期回路におけるプロセス間通信（ハンドシェイク通信）を示している。非同期回路とはグローバル・クロックを用いないで各々のプロセス（最小機能回路）が自律的に又は他律的に局所的な協調をとりながら分散制御を行うことを目的として設計された回路をいう。同期設計では命令フェッチ、デコード、エグゼキューション、リード／ライト等の各オペレーションはグローバル・クロックに同期して行われるため、回路動作を高速にするには、クロック遅延、クロック・スキュー、クロックジッターなどの問題が生じるが、非同期設計ではプロセス同士が相互にハンドシェイクを通じて自律的に又は他律的に動作するため、このような問題は生じない。各々のプロセスは通信チャネルを通じて他のプロセスと接続し、局所的な協調の下、自律的に又は他律的にイベント駆動を行う。通信チャネルはその両端において、ポートと接続する。同図に示す例では、プロセスＡはポートａを具備し、プロセスＢはポートｂを具備している。プロセスＡとプロセスＢはポートａとポートｂにおいて通信チャネルを介して接続している。通信チャネルはRequest信号、Acknowledge信号、及びデータ信号から構成される。各々のプロセスは他のプロセスとは独立して並列動作が可能であり、他のプロセスの処理が完了するまで処理待ちする必要がない。プロセスは、所望の処理を実行する準備が完了した段階で処理を進めることができる。
【００２７】
図３はプロセス間の２相ハンドシェイキング（Non Return to Zero）を示しており、信号の立ち上がりエッジ又は立下りエッジでreq/Acknowlege信号を送受信する。例えば、上述の例で、ポートａからポートｂにreq信号を送信するには、req信号をＬレベルからＨレベルに立ち上げ、又はＨレベルからＬレベルに立ち下げる。ポートｂはreq信号の立ち上がりエッジ又は立ち下がりエッジを検出することにより、ポートａからポートｂに向けてreq信号が送信されたことを検出する。ポートｂがポートａへAcknowlege信号を返信するには、Acknowlege信号のレベルをＬレベルからＨレベルに立ち上げ、又はＨレベルからＬレベルに立ち下げればよい。これにより、ハンドシェイクが完了する。
【００２８】
図４はプロセス間の４相ハンドシェイキング（Return to Zero）を示しており、信号レベルでreq/Acknowlege信号を送受信する。例えば、上述の例で、ポートａからポートｂにreq信号を送信するには、req信号をＬレベルからＨレベルに立ち上げればよい。ポートｂはreq信号がＨレベルに遷移したことを検出すると、req信号が送信されたことを検出する。ポートｂがポートａへAcknowlege信号を返信するには、Acknowlege信号のレベルをＬレベルからＨレベルに立ち上げればよい。Acknowlege信号のレベルがＨレベルに遷移したことを確認したポートａはreq信号のレベルをＨレベルからＬレベルに立ち下げる。req信号のレベルがＨレベルからＬレベルに遷移したことを確認したポートｂはAcknowlege信号のレベルをＨレベルからＬレベルに立ち下げ、ハンドシェイクが完了する。以下の記述においては、説明の便宜上、プロセス間通信は４相ハンドシェイキングを採用するものとして説明を行う。
【００２９】
図５はポートの属性の組み合わせを示している。プロセスは自律的に、又は他律的に動作するため、全てのポートには'Active'又は'Passive'の属性１が付与される。さらに'Input'又は'Output'の属性２を考慮すると、合計４種類の属性に分類できる。対向ポートの属性は通信相手のポート属性によって一義的に定められる。例えば、図６に示すように、自律的にデータ転送を要求するプロセスＡのポート属性が'Active Input'である場合は他律的にデータ転送を行うプロセスＢのポート属性は'Passive Output'となる。通信チャネルにおけるRequest信号とAcknowledge信号の送受信は上述した２相ハンドシェイキング、又は４相ハンドシェイキングによって行われる。この場合において、２線エンコーディングを用いれば、図７に示すように、Acknowledge信号線を削減できる。もし、図８に示すように、プロセスＡのポートが'Active Output'の場合は、Request信号線とデータ信号線の方向が同一であるので、Request信号線を削減できる。非同期設計においては、コントロール部とデータパス部の設計において２線エンコーディングを用いることで明示的なディレイ素子の挿入が不要となり、回路系がDelay Insensitiveとなる。本発明は図６に示すバンドル・データ方式と、図７又は図８に示す２線エンコーディング方式の何れにも対応できる。
【００３０】
図９は複数のプロセス間のハンドシェイク回路を示している。各々のプロセスは複数のポートを具備しており、複数のプロセスと通信できるように構成されている。同図に示すハンドシェイク回路においては、プロセスＡはプロセスＢと通信しながらプロセスＣとも通信を行う。プロセスＡはプロセスＢ，Ｃに対してActive（黒丸で示す）であるが、プロセスＢはプロセスＡ，Ｃに対してPassive（白丸で示す）である。プロセスＣはプロセスＡに対してはPassiveであり、プロセスＢに対してはActiveである。プロセスＡに着目すると、ポートＰａ１の属性はActive Inputであるので、図６に示すようにRequest信号を自ら送信することによりハンドシェイクを起動してプロセスＢからデータを受け取る。一方、ポートＰａ２の属性はActive Outputであるので、図８に示すようにRequest信号を自ら送信することによりハンドシェイクを起動してプロセスＣにデータを送信する。
【００３１】
本発明ではVerilog HDL等のハードウエア記述言語に非同期プロセス間通信を可能とする新たなプリミティブを追加することにより、上述したハンドシェイク回路で交わされるプロセス間通信を実現した非同期回路設計言語を用いて回路設計を行う。図１０は、図９に示したプロセスＡを本発明の非同期回路設計言語を用いてコーディングしたコーディング例を示している。同図に示すコーディング例について文法に沿って説明すると、まず、モジュール宣言部においては、モジュール名「Ａ」、入出力信号名「RESET,Pa1,Pa2」が宣言されている。入出力信号（ポート）宣言部では、１ビットの入力信号「RESET」と、２ビットの変数（レジスタ）「regＡ」が宣言されている。さらに、本発明の非同期回路設計言語によって新たに導入された宣言文cportによって、非同期プロセス間通信を行うためのポート名「Pa1,Pa2」とその属性が宣言されている。ポートPa1の属性はActive Inputであり、ポートPa2の属性はActive Outputである。プロセスＢからの受信はreceiveコマンドによって行われ、プロセスＣへの送信はsendコマンドによって行われる。receiveコマンドとsendコマンドは本発明の非同期回路設計言語によって新たに導入されたコマンドである。always文を参照すると、初期化信号RESETが解除されるのを待って、ポートPa1経由で受信したプロセスＢからのデータは変数regＡに取り込まれ、ポートPa2経由でプロセスＣに送信されるようにコーディングされている。図９に示したプロセスＢ，Ｃを非同期回路設計言語にコーディングすると、それぞれ図１１、図１２に示すようになる。
【００３２】
図１３は非同期回路設計ツール１００の機能ブロック図である。非同期回路設計ツール１００は、トランスレータ１０を備えている。トランスレータ１０は、同期回路設計用のハードウエア記述言語（例えば、Verilog HDL又はVHDLのサブセット又はフルセット）に非同期プロセス間通信を可能とするプリミティブが追加された非同期回路設計言語によって記述されたコード４０を同期回路設計用のハードウエア記述言語（例えば、Verilog HDL又はVHDL）５０に変換する変換手段１１を備えている。コード４０を同期回路設計用のハードウエア記述言語５０に変換することで、非同期回路設計言語で記述された回路設計を同期回路用の市販シミュレータで検証することができる。トランスレータ１０は、コンピュータシステムを変換手段１１として機能させるコンピュータプログラムをコンピュータシステム上で実行させることにより実現される。
【００３３】
図１５はそのコード変換例を示している。同図のVerilogコードは図７に対応しているものの、２線式エンコーディングではなく、データ・バスを含めた信号線がハイ・インピーダンスであるか否かを判定する回路になっている。実際の回路は２線式エンコーディングによって実装される。即ち、このVerilogコードはシミュレーション検証に使用されるもので、論理合成用ではない。モジュール宣言部においては、モジュール名「Ａ」、入出力信号名「RESET,Pa1＿req,Pa1＿data,Pa2＿data,Pa2＿ack」が宣言されている。入出力信号宣言部では、１ビットの入力信号「RESET」と、２ビットの変数「regＡ」と、１ビットの出力信号「Pa1＿req」と、２ビットの入力データ線「Pa1＿data」と、２ビットの出力データ線「Pa2＿data」と、１ビットの入力信号線「Pa2＿ack」が宣言されている。既に述べたように、本実施形態では４相ハンドシェイキングを採用しているので、図４、図７を参照しながら、図１５のVerilogコードについて説明を進める。
【００３４】
Verilogコードの最初のbegin-endブロックは図４に説明した手順を踏んでいるが、信号線にデータが出力されているか否かの判定は２線式エンコーディングのスキームの代わりに、単線式のままハイ・インピーダンスか否かの判定によって行っている。即ち、出力信号Pa1＿reqは図７のRequest信号に相当し、入力信号Pa1＿dataはAcknowledge信号又はデータ信号に相当する。まず、forceコマンドによってPa1＿reqをHighとして、Requestを送出し、入力データ線Pa1＿dataにデータが出力されるまで、即ち、ハイ・インピーダンスでなくなるまで待つ。データが入力データ線Pa1＿dataに出力されてならば、内部レジスタregＡに取り込む。２番目のbegin-endブロックは図８に説明した手順を踏んでおり、出力データ線Pa2＿dataがRequest信号又はデータ信号に相当し、入力信号線Pa2＿ackはAcknowledge信号に相当している。まず、forceコマンドによってregＡの内容を出力データ線Pa2＿dataに出力し、Pa2＿ackがハイ・インピーダンスでなくなるまで待つ。Pa2＿ackを受信後、出力データ線Pa2＿dataをハイ・インピーダンスにして開放し、Pa2＿ackがハイ・インピーダンスになるのを待って、ハンドシェイキングを完結する。
【００３５】
図１６は、図１０乃至図１２に記述したプロセスＡ，Ｂ及びＣをもって構成した図９のハンドシェイク回路を非同期回路設計言語でコーディングしたコーディング例を示している。本発明の非同期回路設計言語によって新たに導入された宣言文channelによって、プロセスＡ，Ｂ及びＣを接続する２ビットの３本のチャネルをCH1、CH2及びCH3として宣言している。それぞれのプロセスのインスタンスはこれらのチャネルによって接続されている。このコーディング例を上述したトランスレータ１０によってVerilogコードに変換すると、図１７に示すようなVerilogコードが得られる。同図のVerilogコードに示すように、図１６のチャネルCH(n=1,2,3)は２種類の配線（wire）CHn＿ctrl(n=1,2,3)及びCHn＿data(n=1,2,3)に展開される。プロセスＡのポートPa1＿reqは配線CH1＿ctrlに接続され、ポートPa1＿dataは配線CH1＿dataに接続される。同様に、プロセスＣのポートPc3＿ackは配線CH3＿ctrに接続され、ポートPc3＿dataは配線CH3＿dataに接続される。
【００３６】
尚、上述の説明においては、非同期回路設計言語で記述されたコードを同期回路設計言語に変換してから同期回路用の市販シミュレータで機能検証する場合を例示したが、図１４に示すように、専用シミュレータ２０を備える非同期回路設計ツール１００によって機能検証を行ってもよい。専用シミュレータ２０は、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコード４０の非同期回路設計を機能検証するための検証手段２１として機能する。検証手段２１としては、コンパイル方式により非同期回路設計言語を中間言語に変換してから機能検証を行うものでもよく、或いはインタープリタ方式により非同期回路設計言語を逐次解釈しながら機能検証を行うものでもよい。専用シミュレータ２０はコンピュータシステムを検証手段２１として機能させるコンピュータプログラムをコンピュータシステム上で実行させることにより実現される。
【００３７】
非同期回路設計言語のコードは本発明の論理合成ツールによって、実装可能なネットリスト（回路の接続情報）に変換される。既に説明したように、プロセスＡのトランスレータ１０の出力リストでは実装困難である。データ信号線のハイ・インピーダンスを検出することによってデータの到来を検出することは実回路においては実用的ではないからである。本発明の論理合成ツールについて、２線式エンコーディング（Dual-rail Encoding）方式による実装を前提に説明する。図１８は２線式エンコーディングのコーディング・スキームの一例である。図１９は４ビットのデータ転送に２線式エンコーディング方式を用いた場合の回路図である。説明の便宜上、d0ビットに着目して説明を行う。まず、最初は何も意味のあるデータを出力してないので、Send信号はLowであり、全てのデータ線ペアは｛0,0｝となっている。d0に送信したいデータ、例えば、１を出力した後、Send信号をHighにすると、｛d0.0,d0.1｝=｛0,1｝となる。受信側の各データ線ペアに備わるデコーダ（４ビットの場合は４個のデコーダ）は、やはり、図１８のスキームに従ってデータの到来を検出し、データを入手する。各ビットに対応するデコーダからの到着信号が全て揃うのを待つために、Muller-Cエレメントを用いている。Muller-Cエレメントへの入力が全てHighになった時点で、Receive信号がHighとなり、４ビット・データの到着となる。
【００３８】
上述した非同期回路設計言語は、図２０に示すように、論理合成ツール３０を備えた非同期回路設計ツール１００によって、実装可能なVerilogネットリストに変換される。論理合成ツール３０は、同期回路設計用のハードウエア記述言語に非同期プロセス間通信を可能とするプリミティブが付加された非同期回路設計言語によって記述されたコード４０を論理合成してネットリスト６０を生成する論理合成手段３１を備えている。論理合成ツール３０は同期回路設計用のセルと非同期回路設計用のセルから成るセル・ライブラリー３２を更に備えている。論理合成手段３１はセル・ライブラリー３２を参照してネットリスト６０を生成する。論理合成ツール３０はコンピュータシステムを論理合成手段３１として機能させるコンピュータプログラムをコンピュータシステム上で実行させることにより実現される。
【００３９】
図２１は、図１０に示すプロセスＡのコーディング例を論理合成ツール３０で変換したネットリストである。このネットリストの宣言文を参照すると、図１０のリストに記述された２ビットのポートは２線式エンコーディングのためにinput [3:0] Pa1＿d; output [3:0] Pa2＿d;と展開されて４ビットのポートに変換されていることがわかる。同図のリストに対応する回路図を図２２に示す。同図に示す回路を説明する前に、この回路に使用されている個々のセルについて説明を加える。これらのセルは論理合成ツール３０のセル・ライブラリー３２に属するものである。
【００４０】
図２３はreg-simple接続図を示している。このセルは１ビットデータの２線式エンコーディング方式におけるデコーダである。d0,d1は１ビットの入力データの２線であり、図１８のスキームに則ってデコードされたデータが内部レジスタにセットされるとともに、出力線Q,Q＿に出力される。このとき、データの到着を示すput信号がHighとなる。図２４はbit-to-dual接続図を示している。send信号がHighになったとき、入力信号Dを２線式エンコーディングして出力信号d0,d1に出力する。図２５はQ＿element接続図を示している。このセルは図２６に示すシーケンスを実行する。図２７はMuller-Cエレメント接続図を示している。A,BともにHighのとき、ZがHighとなり、A,BともにLowのとき、ZがLowとなる。それ以外のときは、Z出力は変化しない。
【００４１】
ここで、図２２に示したプロセスＡの回路図について説明を行う。点線で囲まれた部分が論理合成ツール３０によって生成された接続図であり、論理合成ツール３０に付帯するセル・ライブラリー３２から必要なセルを用いて図２０に示したリストに記述されている回路を構成している。点線上の丸は対応する信号線が宣言文cportで指定された入出力ポートであることを示している。次に、この回路の動作手順を説明する。図１０のリストには明示的に使用されてないが、論理合成の出力である図２１のリストには初期化信号RESETが挿入されている。最初はRESET信号はHighであるから、Q＿elementのlc入力X8＿cはLowであり、図２６に示すシーケンスの初期状態である。RESETがLowとなると、Pa2＿cもLowであるから、X8＿cはHighとなる（ｔ１）。これは、図２６において、入力lcがHighとなることを意味するため、同図に示すシーケンスが開始される。同図に示すように、入力lcがHighに遷移したことを受けて、出力rcがHighに遷移する（ｔ２）。これは、図２２において、Pa1＿cがHighに遷移することを意味する。Pa1＿cはプロセスＢ（図９参照）へのRequest信号である。
【００４２】
プロセスＢはこのRequest信号を受けて２線式エンコーディングされたデータをPa1＿d[n] (n=0,1,2,3)に送出する。このデータは復号されて、reg-simple内部にregA[0]及びregA[1]としてラッチされる（regA[0]＿及びregA[1]＿は反転出力である）。同時にこのタイミングで、データの受信を認めるX1＿d及びX2＿dがHighとなり、Muller-Cエレメントに入力される。X1＿d及びX2＿dのデータ線の長さのバラツキなどによってデータが到着するタイミングにはバラツキが生じ得るため、X1＿d及びX2＿dが共にHighとなるタイミングは同時とは限らない。Muller-Cエレメントの出力X0＿dはX1＿d及びX2＿dが共にHighとなった時点でHighとなる（ｔ３）。図２２のX0＿dは図２６ではrdに相当し、これがHighに遷移したのを受けてQ＿elemはrc、即ち、図２２のPa1＿cをLowにする（ｔ４）。プロセスＢは、Pa1＿cがLowに遷移したことを受けて、プロセスＢからプロセスＡへ送出したデータが受領されたことを検出し、データの送出を取り止めるべく、Nullをデータ線上に出力する。reg-simpleはデータ線上にNullが出力された時点でX1＿d及びX2＿dをLowとするので、Muller-CエレメントはX1＿d及びX2＿dが共にLowとなった時点でX0＿dをLowとする（ｔ５）。これで、プロセスＢとのハンドシェイキングは完結した。
【００４３】
図２２のX0＿dがLowになることは、図２６において、rdがLowに遷移することを意味するから、Q＿elemはld、即ち、図２２のX8＿ddをHighとする（ｔ６）。X8＿ddはbit-to-dualのsend信号である。bit-to-dualはreg-simpleに保持されているデータregA[0]及びregA[1]を２線式エンコーディングしてPa2＿d[n] (n=0,1,2,3)に送出する。このデータ送出はプロセスＣ（図９参照）にとってはプロセスＡからのRequestであるから、プロセスＣはこのRequesを受け取ってからAcknowlege信号であるPa2＿cをHighとする。Pa2＿cがHighとなると、NORの出力であるX8＿c（Q＿elemの入力信号lc）はとLowなる（ｔ７）。Q＿elemは入力lcがLowに遷移したことを受けて、出力信号ld（bit-to-dualのsend信号）としてのX8＿ddをLowに遷移させる（ｔ８）。bit-to-dualはsend信号がLowに遷移したことを受けて、２線式エンコードされたデータの送出を止め、Nullをデータ線Pa2＿d[n] (n=0,1,2,3)に出力する。プロセスＣはNullを受信することで、AcknowlegeがプロセスＡによって受信されたことを検出し、Acknowlege信号であるPa2＿cをHighに遷移させる。これにより、プロセスＣとのシーケンスも完結するが、図１０のリストに見るように、always wait(!RESET)としているので、RESET信号がHighにならない限り、プロセスＢ及びプロセスＣとの非同期通信は繰り返される。
【００４４】
本発明のprobe及びsyncを用いれば、更に効率的な回路をより簡単に構成することが可能である。まず、その好適な実施例を説明する前に、Verilog HDLのサブセットに追加された通信用プリミティブを以下にまとめる。
１．channel  新たに追加されたdata typeである。下記cportを接続する。
２．cport  新たに追加されたdata typeである。以下の６タイプがある。
active input       能動的入力ポート
active output      能動的出力ポート
passive input      受動的入力ポート
passive output     受動的出力ポート
active sync       能動的同期ポート
passive sync      受動的同期ポート
３．send/receive/sync/probe  新たに追加された通信用コマンドである。
send  変数から読み出したデータの送信を行うコマンド
receive      データの受信と変数への書き込みを行うコマンド
sync  データの送受信を伴なわずにポート間の同期をとるコマンド
４．probe  新たに追加されたFunctionである。
probe   指定したcportに接続するchannel上の即値を返すFunction
まず。Probe functionを持ちいた実施例について説明する。Passiveポート経由のsend又はreceiveのハンドシェイキングにおいては、対向ポートからのRequest信号の到来によって、送信又は受信のシーケンスがスタートする。しかしながら、実際の回路ではRequest信号の到来によって直ちにハンドシェイキングを開始するのではなく、例えば、Request信号を待って、まず別の処理を行った後に、送信又は受信のハンドシェイキングを行う場合がある。新たに定義されたコマンドによれば、対向ポートからのRequest信号を待って、まず別の処理を行った後に、送信又は受信のハンドシェイキングを行うことができる。
【００４５】
図２８は、probeの使用例１を非同期回路設計言語によって記述したコーディング例である。同図に示すコーディング例において、「…」は任意のステートメントを表している。モジュール宣言部においては、モジュール名「M」、入出力信号名「Ｐ」が宣言されている。入出力信号（ポート）宣言部においては、ポートＰは８ビットのcport passive outputであることが宣言されている。if文では、probe(P)のコマンドが返す値が１ビットの１である場合に、次のステートメント（if文とsend（Ｐ，ａ）との間の「…」）を実行するように記述されている。send（Ｐ，ａ）は変数ａから読み出した値を、ポートＰを通じて対向ポートに送信するためのコマンドである。
【００４６】
図２９は、probeの使用例１をVerilogコードに変換したコード変換例である。モジュール宣言部においては、モジュール名「M」、入出力信号名「P＿ctrl，P＿data」が宣言されている。入出力信号宣言部においては、１ビットの入力信号P＿ctrlと、８ビットの出力信号P＿dataが宣言されている。この状態を図示すると、図３０に示すようになる。プロセスＭ，ＮはそれぞれのポートＰ，Ｑを通じて接続している。ポートＰはpassive output、ポートＱはactive inputである。ポートＰはポートＱからP＿ctrlを通じてRequest信号を受信すると、P＿dataを通じてデータ（Acknowlege信号）を送信する。ここで、図２９の説明に戻ると、if文は、P＿ctrlの値が１ビットの１である場合に、次のステートメント（if文とbeginとの間の「…」）を実行するようにコーディングされている。begin〜end文は、send（Ｐ，ａ）をVerilogコードに変換したステートメントである。このbegin〜end文について、図３１を参照しながら説明する。まず、P＿ctrlがハイ・インピーダンスでなくなるのを待ち、probeコマンドを実行した後に、P＿dataに変数aの値を出力する。次いで、P＿ctrlがハイ・インピーダンスになるのを待ち、P＿dataを開放する（４相ハンドシェイキング）。ここで、P＿ctrlはRequest信号に相当し、P＿dataはAcknowlege信号に相当する。このように、probeコマンドを用いることによって、対向ポートからRequest信号を受信した後、当該対向ポートにAcknowlege信号を返答する前に、任意のステートメント「…」を実行することができる。
【００４７】
図３２は、probeの使用例２を非同期回路設計言語によって記述したコーディング例である。モジュール宣言部においては、モジュール名「M」、入出力信号名「Ｐ」が宣言されている。入出力信号宣言部においては、ポートＰは８ビットのcport passive inputであることが宣言されている。wait文では、probe(P)のコマンドが返す値が８ビットの所定値である場合（ハイ・インピーダンスでない場合）に、probe(P)のコマンドが返す値に応じて定められたcase文のステートメント「…」を実行するように記述されている。receive（Ｐ，ａ）はポートＰを通じて受信した値を変数ａに代入するためのコマンドである。
【００４８】
図３３は、probeの使用例２をVerilogコードに変換したコード変換例である。モジュール宣言部においては、モジュール名「M」、入出力信号名「P＿ctrl，P＿data」が宣言されている。入出力信号宣言部においては、８ビットの入力信号P＿dataと、１ビットの出力信号P＿ctrlが宣言されている。この状態を図示すると、図３４に示すようになる。プロセスＭ，ＮはそれぞれのポートＰ，Ｑを通じて接続している。ポートＰはpassive input、ポートＱはactive outputである。ポートＰはポートＱからP＿dataを通じてデータ（Request信号）を受信すると、P＿ctrlを通じてAcknowlege信号を返答する。ここで、図３３の説明に戻ると、wait文は、P＿dataの値が８ビットの所定値である場合（ハイ・インピーダンスでない場合）に、P＿dataの値に応じて定められたcase文のステートメント「…」を実行するように記述されている。begin〜end文は、receive（Ｐ，ａ）をVerilogコードに変換したものである。このbegin〜end文について、図３５を参照しながら説明する。まず、P＿dataがハイ・インピーダンスでなくなるのを待ち、probeコマンドを実行した後、P＿dataに出力された値を変数aに代入する。次いで、P＿ctrlに１ビットの１を出力し、P＿dataがハイ・インピーダンスになるのを待って、P＿ctrlを開放する（４相ハンドシェイキング）。ここで、P＿dataはRequest信号に相当し、P＿ctrlはAcknowlege信号に相当する。このように、probeコマンドを用いることによって、対向ポートからRequest信号を受信した後、当該対向ポートにAcknowlege信号を返答する前に、case文で指定された任意のステートメント「…」を実行することができる。
【００４９】
図３６は、syncの使用例１を非同期回路設計言語によって記述したコーディング例である。モジュール宣言部においては、モジュール名「M」、入出力信号名「Ｐ」が宣言されている。入出力信号宣言部においては、ポートＰはcport passive syncであることが宣言されている。sync(P)はポートＰを通じてポート間の同期をとるためのコマンドである。
【００５０】
図３７は、syncの使用例１をVerilogコードに変換したコード変換例である。モジュール宣言部においては、モジュール名「M」、入出力信号名「P＿ctrl，P＿data」が宣言されている。入出力信号宣言部においては、入力信号P＿ctrlと、出力信号P＿dataが宣言されている。この状態を図示すると、図３８に示すようになる。プロセスＭ，ＸはポートＰ，Ｑを通じて接続している。ポートＰはpassive sync、ポートＱはactive syncである。更に、プロセスＭ，ＮはポートＲ，Ｓを通じて接続している。ポートＲはactive input、ポートＳはpassive outputである。ポートＰ，Ｑはデータの送受信を行わずにポート間の同期をとる。ポートＲ，Ｓはハンドシェイキングを通じてデータの送受信を行う。ここで、図３７の説明に戻ると、begin〜end文は、sync(P)をVerilogコードに変換したものである。このbegin〜end文では、まず、P＿ctrlがハイ・インピーダンスでなくなるのを待って、P＿dataに１ビットの１を出力する。次いで、P＿ctrlがハイ・インピーダンスになるのを待って、P＿dataを開放する。これにより、ポートＰ，Ｑ間の同期をとることができる。
【００５１】
syncコマンドの使用例について、図３８及び図３９を参照しながら説明する。ここでは、プロセスＸがポートＰ，Ｑを通じてプロセスＭ，Ｎ間の通信を制御する手順を例示する。プロセスＭは、P＿ctrlがハイ・インピーダンスでなくなることにより、ポートＱからのRequest信号の到来を検出すると、プロセスＮに対してデータ転送を要求するRequest信号をR＿ctrlに出力する。すると、プロセスＮからR＿dataにデータが出力される。このデータはRequest信号に対するAcknowlege信号である。プロセスＭはR＿dataにデータが出力されたことを受けて、R＿ctrlをネゲートする。プロセスＭはR＿dataからのデータ受信を完了すると、P＿dataにAcknowlege信号を出力する。すると、P＿ctrlはネゲートされる。このように、syncコマンドを使うことによって、プロセス間の通信を制御することも可能である。
【００５２】
図４０は、syncの使用例２を非同期回路設計言語によって記述したコーディング例である。モジュール宣言部においては、モジュール名「M」、入出力信号名「Ｐ」が宣言されている。入出力信号宣言部においては、ポートＰはcport active syncであることが宣言されている。if文はprobe(P)の返す値が１ビットの１である場合に、if文とsync(P)との間のステートメント「…」を実行するように記述されている。本例はprobeコマンドを使用する例を示しているが、syncコマンドを使用する上で、if文は必須ではなく、省略してもよい。
【００５３】
図４１は、syncの使用例２をVerilogコードに変換したコード変換例である。モジュール宣言部においては、モジュール名「M」、入出力信号名「P＿ctrl，P＿data」が宣言されている。入出力信号宣言部においては、入力信号P＿dataと、出力信号P＿ctrlが宣言されている。if文は、P＿ctrlの値が１ビットの１である場合に、次のステートメント（if文とbeginとの間の「…」）を実行するようにコーディングされている。begin〜end文は、sync(P)をVerilogコードに変換したものである。このbegin〜end文では、まず、P＿ctrlに１ビットの１を出力し、P＿dataがハイ・インピーダンスでなくなるのを待つ。P＿dataがハイ・インピーダンスでなくなると、P＿ctrlを開放し、P＿dataがネゲートされるのを待つ。
【００５４】
本実施形態によれば、業界標準のHDL(Verilog HDL及びVHDL)に習熟している技術者が比較的容易に非同期回路を設計することができる環境を提供できる。また、これにより、半導体プロセスの微細化が進むにつれて顕在化してきた同期回路設計の限界（電力問題、クロック・スキュー問題など）を超えて、プロセスが提供する能力を従来よりも短期間に、低コストで、高い信頼性・検証性をもって引き出すことが可能になる。更に、非同期回路の移植性は高いので、本発明により開発された非同期回路設計技術をＩＰとして繰り返し活用することが可能であるので、技術者不足や短期間の開発に対応しやすくなる。更に、本実施形態により極めて電磁輻射の少ない非同期回路を様々な製品の為に開発する環境を提供できる。本発明の非同期回路設計技術は超低消費電力VLSI、それを組み込んだ半完成品又は完成品（PDA、スマートカード、電子ブックなど）、TFT技術を用いたLSI、それを用いた半完成品又は完成品に適用できる。具体的には、ウェアラブル機器、玩具、家庭用防犯センサー関連機器、RFIDなどのバッテリーを搭載しない電子機器、自動車搭載機器、医療機器、軍需製品などに応用できる。
【図面の簡単な説明】
【００５５】
【図１】業界標準Verilog HDLを用いた典型的な回路設計フローである。
【図２】非同期回路におけるプロセス間通信を示す図である。
【図３】プロセス間の２相ハンドシェイクを示す図である。
【図４】プロセス間の４相ハンドシェイクを示す図である。
【図５】ポートの属性の組み合わせを示す図である。
【図６】ポート属性とチャネル信号の説明図である。
【図７】２線エンコーディングの説明図である。
【図８】２線エンコーディングの説明図である。
【図９】ハンドシェイク回路の説明図である。
【図１０】プロセスＡの非同期設計記述である。
【図１１】プロセスＢの非同期設計記述である。
【図１２】プロセスＣの非同期設計記述である。
【図１３】トランスレータの説明図である。
【図１４】専用シミュレータの説明図である。
【図１５】プロセスＡのVerilogコード変換例である。
【図１６】ハンドシェイク回路の非同期設計記述である。
【図１７】ハンドシェイク回路のVerilogコード変換例である。
【図１８】２線式エンコーディングの変換スキームである。
【図１９】２線式エンコーダ／デコーダの説明図である。
【図２０】論理合成ツールの説明図である。
【図２１】プロセスＡのネットリストである。
【図２２】プロセスＡの回路図である。
【図２３】reg-simple接続図である。
【図２４】bit-to-dual接続図である。
【図２５】Q＿elem接続図である。
【図２６】Q＿elemの入出力信号のシーケンスである。
【図２７】Muller-Cエレメント接続図である。
【図２８】probeコマンドを用いた非同期回路設計コードである。
【図２９】Verilogコードのコーディング例である。
【図３０】非同期プロセス間通信の説明図である。
【図３１】プロセス間のハンドシェイクの説明図である。
【図３２】probeコマンドを用いた非同期回路設計コードである。
【図３３】Verilogコードのコーディング例である。
【図３４】非同期プロセス間通信の説明図である。
【図３５】プロセス間のハンドシェイクの説明図である。
【図３６】syncコマンドを用いた非同期回路設計コードである。
【図３７】Verilogコードのコーディング例である。
【図３８】非同期プロセス間通信の説明図である。
【図３９】プロセス間のハンドシェイクの説明図である。
【図４０】syncコマンドを用いた非同期回路設計コードである。
【図４１】Verilogコードのコーディング例である。
【符号の説明】
【００５６】
１０…トランスレータ  １１…変換手段  ２０…専用シミュレータ  ２１…検証手段  ３０…論理合成ツール  ３１…論理合成手段  ３２…セル・ライブラリー  ４０…非同期回路設計言語  ５０…Verilogコード  ６０…ネットリスト
【図１】
2006202262.tif 000003
【図２】
2006202262.tif 000004
【図３】
2006202262.tif 000005
【図４】
2006202262.tif 000006
【図５】
2006202262.tif 000007
【図６】
2006202262.tif 000008
【図７】
2006202262.tif 000009
【図８】
2006202262.tif 000010
【図９】
2006202262.tif 000011
【図１０】
2006202262.tif 000012
【図１１】
2006202262.tif 000013
【図１２】
2006202262.tif 000014
【図１３】
2006202262.tif 000015
【図１４】
2006202262.tif 000016
【図１５】
2006202262.tif 000017
【図１６】
2006202262.tif 000018
【図１７】
2006202262.tif 000019
【図１８】
2006202262.tif 000020
【図１９】
2006202262.tif 000021
【図２０】
2006202262.tif 000022
【図２１】
2006202262.tif 000023
【図２２】
2006202262.tif 000024
【図２３】
2006202262.tif 000025
【図２４】
2006202262.tif 000026
【図２５】
2006202262.tif 000027
【図２６】
2006202262.tif 000028
【図２７】
2006202262.tif 000029
【図２８】
2006202262.tif 000030
【図２９】
2006202262.tif 000031
【図３０】
2006202262.tif 000032
【図３１】
2006202262.tif 000033
【図３２】
2006202262.tif 000034
【図３３】
2006202262.tif 000035
【図３４】
2006202262.tif 000036
【図３５】
2006202262.tif 000037
【図３６】
2006202262.tif 000038
【図３７】
2006202262.tif 000039
【図３８】
2006202262.tif 000040
【図３９】
2006202262.tif 000041
【図４０】
2006202262.tif 000042
【図４１】
2006202262.tif 000043