베릴로그 A

Verilog-A

Verilog-A는 아날로그 회로용 업계 표준 모델링 언어입니다.이것은 Verilog-AMS의 연속 시간 서브셋입니다.상용 어플리케이션의 일부에서는 MEMS 설계를 Verilog-A 형식으로 내보낼 수 있습니다.

역사

Verilog-A는 다른 언어(예: MAST)로부터 아날로그 기능을 흡수하고 있던 VHDL(IEEE 표준)의 경쟁에 직면하여 Spectre 동작 언어를 표준화할 필요성 때문에 만들어졌습니다.Open Verilog International(OVI, 원래 Verilog를 표준화한 기관)은 Verilog-AMS(아날로그와 디지털 설계를 모두 망라하는 단일 언어)를 작성하는 계획의 일환으로서 표준화를 서포트하는 것에 동의했습니다.Verilog-A는 프로젝트의 첫 단계였던 Verilog-AMS의 전체 아날로그 서브셋입니다.

최초의 Verilog-A 언어 레퍼런스 매뉴얼과 완전한 Verilog-AMS 사이에는 상당한 지연(지연 가능성이 있음)이 있었고, 그 사이에 Verilog-AMS는 Accellera에 남겨진 채 IEEE로 이동했다.

2000년 이메일 로그AD는 여기서 찾을 수 있습니다.

표준 가용성

Verilog-A 표준은 독립형으로 존재하지 않으며 완전한 Verilog-AMS 표준의 일부입니다.LRM은 Accellera [1]웹사이트에서 구할 수 있습니다.단, 초기 릴리즈와 후속 릴리즈는 여기에서 확인할 수 있습니다.이 릴리스는 향후 SystemVerilog의 새로운 net-type 기능을 활용할 것이기 때문에 최종 릴리즈가 될 가능성이 있습니다.Verilog-AMS의 "wreal"과 같은 기본 제공 유형은 VHDL 방법론에 따라 SystemVerilog의 사용자 정의 유형이 됩니다.

C 프로그래밍 언어와의 호환성

자동 디바이스 모델 신시사이저(ADMS)를 사용하여 Verilog-A의 서브셋을 C 프로그래밍 언어로 자동 번역할 수 있습니다.이 기능은 예를 들어 C에서 출시되지 않은BSIM Verilog-A 트랜지스터 모델을 ngspice [2]등의 시뮬레이터로 변환하기 위해 사용됩니다.

코드 예시

다음 예시는 Verilog-A에서의 모델링을 최초로 시연하고 있습니다.

「그럴 수 있다 "params.vams" 「그럴 수 있다 "temules.vams"  모듈 (a,b,c,d,e,f);    파라미터 진짜 R = 1m;  파라미터 진짜 C = 1u;  파라미터 진짜 L = 1u;  파라미터 정수 얻다 = 2;    입력 a;  산출량 b;  인아웃 c,d,e,f;    전기적인 a,b,c,d,e,f;    아날로그 시작한다.      // 일괄 요소 모델링   //저항기   V(c,d) <+> R*I(c,d);    //인덕터   // 여러 전류 또는 전압 할당이 누적됩니다.   V(c,d) <+> L * ddt(I(c,d));      //캐패시터   I(e,f) <+> C * ddt(V(e,f));      // 단순 증폭기   // 두 번째 노드가 제공되지 않을 경우 전압이 접지를 기준으로 합니다.   V(b) <+> 얻다 * V(a);   끝.  엔드 모듈 

이 Verilog-AMS 예에서는 분기 단자(a), (c)의 전압 및 시뮬레이션 회로의 주변 온도에 따라 분기(a, c)를 통과하는 전류를 정의함으로써 이상적인 다이오드를 구현하고 있습니다.

// 이상적인 다이오드 모듈 다이오드 (a, c);      인아웃 a, c;      전기적인 a, c;      파라미터 진짜 IS = 1.0e-14;  // 사용자가 구성할 수 있는 포화 전류     진짜 아이디오;     /* * 다음에 따라 다이오드를 통과하는 비선형 전류 계산 * - 열전압 $140(시뮬레이트 회로의 주변 온도) 및 * - 단자 간 전압 */     아날로그 시작한다.         아이디오 = IS * (석회색(V(a,c)/$140) - 1);          I(a,c) <+> 아이디오;      끝.  엔드 모듈 

단순 DC 전압 소스의 경우 분기 전압이 상수(DC) 값으로 설정됩니다.

// DC 전원 모듈 vsrc (p,n);   파라미터 진짜 직류 = 1.0;   인아웃 p, n;   전기적인 p, n;    아날로그 시작한다.     // 각 시간 스텝에서 일정한 DC 전압을 할당합니다.     V(p,n) <+> 직류;   끝. 엔드 모듈 

사인 전압 발생기는 내장된 sin() 함수를 사용할 수 있습니다.

// 사인파 전압원 「그럴 수 있다 "params.vams"   모듈 vsin (p,n);   파라미터 진짜 진폭 = 1.0;   파라미터 진짜 디스크 = 50.0;    파라미터 진짜 단계 = 0.0;   인아웃 p, n;   전기적인 p, n;    아날로그 시작한다.     V(p,n) <+> 진폭 * ('M_TWO_PI' * 디스크 * $160 타임 + 단계);     $bound_step(0.1/디스크);  // 에일리어싱 문제를 피하기 위해 사이클당 최소 10포인트 요구   끝. 엔드 모듈 

「 」를 참조해 주세요.

레퍼런스

  1. ^ Verilog-AMS 표준
  2. ^ "Verilog-A to C conversion guidelines". ngspice. Retrieved 2019-07-17.

외부 링크