Verilog-A - Verilog-A

Verilog-A является отраслевым стандартом языка моделирования аналоговых схем. Это подмножество непрерывного времени Verilog-AMS.

История

Verilog-A был создан из-за необходимости стандартизировать Призрак поведенческий язык перед лицом конкуренции со стороны VHDL (стандарт IEEE), который поглощал аналоговые возможности других языков (например, MAST). Open Verilog International (OVI, орган, который изначально стандартизировал Verilog) согласился поддержать стандартизацию при условии, что это было частью плана по созданию Verilog-AMS - единого языка, охватывающего как аналоговую, так и цифровую архитектуру. Verilog-A был полностью аналоговым подмножеством Verilog-AMS, который был первой фазой проекта.

Между первым Verilog-A произошла значительная задержка (возможно, задержка). справочное руководство по языку и полный Verilog-AMS, и в то время Verilog перешел на IEEE, оставив Verilog-AMS на Accellera.

Журнал электронной почты от 2000AD можно найти Вот.

Стандартная доступность

Стандарт 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:

`включить "constants.vams"`включить "дисциплины.вамс"модуль пример(а,б,c,d,е,ж);		параметр настоящий р = 1м;	параметр настоящий C = 1ты;	параметр настоящий L = 1ты;	параметр целое число усиление = 2;		ввод а;	вывод б;	inout c,d,е,ж;		электрические а,б,c,d,е,ж;		аналог начать				// Моделирование сосредоточенных элементов		// резистор		V(c,d) <+ р*я(c,d);		//Индуктор		// Накапливаются множественные назначения тока или напряжения		V(c,d) <+ L * ddt(я(c,d));				//Конденсатор		я(е,ж) <+ C * ddt(V(е,ж));				// Простой усилитель		// Напряжения относятся к земле, если второй узел не задан		V(б) <+ усиление * V(а);		конец	конечный модуль

Этот пример Verilog-AMS реализует идеальный диод, определяя ток через ответвление (a, c) в зависимости от напряжения на выводах ответвления (a), (c) и температуры окружающей среды моделируемой цепи:

// Идеальный диодмодуль диод (а, c);     inout а, c;     электрические а, c;     параметр настоящий ЯВЛЯЕТСЯ = 1.0e-14;  // Настраиваемый пользователем ток насыщения    настоящий идио;    /*     * Рассчитайте нелинейный ток через диод в зависимости от     * - тепловое напряжение $ vt (при температуре окружающей среды моделируемой схемы) и     * - напряжение между выводами     */    аналог начать        идио = ЯВЛЯЕТСЯ * (Limexp(V(а,c)/$ vt) - 1);         я(а,c) <+ идио;     конец конечный модуль

Для простого источника постоянного напряжения напряжение ветви устанавливается на постоянное значение (DC):

// Источник постоянного токамодуль vsrc (п,п);  параметр настоящий Округ Колумбия = 1.0;  inout п, п;  электрические п, п;  аналог начать    // Назначьте постоянное напряжение постоянного тока на каждом временном шаге:    V(п,п) <+ Округ Колумбия;  конецконечный модуль

Генератор синусоидального напряжения может использовать встроенный грех () функция:

// Источник синусоидального напряжения`включить "constants.vams" модуль всин (п,п);  параметр настоящий амплитуда = 1.0;  параметр настоящий частота = 50.0;   параметр настоящий фаза = 0.0;  inout п, п;  электрические п, п;  аналог начать    V(п,п) <+ амплитуда * грех(`M_TWO_PI * частота * $ abstime + фаза);    $ bound_step(0.1/частота);  // требуется как минимум 10 точек за цикл, чтобы избежать проблем с псевдонимом  конецконечный модуль

Смотрите также

использованная литература

  1. ^ Стандарт Verilog-AMS
  2. ^ "Рекомендации по преобразованию Verilog-A в C". ngspice. Получено 2019-07-17.

внешние ссылки