Логическое моделирование — это использование программного обеспечения для моделирования для прогнозирования поведения цифровых схем и языков описания оборудования . [1] [2] Моделирование может выполняться на разных уровнях физической абстракции , например, на уровне транзисторов , уровне вентилей , уровне регистров-переносов (RTL), уровне электронных систем (ESL) или на поведенческом уровне.
Логическое моделирование может использоваться как часть процесса проверки при проектировании оборудования. [3]
Симуляции имеют преимущество в том, что предоставляют пользователю знакомый вид и ощущение, поскольку они построены на том же языке и символах, которые используются в дизайне. Позволяя пользователю напрямую взаимодействовать с дизайном, симуляция является естественным способом для дизайнера получить обратную связь по своему дизайну.
Уровень усилий, необходимых для отладки и последующей проверки проекта, пропорционален зрелости проекта. То есть, на ранних этапах жизненного цикла проекта ошибки и неправильное поведение обычно обнаруживаются быстро. По мере того, как проект становится более зрелым, для запуска моделирования потребуется больше времени и ресурсов, а для поиска ошибок потребуется все больше времени. Это особенно проблематично при моделировании компонентов для современных систем; каждый компонент, который меняет состояние за один такт в моделировании, потребует нескольких тактов для моделирования.
Прямой подход к этой проблеме может заключаться в эмуляции схемы на программируемой вентильной матрице . Формальная проверка также может быть рассмотрена как альтернатива моделированию, хотя формальное доказательство не всегда возможно или удобно.
Перспективным способом ускорения логического моделирования является использование распределенных и параллельных вычислений. [4]
Чтобы помочь оценить полноту моделирования, существуют инструменты для оценки покрытия кода , [5] функционального покрытия, покрытия конечного автомата (FSM) и многих других метрик. [6]
Моделирование событий позволяет проекту содержать простую временную информацию — задержку, необходимую для прохождения сигнала из одного места в другое. Во время моделирования изменения сигнала отслеживаются в форме событий. Изменение в определенное время запускает событие после определенной задержки. События сортируются по времени, когда они произойдут, и когда все события для определенного времени обработаны, смоделированное время переносится на время следующего запланированного события. То, насколько быстро выполняется моделирование событий, зависит от количества событий, которые необходимо обработать (объема активности в модели). [7]
Хотя моделирование событий может предоставить некоторую обратную связь относительно синхронизации сигнала, оно не является заменой статического временного анализа .
В моделировании цикла невозможно указать задержки. Используется модель с точностью до цикла, и каждый вентиль оценивается в каждом цикле. Таким образом, моделирование цикла выполняется с постоянной скоростью, независимо от активности в модели. Оптимизированные реализации могут использовать низкую активность модели для ускорения моделирования, пропуская оценку вентилей, входные данные которых не изменились. По сравнению с моделированием событий, моделирование цикла, как правило, быстрее, лучше масштабируется и лучше подходит для аппаратного ускорения/эмуляции.
Однако тенденции проектирования микросхем указывают на то, что моделирование событий приобретает относительную производительность из-за снижения фактора активности в схеме (благодаря таким методам, как стробирование тактовых импульсов и стробирование мощности , которые становятся все более распространенными в попытке уменьшить рассеивание мощности). В этих случаях, поскольку моделирование событий моделирует только необходимые события, производительность может больше не быть недостатком по сравнению с моделированием циклов. Моделирование событий также имеет преимущество большей гибкости, обрабатывая особенности дизайна, которые трудно обработать с моделированием циклов, такие как асинхронная логика и несоизмеримые тактовые импульсы. Из-за этих соображений почти все коммерческие логические симуляторы имеют возможность на основе событий, даже если они в первую очередь полагаются на методы на основе циклов. [8]
{{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка )