(57)【要約】メモリ物理層インタフェース（ＰＨＹ）（１４０，２０５）に統合されたコントローラ（２１５）は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等の関連する外部メモリ（１３５）と通信するためのメモリＰＨＹを構成するのに用いられるトレーニングを制御するために使用可能であり、これにより、ＢＩＯＳ（１２０）とメモリＰＨＹとの間のデータパイプライン上でトレーニングシーケンスを提供する必要性が取り除かれる。例えば、メモリＰＨＹに統合されたコントローラ（２１５）は、トレーニングアルゴリズムに基づいて、外部メモリと通信するためのメモリＰＨＹの読み出しトレーニング及び書き込みトレーニングを制御することができる。このトレーニングアルゴリズムは、トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路を特徴付けるシード情報をＢＩＯＳから受信することなく、メモリＰＨＹと外部メモリとの間のタイミング遅延及び電圧オフセットの解決に向けて収束する、シードレストレーニングアルゴリズムであってもよい。【選択図】図１
2017523488.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリ（１３５）に接続するためのメモリ物理層インタフェース（ＰＨＹ）（１４０，２０５）と、
前記メモリＰＨＹに統合されたコントローラ（２１５）であって、トレーニングアルゴリズムに基づいて、前記外部メモリと通信するための前記メモリＰＨＹのトレーニングを制御するためのコントローラ（２１５）と、を備える装置。
【請求項２】
前記トレーニングアルゴリズムは、シードレストレーニングアルゴリズムである、請求項１に記載の装置。
【請求項３】
前記コントローラは、前記トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路を特徴付けるシード情報を基本入出力システム（ＢＩＯＳ）（１２０）から受信することなく、前記メモリＰＨＹと前記外部メモリとの間のタイミング遅延及び電圧オフセットの解決に向けて収束するように、前記メモリＰＨＹのトレーニングを制御する、請求項１に記載の装置。
【請求項４】
前記トレーニングアルゴリズムに基づいて前記コントローラによって生成された制御信号に応じて、前記外部メモリに送られるプログラム可能なコマンドのシーケンスを高速に生成するための第１のトレーニングエンジン（２２０）をさらに備える、請求項３に記載の装置。
【請求項５】
前記第１のトレーニングエンジンによって生成された制御信号に応じて、前記外部メモリに送られるトレーニングデータのシーケンスを生成するための第２のトレーニングエンジン（２２５）をさらに備える、請求項４に記載の装置。
【請求項６】
前記外部メモリから受信したシーケンスを、前記第２のトレーニングエンジンによって生成された前記トレーニングシーケンスと比較するための第３のトレーニングエンジンをさらに備える、請求項５に記載の装置。
【請求項７】
前記第１のトレーニングエンジンは、前記トレーニングアルゴリズムに基づいて、前記第２のトレーニングエンジン及び前記第３のトレーニングエンジンのうち少なくとも１つによって実行されるタスクの実行を順序付ける、請求項６に記載の装置。
【請求項８】
前記第３のトレーニングエンジンは、前記外部メモリからのデータ読み出し及び前記外部メモリへのデータ書き込みの少なくとも１つのために前記メモリＰＨＹによって用いられるタイミングパラメータ及び電圧オフセットパラメータのうち少なくとも１つを調整する、請求項６に記載の装置。
【請求項９】
前記第３のトレーニングエンジンは、サンプリングされたトレーニングデータの正確なサンプル及び不正確なサンプルの数に基づいて、前記タイミング遅延及び前記電圧オフセットのうち少なくとも１つを決定する、請求項８に記載の装置。
【請求項１０】
メモリ物理層インタフェース（ＰＨＹ）（１４０，２０５）に統合されたコントローラ（２１５）にて、トレーニングアルゴリズムに基づいて、外部メモリ（１３５）と通信するための前記メモリＰＨＹをトレーニングするための制御信号を生成すること、を含む方法（３００）。
【請求項１１】
前記制御信号を生成することは、シードレストレーニングアルゴリズムに基づいて前記制御信号を生成することを含む、請求項１０に記載の方法。
【請求項１２】
前記制御信号を生成することは、前記トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路を特徴付けるシード情報を基本入出力システム（ＢＩＯＳ）から受信することなく、前記メモリＰＨＹと前記外部メモリとの間のタイミング遅延及び電圧オフセットの解決に向けて前記トレーニングアルゴリズムが収束するように、前記制御信号を生成することを含む、請求項１０に記載の方法。
【請求項１３】
第１の制御信号を前記コントローラから第１のトレーニングエンジン（２２０）へ提供することであって、前記第１のトレーニングエンジンは、前記第１の制御信号に応じて、前記外部メモリに送られるコマンドのシーケンスを高速で生成することをさらに含む、請求項１０に記載の方法。
【請求項１４】
第２の制御信号を前記第１のトレーニングエンジンから第２のトレーニングエンジン（２２５）へ提供することであって、前記第２のトレーニングエンジンは、前記第１のトレーニングエンジンからの前記第２の制御信号に応じて、前記外部メモリに送られるトレーニングシーケンスを生成することをさらに含む、請求項１３に記載の方法。
【請求項１５】
第３の制御信号を前記第１のトレーニングエンジンから第３のトレーニングエンジンへ提供することであって、前記第３のトレーニングエンジンは、前記第３の制御信号に応じて、前記外部メモリから受信したシーケンスを、前記第２のトレーニングエンジンによって生成された前記トレーニングシーケンスと比較することをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記第２のトレーニングエンジン及び前記第３のトレーニングエンジンのうち少なくとも１つによって実行されるタスクの実行を、前記第１のトレーニングエンジンが、前記第２のトレーニングエンジン及び前記第３のトレーニングエンジンのうち少なくとも１つに対して提供される信号に基づいて順序付けすることをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記第３のトレーニングエンジンにて、前記外部メモリからのデータ読み出し及び前記外部メモリへのデータ書き込みのうち少なくとも１つのために前記メモリＰＨＹによって用いられるタイミング遅延及び電圧オフセットのうち少なくとも１つを決定することをさらに含む、請求項１５に記載の方法。
【請求項１８】
前記タイミング遅延及び前記電圧オフセットのうち少なくとも１つを決定することは、サンプリングされたトレーニングデータ内の正確なサンプル及び不正確なサンプルの所定の比率に基づいて、前記タイミング遅延及び前記電圧オフセットのうち少なくとも１つを決定することを含む、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、概して処理システムに関し、具体的には、処理システムのメモリ物理レイヤインタフェースに関する。
【背景技術】
【０００２】
システムオンチップ（systems-on-a-chip：ＳＯＣ）等の処理システムは、メモリを用いて、データ又は命令を後に使用するために記憶する。例えば、ＳＯＣは、命令又はデータをメモリから読み出し、命令又はデータを用いて演算を実行し、結果をメモリに書き戻すことの可能な中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）、加速処理装置（ＡＰＵ）等の処理装置を含み得る。処理システムは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等のメモリモジュールへのアクセスを制御するメモリ物理レイヤインタフェースを含む得る。ＤＲＡＭを用いて情報を記憶することにより、処理システムの動作中に処理装置から記憶情報にアクセスできるようになっている。処理システムのメモリ物理レイヤインタフェースは、従来、「メモリＰＨＹ」と呼ばれている。メモリコントローラは、通常、メモリＰＨＹの動作を制御するために用いられる。
【０００３】
メモリＰＨＹは、通常、ＤＲＡＭからのデータの読み出し又はＤＲＡＭへのデータの書き込みを正確に行うことが可能になる前に、メモリＰＨＹとＤＲＡＭとの間のインタフェースを介してやり取りされるシーケンスを用いてトレーニングされる。インタフェーストレーニングの手順は、読み出し及び書き込み用のインタフェースエンドポイントでのコマンド発行とデータサンプルタイミングとの比較的粗い同期を実行するためのグローバルインタフェース初期化のメカニズム（a global interface initialization mechanism）を含んでもよい。このグローバル同期のためのトレーニングシーケンスは、例えば、「バブル（bubble）」と呼ばれ得るコマンドギャップを用いて周期的な形に区切られた、ＤＲＡＭコマンドの連続的なストリームによって構築されてもよい。このシーケンスは、連続的なストリーム内の粗く／汎用的なインタフェースのタイミングをフレーム化又は同期化するために用いることの可能な一連の時間／イベントマーカを生成する。その後、より精密な信号毎のトレーニング手順を用いて、データ信号をサンプリングするための最適なタイミング及び電圧オフセットを検出してもよい。信号毎のトレーニング手順用のトレーニングシーケンスは、ＤＲＡＭから読み出され及び／又はＤＲＡＭに書き込まれる複数の「１」及び複数の「０」のランダムな組み合わせを含んでもよい。トレーニングシーケンスに応じてＤＲＡＭから戻される信号は、「データアイ（data eye）」の輪郭（contour）を決定するのに用いられるが、データアイの輪郭は、時間と電圧の関数としてデータ信号の値を表す、立上りエッジ、立下りエッジ及び高位／低位電圧を示すプロットである。
【０００４】
従来のトレーニング手順は、処理システムのプロセッサで動作するＢＩＯＳコードによって起動される。しかし、ＢＩＯＳは、通常、メモリＰＨＹから論理的又は物理的に離れている。例えば、ＢＩＯＳとメモリＰＨＹとは、データパイプライン、メモリキャッシュ及びバッファによって分離され得る。これらの介在するインタフェース及びサブシステムブロックは、ＢＩＯＳから送信されたトレーニング制御及びデータのシーケンスを歪ませ、又は、変更する場合がある。例えば、トレーニングシーケンスにバブルが加わって、効率的なトレーニングアルゴリズムの検出を更に困難にする場合がある。このため、ＢＩＯＳは、通常、複雑なトレーニング制御シーケンスのシーディング（seeding）及びデータ後処理スキームをトレーニングコードに組み込むことになる。この両方のアプローチには、重大な欠陥がある。例えば、後処理中にデータを移動、マイニング及び操作するために追加の時間が必要となることによって、トレーニングを実行するのに必要な時間全体が増加する。合計トレーニング時間配分が固定されている場合には、後処理で費やす追加の時間が必要となれば、他の処理で時間を節約して、全体的なトレーニング時間を配分内に収まるようにしなければならない。時間の節約は、より短いパターンの実行によって可能になるが、その結果、より大きなトレーニングエラーを引き起こす可能性がある。別の例では、アルゴリズムが収束するのを妨げる可能性のある上記パイプラインの課題が回避されるシステム状態からトレーニングを開始するために、トレーニングシーケンスのシーディングが用いられるが、初期システム状態を正確に定義するために適切なシード値を検出するには、システム及びプラットフォームの徹底的な特徴抽出が必要となる。シード値は、データパイプライン、メモリＰＨＹ、又は、ＢＩＯＳからメモリＰＨＹを経由してＤＲＡＭに至り、そしてＢＩＯＳへと戻る、他の論理的又は物理的な実体を特徴付ける情報を含んでもよい。各シード値は、各処理システム又はＤＲＡＭの実装に対して研究施設で特徴付けられなければならない。したがって、生成しなければならないシード情報の量及び種類は、システム及び関連するメモリデバイスの数と多様性とが増加するにつれて急速に拡大しており、これにより、ＢＩＯＳコードのサイズが増大し、ＢＩＯＳの保守がさらに困難になる可能性がある。
【０００５】
本開示は、添付図面を参照することによってより良く理解され、本開示の多くの特徴及び利点が当業者において明らかとなる。異なる図面で用いられる同じ符号は、同様又は同一のアイテムを示している。
【図面の簡単な説明】
【０００６】
【図１】いくつかの実施形態による、１つ以上の中央処理装置（ＣＰＵ）プロセッサコアと画像処理装置（ＧＰＵ）とを含む加速処理装置（ＡＰＵ）のブロック図である。
【図２】いくつかの実施形態による、メモリＰＨＹとＤＲＡＭとを含む処理装置の一部のブロック図である。
【図３】いくつかの実施形態による、図１に示すＡＰＵ等の処理装置に実装され得るメモリＰＨＹをトレーニングする方法のフロー図である。
【図４】いくつかの実施形態による、処理システムの構成要素の少なくとも一部を実装する集積回路装置を設計及び製造する方法を示すフロー図である。
【発明を実施するための形態】
【０００７】
上述したように、ＢＩＯＳとメモリＰＨＹとの間のデータパイプラインは、ＤＲＡＭに提供されるトレーニングシーケンスのタイミングを制御するためにＢＩＯＳに実装され得る効率的なトレーニングアルゴリズムを検出することを、より困難にし得る。さらに、トレーニングシーケンスの変更があると、ＢＩＯＳ内のトレーニングアルゴリズムが、ＤＲＡＭによって戻される信号を処理することがより困難になる。トレーニングアルゴリズムをＢＩＯＳからメモリＰＨＹに移動させることによって、データパイプラインに起因するトレーニングシーケンスの歪みを補償するために実行される、後処理で組み込まれるシステムの時間割当てに関するプレッシャーが軽減可能となり、これにより、タイミングシーケンスのタイミング制御が改善される。また、いくつかの実施形態では、トレーニングアルゴリズムのシーディングの必要性を軽減し又は無くすことができる。さらに、トレーニングアルゴリズムをメモリＰＨＹに実装することによって、メモリＰＨＹを実装するのに用いられるハードウェアの設計を簡素化し、技術者が、処理システムに適合したより効率的なトレーニングアルゴリズムを生成することが可能になる。さらにまた、（例えば、メモリＰＨＹを実装するのに用いられるハードウェアの一部としての）ハードウェアにトレーニングアルゴリズムの実施形態を実装することによって、テストを「高速に」実行することが可能となるが、これは、コマンド及びトレーニングシーケンスがＤＲＡＭインタフェースの最大レートで送信可能であることを意味する。
【０００８】
いくつかの実施形態では、メモリＰＨＹ内のマイクロコントローラ等の統合型コントローラが、関連するＤＲＡＭと通信するためのメモリＰＨＹを構成するのに用いられるトレーニングアルゴリズムを制御するために使用可能であり、これによって、ＢＩＯＳとメモリＰＨＹとの間のデータパイプライン上でトレーニングシーケンスを提供する必要性を取り除く。この結果、トレーニングアルゴリズムは、シードレストレーニングアルゴリズムとして実装することができるが、この理由は、トレーニングシーケンスがデータパイプライン上で搬送される際の歪み又は変更への対処を行う必要が無いからである。本明細書で用いられるように、「シード」情報とは、トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路を特徴付ける情報を指す。トレーニングアルゴリズムは、シード情報を用いて、トレーニングアルゴリズムが同期解決に向けて収束するように初期システム状態を確立するが、これにより、戻り信号の後処理は、メモリＰＨＹと関連するＤＲＡＭとの間のフェーズ差異（つまり、タイミング遅延）及び電圧オフセットに対する解決に向けて収束することができる。このため、「シード有り」のトレーニングアルゴリズムは、収束のためのシード情報を必要とする。一方、「シード無し」のトレーニングアルゴリズムは、シード情報を用いて初期状態を確立せずに、同期解決に向けて収束することができる。しかしながら、いくつかの実施形態においては、ＢＩＯＳは、シードレストレーニングアルゴリズムによって使用可能な構成情報（例えば、ＤＲＡＭの構成を識別する情報等）を、収束の確認をするのに当該情報が不要の可能性があるとしても、提供してよい。
【０００９】
いくつかの実施形態では、マイクロコントローラは、ＤＲＡＭに送信されるプログラム可能なコマンドシーケンスを生成する第１のトレーニングエンジンと、トレーニングシーケンスを生成する第２のトレーニングエンジンと、ＤＲＡＭから受信したトラフィックを、ＤＲＡＭに提供されるトレーニングシーケンスに基づいて当該トラフィックの期待値と比較する第３のトレーニングエンジンと、に接続されている。例えば、第３のトレーニングエンジンは、１つ以上の送信されたトレーニングシーケンスを、受信した信号と関連付けて、送信シーケンスと受信シーケンスとの間のタイミング遅延を判定してもよい。また、第３のトレーニングエンジンは、メモリＰＨＹによって用いられるタイミング又は電圧のオフセットを調整してもよい。第１のトレーニングエンジンは、第２及び第３のトレーニングエンジンによって実行されるタスクの実行を順序付けしてもよい。
【００１０】
図１は、いくつかの実施形態による、１つ以上の中央処理装置（ＣＰＵ）プロセッサコア１０５，１１０と、画像処理装置（ＧＰＵ）１１５と、を含む加速処理装置（ＡＰＵ）１００のブロック図である。ＡＰＵ１００は、システムオンチップ（ＳＯＣ）として実装され得る。ＣＰＵプロセッサコア１０５，１１０は、命令を、個別に、同時に、又は、並列に実行することができる。図１に示すＡＰＵ１００は、２つのＣＰＵプロセッサコア１０５，１１０を含んでいるが、本開示の利益を享受する本技術分野の当業者であれば、ＡＰＵ１００内のプロセッサコアの数が設計事項であることを理解できるであろう。ＡＰＵ１００のいくつかの実施形態は、図１に示す２つのＣＰＵプロセッサコア１０５，１１０よりも多い又は少ないＣＰＵプロセッサコアを含み得る。ＧＰＵ１１５は、ディスプレイに出力するのに用いられる視覚画像を生成するためのものである。また、ＧＰＵ１１５のいくつかの実施形態は、複数の処理コア（図示省略）を含み得る。
【００１１】
ＣＰＵプロセッサコア１０５は、ハードウェア、ファームウェア、ソフトウェア、又は、ハードウェア、ファームウェア及びソフトウェアの組み合わせとして実装することの可能な基本入出力システム（ＢＩＯＳ）１２０を含む。ＢＩＯＳ１２０のいくつかの実施形態は、例えばＡＰＵ１００を含むシステムの電源が投入され又は当該システムが起動すると、ＡＰＵ１００の構成要素を初期化又はテストするのに用いられる。ＢＩＯＳ１２０は、オペレーティングシステムを読み込むのに用いられてもよい。ＢＩＯＳ１２０が生成する命令又はコマンドは、１つ以上のデータパイプライン（図１では省略）を用いて、ＡＰＵ１００内の他のロケーションに伝送され得る。ＢＩＯＳ１２０は、別の構成として、ＣＰＵプロセッサコア１１０内に実装されてもよいし、ＡＰＵ１００内の他のロケーションに実装されてもよい。
【００１２】
また、図１に示すＡＰＵ１００は、他のＳＯＣロジック１２５を含む。他のＳＯＣロジック１２５のいくつかの実施形態は、アドレスを生成するとともに、メモリリードサイクル又はメモリライトサイクルを開始するＤＭＡエンジン（図示省略）、メモリ間のデータ転送を行うＤＭＡエンジン（図示省略）、又は、データをＣＰＵプロセッサコア１０５，１１０間若しくはＣＰＵプロセッサコアとＧＰＵ１１５との間で転送するＤＭＡエンジン（図示省略）を含み得る。さらに、他のＳＯＣロジック１２５は、ルーティングロジック、コヒーレンシロジック、又は、他の機能を実行するロジックを含んでもよい。他のＳＯＣロジック１２５のいくつかの実施形態は、ＡＰＵ１００と、外部のＤＲＡＭ１３５等の他のメモリとの間のデータフローを調整するメモリコントローラ（ＭＣ）１３０を含む。メモリコントローラ１３０は、外部メモリからの情報の読み出し及び外部メモリへの情報の書き込みを制御するのに用いられるロジックを含む。また、メモリコントローラ１３０は、リフレッシュロジックを含んでもよく、このリフレッシュロジックを用いて情報をＤＲＡＭに定期的に再書き込みして、ＤＲＡＭのメモリセル内の情報が保持されてもよい。ＤＲＡＭのいくつかの実施形態は、ダブルデータレート（ＤＤＲ）ＤＲＡＭであってもよく、この場合には、メモリコントローラ１３０は、メモリクロックの立上り及び立下りエッジの両方において、ＤＲＡＭへの又はＤＲＡＭからのデータ転送を行ってもよい。
【００１３】
メモリコントローラ１３０は、ＤＲＡＭ１３５等の他のメモリモジュールの動作を、メモリＰＨＹ１４０と呼ばれ得るメモリ物理レイヤインタフェース１４０を介して送信された信号を用いて制御してもよい。メモリＰＨＹ１４０は、ＡＰＵ１００に接続され得る他のメモリモジュールの動作を決定する信号を駆動するのに用いられる回路を含む。例えば、メモリＰＨＹ１４０は、ＤＲＡＭ１３５等のメモリモジュールの一部からの読み出し、当該一部への書き込み、当該一部のリフレッシュ又は当該一部の消去を制御する信号を提供してもよい。メモリＰＨＹ１４０は、異なる動作点で動作可能であってもよく、これらの動作点は、メモリＰＨＹ１４０の動作周波数及び／又は動作電圧によって決定されてもよい。例えば、他のＳＯＣロジック１２５は、メモリＰＨＹ１４０及び／又はメモリコントローラ１３０内の同期を決定するクロック信号と、メモリＰＨＹ１４０及び／又はメモリコントローラ１３０が用いる電圧を決定する基準電圧（ＶＤＤ）１５０と、を提供するクロック１４５を含んでもよい。
【００１４】
メモリＰＨＹ１４０をトレーニングして、メモリＰＨＹ１４０とＤＲＡＭ１３５との間の通信中の読み出し性能又は書き込み性能を向上させる必要がある。したがって、メモリＰＨＹ１４０は、集積トレーニング制御ロジック１５５を含み、集積トレーニング制御ロジック１５５を用いて、トレーニングシーケンス又はコマンドの生成、トレーニングシーケンス又はコマンドのＤＲＡＭ１３５への送信、シーケンス又はコマンドの送信に応じてＤＲＡＭ１３５が生成した信号の受信、及び、ＤＲＡＭ１３５からの応答に基づくメモリＰＨＹ１４０のリードパラメータ／ライトパラメータの調整を行う。
【００１５】
トレーニング制御ロジック１５５をメモリＰＨＹ１４０に統合化することは、ＢＩＯＳ１２０に実装されたアルゴリズムを用いてメモリＰＨＹ１４０のトレーニングを行う従来の方法に対して数々の利点がある。トレーニング制御ロジック１５５によって用いられるトレーニングアルゴリズムの後処理及び／又はシーディングは、ＢＩＯＳ１２０とメモリＰＨＹ１４０との間のデータパイプライン上でトレーニングシーケンスを送信する必要をなくすことによって、軽減され又は取り除かれてもよい。さらに、メモリＰＨＹ１４０のトレーニングをサポートするトレーニング制御ロジック１５５をメモリＰＨＹ１４０に組み込むことは、ＢＩＯＳ１２０がメモリＰＨＹ１４０のトレーニングをサポートするように設計することと比べて複雑さが極めて減少する。例えば、ＢＩＯＳトレーニングアルゴリズムを設計するためには、極めて多量の複雑なメモリＰＨＹ初期化及び制御の詳細を、ＢＩＯＳトレーニングアルゴリズムの設計を担う技術者に伝えなければならない。例えば、メモリＰＨＹ１４０は、タイミングを定義し、周波数をロックする等のために用いられる何百ものレジスタ（明瞭性を考慮して図１では省略）を含み、各レジスタは、正確なシーケンスで初期化されアクセスされなければならない。ＢＩＯＳ技術者は、メモリＰＨＹ１４０の動作に詳しくなく、少なくともメモリＰＨＹ１４０の設計を担う技術者と比較してメモリＰＨＹ１４０の動作をよく知らない可能性がある。メモリＰＨＹのトレーニングアルゴリズムの設計責任をメモリＰＨＹ技術者の手に委ねるのは、より効率的な設計につながり、これにより、トレーニングアルゴリズムのシーディングの必要性を減らすことにある。また、多重のＰＨＹインスタンスのトレーニングをシリアルに行なければならず、ＢＩＯＳの修正は、新たなトレーニングコードのリリース及び研究施設でのシード情報の特徴抽出と強く結びついている。さらに、ＢＩＯＳトレーニングアルゴリズムを用いてメモリＰＨＹ１４０をトレーニングする前に、ＢＩＯＳ１２０とメモリＰＨＹ１４０との間のデータパイプラインをサポートするためにＡＰＵ１００内の多数のブロックが構成され実行中であることが必要になる場合があることから、各ターゲットプラットフォームの市場への投入までの時間が増加し得る。
【００１６】
図２は、いくつかの実施形態による、図１に示すメモリＰＨＹ１４０及びＤＲＡＭ１３５等のメモリＰＨＹ２０５及びＤＲＡＭ２１０を含む処理装置の一部２００のブロック図である。メモリＰＨＹ２０５は、コントローラ２１５を含み、コントローラ２１５を用いて、ＤＲＡＭ２１０と通信するメモリＰＨＹ２０５に対するリードトレーニング及びライトトレーニングを、トレーニングアルゴリズムに基づいて制御する。コントローラ２１５のいくつかの実施形態は、ハードウェア、ファームウェア、ソフトウェア、又は、ハードウェア、ファームウェア及びソフトウェアの組み合わせとして実装されてもよい。コントローラ２１５は、いくつかの実施形態では、マイクロコントローラ２１５と呼ばれ得る。コントローラ２１５は、メモリＰＨＹ２０５と一体に設けられており、これにより、データパイプラインを介してメモリＰＨＹ２０５から分離されていないので、コントローラ２１５が実行するトレーニングアルゴリズムは、シードレストレーニングアルゴリズムとなり得る。本明細書で述べるように、シードレストレーニングアルゴリズムは、例えば返送信号を後処理するために、トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路又はデータパイプラインを特徴付ける情報を用いて構成される必要がない。コントローラ２１５は、電源が投入された場合、垂直帰線周波数が変化した場合、電源状態が所定の周波数で定期的に移行した場合（例えば、アイドル状態と起動状態との間で）、又は、他のイベント若しくは信号が発生した場合に、トレーニングを開始してもよい。
【００１７】
コントローラ２１５は、例えば図１に示すＢＩＯＳ１２０等のＢＩＯＳと情報交換してもよい。いくつかの実施形態では、ＢＩＯＳは、例えばローカルスタティックランダムアクセスメモリ（ＳＲＡＭ）等のメモリアレイを読み出すことによって、ＤＲＡＭ２１０に関連する構成情報を提供することによって、又は、システムが起動するとトレーニングシーケンスを開始するようにコントローラ２１５に指示することによって、コントローラ２１５を構成してもよい。しかしながら、コントローラ２１５が構成されると、コントローラ２１５のいくつかの実施形態は、メモリＰＨＹ２０５に対するトレーニングを、ＢＩＯＳから殆ど独立して、且つ、ＢＩＯＳからの入力が殆ど行われることなく制御することができる。例えば、コントローラ２１５は、ＢＩＯＳから独立して動作し、且つ、メモリＰＨＹ２０５を、トレーニングコマンド又はトレーニングシーケンスをＢＩＯＳから受信することなくトレーニングすることの可能なトレーニングアルゴリズムを実行する。コントローラ２１５は、メモリＰＨＹ２０５に対するトレーニングを、ＢＩＯＳからコントローラ２１５に対してデータパイプラインを介して送信される必要のある入力がＢＩＯＳから行われることなく制御することができるので、トレーニングアルゴリズムは、シードレストレーニングアルゴリズムとして実装することができる。
【００１８】
コントローラ２１５は、アドレスコマンドステートマシン（ＡＣＳＭ）２２０と呼ばれ得る第１トレーニングエンジン２２０に接続されている。ＡＣＳＭ２２０は、メモリＰＨＹ２０５のトレーニング中にＤＲＡＭ２１０に提供可能なコマンドを生成する。プログラム可能なコマンドは、メモリＰＨＹ２０５の集積部分としてハードウェアに実装される第１トレーニングエンジン２２０の実施形態に対応して「高速に（at speed）」生成することができる。コマンドは、コントローラ２１５によって決定されたシーケンス内で複数のレジスタ（図示省略）に記憶されてもよい。その後、コマンドは、コントローラ２１５がＡＣＳＭ２２０内の制御レジスタに開始ビットを書き込むのに応じて、ＤＲＡＭ２１０に発行されてもよい。ＡＣＳＭ２２０によって生成されたコマンドは、ＤＲＡＭ２１０の指定されたロケーションから情報を読み出すリードコマンドと、ＤＲＡＭ２１０の指定されたロケーションに情報を書き込むライトコマンドと、を含んでもよい。ＡＣＳＭ２２０のいくつかの実施形態は、リードコマンド及びライトコマンドを同時に合成するループバックコマンドを生成してもよい。ループバックコマンドは、メモリＰＨＹ２０５の物理ピンに送られる信号を駆動する。この信号は、メモリＰＨＹ２０５を通過する経路に沿って返送される。したがって、ＤＲＡＭ２１０をメモリＰＨＹ２０５の物理ピンに接続するのを必要とせずに、ループバックコマンドを用いてメモリＰＨＹ２０５をテストすることができる。ＡＣＳＭ２２０のいくつかの実施形態は、ループコマンドを生成してもよく、ループコマンドは、１つ以上のコマンドを、指定された遅延時間をコマンド間に挟んで繰り返し実行することによって、実行中に単一命令をループ又は繰り返し、複数のコマンドを順次ループ等する。
【００１９】
コントローラ２１５は、ＰＲＢＳパターン生成器チェッカ（ＰＰＧＣ）２２５と呼ばれ得る第２のトレーニングエンジン２２５に接続されてもよい。ＰＰＧＣ２２５のいくつかの実施形態は、プログラム可能であり、メモリＰＨＹ２０５のトレーニング用のトレーニングシーケンスとして用いられるデータストリームを生成することができる。例えば、ＰＰＧＣ２２５は、コントローラ２１５によって提供された信号に応じて、１６ビット以下の多項式に対するデータストリームを生成してもよい。ＰＰＧＣ２２５のいくつかの実施形態は、トレーニングシーケンスを生成するのに用いられる独立した生成器２３５と、メモリＰＨＹ２０５とＤＲＡＭ２１０との間を流れるトレーニングシーケンスを含む読み出し又は書き込みストリームの同期をチェックするのに用いられるチェッカ２３０と、を含む。ＰＰＧＣ２２５の動作は、ＡＣＳＭ２２０から受信した信号によって制御されてもよい。例えば、ＡＣＳＭ２２０は、生成器２３５におけるトレーニングシーケンスの生成等の動作の実行を順序付ける信号を提供してもよい。
【００２０】
コントローラ２１５は、データトレーニング状態マシン（ＤＴＳＭ）２４０と呼ばれ得る第３のトレーニングエンジン２２０に接続されてもよい。ＤＴＳＭ２４０は、ＤＲＡＭ２１０から受信したトラフィックを、ＤＲＡＭ２１０に提供されたトレーニングシーケンスと比較して、メモリＰＨＹ２０５によって用いられるタイミングパラメータ又は電圧オフセットパラメータを調整するか否かを決定する。例えば、ＰＰＧＣ２２５は、メモリＰＨＹ２０５の読み出しトレーニング又は書き込みトレーニングの間にＤＲＡＭ２１０から戻されるシーケンスとの比較のために、トレーニングシーケンスの表現（representation）をＤＴＳＭ２４０に提供してもよい。トレーニングのループを開始する前に、コントローラ２１５は、メモリＰＨＹ２０５によって使用されるタイミングパラメータ又は電圧オフセットパラメータを制御するために、ＤＴＳＭ２４０を構成してもよい。次に、コントローラ２１５は、１つ以上のトレーニングシーケンスを駆動するためにＡＣＳＭ２２０及びＰＰＧＣ２２５をプログラムしてもよい。次に、ＤＴＳＭ２４０は、ＰＰＧＣ２２５によって生成されたトレーニングシーケンスを、ＤＲＡＭ２１０から受信したシーケンスと比較する。例えば、ＤＴＳＭ２４０は、複数の異なる遅延においてトレーニングシーケンスと受信シーケンスとを関連付けてもよい。比較に基づき、ＤＴＳＭ２４０は、比較に基づき、タイミングパラメータ又は電圧オフセットパラメータを調整するか否かを決定するが、これは、例えば、これらのパラメータの１つ以上を増加又は減少させることによって行う。例えば、タイミングオフセットは、トレーニングシーケンス及び受信シーケンスの相互関係に基づき決定される遅延に基づいて、増加又は減少しても良い。ＤＴＳＭ２４０のいくつかの実施形態は、データ輪郭アイ位置（data contour eye position）に対するトレーニングのための上位又は下位閾値比較ロジックを有するデータフィルタ又は２進加算器も実装してよい。
【００２１】
先入れ先出し（ＦＩＦＯ）バッファのセットを用いて、トレーニングシーケンスを、ＤＲＡＭ２１０に提供される前にバッファしてもよいし、受信シーケンスを、ＤＲＡＭ２１０から受信した後にバッファしてもよい。例えば、送信ＦＩＦＯバッファ２４５のセットを用いて発信トラフィックをバッファしてもよいし、受信ＦＩＦＯバッファ２５０のセットを用いて着信トラフィックをバッファしてもよい。１つ以上の受信機２５５を用いて、ＤＲＡＭ２１０に至るチャネルを介して信号を受信してもよいし、当該信号を受信ＦＩＦＯバッファ２５０に提供してもよい。１つ以上のドライバ２６０，２６５を用いて、信号を、送信ＦＩＦＯバッファ２４５からチャネルを介してＤＲＡＭ２１０に送信してもよい。例えば、チャネル２７０で伝送されるデータ信号（ＤＱ）又はタイミング信号（ＤＱＳ）を、ドライバ２６０を用いて駆動してもよい。また、受信機２５５は、データ信号（ＤＱ）又はタイミング信号（ＤＱＳ）を、チャネル２７０を介して受信してもよい。別の例の場合、ドライバ２６５を用いて、アドレス（ＡＤＤＲ）又はコマンド（ＣＭＤ）を、ＤＲＡＭ２１０に至るチャネル２７５を介して駆動してもよい。受信機２５５又はドライバ２６０，２６５によって用いられるタイミング遅延時間及び電圧オフセットは、調整されてもよい。
【００２２】
メモリＰＨＹ２０５は、タイミング／電圧制御ロジック２８０を含む。ＤＴＳＭ２４０は、信号をタイミング／電圧制御ロジック２８０に提供して、タイミングパラメータに対する調整を指示してもよい。例えば、ＤＴＳＭ２４０は、タイミング／電圧制御ロジック２８０に指示して、タイミング遅延時間又は電圧オフセットを、ＤＲＡＭ２１０に提供されたトレーニングシーケンスとＤＲＡＭ２１０から受信したシーケンスとの比較結果に基づいてインクリメント又はデクリメントしてもよい。次に、タイミング／電圧制御ロジック２８０は、制御信号を受信機２５５又はドライバ２６０，２６５に提供して、受信機２５５又はドライバ２６０，２６５が使用するタイミング遅延時間又は電圧オフセットを調整してもよい。タイミング／電圧制御ロジック２８０のいくつかの実施形態を用いて、タイミング遅延時間又は電圧オフセットを、受信イネーブル段階、書き込み平準化段階、リードトレーニング段階、ライトトレーニング段階、及び、メモリＰＨＹ２０５とＤＲＡＭ２１０との間のインタフェースについてのデータアイ輪郭（data eye contour）の電圧レベルを決定する段階等の複数の段階で調整してもよい。
【００２３】
図３は、いくつかの実施形態による、図１に示す加速処理装置１００等の処理装置に実装され得るメモリＰＨＹをトレーニングする方法３００のフロー図である。方法３００の実施形態は、図１に示すトレーニング制御ロジック１５５、又は、図２に示すコントローラ２１５、ＡＣＳＭ２２０、ＰＰＧＣ２２５、ＤＴＳＭ２４０及びタイミング／電圧制御ロジック２８０等のトレーニング制御ロジックに実装されてもよい。
【００２４】
ブロック３０５において、トレーニング制御ロジックは、受信イネーブルトレーニング（receive enable training）を実行してメモリＰＨＹを有効にすることによって、ＤＲＡＭとのインターフェースを介してデータを受信可能な時点を決定する。いくつかの実施形態は、受信イネーブルトレーニングを、リードコマンドを送信して選択アドレスをＤＲＡＭから読み出すことによって実行する。ＤＲＡＭから受信した信号に含まれる対応するバブルシーケンスを生成するバブルシーケンス（sequence of bubbles）をリードコマンドに点在させる。次に、トレーニング制御ロジックは、ＤＲＡＭから受信した信号をモニタリングして、メモリＰＨＹ内のコマンド生成時刻を、ＤＲＡＭからのコマンド応答がメモリＰＨＹに返送される時刻に一致させる。バブル間の時間間隔範囲は、最悪時の往復遅延時間に経路内の全ての内部メモリＰＨＹ遅延時間及びＤＲＡＭ遅延時間を加算した値よりも大きくなるように時間長が設定される。これにより、応答がより速く又はより遅くなることに関連してコマンド応答について起こり得るエイリアシングを必ず回避することができる。メモリＰＨＹは、受信イネーブルトレーニング段階において読み出し状態を常時保持するように構成することができる。例えば、コントローラ２１５は、ＡＣＳＭ２２０、ＰＰＧＣ２２５及びＤＴＳＭ２４０を構成することができ、次いでトレーニング段階を開始することができる。ＡＣＳＭ２２０は、コマンド／アドレスを発行してトレーニングシーケンスをＤＲＡＭ２１０に書き込むことができ、次に、コマンド／アドレスを発行してトレーニングシーケンスをＤＲＡＭ２１０から読み戻すことができる。いくつかの実施形態では、情報は、コマンドが発行されるとＤＲＡＭ２１０に実際に書き込まれることがなく、ＤＱバスを無視する。返送ＤＱＳのみがモニタリングされる。したがって、発行コマンドは、リードコマンドと同様であるが、ＤＴＳＭ２４０は、何れのデータがコマンドに応答して返送されるかについて気付かない。ＤＴＳＭ２４０は、ＤＲＡＭ２１０から返送されるＤＱＳストローブのタイミングを調整することにのみ注意する。トレーニングシーケンスは、ＰＰＧＣ２２５により生成され、ＤＲＡＭ２１０に提供することができる。次に、ＤＴＳＭ２４０は、ＤＲＡＭ２１０からの受信データをトレーニングシーケンスに関連付けて往復遅延時間を特定し、タイミング／電圧制御ロジック２８０に指示することにより、パラメータを受信機２５５及びドライバ２６０，２６５等の適切な受信機／ドライバについて調整して、検出した往復遅延時間をゼロにすることができる。
【００２５】
ブロック３１０では、トレーニングロジックは、書き込み平準化を実行して、メモリＰＨＹが用いるクロック信号を、ＤＲＡＭが用いるクロック信号に一致させる。したがって、トレーニングロジックのいくつかの実施形態は、メモリＰＨＹクロック信号及びタイミング（ＤＱＳ）信号を送信することができ、タイミング（ＤＱＳ）信号を用いて、ＤＲＡＭにおけるクロック値をサンプリングする。次に、トレーニングロジックは、ＤＱバスで返送されたＤＲＡＭクロックのサンプリング値を用いて、例えば遅延時間を生じさせてＤＱＳ信号の位相をＤＲＡＭ内のメモリクロック位相に一致させることによって、メモリＰＨＹクロック及びＤＲＡＭクロックを一致させる。例えば、コントローラ２１５から信号を受信すると、ＡＣＳＭ２２０はライトコマンドを生成することができ、このライトコマンドによって、立ち上がりエッジを含むメモリＰＨＹクロック信号、及び、ＤＲＡＭ２１０に供給されるＤＱＳ信号にＤＲＡＭ内のメモリクロックをサンプリングさせる。ライトコマンドは、本明細書で述べるように、レジスタ２２２から読み出される情報に基づいて生成することができる。次に、ＤＲＡＭクロックのサンプリング値は、メモリＰＨＹ２０５に返送することができる。ＰＰＧＣ２２５内のチェッカ２３０は、内部比較値を生成し、この値をＤＴＳＭ２４０に提供する。次に、ＤＴＳＭ２４０は、内部比較値を、ＤＲＡＭ２１０から受信したサンプリングクロック信号値と比較することができ、比較結果に基づいて調整信号を生成して、ライトＤＱＳ（ライトタイミング信号）をＤＲＡＭ２１０内のクロックに一致させることができる。次に、ＤＴＳＭ２４０は、タイミング／電圧制御ロジック２８０に指示することによって、受信機２５５及びドライバ２６０，２６５についてタイミングパラメータを調整して、メモリＰＨＹクロック及びＤＲＡＭクロックを同期させることができる。例えば、内部比較値が「０」であって、ＤＲＡＭクロックのサンプリング値が「１」である場合には、ＤＴＳＭ２４０は、タイミング／電圧制御ロジック２８０に指示することによって、メモリＰＨＹ２０５のタイミングを所定の時間長だけ進めることができる。内部比較値が「１」であって、ＤＲＡＭクロックのサンプリング値が「１」である場合には、ＤＴＳＭ２４０は、タイミング／電圧制御ロジック２８２に指示することによって、メモリＰＨＹ２０５のタイミングを所定の時間長だけ遅らせることができる。このプロセスを繰り返し行なって、メモリＰＨＹ２０５クロック及びＤＲＡＭクロックの同期を所定の許容範囲内に収めることができる。
【００２６】
ブロック３１５では、トレーニングロジックは、リード／ライトフェーズトレーニングを実行して、データアイ輪郭の１次元時間領域境界を、メモリＰＨＹとＤＲＡＭとの間のリード／ライトデータパスに基づいて決定する。したがって、トレーニングロジックのいくつかの実施形態は、一連のコマンドを送信して、トレーニングシーケンスをＤＲＡＭ内のアドレスに書き込むことができ、次に、トレーニングシーケンスをＤＲＡＭのアドレス指定ロケーションから異なる遅延時間だけ遅らせて、ループ読み出しによって読み出し続けることによって、データアイ輪郭の１次元時間領域境界を決定することができる。例えば、コントローラ２１５から信号を受信すると、ＡＣＳＭ２２０は、コマンドを発行して、ＰＰＧＣ２２５が生成する１つ以上のシーケンスを、ＤＲＡＭ２１０内の１つ以上のアドレスに書き込むことができる。次に、ＡＣＳＭ２２０は、一連のリードコマンドをＤＲＡＭ２１０内のアドレスに対して発行して、これらのリードコマンドを異なる遅延値でループする。次いで、ＤＴＳＭ２４０は、ループリードコマンドの各コマンドに対応する受信シーケンスを、提供されたトレーニングシーケンスと比較することによって、データアイ輪郭の左端及び右端を求めることができる。次に、ＤＴＳＭ２４０は、タイミング／電圧制御ロジック２８０に指示することによって、タイミングパラメータ、例えば受信機２５５の位相を調整して、左端と右端との間の中間点等のデータアイ輪郭内の所定位置に一致させることができる。
【００２７】
ブロック３２０では、トレーニングロジックは、２次元（２Ｄ）リード／ライトフェーズトレーニングを実行して、データアイ輪郭の電圧レベルを、メモリＰＨＹとＤＲＡＭとの間のリード／ライトデータパスに基づいて求める。したがって、トレーニングロジックのいくつかの実施形態は、一連のリードコマンド／ライトコマンドを送信して、トレーニングシーケンスをＤＲＡＭから読み出し、ＤＲＡＭに書き込むことができる。一連のリードコマンド／ライトコマンドは、異なるタイミング遅延時間及び異なる電圧オフセットを用いて実行することによって、データアイ輪郭の電圧レベルを求めることができる。例えば、コントローラ２１５から信号を受信すると、ＡＣＳＭ２２０は、コマンドを発行して、ＰＰＧＣ２２５が生成する１つ以上のシーケンスを、ＤＲＡＭ２１０内の１つ以上のアドレスに、初期タイミング遅延時間を用いて書き込むことができる。次に、ＡＣＳＭ２２０は、一連のループリードコマンドをＤＲＡＭ２１０内のアドレスに対して発行することができる。リードコマンド／ライトコマンドは、異なる電圧オフセット値を受信機２５５又はドライバ２６０，２６５に提供することによって同時に発行することができる。次に、ＤＴＳＭ２４０は、ループリードコマンドの各コマンドに対応する受信シーケンスを、提供されたトレーニングシーケンスと比較することによって、初期タイミング遅延時間に対応するデータアイ輪郭の左端と右端との間の電圧レベルを求めることができる。タイミング遅延時間は変更することができ（例えば、インクリメント又はデクリメントする）、電圧レベルを求めるプロセスを繰り返すことができる。このプロセスを繰り返して、２次元データアイ輪郭を、タイミング遅延時間及び電圧レベルの範囲に亘って生成することができる。それとは別に、いくつかの実施形態は、電圧レベル及びループを、選択された電圧レベルに対応するタイミング遅延時間に亘って繰り返し選択することによって、２次元データアイ輪郭を生成することができる。
【００２８】
ＤＴＳＭ２４０は、タイミング／電圧制御ロジック２８０に指示することにより、タイミング遅延及び電圧オフセットを受信機２５５又はドライバ２６０，２６５について調整して、最良の電圧レベル及びタイミング遅延時間を与えるデータアイ輪郭内の位置に一致させることができる。タイミング遅延時間又は電圧オフセットに対する調整範囲は、サンプリングトレーニングデータ内の適正サンプル及び不正サンプルの数に基づいて設定することができる。ＤＴＳＭ２４０のいくつかの実施形態は、最適なタイミング遅延時間及び電圧オフセットを、サンプリングトレーニングデータ内の不正サンプルに対する適正サンプルの所定の比に基づいて求めることができる。例えば、ＤＴＳＭ２４０は、タイミング遅延時間及び電圧オフセットを、メモリＰＨＹ２０５から受信した不正サンプル数に対する適正サンプル数の比が所定比と等しいか、又は所定比を下回るまで調整することができる。ＤＴＳＭ２４０のいくつかの実施形態は、所定比を用いて、データアイ輪郭の形状を、より良好な最適トレーニング位置を求めることができる予測値で変更することができる。例えば、２Ｄアイ輪郭は、所定比に基づいて拡大又は縮小させることができる。２Ｄデータアイ輪郭に対する他の変更も可能である。
【００２９】
本明細書に記載した技術の実施形態は、システムＢＩＯＳに実装され、データパイプラインを介してメモリＰＨＹに搬送されなければならない従来のトレーニングアルゴリズムに対して、多数の利点を有し得る。統合型トレーニングロジックのいくつかの実施形態は、全体的なトレーニング時間を減少させ、益々複雑化するトレーニングシーケンスを実質的に一定のトレーニング時間を維持しながら実装することが可能であってよい。トレーニングロジックをメモリＰＨＹに統合化することによって、高速なコマンド／データ生成及び制御をメモリＰＨＹデータパイプの近くに配置することが可能になり、これにより、トレーニングシーケンス等のきめ細かな制御が可能になる。また、トレーニングロジックの実施形態は、ファームウェアアルゴリズム開発とハードウェアメカニズムの設計との間のより緊密な結合を余儀なくさせることによって、シードレストレーニングを拡大してもよい。さらに、トレーニングは、異なるメモリＰＨＹインスタンスに対して並行して実行してもよい。トレーニングロジックがメモリＰＨＹに統合化されると、シリコンシステムのデバッグ及びハードウェアの教育プロセスがより簡単に実装され得る。
【００３０】
トレーニングロジックがメモリＰＨＹに統合化されると、設計プロセスも改善され得る。例えば、メモリＰＨＹのためのトレーニングハードウェア及びトレーニングアルゴリズムは、ＳＯＣの残りの部分とは切り離して開発及びテストすることができる。システムの複雑性及びメモリＰＨＹの振舞いの詳細は、メモリＰＨＹと、ＳＯＣ内のその他の論理と、の間の境界部分に含まれていてもよい。また、システム構成は、ＲＴＬシミュレーションから統合型トレーニングアルゴリズムの開発環境への自然な拡張をサポートしてもよい。さらに、メモリＰＨＹ用のトレーニングハードウェア及びこれに対応するトレーニングアルゴリズムは、複数の（サードパーティのＳＯＣを含む）ＳＯＣに亘る完全なＩＰとしてパッケージされ得る。
【００３１】
いくつかの実施形態では、上述した装置及び方法は、図１〜図３を参照して説明したメモリＰＨＹ等の１つ以上の集積回路（ＩＣ）装置（集積回路パッケージ又はマイクロチップとも呼ばれる）を含むシステムにおいて実現することができる。電子設計自動化（ＥＤＡ）ソフトウェアツール及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールは、これらのＩＣ装置の設計及び製造に用いることができる。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表現される。１つ以上のソフトウェアプログラムは、コンピュータシステムが実行可能なコードを含むことによってコンピュータシステムを操作し、１つ以上のＩＣ装置の回路を表すコードで動作させることによってプロセスの少なくとも一部を実行して、製造システムを設計又は適合させて回路を製造することができる。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムにアクセスできるコンピュータ可読記憶媒体に記憶される。同様に、ＩＣ装置の設計又は製造の１つ以上の工程を表すコードは、コンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶することができ、当該コードに対して、コンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスすることができる。
【００３２】
コンピュータ可読記憶媒体は、使用時にコンピュータシステムからアクセスできる任意の記憶媒体、又は、記憶媒体の組み合わせを含むことによって、命令及び／又はデータをコンピュータシステムに提供することができる。このような記憶媒体としては、これらに限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ若しくは磁気ハードディスク）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）若しくはキャッシュ）、不揮発性メモリ（例えば、リードオンリメモリ（ＲＯＭ）若しくはフラッシュメモリ）、又は、微小電子機械システム（ＭＥＭＳ）を利用した記憶媒体が挙げられる。コンピュータ可読記憶媒体は、コンピューティングシステムに内蔵することができ（例えば、システムＲＡＭ又はＲＯＭ）、コンピューティングシステムに強固に取り付けることができ（例えば、磁気ハードドライブ）、コンピューティングシステムに着脱可能に取り付けることができ（例えば、光ディスク又はユニバーサルシリアルバス（ＵＳＢ）系フラッシュメモリ）、又は、コンピュータシステムに有線ネットワーク若しくは無線ネットワークを介して接続することができる（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００３３】
図４は、いくつかの実施形態による１つ以上の素子を搭載したＩＣ装置を設計して製造する例示的な方法４００を示すフロー図である。上述したように、以下のプロセスの各プロセスに対応して生成されるコードは、非一時的なコンピュータ可読記憶媒体に記憶され、他には、非一時的なコンピュータ可読記憶媒体で具現化されて、対応する設計ツール又は製造ツールによってアクセスし使用することができる。
【００３４】
ブロック４０２では、ＩＣ装置の機能仕様を作成する。機能仕様（多くの場合、マイクロアーキテクチャ仕様（ＭＡＳ）と呼ばれる）は、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ、Ｓｉｍｕｌｉｎｋ又はＭＡＴＬＡＢを含む多種多様なプログラミング言語又はモデリング言語のうち何れかの言語で表現することができる。
【００３５】
ブロック４０４では、機能仕様を用いて、ＩＣ装置のハードウェアを表すハードウェア記述コードを生成する。いくつかの実施形態では、ハードウェア記述コードは、少なくとも１種類のハードウェア記述言語（ＨＤＬ）を用いて表現され、ハードウェア記述言語（ＨＤＬ）は、ＩＣ装置の回路をフォーマルに記述して設計するための多種多様なコンピュータ言語、仕様言語又はモデリング言語の何れかの言語を含む。生成されたＨＤＬコードは、通常、ＩＣ装置の回路の動作、回路の設計及び体系、及び、ＩＣ装置の正しい動作をシミュレーションで検証するためのテストを表す。ＨＤＬの例としては、アナログＨＤＬ（ＡＨＤＬ）、Ｖｅｒｉｌｏｇ  ＨＤＬ（ベリログＨＤＬ）、Ｓｙｓｔｅｍ  Ｖｅｒｉｌｏｇ  ＨＤＬ（システムベリログＨＤＬ）及びＶＨＤＬが挙げられる。ＩＣ装置に同期デジタル回路が搭載されている場合には、ハードウェア記述コードは、同期デジタル回路の動作を抽象的に表現したレジスタ転送レベル（ＲＴＬ）コードを含むことができる。他の種類の回路の場合には、ハードウェア記述コードは、回路の動作を抽象的に表現したビヘイビアレベルコードを含むことができる。ハードウェア記述コードで表されるＨＤＬモデルに対して、通常、設計検証に合格するために１回以上のシミュレーション及びデバッグ処理を実行する。
【００３６】
ハードウェア記述コードで表される設計を検証した後、ブロック４０６では、合成ツールを用いてハードウェア記述コードを合成し、ＩＣ装置の回路の初期物理構造を表現又は定義するコードを生成する。いくつかの実施形態では、合成ツールは、回路素子（例えば、ゲート、トランジスタ、抵抗、キャパシタ、インダクタ、ダイオード等）と、回路素子間の接続網又は接続配線と、を含む１つ以上のネットリストを生成する。別の構成として、ネットリストの全部又は一部は、合成ツールを用いることなく手動で生成することができる。ハードウェア記述コードと同様に、ネットリストに対して、最終的な一連の１つ以上のネットリストを生成する前に、１回以上のテストプロセス及び検証プロセスを実行することができる。
【００３７】
別の構成として、回路図編集設計ツールを用いてＩＣ装置の回路図を生成し、次に、回路図把握ツールを用いて、結果的に得られる回路図を把握することができ、回路図の構成要素及び接続関係を表す１つ以上のネットリスト（コンピュータ可読媒体に記憶される）を生成することができる。次に、把握した回路図に対して、１回以上のシミュレーションを実行してテスト及び検証を行うことができる。
【００３８】
ブロック４０８では、１つ以上のＥＤＡツールが、ブロック４０６で生成されたネットリストを用いて、ＩＣ装置の回路の物理レイアウトを表すコードを生成する。このプロセスは、例えば配置ツールを含むことができ、この配置ツールは、ネットリストを使用してＩＣ装置の回路の各素子の位置を決定又は固定する。さらに、配線ツールを配置プロセスに構築して、回路素子をネットリストに従って接続するために必要な配線を追加して引き回す。結果的に得られるコードは、ＩＣ装置の３次元モデルを表す。コードは、例えばグラフィックデータベースシステムＩＩ（ＧＤＳＩＩ）フォーマット等のデータベースファイルフォーマットで表すことができる。このフォーマットのデータは、通常、回路レイアウトに関する幾何学的形状、テキストラベル及び他の情報を階層形式で表す。
【００３９】
ブロック４１０では、物理レイアウトコード（例えば、ＧＤＳＩＩコード）を製造設備に提供し、製造設備では、メモリ物理レイアウトコードを用いて、製造設備の製造ツールを構成又は適合させて（例えば、マスク作業を行うことにより）ＩＣ装置を製造する。すなわち、物理レイアウトコードは、１つ以上のコンピュータシステムに書き込むことができ、次にこれらのコンピュータシステムは、製造設備のツールの動作、又は、製造設備内で行われる製造処理のツールの動作を全部若しくは一部制御することができる。
【００４０】
いくつかの実施形態では、上述した方法の特定の態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサにより実行することができる。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体で明確に具現化される１つ以上の実行可能命令セットを含む。ソフトウェアは、命令及び特定データを含むことができ、命令及び特定データを１つ以上のプロセッサが実行すると、１つ以上のプロセッサを操作して、上述した方法の１つ以上の態様を実行する。非一時的なコンピュータ可読記憶媒体としては、例えば磁気ディスク記憶装置若しくは光ディスク記憶装置、フラッシュメモリ等の固体記憶装置、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリ装置若しくは不揮発性メモリ装置等が挙げられる。非一時的なコンピュータ可読記憶媒体に記憶される実行可能命令は、１つ以上のプロセッサが解釈又は実行することができるソースコード、アセンブリ言語コード、オブジェクトコード又は他の命令形式で記憶することができる。
【００４１】
概要を上述した操作又は構成要素の全てが必要であるわけではなく、特定の操作又は装置の一部は必要ではなく、１つ以上の更に別の操作を行ってもよい。また、構成要素を記載の構成要素の他に含めてもよいことに留意されたい。さらには、操作が列挙された順序は、必ずしもこれらの操作が行われる順序ではない。また、コンセプトが、特定の実施形態を参照して説明されている。しかしながら、本技術分野の当業者であれば、種々の変形及び変更を、以下の特許請求の範囲に記載される本開示の範囲から逸脱しない限り加えることができることを理解できる。したがって、本明細書及び図は、限定的な意味ではなく例示として捉えられるべきであり、全てのこのような変形は、本開示の範囲に含まれるべきである。
【００４２】
効果、他の利点及び課題に対する解決手段について、特定の実施形態を参照しながら説明してきた。しかしながら、効果、利点、課題に対する解決手段、及び、全ての効果、利点又は解決手段をもたらすか更に顕著にする全ての特徴が、何れかの請求項又は全ての請求項の必須の特徴、必要な特徴又は基本的な特徴であると捉えられてはならない。さらに、開示された特定の実施形態は、開示した発明を、異なる態様で、且つ、本明細書において提示された示唆の恩恵を享受する本技術分野の当業者にとって明白な均等な態様で変更して実施することができることから、例示に過ぎない。以下の特許請求の範囲に記載される限定以外の限定を、本明細書において開示された構成又は設計の詳細に加えるものではない。したがって、開示された特定の実施形態は、変更又は改変することができ、全てのこのような変更が、開示した発明の範囲に含まれると考えられる。したがって、本明細書で要求する保護は、以下の特許請求の範囲に記載の通りである。
【図１】
2017523488.tif 000003
【図２】
2017523488.tif 000004
【図３】
2017523488.tif 000005
【図４】
2017523488.tif 000006
【国際調査報告】
2017523488.tif 000007
2017523488.tif 000008