реклама на сайте
подробности

 
 
> Вопрос по описанию констрейна.
Iptash
сообщение Nov 4 2012, 19:10
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Здравствуйте все.
Как правильно описать констрейн?
Код
module XX ( input clk, input IN_1);

next_mod YY (
                  .clk(clk),
                  .IN_1(IN_1)
                  );
endmodule

module next_mod (input clk, input IN_1);
  always @ (posedge clk) begin
      if(IN_1) begin
        ...
       end
endmodule


здесь нужно описать максимальную задержку сигнала со входа IN_1 до if(IN_1) в модуле next_mod.
Код
set_max_delay -from [get_ports {IN_1}] -to [get_??? {IN_1}] 5ns

с порта куда? (-to [get_???(IN_1}])

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Iptash
сообщение Nov 5 2012, 13:42
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Практически, при измерении временных данных с заполнением 5МГц, если не вскармливать данный констрейн, результаты хаотично прыгают. С констрейном все отлично. На сколько
я помню если делать set_max_delay -from [get_ports {IN_1}] -to [get_pins {IN_1|combout}] (скорее всего вот так правильно), то тоже все нормально. Поэтому и вопрос как же все таки правильно?
Go to the top of the page
 
+Quote Post
winipuh
сообщение Nov 5 2012, 14:36
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 31-10-12
Пользователь №: 74 189



Цитата(Iptash @ Nov 5 2012, 17:42) *
Практически, при измерении временных данных с заполнением 5МГц

Зачем практически? TimeQuest же есть! sm.gif

Вот, смотрите
Код
"tst.v"
module tst (input clk, input en1, input en2, output dout);
    reg d;
    always @(posedge clk)
        if (en1 & en2) d <= ~d;
    assign dout = d;
endmodule

"test.sdc
derive_clock_uncertainty
create_clock -period 50MHz -name {clk} [get_ports {clk}]

Собираем проект, запускаем в квартусе Tools->Netlist Viewers->Technology Map Viewer (Post-Mapping)
Прикрепленное изображение

Отсюда получаем, что нужно прописать задержку от портов en1 и en2 до входа триггера - имя триггера (cell) "d".
Соответственно полное имя пины будет d|d (см. статьи des00 - ссылка выше)
В данном примере это можно сделать такими способами:
1) set_max_delay -from [get_ports {en*}] -to [get_pins {d|d}] 5.0
2) set_max_delay -from [get_ports {en*}] -to [get_registers {d}] 5.0

Чтобы вывести репорт о величине задержке (для данного примера), используйте в консоли TimeQuest-а следующие команды:
report_path -from [get_ports {en*}] -to [get_pins {d|d}] -panel_name "bla-bla )))" - выводит максимальную задержку
report_path -from [get_ports {en*}] -to [get_pins {d|d}] -min_path -panel_name "bla-bla )))" - выводит минимальную задержку

Попробуйте сначала вывести репорт, когда в sdc-файле не задана max_delay.
Потом задайте max_delay, пересоберите проект и посмотрите репорт опять. Убедитесь, что квартус Ваше желание удовлетворил (или вывел предупреждение, что он Ваше желание понял, но выполнить не смог sm.gif ).
Можно таким же макаром задать min_delay и посмотреть, как квартус реагирует на ваши хотелки.

хмм... Интересно, а почему TimeQuest не выдает предупреждений, если требование по max_delay не выполняется?
set_max_delay -from [get_ports {en*}] -to [get_pins {d|d}] 2.0
TimeQuest рапортует, что максимальная задержка "From node en1 To node d|d" составляет 2.277 нс. Однако никаких предупреждений по этому поводу не выводит...
Нужен des00!!! sm.gif


Попутно вопрос - а зачем Вы используете констрейнт set_max_delay? Какие условия задачи и какие цели? Ведь здесь не учитывается задержка клока...

Сообщение отредактировал winipuh - Nov 5 2012, 15:01
Go to the top of the page
 
+Quote Post
Iptash
сообщение Nov 5 2012, 16:18
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Спасибо. Осталось далее поизучать до полного понимания процессов, что-куда-и зачем.
Цитата(winipuh @ Nov 5 2012, 18:36) *
Попутно вопрос - а зачем Вы используете констрейнт set_max_delay? Какие условия задачи и какие цели? Ведь здесь не учитывается задержка клока...

Задача, точное измерение периодов. Задержку клока не учитываю, потому что его переод очень мал по отношению ко вх. сигналу. Во всяком случае работает нормально. А вот
вх. сигналы без задания констрейнов, так не работает.
Go to the top of the page
 
+Quote Post
winipuh
сообщение Nov 5 2012, 16:31
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 31-10-12
Пользователь №: 74 189



Цитата(Iptash @ Nov 5 2012, 20:18) *
вх. сигналы без задания констрейнов, так не работает.

Я так понимаю, что входной сигнал асинхронный по отношению к клоку в ПЛИС? Против метастабильности цепочку триггеров поставили? Потому что тогда величина задержки уже ни на что влиять не будет.

Сообщение отредактировал winipuh - Nov 5 2012, 16:32
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 20:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016