TimeQuest для чайников. Часть 4 (Как много интерфейсов разных)

Source-Synchronus Input

Вот мы и подходим к последнему типу рассматриваемых интерфейсов. Как мы уже рассматривали в таких интерфейсах тактовая частота идет от отдельного генератора или источника. И в данном случае описание констрейнов идет через виртуальный клок. Рассмотрим опять наш АЦП 

module adc (input clk, input [9 : 0] adc_dat, output logic [9 : 0] data);

  logic [9 : 0] adc_io_reg;
  logic [9 : 0] adc_reg;

  always_ff @(posedge clk) begin
    {adc_reg, adc_io_reg} <= {adc_io_reg, adc_dat};
  end

  always_ff @(posedge clk) begin
    data <= adc_reg;
  end

endmodule

sdc файл в этом случае будет следующий

set_time_format -unit ns -decimal_places 3

derive_clock_uncertainty

create_clock -period 100MHz -name {clk} [get_ports {clk}]
create_clock -period 100MHz -name {virt_clk}

set_clock_groups -exclusive -group {clk virt_clk}

set CLK_as_delay_max [expr 30.0*0.007]
set CLK_as_delay_min [expr 30.0*0.007]

set CLK_ad_delay_max [expr 30.0*0.007]
set CLK_ad_delay_min [expr 30.0*0.007]

set ADC_DATA_delay_max [expr 20.0*0.007]
set ADC_DATA_delay_min [expr 20.0*0.007]

set ADC_Tco_max       6.5 
set ADC_Tco_min       2.5

set_input_delay -clock {virt_clk} -max [expr $CLK_as_delay_max + $ADC_Tco_max + $ADC_DATA_delay_max - $CLK_ad_delay_max] [get_ports {adc_dat[*]}]


set_input_delay -clock {virt_clk} -min [expr $CLK_as_delay_min + $ADC_Tco_min + $ADC_DATA_delay_min - $CLK_ad_delay_min] [get_ports {adc_dat[*]}]

Как вы видите sdc файл аналогичен тому что использовался для Source Synchronus Output и построен по тем же правилам. Собираем, запускаем анализ и

Как видите все в шоколаде %) 

 

Вот мы с вами и закончили рассмотрение самой большой и требующей тонкой настройки и шаманства область приложения TimeQuest. Некоторые могут сказать "зачем нам что-то констрейнить и так сойдет", что ж это их право. Я же думаю, что знать, что твое устройство будет работать во всех Worst Case без ошибок по времянке лучше, чем сидеть и ждать пока где-то эта ошибка выстрелит  %)

ПредпросмотрAttachmentSize
Clock_Setup_and_Hold_Slack_Explained.doc191.5 КБ
mnl_timequest_cookbook.pdf481.87 КБ
an433.pdf1.38 МБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Спасибо Автору! Всё очень

Спасибо Автору! Всё очень понятно описано! Нужно поправить ссылку на картинку под строкой ...С помошью Report Worst Case Path смотрим что же происходит в интерфейсе.
des00 аватар

Спасибо, поправил

Спасибо, поправил

Самоя первая картинка не

Самоя первая картинка не соответствует превью.(я так понимаю превью правильнее)

(уточнение) Самая первая

(уточнение)

Самая первая картинка на 3й странице не соответствует превью.(я так понимаю превью правильнее)

set_output_delay -clock

set_output_delay -clock [get_clocks {oclk}] -min -5.0 [get_ports {data[*]}]

как получается что мин делай отрицательная, как понять это физически???? 

я понимаю она вычислялась по формуле OmD = min tD (EXT) – tH (EXT) – max tCS (EXT),  

des00 аватар

Физически это понимается

Физически это понимается очень просто. Любые задержки задаются относительно фронтов таковой частоты приемника данных. В одном случае мы задаем запас для времени предустановки, в другом случая для времени удержания.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Использовать как разделитель страниц.

Подробнее о форматировании