RTL シミュレーションでハードウェアの一部を検証するための、単純で十分に正確なフィルターをコーディングしようとしています。デザイン内のすべてのフリップフロップを 0 または 1 にランダムに初期化することで、チップのフリップフロップに固有のランダム性をシミュレートしています。これは、電源投入時にチップのフリップフロップがランダムな値を取得することに対応しています。また、リセット ツリー (リセット ツリーにはフィードバック ループがない) のフロップをランダム化しています。これは、リセット ラインで誤ったグリッチが発生する可能性があることを意味します。
例えば
||| VVV N 番目のリセット ツリー フロップ +----+ +----+ +----+ / / +----+ リセット_イン | | | 0 | | | 1 | | | 0 / / | | | リセットアウト -------->D Q>----->D Q>----->D Q>---- / ... / -->D Q>---- | | | | | | | | | | | | \ \ | | | | | | | | | | | | | | | \ \ | | | +^---+ +^---+ +^---+ / / +^---+ | | | | | | / / | clk ------+------------+------------+---------/ / ---+
リセットのように見える 0->1->0 が表示されますが、実際にはグリッチです。
特定の数の連続する 1 の値を検索して、今見たリセットがリセット コントローラーからのリセットか偽のリセットかを判断するフィルターを作成したいと考えています。
これは統計であり、おそらくポアソン分布に関連していることはわかっていますが、N ビットのセット内の X 連続ビットが 1 である確率をどのように判断すればよいでしょうか?
PS はい。4-val RTL シミュレーションを認識しています。これも行っていますが、一部の Verilog コンストラクトは、X と Z を伝搬するときに十分な悲観論を持っていません。