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

    

EPF10K50SQC240

Приветствую, коллеги!

Жизнь заставила работать с таким чудом науки и техники как отечественная ПЛИС :wacko:

По заявлению производителя это полный аналог древней альтеры EPF10K50SQC240

Согласно документации на альтеру, ПЛИС содержит внутри блочную память, так называемый EAB в количестве 10 шт

Очень уж и уже хочеться ее использовать генерируя память из RTL

В качестве синтезатора использую Synplify 2009, крайнюю версию поддерживающее сиё чудо техники

Делаю все по примерам из референс мануал Synplify, но ничего не выходит

Компайлер говорит что нашел блочную память типа RAM, но маппер размазывает все на регистрах :smile3046:

Прошу знающих избавить от страданий, как все же сгенерировать RAM из RTL ?

 

 

:help:

 

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

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


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

Жизнь заставила работать с таким чудом науки и техники как отечественная ПЛИС :wacko:

По заявлению производителя это полный аналог древней альтеры 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" */;

 

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


Ссылка на сообщение
Поделиться на другие сайты
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 и подцепил оба атрибута.

Но в итоге все равно лепит на регистрах...

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


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

Для Synplify атрибут задается именно как /* synthesis syn_ramstyle="block_ram" */;

Пробовал этот атрибут, а так же altera_use_eab=1 задавать в sdc файле.

В логах пишет, что он нашел sdc и подцепил оба атрибута.

Но в итоге все равно лепит на регистрах...

Я чтобы не вляпываться вот в такие чудеса применяю Ксайлинсовские блоки памяти как инстансы. У них это лучше чем у Альтеры, есть библиотека инстаансов и там все варианты расписаны с примерами...

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

 

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


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

Посмотрите настройки. Возможно где-то стоит галка использовать вместо памяти регистры...

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


Ссылка на сообщение
Поделиться на другие сайты
Я чтобы не вляпываться вот в такие чудеса применяю Ксайлинсовские блоки памяти как инстансы. У них это лучше чем у Альтеры, есть библиотека инстаансов и там все варианты расписаны с примерами...

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

И добавлю. Память теоретически может не иметь латентности. А блочная память, выполненная аппаратно на кристалле может иметь латентность в 1 клок или в 2 клока. Так вот, из "обобщенного" описания видно что 1 клок... Вы это учитываете?

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


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

В Precision Synthesis есть параметр Don't Touch Settings. На все мегафункции, сгенерированные в Quartus или Vivado я ставлю этот атрибут и указанный IP блок не модифицируется, рассматриваясь как Black Box!

Думаю, что нечто похожее есть и в Synplify.

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


Ссылка на сообщение
Поделиться на другие сайты
Компайлер говорит что нашел блочную память типа RAM, но маппер размазывает все на регистрах :smile3046:

Прошу знающих избавить от страданий, как все же сгенерировать RAM из RTL ?

-

Результат работы синтезатора и фиттера Вашего кода для квартуса 9.0 и EPF10K200SRC240 - двухпортовая память 8*128. На post-mapping это 8 сегментов altdpram.

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


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

Результат работы синтезатора и фиттера Вашего кода для квартуса 9.0 и EPF10K200SRC240 - двухпортовая память 8*128. На post-mapping это 8 сегментов altdpram.

Спасибо!!, для этой микросхемы действительно внутренняя память используется, но тот же код для необходимой - 0 EAB :laughing:

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


Ссылка на сообщение
Поделиться на другие сайты
Спасибо!!, для этой микросхемы действительно внутренняя память используется, но тот же код для необходимой - 0 EAB :laughing:

Поменял на 50SQ - один EABs (в resource section в fitter report). У Вас точно в проекте больше ничего нет, а то может все EABs сжираются другой логикой?

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


Ссылка на сообщение
Поделиться на другие сайты
Поменял на 50SQ - один EABs (в resource section в fitter report). У Вас точно в проекте больше ничего нет, а то может все EABs сжираются другой логикой?

:twak:

Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет

Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу..

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


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

Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет

Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу..

Ну, собственно, тогда вернулись к Вашему первому посту - проблемы в трансляции синпливай. С точки зрения RTL-описания все верно, раз квартус синтезирует и разводит все согласно задуманному. Может там отсутствует или не поддерживается библиотека EAB (это же не просто ram/rom, а еще и дополнительные триггеры и мультиплексоры и, как я понял, может быть асинхронной, ну т.е.существенно отличается от привычных M9K или М144К).

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


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

Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет

Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу..

 

Просто используй LPM блок csdpram

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация