В чем разница между структурным Verilog и поведенческим Verilog?

Как и в названии, каковы основные различия между структурным и поведенческим Verilog?

5 ответов


нет строгого определения этих терминов, согласно IEEE Std. Однако, обычно структурная относится к описанию дизайна с использованием экземпляров модуля (особенно для строительных блоков нижнего уровня, таких как ворота и и триггеры), тогда как поведения относится к описанию дизайна с использованием always блоки.

Gate netlists всегда структурная, и RTL-код обычно поведения. Это общее для RTL, чтобы иметь экземпляры тактовых ворот и ячеек синхронизатора.


структурная

здесь функции определяются с использованием основных компонентах, таких как инвертор, MUX, сумматор, дешифратор, основные цифровые логические элементы etc.. Это просто как соединять и аранжировать различные части цепей доступных к реализовать функцию.

Behavorial

поведенческое описание в Verilog используется для описания функции проектирования алгоритмическим способом. Поведенческое моделирование в Verilog использует конструкции, аналогичные конструкциям языка C. Далее , это делятся на 2 подкатегории .

  • (a)постоянный

назначение данных выходам является непрерывным. Это будет реализовано с использованием явных операторов "assign" или путем назначения значение для провода во время его объявления . В случае присвоить любое изменение будет немедленно произведите эффект выход . Следовательно, вывод должен быть объявлен как wire

  • (b) - процессуального

здесь назначения данных не выполняются непрерывно, а это происходит при определенных событиях, указанных в списке чувствительности. Этот тип схема моделирования реализуется с использованием процедурных блоков, таких как "всегда" или "начальное".

здесь выходные переменные должны быть определены как reg потому что они должны держитесь Предыдущее значение до нового назначения после любого изменения указанного списка чувствительности.

надеюсь, что это помогает :)


структурный Verilog обычно относится к коду Verilog, который синтезируется (имеет точную и значимую аппаратную реализацию) и обычно записывается на уровне передачи регистра (RTL). С другой стороны, поведенческий Verilog обычно является поведенческим описанием аппаратного обеспечения или функциональности на более высоком уровне. поведенческий код не должен быть синтезируемым, например, когда вы определяете задержку в коде verilog, масштабируемом шкалой времени, синтезатор не учитывает это, когда он переводит ваш код в логику и аппаратное обеспечение, но скорее он имеет цели моделирования. То же самое касается структурного и поведенческого VHDL.


Behavioral не использует описание логических элементов, которые вы можете использовать и,или, не, которые уже определены в verilog в то время как structural использует описание логических элементов, где вы описываете, что хотите, чтобы модуль назывался (и/или/не) и описывал, что он делает & / | / ~.


структурный verilog имеет дело с примитивами в простом слове, таком как and, or, not etc.. Примитивы вызываются / выводятся из библиотек и подключаются к входным выходным портам. Пример

 module structural(y,a,b);
    input a,b;
    output y;
    and a1 (y,a,b); // and is the primitive inferred and a1 is the instance name.
 endmodule

поведенческий verilog имеет дело с логикой или поведением системы. Он обрабатывает сложную логическую реализацию, и именно поэтому в промышленности все реализуют поведенческие модели системы, называемой RTL. Как только поведенческий RTL будет проверен инженерами переднего плана с помощью SV / UVM, тогда этот RTL преобразуется в уровень ворот i.E структурные, которые идут на синтез.

см. книга на языке Verilog, написанный Самир Palnitkar для более подробной информации.