Перейти к содержанию
    

Регистровый сумматор в acex1k

Вот пишу простейший код:

module adder(
    clock,
    in1,
    in2,
    out
);


    input clock;
    
    input [7:0] in1;
    input [7:0] in2;
    
    output [7:0] out;
    reg    [7:0] out;

    always @(posedge clock)
    begin
        out <= in1 + in2;
    end

endmodule

 

синтезю, и что же? 16 LE! При этом 8 LE - сам сумматор, а ещё 8 - регистры на его выходах.

 

Странно, вроде бы, судя по даташиту, в одной LE должны сочетаться arithmetic mode и триггер на выходе...

 

Попробовал играться семействами (чисто из интереса, нужно-то для acex'а всё равно): для некоторых так и остаётся 16 LE, для других (например, stratix и cyclone) - получается 8.

 

В чём тут "собака порылась"?

 

PS: квартус - 6.0 web edition

Изменено пользователем LordVader

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По умолчанию Квартус раскладывает асинхронную логику в одни ячейки, а регистры в другие. Для того чтобы этого не происходило ему нужно помочь. А именно: Assigments\Settings\Fitter Settings\More Settings\Auto Packed Registers -> On. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас оптимизация включена? Попробуйте оптимизировать по площади.

Ну это первое, куда я ткнулся. Было включено 'Area'.

 

По умолчанию Квартус раскладывает асинхронную логику в одни ячейки, а регистры в другие. Для того чтобы этого не происходило ему нужно помочь. А именно: Assigments\Settings\Fitter Settings\More Settings\Auto Packed Registers -> On. ;)

 

Не помогло.

 

Один очень шарящий чел не пожалел своего времени и разобрался. Говорит, что данную опцию фиттер в квартусе молча игнорирует. А чтобы всё-таки не 16 LE было, он поправил библиотечный файлик lpm_add_sub.tdf в недрах квартуса, заменив USE_CS_BUFFERS = 1 на 0.

Стало не 8, а 9, всё-таки, младший разряд отдельным LE генерится, а перенос с него - другим.

 

Интересно, чем альтеровцы думали, когда такое ваяли? :maniac:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем Квартусу семейство ACEX. Если это семейство нормально полддерживает MAX+

И в MAX+ получается 9LC при output [7:0] out; reg [7:0] out;

Может в 10 Квартусе и дойдут руки до семейства ACEX. В качестве бонуса для Вас.

 

Ошибочка вышла. Так правильно будет.

При output [8:0] out; reg [8:0] out;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, чем альтеровцы думали, когда такое ваяли?

Как вероятность только - желанием пересадить Вас с ACEX на Stratix, Cyclone и MAXII :-)

Хотя, по моим наблюдениям, для семейства MAX7000S, Квартус оптимизирует лучше, чем МАХ+. В смысле - расход LE меньше при равных настройках.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[Хотя, по моим наблюдениям, для семейства MAX7000S, Квартус оптимизирует лучше, чем МАХ+.

Зато для MAX7000S по моим наблюдениям он хуже синтезирует. Были ошибки в автоматах, битики не так как надо генерились, в отличие от Synplify и LeonardoSpectrum... Я лично не очень доволен работой квартуса с семйством 7000S... Плюс в хелпе есть глюки, связанные с этим семейством. Видимо, совсем они их не хотят поддерживать. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...