Verilog-A - Verilog-A
Verilog-A , analog devreler için endüstri standardı bir modelleme dilidir. Verilog-AMS'nin sürekli zaman alt kümesidir .
Tarih
Verilog-A, diğer dillerden (örneğin MAST) analog yeteneği emen VHDL'den (bir IEEE standardı) rekabet karşısında Spectre davranış dilini standartlaştırma ihtiyacından yaratılmıştır . Open Verilog International (OVI, orijinal olarak Verilog'u standartlaştıran kuruluş), hem analog hem de dijital tasarımı kapsayan tek bir dil olan Verilog-AMS oluşturma planının bir parçası olması koşuluyla standardizasyonu desteklemeyi kabul etti. Verilog-A, projenin ilk aşaması olan Verilog-AMS'nin tamamen analog bir alt kümesiydi.
İlk Verilog-A dil referans kılavuzu ile tam Verilog-AMS arasında önemli bir gecikme (muhtemelen erteleme) vardı ve o zaman Verilog IEEE'ye taşındı ve Verilog- AMS'yi Accellera'da geride bıraktı .
2000AD'den gelen e-posta günlüğü burada bulunabilir .
Standart Kullanılabilirlik
Verilog-A standardı tek başına mevcut değildir - tam Verilog-AMS standardının bir parçasıdır. Onun LRM mevcuttur Accellera web. Bununla birlikte, ilk ve sonraki sürümler burada bulunabilir , gelecekteki çalışmalar SystemVerilog'daki yeni net tipi yeteneklerden yararlanacağından muhtemelen son sürüm burada olacaktır . Verilog-AMS'deki "wreal" gibi yerleşik türler , VHDL metodolojisine daha uygun olarak SystemVerilog'da kullanıcı tanımlı türler haline gelecektir .
C programlama dili ile uyumluluk
Verilog-A'nın bir alt kümesi , Automatic Device Model Synthesizer (ADMS) kullanılarak otomatik olarak C programlama diline çevrilebilir . Bu özellik örneğin artık C'de piyasaya sürülmeyen BSIM Verilog-A transistör modellerini ngspice gibi simülatörlerde kullanılmak üzere çevirmek için kullanılır .
Kod örneği
Bu ilk örnek, Verilog-A'da modellemenin ilk gösterimini vermektedir:
`include "constants.vams"
`include "disciplines.vams"
module example(a,b,c,d,e,f);
parameter real R = 1m;
parameter real C = 1u;
parameter real L = 1u;
parameter integer gain = 2;
input a;
output b;
inout c,d,e,f;
electrical a,b,c,d,e,f;
analog begin
// Modelling lumped elements
//Resistor
V(c,d) <+ R*I(c,d);
//Inductor
// Multiple current or voltage assignments are accumulated
V(c,d) <+ L * ddt(I(c,d));
//Capacitor
I(e,f) <+ C * ddt(V(e,f));
// Simple amplifier
// Voltages are referenced to ground if no second node is given
V(b) <+ gain * V(a);
end
endmodule
Bu Verilog-AMS örneği, dal terminallerindeki (a), (c) gerilime ve simüle edilen devrenin ortam sıcaklığına bağlı olarak dal (a,c) boyunca akımı tanımlayarak ideal bir diyot uygular:
// Ideal Diode
module diode (a, c);
inout a, c;
electrical a, c;
parameter real IS = 1.0e-14; // User-configurable saturation current
real idio;
/*
* Calculate nonlinear current through diode depending on
* - thermal voltage $vt (at ambient temperature of simulated circuit) and
* - voltage between terminals
*/
analog begin
idio = IS * (limexp(V(a,c)/$vt) - 1);
I(a,c) <+ idio;
end
endmodule
Basit bir DC voltaj kaynağı için, branşman voltajı sabit (DC) değerine ayarlanır:
// DC Source
module vsrc (p,n);
parameter real dc = 1.0;
inout p, n;
electrical p, n;
analog begin
// Assign constant DC voltage at each time step:
V(p,n) <+ dc;
end
endmodule
Sinüs voltaj üreteci yerleşik sin() işlevini kullanabilir:
// A Sinusoidal Voltage Source
`include "constants.vams"
module vsin (p,n);
parameter real amplitude = 1.0;
parameter real freq = 50.0;
parameter real phase = 0.0;
inout p, n;
electrical p, n;
analog begin
V(p,n) <+ amplitude * sin(`M_TWO_PI * freq * $abstime + phase);
$bound_step(0.1/freq); // demand at least 10 points per cycle to avoid aliasing issues
end
endmodule
Ayrıca bakınız
Referanslar
Dış bağlantılar
- Dil tasarım hedefleri (1994 dolaylarında)
- Accellera Verilog Analog Karışık Sinyal Grubu
- Dil Referansları Kılavuzları
- Verilog-AMS için Tasarımcı Kılavuzu
- verilogams.com — Verilog-AMS ve Verilog-A için Kullanıcı Kılavuzu
- Designer's Guide Topluluğu — Verilog-A ile yazılmış model örnekleri