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

 
 
> TimeQuest, кто ж тебя выдумал?, поговорим на простом нестандартном примере
ViKo
сообщение Jan 7 2018, 11:06
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Возясь со своим реальным проектом, сделал простой учебный. Пытаюсь разобраться в констрейнах (хотя некогда считал себя достаточно грамотным в этой теме).
Вот SystemVerilog проект. Ниже - констрейны для него. Работаю в Quartus 13.1, ПЛИС EP3C5E144I7.
Код
module ClockDivider (
    (* chip_pin = "84" *)    input    ResetN,
    (* chip_pin = "89", altera_attribute = "-name io_standard lvds" *) input ClkIn,
    (* chip_pin = "28" *)    output    ClkOut,
    (* chip_pin = "30" *)    input    ClkSel,
    (* chip_pin = "32" *)    input    DataIn,
    (* chip_pin = "33" *)    output    DataOut
);

    bit        ClkDiv;
    always_ff @(posedge ClkIn, negedge ResetN)
        if (!ResetN)    ClkDiv <= 0;
        else            ClkDiv <= !ClkDiv;

    always_comb
        if (!ClkSel)    ClkOut = ClkIn;
        else            ClkOut = ClkDiv;
    
    always_ff @(posedge ClkOut, negedge ResetN)
        if (!ResetN)    DataOut <= 0;
        else            DataOut <= DataIn;

endmodule : ClockDivider


Код
set_time_format -unit ns -decimal_places 3

create_clock -name clk_in -period "100 MHz" -waveform {0 5.0} ClkIn

create_clock -name clk_virt -period "100 MHz"

create_generated_clock -name clk_div ClkDiv -divide_by 2 -source ClkIn

# derive_clocks

derive_clock_uncertainty

set_input_delay -clock clk_virt -min 0.0 ClkSel
set_input_delay -clock clk_virt -max 1.0 ClkSel

set_input_delay -clock clk_virt -min 0.0 ResetN
set_input_delay -clock clk_virt -max 1.0 ResetN

set_input_delay -clock clk_virt -min 0.0 DataIn
set_input_delay -clock clk_virt -max 1.0 DataIn

set_output_delay -clock clk_virt -min -2.0 ClkOut
set_output_delay -clock clk_virt -max -1.0 ClkOut

set_output_delay -clock clk_virt -min -2.0 DataOut
set_output_delay -clock clk_virt -max -1.0 DataOut

Вопросы.
Почему работает описание триггера - делителя тактовой частоты, просто делить частоту на 2, без задержек в самом триггере? Как учитываются задержки в триггере?
Почему для выходных сигналов пришлось сделать отрицательную задержку, иначе ограничения не выполнялись?
Когда смотрел в TimeQuest временнЫе пути, Launch Clock запускался по срезу. Прикладываю картину ниже.
Правильные ли вообще эти констрейны?
Любые советы почитаю с интересом. (К сожалению, ответить смогу только завтра, ибо предстоит культурное мероприятие).

Вот картина-отчет. Как ее интерпретировать?

Нужно ли описывать сигнал после мультиплексора как тактовый? Пишут, вроде, нужно. А что же TimeQuest не ругается?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shivers
сообщение Jan 11 2018, 05:30
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Виртуальный клок нужен чтобы достроить граф STA на интерфейсах: по входу он создает входную арку, а по выходу - выходную. При этом можно варьировать тип арки, к примеру - выбирать фронт (rise или fall), выбирать тип проверки для этой арки (setup или hold). Но поскольку арка должна иметь два конца (иначе путь будет unconstrained), то виртуальный клок должен быть синхронен принимающему клоку (по входу) и/или запускающему (по выходу). Виртуальных клоков можно создавать сколько угодно. Но и в схеме может быть много асинхронных клоков, и тогда надо следить - какой виртуальный клок синхронен какому внутреннему клоку. Соответственно, при создании виртуальных клоков потребуется задавать дополнительные фалзпасы.

Требование алтеры констрейнить интерфейсы виртуальным клоком выглядит странно. Если констрейнить синхронный вход не относительно собственного клока, а относительно виртуального, то действительно - тайминг будет отличаться на величину uncertainty и drive adjustment клокового пина (поскольку к виртуальному клоку эти твики не применяются). Но эту разницу в тайминге куда проще упрятать в величину задержки констрейнта, чем плодить виртуальные клоки. Обычно виртуальный клок используется, чтобы констрейнить асинхронные входы, чтобы они хоть как то контролировались тулом. Либо для каких то тонких моментов вроде DDR, где констрейнить интерфейс надо по обоим фронтам клока, и может оказаться проще задать два виртуальных клока со сдвигом фазы 50%, и написать констрейнт относительно переднего фронта каждого из них. Т.е. виртуальный клок - вещь специфическая, почти как кунгфу (применяется при необходимости). Но, альтере виднее, конечно. Возможно, у них тул так специфически работает, что необходимо заводить виртуальную копию каждому интерфейсному клоку.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   TimeQuest, кто ж тебя выдумал?   Jan 7 2018, 11:06
- - Flip-fl0p   А разве не надо писать констрейн между вашим клоко...   Jan 7 2018, 11:27
- - ViKo   Виртуальные такты - всегда снаружи ПЛИС. Ничего бо...   Jan 7 2018, 11:47
- - Alexey_Rostov   Цитата(ViKo @ Jan 7 2018, 14:06) Вопросы....   Jan 7 2018, 15:48
- - ViKo   Видимо, Tclk-q? Эти времена понятны. Но разве я их...   Jan 7 2018, 15:56
- - krux   текст, помеченный тегами [ b ] [ /b ] - моя писани...   Jan 7 2018, 16:45
- - Flip-fl0p   Вообще, если я не ошибаюсь то для мультиплексирова...   Jan 7 2018, 17:59
- - ViKo   krux, по делу есть чего сказать? Это и есть top. Н...   Jan 7 2018, 18:03
- - Flip-fl0p   А можно уточняющий вопрос ? Задача учебного проект...   Jan 7 2018, 18:28
- - Shivers   Пример плохой, потому что мультиплексор клоков в н...   Jan 7 2018, 18:46
|- - krux   ViKo по делу - выкинуть и переписать. но для нача...   Jan 7 2018, 18:53
- - ViKo   Жажду увидеть правильные констрейны. Выкинуть любо...   Jan 7 2018, 19:31
- - krux   я понял в чем проблема, в вашем чипе CLKCTRL так к...   Jan 7 2018, 19:46
- - ViKo   Насчет виртуальных тактов. Уже выбросил, заменил н...   Jan 8 2018, 13:03
|- - Flip-fl0p   Цитата(ViKo @ Jan 8 2018, 16:03) Однако, ...   Jan 9 2018, 05:46
- - wolfman   А если взять другую версию Квартуса?   Jan 9 2018, 07:36
|- - _Anatoliy   .   Jan 9 2018, 07:38
|- - ViKo   Цитата(wolfman @ Jan 9 2018, 10:36) А есл...   Jan 9 2018, 07:52
- - warrior-2001   На клоковый вход блока DataOut подан не клок! ...   Jan 9 2018, 12:36
- - ViKo   Кодset_time_format -unit ns -decimal_places 3 # c...   Jan 9 2018, 12:42
|- - warrior-2001   Цитата(ViKo @ Jan 9 2018, 15:42) Вам на т...   Jan 10 2018, 09:23
|- - ViKo   Цитата(warrior-2001 @ Jan 10 2018, 12...   Jan 10 2018, 09:42
|- - andrew_b   Цитата(warrior-2001 @ Jan 10 2018, 12...   Jan 10 2018, 09:48
- - Flip-fl0p   Я как понял ваших данных работает на частоте clk_d...   Jan 9 2018, 13:03
|- - ViKo   Цитата(Flip-fl0p @ Jan 9 2018, 16:03...   Jan 9 2018, 13:05
|- - Flip-fl0p   Цитата(ViKo @ Jan 9 2018, 16:05) А я же ц...   Jan 9 2018, 13:15
|- - ViKo   Цитата(Flip-fl0p @ Jan 9 2018, 16:15...   Jan 9 2018, 13:23
- - Flip-fl0p   Меня вот один вопрос мучает. А как Timequest поним...   Jan 10 2018, 10:19
|- - ViKo   Цитата(Flip-fl0p @ Jan 10 2018, 13:1...   Jan 10 2018, 10:26
- - ViKo   В результате изучения литературы сделал следующие ...   Jan 10 2018, 13:20
|- - _Anatoliy   Цитата(ViKo @ Jan 10 2018, 16:20) Вот, ка...   Jan 11 2018, 06:15
|- - ViKo   Цитата(_Anatoliy @ Jan 11 2018, 09:15) Зд...   Jan 11 2018, 07:45
|- - dima32rus   Цитата(ViKo @ Jan 11 2018, 10:45) и в дор...   Jan 11 2018, 09:45
|- - ViKo   Цитата(dima32rus @ Jan 11 2018, 12:45) Не...   Jan 11 2018, 10:02
|- - dima32rus   Цитата(ViKo @ Jan 11 2018, 13:02) # Задер...   Jan 11 2018, 10:45
|- - _Anatoliy   Цитата(dima32rus @ Jan 11 2018, 13:45) Пр...   Jan 11 2018, 10:52
|- - ViKo   Цитата(_Anatoliy @ Jan 11 2018, 13:52) Дл...   Jan 11 2018, 10:54
|- - dima32rus   Цитата(_Anatoliy @ Jan 11 2018, 13:52) Дл...   Jan 11 2018, 11:50
|- - ViKo   Цитата(dima32rus @ Jan 11 2018, 14:50) AD...   Jan 11 2018, 11:55
|- - dima32rus   Цитата(ViKo @ Jan 11 2018, 14:55) Во-перв...   Jan 11 2018, 12:02
- - Flip-fl0p   Вот наткнулся на интересную штуку по констрейнам: ...   Jan 16 2018, 10:13


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 00:56
Рейтинг@Mail.ru


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