Koluchiy 0 11 мая, 2011 Опубликовано 11 мая, 2011 · Жалоба Здравствуйте, уважаемые знатоки. Xilinx, ISE 12.3. Микросхема - Spartan-6. В проекте на Verilog есть глобальные тактовые сигналы Clock1 и Clock2. В зависимости от настроек проекта они могут как различаться (т.е. идти из разных источников), так и быть одинаковыми, т.е. при некоторых настройках проекта синтезируется строчка assign Clock2 = Clock1; В проекте есть файл констрейнов, в котором задаются требования на Clock1 и Clock2. Типа NET "Clock1" TNM_NET = "Clock1"; TIMESPEC TS_Clock1 = PERIOD "Clock1" 10.00 ns; NET "Clock2" TNM_NET = "Clock2"; TIMESPEC TS_Clock2 = PERIOD "Clock2" 10.00 ns; Всё прекрасно синтезируется, разводится и работает, пока не делаю настройки проекта так, чтобы синтезировалась строчка assign Clock2 = Clock1; то есть два тактовых сигнала становятся эквивалентны. В этом случае всё синтезируется, но при выполнении Translate оно начинает ругаться на констрейны и говорит, что цепи Clock1 в нетлисте нету... Цепь Clock1 объявлена следующим образом: wire Clock1/* synthesis syn_keep=1 */; Если смотреть Technology Schematic в Synplify, цепь Clock1 там есть. И всё равно потом она куда-то теряется. Собственно, вопрос: кто виноват и чего делать, чтобы цепь из нетлиста точно:) не терялась к тому моменту, как NGDBuild начинает сверять список цепей со списком ограничений на цепи? Всем заранее спасибо за ответы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vugluskr 0 11 мая, 2011 Опубликовано 11 мая, 2011 · Жалоба try this type constraints in Verlog code: (* KEEP = "TRUE" *)wire Clock1; (* KEEP = "TRUE" *)wire Clock2; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 11 мая, 2011 Опубликовано 11 мая, 2011 · Жалоба 2 Koluchiy законстрейнте и в UCF чтоб неты не убирал (думаю что как раз после синтеза мапер или роутер их и оптимизирует, в результате чего она и пропадает из нетлиста) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 11 мая, 2011 Опубликовано 11 мая, 2011 · Жалоба try this type constraints in Verlog code: (* KEEP = "TRUE" *)wire Clock1; (* KEEP = "TRUE" *)wire Clock2; It seems to me these constraints are for XST... 2 Koluchiy законстрейнте и в UCF чтоб неты не убирал (думаю что как раз после синтеза мапер или роутер их и оптимизирует, в результате чего она и пропадает из нетлиста) Это про что? Строчка NET ”Clock1” KEEP; в файле UCF дает точно такой же результат, ошибку "нету цепи в нетлисте". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 11 мая, 2011 Опубликовано 11 мая, 2011 · Жалоба Verilog: /* synthesis syn_keep = 1 */ UCF: INST "name" S; Но думаю что это в данном случае не сработает, потому что не может быть у 1го нета в нетлисте 2 имени.... хотя очень интерсно взглянуть как оно там в едифе после Synplify, они ведь там по идее как то оба должны быть... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 11 мая, 2011 Опубликовано 11 мая, 2011 · Жалоба Verilog:/* synthesis syn_keep = 1 */ UCF: INST "name" S; Но думаю что это в данном случае не сработает, потому что не может быть у 1го нета в нетлисте 2 имени.... хотя очень интерсно взглянуть как оно там в едифе после Synplify, они ведь там по идее как то оба должны быть... Близко, но я делал по другому, и в подобной ситуации оно даже работало (!). У меня была такая ситуация: есть один net, но он имеет человеческое имя на верхнем уровне проекта и совсем нечеловеческое иерархическое имя там, где этому net'у присваиваются значения. А мне хотелось, чтобы имя в ChipScope было человеческое. Я использовал constraint SAVE применительно к net'у на верхнем уровне проекта, и в скомпилированном проекте оставалось именно это имя net'а. Работало в ISE 10.1/11.5. На VHDL это выглядело так: attribute S of signal_name: signal is "yes" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 11 мая, 2011 Опубликовано 11 мая, 2011 · Жалоба 2 Boris_TS мы это с вами пару месяцев назад кажется обсуждали. Тут же ситуация другая: 2 глобальных клоковых нета должны иметь разные имена... По идее Synplify должен разрулить эту ситуация если в логе не написал что всё равно объединил неты, и вот тут интересно - как? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться