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

 
 
 
Reply to this topicStart new topic
> EPF10K50SQC240, как на verilog работать с внутренней RAM
addi II
сообщение Jan 17 2018, 14:22
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 271
Регистрация: 1-02-16
Пользователь №: 90 294



Приветствую, коллеги!
Жизнь заставила работать с таким чудом науки и техники как отечественная ПЛИС 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
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 17 2018, 14:26
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 3 954
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(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" */;


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
addi II
сообщение Jan 17 2018, 14:48
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 271
Регистрация: 1-02-16
Пользователь №: 90 294



Цитата(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 и подцепил оба атрибута.
Но в итоге все равно лепит на регистрах...
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 17 2018, 15:02
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 3 954
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



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

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


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 17 2018, 15:27
Сообщение #5


В поисках себя...
****

Группа: Свой
Сообщений: 670
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Посмотрите настройки. Возможно где-то стоит галка использовать вместо памяти регистры...
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 17 2018, 19:21
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 3 954
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



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

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


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Jan 18 2018, 07:59
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 364
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



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


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jan 18 2018, 08:44
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 082
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(addi II @ Jan 17 2018, 17:22) *
Компайлер говорит что нашел блочную память типа RAM, но маппер размазывает все на регистрах smile3046.gif
Прошу знающих избавить от страданий, как все же сгенерировать RAM из RTL ?
-
Результат работы синтезатора и фиттера Вашего кода для квартуса 9.0 и EPF10K200SRC240 - двухпортовая память 8*128. На post-mapping это 8 сегментов altdpram.
Go to the top of the page
 
+Quote Post
addi II
сообщение Jan 18 2018, 09:10
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 271
Регистрация: 1-02-16
Пользователь №: 90 294



Цитата(bogaev_roman @ Jan 18 2018, 08:44) *
-
Результат работы синтезатора и фиттера Вашего кода для квартуса 9.0 и EPF10K200SRC240 - двухпортовая память 8*128. На post-mapping это 8 сегментов altdpram.

Спасибо!!, для этой микросхемы действительно внутренняя память используется, но тот же код для необходимой - 0 EAB laughing.gif
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jan 18 2018, 09:52
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 082
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



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

Поменял на 50SQ - один EABs (в resource section в fitter report). У Вас точно в проекте больше ничего нет, а то может все EABs сжираются другой логикой?
Go to the top of the page
 
+Quote Post
addi II
сообщение Jan 18 2018, 12:43
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 271
Регистрация: 1-02-16
Пользователь №: 90 294



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

twak.gif
Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет
Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу..
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jan 18 2018, 14:02
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 082
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



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

Ну, собственно, тогда вернулись к Вашему первому посту - проблемы в трансляции синпливай. С точки зрения RTL-описания все верно, раз квартус синтезирует и разводит все согласно задуманному. Может там отсутствует или не поддерживается библиотека EAB (это же не просто ram/rom, а еще и дополнительные триггеры и мультиплексоры и, как я понял, может быть асинхронной, ну т.е.существенно отличается от привычных M9K или М144К).
Go to the top of the page
 
+Quote Post
EugeneS
сообщение Jan 24 2018, 13:28
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 180
Регистрация: 28-08-04
Пользователь №: 557



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


Просто используй LPM блок csdpram
Go to the top of the page
 
+Quote Post

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

 


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


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