Verilator Simulation Output:
================================================================================
Simple Array Port Module Initialized:
DATA_WIDTH = 8 bits
NUM_CHANNELS = 4
=== Simple Array Port Module Testbench Started ===
Testing with 4 channels, 8-bit data width
Phase 1: Reset Test
=== Channel Status at time 30 ===
Channel 0: out= 0, valid=0, count= 0, max= 0, min=255
Channel 1: out= 0, valid=0, count= 0, max= 0, min=255
Channel 2: out= 0, valid=0, count= 0, max= 0, min=255
Channel 3: out= 0, valid=0, count= 0, max= 0, min=255
====================================
Phase 2: Send Data to All Channels
Cycle 0:
*** ALL 4 CHANNELS ACTIVE at time 35 ***
=== Channel Status at time 40 ===
Channel 0: out= 0, valid=1, count= 1, max= 0, min= 0
Channel 1: out= 5, valid=1, count= 1, max= 5, min= 5
Channel 2: out= 10, valid=1, count= 1, max= 10, min= 10
Channel 3: out= 15, valid=1, count= 1, max= 15, min= 15
====================================
Cycle 1:
*** ALL 4 CHANNELS ACTIVE at time 45 ***
=== Channel Status at time 50 ===
Channel 0: out= 20, valid=1, count= 2, max= 20, min= 0
Channel 1: out= 25, valid=1, count= 2, max= 25, min= 5
Channel 2: out= 30, valid=1, count= 2, max= 30, min= 10
Channel 3: out= 35, valid=1, count= 2, max= 35, min= 15
====================================
Cycle 2:
*** ALL 4 CHANNELS ACTIVE at time 55 ***
=== Channel Status at time 60 ===
Channel 0: out= 40, valid=1, count= 3, max= 40, min= 0
Channel 1: out= 45, valid=1, count= 3, max= 45, min= 5
Channel 2: out= 50, valid=1, count= 3, max= 50, min= 10
Channel 3: out= 55, valid=1, count= 3, max= 55, min= 15
====================================
Cycle 3:
*** ALL 4 CHANNELS ACTIVE at time 65 ***
=== Channel Status at time 70 ===
Channel 0: out= 60, valid=1, count= 4, max= 60, min= 0
Channel 1: out= 65, valid=1, count= 4, max= 65, min= 5
Channel 2: out= 70, valid=1, count= 4, max= 70, min= 10
Channel 3: out= 75, valid=1, count= 4, max= 75, min= 15
====================================
Cycle 4:
*** ALL 4 CHANNELS ACTIVE at time 75 ***
=== Channel Status at time 80 ===
Channel 0: out= 80, valid=1, count= 5, max= 80, min= 0
Channel 1: out= 85, valid=1, count= 5, max= 85, min= 5
Channel 2: out= 90, valid=1, count= 5, max= 90, min= 10
Channel 3: out= 95, valid=1, count= 5, max= 95, min= 15
====================================
Phase 3: Selective Channel Operation
=== Channel Status at time 100 ===
Channel 0: out=150, valid=1, count= 6, max=150, min= 0
Channel 1: out= 85, valid=0, count= 5, max= 85, min= 5
Channel 2: out=200, valid=1, count= 6, max=200, min= 10
Channel 3: out= 95, valid=0, count= 5, max= 95, min= 15
====================================
=== Channel Status at time 110 ===
Channel 0: out=150, valid=0, count= 6, max=150, min= 0
Channel 1: out= 75, valid=1, count= 6, max= 85, min= 5
Channel 2: out=200, valid=0, count= 6, max=200, min= 10
Channel 3: out=250, valid=1, count= 6, max=250, min= 15
====================================
Phase 4: Min/Max Value Tracking
Sending test value 50 to all channels
*** ALL 4 CHANNELS ACTIVE at time 115 ***
=== Channel Status at time 120 ===
Channel 0: out= 50, valid=1, count= 7, max=150, min= 0
Channel 1: out= 50, valid=1, count= 7, max= 85, min= 5
Channel 2: out= 50, valid=1, count= 7, max=200, min= 10
Channel 3: out= 50, valid=1, count= 7, max=250, min= 15
====================================
Sending test value 200 to all channels
*** ALL 4 CHANNELS ACTIVE at time 125 ***
=== Channel Status at time 130 ===
Channel 0: out=200, valid=1, count= 8, max=200, min= 0
Channel 1: out=200, valid=1, count= 8, max=200, min= 5
Channel 2: out=200, valid=1, count= 8, max=200, min= 10
Channel 3: out=200, valid=1, count= 8, max=250, min= 15
====================================
Sending test value 10 to all channels
*** ALL 4 CHANNELS ACTIVE at time 135 ***
=== Channel Status at time 140 ===
Channel 0: out= 10, valid=1, count= 9, max=200, min= 0
Channel 1: out= 10, valid=1, count= 9, max=200, min= 5
Channel 2: out= 10, valid=1, count= 9, max=200, min= 10
Channel 3: out= 10, valid=1, count= 9, max=250, min= 10
====================================
Sending test value 240 to all channels
*** ALL 4 CHANNELS ACTIVE at time 145 ***
=== Channel Status at time 150 ===
Channel 0: out=240, valid=1, count= 10, max=240, min= 0
Channel 1: out=240, valid=1, count= 10, max=240, min= 5
Channel 2: out=240, valid=1, count= 10, max=240, min= 10
Channel 3: out=240, valid=1, count= 10, max=250, min= 10
====================================
Sending test value 30 to all channels
*** ALL 4 CHANNELS ACTIVE at time 155 ***
=== Channel Status at time 160 ===
Channel 0: out= 30, valid=1, count= 11, max=240, min= 0
Channel 1: out= 30, valid=1, count= 11, max=240, min= 5
Channel 2: out= 30, valid=1, count= 11, max=240, min= 10
Channel 3: out= 30, valid=1, count= 11, max=250, min= 10
====================================
Phase 5: Enable Control Test
With enable=0 (should not process new data):
=== Channel Status at time 180 ===
Channel 0: out= 30, valid=1, count= 11, max=240, min= 0
Channel 1: out= 30, valid=1, count= 11, max=240, min= 5
Channel 2: out= 30, valid=1, count= 11, max=240, min= 10
Channel 3: out= 30, valid=1, count= 11, max=250, min= 10
====================================
*** ALL 4 CHANNELS ACTIVE at time 185 ***
With enable=1 (should process new data):
=== Channel Status at time 190 ===
Channel 0: out=100, valid=1, count= 12, max=240, min= 0
Channel 1: out=100, valid=1, count= 12, max=240, min= 5
Channel 2: out=100, valid=1, count= 12, max=240, min= 10
Channel 3: out=100, valid=1, count= 12, max=250, min= 10
====================================
Phase 6: Counter Test - Send Multiple Values
*** ALL 4 CHANNELS ACTIVE at time 195 ***
*** ALL 4 CHANNELS ACTIVE at time 205 ***
*** ALL 4 CHANNELS ACTIVE at time 215 ***
=== Channel Status at time 220 ===
Channel 0: out=100, valid=1, count= 15, max=240, min= 0
Channel 1: out=110, valid=1, count= 15, max=240, min= 5
Channel 2: out=120, valid=1, count= 15, max=240, min= 10
Channel 3: out=130, valid=1, count= 15, max=250, min= 10
====================================
Phase 7: Mixed Valid Signals Test
=== Channel Status at time 240 ===
Channel 0: out= 30, valid=1, count= 16, max=240, min= 0
Channel 1: out= 31, valid=0, count= 16, max=240, min= 1
Channel 2: out= 32, valid=1, count= 16, max=240, min= 10
Channel 3: out= 33, valid=0, count= 16, max=250, min= 3
====================================
=== Channel Status at time 260 ===
Channel 0: out= 90, valid=1, count= 17, max=240, min= 0
Channel 1: out= 91, valid=0, count= 17, max=240, min= 1
Channel 2: out= 92, valid=1, count= 17, max=240, min= 10
Channel 3: out= 93, valid=0, count= 17, max=250, min= 3
====================================
Final Status:
=== Channel Status at time 270 ===
Channel 0: out= 90, valid=0, count= 17, max=240, min= 0
Channel 1: out= 91, valid=0, count= 17, max=240, min= 1
Channel 2: out= 92, valid=0, count= 17, max=240, min= 10
Channel 3: out= 93, valid=0, count= 17, max=250, min= 3
====================================
=== Array Port Module Testbench Completed ===
Total simulation time: 270
================================================================================
Process finished with return code: 0
Removing Chapter_5_examples/example_4__array_port_module/obj_dir directory...
Chapter_5_examples/example_4__array_port_module/obj_dir removed successfully.