Как эффективно включить все rand_mode после частичного выключения в systermverilog - PullRequest
0 голосов
/ 29 августа 2018

У меня есть классы, как показано ниже:

class h1_c;
  rand bit[1:0] h1_a;
  rand bit[1:0] h1_b;
  h2_c h2;
  function new()
    h2 = new();
  endfunction
endclass

class h2_c;
  rand bit[1:0] h2_a;
  rand bit[1:0] h2_b;
  h3_c h3;
  function new()
    h3 = new();
  endfunction
endclass

class h3_c;
  rand bit[1:0] h3_a;
  rand bit[1:0] h3_b;
endclass

module p1;   
  h1_c h1;

  initial begin
    h1 = new();
    h1.h2.h2_a.rand_mode(0);
    h1.h2.h3.h3_a.rand_mode(0);
    h1.randomize();
    //How to turn all rand_mode on effectively after I turn them off seperately.
    //which like h1.*.rand_mode(1);
  end
endmodule

Я отключаю режим rand некоторых переменных и хочу включить их все эффективно после randomize(). Есть ли эффективный способ сделать это?

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете опустить имя переменной при использовании rand_mode (1) для установки всех переменных в объекте, в соответствии с разделом 18.8 LRM 1800-2017

т.е.

h1.rand_mode(1);
// is equivalent to 
h1.h1_a.rand_mode(1);
h1.h1_b.rand_mode(1);
h1.h1_c.rand_mode(1);

И это должно рекурсивно сойти в h1.h1_c с установкой его переменных rand_mode. Но я бы проверил ваш инструмент, так как это поведение не очевидно из чтения LRM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...