Перейти к содержанию
    

Verilog или готовьтесь к выстрелу в ногу

чтение выходного порта - тоже ошибка
Это, кстати, не ошибка. Вот в VHDL это ошибка, но начиная с VHDL-2008 тоже можно читать порт типа out.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это, кстати, не ошибка. Вот в VHDL это ошибка, но начиная с VHDL-2008 тоже можно читать порт типа out.

 

Тут я с вами, наверное, соглашусь. Но если output порт не имеет драйвера, то разрешать чтение нельзя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут я с вами, наверное, соглашусь. Но если output порт не имеет драйвера, то разрешать чтение нельзя.

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

Проблема предупреждений в том, что синтезатор часто генерирует много ложных предупреждений, за которыми не видно полезных. Особенно этим страдает Симплифай, в некоторых случаях я получал тысячи левых предупреждений. Причём Симплифай иногда делает предупреждения сам себе:): например, дублирует регистр, а потом решает, что дублировать не надо было, убирает дублированный и даёт ворнинг. В Квартусе можно написать чистый код, однако предупреждения бывают изнутри стандартных корок, причём по причине недоработки этих самых корок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Verilator...

Lint надо аккуратно настроить под ваши внутренние стандарты

Не укажите ссылку где можно посмотреть примеры его настойки?

 

P.S.

Подключил его к emacs, не задавая никаких дополнительных настроек, для rtl получилось удобно.

А вот из командной строки ругается (хотя в редакторе нет) на:

module some_name #( parameter AW)

требует явно указать значение.

хотелось бы детально его настроить

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня тут небольшое сомнение возникло по поводу второго выстрела в ногу ("запись в output port"). К какому из вариантов относится описанное?

 

Вариант 1:

 

module test_module (
...
  output reg tst_out,
...
);
...
assign tst_out = (x & y) | (~z); 
...
assign tst_rcv = tst_out ^ foo;
...
endmodule

 

Вариант 2:

 

module test_module (
...
  output wire tst_out,
...
);
...
assign tst_out = (x & y) | (~z); 
...
assign tst_rcv = tst_out ^ foo;
...
endmodule

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Raven в первом случае ошибка присвоения assign в reg. И в обоих проблема (проблема ли?) чтения выходного регистра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...