Then I got this error with QuestaSim 10.2:
# ** Failure: (vsim-4) ****** Memory allocation failure. *****
# Attempting to allocate 18446744071562067984 bytes
Without the FOREACH constraint, the simulation runs fine.
Your foreach iterative constraint gets unrolled into 2170624 individual constraints. Can you do this in a procedural loop inside pre_ or post_randomize()?
Then you construct this class in your main class, using the factory to add and override constraints for each element.
class main extends uvm_sequence_item;
`uvm_object_utils(packet);
element_t diff[2170624];
element_c element_h;
function new(string name="");
super.new();
element_h = element_c::type_id::create("element_h")
endfunction
function void post_randomize();
foreach(diff[i]) begin
element_h.randomize();
diff[i] = element_h.element;
end
endfunction
endclass
You would use pre_ or post_ randomize based on dependencies with other random variables in your packet.
Your foreach iterative constraint gets unrolled into 2170624 individual constraints. Can you do this in a procedural loop inside pre_ or post_randomize()?
Hi Dave,
Is it possible to override this iterative value from script.
(example: set SolveArrayResizeMax 0 for dynamic array)
If not means,How can i overcome this issue.
Note:
I have nearly 5,00,000 elements in that queue.