Мур 1 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба Добрый день, корифеи! Ничто не предвещало проблем... Писал, как обычно, очередной автомат чтения памяти с 18-ти разрядной шиной адреса и после функциональной отладки и сборки TQ оценил недостаточность резвости. Провел обычную оптимизацию дизайна, чтобы сократить количество состояний и связей. Улучшение получил, но не достаточное. Далее психанул и применил обычный примитив LPM_COUNTER, надеясь на отшлифованное решение на самой Альтере еще с давних времен. НО! Каково же было мое удивление, когда итоговый результат был ХУЖЕ рукописного...Что это? Ну и напоследок... Подскажите, как взбодрить дизайн? Может примеры кто покажет в ссылках? Спасибо за любой вариант ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 23 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба 1 hour ago, Мур said: Писал, как обычно, очередной автомат чтения памяти с 18-ти разрядной шиной адреса и после функциональной отладки и сборки TQ оценил недостаточность резвости. Как обычно, не хватает подробностей. :) 1. Что за кристалл? 2. Какой у него Speed Grade? 3. Какая в итоге получилась частота? 4. Что за память? 5. Почему её нельзя читать burst'ами? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба Вы бы озвучили частоту и ПЛИС. Существуют специальные схемы быстродействующих счётчиков, где ценой ресурсов достигается быстродействие. Например, carry-select counter, эта идея была реализована аппаратно в Altera Cyclone (первом). Идея очень простая: старшие разряды счётчика дублируются и каждая группа вычисляет результат для своего значения входящего (с младших разрядов) переноса. Сигнал переноса по сути управляет мультиплексором, который коммутирует на выход счётчика ту или иную группу. Несколько другой вариант - prescaled counter, даже применял ещё на FLEX8000. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба 13 hours ago, blackfin said: 1. Что за кристалл? 2. Какой у него Speed Grade? 3. Какая в итоге получилась частота? 4. Что за память? 5. Почему её нельзя читать burst'ами? Это общий вопрос. В независимости от типа, грейда... Но отвечу CYCLONE V EX С8 86МГц. Память двухпортовая внутри FPGA 192k слов 13 hours ago, dxp said: Существуют специальные схемы быстродействующих счётчиков, где ценой ресурсов достигается быстродействие. Например, carry-select counter, эта идея была реализована аппаратно в Altera Cyclone (первом). Идея очень простая: старшие разряды счётчика дублируются и каждая группа вычисляет результат для своего значения входящего (с младших разрядов) переноса. Сигнал переноса по сути управляет мультиплексором, который коммутирует на выход счётчика ту или иную группу. Несколько другой вариант - prescaled counter, даже применял ещё на FLEX8000. Это любопытно... Спасибо. Буду искать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба 10 minutes ago, Мур said: CYCLONE V EX С8 86МГц. Какая-то нереально низкая частота. А кто сказал что дело в счётчике? Напишите только его и проверьте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 30 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба Приветствую! 13 minutes ago, Мур said: Это общий вопрос. В независимости от типа, грейда... На общий вопрос "Что это" будет общий ответ - "Это фигня какая-то" А на более конкретный можно предположить что если вы такой счетчик используете для адресации памяти (а память у вас не маленькая) то у Qu возникают проблемы при роутинге адресных линий к блокам памяти. LPM счетчик и самописный может при P&R давать разные результаты так как размещение элементов последнего может быть более "гибким" чем жесткая структура LPM. Например LPM выстраивает регистры строго по вертикали, а самописный может блоки по 10 регистров расположить и по горизонтали. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба 2 minutes ago, Dr.Alex said: Какая-то нереально низкая частота. А кто сказал что дело в счётчике? Напишите только его и проверьте. Сам дизайн выслать не могу. На работе осталось. Не понятно почему примитив такой тормозной... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба 5 minutes ago, Мур said: Не понятно почему примитив такой тормозной... Да не в счётчике дело. Забудьте ваш "дизайн", сделайте с нуля прожект с одним счётчиком (пара строчек на HDL), и убедитесь что частота раза в 3 выше будет.. А потом уж думайте, что не так с вашим дизайном. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба 3 minutes ago, RobFPGA said: Приветствую! На общий вопрос "Что это" будет общий ответ - "Это фигня какая-то" А на более конкретный можно предположить что если вы такой счетчик используете для адресации памяти (а память у вас не маленькая) то у Qu возникают проблемы при роутинге адресных линий к блокам памяти. LPM счетчик и самописный может при P&R давать разные результаты так как размещение элементов последнего может быть более "гибким" чем жесткая структура LPM. Например LPM выстраивает регистры строго по вертикали, а самописный может блоки по 10 регистров расположить и по горизонтали. Удачи! Rob. Это я видел, потому ставил дополнительный регистр по шине адреса. Благо не было срочности в доставке данных... (потом убрал из экономии, когда громил громоздкие решения) Спасибо за суть стратегии в обоих вариантах! Признателен. 1 minute ago, Dr.Alex said: Да не в счётчике дело. Забудьте ваш "дизайн", сделайте с нуля прожект с одним счётчиком (пара строчек на HDL), и убедитесь что частота раза в 3 выше будет.. TQ упрямо показывал именно место от счетчика по шине адреса до самой памяти... То что придется переписывать, я уже понял. Только это логически завязано на автомат, который обеспечивает параллельную загрузку и моменты инкрементирования, а также выявление упора по завершению адресного пространства. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 23 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба 1 hour ago, Мур said: CYCLONE V EX С8 86МГц. Что-то не так в консерватории. Вот отчет STA для 18-ти битного счетчика со сбросом и сигналом разрешения счета: Flow Summary report for cntr18b +-----------------------------------------------------------------------------------+ ; Flow Summary ; +---------------------------------+-------------------------------------------------+ ; Flow Status ; Successful - Sun Jul 25 19:12:00 2021 ; ; Top-level Entity Name ; cntr18b ; ; Family ; Cyclone V ; ; Device ; 5CEBA5U19C8 ; ; Timing Models ; Final ; ; Logic utilization (in ALMs) ; 20 / 29,080 ( < 1 % ) ; ; Total registers ; 18 ; ; Total pins ; 1 / 224 ( < 1 % ) ; ; Total virtual pins ; 20 ; +---------------------------------+-------------------------------------------------+ +--------------------------------------------------+ ; Slow 1100mV 0C Model Fmax Summary ; +------------+-----------------+------------+------+ ; Fmax ; Restricted Fmax ; Clock Name ; Note ; +------------+-----------------+------------+------+ ; 318.78 MHz ; 318.78 MHz ; clk ; ; +------------+-----------------+------------+------+ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 30 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба Приветствую! 17 minutes ago, Мур said: Это я видел, потому ставил дополнительный регистр по шине адреса. Благо не было срочности в доставке данных... (потом убрал из экономии, когда громил громоздкие решения) Увы просто поставить регистр в таком случае бывает недостаточно. Так как большой fanout от этого регистра к памяти никуда не денется. Qu бывает непредсказуем в поведении автоматического fanout регистров. Нужны соответствующие атрибуты/assignments на требуемые цепи. И нужно обязательно убедится что Qu что реально сделал физ. распараллеливание этому регистру чтобы уменьшить fanout на каждый выход. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба 9 minutes ago, RobFPGA said: Приветствую! Увы просто поставить регистр в таком случае бывает недостаточно. Так как большой fanout от этого регистра к памяти никуда не денется. Qu бывает непредсказуем в поведении автоматического fanout регистров. Нужны соответствующие атрибуты/assignments на требуемые цепи. И нужно обязательно убедится что Qu что реально сделал физ. распараллеливание этому регистру чтобы уменьшить fanout на каждый выход. Удачи! Rob. Да. Я применял атрибуты, когда работал с хилыми. Удобно и быстро. Тут Альтера и потому иной подход. Кстати, как можно прописать необходимость распараллеливания для облегчения fanout? 14 minutes ago, blackfin said: Что-то не так в консерватории. Верю. CYCLONE V мощная машина! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 23 25 июля, 2021 Опубликовано 25 июля, 2021 · Жалоба 19 minutes ago, Мур said: Кстати, как можно прописать необходимость распараллеливания для облегчения fanout? MAX_FANOUT в Assignment Editor: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 14 hours ago, blackfin said: MAX_FANOUT в Assignment Editor: С этими установками проблема. (Some assignments have problems - see massege in the System tab of the Massege window for details. Do you want to continue to save anyway) Я понял так, что все хорошо, если описывается внешний мир, но когда моя сущность внутри дизайна, то следует описать шину сначала виртуальными пинами, а затем Fan-Out. Что я и попытался сделать, однако эти установки не запомнились(!) и в итоге на быстродействие это никак не повлияло! Есть подозрение, что обозначать F-O можно было на этапе построения дизайна, а когда он уже собран,- среда брыкается и запомнить установку адресной шины на максимальную нагрузочную способность не получается! Тут тот самый автомат(я их разбил на 3шт) и повесил ему в управление LPM_COUNTER(2шт). ...продолжаю копать далее avt_mem_ea.vhd counter18.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба Опа! С 10го захода QII таки запомнил мою просьбу! Не понятно когда я уломал QII... Обычно тупо все сбрасывала. В .qsf точно есть... set_instance_assignment -name VIRTUAL_PIN ON -to addr_mem_b set_instance_assignment -name MAX_FANOUT 500 -to addr_mem_b только никаких подвижек не вижу И почему в перечне нет 15го адреса? Казалось-бы,- самый старший... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться