[SystemVerilog] rand_mode と constraint_mode

object.randmize() 時の挙動を制御できます。

Mode Value Meaning
rand_mode 0 OFF
1 ON
constraint_mode 0 OFF
1 ON
  • rand_mode
  • ※LRMより抜粋

    class Packet;
      rand integer source_value, dest_value;
      ... other declarations
    endclass
    
    int ret;
    Packet packet_a = new;
    // Turn off all variables in object
    packet_a.rand_mode(0);
    // ... other code
    
    // Enable source_value
    packet_a.source_value.rand_mode(1);
    
    ret = packet_a.dest_value.rand_mode();

    Verification Academy Forum にこんなのがあったりします。
    Illegal Value for a bit?!?

  • constraint_mode
  • ※LRMより抜粋

    class Packet;
      rand integer source_value;
      constraint filter1 { source_value > 2 * m; }
    endclass
    
    function integer toggle_rand( Packet p );
      if ( p.filter1.constraint_mode() )
        p.filter1.constraint_mode(0);
      else
        p.filter1.constraint_mode(1);
    
      toggle_rand = p.randomize();
    endfunction
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数