Search the Community
Showing results for tags 'constraints'.
-
Добрый день. Столкнулся с отрицательным значением для Tsetup в документации на ЦАП AD9117. (Tsetup = -0.2 нс, Thold = 1.5 нс) В связи с чем возник вопрос, как всё-таки правильно задавать constrain'ы для внешних сигналов. Для выходных интерфейсов временные ограничения я задаю следующим образом (если принять разницу во времени распространения клока и данных по плате = 0): set_output_delay -clock {clock_name} -man Tsetup {port_name} -add_delay. set_output_delay -clock {clock_name} -min -Thold {port_name} -add_delay. Соответственно для AD9117: set_output_delay -clock {clock_name} -man -0.2 {port_name} -add_delay. set_output_delay -clock {clock_name} -min -1.5 {port_name} -add_delay. Смущает отрицательное Tsetup, что говорит о том, что данные на входе микросхемы должны быть установлены после прихода фронта, до 0,2нс (но можно и раньше). Тем самым минимальное время на которое должны установиться данные = Tsetup + Thold = 1.3 нс. Или я неправильно понимаю трактовку этого значения, и производитель указывает время Tsetup относительно фронта клока (т.е. если оно отрицательное, это значит что данные должны установиться за 0.2 нс до прихода фронта клока.), и тогда минимальное время удержания данных на шине должно быть = 1.7 нс. Сталкивался кто-нибудь с отрицательным Tsetup, и как правильно в таком случае задавать set_output_delay?
-
Vivado: no match pins/cells/nets issues
dxp posted a topic in Среды разработки - обсуждаем САПРы
Всем привет! Столкнулся со следующей проблемой: Vivado выдаёт предупреждения о том, что не может найти pins, cells, nets, прописанные в констрейнах, хотя оные объекты вроде на месте - это легко проверяется хоть через просмотр нетлиста, хоть через схематик, хоть через Tcl консоль, выдавая туда команды get_pins/get_cells/get_nets - ровно те, которые прописаны в констрейнах. Всё находится, всё на месте. Но при запуске, например, Synthesis, в окне Messages вижу: Интриги добавляет ещё то обстоятельство, что аналогичный констрейн на другой объект не вызывает такого поведения - там всё хорошо. Вот оба констрейна: create_generated_clock -name pcie_user_clk [get_pins pcie_port/pipe_clock_i/mmcm_i/CLKOUT2] create_generated_clock -name dpc_clk [get_pins dpc_clk_gen/inst/plle2_adv_inst/CLKOUT0] Это два простых констрейна для переименования клоков. Разница между ними в том, что первый относится к MMCM, находящейся внутри корки, а второй - к инстансу в проекте. Сам объект на месте (как уже выше указал), более того, по результату вижу, что клок-то таки переименовался (имеет указанное в констрейне имя). Вот оно на схеме (пин помечен маркером): В общем, заподозревал, что что-то тут, возможно, с порядком обработки данных - такое впечатление, что констрейн прикладывается в момент, когда ещё нетлист не готов и поэтому не находит объект (а в случае первого констрейна находит потому, что там в проект подтаскивается корка, синтезированная OOC, т.е. уже с нетлистом). Но если так, то как это разрулить? Никаких средств не нашёл, гугление тоже не помогло. Из-за этой же фигни не удаётся использовать waiver'ы - подобная ругань, что нет объектов (а они есть в результирующем нетлисте). В общем, обращаюсь к коллективному разуму и опыту.