Портирование моего ответа от SO . Что фокусируется на том, почему нецелесообразно синтезировать абсолютные задержки
При синтезе деревьев тактовых импульсов инструмент синтеза уравновешивает их, добавляя задержки, чтобы все узлы получали часы одновременно, поэтому может показаться, что инструмент синтеза действительно имеет возможность добавлять задержки.
Однако, когда производятся ASIC, есть разница в скорости, на высоком уровне это можно рассматривать как медленную, типичную и быструю. На практике существуют сотни вариантов этих углов, в которых определенные типы устройств в кремнии работают быстро, а другие медленно.
Эти углы кремния также имеют температурный рейтинг, в худшем случае это может быть + 140C для быстрого кремния и -40C для медленного кремния. Изменение задержки через буфер в этом случае может составлять от 1 нс до 30 нс.
Чтобы вернуть это в Verilog, если бы он #10
был синтезируемым, вы бы на самом деле получили 155 + -145, то есть от 10 нс до 300 нс, если вы также спроектировали что-то, #20
чтобы быть частью того же интерфейса или структуры управления, он будет иметь диапазон от 20 нс до 600 нс. , Поэтому все это не совсем верно в отношении вашего дизайна. Вы не получите точного #10
и того, #20
что было указано.
Деревья часов спроектированы таким образом, чтобы ограничить максимальные и минимальные задержки, и чтобы все узлы в дереве часов масштабировались относительно друг друга. Им никогда не дают такого строгого правила, что оно должно быть # 10 нс, поскольку это физически невозможно гарантировать в комбинаторной схеме.