parent
2e1128b417
commit
6083480abb
|
|
@ -1471,9 +1471,12 @@ class RandomizeVisitor final : public VNVisitor {
|
||||||
AstMethodCall* const callp = new AstMethodCall{fl, exprp, "randomize", nullptr};
|
AstMethodCall* const callp = new AstMethodCall{fl, exprp, "randomize", nullptr};
|
||||||
callp->taskp(memberFuncp);
|
callp->taskp(memberFuncp);
|
||||||
callp->dtypeFrom(memberFuncp);
|
callp->dtypeFrom(memberFuncp);
|
||||||
return new AstAssign{
|
AstAssign* const assignp = new AstAssign{
|
||||||
fl, new AstVarRef{fl, outputVarp, VAccess::WRITE},
|
fl, new AstVarRef{fl, outputVarp, VAccess::WRITE},
|
||||||
new AstAnd{fl, new AstVarRef{fl, outputVarp, VAccess::READ}, callp}};
|
new AstAnd{fl, new AstVarRef{fl, outputVarp, VAccess::READ}, callp}};
|
||||||
|
return new AstIf{
|
||||||
|
fl, new AstNeq{fl, exprp->cloneTree(false), new AstConst{fl, AstConst::Null{}}},
|
||||||
|
assignp};
|
||||||
} else if (AstDynArrayDType* const dynarrayDtp = VN_CAST(memberDtp, DynArrayDType)) {
|
} else if (AstDynArrayDType* const dynarrayDtp = VN_CAST(memberDtp, DynArrayDType)) {
|
||||||
return createArrayForeachLoop(fl, dynarrayDtp, exprp, outputVarp);
|
return createArrayForeachLoop(fl, dynarrayDtp, exprp, outputVarp);
|
||||||
} else if (AstQueueDType* const queueDtp = VN_CAST(memberDtp, QueueDType)) {
|
} else if (AstQueueDType* const queueDtp = VN_CAST(memberDtp, QueueDType)) {
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ class unconstrained_dynamic_array_test;
|
||||||
rand int dynamic_array_1d[];
|
rand int dynamic_array_1d[];
|
||||||
rand int dynamic_array_2d[][];
|
rand int dynamic_array_2d[][];
|
||||||
rand Cls class_dynamic_array[];
|
rand Cls class_dynamic_array[];
|
||||||
|
rand Cls class_dynamic_array_null[];
|
||||||
|
|
||||||
function new();
|
function new();
|
||||||
// Initialize 1D dynamic array
|
// Initialize 1D dynamic array
|
||||||
|
|
@ -94,6 +95,8 @@ class unconstrained_dynamic_array_test;
|
||||||
class_dynamic_array[i] = new;
|
class_dynamic_array[i] = new;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class_dynamic_array_null = new[2];
|
||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function void check_randomization();
|
function void check_randomization();
|
||||||
|
|
@ -108,6 +111,9 @@ class unconstrained_dynamic_array_test;
|
||||||
foreach (class_dynamic_array[i]) begin
|
foreach (class_dynamic_array[i]) begin
|
||||||
`check_rand(this, class_dynamic_array[i].x)
|
`check_rand(this, class_dynamic_array[i].x)
|
||||||
end
|
end
|
||||||
|
foreach (class_dynamic_array_null[i]) begin
|
||||||
|
if (class_dynamic_array_null[i] != null) $stop;
|
||||||
|
end
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
endclass
|
endclass
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue