Файл ограничений на стартовый комплект Spartan 3 - PullRequest
1 голос
/ 02 января 2012

Я не уверен, является ли это правильным веб-сайтом обмена стеками, чтобы разместить это, но если нет, переместите его на соответствующий.

Я столкнулся с небольшой проблемой при написании файла ограничений для стартового комплекта Spartan 3.

Я прочитал документацию, предоставленную Xilinx (изготовителем), и несколько недель искал в интернете безуспешно.

То, что я пытаюсь сделать, это связать мой интерфейс Netlist с любым из 3-х 40-контактных разъемов на плате. (См. Изображение ниже)

enter image description here

Обычно это очень просто, если, скажем, я хочу подключить кнопку или светодиод на плате, я просто читаю название соединения на плате, например, одна из кнопок - M13 и пишет в файл UCF примерно такой:

NET "BTN0"       LOC = "M13";

Как вы можете видеть на изображении, заголовки на плате имеют названия A1, A2 и B1, но, как ни странно, ни одно из следующих действий не сработало:

NET "TestOutputLine"       LOC = "A1(0)"; -- The (0) is to reference a single line on an array
NET "TestOutputBus"       LOC = "A1"; -- The bus is of equal dimension of A1 (which is 40)

Ошибки, которые я получил, означали, что либо цель (указанная LOC) не существует, либо присвоение недействительно.

Надеюсь, у вас есть идеи для меня. Заранее спасибо

РЕДАКТИРОВАТЬ: Вот вывод из ISE:

ConstraintSystem:59 - Constraint <NET "TestOutputBus" LOC = "A1";>
[circuit.ucf(12)]: NET "TestOutputBus" not found.  Please verify that:
   1. The specified design element actually exists in the original design.

Но я почти уверен, что TestOutputBus существует, так как на самом деле в моем проекте больше ничего нет, и используется правильный модуль верхнего уровня.

enter image description here

РЕДАКТИРОВАТЬ2: Я обновил свой файл UCF, прямо сейчас это выглядит так:

NET "TestOutputBus(0)" LOC = "A1(0)";
NET "TestOutputBus(1)" LOC = "A1(1)";

Но теперь я получаю другую ошибку в отображении:

MapLib:30 - LOC constraint A1:0 on TestOutputBus<0> is invalid: No such
   site on the device. To bypass this error set the environment variable
   'XIL_MAP_LOCWARN'.
MapLib:30 - LOC constraint A1:1 on TestOutputBus<1> is invalid: No such
   site on the device. To bypass this error set the environment variable
   'XIL_MAP_LOCWARN'.

Решение:

Для того, чтобы контакты 5 и 6 были сопоставлены с TestOutputBus (0) и TestOutputBus (1) соответственно, я должен был использовать следующее:

NET "TestOutputBus(0)" LOC = "N7"; -- A1 pin 5
NET "TestOutputBus(1)" LOC = "L5"; -- A1 pin 6

Обратите внимание, что выводы 0 не сопоставимы, поэтому я использовал выводы 5 и 6, вот таблицы, в которых показаны сопоставимые выводы для всех заголовков и их LOC.

enter image description here enter image description here enter image description here

Ответы [ 3 ]

2 голосов
/ 04 января 2012

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

В вашем файле UCF должны быть ограничения LOC для каждого порта вашего модуля верхнего уровня.,Таким образом, если у вас есть шина шириной 40 бит в качестве входа или выхода на верхнем уровне, то в вашем файле UCF также должно быть 40 отдельных ограничений LOC, чтобы убедиться, что логическая шина в вашей схеме верхнего уровня действительно отображается направильные контакты на вашей FPGA.Если вы используете только два контакта, то вы можете объявить шину шириной в 2 бита и использовать 2 ограничения LOC.FPGA будет обрабатывать все неиспользуемые контакты как входы и игнорировать их.

2 голосов
/ 03 января 2012

Как выясняется, для каждого пригодного для использования вывода каждого заголовка ПЛИС существует адрес.

Таблица данных (http://forums.xilinx.com/xlnx/attachments/xlnx/Spartan/3411/1/S3BOARD_RM.pdf) была полезна, особенно на страницах 49 - 51

0 голосов
/ 14 июля 2013

Однажды я получил оригинальную ConstraintSystem: 59 net xyz not found error, когда я случайно выбрал один из своих модулей в качестве верхнего модуля. Пины, объявленные в UCF, не найдены в объявлении порта неправильного модуля.

Также я получаю эту ошибку, когда у меня есть некоторый вывод, объявленный в UCF, но я пропускаю его в объявлении порта верхнего модуля.

...