Цитата(Timmy @ Oct 8 2012, 16:58)

Можно использовать атрибут KEEP. Что касается опций, синтезатор ведь не меняет алгоритм? Он не может просто взять и выкинуть регистр. Возможно, rg_a переехал в IO cell. Ещё XST в таких случаях любит запаковать всё в сдвиговый регистр, где-то глубоко в опциях XST запрятана настройка минимального числа последовательных регистров, при котором их можно паковать в один сдвиговый.
Просто использовались два регистра, чтобы не вводить полные названия rg_a и rg_b. Часть данных бралась с rg_a и часть с rg_b. Причем rg_a был размещен в IOB'ах (были заданы констрейны в ucf - файле: INST "rg_a*" IOB = true

. Все компилилось.
Вставил дополнительный регистр rg_c, т.е. rg_a остался в IOB'ах, а данных cтали браться с rg_b и rg_c, т.е. просто задержка на такт (конвейризация). PAR айса выдал - не могу найти rg_a, т.е. выполнить констрейны ((. Полез в PlanAhead там их действительно нет.