Files
hdl-projects/alu_basic/alu_basic.vvp

241 lines
7.9 KiB
Plaintext
Raw Normal View History

2026-02-28 21:59:55 +01:00
#! /c/iverilog/bin/vvp
:ivl_version "0.9.7 " "(v0_9_7)";
:vpi_time_precision + 0;
:vpi_module "system";
:vpi_module "v2005_math";
:vpi_module "va_math";
S_01049710 .scope module, "basic_alu_tb" "basic_alu_tb" 2 3;
.timescale 0 0;
v0104CEA0_0 .var "a", 15 0;
v0104CEF8_0 .var "b", 15 0;
v01080FC0_0 .net "carry", 0 0, v01041578_0; 1 drivers
v010811D0_0 .net "negative", 0 0, L_010810C8; 1 drivers
v01081070_0 .var "opcode", 3 0;
v01080D58_0 .net "result", 15 0, v0104CDF0_0; 1 drivers
v01081438_0 .net "zero", 0 0, L_01081018; 1 drivers
S_01049BD8 .scope module, "alu" "basic_alu" 2 10, 3 23, S_01049710;
.timescale 0 0;
v01045228_0 .net *"_s0", 16 0, L_010813E0; 1 drivers
v01045280_0 .net *"_s3", 0 0, C4<0>; 1 drivers
v010452D8_0 .net *"_s4", 16 0, C4<00000000000000000>; 1 drivers
v010414C8_0 .net "a", 15 0, v0104CEA0_0; 1 drivers
v01041520_0 .net "b", 15 0, v0104CEF8_0; 1 drivers
v01041578_0 .var "carry", 0 0;
v0104CD40_0 .alias "negative", 0 0, v010811D0_0;
v0104CD98_0 .net "opcode", 3 0, v01081070_0; 1 drivers
v0104CDF0_0 .var "result", 15 0;
v0104CE48_0 .alias "zero", 0 0, v01081438_0;
E_01072788 .event edge, v0104CD98_0, v010414C8_0, v01041520_0;
L_010813E0 .concat [ 16 1 0 0], v0104CDF0_0, C4<0>;
L_01081018 .cmp/eq 17, L_010813E0, C4<00000000000000000>;
L_010810C8 .part v0104CDF0_0, 15, 1;
.scope S_01049BD8;
T_0 ;
%wait E_01072788;
%set/v v01041578_0, 0, 1;
%load/v 8, v0104CD98_0, 4;
%cmpi/u 8, 0, 4;
%jmp/1 T_0.0, 6;
%cmpi/u 8, 1, 4;
%jmp/1 T_0.1, 6;
%cmpi/u 8, 2, 4;
%jmp/1 T_0.2, 6;
%cmpi/u 8, 3, 4;
%jmp/1 T_0.3, 6;
%cmpi/u 8, 4, 4;
%jmp/1 T_0.4, 6;
%cmpi/u 8, 5, 4;
%jmp/1 T_0.5, 6;
%cmpi/u 8, 6, 4;
%jmp/1 T_0.6, 6;
%cmpi/u 8, 7, 4;
%jmp/1 T_0.7, 6;
%cmpi/u 8, 8, 4;
%jmp/1 T_0.8, 6;
%cmpi/u 8, 9, 4;
%jmp/1 T_0.9, 6;
%cmpi/u 8, 10, 4;
%jmp/1 T_0.10, 6;
%cmpi/u 8, 11, 4;
%jmp/1 T_0.11, 6;
%set/v v0104CDF0_0, 0, 16;
%jmp T_0.13;
T_0.0 ;
%load/v 8, v010414C8_0, 16;
%mov 24, 0, 1;
%load/v 25, v01041520_0, 16;
%mov 41, 0, 1;
%add 8, 25, 17;
%set/v v0104CDF0_0, 8, 16;
%set/v v01041578_0, 24, 1;
%jmp T_0.13;
T_0.1 ;
%load/v 8, v010414C8_0, 16;
%mov 24, 0, 1;
%load/v 25, v01041520_0, 16;
%mov 41, 0, 1;
%sub 8, 25, 17;
%set/v v0104CDF0_0, 8, 16;
%set/v v01041578_0, 24, 1;
%jmp T_0.13;
T_0.2 ;
%load/v 8, v010414C8_0, 16;
%load/v 24, v01041520_0, 16;
%mul 8, 24, 16;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.3 ;
%load/v 8, v010414C8_0, 16;
%load/v 24, v01041520_0, 16;
%div 8, 24, 16;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.4 ;
%load/v 8, v010414C8_0, 16;
%load/v 24, v01041520_0, 16;
%and 8, 24, 16;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.5 ;
%load/v 8, v010414C8_0, 16;
%load/v 24, v01041520_0, 16;
%or 8, 24, 16;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.6 ;
%load/v 8, v010414C8_0, 16;
%inv 8, 16;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.7 ;
%load/v 8, v010414C8_0, 16;
%load/v 24, v01041520_0, 16;
%and 8, 24, 16;
%inv 8, 16;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.8 ;
%load/v 8, v010414C8_0, 16;
%load/v 24, v01041520_0, 16;
%or 8, 24, 16;
%inv 8, 16;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.9 ;
%load/v 8, v010414C8_0, 16;
%load/v 24, v01041520_0, 16;
%xor 8, 24, 16;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.10 ;
%load/v 8, v010414C8_0, 16;
%load/v 24, v01041520_0, 16;
%xor 8, 24, 16;
%inv 8, 16;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.11 ;
%load/v 8, v010414C8_0, 16;
%mov 24, 0, 16;
%inv 8, 32;
%addi 8, 1, 32;
%set/v v0104CDF0_0, 8, 16;
%jmp T_0.13;
T_0.13 ;
%jmp T_0;
.thread T_0, $push;
.scope S_01049710;
T_1 ;
%vpi_call 2 21 "$dumpfile", "./alu_basic/alu_basic.vcd";
%vpi_call 2 22 "$dumpvars", 1'sb0, S_01049710;
%set/v v01081070_0, 0, 4;
%movi 8, 20, 16;
%set/v v0104CEA0_0, 8, 16;
%movi 8, 5, 16;
%set/v v0104CEF8_0, 8, 16;
%delay 1, 0;
%vpi_call 2 26 "$display", "opcode=%d, a=%d, b=%d, result=%d, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%movi 8, 1, 4;
%set/v v01081070_0, 8, 4;
%movi 8, 20, 16;
%set/v v0104CEA0_0, 8, 16;
%movi 8, 5, 16;
%set/v v0104CEF8_0, 8, 16;
%delay 1, 0;
%vpi_call 2 29 "$display", "opcode=%d, a=%d, b=%d, result=%d, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%set/v v01081070_0, 0, 4;
%set/v v0104CEA0_0, 1, 16;
%movi 8, 1, 16;
%set/v v0104CEF8_0, 8, 16;
%delay 1, 0;
%vpi_call 2 34 "$display", "opcode=%d, a=%d, b=%d, result=%d, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%movi 8, 1, 4;
%set/v v01081070_0, 8, 4;
%movi 8, 5, 16;
%set/v v0104CEA0_0, 8, 16;
%movi 8, 20, 16;
%set/v v0104CEF8_0, 8, 16;
%delay 1, 0;
%vpi_call 2 39 "$display", "opcode=%d, a=%d, b=%d, result=%d, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%movi 8, 2, 4;
%set/v v01081070_0, 8, 4;
%movi 8, 100, 16;
%set/v v0104CEA0_0, 8, 16;
%movi 8, 5, 16;
%set/v v0104CEF8_0, 8, 16;
%delay 1, 0;
%vpi_call 2 44 "$display", "opcode=%d, a=%d, b=%d, result=%d, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%movi 8, 3, 4;
%set/v v01081070_0, 8, 4;
%movi 8, 100, 16;
%set/v v0104CEA0_0, 8, 16;
%movi 8, 5, 16;
%set/v v0104CEF8_0, 8, 16;
%delay 1, 0;
%vpi_call 2 49 "$display", "opcode=%d, a=%d, b=%d, result=%d, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%movi 8, 4, 4;
%set/v v01081070_0, 8, 4;
%movi 8, 65280, 16;
%set/v v0104CEA0_0, 8, 16;
%movi 8, 4080, 16;
%set/v v0104CEF8_0, 8, 16;
%delay 1, 0;
%vpi_call 2 54 "$display", "opcode=%h, a=%h, b=%h, result=%h, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%movi 8, 5, 4;
%set/v v01081070_0, 8, 4;
%movi 8, 65280, 16;
%set/v v0104CEA0_0, 8, 16;
%movi 8, 4080, 16;
%set/v v0104CEF8_0, 8, 16;
%delay 1, 0;
%vpi_call 2 59 "$display", "opcode=%h, a=%h, b=%h, result=%h, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%movi 8, 6, 4;
%set/v v01081070_0, 8, 4;
%set/v v0104CEA0_0, 0, 16;
%set/v v0104CEF8_0, 0, 16;
%delay 1, 0;
%vpi_call 2 64 "$display", "opcode=%d, a=%d, b=%d, result=%d, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%movi 8, 9, 4;
%set/v v01081070_0, 8, 4;
%movi 8, 65280, 16;
%set/v v0104CEA0_0, 8, 16;
%movi 8, 4080, 16;
%set/v v0104CEF8_0, 8, 16;
%delay 1, 0;
%vpi_call 2 69 "$display", "opcode=%h, a=%h, b=%h, result=%h, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%movi 8, 11, 4;
%set/v v01081070_0, 8, 4;
%movi 8, 1, 16;
%set/v v0104CEA0_0, 8, 16;
%set/v v0104CEF8_0, 0, 16;
%delay 1, 0;
%vpi_call 2 74 "$display", "opcode=%d, a=%d, b=%d, result=%d, zero=%b, carry=%b, negative=%b", v01081070_0, v0104CEA0_0, v0104CEF8_0, v01080D58_0, v01081438_0, v01080FC0_0, v010811D0_0;
%end;
.thread T_1;
# The file index is used to find the file name in the following table.
:file_names 4;
"N/A";
"<interactive>";
".\alu_basic\alu_basic_tb.v";
"././alu_basic/alu_basic.v";