Читаю Post-Place & Route Static Timing report.

Вижу:

Timing constraint: Default OFFSET IN BEFORE analysis for clock "IOBlock1/clk_in_int_buf"

Т.е. проверяем по сути setup timе для входных триггеров. Который должен быть положительным.

Смотрим дальше:

52 paths analyzed, 13 endpoints analyzed, 0 failing endpoints
0 timing errors detected.

Ошибок нет.

Смотрим как они считают:

Offset (setup paths): 0.417ns (data path - clock path + uncertainty)

Т.е. данные идут дольше чем клок. По идее это же отрицательный SETUP TIME????? Клок придёт ещё до того как данный дойдёт до триггера. Какая же это норма????

Если смотреть есть ещё:

Offset (hold paths): -1.127ns (data path - clock path + uncertainty)

Который считается по этой же формуле но уже для самых худших параметров температуры и питания.

Он уже отрицательный. Хотя по логике как раз отличный setup time.

Собственно вопросы:

1. Почему имеем положительный и отрицательный SETUP TIME и всё равно 0 timing errors???
2. Почему расчёт идёт именно так а не наоборот: clock path-data path
3. В чём ошибка моих рассуждений?
4. Где почитать про эти setup paths и hold paths??? Может я их неверно трактую?