systemverilog でデジタル設計を行っているときに、競合状態に関する問題に遭遇しました。
デザインを駆動するテストベンチ (これは変更できません) が、競合状態のためにデザイン内の特定のレジスタが正しく機能しないように入力を駆動します。
以下は、何が起こっているかを示す eda-playground の例です (入力は、クロックの「前」に 15ns で変化します)。
http://www.edaplayground.com/x/rWJ
設計 (この場合は単純なレジスタ) をこの特定の問題に耐性のあるものにする方法はありますか? 必要なのは、「out_data <= preponed(in_data);」のようなステートメントです。または、入力信号の変更の順序を無関係にする類似のもの。
SystemVerilog LRM の #1step について読んだことがありますが、それをどのように使用するか、この特定の問題に役立つかどうかはわかりません。