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

 
 
 
Reply to this topicStart new topic
> Carry chain in CycloneII, Проблема уговорить синтезатор QII
Andy-P
сообщение Oct 2 2007, 07:33
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 21-10-04
Пользователь №: 943



Две комбинаторные логические функции (не сумматор) описаны с использованием CARRY_SUM буферов. Если девайсами установлены что-либо из ACEX1 или Cyclone, синтезатор не игнорирует эти буферы и все получается, как задумано, а если CycloneII – игнорирует и синтезит эти две функции на отдельных ячейках. Никакими средствами пока не удалось уговорить QII 7.1SP1. Разумеется, логическая опция Ignore CARRY Buffers = Off.
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 2 2007, 07:43
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Andy-P @ Oct 2 2007, 14:33) *
Две комбинаторные логические функции (не сумматор) описаны с использованием CARRY_SUM буферов. Если девайсами установлены что-либо из ACEX1 или Cyclone, синтезатор не игнорирует эти буферы и все получается, как задумано, а если CycloneII – игнорирует и синтезит эти две функции на отдельных ячейках. Никакими средствами пока не удалось уговорить QII 7.1SP1. Разумеется, логическая опция Ignore CARRY Buffers = Off.

Попробуйте законстрейнить путь, по которому идет перенос. Вам же по сути не размещение нужно, а скорость переноса. Задайте ограничение по времени на этот сигнал, синтезатор вынужден будет сам оптимизировать размещение.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Andy-P
сообщение Oct 2 2007, 08:24
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 21-10-04
Пользователь №: 943



Цитата(dxp @ Oct 2 2007, 10:43) *
Попробуйте законстрейнить путь, по которому идет перенос. Вам же по сути не размещение нужно, а скорость переноса. Задайте ограничение по времени на этот сигнал, синтезатор вынужден будет сам оптимизировать размещение.

По мере ужесточения констрейна по времени распространения, QII ужимал тайминг без использования переноса, а затем сдался, но так и не задействовал перенос.
Go to the top of the page
 
+Quote Post
_LD
сообщение Oct 2 2007, 12:08
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 837



Моя переписка с Альтерой по этому поводу

*************************************************

Request No: 10563516 Status: Closed
Date Opened (PDT): 10/9/2006 05:48 PM
Date Closed (PDT): 10/20/2006 02:11 AM
Device Family: CYCLONE II Device: EP2C5Q208I8N
Request Title: Quartus II Synthesizer ignores carry chains
for Cyclone II family
Steps to Reproduce
/ Description: My software is Quartus II build 202 SP1

I have written the simple AHDL module (the 8-bit comparator)
(AHDL text placed at the end of the letter).

When I try to implement this module into Cyclone II device
(e.g. EP2C5),
the Quartus II Synthesizer reports me that "Ignored 8 CARRY
buffer(s)", and the fitter builds the logic without
carry-chain.

When I try to implement this module into Cyclone or Acex1K
device,
the synthesizer accepts my logic "as is", i.e. builds the
carry-chain logic.

In the project option/assignments I change ONLY target
device. If I try to implement a simple LPM_COUNTER instead
of my module with the same options in the same project, the
synthesizer and fitter implement the carry-chain
independently of device family.

How can I force the Quartus II software to build the
carry-chain logic in my module?

Thank you in advance.

subdesign cmp_8
(
A[7..0] : input;
B[7..0] : input;
EQ : output;
)

variable
cry[7..0] : carry;
begin
cry[].in = ( A[] !$ B[] ) & (Cry[6..0].out, vcc);
EQ = cry[7].out;
end;


******************************************************

10/10/2006 01:27 AM To Customer Hi,

This is a software bug. It will be corrected in the future
release. You could implement a comparator in Verilog/VHDL,
but whether the comparator use carry chain or not dependent
on the comparator writing style. Please refer to a
comparator example in attachment.

Best regards,
Harold


module carrychain(input [7:0] a,input [7:0] b, output eq);
wire [8:0] c;
assign c = {1'b0,a} - {1'b0,b};
assign eq = c[8];

//assign eq = (a==cool.gif;
//this kind of style is not using carry chain,but implemented in more less LEs.
endmodule

************************************************************


2/18/2007 09:58 PM To Customer Hi Dmitry,

Thanks for using MySupport.

I have searched the related database. It is a regret that
this issue is not in top priority since Verilog and VHDL
have supported carry chain implementation.

If the carry chain block is just a sub-module in your whole
design, you could use Verilog/VHDL for this sub-module, and
Quartus II can support mixed language.

Thank you and have a nice day.

Best Regards,
Amanda


************************************************************


2/19/2007 03:14 PM From Customer
You wrote:

> It is a regret that this issue is not in top priority
since Verilog and
> VHDL have supported carry chain implementation

Not quite sad.gif

The new example (verilog) is placed at the end of the
letter. When I fit this module into Cyclone device, Quartus
II builds carry-chain; when I change the target device to
Cyclone II, Quartus II ignores carry-chain.

This module is the fast multiplexer. I want that this module
work AS FAST AS POSSIBLE (i.e. with carry!!!). AS I WROTE on
Verilog and AHDL! No pipeline is possible. No additional
LCELLs are possible.

This is offensive that your device (Cyclone II) can give me
that I want (according to datasheet), but your software
can't properly implement my simple construction into
Cyclone II chip.

How can I get WHAT I WANT, by means of ANY language?


module mx_4_1
(
input [3:0] D,
input [3:0] Sel,
output O
);

wire [3:0] Si;
wire [3:0] Ci;
wire [3:0] Co;
wire [3:0] So;

carry_sum Cry0
(.sin(Si[0]),.cin(Ci[0]),.sout(So[0]),.cout(Co[0]));
carry_sum Cry1
(.sin(Si[1]),.cin(Ci[1]),.sout(So[1]),.cout(Co[1]));
carry_sum Cry2
(.sin(Si[2]),.cin(Ci[2]),.sout(So[2]),.cout(Co[2]));
carry_sum Cry3
(.sin(Si[3]),.cin(Ci[3]),.sout(So[3]),.cout(Co[3]));

assign Si[2:0] = 0;
assign Ci[3] = 0;

assign Ci[0] = D[0] & Sel[0];
assign Ci[1] = (D[1] & Sel[1]) | Co[0];
assign Ci[2] = (D[2] & Sel[2]) | Co[1];
assign Si[3] = (D[3] & Sel[3]) | Co[2];

assign O = So[3];

endmodule

************************************************************
******

2/20/2007 11:54 PM To Customer Hi Dmitry,

I am sorry for the last confused reply. With the codes you
sent, I can reproduce the issue you mentioned.

After discussing with related people. This issue is caused
by two reasons. One is software reason, and a new bug report
has been issued. It is planed to fix in Quartus II 7.2.

Another is the hardware reason ---- the different structures
between Cyclone and Cyclone II. In fact, Cyclone’s carry
chain has better performance than Cyclone II’s. This is a
known issue of Cyclone II. For more information about the
carry chain, you could refer to the following links:
Page 6~7 of
http://www.altera.com/literature/hb/cyc2/cyc2_cii51002.pdf

page 8~10 of
http://www.altera.com/literature/hb/cyc/cyc_c51002.pdf

You can see that the carry chain in Cyclone II is shorter
than the one in Cyclone device. It makes software difficult
to implementing carry chain in Cyclone II.

If carry chain is a very important feature of your design,
we suggest you to use Cyclone device.

Sorry about this confusion, and thanks a lot for notifying
us about this. Currently, there is no workaround in Cyclone
II. If you encounter difficulty to meet performance of your
deisgn, we can help you from other aspects. For doing this,
we need the project file and the performance requirement.

Best Regards,
Amanda

************************************************************
******

2/21/2007 03:24 PM From Customer Hi Amanda,

Thank you for elucidation.

Now I know that this problem can't be solved using current
version of Quartus II, independently of language I write...

>You can see that the carry chain in Cyclone II is shorter
than the one in
>Cyclone device.

The length of carry-chain is not so important, I seldom use
>16.
Possibility of use the carry-chains where I want - that is
just the point.

I'll be waiting for new release of Quartus II software.

Best Regards,
Dmitry


************************************************************
******

2/21/2007 07:01 PM To Customer Hi Dmitry,

You are right that the length of carry chain is not the
excuse of the software issue. But it is the cause of the
bug. Related people are working on it.

The fix is planned in Quartus II 7.2.

I will set close-pending for this SR, and it will be closed
in couple of days if without update. If you have other
questions regarding our products, please issue a new one,
and a right people will work with you.

Thank you and have a nice day!

Best Regards,
Amanda
Go to the top of the page
 
+Quote Post
Andy-P
сообщение Oct 3 2007, 15:05
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 21-10-04
Пользователь №: 943



Благодарю, _LD! Вы избавили меня от подобной переписки с сапортом. Было у меня две гипотезы на эту тему: 1- баг QII (таки да!); 2 – LUT CycloneII в арифметическом режиме не поддерживают всех возможных логических функций трех переменных. Последняя возникла, как следствие реализации переноса синтезатором, как только логика была идентична сумматору. Но это удалось проверить, так что уже думал писать в сапорт, хотя опыт общения с ними исключительно отрицательный, чего не скажешь о Вашем запросе.

Когда-то я уже имел подобную проблему, правда, задача синтезатору была еще сложнее: компаратор с двумя выходами: больше и равно, - реализовать на одном наборе ячеек с использованием переноса и каскадирования в ACEX1K. QII не справился, а MAX+PLUSII – смог! Надеется на новую версию QII смысла не было, поскольку в новых семействах от каскадирования отказались, а в поддержку стареющего ACEX1K не инвестировали.

QII 7.2 уже официально объявлен, так что, как говорил Верещагин (к/ф «Белое солнце …»), давая прикурить зажженной толовой шашкой: «Посмотрим - какой это Сухов».
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:05
Рейтинг@Mail.ru


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