TimeQuest для чайников. Часть 1 (Введение)

В свое время фирма Altera, желая быть ближе к народу (удобство работы в ее софте это большой плюс), создала инструмент под названием Timing Analyzer. Было все просто, прописал тактовые частоты проекта и нажал run для анализа. Но проекты становились все сложнее, частоты все выше, а количество частот в проекте все больше, возможностей Timing Analyzer стало нехватать.

Нужен был более гибкий инструмент задания ограничений и их учета при имплементации проекта. И такой инструмент нашелся у синопсиса. Это скрипты констрейнов для проекта. Для анализа проектов на основе данных скриптов и появился TimeQuest.

С этого момента произошло разделение Timing Analyzer на Classic Timing Analyzer и TimeQuest Timing Analyzer. Сама фирма Altera не рекомендует использовать Clasic TA, потому как качество синтеза и анализа с этим анализатором хуже. Более того, для новых семейств ПЛИС возможности выбора Classic TA нет.

Очень часто от начинающих и не только альтеровидов можно слышать реплики "Зачем мне TimeQuest, он такой сложный" или "Помогите разобраться как он работает". Что могу сказать таким людям? Времена задания одной цифры в красивом ГУЙ прошли, нужно учиться писать скрипты для TimeQuest. А если хотите еще большего хардкора, то поработайте с Xilinx и его скриптами %)

Итак начнем с азов.

Все констрейны для TimeQuest пишутся в файле с расширением *.sdc. Altera не стала изобретать велосипед и выбрала Synopsys Design Constraint формат. Этот формат представляет собой TCL скрипт, в котором констрейны прописываются с помошью предопределенных комманд. Как вы увидите в этом нет ничего сложного.

Рассмотрим простой фпгашный проект HelloWorld.

module hello (input clk, output led) ;

  logic [31 : 0] cnt;

  always_ff @(posedge clk) begin
    cnt <= cnt + 1'b1;
    led <= cnt[31];
  end

endmodule

Как мы видим в этом проекте всего 2 порта: клок и светодиод. Нам нужно задать ограничения на тактовую частоту и описать, как анализировать вывод светодиода. Для этого создаем файл hello.sdc.

Клоки описываются с помощью команды create_clock, полный формат которой можно посмотреть в хендбуке на квартус. Пусть у нас используется генератор с частотой 10МГц.

create_clock -period 10MHz -name {clk} [get_ports {clk}]

Видите ничего сложного, надо указать частоту, логическое имя клока и место источник этого клока (в данном случае это порт ПЛИС).

Так ли важно в этом примере, какова задержка вывода сигнала на светодиод? Естественно нет, поэтому нужно описать его как путь, который анализировать не нужно.

set_false_path -from [get_clocks {clk}] -to [get_ports {led}]

Я написал что анализировать путь от триггера, который тактируется логическим клоком clk, до порта фпга led не нужно, ничего сложного

На этом создание файла констрейнов, для одночастотного проекта типа "мигание светодиодом" закончено. Как видите скрытых таинств нет %)

Комментарии

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

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

Ооочень Нужный блог!

Автору респект! Хочется продолжения!!!

Всё здорово написано. Хочется

Всё здорово написано. Хочется продолжения.

БОЛЬШОЕ СПАСИБО!

Большое спасибо!

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

Содержание этого поля является приватным и не предназначено к показу.
  • 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>
  • Использовать как разделитель страниц.

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