Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Список чувствительности для синтезатора и симулятора
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
D-Luxe
Как анализирует синтезатор список чувствительности и как симулятор? В чем разница?
Shtirlits
Симулятор выполняет ваш процесс сверху до низу, потом стоит и ждет, когда какой-то из перечисленных в списке чувствительности сигналов дрыгнется и процесс повторяется.

Синтезатору список чувствительности нужен чтобы ругаться, для синтеза он не несет полезной информации.
XVR
Цитата(Shtirlits @ Mar 25 2011, 21:10) *
Синтезатору список чувствительности нужен чтобы ругаться, для синтеза он не несет полезной информации.
Распространенное заблуждение. rolleyes.gif В VHDL действительно полезной информации не несет, а вот в Verilog'е несет - для разных списков чувствительности могут быть синтезированы разные схемы

Мур
Цитата(XVR @ Mar 29 2011, 13:37) *
rolleyes.gif В VHDL действительно полезной информации не несет, а вот в Verilog'е несет - для разных списков чувствительности могут быть синтезированы разные схемы


И в VHDL несёт! И очень серьёзно...
Мне вообще не нравится постановка вопроса. Список чувствительности- святая святых, даже основа в интерпретации поведения. Если на стадии симулятора забыть случайно вписать сигнал в этот список, то даже симулятор станет чудить.
Я лично не разделяю с точки зрения описания поведения этапы симуляции и синтеза.
Да, разные конструкции синтезируются по-разному, имея одинаковое поведение, но списка чувствительности это не касается. Это слишком глобальные вещи(тактирование, промежуточное запоминание).
Если я не прав, приведите пример неполезности информации в списке чувствительности.
Shtirlits
Конечно, я же пишу на VHDL и по умолчанию имел в виду его.
Все используемые синтезаторы, в том числе quartus и xst ведут себя одинаково, как будто сначала делают схему, потом проверяют список чувствительности.
Это их дело.
Заполнять нужно все как положено.
Мур
Цитата(D-Luxe @ Mar 25 2011, 19:46) *
Как анализирует синтезатор список чувствительности и как симулятор? В чем разница?

Синтезатор использует список чувствительности для определения тактирования и буферизации в будущей системе.

Реализация симулятора вынуждена отслеживать смену состояний всех сигналов из списка чувствительности для прогона дальнейшего поведения. В конце концов, он позволяет экономить машинный рессурс самого процесса симуляции. Лучше способа моделировать параллельные процессы пока не придумали.
XVR
В VHDL условия тактирования явно присутствуют в блоке process (обычно в виде if (clk'edge and clk=1) ). Поэтому синтезаторы обычно не смотрят на список чуствительности самого процесса.
В Verilog'е тело always не содержит явных условий для тактирования, поэтому синтезатор обязан извлекать эти данные из списка чуствительности (который кстати, при формальном подходе, не является списком чуствительности, а является оператором ожидания).
Alexium
Цитата(XVR @ Mar 31 2011, 09:45) *
В VHDL условия тактирования явно присутствуют в блоке process (обычно в виде if (clk'edge and clk=1) ). Поэтому синтезаторы обычно не смотрят на список чуствительности самого процесса.
В Verilog'е тело always не содержит явных условий для тактирования, поэтому синтезатор обязан извлекать эти данные из списка чуствительности (который кстати, при формальном подходе, не является списком чуствительности, а является оператором ожидания).

Я пока читал тему, успел испугаться - неужели никто правильно не объяснит sm.gif
Sergey'F
Цитата(XVR @ Mar 31 2011, 11:45) *
который кстати, при формальном подходе, не является списком чуствительности, а является оператором ожидания.

Я бы только уточнил, что он является не оператором ожидания, а объявлением события.
Victor®
Цитата(XVR @ Mar 31 2011, 10:45) *
В VHDL условия тактирования явно присутствуют в блоке process (обычно в виде if (clk'edge and clk=1) ). Поэтому синтезаторы обычно не смотрят на список чуствительности самого процесса.


Прошу обратить внимание, что процессом может быть определена и комбинационная логика, без использования if ... then, но с использованием when.
Oldring
Цитата(Sergey'F @ Apr 3 2011, 22:14) *
Я бы только уточнил, что он является не оператором ожидания, а объявлением события.


Угу. И он не нужен, если в процессе написать оператор wait явно. А без них процесс в симуляторе просто зациклится.

Кстати, некоторые синтезаторы понимают процессы с несколькими явно написанными операторами wait в теле и без списка чувствительности процесса. Как вариант описания конечного автомата с неявным состоянием. Разумеется, чтобы такой процесс был синтезируем, все операторы wait должны быть для одного фронта одного клока.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.