Верилог-А
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Verilog-A — это стандартный язык моделирования аналоговых схем. Это подмножество Verilog-AMS с непрерывным временем . Некоторые коммерческие приложения могут экспортировать проекты MEMS в формат Verilog-A.
История [ править ]
Verilog-A был создан из-за необходимости стандартизировать поведенческий язык Spectre перед лицом конкуренции со стороны VHDL (стандарт IEEE), который поглощал аналоговые возможности других языков (например, MAST). Open Verilog International (OVI, организация, которая первоначально стандартизировала Verilog) согласилась поддержать стандартизацию при условии, что она будет частью плана по созданию Verilog-AMS — единого языка, охватывающего как аналоговый, так и цифровой дизайн. Verilog-A представлял собой полностью аналоговую версию Verilog-AMS, которая была первой фазой проекта.
произошла значительная задержка (возможно, промедление) Между первым справочным руководством по языку Verilog-A и полной версией Verilog-AMS , и за это время Verilog перешел на IEEE, оставив Verilog-AMS в Accellera .
Журнал электронной почты от AD 2000 можно найти здесь .
доступность Стандартная
Стандарт Verilog-A не существует отдельно — он является частью полного стандарта Verilog-AMS. Его LRM доступен на веб-сайте Accellera . [1] Однако первоначальный и последующие выпуски можно найти здесь , а последний, вероятно, будет здесь, поскольку в будущих работах будут использоваться новые возможности сетевых типов в SystemVerilog . Встроенные типы, такие как «wreal» в Verilog-AMS, станут пользовательскими типами в SystemVerilog, что в большей степени соответствует методологии VHDL .
Совместимость с языком программирования C [ править ]
Подмножество Verilog-A можно автоматически перевести на язык программирования C с помощью автоматического синтезатора моделей устройств (ADMS) . Эта функция используется, например, для перевода моделей транзисторов BSIM Verilog-A, которые больше не выпускаются на C, для использования в таких симуляторах, как ngspice . [2]
Пример кода [ править ]
Этот первый пример дает первую демонстрацию моделирования в Verilog-A:
`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
В этом примере Verilog-AMS реализуется идеальный диод, определяя ток через ветвь (a,c) в зависимости от напряжения на клеммах ветви (a), (c) и температуры окружающей среды моделируемой схемы:
// 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
Для простого источника напряжения постоянного тока напряжение ветви устанавливается на постоянное значение (DC):
// 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() :
// 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
См. также [ править ]
Ссылки [ править ]
- ^ Стандарт Verilog-AMS
- ^ «Руководство по преобразованию Verilog-A в C» . нгспайс . Проверено 17 июля 2019 г.
Внешние ссылки [ править ]
- Цели языкового дизайна (около 1994 г.)
- Группа аналоговых смешанных сигналов Accellera Verilog
- Справочные руководства по языкам
- Руководство дизайнера по Verilog-AMS
- verilogams.com — Руководство пользователя для Verilog-AMS и Verilog-A.
- Сообщество Designer's Guide — примеры моделей, написанных на Verilog-A.
- Компилятор OpenVAF