Я не уверен, является ли это правильным веб-сайтом обмена стеками, чтобы разместить это, но если нет, переместите его на соответствующий.
Я столкнулся с небольшой проблемой при написании файла ограничений для стартового комплекта Spartan 3.
Я прочитал документацию, предоставленную Xilinx (изготовителем), и несколько недель искал в интернете безуспешно.
То, что я пытаюсь сделать, это связать мой интерфейс Netlist с любым из 3-х 40-контактных разъемов на плате. (См. Изображение ниже)
Обычно это очень просто, если, скажем, я хочу подключить кнопку или светодиод на плате, я просто читаю название соединения на плате, например, одна из кнопок - 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 существует, так как на самом деле в моем проекте больше ничего нет, и используется правильный модуль верхнего уровня.
РЕДАКТИРОВАТЬ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.