Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Verilog

Понимание семантики планирования в Verilog: тайминг, события и порядок выполнения

Verilog дизайны и тестбенчи содержат много строк кода: блоки always, initial, непрерывные назначения и другие процедурные операторы, активирующиеся в разное время симуляции.

Каждое изменение значения сигнала — update event. Процессы (always, assign), чувствительные к этим событиям, оцениваются в произвольном порядке — evaluation event. Поскольку события происходят в разное время, их управляют через event queues (очереди событий), упорядоченные по времени симуляции.

module tb;
  reg a, b, c;
  wire d;
  // 'always' процесс оценивается при обновлении 'a' или 'b'
  // Изменение 'a' или 'b' — 'update event'
  // Срабатывание 'always' — 'evaluation event'
  always @ (a or b) begin
    c = a & b;
  end
  // 'assign' процесс оценивается при обновлении 'a', 'b' или 'c'
  assign d = a | b ^ c;
endmodule

Очередь событий (Event Queue)

Шаг симуляции сегментируется на четыре региона. Активная очередь — набор процессов для выполнения в текущее время, может запланировать новые процессы в активную или другие очереди. События можно добавлять в любые регионы, но удалять только из active.

Когда все активные события текущего time step выполнены, симулятор продвигает время к следующему шагу и выполняет его активную очередь.

module tb;
  reg x, y, z;
  initial begin
    #1 x = 1; y = 1;
    #1 z = 0;
  end
endmodule

Симуляция стартует в 0, первый оператор планируется на 1 единицу времени — назначаются x и y = 1. Это активная очередь для времени 1. Затем планируется следующий оператор через 1 единицу — z = 0.

Что делает симуляцию недетерминистичной?

Могут возникнуть race conditions, дающие разные выходы для одного дизайна и тестбенча. Одна причина — active события могут извлекаться из очереди и обрабатываться в любом порядке.

Verilog

  1. Освоение Verilog: полное руководство по проектированию цифровых схем
  2. Освоение конкатенации в Verilog: практическое руководство
  3. Понимание назначений в Verilog: типы, синтаксис и лучшие практики
  4. Блокирующие и неблокирующие назначения в Verilog: ключевые различия
  5. Мастерство функций в Verilog для эффективного RTL дизайна
  6. Понимание задач (Tasks) в Verilog: отличия от функций, синтаксис и применение
  7. Генератор тактового сигнала в Verilog: проектирование и реализация
  8. Мастерство математических функций Verilog для эффективного аппаратного дизайна
  9. Мастерство $timeformat в Verilog: точность и контроль отображения времени
  10. Понимание и печать timescale в Verilog в любой области видимости