реклама на сайте
подробности

 
 
> Как заставить Квартус явно продублировать регистры?, чтобы убрать слаки (много)
iiv
сообщение Apr 28 2011, 13:39
Сообщение #1


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Всем привет,

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

Сейчас имеется один затык, который не могу пройти.

Алгоритмически мне надо выполнить такую операцию.

Пусть (a_{t,0}, a_{t_1}, a{t_2}) - три 14 битных знаковых числа, которые поступают на вход в момент времени t, а я хочу считать матрицу для линейных предсказаний со всевозможными комбинациями по формуле

s_{i,j,k} = \sum_{l=0,...,t} a_{l,i} a_{l-k,j}, k=0,...,42, i,j=0,1,2

и, естественно, на плиске sm.gif

Что получается, я имею на входе модуля по клоку 3 числа

reg signed [31:0] In[0:2];

загоняю их в сдвиговый массив

reg signed [13:0] Data[0:2][0:43];

always@(posedge Clk)
for(int i=0; i<3; i++)
begin
Data[i][0]<=In[i];
for(int k=0; k<43; k++)
Data[i][k+1]<=Data[i][k];
end

а потом для всех возможных пар вычисляю мегафункцией произведение Data[i][k]*Data[j][0] попутно конечно учитывая то, что стратикс может эффективно только пару умножений и следом идущее сложение вычислять и много остальных ньюансов как то регистровасть умножения и результата...

Если я вычисляю такую корреляцию для маленького числа сдвигов, то есть умножений, мой фмакс получается близким к аппаратному 490МГц и слаков нет даже если я клок поставлю 475МГц. Мне хочется иметь клок 400МГц для большого числа сдвигов, а именно 42, то есть задействовать 378 умножителей. Но, в этом случае, у меня вылезают слаки от Data[j][0] до мегафункции.

И действительно, Data[j][0] должно продублироваться аж 42*3=126 раз!!!

Естественно, первым делом я засунул между Data[j][0] и мегафункией конвейер регистров, один, второй, третий... Квартус, их всех оптимизирует, видя, что они все одни и те же, но продолжает ругаться слаками между последним регистром конвейера до мегафункции... Ах да, все возможные оптимизации по времени включены на полную. Мои потуги с логик-локом пока не увенчались успехом - на кошках - все хорошо, а вот целиком все - совсем плохо, поэтому я принимаю, как данность, время сборки всего проекта в 45 минут...

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

Спасибо

ИИВ
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01355 секунд с 7
ELECTRONIX ©2004-2016