Я пытаюсь написать простой, достаточно точный фильтр для проверки аппаратного обеспечения в RTL-симуляции. Мы моделируем случайность, присущую триггерам чипа, путем случайной инициализации всех триггеров в дизайне либо 0, либо 1. Это соответствует тому, что триггеры чипа получают некоторое случайное значение во время включения питания. Мы также рандомизируем флопы в дереве сброса (где дерево сброса не имеет петель обратной связи), что означает, что вы можете получить ложные сбои на линиях сброса.
например.
|||
VVV Nth reset-tree flop
+----+ +----+ +----+ / / +----+
reset_in | | 0 | | 1 | | 0 / / | | reset_out
-------->D Q>----->D Q>----->D Q>---- / ... / -->D Q>----
| | | | | | \ \ | |
| | | | | | \ \ | |
+^---+ +^---+ +^---+ / / +^---+
| | | / / |
clk ------+------------+------------+---------/ / ---+
Вы увидите 0-> 1-> 0, который выглядит как сброс, но на самом деле это сбой.
Я хочу построить фильтр, который ищет определенное количество последовательных 1 значений, чтобы определить, был ли только что сброшенный сброс, сброс, исходящий от контроллера сброса, или ложный сброс.
Я знаю, что это статистика и, возможно, она связана с распределением Пуассона, но как определить вероятность того, что любые X последовательных битов в наборе из N битов равны 1?
P.S. Да. Я в курсе 4-валовой RTL симуляции. Мы также делаем это, но некоторые конструкции Verilog не имеют достаточного пессимизма при распространении X и Z.