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

HDL и стиль программирования.

Существует такое понятие как стиль программирования.

Кто что думает по этому поводу.

В атаче некоторые соображения.vhdl2proc.pdf

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


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

Существует такое понятие как стиль программирования.

Кто что думает по этому поводу.

В атаче некоторые соображения.vhdl2proc.pdf

 

Хмм занятный документ, подход к двухпроцессной архитектуре интересен, но не всегда возможен. А вот идея с интерфейсами с помошью записей ИМХО очень даже ничего.

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


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

подход к двухпроцессной архитектуре интересен, но не всегда возможен. А вот идея с интерфейсами с помошью записей ИМХО очень даже ничего.

Фтопку. Старик Оккам был прав.

Не понимаю любовь аффтора к асинхронным процессам.

Запись в интерфейсе --- это лишня сущность в виде пакета. Нужно сделать лишние телодвижения (залезть в пакет), чтобы увидеть интерфейс блока целиком.

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


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

Не понимаю любовь аффтора к асинхронным процессам.

Запись в интерфейсе --- это лишня  сущность в виде пакета. Нужно сделать лишние телодвижения (залезть в пакет), чтобы увидеть интерфейс блока целиком.

Но ведь любая схема состоит из комбинационной части и регистровой части, какая разница где совместить все это, в одном процессе или в двух. Другое дело что в в случае с асинхронными процесами гораздо легче ошибиться и "сделать" ненужные latch, в верилоге 2001 с этим проще. :)

А про интерфейс, тут еще спорный момент что лучше: переделать один раз пакет или переделать объявления компонента, во всех модулях где этот компонент используеться. Кроме того автор не утверждает что записи это панацея от всего, он рекомендует это делать в сложных блоках, со множеством интерфейсов.

 

ИМХО стиль програмирования быть должен, что бы код был "читабельне" но как найдти оптимум ..... :)

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


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

Angel

Да ужё года два как используем. В больших проекта нормально. А когда IDE научатся подерживать извлечение структуры записей из пакетов (аля автодополнение как SE, VCA и подобные) - вообще будет хорошо. И, кстати, IMHO, с применением записей код становится меньше. Да и дисциплинирует. Можно посмотреть на SystemC - там такой же подход.

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


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

Angel

Да ужё года два как используем. В больших проекта нормально. А когда IDE научатся подерживать извлечение структуры записей из пакетов (аля автодополнение как SE, VCA и подобные) - вообще будет хорошо. И, кстати, IMHO, с применением записей код становится меньше. Да и дисциплинирует. Можно посмотреть на SystemC - там такой же подход.

Можно вопрос? не могли бы вы прояснить зачем в этой доке в пакете делают объявление компонента ? Что бы в архитектуре объекта, более высокой иерархии, не объявлять его ?

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


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

des00

Как я понял - да. Но этого мы не делаем. :)

Просто с записями сокращается пространство имён. Легче отлаживать весь проект. Да и моделируется он значительно быстрее. Очень удобно документировать.

Я сам сначала негативно относился к предложенной идее. Коллеги убедили :).

Сейчас по другому уже в трудно.

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


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

des00

Как я понял - да. Но этого мы не делаем.  :)

Просто с записями сокращается пространство имён. Легче отлаживать весь проект. Да и моделируется он значительно быстрее. Очень удобно документировать.

Я сам сначала негативно относился к предложенной идее. Коллеги убедили :).

Сейчас по другому уже в трудно.

понял спасибо

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


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

Другое дело что в в случае с асинхронными процесами гораздо легче ошибиться и "сделать" ненужные latch

Во-во, лишня сущность --- лишняя степень свободы для ошибки.

А про интерфейс, тут еще спорный момент что лучше: переделать один раз пакет или переделать объявления компонента, во всех модулях где этот компонент используеться.

Так не только пакет переделать надо, надо еще переделать места, где используются поля записи... Хотя вот тут коллега говорит, что все удобно...

 

не могли бы вы прояснить зачем в этой доке в пакете делают объявление компонента ? Что бы в архитектуре объекта, более высокой иерархии, не объявлять его ?

Начиная с VHDL'93 можно спокойно жить без деклараций компонентов.

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


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

Хмм занятный документ, подход к двухпроцессной архитектуре интересен, но не всегда возможен. А вот идея с интерфейсами с помошью записей ИМХО очень даже ничего.

 

Почему не всегда возможен?

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


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

Хмм занятный документ, подход к двухпроцессной архитектуре интересен, но не всегда возможен. А вот идея с интерфейсами с помошью записей ИМХО очень даже ничего.

 

Почему не всегда возможен?

 

ну например из за того что синтезатору нужно объяснить что я хочу. Иногда он упорно тупит и тогда приходиться дробить на несколько процессов или делать компоненты и т.д.

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


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

Для двухпроцессной архитектуры:

например, есть два компонента А и В.

 

component А

port (

rst : in std_logic;

clk : in clk_type;

pcli : out pcl_in_type;

pclo : in pcl_out_type);

end component;

 

component В

port (

pcli : in pcl_in_type;

pclo : out pcl_out_type);

end component;

 

Port map не привожу, думаю и так понятно как они соединяются.

Так вот, вопрос если в А используется только один сигнал pclo.start (кроме того в типе pclo есть и еще сигналы). Компилятор предупреждает что остальные не используются. На это что не обращать внимания? Или надо по другому все это переписать?

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


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

Для двухпроцессной архитектуры:

например, есть два компонента А и В.

 

component А

    port (

        rst  : in std_logic;

        clk  : in clk_type;

        pcli  : out pcl_in_type;

        pclo  : in pcl_out_type);

    end component;

 

component В

    port (

        pcli  : in pcl_in_type;

        pclo  : out pcl_out_type);

end component;

 

Port map не привожу, думаю и так понятно как они соединяются.

Так вот, вопрос если в А используется только один сигнал pclo.start (кроме того в типе pclo есть и еще сигналы). Компилятор предупреждает что остальные не используются. На это что не обращать внимания? Или надо по другому все это переписать?

 

по идее для входов нужно задать константные значения,

выходы сделать open

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


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

Если выходы сделать open, то как тогда если будет третий компонент:

component С

port (

rst : in std_logic;

clk : in clk_type;

pcli : out pcl_in_type;

pclo : in pcl_out_type);

end component;

 

Который использует те выходы В, которые будут open?

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


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

Если выходы сделать open, то как тогда если будет третий компонент:

component С

    port (

        rst  : in std_logic;

        clk  : in clk_type;

        pcli  : out pcl_in_type;

        pclo  : in pcl_out_type);

    end component;

 

Который использует те выходы В, которые будут open?

вот если будет третий компонент, который использует эти выходы, то open выходы делать не надо.

Их можно и вообще не объявлять, но тогда ИМХО это не есть правило хорошего тона

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


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

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

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

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

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

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

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

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

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

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