Цитата(spooki @ Feb 28 2012, 17:06)

Как сделать грамотные констрейны для асинхронной внешней пмяти.
Господа профи! Та же беда, подскажите людям. Чего только уже не пробовал, и input delay, и output delay (делал min и max чтоб в рамки вогнать), и maximum delay, minimum delay - вобще никак. Весь извелся. Память (операция чтения) эмулирую в тестбенче так:
Код
always @ (ramadr_sig or ram_oe_sig or ram_we_sig)
begin
if (ram_we_sig && !ram_oe_sig) begin
#2.5 data_out=32'bx;
#8 data_out = mem[ramadr_sig];
end
Т.е. после смены адреса 2,5 нс старые данные держатся, потом через 8 нс появляется новое слово на выходе. Память запускаю на 80 МГц. В моделсиме свою модельку посмотрел - все как по даташиту на память. Но вот входной регистр в ПЛИС никак не защелкивает в нужное время. Все время попадает на момент смены данных.
Можно конечно сделать отдельный клок, которым защелкивать данные и подогнать его по фазе, но это ведь не правильно - проект поменялся, пути изменились и снова подгонять.
Кстати, специалисты по НИОСУ, а как в ниосе интерфейс к асинхронной памяти законстрейнен? У меня как раз ниос работает на такой же асинхронной памяти на 80 МГц - проблем нет. Посмотрел cpu0.sdc - ничего про память там не нашел. Не может быть чтоб без констрейнов такое работало. И кстати используется только 1 клок, никаких других сдвинутых по фазе нет...
В общем подскажите кто чем может...
Заранее благодарен!