Мур 1 26 июля, 2021 Опубликовано 26 июля, 2021 · Жалоба 2 minutes ago, RobFPGA said: Приветствую! Простите, но гадать на кофейной гуще будет как то результативнее Мы отсюда не видим ни структуры вашей шины и обвязки вокруг памяти ни то как память к процу цепляется, ... А у меня уже на сегодня лимит по кофе исчерпан Удачи! Rob. Страшный он, из-за того, что исторически делался впопыхах и для упрощения бенча используется параллельно 2* SPI, который я включаю в самом дизайне для эрзац-проверки в симуляторе. И в самом бенче уже 2 мастера SPI, где стоит заглушка по последовательным данным. Мне не жалко выставить этот ужас тут и разобраться тут будет сложно. Я тогда определю его как непосредственно готовый для сборки(лишнее отключаю.) и оценки TQ. Эта гигантомания каприз начальства и для тестирования вполне хватило бы более скромных цифр. Но... так хотелки выстроились не верху... QII 18.0 MaxRAM_optEMIF200_SPI00a_83_186conv.qar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 1 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 13 hours ago, Мур said: MaxRAM_optEMIF200_SPI00a_83_186conv.qar 49.32 kB · 2 downloads Тоже решил заглянуть, проходя мимо. Развернул проект - не нашел слаков, связанных со счетчиками. Только куча addr_mem_b[...], связанных с разными тактовыми доменами и т.д. А зачем на 200МГц по отрицательному фронту какие-то данные перекладывать? Там такая анархия творится... Мне кажется, дело не столько в счетчиках, сколько в этом. Перейдите в единый тактовый домен, уберите работу по заднему фронту тактовой. ЗЫ. Во всех RAM на порт А подана тактовая 100 МГц, а addr_mem_b защёлкивается на 200 МГц. mem0: RAM2P PORT map ( address_a => addr_mem_b, address_b => adr_b, --BUS clock_a => clk100_s, clock_b => nlk200_s,--clk200_s, --clk200_s, --BUS data_a => DATAspi_b, data_b => dat_b, --BUS wren_a => wsw0_s, wren_b => ww0_s, --BUS q_a => rim0_b, q_b => bus0_bus --BUS ); ... ... aaa: process (clk200_s) begin if clk200_s'event and clk200_s = '0' then addr_mem20t_b <= addr_mem200_b;--тут конвейер по адресу addr_mem2tt_b <= addr_mem20t_b; addr_mem_b <= addr_mem2tt_b; end if; end process aaa; Тоже самое с "address_b => adr_b, --BUS". Входной сигнал через комбинаторику засовывается в порты RAM на 200 МГц. Тоже самое с сигналом wt_s - формируется на 200 МГц, используется для записи в порт RAM, работающий на 100 МГц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 2 hours ago, nice_vladi said: Тоже решил заглянуть, проходя мимо. Развернул проект - не нашел слаков, связанных со счетчиками. Только куча addr_mem_b[...], связанных с разными тактовыми доменами и т.д. А зачем на 200МГц по отрицательному фронту какие-то данные перекладывать? Там такая анархия творится... Мне кажется, дело не столько в счетчиках, сколько в этом. Перейдите в единый тактовый домен, уберите работу по заднему фронту тактовой. отлично!.. Спасибо! Имею право разделять RAM на две независимые(200 и 100) парадигмы, где одна обслуживает скоростную шину, другая в сервисе SPI. Отрицательный фронт(раньше в IP его можно было выбирать) взят опытным путем, поскольку с прямым он тормозит в TQ в два раза! Quote Во всех RAM на порт А подана тактовая 100 МГц, а addr_mem_b защёлкивается на 200 МГц. Тоже самое с "address_b => adr_b, --BUS". Входной сигнал через комбинаторику засовывается в порты RAM на 200 МГц. Тоже самое с сигналом wt_s - формируется на 200 МГц, используется для записи в порт RAM, работающий на 100 МГц Это как раз недостающий конвейер шины адреса, который я поставил накануне, чтобы ближе протянуть её к самому RAM. Поскольку частоты кратны, я должен был это учитывать (один там лишний). Терять один тик 100МГц я ещё могу себе позволить... Комбинаторика перед регистром - это нормально, тем более она есть быстрый мультиплексор(и регистр на выходе!) С wt_s не смотрел, поскольку в TQ его нет. Но за это спасибо! Буду внимательнее... (Порт В там как раз 200МГц!) Так что все тут верно.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 30 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба Приветствую! 6 hours ago, Мур said: Это как раз недостающий конвейер шины адреса, который я поставил накануне, чтобы ближе протянуть её к самому RAM. Поскольку частоты кратны, я должен был это учитывать (один там лишний). Терять один тик 100МГц я ещё могу себе позволить... Позволить вы себе можете многое но вот результат такого позволения сомнителен. Даже если клоки синхронные при таком использовании времянки ужесточаются в 2 раза. А с учетом работы по обоим фронтам и во все 4. Что только добавляет проблем при P&R. Ведь нет смысла ставить 2 pipeline регистра на 200-x MHz когда можно обойтись одним на 100. При такой "каше" первым делом надо пересматривать структуру дизайна, а не латать "тришкин кафтан" заплатками. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 1 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 18 minutes ago, RobFPGA said: При такой "каше" первым делом надо пересматривать структуру дизайна, а не латать "тришкин кафтан" заплатками. +++ Пока дизайн не очень большой и сложный, я бы перетряхнул всё с чистого листа. Изначально задавшись ограничениями: - на передельную частоту: скажем, 200 МГц, хотя и это для циклона5 не сильно комфортно - на концепцию использования тактовой частоты: только положительный фронт, одна тактовая в проекте, в случае необходимости понижения - использовать clock enable Ну и как следует отсимулять всё это. 7 hours ago, Мур said: Имею право разделять RAM на две независимые(200 и 100) парадигмы, где одна обслуживает скоростную шину, другая в сервисе SPI Тогда соблюдайте парадигму: для 200 все сигналы формируйте на 200, для 100 - все сигналы на 100. 7 hours ago, Мур said: Отрицательный фронт(раньше в IP его можно было выбирать) взят опытным путем, поскольку с прямым он тормозит в TQ в два раза! Нужно понимать, как он соотносится с остальными сигналами в дизайне. Да и слепо верить TQ не стоит. Он показывает только то, о чем вы просите. Где-то у @des00 были годные статьи на эту тему. 7 hours ago, Мур said: Комбинаторика перед регистром - это нормально, тем более она есть быстрый мультиплексор(и регистр на выходе!) Зацепился взглядом за то, что вы входной сигнал (с пина) протащили через логику и только потом щелкнули в регистр. С учетом того, что у вас 100+ МГц в дизайне, я бы не стал так делать. 7 hours ago, Мур said: С wt_s не смотрел, поскольку в TQ его нет. Но за это спасибо! Буду внимательнее... (Порт В там как раз 200МГц!) Так что все тут верно.. Он есть, просто был очень глубоко в списке слаков. По умолчанию TQ показывает только первые 200 худших путей. ЗЫ. Либо, если "и так сойдёт" и не нужно будет всё это развивать и поддерживать, просто забить на все предупреждения TQ. Мб и не имеет смысл тратить время на перетряхивание проекта о котором больше вы никогда не вспомните... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 1 hour ago, RobFPGA said: Приветствую! Позволить вы себе можете многое но вот результат такого позволения сомнителен. Даже если клоки синхронные при таком использовании времянки ужесточаются в 2 раза. А с учетом работы по обоим фронтам и во все 4. Что только добавляет проблем при P&R. Ведь нет смысла ставить 2 pipeline регистра на 200-x MHz когда можно обойтись одним на 100. При такой "каше" первым делом надо пересматривать структуру дизайна, а не латать "тришкин кафтан" заплатками. Удачи! Rob. Согласен. "На коленке" быстро не бывает! Придется вникать.. Пока меня перекинули на другую тему, а эту буду дома факультативно менять и препарировать... 1 hour ago, nice_vladi said: +++ Все сделаю на 200!!! Чтобы не блукать потом... Да и размер памяти стоит в предполагаемом тесте уменьшить... Да и стоит сделать нормальный бенч, чтобы легче было ориентироваться в поведении. Спасибо всем! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 3 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 21 minutes ago, Мур said: Все сделаю на 200!!! Чтобы не блукать потом... Да и размер памяти стоит в предполагаемом тесте уменьшить... Помнится, пробовал я когда-то на Cyclone V загружать во внутреннюю память с шины PCIe, используя альтеровский IP. На 125 МГц и 4 кслов (32-разрядных) собиралось без слаков, при 64кслов - уже TQ допускал работу что-то на 110-115 мегагерцах (в реале работало). Кристалл был загружен на 10-20% емнип. Затык был именно на пути к дальним блокам памяти. На Arria V компилировалось без проблем, speedgrade у Cyclone был 7, у Arria - 2 или 3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 23 27 июля, 2021 Опубликовано 27 июля, 2021 · Жалоба 14 hours ago, Мур said: Все сделаю на 200!!! 200 MHz на CYCLONE V EX С8 ??? Да вы оптимист!.. :) Вот результат синтеза FFT на 64k точек для 5CEFA9F23C7: +-----------------------------------------------------------------------------------+ ; Fitter Summary ; +---------------------------------+-------------------------------------------------+ ; Fitter Status ; Successful - Tue Jul 27 19:53:33 2021 ; ; Top-level Entity Name ; fft ; ; Family ; Cyclone V ; ; Device ; 5CEFA9F23C7 ; ; Timing Models ; Final ; ; Logic utilization (in ALMs) ; 1,801 / 113,560 ( 2 % ) ; ; Total registers ; 4314 ; ; Total block memory bits ; 2,713,752 / 12,492,800 ( 22 % ) ; ; Total RAM Blocks ; 337 / 1,220 ( 28 % ) ; ; Total DSP Blocks ; 6 / 342 ( 2 % ) ; ; Total PLLs ; 1 / 8 ( 13 % ) ; +---------------------------------+-------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------+ ; Slow 1100mV 0C Model Fmax Summary ; +------------+-----------------+--------------------------------------------------------------------------+------+ ; Fmax ; Restricted Fmax ; Clock Name ; Note ; +------------+-----------------+--------------------------------------------------------------------------+------+ ; 202.18 MHz ; 202.18 MHz ; pll_inst|pll_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk ; ; +------------+-----------------+--------------------------------------------------------------------------+------+ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 28 июля, 2021 Опубликовано 28 июля, 2021 · Жалоба Quote Да вы оптимист!.. :) ....С8 поставлен как компромисс для аппаратных проверок п\п. В рабочий будет поставлен I7 Есть такое... FFT на такое количество точек это монстр! Я не стану идти на поводу гигантомании. ...К тому же тут не понятно, как слив данных с внутреннего буфера FFT будет организован? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 23 28 июля, 2021 Опубликовано 28 июля, 2021 · Жалоба 9 minutes ago, Мур said: FFT на такое количество точек это монстр! Нее.. Монстры вот тут: :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 16 августа, 2021 Опубликовано 16 августа, 2021 · Жалоба Все руки не доходят показать результат тупого сокращения размера памяти в 4 раза (может кому интересно?), который сразу дал желаемы результат. Извините что сразу не показал... MaxRAM_48kEMIF200_SPI00b_110_238conv.qar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться