Q. How to filter data only if valid=1 and discard other data?
Is there a better way without explicit index manipulation ?
EDA Link: EDA Playground
class valid_data_detect;
rand bit valid[$];
rand bit data[$];
constraint vld_data_size {
valid.size() inside {[5:8]};
data.size() == valid.size();
solve valid before data;
}
endclass
module test;
valid_data_detect datavld;
initial begin
datavld=new();
datavld.randomize();
foreach(datavld.valid[i]) begin
$display("Before Valid=%0d, Data=%0d", datavld.valid[i], datavld.data[i]);
end
for(int i=0;i<=datavld.valid.size()-1;i++) begin
if (datavld.valid[i]!=1) begin
datavld.data.delete(i);
datavld.valid.delete(i);
i- -;
end
end
foreach(datavld.valid[i]) begin
$display("After Valid=%0d, Data=%0d", datavld.valid[i], datavld.data[i]);
end
end
endmodule