Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите с оптимизацией проекта
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
novartis
Здравствуйте, помогите с оптимизацией проекта под Альтерой Циклон5.
В исходном коде verilog (код не мой, но мне достался на доделки) имеется фифо SFIFO. По сути это большой сдвиговый регистр.
Квартус автогенерирует для этого фифо компонент altshift_taps и распределяет по рам-ячейкам.
Частота работы с этим фифо задана 175 МГц (а хочется еще больше).
Иногда удается достичь такую частоту.
А иногда после изменений и очередной компиляции ТаймКвест показывает 150МГц и ругается на
FPGA_Calc_CT:FPGA_Calc_CT_inst|hmod:\gen_hsh0:hsh0_inst|altshift_taps:SFIFO_rtl_0|shift_taps_j0v:auto_generated|
cntr_cjf:cntr1|counter_reg_bit[2]
FPGA_Calc_CT:FPGA_Calc_CT_inst|hmod:\gen_hsh0:hsh0_inst|altshift_taps:SFIFO_rtl_0|shift_taps_j0v:auto_generated|
dffe3a[1]

Нажмите для просмотра прикрепленного файла

От компиляции к компиляции конкретные биты и элементы фифо могут получаться другие в ТаймКвесте.

Есть ли способ указать квартусу разместить это фифо на ALM, а не на рамах? И поможет ли это?

И еще вопрос. Как уже написал. Иногда фитеровщик разводит под заданную частоту, а иногда нет, хотя существенных изменений в коде не производится.
Можно ему както дать понять, что заданные констрейны нужно выполнить хоть кровь из носа, а не так, как это он делает сейчас - иногда плучится, иногда нет.

код (условный):
Код
reg [63:0]SFIFO[40:0];

always @(posedge Clk)
begin
...
SFIFO[23]  <= SFIFO[22];
SFIFO[24]  <= SFIFO[23];
SFIFO[25]  <= SFIFO[24];
SFIFO[26]  <= SFIFO[25];
q[27]         <= SFIFO[26] + 32'h11111111; //sum const
SFIFO[27]  <= SFIFO[26];
SFIFO[28]  <= SFIFO[27];
SFIFO[29]  <= SFIFO[28];
SFIFO[30]  <= SFIFO[29];
q[30]         <= SFIFO[29] + 32'h22222222; // sum const
...
end
SM
Используйте Design space explorer - он как раз этим и занимается, запихивает проект "кровь из носа"
Kuzmi4
Цитата(novartis @ Mar 13 2014, 16:50) *
..
Есть ли способ указать квартусу разместить это фифо на ALM, а не на рамах?
..

Судя по пути, вы используете именно altshift_taps а не SCFIFO. А altshift_taps это по определению RAM-Based Shift Register Megafunction.
Попробуйте руками переписать.
novartis
За подсказку про DSE спасибо, никогда им не пользовался, запускать-запускал, но не пользовался. Сейчас проект компилится 20 минут, я так понимаю ДСЕ будет крутить проект долго-долго, хотелось бы, чтобы он часов за 7 завершил свою работу.


По поводу altshift_taps. Я не пытаюсь использовать эту мегафункцию, квартус сам автоматически генерирует ее. Я бы хотел посмотреть на репорт ТаймКвеста без применения этой мегафункции. А как переписать ручками быстро и непринужденно - ничего в голову не приходит.
SM
так отключите инферринг регистров сдвига в опциях синтезатора, кажется, Auto Shift Register Recognition
o_khavin
Цитата(novartis @ Mar 14 2014, 07:43) *
По поводу altshift_taps. Я не пытаюсь использовать эту мегафункцию, квартус сам автоматически генерирует ее. Я бы хотел посмотреть на репорт ТаймКвеста без применения этой мегафункции. А как переписать ручками быстро и непринужденно - ничего в голову не приходит.

Сдвиговый регистр легко и непринуждённо превращается в кольцевой буфер с общим указателем на чтение и запись. Глубина регистра регулируется максимальным значением указателя, после которого он переходит в ноль. Это если чистый код охота написать.
Есть ещё вариант явной замены сдвигового регистра на, не к ночи будет помянута, мегафункцию, в которой наверняка можно указать тип используемых ресурсов, например блочная память или обычные FF-ы.

Кстати, приведённая картинка как-то не особо соответствует Вашему описанию. Я не очень хорошо ориентируюсь в альтеровском софте, но, IMHO, там банально сумматор между двумя регистрами не успевает пробежать.
Viwon
Попробуйте Tools->Advisors->Timing Optimization Advisor, в каждом пункте, где возможно нажмите Correct the Settings. У меня в свое время компилятор, также от компиляции к компиляции, то укладывал все без проблем, то появлялись проблемы с счетчиками, компараторами, после указанной операции запасы по времени возросли аж в 4 раза!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.