RobFPGA 27 9 сентября, 2019 Опубликовано 9 сентября, 2019 · Жалоба Приветствую! Продолжаю погружаться в пучину Qu - возник вопрос о порядке применения файлов констрэйнов. А именно например есть модуль CDC перехода gray_cdc. Надо задать задержки и skew между wr и rd clock доменами. В Vivado для этого я мог для каждого отдельного инстанса получить список wr_r[*] и rd_r[*] регистров, а так же клоки и актуальные значения частот для wr и rd домена и рассчитать задержки от максимальной из частот. В Qu же судя по всему все сложнее. В корках Qu эти задержки ставятся абсолютом (delay 2 ns skew 1.5 ns) причем сразу для всех регистров всех gray_cdc модулей. И если как олучить список регистров для каждого отдельного модуля уже понятно то вот как получить актуальные клоки пока большой вопрос. К тому же вопрос и схеме применения клоков (последовательности кострэйнов) - так как sdc фалы применяются в том же порядке, каки включены в проект. Значит top sdc с определениями базовых клоков надо включать первым - перед всеми другими что могут быть в IP корках. А в обычных проектах я вижу что все наоборот. Какая-то каша получается (и в голове и в .qsf). Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iglaz3 0 9 сентября, 2019 Опубликовано 9 сентября, 2019 · Жалоба Здравствуйте! Не совсем понятны ваши потребности, но возможно поможет: Quote -get_skew_value_from_clock_period < src_clock_period | dst_clock_period | min_clock_period > Option to interpret skew constraint as a multiple of the clock period. -skew_value_multiplier < multiplier > Value by which the clock period multiplies to compute skew requirement. Например: set_max_skew -from $from_node_list -to $to_node_list -get_skew_value_from_clock_period min_clock_period -skew_value_multiplier 0.8 set_net_delay -from $from_node_list -to $to_node_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 9 сентября, 2019 Опубликовано 9 сентября, 2019 · Жалоба Приветствую! Потребности просты - разобраться в методике применения constaint в Qu. Так как приходиться разбираться с большим проектом в Qu 14.1. А идеология constaint немного отличается от Vivado. 1 hour ago, iglaz3 said: set_max_skew -from $from_node_list -to $to_node_list -get_skew_value_from_clock_period min_clock_period -skew_value_multiplier 0.8 Спасибо! Да это уже лучше - судя по всему задаются соотношения, которые вычисляться автоматом на этапе P&R. Но надо проверить что клоки берутся для каждого регистра отдельно. Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iglaz3 0 10 сентября, 2019 Опубликовано 10 сентября, 2019 · Жалоба 22 hours ago, RobFPGA said: Спасибо! Да это уже лучше - судя по всему задаются соотношения, которые вычисляться автоматом на этапе P&R. Но надо проверить что клоки берутся для каждого регистра отдельно. Получив коллекции регистров, всегда можно пробежать их в цикле. Либо как вариант сделать процедуру и вызывать из TOP SDC для всех нужных инстансов с параметрами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 10 сентября, 2019 Опубликовано 10 сентября, 2019 · Жалоба Приветствую! 7 minutes ago, iglaz3 said: Получив коллекции регистров, всегда можно пробежать их в цикле. Да с этим то как раз просто - чуть сложнее было выделить регистры из инстансов конкретного типа. Пока так и не понял (но уже кажется что нет) можно ли в Qu напрямую находить инстансы заданного типа (аналог команды в Vivado get_cells -filter {REF_NAME =~ gray_cdc*}). Приходится сначала находить регистры во всех инстансах соответствующего типа, потом выделять и фильтровать имена оставляя уникальные. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться