制約乱数生成
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/12 07:43 UTC 版)
「SystemVerilog」の記事における「制約乱数生成」の解説
整数実体はクラス定義内であれ、何らかのスコープ内の独立した変数であれ、ある制約に基づいた乱数を設定可能である。これは検証のためにランダムなシナリオを生成する際に便利である。 クラス定義内で、修飾子 rand や randc を指定することで変数に乱数を設定する。randc は順列型の乱数を生成する。つまり、同じ値を生成する前に可能な範囲の全ての値を一通り必ず生成する。修飾子のない変数を乱数化しない。 class eth_frame; rand bit [47:0] dest; rand bit [47:0] src; rand bit [15:0] type; rand byte payload[]; bit [31:0] fcs; rand bit [31:0] fcs_corrupt; constraint basic { payload.size inside {[46:1500]}; } constraint good_fr { fcs_corrupt == 0; }endclass この例では、fcs というフィールドを乱数化していない。実際、これはCRC生成の計算に関するコードであり、fcs_corrupt フィールドはFCSエラーを発生するのに使う。2つの制約により、イーサネットのフレームの検査をしようとしていることがわかる。制約は選択的に適用可能で、上の例では壊れたフレームを生成するのに制約選択機能を用いる。制約には複雑なものも指定でき、変数間の関係や含意や繰り返しを指定できる。SystemVerilog の制約解読機能は解があれば必ずそれを見つけることを求められるが、解の探索にかかる時間を保証しない。
※この「制約乱数生成」の解説は、「SystemVerilog」の解説の一部です。
「制約乱数生成」を含む「SystemVerilog」の記事については、「SystemVerilog」の概要を参照ください。
- 制約乱数生成のページへのリンク