negiin 0 19 декабря, 2017 Опубликовано 19 декабря, 2017 · Жалоба Приветствую. На ПЛИС Arria V сделал LVDS SerDes с внешней PLL, как показано на рисунке. Кроме данных на внешний выход подается тактовая частота с этой же PLL с отдельного выхода(c0-c2 для передатчика и c3 на внешный выход). Как мне описать задержки клока? Сейчас описываю примерно так #Делаем новый клок на выходе. create_clock -period 8.0 -name fpga_clk [get_ports fpga_clk] derive_pll_clocks create_generated_clock -source [get_pins {inst1|altpll_component|auto_generated|pll1|clk[1]}] -name ssync_tx_clk_ext [get_ports {ssync_tx_clk}] set_output_delay -clock ssync_tx_clk_ext -max -0.25 [get_ports {ssync_tx_data[*]}] set_output_delay -clock ssync_tx_clk_ext -min 0.25 [get_ports {ssync_tx_data[*]}] Но данный констрейт не влияет на работу схемы. Как бы я не задавал задержки, анализатор пишет что все хорошо, хотя схема при этом не работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 19 декабря, 2017 Опубликовано 19 декабря, 2017 · Жалоба А как Вы определяете то, что передатчик не работает ? Какого типа приемник center-aligned или edge-aligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
negiin 0 19 декабря, 2017 Опубликовано 19 декабря, 2017 · Жалоба А как Вы определяете то, что передатчик не работает ? Какого типа приемник center-aligned или edge-aligned center-aligned tsetup и thold 0.2 нс Я принимаю данные на приемнике и они не совпадают с ожидаемым. Начинаю двигать фазу и данные появляются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 20 декабря, 2017 Опубликовано 20 декабря, 2017 · Жалоба center-aligned tsetup и thold 0.2 нс Я принимаю данные на приемнике и они не совпадают с ожидаемым. Начинаю двигать фазу и данные появляются. Ну все правильно. Вы констрейните будто у Вас приёмник edge-aligned. А вам нужно center-aligned. Попробуйте проинвертировать клок. (более подробно почитайте статьях des00 timequest для чайников). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
negiin 0 20 декабря, 2017 Опубликовано 20 декабря, 2017 · Жалоба Просто у меня сложилось впечатление, что задержки min max не начто не влияют. Какие бы цифры я не пробывал ставить, предупреждений нет. У внешнего приемника нет тербований как должен быть расположен клок - center-aligned или edge-aligned. Есть только тербование tsetup и thold 0.2 нс. Если я ставлю клок без инверсии, и приведенные выше задержки -0.25 0.25, что должно соответствовать edge-aligned, то не работает, точнее может работать или нет в зависимости от компиляции. Например, если добавить или убрать signaltap. Если поменять фазу на 180, то работает, вне зависимости от констрейтов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 20 декабря, 2017 Опубликовано 20 декабря, 2017 · Жалоба Но данный констрейт не влияет на работу схемы. Как бы я не задавал задержки, анализатор пишет что все хорошо, хотя схема при этом не работает. Вы откуда эту схему взяли? Попробуйте проверенную - выходной клок пропускается через DDR-регистр, в качестве клока подается выход pll, на один из входов данных 1, на второй 0. Таким образом, задержки до DDR-регистров по умолчанию компилятор выровняет согласно общим ограничениям, а от выхода DDR до пина разброс будет минимальным между клоком и данными. Вы привели описание временных ограничений, но никак не прокомментировали отчет TQ - применились они или нет, были ошибки (если да, то пути и что квартус попытался сделать). Для того, чтобы комментировать описанную Вами ситуацию, не хватает данных. Для начала откройте отчет и убедитесь, что в списке ignored_constraints отсутствуют описанные выше сигналы. ЗЫ. Еще один момент - для DDR же вроде описываются ограничения и для фронта и для спада отдельно с ключами -rise/fall. ЗЫЫ. Меня одного смутило, что у ТС max отрицательное значение имеет, а min положительное? Вроде как в данном случае описывается нестабильность клока относительно нулевой точки анализа - минимальная задержка слева от нуля, максимальная задержка справа, а тут у меня что-то заклинило... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
negiin 0 20 декабря, 2017 Опубликовано 20 декабря, 2017 · Жалоба Ошибся когда переносил min max. Сейчас попробовал сделать с использованием ALTDDIO_OUT. При этом c0_cl - клок, которым тактируется tx_inclock. Какие то каналы работают с инверсией, какие-то без. Результат зависит от компиляции. Все клоки видны в отчете. Сейчас есть только ошибка minimum pulse width на входе регистров, на которые подаются datain_h datain_l. ddr_clk ddr_clk_cl ( .datain_h (1'b1), .datain_l (1'b0), .outclock (c0_cl), .dataout (ClientTxClk) ); Либо приходится делать так: ddr_clk ddr_clk_cl ( .datain_h (1'b0), .datain_l (1'b1), .outclock (c0_cl), .dataout (ClientTxClk) ); create_generated_clock -name lvds_clk0 -source [get_pins {*lvds_ln_gen[0]*ddr_clk*|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}] -invert [get_ports {LvdsTxClk[0]}] create_generated_clock -name lvds_clk1 -source [get_pins {*lvds_ln_gen[1]*ddr_clk*|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}] [get_ports {LvdsTxClk[1]}] create_generated_clock -name lvds_clk2 -source [get_pins {nam1.ddr_clk_cl|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}] [get_ports {ClientTxClk}] #Tsu Th 0.25 +0.025 extra set_output_delay -clock [get_clocks lvds_clk0] -min -0.275ns [get_ports *LvdsTxData[0][*]* ] set_output_delay -clock [get_clocks lvds_clk0] -max 0.275ns [get_ports *LvdsTxData[0][*]* ] set_output_delay -clock [get_clocks lvds_clk1] -min -0.275ns [get_ports *LvdsTxData[1][*]* ] set_output_delay -clock [get_clocks lvds_clk1] -max 0.275ns [get_ports *LvdsTxData[1][*]* ] set_output_delay -clock [get_clocks lvds_clk2] -min -0.275ns [ get_ports *ClientTxData[*]* ] set_output_delay -clock [get_clocks lvds_clk2] -max 0.275ns [ get_ports *ClientTxData[*]* ] p.s. линии данных и клока в каждом канале выровнены относительно друг друга. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
negiin 0 21 декабря, 2017 Опубликовано 21 декабря, 2017 · Жалоба Все нужные мне пути добавляются в set_false_path. Причем добавляются автоматически. The TimeQuest Timing Analyzer automatically adds the required multicycle path, false path, and clock uncertainty constraints to analyze timing for the dedicated SERDES if you add derive_pll_clocks to your Synopsys Design Constraints (.sdc) file. Если сделать report_timing -false_path для этих путей, то видны все нужные пути. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться