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

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

Всем привет.

 

Дело происходит в 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.

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...