Verilog-A

De la Viquipèdia, l'enciclopèdia lliure
Verilog-A

La finestra GTKWave amb formes d'ona d'exemple senzill d'Icarus Verilog.

Verilog-A és un llenguatge de modelatge estàndard de la indústria per a circuits analògics. És el subconjunt de temps continu de Verilog-AMS. Algunes aplicacions comercials poden exportar dissenys MEMS en format Verilog-A.[1]

Història[modifica]

Verilog-A es va crear per la necessitat d'estandarditzar el llenguatge de comportament Spectre davant la competència de VHDL (un estàndard IEEE), que absorbia la capacitat analògica d'altres llenguatges (p. MÀSTIL). Open Verilog International (OVI, l'organisme que originalment va estandarditzar Verilog) va acceptar donar suport a l'estandardització, sempre que fos part d'un pla per crear Verilog-AMS — un llenguatge únic que cobreixi tant el disseny analògic com el digital. Verilog-A va ser un subconjunt totalment analògic de Verilog-AMS que va ser la primera fase del projecte.[2]

Hi va haver un retard considerable (possiblement una procrastinació) entre el primer manual de referència del llenguatge Verilog-A i el Verilog-AMS complet, i en aquest temps Verilog es va traslladar a l'IEEE, deixant Verilog-AMS enrere a Accellera.

Compatibilitat amb el llenguatge de programació C[modifica]

Un subconjunt de Verilog-A es pot traduir automàticament al llenguatge de programació C mitjançant l'ADMS (Automatic Device Model Synthesizer). Aquesta característica s'utilitza, per exemple, per traduir els models de transistors BSIM Verilog-A, que ja no es publiquen en C, per utilitzar-los en simuladors com ngspice.[3]

Exemple de codi[modifica]

Aquest primer exemple ofereix una primera demostració del modelatge a Verilog-A: [4]

`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

Referències[modifica]

  1. «Introduction to Verilog-A — Documentation» (en anglès). https://verilogams.com.+[Consulta: 16 juliol 2023].
  2. «Verilog-A Language Reference Manual Analog Extensions to Verilog HDL» (en anglès). https://www.siue.edu.+[Consulta: 16 juliol 2023].
  3. «Verilog-A to C conversion guidelines» (en anglès). ngspice. [Consulta: 17-72019].
  4. «Analog Modeling with Verilog-A Training» (en anglès). https://www.cadence.com.+[Consulta: 16 juliol 2023].