Verilog-A

Verilog-Aは、アナログ回路の業界標準モデリング言語です。これは、 Verilog-AMSの連続時間サブセットです。一部の商用アプリケーションでは、MEMS設計をVerilog-A形式でエクスポートできます。

歴史

Verilog-Aは、他の言語(例えばMAST)からアナログ機能を吸収していたVHDL (IEEE標準)との競争に直面し、 Spectreビヘイビア言語を標準化するために作成されました。Open Verilog International(OVI、Verilogを最初に標準化した団体)は、アナログとデジタルの両方の設計をカバーする単一言語であるVerilog-AMSの作成計画の一環として、この標準化を支援することに同意しました。Verilog-Aは、プロジェクトの第一段階として、Verilog-AMSの完全アナログサブセットでした。

最初の Verilog-A言語リファレンス マニュアルと完全なVerilog-AMSの間には大きな遅れがあり、その間に Verilog は IEEE に移行し、 Verilog-AMS はAccelleraに残されました。

標準的な可用性

Verilog-A規格は単独では存在せず、完全なVerilog-AMS規格の一部です。LRMはAccelleraのウェブサイトで入手できます。[ 1 ] [ 2 ] [ 3 ]今後の開発では、 SystemVerilogの新しいnet-type機能が活用される可能性があります。Verilog-AMSの「wreal」のような組み込み型は、 VHDLメソドロジに沿って、SystemVerilogではユーザー定義型になります。

Cプログラミング言語との互換性

Verilog-Aのサブセットは、自動デバイスモデル合成ツール(ADMS)を用いてC言語に自動変換できます。この機能は、例えばC言語では既にリリースされていないBSIM Verilog-Aトランジスタモデルをngspiceなどのシミュレータで使用できるように変換する際に用いられます。[ 4 ]

コード例

この最初の例は、Verilog-A でのモデリングの最初のデモンストレーションを示します。

`include "constants.vams" `include "disciplines.vams"モジュールの( a b c d e f );パラメーター実数R = 1 m ;パラメーター実数C = 1 u ;パラメーター実数L = 1 u ;パラメーター整数gain = 2 ;入力a ;出力b ;入出力c d e f ;電気的a b c d e f ;アナログbegin // 集中素子のモデリング// 抵抗器V ( c d ) <+ R * I ( c d );//インダクタ// 複数の電流または電圧の割り当てが累積されますV ( c , d ) <+ L * ddt ( I ( c , d )); //コンデンサI ( e , f ) <+ C * ddt ( V ( e , f )); //シンプルなアンプ// 2番目のノードが指定されていない場合、電圧はグランドを基準にしますV ( b ) <+ gain * V ( a ); end endmodule

この Verilog-AMS の例では、分岐端子 (a)、(c) の電圧とシミュレートされた回路の周囲温度に応じて分岐 (a、c) を流れる電流を定義することで、理想ダイオードを実装します。

// 理想ダイオードモジュールdiode ( a , c ); inout a , c ; electrical a , c ; parameter real IS = 1.0e-14 ; // ユーザー設定可能な飽和電流real idio ; /*  * ダイオードを流れる非線形電流を、次の式に基づいて計算します。 * - 熱電圧 $vt (シミュレートされた回路の周囲温度) および * - 端子間電圧 */ analog begin idio = IS * ( limexp ( V ( a , c ) / $vt ) - 1 ); I ( a , c ) <+ idio ; end endmodule

単純なDC電圧源の場合、分岐電圧は定数(DC)値に設定されます。

// DC ソースモジュールvsrc ( p , n );パラメーターreal dc = 1.0 ;入出力p , n ;電気的p , n ;analog begin // 各タイムステップで一定のDC電圧を割り当てます: V ( p , n ) <+ dc ; end endmodule

正弦電圧発生器では組み込みのsin()関数を使用できます。

// 正弦波電圧源`include "constants.vams"モジュールvsin ( p n );パラメーター実数振幅= 1.0 ;パラメーター実数周波数= 50.0 ;パラメーター実数位相= 0.0 ;入出力p n ;電気p n ;analog begin V ( p , n ) <+ amplitude * sin ( `M_TWO_PI * freq * $abstime + phase ); $bound_step ( 0.1 / freq ); // エイリアシングの問題を回避するために、サイクルごとに少なくとも10ポイントを要求しますend endmodule

参照

参考文献

  1. ^ Verilog-AMS 標準
  2. ^初期リリースとその後のリリースは、 Wayback Machineで2007年9月24日にアーカイブされたこちらでご覧いただけます。
  3. ^最終リリースはここでご覧いただけます
  4. ^ 「Verilog-AからCへの変換ガイドライン」 ngspice. 2022年5月7日時点のオリジナルよりアーカイブ2019年7月17日閲覧。