Dear Community,
I am calling fork/join_none inside task but it is not working.
This is my code:
class myCcixUvmVirtualSequence_passivePCIeEP extends uvm_sequence;
task initPcieLink();
$display("\n[initPcieLink] ### Before loop \n");
deviceState = readReg(PCIE_ST);
while (deviceState[15:0] != PCIE_Active) begin
deviceState = epCfg.readReg(PCIE_ST);
#100;
$display("\n[initPcieLink] ### Waiting for device to become ACTIVE \n");
end
$display("\n[initPcieLink] ### device is in ACTIVE state \n");
endtask
virtual task configSeq(uvm_phase phase);
phase.raise_objection(this, "Init PCIE link for CCIX");
initPcieLink(); // prints message "Waiting for device to become ACTIVE "
endtask : configSeq
virtual task pre_body();
// configure the test
fork
configSeq(starting_phase);
join_none
$display(" VirtualSeqLib AFTER configSeq"); // <- Here I expect to see the display message in the log
endtask
endclass
So the code always loops on configSeq phase and never goes to $display statement. Looks like a fork/join_none does not working.
Can you please share some your thoughts on such behavioral?
This is simulation log:
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE