Возможна ли перезагрузка домена? - PullRequest
0 голосов
/ 01 июля 2019

У меня есть ICG, которая управляет часами.Включение ICG осуществляется из одного домена сброса, скажем, rst1.Стробированные часы управляют флопом из другого домена сброса, скажем, rst2.

Это «пересечение домена сброса» (RDC)?Может ли такой инструмент, как spyglass / jasper, найти эту проблему, как если бы он находил обычный RDC (существующий в пути данных)?

1 Ответ

0 голосов
/ 09 июля 2019

Я остановлюсь на этом, предоставив некоторую предысторию того, что я видел.

Во-первых, я бы сказал, что не существует такой вещи, как «Сбросить пересечение доменов».Я бы назвал это «Перекрытием домена часов, включающим сигнал сброса».Потому что сброс не отличается от D или Q при переходе от одной точки к другой в последовательной логике.

Для ясности скажем, что мы игнорируем RST1 / RST2 и говорим в терминах CLK1 и CLK2.RST1 является синхронным по отношению к CLK1 (с точки зрения деасерсации, как заявил Прадьюман Бисса) и RS2 таким же, но по отношению к CLK2.

Схема, которую вы описали, я предполагаю, выглядит следующим образом: Reset with CDC issue

Это проблема CDC, и , скорее всего, будет захвачено инструментом CDC (Джаспер, я думал, больше подходит для формальной проверки, поэтому он может не уловить это).Вещи, которые могут привести к тому, что NOT будет перехвачен инструментом CDC, будут любым типом дополнительных ограничений, которые будут добавлены.Скажем, вы сделали какое-то исключение между CLK1 и CLK2, или вы подстановили символом исключения или ячейкиЭто уберет это из списка ошибок, так что вы не увидите этого.

Проведя оценку CDC для конструкций с 50+ тактовыми сигналами, я могу вам сказать, что список ошибок настолько велик, что велики шансы, что вы прикрываете свойсобственные ошибки с неправильными исключениями / подстановочными знаками.

Возможно, эта схема все еще работает.В частности, если CLK1 (gated) активируется через некоторое время после сброса сброса.

Итак, чтобы ответить на ваш вопрос об инструменте, который его ловит, да, вероятно, так и будет.Конец здесь, прежде чем старик разглагольствовать.

Но я бы поспорил, и я полагаю, что Прадьюман Бисса говорит о том, что вы должны создать модуль / ячейку, которая предоставляет вам эту функциональность без необходимости явно определять логику.Это также позволяет снизить шансы на то, что вы вначале представите CDC.Иногда лучший способ устранить эти ошибки - это уменьшить вероятность того, что вы сделаете их в первую очередь.

Примером может быть что-то похожее на диаграмму ниже: Clock gate with Reset Sync

Затем вы можете создать его экземпляр в любое время, когда вам нужно будет поставить часы на место и выполнить соответствующий сброс с другим доменом часов.Очевидно, есть некоторые проблемы, связанные с необходимостью обеспечения того, чтобы сброс из CLK2 удерживался достаточно долго, чтобы синхронизация сброса могла его увидеть.

Я видел много проблем, когда люди берут что-то подобное и ставят логику вместопросто создать одну конкретную ячейку и создать ее, когда это необходимо.Количество стробов / флопов, необходимых для этой ячейки, как правило, минимально в общей схеме дизайна.

...