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