Почему не синтезируются задержки
Поскольку задержки, как известно, сложно реализовать.
Для начала: ячейка задержки имеет огромный диапазон.В зависимости от напряжения и температуры и даже больше: в процессе, фактическая задержка может варьироваться в 2 и более раз.В Verilog очень просто указать задержку в 2 нс, это очень, очень трудно сделать, и в настоящее время (почти?) Невозможно реализовать в кремнии без каких-либо эталонных часов.Я могу представить, что если кто-то сделает задержки синтезируемыми, вы должны указать их как (min, typ, max) задержки.
Места, где вы находите задержки, находятся в ячейках ввода-вывода, высокоскоростных портах ser-des, интерфейсе DDR и т. Д. В них есть калибровка или какая-либо другая схема обучения для управления задержкой.Даже тогда вы обнаружите, что регулярная калибровка необходима для компенсации дрейфа из-за температуры и напряжения.
Если у вас есть ПЛИС, это становится еще сложнее.Как вы можете видеть из времени, большая часть задержки в настоящее время находится в сетях.Таким образом, если вы хотите задержку в 2 нс, вы должны вычесть задержку из ячейки задержки и обратно.Это снова работает только в том случае, если задержка приводит только к одному шлюзу.Если вам нужно управлять несколькими конечными точками, задержка для каждой будет отличаться, если только вам не повезет, что каждый путь имеет одинаковую задержку (длина, сопротивление и емкость.)
Кроме того, вам нужен программируемая ячейка задержки.Я понятия не имею, насколько большими они будут, какой диапазон (какова задержка в 2 секунды?) Или сколько вам нужно.
Итог: сообщество ASIC / FPGA обнаружило, что задержки вызывают больше проблем, чем онирешать.Это один из тех «коротких путей», которые в большинстве случаев оказываются «тупиковыми».