IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シノプシス, インコーポレイテッドの特許一覧

<>
  • 特表-光回路設計における光経路追跡 図1
  • 特表-光回路設計における光経路追跡 図2
  • 特表-光回路設計における光経路追跡 図3
  • 特表-光回路設計における光経路追跡 図4
  • 特表-光回路設計における光経路追跡 図5
  • 特表-光回路設計における光経路追跡 図6A
  • 特表-光回路設計における光経路追跡 図6B
  • 特表-光回路設計における光経路追跡 図6C
  • 特表-光回路設計における光経路追跡 図7A
  • 特表-光回路設計における光経路追跡 図7B
  • 特表-光回路設計における光経路追跡 図7C
  • 特表-光回路設計における光経路追跡 図8
  • 特表-光回路設計における光経路追跡 図9
  • 特表-光回路設計における光経路追跡 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-08
(54)【発明の名称】光回路設計における光経路追跡
(51)【国際特許分類】
   G06F 30/398 20200101AFI20241001BHJP
【FI】
G06F30/398
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024515643
(86)(22)【出願日】2022-09-09
(85)【翻訳文提出日】2024-03-11
(86)【国際出願番号】 US2022043134
(87)【国際公開番号】W WO2023039211
(87)【国際公開日】2023-03-16
(31)【優先権主張番号】63/242,961
(32)【優先日】2021-09-10
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】597035274
【氏名又は名称】シノプシス, インコーポレイテッド
【氏名又は名称原語表記】SYN0PSYS, INC.
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100141553
【弁理士】
【氏名又は名称】鈴木 信彦
(72)【発明者】
【氏名】ストッフェル レムコ
(72)【発明者】
【氏名】デュビンク テウニス
【テーマコード(参考)】
5B146
【Fターム(参考)】
5B146AA09
5B146AA22
5B146GQ00
(57)【要約】
光集積回路(PIC)設計は、様々な経路を含む。設計プロセス中に、PIC設計の経路の特性が判定され、PIC設計を分析するために使用される。経路の特性を判定することは、複数のデバイスを含むPIC設計を受け取ることを含む。さらに、複数のデバイスのうちの第1のデバイスの第1のピンと、複数のデバイスのうちの第2のデバイスの第2のピンとの間の第1の経路が判定される。第1の経路の1つまたは複数の特性は、光信号の波長、第1のデバイスの特性、および第2のデバイスの特性に基づいて判定される。第1の経路および1つまたは複数の特性が出力される。
【特許請求の範囲】
【請求項1】
方法であって、
複数のデバイスを備える光集積回路(PIC)設計を受け取ることと、
前記複数のデバイスのうちの第1のデバイスの第1のピンと、前記複数のデバイスのうちの第2のデバイスの第2のピンとの間の第1の経路を判定することと、
光信号の波長、前記第1のデバイスの特性、および前記第2のデバイスの特性に基づいて、前記第1の経路の1つまたは複数の特性を判定することと、
プロセッサによって、前記第1の経路および前記1つまたは複数の特性を出力することとを備える、方法。
【請求項2】
前記第1のデバイスの前記第1のピンと、前記第2のデバイスの前記第2のピンとの間の前記第1の経路を判定することは、
前記第1のデバイスの前記第1のピンを、前記複数のデバイスのうちの第3のデバイスの入力ピンに接続するネットを検出することと、
前記第3のデバイスの特性に基づいて、前記第3のデバイスの前記入力ピンが、前記第3のデバイスの出力ピンに接続されていることを判定することとを備える、請求項1に記載の方法。
【請求項3】
前記PIC設計が1つまたは複数の階層のレベルを備えていることを判定することと、
前記第1のデバイスの前記第1のピンから、前記第2のデバイスの前記第2のピンへの、前記1つまたは複数の階層のレベルの各々を通過する経路を判定することとをさらに備える、請求項1に記載の方法。
【請求項4】
前記第1のデバイスの前記第1のピンと、前記第2のデバイスの前記第2のピンとの間の前記第1の経路を判定することは、
複数の候補ピンの各候補ピンを分析して、対応するネットを介して、前記第1のデバイスの前記第1のピンに接続された1つまたは複数の候補ピンを判定することと、
分析された各候補ピンを、訪問済としてマークすることとを備える、請求項1に記載の方法。
【請求項5】
前記複数のデバイスのうち、前記第1のデバイスの前記第1のピンと、前記第2のデバイスの前記第2のピンとの間の、第2の経路を判定することと、
前記第2の経路の第2の1つまたは複数の特性を判定することと、
前記第2の経路および前記第2の1つまたは複数の特性を出力することとをさらに備える、請求項1に記載の方法。
【請求項6】
前記第1の経路および前記第2の経路は、デバイスの数、デバイスのセット、およびデバイスの順序のうちの少なくとも1つまたは複数において異なる、請求項5に記載の方法。
【請求項7】
前記1つまたは複数の特性は、前記第1の経路の幾何学長、前記第1の経路の光学長、前記第1の経路の光学的遅延、および前記第1の経路に関連付けられた光学的損失のうちの1つまたは複数を含む、請求項1に記載の方法。
【請求項8】
前記第1の経路に沿った1つまたは複数のすべてのデバイスを判定することをさらに備え、前記第1の経路の前記1つまたは複数の特性はさらに、前記1つまたは複数のデバイスに基づく、請求項1に記載の方法。
【請求項9】
前記第1の経路および前記1つまたは複数の特性を出力することは、前記第1の経路および前記1つまたは複数の特性をメモリに格納することを備える、請求項1に記載の方法。
【請求項10】
システムであって、
命令を格納するメモリと、
前記メモリに結合され、前記命令を実行するプロセッサとを備え、前記命令は、実行された場合、前記プロセッサに対して、
複数のデバイスを備える光集積回路(PIC)設計を受け取ることと、
前記複数のデバイスのうちの第1のデバイスの第1のピンと、前記複数のデバイスのうちの第2のデバイスの第2のピンとの間の第1の経路を判定することと、
光信号の波長、前記第1のデバイスの特性、および前記第2のデバイスの特性に基づいて、前記第1の経路の1つまたは複数の特性を判定することと、
前記第1の経路および前記1つまたは複数の特性を出力することとを実行させる、システム。
【請求項11】
前記第1のデバイスの前記第1のピンと、前記第2のデバイスの前記第2のピンとの間の前記第1の経路を判定することは、
前記第1のデバイスの前記第1のピンを、前記複数のデバイスのうちの第3のデバイスの入力ピンに接続するネットを検出することと、
前記第3のデバイスの特性に基づいて、前記第3のデバイスの前記入力ピンが、前記第3のデバイスの出力ピンに接続されていることを判定することとを備える、請求項10に記載のシステム。
【請求項12】
前記プロセッサはさらに、
前記PIC設計が1つまたは複数の階層のレベルを備えていることを判定し、
前記第1のデバイスの前記第1のピンから、前記第2のデバイスの前記第2のピンへの、前記1つまたは複数の階層のレベルの各々を通過する経路を判定するように構成された、請求項10に記載のシステム。
【請求項13】
前記第1のデバイスの前記第1のピンと、前記第2のデバイスの前記第2のピンとの間の前記第1の経路を判定することは、
複数の候補ピンの各候補ピンを分析して、対応するネットを介して、前記第1のデバイスの前記第1のピンに接続された1つまたは複数の候補ピンを判定することと、
分析された各候補ピンを、訪問済としてマークすることとを備える、請求項10に記載のシステム。
【請求項14】
前記プロセッサはさらに、
前記複数のデバイスのうち、前記第1のデバイスの前記第1のピンと、前記第2のデバイスの前記第2のピンとの間の、第2の経路を判定し、
前記第2の経路の第2の1つまたは複数の特性を判定し、
前記第2の経路および前記第2の1つまたは複数の特性を出力するように構成され、
前記第1の経路および前記第2の経路は、デバイスの数、デバイスのセット、またはデバイスの順序のうちの少なくとも1つまたは複数において異なる、請求項10に記載のシステム。
【請求項15】
前記1つまたは複数の特性は、前記第1の経路の幾何学長、前記第1の経路の光学長、前記第1の経路の光学的遅延、または前記第1の経路に関連付けられた光学的損失のうちの1つまたは複数を含む、請求項10に記載のシステム。
【請求項16】
前記プロセッサはさらに、前記第1の経路に沿った前記複数のデバイスのうちの1つまたは複数のデバイスを判定するように構成され、前記第1の経路の前記1つまたは複数の特性はさらに、前記1つまたは複数のデバイスに基づく、請求項10に記載のシステム。
【請求項17】
前記第1の経路および前記1つまたは複数の特性を出力することは、前記第1の経路および前記1つまたは複数の特性をメモリに格納することを備える、請求項10に記載のシステム。
【請求項18】
ユーザインターフェース内に光集積回路(PIC)設計の特性を表示するためのコンピュータ実施方法であって、前記コンピュータ実施方法は、
複数のデバイスを備える前記PIC設計を受け取ることであって、前記複数のデバイスは、第1のデバイス、第2のデバイス、および第3のデバイスを備え、前記第3のデバイスは、2つ以上の階層のレベルを備える階層デバイスである、受け取ることと、
前記第1のデバイスの第1のピンと、前記第2のデバイスの第2のピンとの間の第1の経路を判定することであって、前記第1の経路は、前記第3のデバイスの前記2つ以上の階層のレベルを横断する、判定することと、
光信号の波長、前記第1のデバイス、および前記第2のデバイスに基づいて、前記第1の経路の1つまたは複数の特性を判定することと、
プロセッサによって、ユーザインターフェース内の1つまたは複数の特性を、表示デバイス上に表示することとを備える、コンピュータ実施方法。
【請求項19】
前記第3のデバイスの前記2つ以上の階層のレベルの各々を通る経路を判定することをさらに備える、請求項18に記載の方法。
【請求項20】
前記第1のデバイスの前記第1のピンと、前記第2のデバイスの前記第2のピンとの間の前記第1の経路を判定することは、
前記第1のデバイスの前記第1のピンを、前記第3のデバイスの入力ピンに接続するネットを検出することと、
前記第3のデバイスの特性に基づいて、前記第3のデバイスの前記入力ピンが、前記第3のデバイスの出力ピンに接続されていることを判定することとを備える、請求項18に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、光学デバイス設計システム(optical device design system)に関し、より詳細には、光学デバイス設計内の光経路および光経路の特性を判定するためのシステムおよび方法に関する。
【背景技術】
【0002】
光集積回路(PIC)では、情報を通信するために光信号が使用される。PICは、光通信システム内で通信信号の逆多重化、光検出および測距(LiDAR)光信号の処理、またはマイクロ波信号の処理のために使用される。PICは、信号処理中の光損失(すなわち、信号損失)を低減し、デバイス間の情報の通信を改善するように設計される。たとえば、PICは、異なるチャネル(導波路)の信号間のタイミング差(timing difference)を制限したり、または、受信信号または送信信号内のエラーが緩和されるように、信号を、所定の量だけ遅延させるように設計され得る。さらに、PICは、通信中に光信号の位相を制御するように設計される。
【発明の概要】
【0003】
1つの例では、方法は、複数のデバイスを含む光集積回路(PIC)設計を受け取ることを含む。さらに、この方法は、複数のデバイスのうちの第1のデバイスの第1のピンと、複数のデバイスのうちの第2のデバイスの第2のピンとの間の第1の経路を判定することを含む。この方法はさらに、光信号の波長、第1のデバイスの特性、および第2のデバイスの特性に基づいて、第1の経路の1つまたは複数の特性を判定することと、プロセッサによって、第1の経路および1つまたは複数の特性を出力することとを含む。
【0004】
1つの例では、システムは、命令を格納するメモリと、プロセッサとを含む。プロセッサは、メモリに結合されており、複数のデバイスを含む光集積回路(PIC)設計をプロセッサに受け取らせる命令を実行する。プロセッサはさらに、複数のデバイスの第1のデバイスの第1のピンと、複数のデバイスの第2のデバイスの第2のピンとの間の第1の経路を判定する。さらに、プロセッサは、光信号の波長、第1のデバイスの特性、および第2のデバイスの特性に基づいて、第1の経路の1つまたは複数の特性を判定し、第1の経路および1つまたは複数の経路を出力する。
【0005】
1つの例では、ユーザインターフェース内で光集積回路(PIC)設計の特性を表示するためのコンピュータ実施方法は、複数のデバイスを含むPIC設計を受け取ることを含む。複数のデバイスは、第1のデバイス、第2のデバイス、および第3のデバイスを含む。第3のデバイスは、2つ以上の階層のレベルを含む階層デバイスである。方法はさらに、第1のデバイスの第1のピンと、第2のデバイスの第2のピンとの間の第1の経路を判定することを含む。第1の経路は、第3のデバイスの、2つ以上の階層のレベルを横断する。さらに、この方法は、光信号の波長、第1のデバイス、および第2のデバイスに基づいて、第1の経路の1つまたは複数の特性を判定することと、ユーザインターフェース内の1つまたは複数の特性を、表示デバイス上に表示することとを含む。
【0006】
本開示は、以下に与えられた詳細な記述および本開示の実施形態の添付の図面からより完全に理解されるであろう。これら図面は、本開示の実施形態の知識および理解を提供するために使用されており、本開示の範囲をこれら特定の実施形態に限定しない。さらに、図面は、必ずしも一定の縮尺で描写されている訳ではない。
【図面の簡単な説明】
【0007】
図1】1つまたは複数の例による、光集積回路(PIC)設計システムのブロック図である。
図2】1つまたは複数の例による、PIC設計の概略のブロック図である。
図3】1つまたは複数の例による、PIC設計の概略のブロック図である。
図4】1つまたは複数の例による、PIC設計のデバイスの階層のレベルの概略のブロック図である。
図5】1つまたは複数の例による、PIC設計の経路を判定するためのフローチャートである。
図6A】1つまたは複数の例による、PIC設計の経路を判定するための方法の別のフローチャートである。
図6B】1つまたは複数の例による、PIC設計の経路を判定するための方法の別のフローチャートである。
図6C】1つまたは複数の例による、PIC設計の経路を判定するための方法の別のフローチャートである。
図7A】1つまたは複数の例による、PIC設計の経路を判定するための例示的な擬似コードである。
図7B】1つまたは複数の例による、PIC設計の経路を判定するための例示的な擬似コードである。
図7C】1つまたは複数の例による、PIC設計の経路を判定するための例示的な擬似コードである。
図8】1つまたは複数の例による、例示的なユーザインターフェースである。
図9】本開示のいくつかの実施形態による、集積回路の設計および製造中に使用される様々なプロセスのフローチャートである。
図10】本開示の実施形態が動作し得る、例示的なコンピュータシステムの図である。
【発明を実施するための形態】
【0008】
本開示の態様は、光回路設計における光経路追跡(optical path tracing)に関する。光集積回路(PIC)は、光信号(たとえば、光信号)を介して情報を送信するデバイスにおいて使用される。PICを設計する場合、信号間の不適切なタイミング(たとえば、信号の到着時間が異なるおよび/または信号の不適切な遅延など)によって大量の情報が失われると、送信および/または受信された光信号内でのエラーに至り得る。さらに、光信号の位相内のどんなエラーもが、送信および/または受信された光信号内のエラーに至る可能性がある。
【0009】
PIC設計は、光経路を介して相互に接続された光デバイスを含む。PIC設計の入力から出力への経路は、1つまたは複数のデバイスと、デバイスを相互に接続する1つまたは複数の経路とを通過する。PIC設計の1つまたは複数のデバイスは、1つまたは複数の階層のレベル、階層デバイスを含み得る。階層デバイスを含むPIC設計では、PIC設計の1つまたは複数の経路が、多くの階層のレベルを通過し得る。
【0010】
PIC設計プロセス中、光がPIC設計を通過する経路およびその経路に沿ったデバイスが、PIC設計の機能を判定するために使用される。階層デバイスを含むPIC設計では、各階層デバイスにおける階層の各レベルが調査され、PIC設計を通過する経路と、その経路に沿った各デバイスとが判定される。しかしながら、異なるデバイスにおける階層のレベルが多いため、設計者が、PICデバイス内の経路と、その経路に沿ったすべてのデバイスとを、マニュアルで特定することが困難になり、設計プロセス中に設計エラーが発生し得る可能性が高くなる。さらに、光学特性(たとえば、光学長、遅延、および損失)は、PIC設計のデバイスのパラメータと、光信号の波長とに依存する。したがって、光信号が通過するPIC内のすべてのデバイスを特定することは非常に困難であるので、光学特性を取得するプロセスは、煩雑でエラーが発生しやすくなる。本開示は、経路、対応するデバイス、PIC設計内を通過する光信号、および経路の光学特性を特定する設計システムおよび設計方法について説明する。以下でより詳細に説明するように、PIC設計システムは、PIC設計を用いて2つの光学ネット間の経路を取得し、経路を強調し、対応するデバイスを特定し、経路の1つまたは複数の特性(たとえば、幾何学的または光学的な経路長、光学的遅延、または光学的損失)を判定する。1つまたは複数の例では、そのようなプロセスを実行することは、特定された経路が、正しくユニークであるか否かを判定することを含む。さらに、特定された経路の特性を分析して、特定された特性が、対応する設計のパラメータ内にあるか否かを判定し得る。それに加えて、経路追跡と、複数の経路の光学特性の判定とが組み合わされ得る。本開示の技術的利点は、対応する設計のパラメータを満たすように経路が調整され得る速度を低減することや、他のデバイスの設計のために、および/または、他のプロセスのために使用されるコンピュータリソースを解放することを含むが、これらに限定されない。
【0011】
図1は、1つまたは複数の例による、PIC設計システム100のブロック図である。PIC設計システム100は、以下にさらに詳しく説明されるように、PIC設計図(たとえば、PIC設計ファイル)を受け取り、光がPIC設計図のデバイスを通過する経路を判定し、その経路を出力する。PIC設計システム100は、PIC設計図を受け取り、PIC設計図内で光が移動する経路を判定し、その経路を出力するための、メモリ(たとえば、メモリ120、図10のメインメモリ1004、および/または、図10の機械可読媒体1024)に格納された命令(たとえば、図10の命令1026)を実行する、1つまたは複数のプロセッサ(たとえば、図10の処理デバイス1002)を含む。1つの例では、PIC設計図は、メモリ(たとえば、メモリ120)または別のシステムから受け取られる。さらに、PIC設計システム100は、判定された経路を、メモリ(たとえば、メモリ120)内に保存し、および/または、判定された経路を、別のシステムに出力する。PIC設計システム100はさらに、判定された経路、経路に沿っていると判定されたデバイス、および光の波長に基づいて、PIC設計の1つまたは複数の特性を特定する。
【0012】
PIC設計システム100は、経路追跡エンジン110、メモリ120、およびユーザインターフェース130を含む。経路追跡エンジン110は、PIC設計図を受け取るための、メモリ(たとえば、メモリ120、図10のメインメモリ1004、および/または、図10の機械可読媒体1024)に格納された命令(たとえば、図10の命令1026)を実行し、光が移動するPIC設計図内の経路を特定するためにPIC設計図を分析する、1つまたは複数のプロセッサ(たとえば、図10の処理デバイス1002)を含む。さらに、経路追跡エンジン110は、PIC設計図のネット間のユニークな経路に対するデバイスおよび対応する入出力ピンのリストを判定し、出力する。以下でより詳細に説明されるように、1つまたは複数の例では、各経路をクエリして、幾何学長、光学長、光学的遅延、および/または光学的損失を判定する。経路は、メモリ(たとえば、メモリ120)内に格納され得る。1つまたは複数の例では、経路は、ユーザインターフェース130の概略エディタ内で強調されるか、または他の何らかの手法で特定され、表示デバイス(たとえば、図10のビデオ表示ユニット1010)上に表示される。1つの例では、ユーザは、入力デバイス(たとえば、図10の英数字入力デバイス1012および/または図10のカーソル制御デバイス1014)を介して、ユーザインターフェース130内のソースネットおよび宛先ネットを選択し得る。ソースネットおよび宛先ネットの選択に基づいて、光経路の詳細および対応する光学特性が、ユーザインターフェース130を介して表示デバイス(たとえば、図10のビデオ表示ユニット1010)上に出力される。
【0013】
メモリ120は、図10のメインメモリ1004、および/または、図10の機械可読媒体1024と同様に構成される。メモリ120は、プロセス設計キット(PDK)122と、そこに格納された設計データベース124とを含む。PDK122および設計データベース124は、経路追跡エンジン110によってアクセス可能である。1つまたは複数の例では、PIC設計126は、メモリ120内に格納される。
【0014】
PDK122は、PICまたは他の電子デバイス内で使用され得る各デバイスのデバイス特性を格納する。1つの例では、デバイスは、光デバイスを含み得る。たとえば、光デバイスは、とりわけ、導波路(waveguide)、フィルタ、スプリッタ、およびミキサを含む。PDK122のデバイス特性は、デバイス内で相互に接続されるピンであるデバイスの入力ピンおよびデバイスの出力ピンと、とりわけ、デバイスのピン間の経路長などを定義する。1つまたは複数の例において、PDK122は、光信号がデバイスの特定のピンによって受け取られたときに、PIC設計図のデバイス(たとえば、コンポーネント)のどの特定のピンが、光信号を送信するかに対応する情報を含むファイルである。1つの例では、デバイスは、複数の入力ピンおよび複数の出力ピンを含む。
【0015】
PDK122は、複数の入力ピンのうちの特定のピンによって光信号が受信されたときに、どの出力ピンが光信号を出力するのかを判定するために使用できる。様々な例において、特定の入力ピンが光信号を受け取ったときに、どの出力ピンが光信号を出力するのかに関する情報は、光信号が、対応するPIC設計図を通過する経路を判定するために、経路追跡エンジン110によって利用され得る。
【0016】
さらに、1つまたは複数の例では、PDK122は、PIC設計図(たとえば、PIC設計126)の幾何学長および/または光学長または各デバイスを説明するモデルを含む。以下により詳細に説明されるように、経路追跡エンジン110は、PDK122を使用して、PIC設計図(たとえば、PIC設計126)内の光経路の特性を判定する。特性は、光信号の波長の関数であり得る。1つまたは複数の例では、PDK122のモデルは、光信号が、デバイスのあるピンから、デバイスの別のピンに移動するときの光信号の時間遅延および光信号の電力損失を説明する。幾何学長は、経路に沿った物理的長さに関連する。光学長は、経路に沿って積分された実効屈折率である。さらに、光学長は、式「位相=2*π/波長*光学長」に基づいて光信号の位相を説明する。
【0017】
以下により詳細に説明されるように、経路追跡エンジン110は、PDK122を使用して、光信号が移動するPIC設計内の経路およびその経路の特性を特定する。
【0018】
設計データベース124は、PICデバイス内の各デバイスの機能情報を提供する。たとえば、PIC設計の場合、設計データベース124は、とりわけ、たとえば導波管、フィルタ、スプリッタ、およびミキサなどの光デバイスに関するデバイスの機能を含む。他の例では、設計データベース124は、他のタイプのIC回路設計のデバイスに関連する機能情報を含む。たとえば、設計データベース124は、とりわけ、乗算器、加算器、バッファ、インバータ、マルチプレクサ、ラッチ、フリップフロップ、およびゲート論理に関連する機能情報を含み得る。
【0019】
ユーザインターフェース130は、経路追跡エンジン110によって判定されたPIC設計の1つまたは複数の特性を表示する。1つまたは複数の例では、ユーザインターフェース130は、図10のグラフィック処理ユニット1022と同様に構成される。たとえば、ユーザインターフェース130は、特定された経路の数と、PIC設計の対応する特性(たとえば、とりわけ、幾何学長、光学長、および/または遅延)を例示する。1つの例では、ユーザインターフェース130は、ユーザが、PIC設計の開始デバイスおよび宛先デバイスを特定できるようにする。ユーザインターフェース130は、表示デバイス(たとえば、図10のビデオ表示ユニット1010)上に表示され、1つまたは複数の入力デバイス(たとえば、図10の英数字入力デバイス1012および/または図10のカーソル制御デバイス1014)から入力を受け取る。1つまたは複数の例では、PIC設計は、バス(たとえば、バスネットまたはネットバンドル)を含む。そのような例では、バスは、複数の信号経路を含む。ユーザは、ユーザインターフェース130を介して、経路追跡エンジン110によって分析されるビットまたは信号を選択し得る。
【0020】
図2は、1つまたは複数の例による、PIC設計200の概略図を例示する。PIC設計200は、光デバイスを含む。1つの例では、PIC設計200は、1つまたは複数の電子要素(たとえば、デバイスまたはコンポーネント)をも含み得る。さらに、図2は、PIC設計200の概略図であり、他の例では、概略図は、他のタイプの電子IC用であり得る。PIC設計200は、経路を介して相互接続されたデバイスを含む。たとえば、PIC設計200は、光デバイス、またはデバイス210~220、およびネットを形成する経路230~236を含む。ネットは、デバイス210~220のうちの2つ以上を接続し、光デバイスを接続するワイヤによって表される。デバイス210~220の各々は、インスタンスと称され得る。PICデバイスは、同じデバイスタイプの複数のインスタンスを含み得る。デバイスの各々(たとえば、インスタンス)は、1つまたは複数の入力ピン(たとえば、入力端子)、および1つまたは複数の出力ピン(たとえば、出力端子)を含む。デバイス210~220の入力ピンの数は、出力ピンの数よりも多い場合も、少ない場合も、または等しい場合もある。PIC設計200の入力ピンおよび出力ピンは、光ピンである。1つまたは複数の例では、1つまたは複数の入力ピンおよび出力ピンは電気ピンである。デバイス210~220の各々は、PIC設計200のサブセルと称され得る。
【0021】
PIC設計200は、ネット230~236を含む。ネット230~236は、デバイス210~220間の相互接続である。PIC設計200では、デバイス210~218は、ネット230~236によって接続された入力ピンおよび出力ピンを有する。ネット230~236は、デバイスのどのピンが相互に物理的に接続されているのかを特定する。
【0022】
PIC設計200では、デバイス210,212は、ネット230を介して接続され、デバイス212,214は、ネット231を介して接続され、デバイス214,218は、ネット233を介して接続され、デバイス212,218は、ネット232を介して接続され、デバイス218,216は、ネット234を介して接続され、デバイス216,212は、ネット235を介して接続され、デバイス218,220は、ネット236を介して接続される。
【0023】
1つまたは複数の例では、デバイス210~220のうちの1つまたは複数は、設計データベース124内の単一の非階層セル(たとえば、リーフセル)である。それに加えて、またはその代わりに、デバイス210~218のうちの1つまたは複数は、階層デバイスである。階層デバイスは1つまたは複数の階層のレベルを含む。階層の各レベルは、対応するデバイスおよび経路を含む。
【0024】
1つまたは複数の例では、デバイス210~220の機能に応じて、デバイスの1つのピンによって受け取られた光信号は、1つまたは複数の他のピンを通過してデバイスによって出力され得るか、またはデバイス内で完全に吸収され得る。1つの例では、デバイス210~220の機能は、設計データベース124によって定義される。
【0025】
1つの例では、各デバイス210~220の内部で、デバイス210~220の入力および出力(受取および送信)ピンとの間の経路の物理的実装は、デバイス210~220の幾何学特性および光学特性に関連付けられる。1つまたは複数の例では、幾何学特性および光学特性は、各デバイスにユニークである。
【0026】
1つの例では、光信号は、デバイス(たとえば、デバイス210~220)の複数の出力ピンを通過してデバイスから出ることができる。したがって、光信号が、あるデバイスから別のデバイスまで辿る経路は、必ずしもユニークである必要はない。ユニークな経路は、とりわけ、入力ピン、出力ピン、異なるデバイス、デバイスの順序などのうち、少なくとも1つが、他の経路とは異なる経路である。たとえば、第1のデバイスと第2のデバイスとの間の第1の経路および第2の経路は、第1の経路および第2の経路が、デバイスの異なる入力ピン、デバイスの出力ピン、異なる中間デバイス、および/または、第1のデバイスと第2のデバイスとの間でデバイスの異なる順序を含むのであれば、ユニークであると判定され得る。図2に例示されるように、ネットおよびデバイス(210,230,212,231,214,233,218,236,220)および(210,230,212,235,216,234,218,236,220)を通過する経路の各々は、左から右へのユニークな経路である。経路が、別の経路と同一である場合、その経路は非ユニークな経路であると判定される。1つまたは複数の例では、第1のデバイスと第2のデバイスとの間の同一の経路は、同じ入力ピンおよび出力ピンを有し、同じ順序の中間デバイスを含む。1つの例では、経路は、分岐し(たとえば、複数の経路に分割され)、単一デバイスの入力ピンを通過して再結合し得る。そのような経路は、各経路が、異なるデバイス、入力ピン、および/または、出力ピンを含む場合、ユニークであると判定され得る。さらに、経路は、フィードバックループを含む場合があり、ここでは、光信号が、そのループ内を周期的に移動し得る。以下では、第1のループのみが、ユニークな経路としてカウントされる。
【0027】
1つまたは複数の例では、PIC設計の概略図は、1つまたは複数の階層コンポーネントを含む。そのような例では、概略図内の1つまたは複数のコンポーネント(たとえば、1つまたは複数のシンボル)は、階層設計を含む。したがって、第1のデバイスから第2のデバイスへの経路を判定するために、階層のレベルの各々が追跡され、すべての可能な経路が発見される。
【0028】
図3は、階層設計を有するPIC設計300の概略図を例示する。PIC設計300は、デバイス310,312,314,318,320,322および324を含む。デバイス310,312,314,316,318,320,322および324のうちの1つまたは複数は、階層デバイスである。階層デバイスは1つまたは複数の階層のレベルを含む。1つの例では、デバイス314は、図2のPIC設計200によって例示されるような設計を有する階層デバイスである。したがって、デバイス310とデバイス320との間の経路の各デバイス、および、対応する接続されたピンを判定するために、デバイス314の階層の各レベルが拡張され、分析される。経路は、階層のレベルごとに判定される。1つの例では、階層の各レベルが拡張され、階層の次のレベルの経路が判定される前に、階層の最下位レベルを通過する経路が最初に判定される。階層の各レベルのデバイスの経路およびデバイスのリストが出力される(たとえば、メモリ120に格納されるか、またはユーザインターフェース130内に表示される)。
【0029】
図3に例示されるように、デバイス310とデバイス324との間の第1の経路は、ネット330を介してデバイス312に接続されたデバイス310と、ネット332を介してデバイス314に接続されたデバイス312と、ネット334を介してデバイス316に接続されたデバイス314と、ネット336を介してデバイス324に接続されたデバイス316とを含む。図3に例示されるように、デバイス310とデバイス324との間の第2の経路は、ネット340を介してデバイス318に接続されたデバイス310と、ネット342を介してデバイス320に接続されたデバイス318と、ネット344を介してデバイス322に接続されたデバイス320と、ネット346を介してデバイス324に接続されデバイス322とを含む。
【0030】
デバイス310とデバイス324との間の第1の経路および第2の経路は、デバイス310とデバイス324との間のデバイスの数と、デバイス310とデバイス324との間のデバイスのセットと、および/または、デバイス310とデバイス320との間のデバイスの順序とのうちの少なくとも1つにおいて異なる。たとえば、デバイス310と第2のデバイス324との間の第1の経路は、デバイス312を含み、デバイス310と第2のデバイス324との間の第2の経路は、デバイス312とは異なるデバイス318を含む。しかしながら、デバイス314およびデバイス320に存在する階層により、デバイス310とデバイス324との間に、さらにユニークな経路が存在する。
【0031】
図4は、デバイス314およびデバイス320の拡張された階層の概略図400を例示する。概略図400では、デバイス314およびデバイス320の拡張された階層は、デバイス410,412,414,416,418および420を含む。入力402から出力404までの経路は、図1のPDK122内のデバイス特性に基づいて、図1の経路追跡エンジン110によって判定される。図4の例では、入力402から出力404への経路は、2つであると判定され、1つの経路は、デバイス410をデバイス412に接続するネット430と、デバイス412をデバイス416に接続するネット432と、デバイス416をデバイス418に接続するネット434と、デバイス418およびデバイス420を接続するネット436とを含み、他の経路は、デバイス410をデバイス412に接続するネット430と、デバイス412をデバイス414に接続するネット438と、デバイス414をデバイス418に接続するネット440と、デバイス418およびデバイス420を接続するネット436とを含む。デバイス400の階層を通過する経路は、PDK122に基づいて判定される。
【0032】
1つまたは複数の例では、デバイス314およびデバイス320の各々を通過する経路が2つあるため、デバイス310からデバイス324までのユニークな経路の総数は4つである。
【0033】
1つの例では、デバイス410とデバイス420との間の経路は、上記で説明したもの以外のデバイスおよびネットを含み得る。たとえば、デバイス410とデバイス420との間の経路は、デバイス412,416,418,414および418と、ネット430,432,434,436,438,440および442とを含み得る。そのような例では、経路は、ネット438,440および436と、対応するデバイスとに沿って進む前に、ネット430,432,434および442と、対応するデバイスとに沿って移動する。
【0034】
図5は、1つまたは複数の例による、PIC設計の経路、経路に沿ったデバイス、および経路の特性を判定するためのフローチャートを例示する。方法500は、PIC設計システム100によって実行され得る。たとえば、PIC設計システム100の1つまたは複数のプロセッサは、メモリに格納された命令を実行して方法500を実行する。1つの例では、方法500は、図9のレイアウトまたは物理的実装924の一部として実行される。
【0035】
方法500の510において、PIC設計が受け取られる。1つの例では、図1のPIC設計126は、図1の経路追跡エンジン110によって受け取られる。PIC設計126は、図2のPIC設計200、または図3のPIC設計300同様に構成され得る。他の例では、経路追跡エンジン110は、PIC設計システム100の外部のシステムから、またはPIC設計システム100内の別のエンジンから、PIC設計を受け取る。
【0036】
520において、第1のデバイスのピンと第2のデバイスのピンとの間の経路が判定される。1つの例では、図1および図3を参照して示すように、経路追跡エンジン110は、デバイス310のピンと、デバイス312のピンとの間の経路を判定する。デバイス310のピンとデバイス312との間の経路を判定することは、デバイス310からデバイス324までの経路(たとえば、経路330)を判定するプロセスの一部である。デバイス310は、ソースデバイスと称され得、デバイス324は、宛先デバイスと称され得る。1つの例では、デバイス310およびデバイス324は、ユーザインターフェース130を介して、ソースデバイスおよび宛先デバイスとして示される。経路追跡エンジン110は、メモリ120からソースデバイスおよび宛先デバイスとしてデバイス310およびデバイス324を取得する。
【0037】
経路追跡エンジン110は、図1のPDK122内の特性に基づいて、ネット330が、デバイス310の出力ピンを、デバイス312の入力ピンに接続することと、デバイス310およびデバイス312の各々の入力ピンと出力ピンとの間の接続とを判定する。1つの例では、経路追跡エンジン110は、デバイス310およびデバイス312の各々内の光の経路に関する詳細を取得して、ネット330に関連付けられた入力ピンおよび出力ピンを判定する。PDK122内のデバイスの各々の特性は、デバイス310およびデバイス312の各々の接続された入力ピンおよび出力ピンを判定するために、経路追跡エンジン110によって使用される。PDK122の特性は、デバイス310およびデバイス312の各々内の入力ピンと出力ピンとの間の接続を特定する。PDK122内の特性は、デバイスのどの入力ピンが、デバイスのどの出力ピンに接続されているかを判定するために、経路追跡エンジン110によって使用される。1つの例では、デバイス310の出力ピンは、ネット330を介してデバイス312の入力ピンに接続される。そのような例では、経路追跡エンジン110は、PDK122内の特性に基づいて、デバイス310のどの入力ピンが、デバイス310の出力ピンに接続されているのかを判定する。さらに、経路追跡エンジン110は、PDK122内の特性に基づいて、デバイス312のどの出力ピンが、経路追跡エンジン110の入力に接続されているのかを判定する。同様に、経路追跡エンジン110は、デバイス312,314,316および324の各々について、PDK122内の特性に基づいて、ネット332,334および336に関連付けられたデバイスの入力ピンおよび出力ピンを判定する。ネット330,332,334および336は、デバイス310からデバイス324までの第1の経路を形成する。第1の経路はさらに、デバイス310,312,314,316および324の階層のレベル内の経路を含む。たとえば、デバイス310とデバイス324との間の経路は、図4のデバイス410をデバイス420に接続する経路を含む。
【0038】
1つまたは複数の例では、経路追跡エンジン110は、デバイス310が、ネット340を介してデバイス318に接続され、デバイス318が、ネット342を介してデバイス320に接続され、デバイス320が、ネット344を介してデバイス322に接続され、デバイス322が、ネット346を介してデバイス324に接続されていると判定する。ネット340,342,344および346は、デバイス310とデバイス324との間に第2の経路を形成する。デバイス310は、図3では、2つの経路を介してデバイス324に接続されているように例示されているが、他の例では、デバイス310は、3つ以上の経路によってデバイス324に接続される。1つまたは複数の例では、任意の2つの隣接するデバイス間に複数の経路が存在し、ソースデバイスと宛先デバイスとの間に複数のデバイスを形成する。
【0039】
1つの例では、PDK122のデバイス特性は、デバイス310の入力ピンが、デバイス310の1つまたは複数の出力ピンに接続されていることを示す。PDK122内のデバイス310のデバイス特性に基づいて、経路追跡エンジン110は、デバイス310の入力ピンが、デバイス310の第1の出力ピンに接続されていると判定する。したがって、デバイス310の入力ピンで受け取られた光信号は、デバイス310の出力ピンからネット330に沿って出力される。1つの例では、PDK122内に格納されたデバイス特性に基づいて、経路追跡エンジン110は、各デバイスのどのピンが、任意の入力ピンから到達可能な出力ピンであるかを判定し、対応するPIC設計内のデバイス間の可能な経路を判定する。経路追跡エンジン110は、PDK122および設計データベース124にアクセスして、各デバイスを分析し、デバイス内およびデバイス間の経路を判定する。
【0040】
1つまたは複数の例では、経路追跡エンジン110は、再帰的手順を実行して、PIC設計(たとえば、図3のPIC設計300)のデバイス間の経路を判定する。たとえば、デバイス310からの経路を判定する場合、経路追跡エンジン110は、デバイス310のピン(たとえば、第1のピン)に接続できる各デバイス(たとえば,310~324)の各候補ピンを判定することを実行する(521)。1つの例では、図3のデバイス310の第1のピンについて、経路追跡エンジン110は、PDK122に問い合わせて、そのピンからどのピンに到達できるかを判定する。たとえば、経路追跡エンジン110は、デバイス310~324のどのピンを第1のピンに接続できるかを判定する。
【0041】
522において、経路追跡エンジン110は、デバイス310のピン(たとえば、第1のピン)に接続できる各ピンを分析して、各ピンがデバイス310のピンに接続されているか否かを判定し、分析された各ピンを訪問済として示す(たとえば、マークを付ける)。ピンの分析は、ネットが、ピンを、デバイス310のピンに接続しているか否かを判定することを含む。訪問済ピン(visited pin)は、経路追跡エンジン110によって特定されたピンである。さらに、訪問済ピンが2度目に特定されると、経路追跡エンジン110は、その特定の経路の追跡を停止する。したがって、ループ、または経路の一部は、複数回レポートされない場合がある。
【0042】
経路追跡エンジン110は、デバイス310に接続されている各デバイスの分析された各ピンを、1つずつ、「訪問済」としてマークし、デバイス310のピンに接続されている次のデバイス(たとえば、図3のデバイス312)のピンを特定する。デバイス310は、検査中デバイスと称され得る。デバイス310が検査中である例では、デバイスのピンを接続する経路が存在すると判定された場合、デバイス312のピンは、デバイス310のピンに接続されているとして特定される。経路追跡エンジン110は、デバイス310のピンと、デバイス312のピンとを分析して、これらピンが接続されているか否かを判定する。デバイス310およびデバイス312のピンは、デバイス310およびデバイス210が、設計データベース124に基づいて同じネット上にあると判定された場合に、接続されていると判定される。
【0043】
1つの例では、第1のデバイスのピンと第2のデバイスのピンとの間の経路を判定することは、523において、階層デバイスであるデバイスを判定することを含む。1つまたは複数の例では、経路追跡エンジン110は、図1の設計データベース124を使用する深さ優先の探索形式(depth-first search)によって経路追跡を実行する。図1の設計データベース124は、PIC設計(たとえば、PIC設計300)の各デバイスの階層特性を説明する。経路追跡エンジン110は、設計データベース124の階層特性を使用して、設計データベース124に基づいてデバイス310~324のうちのどれが階層デバイスであるか、および、階層の各レベルでそれらデバイスを通過する経路を判定する。1つの例では、階層デバイスであると判定された各デバイスについて、デバイス内の階層の各レベルが拡張されて、対応する経路と、経路に沿ったデバイスとが判定される。
【0044】
524において、各階層デバイスの階層の各レベルを通過する経路が判定される。たとえば、デバイス(たとえば、デバイス314)が、階層を有する分析対象のピンに接続されているという判定に基づいて、階層が開かれ、階層の各レベルおよび対応するデバイスが分析され、階層デバイスの階層の各レベルを通過する経路が判定される。その後、そのデバイスの出力から、経路追跡手順が継続する。1つの例では、経路追跡エンジン110は、階層情報を含むPIC設計を有するデバイスの各々を分析して、どのデバイスが追加の階層の層(たとえば、レベル)を含むのかを判定する。1つの例では、現在のピンが、階層のレベルの外部ピンに接続されると経路追跡エンジン110によって判定された場合、経路追跡プロセスは、(このピンが設計の階層の基本レベルにある場合)終了するか、または、次の(たとえば、より上位の)階層のレベルにおける対応するネット上で続行する。
【0045】
1つの例では、デバイスの階層のレベル内でデバイスの次の出力ピンを分析する場合、訪問済ピンのセットは、階層デバイスまたは階層デバイス内の階層の別の層に入るときの状態にリセットされる。さらに、宛先ネットに到達可能な各ピンは、すべての可能な経路のセットを返す。すべての出力ピンからのすべての経路が、セットに収集されて返される。
【0046】
525において、経路に沿ったデバイスが判定され、リスト(結果リスト)に追加される。結果リストは、メモリ、たとえば図1のメモリ120に格納される。デバイスは、各階層デバイス内の階層の各レベルの経路に沿ったデバイスを含む。1つの例では、検査中の現在のデバイス(たとえば、デバイス310)の出力ピンが分析されて、他のデバイスの入力ピンへの接続が判定される。このプロセスは、第1のデバイス(たとえば、デバイス310)の出力ピンと、第2のデバイス(たとえば、デバイス324)の入力ピンとの間の接続に到達するまでに完了する。プロセスは、宛先デバイス、または宛先ネットに到達すると終了する。第1のデバイスから第2のデバイスへの経路に沿って接続されていると判定された各デバイスは、リストまたは結果リストに追加される。図3を参照して示すように、デバイス312,314および316は、デバイス310からデバイス324までの経路に沿っていると判定される。さらに、階層デバイス314のデバイス410,412,416,418および420が経路に沿っていると判定され、結果リストに追加される。
【0047】
530において、経路の1つまたは複数の特性が判定される。たとえば、経路追跡エンジン110は、PDK122内のモデルおよび/または設計データベース124のデバイス機能に基づいて、幾何学長および/または光学長を判定する。1つの例では、経路追跡エンジン110は、さらに光信号の波長に基づいて光学長を判定する。波長は、メモリ120から取得される。1つの例では、波長は、ユーザインターフェース130を介して提供される。さらに、経路追跡エンジン110は、経路内のデバイスの特性に基づいて経路の特性を判定する。たとえば、経路内のデバイスに関連付けられたPDK122内のモデルが選択される。上述したように、PDK122のモデルは、各デバイスの特性(たとえば、幾何学長および/または光学長)を説明する。経路の遅延、幾何学長、および/または光学長は、PDK122および波長のモデルに基づいて判定される。
【0048】
方法500の540において、経路および対応する特性が出力される。たとえば、経路および対応する特性は、ユーザインターフェース130を介して出力され、ディスプレイ上に表示される。別の例では、経路および対応する特性は、メモリ120内に格納される。
【0049】
図6A図6B、および図6Cは、PIC設計の概略図のデバイス間の経路を判定するための別のフローチャートを例示する。方法600は、図1のPIC設計システム100によって、または、PICデバイスを設計するように構成された別の設計システムによって実行される。たとえば、PIC設計システム100の1つまたは複数のプロセッサは、メモリに格納された命令を実行して方法600を実行する。1つの例では、方法600は、図9のレイアウトまたは物理的実装924の一部として実行される。
【0050】
さらに図6Aを参照して示すように、610において、第1のデバイスの第1のピンまたは端子(たとえば、term1)から、第2のデバイスの第2のピンまたは端子(たとえば、term2)へのすべての経路を返す再帰的手順が定義される。方法600の610の再帰的手順は、611を含む。611において、第1の端子および第2の端子(たとえば、term1、term2)が、経路追跡エンジン110によって実行される経路追跡のために定義される。さらに、610の再帰的手順は、612において、結果リスト(たとえば、結果)を空のリストに設定する(たとえば、結果が、知られている量にリセットされる)ことを含む。結果リストは、経路追跡プロセス中に発見された経路の結果に対応する。613において、第1の端子(term1)が第2の端子(term2)に等しいか否かに関する判定がなされる。1つの例では、経路追跡エンジン110は、第1の端子が第2の端子に等しいか否かに関する判定を行う。614において、第1の端子が第2の端子に等しくないとの判定に基づいて、経路追跡エンジン110は、分析対象のネットを、第1の端子に接続されたネットとして特定する。ネットは、PIC設計内の2つのデバイスの端子間のワイヤ(たとえば、接続)に対応する。さらに、615において、ネット内のピンが、経路追跡エンジン110によって選択される。ピンは、第1のデバイスおよび第2のデバイスの階層の境界である。613において、第1の端子が、第2の端子に等しいと判定された場合、680において、空のリストが返される。
【0051】
620において、現在のネットのピンの各々が、訪問済であるか否かに関する判定が(たとえば、622において)行われる。現在のネットのすべてのピンが未訪問である場合、現在のネットの次のピン(たとえば、未分析のピン)が(たとえば、624において)選択され、630において訪問される。620において、現在のネットのすべてのピンが、分析されたとの判定に基づいて、方法600は、方法600の640に進む。
【0052】
630において、現在の階層のレベルが基本レベルにあるか否かの判定が行われる。現在のレベルが、デバイスの階層の基本レベルにあると判定された場合、現在選択されているピンの分析が完了したと判定され、方法600は620に戻る。現在の階層のレベルが、分析中のデバイスの階層の基本レベルにないと判定された場合、その後、階層の各上位レベルが分析され、階層の最上位レベルに到達するまで、または、第2の端子(または、宛先term)への1つまたは複数の経路が発見されるまで、階層の各レベルを通過する経路が判定される。
【0053】
1つの例では、630は、631において、選択されたピンが、選択されたデバイスの階層の基本レベルにあるか否かに関する判定がなされることを含む。631において、選択されたピンが、選択されたデバイスの階層の基本レベルにあると判定された場合、方法600は620に戻る。631において、ピンが、デバイスの階層の基本レベルにはないと判定された場合、632において、階層の下位レベル(たとえば、層)にあるピン(たとえば、端子)が選択される。1つまたは複数の例では、現在のレベルが基本レベルであると判定されるまで、階層の下位の後続レベルにあるピンが選択される。方法600の633において、階層の下位レベルにおける選択されたピンが、訪問済か否かに関する判定が行われる。633において、選択されたピンが、訪問済であると判定された場合、方法600は、620に戻る。633において、選択されたピンが、訪問済であると判定された場合、634において、選択されたピンが、訪問済のピン(たとえば、端子)のリストに追加される。選択されたピンを、訪問済ピンのリストに追加することは、選択されたピンを、訪問済ピンとして示すことを含み得る。635において、選択されたピン(下位Term)と第2のピン(term2)との間の経路が判定される。方法600の636において、選択されたピン(下位Term)と第2のピン(term2)との間で経路が検出されたか否かに関する判定が行われる。636において、選択されたピン(下位Term)と第2のピン(term2)との間の経路が検出された(たとえば、経路が-1に等しくない、または、選択されたピンと第2のピンとの間の経路が検出されたことを示す別のインジケーションに関連付けられていない)場合、経路は、637において結果リストに追加され、メモリ120に格納される。方法600は、636の後に620に戻る。636において、選択されたピン(下位Term)と第2のピン(term2)との間の経路が検出されない(たとえば、経路が-1に等しい)場合、方法600は620に戻る。
【0054】
620において、現在選択されているネットのピンの各々が、分析済であると判定された場合、方法600は640に進む。ブロック640において、現在のネットが、PIC設計内のデバイスのインスタンス(たとえば、instTerm)の1つまたは複数のピン(または、インスタンス端子)に接続されているか否かに関する判定が行われる。1つの例では、これら端子は、デバイスのインスタンスを表すブロックの論理的な接続ポイントである。端子に関連付けられたピンは、物理的な接続ポイントを表す。1つの例では、端子に関連付けられたネットは、端子を通過して、設計階層における次の上位レベルに論理的にエクスポートされる。複数の物理的な接続が1つの論理的な接続に対応できる例では、端子は、複数のピンを有することができる。インスタンス端子は、インスタンスの設計におけるネットと端子との間の接続を表す。未訪問であると判定された各インスタンス端子のために、方法600は、650のプロセスを実行する。1つの例では、方法600の640は、641において、現在のネットに接続されたPIC設計のデバイスのインスタンスのインスタンス端子を検出することを含む。641は、すべてのピンが訪問済であるか否かの、622における判定に基づいて実行される。642において、PIC設計のデバイスのインスタンスのすべてのインスタンス端子が訪問済であるか否かに関する判定が行われる。642において、すべてのインスタンス端子が、訪問済であると判定された場合、方法600は670に進む。642において、すべてのインスタンス端子が、分析されていないと判定された場合、643において、分析対象のインスタンス端子が選択される。644において、選択されたインスタンス端子が、644において訪問されたか否かに関する判定が行われる。644において、選択されたインスタンス端子が、訪問済であると判定された場合、方法600は642に戻る。644において、選択されたインスタンス端子が、未訪問であると判定された場合、方法600は650に進む。
【0055】
650において、選択されたインスタンス端子が接続されるPIC設計のデバイスのインスタンス(たとえば、第2のインスタンス)が判定される。さらに、650において、第2のインスタンスがリーフセルであるか否かについての判定が行われる。リーフセルは、内部階層のないインスタンスである。第2のインスタンスがリーフセルではない場合、インスタンスの階層が開かれ(たとえば、展開され)、610への再帰呼出しによって階層の各レベルで経路追跡プロセスが継続し、その結果、結果リストに追加されメモリ120に格納されるインスタンスを含む経路のリストが得られる。1つの例では、方法600の650は、651において、現在のインスタンスに接続された第2のインスタンスを選択することを含む。652において、インスタンスがリーフセルであるか否かに関する判定が行われる。652において、インスタンスがリーフセルであると判定された場合、方法は660に進む。652において、インスタンスがリーフセルではないと判定された場合、653において、選択されたインスタンスの、より上位の階層のレベルにあるピンが選択される。654において、第3の端子(term)が、インスタンスの上位の階層のレベルにあるピンに接続される端子に設定される。655において、第3の端子(たとえば、term)と第2の端子(たとえば、term2)との間に経路が存在するか否かに関する判定。655において、経路が検出されない場合、方法は640に戻る。655において、経路が検出された場合、検出された経路は、結果リストに追加され、メモリ120に格納される。
【0056】
652において現在のインスタンスがリーフセルであると判定された場合、660が実行されて、選択されたインスタンス端子(instTerm)から、選択されたインスタンスの他のインスタンス端子(instTerm)への許可された接続が判定される。未訪問の各インスタンス端子のために、(610への再帰呼出しによって計算される)未訪問のインスタンス端子を、宛先端子へと導く経路が判定される。610への各呼出しの前に、訪問済端子の現在のセットが、メモリ120内に格納される。1つの例では、訪問済端子のセットは、メモリ120内のスタック内に格納される。スタックは、メモリ120の連続したブロックで構成される。他の例では、訪問済端子のセットを格納するために、他のメモリ構成が使用され得る。経路が判定されると、その経路が、結果リストに追加され、訪問済端子のセットがスタックから復元される。このインスタンスのすべてのインスタンス端子(instTerm)が分析されると、システムは、方法600の640に戻る。
【0057】
1つの例では、661において、PIC設計の第2のインスタンスのインスタンス端子が取得される。662において、第2のインスタンスtermの各々が分析されたか否かに関する判定が行われる。662において、第2のインスタンス端子の各々が分析されたと判定された場合、方法600は642に戻る。662において、第2のインスタンス端子の各々が分析されていないと判定された場合、方法600は663に進み、第2のインスタンス端子が、第3の端子(たとえば、term)に設定される。664において、第3の端子が訪問済であるか否かが判定される。664において、第3の端子が訪問済であると判定された場合、方法は662に戻る。664において、端子が未訪問と判定された場合、方法は方法600の665に進む。665において、端子が訪問済端子のリストに追加され、666において、訪問済端子のリストがバックアップされる。訪問済端子のリスト(セット)をバックアップすることは、訪問済端子のリストのコピーを作成することと、そのリストをメモリ120に保存することとを含む。667において、第3の端子(たとえば、第1の端子と第2の端子)間の経路が判定されるか否かに関する判定。667において、経路が判定されない場合、方法600は、662に戻る。667において、経路が判定された場合、668において、経路の各々が分析されたか否かに関する判定が行われる。668において、すべての経路が分析されたと判定された場合、方法600は669に進み、訪問済端子のリストが更新され、方法600は662に戻る。668において、すべての経路が分析されたと判定されなかった場合、670において、次の経路(たとえば、分析されていない経路)が選択され、方法600の671において、選択されたインスタンスおよび経路を含むように経路が設定される。経路は、672において、結果リストに追加され、方法600は、668に戻る。
【0058】
680において、結果(たとえば、特定された経路)が出力される。経路が発見されない場合、-1(または、経路がないことを表す別の値またはインジケーション)が出力される。1つの例では、結果は、メモリ(たとえば、図1のメモリ120)に出力され得る。それに加えて、またはその代わりに、結果は、表示デバイス(たとえば、図10のビデオ表示ユニット1010)によって表示され得、および/または、ネットワーク(たとえば、図10のネットワーク1020)を介して、ネットワークデバイス(たとえば、図10のネットワークインターフェースデバイス1008)を介して、別のコンピュータシステムに提供され得る。
【0059】
1つの例では、方法600の680において、結果を出力することは、結果を返すことを含む(681)。結果を返すことは、上記で説明されたように、結果を出力することを含む。1つの例では、682において、結果が空ではないとの判定に基づいて、681において、結果が返される。682において、結果が空であると判定された場合、683において-1が返される。他の例では、方法600の683において、結果が空であることを表すために、-1以外の値が使用され得る。
【0060】
図7A図7B、および図7Cは、PIC設計の概略図のデバイス間の経路を判定するための例示的な擬似コード700を例示する。擬似コード700は、PIC設計(たとえば、PIC設計126)の概略図を通過する経路を判定するために、図1の経路追跡エンジン110の1つまたは複数のプロセッサによって実行される。1つまたは複数の例では、擬似コード700は、図6A図6B、および図6Cの610,620,630,640,650,660および680に対応する。
【0061】
図8は、図5の方法500、および/または、図6A図6B、および図6Cの方法600によって特定された経路(たとえば、経路430,432,434および436)を例示するユーザインターフェース800を例示する。ユーザインターフェース800は、表示デバイス(たとえば、図10のビデオ表示ユニット1010)上に表示される。ユーザインターフェース800によって例示されるように、経路0,1,2,3および対応する特性が、関連付けられた波長に対して出力される。図8の例では、各経路の幾何学長、光学長、遅延、および損失を含む特性が、出力(たとえば、表示)される。
【0062】
図9は、集積回路などの製造物品の設計、検証、加工中に、集積回路を表す設計データおよび命令を変換および検証するために使用される例示的なプロセス900のセットを例示する。これらプロセスの各々は、複数のモジュールまたは動作として構造化および有効化できる。「EDA」という用語は、「電子設計自動化」という用語を意味する。これらプロセスは、設計者によって供給された情報を用いて製品アイデア(910)を作成することで始まり、この情報は、EDAプロセス(912)のセットを使用する製造物品を作成するために変換される。設計が完成すると、設計はテープアウト(934)され、このとき、集積回路のアートワーク(たとえば、幾何学模様)が、加工施設に送られて、マスクセットが製造され、その後、そのマスクセットは、集積回路の製造のために使用される。テープアウト後、半導体ダイが加工され(936)、パッケージングおよび組立プロセス(938)が実行されて、完成した集積回路(940)が製造される。
【0063】
回路または電子構造の仕様は、低レベルのトランジスタ材料レイアウトから高レベルの記述言語に及ぶ場合がある。VHDL、Verilog、SystemVerilog、SystemC、MyHDL、またはOpenVeraなどのハードウェア記述言語(「HDL」)を使用して、回路およびシステムを設計するために、高レベルの表現を使用できる。HDL記述は、ロジックレベルのレジスタ転送レベル(「RTL」)記述、ゲートレベル記述、レイアウトレベル記述、またはマスクレベル記述に変換できる。より詳細な記述である下位の各表現レベルは、たとえば、その記述を含むモジュールのさらなる詳細である、より有用な詳細を、設計記述に追加する。より詳細な記述である下位レベルの表現は、コンピュータによって生成することも、設計ライブラリから導出することも、別の設計自動化プロセスによって作成することもできる。より詳細な記述を指定するための表現言語の下位レベルの仕様言語の例は、SPICEであり、SPICEは、多くのアナログコンポーネントを有する回路の詳細な記述のために使用される。各レベルの表現の記述は、その層の対応するシステム(たとえば、形式検証システムなど)による使用のために有効化される。設計プロセスは、図9に描写されるシーケンスを使用し得る。説明されたプロセスは、EDA製品(またはEDAシステム)によって有効化され得る。
【0064】
システム設計(914)中に、製造される集積回路の機能が指定される。設計は、消費電力、パフォーマンス、面積(物理的および/またはコード行)、およびコスト削減などの望ましい特性に合わせて最適化され得る。この段階で、設計を異なるタイプのモジュールまたはコンポーネントに分割することができる。
【0065】
論理的設計および機能検証(916)中に、回路内のモジュールまたはコンポーネントが、1つまたは複数の記述言語で指定され、その仕様の機能精度がチェックされる。たとえば、回路のコンポーネントが検証され、設計中の回路またはシステムの仕様の要件にマッチする出力が生成され得る。機能検証は、シミュレータや、テストベンチジェネレータ、静的HDLチェッカ、および形式検証器(formal verifier)などの他のプログラムを使用し得る。いくつかの実施形態では、機能検証を高速化するために、「エミュレータ」または「プロトタイピングシステム」と称されるコンポーネントの特別なシステムが使用される。
【0066】
テストの合成および設計中(918)に、HDLコードが、ネットリストに変換される。いくつかの実施形態では、ネットリストは、グラフ構造のエッジが回路のコンポーネントを表し、グラフ構造のノードは、コンポーネントがどのように相互接続されているかを表すグラフ構造であり得る。HDLコードおよびネットリストは両方とも、集積回路が、製造時に、指定された設計にしたがって実行することを検証するためにEDA製品によって使用できる階層的な製造物品である。ネットリストは、ターゲットの半導体製造技術に合わせて最適化できる。それに加えて、完成した集積回路をテストして、集積回路が仕様の要件を満たしていることを検証することもできる。
【0067】
ネットリスト検証(920)中に、ネットリストは、タイミング制約への準拠およびHDLコードとの対応性についてチェックされる。設計計画(922)中に、集積回路の全体的なフロア計画(overall floor plan)が構築され、タイミングおよび最上位レベル配線(top-level routing)について分析される。
【0068】
レイアウトまたは物理的実装(924)中に、物理的配置(トランジスタまたはコンデンサなどの回路コンポーネントの位置決め)およびルーティング(複数の導体による回路コンポーネントの接続)が発生し、特定の論理機能を有効化するためのライブラリからのセルの選択を実行することができる。本明細書で使用される「セル」という用語は、ブール論理関数(たとえば、AND、OR、NOT、XOR)またはストレージ機能(フリップフロップまたはラッチなど)を提供する、トランジスタのセット、他のコンポーネント、および相互接続を指定し得る。本明細書で使用される場合、回路「ブロック」は、2つ以上のセルを称し得る。セルおよび回路ブロックは、両方ともモジュールまたはコンポーネントと称することができ、物理構造としてもシミュレーションでも有効化される。サイズなどのパラメータは、(「標準セル」に基づいて)選択されたセルに対して指定され、EDA製品による使用のためにデータベース内でアクセス可能になる。
【0069】
分析および抽出(926)中に、回路機能がレイアウトレベルで検証され、これによりレイアウト設計の改良が可能になる。物理的検証(928)中に、レイアウト設計がチェックされて、DRC制約、電気制約、リソグラフィ制約などの製造制約が正しいこと、および回路構成機能が、HDL設計仕様にマッチしていることが確認される。分解能強化(930)中に、回路設計の製造方法を改善するためにレイアウトの幾何形状が変換される。
【0070】
テープアウト中に、(適切な場合にはリソグラフィ強化が適用された後)リソグラフィマスクの生成に使用されるデータが作成される。マスクデータ準備(932)中、「テープアウト」データは、完成した集積回路を製造するために使用されるリソグラフィマスクを製造するために使用される。
【0071】
コンピュータシステム(図10のコンピュータシステム1000など)のストレージサブシステムは、本明細書で説明されるEDA製品の一部またはすべてによって使用されるプログラムおよびデータ構造や、ライブラリ、およびライブラリを使用する物理的および論理的設計のためのセルの開発に使用される製品を格納するために使用され得る。
【0072】
図10は、本明細書で論じられる方法論のうちの任意の1つまたは複数を機械に実行させるための命令のセットが実行され得るコンピュータシステム1000の例示的な機械を例示する。代替的な実施では、機械は、LAN、イントラネット、エクストラネット、および/またはインターネット内の他の機械に接続(たとえば、ネットワーク接続)され得る。機械は、ピアツーピア(または分散)ネットワーク環境ではピア機械として、または、クラウドコンピューティングインフラストラクチャまたは環境ではサーバまたはクライアント機械として、クライアントサーバネットワーク環境において、サーバまたはクライアント機械の容量で動作し得る。
【0073】
機械は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、セルラ電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチまたはブリッジ、またはその機械によって講じられるアクションを指定する(シーケンシャルな、またはそれ以外の)命令のセットを実行できる任意の機械であり得る。さらに、単一の機械が例示されているが、「機械」という用語は、本明細書で論じられる方法論のいずれか1つまたは複数を実行するために、命令のセット(または複数のセット)を個別にまたは共同で実行する機械の任意の集合を含むものとも解釈されるものとする。
【0074】
例示的なコンピュータシステム1000は、処理デバイス1002、メインメモリ1004(たとえば、読取専用メモリ(ROM)、フラッシュメモリ、同期DRAM(SDRAM)などのダイナミックランダムアクセスメモリ(DRAM))、静的メモリ1006(たとえば、フラッシュメモリ、静的ランダムアクセスメモリ(SRAM)など)、およびデータ記憶デバイス1018を含み、これらは、バス1030を介して互いに通信する。
【0075】
処理デバイス1002は、マイクロプロセッサ、中央処理デバイスなどの1つまたは複数のプロセッサを表す。より具体的には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令ワード(VLIW)マイクロプロセッサ、または他の命令セットを実施するプロセッサ、または命令セットの組合せを実施するプロセッサであり得る。処理デバイス1002はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つまたは複数の専用処理デバイスであり得る。処理デバイス1002は、本明細書で説明される動作およびステップを実行するための命令1026を実行するように構成され得る。
【0076】
コンピュータシステム1000はさらに、ネットワーク1020を介して通信するためのネットワークインターフェースデバイス1008を含み得る。コンピュータシステム1000はまた、ビデオ表示ユニット1010(たとえば、液晶ディスプレイ(LCD)または陰極線管(CRT))、英数字入力デバイス1012(たとえば、キーボード)、カーソル制御デバイス1014(たとえば、マウス)、グラフィック処理ユニット1022、信号生成デバイス1016(たとえば、スピーカ)、グラフィック処理ユニット1022、ビデオ処理ユニット1028、およびオーディオ処理ユニット1032を含み得る。
【0077】
データ記憶デバイス1018は、1つまたは複数の命令セット1026、または、本明細書で説明される方法論または機能のうちのいずれか1つまたは複数を具体化するソフトウェアが格納される機械可読記憶媒体1024(非一時的なコンピュータ可読媒体としても知られる)を含み得る。命令1026は、コンピュータシステム1000による実行中に、完全にまたは少なくとも部分的に、メインメモリ1004内および/または処理デバイス1002内に常駐することもでき、メインメモリ1004および処理デバイス1002も、機械可読記憶媒体を構成する。
【0078】
いくつかの実施では、命令1026は、本開示に対応する機能を実施するための命令を含む。機械可読記憶媒体1024は、例示的な実施では単一の媒体であるように図示されているが、「機械可読記憶媒体」という用語は、1つまたは複数の命令のセットを格納する単一の媒体または複数の媒体(たとえば、集中型または分散型データベース、および/または、関連付けられたキャッシュおよびサーバ)を含むように解釈されるべきである。「機械可読記憶媒体」という用語はまた、機械による実行のための命令のセットを格納またはエンコードすることができ、機械および処理デバイス1002に、本開示の方法論のいずれか1つまたは複数を実行させる任意の媒体を含むように解釈されるものとする。したがって、「機械可読記憶媒体」という用語は、ソリッドステートメモリ、光媒体、および磁気媒体を含むものと解釈されるが、これらに限定されない。
【0079】
前述の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズムおよびシンボル表現の観点から提示されてきた。これらアルゴリズムの記述および表現は、データ処理技術の当業者が、その作業の内容を他の当業者に最も効果的に伝えるために使用される手法である。アルゴリズムは、所望される結果を導く一連の動作であり得る。これら動作は、物理量の物理的操作を必要とする動作である。そのような量は、格納、結合、比較、およびそれ以外の操作が可能な電気信号または磁気信号の形式を採り得る。そのような信号は、ビット、値、要素、シンボル、文字、用語、数字などと称され得る。
【0080】
しかしながら、これら用語および同様の用語はすべて、適切な物理量に関連付けられており、これら量に適用される便宜的なラベルにすぎないことに留意すべきである。本開示から明らかなように、特に別段の記載がない限り、説明全体を通じて、特定の用語は、コンピュータシステムのレジスタおよびメモリの内部で物理的(電子)量として表されるデータを操作し、コンピュータシステムのメモリやレジスタ、あるいは他のそのような情報記憶デバイス内の物理量として同様に表される他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスの動作およびプロセスを称することが理解される。
【0081】
本開示は、本明細書の動作を実行するための装置にも関連する。この装置は、意図された目的のために特別に構築され得るか、または、コンピュータに格納されたコンピュータプログラムによって選択的に起動または再構成されるコンピュータを含み得る。そのようなコンピュータプログラムは、以下に限定される訳ではないが、フロッピーディスク、光ディスク、CD-ROM、および光磁気ディスクを含む任意のタイプのディスクや、読取専用メモリ(ROM)や、ランダムアクセスメモリ(RAM)や、EPROMや、EEPROMや、磁気カードまたは光学カードや、または電子命令を格納するために適した任意のするタイプの媒体などのコンピュータ可読記憶媒体に格納され得、これら各々は、コンピュータシステムバスに接続されている。
【0082】
本明細書に提示されるアルゴリズムおよび表示は、本質的に特定のコンピュータまたは他の装置に関連するものではない。他の様々なシステムが、本明細書の教示にしたがってプログラムとともに使用され得るか、あるいは、この方法を実行するための、より専門化された装置を構築することが便利であることを証明し得る。それに加えて、本開示は、任意の特定のプログラミング言語を参照して説明されない。様々なプログラミング言語を使用して、本明細書で説明された開示の教示を実施できることが理解されるであろう。
【0083】
本開示は、本開示にしたがって処理を実行するようにコンピュータシステム(または他の電子デバイス)をプログラムするように使用され得る命令を記憶した機械可読媒体を含み得るコンピュータプログラム製品またはソフトウェアとして提供され得る。機械可読媒体は、機械(たとえば、コンピュータ)による読み取り可能な形式で情報を格納するための任意の機構を含む。たとえば、機械可読(たとえば、コンピュータ可読)媒体は、読取専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスなどの機械(たとえば、コンピュータ)可読記憶媒体を含む。
【0084】
前述の開示において、本開示の実施は、その特定の例示的な実施を参照して説明された。以下の特許請求の範囲に記載された本開示のより広範な精神および実施の範囲から逸脱することなく、様々な修正を加えることができることが明らかであろう。本開示が、いくつかの要素を単数形で言及する場合、複数の要素を図に描写することができ、同様の要素には同様の数字が付される。したがって、開示および図面は、限定的な意味ではなく、例示的な意味において注目されるべきである。
図1
図2
図3
図4
図5
図6A
図6B
図6C
図7A
図7B
図7C
図8
図9
図10
【国際調査報告】