Предположим, что я хочу проверить последовательность изменения этих двух сигналов: sigA
и sigB
. Спецификация проекта заключается в том, что sigB
должно измениться раньше, чем sigA
(сначала B изменится, а затем изменится A)
Здесь предполагается, что я упростил RTL, в котором есть ошибка по отношению к вышеуказанной спецификации.
// buggy RTL
sigB = ~sigA;
В этом коде sigB
изменяется после sigA
из-за задержки инвертора.
Но в RTL, как правило, мы не можем заметить проблему - это своего рода событие с нулевой задержкой. Только мы можем реализовать это в симуляции на уровне ворот с задержкой, которая неожиданно sigB
фактически изменится немного позже, чем sigA
.
Я ищу способ использования SVA или другого метода, который может обнаружить эту проблему во время моделирования RTL, а не обнаруживать ее во время моделирования уровня ворот (что слишком поздно).