Перейти к содержанию

    

Составное имя сигнала

Всем привет.

 

Дело происходит в Vivado2018.2

Есть файл верхнего уровня Top.vhdl

 

signal clk0, clk1 : std_logic; -- используются внутри проекта

В нем прописан ip

clk_wiz: clk_wiz port map (clk_out0 => clk0, clk_out1 => clk1, ....)

 

В файле ограничений хочу задать констрейны на сигналы clk0, clk1

false_path с clk0 на clk1.

Как записать правильно имена этих сигналов в файле xdc. При указании имен clk0 и clk1 говорит что такие сигналы не найдены.

Заранее спасибо за ответы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

Всем привет.

 

Дело происходит в Vivado2018.2

Есть файл верхнего уровня Top.vhdl

 

signal clk0, clk1 : std_logic; -- используются внутри проекта

В нем прописан ip

clk_wiz: clk_wiz port map (clk_out0 => clk0, clk_out1 => clk1, ....)

 

В файле ограничений хочу задать констрейны на сигналы clk0, clk1

false_path с clk0 на clk1.

Как записать правильно имена этих сигналов в файле xdc. При указании имен clk0 и clk1 говорит что такие сигналы не найдены.

Заранее спасибо за ответы.

a. поставить на эти сигналы в top атрибут keep.

b. или открыть дизайн после синтеза, и найдя пин источник клока для этих цепей использовать его имя для определения клока

c. или взять сразу имя клока сгенерированного на этом пине.

d. или в xdc сразу узнать имя клока автоматом сгенерированного на требуемом пине

set_clock_groups -name cg_AGEN -asynchronous \
  -group [get_clocks -include_generated_clocks -of [get_pins clk_wiz/inst/mmcm_adv_inst/CLKIN0]]
  ...

e. .. еще 3-4 способа получить желаемое разной степени извращенности.

 

Удачи! Rob.

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Приветствую!

 

a. поставить на эти сигналы в top атрибут keep.

b. или открыть дизайн после синтеза, и найдя пин источник клока для этих цепей использовать его имя для определения клока

c. или взять сразу имя клока сгенерированного на этом пине.

d. или в xdc сразу узнать имя клока автоматом сгенерированного на требуемом пине

set_clock_groups -name cg_AGEN -asynchronous \
  -group [get_clocks -include_generated_clocks -of [get_pins clk_wiz/inst/mmcm_adv_inst/CLKIN0]]
  ...

e. .. еще 3-4 способа получить желаемое разной степени извращенности.

 

Удачи! Rob.

 

По пункту "а". А что этот атрибут даст?

По пункту "b". Такой способ рассматривал, но так и не понял как это имя узнать. Что ни указываю все не находит.

По пункту "с". Не понял.

По пункту "d". Пытался сделать так, но видимо постоянно где-то ошибаюсь.

 

Указанный вами код, я так понимаю, задает клоковую группу на clk0, который прицеплен в пину clk_out0 ip корки.

Мне нужно задать аналогично группу на clk1. И далее задать желаемый констрейн false_path между этими группами. Я все правильно понимаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветству.!

По пункту "а". А что этот атрибут даст?

По пункту "b". Такой способ рассматривал, но так и не понял как это имя узнать. Что ни указываю все не находит.

По пункту "с". Не понял.

По пункту "d". Пытался сделать так, но видимо постоянно где-то ошибаюсь.

 

Указанный вами код, я так понимаю, задает клоковую группу на clk0, который прицеплен в пину clk_out0 ip корки.

Мне нужно задать аналогично группу на clk1. И далее задать желаемый констрейн false_path между этими группами. Я все правильно понимаю?

Забыл про пункт Alpha & Omega- читаем мануалы

a. сохраняет(в основном) сигнал как есть - то есть с большой вероятностью Вы увидите цепи clk0, clk1 в топе

ь. Еще раз - открываем нетлист дизайна после синтеза Open Synthesized Design находим модуль clk_wiz и смотрим от куда идет веревочка клока. Выбираем цепь или пин и в general смотрим Name

c. Смотрим хотя бы в Report Clock Network или get_clocks -of [get_nets|get_pins name_from_punkt_b]

d. set_clock_groups -name cg_AGEN -asynchronous ... создает группу в которой клоки упомянутые в разных -group определяются как асинхронные один к другому - пути между ними не будут учитывается при анализе

делаем в tcl консоле set_clock_groups -help и читаем

 

Удачи! Rob.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Приветству.!

Забыл про пункт Alpha & Omega- читаем мануалы

a. сохраняет(в основном) сигнал как есть - то есть с большой вероятностью Вы увидите цепи clk0, clk1 в топе

ь. Еще раз - открываем нетлист дизайна после синтеза Open Synthesized Design находим модуль clk_wiz и смотрим от куда идет веревочка клока. Выбираем цепь или пин и в general смотрим Name

c. Смотрим хотя бы в Report Clock Network или get_clocks -of [get_nets|get_pins name_from_punkt_b]

d. set_clock_groups -name cg_AGEN -asynchronous ... создает группу в которой клоки упомянутые в разных -group определяются как асинхронные один к другому - пути между ними не будут учитывается при анализе

делаем в tcl консоле set_clock_groups -help и читаем

 

Удачи! Rob.

Спасибо. Разжовано достаточно подробно. В понедельник попробую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация