diff --git a/example/520N_MX/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/520N_MX/fpga_10g/tb/fpga_core/test_fpga_core.py
index 549dc3fc4c9545acd6bdb7de0d8c0ac44ab6b9d6..8c0e0c856d554bc3479beca46c1ea45dda0d08fc 100644
--- a/example/520N_MX/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/520N_MX/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,87 +45,87 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_source = XgmiiSource(dut.qsfp0_rxd_1, dut.qsfp0_rxc_1, dut.qsfp0_rx_clk_1, dut.qsfp0_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_sink = XgmiiSink(dut.qsfp0_txd_1, dut.qsfp0_txc_1, dut.qsfp0_tx_clk_1, dut.qsfp0_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_source = XgmiiSource(dut.qsfp0_rxd_2, dut.qsfp0_rxc_2, dut.qsfp0_rx_clk_2, dut.qsfp0_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_sink = XgmiiSink(dut.qsfp0_txd_2, dut.qsfp0_txc_2, dut.qsfp0_tx_clk_2, dut.qsfp0_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_source = XgmiiSource(dut.qsfp0_rxd_3, dut.qsfp0_rxc_3, dut.qsfp0_rx_clk_3, dut.qsfp0_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_sink = XgmiiSink(dut.qsfp0_txd_3, dut.qsfp0_txc_3, dut.qsfp0_tx_clk_3, dut.qsfp0_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_source = XgmiiSource(dut.qsfp0_rxd_4, dut.qsfp0_rxc_4, dut.qsfp0_rx_clk_4, dut.qsfp0_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_sink = XgmiiSink(dut.qsfp0_txd_4, dut.qsfp0_txc_4, dut.qsfp0_tx_clk_4, dut.qsfp0_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_source = XgmiiSource(dut.qsfp1_rxd_1, dut.qsfp1_rxc_1, dut.qsfp1_rx_clk_1, dut.qsfp1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_sink = XgmiiSink(dut.qsfp1_txd_1, dut.qsfp1_txc_1, dut.qsfp1_tx_clk_1, dut.qsfp1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_source = XgmiiSource(dut.qsfp1_rxd_2, dut.qsfp1_rxc_2, dut.qsfp1_rx_clk_2, dut.qsfp1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_sink = XgmiiSink(dut.qsfp1_txd_2, dut.qsfp1_txc_2, dut.qsfp1_tx_clk_2, dut.qsfp1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_source = XgmiiSource(dut.qsfp1_rxd_3, dut.qsfp1_rxc_3, dut.qsfp1_rx_clk_3, dut.qsfp1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_sink = XgmiiSink(dut.qsfp1_txd_3, dut.qsfp1_txc_3, dut.qsfp1_tx_clk_3, dut.qsfp1_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_source = XgmiiSource(dut.qsfp1_rxd_4, dut.qsfp1_rxc_4, dut.qsfp1_rx_clk_4, dut.qsfp1_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_sink = XgmiiSink(dut.qsfp1_txd_4, dut.qsfp1_txc_4, dut.qsfp1_tx_clk_4, dut.qsfp1_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_1, 6.4, units="ns").start())
         self.qsfp2_1_source = XgmiiSource(dut.qsfp2_rxd_1, dut.qsfp2_rxc_1, dut.qsfp2_rx_clk_1, dut.qsfp2_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_1, 6.4, units="ns").start())
         self.qsfp2_1_sink = XgmiiSink(dut.qsfp2_txd_1, dut.qsfp2_txc_1, dut.qsfp2_tx_clk_1, dut.qsfp2_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_2, 6.4, units="ns").start())
         self.qsfp2_2_source = XgmiiSource(dut.qsfp2_rxd_2, dut.qsfp2_rxc_2, dut.qsfp2_rx_clk_2, dut.qsfp2_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_2, 6.4, units="ns").start())
         self.qsfp2_2_sink = XgmiiSink(dut.qsfp2_txd_2, dut.qsfp2_txc_2, dut.qsfp2_tx_clk_2, dut.qsfp2_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_3, 6.4, units="ns").start())
         self.qsfp2_3_source = XgmiiSource(dut.qsfp2_rxd_3, dut.qsfp2_rxc_3, dut.qsfp2_rx_clk_3, dut.qsfp2_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_3, 6.4, units="ns").start())
         self.qsfp2_3_sink = XgmiiSink(dut.qsfp2_txd_3, dut.qsfp2_txc_3, dut.qsfp2_tx_clk_3, dut.qsfp2_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_4, 6.4, units="ns").start())
         self.qsfp2_4_source = XgmiiSource(dut.qsfp2_rxd_4, dut.qsfp2_rxc_4, dut.qsfp2_rx_clk_4, dut.qsfp2_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_4, 6.4, units="ns").start())
         self.qsfp2_4_sink = XgmiiSink(dut.qsfp2_txd_4, dut.qsfp2_txc_4, dut.qsfp2_tx_clk_4, dut.qsfp2_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp3_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp3_rx_clk_1, 6.4, units="ns").start())
         self.qsfp3_1_source = XgmiiSource(dut.qsfp3_rxd_1, dut.qsfp3_rxc_1, dut.qsfp3_rx_clk_1, dut.qsfp3_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp3_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp3_tx_clk_1, 6.4, units="ns").start())
         self.qsfp3_1_sink = XgmiiSink(dut.qsfp3_txd_1, dut.qsfp3_txc_1, dut.qsfp3_tx_clk_1, dut.qsfp3_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp3_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp3_rx_clk_2, 6.4, units="ns").start())
         self.qsfp3_2_source = XgmiiSource(dut.qsfp3_rxd_2, dut.qsfp3_rxc_2, dut.qsfp3_rx_clk_2, dut.qsfp3_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp3_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp3_tx_clk_2, 6.4, units="ns").start())
         self.qsfp3_2_sink = XgmiiSink(dut.qsfp3_txd_2, dut.qsfp3_txc_2, dut.qsfp3_tx_clk_2, dut.qsfp3_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp3_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp3_rx_clk_3, 6.4, units="ns").start())
         self.qsfp3_3_source = XgmiiSource(dut.qsfp3_rxd_3, dut.qsfp3_rxc_3, dut.qsfp3_rx_clk_3, dut.qsfp3_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp3_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp3_tx_clk_3, 6.4, units="ns").start())
         self.qsfp3_3_sink = XgmiiSink(dut.qsfp3_txd_3, dut.qsfp3_txc_3, dut.qsfp3_tx_clk_3, dut.qsfp3_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp3_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp3_rx_clk_4, 6.4, units="ns").start())
         self.qsfp3_4_source = XgmiiSource(dut.qsfp3_rxd_4, dut.qsfp3_rxc_4, dut.qsfp3_rx_clk_4, dut.qsfp3_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp3_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp3_tx_clk_4, 6.4, units="ns").start())
         self.qsfp3_4_sink = XgmiiSink(dut.qsfp3_txd_4, dut.qsfp3_txc_4, dut.qsfp3_tx_clk_4, dut.qsfp3_tx_rst_4)
 
     async def init(self):
diff --git a/example/ADM_PCIE_9V3/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/ADM_PCIE_9V3/fpga_10g/tb/fpga_core/test_fpga_core.py
index cdb9d8ebef9b02cf02e2f47b51be7ac984437c3d..d65d197cfb66f944b0940589bf2e7701ad7f53b9 100644
--- a/example/ADM_PCIE_9V3/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/ADM_PCIE_9V3/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,47 +45,47 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_0, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_0, 6.4, units="ns").start())
         self.qsfp_0_0_source = XgmiiSource(dut.qsfp_0_rxd_0, dut.qsfp_0_rxc_0, dut.qsfp_0_rx_clk_0, dut.qsfp_0_rx_rst_0)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_0, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_0, 6.4, units="ns").start())
         self.qsfp_0_0_sink = XgmiiSink(dut.qsfp_0_txd_0, dut.qsfp_0_txc_0, dut.qsfp_0_tx_clk_0, dut.qsfp_0_tx_rst_0)
 
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_0_1_source = XgmiiSource(dut.qsfp_0_rxd_1, dut.qsfp_0_rxc_1, dut.qsfp_0_rx_clk_1, dut.qsfp_0_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_0_1_sink = XgmiiSink(dut.qsfp_0_txd_1, dut.qsfp_0_txc_1, dut.qsfp_0_tx_clk_1, dut.qsfp_0_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_0_2_source = XgmiiSource(dut.qsfp_0_rxd_2, dut.qsfp_0_rxc_2, dut.qsfp_0_rx_clk_2, dut.qsfp_0_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_0_2_sink = XgmiiSink(dut.qsfp_0_txd_2, dut.qsfp_0_txc_2, dut.qsfp_0_tx_clk_2, dut.qsfp_0_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_0_3_source = XgmiiSource(dut.qsfp_0_rxd_3, dut.qsfp_0_rxc_3, dut.qsfp_0_rx_clk_3, dut.qsfp_0_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_0_3_sink = XgmiiSink(dut.qsfp_0_txd_3, dut.qsfp_0_txc_3, dut.qsfp_0_tx_clk_3, dut.qsfp_0_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_0, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_0, 6.4, units="ns").start())
         self.qsfp_1_0_source = XgmiiSource(dut.qsfp_1_rxd_0, dut.qsfp_1_rxc_0, dut.qsfp_1_rx_clk_0, dut.qsfp_1_rx_rst_0)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_0, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_0, 6.4, units="ns").start())
         self.qsfp_1_0_sink = XgmiiSink(dut.qsfp_1_txd_0, dut.qsfp_1_txc_0, dut.qsfp_1_tx_clk_0, dut.qsfp_1_tx_rst_0)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_1_source = XgmiiSource(dut.qsfp_1_rxd_1, dut.qsfp_1_rxc_1, dut.qsfp_1_rx_clk_1, dut.qsfp_1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_1_sink = XgmiiSink(dut.qsfp_1_txd_1, dut.qsfp_1_txc_1, dut.qsfp_1_tx_clk_1, dut.qsfp_1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_1_2_source = XgmiiSource(dut.qsfp_1_rxd_2, dut.qsfp_1_rxc_2, dut.qsfp_1_rx_clk_2, dut.qsfp_1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_1_2_sink = XgmiiSink(dut.qsfp_1_txd_2, dut.qsfp_1_txc_2, dut.qsfp_1_tx_clk_2, dut.qsfp_1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_1_3_source = XgmiiSource(dut.qsfp_1_rxd_3, dut.qsfp_1_rxc_3, dut.qsfp_1_rx_clk_3, dut.qsfp_1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_1_3_sink = XgmiiSink(dut.qsfp_1_txd_3, dut.qsfp_1_txc_3, dut.qsfp_1_tx_clk_3, dut.qsfp_1_tx_rst_3)
 
         dut.user_sw.setimmediatevalue(0)
diff --git a/example/ADM_PCIE_9V3/fpga_25g/tb/fpga_core/test_fpga_core.py b/example/ADM_PCIE_9V3/fpga_25g/tb/fpga_core/test_fpga_core.py
index 529f2d1058d7e233b739fab65dc63ca3b6b56565..ec5c34f306ae67abf5ad000605b04d669f8afd4c 100644
--- a/example/ADM_PCIE_9V3/fpga_25g/tb/fpga_core/test_fpga_core.py
+++ b/example/ADM_PCIE_9V3/fpga_25g/tb/fpga_core/test_fpga_core.py
@@ -45,47 +45,47 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 2.56, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_0, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_0, 2.56, units="ns").start())
         self.qsfp_0_0_source = XgmiiSource(dut.qsfp_0_rxd_0, dut.qsfp_0_rxc_0, dut.qsfp_0_rx_clk_0, dut.qsfp_0_rx_rst_0)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_0, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_0, 2.56, units="ns").start())
         self.qsfp_0_0_sink = XgmiiSink(dut.qsfp_0_txd_0, dut.qsfp_0_txc_0, dut.qsfp_0_tx_clk_0, dut.qsfp_0_tx_rst_0)
 
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_1, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_1, 2.56, units="ns").start())
         self.qsfp_0_1_source = XgmiiSource(dut.qsfp_0_rxd_1, dut.qsfp_0_rxc_1, dut.qsfp_0_rx_clk_1, dut.qsfp_0_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_1, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_1, 2.56, units="ns").start())
         self.qsfp_0_1_sink = XgmiiSink(dut.qsfp_0_txd_1, dut.qsfp_0_txc_1, dut.qsfp_0_tx_clk_1, dut.qsfp_0_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_2, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_2, 2.56, units="ns").start())
         self.qsfp_0_2_source = XgmiiSource(dut.qsfp_0_rxd_2, dut.qsfp_0_rxc_2, dut.qsfp_0_rx_clk_2, dut.qsfp_0_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_2, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_2, 2.56, units="ns").start())
         self.qsfp_0_2_sink = XgmiiSink(dut.qsfp_0_txd_2, dut.qsfp_0_txc_2, dut.qsfp_0_tx_clk_2, dut.qsfp_0_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_3, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_3, 2.56, units="ns").start())
         self.qsfp_0_3_source = XgmiiSource(dut.qsfp_0_rxd_3, dut.qsfp_0_rxc_3, dut.qsfp_0_rx_clk_3, dut.qsfp_0_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_3, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_3, 2.56, units="ns").start())
         self.qsfp_0_3_sink = XgmiiSink(dut.qsfp_0_txd_3, dut.qsfp_0_txc_3, dut.qsfp_0_tx_clk_3, dut.qsfp_0_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_0, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_0, 2.56, units="ns").start())
         self.qsfp_1_0_source = XgmiiSource(dut.qsfp_1_rxd_0, dut.qsfp_1_rxc_0, dut.qsfp_1_rx_clk_0, dut.qsfp_1_rx_rst_0)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_0, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_0, 2.56, units="ns").start())
         self.qsfp_1_0_sink = XgmiiSink(dut.qsfp_1_txd_0, dut.qsfp_1_txc_0, dut.qsfp_1_tx_clk_0, dut.qsfp_1_tx_rst_0)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_1, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_1, 2.56, units="ns").start())
         self.qsfp_1_1_source = XgmiiSource(dut.qsfp_1_rxd_1, dut.qsfp_1_rxc_1, dut.qsfp_1_rx_clk_1, dut.qsfp_1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_1, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_1, 2.56, units="ns").start())
         self.qsfp_1_1_sink = XgmiiSink(dut.qsfp_1_txd_1, dut.qsfp_1_txc_1, dut.qsfp_1_tx_clk_1, dut.qsfp_1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_2, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_2, 2.56, units="ns").start())
         self.qsfp_1_2_source = XgmiiSource(dut.qsfp_1_rxd_2, dut.qsfp_1_rxc_2, dut.qsfp_1_rx_clk_2, dut.qsfp_1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_2, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_2, 2.56, units="ns").start())
         self.qsfp_1_2_sink = XgmiiSink(dut.qsfp_1_txd_2, dut.qsfp_1_txc_2, dut.qsfp_1_tx_clk_2, dut.qsfp_1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_3, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_3, 2.56, units="ns").start())
         self.qsfp_1_3_source = XgmiiSource(dut.qsfp_1_rxd_3, dut.qsfp_1_rxc_3, dut.qsfp_1_rx_clk_3, dut.qsfp_1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_3, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_3, 2.56, units="ns").start())
         self.qsfp_1_3_sink = XgmiiSink(dut.qsfp_1_txd_3, dut.qsfp_1_txc_3, dut.qsfp_1_tx_clk_3, dut.qsfp_1_tx_rst_3)
 
         dut.user_sw.setimmediatevalue(0)
diff --git a/example/ATLYS/fpga/tb/fpga_core/test_fpga_core.py b/example/ATLYS/fpga/tb/fpga_core/test_fpga_core.py
index 5814e79ab643722b8fbeabc55b13c0b88ab13505..47913a94759976c8a7800ad4f3de0741ee5e5b68 100644
--- a/example/ATLYS/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/ATLYS/fpga/tb/fpga_core/test_fpga_core.py
@@ -45,7 +45,7 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         # Ethernet
         self.gmii_phy = GmiiPhy(dut.phy_txd, dut.phy_tx_er, dut.phy_tx_en, dut.phy_tx_clk, dut.phy_gtx_clk,
diff --git a/example/AU200/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/AU200/fpga_10g/tb/fpga_core/test_fpga_core.py
index 187af7189f6918d569aed6bd815587fa94039834..37a47626b40878ee02adfdfcfe98fe2ea8fa91a6 100644
--- a/example/AU200/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/AU200/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,47 +45,47 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_source = XgmiiSource(dut.qsfp0_rxd_1, dut.qsfp0_rxc_1, dut.qsfp0_rx_clk_1, dut.qsfp0_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_sink = XgmiiSink(dut.qsfp0_txd_1, dut.qsfp0_txc_1, dut.qsfp0_tx_clk_1, dut.qsfp0_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_source = XgmiiSource(dut.qsfp0_rxd_2, dut.qsfp0_rxc_2, dut.qsfp0_rx_clk_2, dut.qsfp0_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_sink = XgmiiSink(dut.qsfp0_txd_2, dut.qsfp0_txc_2, dut.qsfp0_tx_clk_2, dut.qsfp0_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_source = XgmiiSource(dut.qsfp0_rxd_3, dut.qsfp0_rxc_3, dut.qsfp0_rx_clk_3, dut.qsfp0_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_sink = XgmiiSink(dut.qsfp0_txd_3, dut.qsfp0_txc_3, dut.qsfp0_tx_clk_3, dut.qsfp0_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_source = XgmiiSource(dut.qsfp0_rxd_4, dut.qsfp0_rxc_4, dut.qsfp0_rx_clk_4, dut.qsfp0_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_sink = XgmiiSink(dut.qsfp0_txd_4, dut.qsfp0_txc_4, dut.qsfp0_tx_clk_4, dut.qsfp0_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_source = XgmiiSource(dut.qsfp1_rxd_1, dut.qsfp1_rxc_1, dut.qsfp1_rx_clk_1, dut.qsfp1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_sink = XgmiiSink(dut.qsfp1_txd_1, dut.qsfp1_txc_1, dut.qsfp1_tx_clk_1, dut.qsfp1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_source = XgmiiSource(dut.qsfp1_rxd_2, dut.qsfp1_rxc_2, dut.qsfp1_rx_clk_2, dut.qsfp1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_sink = XgmiiSink(dut.qsfp1_txd_2, dut.qsfp1_txc_2, dut.qsfp1_tx_clk_2, dut.qsfp1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_source = XgmiiSource(dut.qsfp1_rxd_3, dut.qsfp1_rxc_3, dut.qsfp1_rx_clk_3, dut.qsfp1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_sink = XgmiiSink(dut.qsfp1_txd_3, dut.qsfp1_txc_3, dut.qsfp1_tx_clk_3, dut.qsfp1_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_source = XgmiiSource(dut.qsfp1_rxd_4, dut.qsfp1_rxc_4, dut.qsfp1_rx_clk_4, dut.qsfp1_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_sink = XgmiiSink(dut.qsfp1_txd_4, dut.qsfp1_txc_4, dut.qsfp1_tx_clk_4, dut.qsfp1_tx_rst_4)
 
         dut.sw.setimmediatevalue(0)
diff --git a/example/AU250/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/AU250/fpga_10g/tb/fpga_core/test_fpga_core.py
index 187af7189f6918d569aed6bd815587fa94039834..37a47626b40878ee02adfdfcfe98fe2ea8fa91a6 100644
--- a/example/AU250/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/AU250/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,47 +45,47 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_source = XgmiiSource(dut.qsfp0_rxd_1, dut.qsfp0_rxc_1, dut.qsfp0_rx_clk_1, dut.qsfp0_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_sink = XgmiiSink(dut.qsfp0_txd_1, dut.qsfp0_txc_1, dut.qsfp0_tx_clk_1, dut.qsfp0_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_source = XgmiiSource(dut.qsfp0_rxd_2, dut.qsfp0_rxc_2, dut.qsfp0_rx_clk_2, dut.qsfp0_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_sink = XgmiiSink(dut.qsfp0_txd_2, dut.qsfp0_txc_2, dut.qsfp0_tx_clk_2, dut.qsfp0_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_source = XgmiiSource(dut.qsfp0_rxd_3, dut.qsfp0_rxc_3, dut.qsfp0_rx_clk_3, dut.qsfp0_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_sink = XgmiiSink(dut.qsfp0_txd_3, dut.qsfp0_txc_3, dut.qsfp0_tx_clk_3, dut.qsfp0_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_source = XgmiiSource(dut.qsfp0_rxd_4, dut.qsfp0_rxc_4, dut.qsfp0_rx_clk_4, dut.qsfp0_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_sink = XgmiiSink(dut.qsfp0_txd_4, dut.qsfp0_txc_4, dut.qsfp0_tx_clk_4, dut.qsfp0_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_source = XgmiiSource(dut.qsfp1_rxd_1, dut.qsfp1_rxc_1, dut.qsfp1_rx_clk_1, dut.qsfp1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_sink = XgmiiSink(dut.qsfp1_txd_1, dut.qsfp1_txc_1, dut.qsfp1_tx_clk_1, dut.qsfp1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_source = XgmiiSource(dut.qsfp1_rxd_2, dut.qsfp1_rxc_2, dut.qsfp1_rx_clk_2, dut.qsfp1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_sink = XgmiiSink(dut.qsfp1_txd_2, dut.qsfp1_txc_2, dut.qsfp1_tx_clk_2, dut.qsfp1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_source = XgmiiSource(dut.qsfp1_rxd_3, dut.qsfp1_rxc_3, dut.qsfp1_rx_clk_3, dut.qsfp1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_sink = XgmiiSink(dut.qsfp1_txd_3, dut.qsfp1_txc_3, dut.qsfp1_tx_clk_3, dut.qsfp1_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_source = XgmiiSource(dut.qsfp1_rxd_4, dut.qsfp1_rxc_4, dut.qsfp1_rx_clk_4, dut.qsfp1_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_sink = XgmiiSink(dut.qsfp1_txd_4, dut.qsfp1_txc_4, dut.qsfp1_tx_clk_4, dut.qsfp1_tx_rst_4)
 
         dut.sw.setimmediatevalue(0)
diff --git a/example/AU280/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/AU280/fpga_10g/tb/fpga_core/test_fpga_core.py
index e29cee825cabeaaedd07650913102b3f6907abf6..e989629b23dfc38890c0b3e16a604ac23f4f0394 100644
--- a/example/AU280/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/AU280/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,47 +45,47 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_source = XgmiiSource(dut.qsfp0_rxd_1, dut.qsfp0_rxc_1, dut.qsfp0_rx_clk_1, dut.qsfp0_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_sink = XgmiiSink(dut.qsfp0_txd_1, dut.qsfp0_txc_1, dut.qsfp0_tx_clk_1, dut.qsfp0_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_source = XgmiiSource(dut.qsfp0_rxd_2, dut.qsfp0_rxc_2, dut.qsfp0_rx_clk_2, dut.qsfp0_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_sink = XgmiiSink(dut.qsfp0_txd_2, dut.qsfp0_txc_2, dut.qsfp0_tx_clk_2, dut.qsfp0_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_source = XgmiiSource(dut.qsfp0_rxd_3, dut.qsfp0_rxc_3, dut.qsfp0_rx_clk_3, dut.qsfp0_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_sink = XgmiiSink(dut.qsfp0_txd_3, dut.qsfp0_txc_3, dut.qsfp0_tx_clk_3, dut.qsfp0_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_source = XgmiiSource(dut.qsfp0_rxd_4, dut.qsfp0_rxc_4, dut.qsfp0_rx_clk_4, dut.qsfp0_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_sink = XgmiiSink(dut.qsfp0_txd_4, dut.qsfp0_txc_4, dut.qsfp0_tx_clk_4, dut.qsfp0_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_source = XgmiiSource(dut.qsfp1_rxd_1, dut.qsfp1_rxc_1, dut.qsfp1_rx_clk_1, dut.qsfp1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_sink = XgmiiSink(dut.qsfp1_txd_1, dut.qsfp1_txc_1, dut.qsfp1_tx_clk_1, dut.qsfp1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_source = XgmiiSource(dut.qsfp1_rxd_2, dut.qsfp1_rxc_2, dut.qsfp1_rx_clk_2, dut.qsfp1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_sink = XgmiiSink(dut.qsfp1_txd_2, dut.qsfp1_txc_2, dut.qsfp1_tx_clk_2, dut.qsfp1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_source = XgmiiSource(dut.qsfp1_rxd_3, dut.qsfp1_rxc_3, dut.qsfp1_rx_clk_3, dut.qsfp1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_sink = XgmiiSink(dut.qsfp1_txd_3, dut.qsfp1_txc_3, dut.qsfp1_tx_clk_3, dut.qsfp1_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_source = XgmiiSource(dut.qsfp1_rxd_4, dut.qsfp1_rxc_4, dut.qsfp1_rx_clk_4, dut.qsfp1_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_sink = XgmiiSink(dut.qsfp1_txd_4, dut.qsfp1_txc_4, dut.qsfp1_tx_clk_4, dut.qsfp1_tx_rst_4)
 
     async def init(self):
diff --git a/example/AU50/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/AU50/fpga_10g/tb/fpga_core/test_fpga_core.py
index 0733144b9937e82a35533b6d83403efc380992f2..8921956eaaa05a8f3bd39c998fa446c73f73bada 100644
--- a/example/AU50/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/AU50/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,27 +45,27 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_source = XgmiiSource(dut.qsfp_rxd_1, dut.qsfp_rxc_1, dut.qsfp_rx_clk_1, dut.qsfp_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_sink = XgmiiSink(dut.qsfp_txd_1, dut.qsfp_txc_1, dut.qsfp_tx_clk_1, dut.qsfp_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_2_source = XgmiiSource(dut.qsfp_rxd_2, dut.qsfp_rxc_2, dut.qsfp_rx_clk_2, dut.qsfp_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_2_sink = XgmiiSink(dut.qsfp_txd_2, dut.qsfp_txc_2, dut.qsfp_tx_clk_2, dut.qsfp_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_3_source = XgmiiSource(dut.qsfp_rxd_3, dut.qsfp_rxc_3, dut.qsfp_rx_clk_3, dut.qsfp_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_3_sink = XgmiiSink(dut.qsfp_txd_3, dut.qsfp_txc_3, dut.qsfp_tx_clk_3, dut.qsfp_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_4_source = XgmiiSource(dut.qsfp_rxd_4, dut.qsfp_rxc_4, dut.qsfp_rx_clk_4, dut.qsfp_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_4_sink = XgmiiSink(dut.qsfp_txd_4, dut.qsfp_txc_4, dut.qsfp_tx_clk_4, dut.qsfp_tx_rst_4)
 
     async def init(self):
diff --git a/example/Arty/fpga/tb/fpga_core/test_fpga_core.py b/example/Arty/fpga/tb/fpga_core/test_fpga_core.py
index 82c4a0dfcd836c9e7b8d3b76ead4b14631ede0cb..f4a58a58d8246d42484455c81b4d2b06e96dd25b 100644
--- a/example/Arty/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/Arty/fpga/tb/fpga_core/test_fpga_core.py
@@ -45,7 +45,7 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         self.mii_phy = MiiPhy(dut.phy_txd, None, dut.phy_tx_en, dut.phy_tx_clk,
             dut.phy_rxd, dut.phy_rx_er, dut.phy_rx_dv, dut.phy_rx_clk, speed=speed)
diff --git a/example/C10LP/fpga/tb/fpga_core/test_fpga_core.py b/example/C10LP/fpga/tb/fpga_core/test_fpga_core.py
index cd3a1be2a83149e6026e89ebe711665d94ac759f..331c63817d53067afb75305ba3e2cc417a00b454 100644
--- a/example/C10LP/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/C10LP/fpga/tb/fpga_core/test_fpga_core.py
@@ -55,7 +55,7 @@ class TB:
         dut.clk.setimmediatevalue(0)
         dut.clk90.setimmediatevalue(0)
 
-        cocotb.fork(self._run_clk())
+        cocotb.start_soon(self._run_clk())
 
     async def init(self):
 
diff --git a/example/DE2-115/fpga/tb/fpga_core/test_fpga_core.py b/example/DE2-115/fpga/tb/fpga_core/test_fpga_core.py
index e0b88ec9f5092e0c2c0d244ddd88c658bca8e759..c24ab12e11114f5bfe21c1455b2370d0c4baadcc 100644
--- a/example/DE2-115/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/DE2-115/fpga/tb/fpga_core/test_fpga_core.py
@@ -59,7 +59,7 @@ class TB:
         dut.clk.setimmediatevalue(0)
         dut.clk90.setimmediatevalue(0)
 
-        cocotb.fork(self._run_clk())
+        cocotb.start_soon(self._run_clk())
 
     async def init(self):
 
diff --git a/example/DE5-Net/fpga/tb/fpga_core/test_fpga_core.py b/example/DE5-Net/fpga/tb/fpga_core/test_fpga_core.py
index d22b15861b354890720cab6254c183c6049024e0..89c239e2c8bb8c34c7e3067fab6a2b44cce4ef31 100644
--- a/example/DE5-Net/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/DE5-Net/fpga/tb/fpga_core/test_fpga_core.py
@@ -45,7 +45,7 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
         self.sfp_a_source = XgmiiSource(dut.sfp_a_rxd, dut.sfp_a_rxc, dut.clk, dut.rst)
diff --git a/example/ExaNIC_X10/fpga/tb/fpga_core/test_fpga_core.py b/example/ExaNIC_X10/fpga/tb/fpga_core/test_fpga_core.py
index 0d3a7ddf6ccf034f83765ffc45c81a06437a3d23..9907cad0baf892ee8227dfb8ab1c32904690ec94 100644
--- a/example/ExaNIC_X10/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/ExaNIC_X10/fpga/tb/fpga_core/test_fpga_core.py
@@ -45,17 +45,17 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.sfp_1_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_1_rx_clk, 6.4, units="ns").start())
         self.sfp_1_source = XgmiiSource(dut.sfp_1_rxd, dut.sfp_1_rxc, dut.sfp_1_rx_clk, dut.sfp_1_rx_rst)
-        cocotb.fork(Clock(dut.sfp_1_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_1_tx_clk, 6.4, units="ns").start())
         self.sfp_1_sink = XgmiiSink(dut.sfp_1_txd, dut.sfp_1_txc, dut.sfp_1_tx_clk, dut.sfp_1_tx_rst)
 
-        cocotb.fork(Clock(dut.sfp_2_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_2_rx_clk, 6.4, units="ns").start())
         self.sfp_2_source = XgmiiSource(dut.sfp_2_rxd, dut.sfp_2_rxc, dut.sfp_2_rx_clk, dut.sfp_2_rx_rst)
-        cocotb.fork(Clock(dut.sfp_2_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_2_tx_clk, 6.4, units="ns").start())
         self.sfp_2_sink = XgmiiSink(dut.sfp_2_txd, dut.sfp_2_txc, dut.sfp_2_tx_clk, dut.sfp_2_tx_rst)
 
     async def init(self):
diff --git a/example/ExaNIC_X25/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/ExaNIC_X25/fpga_10g/tb/fpga_core/test_fpga_core.py
index 0d3a7ddf6ccf034f83765ffc45c81a06437a3d23..9907cad0baf892ee8227dfb8ab1c32904690ec94 100644
--- a/example/ExaNIC_X25/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/ExaNIC_X25/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,17 +45,17 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.sfp_1_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_1_rx_clk, 6.4, units="ns").start())
         self.sfp_1_source = XgmiiSource(dut.sfp_1_rxd, dut.sfp_1_rxc, dut.sfp_1_rx_clk, dut.sfp_1_rx_rst)
-        cocotb.fork(Clock(dut.sfp_1_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_1_tx_clk, 6.4, units="ns").start())
         self.sfp_1_sink = XgmiiSink(dut.sfp_1_txd, dut.sfp_1_txc, dut.sfp_1_tx_clk, dut.sfp_1_tx_rst)
 
-        cocotb.fork(Clock(dut.sfp_2_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_2_rx_clk, 6.4, units="ns").start())
         self.sfp_2_source = XgmiiSource(dut.sfp_2_rxd, dut.sfp_2_rxc, dut.sfp_2_rx_clk, dut.sfp_2_rx_rst)
-        cocotb.fork(Clock(dut.sfp_2_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_2_tx_clk, 6.4, units="ns").start())
         self.sfp_2_sink = XgmiiSink(dut.sfp_2_txd, dut.sfp_2_txc, dut.sfp_2_tx_clk, dut.sfp_2_tx_rst)
 
     async def init(self):
diff --git a/example/HTG9200/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/HTG9200/fpga_10g/tb/fpga_core/test_fpga_core.py
index c72d53c5c7dcbaae0b6b8e3210a90274d101569e..e1eb8dea90cf98204613b0a7ff2ed243518ad142 100644
--- a/example/HTG9200/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/HTG9200/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,7 +45,7 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         dut.btn.setimmediatevalue(0)
         dut.sw.setimmediatevalue(0)
@@ -54,184 +54,184 @@ class TB:
         dut.uart_rts.setimmediatevalue(1)
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_1_source = XgmiiSource(dut.qsfp_1_rxd_1, dut.qsfp_1_rxc_1, dut.qsfp_1_rx_clk_1, dut.qsfp_1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_1_sink = XgmiiSink(dut.qsfp_1_txd_1, dut.qsfp_1_txc_1, dut.qsfp_1_tx_clk_1, dut.qsfp_1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_1_2_source = XgmiiSource(dut.qsfp_1_rxd_2, dut.qsfp_1_rxc_2, dut.qsfp_1_rx_clk_2, dut.qsfp_1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_1_2_sink = XgmiiSink(dut.qsfp_1_txd_2, dut.qsfp_1_txc_2, dut.qsfp_1_tx_clk_2, dut.qsfp_1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_1_3_source = XgmiiSource(dut.qsfp_1_rxd_3, dut.qsfp_1_rxc_3, dut.qsfp_1_rx_clk_3, dut.qsfp_1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_1_3_sink = XgmiiSink(dut.qsfp_1_txd_3, dut.qsfp_1_txc_3, dut.qsfp_1_tx_clk_3, dut.qsfp_1_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_1_4_source = XgmiiSource(dut.qsfp_1_rxd_4, dut.qsfp_1_rxc_4, dut.qsfp_1_rx_clk_4, dut.qsfp_1_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_1_4_sink = XgmiiSink(dut.qsfp_1_txd_4, dut.qsfp_1_txc_4, dut.qsfp_1_tx_clk_4, dut.qsfp_1_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp_2_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_2_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_2_1_source = XgmiiSource(dut.qsfp_2_rxd_1, dut.qsfp_2_rxc_1, dut.qsfp_2_rx_clk_1, dut.qsfp_2_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_2_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_2_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_2_1_sink = XgmiiSink(dut.qsfp_2_txd_1, dut.qsfp_2_txc_1, dut.qsfp_2_tx_clk_1, dut.qsfp_2_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_2_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_2_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_2_2_source = XgmiiSource(dut.qsfp_2_rxd_2, dut.qsfp_2_rxc_2, dut.qsfp_2_rx_clk_2, dut.qsfp_2_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_2_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_2_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_2_2_sink = XgmiiSink(dut.qsfp_2_txd_2, dut.qsfp_2_txc_2, dut.qsfp_2_tx_clk_2, dut.qsfp_2_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_2_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_2_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_2_3_source = XgmiiSource(dut.qsfp_2_rxd_3, dut.qsfp_2_rxc_3, dut.qsfp_2_rx_clk_3, dut.qsfp_2_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_2_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_2_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_2_3_sink = XgmiiSink(dut.qsfp_2_txd_3, dut.qsfp_2_txc_3, dut.qsfp_2_tx_clk_3, dut.qsfp_2_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_2_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_2_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_2_4_source = XgmiiSource(dut.qsfp_2_rxd_4, dut.qsfp_2_rxc_4, dut.qsfp_2_rx_clk_4, dut.qsfp_2_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_2_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_2_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_2_4_sink = XgmiiSink(dut.qsfp_2_txd_4, dut.qsfp_2_txc_4, dut.qsfp_2_tx_clk_4, dut.qsfp_2_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp_3_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_3_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_3_1_source = XgmiiSource(dut.qsfp_3_rxd_1, dut.qsfp_3_rxc_1, dut.qsfp_3_rx_clk_1, dut.qsfp_3_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_3_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_3_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_3_1_sink = XgmiiSink(dut.qsfp_3_txd_1, dut.qsfp_3_txc_1, dut.qsfp_3_tx_clk_1, dut.qsfp_3_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_3_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_3_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_3_2_source = XgmiiSource(dut.qsfp_3_rxd_2, dut.qsfp_3_rxc_2, dut.qsfp_3_rx_clk_2, dut.qsfp_3_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_3_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_3_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_3_2_sink = XgmiiSink(dut.qsfp_3_txd_2, dut.qsfp_3_txc_2, dut.qsfp_3_tx_clk_2, dut.qsfp_3_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_3_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_3_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_3_3_source = XgmiiSource(dut.qsfp_3_rxd_3, dut.qsfp_3_rxc_3, dut.qsfp_3_rx_clk_3, dut.qsfp_3_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_3_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_3_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_3_3_sink = XgmiiSink(dut.qsfp_3_txd_3, dut.qsfp_3_txc_3, dut.qsfp_3_tx_clk_3, dut.qsfp_3_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_3_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_3_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_3_4_source = XgmiiSource(dut.qsfp_3_rxd_4, dut.qsfp_3_rxc_4, dut.qsfp_3_rx_clk_4, dut.qsfp_3_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_3_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_3_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_3_4_sink = XgmiiSink(dut.qsfp_3_txd_4, dut.qsfp_3_txc_4, dut.qsfp_3_tx_clk_4, dut.qsfp_3_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp_4_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_4_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_4_1_source = XgmiiSource(dut.qsfp_4_rxd_1, dut.qsfp_4_rxc_1, dut.qsfp_4_rx_clk_1, dut.qsfp_4_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_4_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_4_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_4_1_sink = XgmiiSink(dut.qsfp_4_txd_1, dut.qsfp_4_txc_1, dut.qsfp_4_tx_clk_1, dut.qsfp_4_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_4_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_4_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_4_2_source = XgmiiSource(dut.qsfp_4_rxd_2, dut.qsfp_4_rxc_2, dut.qsfp_4_rx_clk_2, dut.qsfp_4_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_4_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_4_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_4_2_sink = XgmiiSink(dut.qsfp_4_txd_2, dut.qsfp_4_txc_2, dut.qsfp_4_tx_clk_2, dut.qsfp_4_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_4_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_4_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_4_3_source = XgmiiSource(dut.qsfp_4_rxd_3, dut.qsfp_4_rxc_3, dut.qsfp_4_rx_clk_3, dut.qsfp_4_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_4_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_4_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_4_3_sink = XgmiiSink(dut.qsfp_4_txd_3, dut.qsfp_4_txc_3, dut.qsfp_4_tx_clk_3, dut.qsfp_4_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_4_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_4_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_4_4_source = XgmiiSource(dut.qsfp_4_rxd_4, dut.qsfp_4_rxc_4, dut.qsfp_4_rx_clk_4, dut.qsfp_4_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_4_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_4_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_4_4_sink = XgmiiSink(dut.qsfp_4_txd_4, dut.qsfp_4_txc_4, dut.qsfp_4_tx_clk_4, dut.qsfp_4_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp_5_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_5_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_5_1_source = XgmiiSource(dut.qsfp_5_rxd_1, dut.qsfp_5_rxc_1, dut.qsfp_5_rx_clk_1, dut.qsfp_5_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_5_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_5_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_5_1_sink = XgmiiSink(dut.qsfp_5_txd_1, dut.qsfp_5_txc_1, dut.qsfp_5_tx_clk_1, dut.qsfp_5_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_5_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_5_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_5_2_source = XgmiiSource(dut.qsfp_5_rxd_2, dut.qsfp_5_rxc_2, dut.qsfp_5_rx_clk_2, dut.qsfp_5_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_5_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_5_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_5_2_sink = XgmiiSink(dut.qsfp_5_txd_2, dut.qsfp_5_txc_2, dut.qsfp_5_tx_clk_2, dut.qsfp_5_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_5_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_5_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_5_3_source = XgmiiSource(dut.qsfp_5_rxd_3, dut.qsfp_5_rxc_3, dut.qsfp_5_rx_clk_3, dut.qsfp_5_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_5_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_5_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_5_3_sink = XgmiiSink(dut.qsfp_5_txd_3, dut.qsfp_5_txc_3, dut.qsfp_5_tx_clk_3, dut.qsfp_5_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_5_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_5_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_5_4_source = XgmiiSource(dut.qsfp_5_rxd_4, dut.qsfp_5_rxc_4, dut.qsfp_5_rx_clk_4, dut.qsfp_5_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_5_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_5_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_5_4_sink = XgmiiSink(dut.qsfp_5_txd_4, dut.qsfp_5_txc_4, dut.qsfp_5_tx_clk_4, dut.qsfp_5_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp_6_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_6_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_6_1_source = XgmiiSource(dut.qsfp_6_rxd_1, dut.qsfp_6_rxc_1, dut.qsfp_6_rx_clk_1, dut.qsfp_6_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_6_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_6_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_6_1_sink = XgmiiSink(dut.qsfp_6_txd_1, dut.qsfp_6_txc_1, dut.qsfp_6_tx_clk_1, dut.qsfp_6_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_6_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_6_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_6_2_source = XgmiiSource(dut.qsfp_6_rxd_2, dut.qsfp_6_rxc_2, dut.qsfp_6_rx_clk_2, dut.qsfp_6_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_6_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_6_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_6_2_sink = XgmiiSink(dut.qsfp_6_txd_2, dut.qsfp_6_txc_2, dut.qsfp_6_tx_clk_2, dut.qsfp_6_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_6_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_6_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_6_3_source = XgmiiSource(dut.qsfp_6_rxd_3, dut.qsfp_6_rxc_3, dut.qsfp_6_rx_clk_3, dut.qsfp_6_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_6_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_6_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_6_3_sink = XgmiiSink(dut.qsfp_6_txd_3, dut.qsfp_6_txc_3, dut.qsfp_6_tx_clk_3, dut.qsfp_6_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_6_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_6_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_6_4_source = XgmiiSource(dut.qsfp_6_rxd_4, dut.qsfp_6_rxc_4, dut.qsfp_6_rx_clk_4, dut.qsfp_6_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_6_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_6_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_6_4_sink = XgmiiSink(dut.qsfp_6_txd_4, dut.qsfp_6_txc_4, dut.qsfp_6_tx_clk_4, dut.qsfp_6_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp_7_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_7_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_7_1_source = XgmiiSource(dut.qsfp_7_rxd_1, dut.qsfp_7_rxc_1, dut.qsfp_7_rx_clk_1, dut.qsfp_7_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_7_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_7_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_7_1_sink = XgmiiSink(dut.qsfp_7_txd_1, dut.qsfp_7_txc_1, dut.qsfp_7_tx_clk_1, dut.qsfp_7_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_7_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_7_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_7_2_source = XgmiiSource(dut.qsfp_7_rxd_2, dut.qsfp_7_rxc_2, dut.qsfp_7_rx_clk_2, dut.qsfp_7_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_7_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_7_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_7_2_sink = XgmiiSink(dut.qsfp_7_txd_2, dut.qsfp_7_txc_2, dut.qsfp_7_tx_clk_2, dut.qsfp_7_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_7_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_7_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_7_3_source = XgmiiSource(dut.qsfp_7_rxd_3, dut.qsfp_7_rxc_3, dut.qsfp_7_rx_clk_3, dut.qsfp_7_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_7_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_7_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_7_3_sink = XgmiiSink(dut.qsfp_7_txd_3, dut.qsfp_7_txc_3, dut.qsfp_7_tx_clk_3, dut.qsfp_7_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_7_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_7_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_7_4_source = XgmiiSource(dut.qsfp_7_rxd_4, dut.qsfp_7_rxc_4, dut.qsfp_7_rx_clk_4, dut.qsfp_7_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_7_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_7_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_7_4_sink = XgmiiSink(dut.qsfp_7_txd_4, dut.qsfp_7_txc_4, dut.qsfp_7_tx_clk_4, dut.qsfp_7_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp_8_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_8_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_8_1_source = XgmiiSource(dut.qsfp_8_rxd_1, dut.qsfp_8_rxc_1, dut.qsfp_8_rx_clk_1, dut.qsfp_8_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_8_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_8_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_8_1_sink = XgmiiSink(dut.qsfp_8_txd_1, dut.qsfp_8_txc_1, dut.qsfp_8_tx_clk_1, dut.qsfp_8_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_8_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_8_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_8_2_source = XgmiiSource(dut.qsfp_8_rxd_2, dut.qsfp_8_rxc_2, dut.qsfp_8_rx_clk_2, dut.qsfp_8_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_8_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_8_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_8_2_sink = XgmiiSink(dut.qsfp_8_txd_2, dut.qsfp_8_txc_2, dut.qsfp_8_tx_clk_2, dut.qsfp_8_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_8_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_8_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_8_3_source = XgmiiSource(dut.qsfp_8_rxd_3, dut.qsfp_8_rxc_3, dut.qsfp_8_rx_clk_3, dut.qsfp_8_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_8_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_8_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_8_3_sink = XgmiiSink(dut.qsfp_8_txd_3, dut.qsfp_8_txc_3, dut.qsfp_8_tx_clk_3, dut.qsfp_8_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_8_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_8_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_8_4_source = XgmiiSource(dut.qsfp_8_rxd_4, dut.qsfp_8_rxc_4, dut.qsfp_8_rx_clk_4, dut.qsfp_8_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_8_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_8_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_8_4_sink = XgmiiSink(dut.qsfp_8_txd_4, dut.qsfp_8_txc_4, dut.qsfp_8_tx_clk_4, dut.qsfp_8_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp_9_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_9_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_9_1_source = XgmiiSource(dut.qsfp_9_rxd_1, dut.qsfp_9_rxc_1, dut.qsfp_9_rx_clk_1, dut.qsfp_9_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_9_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_9_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_9_1_sink = XgmiiSink(dut.qsfp_9_txd_1, dut.qsfp_9_txc_1, dut.qsfp_9_tx_clk_1, dut.qsfp_9_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_9_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_9_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_9_2_source = XgmiiSource(dut.qsfp_9_rxd_2, dut.qsfp_9_rxc_2, dut.qsfp_9_rx_clk_2, dut.qsfp_9_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_9_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_9_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_9_2_sink = XgmiiSink(dut.qsfp_9_txd_2, dut.qsfp_9_txc_2, dut.qsfp_9_tx_clk_2, dut.qsfp_9_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_9_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_9_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_9_3_source = XgmiiSource(dut.qsfp_9_rxd_3, dut.qsfp_9_rxc_3, dut.qsfp_9_rx_clk_3, dut.qsfp_9_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_9_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_9_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_9_3_sink = XgmiiSink(dut.qsfp_9_txd_3, dut.qsfp_9_txc_3, dut.qsfp_9_tx_clk_3, dut.qsfp_9_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_9_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_9_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_9_4_source = XgmiiSource(dut.qsfp_9_rxd_4, dut.qsfp_9_rxc_4, dut.qsfp_9_rx_clk_4, dut.qsfp_9_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_9_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_9_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_9_4_sink = XgmiiSink(dut.qsfp_9_txd_4, dut.qsfp_9_txc_4, dut.qsfp_9_tx_clk_4, dut.qsfp_9_tx_rst_4)
 
     async def init(self):
diff --git a/example/HXT100G/fpga/tb/fpga_core/test_fpga_core.py b/example/HXT100G/fpga/tb/fpga_core/test_fpga_core.py
index 62cd720818d1a5ef2fbd1edd30fcc656b27c2850..7116db21ecbac1c6d5e5792535878bcce428fe3f 100644
--- a/example/HXT100G/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/HXT100G/fpga/tb/fpga_core/test_fpga_core.py
@@ -45,7 +45,7 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
         self.eth_r0_source = XgmiiSource(dut.eth_r0_rxd, dut.eth_r0_rxc, dut.clk, dut.rst)
diff --git a/example/HXT100G/fpga_cxpt16/tb/fpga_core/test_fpga_core.py b/example/HXT100G/fpga_cxpt16/tb/fpga_core/test_fpga_core.py
index cb9e8ae1926877f6b6ddd13ea2866a00be64dd17..0460b532670a01bfafc9ee0aa4b9e9836cfc77cf 100644
--- a/example/HXT100G/fpga_cxpt16/tb/fpga_core/test_fpga_core.py
+++ b/example/HXT100G/fpga_cxpt16/tb/fpga_core/test_fpga_core.py
@@ -44,7 +44,7 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
         self.eth_r0_source = XgmiiSource(dut.eth_r0_rxd, dut.eth_r0_rxc, dut.clk, dut.rst)
diff --git a/example/KC705/fpga_gmii/tb/fpga_core/test_fpga_core.py b/example/KC705/fpga_gmii/tb/fpga_core/test_fpga_core.py
index 9514c1acd94b1e276d31ab663483c7bac1aaacb2..f324b22059f51da03d3e940f07385914dc1eaba4 100644
--- a/example/KC705/fpga_gmii/tb/fpga_core/test_fpga_core.py
+++ b/example/KC705/fpga_gmii/tb/fpga_core/test_fpga_core.py
@@ -45,7 +45,7 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         # Ethernet
         self.gmii_phy = GmiiPhy(dut.phy_txd, dut.phy_tx_er, dut.phy_tx_en, dut.phy_tx_clk, dut.phy_gtx_clk,
diff --git a/example/KC705/fpga_rgmii/tb/fpga_core/test_fpga_core.py b/example/KC705/fpga_rgmii/tb/fpga_core/test_fpga_core.py
index 5302b99f269c999e63931f0297456143969394c1..c66d04590569dfc2573efc97ee829ebc44ac22b8 100644
--- a/example/KC705/fpga_rgmii/tb/fpga_core/test_fpga_core.py
+++ b/example/KC705/fpga_rgmii/tb/fpga_core/test_fpga_core.py
@@ -59,7 +59,7 @@ class TB:
         dut.clk.setimmediatevalue(0)
         dut.clk90.setimmediatevalue(0)
 
-        cocotb.fork(self._run_clk())
+        cocotb.start_soon(self._run_clk())
 
     async def init(self):
 
diff --git a/example/KC705/fpga_sgmii/tb/fpga_core/test_fpga_core.py b/example/KC705/fpga_sgmii/tb/fpga_core/test_fpga_core.py
index 8354186e89bcd39b0de0101704496d66a2eb8d17..6a4cf4c28cefd78f1af9aa1d5d486b03e47ebacf 100644
--- a/example/KC705/fpga_sgmii/tb/fpga_core/test_fpga_core.py
+++ b/example/KC705/fpga_sgmii/tb/fpga_core/test_fpga_core.py
@@ -45,8 +45,8 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
-        cocotb.fork(Clock(dut.phy_gmii_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.phy_gmii_clk, 8, units="ns").start())
 
         self.gmii_source = GmiiSource(dut.phy_gmii_rxd, dut.phy_gmii_rx_er, dut.phy_gmii_rx_dv,
             dut.phy_gmii_clk, dut.phy_gmii_rst, dut.phy_gmii_clk_en)
diff --git a/example/ML605/fpga_gmii/tb/fpga_core/test_fpga_core.py b/example/ML605/fpga_gmii/tb/fpga_core/test_fpga_core.py
index 1542da83682a643687e4b44cc3cc94ca9e6dabb2..a37da8504a8ce52b1f04a2c8bc3d09ed9ef243b1 100644
--- a/example/ML605/fpga_gmii/tb/fpga_core/test_fpga_core.py
+++ b/example/ML605/fpga_gmii/tb/fpga_core/test_fpga_core.py
@@ -45,7 +45,7 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk_125mhz, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk_125mhz, 8, units="ns").start())
 
         # Ethernet
         self.gmii_phy = GmiiPhy(dut.phy_txd, dut.phy_tx_er, dut.phy_tx_en, dut.phy_tx_clk, dut.phy_gtx_clk,
diff --git a/example/ML605/fpga_rgmii/tb/fpga_core/test_fpga_core.py b/example/ML605/fpga_rgmii/tb/fpga_core/test_fpga_core.py
index 750d3477e2293fdfbb5cf4ff1ee2fca141f4ebac..bdab9452e5ac7078a2510008e99504d36bd81cb4 100644
--- a/example/ML605/fpga_rgmii/tb/fpga_core/test_fpga_core.py
+++ b/example/ML605/fpga_rgmii/tb/fpga_core/test_fpga_core.py
@@ -59,7 +59,7 @@ class TB:
         dut.clk_125mhz.setimmediatevalue(0)
         dut.clk90_125mhz.setimmediatevalue(0)
 
-        cocotb.fork(self._run_clk_125mhz())
+        cocotb.start_soon(self._run_clk_125mhz())
 
     async def init(self):
 
diff --git a/example/ML605/fpga_sgmii/tb/fpga_core/test_fpga_core.py b/example/ML605/fpga_sgmii/tb/fpga_core/test_fpga_core.py
index 14988bff701e2ae3ec2c4a95f20189a841aca971..1268b002573c93db3234b536ed43f21819500394 100644
--- a/example/ML605/fpga_sgmii/tb/fpga_core/test_fpga_core.py
+++ b/example/ML605/fpga_sgmii/tb/fpga_core/test_fpga_core.py
@@ -45,8 +45,8 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk_125mhz, 6.4, units="ns").start())
-        cocotb.fork(Clock(dut.phy_gmii_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk_125mhz, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.phy_gmii_clk, 8, units="ns").start())
 
         self.gmii_source = GmiiSource(dut.phy_gmii_rxd, dut.phy_gmii_rx_er, dut.phy_gmii_rx_dv,
             dut.phy_gmii_clk, dut.phy_gmii_rst, dut.phy_gmii_clk_en)
diff --git a/example/NetFPGA_SUME/fpga/tb/fpga_core/test_fpga_core.py b/example/NetFPGA_SUME/fpga/tb/fpga_core/test_fpga_core.py
index b6ec23c1d43f8066bdc53443322384ecd2174dfc..5f8296d104ea7d8c7c174b9700ab0b7de8f26843 100644
--- a/example/NetFPGA_SUME/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/NetFPGA_SUME/fpga/tb/fpga_core/test_fpga_core.py
@@ -45,27 +45,27 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.sfp_1_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_1_rx_clk, 6.4, units="ns").start())
         self.sfp_1_source = XgmiiSource(dut.sfp_1_rxd, dut.sfp_1_rxc, dut.sfp_1_rx_clk, dut.sfp_1_rx_rst)
-        cocotb.fork(Clock(dut.sfp_1_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_1_tx_clk, 6.4, units="ns").start())
         self.sfp_1_sink = XgmiiSink(dut.sfp_1_txd, dut.sfp_1_txc, dut.sfp_1_tx_clk, dut.sfp_1_tx_rst)
 
-        cocotb.fork(Clock(dut.sfp_2_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_2_rx_clk, 6.4, units="ns").start())
         self.sfp_2_source = XgmiiSource(dut.sfp_2_rxd, dut.sfp_2_rxc, dut.sfp_2_rx_clk, dut.sfp_2_rx_rst)
-        cocotb.fork(Clock(dut.sfp_2_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_2_tx_clk, 6.4, units="ns").start())
         self.sfp_2_sink = XgmiiSink(dut.sfp_2_txd, dut.sfp_2_txc, dut.sfp_2_tx_clk, dut.sfp_2_tx_rst)
 
-        cocotb.fork(Clock(dut.sfp_3_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_3_rx_clk, 6.4, units="ns").start())
         self.sfp_3_source = XgmiiSource(dut.sfp_3_rxd, dut.sfp_3_rxc, dut.sfp_3_rx_clk, dut.sfp_3_rx_rst)
-        cocotb.fork(Clock(dut.sfp_3_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_3_tx_clk, 6.4, units="ns").start())
         self.sfp_3_sink = XgmiiSink(dut.sfp_3_txd, dut.sfp_3_txc, dut.sfp_3_tx_clk, dut.sfp_3_tx_rst)
 
-        cocotb.fork(Clock(dut.sfp_4_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_4_rx_clk, 6.4, units="ns").start())
         self.sfp_4_source = XgmiiSource(dut.sfp_4_rxd, dut.sfp_4_rxc, dut.sfp_4_rx_clk, dut.sfp_4_rx_rst)
-        cocotb.fork(Clock(dut.sfp_4_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp_4_tx_clk, 6.4, units="ns").start())
         self.sfp_4_sink = XgmiiSink(dut.sfp_4_txd, dut.sfp_4_txc, dut.sfp_4_tx_clk, dut.sfp_4_tx_rst)
 
         dut.btn.setimmediatevalue(0)
diff --git a/example/NexysVideo/fpga/tb/fpga_core/test_fpga_core.py b/example/NexysVideo/fpga/tb/fpga_core/test_fpga_core.py
index 2fb6c1449f3f1971ecc850d06f67fdb31b26e5c6..e34c42ee6620955a26770f9e30ba1fdef87c405c 100644
--- a/example/NexysVideo/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/NexysVideo/fpga/tb/fpga_core/test_fpga_core.py
@@ -61,7 +61,7 @@ class TB:
         dut.clk.setimmediatevalue(0)
         dut.clk90.setimmediatevalue(0)
 
-        cocotb.fork(self._run_clk())
+        cocotb.start_soon(self._run_clk())
 
     async def init(self):
 
diff --git a/example/S10DX_DK/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/S10DX_DK/fpga_10g/tb/fpga_core/test_fpga_core.py
index b9d0f669ea7ffbb073d4be698915df2522878820..d1c4fc17d91cf81e0c842b903528a65d24a4c092 100644
--- a/example/S10DX_DK/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/S10DX_DK/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -46,11 +46,11 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.206, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp1_mac_1_rx_clk, 6.206, units="ns").start())
-        cocotb.fork(Clock(dut.qsfp1_mac_1_tx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_mac_1_rx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_mac_1_tx_clk, 6.206, units="ns").start())
 
         self.qsfp1_mac_1 = EthMac(
             tx_clk=dut.qsfp1_mac_1_tx_clk,
@@ -62,8 +62,8 @@ class TB:
             ifg=12, speed=10e9
         )
 
-        cocotb.fork(Clock(dut.qsfp1_mac_2_rx_clk, 6.206, units="ns").start())
-        cocotb.fork(Clock(dut.qsfp1_mac_2_tx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_mac_2_rx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_mac_2_tx_clk, 6.206, units="ns").start())
 
         self.qsfp1_mac_2 = EthMac(
             tx_clk=dut.qsfp1_mac_2_tx_clk,
@@ -75,8 +75,8 @@ class TB:
             ifg=12, speed=10e9
         )
 
-        cocotb.fork(Clock(dut.qsfp1_mac_3_rx_clk, 6.206, units="ns").start())
-        cocotb.fork(Clock(dut.qsfp1_mac_3_tx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_mac_3_rx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_mac_3_tx_clk, 6.206, units="ns").start())
 
         self.qsfp1_mac_3 = EthMac(
             tx_clk=dut.qsfp1_mac_3_tx_clk,
@@ -88,8 +88,8 @@ class TB:
             ifg=12, speed=10e9
         )
 
-        cocotb.fork(Clock(dut.qsfp1_mac_4_rx_clk, 6.206, units="ns").start())
-        cocotb.fork(Clock(dut.qsfp1_mac_4_tx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_mac_4_rx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_mac_4_tx_clk, 6.206, units="ns").start())
 
         self.qsfp1_mac_4 = EthMac(
             tx_clk=dut.qsfp1_mac_4_tx_clk,
@@ -101,8 +101,8 @@ class TB:
             ifg=12, speed=10e9
         )
 
-        cocotb.fork(Clock(dut.qsfp2_mac_1_rx_clk, 6.206, units="ns").start())
-        cocotb.fork(Clock(dut.qsfp2_mac_1_tx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_mac_1_rx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_mac_1_tx_clk, 6.206, units="ns").start())
 
         self.qsfp2_mac_1 = EthMac(
             tx_clk=dut.qsfp2_mac_1_tx_clk,
@@ -114,8 +114,8 @@ class TB:
             ifg=12, speed=10e9
         )
 
-        cocotb.fork(Clock(dut.qsfp2_mac_2_rx_clk, 6.206, units="ns").start())
-        cocotb.fork(Clock(dut.qsfp2_mac_2_tx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_mac_2_rx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_mac_2_tx_clk, 6.206, units="ns").start())
 
         self.qsfp2_mac_2 = EthMac(
             tx_clk=dut.qsfp2_mac_2_tx_clk,
@@ -127,8 +127,8 @@ class TB:
             ifg=12, speed=10e9
         )
 
-        cocotb.fork(Clock(dut.qsfp2_mac_3_rx_clk, 6.206, units="ns").start())
-        cocotb.fork(Clock(dut.qsfp2_mac_3_tx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_mac_3_rx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_mac_3_tx_clk, 6.206, units="ns").start())
 
         self.qsfp2_mac_3 = EthMac(
             tx_clk=dut.qsfp2_mac_3_tx_clk,
@@ -140,8 +140,8 @@ class TB:
             ifg=12, speed=10e9
         )
 
-        cocotb.fork(Clock(dut.qsfp2_mac_4_rx_clk, 6.206, units="ns").start())
-        cocotb.fork(Clock(dut.qsfp2_mac_4_tx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_mac_4_rx_clk, 6.206, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_mac_4_tx_clk, 6.206, units="ns").start())
 
         self.qsfp2_mac_4 = EthMac(
             tx_clk=dut.qsfp2_mac_4_tx_clk,
diff --git a/example/S10MX_DK/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/S10MX_DK/fpga_10g/tb/fpga_core/test_fpga_core.py
index c74c87104b20044c781667d138774e7cafdc6e63..4c378adc09f7ec6cbedeaf6dbe10bf3504311114 100644
--- a/example/S10MX_DK/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/S10MX_DK/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,47 +45,47 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_source = XgmiiSource(dut.qsfp0_rxd_1, dut.qsfp0_rxc_1, dut.qsfp0_rx_clk_1, dut.qsfp0_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_sink = XgmiiSink(dut.qsfp0_txd_1, dut.qsfp0_txc_1, dut.qsfp0_tx_clk_1, dut.qsfp0_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_source = XgmiiSource(dut.qsfp0_rxd_2, dut.qsfp0_rxc_2, dut.qsfp0_rx_clk_2, dut.qsfp0_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_sink = XgmiiSink(dut.qsfp0_txd_2, dut.qsfp0_txc_2, dut.qsfp0_tx_clk_2, dut.qsfp0_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_source = XgmiiSource(dut.qsfp0_rxd_3, dut.qsfp0_rxc_3, dut.qsfp0_rx_clk_3, dut.qsfp0_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_sink = XgmiiSink(dut.qsfp0_txd_3, dut.qsfp0_txc_3, dut.qsfp0_tx_clk_3, dut.qsfp0_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_source = XgmiiSource(dut.qsfp0_rxd_4, dut.qsfp0_rxc_4, dut.qsfp0_rx_clk_4, dut.qsfp0_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_sink = XgmiiSink(dut.qsfp0_txd_4, dut.qsfp0_txc_4, dut.qsfp0_tx_clk_4, dut.qsfp0_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_source = XgmiiSource(dut.qsfp1_rxd_1, dut.qsfp1_rxc_1, dut.qsfp1_rx_clk_1, dut.qsfp1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_sink = XgmiiSink(dut.qsfp1_txd_1, dut.qsfp1_txc_1, dut.qsfp1_tx_clk_1, dut.qsfp1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_source = XgmiiSource(dut.qsfp1_rxd_2, dut.qsfp1_rxc_2, dut.qsfp1_rx_clk_2, dut.qsfp1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_sink = XgmiiSink(dut.qsfp1_txd_2, dut.qsfp1_txc_2, dut.qsfp1_tx_clk_2, dut.qsfp1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_source = XgmiiSource(dut.qsfp1_rxd_3, dut.qsfp1_rxc_3, dut.qsfp1_rx_clk_3, dut.qsfp1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_sink = XgmiiSink(dut.qsfp1_txd_3, dut.qsfp1_txc_3, dut.qsfp1_tx_clk_3, dut.qsfp1_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_source = XgmiiSource(dut.qsfp1_rxd_4, dut.qsfp1_rxc_4, dut.qsfp1_rx_clk_4, dut.qsfp1_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_sink = XgmiiSink(dut.qsfp1_txd_4, dut.qsfp1_txc_4, dut.qsfp1_tx_clk_4, dut.qsfp1_tx_rst_4)
 
     async def init(self):
diff --git a/example/VCU108/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/VCU108/fpga_10g/tb/fpga_core/test_fpga_core.py
index 422a0a6e831a970c493b0e87267682364c67bd0e..ee8ff7acbd06128ca125c3630a33d818b7809e86 100644
--- a/example/VCU108/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/VCU108/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -46,10 +46,10 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.phy_gmii_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.phy_gmii_clk, 8, units="ns").start())
 
         self.gmii_source = GmiiSource(dut.phy_gmii_rxd, dut.phy_gmii_rx_er, dut.phy_gmii_rx_dv,
             dut.phy_gmii_clk, dut.phy_gmii_rst, dut.phy_gmii_clk_en)
@@ -58,24 +58,24 @@ class TB:
 
         dut.phy_gmii_clk_en.setimmediatevalue(1)
 
-        cocotb.fork(Clock(dut.qsfp_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_source = XgmiiSource(dut.qsfp_rxd_1, dut.qsfp_rxc_1, dut.qsfp_rx_clk_1, dut.qsfp_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_sink = XgmiiSink(dut.qsfp_txd_1, dut.qsfp_txc_1, dut.qsfp_tx_clk_1, dut.qsfp_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_2_source = XgmiiSource(dut.qsfp_rxd_2, dut.qsfp_rxc_2, dut.qsfp_rx_clk_2, dut.qsfp_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_2_sink = XgmiiSink(dut.qsfp_txd_2, dut.qsfp_txc_2, dut.qsfp_tx_clk_2, dut.qsfp_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_3_source = XgmiiSource(dut.qsfp_rxd_3, dut.qsfp_rxc_3, dut.qsfp_rx_clk_3, dut.qsfp_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_3_sink = XgmiiSink(dut.qsfp_txd_3, dut.qsfp_txc_3, dut.qsfp_tx_clk_3, dut.qsfp_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_rx_clk_4, 6.4, units="ns").start())
         self.qsfp_4_source = XgmiiSource(dut.qsfp_rxd_4, dut.qsfp_rxc_4, dut.qsfp_rx_clk_4, dut.qsfp_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_tx_clk_4, 6.4, units="ns").start())
         self.qsfp_4_sink = XgmiiSink(dut.qsfp_txd_4, dut.qsfp_txc_4, dut.qsfp_tx_clk_4, dut.qsfp_tx_rst_4)
 
         dut.btnu.setimmediatevalue(0)
diff --git a/example/VCU108/fpga_1g/tb/fpga_core/test_fpga_core.py b/example/VCU108/fpga_1g/tb/fpga_core/test_fpga_core.py
index 633740270919f986e638bb1c96490461eb068b20..fd8946828f5437d263ff5da4edc559b9d986b544 100644
--- a/example/VCU108/fpga_1g/tb/fpga_core/test_fpga_core.py
+++ b/example/VCU108/fpga_1g/tb/fpga_core/test_fpga_core.py
@@ -45,8 +45,8 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
-        cocotb.fork(Clock(dut.phy_gmii_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.phy_gmii_clk, 8, units="ns").start())
 
         self.gmii_source = GmiiSource(dut.phy_gmii_rxd, dut.phy_gmii_rx_er, dut.phy_gmii_rx_dv,
             dut.phy_gmii_clk, dut.phy_gmii_rst, dut.phy_gmii_clk_en)
diff --git a/example/VCU118/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/VCU118/fpga_10g/tb/fpga_core/test_fpga_core.py
index d4a69de5e91b760cc2a271b69cab3046493a46dd..656c80ae46ea73b2dd082ba63445ddd8d4e6406a 100644
--- a/example/VCU118/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/VCU118/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -46,10 +46,10 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.phy_gmii_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.phy_gmii_clk, 8, units="ns").start())
 
         self.gmii_source = GmiiSource(dut.phy_gmii_rxd, dut.phy_gmii_rx_er, dut.phy_gmii_rx_dv,
             dut.phy_gmii_clk, dut.phy_gmii_rst, dut.phy_gmii_clk_en)
@@ -58,44 +58,44 @@ class TB:
 
         dut.phy_gmii_clk_en.setimmediatevalue(1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_source = XgmiiSource(dut.qsfp1_rxd_1, dut.qsfp1_rxc_1, dut.qsfp1_rx_clk_1, dut.qsfp1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_sink = XgmiiSink(dut.qsfp1_txd_1, dut.qsfp1_txc_1, dut.qsfp1_tx_clk_1, dut.qsfp1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_source = XgmiiSource(dut.qsfp1_rxd_2, dut.qsfp1_rxc_2, dut.qsfp1_rx_clk_2, dut.qsfp1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_sink = XgmiiSink(dut.qsfp1_txd_2, dut.qsfp1_txc_2, dut.qsfp1_tx_clk_2, dut.qsfp1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_source = XgmiiSource(dut.qsfp1_rxd_3, dut.qsfp1_rxc_3, dut.qsfp1_rx_clk_3, dut.qsfp1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_sink = XgmiiSink(dut.qsfp1_txd_3, dut.qsfp1_txc_3, dut.qsfp1_tx_clk_3, dut.qsfp1_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_source = XgmiiSource(dut.qsfp1_rxd_4, dut.qsfp1_rxc_4, dut.qsfp1_rx_clk_4, dut.qsfp1_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_sink = XgmiiSink(dut.qsfp1_txd_4, dut.qsfp1_txc_4, dut.qsfp1_tx_clk_4, dut.qsfp1_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_1, 6.4, units="ns").start())
         self.qsfp2_1_source = XgmiiSource(dut.qsfp2_rxd_1, dut.qsfp2_rxc_1, dut.qsfp2_rx_clk_1, dut.qsfp2_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_1, 6.4, units="ns").start())
         self.qsfp2_1_sink = XgmiiSink(dut.qsfp2_txd_1, dut.qsfp2_txc_1, dut.qsfp2_tx_clk_1, dut.qsfp2_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_2, 6.4, units="ns").start())
         self.qsfp2_2_source = XgmiiSource(dut.qsfp2_rxd_2, dut.qsfp2_rxc_2, dut.qsfp2_rx_clk_2, dut.qsfp2_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_2, 6.4, units="ns").start())
         self.qsfp2_2_sink = XgmiiSink(dut.qsfp2_txd_2, dut.qsfp2_txc_2, dut.qsfp2_tx_clk_2, dut.qsfp2_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_3, 6.4, units="ns").start())
         self.qsfp2_3_source = XgmiiSource(dut.qsfp2_rxd_3, dut.qsfp2_rxc_3, dut.qsfp2_rx_clk_3, dut.qsfp2_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_3, 6.4, units="ns").start())
         self.qsfp2_3_sink = XgmiiSink(dut.qsfp2_txd_3, dut.qsfp2_txc_3, dut.qsfp2_tx_clk_3, dut.qsfp2_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_4, 6.4, units="ns").start())
         self.qsfp2_4_source = XgmiiSource(dut.qsfp2_rxd_4, dut.qsfp2_rxc_4, dut.qsfp2_rx_clk_4, dut.qsfp2_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_4, 6.4, units="ns").start())
         self.qsfp2_4_sink = XgmiiSink(dut.qsfp2_txd_4, dut.qsfp2_txc_4, dut.qsfp2_tx_clk_4, dut.qsfp2_tx_rst_4)
 
         dut.btnu.setimmediatevalue(0)
diff --git a/example/VCU118/fpga_1g/tb/fpga_core/test_fpga_core.py b/example/VCU118/fpga_1g/tb/fpga_core/test_fpga_core.py
index 633740270919f986e638bb1c96490461eb068b20..fd8946828f5437d263ff5da4edc559b9d986b544 100644
--- a/example/VCU118/fpga_1g/tb/fpga_core/test_fpga_core.py
+++ b/example/VCU118/fpga_1g/tb/fpga_core/test_fpga_core.py
@@ -45,8 +45,8 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
-        cocotb.fork(Clock(dut.phy_gmii_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.phy_gmii_clk, 8, units="ns").start())
 
         self.gmii_source = GmiiSource(dut.phy_gmii_rxd, dut.phy_gmii_rx_er, dut.phy_gmii_rx_dv,
             dut.phy_gmii_clk, dut.phy_gmii_rst, dut.phy_gmii_clk_en)
diff --git a/example/VCU118/fpga_25g/tb/fpga_core/test_fpga_core.py b/example/VCU118/fpga_25g/tb/fpga_core/test_fpga_core.py
index 8993746599020d14320b9e847a7aff257b409c4e..f5028aed3d7342d8f1d496c30d10e9c222682a4e 100644
--- a/example/VCU118/fpga_25g/tb/fpga_core/test_fpga_core.py
+++ b/example/VCU118/fpga_25g/tb/fpga_core/test_fpga_core.py
@@ -46,10 +46,10 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 2.56, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.phy_gmii_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.phy_gmii_clk, 8, units="ns").start())
 
         self.gmii_source = GmiiSource(dut.phy_gmii_rxd, dut.phy_gmii_rx_er, dut.phy_gmii_rx_dv,
             dut.phy_gmii_clk, dut.phy_gmii_rst, dut.phy_gmii_clk_en)
@@ -58,44 +58,44 @@ class TB:
 
         dut.phy_gmii_clk_en.setimmediatevalue(1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_1, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_1, 2.56, units="ns").start())
         self.qsfp1_1_source = XgmiiSource(dut.qsfp1_rxd_1, dut.qsfp1_rxc_1, dut.qsfp1_rx_clk_1, dut.qsfp1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_1, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_1, 2.56, units="ns").start())
         self.qsfp1_1_sink = XgmiiSink(dut.qsfp1_txd_1, dut.qsfp1_txc_1, dut.qsfp1_tx_clk_1, dut.qsfp1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_2, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_2, 2.56, units="ns").start())
         self.qsfp1_2_source = XgmiiSource(dut.qsfp1_rxd_2, dut.qsfp1_rxc_2, dut.qsfp1_rx_clk_2, dut.qsfp1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_2, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_2, 2.56, units="ns").start())
         self.qsfp1_2_sink = XgmiiSink(dut.qsfp1_txd_2, dut.qsfp1_txc_2, dut.qsfp1_tx_clk_2, dut.qsfp1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_3, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_3, 2.56, units="ns").start())
         self.qsfp1_3_source = XgmiiSource(dut.qsfp1_rxd_3, dut.qsfp1_rxc_3, dut.qsfp1_rx_clk_3, dut.qsfp1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_3, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_3, 2.56, units="ns").start())
         self.qsfp1_3_sink = XgmiiSink(dut.qsfp1_txd_3, dut.qsfp1_txc_3, dut.qsfp1_tx_clk_3, dut.qsfp1_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_4, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_4, 2.56, units="ns").start())
         self.qsfp1_4_source = XgmiiSource(dut.qsfp1_rxd_4, dut.qsfp1_rxc_4, dut.qsfp1_rx_clk_4, dut.qsfp1_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_4, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_4, 2.56, units="ns").start())
         self.qsfp1_4_sink = XgmiiSink(dut.qsfp1_txd_4, dut.qsfp1_txc_4, dut.qsfp1_tx_clk_4, dut.qsfp1_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_1, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_1, 2.56, units="ns").start())
         self.qsfp2_1_source = XgmiiSource(dut.qsfp2_rxd_1, dut.qsfp2_rxc_1, dut.qsfp2_rx_clk_1, dut.qsfp2_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_1, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_1, 2.56, units="ns").start())
         self.qsfp2_1_sink = XgmiiSink(dut.qsfp2_txd_1, dut.qsfp2_txc_1, dut.qsfp2_tx_clk_1, dut.qsfp2_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_2, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_2, 2.56, units="ns").start())
         self.qsfp2_2_source = XgmiiSource(dut.qsfp2_rxd_2, dut.qsfp2_rxc_2, dut.qsfp2_rx_clk_2, dut.qsfp2_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_2, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_2, 2.56, units="ns").start())
         self.qsfp2_2_sink = XgmiiSink(dut.qsfp2_txd_2, dut.qsfp2_txc_2, dut.qsfp2_tx_clk_2, dut.qsfp2_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_3, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_3, 2.56, units="ns").start())
         self.qsfp2_3_source = XgmiiSource(dut.qsfp2_rxd_3, dut.qsfp2_rxc_3, dut.qsfp2_rx_clk_3, dut.qsfp2_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_3, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_3, 2.56, units="ns").start())
         self.qsfp2_3_sink = XgmiiSink(dut.qsfp2_txd_3, dut.qsfp2_txc_3, dut.qsfp2_tx_clk_3, dut.qsfp2_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp2_rx_clk_4, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_rx_clk_4, 2.56, units="ns").start())
         self.qsfp2_4_source = XgmiiSource(dut.qsfp2_rxd_4, dut.qsfp2_rxc_4, dut.qsfp2_rx_clk_4, dut.qsfp2_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp2_tx_clk_4, 2.56, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp2_tx_clk_4, 2.56, units="ns").start())
         self.qsfp2_4_sink = XgmiiSink(dut.qsfp2_txd_4, dut.qsfp2_txc_4, dut.qsfp2_tx_clk_4, dut.qsfp2_tx_rst_4)
 
         dut.btnu.setimmediatevalue(0)
diff --git a/example/VCU1525/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/VCU1525/fpga_10g/tb/fpga_core/test_fpga_core.py
index 187af7189f6918d569aed6bd815587fa94039834..37a47626b40878ee02adfdfcfe98fe2ea8fa91a6 100644
--- a/example/VCU1525/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/VCU1525/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,47 +45,47 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_source = XgmiiSource(dut.qsfp0_rxd_1, dut.qsfp0_rxc_1, dut.qsfp0_rx_clk_1, dut.qsfp0_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_1, 6.4, units="ns").start())
         self.qsfp0_1_sink = XgmiiSink(dut.qsfp0_txd_1, dut.qsfp0_txc_1, dut.qsfp0_tx_clk_1, dut.qsfp0_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_source = XgmiiSource(dut.qsfp0_rxd_2, dut.qsfp0_rxc_2, dut.qsfp0_rx_clk_2, dut.qsfp0_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_2, 6.4, units="ns").start())
         self.qsfp0_2_sink = XgmiiSink(dut.qsfp0_txd_2, dut.qsfp0_txc_2, dut.qsfp0_tx_clk_2, dut.qsfp0_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_source = XgmiiSource(dut.qsfp0_rxd_3, dut.qsfp0_rxc_3, dut.qsfp0_rx_clk_3, dut.qsfp0_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_3, 6.4, units="ns").start())
         self.qsfp0_3_sink = XgmiiSink(dut.qsfp0_txd_3, dut.qsfp0_txc_3, dut.qsfp0_tx_clk_3, dut.qsfp0_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_rx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_source = XgmiiSource(dut.qsfp0_rxd_4, dut.qsfp0_rxc_4, dut.qsfp0_rx_clk_4, dut.qsfp0_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp0_tx_clk_4, 6.4, units="ns").start())
         self.qsfp0_4_sink = XgmiiSink(dut.qsfp0_txd_4, dut.qsfp0_txc_4, dut.qsfp0_tx_clk_4, dut.qsfp0_tx_rst_4)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_source = XgmiiSource(dut.qsfp1_rxd_1, dut.qsfp1_rxc_1, dut.qsfp1_rx_clk_1, dut.qsfp1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp1_1_sink = XgmiiSink(dut.qsfp1_txd_1, dut.qsfp1_txc_1, dut.qsfp1_tx_clk_1, dut.qsfp1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_source = XgmiiSource(dut.qsfp1_rxd_2, dut.qsfp1_rxc_2, dut.qsfp1_rx_clk_2, dut.qsfp1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp1_2_sink = XgmiiSink(dut.qsfp1_txd_2, dut.qsfp1_txc_2, dut.qsfp1_tx_clk_2, dut.qsfp1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_source = XgmiiSource(dut.qsfp1_rxd_3, dut.qsfp1_rxc_3, dut.qsfp1_rx_clk_3, dut.qsfp1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp1_3_sink = XgmiiSink(dut.qsfp1_txd_3, dut.qsfp1_txc_3, dut.qsfp1_tx_clk_3, dut.qsfp1_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_rx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_source = XgmiiSource(dut.qsfp1_rxd_4, dut.qsfp1_rxc_4, dut.qsfp1_rx_clk_4, dut.qsfp1_rx_rst_4)
-        cocotb.fork(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp1_tx_clk_4, 6.4, units="ns").start())
         self.qsfp1_4_sink = XgmiiSink(dut.qsfp1_txd_4, dut.qsfp1_txc_4, dut.qsfp1_tx_clk_4, dut.qsfp1_tx_rst_4)
 
         dut.sw.setimmediatevalue(0)
diff --git a/example/ZCU102/fpga/tb/fpga_core/test_fpga_core.py b/example/ZCU102/fpga/tb/fpga_core/test_fpga_core.py
index a5449be7a271bce7cba336a228d8d7758ceaa03f..5e47a3c22a5015080d470783c03225f9ae3d98f0 100644
--- a/example/ZCU102/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/ZCU102/fpga/tb/fpga_core/test_fpga_core.py
@@ -45,27 +45,27 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.sfp0_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp0_rx_clk, 6.4, units="ns").start())
         self.sfp0_source = XgmiiSource(dut.sfp0_rxd, dut.sfp0_rxc, dut.sfp0_rx_clk, dut.sfp0_rx_rst)
-        cocotb.fork(Clock(dut.sfp0_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp0_tx_clk, 6.4, units="ns").start())
         self.sfp0_sink = XgmiiSink(dut.sfp0_txd, dut.sfp0_txc, dut.sfp0_tx_clk, dut.sfp0_tx_rst)
 
-        cocotb.fork(Clock(dut.sfp1_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp1_rx_clk, 6.4, units="ns").start())
         self.sfp1_source = XgmiiSource(dut.sfp1_rxd, dut.sfp1_rxc, dut.sfp1_rx_clk, dut.sfp1_rx_rst)
-        cocotb.fork(Clock(dut.sfp1_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp1_tx_clk, 6.4, units="ns").start())
         self.sfp1_sink = XgmiiSink(dut.sfp1_txd, dut.sfp1_txc, dut.sfp1_tx_clk, dut.sfp1_tx_rst)
 
-        cocotb.fork(Clock(dut.sfp2_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp2_rx_clk, 6.4, units="ns").start())
         self.sfp2_source = XgmiiSource(dut.sfp2_rxd, dut.sfp2_rxc, dut.sfp2_rx_clk, dut.sfp2_rx_rst)
-        cocotb.fork(Clock(dut.sfp2_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp2_tx_clk, 6.4, units="ns").start())
         self.sfp2_sink = XgmiiSink(dut.sfp2_txd, dut.sfp2_txc, dut.sfp2_tx_clk, dut.sfp2_tx_rst)
 
-        cocotb.fork(Clock(dut.sfp3_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp3_rx_clk, 6.4, units="ns").start())
         self.sfp3_source = XgmiiSource(dut.sfp3_rxd, dut.sfp3_rxc, dut.sfp3_rx_clk, dut.sfp3_rx_rst)
-        cocotb.fork(Clock(dut.sfp3_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp3_tx_clk, 6.4, units="ns").start())
         self.sfp3_sink = XgmiiSink(dut.sfp3_txd, dut.sfp3_txc, dut.sfp3_tx_clk, dut.sfp3_tx_rst)
 
         dut.btnu.setimmediatevalue(0)
diff --git a/example/ZCU106/fpga/tb/fpga_core/test_fpga_core.py b/example/ZCU106/fpga/tb/fpga_core/test_fpga_core.py
index c6118d6c824ba8d0e473656b88e14f1d92b46a8a..7de8d6e9fb10a3df7300fda4a4495a072fd3ffb3 100644
--- a/example/ZCU106/fpga/tb/fpga_core/test_fpga_core.py
+++ b/example/ZCU106/fpga/tb/fpga_core/test_fpga_core.py
@@ -45,17 +45,17 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.sfp0_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp0_rx_clk, 6.4, units="ns").start())
         self.sfp0_source = XgmiiSource(dut.sfp0_rxd, dut.sfp0_rxc, dut.sfp0_rx_clk, dut.sfp0_rx_rst)
-        cocotb.fork(Clock(dut.sfp0_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp0_tx_clk, 6.4, units="ns").start())
         self.sfp0_sink = XgmiiSink(dut.sfp0_txd, dut.sfp0_txc, dut.sfp0_tx_clk, dut.sfp0_tx_rst)
 
-        cocotb.fork(Clock(dut.sfp1_rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp1_rx_clk, 6.4, units="ns").start())
         self.sfp1_source = XgmiiSource(dut.sfp1_rxd, dut.sfp1_rxc, dut.sfp1_rx_clk, dut.sfp1_rx_rst)
-        cocotb.fork(Clock(dut.sfp1_tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.sfp1_tx_clk, 6.4, units="ns").start())
         self.sfp1_sink = XgmiiSink(dut.sfp1_txd, dut.sfp1_txc, dut.sfp1_tx_clk, dut.sfp1_tx_rst)
 
         dut.btnu.setimmediatevalue(0)
diff --git a/example/fb2CG/fpga_10g/tb/fpga_core/test_fpga_core.py b/example/fb2CG/fpga_10g/tb/fpga_core/test_fpga_core.py
index 6d7c1589638f49c72eaaa8d0b3cc0f567e171ed8..181fdbf0dd48784e2af1fd307d996ea39d98fdf1 100644
--- a/example/fb2CG/fpga_10g/tb/fpga_core/test_fpga_core.py
+++ b/example/fb2CG/fpga_10g/tb/fpga_core/test_fpga_core.py
@@ -45,47 +45,47 @@ class TB:
         self.log = SimLog("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         # Ethernet
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_0, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_0, 6.4, units="ns").start())
         self.qsfp_0_0_source = XgmiiSource(dut.qsfp_0_rxd_0, dut.qsfp_0_rxc_0, dut.qsfp_0_rx_clk_0, dut.qsfp_0_rx_rst_0)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_0, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_0, 6.4, units="ns").start())
         self.qsfp_0_0_sink = XgmiiSink(dut.qsfp_0_txd_0, dut.qsfp_0_txc_0, dut.qsfp_0_tx_clk_0, dut.qsfp_0_tx_rst_0)
 
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_0_1_source = XgmiiSource(dut.qsfp_0_rxd_1, dut.qsfp_0_rxc_1, dut.qsfp_0_rx_clk_1, dut.qsfp_0_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_0_1_sink = XgmiiSink(dut.qsfp_0_txd_1, dut.qsfp_0_txc_1, dut.qsfp_0_tx_clk_1, dut.qsfp_0_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_0_2_source = XgmiiSource(dut.qsfp_0_rxd_2, dut.qsfp_0_rxc_2, dut.qsfp_0_rx_clk_2, dut.qsfp_0_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_0_2_sink = XgmiiSink(dut.qsfp_0_txd_2, dut.qsfp_0_txc_2, dut.qsfp_0_tx_clk_2, dut.qsfp_0_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_0_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_0_3_source = XgmiiSource(dut.qsfp_0_rxd_3, dut.qsfp_0_rxc_3, dut.qsfp_0_rx_clk_3, dut.qsfp_0_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_0_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_0_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_0_3_sink = XgmiiSink(dut.qsfp_0_txd_3, dut.qsfp_0_txc_3, dut.qsfp_0_tx_clk_3, dut.qsfp_0_tx_rst_3)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_0, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_0, 6.4, units="ns").start())
         self.qsfp_1_0_source = XgmiiSource(dut.qsfp_1_rxd_0, dut.qsfp_1_rxc_0, dut.qsfp_1_rx_clk_0, dut.qsfp_1_rx_rst_0)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_0, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_0, 6.4, units="ns").start())
         self.qsfp_1_0_sink = XgmiiSink(dut.qsfp_1_txd_0, dut.qsfp_1_txc_0, dut.qsfp_1_tx_clk_0, dut.qsfp_1_tx_rst_0)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_1_source = XgmiiSource(dut.qsfp_1_rxd_1, dut.qsfp_1_rxc_1, dut.qsfp_1_rx_clk_1, dut.qsfp_1_rx_rst_1)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_1, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_1, 6.4, units="ns").start())
         self.qsfp_1_1_sink = XgmiiSink(dut.qsfp_1_txd_1, dut.qsfp_1_txc_1, dut.qsfp_1_tx_clk_1, dut.qsfp_1_tx_rst_1)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_2, 6.4, units="ns").start())
         self.qsfp_1_2_source = XgmiiSource(dut.qsfp_1_rxd_2, dut.qsfp_1_rxc_2, dut.qsfp_1_rx_clk_2, dut.qsfp_1_rx_rst_2)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_2, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_2, 6.4, units="ns").start())
         self.qsfp_1_2_sink = XgmiiSink(dut.qsfp_1_txd_2, dut.qsfp_1_txc_2, dut.qsfp_1_tx_clk_2, dut.qsfp_1_tx_rst_2)
 
-        cocotb.fork(Clock(dut.qsfp_1_rx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_rx_clk_3, 6.4, units="ns").start())
         self.qsfp_1_3_source = XgmiiSource(dut.qsfp_1_rxd_3, dut.qsfp_1_rxc_3, dut.qsfp_1_rx_clk_3, dut.qsfp_1_rx_rst_3)
-        cocotb.fork(Clock(dut.qsfp_1_tx_clk_3, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.qsfp_1_tx_clk_3, 6.4, units="ns").start())
         self.qsfp_1_3_sink = XgmiiSink(dut.qsfp_1_txd_3, dut.qsfp_1_txc_3, dut.qsfp_1_tx_clk_3, dut.qsfp_1_tx_rst_3)
 
     async def init(self):
diff --git a/tb/arp/test_arp.py b/tb/arp/test_arp.py
index cad80e0ce1e61bad29af4a25d65258434ab8c01f..495698209084cb49ea84c25d29b6df11460167d1 100644
--- a/tb/arp/test_arp.py
+++ b/tb/arp/test_arp.py
@@ -62,7 +62,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         self.header_source = EthHdrSource(EthHdrBus.from_prefix(dut, "s_eth"), dut.clk, dut.rst)
         self.payload_source = AxiStreamSource(AxiStreamBus.from_prefix(dut, "s_eth_payload_axis"), dut.clk, dut.rst)
diff --git a/tb/arp_cache/test_arp_cache.py b/tb/arp_cache/test_arp_cache.py
index ee9198e0089fbf49e4994a406ff860bf9d1700df..4e3a6daef9d272530d2c611c3b1347b6a05fdc14 100644
--- a/tb/arp_cache/test_arp_cache.py
+++ b/tb/arp_cache/test_arp_cache.py
@@ -49,7 +49,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         self.query_request_source = CacheOpSource(CacheOpBus.from_prefix(dut, "query_request"), dut.clk, dut.rst)
         self.query_response_sink = CacheOpSink(CacheOpBus.from_prefix(dut, "query_response"), dut.clk, dut.rst)
diff --git a/tb/arp_eth_rx/test_arp_eth_rx.py b/tb/arp_eth_rx/test_arp_eth_rx.py
index 8b6ed214b8cb9c5e21f4b620503f526e5013363e..0bde8634a7f87b76cf8921cb7614512738352fc4 100644
--- a/tb/arp_eth_rx/test_arp_eth_rx.py
+++ b/tb/arp_eth_rx/test_arp_eth_rx.py
@@ -59,7 +59,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         self.header_source = EthHdrSource(EthHdrBus.from_prefix(dut, "s_eth"), dut.clk, dut.rst)
         self.payload_source = AxiStreamSource(AxiStreamBus.from_prefix(dut, "s_eth_payload_axis"), dut.clk, dut.rst)
diff --git a/tb/arp_eth_tx/test_arp_eth_tx.py b/tb/arp_eth_tx/test_arp_eth_tx.py
index c42193aa908eb504ba02f40801425c72602f4594..fb071acb8f4e328c87eb39f67a4601919372e547 100644
--- a/tb/arp_eth_tx/test_arp_eth_tx.py
+++ b/tb/arp_eth_tx/test_arp_eth_tx.py
@@ -59,7 +59,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         self.source = ArpHdrSource(ArpHdrBus.from_prefix(dut, "s"), dut.clk, dut.rst)
 
diff --git a/tb/axis_baser_rx_64/test_axis_baser_rx_64.py b/tb/axis_baser_rx_64/test_axis_baser_rx_64.py
index 0fb3c249c68e3162778513326d6c45cb7c3b37b8..46bbab59bda185ee9664722bc5c83bd396de66bd 100644
--- a/tb/axis_baser_rx_64/test_axis_baser_rx_64.py
+++ b/tb/axis_baser_rx_64/test_axis_baser_rx_64.py
@@ -56,7 +56,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         self.source = BaseRSerdesSource(dut.encoded_rx_data, dut.encoded_rx_hdr, dut.clk, scramble=False)
         self.sink = AxiStreamSink(AxiStreamBus.from_prefix(dut, "m_axis"), dut.clk, dut.rst)
diff --git a/tb/axis_baser_tx_64/test_axis_baser_tx_64.py b/tb/axis_baser_tx_64/test_axis_baser_tx_64.py
index 3329f0940d5ce12842c65fdbef41cb06fc91c24d..078559ecf76c3e592f3685d9ad032ff6d6468908 100644
--- a/tb/axis_baser_tx_64/test_axis_baser_tx_64.py
+++ b/tb/axis_baser_tx_64/test_axis_baser_tx_64.py
@@ -56,7 +56,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         self.source = AxiStreamSource(AxiStreamBus.from_prefix(dut, "s_axis"), dut.clk, dut.rst)
         self.sink = BaseRSerdesSink(dut.encoded_tx_data, dut.encoded_tx_hdr, dut.clk, scramble=False)
diff --git a/tb/axis_gmii_rx/test_axis_gmii_rx.py b/tb/axis_gmii_rx/test_axis_gmii_rx.py
index 82d084594eb1f0e83aded7ad55d57281cc35f473..9072852f63a82f6f768e84bcf3336323b473c8cf 100644
--- a/tb/axis_gmii_rx/test_axis_gmii_rx.py
+++ b/tb/axis_gmii_rx/test_axis_gmii_rx.py
@@ -48,7 +48,7 @@ class TB:
         self._enable_generator = None
         self._enable_cr = None
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         self.source = GmiiSource(dut.gmii_rxd, dut.gmii_rx_er, dut.gmii_rx_dv,
             dut.clk, dut.rst, dut.clk_enable, dut.mii_select)
@@ -77,7 +77,7 @@ class TB:
         self._enable_generator = generator
 
         if self._enable_generator is not None:
-            self._enable_cr = cocotb.fork(self._run_enable())
+            self._enable_cr = cocotb.start_soon(self._run_enable())
 
     def clear_enable_generator(self):
         self.set_enable_generator(None)
diff --git a/tb/axis_gmii_tx/test_axis_gmii_tx.py b/tb/axis_gmii_tx/test_axis_gmii_tx.py
index b575a7003f83c9af29d9242e0718ef86afba6b51..ad42e8a2f2b9f71af485c3622de60da6c061f551 100644
--- a/tb/axis_gmii_tx/test_axis_gmii_tx.py
+++ b/tb/axis_gmii_tx/test_axis_gmii_tx.py
@@ -48,7 +48,7 @@ class TB:
         self._enable_generator = None
         self._enable_cr = None
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         self.source = AxiStreamSource(AxiStreamBus.from_prefix(dut, "s_axis"), dut.clk, dut.rst)
         self.sink = GmiiSink(dut.gmii_txd, dut.gmii_tx_er, dut.gmii_tx_en,
@@ -78,7 +78,7 @@ class TB:
         self._enable_generator = generator
 
         if self._enable_generator is not None:
-            self._enable_cr = cocotb.fork(self._run_enable())
+            self._enable_cr = cocotb.start_soon(self._run_enable())
 
     def clear_enable_generator(self):
         self.set_enable_generator(None)
diff --git a/tb/axis_xgmii_rx_32/test_axis_xgmii_rx_32.py b/tb/axis_xgmii_rx_32/test_axis_xgmii_rx_32.py
index 3b048194fd1a666b24726aa150e516f552d932ef..7ac45db54f43314614ad1df4d1c3ab1e8e0fa751 100644
--- a/tb/axis_xgmii_rx_32/test_axis_xgmii_rx_32.py
+++ b/tb/axis_xgmii_rx_32/test_axis_xgmii_rx_32.py
@@ -45,7 +45,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 3.2, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 3.2, units="ns").start())
 
         self.source = XgmiiSource(dut.xgmii_rxd, dut.xgmii_rxc, dut.clk, dut.rst)
         self.sink = AxiStreamSink(AxiStreamBus.from_prefix(dut, "m_axis"), dut.clk, dut.rst)
diff --git a/tb/axis_xgmii_rx_64/test_axis_xgmii_rx_64.py b/tb/axis_xgmii_rx_64/test_axis_xgmii_rx_64.py
index dc6b884d41814d27e4362c33e4e1ddee604464ed..bce6e15f075516c8f19e61545c900e71a2ab737d 100644
--- a/tb/axis_xgmii_rx_64/test_axis_xgmii_rx_64.py
+++ b/tb/axis_xgmii_rx_64/test_axis_xgmii_rx_64.py
@@ -45,7 +45,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         self.source = XgmiiSource(dut.xgmii_rxd, dut.xgmii_rxc, dut.clk, dut.rst)
         self.sink = AxiStreamSink(AxiStreamBus.from_prefix(dut, "m_axis"), dut.clk, dut.rst)
diff --git a/tb/axis_xgmii_tx_32/test_axis_xgmii_tx_32.py b/tb/axis_xgmii_tx_32/test_axis_xgmii_tx_32.py
index 46c03974a90e0b825ea2de04765c4efde9136063..1a7f33591196af39352a7e0dee5283cd94929673 100644
--- a/tb/axis_xgmii_tx_32/test_axis_xgmii_tx_32.py
+++ b/tb/axis_xgmii_tx_32/test_axis_xgmii_tx_32.py
@@ -46,7 +46,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 3.2, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 3.2, units="ns").start())
 
         self.source = AxiStreamSource(AxiStreamBus.from_prefix(dut, "s_axis"), dut.clk, dut.rst)
         self.sink = XgmiiSink(dut.xgmii_txd, dut.xgmii_txc, dut.clk, dut.rst)
diff --git a/tb/axis_xgmii_tx_64/test_axis_xgmii_tx_64.py b/tb/axis_xgmii_tx_64/test_axis_xgmii_tx_64.py
index cf2910ca009bfe6e753fe87a98f6e10f8ea53ce2..f36d77bcaa5c1b5c62b7f8fdbc707a6324226f66 100644
--- a/tb/axis_xgmii_tx_64/test_axis_xgmii_tx_64.py
+++ b/tb/axis_xgmii_tx_64/test_axis_xgmii_tx_64.py
@@ -46,7 +46,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         self.source = AxiStreamSource(AxiStreamBus.from_prefix(dut, "s_axis"), dut.clk, dut.rst)
         self.sink = XgmiiSink(dut.xgmii_txd, dut.xgmii_txc, dut.clk, dut.rst)
diff --git a/tb/baser.py b/tb/baser.py
index 0570ff7e97eec0ad3c4ad752e1b0b8ab6e829765..2a9c9320787bb65d670e7a9185ce21c03c66f45c 100644
--- a/tb/baser.py
+++ b/tb/baser.py
@@ -87,7 +87,7 @@ class BaseRSerdesSource():
         self.data.setimmediatevalue(0)
         self.header.setimmediatevalue(0)
 
-        self._run_cr = cocotb.fork(self._run())
+        self._run_cr = cocotb.start_soon(self._run())
 
     async def send(self, frame):
         while self.full():
@@ -398,7 +398,7 @@ class BaseRSerdesSink:
         self.log.info("  Enable scrambler: %s", self.scramble)
         self.log.info("  Bit reverse: %s", self.reverse)
 
-        self._run_cr = cocotb.fork(self._run())
+        self._run_cr = cocotb.start_soon(self._run())
 
     def _recv(self, frame, compact=True):
         if self.queue.empty():
diff --git a/tb/eth_axis_rx/test_eth_axis_rx.py b/tb/eth_axis_rx/test_eth_axis_rx.py
index 46589cb0413c32994f2626068908e8a151511023..0b8abc5b0ad0cbd658683905a24e9003581b2acf 100644
--- a/tb/eth_axis_rx/test_eth_axis_rx.py
+++ b/tb/eth_axis_rx/test_eth_axis_rx.py
@@ -53,7 +53,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         self.source = AxiStreamSource(AxiStreamBus.from_prefix(dut, "s_axis"), dut.clk, dut.rst)
 
diff --git a/tb/eth_axis_tx/test_eth_axis_tx.py b/tb/eth_axis_tx/test_eth_axis_tx.py
index 4838799fe7fdf9772e4c8e6e9b01f885ccb1ac40..66a2c2b47a1feb806b5e543e0fa5851dd79d6371 100644
--- a/tb/eth_axis_tx/test_eth_axis_tx.py
+++ b/tb/eth_axis_tx/test_eth_axis_tx.py
@@ -54,7 +54,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 8, units="ns").start())
 
         self.header_source = EthHdrSource(EthHdrBus.from_prefix(dut, "s_eth"), dut.clk, dut.rst)
         self.payload_source = AxiStreamSource(AxiStreamBus.from_prefix(dut, "s_eth_payload_axis"), dut.clk, dut.rst)
diff --git a/tb/eth_mac_10g/test_eth_mac_10g.py b/tb/eth_mac_10g/test_eth_mac_10g.py
index 20896501313d2d8ad208567a79b6f2f2bf9fd458..4fcdf07cbb5e49068f39834c64c69725da280578 100644
--- a/tb/eth_mac_10g/test_eth_mac_10g.py
+++ b/tb/eth_mac_10g/test_eth_mac_10g.py
@@ -47,11 +47,11 @@ class TB:
         self.log.setLevel(logging.DEBUG)
 
         if len(dut.xgmii_txd) == 64:
-            cocotb.fork(Clock(dut.rx_clk, 6.4, units="ns").start())
-            cocotb.fork(Clock(dut.tx_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.rx_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.tx_clk, 6.4, units="ns").start())
         else:
-            cocotb.fork(Clock(dut.rx_clk, 3.2, units="ns").start())
-            cocotb.fork(Clock(dut.tx_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.rx_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.tx_clk, 3.2, units="ns").start())
 
         self.xgmii_source = XgmiiSource(dut.xgmii_rxd, dut.xgmii_rxc, dut.rx_clk, dut.rx_rst)
         self.xgmii_sink = XgmiiSink(dut.xgmii_txd, dut.xgmii_txc, dut.tx_clk, dut.tx_rst)
diff --git a/tb/eth_mac_10g_fifo/test_eth_mac_10g_fifo.py b/tb/eth_mac_10g_fifo/test_eth_mac_10g_fifo.py
index 234f018ad635d2fe4992e41cdb4fd9b1b404a16e..53f9f57f2f93e8afc14e7f26e3929f11c2266692 100644
--- a/tb/eth_mac_10g_fifo/test_eth_mac_10g_fifo.py
+++ b/tb/eth_mac_10g_fifo/test_eth_mac_10g_fifo.py
@@ -47,13 +47,13 @@ class TB:
         self.log.setLevel(logging.DEBUG)
 
         if len(dut.xgmii_txd) == 64:
-            cocotb.fork(Clock(dut.logic_clk, 6.4, units="ns").start())
-            cocotb.fork(Clock(dut.rx_clk, 6.4, units="ns").start())
-            cocotb.fork(Clock(dut.tx_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.logic_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.rx_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.tx_clk, 6.4, units="ns").start())
         else:
-            cocotb.fork(Clock(dut.logic_clk, 3.2, units="ns").start())
-            cocotb.fork(Clock(dut.rx_clk, 3.2, units="ns").start())
-            cocotb.fork(Clock(dut.tx_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.logic_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.rx_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.tx_clk, 3.2, units="ns").start())
 
         self.xgmii_source = XgmiiSource(dut.xgmii_rxd, dut.xgmii_rxc, dut.rx_clk, dut.rx_rst)
         self.xgmii_sink = XgmiiSink(dut.xgmii_txd, dut.xgmii_txc, dut.tx_clk, dut.tx_rst)
diff --git a/tb/eth_mac_1g/test_eth_mac_1g.py b/tb/eth_mac_1g/test_eth_mac_1g.py
index 7130da2eb860297c49d8333bde014b768b46efc9..e510463301acb86c1d82323b61571993dc6417ab 100644
--- a/tb/eth_mac_1g/test_eth_mac_1g.py
+++ b/tb/eth_mac_1g/test_eth_mac_1g.py
@@ -50,8 +50,8 @@ class TB:
         self._enable_cr_rx = None
         self._enable_cr_tx = None
 
-        cocotb.fork(Clock(dut.rx_clk, 8, units="ns").start())
-        cocotb.fork(Clock(dut.tx_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.rx_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.tx_clk, 8, units="ns").start())
 
         self.gmii_source = GmiiSource(dut.gmii_rxd, dut.gmii_rx_er, dut.gmii_rx_dv,
             dut.rx_clk, dut.rx_rst, dut.rx_clk_enable, dut.rx_mii_select)
@@ -91,7 +91,7 @@ class TB:
         self._enable_generator_rx = generator
 
         if self._enable_generator_rx is not None:
-            self._enable_cr_rx = cocotb.fork(self._run_enable_rx())
+            self._enable_cr_rx = cocotb.start_soon(self._run_enable_rx())
 
     def set_enable_generator_tx(self, generator=None):
         if self._enable_cr_tx is not None:
@@ -101,7 +101,7 @@ class TB:
         self._enable_generator_tx = generator
 
         if self._enable_generator_tx is not None:
-            self._enable_cr_tx = cocotb.fork(self._run_enable_tx())
+            self._enable_cr_tx = cocotb.start_soon(self._run_enable_tx())
 
     def clear_enable_generator_rx(self):
         self.set_enable_generator_rx(None)
diff --git a/tb/eth_mac_1g_fifo/test_eth_mac_1g_fifo.py b/tb/eth_mac_1g_fifo/test_eth_mac_1g_fifo.py
index 52ac4ffd7299e678acc10dfef9968258f96a2c3d..eead20685fae13d649b65dc85505735b76bb3cd0 100644
--- a/tb/eth_mac_1g_fifo/test_eth_mac_1g_fifo.py
+++ b/tb/eth_mac_1g_fifo/test_eth_mac_1g_fifo.py
@@ -50,9 +50,9 @@ class TB:
         self._enable_cr_rx = None
         self._enable_cr_tx = None
 
-        cocotb.fork(Clock(dut.logic_clk, 8, units="ns").start())
-        cocotb.fork(Clock(dut.rx_clk, 8, units="ns").start())
-        cocotb.fork(Clock(dut.tx_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.logic_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.rx_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.tx_clk, 8, units="ns").start())
 
         self.gmii_source = GmiiSource(dut.gmii_rxd, dut.gmii_rx_er, dut.gmii_rx_dv,
             dut.rx_clk, dut.rx_rst, dut.rx_clk_enable, dut.rx_mii_select)
@@ -93,7 +93,7 @@ class TB:
         self._enable_generator_rx = generator
 
         if self._enable_generator_rx is not None:
-            self._enable_cr_rx = cocotb.fork(self._run_enable_rx())
+            self._enable_cr_rx = cocotb.start_soon(self._run_enable_rx())
 
     def set_enable_generator_tx(self, generator=None):
         if self._enable_cr_tx is not None:
@@ -103,7 +103,7 @@ class TB:
         self._enable_generator_tx = generator
 
         if self._enable_generator_tx is not None:
-            self._enable_cr_tx = cocotb.fork(self._run_enable_tx())
+            self._enable_cr_tx = cocotb.start_soon(self._run_enable_tx())
 
     def clear_enable_generator_rx(self):
         self.set_enable_generator_rx(None)
diff --git a/tb/eth_mac_1g_gmii/test_eth_mac_1g_gmii.py b/tb/eth_mac_1g_gmii/test_eth_mac_1g_gmii.py
index a04364ba3f95931c772f886875df7ac29d1631ec..f50136bd1d8a48398a87224f633f3a2a704f6f39 100644
--- a/tb/eth_mac_1g_gmii/test_eth_mac_1g_gmii.py
+++ b/tb/eth_mac_1g_gmii/test_eth_mac_1g_gmii.py
@@ -45,7 +45,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.gtx_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.gtx_clk, 8, units="ns").start())
 
         self.gmii_phy = GmiiPhy(dut.gmii_txd, dut.gmii_tx_er, dut.gmii_tx_en, dut.mii_tx_clk, dut.gmii_tx_clk,
             dut.gmii_rxd, dut.gmii_rx_er, dut.gmii_rx_dv, dut.gmii_rx_clk, speed=speed)
diff --git a/tb/eth_mac_1g_gmii_fifo/test_eth_mac_1g_gmii_fifo.py b/tb/eth_mac_1g_gmii_fifo/test_eth_mac_1g_gmii_fifo.py
index 00e6f77305dc07cf2134a504d940159628fe8129..106c4fb3b84e5b390c7cb71d35175ec03bdb3072 100644
--- a/tb/eth_mac_1g_gmii_fifo/test_eth_mac_1g_gmii_fifo.py
+++ b/tb/eth_mac_1g_gmii_fifo/test_eth_mac_1g_gmii_fifo.py
@@ -45,8 +45,8 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.gtx_clk, 8, units="ns").start())
-        cocotb.fork(Clock(dut.logic_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.gtx_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.logic_clk, 8, units="ns").start())
 
         self.gmii_phy = GmiiPhy(dut.gmii_txd, dut.gmii_tx_er, dut.gmii_tx_en, dut.mii_tx_clk, dut.gmii_tx_clk,
             dut.gmii_rxd, dut.gmii_rx_er, dut.gmii_rx_dv, dut.gmii_rx_clk, speed=speed)
diff --git a/tb/eth_mac_1g_rgmii/test_eth_mac_1g_rgmii.py b/tb/eth_mac_1g_rgmii/test_eth_mac_1g_rgmii.py
index 7f3f522f1adb5e87304886c0d7a003287859f15d..c0896e94ada7ae3d90c6ccb0dbaee692e11ec49c 100644
--- a/tb/eth_mac_1g_rgmii/test_eth_mac_1g_rgmii.py
+++ b/tb/eth_mac_1g_rgmii/test_eth_mac_1g_rgmii.py
@@ -55,7 +55,7 @@ class TB:
         dut.gtx_clk.setimmediatevalue(0)
         dut.gtx_clk90.setimmediatevalue(0)
 
-        cocotb.fork(self._run_gtx_clk())
+        cocotb.start_soon(self._run_gtx_clk())
 
     async def reset(self):
         self.dut.gtx_rst.setimmediatevalue(0)
diff --git a/tb/eth_mac_1g_rgmii_fifo/test_eth_mac_1g_rgmii_fifo.py b/tb/eth_mac_1g_rgmii_fifo/test_eth_mac_1g_rgmii_fifo.py
index d7d27134e77e72a8c72d8b65507fcc031283768f..fb935d04569ab0dab60a69cbb471e0d005ab2eeb 100644
--- a/tb/eth_mac_1g_rgmii_fifo/test_eth_mac_1g_rgmii_fifo.py
+++ b/tb/eth_mac_1g_rgmii_fifo/test_eth_mac_1g_rgmii_fifo.py
@@ -45,7 +45,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.logic_clk, 8, units="ns").start())
+        cocotb.start_soon(Clock(dut.logic_clk, 8, units="ns").start())
 
         self.rgmii_phy = RgmiiPhy(dut.rgmii_txd, dut.rgmii_tx_ctl, dut.rgmii_tx_clk,
             dut.rgmii_rxd, dut.rgmii_rx_ctl, dut.rgmii_rx_clk, speed=speed)
@@ -58,7 +58,7 @@ class TB:
         dut.gtx_clk.setimmediatevalue(0)
         dut.gtx_clk90.setimmediatevalue(0)
 
-        cocotb.fork(self._run_gtx_clk())
+        cocotb.start_soon(self._run_gtx_clk())
 
     async def reset(self):
         self.dut.gtx_rst.setimmediatevalue(0)
diff --git a/tb/eth_mac_mii_fifo/test_eth_mac_mii_fifo.py b/tb/eth_mac_mii_fifo/test_eth_mac_mii_fifo.py
index d9ee29ca060dd9a45964f155c03800783c3afac7..babeb11782f8aabba3bc01df716548a95d6d827d 100644
--- a/tb/eth_mac_mii_fifo/test_eth_mac_mii_fifo.py
+++ b/tb/eth_mac_mii_fifo/test_eth_mac_mii_fifo.py
@@ -45,7 +45,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.logic_clk, 40, units="ns").start())
+        cocotb.start_soon(Clock(dut.logic_clk, 40, units="ns").start())
 
         self.mii_phy = MiiPhy(dut.mii_txd, dut.mii_tx_er, dut.mii_tx_en, dut.mii_tx_clk,
             dut.mii_rxd, dut.mii_rx_er, dut.mii_rx_dv, dut.mii_rx_clk, speed=speed)
diff --git a/tb/eth_mac_phy_10g/test_eth_mac_phy_10g.py b/tb/eth_mac_phy_10g/test_eth_mac_phy_10g.py
index 48515b5106199fe7047d1f94c494469a8fc996af..3276ed47fe52073ad9956e68c9d4051a784fb5ea 100644
--- a/tb/eth_mac_phy_10g/test_eth_mac_phy_10g.py
+++ b/tb/eth_mac_phy_10g/test_eth_mac_phy_10g.py
@@ -58,11 +58,11 @@ class TB:
         self.log.setLevel(logging.DEBUG)
 
         if len(dut.serdes_tx_data) == 64:
-            cocotb.fork(Clock(dut.rx_clk, 6.4, units="ns").start())
-            cocotb.fork(Clock(dut.tx_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.rx_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.tx_clk, 6.4, units="ns").start())
         else:
-            cocotb.fork(Clock(dut.rx_clk, 3.2, units="ns").start())
-            cocotb.fork(Clock(dut.tx_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.rx_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.tx_clk, 3.2, units="ns").start())
 
         self.serdes_source = BaseRSerdesSource(dut.serdes_rx_data, dut.serdes_rx_hdr, dut.rx_clk, slip=dut.serdes_rx_bitslip)
         self.serdes_sink = BaseRSerdesSink(dut.serdes_tx_data, dut.serdes_tx_hdr, dut.tx_clk)
diff --git a/tb/eth_mac_phy_10g_fifo/test_eth_mac_phy_10g_fifo.py b/tb/eth_mac_phy_10g_fifo/test_eth_mac_phy_10g_fifo.py
index 7f61043d7b5ed5d8b29915fd10538e7960e40c08..057395e1b78ede0e9ec066bad0ef28878f34dc5a 100644
--- a/tb/eth_mac_phy_10g_fifo/test_eth_mac_phy_10g_fifo.py
+++ b/tb/eth_mac_phy_10g_fifo/test_eth_mac_phy_10g_fifo.py
@@ -58,13 +58,13 @@ class TB:
         self.log.setLevel(logging.DEBUG)
 
         if len(dut.serdes_tx_data) == 64:
-            cocotb.fork(Clock(dut.logic_clk, 6.4, units="ns").start())
-            cocotb.fork(Clock(dut.rx_clk, 6.4, units="ns").start())
-            cocotb.fork(Clock(dut.tx_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.logic_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.rx_clk, 6.4, units="ns").start())
+            cocotb.start_soon(Clock(dut.tx_clk, 6.4, units="ns").start())
         else:
-            cocotb.fork(Clock(dut.logic_clk, 3.2, units="ns").start())
-            cocotb.fork(Clock(dut.rx_clk, 3.2, units="ns").start())
-            cocotb.fork(Clock(dut.tx_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.logic_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.rx_clk, 3.2, units="ns").start())
+            cocotb.start_soon(Clock(dut.tx_clk, 3.2, units="ns").start())
 
         self.serdes_source = BaseRSerdesSource(dut.serdes_rx_data, dut.serdes_rx_hdr, dut.rx_clk, slip=dut.serdes_rx_bitslip)
         self.serdes_sink = BaseRSerdesSink(dut.serdes_tx_data, dut.serdes_tx_hdr, dut.tx_clk)
diff --git a/tb/eth_phy_10g/test_eth_phy_10g.py b/tb/eth_phy_10g/test_eth_phy_10g.py
index 62aabce66ec03ef9a10d36d34d1492cdd5f6d9fa..d6742289df38e066dc13b0b696272ac3057300a2 100644
--- a/tb/eth_phy_10g/test_eth_phy_10g.py
+++ b/tb/eth_phy_10g/test_eth_phy_10g.py
@@ -55,8 +55,8 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.tx_clk, 6.4, units="ns").start())
-        cocotb.fork(Clock(dut.rx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.tx_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.rx_clk, 6.4, units="ns").start())
 
         self.xgmii_source = XgmiiSource(dut.xgmii_txd, dut.xgmii_txc, dut.tx_clk, dut.tx_rst)
         self.xgmii_sink = XgmiiSink(dut.xgmii_rxd, dut.xgmii_rxc, dut.rx_clk, dut.rx_rst)
diff --git a/tb/ptp_clock/test_ptp_clock.py b/tb/ptp_clock/test_ptp_clock.py
index a0543873e31e497a5f93f990b0cb06ee5b2302f3..4bed978dcc09920aed7450bf1097736048d76a96 100644
--- a/tb/ptp_clock/test_ptp_clock.py
+++ b/tb/ptp_clock/test_ptp_clock.py
@@ -41,7 +41,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         dut.input_ts_96.setimmediatevalue(0)
         dut.input_ts_96_valid.setimmediatevalue(0)
diff --git a/tb/ptp_clock_cdc/test_ptp_clock_cdc.py b/tb/ptp_clock_cdc/test_ptp_clock_cdc.py
index a3cb90569de5916bcbd217474556b349eb2e1827..3b9d7482099380209fcfab5d571ea52a3c2735e0 100644
--- a/tb/ptp_clock_cdc/test_ptp_clock_cdc.py
+++ b/tb/ptp_clock_cdc/test_ptp_clock_cdc.py
@@ -44,9 +44,9 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.input_clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.input_clk, 6.4, units="ns").start())
 
-        cocotb.fork(Clock(dut.sample_clk, 10, units="ns").start())
+        cocotb.start_soon(Clock(dut.sample_clk, 10, units="ns").start())
 
         if len(dut.input_ts) == 64:
             self.ptp_clock = PtpClock(
@@ -86,7 +86,7 @@ class TB:
         if self._clock_cr is not None:
             self._clock_cr.kill()
 
-        self._clock_cr = cocotb.fork(self._run_clock(period))
+        self._clock_cr = cocotb.start_soon(self._run_clock(period))
 
     async def _run_clock(self, period):
         half_period = get_sim_steps(period / 2.0, 'ns')
diff --git a/tb/ptp_perout/test_ptp_perout.py b/tb/ptp_perout/test_ptp_perout.py
index f163400023a671b1047d468336f74c742b7eb1b7..13a126f9d530c09b3d85457df039c95bb4fdfff5 100644
--- a/tb/ptp_perout/test_ptp_perout.py
+++ b/tb/ptp_perout/test_ptp_perout.py
@@ -42,7 +42,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         self.ptp_clock = PtpClock(
             ts_96=dut.input_ts_96,
diff --git a/tb/xgmii_baser_dec_64/test_xgmii_baser_dec_64.py b/tb/xgmii_baser_dec_64/test_xgmii_baser_dec_64.py
index 081663aa91ffa587edb435fe07cb9954988ea045..bfeb226fc2fc59b3e701be1347e4b6114df52019 100644
--- a/tb/xgmii_baser_dec_64/test_xgmii_baser_dec_64.py
+++ b/tb/xgmii_baser_dec_64/test_xgmii_baser_dec_64.py
@@ -55,7 +55,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         self.source = BaseRSerdesSource(dut.encoded_rx_data, dut.encoded_rx_hdr, dut.clk, scramble=False)
         self.sink = XgmiiSink(dut.xgmii_rxd, dut.xgmii_rxc, dut.clk, dut.rst)
diff --git a/tb/xgmii_baser_enc_64/test_xgmii_baser_enc_64.py b/tb/xgmii_baser_enc_64/test_xgmii_baser_enc_64.py
index 38fe737fe5846514a3d1494359bd13feda0ac8c5..6b25d26a62979a990d173caae1f18c1de7c54ae7 100644
--- a/tb/xgmii_baser_enc_64/test_xgmii_baser_enc_64.py
+++ b/tb/xgmii_baser_enc_64/test_xgmii_baser_enc_64.py
@@ -55,7 +55,7 @@ class TB:
         self.log = logging.getLogger("cocotb.tb")
         self.log.setLevel(logging.DEBUG)
 
-        cocotb.fork(Clock(dut.clk, 6.4, units="ns").start())
+        cocotb.start_soon(Clock(dut.clk, 6.4, units="ns").start())
 
         self.source = XgmiiSource(dut.xgmii_txd, dut.xgmii_txc, dut.clk, dut.rst)
         self.sink = BaseRSerdesSink(dut.encoded_tx_data, dut.encoded_tx_hdr, dut.clk, scramble=False)