BSACPLD 15 14 апреля, 2020 Опубликовано 14 апреля, 2020 · Жалоба Коллеги, подскажите, пожалуйста, что я делаю не так. Есть синхронный интерфейс с передачей по двум фронтам и 8 одинаковыми каналами. Клок и данные переключаются одновременно. На приемной стороне пишу следующие констрейны: create_clock -name {s_clk_virtual[3]} -period $period_s_clk create_clock -name {s_clk[3]} -period $period_s_clk [get_ports {fast_data_3[6]}] set_multicycle_path -from [get_clocks {s_clk_virtual[3]}] -to [get_clocks {s_clk[3]}] 1 set_multicycle_path -setup -end -fall_from [get_clocks {s_clk_virtual[3]}] -rise_to [get_clocks {s_clk[3]}] 0 set_multicycle_path -setup -end -rise_from [get_clocks {s_clk_virtual[3]}] -fall_to [get_clocks {s_clk[3]}] 0 set_false_path -setup -fall_from [get_clocks {s_clk_virtual[3]}] -rise_to [get_clocks {s_clk[3]}] set_false_path -setup -rise_from [get_clocks {s_clk_virtual[3]}] -fall_to [get_clocks {s_clk[3]}] set_false_path -hold -rise_from [get_clocks {s_clk_virtual[3]}] -rise_to [get_clocks {s_clk[3]}] set_false_path -hold -fall_from [get_clocks {s_clk_virtual[3]}] -fall_to [get_clocks {s_clk[3]}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -max 0.5 [get_ports {fast_data_3[0]}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -max 0.5 [get_ports {fast_data_3[1]}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -max 0.5 [get_ports {fast_data_3[2]}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -max 0.5 [get_ports {fast_data_3[3]}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -max 0.5 [get_ports {fast_read_valid_3}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -max 0.5 [get_ports {fast_ready_3}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -min -0.5 [get_ports {fast_data_3[0]}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -min -0.5 [get_ports {fast_data_3[1]}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -min -0.5 [get_ports {fast_data_3[2]}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -min -0.5 [get_ports {fast_data_3[3]}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -min -0.5 [get_ports {fast_read_valid_3}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -min -0.5 [get_ports {fast_ready_3}] set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -max 0.5 [get_ports {fast_data_3[0]}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -max 0.5 [get_ports {fast_data_3[1]}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -max 0.5 [get_ports {fast_data_3[2]}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -max 0.5 [get_ports {fast_data_3[3]}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -max 0.5 [get_ports {fast_read_valid_3}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -max 0.5 [get_ports {fast_ready_3}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -min -0.5 [get_ports {fast_data_3[0]}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -min -0.5 [get_ports {fast_data_3[1]}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -min -0.5 [get_ports {fast_data_3[2]}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -min -0.5 [get_ports {fast_data_3[3]}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -min -0.5 [get_ports {fast_read_valid_3}] -add_delay set_input_delay -clock [get_clocks {s_clk_virtual[3]}] -clock_fall -min -0.5 [get_ports {fast_ready_3}] -add_delay После сборки смотрю Datasheet Report и вижу, что tsu в райное +-0.1, хотя я ожидал получить менше -0.5. Причем проблема только с 3 каналом, для остальных tsu как я и рассчитывал в районе -0.6, -1.2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 апреля, 2020 Опубликовано 15 апреля, 2020 · Жалоба 17 hours ago, BSACPLD said: После сборки смотрю Datasheet Report и вижу, что tsu в райное +-0.1, хотя я ожидал получить менше -0.5. Причем проблема только с 3 каналом, для остальных tsu как я и рассчитывал в районе -0.6, -1.2. Т.е. они у вас не сходятся или как ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 15 апреля, 2020 Опубликовано 15 апреля, 2020 · Жалоба Раскладчик на основе заданных констрейнов пытается разложить проект, чтобы они выполнялись. После раскладки идет точный расчет - один канал не уложился в ограничения. Попробуйте ему ужесточить (добавить еще полнаносекунды), посмотрите, что получится. Правда, раскладчик может его вытянуть за счет ухудшения в другом месте. Тогда - попробуйте всем добавить эти доли наносекунд. Можно попробовать поиграться с различными seed (у Альтеры есть такое, но мне в свое время не помогло - похоже, что просто невозможно было в том проекте на той микросхеме). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 апреля, 2020 Опубликовано 15 апреля, 2020 · Жалоба @Yuri124 не в случае ввода/вывода. 95%, что шина 3 подключена на ноги двойного назначения, у них ёмкость больше Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 15 апреля, 2020 Опубликовано 15 апреля, 2020 · Жалоба 9 минут назад, des00 сказал: @Yuri124 не в случае ввода/вывода. 95%, что шина 3 подключена на ноги двойного назначения, у них ёмкость больше Если чип Альтеровский то есть такая замечательная ножка vrefb которую лучше избегать для скоростных вещей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 15 15 апреля, 2020 Опубликовано 15 апреля, 2020 · Жалоба 2 hours ago, des00 said: Т.е. они у вас не сходятся или как ? Quartus пишет, что сходятся, но судя по тому что выдает Datasheet Report они сходиться не должны (tsu 0.1 нс). И на железе глючит именно этот канал. Если вручную подкрутить задержки в Resource Property Editor так чтобы Datasheet Report выдавал tsu в районе -1.0 нс, то глюки исчезают. Еще заметил, что если написать задержки без min/max и увеличить значение до 1.2, то tsu получается нормальный. Увеличение значения до 1.2 в выше приведенном коде не приводило к желаемому результату. set_multicycle_path -setup -end -fall_from [get_clocks {s_clk_virtual[3]}] -rise_to [get_clocks {s_clk[3]}] 0 set_multicycle_path -setup -end -rise_from [get_clocks {s_clk_virtual[3]}] -fall_to [get_clocks {s_clk[3]}] 0 set_false_path -setup -fall_from [get_clocks {s_clk_virtual[3]}] -rise_to [get_clocks {s_clk[3]}] set_false_path -setup -rise_from [get_clocks {s_clk_virtual[3]}] -fall_to [get_clocks {s_clk[3]}] set_false_path -hold -rise_from [get_clocks {s_clk_virtual[3]}] -rise_to [get_clocks {s_clk[3]}] set_false_path -hold -fall_from [get_clocks {s_clk_virtual[3]}] -fall_to [get_clocks {s_clk[3]}] set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_data_3[0]}] set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_data_3[1]}] set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_data_3[2]}] set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_data_3[3]}] set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_read_valid_3}] set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_ready_3}] set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_data_3[0]}] -clock_fall set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_data_3[1]}] -clock_fall set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_data_3[2]}] -clock_fall set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_data_3[3]}] -clock_fall set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_read_valid_3}] -clock_fall set_input_delay -add_delay -clock [get_clocks {s_clk_virtual[3]}] 1.2 [get_ports {fast_ready_3}] -clock_fall Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 апреля, 2020 Опубликовано 15 апреля, 2020 · Жалоба 26 minutes ago, BSACPLD said: Quartus пишет, что сходятся, но судя по тому что выдает Datasheet Report они сходиться не должны (tsu 0.1 нс). И на железе глючит именно этот канал. Если вручную подкрутить задержки в Resource Property Editor так чтобы Datasheet Report выдавал tsu в районе -1.0 нс, то глюки исчезают. хмм, проект бы небольшой подготовили, покрутить, так с ходу мне не понять ( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться