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

 
 
> Spartan6/Coregen/ BRAM memory, CoreGen выдает ошибку (version 13.1)
BlackOps
сообщение Jul 14 2011, 03:24
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Нужно сгенерить такую память: ширина данных 1024 бита, глубина 2048 элементов (Для обоих портов А и В). Тип: True Dual Port Ram, с возможностью побайтовой записи в каждый адрес (8 бит).

Во время настройки блока памяти, в коргене соблюдаю лимиты указанные в интерфейсе, и тем не менее после того как нажал кнопку сгенерить память он выдает:
ERROR:sim - Process will terminate. For technical support on this issue, please open a WebCase with this project attached at http://www.xilinx.com/support.
ERROR:sim - Failed executing Tcl generator.


Непонятно это баг, или данная память не допустима.. думаю стоит может вручную слепить из примитивов.


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
des00
сообщение Jul 14 2011, 03:28
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(BlackOps @ Jul 13 2011, 22:24) *
думаю стоит может вручную слепить из примитивов.

лучше скопипастить врапер из корегена и вставить его ручками.


--------------------
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jul 14 2011, 03:59
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(des00 @ Jul 14 2011, 08:28) *
лучше скопипастить врапер из корегена и вставить его ручками.

А как же быть с ngc и xco файлами? они ведь не генерятся если корген ошибку такую дает, а для ISE проекта ведь их надо вставить?


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 14 2011, 04:09
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(BlackOps @ Jul 13 2011, 21:59) *
А как же быть с ngc и xco файлами? они ведь не генерятся если корген ошибку такую дает, а для ISE проекта ведь их надо вставить?

на примере дсп


--------------------
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Jul 14 2011, 07:53
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(BlackOps @ Jul 14 2011, 06:24) *
Нужно сгенерить такую память: ширина данных 1024 бита, глубина 2048 элементов (Для обоих портов А и В). Тип: True Dual Port Ram, с возможностью побайтовой записи в каждый адрес (8 бит).

Во время настройки блока памяти, в коргене соблюдаю лимиты указанные в интерфейсе, и тем не менее после того как нажал кнопку сгенерить память он выдает:
ERROR:sim - Process will terminate. For technical support on this issue, please open a WebCase with this project attached at http://www.xilinx.com/support.
ERROR:sim - Failed executing Tcl generator.


Непонятно это баг, или данная память не допустима.. думаю стоит может вручную слепить из примитивов.

128 блоков памяти объединить в один? Не слабо. А чем ddr внешний плох?
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jul 15 2011, 02:19
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(dmitry-tomsk @ Jul 14 2011, 12:53) *
128 блоков памяти объединить в один? Не слабо. А чем ddr внешний плох?

Тем что архитектура его не подходит приложению.


des00: Я посмотрел тот пример DSP где Вы помогли справится с аналогичной задачей, старался ему проследовать но не получается. Вот что имею:

1.
вам нужно добраться до компонента XilinxCoreLib.mult_gen_v11_2(behavioral) и посмотреть что именно оно вставляет.

В моем случае это XilinxCoreLib.blk_mem_gen_v6_1(behavioral), добрался я до него, файлы лежат в папке C:\Xilinx\13.1\ISE_DS\ISE\vhdl\src, а именно следующие .VHD файлы:
BLK_MEM_GEN_V6_1 - файл описания модели для симуляции
BLK_MEM_GEN_V6_1_comp - описание компонента
BLK_MEM_GEN_V6_1_xst - враппер для модели
BLK_MEM_GEN_V6_1_xst_comp - враппер для компонента модели


2. Я также посмотрел описание данного типа памяти и ВСЕХ его параметров, все настроил как мне надо.


Но при реализации проекта выдается следующая ошибка:
Код
ERROR:NgdBuild:604 - logical block 'system_memory' with type 'sysmem' could not
   be resolved. A pin name misspelling can cause this, a missing edif or ngc
   file, case mismatch between the block name and the edif or ngc file name, or
   the misspelling of a type name. Symbol 'sysmem' is not supported in target
   'spartan6'.


Как видите для того чтобы реализовать проект всеравно требуется ngc файл.. или это все надо делать как то по другому?

Дело в том что сам элемент blk_mem_gen_v6_1 это модель для симуляции и все. Единстненное что увидел в файле BLK_MEM_GEN_V6_1_comp в конце вот это:


Код
-- The following tells XST that blk_mem_gen_v6_1 is a black box which  
  -- should be generated command given by the value of this attribute
  -- Note the fully qualified SIM (JAVA class) name that forms the
  -- basis of the core

  -- xcc exclude
  ATTRIBUTE box_type : STRING;
  ATTRIBUTE generator_default : STRING;
  ATTRIBUTE box_type OF blk_mem_gen_v6_1 : COMPONENT IS "black_box";
  ATTRIBUTE generator_default OF blk_mem_gen_v6_1 : COMPONENT IS
    "generatecore com.xilinx.ip.blk_mem_gen_v6_1.blk_mem_gen_v6_1";
  -- xcc include


Может это надо как то использовать... что скажите?


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 15 2011, 03:52
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(BlackOps @ Jul 14 2011, 20:19) *
Может это надо как то использовать... что скажите?

у меня нет под рукой ничего хилого что бы проверить. но я бы действовал так, взял документик spartan6 library guide нашел какие именно примитивы вставляет исе, потом раскопал бы по сорцам в какую обертку хилые завернули этот блок памяти и использовал его %)

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


--------------------
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jul 15 2011, 04:28
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(des00 @ Jul 15 2011, 08:52) *
потом раскопал бы по сорцам в какую обертку хилые завернули этот блок памяти и использовал его %)

это понятно, а как быть с ngc файлом? без него то синтеза не будет?



--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 15 2011, 05:06
Сообщение #9


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(BlackOps @ Jul 14 2011, 23:28) *
это понятно, а как быть с ngc файлом? без него то синтеза не будет?

с чего не будет то ? обертка вставляет технологические примитивы + логику, ISE разучился их вставлять ?


--------------------
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jul 19 2011, 01:43
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(des00 @ Jul 15 2011, 10:06) *
с чего не будет то ? обертка вставляет технологические примитивы + логику, ISE разучился их вставлять ?

Ну вобщем в описании библиотек Спартан6 есть элементы так называемые макросы, и приводится пример как их в коде инстанциировать. Так и сделал все сработало.

Единственное что в мануале говоритсся что надо вставлять библиотеку:
library unisim;
use unisim.vcomponents.all;


но это видимо опечатка, т.к. ISIM не компилирует и не понимает эти макросы. А вставлять надо вот это:

Library UNIMACRO;
use UNIMACRO.vcomponents.all;


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
rloc
сообщение Jul 19 2011, 06:59
Сообщение #11


Узкополосный широкополосник
******

Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462



Цитата(BlackOps @ Jul 14 2011, 07:24) *
Нужно сгенерить такую память: ширина данных 1024 бита, глубина 2048 элементов (Для обоих портов А и В). Тип: True Dual Port Ram, с возможностью побайтовой записи в каждый адрес (8 бит).

Проще самому в цикле вставить примитивы блочной памяти RAMB16
Код
<LABEL_1>:
   for <name> in <lower_limit> to <upper_limit> generate
      begin
         <statement>;
         <statement>;
   end generate;
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jul 19 2011, 17:07
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(des00 @ Jul 14 2011, 11:09) *

Прокатывает только для примитивов нижнего уровня (типа DSP блока). В случае более высокоуровнего элемента (генератора блочной памяти) нужно
генерить *.NGC. Без *.ngc - только синтез (ему вообще ничего не надо, ибо там ссылка на black box) и симуляция. Для имплементации - надо NGC.
Здесь Вам не Альтера sm.gif)

Ну либо собирать руками из примитивов для памяти самого нижнего уровня. Самый эффективный и трудоёмкий путь.Но без труда, как известно не вытащишь
рыбку из пруда.
Go to the top of the page
 
+Quote Post
Krys
сообщение Oct 27 2014, 05:21
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Не совсем так. Решение есть: http://electronix.ru/forum/index.php?s=&am...t&p=1287902


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
iosifk
сообщение Oct 27 2014, 07:37
Сообщение #14


Гуру
******

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



Цитата(Bad0512 @ Jul 19 2011, 21:07) *
Ну либо собирать руками из примитивов для памяти самого нижнего уровня. Самый эффективный и трудоёмкий путь.Но без труда, как известно не вытащишь рыбку из пруда.

Я в этом вообще проблем не вижу. Берете блочную память "тонкими полосками"... Т.е. ширину входной шины данных делите на число блоков память.
Адреса, чтение, записи, клоки - у них общие. А вот только данные из входной шины и выходные данные назначаются каждой полоске свои. Но тут если руками лень, то "generate" вполне справится... И тогда не нужны мультиплексоры по данным, что требует меньше логики и быстрее работает...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Krys
сообщение Oct 27 2014, 09:53
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



К стати, раз уж пошла такая пьянка, а не проще ли вообще память на RTL описать в виде массива? Синтезаторы сейчас умные, если правильно описывать, то понимают, что это должно быть. Как правильно описывать говорится в xst.pdf


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:51
Рейтинг@Mail.ru


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