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

Константы TRUE, FALSE, HIGH, LOW в Verilog

Стандарты написания кода предостерегают от использования т.н. магических чисел. В частности в "SEI CERT C" есть правило DCL06-C. Для Verilog данное правило также актуально. Но тут есть вопрос. Глядя на отдельное выражение типа some_reg <= 1; не ясно, идет ли речь об установке логического значения TRUE, о переводе некой линии в состояние HIGH или присвоении регистру целочисленного значения, равного единице. Чтобы исключить эту неопределенность, возможно следует определить параметры TRUE, FALSE, HIGH и LOW, а затем использовать уже их в коде.

Делаете ли вы так? Если да, то где именно вы прописываете определения TRUE-FALSE-HIGH-LOW ?

 

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


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

Приветствую!

1 hour ago, flammmable said:

Стандарты написания кода предостерегают от использования т.н. магических чисел. В частности в "SEI CERT C" есть правило DCL06-C. Для Verilog данное правило также актуально. Но тут есть вопрос. Глядя на отдельное выражение типа some_reg <= 1; не ясно, идет ли речь об установке логического значения TRUE, о переводе некой линии в состояние HIGH или присвоении регистру целочисленного значения, равного единице. Чтобы исключить эту неопределенность, возможно следует определить параметры TRUE, FALSE, HIGH и LOW, а затем использовать уже их в коде.

Думаю все же это больше  регулируется  внутренними правилами к оформлению кода в компании. 
Но  тут  надо аккуратно смотреть на удобства и недостатки  которые такие улучшения могут привнести.  Был у меня опыт работы с кодом с похожими константами типа  TRUE|FALSE|HI|LO ... вместо  1'b1, 1'b0.  Не сказал бы что читаемость и понимание кода были лучше. В результате от такого кодирования примитивов отказались  оставив лишь значимые для логики дизайна константы,  типа
 `define BUS_ENABLE  1'b1
 some_reg <= `BUS_ENABLE;

 

1 hour ago, flammmable said:

Делаете ли вы так? Если да, то где именно вы прописываете определения TRUE-FALSE-HIGH-LOW ?

Для чистого Verilog есть единственный практичный способ для таких определений -  include файл с определением нужных констант.  

 

Удачи! Rob.

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


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

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

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

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

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

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

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

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

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

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