特許第6353013号(P6353013)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

<>
  • 特許6353013-クロックジッタエミュレーション 図000003
  • 特許6353013-クロックジッタエミュレーション 図000004
  • 特許6353013-クロックジッタエミュレーション 図000005
  • 特許6353013-クロックジッタエミュレーション 図000006
  • 特許6353013-クロックジッタエミュレーション 図000007
  • 特許6353013-クロックジッタエミュレーション 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6353013
(24)【登録日】2018年6月15日
(45)【発行日】2018年7月4日
(54)【発明の名称】クロックジッタエミュレーション
(51)【国際特許分類】
   G06F 17/50 20060101AFI20180625BHJP
【FI】
   G06F17/50 664P
   G06F17/50 668S
   G06F17/50 668X
【請求項の数】20
【外国語出願】
【全頁数】19
(21)【出願番号】特願2016-227609(P2016-227609)
(22)【出願日】2016年11月24日
(65)【公開番号】特開2017-182773(P2017-182773A)
(43)【公開日】2017年10月5日
【審査請求日】2017年3月16日
(31)【優先権主張番号】14/952,656
(32)【優先日】2015年11月25日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】597035274
【氏名又は名称】シノプシス, インコーポレイテッド
【氏名又は名称原語表記】SYN0PSYS, INC.
(74)【代理人】
【識別番号】100110928
【弁理士】
【氏名又は名称】速水 進治
(74)【代理人】
【識別番号】100127236
【弁理士】
【氏名又は名称】天城 聡
(72)【発明者】
【氏名】ラルズル マルク ルードビック
【審査官】 合田 幸裕
(56)【参考文献】
【文献】 特開2007−094512(JP,A)
【文献】 特開2007−179296(JP,A)
【文献】 特開2006−344222(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/50
IEEE Xplore
JSTPlus(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
検査対象設計(DUT:Design Under Test)の複数のクロック信号を生成するための実行可能な命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記命令によって、エミュレータは、
各ジッタクロック値が前記エミュレータによってエミュレーションされている前記DUTの前記複数のクロック信号のうちの1つのクロック信号に関連付けられ、かつ、各ジッタクロック値が前記1つのクロック信号に関連付けられたジッタ値とクロックパラメータとに基づいて決定される、複数のジッタクロック値を特定し、
前記複数のジッタクロック値から、最小ジッタクロック値を特定し、
前記複数のクロック信号のうち、前記最小ジッタクロック値に関連付けられたクロック信号のエッジを出力するように設定される非一時的コンピュータ可読記憶媒体。
【請求項2】
前記命令によって、前記エミュレータは、前記クロック信号に関連付けられたジッタ範囲から前記ジッタ値をランダムに選択するようにさらに設定される請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項3】
前記クロック信号に関連付けられた前記クロックパラメータは、前記クロック信号の周期に関連付けられている請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項4】
前記命令によって、前記エミュレータは、前記ジッタ値及び前記クロックパラメータを組み合わせることにより、前記複数のジッタクロック値から1つのジッタクロック値を決定するようにさらに設定される請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項5】
前記命令によって、前記エミュレータは、前記最小ジッタクロック値でないジッタクロック値に関連付けられた前記複数のクロック信号の各々について、前記クロック信号の状態を維持するようにさらに設定される請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項6】
前記命令によって、前記エミュレータは、ジッタクロック値に関連付けられた前記複数のクロック信号の各々について、前記ジッタクロック値が前記最小ジッタクロック値であるか否かに基づき、前記クロック信号の追加ジッタクロック値を生成するようにさらに設定される請求項1に記載の非一時的コンピュータ可読記憶媒体。
【請求項7】
前記命令によって、前記エミュレータは、前記ジッタクロック値が前記最小ジッタクロック値ではないことに応じて、前記追加ジッタクロック値を、前記ジッタクロック値と前記最小ジッタクロック値との間の差となるよう生成するようにさらに設定される請求項6に記載の非一時的コンピュータ可読記憶媒体。
【請求項8】
前記命令によって、前記エミュレータは、前記クロック信号に関連付けられた前記ジッタクロック値が前記最小ジッタクロック値であることに応じて、前記クロック信号に関連付けられた追加クロックパラメータと、ジッタ範囲からランダムに選択された追加ジッタ値とを合計することにより、前記追加ジッタクロック値を生成するようにさらに設定される請求項6に記載の非一時的コンピュータ可読記憶媒体。
【請求項9】
検査対象設計(DUT:Design Under Test)のクロック信号を生成するための実行可能な命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記命令によって、エミュレータは、
前記エミュレータによってエミュレーションされている前記DUTの前記クロック信号に関連付けられたクロックパラメータを取得し、
ジッタ値をランダムに生成し、
前記クロックパラメータ及び前記ジッタ値に基づき、前記クロック信号に対するジッタクロック値を生成するように設定される非一時的コンピュータ可読記憶媒体。
【請求項10】
前記命令によって、前記エミュレータは、
各々が前記DUTの異なるクロック信号と関連付けられた複数のジッタクロック値であって、生成された前記ジッタクロック値を含む前記複数のジッタクロック値を特定し、
前記複数のジッタクロック値から、最小ジッタクロック値を特定し、
前記最小ジッタクロック値に関連付けられたクロック信号のエッジを出力するようにさらに設定される請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項11】
前記クロックパラメータ及び前記ジッタ値が組み合わせられて、前記ジッタクロック値が生成される請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項12】
前記ジッタ値は、前記クロック信号に関連付けられたジッタ範囲から前記ジッタ値をランダムに選択することによって生成される請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項13】
前記クロック信号に関連付けられた前記クロックパラメータは、前記クロック信号の周期に関連付けられている請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項14】
エミュレータによってエミュレーションされるクロック生成器であって、
前記エミュレータによってエミュレーションされる検査対象設計(DUT:Design Under Test)の第1クロック信号に関連付けられ、前記第1クロック信号に関連付けられた第1ジッタ値と第1クロックパラメータとに基づいて決定される第1ジッタクロック値を記憶するように設定される第1記憶部と、
前記DUTの第2クロック信号に関連付けられ、前記第2クロック信号に関連付けられた第2ジッタ値と第2クロックパラメータとに基づいて決定される第2ジッタクロック値を記憶するように設定される第2記憶部と、
前記第1ジッタクロック値が前記第2ジッタクロック値より小さいことを判定するように設定される最小演算子と、
前記第1ジッタクロック値が前記第2ジッタクロック値より小さいことに基づき、前記第1クロック信号のエッジを出力するように設定される比較器と、
を備えるクロック生成器。
【請求項15】
追加比較器をさらに備え、
前記最小演算子は、さらに、前記第1ジッタクロック値が前記第2ジッタクロック値より小さいことに基づき、前記第1ジッタクロック値を前記比較器と前記追加比較器とに出力するように設定され、
前記比較器は、さらに、
前記最小演算子によって出力された前記第1ジッタクロック値を受信し、
記憶された前記第1ジッタクロック値を前記第1記憶部から読み出し、
前記最小演算子により出力された前記第1ジッタクロック値が前記第1記憶部から読み出した前記第1ジッタクロック値と同一であることに基づき、前記第1クロック信号の前記エッジを出力するように設定され、
前記追加比較器は、
前記最小演算子によって出力された前記第1ジッタクロック値を受信し、
記憶された前記第2ジッタクロック値を前記第2記憶部から読み出し、
前記最小演算子により出力された前記第1ジッタクロック値が前記第2記憶部から読み出した前記第2ジッタクロック値とは異なることに基づき、前記第2クロック信号の状態を維持するように設定される請求項14に記載のクロック生成器。
【請求項16】
前記第1クロック信号に関連付けられた第1ジッタ範囲から前記第1ジッタ値をランダムに選択するように設定される第1ランダムジッタ生成器と、
前記第2クロック信号に関連付けられた第2ジッタ範囲から前記第2ジッタ値をランダムに選択するように設定される第2ランダムジッタ生成器と、をさらに備える請求項14に記載のクロック生成器。
【請求項17】
前記第1クロック信号に関連付けられた第3ジッタ値と第3クロックパラメータとに基づき、前記第1クロック信号の第3ジッタクロック値を生成し、前記第3ジッタクロック値を前記第1記憶部に記憶して前記第1ジッタクロック値と置き換えるように設定される第1ランダムジッタ生成器と、
前記第2ジッタクロック値と前記第1ジッタクロック値との差に基づき、前記第2クロック信号の第4ジッタクロック値を生成し、前記第4ジッタクロック値を前記記憶要素に記憶して前記第2ジッタクロック値と置き換えるように設定される追加比較器と、をさらに備える請求項14に記載のクロック生成器。
【請求項18】
検査対象設計(DUT:Design Under Test)の複数のクロック信号を生成する方法であって、
エミュレータにより、複数のジッタクロック値を特定するステップであって、各ジッタクロック値は、前記エミュレータによってエミュレーションされる前記検査対象設計(DUT)の前記複数のクロック信号のうちの1つのクロック信号に関連付けられ、各ジッタクロック値は、前記クロック信号に関連付けられたジッタ値とクロックパラメータとに基づいて決定されるステップと、
前記エミュレータにより、前記複数のジッタクロック値から、最小ジッタクロック値を特定するステップと、
前記エミュレータにより、前記複数のクロック信号から、前記最小ジッタクロック値に関連付けられたクロック信号のエッジを出力するステップと、を備える方法。
【請求項19】
前記最小ジッタクロック値でないジッタクロック値に関連付けられた前記複数のクロック信号の各々について、前記クロック信号の状態を維持するステップをさらに備える請求項18に記載の方法。
【請求項20】
ジッタクロック値に関連付けられた前記複数のクロック信号の各々について、前記ジッタクロック値が前記最小ジッタクロック値であるか否かに基づき、前記クロック信号の追加ジッタクロック値を生成するステップをさらに備える請求項18に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、設計のエミュレーション全般に係り、特にジッタを伴うクロックのエミュレーションに係る。
【背景技術】
【0002】
エミュレータは、回路設計者が高度に複雑な集積回路設計(例えば、システムオンチップ(SOC))の設計及びデバグを行う際の補助として開発されてきた。エミュレータは、集積回路の動作を協働して模倣することのできる複数の現場プログラム可能なゲートアレイ(FPGA)又は特定のプログラム可能なエミュレーション要素を備える。設計者は、エミュレータを使用して集積回路の動作を模倣することにより、製造に先立って、その集積回路が種々の設計要件に対応していることを検証できる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
集積回路は、通常、異なるクロックで動作する複数の要素を備える。従って、集積回路は、複数のクロックドメインを備える。信号は、ルーティン的に異なるクロックドメイン間を通過する。クロックドメインの横断中、エラー/異常が集積回路に導入されることもある。エラーの一因は、クロック信号中に存在するジッタであり得る。例えば、2つのクロックが1GHzで動作するよう設計されることもある。しかしながら、ジッタのせいで、双方のクロックが揃えられる(双方とも1GHzで動作する)可能性は非常に低い。従って、信号が該複数のクロックドメインを横断する時、クロックが正確に予期どおりには動作しないため、エラーが発生することもある。
【0004】
エミュレータが集積回路のエミュレーションを行う時、エミュレーション環境内のクロックは、設計通りに(ジッタを含まず)開始及び終了する完全なクロックである。エミュレーションされたクロックは、ジッタを考慮に入れないため、ジッタによって引き起こされる特定のエラーが集積回路のエミュレーション時に検出されないこともある。
【図面の簡単な説明】
【0005】
本開示の実施形態は、詳細な説明、添付のクレーム、及び添付の図(あるいは図面)からより容易に明らかとなるその他の効果及び特徴を有する。以下に図の簡単な説明を行う。
【0006】
図1】一実施形態に係る、エミュレーション環境のブロック図である。
図2】一実施形態に係る、ホストシステムを示すブロック図である。
図3】一実施形態に係る、エミュレータによってエミュレーションされてクロック信号を生成するクロック生成器を示すブロック図である。
図4】一実施形態に係る、クロック信号及びシステムファストクロックを示すタイミング図である。
図5】一実施形態に係る、複数のクロック信号のエミュレーションを行うプロセスを示すフロー図である。
図6】一実施形態に係る、機械可読媒体から命令を読み出し、プロセッサでそれらを実行することのできる一例としての機械の要素を示すブロック図である。
【発明を実施するための形態】
【0007】
図面及び以下の説明は、特定の実施形態を例示としてのみ説明するものである。当業者は、以下の説明から、本明細書に記載の構造及び方法の代替実施形態が本明細書に記載の原則から逸脱することなく採用されてもよいことを容易に理解するであろう。
【0008】
これからいくつかの実施形態を参照するが、その例を添付の図面に示してある。図面では、同様の要素を特定するのに同様の参照符号を使用している。「302A」等、参照符号に続く文字は、そのテキストがその特定の参照符号を有する要素を具体的に言及していることを示す。「302」等、後続の文字を伴わない参照符号は、その参照符号を含む図面のいずれかまたはすべての要素を言及するものである。
【0009】
<概要>
ジッタを伴う検査対象設計(DUT:Design Under Test)のクロックのエミュレーションを行うための開示のシステム(方法及びコンピュータプログラム製品)を説明する。エミュレータは、エミュレーションされるDUTに対してジッタを伴うクロック信号を生成するため、クロック生成器のエミュレーションを行う。クロック生成器は、各クロック信号に対して、ランダムジッタ生成器、アキュムレータ、及び比較器を備える。クロック生成器は、最小演算子も備える。
【0010】
各ランダムジッタ生成器は、メモリから、各クロック信号に関連付けられたクロックパラメータを読み出す。クロックパラメータは、例えば、クロック周期の正の部分(立ち上がりエッジと立ち下がりエッジとの間)又は負の部分(立ち下がりエッジと次の立ち上がりエッジとの間)の幅であってもよい。パラメータ化されたランダムジッタ生成器は、読み出されたクロックパラメータと、ジッタ範囲からランダムに選択されたジッタ値(例えば、クロックパラメータとランダムに選択されたジッタ値との和)とに基づき、クロック信号のジッタクロック値を生成する。ランダムジッタ生成器は、各アキュムレータにジッタクロック値を記憶する。
【0011】
システムファストクロックのクロックサイクル中、最小演算子は、アキュムレータに記憶されたジッタクロック値を取得する。システムファストクロックは、クロック生成器によって生成されたクロック信号より高い周波数で動作する。最小演算子は、ジッタクロック値から最小ジッタクロック値を特定する。最小演算子は、各比較器に最小ジッタクロック値を出力する。各比較器は、最小ジッタクロック値を各アキュムレータに記憶されたジッタクロック値と比較する。値が同一でない場合、比較器は、各クロック信号を変更しない。例えば、クロック信号が高い状態にあった場合、このクロック信号は高い状態に維持される。さらに、比較器は、アキュムレータに記憶されたジッタクロック値と最小ジッタクロック値との間の差を求める。比較器は、アキュムレータの前回記憶された値と置き換える新たなジッタクロック値として、求められた差をアキュムレータに記憶する。
【0012】
一方、値が同一である場合、比較器は、各クロック信号上にエッジを出力させる(比較器は、クロック信号に状態を変更させる)。一実施形態において、クロック信号が低い状態である場合、比較器は、立ち上がりエッジを出力する。しかしながらクロック信号が高い状態にある場合、比較器は、立ち下がりエッジを出力する。各ランダムジッタ生成器は、メモリから読み出したクロックパラメータと新たにランダムに選択されたジッタ値とに基づき、クロック信号の新たなジッタクロック値を生成する。ランダムジッタ生成器は、生成したジッタクロック値を対応するアキュムレータに記憶し、アキュムレータに前回記憶された値と置き換える。
【0013】
続く各システムファストクロック中、最小演算子により、アキュムレータに記憶された値から最小ジッタクロック値を選択し、比較器により、各クロック信号のエッジを出力すべきか否かを判定し、新たな値をアキュムレータに記憶するプロセスが繰り返される。ジッタ値をクロック信号の生成に使用されるクロックパラメータに組み込むことにより、クロック信号のサイクルは変化し(すべてが同一とは限らない)、クロックの実世界の環境における動作を表すようになる。さらにジッタを組み込んでクロック信号を変化させることにより、例えば、DUT内でクロックドメイン横断中に発生するエラーを検出することができる。
【0014】
<エミュレーション環境の概要>
図1は、一実施形態に係る、エミュレーション環境100を示すブロック図である。エミュレーション環境100は、エミュレータ110とホストシステム120とを備える。エミュレータ110及びホストシステム120は、インタフェース115を介して通信する。
【0015】
インタフェース115は、ホストシステム120とエミュレータ110との間の通信を可能にする通信媒体である。一実施形態において、インタフェース115は、電気的接続を備えたケーブルである。例えば、インタフェース115は、USB、イーサネット(登録商標)、光ケーブル、又は特注ケーブルであってもよい。一実施形態において、インタフェース115は、無線通信媒体又はネットワークである。他の例として、インタフェース115は、Bluetooth(登録商標)又はIEEE802.11プロトコルを採用した無線通信媒体であってもよい。
【0016】
エミュレータ110は、検査対象設計(DUT)のエミュレーションを行うハードウェアシステムである。DUTは、エミュレータ110によってエミュレーションされる1つ以上の回路設計である。エミュレータ110は、DUTを総括的にエミュレーションすることができるように設定されたFPGAを備える。他の実施形態において、エミュレータ110は、FPGAの代わりに他の種別の再設定可能なハードウェア要素を備える。エミュレーションされるDUTについて、エミュレータ110は、ホストシステム120から、エミュレーション中、DUTに対してジッタを伴うクロック信号を生成する1つ以上のクロック生成器を備えたDUTの記述を含むビットストリーム(例えば、1つ以上のバイナリファイル)を受信する。さらにこのビットストリームは、ホストシステム120により作成されたDUTのパーティションと、エミュレータFPGAへのパーティションのマッピングと、FPGA上での論理(DUT論理及びクロック生成器論理)の置換と配置された論理間のルーティングとを記述する。エミュレータ110は、このビットストリームに基づき、適切なFPGAを設定し、DUTのエミュレーションを行う。
【0017】
ホストシステム120は、DUTのエミュレーションを行うようにエミュレータ110を設定する。ホストシステム120は、単一のコンピュータであってもよく、又は複数のコンピュータの集合であってもよい。ホストシステムが複数のコンピュータからなる実施形態において、ホストシステム120によって実施されるものとして本明細書に記載の機能は、これらの複数のコンピュータの間で分担されてもよい。
【0018】
ホストシステム120は、ユーザから、エミュレータ110上で実行されるDUTの記述を受信する。一実施形態において、DUTの記述は、レジスタ転送言語(RTL)等、一種のハードウェア記述言語(HDL)である。ホストシステム120は、DUTのHDL記述に基づき、ゲートレベルネットリストを作成する。他の実施形態において、ユーザから受信したDUTの記述は、ゲームレベルネットリストにある。ホストシステム120は、DUTに、1つ以上のクロック生成器を組み込む。各クロック生成器は、ジッタを伴うDUTのクロック信号を生成する。
【0019】
ホストシステム120は、クロック生成器を伴うDUTのエミュレーションを行うために、エミュレータFPGAを設定するための情報を含む1つ以上のビットストリームを生成する。ビットストリームには、例えば、DUTの1つ以上のパーティションの設計記述、マッピング情報(例えば、FPGAへのパーティションのマッピング)、置換及びルーティング情報、及びDUTの設計制約が含まれてもよい。
【0020】
ホストシステム120は、インタフェース115を介してエミュレータ110に、DUTのエミュレーションを行うためにFPGAを設定すべく生成したビットストリームを送信する。エミュレータ110がDUTのエミュレーションを行っている間、及び/又は、エミュレータ110がDUTのエミュレーションを行った後、ホストシステム120は、エミュレータ110からエミュレーション結果を受信する。エミュレーション結果は、DUTのエミュレーションに基づき、エミュレータ110によって生成された情報である。
【0021】
図2は、一実施形態に係る、ホストシステム120をより詳細に示すブロック図である。ホストシステム120は、入力受信器200、合成器210、論理マッピングモジュール220、パーティション分割モジュール230、技術マッピングモジュール240、配置及びルーティングモジュール250、及びビットストリーム生成モジュール260を備える。これらの要素は各々、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせとして実装されてもよい。これらの要素はともに、DUTのエミュレーションを行うエミュレータ110を設定するための情報を生成する。
【0022】
入力受信器200は、エミュレータ110によって実行されるDUTの記述を受信する。一実施形態において、入力受信器200は、HDL又はゲートレベルネットリストでDUTの記述を受信する。
【0023】
合成器210は、HDL記述をゲートレベル論理に変換する。DUTの記述がHDLで受信された場合、合成器210は、HDL記述を合成しゲートレベル論理ベースでのDUTの記述を伴うゲートレベルネットリストを作成するようする。一実施形態において、合成器210はまた、DUTについて受信されたゲートレベルネットリストを他のゲートレベルネットリストにも変換する。
【0024】
論理マッピングモジュール220は、DUTの論理を、エミュレータ110のFPGAにおいて利用可能な要素にマッピングする。論理マッピングモジュール220は、エミュレータFPGAにおいて利用可能でないDUTのゲートレベルネットリストに含まれる論理を特定し、エミュレータFPGAにおいて利用可能な対応のハードウェア要素に関連付ける(割り当てる)。例えば、論理マッピングモジュール220は、ゲートレベルネットリストにおいてBoolean論理ゲートを特定し、Boolean論理ゲートをFPGAにおいて利用可能な対応の論理ゲート又はルックアップテーブル(LUT)ユニットに関連付ける。一実施形態において、論理マッピングモジュール220は、このマッピングに基づいてゲートレベルネットリストを修正する。
【0025】
一実施形態において、論理マッピングモジュール220はまた、DUTのクロック信号を生成する1つ以上のクロック生成器をDUTに組み込む。クロック生成器によって生成されたクロック信号にはジッタが含まれる。クロック生成器の要素及び設計の詳細については、以下に図3を参照して説明する。
【0026】
一実施形態において、論理マッピングモジュール220は、DUTを解析し、DUTのクロック信号を特定する。論理マッピングモジュール220は、クロック信号の各セットに対してクロック生成器を備える。他の実施形態において、論理マッピングモジュール220は、DUTのクロック信号すべてを生成するために単一のクロック生成器を備える。論理マッピングモジュール220は、DUTのゲートレベルネットリストを修正することにより、1つ以上のクロック生成器を組み込む。他の実施形態において、1つ以上のクロック生成器は、DUTのHDL記述の合成に先立って、DUTに組み込まれる。
【0027】
パーティション分割モジュール230は、DUTを分割し、パーティションをエミュレータFPGAにマッピングする。パーティション分割モジュール230は、DUTのネットリストを使用して、ゲートレベルでDUTを多数のパーティションに分割する。パーティション分割モジュール230は、各パーティションをエミュレータ110の1つ以上のFPGAにマッピングする。パーティション分割モジュール230は、設計規則、設計制約(例えば、タイミング又は論理上の制約)、及びエミュレータ110に関する情報を使用してパーティション分割及びマッピングを実施する。
【0028】
技術マッピングモジュール240は、論理マッピング及びパーティション分割に基づき、DUTの物理要素をマッピングする。具体的には、技術マッピングモジュール240は、必要に応じて、作成されたパーティションとパーティションのFPGAへのマッピングとに基づいて1つ以上のパーティションを修正する。例えば、DUTは3つの論理ゲートを備え、第1論理ゲートの出力が第2論理ゲートの入力と第3論理ゲートの入力とに接続されているとする。DUTをパーティション分割して、第1論理ゲート及び第2論理ゲートが、同一のFPGA上で実行されるものの、第3論理ゲートは異なるFPGA上で実行されるようにすることができる。異なるFPGAにおける第1論理ゲートと第3論理ゲートとの間の接続は、同一のFPGAにおける2つの論理ゲート間の接続と比較するところの追加遅延をもつことにより、不正確な動作を発生してもよい。技術マッピングモジュール240は、同一のFPGA上の2つの論理ゲート間に遅延要素(又はバッファ)を追加して、異なるFPGA上の論理ゲート間の遅延に合致させてもよい。
【0029】
配置及びルーティングモジュール250は、ゲートレベルネットリストとパーティション分割及びマッピングに関連する情報とを受信し、各DUT論理要素(クロック生成器要素を含む)の配置及び接続を決定する。配置及びルーティングモジュール250は、論理要素とデバグ論理との間のルーティングが最適化されるように、論理要素とデバグ論理を配置する。
【0030】
ビットストリーム生成モジュール260は、エミュレータ110のFPGAの設定に関する情報を記述する1つ以上のビットストリームを生成する。FPGAの設定には、実行されるハードウェア要素の置換、要素間の接続(すなわち、ルーティング)、及びその他の設計情報が含まれる。ビットストリーム生成モジュール260は、エミュレータ110のFPGAが1つ以上のクロック生成器を備えたDUTのエミュレーションを行うために設定されるように、ビットストリームをエミュレータ110に送信する。ビットストリームは、記憶され、ビットストリーム送信指示の受信に応じてエミュレータ110に提供されてもよい。
【0031】
図3は、エミュレータ110によってエミュレーションされ、エミュレーションされたDUTに対するクロック信号を生成するクロック生成器300を示すブロック図である。本例において、図示のクロック生成器300は、DUTの2つのクロック信号312A及び312Bを生成する。本実施形態では、簡易化のため、クロック信号312を2つのみ図示している。しかしながら、他の実施形態において、クロック生成器300は、2つを上回る数のクロック信号312を生成するであろう。クロック生成器300は、クロック信号312より高い周波数で動作するシステムファストクロック311に応じて動作する。一実施形態において、システムファストクロック311の各サイクル中、クロック信号312の少なくとも1つがエッジ(例えば、立ち上がりエッジ又は立ち下がりエッジ)を出力する。
【0032】
クロック生成器300は、ランダムジッタ生成器302A及び302B、アキュムレータ304A及び304B、最小演算子306、及び比較器308A及び308Bを備える。ランダムジッタ生成器302A、アキュムレータ304A、及び比較器308Aを使用してクロック信号312Aを生成する。ランダムジッタ生成器302B、アキュムレータ304B、及び比較器308Bを使用してクロック信号312Bを生成する。クロック生成器300が(信号312A及び312Bに加えて)追加クロック信号312を生成する他の実施形態において、クロック生成器300は、各追加クロック信号について、追加ランダムジッタ生成器302、アキュムレータ304、及び比較器308を備えるであろう。
【0033】
ランダムジッタ生成器302は、ジッタを各クロック信号312に組み込む。一実施形態において、各ランダムジッタ生成器302は、対応のクロック信号312が有することのできるジッタ値を表すジッタ範囲(例えば、−N〜+M)を記憶する。ジッタ範囲は、対応のクロック信号の設計仕様に基づいて設定される。例えば、クロック信号312の設計仕様は、クロック信号312が1GHz±10%ジッタで動作することを示してもよい。ジッタ範囲は、±10%に基づいて設定される。他の実施形態において、ランダムジッタ生成器302は、これらのパラメータを使用した計算式に基づいてジッタ値を決定するのを可能とするような、より複雑なジッタ値を記憶する。
【0034】
各ランダムジッタ生成器302は、メモリ310から入力314を介して、対応のクロック信号312のクロックパラメータを読み出す。一実施形態において、メモリ310は、図3に示すとおり、クロック生成器300から分離している。他の実施形態において、メモリ310は、クロック生成器300の一部である。他の実施形態において、複数のメモリを使用してクロックパラメータを記憶する。他の実施形態において、メモリが設けられず、クロックパラメータは、通信チャンネル等の他の手段を介して取得される。
【0035】
一実施形態において、メモリ310に記憶された各クロックパラメータはクロックサイクルの周期に関連付けられる。一実施形態において、メモリ310は、各クロック信号312について、少なくとも2つのクロックパラメータを記憶する。1つのクロックパラメータは、クロックの周期の正の部分の幅であり、これは立ち上がりエッジと立ち下がりエッジとの間である。他のクロックパラメータは、クロックの周期の負の部分の幅であり、これは立ち下がりエッジと次の立ち上がりエッジとの間である。ランダムジッタ生成器302は、各クロック信号312のクロックパラメータのうちの少なくとも1つを読み出す。他の実施形態において、メモリ310は、各クロック信号312について、クロックサイクルの周期の半分である単一のクロックパラメータを記憶する。他の実施形態において、記憶される単一のクロックパラメータは、クロックサイクルの周期である。他の実施形態において、記憶されるパラメータは、クロックの周期及びデューティサイクルである。
【0036】
ランダムジッタ生成器302は、記憶されたジッタ範囲内でジッタ値をランダムに選択する(例えば、−Nと+Mとの間の値を選択する)。ランダムジッタ生成器302は、読み出したクロックパラメータとランダムに選択されたジッタ値とに基づいてジッタクロック値を生成する。一実施形態において、ランダムジッタ生成器302は、読み出したクロックパラメータとランダムに選択されたジッタ値とを合計することにより、ジッタクロック値を生成する。他の実施形態において、ジッタクロック値は、異なる方法でクロックパラメータとランダムに選択されたジッタ値とを組み合わせる(例えば、クロックパラメータとジッタ値を乗算、除算、又は差を計算する)ことによって生成することもできる。ランダムジッタ生成器302は、アキュムレータ304にジッタクロック値を記憶するため、出力316を介してジッタクロック値を出力する。
【0037】
各アキュムレータ304は、ジッタクロック値を記憶する記憶要素である。アキュムレータ304は、入力318Aを介して対応するランダムジッタ生成器302からジッタクロック値を受信し、その値を記憶する。アキュムレータ304は、出力320を介して各比較器308にジッタクロック値を出力し、出力322を介して最小演算子306にジッタクロック値も出力する。
【0038】
最小演算子306は、システムファストクロック311を受信し、システムファストクロックのサイクル中、最小演算子306は、アキュムレータ304に記憶された値から最小ジッタクロック値を選択する。最小演算子306は、入力324を介して、アキュムレータ304に記憶されたジッタクロック値を記憶する。最小演算子306は、受信したジッタクロック値から、最小値を有するジッタクロック値を選択する。最小演算子306は、出力326を介して最小ジッタクロック値を比較器308に出力する。
【0039】
比較器308は、各クロック信号312上のエッジを出力するか否かを判定する。各比較器308は、入力328を介して、最小演算子306に出力された最小ジッタクロック値を受信する。各比較器308は、入力330を介して、各アキュムレータ304に記憶されたジッタクロック値も受信する。比較器308は、アキュムレータ304に記憶されたジッタクロック値を最小ジッタクロック値と比較する。これらの値が同一でない場合、比較器308は、各クロック信号312の状態を変化させない(エッジを出力しない)。一方、これらの値が同一である場合、比較器308は、クロック信号312の状態を変更する。比較器308は、クロック信号312が低い状態にあった場合、クロック信号312に対して高い状態(立ち上がりエッジ)を出力する。しかしながら、クロック信号が高い状態にあった場合、比較器は低い状態(立ち下がりエッジ)を出力する。
【0040】
一実施形態において、比較器308は、これらの値が同一である時、現在のシステムファストクロックサイクル中、クロック信号312の状態を変更する代わりに、クロック信号312の状態を変更する前に、1つ以上の追加システムファストクロックサイクルが通過するのを待ってもよい。比較器308は、適切なタイミングでない、又はある条件が満たされていないという理由により、状態を変更させるのを待ってもよい。例えば、エミュレータ110を動作させる試験台が状態変化の出力の準備ができていない場合、比較器308は試験台の準備が整うまで待機するであろう。
【0041】
さらに、各比較器308は、各アキュムレータ304に記憶された値と最小ジッタクロック値との間の差を計算する。比較器308は、出力332を介して計算された差を出力し、この差を新たなジッタクロック値として各アキュムレータ304に記憶する。新たなジッタクロック値は、アキュムレータ304に前回記憶された値と置き換えられる。他の実施形態において、比較器308は、エッジを生成するか否かを判定するためにアキュムレータ304に記憶されたジッタクロック値を最小ジッタクロック値と比較する代わりに、アキュムレータ値と最小ジッタクロック値との差を計算し、計算された差が0と等しい場合、エッジを生成すると判定する。
【0042】
比較器308によってアキュムレータ304に記憶された値が0である場合、各ランダムジッタ生成器302は、アキュムレータ304に対する新たなジッタクロック値を生成する。ランダムジッタ生成器302は、各クロック信号312のクロックパラメータをメモリ310から読み出す。メモリ310が各クロック信号312に対して少なくとも2つのクロックパラメータを記憶する実施形態において、ランダムジッタ生成器302は、前回読み込んだクロックパラメータとは異なるクロックパラメータを読み出す。例えば、ランダムジッタ生成器302がクロックサイクルの正の部分の幅を前回読み出した場合、ランダムジッタ生成器302は、負の部分の幅を読み出す。ランダムジッタ生成器302は、読み出されたクロックパラメータとジッタ範囲からランダムに選択されたジッタ値とを合計することによって新たなジッタクロック値を生成する。ランダムジッタ生成器302は、アキュムレータ304に新たなジッタクロック値を記憶し、前回記憶された値と置き換える。
【0043】
システムファストクロックの次のサイクル中、アキュムレータ304は、自身に記憶されたジッタクロック値を出力し、最小演算子306は最小ジッタクロック値を選択し、比較器308はエッジを出力するか否かを判定し、新たなジッタクロック値をアキュムレータ304に記憶する。従って、システムファストクロックの各サイクル中、プロセスを繰り返す。さらに、クロックパラメータがメモリ310から読み出される度に、ジッタがランダムジッタ生成器302によってパラメータに組み込まれる。一実施形態において、クロックのいずれかで新たなエッジが要求される時のみ、このプロセスが繰り返される。
【0044】
一実施形態において、1つ以上のメモリを使用してアキュムレータ304を記憶する。アキュムレータ304を記憶するメモリは、メモリ310とすることができる。
【0045】
一実施形態において、図3に示す動作は、プロセッサ又はマイクロコントローラによって実施される。本実施形態において、要素302、304、306、及び308は、プロセッサに、メモリ310からのクロックパラメータを読み出させ、クロックジッタ値の選択、アキュムレーションの記憶、最小値の計算、比較の実施、クロックエッジの発行、及びアキュムレータの更新を行わせる命令である。命令の順が異なる場合もある。
【0046】
図4は、一実施形態に係る、クロック生成器300の動作中のクロック信号312A、クロック信号312B、及びシステムファストクロック311を示すタイミング図400である。タイミング図400は、システムファストクロック404A、404B、404C、404D、404E、404F、404Gの7つのサイクルを示している。本例では、クロック信号312が低い状態で開始し、メモリ310が各クロック信号312に対して単一のクロックパラメータを記憶するものとする。メモリ310は、信号312Aに対してクロックパラメータ「55」を記憶し、信号312Bに対してクロックパラメータ「60」を記憶する。さらに、信号312Aのジッタ範囲を「±5」とし、信号312Bのジッタ範囲を「±3」とする。
【0047】
クロック生成器300が初期化されるとき、クロック生成器300は、メモリ310からクロック信号312Aに対するクロックパラメータ「55」を読み出し、ジッタ範囲「±5」からジッタ値「+4」をランダムに選択する。クロック生成器300は、クロックパラメータとジッタ値とを合計し、結果の「59」をアキュムレータ304Aに記憶する。さらに、クロック生成器300は、メモリ310からクロック信号312Bに対するクロックパラメータ「60」を読み出し、ジッタ範囲「±3」からジッタ値「−3」を選択する。クロック生成器300は、これらを合計し、結果の「57」をアキュムレータ304Bに記憶する。
【0048】
クロックサイクル404A中、クロック生成器300は、アキュムレータ304Bが最小値「57」を含むことを判定し、結果として、クロック信号312Bに対して立ち上がりエッジ406を出力する。クロック生成器300は、メモリ310からクロック信号312Bに対するクロックパラメータ「60」を読み出し、対応するジッタ範囲からジッタ値「−2」をランダムに選択する。クロック生成器300は、クロックパラメータとジッタ値とを合計し、結果の「58」をアキュムレータ304Bに記憶し、前回記憶された値と置き換える。さらにクロック生成器300は、アキュムレータ304Aに記憶された値の「59」と最小値「57」との差を求める。クロック生成器300は、結果の「2」をアキュムレータ304Aに記憶する。
【0049】
サイクル404B中、クロック生成器300は、アキュムレータ304Aが最小値の「2」を含むことを判定し、結果として、クロック信号312Aに対して立ち上がりエッジ408を出力する。クロック生成器300は、メモリ310からクロック信号312Aに対するクロックパラメータ「55」を読み出し、ジッタ値「+1」をランダムに選択する。クロック生成器300は、クロックパラメータとジッタ値とを合計し、結果の「56」をアキュムレータ304Aに記憶する。さらに、クロック生成器300は、アキュムレータ304Bに記憶された値の「58」と最小値「2」との差を求める。クロック生成器300は、結果の「56」をアキュムレータ304Bに記憶する。
【0050】
サイクル404C中、クロック生成器300は、アキュムレータ304A及び304Bの双方が最小/同一値の「56」を含むことを判定する。結果として、クロック生成器300は、クロック信号312Aに対して立ち下がりエッジ410を出力し、クロック信号312Bに対して立ち下がりエッジ412を出力する。クロック生成器300は、メモリ310からクロック信号312Aに対するクロックパラメータ「55」を読み出し、対応のジッタ範囲からジッタ値「+2」をランダムに選択する。クロック生成器300は、クロックパラメータとジッタ値とを合計し、結果の「57」をアキュムレータ304Aに記憶する。さらにクロック生成器300は、メモリ310からクロック信号312Bに対するクロックパラメータ「60」を読み出し、対応のジッタ範囲からジッタ値「−2」をランダムに選択する。クロック生成器300は、クロックパラメータとジッタ値とを合計し、結果の「58」をアキュムレータ304Aに記憶する。
【0051】
クロックサイクル404D中、クロック生成器300は、アキュムレータ304Aが最小値の「57」を含むため、クロック信号312Aに対する立ち上がりエッジ414を出力する。クロック生成器300は、メモリ310から読み出したクロックパラメータ「55」とランダムに選択されたジッタ値「+5」との和に基づき、アキュムレータ304Aにジッタクロック値「60」を記憶する。さらにクロック生成器300は、前回アキュムレータ304Bに記憶された値「58」と最小値「57」との差が「1」であるため、アキュムレータ304Bにジッタクロック値「1」を記憶する。
【0052】
クロックサイクル404E中、クロック生成器300は、アキュムレータ304Bが最小値「1」を含むため、クロック信号312Bに対して立ち上がりエッジ416を出力する。クロック生成器300は、クロックパラメータ「60」とランダムに選択されたジッタ値「−1」との和に基づき、アキュムレータ30BAにジッタクロック値「59」を記憶する。さらに、クロック生成器300は、アキュムレータ304Aに前回記憶された値「60」と最小値「1」との差が「59」であるため、アキュムレータ304Aにジッタクロック値「59」を記憶する。
【0053】
クロックサイクル404F中、クロック生成器300は、アキュムレータ304A及び304の双方が最小値「59」を含むため、クロック信号312Aに対して立ち下がりエッジ418を出力し、クロック信号312Bに対して立ち下がりエッジ420を出力する。クロック生成器300は、アキュムレータ304Aにジッタクロック値「50」(クロックパラメータ「55」とランダムに選択されたジッタ値「−5」との和)を記憶する。クロック生成器300はまた、アキュムレータ304Bにジッタクロック値「63」(クロックパラメータ「60」とランダムに選択されたジッタ値「+3」との和)も記憶する。クロックサイクル404G中、クロック生成器300は、アキュムレータ304Aが最小値「50」を含むため、クロック信号312Aに対して立ち上がりエッジ422を出力する。
【0054】
以下に示す表は、図4の例において、各システムファストクロックサイクル404の開始時に各アキュムレータ304によって記憶された値を示している。*印は、新たな値がランダムジッタ生成器302から取得されたことを示す。
【表1】
【0055】
タイミング図400からわかるとおり、クロック信号312のサイクルは、ジッタを含むことによって変化するであろう。例えば、クロック信号312Aについては、立ち上がりエッジ408と414との間に2つのシステムファストクロックサイクル(サイクル404B及び404C)がある。しかしながら、立ち上がりエッジ414と422との間には、3つのシステムファストクロックサイクル(サイクル404D〜404F)がある。ジッタが含まれなかった場合、各クロック信号312のすべてのサイクルが同一となるであろう。クロック信号312のジッタ及び変化により、エミュレータ110が、例えばDUTにおけるクロックドメインの横断を正しくエミュレーションすることができるようになる。ジッタがなければ、クロック信号312Aが値「60」を有するクロック信号312Bより低い値「55」を有するために、第1クロックエッジがクロック信号312A上にあったであろうことにも気付くかもしれない。クロック信号312B上のエッジが最初に現れると、本発明なしには露呈しなかったであろう設計バグを露呈することもある。
【0056】
図5は、一実施形態に係る、DUTの複数のクロック信号のエミュレーションを行うプロセスを示すフロー図である。他の実施形態では、図5のステップを異なる順に実施することができる。さらに他の実施形態には、ここに記載のステップ以外の異なる、且つ/又は、追加のステップを含むことができる。
【0057】
この例示の目的で、エミュレータ110は、DUTのクロック信号に対するクロックパラメータを記憶するものとする。さらに、エミュレータ110は、クロック信号が有することのできるジッタ値を表す、各クロック信号に対するジッタ範囲を記憶するものとする。
【0058】
エミュレータ110は、各クロック信号に対してジッタクロック値を生成する(502a)。クロック信号に対してジッタクロック値を生成するため、エミュレータ110は、クロック信号に対して記憶されたクロックパラメータを特定し、クロックパラメータとクロック信号のジッタ範囲からランダムに選択されたジッタ値とを合計する。エミュレータ110は、システムファストクロックのサイクルが開始されたか否かを判定する(504)。システムファストクロックのサイクルが開始されていない場合、エミュレータ110は、次のシステムファストクロックサイクルが開始するのを待つ(506)。
【0059】
システムファストクロックサイクルが開始すると、エミュレータ110は、生成されたジッタクロック値から最小値を決定する(508)。エミュレータ110は、最小ジッタクロック値を有するクロック信号上のエッジを出力する(510)。
【0060】
エミュレータ110は、各クロック信号に対する新たなジッタクロック値を生成する(512)。クロック信号が最小ジッタクロック値を有していなかった場合、エミュレータ110は、そのクロック信号について、クロック信号のために前回生成されたジッタクロック値と最小値との差となる新たなジッタクロック値を決定する。クロック信号が最小ジッタクロック値を有していた場合、エミュレータ110は、そのクロック信号について、新たなジッタクロック値を、クロックのために記憶されたクロックパラメータとクロック信号のジッタ範囲からランダムに選択されたジッタ値との和となるように決定する。その後、新たに生成されたジッタクロック値のために、ステップ504〜512を繰り返す。
【0061】
<演算機械の構造>
さて図6を参照すると、これは機械可読媒体から命令を読み出し、プロセッサ(又はコントローラ)でそれらを実行することのできる一例としての機械の要素を示すブロック図である。具体的には、図6は、コンピュータシステム600の一例としての形態である機械の図的表現であり、その中には図1〜5で説明した方法のいずれか1つ以上を機械に実施(実行)させるための命令624(例えば、ソフトウェア又はプログラムコード)が含まれている。コンピュータシステム600は、図1のエミュレーション環境100に示された実体(例えば、ホストシステム110、エミュレータ120)の1つ以上に使用されてもよい。
【0062】
一例としてのコンピュータシステム600は、ハードウェアプロセッサ602(例えば、中央処理装置(CPU)、グラフィックス処理装置(GPU)、デジタル信号プロセッサ(DSP)、1つ以上の特定用途専用集積回路(ASIC)、1つ以上の無線周波数集積回路(RFIC)、又はこれらのいずれかの組み合わせ)、メインメモリ604、及び静的メモリ606を備え、これらは互いにバス608を介して通信するよう設定される。コンピュータシステム600はさらに、グラフィックス表示部610(例えば、プラズマ表示パネル(PDP)、液晶ディスプレイ(LCD)、プロジェクタ、又はブラウン管(CRT))を備えてもよい。コンピュータシステム600は、英数字入力装置612(例えば、キーボード)、カーソル制御装置614(例えば、マウス、トラックボール、ジョイスティック、モーションセンサ、又はその他のポインティング装備)、記憶部616、信号生成装置618(例えば、スピーカ)、及びネットワークインタフェース装置620も備えてよく、これらもバス608を介して通信するよう設定される。
【0063】
記憶部616は、本明細書に記載の方法又は機能のうちのいずれか1つ以上を実現する命令624(例えば、ソフトウェア)を記憶する機械可読媒体622を備える。命令624(例えば、ソフトウェア)はまた、コンピュータシステム600による実行中、メインメモリ604又はプロセッサ602(例えば、プロセッサのキャッシュメモリ内)内に、全部又は少なくとも一部存在してもよく、メインメモリ604及びプロセッサ602もまた機械可読媒体を構成する。命令624(例えば、ソフトウェア)は、ネットワークインタフェース装置620を介してネットワーク626で送受信されてもよい。
【0064】
機械可読媒体622は、一例としての実施形態において単一の媒体として示したが、「機械可読媒体」という用語は、命令(例えば、命令624)を記憶可能な単一又は複数の媒体(例えば、集中データベース、分散データベース、又は関連キャッシュ及びサーバ)を含むものと理解されなければならない。また「機械可読媒体」という用語は、機械によって実行される命令(例えば、命令624)を記憶可能で、本明細書に開示の方法のうちのいずれか1つ以上を機械に実施させるいずれかの媒体を含むものと理解されなければならない。「機械可読媒体」という用語は、固体メモリ、光学媒体、及び磁気媒体の形態でのデータリポジトリを含むが、これに限定されるものでない。
【0065】
当分野で既知のとおり、コンピュータシステム600は、図6に示す以外の異なる、且つ/又は、他の要素を有することができる。またコンピュータシステム600は、図示の特定要素を省くことができる。例えば、エミュレータ120として作用するコンピュータシステム600は、他の要素のうち、1つ以上のハードウェアプロセッサ602、複数の記憶部616、ネットワークインタフェース装置620、及び複数の設定可能論理回路(図1を参照して上述したとおり)を含んでもよいが、英数字入力装置612とカーソル制御装置614とを省いてもよい。
【0066】
<追加構成の考察>
本明細書を通じて、複数の例が単一例として説明した要素、動作、又は構造を実装してもよい。1つ以上の方法の個々の動作を別個の動作として図示及び説明したが、個々の動作のうちの1つ以上が同時に実施されてもよく、これらの動作が図示の順に実施される必要はない。例示の構成において別個の要素として表した構造及び機能が、組み合わせられた構造又は要素として実装されてもよい。同様に、単一の要素として表した構造及び機能が、別個の要素として実装されてもよい。これらの変形、修正、追加、及び改良並びにその他の変形、修正、追加、及び改良は本明細書の主題の範囲内である。
【0067】
本明細書中、例えば、図1〜6に示すとおり、論理、若しくは多数の要素、モジュール、又は機構を含むものとして特定の実施形態を説明した。モジュールは、ソフトウェアモジュール(例えば、機械可読媒体上または送信信号内に実装されたコード)又はハードウェアモジュールのいずれかを構成してもよい。ハードウェアモジュールは、特定動作を実施可能な有形のユニットであり、特定の方法で構成又は配置されてもよい。一例としての実施形態において、1つ以上のコンピュータシステム(例えば、スタンドアロンコンピュータシステム、クライアントコンピュータシステム、又はサーバコンピュータシステム)又はコンピュータシステムの1つ以上のハードウェアモジュール(例えば、プロセッサ、又はプロセッサ群)は、本明細書に記載の特定動作を実施するよう動作するハードウェアモジュールとしてソフトウェア(例えば、アプリケーション又はアプリケーション部分)によって構成されてもよい。
【0068】
種々の実施形態において、ハードウェアモジュールは、機械的又は電気的に実装されてもよい。例えば、ハードウェアモジュールは、特定動作を実施するように持続的に構成された専用回路又は論理(例えば、現場プログラム可能なゲートアレイ(FPGA)又は特定用途専用集積回路(ASIC)等の特殊目的用プロセッサ)を備えてもよい。ハードウェアモジュールはまた、特定の動作を実施するためにソフトウェアによって一時的に構成されたプログラム可能な論理又は回路(例えば、汎用プロセッサ又はその他のプログラム可能プロセッサ内に含まれるような)を備えてもよい。専用の持続的に構成された回路にハードウェアモジュールを機械的に実装するか、或いは一時的に構成された(例えば、ソフトウェア(又はコンピュータプログラムコード)で構成された)回路にハードウェアモジュールを機械的に実装するかは、コスト及び時間を考慮して決定されてもよいことが理解されるであろう。
【0069】
本明細書に記載の一例としての方法の種々の動作は、少なくとも部分的に、関連動作を実施するよう一時的に(例えば、ソフトウェアによって)構成されるか持続的に構成される、プロセッサ602等の1つ以上のプロセッサによって実施されてもよい。一時的に構成されるか、持続的に構成されるかを問わず、このようなプロセッサは、1つ以上の動作又は機能を実施するよう動作するプロセッサ実装モジュールを構成してもよい。本明細書で言及したモジュールは、いくつかの例としての実施形態において、プロセッサ実装モジュールを備えてもよい。
【0070】
1つ以上のプロセッサはまた、「クラウドコンピューティング」環境における、又は「サービス型ソフトウェア(SaaS)」としての関連動作の性能をサポートするように動作してもよい。例えば、少なくとも一部の動作が
コンピュータ群(プロセッサを含む機械の例として)によって実施されてもよく、これらの動作は、ネットワーク(例えば、インターネット)及び1つ以上の適切なインタフェース(例えば、アプリケーションプログラムインタフェース(API))を介してアクセス可能である。
【0071】
特定動作の性能が1つ以上のプロセッサの間で分散されてもよく、単一の機械内に設けられるものだけでなく、複数の機械に展開されるものでああってよい。いくつかの例としての実施形態において、1つ以上のプロセッサ又はプロセッサ実装モジュールは、単一の地理的位置(例えば、家庭環境、会社環境、又はサーバファーム)に配置されてもよい。他の例としての実施形態において、1つ以上のプロセッサ又はプロセッサ実装モジュールは、複数の地理的位置に分布してもよい。
【0072】
本明細書の一部は、機械メモリ(例えば、コンピュータメモリ)内のビット又はバイナリデジタル信号として記憶されたデータ上の動作のアルゴリズム又は象徴的表現で表されている。これらのアルゴリズム又は象徴的表現は、データ処理分野の当業者が、自らの仕事の内容を同業者に伝える際に使用される技術の例である。本明細書において使用される「アルゴリズム」は、所望の結果を導く自己無撞着な一連の動作又は同様の処理である。この文脈において、アルゴリズム及び動作には、物理的量の物理的操作が含まれる。通常、このような量は、記憶、アクセス、転送、結合、比較、又はその他の機械による操作が可能な電気信号、磁気信号、又は光学信号の形態を採ってもよいが、必ずしもこのような形態でなくてよい。時として、主に共通して使用されるという理由で、このような信号を「データ」、「コンテンツ」、「ビット」、「値」、「要素」、「符号」、「性質」、「用語」、「数」、「数値」等の単語を使用して言及するのが好都合である。しかしながら、このような単語は、単に好都合なラベルであって、適切な物理量と関連付けられなければならない。
【0073】
特段の指摘の無い限り、「処理」、「演算」、「計算」、「決定」、「表現」、「表示」等の単語を使用した本明細書中での議論は、1つ以上のメモリ(例えば、揮発性メモリ、不揮発性メモリ、又はそれらの組み合わせ)、レジスタ、又は情報の受信、記憶、送信、又は表示を行うその他の機械要素内の物理的(例えば、電子的、磁気的、又は光学的)量として表現されるデータの操作又は変換を行う機械(例えば、コンピュータ)の作用又はプロセスを言及するものであってもよい。
【0074】
本明細書中で使用した「一実施形態」又は「実施形態」の参照は、本実施形態との関連で説明した特定の要素、特徴、構造、又は性質が少なくとも1つの実施形態に含まれることを意味する。本明細書中、種々の箇所で出現する「一実施形態において」というフレーズは、必ずしもすべてが同一の実施形態について言及しているものでない。
【0075】
いくつかの実施形態は、その派生物とともに「連結」及び「接続」という表現を使用して記述されてもよい。例えば、いくつかの実施形態では、2つ以上の要素が直接の物理的接触又は電気的接触状態にあることを示す「連結」という用語を使用して記述されてもよい。しかしながら、「連結」という用語は、2つの要素が互いに直接接触していないものの、互いに協働する、又は相互作用することも意味してよい。本実施形態は、この文脈において限定されるものでない。
【0076】
本明細書中で使用される「備える」、「備えている」、「含む」、「含んでいる」、「有する、」「有している」、又はそれらの変化形は、非排他的包含であることを意図するものである。例えば、挙げられた要素を備えるプロセス、方法、物品、又は装置は、必ずしもこれらの要素のみに限定されるものでなく、明示的に挙げられていないか、又はこのようなプロセス、方法、物品、又は装置に本来備わっている他の要素も含んでよい。さらに、反対であることを明示的に指摘していない限り、「又は」は、包含的な「又は」であり、排他的な「又は」ではない。例えば、条件A又はBは、以下のいずれかによって満たされる。Aが真実であり(又は存在し)、Bが誤りである(又は存在しない)。Aが誤りであり(又は存在せず)、Bが真実である(存在する)。A及びBの双方が真実である(又は存在する)。
【0077】
また不定冠詞の使用が、本明細書中の実施形態の要素及び構成要素を説明する際に採用されている。これは、便宜上使用したに過ぎず、本発明の一般的意味を与えるものである。本説明は、1つ又は少なくとも1つを含み、且つ、明示の無い限り複数も含むものと理解しなければならない。
【0078】
当業者は、本開示を熟読することにより、本明細書に記載の実施形態のさらに追加の代替構造設計及び機能設計を理解するであろう。従って、特定の実施形態及び適用例について図示及び説明を行ったが、本開示の実施形態は、本明細書に開示の精密な構成及び構成要素に限定されるものでないことを理解しなければならない。本明細書に記載の方法及び装置の配置、動作、及び詳細について、添付のクレームに規定の精神及び範囲から逸脱することなく、当業者にとって明らかな修正、変更、及び変形がなされてもよい。
図1
図2
図3
図4
図5
図6