Синтез двух симуляционных идентичных конструкций - со вторым и без, если в процессе для SET clk - PullRequest
0 голосов
/ 08 января 2019

У меня есть два идентичных (с помощью моделирования) процесса триггера в verilog.

Первое - это просто стандартное описание регистра с асинхронным сбросом (CLR) и часов (SET) с привязкой данных к 1:

always @(posedge SET, posedge CLR)
if (CLR)
    Q <= 0;
else
    Q <= 1;

второй такой же, как указано выше, но со вторым условием для сигнала SET:

always @(posedge SET, posedge CLR)
if (CLR)
    Q <= 0;
else if (SET)
    Q <= 1;

Нет никаких различий между этими двумя реализациями триггера в симуляции. Но что говорит стандарт verilog об этих случаях? Должны ли эти тесты быть эквивалентными, а также их списки после процесса синтеза?

1 Ответ

0 голосов
/ 09 января 2019

«if (SET)» во втором примере является избыточным и будет оптимизирован без синтеза. Так как блок Always будет вводиться только для объекта SET или CLR, оператор else подразумевает, что объект SET произошел.

Кстати, первый пример - гораздо более приемлемая версия для кодирования триггеров. Я еще не видел, чтобы вторая версия превратилась в дизайн для доставки.

...