Jump to content

    
Sign in to follow this  
flammmable

Стандарты разработки на Verilog/SystemVerilog

Recommended Posts

Есть ли какое-то подобие MISRA-C, но только для Verilog?

Пока нашел стандарт разработки от Freescale.

Вообще, есть ли у вас корпоративные/личные правила разработки? Какие вы ставите префиксы у названий переменных регистров и цепей? Предпочитаете camelCase или under_score? Как размещаете состояния FSM внутри always? Предпочитаете FSM с одним или с двумя always? И т.д.

Share this post


Link to post
Share on other sites

Довольно сложно, я бы даже сказал невыполнимо взять и договориться всем разработчикам.

Если говорить о входны сигналах, то часто ставят префикс "i" или "in", соответственно "o" или "out" у выходных.

А вообще у Иосифа Григорьевича в "Краткий курс HDL. Часть 3. О написании кода <вообще> ..." есть примеры и рекомендации.

 

Share this post


Link to post
Share on other sites

Обсуждалось на форуме. Выкладывались разные стандарты. Поищите.

Пока нашел стандарт разработки от Freescale.
Взял его за основу, добавив что-то из других.

 

Вообще, есть ли у вас корпоративные/личные правила разработки?
Полагаю, что у любого разработчика или команды такое есть или к этому стремятся.

 

Какие вы ставите префиксы у названий переменных регистров и цепей?
Возьмите из стандартов. _b или _n, например, используется для обозначения цепи, несущей отрицательный логический сигнал. _ff — триггер. _in, _out или _i, _o, _reg, _ctr, _en, _rx, _tx, _rdy, _tmp и другие сообразно вашей фантазии.

 

Предпочитаете camelCase или under_score?
Когда-то пытался писать в стиле camelCase, но быстро отказался от этого. Читаемость, имхо, намного хуже при сомнительно экономии (экономии чего, даже непонятно).

 

Как размещаете состояния FSM внутри always? Предпочитаете FSM с одним или с двумя always? И т.д.

Отдельным блоком сигналы с префиксом start_ или подобным по смыслу.

И отдельным блоком always сам АКС.

 

В сети существует много стандартов и рекомендаций от Freescale, Cisco, Altera, Xilinx, Opencores и так далее. Был даже стандарт от нашего разработчика на местном wiki что ли. Что-то такое помнится.

От них стоит отталкиваться, на мой взгляд.

Share this post


Link to post
Share on other sites
Вообще, есть ли у вас корпоративные/личные правила разработки? Какие вы ставите префиксы у названий переменных регистров и цепей? Предпочитаете camelCase или under_score? Как размещаете состояния FSM внутри always? Предпочитаете FSM с одним или с двумя always? И т.д.

1) либо без, либо w_ и r_

2) under_score

3) FSM 1 always

 

Дело в том, что такие вещи в DO-254 не стандартизуются, хотя это можно назвать отдаленно "MISRA для Verilog". Просто говорится, что такой стандарт на код должен быть. Но это еще не всё. Есть большой список рекомендаций, какие конструкции допустимы, а какие запрещены. Наверное, их сформировали для DO-254, исходя из типичных распространенных или даже очень редких ошибок.

Share this post


Link to post
Share on other sites
Есть ли какое-то подобие MISRA-C, но только для Verilog?

 

всёже MISRA-C - это больше "подмножество (под)стандарта" Си обложенный рулами safety и reliability, а обсуждение как-то в стайл-гайд быстро скатилось...

(либо сравнение с MISRA-C было не очень справедливо использовано)

 

 

 

как пример: https://wiki.sei.cmu.edu/confluence/display...+numeric+values

т.е. для верилога это будет звучать как:

при использовании знаковой арифметики всегда объявляйте переменную с квалификатором signed

Share this post


Link to post
Share on other sites
1) либо без, либо w_ и r_

2) under_score

3) FSM 1 always

 

Дело в том, что такие вещи в DO-254 не стандартизуются, хотя это можно назвать отдаленно "MISRA для Verilog". Просто говорится, что такой стандарт на код должен быть. Но это еще не всё. Есть большой список рекомендаций, какие конструкции допустимы, а какие запрещены. Наверное, их сформировали для DO-254, исходя из типичных распространенных или даже очень редких ошибок.

Можно увидеть do 254?

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this