Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: EPF10K50SQC240
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
addi II
Приветствую, коллеги!
Жизнь заставила работать с таким чудом науки и техники как отечественная ПЛИС wacko.gif
По заявлению производителя это полный аналог древней альтеры EPF10K50SQC240
Согласно документации на альтеру, ПЛИС содержит внутри блочную память, так называемый EAB в количестве 10 шт
Очень уж и уже хочеться ее использовать генерируя память из RTL
В качестве синтезатора использую Synplify 2009, крайнюю версию поддерживающее сиё чудо техники
Делаю все по примерам из референс мануал Synplify, но ничего не выходит
Компайлер говорит что нашел блочную память типа RAM, но маппер размазывает все на регистрах smile3046.gif
Прошу знающих избавить от страданий, как все же сгенерировать RAM из RTL ?


help.gif

Код
module ram_test(q, a, d, we, clk);
output reg [7:0] q;
input [7:0] d;
input [6:0] a;
input we, clk;

reg [6:0] read_add=32,read_add_d;
reg [7:0] mem [127:0] /* synthesis syn_ramstyle="block_ram" */;

always @(posedge clk) read_add_d <= read_add;

always @(posedge clk) begin
    if(we)
        //Register RAM data and read address
        mem[read_add_d] <= d;
        read_add <= a;
    end
    
always @(posedge clk) q <= mem[read_add_d];

----------------------------------------------------------------------------------
@N: MF135 :"e:\bram_test\frontend\rtl\components\bram\sdp_ram_rtl.sv":12:0:12:5|Found RAM, 'mem[7:0]', 128 words by 8 bits
@W:"e:\bram_test\frontend\rtl\components\bram\sdp_ram_rtl.sv":12:0:12:5|Ram mem[7:0] will be mapped into logic and will consume around 1024 register resources.

----------------------------------------------------------------------------------
Total LUTs:  1904 of 2880 (66%)
Logic resources:  1904 LCs of 2880 (66%)
Number of Nets:   1939
Number of Inputs: 8464
Register bits:    1048 (1024 using enable)
EABs:             0  (0% of 10)
I/O cells:       25
iosifk
Цитата(addi II @ Jan 17 2018, 17:22) *
Приветствую, коллеги!
Жизнь заставила работать с таким чудом науки и техники как отечественная ПЛИС wacko.gif
По заявлению производителя это полный аналог древней альтеры EPF10K50SQC240


http://quartushelp.altera.com/14.1/mergedP...og_file_dir.htm

Ну и часть текста оттуда - где ramstyle:
For example, in the following code, the ramstyle synthesis attribute specifies that the inferred RAM my_ram should be implemented using an M512 memory block:
(* ramstyle = "M512" *) reg [0:7] my_ram[0:63];

Note: You can also embed the ramstyle synthesis attribute in a comment following the Variable Declaration of an inferred RAM, as shown in the following code:
reg [0:7] my_ram[0:63] /* synthesis ramstyle = "M512" */;
addi II
Цитата(iosifk @ Jan 17 2018, 14:26) *
http://quartushelp.altera.com/14.1/mergedP...og_file_dir.htm

Ну и часть текста оттуда - где ramstyle:
For example, in the following code, the ramstyle synthesis attribute specifies that the inferred RAM my_ram should be implemented using an M512 memory block:
(* ramstyle = "M512" *) reg [0:7] my_ram[0:63];

Note: You can also embed the ramstyle synthesis attribute in a comment following the Variable Declaration of an inferred RAM, as shown in the following code:
reg [0:7] my_ram[0:63] /* synthesis ramstyle = "M512" */;

Спасибо за поддержку!!!
Для Synplify атрибут задается именно как /* synthesis syn_ramstyle="block_ram" */;
Пробовал этот атрибут, а так же altera_use_eab=1 задавать в sdc файле.
В логах пишет, что он нашел sdc и подцепил оба атрибута.
Но в итоге все равно лепит на регистрах...
iosifk
Цитата(addi II @ Jan 17 2018, 17:48) *
Спасибо за поддержку!!!
Для Synplify атрибут задается именно как /* synthesis syn_ramstyle="block_ram" */;
Пробовал этот атрибут, а так же altera_use_eab=1 задавать в sdc файле.
В логах пишет, что он нашел sdc и подцепил оба атрибута.
Но в итоге все равно лепит на регистрах...

Я чтобы не вляпываться вот в такие чудеса применяю Ксайлинсовские блоки памяти как инстансы. У них это лучше чем у Альтеры, есть библиотека инстаансов и там все варианты расписаны с примерами...
Но и здесь, если сгенерить визардом память, то ее же можно потом применить как инстанс.... И тогда Вы уже точно не будете зависеть от прихоти синтезатора...
Flip-fl0p
Посмотрите настройки. Возможно где-то стоит галка использовать вместо памяти регистры...
iosifk
Цитата(iosifk @ Jan 17 2018, 18:02) *
Я чтобы не вляпываться вот в такие чудеса применяю Ксайлинсовские блоки памяти как инстансы. У них это лучше чем у Альтеры, есть библиотека инстаансов и там все варианты расписаны с примерами...
Но и здесь, если сгенерить визардом память, то ее же можно потом применить как инстанс.... И тогда Вы уже точно не будете зависеть от прихоти синтезатора...

И добавлю. Память теоретически может не иметь латентности. А блочная память, выполненная аппаратно на кристалле может иметь латентность в 1 клок или в 2 клока. Так вот, из "обобщенного" описания видно что 1 клок... Вы это учитываете?
warrior-2001
В Precision Synthesis есть параметр Don't Touch Settings. На все мегафункции, сгенерированные в Quartus или Vivado я ставлю этот атрибут и указанный IP блок не модифицируется, рассматриваясь как Black Box!
Думаю, что нечто похожее есть и в Synplify.
bogaev_roman
Цитата(addi II @ Jan 17 2018, 17:22) *
Компайлер говорит что нашел блочную память типа RAM, но маппер размазывает все на регистрах smile3046.gif
Прошу знающих избавить от страданий, как все же сгенерировать RAM из RTL ?
-
Результат работы синтезатора и фиттера Вашего кода для квартуса 9.0 и EPF10K200SRC240 - двухпортовая память 8*128. На post-mapping это 8 сегментов altdpram.
addi II
Цитата(bogaev_roman @ Jan 18 2018, 08:44) *
-
Результат работы синтезатора и фиттера Вашего кода для квартуса 9.0 и EPF10K200SRC240 - двухпортовая память 8*128. На post-mapping это 8 сегментов altdpram.

Спасибо!!, для этой микросхемы действительно внутренняя память используется, но тот же код для необходимой - 0 EAB laughing.gif
bogaev_roman
Цитата(addi II @ Jan 18 2018, 12:10) *
Спасибо!!, для этой микросхемы действительно внутренняя память используется, но тот же код для необходимой - 0 EAB laughing.gif

Поменял на 50SQ - один EABs (в resource section в fitter report). У Вас точно в проекте больше ничего нет, а то может все EABs сжираются другой логикой?
addi II
Цитата(bogaev_roman @ Jan 18 2018, 09:52) *
Поменял на 50SQ - один EABs (в resource section в fitter report). У Вас точно в проекте больше ничего нет, а то может все EABs сжираются другой логикой?

twak.gif
Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет
Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу..
bogaev_roman
Цитата(addi II @ Jan 18 2018, 15:43) *
twak.gif
Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет
Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу..

Ну, собственно, тогда вернулись к Вашему первому посту - проблемы в трансляции синпливай. С точки зрения RTL-описания все верно, раз квартус синтезирует и разводит все согласно задуманному. Может там отсутствует или не поддерживается библиотека EAB (это же не просто ram/rom, а еще и дополнительные триггеры и мультиплексоры и, как я понял, может быть асинхронной, ну т.е.существенно отличается от привычных M9K или М144К).
EugeneS
QUOTE (addi II @ Jan 18 2018, 15:43) *
twak.gif
Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет
Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу..


Просто используй LPM блок csdpram
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.