Verilog-AMS導入・活用の概要

Verilog-AMSは、アナログ・ミックスド・シグナルの機能を記述できる言語です。
SPICEの回路記述や、Verilog-HDLの論理記述とも共存できます。
Verilog-AMSを使う事で、シミュレーション検証の「自動化」「高速化」「軽量化」が実現できます。

また、SPICEの素子記述では実現が難しかった「LSIワンチップ検証、機械系システムを含むシステム全体検証」などが可能となります。

Verilog-AMSサービス例

自動化

  • Jitter 計算、ADC の INL (Integral Non-Linearity) と DNL (Differential Non-Linearity) 評価自動化
  • 高速デジタル測定のための BER (Bit Error Rate), PRBS (Pseudo Random Bit Sequence) などテストベンチの自動化
  • ロジック制御信号のシーケンスによるシステム再現自動化

高速化

  • 実測値をテーブル形式で取り込み出力する、Feasibility Study, LPB(LSI-Package-Board)検証高速化
  • 外部システム(MEMS、モーター、センサー等)によるシステム検証高速化

軽量化

  • ADC, PLL, DCC等 Loop 回路の軽量化
  • Gain、しきい値、リミッタなどをパラメータ化しシステム検証を軽量化

作成したVerilog-AMSの検証・デバッグは、EDAベンダーのシミュレータで検証することはできますが、環境設定、ライセンス、価格の問題もあって利用が難しい場合があります。そのような場合には、「なるべく投資せずに効果的に検証する手法」も用意しております。
上記以外のサービスでも、Verilog-AMS関連でお困りのことがございましたら、お気軽にお問い合わせください。

Verilog-AMS導入サポート

Verilog-AMSの導入効果は非常に高いのですが、回路設計者にとっては馴染みにくい言語記述のため、ハードルも高くなります。
しかしながら、UNIX環境でのshell, awk, perlのスクリプトなどをゼロから書ける回路設計者は少ないにも関わらず、回路設計者の多くがそれらのスクリプトを使いこなしています。
つまり、雛型・例題があれば、それを修正することで容易に回路設計者も活用できるようになるわけです。
モーデックは、多くのVerilog-AMSサンプル集・例題をうまく使いこなすことにより「Verilog-AMS 導入」に貢献します。
「いくつかの例題を公開し、修正・活用してもらい、それを登録する」という事を繰り返すことでライブラリはどんどん大きくなり、Verilog-AMS活用も容易になっていきます。 以下に Verilog-AMS の簡単な例を紹介します。

 

Verilog-AMSの文法

//コメント
/* このようにして囲むか */                     //ではじめる。

//モジュール定義
module <モジュール名>                         //(ピン1,ピン2...)

//ピン定義
input <ピン1>;
output <ピン2>;
inout <ピン3>;

//ピン属性
<属性> <ピン1>,<ピン2>

// 属性には、
voltage      <電圧>
current      <電流>                       //(ただし、使用するには、I(ピン名)とする。)
electrical       <電圧または電流>   // 電圧、電流に対応

parameter <型> <変数> = <初期値> from [始め:終り]
parameter integer i = 5 [1:10]
// 1 <= i <= 10 、但し初期値は、i=5

parameter integer i = 5 (1:10)
// 1 < i < 10 、但し初期値は、i=5

parameter integer i = 5 (1:10]
// 1 < i <= 10 、但し初期値は、i=5

// 範囲指定の際、無限大は、inf と表す。

 

Verilog-AMSによる抵抗の記述例

`include "constants.h"         //必要モジュール宣言
`include "discipline.h"

// Resistor              //コメント
module res(p,n);            //module宣言、名前:res、端子:p,n
inout p,n;               //p,n端子は、入出力
electrical p,n;              //p,n端子は、電圧,電流に対応
parameter real r=0 from [0:inf);       //パラメータ:r:実数で初期値は0、0 <= r < 無限大 の範囲指定

analog                           //analog記述開始
V(p,n) <+ r*I(p,n);             //p,n間の電圧は、rとp→nを流れる電流の積を代入
endmodule                            //module記述の終了

 

Verilog-AMSによる電圧制御可変抵抗への修正例

`include "constants.h"
`include "discipline.h"
module vcres(p,n,vctrl);         //素子名変更
inout p,n,vctrl;                //制御端子追加
electrical p,n;
parameter real r=0 from [0:inf);
parameter real gain=1;          //利得追加
analog
V(p,n) <+ r*gain*V(vctrl)*I(p,n) //式修正
endmodule