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