|
|
  |
Encounter: constraints for clock mux |
|
|
|
Apr 24 2012, 06:53
|

Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 15-09-08
Из: Зеленоград
Пользователь №: 40 201

|
Доброе время суток! В проекте есть клоковый мультиплексор частот полученных с ВЧ и НЧ генераторов с помощью деления (generated_clock). Чтобы избежать использования case analysis в Design Compiler задаю ограничение Код set_clock_groups -logically_exclusive -group {clka} -group {clkb} и параметр Код set timing_enable_multiple_clocks_per_reg true В DC получаю пути по обоим клокам. Однако, временной анализатор в Encounter выдает пути лишь по одному клоку. Как можно побороть Encounter?
|
|
|
|
|
Apr 24 2012, 08:12
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(Poluektovich @ Apr 24 2012, 09:53)  Доброе время суток! В проекте есть клоковый мультиплексор частот полученных с ВЧ и НЧ генераторов с помощью деления (generated_clock). Чтобы избежать использования case analysis в Design Compiler ..... временной анализатор в Encounter выдает пути лишь по одному клоку. Как можно побороть Encounter? 1) Как сделан клоковый мультиплексор? Простой МUХ2? 2) Если так, то ч то даёт Код report_case_analysis по этому МUХ2? Нет ли константы по входу S? 3) видит ли Код report_clocks ВСЕ Ваши клоки на входе МUХ2? 4) Какой репорт Вам выдает пути лишь по одному клоку? 5) Какая версия Encounter?
Сообщение отредактировал Torpeda - Apr 24 2012, 08:28
|
|
|
|
|
Apr 24 2012, 10:07
|

Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 15-09-08
Из: Зеленоград
Пользователь №: 40 201

|
1. Мультиплексор безглитчевый на триггерах 2. Вход выбора не константный, case_analysis не использую 3-4. Encounter видит только один клок, другой интерпретирует как цепь. Репорт с помощью report_timing -clock_from ... 5. версия 9
|
|
|
|
|
Apr 24 2012, 11:38
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(Poluektovich @ Apr 24 2012, 13:07)  1. Мультиплексор безглитчевый на триггерах 2. Вход выбора не константный, case_analysis не использую 3-4. Encounter видит только один клок, другой интерпретирует как цепь. Репорт с помощью report_timing -clock_from ... 5. версия 9 1) "Вход выбора не константный, case_analysis не использую" - а репортик report_case_analysis всётаки чё говорит (репорт по выходных AND2)? 2) "report_timing -clock_from ..." - а дальше опции.... Полагаю, репорт -clock_from СК1 даёт результат, а -clock_from СК2 не даёт.... Также предположим что "report_clocks" выдал только СК1... Это так? Тогда ответ простой - Encounter выдает пути лишь по СК1 потому что СК2 не существует. 3) Задефайните СК2 и делов-то.... 4) Если я увижу результаты репортов что просил, будет меньше гаданий и может быстрее.... P.S. "безглитчевый на триггерах " - стрёмно звучит... тут должно быть "безглитчевый на gated_clock_component" .... а иначе только неправильно задай глобальные переменные Encounter ....
Сообщение отредактировал Torpeda - Apr 24 2012, 11:53
|
|
|
|
|
Apr 24 2012, 12:14
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(Poluektovich @ Apr 24 2012, 15:09)  1. report_case_analysis дает пустой отчет 2-3. все так и есть, clk2 нет в клоковом дереве, для энкаунтера это цепь. Каким образом clk2 задефайнить? В исходном sdc clk1 и clk2 определены через set_generated_clock. 4. Отчеты у меня сейчас нет, я rtl и лог. синтезом занимаюсь, пытаюсь понять как это грамотно обконстрейнить, чтоб энкаунтер нужный тайминг выдавал. 1) "clk2 нет в клоковом дереве, для энкаунтера это цепь." - точнее, CLK2 не виден в CTE (common timing engine) во время STA. До постройки клокового дерева, Вы скорее не дошли.... 2) "Каким образом clk2 задефайнить? В исходном sdc clk1 и clk2 определены через set_generated_clock." Схему как клоки с осцилятора выходят и в MUX заходят + всё с SDC что к ним относится можно увидеть? 3) "Отчеты у меня сейчас нет, я rtl и лог. синтезом занимаюсь, " - раз вы видите результаты команд - значит есть: Либо копируем текст с экрана, Либо в конце команды добавляем > report.txt 4) Вы синтез Енкаунтером делаете?
Сообщение отредактировал Torpeda - Apr 24 2012, 12:19
|
|
|
|
|
Apr 24 2012, 12:24
|

Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 15-09-08
Из: Зеленоград
Пользователь №: 40 201

|
2) Код create_clock -name "fclk_domain" -period 100 -waveform { 0 50 } [get_ports FCLK] // from HF oscillator create_clock -name "rclk_domain" -period 30000 -waveform {0 15000} [get_ports RCLK] // from LF oscillator
create_generated_clock -name "clk_1khz_domain" -divide_by 32 \ -source [get_ports RCLK] [get_pins {i_clk_div/CLK_1KHZ}] create_generated_clock -name "t12clk" -divide_by 2 -source [get_ports FCLK] [get_pins {i_clk_div/TCLKP}]
# muxes clocks set_clock_groups -logically_exclusive -group {t12clk} -group {clk_1khz_domain} t12clk и clk_1khz_domain - входы клокового мультиплексора 3) репорты у тополога вчера получал, по памяти пишу. 4) Логический - DC, физический - Encounter.
|
|
|
|
|
Apr 24 2012, 12:36
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(Poluektovich @ Apr 24 2012, 15:24)  2) Код create_clock -name "fclk_domain" -period 100 -waveform { 0 50 } [get_ports FCLK] // from HF oscillator create_clock -name "rclk_domain" -period 30000 -waveform {0 15000} [get_ports RCLK] // from LF oscillator
create_generated_clock -name "clk_1khz_domain" -divide_by 32 \ -source [get_ports RCLK] [get_pins {i_clk_div/CLK_1KHZ}] create_generated_clock -name "t12clk" -divide_by 2 -source [get_ports FCLK] [get_pins {i_clk_div/TCLKP}]
# muxes clocks set_clock_groups -logically_exclusive -group {t12clk} -group {clk_1khz_domain} t12clk и clk_1khz_domain - входы клокового мультиплексора 3) репорты у тополога вчера получал, по памяти пишу. 4) Логический - DC, физический - Encounter. 1) Какого клока нет в report_clocks? 2) Что из себя представляет i_clk_div? 3) А Warning Енкаунтер какой выдавал на "пропущенный" клок?
Сообщение отредактировал Torpeda - Apr 24 2012, 12:40
|
|
|
|
|
Apr 24 2012, 13:00
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(Poluektovich @ Apr 24 2012, 15:42)  1) нет t12clk 2) два делителя на счетчиках (один RCLK делит на 32, получаем clk_1khz_domain, а другой FCLK делит на 2, получаем t12clk) 3) варнинга не было Вообще-то generated_clock может с выхода Q гейта\флопа или входа CK флопа быть задан..... 1) как описаны в RTL - CLK_1KHZ и TCLKP? 2) Как reg CLK_1KHZ & reg TCLKP?
|
|
|
|
|
Apr 24 2012, 13:23
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(Poluektovich @ Apr 24 2012, 16:15)  Код always @(posedge FCLK or negedge res_por) if(~res_por) clk2<='h0; else clk2<=~clk2;
assign CLK_1KHZ = cnt[4]; assign TCLKP = clk2; 1) А во что синтезилось clk2? Не в D-Flop без QN + инвертор? 2) Задайте create_generated_clock с выходов Q соответствующих флопов.
|
|
|
|
|
Apr 24 2012, 14:00
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(Poluektovich @ Apr 24 2012, 16:53)  1) в D-Flop без QN и буфер после флопа. Может в этом и дело. 2) попробую 1)Скорее всего Енкаунтер не может найти один пин с команды [get_pins {i_clk_div/TCLKP}] - то-ли брать FF.Q то-ли INV.A. В CLK_1KHZ случае, скореее всего клок идёт прямо с Q. Правильно? 2) Что даёт на выходе команда [get_pins {i_clk_div/TCLKP}] в конце синтеза? Лутше попробовать - прямо в Енкаунтере... 3) Замените при синтезе "D-Flop без QN и буфер" на просто "D-Flop с QN", при этом клок должен идти строго с Q. 4) SDC до и после синтеза - разные должны быть.... Советую записать с DC в конце синтеза SDC как вход для Енкаунтера. Сверте SDC до и после синтеза. В любом случае дайте знать чем закончилось....
Сообщение отредактировал Torpeda - Apr 24 2012, 14:01
|
|
|
|
|
Apr 25 2012, 07:43
|

Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 15-09-08
Из: Зеленоград
Пользователь №: 40 201

|
Спасибо за ответы. После устранения буфера и определения клока с выхода триггера, появились пути по обоим клокам. Цитата Советую записать с DC в конце синтеза SDC как вход для Енкаунтера. Делаю именно так.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|