[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
イベントカレンダー

カレンダー
10 | 2017/11 | 12
- - - 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 - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数