конструктивных ограничений, как следует из названия, используются для того, чтобы определить дополнительные ограничения вашего дизайна, которые не могут быть захвачены из описания HDL. В качестве примера приводится команда create_clock
. Вы указали булавку синхронизации в своем описании HDL, почему этого недостаточно? Причина в том, что тактовый сигнал не является обычным сигналом - он используется как опорный сигнал синхронной логикой (триггерами).
Я полагаю, что вы знакомы с концепцией «задержка распространения» (через логические ворота). Вы хотите, чтобы все сигналы, возникающие на одном флопе и сэмплированные на другом, могли распространяться в течение одного тактового цикла. Теперь, полная задержка распространения, которую вы можете знать сразу после синтеза, потому что каждый логический вентиль в FPGA имеет связанную задержку распространения (просто подведите итог). Но как ваши инструменты анализа знают, что такое максимальная допустимая задержка распространения? Вы не указываете эти ограничения в HDL, верно? Это один из случаев, когда будет использоваться частота, указанная с помощью команды create_clock
, - она будет преобразована в период, и инструмент анализа предупредит вас, если какой-либо из комбинаторных путей в вашем дизайне займет больше времени, чем для периода времени.
В приведенном выше примере описано одно из действий, выполняемых инструментами статистического анализа времени (STA), в которых используются «конструктивные ограничения».
Другие виды инструментов, которые широко используют конструктивные ограничения, - это инструменты для обработки доменных имен (CDC). Эти инструменты используются в конструкциях, содержащих более одного такта. Концепции CDC описаны блестяще. here
Если вы берете один такт и генерируете еще один из него (например, делитель часов), вы хотите, чтобы инструмент CDC знал об этом, потому что тот факт, что эти часы связаны, важен. Ваш способ сообщить CDC-инструменту, что связанные часы связаны с ограничением create_generated_clock
.
ПРИМЕЧАНИЕ: приведенные выше примеры являются базовыми и отнюдь не всеобъемлющими.
Большое спасибо! Отличное объяснение. – Arash