kaktus 0 7 апреля, 2018 Опубликовано 7 апреля, 2018 (изменено) · Жалоба Столкнулся со следующей проблемой, которая проявляется на версиях 2017.3 и 2017.4 установленных на разных машинах: - Vivado при коррекции содержимого в окне IO Ports часто заявляет, что данный вывод уже занят другим сигналом. Если отказаться от замены, а затем прописать снова, то после нескольких попыток вывод нормально назначается; - В другой раз Vivado на этапе создания битстрима заявляет, что какие-то выводы не назначены и в IO Ports они действительно оказываются без привязки, при этом содержимое XDC файла не менялось, там они по прежнему прописаны. Пока не пропишешь их снова в IO Ports, их упоминание в XDC просто игнорируется. Кто-нибудь знает, как это лечится? Изменено 8 апреля, 2018 пользователем kaktus Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 9 апреля, 2018 Опубликовано 9 апреля, 2018 · Жалоба Столкнулся со следующей проблемой, которая проявляется на версиях 2017.3 и 2017.4 установленных на разных машинах: Есть два прикола: Если в XDC в конце строки стоит символ комментария (#), то вся такая строка считается закомментированной. Не скажу за последние версии, но на предыдущих версиях было. Если какие-нибудь пины назначены внутри IP-блоков и они конфликтуют с вашими назначениями, то приоритет у IP, а ваши окажутся неназначенными. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SFx 0 9 апреля, 2018 Опубликовано 9 апреля, 2018 · Жалоба Если какие-нибудь пины назначены внутри IP-блоков и они конфликтуют с вашими назначениями, то приоритет у IP, а ваши окажутся неназначенными. плюсую. еще может быть такое не только с выводами, но и с GTx блоками. Некоторые корки имеют право задавать расположение их, но точно выбирать какие лейны используются - нет. отсюда нужна придельная внимательность при работе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 9 апреля, 2018 Опубликовано 9 апреля, 2018 · Жалоба Приветствую! Есть два прикола: Это всего лишь особенности TCL ... Если в XDC в конце строки стоит символ комментария (#), то вся такая строка считается закомментированной. Не скажу за последние версии, но на предыдущих версиях было. Ставте ; перед # и будет Вам комент как надо. Если какие-нибудь пины назначены внутри IP-блоков и они конфликтуют с вашими назначениями, то приоритет у IP, а ваши окажутся неназначенными.В Vivado есть иерархия применения constrain - кто последний того и тапки (в отличии от классического варианта). То есть Вы можете переназначить любой уже заданный параметр если зададите его в xdc или tcl который применяется после того файла в котором сидит не нравящийся Вам constrain. Иногда можно просто переназначив нужный constrain, иногда предварительно удалив старый и потом уже назначив новый. Сейчас (в отличии от старых версий) в файлах constaint поддерживался весь TCL поэтому можно например так извращается mgt_pin.tcl ### MGT pins # 3..0 if {[llength [get_ports -quiet {dp_c2m_p}]] >= 4} { set_property PACKAGE_PIN J5 [get_ports {dp_c2m_n[0]} ]; # C3 ... set_property PACKAGE_PIN N6 [get_ports {dp_c2m_p[3]} ]; # A30 } # 7..4 if {[llength [get_ports -quiet {dp_c2m_p}]] >= 8} { set_property PACKAGE_PIN V3 [get_ports {dp_c2m_n[4]} ]; # A35 ... set_property PACKAGE_PIN R6 [get_ports {dp_c2m_p[7]} ]; # B32 } reassign_pcie.tcl # reset_property LOC [get_cells -hierarchical \ -filter {NAME =~ *gen_channel_container[*].*gen_gthe3_channel_inst[*].GTHE3_CHANNEL_PRIM_INST}] set_property LOC GTHE3_CHANNEL_X0Y7 [get_cells -hierarchical \ -filter {NAME =~ *gen_channel_container[0].*gen_gthe3_channel_inst[0].GTHE3_CHANNEL_PRIM_INST}] ... set_property LOC GTHE3_CHANNEL_X0Y0 [get_cells -hierarchical \ -filter {NAME =~ *gen_channel_container[1].*gen_gthe3_channel_inst[3].GTHE3_CHANNEL_PRIM_INST}] В первом файле автоматом назначает пины для MGT в зависимости от ширины шины в исходнике. Во втором - отменяет назначение позиций MGT заданное в корке и назначает свои. Можно наворотить даже целые функции корректируя нетлист после синтеза. ## replace BUFG clock buffers to BUFH for DDR controllert C0,C1,C2,C3 for {set i 0} {$i < 4} {incr i} { set parent "i_pcie_sys/i_ddr_ctrl/inst/mig_7series_0/u_ddr_ctrl_st_mig_7series_0_1_mig/c${i}_u_ddr3_infrastructure" puts "BUFG -> BUFH: ${parent}/u_bufg_clkdiv0" puts "BUFG -> BUFH: ${parent}/gen_mmcm.u_bufg_mmcm_ps_clk" replace_buf ${parent} "u_bufg_clkdiv0" "BUFG" "BUFH" "clkdiv0_bufh" replace_buf ${parent} "gen_mmcm.u_bufg_mmcm_ps_clk" "BUFG" "BUFH" "mmcm_ps_bufh" } где replace_buf это самописная функци которая грузится в "сервисном" файле constrain Порядок применения xdc/tcl зависит от порядка включения в проект или от назначенного данному файлу приоритета. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 10 апреля, 2018 Опубликовано 10 апреля, 2018 · Жалоба Сейчас (в отличии от старых версий) в файлах constaint поддерживался весь TCL поэтому можно например так извращаетсяА сейчас и старые версии это какие? Я недавно попробовал в xdc функцию написать, меня послали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 10 апреля, 2018 Опубликовано 10 апреля, 2018 · Жалоба Приветствую А сейчас и старые версии это какие? Я недавно попробовал в xdc функцию написать, меня послали. Уже и не помню 2014 или 2015 вроде. Но я наверно некорректно объяснил. Так как Vivado пытается синхронизировать XDC с изменениями через GUI то и сейчас с XDC c ограничениями. Используйте tcl расширение для constarin файлов и там можно творить что хочешь. Но изменения в constrain через GUI не изменяют содержимое tcl. Надо будет синхронизировать ручками если что. Удачи!. Rob. P.S. Вот как например выглядет список costraint файлов в моих проектах # Add constrain file # {syn_use impl_use enable "file_name" scoped_to_ref} set constr_files { {0 1 1 "$dsn_dir/src/tcl/service_proc.tcl" "" } {1 1 1 "$dsn_dir/src/xdc/PN_clock.xdc" "" } {0 1 1 "$dsn_dir/src/xdc/PN_pcie_pin.tcl" "" } {0 1 1 "$dsn_dir/src/xdc/PN_fmc_pin.tcl" "" } {0 1 1 "$dsn_dir/src/xdc/PN_ddr4_pin.tcl" "" } {0 1 1 "$dsn_dir/src/xdc/PN_misc.xdc" "" } {0 1 1 "$dsn_dir/src/xdc/PN_misc.tcl" "" } {0 1 0 "$dsn_dir/src/xdc/PN_dbg1.tcl" "" } {0 1 0 "$dsn_dir/src/xdc/PN_dbg2.tcl" "" } {0 1 0 "$dsn_dir/src/xdc/PN_dbg3.tcl" "" } {1 1 1 "$dsn_dir/src/ip_repo/misc/src/gray_cdc.tcl" "gray_cdc" } {1 1 1 "$dsn_dir/src/ip_repo/misc/src/arst_cdc.tcl" "arst_cdc" } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeneS 0 10 апреля, 2018 Опубликовано 10 апреля, 2018 · Жалоба Это всего лишь особенности TCL ... Ставте ; перед # и будет Вам комент как надо. Обычный конец команды. Вот я встретил в VHDL коде для ReFLEX DevKit такое: entity A10_FMC is generic ( DEVICE : string := "Arria 10" -- Target Device ; MIF_VERSION : string := "rom_id_version.mif" -- ; MIF_TIMECODE : string := "rom_id_timecode.mif" -- ; CONNECT_FMC_HA : integer range 0 to 12 := 12 -- ; CONNECT_FMC_HB : integer range 0 to 11 := 11 -- ; CONNECT_FMC_LA : integer range 0 to 17 := 17 -- ); port -- ( clk_100mhz_1 : in std_logic -- ; clk_100mhz_2 : in std_logic -- ; led_usr_red1_n : out std_logic -- ); end entity A10_FMC; Работает :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 10 апреля, 2018 Опубликовано 10 апреля, 2018 · Жалоба Работает :rolleyes:И что тут такого особенного? Дурацкое форматирование, сбивающее с толку? Да, есть. В остальном абсолютно валидный код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 10 апреля, 2018 Опубликовано 10 апреля, 2018 · Жалоба Приветствую И что тут такого особенного? Дурацкое форматирование, сбивающее с толку? Да, есть. В остальном абсолютно валидный код. Такое форматирование удобно при автогенерации кода - проще отслеживать когда добавлять ; Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 10 апреля, 2018 Опубликовано 10 апреля, 2018 · Жалоба Зато читать -- дец глазам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться