addi II 0 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба Приветствую, коллеги! Жизнь заставила работать с таким чудом науки и техники как отечественная ПЛИС По заявлению производителя это полный аналог древней альтеры EPF10K50SQC240 Согласно документации на альтеру, ПЛИС содержит внутри блочную память, так называемый EAB в количестве 10 шт Очень уж и уже хочеться ее использовать генерируя память из RTL В качестве синтезатора использую Synplify 2009, крайнюю версию поддерживающее сиё чудо техники Делаю все по примерам из референс мануал Synplify, но ничего не выходит Компайлер говорит что нашел блочную память типа RAM, но маппер размазывает все на регистрах :smile3046: Прошу знающих избавить от страданий, как все же сгенерировать RAM из RTL ? 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 3 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба Приветствую, коллеги! Жизнь заставила работать с таким чудом науки и техники как отечественная ПЛИС По заявлению производителя это полный аналог древней альтеры 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 0 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба 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 3 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба Спасибо за поддержку!!! Для Synplify атрибут задается именно как /* synthesis syn_ramstyle="block_ram" */; Пробовал этот атрибут, а так же altera_use_eab=1 задавать в sdc файле. В логах пишет, что он нашел sdc и подцепил оба атрибута. Но в итоге все равно лепит на регистрах... Я чтобы не вляпываться вот в такие чудеса применяю Ксайлинсовские блоки памяти как инстансы. У них это лучше чем у Альтеры, есть библиотека инстаансов и там все варианты расписаны с примерами... Но и здесь, если сгенерить визардом память, то ее же можно потом применить как инстанс.... И тогда Вы уже точно не будете зависеть от прихоти синтезатора... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба Посмотрите настройки. Возможно где-то стоит галка использовать вместо памяти регистры... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба Я чтобы не вляпываться вот в такие чудеса применяю Ксайлинсовские блоки памяти как инстансы. У них это лучше чем у Альтеры, есть библиотека инстаансов и там все варианты расписаны с примерами... Но и здесь, если сгенерить визардом память, то ее же можно потом применить как инстанс.... И тогда Вы уже точно не будете зависеть от прихоти синтезатора... И добавлю. Память теоретически может не иметь латентности. А блочная память, выполненная аппаратно на кристалле может иметь латентность в 1 клок или в 2 клока. Так вот, из "обобщенного" описания видно что 1 клок... Вы это учитываете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба В Precision Synthesis есть параметр Don't Touch Settings. На все мегафункции, сгенерированные в Quartus или Vivado я ставлю этот атрибут и указанный IP блок не модифицируется, рассматриваясь как Black Box! Думаю, что нечто похожее есть и в Synplify. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба Компайлер говорит что нашел блочную память типа RAM, но маппер размазывает все на регистрах :smile3046: Прошу знающих избавить от страданий, как все же сгенерировать RAM из RTL ? - Результат работы синтезатора и фиттера Вашего кода для квартуса 9.0 и EPF10K200SRC240 - двухпортовая память 8*128. На post-mapping это 8 сегментов altdpram. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба - Результат работы синтезатора и фиттера Вашего кода для квартуса 9.0 и EPF10K200SRC240 - двухпортовая память 8*128. На post-mapping это 8 сегментов altdpram. Спасибо!!, для этой микросхемы действительно внутренняя память используется, но тот же код для необходимой - 0 EAB :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба Спасибо!!, для этой микросхемы действительно внутренняя память используется, но тот же код для необходимой - 0 EAB :laughing: Поменял на 50SQ - один EABs (в resource section в fitter report). У Вас точно в проекте больше ничего нет, а то может все EABs сжираются другой логикой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
addi II 0 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба Поменял на 50SQ - один EABs (в resource section в fitter report). У Вас точно в проекте больше ничего нет, а то может все EABs сжираются другой логикой? :twak: Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба :twak: Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу.. Ну, собственно, тогда вернулись к Вашему первому посту - проблемы в трансляции синпливай. С точки зрения RTL-описания все верно, раз квартус синтезирует и разводит все согласно задуманному. Может там отсутствует или не поддерживается библиотека EAB (это же не просто ram/rom, а еще и дополнительные триггеры и мультиплексоры и, как я понял, может быть асинхронной, ну т.е.существенно отличается от привычных M9K или М144К). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeneS 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба :twak: Да уж..., прошу прощения я выбирал по старинке ХС1 EPF10K50RC240, с EPF10K50SQC240 в квартусе проблем нет Но в моем синтезаторе Synplify Pro 2009 EPF10K50SQC240 нет(..., я бы не хотел привязываться к квартусу.. Просто используй LPM блок csdpram Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться