#! /opt/homebrew/Cellar/icarus-verilog/13.0/bin/vvp
:ivl_version "13.0 (stable)" "(v13_0)";
:ivl_delay_selection "TYPICAL";
:vpi_time_precision - 12;
:vpi_module "/opt/homebrew/Cellar/icarus-verilog/13.0/lib/ivl/system.vpi";
:vpi_module "/opt/homebrew/Cellar/icarus-verilog/13.0/lib/ivl/vhdl_sys.vpi";
:vpi_module "/opt/homebrew/Cellar/icarus-verilog/13.0/lib/ivl/vhdl_textio.vpi";
:vpi_module "/opt/homebrew/Cellar/icarus-verilog/13.0/lib/ivl/v2005_math.vpi";
:vpi_module "/opt/homebrew/Cellar/icarus-verilog/13.0/lib/ivl/va_math.vpi";
:vpi_module "/opt/homebrew/Cellar/icarus-verilog/13.0/lib/ivl/v2009.vpi";
S_0x1012719d0 .scope package, "$unit" "$unit" 2 1;
 .timescale 0 0;
S_0x1012716f0 .scope module, "tb" "tb" 3 3;
 .timescale -9 -12;
P_0x7e30a43c0 .param/l "ACC_WIDTH" 0 3 9, +C4<00000000000000000000000000101000>;
P_0x7e30a4400 .param/l "DATA_WIDTH" 0 3 5, +C4<00000000000000000000000000010000>;
P_0x7e30a4440 .param/l "FRAC_BITS" 0 3 6, +C4<00000000000000000000000000001000>;
P_0x7e30a4480 .param/l "N_INPUTS" 0 3 7, +C4<00000000000000000000000001000000>;
P_0x7e30a44c0 .param/l "PARALLEL" 0 3 8, +C4<00000000000000000000000000001000>;
v0x7e30b9040_0 .var/s "bias", 15 0;
v0x7e30b90e0_0 .net "busy", 0 0, v0x7e30b86e0_0;  1 drivers
v0x7e30b9180_0 .var "clk", 0 0;
v0x7e30b9220_0 .net "done", 0 0, v0x7e30b8820_0;  1 drivers
v0x7e30b92c0_0 .var/i "errors", 31 0;
v0x7e30b9360_0 .var/i "i", 31 0;
v0x7e30b9400_0 .var "rst", 0 0;
v0x7e30b94a0_0 .var "start", 0 0;
v0x7e30b9540_0 .var/s "w_bus", 1023 0;
v0x7e30b95e0_0 .var/s "x_bus", 1023 0;
v0x7e30b9680_0 .net/s "y", 15 0, v0x7e30b8e60_0;  1 drivers
S_0x1012679f0 .scope module, "dut" "neuron_parallel" 3 32, 4 1 0, S_0x1012716f0;
 .timescale 0 0;
    .port_info 0 /INPUT 1 "clk";
    .port_info 1 /INPUT 1 "rst";
    .port_info 2 /INPUT 1 "start";
    .port_info 3 /INPUT 1024 "x_bus";
    .port_info 4 /INPUT 1024 "w_bus";
    .port_info 5 /INPUT 16 "bias";
    .port_info 6 /OUTPUT 16 "y";
    .port_info 7 /OUTPUT 1 "busy";
    .port_info 8 /OUTPUT 1 "done";
P_0x101267b70 .param/l "ACC_WIDTH" 0 4 6, +C4<00000000000000000000000000101000>;
P_0x101267bb0 .param/l "DATA_WIDTH" 0 4 2, +C4<00000000000000000000000000010000>;
P_0x101267bf0 .param/l "FRAC_BITS" 0 4 3, +C4<00000000000000000000000000001000>;
P_0x101267c30 .param/l "GROUPS" 1 4 21, +C4<00000000000000000000000000001000>;
P_0x101267c70 .param/l "GROUP_INDEX_WIDTH" 1 4 22, +C4<00000000000000000000000000000011>;
P_0x101267cb0 .param/l "N_INPUTS" 0 4 4, +C4<00000000000000000000000001000000>;
P_0x101267cf0 .param/l "PARALLEL" 0 4 5, +C4<00000000000000000000000000001000>;
L_0x7e2c2c2a0 .functor BUFZ 16, v0x7e30b9040_0, C4<0000000000000000>, C4<0000000000000000>, C4<0000000000000000>;
v0x7e30b7840_0 .net *"_ivl_0", 31 0, L_0x7e30b9720;  1 drivers
v0x7e30b78e0_0 .net *"_ivl_11", 31 0, L_0x7e30b9860;  1 drivers
v0x7e30b7980_0 .net *"_ivl_14", 31 0, L_0x7e30b9900;  1 drivers
L_0x7e28540e8 .functor BUFT 1, C4<00000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b7a20_0 .net *"_ivl_17", 28 0, L_0x7e28540e8;  1 drivers
L_0x7e2854130 .functor BUFT 1, C4<00000000000000000000000000001000>, C4<0>, C4<0>, C4<0>;
v0x7e30b7ac0_0 .net/2u *"_ivl_18", 31 0, L_0x7e2854130;  1 drivers
v0x7e30b7b60_0 .net *"_ivl_21", 31 0, L_0x7e30b99a0;  1 drivers
L_0x7e2854178 .functor BUFT 1, C4<00000000000000000000000000010000>, C4<0>, C4<0>, C4<0>;
v0x7e30b7c00_0 .net/2u *"_ivl_22", 31 0, L_0x7e2854178;  1 drivers
v0x7e30b7ca0_0 .net *"_ivl_25", 31 0, L_0x7e30b9a40;  1 drivers
L_0x7e2854010 .functor BUFT 1, C4<00000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b7d40_0 .net *"_ivl_3", 28 0, L_0x7e2854010;  1 drivers
v0x7e30b7de0_0 .net *"_ivl_31", 0 0, L_0x7e2c857c0;  1 drivers
v0x7e30b7e80_0 .net *"_ivl_33", 23 0, L_0x7e2c85860;  1 drivers
v0x7e30b7f20_0 .net *"_ivl_36", 39 0, L_0x7e30baf80;  1 drivers
v0x7e30b8000_0 .net *"_ivl_38", 31 0, L_0x7e2c85900;  1 drivers
L_0x7e2854058 .functor BUFT 1, C4<00000000000000000000000000001000>, C4<0>, C4<0>, C4<0>;
v0x7e30b80a0_0 .net/2u *"_ivl_4", 31 0, L_0x7e2854058;  1 drivers
L_0x7e2854400 .functor BUFT 1, C4<00000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b8140_0 .net *"_ivl_40", 7 0, L_0x7e2854400;  1 drivers
v0x7e30b81e0_0 .net *"_ivl_46", 31 0, L_0x7e2c859a0;  1 drivers
v0x7e30b8280_0 .net *"_ivl_7", 31 0, L_0x7e30b97c0;  1 drivers
L_0x7e28540a0 .functor BUFT 1, C4<00000000000000000000000000010000>, C4<0>, C4<0>, C4<0>;
v0x7e30b8320_0 .net/2u *"_ivl_8", 31 0, L_0x7e28540a0;  1 drivers
v0x7e30b83c0_0 .var/s "acc", 39 0;
v0x7e30b8460_0 .net/s "acc_next", 39 0, L_0x7e2c590e0;  1 drivers
v0x7e30b8500_0 .net/s "bias", 15 0, v0x7e30b9040_0;  1 drivers
v0x7e30b85a0_0 .net/s "bias_ext", 39 0, L_0x7e30baee0;  1 drivers
v0x7e30b8640_0 .net/s "bias_ext_small", 15 0, L_0x7e2c2c2a0;  1 drivers
v0x7e30b86e0_0 .var "busy", 0 0;
v0x7e30b8780_0 .net "clk", 0 0, v0x7e30b9180_0;  1 drivers
v0x7e30b8820_0 .var "done", 0 0;
v0x7e30b88c0_0 .net/s "final_acc", 39 0, L_0x7e2c59180;  1 drivers
v0x7e30b8960_0 .net/s "final_value", 39 0, L_0x7e30bb020;  1 drivers
v0x7e30b8a00_0 .var "group_index", 2 0;
v0x7e30b8aa0_0 .net "rst", 0 0, v0x7e30b9400_0;  1 drivers
v0x7e30b8b40_0 .net "start", 0 0, v0x7e30b94a0_0;  1 drivers
v0x7e30b8be0_0 .net/s "w_bus", 1023 0, v0x7e30b9540_0;  1 drivers
v0x7e30b8c80_0 .net/s "w_group", 127 0, L_0x7e2c84320;  1 drivers
v0x7e30b8d20_0 .net/s "x_bus", 1023 0, v0x7e30b95e0_0;  1 drivers
v0x7e30b8dc0_0 .net/s "x_group", 127 0, L_0x7e2c84280;  1 drivers
v0x7e30b8e60_0 .var/s "y", 15 0;
E_0x7e2c81380 .event posedge, v0x7e30b8780_0;
L_0x7e30b9720 .concat [ 3 29 0 0], v0x7e30b8a00_0, L_0x7e2854010;
L_0x7e30b97c0 .arith/mult 32, L_0x7e30b9720, L_0x7e2854058;
L_0x7e30b9860 .arith/mult 32, L_0x7e30b97c0, L_0x7e28540a0;
L_0x7e2c84280 .part/v v0x7e30b95e0_0, L_0x7e30b9860, 128;
L_0x7e30b9900 .concat [ 3 29 0 0], v0x7e30b8a00_0, L_0x7e28540e8;
L_0x7e30b99a0 .arith/mult 32, L_0x7e30b9900, L_0x7e2854130;
L_0x7e30b9a40 .arith/mult 32, L_0x7e30b99a0, L_0x7e2854178;
L_0x7e2c84320 .part/v v0x7e30b9540_0, L_0x7e30b9a40, 128;
L_0x7e2c857c0 .part L_0x7e2c2c2a0, 15, 1;
L_0x7e2c85860 .repeat 24, 24, L_0x7e2c857c0;
L_0x7e30baee0 .concat [ 16 24 0 0], L_0x7e2c2c2a0, L_0x7e2c85860;
L_0x7e2c85900 .part L_0x7e30baee0, 0, 32;
L_0x7e30baf80 .concat [ 8 32 0 0], L_0x7e2854400, L_0x7e2c85900;
L_0x7e2c59180 .arith/sum 40, L_0x7e2c590e0, L_0x7e30baf80;
L_0x7e2c859a0 .part L_0x7e2c59180, 8, 32;
L_0x7e30bb020 .extend/s 40, L_0x7e2c859a0;
S_0x101263710 .scope module, "u_mac8" "mac8" 4 51, 5 1 0, S_0x1012679f0;
 .timescale 0 0;
    .port_info 0 /INPUT 128 "x_bus";
    .port_info 1 /INPUT 128 "w_bus";
    .port_info 2 /INPUT 40 "acc_in";
    .port_info 3 /OUTPUT 40 "acc_out";
P_0x7e3070b00 .param/l "ACC_WIDTH" 0 5 3, +C4<00000000000000000000000000101000>;
P_0x7e3070b40 .param/l "DATA_WIDTH" 0 5 2, +C4<00000000000000000000000000010000>;
v0x7e30b6c60_0 .net/s "acc_in", 39 0, v0x7e30b83c0_0;  1 drivers
v0x7e30b6d00_0 .net/s "acc_out", 39 0, L_0x7e2c590e0;  alias, 1 drivers
v0x7e30b6da0_0 .net/s "m0", 39 0, L_0x7e2c58780;  1 drivers
v0x7e30b6e40_0 .net/s "m1", 39 0, L_0x7e2c58820;  1 drivers
v0x7e30b6ee0_0 .net/s "m2", 39 0, L_0x7e2c588c0;  1 drivers
v0x7e30b6f80_0 .net/s "m3", 39 0, L_0x7e2c58960;  1 drivers
v0x7e30b7020_0 .net/s "m4", 39 0, L_0x7e2c58a00;  1 drivers
v0x7e30b70c0_0 .net/s "m5", 39 0, L_0x7e2c58aa0;  1 drivers
v0x7e30b7160_0 .net/s "m6", 39 0, L_0x7e2c58b40;  1 drivers
v0x7e30b7200_0 .net/s "m7", 39 0, L_0x7e2c58be0;  1 drivers
v0x7e30b72a0_0 .net/s "s0", 39 0, L_0x7e2c58c80;  1 drivers
v0x7e30b7340_0 .net/s "s1", 39 0, L_0x7e2c58d20;  1 drivers
v0x7e30b73e0_0 .net/s "s2", 39 0, L_0x7e2c58dc0;  1 drivers
v0x7e30b7480_0 .net/s "s3", 39 0, L_0x7e2c58e60;  1 drivers
v0x7e30b7520_0 .net/s "s4", 39 0, L_0x7e2c58f00;  1 drivers
v0x7e30b75c0_0 .net/s "s5", 39 0, L_0x7e2c58fa0;  1 drivers
v0x7e30b7660_0 .net/s "sum", 39 0, L_0x7e2c59040;  1 drivers
v0x7e30b7700_0 .net/s "w_bus", 127 0, L_0x7e2c84320;  alias, 1 drivers
v0x7e30b77a0_0 .net/s "x_bus", 127 0, L_0x7e2c84280;  alias, 1 drivers
L_0x7e2c84500 .part L_0x7e2c84280, 0, 16;
L_0x7e2c845a0 .part L_0x7e2c84320, 0, 16;
L_0x7e2c84780 .part L_0x7e2c84280, 16, 16;
L_0x7e2c84820 .part L_0x7e2c84320, 16, 16;
L_0x7e2c84a00 .part L_0x7e2c84280, 32, 16;
L_0x7e2c84aa0 .part L_0x7e2c84320, 32, 16;
L_0x7e2c84c80 .part L_0x7e2c84280, 48, 16;
L_0x7e2c84d20 .part L_0x7e2c84320, 48, 16;
L_0x7e2c84f00 .part L_0x7e2c84280, 64, 16;
L_0x7e2c84fa0 .part L_0x7e2c84320, 64, 16;
L_0x7e2c85180 .part L_0x7e2c84280, 80, 16;
L_0x7e2c85220 .part L_0x7e2c84320, 80, 16;
L_0x7e2c85400 .part L_0x7e2c84280, 96, 16;
L_0x7e2c854a0 .part L_0x7e2c84320, 96, 16;
L_0x7e2c85680 .part L_0x7e2c84280, 112, 16;
L_0x7e2c85720 .part L_0x7e2c84320, 112, 16;
L_0x7e2c58c80 .arith/sum 40, L_0x7e2c58780, L_0x7e2c58820;
L_0x7e2c58d20 .arith/sum 40, L_0x7e2c588c0, L_0x7e2c58960;
L_0x7e2c58dc0 .arith/sum 40, L_0x7e2c58a00, L_0x7e2c58aa0;
L_0x7e2c58e60 .arith/sum 40, L_0x7e2c58b40, L_0x7e2c58be0;
L_0x7e2c58f00 .arith/sum 40, L_0x7e2c58c80, L_0x7e2c58d20;
L_0x7e2c58fa0 .arith/sum 40, L_0x7e2c58dc0, L_0x7e2c58e60;
L_0x7e2c59040 .arith/sum 40, L_0x7e2c58f00, L_0x7e2c58fa0;
L_0x7e2c590e0 .arith/sum 40, v0x7e30b83c0_0, L_0x7e2c59040;
S_0x101263890 .scope module, "mac0" "mac_unit" 5 33, 6 1 0, S_0x101263710;
 .timescale 0 0;
    .port_info 0 /INPUT 16 "x";
    .port_info 1 /INPUT 16 "w";
    .port_info 2 /INPUT 40 "acc_in";
    .port_info 3 /OUTPUT 40 "acc_out";
P_0x7e30b0000 .param/l "ACC_WIDTH" 0 6 3, +C4<00000000000000000000000000101000>;
P_0x7e30b0040 .param/l "DATA_WIDTH" 0 6 2, +C4<00000000000000000000000000010000>;
P_0x7e30b0080 .param/l "PROD_WIDTH" 1 6 11, +C4<0000000000000000000000000000000000000000000000000000000000100000>;
v0x101271870_0 .net/s *"_ivl_0", 31 0, L_0x7e30b9ae0;  1 drivers
v0x101271b50_0 .net/s *"_ivl_2", 31 0, L_0x7e30b9b80;  1 drivers
v0x10126f830_0 .net *"_ivl_7", 0 0, L_0x7e2c843c0;  1 drivers
v0x101271ff0_0 .net *"_ivl_9", 7 0, L_0x7e2c84460;  1 drivers
L_0x7e28541c0 .functor BUFT 1, C4<0000000000000000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x101271e50_0 .net/s "acc_in", 39 0, L_0x7e28541c0;  1 drivers
v0x101271cb0_0 .net/s "acc_out", 39 0, L_0x7e2c58780;  alias, 1 drivers
v0x1012714b0_0 .net/s "product", 31 0, L_0x7e30b9c20;  1 drivers
v0x1012712d0_0 .net/s "product_ext", 39 0, L_0x7e30b9cc0;  1 drivers
v0x101271090_0 .net/s "w", 15 0, L_0x7e2c845a0;  1 drivers
v0x7e30b4000_0 .net/s "x", 15 0, L_0x7e2c84500;  1 drivers
L_0x7e30b9ae0 .extend/s 32, L_0x7e2c84500;
L_0x7e30b9b80 .extend/s 32, L_0x7e2c845a0;
L_0x7e30b9c20 .arith/mult 32, L_0x7e30b9ae0, L_0x7e30b9b80;
L_0x7e2c843c0 .part L_0x7e30b9c20, 31, 1;
L_0x7e2c84460 .repeat 8, 8, L_0x7e2c843c0;
L_0x7e30b9cc0 .concat [ 32 8 0 0], L_0x7e30b9c20, L_0x7e2c84460;
L_0x7e2c58780 .arith/sum 40, L_0x7e28541c0, L_0x7e30b9cc0;
S_0x10125c9b0 .scope module, "mac1" "mac_unit" 5 43, 6 1 0, S_0x101263710;
 .timescale 0 0;
    .port_info 0 /INPUT 16 "x";
    .port_info 1 /INPUT 16 "w";
    .port_info 2 /INPUT 40 "acc_in";
    .port_info 3 /OUTPUT 40 "acc_out";
P_0x7e30b00c0 .param/l "ACC_WIDTH" 0 6 3, +C4<00000000000000000000000000101000>;
P_0x7e30b0100 .param/l "DATA_WIDTH" 0 6 2, +C4<00000000000000000000000000010000>;
P_0x7e30b0140 .param/l "PROD_WIDTH" 1 6 11, +C4<0000000000000000000000000000000000000000000000000000000000100000>;
v0x7e30b40a0_0 .net/s *"_ivl_0", 31 0, L_0x7e30b9d60;  1 drivers
v0x7e30b4140_0 .net/s *"_ivl_2", 31 0, L_0x7e30b9e00;  1 drivers
v0x7e30b41e0_0 .net *"_ivl_7", 0 0, L_0x7e2c84640;  1 drivers
v0x7e30b4280_0 .net *"_ivl_9", 7 0, L_0x7e2c846e0;  1 drivers
L_0x7e2854208 .functor BUFT 1, C4<0000000000000000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b4320_0 .net/s "acc_in", 39 0, L_0x7e2854208;  1 drivers
v0x7e30b43c0_0 .net/s "acc_out", 39 0, L_0x7e2c58820;  alias, 1 drivers
v0x7e30b4460_0 .net/s "product", 31 0, L_0x7e30b9ea0;  1 drivers
v0x7e30b4500_0 .net/s "product_ext", 39 0, L_0x7e30b9f40;  1 drivers
v0x7e30b45a0_0 .net/s "w", 15 0, L_0x7e2c84820;  1 drivers
v0x7e30b4640_0 .net/s "x", 15 0, L_0x7e2c84780;  1 drivers
L_0x7e30b9d60 .extend/s 32, L_0x7e2c84780;
L_0x7e30b9e00 .extend/s 32, L_0x7e2c84820;
L_0x7e30b9ea0 .arith/mult 32, L_0x7e30b9d60, L_0x7e30b9e00;
L_0x7e2c84640 .part L_0x7e30b9ea0, 31, 1;
L_0x7e2c846e0 .repeat 8, 8, L_0x7e2c84640;
L_0x7e30b9f40 .concat [ 32 8 0 0], L_0x7e30b9ea0, L_0x7e2c846e0;
L_0x7e2c58820 .arith/sum 40, L_0x7e2854208, L_0x7e30b9f40;
S_0x10125cb30 .scope module, "mac2" "mac_unit" 5 53, 6 1 0, S_0x101263710;
 .timescale 0 0;
    .port_info 0 /INPUT 16 "x";
    .port_info 1 /INPUT 16 "w";
    .port_info 2 /INPUT 40 "acc_in";
    .port_info 3 /OUTPUT 40 "acc_out";
P_0x7e30b0180 .param/l "ACC_WIDTH" 0 6 3, +C4<00000000000000000000000000101000>;
P_0x7e30b01c0 .param/l "DATA_WIDTH" 0 6 2, +C4<00000000000000000000000000010000>;
P_0x7e30b0200 .param/l "PROD_WIDTH" 1 6 11, +C4<0000000000000000000000000000000000000000000000000000000000100000>;
v0x7e30b46e0_0 .net/s *"_ivl_0", 31 0, L_0x7e30b9fe0;  1 drivers
v0x7e30b4780_0 .net/s *"_ivl_2", 31 0, L_0x7e30ba080;  1 drivers
v0x7e30b4820_0 .net *"_ivl_7", 0 0, L_0x7e2c848c0;  1 drivers
v0x7e30b48c0_0 .net *"_ivl_9", 7 0, L_0x7e2c84960;  1 drivers
L_0x7e2854250 .functor BUFT 1, C4<0000000000000000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b4960_0 .net/s "acc_in", 39 0, L_0x7e2854250;  1 drivers
v0x7e30b4a00_0 .net/s "acc_out", 39 0, L_0x7e2c588c0;  alias, 1 drivers
v0x7e30b4aa0_0 .net/s "product", 31 0, L_0x7e30ba120;  1 drivers
v0x7e30b4b40_0 .net/s "product_ext", 39 0, L_0x7e30ba1c0;  1 drivers
v0x7e30b4be0_0 .net/s "w", 15 0, L_0x7e2c84aa0;  1 drivers
v0x7e30b4c80_0 .net/s "x", 15 0, L_0x7e2c84a00;  1 drivers
L_0x7e30b9fe0 .extend/s 32, L_0x7e2c84a00;
L_0x7e30ba080 .extend/s 32, L_0x7e2c84aa0;
L_0x7e30ba120 .arith/mult 32, L_0x7e30b9fe0, L_0x7e30ba080;
L_0x7e2c848c0 .part L_0x7e30ba120, 31, 1;
L_0x7e2c84960 .repeat 8, 8, L_0x7e2c848c0;
L_0x7e30ba1c0 .concat [ 32 8 0 0], L_0x7e30ba120, L_0x7e2c84960;
L_0x7e2c588c0 .arith/sum 40, L_0x7e2854250, L_0x7e30ba1c0;
S_0x10125f110 .scope module, "mac3" "mac_unit" 5 63, 6 1 0, S_0x101263710;
 .timescale 0 0;
    .port_info 0 /INPUT 16 "x";
    .port_info 1 /INPUT 16 "w";
    .port_info 2 /INPUT 40 "acc_in";
    .port_info 3 /OUTPUT 40 "acc_out";
P_0x7e30b0240 .param/l "ACC_WIDTH" 0 6 3, +C4<00000000000000000000000000101000>;
P_0x7e30b0280 .param/l "DATA_WIDTH" 0 6 2, +C4<00000000000000000000000000010000>;
P_0x7e30b02c0 .param/l "PROD_WIDTH" 1 6 11, +C4<0000000000000000000000000000000000000000000000000000000000100000>;
v0x7e30b4d20_0 .net/s *"_ivl_0", 31 0, L_0x7e30ba260;  1 drivers
v0x7e30b4dc0_0 .net/s *"_ivl_2", 31 0, L_0x7e30ba300;  1 drivers
v0x7e30b4e60_0 .net *"_ivl_7", 0 0, L_0x7e2c84b40;  1 drivers
v0x7e30b4f00_0 .net *"_ivl_9", 7 0, L_0x7e2c84be0;  1 drivers
L_0x7e2854298 .functor BUFT 1, C4<0000000000000000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b4fa0_0 .net/s "acc_in", 39 0, L_0x7e2854298;  1 drivers
v0x7e30b5040_0 .net/s "acc_out", 39 0, L_0x7e2c58960;  alias, 1 drivers
v0x7e30b50e0_0 .net/s "product", 31 0, L_0x7e30ba3a0;  1 drivers
v0x7e30b5180_0 .net/s "product_ext", 39 0, L_0x7e30ba440;  1 drivers
v0x7e30b5220_0 .net/s "w", 15 0, L_0x7e2c84d20;  1 drivers
v0x7e30b52c0_0 .net/s "x", 15 0, L_0x7e2c84c80;  1 drivers
L_0x7e30ba260 .extend/s 32, L_0x7e2c84c80;
L_0x7e30ba300 .extend/s 32, L_0x7e2c84d20;
L_0x7e30ba3a0 .arith/mult 32, L_0x7e30ba260, L_0x7e30ba300;
L_0x7e2c84b40 .part L_0x7e30ba3a0, 31, 1;
L_0x7e2c84be0 .repeat 8, 8, L_0x7e2c84b40;
L_0x7e30ba440 .concat [ 32 8 0 0], L_0x7e30ba3a0, L_0x7e2c84be0;
L_0x7e2c58960 .arith/sum 40, L_0x7e2854298, L_0x7e30ba440;
S_0x10125f290 .scope module, "mac4" "mac_unit" 5 73, 6 1 0, S_0x101263710;
 .timescale 0 0;
    .port_info 0 /INPUT 16 "x";
    .port_info 1 /INPUT 16 "w";
    .port_info 2 /INPUT 40 "acc_in";
    .port_info 3 /OUTPUT 40 "acc_out";
P_0x7e30b0300 .param/l "ACC_WIDTH" 0 6 3, +C4<00000000000000000000000000101000>;
P_0x7e30b0340 .param/l "DATA_WIDTH" 0 6 2, +C4<00000000000000000000000000010000>;
P_0x7e30b0380 .param/l "PROD_WIDTH" 1 6 11, +C4<0000000000000000000000000000000000000000000000000000000000100000>;
v0x7e30b5360_0 .net/s *"_ivl_0", 31 0, L_0x7e30ba4e0;  1 drivers
v0x7e30b5400_0 .net/s *"_ivl_2", 31 0, L_0x7e30ba580;  1 drivers
v0x7e30b54a0_0 .net *"_ivl_7", 0 0, L_0x7e2c84dc0;  1 drivers
v0x7e30b5540_0 .net *"_ivl_9", 7 0, L_0x7e2c84e60;  1 drivers
L_0x7e28542e0 .functor BUFT 1, C4<0000000000000000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b55e0_0 .net/s "acc_in", 39 0, L_0x7e28542e0;  1 drivers
v0x7e30b5680_0 .net/s "acc_out", 39 0, L_0x7e2c58a00;  alias, 1 drivers
v0x7e30b5720_0 .net/s "product", 31 0, L_0x7e30ba620;  1 drivers
v0x7e30b57c0_0 .net/s "product_ext", 39 0, L_0x7e30ba6c0;  1 drivers
v0x7e30b5860_0 .net/s "w", 15 0, L_0x7e2c84fa0;  1 drivers
v0x7e30b5900_0 .net/s "x", 15 0, L_0x7e2c84f00;  1 drivers
L_0x7e30ba4e0 .extend/s 32, L_0x7e2c84f00;
L_0x7e30ba580 .extend/s 32, L_0x7e2c84fa0;
L_0x7e30ba620 .arith/mult 32, L_0x7e30ba4e0, L_0x7e30ba580;
L_0x7e2c84dc0 .part L_0x7e30ba620, 31, 1;
L_0x7e2c84e60 .repeat 8, 8, L_0x7e2c84dc0;
L_0x7e30ba6c0 .concat [ 32 8 0 0], L_0x7e30ba620, L_0x7e2c84e60;
L_0x7e2c58a00 .arith/sum 40, L_0x7e28542e0, L_0x7e30ba6c0;
S_0x101272590 .scope module, "mac5" "mac_unit" 5 83, 6 1 0, S_0x101263710;
 .timescale 0 0;
    .port_info 0 /INPUT 16 "x";
    .port_info 1 /INPUT 16 "w";
    .port_info 2 /INPUT 40 "acc_in";
    .port_info 3 /OUTPUT 40 "acc_out";
P_0x7e30b03c0 .param/l "ACC_WIDTH" 0 6 3, +C4<00000000000000000000000000101000>;
P_0x7e30b0400 .param/l "DATA_WIDTH" 0 6 2, +C4<00000000000000000000000000010000>;
P_0x7e30b0440 .param/l "PROD_WIDTH" 1 6 11, +C4<0000000000000000000000000000000000000000000000000000000000100000>;
v0x7e30b59a0_0 .net/s *"_ivl_0", 31 0, L_0x7e30ba760;  1 drivers
v0x7e30b5a40_0 .net/s *"_ivl_2", 31 0, L_0x7e30ba800;  1 drivers
v0x7e30b5ae0_0 .net *"_ivl_7", 0 0, L_0x7e2c85040;  1 drivers
v0x7e30b5b80_0 .net *"_ivl_9", 7 0, L_0x7e2c850e0;  1 drivers
L_0x7e2854328 .functor BUFT 1, C4<0000000000000000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b5c20_0 .net/s "acc_in", 39 0, L_0x7e2854328;  1 drivers
v0x7e30b5cc0_0 .net/s "acc_out", 39 0, L_0x7e2c58aa0;  alias, 1 drivers
v0x7e30b5d60_0 .net/s "product", 31 0, L_0x7e30ba8a0;  1 drivers
v0x7e30b5e00_0 .net/s "product_ext", 39 0, L_0x7e30ba940;  1 drivers
v0x7e30b5ea0_0 .net/s "w", 15 0, L_0x7e2c85220;  1 drivers
v0x7e30b5f40_0 .net/s "x", 15 0, L_0x7e2c85180;  1 drivers
L_0x7e30ba760 .extend/s 32, L_0x7e2c85180;
L_0x7e30ba800 .extend/s 32, L_0x7e2c85220;
L_0x7e30ba8a0 .arith/mult 32, L_0x7e30ba760, L_0x7e30ba800;
L_0x7e2c85040 .part L_0x7e30ba8a0, 31, 1;
L_0x7e2c850e0 .repeat 8, 8, L_0x7e2c85040;
L_0x7e30ba940 .concat [ 32 8 0 0], L_0x7e30ba8a0, L_0x7e2c850e0;
L_0x7e2c58aa0 .arith/sum 40, L_0x7e2854328, L_0x7e30ba940;
S_0x1012700f0 .scope module, "mac6" "mac_unit" 5 93, 6 1 0, S_0x101263710;
 .timescale 0 0;
    .port_info 0 /INPUT 16 "x";
    .port_info 1 /INPUT 16 "w";
    .port_info 2 /INPUT 40 "acc_in";
    .port_info 3 /OUTPUT 40 "acc_out";
P_0x7e30b0480 .param/l "ACC_WIDTH" 0 6 3, +C4<00000000000000000000000000101000>;
P_0x7e30b04c0 .param/l "DATA_WIDTH" 0 6 2, +C4<00000000000000000000000000010000>;
P_0x7e30b0500 .param/l "PROD_WIDTH" 1 6 11, +C4<0000000000000000000000000000000000000000000000000000000000100000>;
v0x7e30b5fe0_0 .net/s *"_ivl_0", 31 0, L_0x7e30ba9e0;  1 drivers
v0x7e30b6080_0 .net/s *"_ivl_2", 31 0, L_0x7e30baa80;  1 drivers
v0x7e30b6120_0 .net *"_ivl_7", 0 0, L_0x7e2c852c0;  1 drivers
v0x7e30b61c0_0 .net *"_ivl_9", 7 0, L_0x7e2c85360;  1 drivers
L_0x7e2854370 .functor BUFT 1, C4<0000000000000000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b6260_0 .net/s "acc_in", 39 0, L_0x7e2854370;  1 drivers
v0x7e30b6300_0 .net/s "acc_out", 39 0, L_0x7e2c58b40;  alias, 1 drivers
v0x7e30b63a0_0 .net/s "product", 31 0, L_0x7e30bab20;  1 drivers
v0x7e30b6440_0 .net/s "product_ext", 39 0, L_0x7e30babc0;  1 drivers
v0x7e30b64e0_0 .net/s "w", 15 0, L_0x7e2c854a0;  1 drivers
v0x7e30b6580_0 .net/s "x", 15 0, L_0x7e2c85400;  1 drivers
L_0x7e30ba9e0 .extend/s 32, L_0x7e2c85400;
L_0x7e30baa80 .extend/s 32, L_0x7e2c854a0;
L_0x7e30bab20 .arith/mult 32, L_0x7e30ba9e0, L_0x7e30baa80;
L_0x7e2c852c0 .part L_0x7e30bab20, 31, 1;
L_0x7e2c85360 .repeat 8, 8, L_0x7e2c852c0;
L_0x7e30babc0 .concat [ 32 8 0 0], L_0x7e30bab20, L_0x7e2c85360;
L_0x7e2c58b40 .arith/sum 40, L_0x7e2854370, L_0x7e30babc0;
S_0x101270270 .scope module, "mac7" "mac_unit" 5 103, 6 1 0, S_0x101263710;
 .timescale 0 0;
    .port_info 0 /INPUT 16 "x";
    .port_info 1 /INPUT 16 "w";
    .port_info 2 /INPUT 40 "acc_in";
    .port_info 3 /OUTPUT 40 "acc_out";
P_0x7e30b0540 .param/l "ACC_WIDTH" 0 6 3, +C4<00000000000000000000000000101000>;
P_0x7e30b0580 .param/l "DATA_WIDTH" 0 6 2, +C4<00000000000000000000000000010000>;
P_0x7e30b05c0 .param/l "PROD_WIDTH" 1 6 11, +C4<0000000000000000000000000000000000000000000000000000000000100000>;
v0x7e30b6620_0 .net/s *"_ivl_0", 31 0, L_0x7e30bac60;  1 drivers
v0x7e30b66c0_0 .net/s *"_ivl_2", 31 0, L_0x7e30bad00;  1 drivers
v0x7e30b6760_0 .net *"_ivl_7", 0 0, L_0x7e2c85540;  1 drivers
v0x7e30b6800_0 .net *"_ivl_9", 7 0, L_0x7e2c855e0;  1 drivers
L_0x7e28543b8 .functor BUFT 1, C4<0000000000000000000000000000000000000000>, C4<0>, C4<0>, C4<0>;
v0x7e30b68a0_0 .net/s "acc_in", 39 0, L_0x7e28543b8;  1 drivers
v0x7e30b6940_0 .net/s "acc_out", 39 0, L_0x7e2c58be0;  alias, 1 drivers
v0x7e30b69e0_0 .net/s "product", 31 0, L_0x7e30bada0;  1 drivers
v0x7e30b6a80_0 .net/s "product_ext", 39 0, L_0x7e30bae40;  1 drivers
v0x7e30b6b20_0 .net/s "w", 15 0, L_0x7e2c85720;  1 drivers
v0x7e30b6bc0_0 .net/s "x", 15 0, L_0x7e2c85680;  1 drivers
L_0x7e30bac60 .extend/s 32, L_0x7e2c85680;
L_0x7e30bad00 .extend/s 32, L_0x7e2c85720;
L_0x7e30bada0 .arith/mult 32, L_0x7e30bac60, L_0x7e30bad00;
L_0x7e2c85540 .part L_0x7e30bada0, 31, 1;
L_0x7e2c855e0 .repeat 8, 8, L_0x7e2c85540;
L_0x7e30bae40 .concat [ 32 8 0 0], L_0x7e30bada0, L_0x7e2c855e0;
L_0x7e2c58be0 .arith/sum 40, L_0x7e28543b8, L_0x7e30bae40;
S_0x7e2ca0000 .scope function.vec4.u16, "q8_8" "q8_8" 3 53, 3 53 0, S_0x1012716f0;
 .timescale -9 -12;
; Variable q8_8 is vec4 return value of scope S_0x7e2ca0000
v0x7e30b8fa0_0 .var/real "value", 0 0;
TD_tb.q8_8 ;
    %load/real v0x7e30b8fa0_0;
    %pushi/real 1073741824, 4074; load=256.000
    %mul/wr;
    %vpi_func 3 56 "$rtoi" 32, W<0,r> {0 1 0};
    %pad/s 16;
    %ret/vec4 0, 0, 16;  Assign to q8_8 (store_vec4_to_lval)
    %end;
S_0x7e2ca0180 .scope task, "run_neuron" "run_neuron" 3 63, 3 63 0, S_0x1012716f0;
 .timescale -9 -12;
E_0x7e2c81600 .event anyedge, v0x7e30b8820_0;
TD_tb.run_neuron ;
    %wait E_0x7e2c81380;
    %pushi/vec4 1, 0, 1;
    %store/vec4 v0x7e30b94a0_0, 0, 1;
    %wait E_0x7e2c81380;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x7e30b94a0_0, 0, 1;
T_1.0 ;
    %load/vec4 v0x7e30b9220_0;
    %pad/u 32;
    %pushi/vec4 1, 0, 32;
    %cmp/e;
    %flag_get/vec4 4;
    %cmpi/ne 1, 0, 1;
    %jmp/0xz T_1.1, 6;
    %wait E_0x7e2c81600;
    %jmp T_1.0;
T_1.1 ;
    %wait E_0x7e2c81380;
    %end;
S_0x7e2ca0300 .scope task, "test_1" "test_1" 3 91, 3 91 0, S_0x1012716f0;
 .timescale -9 -12;
TD_tb.test_1 ;
    %vpi_call/w 3 93 "$display", "\000" {0 0 0};
    %vpi_call/w 3 94 "$display", "TEST 1: DIVERSE VECTOR" {0 0 0};
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b95e0_0, 0, 1024;
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b9540_0, 0, 1024;
    %pushi/real 1308622848, 4065; load=0.609375
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %store/vec4 v0x7e30b9040_0, 0, 16;
    %pushi/real 1610612736, 4066; load=1.50000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %ix/load 4, 0, 0;
    %flag_set/imm 4, 0;
    %store/vec4 v0x7e30b95e0_0, 4, 16;
    %pushi/real 1073741824, 4067; load=2.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %ix/load 4, 0, 0;
    %flag_set/imm 4, 0;
    %store/vec4 v0x7e30b9540_0, 4, 16;
    %pushi/real 1073741824, 4067; load=2.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %ix/load 4, 16, 0;
    %flag_set/imm 4, 0;
    %store/vec4 v0x7e30b95e0_0, 4, 16;
    %pushi/real 1073741824, 20450; load=-1.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %ix/load 4, 16, 0;
    %flag_set/imm 4, 0;
    %store/vec4 v0x7e30b9540_0, 4, 16;
    %pushi/real 1073741824, 4065; load=0.500000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %ix/load 4, 32, 0;
    %flag_set/imm 4, 0;
    %store/vec4 v0x7e30b95e0_0, 4, 16;
    %pushi/real 1073741824, 4064; load=0.250000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %ix/load 4, 32, 0;
    %flag_set/imm 4, 0;
    %store/vec4 v0x7e30b9540_0, 4, 16;
    %fork TD_tb.run_neuron, S_0x7e2ca0180;
    %join;
    %vpi_call/w 3 111 "$display", "RTL      = %0d", v0x7e30b9680_0 {0 0 0};
    %vpi_call/w 3 112 "$display", "EXPECTED = 444" {0 0 0};
    %load/vec4 v0x7e30b9680_0;
    %cmpi/ne 444, 0, 16;
    %jmp/0xz  T_2.2, 6;
    %vpi_call/w 3 115 "$display", "FAIL - TEST 1" {0 0 0};
    %load/vec4 v0x7e30b92c0_0;
    %addi 1, 0, 32;
    %store/vec4 v0x7e30b92c0_0, 0, 32;
    %jmp T_2.3;
T_2.2 ;
    %vpi_call/w 3 119 "$display", "PASS - TEST 1" {0 0 0};
T_2.3 ;
    %end;
S_0x7e2ca0480 .scope task, "test_2" "test_2" 3 130, 3 130 0, S_0x1012716f0;
 .timescale -9 -12;
TD_tb.test_2 ;
    %vpi_call/w 3 132 "$display", "\000" {0 0 0};
    %vpi_call/w 3 133 "$display", "TEST 2: RELU" {0 0 0};
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b95e0_0, 0, 1024;
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b9540_0, 0, 1024;
    %pushi/vec4 0, 0, 16;
    %store/vec4 v0x7e30b9040_0, 0, 16;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x7e30b9360_0, 0, 32;
T_3.4 ; Top of for-loop
    %load/vec4 v0x7e30b9360_0;
    %cmpi/s 64, 0, 32;
	  %jmp/0xz T_3.5, 5;
    %pushi/real 1073741824, 4066; load=1.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %load/vec4 v0x7e30b9360_0;
    %muli 16, 0, 32;
    %ix/vec4/s 4;
    %store/vec4 v0x7e30b95e0_0, 4, 16;
    %pushi/real 1073741824, 20450; load=-1.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %load/vec4 v0x7e30b9360_0;
    %muli 16, 0, 32;
    %ix/vec4/s 4;
    %store/vec4 v0x7e30b9540_0, 4, 16;
T_3.6 ; for-loop step statement
    %load/vec4 v0x7e30b9360_0;
    %addi 1, 0, 32;
    %store/vec4 v0x7e30b9360_0, 0, 32;
    %jmp T_3.4;
T_3.5 ; for-loop exit label
    %fork TD_tb.run_neuron, S_0x7e2ca0180;
    %join;
    %vpi_call/w 3 146 "$display", "RTL      = %0d", v0x7e30b9680_0 {0 0 0};
    %vpi_call/w 3 147 "$display", "EXPECTED = 0" {0 0 0};
    %load/vec4 v0x7e30b9680_0;
    %cmpi/ne 0, 0, 16;
    %jmp/0xz  T_3.7, 6;
    %vpi_call/w 3 150 "$display", "FAIL - TEST 2" {0 0 0};
    %load/vec4 v0x7e30b92c0_0;
    %addi 1, 0, 32;
    %store/vec4 v0x7e30b92c0_0, 0, 32;
    %jmp T_3.8;
T_3.7 ;
    %vpi_call/w 3 154 "$display", "PASS - TEST 2" {0 0 0};
T_3.8 ;
    %end;
S_0x7e2ca0600 .scope task, "test_3" "test_3" 3 165, 3 165 0, S_0x1012716f0;
 .timescale -9 -12;
TD_tb.test_3 ;
    %vpi_call/w 3 167 "$display", "\000" {0 0 0};
    %vpi_call/w 3 168 "$display", "TEST 3: POSITIVE SATURATION" {0 0 0};
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b95e0_0, 0, 1024;
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b9540_0, 0, 1024;
    %pushi/vec4 0, 0, 16;
    %store/vec4 v0x7e30b9040_0, 0, 16;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x7e30b9360_0, 0, 32;
T_4.9 ; Top of for-loop
    %load/vec4 v0x7e30b9360_0;
    %cmpi/s 64, 0, 32;
	  %jmp/0xz T_4.10, 5;
    %pushi/real 2130706432, 4072; load=127.000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %load/vec4 v0x7e30b9360_0;
    %muli 16, 0, 32;
    %ix/vec4/s 4;
    %store/vec4 v0x7e30b95e0_0, 4, 16;
    %pushi/real 1073741824, 4067; load=2.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %load/vec4 v0x7e30b9360_0;
    %muli 16, 0, 32;
    %ix/vec4/s 4;
    %store/vec4 v0x7e30b9540_0, 4, 16;
T_4.11 ; for-loop step statement
    %load/vec4 v0x7e30b9360_0;
    %addi 1, 0, 32;
    %store/vec4 v0x7e30b9360_0, 0, 32;
    %jmp T_4.9;
T_4.10 ; for-loop exit label
    %fork TD_tb.run_neuron, S_0x7e2ca0180;
    %join;
    %vpi_call/w 3 181 "$display", "RTL      = %0d", v0x7e30b9680_0 {0 0 0};
    %vpi_call/w 3 182 "$display", "EXPECTED = 32767" {0 0 0};
    %load/vec4 v0x7e30b9680_0;
    %cmpi/ne 32767, 0, 16;
    %jmp/0xz  T_4.12, 6;
    %vpi_call/w 3 185 "$display", "FAIL - TEST 3" {0 0 0};
    %load/vec4 v0x7e30b92c0_0;
    %addi 1, 0, 32;
    %store/vec4 v0x7e30b92c0_0, 0, 32;
    %jmp T_4.13;
T_4.12 ;
    %vpi_call/w 3 189 "$display", "PASS - TEST 3" {0 0 0};
T_4.13 ;
    %end;
S_0x7e2ca0780 .scope task, "test_4" "test_4" 3 206, 3 206 0, S_0x1012716f0;
 .timescale -9 -12;
TD_tb.test_4 ;
    %vpi_call/w 3 208 "$display", "\000" {0 0 0};
    %vpi_call/w 3 209 "$display", "TEST 4: MIXED VALUES + NEGATIVE BIAS" {0 0 0};
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b95e0_0, 0, 1024;
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b9540_0, 0, 1024;
    %pushi/real 1073741824, 20450; load=-1.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %store/vec4 v0x7e30b9040_0, 0, 16;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x7e30b9360_0, 0, 32;
T_5.14 ; Top of for-loop
    %load/vec4 v0x7e30b9360_0;
    %cmpi/s 64, 0, 32;
	  %jmp/0xz T_5.15, 5;
    %load/vec4 v0x7e30b9360_0;
    %pushi/vec4 2, 0, 32;
    %mod/s;
    %cmpi/e 0, 0, 32;
    %jmp/0xz  T_5.17, 4;
    %pushi/real 1073741824, 4067; load=2.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %load/vec4 v0x7e30b9360_0;
    %muli 16, 0, 32;
    %ix/vec4/s 4;
    %store/vec4 v0x7e30b95e0_0, 4, 16;
    %pushi/real 1073741824, 4065; load=0.500000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %load/vec4 v0x7e30b9360_0;
    %muli 16, 0, 32;
    %ix/vec4/s 4;
    %store/vec4 v0x7e30b9540_0, 4, 16;
    %jmp T_5.18;
T_5.17 ;
    %pushi/real 1073741824, 20450; load=-1.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %load/vec4 v0x7e30b9360_0;
    %muli 16, 0, 32;
    %ix/vec4/s 4;
    %store/vec4 v0x7e30b95e0_0, 4, 16;
    %pushi/real 1073741824, 4066; load=1.00000
    %store/real v0x7e30b8fa0_0;
    %callf/vec4 TD_tb.q8_8, S_0x7e2ca0000;
    %load/vec4 v0x7e30b9360_0;
    %muli 16, 0, 32;
    %ix/vec4/s 4;
    %store/vec4 v0x7e30b9540_0, 4, 16;
T_5.18 ;
T_5.16 ; for-loop step statement
    %load/vec4 v0x7e30b9360_0;
    %addi 1, 0, 32;
    %store/vec4 v0x7e30b9360_0, 0, 32;
    %jmp T_5.14;
T_5.15 ; for-loop exit label
    %fork TD_tb.run_neuron, S_0x7e2ca0180;
    %join;
    %vpi_call/w 3 228 "$display", "RTL      = %0d", v0x7e30b9680_0 {0 0 0};
    %vpi_call/w 3 229 "$display", "EXPECTED = 0" {0 0 0};
    %load/vec4 v0x7e30b9680_0;
    %cmpi/ne 0, 0, 16;
    %jmp/0xz  T_5.19, 6;
    %vpi_call/w 3 232 "$display", "FAIL - TEST 4" {0 0 0};
    %load/vec4 v0x7e30b92c0_0;
    %addi 1, 0, 32;
    %store/vec4 v0x7e30b92c0_0, 0, 32;
    %jmp T_5.20;
T_5.19 ;
    %vpi_call/w 3 236 "$display", "PASS - TEST 4" {0 0 0};
T_5.20 ;
    %end;
    .scope S_0x1012679f0;
T_6 ;
    %wait E_0x7e2c81380;
    %load/vec4 v0x7e30b8aa0_0;
    %flag_set/vec4 8;
    %jmp/0xz  T_6.0, 8;
    %pushi/vec4 0, 0, 3;
    %assign/vec4 v0x7e30b8a00_0, 0;
    %pushi/vec4 0, 0, 40;
    %assign/vec4 v0x7e30b83c0_0, 0;
    %pushi/vec4 0, 0, 16;
    %assign/vec4 v0x7e30b8e60_0, 0;
    %pushi/vec4 0, 0, 1;
    %assign/vec4 v0x7e30b86e0_0, 0;
    %pushi/vec4 0, 0, 1;
    %assign/vec4 v0x7e30b8820_0, 0;
    %jmp T_6.1;
T_6.0 ;
    %pushi/vec4 0, 0, 1;
    %assign/vec4 v0x7e30b8820_0, 0;
    %load/vec4 v0x7e30b8b40_0;
    %flag_set/vec4 9;
    %flag_get/vec4 9;
    %jmp/0 T_6.4, 9;
    %load/vec4 v0x7e30b86e0_0;
    %nor/r;
    %and;
T_6.4;
    %flag_set/vec4 8;
    %jmp/0xz  T_6.2, 8;
    %pushi/vec4 0, 0, 3;
    %assign/vec4 v0x7e30b8a00_0, 0;
    %pushi/vec4 0, 0, 40;
    %assign/vec4 v0x7e30b83c0_0, 0;
    %pushi/vec4 1, 0, 1;
    %assign/vec4 v0x7e30b86e0_0, 0;
    %jmp T_6.3;
T_6.2 ;
    %load/vec4 v0x7e30b86e0_0;
    %flag_set/vec4 8;
    %jmp/0xz  T_6.5, 8;
    %load/vec4 v0x7e30b8a00_0;
    %pad/u 32;
    %cmpi/e 7, 0, 32;
    %jmp/0xz  T_6.7, 4;
    %load/vec4 v0x7e30b88c0_0;
    %assign/vec4 v0x7e30b83c0_0, 0;
    %load/vec4 v0x7e30b8960_0;
    %cmpi/s 0, 0, 40;
    %flag_or 5, 4;
    %jmp/0xz  T_6.9, 5;
    %pushi/vec4 0, 0, 16;
    %assign/vec4 v0x7e30b8e60_0, 0;
    %jmp T_6.10;
T_6.9 ;
    %load/vec4 v0x7e30b8960_0;
    %cmpi/s 32767, 0, 40;
    %flag_or 5, 4; GT is !LE
    %flag_inv 5;
    %jmp/0xz  T_6.11, 5;
    %pushi/vec4 32767, 0, 16;
    %assign/vec4 v0x7e30b8e60_0, 0;
    %jmp T_6.12;
T_6.11 ;
    %load/vec4 v0x7e30b8960_0;
    %parti/s 16, 0, 2;
    %assign/vec4 v0x7e30b8e60_0, 0;
T_6.12 ;
T_6.10 ;
    %pushi/vec4 0, 0, 1;
    %assign/vec4 v0x7e30b86e0_0, 0;
    %pushi/vec4 1, 0, 1;
    %assign/vec4 v0x7e30b8820_0, 0;
    %jmp T_6.8;
T_6.7 ;
    %load/vec4 v0x7e30b8460_0;
    %assign/vec4 v0x7e30b83c0_0, 0;
    %load/vec4 v0x7e30b8a00_0;
    %addi 1, 0, 3;
    %assign/vec4 v0x7e30b8a00_0, 0;
T_6.8 ;
T_6.5 ;
T_6.3 ;
T_6.1 ;
    %jmp T_6;
    .thread T_6;
    .scope S_0x1012716f0;
T_7 ;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x7e30b9180_0, 0, 1;
T_7.0 ;
    %delay 5000, 0;
    %load/vec4 v0x7e30b9180_0;
    %inv;
    %store/vec4 v0x7e30b9180_0, 0, 1;
    %jmp T_7.0;
T_7.1 ;
    %end;
    .thread T_7;
    .scope S_0x1012716f0;
T_8 ;
    %vpi_call/w 3 246 "$dumpfile", "sim/neuron_parallel.vcd" {0 0 0};
    %vpi_call/w 3 247 "$dumpvars", 32'sb00000000000000000000000000000000, S_0x1012716f0 {0 0 0};
    %pushi/vec4 1, 0, 1;
    %store/vec4 v0x7e30b9400_0, 0, 1;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x7e30b94a0_0, 0, 1;
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b95e0_0, 0, 1024;
    %pushi/vec4 0, 0, 1024;
    %store/vec4 v0x7e30b9540_0, 0, 1024;
    %pushi/vec4 0, 0, 16;
    %store/vec4 v0x7e30b9040_0, 0, 16;
    %pushi/vec4 0, 0, 32;
    %store/vec4 v0x7e30b92c0_0, 0, 32;
    %pushi/vec4 2, 0, 32;
T_8.0 %dup/vec4;
    %cmpi/s 0, 0, 32;
    %jmp/1xz T_8.1, 5;
    %jmp/1 T_8.1, 4;
    %subi 1, 0, 32;
    %wait E_0x7e2c81380;
    %jmp T_8.0;
T_8.1 ;
    %pop/vec4 1;
    %pushi/vec4 0, 0, 1;
    %store/vec4 v0x7e30b9400_0, 0, 1;
    %vpi_call/w 3 260 "$display", "\000" {0 0 0};
    %vpi_call/w 3 261 "$display", "==============================" {0 0 0};
    %vpi_call/w 3 262 "$display", "NEURON_PARALLEL TESTBENCH" {0 0 0};
    %vpi_call/w 3 263 "$display", "==============================" {0 0 0};
    %fork TD_tb.test_1, S_0x7e2ca0300;
    %join;
    %fork TD_tb.test_2, S_0x7e2ca0480;
    %join;
    %fork TD_tb.test_3, S_0x7e2ca0600;
    %join;
    %fork TD_tb.test_4, S_0x7e2ca0780;
    %join;
    %vpi_call/w 3 270 "$display", "\000" {0 0 0};
    %vpi_call/w 3 271 "$display", "==============================" {0 0 0};
    %load/vec4 v0x7e30b92c0_0;
    %cmpi/e 0, 0, 32;
    %jmp/0xz  T_8.2, 4;
    %vpi_call/w 3 274 "$display", "ALL TESTS PASSED" {0 0 0};
    %jmp T_8.3;
T_8.2 ;
    %vpi_call/w 3 277 "$display", "FAILURES = %0d", v0x7e30b92c0_0 {0 0 0};
T_8.3 ;
    %vpi_call/w 3 280 "$display", "==============================" {0 0 0};
    %vpi_call/w 3 281 "$display", "\000" {0 0 0};
    %vpi_call/w 3 283 "$finish" {0 0 0};
    %end;
    .thread T_8;
# The file index is used to find the file name in the following table.
:file_names 7;
    "N/A";
    "<interactive>";
    "-";
    "sim/neuron_parallel_tb.v";
    "rtl/neuron_parallel.v";
    "rtl/mac8.v";
    "rtl/mac_unit.v";
