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

Проблема в Spartan3/3e

При попытке использвания в проекте эл-та RAM32x1D (для Спартана3 - примитив) возникает проблема - маппер не может упаковать этот эл-т в микросхему - вываливается с ошибкой "MapLib:662 Problem netlisting input design". Использую ISE 8.1.03. Элемент в VHDL-код вставляется в соответствии с Libraries guide. Кто-нибудь сталкивался с такой проблемой?

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


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

Сталкивался. Точно причину не искали, так как быстро нашли эквивалентный обход в виде двух элементов 16X1D. Если приблизительно - то 32X1D - это два LUT, и если полученные цепи частично упрощаются (например, описана там шина и некоторые ее разряды не используются), то маппер сплющивает. У нас конкретно из похожих (64Х1D) был набран большой блок (256Х32), чтобы его в Spartan-3 подпихать поближе к нужному месту, а то блочная память там только по краям кристалла. Ну и из этих 32 разрядов посередине нексколько штук оптимизировались (в памяти хранились битовые поля, некоторые биты которых не использовались). Сообщение об ошибке было точно такое, как Вы написали.

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


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

Хотелось бы все же по хорошему ISE уговорить. Попробую полазить по их сайту - может найду чего. Кстати, действительно, если поменять используемые элементы на RAM16X1D, то все O'k, также все замечательно, если поменять семейство на Virtex2 (от которого Spartan3 и произошел).

Если у кого есть конструктивные идеи решения проблемы, буду признателен. Сам что придумаю - отпишусь.

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


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

Полазил, блин. Оказывается такой тип памяти как примитив в Спартане3 не поддерживается вовсе, судя по xapp464. Вот собаки страшные, а в Libraries guide слабо это было правильно описать!!! Теперь придется думать, как это объехать.

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


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

хмм а почему не просто написать на бехавор уровне и скормить XST ?

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


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

хмм а почему не просто написать на бехавор уровне и скормить XST ?

 

А потому что лень доку посмотреть.

 

The distributed memory module is used to create memory

structures using the Select-RAM. It can be used to create

read-only memory (ROM), single-port random-access

memory (RAM), pseudo dual-port RAM and SRL16-based

RAM with data widths up to 1024 bits and depths up to

65536 words. Options are available for simple registering of

inputs and outputs in addition to variable pipelining capabilities.

Optional asynchronous and synchronous resets are

available for the output registers. Optionally, the module can

be generated as a relationally placed macro (RPM) or as

unplaced logic.

For timing information, please see the Xilinx Product Specification

for the specific architecture being targeted.

 

Xilinx CORE generator. Distributed Memory v7.1.

 

Все само делает, только нужные поля заполнить.

И не надо нигде "лазить" :blink:

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


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

Теперь придется думать, как это объехать.

А чем решение заменить на 16X1D является неконструктивным?

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


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

2 des00:

хмм а почему не просто написать на бехавор уровне и скормить XST ?

Возможно, так и попробую сделать, однако, имеются сомнения по поводу интеллекта синтезатора XST, по крайней мере раньше имелись проблемы с синтезом двухпортовой (только блочной) памяти.

 

2 gorby:

А потому что лень доку посмотреть.

Думаете, что Вы один такой умный? Просто стараюсь не пользоваться корегеном, так как возможны в будущем сложности при переходе на другие версии софта, а ВХДЛ-код - он и в Африке ВХДЛ-код. Оттуда обычно берется идея, и реализуется самостоятельно.

 

2 DmitryR:

А чем решение заменить на 16X1D является неконструктивным?

Да, в принципе, тоже вариант - два 16X1D и на выходе мультиплексор (по ТЗ фифо должно быть глубиной 31 слово). Не лучше и не хуже других.

 

Речь-то не о том, что это нельзя сделать, а об отношении господ из Ксайлинкса к разработчикам - указывать в документе, который уместно использовать для оперативной справки неверные сведения, что в конечном итоге приводит к значительным потерям времени.

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


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

2 gorby:

А потому что лень доку посмотреть.

Думаете, что Вы один такой умный? Просто стараюсь не пользоваться корегеном, так как возможны в будущем сложности при переходе на другие версии софта, а ВХДЛ-код - он и в Африке ВХДЛ-код. Оттуда обычно берется идея, и реализуется самостоятельно.

 

Речь-то не о том, что это нельзя сделать, а об отношении господ из Ксайлинкса к разработчикам - указывать в документе, который уместно использовать для оперативной справки неверные сведения, что в конечном итоге приводит к значительным потерям времени.

 

Дааа. Нечего возразить. А я-то и не знал, что кореген - западло. Только как сгенерил память, так и горя и не знаю. А вот Вы непонятно как делаете и время потеряли. Так кто здесь есть ХУ?

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

А Вы создаете супер-пупер высокоуровневое универсальное описание. Ну и на здоровье. только нечего плакаться потом и обижаться на "господ из Ксайлинкса".

 

А потом корабли до Марса не долетают... и господа - в Париже :cranky:

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


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

2 Gorby: :bb-offtopic: Зря обижаетесь, я просто ответил на укол про лень и не хотел Вас серьезно задеть. Считаю, что кореген лучше использовать тогда, когда без него реально не обойтись (PCI, EternetMAC и т.п.) - тут я с Вами полность согласен, что пытаться переплюнуть Ксайлинкс - занятие длительное и бесперспективное. А реализовать ту же память можно и без него - я вообще стараюсь ставить синтезатор в такие условия, чтобы у него меньше было простора для самодеятельности. И потом - в VHDL можно и примитивы использовать, что я в общем и пытался сделать, когда напоролся на описываемую каку. Бывает, что без примитивов никак не обойтись.

 

В общем - о вкусах не спорят.

Так что, мир, дружба, сосиска :cheers:

 

P.S. А для памяти сделал поведенческое описание - два процесса - и все дела. Единственнная проблема - пришлось синтезатору констрейном мозги вправить - а то он норовил эту память в BlockRAM запихать.

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


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

2 Gorby: :bb-offtopic: Зря обижаетесь, я просто ответил на укол про лень и не хотел Вас серьезно задеть. Считаю, что кореген лучше использовать тогда, когда без него реально не обойтись (PCI, EternetMAC и т.п.) - тут я с Вами полность согласен, что пытаться переплюнуть Ксайлинкс - занятие длительное и бесперспективное. А реализовать ту же память можно и без него - я вообще стараюсь ставить синтезатор в такие условия, чтобы у него меньше было простора для самодеятельности. И потом - в VHDL можно и примитивы использовать, что я в общем и пытался сделать, когда напоролся на описываемую каку. Бывает, что без примитивов никак не обойтись.

 

В общем - о вкусах не спорят.

Так что, мир, дружба, сосиска :cheers:

 

P.S. А для памяти сделал поведенческое описание - два процесса - и все дела. Единственнная проблема - пришлось синтезатору констрейном мозги вправить - а то он норовил эту память в BlockRAM запихать.

 

Да что-то накатило... Магнитные бури наверное. Приношу извинения за излишне резкий тон. В соседней ветке один молодой человек с DCMом воюет, не зная, как инстанцировать компонент на VHDL. Мне показалось, Вы тоже из тех кто "все знает". Рад, что ошибся. :cheers:

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


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

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...