Dantist2k17 0 22 апреля, 2020 Опубликовано 22 апреля, 2020 · Жалоба Добрый день. Помогите разобраться c STA. Имеется модуль на verilog, прикрепляю структурную схему. В модуль "руками" вставлена библиотечная ячейка clock gate. Логический синтез провожу в DC. Задаю следующие SDC: set period 0.8 create_clock -name pll_clk -period $period [get_ports pll_clk] create_generated_clock -name clk_div10 -source [get_ports pll_clk] -edges {10 20 30} [get_ports div10/clk_out] В report_timing наблюдаю: Startpoint: register_en_clk_reg[3] (rising edge-triggered flip-flop clocked by pll_clk) Endpoint: counter_clk10_reg[0] (rising edge-triggered flip-flop clocked by clk_div10') Path Group: clk_div10 Path Type: max Point Incr Path -------------------------------------------------------------------------- clock pll_clk (rise edge) 7.20 7.20 clock network delay (ideal) 0.00 7.20 register_en_clk_reg[3]/C (FDCEX1) 0.00 7.20 r register_en_clk_reg[3]/QB (FDCEX1) 0.64 7.84 f U23/O (INVGX2) 0.07 7.91 r U27/O (XOR2X2) 0.23 8.14 f counter_clk10_reg[0]/D (FDCX1) 0.00 8.14 f data arrival time 8.14 clock clk_div10' (rise edge) 7.60 7.60 clock network delay (ideal) 0.00 7.60 counter_clk10_reg[0]/C (FDCX1) 0.00 7.60 r library setup time -0.27 7.33 data required time 7.33 -------------------------------------------------------------------------- data required time 7.33 data arrival time -8.14 -------------------------------------------------------------------------- slack (VIOLATED) -0.81 Мой вопрос заключается в следующем: почему я не вижу в report_timing задержку на clock gate ячейке? Ведь clk_div10 = clk_gate(clk_div10_int) Это связано с тем что нет clock tree и не установлен set_propagated_clock? В случае установки set_propagated_clock [all_clocks] появляется задержка clock network delay (propagated) = 0.86, но чем конкретно она сформирована не указывается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Avex 1 22 апреля, 2020 Опубликовано 22 апреля, 2020 · Жалоба Ну да, без set_propagated_clock задержка цепи клока идеальная. Нормальный репорт. В синтезе всегда так. Если поставили set_propagated_clock=true , то в некотррых тулах надо репорт со спец. ключами делать, чтобы дерево увидеть. Под рукой не мануала, но выглядит это както навроде report_timing -path_type full_clock. Т.е. по умолчанию клоковое дерево скрыто. Используете этот ключ и увидите путь через клок-гейт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oratie 0 22 апреля, 2020 Опубликовано 22 апреля, 2020 · Жалоба До этапа CTS используют set_clock_gate_latency команду для эмуляции задержки на clock_gating ячейки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 24 апреля, 2020 Опубликовано 24 апреля, 2020 · Жалоба Для уточнения: ячейка называется clock_enable, clock_gating технология автоматической вставки латчей в clock порт регистра. Если же у вас именно clock_gating, то зачем его вставлять руками? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Avex 1 24 апреля, 2020 Опубликовано 24 апреля, 2020 · Жалоба @lexx Там не просто клокгейт, а делитель клока ( -edges {10 20 30} ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 28 апреля, 2020 Опубликовано 28 апреля, 2020 · Жалоба Таки да. Каюсь ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dantist2k17 0 8 мая, 2020 Опубликовано 8 мая, 2020 · Жалоба On 4/24/2020 at 5:27 AM, lexx said: Для уточнения: ячейка называется clock_enable, clock_gating технология автоматической вставки латчей в clock порт регистра. Если же у вас именно clock_gating, то зачем его вставлять руками? Отключение блоков с последующим сбросом в зависимости от режима работы. Схема небольшая, но частота высокая, поэтому все в ручном режиме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться