図面 (/)
課題
解決手段
概要
背景
例えば今日の自動車の世界において,電子回路は益々重要な役割を演じている。今日,電子回路は平均的な新車の中身の約40%を構成し,電子回路の持分は益々増加することが予想される。ある研究によれば,平均的な新車は40以上の電子制御器と,8km(5マイル)の配線と,1千万行以上の計算機ソフトウェアコードとを含む。この電子回路の急増によって,電子回路の障害によるリスクもまた急速に増加している。これらの車両の電子回路の障害は,車両に危険な影響を与えることがある。自動車の電子回路に関係する障害の結果は,事故及びリコールを含む。
自動車メーカは,自社の車両の電子部品の安全性及び信頼性を保証するという,困難な課題に直面している。今日,ほとんどのメーカは自社のシステムについて電気的試験に頼っているが,それは非常に高価かつ時間が掛かり,潜在的な障害条件及びシステムへの潜在的な影響すべてを網羅することはできない。
変更としての障害要素を設計記述に導入するために,通常の計算機支援設計(CAD)障害シミュレータを用いてもよい。しかし,利用者が実行中のシミュレーションと対話する能力は限られているため,各設計変更は時間の掛かるシミュレーションの再コンパイルを必要とする。設計者及び検証技術者が種々のタイプの障害をシミュレートし,物理的試験用のプロトタイプが作成される前に障害の影響を理解するように,シミュレーション環境内の堅固な障害シミュレーション能力が必要とされている。
概要
電子回路のコンパイルされた設計を修正する計算機で実現される方法を提供すること。本発明による方法は,設計を表す記憶されたコンパイル物にアクセスするステップと,設計の一部に対する変更の指示に応答して,計算機に記憶されたコンパイル物の修正版を生成させるステップと,を含む。
目的
効果
実績
- 技術文献被引用数
- 0件
- 牽制数
- 0件
この技術が所属する分野
(分野番号表示ON)※整理標準化データをもとに当社作成
請求項1
電子回路のコンパイルされた設計を修正する計算機で実現された方法であって,前記設計を表す記憶されたコンパイル物にアクセスするステップと,前記設計の一部への変更の指示に応答して,前記計算機に前記記憶されたコンパイル物の修正版を生成させるステップと,を有する方法。
請求項2
前記設計の前記変更された部分を表す前記コンパイル物の一部を特定するステップを更に有し,前記修正されたコンパイル物は前記コンパイル物の前記特定された部分の修正版を有し,前記コンパイル物のほかの部分は修正されないままである,請求項1に記載の方法。
請求項3
請求項4
請求項5
前記修正版を生成させるステップは,前記変更がデジタル要素に関係することを判定するステップと,前記要素に関係する少なくとも一つのデジタル部ドライバ接続を更新するステップと,を有する,請求項1に記載の方法。
請求項6
前記記憶されたコンパイル物は,複数の部分木を有する設計木を含む,請求項1に記載の方法。
請求項7
前記修正版を生成させるステップは,要素を前記部分木の一つに挿入するステップを有する,請求項6に記載の方法。
請求項8
前記挿入するステップは,第1ノードに接続されたポートから該第1ノードを切り離すステップと,前記第1ノードと前記ポートとの間に第2ノードを加えるステップと,前記ポートに前記第2ノードを接続するステップと,前記第1ノードと前記第2ノードとの間に前記要素を挿入するステップと,を有する,請求項7に記載の方法。
請求項9
請求項10
前記修正されたコンパイル物を未修正の状態に戻すステップを更に有する,請求項1に記載の方法。
請求項11
設計を検証するシステムであって,プロセッサと,命令を記憶するメモリであって,該命令は前記プロセッサが実行したとき前記プロセッサに,前記設計を表す記憶されたコンパイル物にアクセスし,前記設計の一部への変更の指示に応答して,前記プロセッサに前記記憶されたコンパイル物の修正版を生成させる,ように前記プロセッサを構成する,メモリと,を備えるシステム。
請求項12
前記命令は,前記プロセッサが前記設計の前記変更された部分を表す前記コンパイル物の一部を特定するように更に構成され,前記修正されたコンパイル物は前記コンパイル物の前記特定された部分の修正版を有し,前記コンパイル物のほかの部分は修正されないままである,請求項11に記載のシステム。
請求項13
前記変更は,前記設計に短絡要素を加えることと,前記設計に開放要素を加えることとの少なくとも一つを有する,請求項11に記載のシステム。
請求項14
前記修正版を生成させることは,A)前記変更がアナログ要素に関係することを判定し,前記要素に関係する少なくとも一つのアナログ部方程式を更新することと,B)前記変更がデジタル要素に関係することを判定し,前記要素に関係する少なくとも一つのデジタル部ドライバ接続を更新することと,の少なくとも一つを有する,請求項11に記載のシステム。
請求項15
前記修正版を生成させることは,第1ノードに接続されたポートから該第1ノードを切り離すことと,前記第1ノードと前記ポートとの間に第2ノードを加えることと,前記ポートに前記第2ノードを接続することと,前記第1ノードと前記第2ノードとの間に前記要素を挿入することと,を有する,請求項1に記載のシステム。
請求項16
前記命令は,前記プロセッサが,前記修正されたコンパイル物をシミュレートし,前記シミュレーションに基づいてレポートを生成する,ように更に構成する,請求項11に記載のシステム。
請求項17
前記命令は,前記プロセッサが前記修正されたコンパイル物を未修正の状態に戻すように更に構成する,請求項11に記載のシステム。
請求項18
命令を有する計算機可読媒体であって,該命令は,計算機が実行したとき前記計算機に方法を実行させ,該方法は,設計を表す記憶されたコンパイル物にアクセスするステップと,前記設計の一部への変更の指示に応答して,前記計算機に前記記憶されたコンパイル物の修正版を生成させるステップと,を有する,計算機可読媒体。
請求項19
前記方法は,前記設計の前記変更された部分を表す前記コンパイル物の一部を特定するステップを更に有し,前記修正されたコンパイル物は前記コンパイル物の前記特定された部分の修正版を有し,前記コンパイル物のほかの部分は修正されないままである,請求項18に記載の計算機可読媒体。
請求項20
前記変更は,前記設計に短絡要素を加えることと,前記設計に開放要素を加えることとの少なくとも一つを有する,請求項18に記載の計算機可読媒体。
請求項21
前記修正版を生成させるステップは,A)前記変更がアナログ要素に関係することを判定するステップ,及び前記要素に関係する少なくとも一つのアナログ部方程式を更新するステップと,B)前記変更がデジタル要素に関係することを判定するステップ,及び前記要素に関係する少なくとも一つのデジタル部ドライバ接続を更新するステップと,の少なくとも一つを有する,請求項18に記載の計算機可読媒体。
請求項22
前記修正版を生成させるステップは,第1ノードに接続されたポートから該第1ノードを切り離すステップと,前記第1ノードと前記ポートとの間に第2ノードを加えるステップと,前記ポートに前記第2ノードを接続するステップと,前記第1ノードと前記第2ノードとの間に前記要素を挿入するステップと,を有する,請求項18に記載の計算機可読媒体。
請求項23
前記方法は,前記修正されたコンパイル物をシミュレートするステップと,前記シミュレーションに基づいてレポートを生成するステップと,を更に有する,請求項18に記載の計算機可読媒体。
請求項24
前記方法は,前記修正されたコンパイル物を未修正の状態に戻すステップを有する,請求項18に記載の計算機可読媒体。
技術分野
0001
本発明は,概略は設計の検証のため,詳細にはシステム設計を検証するために,計算機シミュレーション中に多くの障害を挿入する計算機で実現される方法及びシステムに関する。
背景技術
0003
例えば今日の自動車の世界において,電子回路は益々重要な役割を演じている。今日,電子回路は平均的な新車の中身の約40%を構成し,電子回路の持分は益々増加することが予想される。ある研究によれば,平均的な新車は40以上の電子制御器と,8km(5マイル)の配線と,1千万行以上の計算機ソフトウェアコードとを含む。この電子回路の急増によって,電子回路の障害によるリスクもまた急速に増加している。これらの車両の電子回路の障害は,車両に危険な影響を与えることがある。自動車の電子回路に関係する障害の結果は,事故及びリコールを含む。
0004
自動車メーカは,自社の車両の電子部品の安全性及び信頼性を保証するという,困難な課題に直面している。今日,ほとんどのメーカは自社のシステムについて電気的試験に頼っているが,それは非常に高価かつ時間が掛かり,潜在的な障害条件及びシステムへの潜在的な影響すべてを網羅することはできない。
0005
変更としての障害要素を設計記述に導入するために,通常の計算機支援設計(CAD)障害シミュレータを用いてもよい。しかし,利用者が実行中のシミュレーションと対話する能力は限られているため,各設計変更は時間の掛かるシミュレーションの再コンパイルを必要とする。設計者及び検証技術者が種々のタイプの障害をシミュレートし,物理的試験用のプロトタイプが作成される前に障害の影響を理解するように,シミュレーション環境内の堅固な障害シミュレーション能力が必要とされている。
課題を解決するための手段
0006
本発明の一態様は,電子回路のコンパイルされた設計を修正する計算機で実現される方法である。この方法は,設計を表す記憶されたコンパイル物(compilation)を利用するステップと,計算機に,設計の一部に対する変更の指示に応答して,記憶されたコンパイル物の修正版を生成させるステップと,を含む。
0007
本発明の別の態様は設計を検証するシステムであって,システムはプロセッサと,一組の命令を記憶するメモリとを含む。命令は,プロセッサによって実行されたとき,プロセッサが設計を表す記憶されたコンパイル物を利用するように構成し,プロセッサに,設計の一部に対する変更の指示に応答して記憶されたコンパイル物の修正版を生成させる。
0008
本発明の別の態様は命令を含む計算機可読媒体であって,命令は,計算機によって実行されたとき,計算機に,設計を表す記憶されたコンパイル物を利用するステップと,設計の一部に対する変更の指示に応答して記憶されたコンパイル物の修正版を生成するステップとを含む方法を実行させる。
0009
本発明の種々の実施形態を,以降の詳細な説明及び添付の図面において開示する。
図面の簡単な説明
0010
本発明の一実施形態による,設計を検証するための簡略化したフローチャートである。
増幅器設計の簡略化した例示回路図である。
本発明の一実施形態による,図2Aに示した回路図に対する直列修正箇所の簡略化した例示回路図である。
本発明の一実施形態による,図2Aに示した回路図に対する並列修正箇所の簡略化した例示回路図である。
本発明の一実施形態による,図2Aに示した回路図に対する2ポートに関係する直列修正箇所の簡略化した例示回路図である。
本発明の一実施形態による,図2Aに示した回路図に対する直並列修正箇所の簡略化した例示回路図である。
本発明の一実施形態による,図1に示した部分設計修正ステップの簡略化したフローチャートである。
本発明の一実施形態による,推敲された設計を表す設計木の簡略化した例示ブロック図である。
本発明の一実施形態による,追加要素を含む図4Aに示した設計木の簡略化した例示ブロック図である。
本発明の一実施形態による,図1に示した部分分析ステップの簡略化したフローチャートである。
本発明の実施形態に関係するシステム工学の簡略化した例示Vモデルを示す図である。
本発明の実施形態を組み込むことができる計算機システムのブロック図である。
実施例
0011
図1は,本発明の一実施形態による,設計を検証するための簡略化したフローチャート100である。フローチャート100は,設計者及び検証技術者が,費用の掛かるプロトタイプを作成する前に,種々のタイプの障害をシミュレートし,その障害の影響を理解できるように,シミュレーション環境内に堅固な障害シミュレーション能力を含んでもよい。フローチャート100に示された方法の実施形態は,例えば,Synopsys社が販売するSaber(登録商標)HDLシミュレータ及び/又はSaber(登録商標)シミュレータと呼ばれるソフトウェアツールに含めてもよい。この方法の実施形態は,計算機が障害シミュレータになるか,又は障害シミュレータとして機能するように構成されたソフトウェア命令を実行する計算機によって実行してもよい。
0012
障害シミュレータは設計記述(以下,「設計」とも言う)を受信し,設計は,例えば,図形回路図,又は,VHDL,VHDL−AMS,Verilog−AMS,MAST,Modelica,などのハードウェア設計言語(HDL)で書かれた記述であってよい。設計は,例えば,以下「モデル」とも言う物理的振舞の数学的記述によって表された,電子回路,電気機械系,機械系を記述してもよいし,及び/又は保存された信号流及び事象の組合せによって特徴付けられる任意のシステム又はデジタル部連立方程式を記述してもよい。設計は,毎回異なるパラメータセットを用いて,設計を通じて複数回用いられるか,又はインスタンス化される要素の再利用可能記述を含んでもよい。例えば,抵抗器要素は抵抗パラメータを含んでもよく,抵抗器は,抵抗器の各インスタンスにおいて別個の抵抗値で複数回インスタンス化されてもよい。設計内の要素の一つの使用を当該要素のインスタンスと呼ぶ。要素の記述は階層的であってよく,その場合,記述はほかの要素のインスタンスを含む。
0013
障害シミュレータは設計を推敲(elaborate)する。いくつかのシステムにおいては,推敲に先立って,設計の別個の部分と,部分間のリンクとを含むが,各部分が一緒に接続されたとき,設計全体に与えるそれら部分の影響は含まない構文木(syntax tree)の形態で設計が表される。シミュレータは入力設計記述を分析してこの構文木を生成する。
0014
推敲は,選択された要素パラメータの影響を適用した後,設計の完全な表現を生成するために,設計記述を解釈又は変形する処理を含む。例えば,推敲は,どの要素を階層設計中でインスタンス化するかを決定することを含んでもよい。推敲された設計表現の一部は,シミュレーション中に変更することがある対象のためにメモリに入れられる。ステップ110において,推敲は設計のコンパイル物を形成するために,設計の要素を解釈する。コンパイル物は,計算機可読メモリ内にファイルとして記憶してもよい。コンパイル物は,設計階層を表す「推敲された設計インスタンス木」又は「インスタンス化木」(instantiated tree)とも言う設計木を含む。インスタンス化木は,設計のシミュレーション中に変更できる情報を記憶することができる場所である。インスタンス化木はインスタンスごとに要素の投影を含み,投影は,当該要素のインスタンスに指定された特定のパラメータを適用した結果を含む。設計にはほかの変形もまた行われ,VHDL−AMS言語に適用可能な変形の例は,IEEE 1076.1-2007の12章に記載されている。
0015
推敲はモデルライブラリの要素を用いてもよい。設計は,シミュレートされる設計のためだけに生成されたのではない既存のモデルを用いてもよい。設計又はモデルの一部の再利用は,設計の遂行中に参照できるモデルライブラリ内の設計又はモデルの一部を記憶することによって容易にすることができる。
0016
推敲はさらに,設計のデジタル部振舞及び機能を表す信号及びその関係を提供する。ステップ120において設計木を形成した後,推敲はデジタル部ドライバを生成し,デジタル部ドライバの例は,上述のIEEE 1076.1-2007の12章に記載されている。ステップ130において,推敲はまた,微分代数方程式(DAE)の構成要素を表す行列又は一組の行列も形成し,DAEは設計の保存された部分及び/又は信号流部分用に関して解くことができる。
0017
推敲はコンパイル物を生成し,コンパイル物は,シミュレータが設計の振舞をシミュレートするために用いることができる形式の設計の表現を含む。コンパイル物は,HDLコード,ネットリスト又はほかの表現のような設計の別の表現に含まれる情報に基づいて,推敲を通じて生成される。コンパイル物は,生成されると,シミュレータが利用し,又は以降,更に詳細に説明するとおり,設計変更を組み込むために修正できるように記憶される。
0018
本発明の一実施形態は,障害シミュレータが,設計木,連立方程式又はコンパイル物のほかの構成要素を追加の推敲無しに修正できるようにする。設計木は,図4Aに示され,以降より詳細に説明する多数の独立な部分木を含む。障害シミュレータは,設計に関係する変更に応答して,設計木の独立な部分木の少なくとも一つを修正してもよい。修正は,設計記述レベルで開始することによって,設計を再コンパイル又は再推敲する必要無しに,推敲後に行うことができる。設計は,障害分析シミュレーションのサイクルごと,又は回(round)ごとに再推敲する必要が無いため,従来のシステムに比べてシステムのシミュレーション効率が向上する。
0019
更に図1を参照すると,ステップ140において,障害シミュレータは,例えば,反復障害分析サイクルの途中で利用者に設計変更を促し,指定された設計変更を受信してもよい。一つの実施形態においては,分析は,任意選択で設計への変更を受信し,変更を行い,設計について部分分析を実行し,データを削減し,設計を変更無しで設計の元の状態にリセットする処理を含んでもよい。この処理要素は,すべての変更が適用され,結果が報告されるまで,一つの分析の一部として繰り返し実行してもよい。設計変更は,例えば,システムの問題又は障害になることがある状態をシミュレートするために,障害を表す要素の導入,要素パラメータの変更,及びデジタル信号の変更を含んでもよい。追加,又は代替としてほかの変更を実行してもよい。
0020
一つの実施形態においては,いくつかの設計変更をグループとして同時に指定してもよく,多くのグループの設計変更を反復的に分析してもよい。一つの実施形態においては,複数の利用者指定グループ及び/又は複数の変更を障害シミュレータで受信して,バッチで変更を実行してもよい。分析サイクルは,分析の反復ごとに利用者入力を必要としないように実行される。別の実施形態においては,各分析反復が利用者指定変更を受信してもよいし,及び/又は障害シミュレータがバッチ変更又は個別変更の任意の組合せをサポートしてもよい。
0021
さらに,設計への各グループの修正の適用は本質的に独立であるため,どのようにシミュレーションの実行に適用するかを管理することができる。いくつかの実施形態においては,より高速な計算を達成するために,設計のコピーを作成し,複数のプロセッサ/コア,計算グリッド内の複数の機械,及び/又はワールドワイドウェブクラウド内の処理環境に分析を分散させてもよい。例えば,分析時間を短縮するために,一つのグループの変更を一つのプロセッサで実行し,第2の別のグループの変更を別のプロセッサ上で時間的に並列又は同時に実行してもよい。
0022
一つの実施形態においては,分析に際して,設計を修正するために変更を適用する前に,変更又はインスタンス化した木の元の現状を表すデータをメモリに記憶させ,及び/又は複数の変更を後で処理するために保存してもよい。適用する変更があるときは,ステップ150において部分的設計修正が実行される。部分的設計修正の例は,次に説明する図2A〜2Eに示されており,設計木の複数の部分木のうち少なくとも一つに要素を挿入することを含む。一つの実施形態においては,構造変更は,設計内の要素のインスタンスを追加若しくは削除し,又は設計内のシステム変数の数を変更してもよい。一つの実施形態においては,別の要素の代わりに一つの要素をインスタンス化するパラメータを変更することは,旧要素の元のインスタンスを削除して,新しい要素のインスタンスを追加することと等価である。一つの実施形態においては,部分設計修正は,以降,「パラメータ変更」とも言う既存要素のパラメータの値を修正することを更に含んでもよい。挿入された要素は,アナログ部及び/又はデジタル部の振舞を含んでもよく,モデルライブラリから取得してもよい。
0023
図2Aは増幅器設計200Aの簡略化した例示回路図を示している。増幅器設計200Aは,演算増幅器,1kΩの抵抗及び10kΩの抵抗を含む。演算増幅器は正入力,負入力及び出力を含む。1kΩの抵抗は,入力vinと,演算増幅器の負入力との間に接続されている。10kΩの抵抗は,出力voutと,演算増幅器の負入力との間に接続されている。演算増幅器の正入力は接地に接続されている。
0024
図2Bは,本発明の一実施形態による,図2Aに示した回路図に対する直列修正箇所200Bの簡略化した例示回路図を示している。図2Bに示された要素は,図2Aに示された要素に類似している。しかし図2Bは,ポート(vout)と,該ポートに接続されたノード(演算増幅器出力)との間に直列接続で挿入された要素を含む修正箇所を含む。これは,「直列変更」と呼んでもよい。図2Bに示すように,この要素は,演算増幅器の出力ポートと,vout及び10kΩの抵抗に接続されたノードとの間の100MΩの抵抗である。演算増幅器の出力の100MΩの抵抗は,ノードが,該ノードが接続されているポートから切り離されているかも知れないアナログ部の開放障害を表すことができる。アナログ部開放の例は電気的開回路であってよい。シミュレーションにおいては,解くことが困難な行列方程式を避けるために,アナログ部開放は100MΩの抵抗のような高抵抗要素を用いて実施されることがある。
0025
図2Cは,本発明の一実施形態による,図2Aに示した回路図に対する並列修正箇所200Cの簡略化した例示回路図を示している。図2Cに示された要素は,図2Aに示された要素に類似している。しかし図2Cは,2以上の既存のノードの間に並列接続で挿入された要素を更に含む。以降,これを,「並列変更」とも言う。この実施形態においては,挿入された要素は,演算増幅器の出力ポートと接地ノードとの間の0.1mΩの抵抗である。この演算増幅器の出力ポートと接地との間の0.1mΩの抵抗は,今まで新規要素がなかった二つのノード間に新規要素が挿入された,アナログ部短絡障害を表すことができる。一例は,これも行列方程式が解に収束することを支援するために,低抵抗要素を用いる電気的短絡である。
0026
実際には,要素の挿入は,図2D〜2Eに示すように,直列及び並列の修正の組合せであってよい。図2Dは,本発明の一実施形態による,図2Aに示した回路に対する,2ポートと関係する直列修正箇所200Dの簡略化した例示回路を示す。図2Dに示された要素は,図2Aに示された要素に類似している。しかし図2Dは,演算増幅器の出力ポートと,voutと,10kΩの抵抗器とに接続された金属酸化物半導体(MOS)トランジスタ素子を更に含む。MOSトランジスタのゲートは演算増幅器の出力ポートに接続されている。MOSトランジスタのソース及び本体はvoutに接続されている。MOSトランジスタのドレインは10kΩの抵抗器に接続されている。
0027
図2Eは,本発明の一実施形態による,図2Aに示した回路に対する,直並列修正箇所200Eの簡略化した例示回路を示す。図2Eに示された要素は,図2Aに示された要素に類似している。しかし図2Dは,演算増幅器の出力ポートと,10kΩの抵抗器と,voutとに接続されたバイポーラトランジスタ素子を更に含む。バイポーラトランジスタのエミッタは演算増幅器の出力ポートに接続されている。バイポーラトランジスタのベースは演算増幅器の負入力に接続されている。バイポーラトランジスタのコレクタは10kΩの抵抗器に接続されている。
0028
図1を参照すると,一つの実施形態においては,並列設計修正後に,ステップ160において部分分析(例えば,シミュレーション)が行われる。部分分析は,DAEを解くことと,デジタル部及び/又はイベントの振舞を起動することとを含む。部分分析の例は,静止状態,過渡状態,定常状態及び交流の分析を含んでもよい。一つの実施形態においては,部分分析は1又は複数の部分分析を実行することを含む。別の実施形態においては,時間と共に変化する影響が分析される,過渡状態シミュレーションを行う部分分析について,指定されたシミュレーション時間で,設計内の要素のパラメータを変更してもよい。
0029
一つの実施形態においては,部分分析を行った後で,ステップ170において,部分分析のデータを分析(例えば,削減)して結果を形成してもよい。部分分析及びデータ削減の結果についての処理は,反復分析ループの一部として実行してもよい。一つの実施形態においては,部分分析から生成されたデータ及びデータ削減における処理から生成されたデータ双方は,共有データ記憶に書き込むための標準の慣例を用いて,共有コンテナに同時に書き込まれる。一つの実施形態においては,データ削減の後,ステップ180において,インスタンス化木の元の状態及び/又はメモリ内に前に記憶された複数の変更を用いて,反復分析ループに元の設計を復元してもよい。一つの実施形態においては,設計木の修正された部分木から変更を削除することによって,元の設計を復元することができる。
0030
一つの実施形態においては,設計に適用する更なる変更が無くなったとき,ステップ190において,アナログ部方程式及びデジタル部ドライバ接続を更新し,部分分析の結合した結果から,報告を生成してもよい。一つの実施形態においては,設計に適用すべき変更がまだあるとき,アナログ部方程式及びデジタル部ドライバ接続を更新するステップは,次の部分設計修正まで遅延させてもよく,反復分析ループは,追加の変更を利用者に促すか,アプリケーション又はシミュレーションの設定に応じて,次の変更グループを自動的に実行することによって,反復してもよい。
0031
図3は,本発明の一実施形態による,図1に示さいた部分設計修正150の実施形態の簡略化したフローチャートを示している。要素の挿入は,推敲中に生成されたインスタンス化木を修正することによって達成してもよい。ステップ310において,設計変更の種類が決定される。一つの実施形態においては,変更が,既存のノードとポートとの間に直列に挿入された要素を含むとき,新規要素を挿入する前に,ステップ320において,ポートが既存のノードから切り離される。一つの実施形態においては,例えばポートが入力信号であるとき,ポートは既存の入力ノードから切り離される。いくつかの実施形態においては,ポートが,入力及び出力双方をサポートする信号であるとき,直列変更振舞を規定又は実現しなくてもよい。代替として,いくつかの実施形態においては,ポートが入力/出力ポートであるとき,入力/出力ポートは既存の入力/出力ノードから切り離される。
0032
一つの実施形態においては,ポートを既存ノードから切り離した後,ステップ330において新ノードが追加され,ポートに接続される。ステップ340において,新ノードがデジタル部であり,ポートが出力信号であるとき,ポートは駆動された信号として新ノードに接続してもよく,新ノードがデジタル部であり,ポートが入力信号であるとき,新ノードは駆動されたポートに接続してもよい。
0033
一つの実施形態においては,直列変更又は並列変更いずれかについて,ステップ350において,新規生成されたノードと,ポートに前から接続されている既存のノードとの間に要素が挿入される。換言すれば,インスタンス化木は挿入された要素によって変形される。
0034
例として,要素を挿入するとき,指定された二つのノード間の構文木に構成要素インスタンス化を生成してもよい。いくつかの実施形態においては,コンパイル物を表すファイルを編集してもよい。例えば,設計木に新インスタンスを挿入することによって,変更を実現するために,例えば,修正された構文木からバイトコードを生成してもよい。したがって,例えば,図形又はプログラムコードによる設計編集プログラムによって設計を修正し,次に修正された設計をコンパイルする代わりに,コンパイル物を表すファイルを編集することによって,コンパイル物を修正してもよい。インスタンス化木の変形は,例えば,新規生成されたバイトコードを実行することによって起動してもよい。ステップ360において,設計変更が登録され,ノード及びインスタンスがコンパイル物に追加される。ステップ370において,グループ内のすべての指定された変更が適用されるまで,処理を反復してもよい。
0035
一つの実施形態においては,すべての変更をインスタンス化木に適用した後,設計のアナログ部分及びデジタル部分は別個に更新される。追加された要素のいずれかがアナログ振舞を含むとき,又は変更が設計のアナログ要素に関係するときは,ステップ380において,コンパイル物に関係するアナログ部方程式を,変更を反映するように更新してもよい。さらに,これらの方程式を解くために用いられた行列を通じて,変更を伝ぱさせてもよい。追加された要素のいずれかがデジタル部の振舞を含むとき,又は変更が設計のデジタル要素に関係するときは,ステップ390において,コンパイル物に関係するデジタル部ドライバ接続を更新し,変更に従って新ドライバを挿入してもよい。換言すれば,新規インスタンス内の駆動された信号は対応するドライバに接続され,新インスタンスのいずれの新ドライバも,自分が駆動するノードに接続される。結果は,設計を再編集又は再推敲することなく,すべての修正を含むインスタンス化木の更新版である。
0036
図4Aは,本発明の一実施形態による,推敲された設計を表す設計木の設計階層の簡略化した例示図形表現を示している。設計木は,設計根(design root)と,モデルFoo.1を含む図の左側の破線で示したボックス410で示される第1部分木と,モデルFoo.2を含む図の右側の破線で示したボックス420で示される第2部分木とを含む。モデルFoo.1を含む第1部分木は,モデルFoo.2を含む第2部分木とは独立であってもよい。設計木内には,モデル“A”の二つのインスタンス,例えば,双方とも同一のHDLソースコードから導出されたインスタンスがある。このインスタンス化は双方とも,一つの時間内に実行され,二回インスタンス化される。Fooは毎回別のパラメータでインスタンス化され,モデル“B”のインスタンス化を含む一つのインスタンスと,モデル“C”のインスタンス化を含む別のインスタンスとを含む。
0037
図4Bは,本発明の一実施形態による,追加された要素を含む,図4Aに示された設計僕の設計階層の図形表現の簡略化した例示ブロック図を示している。この例においては,インスタンス化木を変形させる処理は比較的単純であるが,設計記述レベルにおいて同一の変更を行うことに対する改善を示す。図4Bに示された要素は,図4Aに示された要素と類似している。しかし図4Bは,種々のパラメータを含む“A.5”のインスタンス化も含み,モデル“Bar”のインスタンス化を含む一つのインスタンスになる。
0038
図4A及び4Bは,単に設計階層の図形表現に過ぎない。コンパイルされた設計データを修正するために,一つの実施形態においては,インスタンス“A5”内にモデル“Bar”をインスタンス化するために,バイトコードを生成し,実行してもよい。その結果,設計が再推敲及び再コンパイルされることが無いにもかかわらず,シミュレータ用の形式での設計の表現が変更を含む。
0039
設計記述レベルで同一の変更を行うためには,“Foo.2”に用いるためにモデル“Foo”のコピーを作成し,モデル“Foo“の新規コピー内で用いるためにモデル“A”のコピーを作成し,モデル“Bar”のインスタンスを加えるために,モデル“A“の新規コピーに変更を加える必要がある。明らかに,設計変更が多くなるほど,又は階層が深くなるほど,設計変更を修正することの複雑度は急速に増加する。別の方法では,モデル“Bar”の振舞が無効になるようにパラメータを設定して,モデル“Bar”のインスタンス化を“A”のすべてのインスタンスについて行い,次にモデル“Bar”の振舞を有効にするために,モデル“Bar”のインスタンスのパラメータを修正するように,モデル“A”を修正してもよい。本発明者の経験によれば,このようにインスタンスを加えることは,設計の性能に不利な影響を与える。したがって,設計木レベルで変更を行う障害シミュレーションは,設計記述レベルで変更を行うよりも,要素挿入作業をより効率よくする。
0040
図5は,本発明の一実施形態による,図1に示した部分分析ステップ160の実施形態の簡略化したフローチャートを示している。部分分析は,時間ベースでパラメータを変更した過渡分析のようなシミュレーションサイクルを含んでもよい。ステップ510において,時間ベースのパラメータ変更のイベントが登録される。シミュレーション中,シミュレーション時間は,ステップ520において,イベント又はエラーの基準に基づいて次の時間ステップへ進む。
0041
ステップ530において,例えば,現在のシミュレーション時間に基づいて,時間ベースのパラメータ変更が適用される。パラメータ変更は,インスタンス化木内のパラメータと関係するインスタンス内のパラメータの記憶された値を更新することによって,適用してもよい。変更されたパラメータに依存する方程式は更新してもよい。いくつかの実施形態においては,設計の構造に影響を与える変更は更新しない。パラメータを変更することのいかなる影響も,変更が行われなくなるまで伝ぱすることができる。例えば,いくつかの実施形態においては,変更されたパラメータによって影響を受けたDAEの方程式は更新され,DAEを更新するように変更は適切に伝ぱする。そして,DAEに影響を与える変更は関係する行列に適用される。
0042
ステップ540において,アナログ部及びデジタル部の振舞が処理される。ステップ550において,シミュレーションが完了していないときは,シミュレーション時間を次の時間ステップに進めて,ステップ520から処理を繰り返してもよい。シミュレーションが完了したとき,過渡分析は停止する。
0043
次に,障害分析に部分設計修正を適用する例を,アナログ部開放,アナログ部短絡,パラメータ障害,及び停止(stuck)した信号について説明する。これらの例において説明し,本明細書の別の場所で論じた原理及び態様は,多くのほかの状況に適用してもよい。
0044
開放は,アナログ回路に直列に抵抗(又は均等物)を加える要素を挿入することによって実現してもよい。要素は,例えば,抵抗値によってパラメータ化してもよい。したがって,要素の抵抗値は,障害を無効及び有効の間で切り替えるように変更してもよい。抵抗値は,障害のオン/オフ状態に応じて指定され,一方は有効化された障害に対応し,他方は無効化された障害に対応する。抵抗値は,例えば,解の収束を改善するように設計の種類に適応するように構成可能であってよい。
0045
短絡は,アナログ回路の並列に抵抗を加える要素を挿入することによって実現してもよい。要素は,例えば,開放について説明したように,障害が有効化又は無効化されたときの指定された値の間を変化する抵抗値でパラメータ化してもよい。
0046
パラメータ障害は,変更する設計内の要素のパラメータと,変更される値とを指定することによって実現してもよい。障害が有効化されていないときは,障害を実現する前のパラメータの値を代わりに用いてもよい。
0047
停止した信号は,駆動される信号と,駆動される信号を駆動する任意の信号との間の接続を削除することによって実現してもよい。さらに,指定された停止値(stuck value)で当該信号を駆動する新規要素を挿入してもよい。新規要素は停止値でパラメータ化してもよい。
0048
開放,短絡及びパラメータ障害は,障害と関係する要素のパラメータ値を変更することによって,指定したときに有効化/無効化してもよい。変更の影響は設計全体に伝ぱし,設計のアナログ部分を解決するための用いられる方程式を表す行列が再構築される。パラメータ値の変更は,アナログ部解を計算するか,障害が有効化又は無効化されている時点からデジタル部イベントを伝ぱさせる前に適用してもよい。
0049
一つの実施形態においては,停止した信号は,挿入された要素の開始終了パラメータを指定することによって指定したときに有効化又は無効化してもよい。この開始終了パラメータは,障害を有効化又は無効化するデジタル部イベントをスケジュールする時刻として,要素内で用いてもよい。
0050
本発明の一実施形態による,VHDLで書かれた抵抗器モデルの電気版の例を次に示す。
------------------------------------------------------------
-- An ideal resistor for fault insertion.
------------------------------------------------------------
-- This code was created by Synopsys, Inc. for use with SaberHDL(tm) and
--otherVHDL-AMSsimulators.
-- Copyright 2013 - 2013.
------------------------------------------------------------
library ieee;
use ieee.electrical_systems.all;
entity r_fault_vhdl is
generic (rnom : real := 0.0); -- nominal resistance
port (terminal p, m : electrical);
end entity r_fault_vhdl;
architecture simple of r_fault_vhdl is
quantity v across i through p to m;
begin
assert rnom /= 0.0
report "rnom is zero"
severity error;
assert rnom >= 0.0
report "rnom is negative : " & real'image(rnom) & ". Use with caution"
severity warning;
i == v / rnom;
end architecture simple;
------------------------------------------------------------
-- This code is provided "AS is" and with no warranties express or implied.
-- Synopsys is not responsible for any liability arising from the use of this
-- code or the results obtained from it.
------------------------------------------------------------
0051
本発明の一実施形態による,VHDLで書かれたデジタル部障害モデルの例を次に示す。
------------------------------------------------------------
-- A model to drive a stuck signal. The input readsthe old signal driver
-- and propagates the value when the fault is disabled.
------------------------------------------------------------
-- This code was created by Synopsys, Inc. for use with SaberHDL(tm) and
--otherVHDL-AMSsimulators.
-- Copyright 2013 - 2013.
------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity stuck_fault_vhdl is
generic (tbegin: time := -1 sec; tend :time := time'high; faultvalue :std_
logic:= '0');
port (input: in std_logic; output: out std_logic);
end stuck_fault_vhdl;
architecture simple of stuck_fault_vhdl is
signal faultIndicator :std_logic;
begin
p:process (input,faultIndicator) is
begin
if (now >= tbegin and now < tend) then
output <= faultvalue;
else
output <= input;
end if;
end process p;
p2: process is
begin
if (tbegin >= 0 sec) then
faultIndicator <= '1' after tbegin, '0' after tend;
else
faultIndicator <= '1';
faultIndicator <= '0' after tend;
end if;
wait;
end process p2;
end architecture simple;
------------------------------------------------------------
-- This code is provided "AS is" and with no warranties express or implied.
-- Synopsys is not responsible for any liability arising from the use of this
-- code or the results obtained from it.
------------------------------------------------------------
0052
図6は,本発明の実施形態を使用することができる,システム工学の簡略化した例示Vモデルである。“V”の左半分の一例において,自動車システムの設計フローは,車両の要求条件のような要求条件,車両を運転する方法,車両が有することが望ましい安全特徴,製品が製造され,振る舞う方法の高レベルの要求条件,を決定することによって開始してもよい。次に,システム設計は,機能設計を満足するためにどのようなシステムを生成する必要があるかを決定してもよい。いくつかの明白なシステム設計作品は,ガソリンエンジン,電気式操舵(drive−by−wire steering),などを含む。次に,構成要素設計は,製品にどのような特定の構成要素及び電子回路が必要かをより細かな粒度で決定してもよい。構成要素設計は,例えば,エンジン自体の設計,電源の配線図の作成,などを含んでもよい。“V”の底辺で,構成要素実現は,仮想プロトタイプ及びソフトウェアを含む,ハードウェアのプロトタイプを作成してもよい。
0053
システム検証に対応する“V”の右半分の同一の例において,構成要素が期待どおり動作することを確かめるためにプロトタイプが作成されると,個別の構成要素を試験することができる。問題をより容易に解決できるように,早期に問題を分離するために,構成要素毎にテストベンチを作成してもよい。次に,結合試験(integration test)が構成要素をシステムに結合し,システムレベルで構成要素が動作することを検証してもよい。次に,製品システムが製品の要求条件を満たしていることを確かめるために,製品システム全体を試験してもよい。障害シミュレータは,このシステム工学のVモデルの構成要素試験,結合試験,及び/又はシステム試験の各部に関係することができる。一つの実施形態においては,ここに説明した1又は複数の特徴を有する障害シミュレータは,仮想ハードウェアプロトタイプ上で動作し,構成要素及び構成要素のシステムの振舞を評価するために,ソフトウェア制御システムと相互運用することもある。
0054
図7は,本発明の実施形態を組み込むことができる計算機システムのブロック図である。図7は,単に本発明を組み込んだ実施形態を示すものに過ぎず,本願請求項に示された本発明の範囲を制限するものではない。当業者であれば,ほかの変形物,修正物及び代替物を認識するであろう。
0056
図7に示すように,計算機720は,バスサブシステム790を介していくつかの周辺装置と通信するプロセッサ76を含んでもよい。これらの周辺装置は,利用者出力装置730と,利用者入力装置740と,通信インタフェース750と,ランダムアクセスメモリ(RAM)770及びディスクドライブ780のような記憶サブシステムと,を含んでもよい。
0057
利用者入力装置830は,計算機システム720に情報を入力するためのすべての選択可能な種類の装置及び機構を含む。これらは,キーボードと,キーパッドと,表示装置に組み込まれたタッチスクリーンと,音声認識システムのような音響入力装置と,マイクロホンと,ほかの種類の入力装置と,を含んでもよい。種々の実施形態において,利用者入力装置730は通常,計算機マウスと,トラックボールと,トラックパッドと,ジョイスティックと,無線リモコンと,描画タブレットと,音声コマンドシステムと,視線追跡システムと,これらの類似物と,として実現される。利用者入力装置730は通常,利用者がモニタ710上に現れるオブジェクト,アイコン,文字,等を,ボタンのクリックなどのようなコマンドを介して選択できるようにする。
0058
利用者出力装置740は,計算機720から情報を出力するためのすべての選択可能な種類の装置及び機構を含む。これらは,表示装置(例えば,モニタ710),音響出力装置のような非視覚提示装置,等を含んでもよい。
0059
通信インタフェース750は,ほかの通信網及び装置とのインタフェースを提供する。通信インタフェース750は,ほかのシステムからデータを受信し,ほかのシステムへデータを送信するためのインタフェースの働きをする。通信インタフェース750は通常,イーサネット(登録商標)カードと,モデム(電話,衛星,ケーブル,ISDN)と,(非同期)デジタル加入者線(DSL)ユニットと,FireWire(登録商標)インタフェースと,USBインタフェースと,それらの類似物と,を含む。例えば,通信インタフェース750は,計算機網,FireWire(登録商標)バス,等と結合することができる。ほかの実施形態においては,通信インタフェース750は,計算機720のマザーボードに物理的に統合されていてもよいし,ソフトDSL等のソフトウェアプログラムであってもよい。
0060
種々の実施形態において,計算機システム700はまた,HTTP,TCP/IP,RTP/RTSP,等のような,通信網を介した通信を可能にするソフトウェアを含んでもよい。本発明の代替実施形態においては,例えば,IPX,UDP,等の別の通信ソフトウェア及び転送プロトコルも用いてよい。
0061
いくつかの実施形態においては,計算機720は,プロセッサ760として,1又は複数のIntel社のXeon(登録商標)マイクロプロセッサを含む。さらに,一つの実施形態においては,計算機720はUNIX(登録商標)ベースのオペレーティングシステムを含む。
0062
RAM770及びディスクドライブ780は,実行可能計算機コード,人間可読コード,等を含む,本発明の実施形態のようなデータを記憶するように構成された有形媒体の例である。ほかの種類の有形媒体には,フレキシブルディスク,着脱可能ハードディスク,CD−ROM,DVDのような光記憶媒体,バーコード,フラッシュメモリ,リードオンリメモリ(ROM),バッテリバックアップ揮発性メモリのような半導体メモリ,ネットワーク層記憶装置,等が含まれる。RAM770及びディスクドライブ780は,本発明の機能を提供する基本プログラム及びデータ構造体を記憶するように構成してもよい。
0063
本発明の機能を提供するソフトウェアコードモジュール及び命令は,RAM770及びディスクドライブ780に記憶してもよい。これらのソフトウェアモジュールはプロセッサ760で実行することができる。RAM770及びディスクドライブ780はまた,本発明に従って用いられるデータを記憶するリポジトリを提供してもよい。
0064
RAM770及びディスクドライブ780は,プログラムの実行中に命令及びデータを記憶するための主ランダムアクセスメモリ(RAM)と,固定された命令が記憶されているリードオンリメモリ(ROM)とを含むいくつかのメモリを含んでもよい。RAM770及びディスクドライブ780は,プログラム及びデータファイル用の永続(不揮発性)記憶を提供するファイル記憶サブシステムを含んでもよい。RAM770及びディスクドライブ780はまた,着脱可能フラッシュメモリのような着脱可能記憶システムを含んでもよい。
0065
バスサブシステム790は,計算機720の種々の構成要素及びサブシステムが,互いに意図したように通信できるようにする機構を提供する。バスサブシステム790は単一のバスとして概略的に示されているが,バスサブシステムの代替実施形態は複数のバスを利用してもよい。
0066
図7は,本発明を実現することができる計算機システムを表している。当業者には,多くのほかのハードウェア及びソフトウェアが本発明と共に用いるのに適していることは明らかであろう。例えば,計算機はデスクトップ型,携帯型,ラック搭載型,又はタブレット型の構成であってもよい。代替として,計算機は一連のネットワーク化された計算機であってもよい。さらに,Pentium(登録商標)又はItanium(登録商標)マイクロプロセッサ,Advanced Micro Devices社のOpteron(商標)又はAthlonXP(商標)マイクロプロセッサ,等のほかのマイクロプロセッサの利用も考えられる。さらに,Microsoft社のWindows(登録商標),WindowsXP(登録商標),WindowsNT(登録商標),Sun Microsystems社のSolaris(登録商標),Linux(登録商標),Unix(登録商標),等のほかの種類のオペレーティングシステムも考えられる。更に別の実施形態においては,上述の技法をチップ又は補助処理ボード上で実現してもよい。
0067
本発明の種々の実施形態は,ソフトウェア,ハードウェア又は双方の組合せによる論理の形態で実現することができる。論理は,計算機システムのプロセッサに,本発明の実施形態において開示されたステップの集合を実行するように指示するようにした命令の集合として,計算機可読又は機械可読記憶媒体に記憶してもよい。論理は,情報処理装置に,本発明の実施形態において開示されたステップの集合を自動的に実行するように指示するようにした計算機プログラム製品の一部を形成してもよい。本明細書において提供された開示及び教示に基づいて,当業者であれば,例えば,計算機で実行可能な命令を生成するためにソースコードを書き,そのソースコードをコンパイルすることによって,本発明を実現するほかの手段及び/又は方法を理解するであろう。