AlexRayne 7 17 марта, 2009 Опубликовано 17 марта, 2009 · Жалоба Здрасте всем. ломает меня зачастую писать объявления используемых компонентов и их экземпляров. обычная комбинационная логика и простые тригеры\сретчики\регистры проще и компактнее выглядят в виде натурального кода. есть ли какойто мотив использовать компоненты а не код? (симулятор может меньше ресурсов кушает, или надежность кода страдает?) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AJIEKCEu 0 17 марта, 2009 Опубликовано 17 марта, 2009 · Жалоба Собственно это основная фишка языков описания аппаратуры. Я например компонентами вставляю что-то достаточно большое и функционально законченное. А счетчик, регистр и т.п. всегда быстрее в одну строчку написать. Мне кажется особого мотива использовать компоненты нет. Есть мотив грамотно писать код :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 17 марта, 2009 Опубликовано 17 марта, 2009 · Жалоба Собственно это основная фишка языков описания аппаратуры. Я например компонентами вставляю что-то достаточно большое и функционально законченное. А счетчик, регистр и т.п. всегда быстрее в одну строчку написать. Мне кажется особого мотива использовать компоненты нет. Есть мотив грамотно писать код :) Согласен. Кроме этого если несколько человек над проектом работает - то это единственный выход. В принципе можно компоненты и в библиотеку загнать... но это дело вкуса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 марта, 2009 Опубликовано 17 марта, 2009 · Жалоба ломает меня зачастую писать объявления используемых компонентов и их экземпляров. дык не пишите, это не обязательно, если кое что сделать заранее %) что по мне, то always_ff @(posedge clk) begin pipa <= popa; end быстрее (особено с шаблонами в редакторе) и понятнее чем вставлять сие как компонент %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 17 марта, 2009 Опубликовано 17 марта, 2009 · Жалоба Использование компонента (если этот компонент представляет какую-то физическую сущность технологии) оправдано в случаях: - оптимизация чего либо вручную, если с этим не справляется синтезатор. - вставление такого "нечто", которое не инферрится синтезатором из конструкций языка. Например PLL или DCS - описание какого-то "нечто", которое по-разному инферрится разными синтезаторами, если нужна совместимость-переносимость. Наиболее частые примеры - блоки памяти, которые некоторые синтезаторы инферрят из конструкций языка, а некоторые не инферрят вообще, а для асиков так вообще они генерятся каждый раз по необходимости отдельным софтом. - вставление какой-то схемы, которая должна быть реализована так и только так, а не как синтезатору захочется. В остальных случаях желательно использовать конструкции языка, что облегчит задачу синтезатору и оптимизатору, у которого появится возможность выбора имплементации, оптимизации путей данных, и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 17 марта, 2009 Опубликовано 17 марта, 2009 · Жалоба Только натуральный код: а) синтезатор иногда сам умный б) переносимость Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 17 марта, 2009 Опубликовано 17 марта, 2009 · Жалоба Только натуральный код: ... б) переносимость В отдельных случаях с точностью до наоборот. Конкретный пример - блок памяти. Опишете кодом - на одной технологии (например altera) прокатит, синтезатор воткнет блочную, на другой, например TSMC 0.18um, синтезатор сделает ее из тучи триггеров вместо генерации блока. А компонент будет гарантией того, что в каждой технологии будет именно такой компонент, сгенерированный для этой технологии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 17 марта, 2009 Опубликовано 17 марта, 2009 · Жалоба Преимущественно пишу на языке, не гнушаюсь по мере надобности плотненько набивать код constraint'ами (для того, чтобы XST/MAP/PAR делали именно то, что я задумал). Использование компонента (если этот компонент представляет какую-то физическую сущность технологии) оправдано в случаях: - оптимизация чего либо вручную, если с этим не справляется синтезатор. - вставление такого "нечто", которое не инферрится синтезатором из конструкций языка. Например PLL или DCS - описание какого-то "нечто", которое по-разному инферрится разными синтезаторами, если нужна совместимость-переносимость. Наиболее частые примеры - блоки памяти, которые некоторые синтезаторы инферрят из конструкций языка, а некоторые не инферрят вообще, а для асиков так вообще они генерятся каждый раз по необходимости отдельным софтом. - вставление какой-то схемы, которая должна быть реализована так и только так, а не как синтезатору захочется. В остальных случаях желательно использовать конструкции языка, что облегчит задачу синтезатору и оптимизатору, у которого появится возможность выбора имплементации, оптимизации путей данных, и т.п. С SM полностью согласен. Исходя из этих же соображений применяю компоненты для IBUF/OBUF, BUFG, DLL(DCM), RAMB (чтобы RAMB использовались именно так, как я задумал и не подавались GND сигналы на неиспользуемые входы данных - этот прием достаточно хорошо уменьшает лишнии связи в зоне RAMB). Для описания особо скоростных мест создал свою небольшую библиотеку (кристаллозависимую, очень плотно набитую RLOC), и использую её, чтобы жестко задавать взаимное расположение особых частей проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 18 марта, 2009 Опубликовано 18 марта, 2009 · Жалоба В отдельных случаях с точностью до наоборот. Конкретный пример - блок памяти. Опишете кодом - на одной технологии (например altera) прокатит, синтезатор воткнет блочную, на другой, например TSMC 0.18um, синтезатор сделает ее из тучи триггеров вместо генерации блока. А компонент будет гарантией того, что в каждой технологии будет именно такой компонент, сгенерированный для этой технологии. для плисин такое бывает когда, например, забываешь что выход у блочной памяти синхронный. что касается ASICов - то я ж с ними не работал. ничего сказать не могу. но вижу что граблей там куда больше чем с плисинами. собственно, когда один раз синтезатор (симплифай) сгенерил память куда как качественнее чем я её выставил ручками, я понял, что синтезаторы в некоторых местах явно умнее меня, и нечего с ними воевать. пусть помогают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 18 марта, 2009 Опубликовано 18 марта, 2009 · Жалоба забываешь что выход у блочной памяти синхронный. А умываться по утрам не забываешь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 18 марта, 2009 Опубликовано 18 марта, 2009 · Жалоба для плисин такое бывает когда, например, забываешь что выход у блочной памяти синхронный. Это кто же Вас так жестоко дезинформировал? Или Вы не работали с такими ПЛИС, у которых есть блоки, поддерживающие даже полностью асинхронную работу? И если синтезаторы умнее Вас, это только минус Вам, но ни как не плюс синтезатору. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 19 марта, 2009 Опубликовано 19 марта, 2009 · Жалоба Это кто же Вас так жестоко дезинформировал? Или Вы не работали с такими ПЛИС, у которых есть блоки, поддерживающие даже полностью асинхронную работу? И если синтезаторы умнее Вас, это только минус Вам, но ни как не плюс синтезатору. не. с такими ПЛИС не работал. пока что. когда меня уделал синтезатор - я был дюже молод и зелен. :) но в любом случае мне это был хороший урок - синтезатор далеко не так туп как я себе представлял. и на откуп ему можно оставлять больше чем говорили другие. (у нас тогда в конторе было повальное увлечение насильным прописыванием компонентов) кстати, про ПЛИС с асинхронной памятью - это какие например? чисто энтомологический интерес. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 19 марта, 2009 Опубликовано 19 марта, 2009 · Жалоба кстати, про ПЛИС с асинхронной памятью - это какие например? чисто энтомологический интерес. старенькие ACEX, FLEX... Их мне до сих пор приходится юзать при прототипировании АСИКов, если нужна двухпортовая асинхронка... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться