(58)【調査した分野】(Int.Cl.,DB名)
前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルは、前記回路に関連付けられ、少なくとも1つのスティミュラスアサーションを有する、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルは、少なくとも1つのスティミュラスアサーションを有し、前記少なくとも1つのスティミュラスアサーションは、前記仕様データベースの前記少なくとも1つのスティミュラスパラメータを含む、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルは、少なくとも1つの出力アサーションを有する、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルは、少なくとも1つの出力アサーションを有し、前記少なくとも1つの出力アサーションは、仕様データベースの少なくとも1つの仕様パラメータを含む、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルは、少なくとも1つの出力測定値を有する、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルは、少なくとも1つの出力測定値を有し、仕様データベースの前記少なくとも1つの測定パラメータを含む少なくとも1つの出力アサーションを有する、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路の前記電子的設計の前記表現はデジタルとアナログとの混合信号を表すものである、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路の前記電子的設計の前記表現は、少なくとも1つのトランジスタレベル回路部を有する、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路の前記電子的設計の前記表現は、少なくとも1つのビヘイビアモデルで表された回路部を有する、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路の前記電子的設計の前記表現は、物理設計に少なくとも部分的に基づく少なくとも1つの寄生モデルに基づく少なくとも1つの回路を有する、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路の前記電子的設計の前記表現は、少なくとも1つのビヘイビアモデルで表された回路を有する、請求項3に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルは、少なくとも1つの出力アサーションおよび少なくとも1つの出力測定値の少なくとも一方に少なくとも部分的に基づいて、前記少なくとも1つの仕様サブセットを確認する、請求項18に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルは、前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つのスティミュラスパラメータ、および前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つの測定パラメータのうち少なくとも一方と、少なくとも1つの出力アサーションとの少なくとも一方に少なくとも部分的に基づいて、前記少なくとも1つの仕様サブセットを確認する、請求項18に記載の電子的設計の検証コマンドの翻訳のコンピュータ実装される方法。
前記シミュレーションの間に前記少なくとも1つの性能属性が抽出される、請求項23に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
前記シミュレーションの後に前記少なくとも1つの性能属性が抽出される、請求項23に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
前記回路に関連付けられた少なくとも1つのアナログテストハーネスモデルは、前記少なくとも1つの出力アサーションおよび前記少なくとも1つの出力測定値の少なくとも一方を有し、前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つの仕様パラメータ、前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つの測定パラメータ、および前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つのスティミュラスパラメータのうち少なくとも1つを有する、請求項23に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
指定される結果に少なくとも部分的に基づいて、前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルを前記プロセッサで修正するステップをさらに備える、請求項30に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
指定される結果に少なくとも部分的に基づいて、前記少なくとも1つの検証サブルーチンコマンドを前記プロセッサで修正するステップをさらに備える、請求項30に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
前記電子的設計は、結果として、少なくとも1つの能動回路および少なくとも1つの受動回路のうち少なくとも一方を生じる、請求項30に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
前記電子的設計は、結果として少なくとも1つの能動回路を生じ、前記少なくとも1つの能動回路は、少なくとも1つの利得と、少なくとも1つの電気的信号の少なくとも1つの方向とのうち少なくとも一方を調整する、請求項30に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
前記少なくとも1つの検証サブルーチンコマンドは、前記少なくとも1つの仕様サブセットを有する、請求項30に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
前記少なくとも1つの検証サブルーチンコマンドは、前記少なくとも1つの仕様サブセットを有し、前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つの測定パラメータ、前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つのスティミュラスパラメータ、および前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つの仕様パラメータのうち少なくとも1つを有する、請求項30に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
前記回路に関連付けられた前記少なくとも1つのアナログテストハーネスモデルは、少なくとも1つの出力アサーションおよび少なくとも1つの出力測定値の少なくとも一方に少なくとも部分的に基づいて、前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つの測定パラメータ、前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つのスティミュラスパラメータ、および、前記電子的設計に関連付けられ前記少なくとも1つの仕様データベースに格納された前記少なくとも1つの仕様パラメータのうちの少なくとも1つで、前記少なくとも1つの仕様サブセットを確認する、請求項37に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明を実施するための形態】
【0017】
詳細な説明中の参照符号は、様々な図中の類似の参照符号に対応する(そうでないと断った場合を除く)。書面中で用いられる記述的および方向的用語(右、左、後、頂点(top)、底、上側、側面、他)は、とくに断らない限り、紙上に配置された通りの図面自体を参照し、本開示の物理的限定を参照しない。各図はスケールを示すものではなく、図示され論じられる例の特徴のいくつかは、本開示の原理および特徴と、利点とを例示するために、単純化または誇張されている。
【0018】
[詳細な説明]
本開示の特徴および他の詳細は、以下に、添付図面への参照とともにより詳細に記載される。添付図面には、開示される事項の様々な例示が示されおよび/または記載される。本明細書に記載される特定の例は、本開示の限定としてではなく、例として示されるということが理解される。さらに、開示される事項は、本明細書に記載されるいずれかの例に限定されると考えるべきではない。これらの例は、本開示が完全かつ完結したものとなり、開示される事項の範囲を当業者に十分に伝えるように提供される。本開示の本質的特徴は、本開示の範囲から逸脱することなく、様々な例において採用し得る。
【0019】
本明細書において用いられる用語法は、特定の例を記述することのみを目的としており、開示される事項の限定としては意図されていない。全体を通して、類似した番号は類似した要素を参照する。本明細書において用いられる用語「および/または(and/or)」は、関連して列挙される事項のうち1つ以上の任意の組み合わせすべてを包含する。また、本明細書において用いられる単数形「a」、「an」および「the」は、複数形も同様に含むことを意図される(ただしそうでないことを文脈が明確に示す場合を除く)。さらに、本明細書において用いられる場合、用語「備える」("comprises" および/または "comprising")および「含む」("comprises" および/または "comprising")は、記述された特徴、整数(integers)、ステップ、動作、要素、および/またはコンポーネントの存在を特定するが、他の特徴、整数、ステップ、動作、要素、コンポーネント、および/またはこれらの群のうち1つ以上の存在または追加を排除しないということが理解される。また、本明細において用いられる相対的用語(第1の、第2の、頂点(top)、底(bottom)、左、右、等)は、1つの主体または動作を別の主体または動作と区別するためだけに用いられる場合があり、必ずしもそのような主体または動作の間の実際の関係または順序を要求または示唆するものではない。
【0020】
アナログおよび混合信号IC設計への参入障壁のコストは、とくに自社工場を持たない会社(パッケージされたASICの形で、または顧客のシステムズ・オン・ア・チップ(SoCs)またはマルチチップモジュール(MCMs)に集積されるべきモジュールの形で、ASIC知的財産を開発する会社)に特有のものである。たとえば、自社工場を持たない設計センターに5人のIC設計エンジニアが配置されている場合には、そのチームに設計ツールを持たせることは、人員を4倍にするのと財務的に等価である。これは、EDAツールを所有することの高いコスト(毎年のライセンス料、設置およびサポート、トレーニング等に限られない)に起因する。検証コマンドの翻訳を通じてシステムの使用を縮小することは、より効率的な資源配置を可能にする。
【0021】
アナログおよび混合信号検証は、時間・計算機集約的である。回路が仕様に合わせて機能することを保証するためには、概して、様々な条件および様々な製造条件における様々な入力に対する回路の機能性をシミュレートすることが必要となる。
【0022】
分岐貢献ステートメントは、アナログネットおよびポートの間の連続的な時間における行動を記述するために利用される。1つ以上のアナログネットの間の数学的関係を記述するために、直接貢献ステートメントは、分岐貢献演算子「<+」を利用する。これらの直接貢献ステートメントは、コンスタント表現である引数を利用する。標準的な分岐貢献ステートメントは、条件的表現がコンスタント表現でない限り、条件付き、ルーピング、命名または解析ベースのステートメントにおいて使用できない。区別のために、我々はこれらの標準的な分岐貢献ステートメントを直接分岐貢献ステートメントと呼ぶ。本開示において、間接分岐貢献ステートメント(IBCS)は、直接分岐貢献ステートメント(DBCS)よりもパワフルである。具体的には、間接分岐貢献ステートメントは、ユーザの設計、設計構成、シミュレーション/解析構成、検証状態、および検証履歴に対して動的な条件付きおよびルーピングコンストラクトにおいて用いることができる。間接分岐貢献ステートメントは、ネットリストの内容に基づき、直接分岐貢献ステートメントを生成する動的コードを可能にする。
【0023】
AMST
TM(アナログ混合信号テスト)(Analog Mixed Signal Test)は、アナログ/混合信号(A/MS)刺激と、主張および出力測定値とを特定するためのモジュールである。AMSTは、刺激および出力主張の間の複雑な関係を効率的に捕捉することができる。AMST言語(AMSTL
TM)において特定される検証モデルは、比較的高レベルのコマンド(続いてVerilog−A/AMSへと翻訳される)を捕捉する。それぞれ、Verilog−A、Verilog−AMS、VHDL−AMS、SystemC−AMS等(アナログおよび混合信号を定義するための標準化された言語である)である。このコードは、アナログシミュレータのための直接分岐貢献ステートメントをサポートする任意の言語標準規格を生成するために用いることもできるということが想像される。
【0024】
AMSTLは、結果として生じる翻訳されたコードが、回路の行動的モデルにおいて用いられるか、テストハーネスにおいて用いられるかに関わらず、IBCSを伴う比較的高レベルのコマンドを捕捉するために用いることができる。AMST内の主張を捕捉すること(回路の行動的モデルにおけるものではなく)の価値は、回路の表現に関わらず、検証コマンドを再利用できるということである。たとえば、
図15において、AMP_AMSTブロックは、オペアンプおよびマルチプレクサが、トランジスタレベルの結線図として表現されているか、行動的モデルとして表現されているかに関わらず、同じコマンドおよび主張を実行する。このときAMP_AMSTは、これらの回路とともに再利用可能な検証知的財産(VIP)としての役割を果たす。このコンセプトは、第三者にアナログ設計知的財産(IP)を提供する場合を考えると、とくに貴重となる。購入者は、購入したIPとともにより大きなSOC内に埋め込むことができる検証IPを有する。このVIPは、購入した設計IPが不適切に使用されるリスクを低減する。検証IPは、デジタル回路およびトップレベルの入出力について証明されたコンセプトであるが、埋め込まれたアナログIPとともに提供することはこれまで実用的ではなかった。
【0025】
言語AMSTLは、アナログ混合信号集積回路設計について、行動、刺激、出力、測定値、等を記述することを意図しており、アナログシミュレータに入力することを意図される標準的なハードウェア記述言語において利用可能なものより高いレベルのコンストラクトを提供する。利点の1つは、AMSTLにおいてIBCSが利用可能であることに基づく効率の改善である。加えて、AMSTLコードは、任意の所望の標準言語を出力するためにパースすることができる。モジュールAMSTは、アナログ混合信号検証知的財産の行動的モデルであり、設計内の階層構造の任意のレベルに存在するよう意図される。モジュールは、それが監視している、刺激している、および/または、評価しているIPとともに存在することができる。モデルの出力形式(Verilog−A、Verilog−AMS、VHDL−AMS、等)は、ネットリストを介して、アナログまたは混合信号シミュレータに入力可能である。
【0026】
ネットリストは、
1)コンポーネントの記述(たとえば、トランジスタ、抵抗器、コンデンサ、行動的モデル、AMST、デジタルゲート)および設計を組み立てるコンポーネントの属性(たとえばPMOS2はW=1umを有する)
2)設計の接続性(たとえば、PMOS1のドレインはNMOS2のゲートへの接続である)
3)特定のシミュレーションタスクに対する設計の階層構造の構成(たとえば、PLL1はモデルとして表現され、LDO3はトランジスタレベルで表現される)
4)シミュレーションタスクの構成(シミュレーションタイプ(たとえば過渡シミュレーション)、持続時間(たとえば2ms)、許容度設定(たとえばiabstol<10e−10)、デジタルパーティションとアナログパーティションとの間のインタフェース要素の構成、および、出力信号選択を含む)
5)検証データベースにおける任意の情報(予測性能値、信号遷移、信号形状、デューティサイクル、等)(検証活動に関する任意の信号または要素のもの)
を含むがこれらに限定されないシミュレーションタスクおよび検証プロジェクトに関する情報を含む1つ以上のデータベースの表現である。
【0027】
ネットリストは、シミュレーションへの入力である。シミュレーションの目的は、ネットリストにおいて指定される刺激条件および精度基準のもとで、ネットリストに記述される回路の行動を予測することである。a)集積回路(IC)設計のためのフォトマスクは非常に高価であり、b)ICの製造は長時間を要し、c)IC内部の信号を調べることは極めて困難であり、d)現代のIC設計のブレッドボーディングは非実用的であるので、シミュレーションは集積回路(IC)設計の必須部分である。シミュレーションはシミュレータで実行される。高レベルでは、集積回路をシミュレートする手法が3つあり、すなわち、SPICEレベルシミュレーション、デジタルレベルシミュレーション、および、混合モードシミュレーション、である。SPICEレベルシミュレータは、ネットリストを、暗黙積分法(implicit integration method)、ニュートン法、およびスパース行列技法(sparse matrix technique)を用いて解かれる連立非線形微分代数方程式へと縮小する。SPICEレベルシミュレータは、絶対的または相対的許容度の組のもとで、電荷(charge)を保存し、キルヒホッフの電流法則およびキルヒホッフの電圧法則を満たす。デジタルシミュレータは、ネットリストを、離散的なイベントによってトリガされるブール関数の組へと縮小する。デジタルシミュレータは、電荷を保存せず、キルヒホッフの電流法則およびキルヒホッフの電圧法則を満たさない。しかしながらそれらは、はるかに大規模な回路を、より高い抽象度のレベルでシミュレートできる。混合モード(AMS)シミュレーションは、SPICEレベルシミュレータをデジタルシミュレータと組み合わせる。このタイプのシミュレーションでは、設計の一部をシミュレートするためにSPICEレベルシミュレータが用いられ、SPICEレベルパーティション内のコンポーネントのネット電圧および端子電流を予測し、一方で、デジタルパーティション内のコンポーネントのデジタル出力を予測するためにデジタルシミュレータが用いられる。混合モードシミュレーションでは、SPICEレベルパーティションとデジタルレベルパーティションとは、インタフェース要素(基本的レベルでは、(SPICEパーティションからデジタルパーティションへと向かう信号については)理想化された1ビットアナログ・デジタル変換器であり、(デジタルパーティションからSPICEパーティションへと向かう信号については)1ビットデジタル・アナログ変換器である)で接続される。
【0028】
シミュレーションは、以下の出力を生成し得る。
1)ネット電圧および端子電流の連続時間/連続値波形
2)論理ネット出力の離散時間/離散値デジタル波形
3)ネットリストに含まれていた任意のAMSTモジュールを含む任意の行動的モデルによって書かれた任意のデータ
4)主張違反メッセージ
5)モデル行動についてのデバッグ情報、回路収束困難度、等
【0029】
シミュレーションからの出力は、1つ以上のデータベースに記憶される。これらの出力は、後に、回路の安定性を評価するために用いられる。このプロセスは手動であってもよい。設計者は、たとえば、波形をグラフィカル波形ビューワーでレビューすることができる。このプロセスは自動化されてもよい。ソフトウェアプログラムは、スペックコンプライアンス行列(回路シミュレーションにおいて満足された設計目的の組および失敗した設計目的の組を要約する)を構築するために、波形結果およびAMST出力をプログラムに従って解析することができる。
【0030】
間接分岐貢献ステートメント(IBCS)とともに行われ得ることの例は、
1.任意の数のピンを伴うバス(たとえば基準電流バス)をサポートする間接分岐貢献ステートメントを書く。バスのサイズが設計者によって変更されると、実際の直接分岐貢献ステートメントの数が動的に再構成される。
2.ネット名または回路接続性からスペック制限を抽出する間接分岐貢献ステートメントを書く(これによって供給接続性チェックの実装が可能になる)。
3.以前のシミュレーション結果に基づき、制限を設定する間接分岐貢献ステートメントを書く。
4.追加のチェックを、ブロックのトランジスタレベルの実装についてのみ追加する間接分岐貢献ステートメントを書く。
【0031】
これらのケースのそれぞれにおいて、間接分岐貢献ステートメントを組み立てるコードは、言語標準規格と互換性のあるVerilog−A/AMSステートメントを生成する。
【0032】
したがって、本開示の検証コマンドの翻訳のシステムおよび方法は、以下の課題のうち1つ以上を解決する可能性がある。すなわち、短縮されたプログラミング時間を介してコンピュータおよび人的資源のより効率的な使用ができるようにすること、マーケットまでのタイムラグを短縮すること、および/または、より焦点を絞ったより完全な検証確認を確実にすること、である。
【0033】
図1のコンピュータシステムは、本開示が実装可能なシステムアーキテクチャ(たとえば例示のコンピュータシステム100)を示す。
図1の例示的なコンピュータシステムは、説明のためだけのものである。本記載は、特定のコンピュータシステム(パーソナルコンピュータ等)を記載する際に一般的に用いられる用語を参照する場合があるが、本記載およびコンセプトは、他のシステム(
図1には類似しないアーキテクチャを有するシステムを含む)にも同等に当てはまる。
【0034】
コンピュータシステム100は、典型的には、中央処理装置(CPU)110(1つ以上のマイクロプロセッサによって実装されてもよい)と、情報の一時的記憶のためのランダムアクセスメモリ(RAM)112と、情報の永続的記憶のための読み出し専用メモリ(ROM)114とを含む。RAMを制御するためにメモリ制御装置116が提供される。バス118が、コンピュータシステムのコンポーネントを相互接続する。バスを制御するために、バス制御装置120が提供される。システムのコンポーネントからの様々な割り込み信号を受け取って処理するために、割り込み制御装置122が用いられる。フラッシュ124、DVD126、またはハードディスク128、たとえばソリッドステートドライブによって、大容量記憶が提供されてもよい。リムーバブルメディア(フラッシュドライブおよびDVD等)を介して、コンピュータシステムとデータおよびソフトウェアを交換してもよい。フラッシュドライブは、ユニバーサルシリアルバス(USB)ドライブ130に挿入可能であり、ユニバーサルシリアルバス(USB)ドライブ130は制御装置132によってバスに接続される。同様に、DVDはDVDドライブ134に挿入可能であり、DVDドライブ134は制御装置136によってバスに接続される。ハードディスクは固定ディスクドライブ138の一部であり、固定ディスクドライブ138は制御装置140によってバスに接続される。
【0035】
コンピュータシステムに対するユーザ入力は、いくつかのデバイスによって提供可能である。たとえば、キーボード142およびマウス144が制御装置146によってバスに接続される。オーディオ変換器148(マイクロホンおよびスピーカとして作用してもよい)は、図示のようにオーディオ制御装置150によってバスに接続される。他の入力デバイス(ペンおよび/またはタブレット等)がバスおよび適切な制御装置およびソフトウェアに接続されてもよい。システムRAMへの直接のメモリアクセスを行うために、DMA制御装置152が提供される。
【0036】
ビデオディスプレイ156を制御するビデオサブシステム154によって、視覚的表示が生成される。コンピュータシステムは、通信アダプタ158(ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)または他の適切なネットワーク(概略的にバス160およびネットワーク162によって示される)にシステムが相互接続できるようにするもの)も含む。
【0037】
コンピュータシステムの動作は、概して、オペレーティングシステム(いくつか例を挙げれば、Microsoft Corporationから入手可能なウィンドウズ(登録商標)およびウィンドウズ7オペレーティングシステム、Unix(登録商標)、Linux(登録商標)またはApple OS Xオペレーティングシステム)によって制御され調和される。オペレーティングシステムは、システム資源の割り当てを制御し、とくに、スケジューリング処理、メモリ管理、ネットワーキング、I/Oサービス等のタスクを実行する。
【0038】
コンピュータシステム
図2は、システム200を示す。システム200では、コンピュータユーザ210がネットワーク212に接続され、ネットワーク212がクラウド214および計算ファーム216に接続される。
【0039】
低電圧損失(LDO)300回路の概略例が
図3に示される。LDOは増幅器A1を有する。増幅器A1は、反転入力(「−入力」)と、非反転入力(「+入力」)と、出力と、正電圧入力「+V」と、負電圧入力「−V」とを有する。LDO回路は、電圧入力Vinと、電圧出力Voutとを有する。LDOは、電力出力ブロックQ1、Q2およびR2を有する。LDOフィードバック回路は、R3、R4、D1およびR1を備える。増幅器A1はシンボルと呼ばれ、要素D1、R1、R2、R3、R4、C1、C2、Q1およびQ2はプリミティブと呼ばれる。
【0040】
増幅器A1 400回路の概略例は、
図4に示される。増幅器のシンボルは、トランジスタQ3、Q4、Q5、Q6、Q7およびQ8と、抵抗器R5とを備える。反転入力(「−入力」)と、非反転入力(「+入力」)と、出力と、正電圧入力「+V」と、負電圧入力「−V」とを有する増幅器A1。
【0041】
図5は、増幅器A1 510のためのテストベンチ500を示す。テストベンチは、それが接続されたデバイスのために実行される、入力、出力、テスト条件等の具体的な構成である。テストベンチは、反転入力512と、非反転入力514と、正電源入力516と、負電源入力518と、出力520とを有する。テストベンチは、関連付けられた接続、電源供給、IO、等を有し、これらはテストベンチコラテラル(test bench collateral)と呼ばれる。回路の周縁のまわりの部分は、検証ハーネスと呼ばれる。ピン出力および検証ハーネスの動作は、テストされる回路に整合する必要がある。
【0042】
図6は、テスト中のデバイス(Device under test)(DUT)を伴うテストベンチの一般的な階層構造の例600を示す。階層構造はレベルA、B、Cおよびデバイスに従って、また、インスタンス1、2および3に従って配列される。接続線は、具体的な検証に対し、階層構造を通してどのモデルどうしが接続されているかを示す。レベルおよびインスタンス内で、複数のビュータイプが存在可能である。これらの例は、各ケースおよびビューまたはビュータイプに限定することを意図するものではなく、いくつかの可能な階層構造構成を示すものである。
【0043】
集積回路設計階層構造は、階層構造表現を利用した集積回路設計の表現である。この表現により、数百万個のコンポーネント(トランジスタ、抵抗器、コンデンサ、デバイスを接続する金属線、等)を含み得る複雑なデザインの、より効率的な作成が可能になる。設計プロセスの任意の時点において用いられる設計階層構造表現は、実行される設計ステップおよび設計機能のタイプ(アナログ、デジタル、メモリ、等)に基づいて異なり得る。
【0044】
設計が製造されるべきである場合には、表現をマッピングできるように設計のレイアウトが作成される。このマッピングにより、設計製造が可能になるように、マスクセットの個々のレベル上にパターンが作成できるようになる。概して、レイアウト表現を作成するための設計フローは、デジタル機能ブロックおよびサブシステムに比べて、アナログの場合には非常に異なったものとなる。
【0045】
設計プロセスの早期において、設計の大きな部分が、はじめて設計され既存のレイアウト表現を持たずに存在する可能性がある。設計の他の部分はすでに証明されている可能性があり、これらはより高いレベルの抽象度において表現されてもよく(または組み合わせで)レイアウト表現を含んでもよい。
【0046】
本明細書において「ビュー」として参照される、いくつかの共通のタイプ(common type)の設計表現は、様々なビュータイプを備えてもよい。概略ビュータイプは、線またはネットで示される接続性を伴うブロックまたはコンポーネントと、ピンを介した階層構造の他のレベルへの接続との絵(picture)である。Spiceビュータイプは、コンポーネントとその関連付けられたパラメータとの表現であり、場合によっては、spiceネットリストへとインスタンス化される具体的なデバイスモデルを含む。LVSExtractは、ツール(レイアウトビューを解析するとともに、個別のコンポーネントおよび接続性をリバースエンジニアリングするもの)によって作成されるビュータイプである。このタイプのビューのバリエーションは、物理的レイアウトの結果として得られる、設計者によっては描かれなかった抽出された寄生的コンポーネントを含んでもよい。レイアウトビュータイプは、設計のその部分に対するルーティング(routing)を含む具体的な幾何学的配置の表現である。Verilog
TMビュータイプは、標準化されたVerilog
TM形式のテキストファイルである。Verilog−A
TMビュータイプは、標準化されたVerilog−A
TM文法のテキストファイルである。Verilog−AMS
TMビュータイプは、標準化されたVerilog−AMS
TM文法のテキストファイルである。ビュータイプの名称は、電子的設計自動化ツールプロバイダによって異なり得るが、例としてSpectreHDLおよびHDL−Aを含む。
【0047】
他のビュータイプのタイプは、階層構造の組織化および可読性を支援してもよい。一例として、概略的キャプチャシステム等のグラフィック設計ツールは、配置されたグラフィックについてシンボルビュータイプを用いてもよい。シンボルは、階層構造を介してインスタンスを接続するピンと、ブロックの機能を示す図面とを含んでもよい。各例は演算増幅器、基本的デジタルゲート、トランジスタ、抵抗器、等に対する共通のシンボルを含む。
【0048】
記載の複雑性にさらに加えて、設計階層構造の、あるレベルにおける所与のブロックは、同一ビュータイプのビューを複数含んでもよい。一例は、あるブロックの様々なVerilog
TM表現(たとえば、1つはレイアウトに基づく注釈付きタイミングを伴うもの、1つは推定タイミングを伴うもの、1つはタイミングを伴わないもの)であるか、または、設計表現の様々なレベル(ゲートレベル、レジスタ転送レベル(RTL)、等)である。同様に、アナログビューは多数の概略ビューを有してもよい(たとえば、最終トランジスタレベル設計にマッピングするもの、より高いレベルのモデリングのための行動的ブロックの配置を含むもの、レイアウトからの寄生的要素を含み得るもの、混合信号シミュレーションのためのアナログブロックとデジタルブロックとの間のインタフェース要素を含むもの)。また、アナログブロックについて、様々なシミュレーションエクササイズの目的に基づいてモデルが様々な機能性および精度を含む場合には、同一のブロックに対して複数のVerilog−A
TMまたはVerilog−AMS
TMモデルビューが存在してもよい。これら複数のビューおよびビュータイプは、具体的なタスクまたは解析のために用いられる構成にマッピングされる。
【0049】
しばしば、ある具体的なビューがどのタイプの解析のために有益な可能性があるかについてのヒントを提供するために、ビュー名称が作成される。ビュー名称は、以下にリストされるもの等を含んでもよい。Schematicは、トランジスタレベルまたは行動的モデル等の階層構造のいずれかのレベルにおいて評価され得るブロックの配置を含む概略ビューである。Schematic_behavioralは、行動的要素を備える概略ビューである。Schematic_parasiticsは、レイアウトから抽出または推定される寄生的コンポーネントを含む概略ビューである。Spiceは、ネットリストに実装される情報と、具体的なアナログシミュレータのためのコンポーネントとを含むspiceビューである。Behavioral_vaは、Verilog−A
TMを評価し得るアナログシミュレータのための具体的なブロックをモデル化するVerilog−A
TM形式のテキストビューであり、Behavioral_vamsは、Verilog−A
TMおよびVerilogを評価し得る混合信号シミュレータのための具体的なブロックをモデル化するVerilog−AMS
TM形式のテキストビューである。
【0050】
図6に示す具体例では、テスト中のデバイスA1、インスタンス1を伴う一般的な階層構造の例が、後続の構成に基づいて定義される:A1、インスタンス1およびB1、インスタンス1は、Schematicレベルモデルによってモデル化される。B2、インスタンス1は、Schematic_behavioralモデルによってモデル化され、C1、インスタンス1およびC2インスタンス1は、Schematicモデルを用いてモデル化される。C1、インスタンス2およびC3、インスタンス1は、Behavioral_vaモデルによってモデル化される。階層構造の底(bottom)には、デバイス1、2および3、インスタンス1、2および3が、Spiceを用いてモデル化される。
【0051】
図6に示す具体例では、デバイス1、インスタンス2はダミーデバイスであり、したがって、シミュレータマトリックスを変更しない。デバイス1、インスタンス2は、ダミーデバイスとして接続されるC1、インスタンス1概略内に配置されており、したがって、シミュレータ内にスタンプされるA1、インスタンス1マトリックスの一部ではない。
【0052】
ある変更が、検証の再実行を必要とするか否かは、階層構造を介した接続によって部分的に決定される。一般的な階層構造の例に対するこの具体的な例では(テスト中のデバイスA1、インスタンス1)、デバイス1、インスタンス2、Schematicビューが変更されたとしても、このデバイスはダミーデバイスであって、シミュレータ内にスタンプされるマトリックスを修正しないので、シミュレータを再実行する必要はないであろう。
【0053】
図6に対するビューでは、C1、インスタンス1 Schematicビューが、シミュレータモデルの構成の一部を形成する。もしこれが変更され、変更がシミュレータマトリックスに影響を与えるのに十分なほど実体的なものであれば、テストベンチ1は再実行する必要があろう。C1、インスタンス2Schematicビューは、シミュレータモデル例の構成の一部を形成しないので、これが変更されたとしても、テストベンチ1は再実行する必要はないであろう。
【0054】
より抽象的なレベルでは、C1、Schematicビューが変更された場合(したがってこれによりインスタンス1および2内の概略ビューが変更される)には、これはシミュレータマトリックス内にスタンプされる情報の変更に影響を与えるので、テストベンチ1は再実行する必要があろう。C1、Schematicビューに対する非実体的な変更が(たとえばコメントの追加によって)行われ、マトリックス内のシミュレータによってスタンプされる情報に変更が行われなかった場合には、この設計構成は再実行する必要がないであろう。構成に変更が行われたか否かと、マトリックスのスタンプの影響とを決定することは、必要となる検証実行の回数に大きな影響を与えることが明白である。
【0055】
図7は、電源管理チップPMIC700をモデル化するためにから選択され得る様々なモデルビューのいくつかを示す。PMIC_testbenchは、Behavioral_vamsレベルおよびBehavioral_vaレベル(刺激および出力を有する)を有する。PMICは、SchematicレベルおよびSchematic_behavioralレベルを有する。LDO、LDOイネーブル制御およびバッテリスーパーバイザは、Schematicレベル、Schematic_behavioralレベルおよびBehavioral_vamsレベルにおいて定義される。電圧基準、LDOフィードバックおよびLDO比較器は、SchematicレベルおよびBehavioral_vaレベルにおいて定義される。LDO増幅器は、SchematicレベルおよびSchematic_parasiticsレベルにおいて定義される。行動的増幅器(Behavioral Amplifier)および行動的バイアス(Behavioral Bias)は、Behavior_vaレベルにおいて定義される。LDO制御論理は、SchematicレベルおよびVerilog
TMレベルにおいて定義される。デバイス1〜Xは、Spiceレベルにおいて定義される。
【0056】
図8は、電源管理チップ800のための、
図6に記載される電源管理チップPMICの第1テスト階層構造を示す。この図は、Spiceプリミティブコンポーネント構成が定義されている場合には、階層構造の一部を例示する。このモデルでは、デバイス1、インスタンス2はダミーデバイスであり、シミュレータマトリックスを変更しない。
【0057】
図9は、電源管理チップ900のための、
図7に記載される電源管理チップPMICの第2テスト階層構造を示す。この図は、いくつかのアナログ行動的レベルモデルと、いくつかのVerilog
TM表現と、いくつかのSpiceプリミティブコンポーネントとを伴う可能な混合構成の1つのための階層構造の一部を例示する。
【0058】
図10は、電源管理チップ1000のための、
図7に記載される電源管理チップPMICの第3テスト階層構造を示す。これらの図は、行動的構成が定義されている場合には、階層構造の一部を例示する。
【0059】
図11は、比較的大規模なシステム・オン・ア・チップ(SOC)に含まれる増幅器のなんらかの典型的な特徴を持つ演算増幅器の簡単な例を示す。この簡単な例でも、混合信号設計に対する今日の検証困難性の増大する複雑さを実証することができる。簡単なマルチプレクサ(mux)が増幅器に入力を供給する。マルチプレクサに対する制御信号IN_CTRLが、マルチプレクサブロック内の論理ゲートの列に対するデジタル入力信号として働く。これらのゲートは、2ペアのアナログ入力の間で選択するためにスイッチを制御する(すなわち、ペア1(IN_POS_1およびIN_NEG_1)およびペア2(IN_POS_2およびIN_NEG_2)である)。たとえば、論理レベル「0」に等しいIN_CTRLの値は、IN_POS_1およびIN_NEG_1に接続されたスイッチを閉じることができ、論理レベル「1」のIN_CTRLの値は、IN_POS_2およびIN_NEG_2に接続されたスイッチを閉じることができる。その後、選択されたアナログ入力はマルチプレクサから出力される。このとき、これらの信号は増幅器入力に接続される。マルチプレクサブロックは、電源供給への接続を有する。このケースでは、アナログ入力がブロックを通過するので、電源供給接続は、アナログ供給電圧AVDDおよびGNDに対する。
【0060】
増幅器ブロックについても、電源供給接続は、アナログ供給電圧AVDDおよびGNDに対する。複雑なSOCでは、複数の内部電源供給を有することは珍しいことではないということに注意すべきである。アナログブロックについてすら、異なる電源供給レベルのようなオプションがあり得る。他のケースでは、同一の電圧レベルが供給されてもよいが、供給源の1つは、供給ライン上のいかなるノイズにも敏感な可能性のあるクリティカルなブロックに対して用いられてもよい。よりノイズの多い他のブロック(典型的には、高周波スイッチングのような機能に起因するもの)は、同じ電圧レベルの別の供給源に接続されてもよい。この理由から、デジタルブロックは、ほぼ常に、アナログブロックとは分離して電源供給される。さらに、電力低減の重要さが増しているので、電力供給の一部は様々な動作モードの間にオフにされる。結果として、設計エンジニアは、あるブロックが適切な時間に利用可能な供給源に接続されているということを検証する必要がある場合もある。
【0061】
比較的大規模なチップ内の別の共通構成は、アナログ機能に必要なバイアス電流の多くを提供する共通ブロックを有することである。この例では、増幅器は1uAバイアス電流のための入力を有する。別の共通オプションは、トリム(trim)および制御またはプログラム可能性に対する信号を含む。この例では、増幅器は、利得値を設定できる2つの制御ビットGAIN_CTRL<1:0>と、利得値をわずかに調整する3ビットGAIN_TRIM<2:0>とを有する。典型的には、各デバイスがテストされ、製造プロセスのバリエーションを補償して所望の利得値を指定された値になるべく近く整合させるために用いられる時に、トリムが実行される。このケースでは、GAIN_CTRLは、具体的なアプリケーションに対して最良の利得設定をピックするためのプログラム可能性特徴(programmability feature)である。ENABLE信号により、チップが動作している間に増幅器がオンまたはオフになることができる。これらのタイプの制御は、電力消費を最小化するために、チップのクリーンパワーアップシーケンスを可能にするために、および、障害状況中に保護を提供するために、しばしば提供される。
【0062】
この簡単な例について、検証要件の例がいくつかある。これらの要件は、いくつかのカテゴリに分離することができる:
・動作機能‐増幅器およびマルチプレクサがそれぞれの機能的要件に適合するか
‐マルチプレクサが選択された入力信号を正しくマルチプレクサ出力に通過させるか
‐増幅器がその期待される動作に適合するか(利得、スルーレート(slew rate)、入力範囲、出力範囲、等)
・電源供給およびバイアス
‐ブロックが適切な電源供給に接続され、正しいバイアスを受けるか
‐供給およびバイアスは、期待される時に利用可能なであり、期待される範囲内で動作するか
・制御信号
‐制御信号の全設定について、正しい行動が観測されるか
・障害状況
‐ブロックピンのいずれかが許容または期待される範囲外の態様で行動した時に、ブロックが適切に動作するか、または、その状況があり得ない(他の部分で防止されている)か、処置することを期待されていないか
【0063】
本特許のコンテキストにおいて、価値のうち多くは、多数の可能性の組み合わせをステップスルーするプロセスをより効率的に管理することの結果として得られる。最良の例の1つは、多数のデジタル制御またはトリムオプションを単にステップスルーすることである。
【0064】
比較的大規模なSOCと、このSOCに対するトップレベルテストベンチとのコンテキスト内の簡単な例を考える。このテストベンチは、チップ用の多数のテストベンチのうちの1つであってもよいが、この例は、増幅器のために開発された検証知的財産が、トップレベルテストベンチからでも如何に活用され得るかを示すことができる。
図6に示す階層構造的コンセプトは、テストベンチの例がどのようにして構築され得るかを示すために挿すことができる。この例では、
図6からのA1がトップレベルテストベンチ(チップ、すべての必要な回路またはモデル(システム入力、出力負荷、外部電源供給またはチップのための他のコンポーネントを表す)、テスト構成の各部(ソフトウェアを介してプログラムに従って記述可能なもの)を含む)を表す。この階層構造の例は、
図6の図示に読み取ることができる。上述のように、階層構造内の各項目は、利用可能な情報とブロックの意図される目的とに依存して、多くのタイプのビューによって表すことができる。
【0065】
この例における階層構造の第2レベル(
図6のレベル「B」に相関する)は、このトップレベルテストベンチ内に配置されたすべての要素を含む。最初の要素はチップ自身である。この例では、チップはセルB1として識別される。B2は、チップに対するシステム入力を表すためのモデルまたは回路を含むセルであってもよい。B3は、チップから見たシステム出力負荷およびシステム提供電源供給を表すモデルまたは回路を含むセルであってもよい。この例では、B4は、チップのピンに直接または他のブロックに接続するための、任意のブロック内で任意のパラメータ化された機能に対する値を提供するための、および/または、シミュレーション中に具体的な性能を監視し測定するための、ソフトウェアに書かれたブロックである。この簡単な例では、増幅器ブロックの例の比較的低いレベルにおける信号の作成につながる信号のみが含まれる。
【0066】
この、ソフトウェア内に捕捉可能なブロックB4(単数または複数)は、典型的には、集積回路設計をターゲットとした高級言語(SystemVerilog、Verilog、Verilog−AMS、Verilog−A、SystemC、VHDL、等)を用いるが、より一般的な言語およびスクリプト(C、C++、TCL、PERL、等)を活用してもよい。ソフトウェア部分は、刺激を生成してもよく、既存の回路またはシステムブロックにおけるパラメータ用の設計値を定義してもよく、シミュレーション全体を通して性能を測定し監視してもよい。たとえば、SystemVerilogのためのユニバーサル検証手法(Universal Verification Methodology)(UVM)は、スコアボード関数を定義し監視するとともに刺激を定義するための共通のコンストラクトを含む。デジタル検証手法もまた、具体的な機能またはプロトコルをターゲットとした検証知的財産(VIP)の具体的な部分をいくつか含む。インスタンス化され定義された通信標準規格(ユニバーサルシリアルバス(USB)、シリアル周辺インタフェース(SPI)バス、等)は、特定の検証IP(インタフェースを介してデータを供給するとともに、そのインタフェースがプロトコル標準規格に整合していることをテストし確認するために、検証プロセスの間に活用可能である)を持つからである。この例では、デジタルトリムおよび制御は、SPIインタフェースを介して、またはチップ自身によって、プログラムされていると想定する。
【0067】
図12のテストベンチでは、外部電源供給VDD_EXTが、TOP_AMSTにおいてVerilog−Aコードによって生成されるところである。この場合、VDD_EXTは、SUPPLIES_AND_OUTPUTSブロックへの入力となる。このブロックは、その後、SOCに主外部電源供給として接続されるVDDを出力する。入力としては、INPUTSブロック内でシステム入力が生成され、その後、SOCに接続する前にTOP_AMSTブロックを通過する。入力がテストハーネスを通過することにより、シミュレーションの全体を通して、入力信号の電圧および電流の双方を監視(または他の計算のためのパラメータとして使用)できるようになる。同様に、SOCからのVOUTは、SUPPLIES_AND_OUTPUTSブロックに入る前にTOP_AMSTを通過する。最後に、監視のために、SUPPLIES_AND_OUTPUTSブロックからTOP_AMSTにVOUT_EXTが供給される。AMSTテストハーネスブロックをどの信号が通過すべきかの決定は、システムと、システム全体を正確に表すためにチップ周辺に要求される回路/モデルの量とに強く依存する。究極的には、それらの決定は、システム設計および検証計画によって駆動される。
【0068】
図14では、階層構造の比較的低いレベルの信号は、それらの信号がトップレベルのピンに持ってこられない限りアクセスできない。チップを表すインスタンスB1の階層構造をさらに考えよう。この例では、チップの階層構造における次のレベルは、C1すなわちSOC_COREと、C2すなわちSOC_PAD_RINGとを含む。その後、上から、D1すなわちAMP_COREサブシステム、D2すなわちPWR_MGMT(チップのための電源管理機能)、およびD3すなわちDIG_CTRLを見るために、C1内にプッシュダウンする。
【0069】
図15では、AMP_COREサブシステム内にさらに下ることにより、サブシステムの要素が示される:E1すなわちMUXと、E2すなわちAMPと、E3すなわちAMP_AMST(このサブシステムに対する検証IPを含むVerilogAMSブロック)とである。
【0070】
デジタルトリムビットを伴う簡単なバンドギャップのケースを考える。回路の目的は、環境(たとえば温度)変化およびプロセス(たとえば酸化物の厚さ)変化に関して予測可能な出力電圧を生成することである。デジタルトリムビットは、予測可能なステップサイズを持つ出力値の範囲を提供する。このバンドギャップに対するAMSTは、電源供給、負荷コンポーネントおよびデジタルトリム値を含むバンドギャップに対してテスト回路全体を定義する必要がある。スターターとして、簡単な供給源の定義を見てみよう:
【0071】
# 供給開始ランプ時刻
my $glSupplyRampStartObj = $glAMSTObj->create_variable("glSupplyRampStartDbl", 50e-9);
# 供給終了ランプ時刻
my $glSupplyRampEndObj = $glAMSTObj->create_variable("glSupplyRampEndDbl", 100e-9);
# 供給電圧値
my $glAvddValObj = $glAMSTObj->create_variable("glAvddValDbl", 5);
# 供給用のPWLを生成
$glAMSTObj->create_vpwl(
"arP0" => "AVDD",
"arP1" => "AVSS",
"arPwlRef" => [
0, 0,
$glSupplyRampStartObj, 0,
$glSupplyRampEndObj,
$glAvddValObj
]
);
【0072】
この例は、t=0において0V、t=50nsにおいて0V、t=100nsにおいて5Vの、簡単な、区分的に線形な供給を生成する。すべての変数がパラメータ化されていることに注意せよ。プログラムは、このAMSTファイルを読み込み、変数およびそのタイプのリストを抽出することができる。この能力により、ユーザは、これらの値を修正/スイープし、同じグループのAMSTテストベンチから様々なテストベクトルを構築することができる。参照により、追加の回路コンポーネントをインスタンス化してもよい。たとえば、以下のコードはバンドギャップにVerilog−A負荷抵抗器を追加する:
【0073】
# プログラム的に負荷抵抗器を定義
$glAMSTObj->add_module_instance(
"arModuleName" => "resistor",
"arModuleFilename" => "behav_resistor.va",
"arParameterValueMap" => {
"r" => $glOutputLoadObj
},
"arNodeNetMap" => {
"IN_NODE0" => "VBG",
"OUT_NODE1" => "AVSS",
}
);
【0074】
このバンドギャップは、トリムビットの可能な組み合わせすべてについてテストされる必要がある。以下の文法は、すべてのトリムビットのフル・ファクトリアルな実験をセットアップする:
# デジタル入力の可能な組み合わせをすべてテスト
$glAMSTObj->create_voltage_full_factorial(
"arFactDelay" => $glSupplyRampEndObj,
"arFactStateValRef" => [0, $glAvddValObj],
"arFactStateDurRef" => [0.50, 0.50],
"arFactChgTimeRef" => [2e-9, 2e-9],
"arFactMinPeriod" => 10e-6,
"arFactSignalRef" => [
{ "arP0"=>"DTRIM[0:2]",
"arP1"=>"AVSS"}
]
);
【0076】
module amst(...)
output [2:0] DTRIM;
electrical [2:0] DTRIM;
output AVSS;
electrical AVSS;
parameter real glSupplyRampEndDbl = 1e-07;
parameter real glAvddValDbl = 5;
real loDtrimVal2loAvssValBit0;
real loDtrimVal2loAvssValBit1;
real loDtrimVal2loAvssValBit2;
analog begin
@ (initial_step) begin
loDtrimVal2loAvssValBit0 = 0;
loDtrimVal2loAvssValBit1 = 0;
loDtrimVal2loAvssValBit2 = 0;
end
...
// DTRIM[0]
@(timer(glSupplyRampEndDbl, 1e-05, 1p))
loDtrimVal2loAvssValBit0 = 0;
@(timer((glSupplyRampEndDbl + 0.5 * 1e-05), 1e-05, 1p))
loDtrimVal2loAvssValBit0 = glAvddValDbl;
V(DTRIM[0], AVSS) <+ transition(loDtrimVal2loAvssValBit0, 0, 2e-09, 2e-09);
// DTRIM[1]
@(timer(glSupplyRampEndDbl, (1e-05 * 2), 1p))
loDtrimVal2loAvssValBit1 = 0;
@(timer((glSupplyRampEndDbl + (0.5 * 1e-05 * 2)), (1e-05 * 2), 1p))
loDtrimVal2loAvssValBit1 = glAvddValDbl;
V(DTRIM[1], AVSS) <+ transition(loDtrimVal2loAvssValBit1, 0, 2e-09, 2e-09);
// DTRIM[2]
@(timer(glSupplyRampEndDbl, (1e-05 * 4), 1p))
loDtrimVal2loAvssValBit2 = 0;
@(timer((glSupplyRampEndDbl + (0.5 * 1e-05 * 4)), (1e-05 * 4), 1p))
loDtrimVal2loAvssValBit2 = glAvddValDbl;
V(DTRIM[2], AVSS) <+ transition(loDtrimVal2loAvssValBit2, 0, 2e-09, 2e-09);
...
endmodule
【0077】
上記の定義は、3個のトリム信号が存在することを述べている。各信号は、テストされるべき2つの適正な値を持つ。フル・ファクトリアルは、可能な状態をすべて列挙する。したがって、3個の2進変数について、適正な信号の組み合わせをすべてテストする8個の期間の組を得る。テスト回路および刺激が定義されたら、測定値および主張が定義される必要がある。簡単な電圧測定値の例:
【0078】
my $glVbgTrim0MeasObj = $glAMSTObj->create_voltage_measure(
"arMeasureNet" => "VBG",
"arRefNet" => "AVSS",
"arMinVal" => 0.850,
"arMaxVal" => 0.900
);
【0079】
出力ノードVBGが0.850〜0.900の間である時はいつでも、この電圧測定値は真である。この測定は、シミュレーションの時間ステップすべてにおいて実行され評価される。ブール測定値を収集したものは、条件付き主張を生成するために組み合わせることができる。たとえば、以下の主張は、DTRIM[2:0]ビットが「000」であり、VDD供給がその最小閾値を超えている時には、上で定義された$glVbgTrim0MeasObj測定値(0.850≦VBG≦0.900)は真でなければならないということを述べている。
【0080】
# DTRIM="000"の時 => VBG=0.9
$glAMSTObj->create_conditional_assert(
"arAssertNameStr" => 'when DTRIM=\"000\" => VBG=0.9',
"arCondition" => assert_and(
$glVddAboveMin,
assert_not($glDtrim0MeasObj),
assert_not($glDtrim1MeasObj),
assert_not($glDtrim2MeasObj)
),
"arAssertDelay" => $loMeasureDelayDbl,
"arAssert" => assert_and(
$glVbgTrim0MeasObj,
$glPgoodMeasObj
),
"arAssertAtLeastOnce" => 1
);
【0081】
出力電圧を、なんらかの時点で測定するとより簡単であろう(たとえば100usにおいてVBGは0.850と0.900との間になければならない)。このタイプのチェックもまた、AMSTLで容易に実装可能である。しかしながら、上の主張は、単一の時刻においてのみならず、主張条件が満たされている間は常に、バンドギャップスペックのサブセットを明示的に捕捉し(たとえば「when DTRIM=000 => VBG=0.9」)、スペックのその部分が真であることを確認するので、はるかにパワフルである。
【0082】
次の例では、以下のコードが、測定目的のための直接分岐貢献ステートメントを生成する。この例では、基準電流のワイヤバスを16個有する。1us後に電流が0.9*750nAと1.1*750nAとの間であることを確実にするために、以下の文法を用いる。
【0083】
zip_setup_std_supplies(
50e-09, 100e-09,
[
["Ib_750n_AMST_IN[0:15]", "Ib_750n_AMST_OUT[0:15]", 0]
]
);
zip_assert_output_currents(
0.9, 1.1, 1e-06,
{
"Ib_750n_AMST_IN[0:15]" => 750e-09
}
);
…
parameter real loSupplyRampStartDbl = 5e-08;
parameter real loSupplyRampEndDbl = 1e-07;
parameter real loIb_750n_AMST_INValDbl = 0;
parameter real arVolEnGndMin1 = 2.85;
parameter real arVolEnGndMax1 = 3.15;
parameter real arCurIb_750n_amst_in0Min1 = 6.75e-07;
parameter real arCurIb_750n_amst_in0Max1 = 8.25e-07;
real loChangeTimeV1;
real loIb_750n_amst_inValBit0;
// create analog conditional assert 1
integer loVolEnGndAboveMin1;
integer loVolEnGndAboveMax1;
integer loCurIb_750n_amst_in0AboveMin1;
integer loCurIb_750n_amst_in0AboveMax1;
integer loCondition1;
integer loOldCondition1;
integer loSat1;
integer loFail1;
integer loDisplay1;
integer loAssert1;
integer loMeasure1;
real loCheckTime1;
integer loAssertOutOn1;
analog begin
@ (initial_step) begin
loChangeTimeV1 = 0;
loIb_750n_amst_inValBit0 = 0;
// create analog conditional assert 1
loVolEnGndAboveMin1 = 0;
loVolEnGndAboveMax1 = 0;
loCurIb_750n_amst_in0AboveMin1 = 0;
loCurIb_750n_amst_in0AboveMax1 = 0;
loCondition1 = 0;
loOldCondition1 = 0;
loSat1 = 0;
loFail1 = 0;
loDisplay1 = 0;
loAssert1 = 0;
loMeasure1 = 0;
loCheckTime1 = 0;
loAssertOutOn1 = 0;
end
V(NEG_Ib_750n_amst_in0, Ib_750n_AMST_OUT[0]) <+ transition(loIb_750n_amst_inValBit0, 0, loChangeTimeV1, loChangeTimeV1);
V(Ib_750n_AMST_IN[0], NEG_Ib_750n_amst_in0) <+ 0;
// CURRENT: when 2.85<EN<3.15 ==> 6.75e-07 < Ib_750n_AMST_IN[0] < 8.25e-07
loDisplay1 = 1;
`ZIP_VCROSS_TO_BLN(EN, GND, arVolEnGndMin1, loVolEnGndAboveMin1);
`ZIP_VCROSS_TO_BLN(EN, GND, arVolEnGndMax1, loVolEnGndAboveMax1);
`ZIP_ICROSS_TO_BLN(Ib_750n_AMST_IN[0], NEG_Ib_750n_amst_in0, arCurIb_750n_amst_in0Min1, loCurIb_750n_amst_in0AboveMin1);
`ZIP_ICROSS_TO_BLN(Ib_750n_AMST_IN[0], NEG_Ib_750n_amst_in0, arCurIb_750n_amst_in0Max1, loCurIb_750n_amst_in0AboveMax1);
loCondition1 = (loVolEnGndAboveMin1 && !loVolEnGndAboveMax1);
if (loCondition1 && !loOldCondition1) begin
loAssertOutOn1 = 0;
loCheckTime1 = $abstime + 1e-06;
end
@(timer(loCheckTime1)) begin
loAssertOutOn1 = 1;
end
loAssert1 = (loCurIb_750n_amst_in0AboveMin1 && !loCurIb_750n_amst_in0AboveMax1);
if (loCondition1 && loAssertOutOn1) begin
loMeasure1 = loAssert1;
if ((loSat1 && !loFail1 && loMeasure1) || (!loSat1 && loFail1 && !loMeasure1)) begin
loDisplay1 = 0;
end
if (loDisplay1) begin
if (loMeasure1) begin
loSat1 = 1;
loFail1 = 0;
$fdisplay(fileDescriptor, "CURRENT: when 2.85<EN<3.15 ==> 6.75e-07 < Ib_750n_AMST_IN[0] < 8.25e-07 succeeds %e", $abstime);
end else begin
loSat1 = 0;
loFail1 = 1;
$fdisplay(fileDescriptor, "CURRENT: when 2.85<EN<3.15 ==> 6.75e-07 < Ib_750n_AMST_IN[0] < 8.25e-07 fails %e", $abstime);
end
end
end
loOldCondition1 = loCondition1;
end
【0084】
一例では、
図16は、電子的設計を受信するステップ1610と、少なくとも1つの間接分岐貢献ステートメントを有する少なくとも1つのアナログテストハーネスモデルを受信するステップ1612とを備える、電子的設計の検証コマンドの翻訳のネットリストコンピュータ実装される方法1600に対する電子的設計を示す。また、この方法は、少なくとも1つのアナログテストハーネスモデルに少なくとも部分的に基づいて少なくとも1つの間接分岐貢献ステートメントを複数の直接分岐貢献演算子へと翻訳するステップ1614と、翻訳に少なくとも部分的に基づいてネットリストを生成するステップ1616とを備える。電子的設計は、階層構造の複数のレベルを包含してもよい。アナログテストハーネスは、最も低いレベルにモジュールとして存在してもよい(そのレベルでそれは任意の階層構造レベルに対して回路とともにパッケージされたテストベンチとして作用する)。
図6に戻り、電子的設計は、異なる階層構造のレベルを組み合わせる図内の各接続されたブロックを包含する。トップレベル階層構造はA1であり、次のレベルの階層構造はBであり、これはB1およびB2を含み、B階層構造の下には、C1、C2およびC3を有するC階層構造が存在する。この具体例では、B1レベルおよびその下では、モデルはSchematicモデルおよびSpiceモデルからなる。B2レベルでは、モデルはSchematic_behavioralモデルおよびBehavioral_vaモデルを包含する。この例では、アナログテストモデルはA1、インスタンス1レベルに接続され、ネットリスト(テスト中のコンポーネントのそれぞれに接続する線)を介して接続される。
【0085】
一例では、間接分岐貢献ステートメントはループしていてもよい(その中で脱出条件が満たされるまで命令の列が繰り返される)。間接ステートメントは条件付きであってもよい(真または偽のブール条件と、命名(入力、出力またはデバイスがこれに基づいてパースされる)とに基づき、アクションが取られ、命令の組と解析とを推測し(これに基づいてネットに対する出力または入力が解析される)、解析に基づいて決定が行われる)。
【0086】
アナログテストハーネスモデルは、トップブロックレベルから個々の回路等まで、設計の階層構造の任意のレベルに配置可能である。アナログテストハーネスモデルの例の1つは、低レベルのブロックにおいて記述されモジュールを形成する(設計において、テストするモジュール(testing module)はそのブロックに含まれる)。アナログテストハーネスモデルを個別のブロックに含めることに関してあり得る利点の1つは、モジュール内での自己検証をサポートするための回路設計とともに送られ得ることである。
【0087】
一例では、ネットリストは電子的設計の接続性を提供する(本質的には、あるデバイスのどの端子が別のデバイスのどの端子に接続されるか)。ネットリストは、各デバイスについてデバイスの詳細(device specifics)を含んでもよい。
【0088】
一例では、アナログテストハーネスモデルに基づいて間接分岐貢献ステートメントを複数の直接分岐貢献演算子へと翻訳することは、1つのブランケットステートメントを、そのブランケットステートメントのスパンを包含する個別のステートメントの列に変換することである。本質的には、「index conditions<1:10>」というステートメントは、「condition 1」、「condition 2」、…、「condition 10」へと分解される。
【0089】
翻訳は、標準化されたアナログハードウェア記述言語(Verilog−A
TM文法およびVerilog−AMS
TM文法の少なくとも一方を少なくとも備えてもよい)を利用してもよい。
【0090】
別の例では、
図17は、電子的設計の表現を受信するステップ1710と、少なくとも1つの間接分岐貢献ステートメントを有する少なくとも1つのアナログテストハーネスモデルを電子的設計の表現とともに受信するステップ1712とを備える、電子的設計の検証コマンドの翻訳のネットリストコンピュータ実装される方法1700に対する電子的設計を示す。さらに、この方法は、少なくとも1つのアナログテストハーネスモデルおよび電子的設計に少なくとも部分的に基づいて少なくとも1つの間接分岐貢献ステートメントを複数の直接分岐貢献演算子へと翻訳するステップ1714と、翻訳に少なくとも部分的に基づいてネットリストを生成するステップ1716とを備える。
図7に戻り、設計例の各階層構造および各モデルが示される。検証の目的の1つは、設計の各ブロックおよび各モデルを、適切な条件でテストすることである。間接分岐貢献ステートメントを翻訳することは、この多次元のタスクを、循環の少なくとも一部を自動化することにより支援する。
【0091】
少なくとも1つのアナログテストハーネスモデルは、少なくとも1つの刺激、少なくとも1つの刺激主張、少なくとも1つの出力主張、および/または、少なくとも1つの出力測定値を有してもよい。電子的設計の表現は、アナログまたは混合信号であってもよく、少なくとも1つのトランジスタレベル回路部、少なくとも1つの行動的モデル化された回路部、物理設計に少なくとも部分的に基づく少なくとも1つの寄生モデルに基づく少なくとも1つの回路、および/または、少なくとも1つの行動的モデル化された回路を備えてもよい。
【0092】
別の例では、
図18は、電子的設計の表現を受信するステップ1810と、少なくとも1つの刺激および少なくとも1つの刺激主張のうち少なくとも一方を有する少なくとも1つのアナログテストハーネスモデルを受信するステップ1812と、電子的設計に対する少なくとも1つの検証サブルーチンコマンドを受信するステップ1814とを備える、電子的設計の検証コマンドの翻訳のネットリストコンピュータ実装される方法1800に対する電子的設計を示す(少なくとも1つの検証サブルーチンコマンドは少なくとも1つの間接分岐貢献ステートメントを有する)。また、この方法は、少なくとも1つの検証サブルーチンコマンドと、少なくとも1つのアナログテストハーネスモデルと、電子的設計とに少なくとも部分的に基づいて、少なくとも1つの検証サブルーチンコマンドを対応する標準化されたアナログハードウェア記述言語へと翻訳するステップ1816と、翻訳に少なくとも部分的に基づいてネットリストを生成するステップ1818とを備える。刺激主張は、電子システム内の属性定義、制約等を定義してもよい。
図8に戻り、電子的設計は、PMIC_testbenchに続く接続されたブロックのそれぞれを包含し、少なくとも1つのアナログテストハーネスモデルは、PMIC_testbenchとマークされたブロックに関する。そのモデルに対するネットリストは、各接続(
図8の接続線)を示す。この設計に関連付けられた階層構造は、LDO、バッテリスーパーバイザおよび電圧基準のブロックが、階層構造においてPMICブロックより低いということを示す。さらに、このモデルは、主に設計の概略部分をレビューする。少なくとも1つの間接分岐貢献ステートメントを複数の直接分岐貢献演算子へと翻訳する能力は、各階層構造および設計の各部分を、設計内の各ブロックについてレビューする効率を増大する可能性がある。
【0093】
標準化されたアナログハードウェア記述言語は、Verilog−A
TM文法およびVerilog−AMS
TM文法のうち少なくとも一方を少なくとも備えてもよい。少なくとも1つのアナログテストハーネスモデルは、少なくとも1つの出力主張および少なくとも1つの出力測定値のうち少なくとも一方を有してもよい。
【0094】
別の例では、
図19は、電子的設計の表現を受信するステップ1910と、少なくとも1つの出力主張および少なくとも1つの出力測定値のうち少なくとも一方を有する少なくとも1つのアナログテストハーネスモデルを受信するステップ1912と、電子的設計に対する少なくとも1つの検証サブルーチンコマンドを受信するステップ1914(この少なくとも1つの検証サブルーチンコマンドは少なくとも1つの間接分岐貢献ステートメントを有する)とを備える、電子的設計の検証コマンドの翻訳のコンピュータ実装される方法1900の検証サブルーチンを介するネットリストに対する電子的設計を示す。また、この方法は、少なくとも1つの検証サブルーチンコマンドと、少なくとも1つのアナログテストハーネスモデルと、電子的設計とに少なくとも部分的に基づいて、少なくとも1つの検証サブルーチンコマンドを対応する少なくとも1つの標準化されたアナログハードウェア記述言語へと翻訳するステップ1916と、翻訳に少なくとも部分的に基づいてネットリストを生成するステップ1918とを備える。
図9に戻り、電子的設計は、PMIC_testbenchに続く接続されたブロックのそれぞれを包含し、少なくとも1つのアナログテストハーネスモデルは、PMIC_testbenchとマークされたブロックに関する。ネットリストは接続性を示す(各ブロックを接続する線によって示される)。この設計に関連付けられた階層構造は、LDO、バッテリスーパーバイザおよび電圧基準のブロックが、階層構造においてPMICブロックより低いということを示す。このモデルは、モデルの概略、概略行動的、およびbehavioral.vaの各態様(aspect)をレビューする。全体の電子的設計は
図8と同じであるが、テストされる対象、階層構造および接続性が異なる。少なくとも1つの間接分岐貢献ステートメントを複数の直接分岐貢献演算子へと翻訳する能力は、様々なモデルおよび階層構造を、より完全な態様でレビューすることを支援する。
【0095】
標準化されたアナログハードウェア記述言語は、Verilog−A
TM文法およびVerilog−AMS
TM文法のうち少なくとも一方を少なくとも備えてもよい。少なくとも1つの検証サブルーチンコマンドは、少なくとも1つの仕様サブセットを有してもよい。少なくとも1つのアナログハーネスモデルは、少なくとも1つの出力主張および少なくとも1つの出力測定値のうち少なくとも一方に少なくとも部分的に基づいて、少なくとも1つの仕様サブセットを確認(validate)してもよい。少なくとも1つの仕様サブセットは、データ変換を有してもよい。
【0096】
別の例では、
図20は、過渡的でない(non-transitory)コンピュータ可用媒体2000上に実施される抽出されたデータ比較コンピュータプログラム製品を介する電子的設計を示す(この過渡的でないコンピュータ可用媒体は、命令の列を記憶しており、この命令の列がプロセッサによって実行されると、この命令の列はそのプロセッサを電子的設計の検証コマンドの翻訳の方法を実行させ、方法は、少なくとも1つの刺激および少なくとも1つの刺激主張のうち少なくとも一方を有する少なくとも1つのアナログテストハーネスモデルを受信するステップ2010(少なくとも1つのアナログテストハーネスモデルは少なくとも1つのパラメータ化された変数を有する)と、電子的設計に対する少なくとも1つの検証サブルーチンコマンドを受信するステップ2012(少なくとも1つの検証サブルーチンコマンドは少なくとも1つの間接分岐貢献ステートメントを有する)とを備える)。また、この方法は、少なくとも1つのアナログテストハーネスおよび少なくとも1つの検証サブルーチンコマンドに少なくとも部分的に基づいて少なくとも1つの規則を検索(retrieve)するステップ2014と、少なくとも1つの検証サブルーチンコマンド、検索された少なくとも1つの規則、少なくとも1つのアナログテストハーネスモデルおよび電子的設計に少なくとも部分的に基づいて、少なくとも1つの検証サブルーチンコマンドを対応する少なくとも1つの標準化されたアナログハードウェア記述言語へと翻訳するステップ2016とを備える。さらに、この方法は、翻訳に少なくとも部分的に基づいてネットリストを生成するステップ2018と、少なくとも1つのアナログテストハーネスモデルを少なくとも部分的に利用して少なくとも1つのサブコンポーネントを電気的にシミュレートするステップ2020と、電気的シミュレーションを受ける電子的設計の、少なくとも1つの性能属性を抽出するステップ2022と、抽出された少なくとも1つの性能属性と少なくとも1つの出力測定値とを比較するステップ2024とを備える。
図10に戻り、電子的設計は、PMIC_testbenchに続く接続されたブロックのそれぞれを包含し、少なくとも1つのアナログテストハーネスモデルは、PMIC_testbenchとマークされたブロックに関する。この例では、PMIC階層構造と、LDO、バッテリスーパーバイザおよび電圧基準の階層構造とがレビューされる。最も高いレベルではPMICが概略レベルでレビューされる(LDOがBehavioral_vams、バッテリスーパーバイザがBehavioral_vams、電圧基準がBehavioral_vaレベル)。
【0097】
コンピュータプログラム製品は、さらに、少なくとも1つの分離したシミュレーション実行において少なくとも1つのパラメータ化された変数を変化させることに関して、および/または、少なくとも1つのシミュレーション実行において少なくとも1つのパラメータ化された変数を変化させることに関して、少なくとも1つのパラメータ化された変数を固定するステップをさらに備えてもよい。シミュレーションの間に少なくとも1つの性能属性が抽出されてもよく、シミュレーションの後に抽出されてもよい。少なくとも1つのアナログテストハーネスモデルは、少なくとも1つの出力主張および少なくとも1つの出力測定値のうち少なくとも一方を有してもよい。
【0098】
別の例では、
図21は、過渡的でないコンピュータ可用媒体2100上に実施されるコンピュータプログラム製品の抽出されたデータ比較を介する電子的設計を示す(この過渡的でないコンピュータ可用媒体は、命令の列を記憶しており、この命令の列がプロセッサによって実行されると、この命令の列はそのプロセッサを電子的設計の検証コマンドの翻訳の方法を実行させ、方法は、少なくとも1つの出力主張および少なくとも1つの出力測定値のうち少なくとも一方を有する少なくとも1つのアナログテストハーネスモデルを受信するステップ2110(少なくとも1つのアナログテストハーネスモデルは少なくとも1つのパラメータ化された変数を有する)と、電子的設計に対する少なくとも1つの検証サブルーチンコマンドを受信するステップ2112(少なくとも1つの検証サブルーチンコマンドは少なくとも1つの間接分岐貢献ステートメントを有する)とを備える)。また、この方法は、少なくとも1つのアナログテストハーネスおよび少なくとも1つの検証サブルーチンコマンドに少なくとも部分的に基づいて少なくとも1つの規則を検索するステップ2114と、少なくとも1つの検証サブルーチンコマンド、検索された少なくとも1つの規則、少なくとも1つのアナログテストハーネスモデルおよび電子的設計に少なくとも部分的に基づいて、少なくとも1つの検証サブルーチンコマンドを対応する少なくとも1つの標準化されたアナログハードウェア記述言語へと翻訳するステップ2116と、翻訳に少なくとも部分的に基づいてネットリストを生成するステップ2118とを備える。さらに、この方法は、少なくとも1つのアナログテストハーネスモデルを少なくとも部分的に利用して少なくとも1つのサブコンポーネントを電気的にシミュレートするステップ2120と、電気的シミュレーションを受ける電子的設計の性能属性を少なくとも1つ抽出するステップ2122と、抽出された少なくとも1つの性能属性と少なくとも1つの出力主張および少なくとも1つの出力測定値のうち少なくとも一方とを比較するステップ2124とを備える。
図10に戻り、電子的設計は、PMIC_testbenchに続く接続されたブロックのそれぞれを包含し、少なくとも1つのアナログテストハーネスモデルは、PMIC_testbenchとマークされたブロックに関する。この例では、PMIC階層構造と、LDO、バッテリスーパーバイザおよび電圧基準の各階層構造とがレビューされる。最も高いレベルではPMICが概略レベルでレビューされる(LDOがBehavioral_vams、バッテリスーパーバイザがBehavioral_vams、電圧基準がBehavioral_vaレベル)。
【0099】
標準化されたアナログハードウェア記述言語は、Verilog−A
TMおよびVerilog−AMSのうち少なくとも一方を備えてもよい。さらに、この方法は、指定された結果に少なくとも部分的に基づいて少なくとも1つのアナログテストハーネスモデルを修正するステップ、指定された結果に少なくとも部分的に基づいて少なくとも1つの検証サブルーチンコマンドを修正するステップ、および/または、少なくとも1つのパラメータ化された変数を修正するステップを備えてもよい。電子的設計は、結果として、少なくとも1つの能動的回路および少なくとも1つの受動的回路のうち少なくとも一方を生じてもよい(結果として少なくとも1つの能動的回路を生じる電子的設計は、少なくとも1つの利得と、少なくとも1つの電気的信号の少なくとも1つの方向とのうち少なくとも一方を調整してもよい)。少なくとも1つの検証サブルーチンコマンドは、少なくとも1つの仕様サブセットを有してもよく、少なくとも1つのアナログハーネスモデルは、少なくとも1つの出力主張および少なくとも1つの出力測定値のうち少なくとも一方に少なくとも部分的に基づいて、少なくとも1つの仕様サブセットを確認(validate)してもよい。
【0100】
本明細書では、本開示の様々な例示的な例を作成することおよび用いることが議論されるが、本開示は、広範囲の具体的コンテキストにおいて記述可能なコンセプトを提供するということが理解されるべきである。本開示は特定の例に関して示され記載されたが、本明細書を読んで理解した他の当業者は、均等物および修正を考えつくということが明白である。本開示は、そのような均等物および修正を含み、添付の特許請求の範囲によってのみ限定される。
【0101】
方法および装置は、ローカルでまたは分散してまたはリモートで実施されてもよく、ステップのためのデータはローカルでまたはリモートで記憶してもよいということが理解されるべきである。明瞭さのため、応用可能な技術の当業者にはありふれた機能、コンポーネントおよびシステムの詳細な記載は含まれない。本開示の方法および装置は、1つ以上の利益(改良されたスピード効率、低減した計算時間、低減した再検証の数、等を含むが、これに限らない)を提供する。本開示は特定の例示的な例を参照して記載されたが、本明細書に記載されたものは限定的な意味に解釈されることを意図するものではない。たとえば、示され説明された例におけるステップのバリエーションまたは組み合わせが、本開示から逸脱しない範囲で具体的な場合に用いられてもよい。例示的な例の様々な修正および組み合わせと、他の利益および例とが、図面、明細書および特許請求の範囲への参照に基づいて、当業者には明白である。