In reply to dave_59:
In reply to zz8318:
A better way of coding this is using a separate mode variable with a distribution on that mode.
bit [31:0] my_exc_array[$] = {'h1234, 'h5678, 'hABCD, 'hFFFF};
rand enum {Range, Array} mode;
rand bit [31:0] my_addr;
rand bit [31:0] start_addr;
rand bit [31:0] end_addr;
constraint my_cons {
mode dist { Range:=1, Array:=1};
mode == Array -> my_addr inside {my_exc_array};
mode == Range -> { my_addr inside [start_addr:end_addr];
end_addr > start_addr; };
}
In this way the mode can be used to control sets of constraints.
Hi Dave,
I have tried running the above code in the simulator every time i ran mode is taking the value 0 and starting addr is 30 , ending addr is 32 and my_addr is 20
what is the significance of my_exc_array i didn’t understand. The question is my_addr is should be in the reange of start-addr & end_addr right ?