(58)【調査した分野】(Int.Cl.,DB名)
前記ディスクリート回路の構成要素の物理的な実現のための新しい物理的な寸法を定義する新しいジオメトリックなパラメータ化データを生成するために、前記ディスクリート回路の構成要素の前記物理的な実現のための物理的な寸法を定義する前記ジオメトリックなパラメータ化データを変更するとともに、変更されたジオメトリックなパラメータ化データに基づいて、前記ディスクリート回路の構成要素についての新しいバージョンレベルを生成することによって、前記デバイス設計における前記ディスクリート回路の構成要素の前記構成要素の定義のうちの1つについての前記構成要素メタデータを、ユーザ入力に応じて、修正するステップと、
新しい構成要素の定義として、前記修正された構成要素メタデータを記憶するステップと、
前記デバイス設計における前記構成要素の前記ディスクリート回路の構成要素の定義のうちの1つについての前記構成要素メタデータを修正したことに応じて、前記デバイス設計について新しいバージョンレベルを生成するステップと、
前記新しいバージョンレベルについて前記回路レイアウトを検証するステップとをさらに含む、
請求項1に記載の方法。
前記パラメータ化データが、1つまたは複数のレイヤのそれぞれの、それぞれのレイヤについて、構成要素のそれぞれの回路素子における素子ジオメトリの互いの配置をさらに定義する、
請求項7に記載のシステム。
コンピュータプログラムを記憶するコンピュータ可読記憶媒体であって、前記コンピュータプログラムが、データ処理装置によって実行されると、前記データ処理装置に以下の動作を実行させる命令を含み、前記動作が、
ユーザ入力に基づいて、複数の構成要素の定義を生成するステップを含み、各構成要素の定義が、電子回路で使用するためのディスクリート回路の構成要素を定義し、かつ構成要素メタデータを含み、前記構成要素メタデータが、
前記構成要素の定義によって定義される前記ディスクリート回路の構成要素の構成要素の種類と、
電子回路の1つまたは複数のレイヤにおける、前記ディスクリート回路の構成要素の物理的な実現のための物理的な寸法を定義するジオメトリックなパラメータ化データと、
前記構成要素の定義によって記述される前記ディスクリート回路の構成要素のバージョンレベルとを記述し、
同一のディスクリート回路の構成要素についての構成要素の定義について少なくとも2つのバージョンレベルが、それぞれのジオメトリックなパラメータ化データによって定義される物理的な寸法で異なっており、
前記動作が、
構成要素の定義ライブラリに前記構成要素の定義を記憶するステップと、
デバイス設計を生成するステップとを含み、前記デバイス設計が、ユーザ入力によって定義され、かつデバイスメタデータを含み、前記デバイスメタデータが、
前記構成要素の定義ライブラリに記憶される前記構成要素の定義から選択されるディスクリート回路の構成要素のセットであって、デバイスに含まれるディスクリート回路の構成要素のセットと、
ディスクリート回路の構成要素についての前記構成要素のバージョンレベルと、
前記デバイスに含まれる前記ディスクリート回路の構成要素のセットの回路接続を記述するネットワークリストと、
前記デバイス設計についてのバージョンレベルとを記述し、前記デバイス設計についての前記バージョンレベルが、ネットワークリスト、ディスクリート回路の構成要素のセット、および前記ディスクリート回路の構成要素のバージョンレベルの一意な組み合わせを定義し、
前記動作が、
前記デバイス設計から、前記ディスクリート回路の構成要素のセットおよび前記デバイスに含まれる前記ディスクリート回路の構成要素の回路接続に基づいて、回路レイアウトを生成するステップを含み、前記回路レイアウトを生成するステップが、バージョンレベルについて前記回路レイアウトを検証するステップを含む、
コンピュータ可読記憶媒体。
【発明を実施するための形態】
【0011】
異なる図面において同様の符号および記号は、同様の要素を指す。
【0012】
バージョン制御は、構成システムの構成要素がよく理解されよく定義されている、十分確立されたシステムで役立つ。そのような構成システムの構成要素の例としては、先に定義した集積回路素子、例えばMOSFET、抵抗器などが挙げられる。しかしながら、構成システムの構成要素がそれぞれ新しい設計を必要とするいくつかの設計については、バージョン制御システムは、構成システムの構成要素を組み込むデバイスに適切なバージョン制御を容易にしない。これは、構成システムの構成要素のそれぞれ根底にある設計変更は、それ自身デバイスの全体的な設計に影響することがあり、構成システムの構成要素レベルでバージョン制御を実装するための容易に利用可能な能力はないからである。
【0013】
集積回路の設計システムは集積回路の設計、特にディスクリート回路の構成要素をそれぞれ定義する編集可能な構成要素の定義を使用する集積回路の設計のためのバージョン制御を容易にする。システムは、設計者にユニットとしての回路素子(例えば、キャパシタ板面積、fluxmon量子ビットトレース幅など)のジオメトリを修正することを許可し、回路素子について修正されたジオメトリは、回路素子を成分としての要素として組み込むデバイス設計において影響される回路素子すべてに渡って適用される。
【0014】
したがって、デバイス設計におけるノードおよび素子の接続を記述するネットリストに加えて、システムはまた個別の素子の寸法ジオメトリのパラメータ化を組み込む。素子についてのパラメータがあるバージョンについて変更されると、システムは回路レイアウトを接続だけではなくジオメトリについても調整し、得られるマスクはそのジオメトリックな変位に基づく設計への全体的な空間的影響を考慮したものとなる。
【0015】
これらの特徴およびさらなる特徴を以下でより詳細に説明する。
【0016】
図1は、集積回路の設計システム110が実装される例示的な環境100のブロック図である。ローカルエリアネットワーク(LAN)、広域エリアネットワーク(WAN)、インターネット、またはそれらの組み合わせなどのコンピュータネットワーク102は、ユーザデバイス106を集積回路の設計システム110に接続する。各ユーザデバイス106はネットワーク102を介してリソースを要求および受信することができる電子デバイスであり、ユーザに設計システム110によって提供される機能を使用させるために設計システム110をインターフェースするアプリケーションを実行してもよい。ユーザデバイス106の例としては、パーソナルコンピュータ、パッドコンピュータなどが挙げられる。
【0017】
設計システム110の例示的な実装形態としては、設計モジュール112および開発モジュール114が挙げられる。しかしモジュール112および114は一つの例示的なシステムアーキテクチャであり、説明されるものと異なるやり方で、以下で説明される処理を分散する他のアーキテクチャを使用することもできる。
【0018】
設計モジュール112はディスクリート回路の構成要素を記述する構成要素の定義を作成、管理、および改版を可能にするプログラム素子である。構成要素の定義は構成要素の定義ライブラリ120に記憶される。この説明で使用される場合、構成要素は構成要素の定義によって定義されるディスクリート回路の構成要素であり、デバイスにおいては設計素子ユニットとして利用され得る。例えば、fluxmon量子ビット、平面キャパシタ、および導波路はそれぞれ構成要素の定義によって定義されるディスクリート回路の構成要素である。構成要素および構成要素の定義は以下でさらに詳細に説明する。
【0019】
開発モジュール114はデバイスを設計するために開発者のグループにツールのセットおよびユーザインターフェースを提供するプログラム素子である。開発モジュールはデバイス設計ライブラリ130にデバイス設計を記憶する。デバイス設計は、構成要素の定義ライブラリ120に記憶される構成要素の定義から選択されるディスクリート回路の構成要素のセットであり、ネットワークリストはデバイス設計によって記述されるデバイスに含まれるディスクリート回路の構成要素のセットの回路接続を記述している。
【0020】
デバイス設計において使用されるディスクリート回路の構成要素の修正は、その構成要素の定義を修正することによってなされ得る。例えば、特定のディスクリート回路の構成要素はデバイス設計の多くのセクションおよび多くの他のデバイス設計において共通に使用される特別に形状付けられた配線であってもよい。構成要素への変更、例えば、固定、強化は、変更が自動的にすべての設計に伝搬されるように構成要素の定義に記憶され、これらの共有される構成要素から導出される設計の信頼性を向上する。
【0021】
開発モジュール114は、特徴を自動生成およびすべての設計に共通する検証のためのソフトウェアツールも含む。そのような検証としては、デザインルールチェック(DRC)、layout versus schematic チェック(LVS)、電気的ルールチェック(ERC)、アンテナチェック、および他の適当な物理的チェックが挙げられる。
【0022】
動作させる際、ユーザは設計モジュール112に入力を与え、構成要素の定義を生成または修正する。それぞれの構成要素の定義は、電子回路で使用するためのディスクリート回路の構成要素を定義する。一実装形態において、構成要素の定義は、それぞれが構成要素の種類、ジオメトリ、およびバージョンを記述する構成要素メタデータを含むファイルとして記憶されてもよい。
【0023】
特に、構成要素の定義によって定義されるディスクリート回路の構成要素の構成要素の種類は、構成要素が何であるかを記述し、例えば、キャパシタの種類、ゲートの種類、導波路の種類などである。これによって設計者が設計モジュール112の使用により、構成要素の定義ライブラリ120内で構成要素の定義を種類によって分類および組織化することが可能となる。
【0024】
構成要素の定義はディスクリート回路の構成要素の物理的な実現のための物理的な寸法を定義するジオメトリックなパラメータ化データも含む。物理的な寸法は単一の平面に限定され得、または2つもしくはそれ以上のレイヤを介して分散される電子回路のための複数のレイヤを含み得る。ジオメトリックなパラメータ化データの例を、
図2Aおよび
図2Bを参照してより詳細に説明する。
【0025】
ディスクリート回路の構成要素のバージョンレベルは構成要素の定義の設計のバージョンレベルを記述する。同一の構成要素の定義に対するそれぞれ異なるバージョンレベルは、物理的な寸法が異なっている個別の構成要素を記述し得る。例えば、
図1に描写されるように、構成要素の定義122および124の2つのセットが示されている。第1のセット122は特定の構成要素C1の4つの異なるバージョンを定義している。第1のバージョンV1はC1_V1でラベル付けされている上段の文書によって表現されている。同様に、第2のセット124は特定の構成要素C2の3つの異なるバージョンを定義している。
【0026】
構成要素の種類、パラメータ化データ、およびバージョンレベルだけが上の例で記述されているが、他の属性が構成要素の定義に含まれてもよい。そのような属性の例としては、接続点、例えば、パッドレイアウト、物質の仕様、例えば、金属の種類、およびディスクリート回路の構成要素を設計する際に使用され得るあらゆる他の適当な属性が挙げられる。特定の構成要素の定義における、これらの属性のあらゆるものに対する変更は、構成要素の定義の新しいバージョンとなる結果となり得る。
【0027】
ユーザはまた開発モジュール114に入力を与え、デバイス設計を定義することができる。一実装形態において、デバイス設計は、ディスクリート回路の構成要素のセット、それらの内部接続を記述するネットワークリスト、およびバージョンレベルを記述するデバイスメタデータをそれぞれ含むファイルとして記憶されてもよい。
【0028】
ディスクリート回路の構成要素のセットは、構成要素の定義ライブラリ120に記憶される構成要素の定義から選択される回路の構成要素を列挙している。ディスクリート回路の構成要素のセットは、デバイス設計によって記述されるデバイスに含まれる構成要素である。デバイス設計はそれぞれの構成要素のバージョンレベルも含む。
【0029】
ネットワークリストは、デバイスに含まれるディスクリート回路の構成要素のセットの回路接続を記述するリストである。ネットワークリストはデバイス設計の特定の内部接続およびノードを記述する。
【0030】
デバイス設計についてのバージョンレベルはネットワークリスト、ディスクリート回路の構成要素のセット、およびディスクリート回路の構成要素のバージョンレベルの一意の組み合わせを定義する。例えば、
図1に描写されるように、デバイス設計132および134の2つのセットが示されている。第1のセット132は特定の設計D1の4つの異なるバージョンを定義している。第1のバージョンV1はD1_V1でラベル付けされている上段の文書によって表現されている。同様に、第2のセット134 V1は特定の設計D2の3つの異なるバージョンを定義している。
【0031】
構成要素の定義と同様、他の適当な設計属性もやはりデバイス設計に記憶されてもよい。
【0032】
動作させる際、開発モジュール114はデバイス設計から、ディスクリート回路の構成要素のセットに基づく回路レイアウト、およびデバイスに含まれるディスクリート回路の構成要素の回路接続を生成することができる。上述のように、回路レイアウトを生成することは、バージョンレベルについて回路レイアウトを物理的に検証することを含む。回路レイアウトは、デバイス設計によって定義される集積回路の構成要素を構成する金属、酸化物、または半導体レイヤの対応するパターンを定義する。集積回路が検証されると仮定すると、得られるデータは工業規格フォーマット、例えばファウンドリ処理のためのGraphic Database System II (GDSII)で記憶され得る。ファウンドリはデータを処理してデバイス製造のためのフォトマスク(または他のファウンドリ処理素子)を生成する。
【0033】
開発モジュール114の使用によって、ユーザは現在の最良の状態(マスタ)または、デバイス設計ライブラリ130からのデバイス設計の以前の状態のスナップショットをチェックアウトし、その設計を修正することができる。そのようにしながら、デバイス設計の新しいブランチ、またはバージョンが作成される。複数のユーザが同時に特定のバージョンに関して作業することができる。
【0034】
デバイスで使用される回路構成要素の数、位置、および接続を修正することに応じて、デバイス設計は変化することができる。しかしながら、デバイス設計は特定の回路の構成要素の定義の修正に応じて変化することもある。例えば、ユーザは、ディスクリート回路の構成要素の物理的な寸法を定義するジオメトリックなパラメータ化データを変更することによって、デバイス設計におけるディスクリート回路の構成要素の構成要素の定義のうちの1つについての構成要素メタデータを修正することができる。これは、ディスクリート回路の構成要素についての新しい物理的な寸法および新しいバージョンレベルを定義する、新しいジオメトリックなパラメータ化データの生成をもたらすことになる。構成要素の定義の変更は、単一のデバイス設計に対してローカルに適用されるか、あるいは代替えとして変更によって影響されるディスクリート回路の構成要素を組み込むすべてのデバイス設計に全体的に適用され得る。それぞれの影響されるデバイス設計について、デバイス設計についての新しいバージョンレベルが生成され、開発モジュールは新しいバージョンレベルについての回路レイアウトを物理的に検証することができる。
【0035】
構成要素の定義に対する改版を、
図2Aおよび
図2Bを参照して説明するが、それらは構成要素の定義によって定義される例示的な平面キャパシタ200および220を描写している。
図2Aはプレート202および204によって定義される平面内のキャパシタを描写している。キャパシタは導電性のトレースおよび非導電性のトレースによって定義される。例示的なジオメトリックなパラメータ化データは以下の形態のものであってもよい。
def inplane_capacitor(width, length, offset, wiring_layer):
draw_box(
-width/2,
-length/2,
width/2,
length/2,
wiring_layer) //draws plate one
draw_box(
-width/2 + offset,
-length/2+ offset,
width/2 + offset,
length/2 + offset,
wiring layer_layer) //draws plate two
【0036】
参照までに、原点は(original point)各平面電極202および204の左下部の頂点にあるものとして描写される。設計者はキャパシタ200についての定義を使用することができるため、またシミュレーションまたはプロトタイプ試験のいずれかに基づいて、キャパシタンスを向上するために電極202と204の間に導電性のパッドが必要かどうかを判断することができる。得られるジオメトリが
図2Bに描写され、対応するジオメトリックなパラメータ化データは以下の形態のものであってもよい。
def inplane_capacitor(width, length, offset, pad_width, pad_length, wiring_layer):
draw_box(
-width/2,
-length/2,
width/2,
length/2,
wiring_layer) //draws plate 1
//draw plate two, with extra pad:
draw_box(
-width/2 + offset,
-length/2+ offset,
width/2 + offset,
length/2 + offset,
wiring_layer)
draw_box(
-pad_width/2,
length/2,
pad_width/2,
length/2 + pad_length,
wiring_layer)
【0037】
したがって、単純にジオメトリックなパラメータ化データを修正することによって、ユーザは単一または複数のデバイス設計で使用することができる既存の構成要素の定義の新しいバージョンを生成することができる。
【0038】
図3は構成要素の定義、および構成要素の定義を使用してデバイス設計を生成する、例示的な処理300の流れ図である。処理300は
図1の設計システム100で使用し、1つまたは複数のコンピュータに実装することができる。
【0039】
処理300は構成要素の定義を生成し、それぞれの構成要素の定義は電子回路で使用するための構成要素を定義し、構成要素の種類、ジオメトリックなパラメータ化、およびバージョン番号を記述する構成要素メタデータを含む(302)。それぞれの構成要素はディスクリート回路の構成要素である。電子回路の1つまたは複数のレイヤにおいて、ジオメトリックなパラメータ化データはディスクリート回路の構成要素の物理的な実現のための物理的な寸法を定義する。
【0040】
処理300は構成要素のセット、それぞれの構成要素についてのバージョンレベル、ネットワークリスト、およびデバイス設計についてのバージョンレベルを記述するメタデータを含むデバイス設計を生成する(304)。ディスクリート回路の構成要素のセットは、構成要素の定義ライブラリ120に記憶される構成要素の定義から選択される。デバイス設計はそれぞれの構成要素についてのバージョンレベルを含む。ネットワークリストは、デバイスに含まれるディスクリート回路の構成要素のセットの回路接続を記述する。デバイス設計のバージョンレベルはネットワークリスト、ディスクリート回路の構成要素のセット、およびディスクリート回路の構成要素のバージョンレベルの一意の組み合わせを定義する。
【0041】
処理300はデバイス設計から、構成要素のセットに基づく回路レイアウト、およびデバイスに含まれる構成要素の回路接続を生成する(306)。生成はデバイス設計の検証を含む。
【0042】
処理300はデバイス設計の構成要素のうちの1つを選択する(308)。例えば、ユーザはデバイス設計で使用される構成要素のうちの1つを選択し、構成要素のジオメトリックな形状を変更することができる。
【0043】
処理300は選択された構成要素の構成要素メタデータを修正し、新しい構成要素の定義を生成する(310)。例えば、
図2に示すように、ユーザはジオメトリックなパラメータ化データを修正することにより、導電性のパッドを平面内のキャパシタの電極間に追加することができる。処理300はデバイス設計についての新しいバージョンレベルを生成し、新しいバージョンレベルについての回路レイアウトを物理的に検証することができる(312)。
【0044】
本明細書において説明される主題の実施形態および動作は、本明細書において開示される構造およびその構造的な等価物を含む、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、あるいはそれらのうちの1つまたは複数の組み合わせにおいて実装することができる。本明細書において説明される主題の実施形態は1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のため、またはデータ処理装置の動作を制御するために、コンピュータ記憶媒体上にエンコードされたコンピュータプログラム命令の1つまたは複数のモジュール、として実装することができる。
【0045】
コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスのメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組み合わせであってもよいか、あるいはそれに含まれてもよい。さらには、コンピュータ記憶媒体が伝搬される信号ではない一方で、コンピュータ記憶媒体は人工的に生成された伝搬信号にエンコードされるコンピュータプログラム命令の送信元または送信先となり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理的な構成要素または媒体(例えば、複数のCD、ディスク、または他の記憶デバイス)であってもよく、またはそれに含まれてもよい。
【0046】
本明細書で説明される動作は、データ処理装置により、1つまたは複数のコンピュータ可読記憶デバイスに記憶されるデータ、または他のソースから受信されるデータに対して実施される動作として実装され得る。
【0047】
用語「データ処理装置」は、装置、デバイス、およびデータを処理するための機械のすべての種類を包含し、例としてプログラム可能プロセッサ、コンピュータ、システムオンチップ、または前述のうちの複数もしくは前述のものの組み合わせを含む。装置は特殊目的論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、対象のコンピュータプログラムのための実行環境を作成するコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームのランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組み合わせを構成するコードを含んでもよい。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0048】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型またはインタプリタ型言語、宣言型または手続き型言語を含むあらゆる形態のプログラム言語で記述することができ、スタンドアロンプログラムとして、またはモジュールとして、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境での使用に好適な他の単位を含むあらゆる形態として展開することができる。コンピュータプログラムは、ファイルシステム内のファイルに対応することができるが、必ずしもそうである必要はない。プログラムは、他のプログラムまたはデータを保有するファイルの一部(例えば、マークアップ言語文書に記憶された1つまたは複数のスクリプト)に、対象のプログラム専用の単一のファイルに、または複数のコーディネートされたファイル(例えば、1つもしくは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶することができる。コンピュータプログラムは、一か所に置かれる、または複数の場所にまたがって分散される1つのコンピュータまたは複数のコンピュータ上で実行されるように展開され、通信ネットワークで相互接続することができる。
【0049】
本明細書に記載される処理および論理フローは、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能なプロセッサによって実施し、入力データを演算して出力を生成することによってアクションを実施することができる。処理およびロジックの流れはまた、特殊目的論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実施され得、また装置も特殊目的論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)として実装されてもよい。
【0050】
コンピュータプログラムの実行のために好適なプロセッサは、例として、汎用および特殊目的のマイクロプロセッサの両方、およびあらゆる種類のデジタルコンピュータの1つまたは複数のあらゆるプロセッサを含む。一般的に、プロセッサは読み取り専用メモリもしくはランダムアクセスメモリ、または両方から、命令およびデータを受信する。コンピュータの必須の要素は、命令にしたがってアクションを実施するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般的に、コンピュータはまたデータを記憶するために、例えば、磁気的、磁気光学的ディスク、または光学ディスクなど、1つもしくは複数の大容量記憶デバイスを含み、または1つもしくは複数の大容量記憶デバイスからデータを受信するため、または1つもしくは複数の大容量記憶デバイスにデータを送信するため、またはその両方のために、動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。
【0051】
コンピュータプログラム命令およびデータを記憶するために好適なデバイスは、例として半導体メモリデバイス、例えばEPROM、EEPROMおよびフラッシュメモリデバイス、磁気ディスク、例えば内部ハードディスクまたは取り外し可能ディスク、磁気光学的ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、非揮発性のメモリ、媒体、およびメモリデバイスのすべての形態を含む。プロセッサおよびメモリは、特殊目的論理回路によって補うことができ、または特殊目的論理回路に組み込むことができる。
【0052】
ユーザとの対話を提供するために、本明細書に記載の主題の実施形態は、ユーザに情報を表示するための、例えばCRT(ブラウン管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、キーボード、および例えばマウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装することができ、それによってユーザはコンピュータに入力を与えることができる。同様に他の種類のデバイスを、ユーザとの対話を提供するために使用することができる。例えば、ユーザに提供されるフィードバックはあらゆる形態の感覚的なフィードバック、例えば視覚的なフィードバック、聴覚的なフィードバック、または触覚的なフィードバックであってよく、ユーザからの入力は、音響、発話または触覚的な入力を含む、あらゆる形態で受信することができる。加えて、コンピュータは、例えばウェブブラウザから受信した要求に応答して、ユーザのユーザデバイスのウェブブラウザにウェブページを送信することによって、ユーザによって使用されるデバイスに文書を送信すること、およびそのデバイスから文書を受信することによって、ユーザと対話することができる。
【0053】
本明細書において説明される主題の実施形態は、例えばデータサーバとしてバックエンド構成要素を含むコンピューティングシステム、またはミドルウェア構成要素、例えば、アプリケーションサーバを含むコンピューティングシステム、またはフロントエンド構成要素、例えば、グラフィカルユーザーインターフェース、もしくはそれを通じてユーザが本明細書において説明される主題の実装形態と対話することができるウェブブラウザを有するユーザコンピュータを含むコンピューティングシステム、または1つもしくは複数のそのようなバックエンド、ミドルウェア、もしくはフロントエンド構成要素のあらゆる組み合わせ、に実装することができる。システムの構成要素は、デジタルデータ通信のあらゆる形態または媒体、例えば通信ネットワークによって、内部接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)および広域エリアネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、およびピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)が挙げられる。
【0054】
コンピューティングシステムは、ユーザおよびサーバを含むことができる。ユーザおよびサーバは一般的に、互いに離れており、典型的には通信ネットワークを介して対話する。ユーザとサーバの関係は、それぞれのコンピュータ上で実行しており、互いのユーザ-サーバ関係を有しているコンピュータプログラムのおかげで成立する。いくつかの実施形態において、サーバはデータ(例えば、HTMLページ)をユーザデバイスに送信する(例えば、ユーザデバイスと対話しているユーザにデータを表示する目的のため、およびユーザデバイスと対話しているユーザからユーザ入力を受信する目的のため)。ユーザデバイスにおいて生成されたデータ(例えば、ユーザ対話の結果)は、サーバにおいてユーザデバイスから受信することができる。
【0055】
本明細書は多くの具体的な実装形態の詳細を含む一方で、これらはあらゆる特徴の範囲または特許請求され得る範囲に対する限定と解釈されるべきではなく、特定の実施形態に特異的である特徴の説明と解釈されるべきである。別個の実施形態の文脈において本明細書で説明される特定の特徴は、単一の実施形態において組み合わせとして実装されてもよい。逆に、単一の実施形態の文脈において説明される様々な特徴はまた、別個にまたはあらゆる好適なサブ組み合わせで複数の実施形態に実装されてもよい。さらに、特徴はある組み合わせにおいて振る舞うとして上述され得、また初めにそのようなものとして特許請求されさえもするが、特許請求される組み合わせからの1つまたは複数の特徴は、いくつかの場合、その組み合わせから切り出され得、特許請求される組み合わせはサブ組み合わせまたはサブ組み合わせの変形を対象とすることができる。
【0056】
同様に、動作は特定の順序で図面に描写されるが、これは所望の結果を達成するために、そのような動作が示される特定の順序もしくは順次に実施されること、またはすべての例示される動作が実施されること、を要求するものとして理解されるべきではない。ある状況においては、マルチタスクおよび並列処理が有利であり得る。さらに、上述の実施形態における様々なシステムの構成要素の分離は、すべての実施形態においてそのような分離を要求するものとして理解されるべきではなく、記載されるプログラム構成要素およびシステムは全体的に単一のソフトウェア製品に一体化すること、または複数のソフトウェア製品にパッケージングすることができることが理解されるべきである。
【0057】
したがって、主題の特定の実施形態が説明されてきた。他の実施形態が以下の特許請求の範囲の範囲内にある。いくつかの場合、特許請求の範囲に列挙されるアクションを異なる順で実施することができるが、なお所望の結果を達成することができる。加えて、添付の図面において描写される処理は、所望の結果を達成するために、必ずしも示される特定の順序、または順次の順序を要求しない。いくつかの実装形態においては、マルチタスクおよび並列処理が有利であり得る。