베릴로그-AMS
베릴로그-AMS(Verilog-AMS)는 아날로그 및 혼합 신호 시스템의 동작을 정의하기 위해 아날로그 및 혼합 신호 확장(AMS)을 포함하는 베릴로그 하드웨어 기술 언어의 파생 언어이다. 이는 베릴로그/시스템베릴로그/VHDL의 이벤트 기반 시뮬레이터 루프를 연속 시간 시뮬레이터로 확장하며, 이는 아날로그 도메인의 미분방정식을 해결한다. 두 도메인은 서로 연결되어 있어, 아날로그 이벤트가 디지털 동작을 유발할 수 있고 그 반대도 가능하다.[1]
개요
[편집]베릴로그-AMS 표준은 아날로그 및 혼합 신호 시스템 및 집적 회로 설계자들이 시스템 및 구성 요소의 고수준 행동 설명뿐만 아니라 구조적 설명을 캡슐화하는 모듈을 생성하고 사용할 수 있도록 의도적으로 만들어졌다.[2][3][4]
베릴로그-AMS는 혼합 신호 회로를 위한 산업 표준 모델링 언어이다. 이는 연속 시간 및 이벤트 기반 모델링 의미론을 모두 제공하므로 아날로그, 디지털 및 혼합 아날로그/디지털 회로에 적합하다. 특히 매우 복잡한 아날로그, 혼합 신호 및 RF 집적 회로의 검증에 적합하다.[5]
베릴로그와 베릴로그/AMS는 절차적 프로그래밍 언어가 아니라 이벤트 기반 하드웨어 기술 언어(HDL)이다. 따라서 이들은 병렬 동작 및 이벤트의 정의 및 동기화를 위한 정교하고 강력한 언어 기능을 제공한다. 반면에 HDL 프로그램 문장에 정의된 많은 동작은 병렬로 실행될 수 있다 (절차적 언어의 스레드 및 태스크와 다소 유사하지만 훨씬 세분화되어 있다). 그러나 베릴로그/AMS는 시뮬레이터의 베릴로그 절차적 인터페이스를 사용하여 ANSI C 언어와 같은 절차적 언어와 연결될 수 있어 테스트 스위트 구현을 용이하게 하고 레거시 코드 또는 테스트벤치 장비와의 상호 작용을 허용한다.
베릴로그-AMS 위원회의 원래 의도는 아날로그 및 디지털 설계를 위한 단일 언어였지만, 통합 과정의 지연으로 인해 베릴로그는 시스템베릴로그로 발전하여 IEEE로 넘어갔고, 베릴로그-AMS는 Accellera에 남아있다.
코드 예시
[편집]베릴로그/AMS는 베릴로그 디지털 HDL의 상위 집합이므로 디지털 도메인의 모든 문은 베릴로그와 동일하게 작동한다(예시는 해당 문서를 참조). 모든 아날로그 부분은 베릴로그-A와 동일하게 작동한다.
다음 베릴로그-AMS 코드 예시는 디지털 신호에 의해 트리거되는 아날로그 처리의 예시인 DAC를 보여준다.
`include "constants.vams"
`include "disciplines.vams"
// Simple DAC model
module dac_simple(aout, clk, din, vref);
// Parameters
parameter integer bits = 4 from [1:24];
parameter integer td = 1n from[0:inf); // Processing delay of the DAC
// Define input/output
input clk, vref;
input [bits-1:0] din;
output aout;
//Define port types
logic clk;
logic [bits-1:0] din;
electrical aout, vref;
// Internal variables
real aout_new, ref;
integer i;
// Change signal in the analog part
analog begin
@(posedge clk) begin // Change output only for rising clock edge
aout_new = 0;
ref = V(vref);
for(i=0; i<bits; i=i+1) begin
ref = ref/2;
aout_new = aout_new + ref * din[i];
end
end
V(aout) <+ transition(aout_new, td, 5n); // Get a smoother transition when output level changes
end
endmodule
ADC 모델은 디지털 블록에서 아날로그 신호를 읽는다.
`include "constants.vams"
`include "disciplines.vams"
// Simple ADC model
module adc_simple(clk, dout, vref, vin);
// Parameters
parameter integer bits = 4 from[1:24]; // Number of bits
parameter integer td = 1 from[0:inf); // Processing delay of the ADC
// Define input/output
input clk, vin, vref;
output [bits-1:0] dout;
//Define port types
electrical vref, vin;
logic clk;
reg [bits-1:0] dout;
// Internal variables
real ref, sample;
integer i;
initial begin
dout = 0;
end
// Perform sampling in the digital blocks for rising clock edge
always @(posedge clk) begin
sample = V(vin);
ref = V(vref);
for(i=0; i<bits; i=i+1) begin
ref = ref/2;
if(sample > ref) begin
dout[i] <= #(td) 1;
sample = sample - ref;
end
else
dout[i] <= #(td) 0;
end
end
endmodule
구현
[편집]이 언어는 초기에는 상업 회사에서만 지원되었지만, 행동 모델링 하위 집합인 "베릴로그-A"의 일부는 트랜지스터 모델링 커뮤니티에서 채택되었다. ADMS 변환기는 Xyce 및 ngSPICE와 같은 오픈 소스 시뮬레이터를 지원한다. 보다 완전한 구현은 이제 OpenVAF를 통해 사용할 수 있다. 포스트-SPICE 시뮬레이터 Gnucap은 표준 문서에 따라 설계되었으며, 시뮬레이터 수준과 행동 모델링 모두에 대한 베릴로그-AMS 지원이 증가하고 있다.
같이 보기
[편집]각주
[편집]- ↑ Scheduling semantics are specified in the Verilog/AMS Language Reference Manual, section 8.
- ↑ Accellera Verilog Analog Mixed-Signal Group, "Overview," http://www.verilog.org/verilog-ams/htmlpages/overview.html
- ↑ Verilog-AMS Language Reference Manual
- ↑ The Designer's Guide to Verilog-AMS
- ↑ Verification of Complex Analog Integrated Circuits 보관됨 10월 18, 2006 - 웨이백 머신
외부 링크
[편집]- I. Miller and T. Cassagnes, "Verilog-AMS Eases Mixed Mode Signal Simulation," Technical Proceedings of the 2000 International Conference on Modeling and Simulation of Microsystems, pp. 305–308, Available: https://web.archive.org/web/20070927051749/http://www.nsti.org/publ/MSM2000/T31.01.pdf
일반
[편집]- Accellera 베릴로그 아날로그 혼합 신호 그룹
- verilogams.com — 베릴로그-AMS 및 베릴로그-A 사용자 매뉴얼
- 디자이너 가이드 커뮤니티, 베릴로그-A/MS — 베릴로그-AMS로 작성된 모델 예시
- EDA.ORG AMS 위키 - 문제, 미래 개발, 시스템베릴로그 통합