Цитата(cornflyer @ Oct 4 2007, 15:06)

Участвую в разработке большого проекта для FPGA Xilinx Spartan 3.
Мне поручили разработать модуль многоканального счетчика в виде RPM (Relationally Placed Macros).
Он должен быть в виде файла mcc.ngc
При финальной сборке проекта этот модуль не должен перекомпилироватся.
Т.е. его можно двигать внутри кристалла без изменения внутренней разводки этого модуля.
Теперь я знаю как это сделать....
Итак как я сделал RPM:
1. создал пустой проект top, добавил в проект свой модуль VHDL - mcc.vhd
2. создал графический элемент и поместил его в top.sch
3. порты модуля в файле top.ucf указал с аттрибутом S (SAVE), например:
NET "mcc_data(0)" S;
... и т.д.
иначе синтезатор выкинет всю логику
4. Настроил синтезатор:
Synthesize - XST -> Properties:
"Optimization Goal" - Area
"Add I/O Buffers" - DISABLED
"Optimization effort" - HIGH
Implement Design -> Properties:
"Creation of I/O Pads from Ports" - DISABLED
"Map Properties -> Trim unconnected Signals" - DISABLED
5. Далее запустил Implement design-> View/Edit Placed Design (FPGA Floorplanner)
Выделил мышкой свой компонент
Floorplan -> Replace All with Placement
Разместил необходимые элементы так, как считаю нужно
Размещение лучше начинать от ячейки с координатами R1C1
В этом случае RPM получится менее смещенным,
чем если начать размещение с произвольного места.
File -> Write RPM to UCF
сохранил в файл mcc_rpm.ucf
в сохраненном файле нужно заменить
LOC на RLOC
и т.п.
короче нужно этот файл привести к формату:
INST "_n0017(20)421" RLOC = X10Y10 ;
далее сохраняю измененный файл как mcc_rpm_rloc.ucf
в запускаю в директории проекта команду:
ngcbuild -uc mcc_rpm_rloc.ucf mcc mcc.ngc >io.txt
6. теперь полученный файл mcc.ngc и mcc.sym
можно использовать в других проектах без перекомпиляции в виде "black box"
Например, я создал тестовый проект
скопировал туда mcc.ngc и mcc.sym
добавил эти файлы в проект
создал test.ucf:
INST "/*/" RLOC_ORIGIN = X17Y31 ;
и сместил таким образом мой "black box" в нужное место
Сообщение отредактировал cornflyer - Oct 4 2007, 14:29