Цитата(cornflyer @ Oct 5 2007, 16:50)

хотелось бы поподробнее узнать что делать )))
Попробую показать на примере, а Вы сами потом попытаетесь это проверить.
Допустим, у нас есть два примитива в *.ucf:
INST "A/A1" RLOC = "R0C0" ;
INST "B/B1" RLOC = "R0C1" ;
или другая, эквивалентная запись:
INST "A/A1" HU_SET = "BLOCK1" ;
INST "A/A1" RLOC = "R0C0" ;
INST "B/B1" HU_SET = "BLOCK1" ;
INST "B/B1" RLOC = "R0C1" ;
где "/" - иерархический символ
В этом случае A1 и B1 будут располагаться, где угодно, потому что принадлежат разным блокам A и B соответственно, даже не смотря на то, что каждому присвоено одинаковое иерархическое имя - "BLOCK1".
Теперь немножко изменим запись на
INST "A/A1" U_SET = "BLOCK1" ;
INST "A/A1" RLOC = "R0C0" ;
INST "B/B1" U_SET = "BLOCK1" ;
INST "B/B1" RLOC = "R0C1" ;
или
INST "A" RLOC = "R0C0" ;
INST "A/A1" HU_SET = "BLOCK1" ;
INST "A/A1" RLOC = "R0C0" ;
INST "B" RLOC = "R0C0" ;
INST "B/B1" HU_SET = "BLOCK1" ;
INST "B/B1" RLOC = "R0C1" ;
или
INST "A" RLOC = "R0C0" ;
INST "A/A1" RLOC = "R0C0" ;
INST "B" RLOC = "R0C0" ;
INST "B/B1" RLOC = "R0C1" ;
Теперь, в первом случае, мы сказали, что A/A1 и B/B1 - это один и тот же блок ("BLOCK1"). Во втором и третьем - просто указали, каким образом скрепить два отдельных блока, в итоге для A/A1 R0C0+R0C0=R0C0, для B/B1 R0C0+R0C1=R0C1.
Более подробно читайте в документе "Constraints Guide", в разделе Constraint Types/Placement Constraints
Если проблема не в этом, будем разбираться дальше.