overflow fix

This commit is contained in:
k0rrluna 2024-12-26 01:24:14 +03:00
parent 2f91f173de
commit 59169c0fff
4 changed files with 356 additions and 484 deletions

View File

@ -8,9 +8,9 @@ module arithmeticUnit (
); );
wire [3:0] addY, subY; wire [3:0] addY, subY;
wire overflowADD, CarryOUTADD, CarryOUTSUB; wire CarryOUTADD, CarryOUTSUB;
addition a1(.A(A), .B(B), .CarryIN(CarryIN), .Y(addY), .CarryOUT(CarryOUTADD), .overflow(overflowADD)); addition a1(.A(A), .B(B), .CarryIN(CarryIN), .Y(addY), .CarryOUT(CarryOUTADD), .overflow(overflow));
subtraction s1(.A(A), .B(B), .BorrowIN(CarryIN), .Y(subY), .BorrowOUT(CarryOUTSUB)); subtraction s1(.A(A), .B(B), .BorrowIN(CarryIN), .Y(subY), .BorrowOUT(CarryOUTSUB));
and add1 (add_Y[0], opCode[0], addY[0]); and add1 (add_Y[0], opCode[0], addY[0]);
@ -24,6 +24,5 @@ and sub3 (sub_Y[2], opCode[1], subY[2]);
and sub4 (sub_Y[3], opCode[1], subY[3]); and sub4 (sub_Y[3], opCode[1], subY[3]);
or or1 (CarryOUT, CarryOUTADD, CarryOUTSUB); or or1 (CarryOUT, CarryOUTADD, CarryOUTSUB);
or or2 (overflow, overflowADD, CarryOUTSUB);
endmodule endmodule

View File

@ -7,332 +7,271 @@
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/vhdl_textio.vpi"; :vpi_module "/usr/lib/x86_64-linux-gnu/ivl/vhdl_textio.vpi";
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/v2005_math.vpi"; :vpi_module "/usr/lib/x86_64-linux-gnu/ivl/v2005_math.vpi";
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/va_math.vpi"; :vpi_module "/usr/lib/x86_64-linux-gnu/ivl/va_math.vpi";
S_0x5632f8d4bad0 .scope module, "subtractionTB" "subtractionTB" 2 1; S_0x56044d0d48c0 .scope module, "subtractionTB" "subtractionTB" 2 1;
.timescale 0 0; .timescale 0 0;
v0x5632f8d77810_0 .var "A", 3 0; v0x56044d107590_0 .var "A", 3 0;
v0x5632f8d77940_0 .var "B", 3 0; v0x56044d107670_0 .var "B", 3 0;
v0x5632f8d77a50_0 .var "BorrowIN", 0 0; v0x56044d107740_0 .var "BorrowIN", 0 0;
v0x5632f8d77af0_0 .net "BorrowOut", 0 0, L_0x5632f8d79f90; 1 drivers v0x56044d107810_0 .net "BorrowOUT", 0 0, L_0x56044d109c20; 1 drivers
v0x5632f8d77b90_0 .net "Y", 3 0, L_0x5632f8d7a4c0; 1 drivers v0x56044d107900_0 .net "Y", 3 0, L_0x56044d10a0c0; 1 drivers
v0x5632f8d77cd0_0 .net "overflow", 0 0, L_0x5632f8d7b470; 1 drivers S_0x56044d0d0e60 .scope module, "uut" "subtraction" 2 9, 3 1 0, S_0x56044d0d48c0;
S_0x5632f8d362e0 .scope module, "uut" "subtraction" 2 10, 3 1 0, S_0x5632f8d4bad0;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 4 "A"; .port_info 0 /INPUT 4 "A";
.port_info 1 /INPUT 4 "B"; .port_info 1 /INPUT 4 "B";
.port_info 2 /INPUT 1 "BorrowIN"; .port_info 2 /INPUT 1 "BorrowIN";
.port_info 3 /OUTPUT 4 "Y"; .port_info 3 /OUTPUT 4 "Y";
.port_info 4 /OUTPUT 1 "BorrowOut"; .port_info 4 /OUTPUT 1 "BorrowOUT";
.port_info 5 /OUTPUT 1 "overflow"; v0x56044d106ef0_0 .net "A", 3 0, v0x56044d107590_0; 1 drivers
v0x5632f8d770f0_0 .net "A", 3 0, v0x5632f8d77810_0; 1 drivers v0x56044d106fd0_0 .net "B", 3 0, v0x56044d107670_0; 1 drivers
v0x5632f8d771d0_0 .net "B", 3 0, v0x5632f8d77940_0; 1 drivers v0x56044d1070b0_0 .net "BorrowIN", 0 0, v0x56044d107740_0; 1 drivers
v0x5632f8d772a0_0 .net "BorrowIN", 0 0, v0x5632f8d77a50_0; 1 drivers v0x56044d1071a0_0 .net "BorrowOUT", 0 0, L_0x56044d109c20; alias, 1 drivers
v0x5632f8d77370_0 .net "BorrowOut", 0 0, L_0x5632f8d79f90; alias, 1 drivers v0x56044d107240_0 .net "Y", 3 0, L_0x56044d10a0c0; alias, 1 drivers
v0x5632f8d77460_0 .net "Y", 3 0, L_0x5632f8d7a4c0; alias, 1 drivers o0x7f55d9dc01e8 .functor BUFZ 1, C4<z>; HiZ drive
o0x7fdc7e0fb6c8 .functor BUFZ 1, C4<z>; HiZ drive ; Elide local net with no drivers, v0x56044d107330_0 name=_ivl_39
; Elide local net with no drivers, v0x5632f8d77550_0 name=_ivl_41 v0x56044d107410_0 .net "tempB", 3 0, L_0x56044d10a1d0; 1 drivers
v0x5632f8d775f0_0 .net "overflow", 0 0, L_0x5632f8d7b470; alias, 1 drivers L_0x56044d107fc0 .part v0x56044d107590_0, 0, 1;
v0x5632f8d77690_0 .net "tempB", 3 0, L_0x5632f8d7b580; 1 drivers L_0x56044d108110 .part v0x56044d107670_0, 0, 1;
L_0x5632f8d783d0 .part v0x5632f8d77810_0, 0, 1; L_0x56044d1088f0 .part v0x56044d107590_0, 1, 1;
L_0x5632f8d78520 .part v0x5632f8d77940_0, 0, 1; L_0x56044d108a20 .part v0x56044d107670_0, 1, 1;
L_0x5632f8d78c60 .part v0x5632f8d77810_0, 1, 1; L_0x56044d108b50 .part L_0x56044d10a1d0, 0, 1;
L_0x5632f8d78e20 .part v0x5632f8d77940_0, 1, 1; L_0x56044d109200 .part v0x56044d107590_0, 2, 1;
L_0x5632f8d78fe0 .part L_0x5632f8d7b580, 0, 1; L_0x56044d109400 .part v0x56044d107670_0, 2, 1;
L_0x5632f8d795f0 .part v0x5632f8d77810_0, 2, 1; L_0x56044d1095c0 .part L_0x56044d10a1d0, 1, 1;
L_0x5632f8d79760 .part v0x5632f8d77940_0, 2, 1; L_0x56044d109cd0 .part v0x56044d107590_0, 3, 1;
L_0x5632f8d79890 .part L_0x5632f8d7b580, 1, 1; L_0x56044d109e00 .part v0x56044d107670_0, 3, 1;
L_0x5632f8d7a0d0 .part v0x5632f8d77810_0, 3, 1; L_0x56044d109f90 .part L_0x56044d10a1d0, 2, 1;
L_0x5632f8d7a200 .part v0x5632f8d77940_0, 3, 1; L_0x56044d10a0c0 .concat8 [ 1 1 1 1], L_0x56044d107ca0, L_0x56044d108530, L_0x56044d108e40, L_0x56044d1098f0;
L_0x5632f8d7a390 .part L_0x5632f8d7b580, 2, 1; L_0x56044d10a1d0 .concat [ 1 1 1 1], L_0x56044d107f30, L_0x56044d108860, L_0x56044d109170, o0x7f55d9dc01e8;
L_0x5632f8d7a4c0 .concat8 [ 1 1 1 1], L_0x5632f8d780b0, L_0x5632f8d788a0, L_0x5632f8d79280, L_0x5632f8d79c60; S_0x56044d0deda0 .scope module, "f0" "fullsubtraction" 3 11, 4 1 0, S_0x56044d0d0e60;
L_0x5632f8d7b580 .concat [ 1 1 1 1], L_0x5632f8d78340, L_0x5632f8d78bd0, L_0x5632f8d79560, o0x7fdc7e0fb6c8;
S_0x5632f8d4a0f0 .scope module, "f0" "fullsubtraction" 3 12, 4 1 0, S_0x5632f8d362e0;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /INPUT 1 "BorrowIN"; .port_info 2 /INPUT 1 "BorrowIN";
.port_info 3 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Difference";
.port_info 4 /OUTPUT 1 "BorrowOut"; .port_info 4 /OUTPUT 1 "BorrowOut";
L_0x5632f8d78340 .functor OR 1, L_0x5632f8d77fa0, L_0x5632f8d782d0, C4<0>, C4<0>; L_0x56044d107f30 .functor OR 1, L_0x56044d107b90, L_0x56044d107ec0, C4<0>, C4<0>;
v0x5632f8d70d80_0 .net "A", 0 0, L_0x5632f8d783d0; 1 drivers v0x56044d102580_0 .net "A", 0 0, L_0x56044d107fc0; 1 drivers
v0x5632f8d70e40_0 .net "B", 0 0, L_0x5632f8d78520; 1 drivers v0x56044d102640_0 .net "B", 0 0, L_0x56044d108110; 1 drivers
v0x5632f8d70f10_0 .net "BorrowIN", 0 0, v0x5632f8d77a50_0; alias, 1 drivers v0x56044d102710_0 .net "BorrowIN", 0 0, v0x56044d107740_0; alias, 1 drivers
v0x5632f8d71010_0 .net "BorrowOut", 0 0, L_0x5632f8d78340; 1 drivers v0x56044d102810_0 .net "BorrowOut", 0 0, L_0x56044d107f30; 1 drivers
v0x5632f8d710b0_0 .net "Difference", 0 0, L_0x5632f8d780b0; 1 drivers v0x56044d1028b0_0 .net "Difference", 0 0, L_0x56044d107ca0; 1 drivers
v0x5632f8d711a0_0 .net "tempB1", 0 0, L_0x5632f8d77fa0; 1 drivers v0x56044d1029a0_0 .net "tempB1", 0 0, L_0x56044d107b90; 1 drivers
v0x5632f8d71270_0 .net "tempB2", 0 0, L_0x5632f8d782d0; 1 drivers v0x56044d102a70_0 .net "tempB2", 0 0, L_0x56044d107ec0; 1 drivers
v0x5632f8d71340_0 .net "tempD", 0 0, L_0x5632f8d77dc0; 1 drivers v0x56044d102b40_0 .net "tempD", 0 0, L_0x56044d1079f0; 1 drivers
S_0x5632f8d430f0 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x5632f8d4a0f0; S_0x56044d09ecf0 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x56044d0deda0;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /OUTPUT 1 "Difference"; .port_info 2 /OUTPUT 1 "Difference";
.port_info 3 /OUTPUT 1 "Borrow"; .port_info 3 /OUTPUT 1 "Borrow";
L_0x5632f8d77dc0 .functor XOR 1, L_0x5632f8d783d0, L_0x5632f8d78520, C4<0>, C4<0>; L_0x56044d1079f0 .functor XOR 1, L_0x56044d107fc0, L_0x56044d108110, C4<0>, C4<0>;
L_0x5632f8d77f10 .functor NOT 1, L_0x5632f8d783d0, C4<0>, C4<0>, C4<0>; L_0x56044d107b00 .functor NOT 1, L_0x56044d107fc0, C4<0>, C4<0>, C4<0>;
L_0x5632f8d77fa0 .functor AND 1, L_0x5632f8d77f10, L_0x5632f8d78520, C4<1>, C4<1>; L_0x56044d107b90 .functor AND 1, L_0x56044d107b00, L_0x56044d108110, C4<1>, C4<1>;
v0x5632f8d4c0e0_0 .net "A", 0 0, L_0x5632f8d783d0; alias, 1 drivers v0x56044d0d6940_0 .net "A", 0 0, L_0x56044d107fc0; alias, 1 drivers
v0x5632f8d38690_0 .net "B", 0 0, L_0x5632f8d78520; alias, 1 drivers v0x56044d0d4ef0_0 .net "B", 0 0, L_0x56044d108110; alias, 1 drivers
v0x5632f8d36980_0 .net "Borrow", 0 0, L_0x5632f8d77fa0; alias, 1 drivers v0x56044d0d3210_0 .net "Borrow", 0 0, L_0x56044d107b90; alias, 1 drivers
v0x5632f8d70490_0 .net "Difference", 0 0, L_0x5632f8d77dc0; alias, 1 drivers v0x56044d0d1500_0 .net "Difference", 0 0, L_0x56044d1079f0; alias, 1 drivers
v0x5632f8d70550_0 .net "notA", 0 0, L_0x5632f8d77f10; 1 drivers v0x56044d0d4c60_0 .net "notA", 0 0, L_0x56044d107b00; 1 drivers
S_0x5632f8d706e0 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x5632f8d4a0f0; S_0x56044d102060 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x56044d0deda0;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /OUTPUT 1 "Difference"; .port_info 2 /OUTPUT 1 "Difference";
.port_info 3 /OUTPUT 1 "Borrow"; .port_info 3 /OUTPUT 1 "Borrow";
L_0x5632f8d780b0 .functor XOR 1, L_0x5632f8d77dc0, v0x5632f8d77a50_0, C4<0>, C4<0>; L_0x56044d107ca0 .functor XOR 1, L_0x56044d1079f0, v0x56044d107740_0, C4<0>, C4<0>;
L_0x5632f8d78240 .functor NOT 1, L_0x5632f8d77dc0, C4<0>, C4<0>, C4<0>; L_0x56044d107e30 .functor NOT 1, L_0x56044d1079f0, C4<0>, C4<0>, C4<0>;
L_0x5632f8d782d0 .functor AND 1, L_0x5632f8d78240, v0x5632f8d77a50_0, C4<1>, C4<1>; L_0x56044d107ec0 .functor AND 1, L_0x56044d107e30, v0x56044d107740_0, C4<1>, C4<1>;
v0x5632f8d70950_0 .net "A", 0 0, L_0x5632f8d77dc0; alias, 1 drivers v0x56044d0d2f80_0 .net "A", 0 0, L_0x56044d1079f0; alias, 1 drivers
v0x5632f8d709f0_0 .net "B", 0 0, v0x5632f8d77a50_0; alias, 1 drivers v0x56044d0d1280_0 .net "B", 0 0, v0x56044d107740_0; alias, 1 drivers
v0x5632f8d70a90_0 .net "Borrow", 0 0, L_0x5632f8d782d0; alias, 1 drivers v0x56044d102260_0 .net "Borrow", 0 0, L_0x56044d107ec0; alias, 1 drivers
v0x5632f8d70b30_0 .net "Difference", 0 0, L_0x5632f8d780b0; alias, 1 drivers v0x56044d102330_0 .net "Difference", 0 0, L_0x56044d107ca0; alias, 1 drivers
v0x5632f8d70bf0_0 .net "notA", 0 0, L_0x5632f8d78240; 1 drivers v0x56044d1023f0_0 .net "notA", 0 0, L_0x56044d107e30; 1 drivers
S_0x5632f8d71430 .scope module, "f1" "fullsubtraction" 3 13, 4 1 0, S_0x5632f8d362e0; S_0x56044d102c30 .scope module, "f1" "fullsubtraction" 3 12, 4 1 0, S_0x56044d0d0e60;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /INPUT 1 "BorrowIN"; .port_info 2 /INPUT 1 "BorrowIN";
.port_info 3 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Difference";
.port_info 4 /OUTPUT 1 "BorrowOut"; .port_info 4 /OUTPUT 1 "BorrowOut";
L_0x5632f8d78bd0 .functor OR 1, L_0x5632f8d78790, L_0x5632f8d78ac0, C4<0>, C4<0>; L_0x56044d108860 .functor OR 1, L_0x56044d108420, L_0x56044d108750, C4<0>, C4<0>;
v0x5632f8d72450_0 .net "A", 0 0, L_0x5632f8d78c60; 1 drivers v0x56044d103b70_0 .net "A", 0 0, L_0x56044d1088f0; 1 drivers
v0x5632f8d72510_0 .net "B", 0 0, L_0x5632f8d78e20; 1 drivers v0x56044d103c30_0 .net "B", 0 0, L_0x56044d108a20; 1 drivers
v0x5632f8d725e0_0 .net "BorrowIN", 0 0, L_0x5632f8d78fe0; 1 drivers v0x56044d103d00_0 .net "BorrowIN", 0 0, L_0x56044d108b50; 1 drivers
v0x5632f8d726e0_0 .net "BorrowOut", 0 0, L_0x5632f8d78bd0; 1 drivers v0x56044d103e00_0 .net "BorrowOut", 0 0, L_0x56044d108860; 1 drivers
v0x5632f8d72780_0 .net "Difference", 0 0, L_0x5632f8d788a0; 1 drivers v0x56044d103ea0_0 .net "Difference", 0 0, L_0x56044d108530; 1 drivers
v0x5632f8d72870_0 .net "tempB1", 0 0, L_0x5632f8d78790; 1 drivers v0x56044d103f90_0 .net "tempB1", 0 0, L_0x56044d108420; 1 drivers
v0x5632f8d72940_0 .net "tempB2", 0 0, L_0x5632f8d78ac0; 1 drivers v0x56044d104060_0 .net "tempB2", 0 0, L_0x56044d108750; 1 drivers
v0x5632f8d72a10_0 .net "tempD", 0 0, L_0x5632f8d78650; 1 drivers v0x56044d104130_0 .net "tempD", 0 0, L_0x56044d108240; 1 drivers
S_0x5632f8d71610 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x5632f8d71430; S_0x56044d102e10 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x56044d102c30;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /OUTPUT 1 "Difference"; .port_info 2 /OUTPUT 1 "Difference";
.port_info 3 /OUTPUT 1 "Borrow"; .port_info 3 /OUTPUT 1 "Borrow";
L_0x5632f8d78650 .functor XOR 1, L_0x5632f8d78c60, L_0x5632f8d78e20, C4<0>, C4<0>; L_0x56044d108240 .functor XOR 1, L_0x56044d1088f0, L_0x56044d108a20, C4<0>, C4<0>;
L_0x5632f8d78700 .functor NOT 1, L_0x5632f8d78c60, C4<0>, C4<0>, C4<0>; L_0x56044d108390 .functor NOT 1, L_0x56044d1088f0, C4<0>, C4<0>, C4<0>;
L_0x5632f8d78790 .functor AND 1, L_0x5632f8d78700, L_0x5632f8d78e20, C4<1>, C4<1>; L_0x56044d108420 .functor AND 1, L_0x56044d108390, L_0x56044d108a20, C4<1>, C4<1>;
v0x5632f8d71890_0 .net "A", 0 0, L_0x5632f8d78c60; alias, 1 drivers v0x56044d103020_0 .net "A", 0 0, L_0x56044d1088f0; alias, 1 drivers
v0x5632f8d71970_0 .net "B", 0 0, L_0x5632f8d78e20; alias, 1 drivers v0x56044d103100_0 .net "B", 0 0, L_0x56044d108a20; alias, 1 drivers
v0x5632f8d71a30_0 .net "Borrow", 0 0, L_0x5632f8d78790; alias, 1 drivers v0x56044d1031c0_0 .net "Borrow", 0 0, L_0x56044d108420; alias, 1 drivers
v0x5632f8d71b00_0 .net "Difference", 0 0, L_0x5632f8d78650; alias, 1 drivers v0x56044d103290_0 .net "Difference", 0 0, L_0x56044d108240; alias, 1 drivers
v0x5632f8d71bc0_0 .net "notA", 0 0, L_0x5632f8d78700; 1 drivers v0x56044d103350_0 .net "notA", 0 0, L_0x56044d108390; 1 drivers
S_0x5632f8d71d50 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x5632f8d71430; S_0x56044d1034e0 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x56044d102c30;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /OUTPUT 1 "Difference"; .port_info 2 /OUTPUT 1 "Difference";
.port_info 3 /OUTPUT 1 "Borrow"; .port_info 3 /OUTPUT 1 "Borrow";
L_0x5632f8d788a0 .functor XOR 1, L_0x5632f8d78650, L_0x5632f8d78fe0, C4<0>, C4<0>; L_0x56044d108530 .functor XOR 1, L_0x56044d108240, L_0x56044d108b50, C4<0>, C4<0>;
L_0x5632f8d78a30 .functor NOT 1, L_0x5632f8d78650, C4<0>, C4<0>, C4<0>; L_0x56044d1086c0 .functor NOT 1, L_0x56044d108240, C4<0>, C4<0>, C4<0>;
L_0x5632f8d78ac0 .functor AND 1, L_0x5632f8d78a30, L_0x5632f8d78fe0, C4<1>, C4<1>; L_0x56044d108750 .functor AND 1, L_0x56044d1086c0, L_0x56044d108b50, C4<1>, C4<1>;
v0x5632f8d71fc0_0 .net "A", 0 0, L_0x5632f8d78650; alias, 1 drivers v0x56044d1036e0_0 .net "A", 0 0, L_0x56044d108240; alias, 1 drivers
v0x5632f8d72090_0 .net "B", 0 0, L_0x5632f8d78fe0; alias, 1 drivers v0x56044d1037b0_0 .net "B", 0 0, L_0x56044d108b50; alias, 1 drivers
v0x5632f8d72130_0 .net "Borrow", 0 0, L_0x5632f8d78ac0; alias, 1 drivers v0x56044d103850_0 .net "Borrow", 0 0, L_0x56044d108750; alias, 1 drivers
v0x5632f8d72200_0 .net "Difference", 0 0, L_0x5632f8d788a0; alias, 1 drivers v0x56044d103920_0 .net "Difference", 0 0, L_0x56044d108530; alias, 1 drivers
v0x5632f8d722c0_0 .net "notA", 0 0, L_0x5632f8d78a30; 1 drivers v0x56044d1039e0_0 .net "notA", 0 0, L_0x56044d1086c0; 1 drivers
S_0x5632f8d72b00 .scope module, "f2" "fullsubtraction" 3 14, 4 1 0, S_0x5632f8d362e0; S_0x56044d104220 .scope module, "f2" "fullsubtraction" 3 13, 4 1 0, S_0x56044d0d0e60;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /INPUT 1 "BorrowIN"; .port_info 2 /INPUT 1 "BorrowIN";
.port_info 3 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Difference";
.port_info 4 /OUTPUT 1 "BorrowOut"; .port_info 4 /OUTPUT 1 "BorrowOut";
L_0x5632f8d79560 .functor OR 1, L_0x5632f8d79210, L_0x5632f8d79450, C4<0>, C4<0>; L_0x56044d109170 .functor OR 1, L_0x56044d108d80, L_0x56044d109060, C4<0>, C4<0>;
v0x5632f8d73bb0_0 .net "A", 0 0, L_0x5632f8d795f0; 1 drivers v0x56044d105170_0 .net "A", 0 0, L_0x56044d109200; 1 drivers
v0x5632f8d73c70_0 .net "B", 0 0, L_0x5632f8d79760; 1 drivers v0x56044d105230_0 .net "B", 0 0, L_0x56044d109400; 1 drivers
v0x5632f8d73d40_0 .net "BorrowIN", 0 0, L_0x5632f8d79890; 1 drivers v0x56044d105300_0 .net "BorrowIN", 0 0, L_0x56044d1095c0; 1 drivers
v0x5632f8d73e40_0 .net "BorrowOut", 0 0, L_0x5632f8d79560; 1 drivers v0x56044d105400_0 .net "BorrowOut", 0 0, L_0x56044d109170; 1 drivers
v0x5632f8d73ee0_0 .net "Difference", 0 0, L_0x5632f8d79280; 1 drivers v0x56044d1054a0_0 .net "Difference", 0 0, L_0x56044d108e40; 1 drivers
v0x5632f8d73fd0_0 .net "tempB1", 0 0, L_0x5632f8d79210; 1 drivers v0x56044d105590_0 .net "tempB1", 0 0, L_0x56044d108d80; 1 drivers
v0x5632f8d740a0_0 .net "tempB2", 0 0, L_0x5632f8d79450; 1 drivers v0x56044d105660_0 .net "tempB2", 0 0, L_0x56044d109060; 1 drivers
v0x5632f8d74170_0 .net "tempD", 0 0, L_0x5632f8d79110; 1 drivers v0x56044d105730_0 .net "tempD", 0 0, L_0x56044d108c80; 1 drivers
S_0x5632f8d72d90 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x5632f8d72b00; S_0x56044d104430 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x56044d104220;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /OUTPUT 1 "Difference"; .port_info 2 /OUTPUT 1 "Difference";
.port_info 3 /OUTPUT 1 "Borrow"; .port_info 3 /OUTPUT 1 "Borrow";
L_0x5632f8d79110 .functor XOR 1, L_0x5632f8d795f0, L_0x5632f8d79760, C4<0>, C4<0>; L_0x56044d108c80 .functor XOR 1, L_0x56044d109200, L_0x56044d109400, C4<0>, C4<0>;
L_0x5632f8d79180 .functor NOT 1, L_0x5632f8d795f0, C4<0>, C4<0>, C4<0>; L_0x56044d108cf0 .functor NOT 1, L_0x56044d109200, C4<0>, C4<0>, C4<0>;
L_0x5632f8d79210 .functor AND 1, L_0x5632f8d79180, L_0x5632f8d79760, C4<1>, C4<1>; L_0x56044d108d80 .functor AND 1, L_0x56044d108cf0, L_0x56044d109400, C4<1>, C4<1>;
v0x5632f8d73010_0 .net "A", 0 0, L_0x5632f8d795f0; alias, 1 drivers v0x56044d104640_0 .net "A", 0 0, L_0x56044d109200; alias, 1 drivers
v0x5632f8d730d0_0 .net "B", 0 0, L_0x5632f8d79760; alias, 1 drivers v0x56044d104700_0 .net "B", 0 0, L_0x56044d109400; alias, 1 drivers
v0x5632f8d73190_0 .net "Borrow", 0 0, L_0x5632f8d79210; alias, 1 drivers v0x56044d1047c0_0 .net "Borrow", 0 0, L_0x56044d108d80; alias, 1 drivers
v0x5632f8d73260_0 .net "Difference", 0 0, L_0x5632f8d79110; alias, 1 drivers v0x56044d104890_0 .net "Difference", 0 0, L_0x56044d108c80; alias, 1 drivers
v0x5632f8d73320_0 .net "notA", 0 0, L_0x5632f8d79180; 1 drivers v0x56044d104950_0 .net "notA", 0 0, L_0x56044d108cf0; 1 drivers
S_0x5632f8d734b0 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x5632f8d72b00; S_0x56044d104ae0 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x56044d104220;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /OUTPUT 1 "Difference"; .port_info 2 /OUTPUT 1 "Difference";
.port_info 3 /OUTPUT 1 "Borrow"; .port_info 3 /OUTPUT 1 "Borrow";
L_0x5632f8d79280 .functor XOR 1, L_0x5632f8d79110, L_0x5632f8d79890, C4<0>, C4<0>; L_0x56044d108e40 .functor XOR 1, L_0x56044d108c80, L_0x56044d1095c0, C4<0>, C4<0>;
L_0x5632f8d793c0 .functor NOT 1, L_0x5632f8d79110, C4<0>, C4<0>, C4<0>; L_0x56044d108fd0 .functor NOT 1, L_0x56044d108c80, C4<0>, C4<0>, C4<0>;
L_0x5632f8d79450 .functor AND 1, L_0x5632f8d793c0, L_0x5632f8d79890, C4<1>, C4<1>; L_0x56044d109060 .functor AND 1, L_0x56044d108fd0, L_0x56044d1095c0, C4<1>, C4<1>;
v0x5632f8d73720_0 .net "A", 0 0, L_0x5632f8d79110; alias, 1 drivers v0x56044d104ce0_0 .net "A", 0 0, L_0x56044d108c80; alias, 1 drivers
v0x5632f8d737f0_0 .net "B", 0 0, L_0x5632f8d79890; alias, 1 drivers v0x56044d104db0_0 .net "B", 0 0, L_0x56044d1095c0; alias, 1 drivers
v0x5632f8d73890_0 .net "Borrow", 0 0, L_0x5632f8d79450; alias, 1 drivers v0x56044d104e50_0 .net "Borrow", 0 0, L_0x56044d109060; alias, 1 drivers
v0x5632f8d73960_0 .net "Difference", 0 0, L_0x5632f8d79280; alias, 1 drivers v0x56044d104f20_0 .net "Difference", 0 0, L_0x56044d108e40; alias, 1 drivers
v0x5632f8d73a20_0 .net "notA", 0 0, L_0x5632f8d793c0; 1 drivers v0x56044d104fe0_0 .net "notA", 0 0, L_0x56044d108fd0; 1 drivers
S_0x5632f8d74260 .scope module, "f3" "fullsubtraction" 3 15, 4 1 0, S_0x5632f8d362e0; S_0x56044d105820 .scope module, "f3" "fullsubtraction" 3 14, 4 1 0, S_0x56044d0d0e60;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /INPUT 1 "BorrowIN"; .port_info 2 /INPUT 1 "BorrowIN";
.port_info 3 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Difference";
.port_info 4 /OUTPUT 1 "BorrowOut"; .port_info 4 /OUTPUT 1 "BorrowOut";
L_0x5632f8d79f90 .functor OR 1, L_0x5632f8d79b50, L_0x5632f8d79e80, C4<0>, C4<0>; L_0x56044d109c20 .functor OR 1, L_0x56044d109880, L_0x56044d109b10, C4<0>, C4<0>;
v0x5632f8d75300_0 .net "A", 0 0, L_0x5632f8d7a0d0; 1 drivers v0x56044d106840_0 .net "A", 0 0, L_0x56044d109cd0; 1 drivers
v0x5632f8d753c0_0 .net "B", 0 0, L_0x5632f8d7a200; 1 drivers v0x56044d106900_0 .net "B", 0 0, L_0x56044d109e00; 1 drivers
v0x5632f8d75490_0 .net "BorrowIN", 0 0, L_0x5632f8d7a390; 1 drivers v0x56044d1069d0_0 .net "BorrowIN", 0 0, L_0x56044d109f90; 1 drivers
v0x5632f8d75590_0 .net "BorrowOut", 0 0, L_0x5632f8d79f90; alias, 1 drivers v0x56044d106ad0_0 .net "BorrowOut", 0 0, L_0x56044d109c20; alias, 1 drivers
v0x5632f8d75630_0 .net "Difference", 0 0, L_0x5632f8d79c60; 1 drivers v0x56044d106b70_0 .net "Difference", 0 0, L_0x56044d1098f0; 1 drivers
v0x5632f8d75720_0 .net "tempB1", 0 0, L_0x5632f8d79b50; 1 drivers v0x56044d106c60_0 .net "tempB1", 0 0, L_0x56044d109880; 1 drivers
v0x5632f8d757f0_0 .net "tempB2", 0 0, L_0x5632f8d79e80; 1 drivers v0x56044d106d30_0 .net "tempB2", 0 0, L_0x56044d109b10; 1 drivers
v0x5632f8d758c0_0 .net "tempD", 0 0, L_0x5632f8d79a10; 1 drivers v0x56044d106e00_0 .net "tempD", 0 0, L_0x56044d109740; 1 drivers
S_0x5632f8d744c0 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x5632f8d74260; S_0x56044d105a00 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x56044d105820;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /OUTPUT 1 "Difference"; .port_info 2 /OUTPUT 1 "Difference";
.port_info 3 /OUTPUT 1 "Borrow"; .port_info 3 /OUTPUT 1 "Borrow";
L_0x5632f8d79a10 .functor XOR 1, L_0x5632f8d7a0d0, L_0x5632f8d7a200, C4<0>, C4<0>; L_0x56044d109740 .functor XOR 1, L_0x56044d109cd0, L_0x56044d109e00, C4<0>, C4<0>;
L_0x5632f8d79ac0 .functor NOT 1, L_0x5632f8d7a0d0, C4<0>, C4<0>, C4<0>; L_0x56044d1097f0 .functor NOT 1, L_0x56044d109cd0, C4<0>, C4<0>, C4<0>;
L_0x5632f8d79b50 .functor AND 1, L_0x5632f8d79ac0, L_0x5632f8d7a200, C4<1>, C4<1>; L_0x56044d109880 .functor AND 1, L_0x56044d1097f0, L_0x56044d109e00, C4<1>, C4<1>;
v0x5632f8d74740_0 .net "A", 0 0, L_0x5632f8d7a0d0; alias, 1 drivers v0x56044d105c80_0 .net "A", 0 0, L_0x56044d109cd0; alias, 1 drivers
v0x5632f8d74820_0 .net "B", 0 0, L_0x5632f8d7a200; alias, 1 drivers v0x56044d105d60_0 .net "B", 0 0, L_0x56044d109e00; alias, 1 drivers
v0x5632f8d748e0_0 .net "Borrow", 0 0, L_0x5632f8d79b50; alias, 1 drivers v0x56044d105e20_0 .net "Borrow", 0 0, L_0x56044d109880; alias, 1 drivers
v0x5632f8d749b0_0 .net "Difference", 0 0, L_0x5632f8d79a10; alias, 1 drivers v0x56044d105ef0_0 .net "Difference", 0 0, L_0x56044d109740; alias, 1 drivers
v0x5632f8d74a70_0 .net "notA", 0 0, L_0x5632f8d79ac0; 1 drivers v0x56044d105fb0_0 .net "notA", 0 0, L_0x56044d1097f0; 1 drivers
S_0x5632f8d74c00 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x5632f8d74260; S_0x56044d106140 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x56044d105820;
.timescale 0 0; .timescale 0 0;
.port_info 0 /INPUT 1 "A"; .port_info 0 /INPUT 1 "A";
.port_info 1 /INPUT 1 "B"; .port_info 1 /INPUT 1 "B";
.port_info 2 /OUTPUT 1 "Difference"; .port_info 2 /OUTPUT 1 "Difference";
.port_info 3 /OUTPUT 1 "Borrow"; .port_info 3 /OUTPUT 1 "Borrow";
L_0x5632f8d79c60 .functor XOR 1, L_0x5632f8d79a10, L_0x5632f8d7a390, C4<0>, C4<0>; L_0x56044d1098f0 .functor XOR 1, L_0x56044d109740, L_0x56044d109f90, C4<0>, C4<0>;
L_0x5632f8d79df0 .functor NOT 1, L_0x5632f8d79a10, C4<0>, C4<0>, C4<0>; L_0x56044d109a80 .functor NOT 1, L_0x56044d109740, C4<0>, C4<0>, C4<0>;
L_0x5632f8d79e80 .functor AND 1, L_0x5632f8d79df0, L_0x5632f8d7a390, C4<1>, C4<1>; L_0x56044d109b10 .functor AND 1, L_0x56044d109a80, L_0x56044d109f90, C4<1>, C4<1>;
v0x5632f8d74e70_0 .net "A", 0 0, L_0x5632f8d79a10; alias, 1 drivers v0x56044d1063b0_0 .net "A", 0 0, L_0x56044d109740; alias, 1 drivers
v0x5632f8d74f40_0 .net "B", 0 0, L_0x5632f8d7a390; alias, 1 drivers v0x56044d106480_0 .net "B", 0 0, L_0x56044d109f90; alias, 1 drivers
v0x5632f8d74fe0_0 .net "Borrow", 0 0, L_0x5632f8d79e80; alias, 1 drivers v0x56044d106520_0 .net "Borrow", 0 0, L_0x56044d109b10; alias, 1 drivers
v0x5632f8d750b0_0 .net "Difference", 0 0, L_0x5632f8d79c60; alias, 1 drivers v0x56044d1065f0_0 .net "Difference", 0 0, L_0x56044d1098f0; alias, 1 drivers
v0x5632f8d75170_0 .net "notA", 0 0, L_0x5632f8d79df0; 1 drivers v0x56044d1066b0_0 .net "notA", 0 0, L_0x56044d109a80; 1 drivers
S_0x5632f8d759b0 .scope module, "od1" "overflowDetect" 3 18, 6 1 0, S_0x5632f8d362e0; .scope S_0x56044d0d48c0;
.timescale 0 0;
.port_info 0 /INPUT 2 "opCode";
.port_info 1 /INPUT 4 "A";
.port_info 2 /INPUT 4 "B";
.port_info 3 /INPUT 4 "Y";
.port_info 4 /INPUT 1 "CarryOUT";
.port_info 5 /OUTPUT 1 "overflowDetect";
L_0x5632f8d7a5d0 .functor OR 1, L_0x5632f8d7a660, L_0x5632f8d7a700, C4<0>, C4<0>;
L_0x5632f8d7a7a0 .functor XNOR 1, L_0x5632f8d7a810, L_0x5632f8d7a8b0, C4<0>, C4<0>;
L_0x5632f8d7a950 .functor XOR 1, L_0x5632f8d7a9c0, L_0x5632f8d7aab0, C4<0>, C4<0>;
L_0x5632f8d7acf0 .functor XOR 1, L_0x5632f8d7ad60, L_0x5632f8d7ae50, C4<0>, C4<0>;
L_0x5632f8d7af40 .functor AND 1, L_0x5632f8d7a7a0, L_0x5632f8d7afb0, C4<1>, C4<1>;
L_0x5632f8d7b050 .functor AND 1, L_0x5632f8d7a950, L_0x5632f8d7b150, C4<1>, C4<1>;
L_0x5632f8d7b2a0 .functor OR 1, L_0x5632f8d7af40, L_0x5632f8d7b050, C4<0>, C4<0>;
L_0x5632f8d7b310 .functor AND 1, L_0x5632f8d7b2a0, L_0x5632f8d7acf0, C4<1>, C4<1>;
L_0x5632f8d7b470 .functor AND 1, L_0x5632f8d7a5d0, L_0x5632f8d7b310, C4<1>, C4<1>;
v0x5632f8d75c80_0 .net "A", 3 0, v0x5632f8d77810_0; alias, 1 drivers
v0x5632f8d75d60_0 .net "B", 3 0, v0x5632f8d77940_0; alias, 1 drivers
v0x5632f8d75e40_0 .net "CarryOUT", 0 0, L_0x5632f8d79f90; alias, 1 drivers
v0x5632f8d75ee0_0 .net "Y", 3 0, L_0x5632f8d7a4c0; alias, 1 drivers
v0x5632f8d75f80_0 .net *"_ivl_1", 0 0, L_0x5632f8d7a660; 1 drivers
v0x5632f8d760b0_0 .net *"_ivl_11", 0 0, L_0x5632f8d7aab0; 1 drivers
v0x5632f8d76190_0 .net *"_ivl_13", 0 0, L_0x5632f8d7ad60; 1 drivers
v0x5632f8d76270_0 .net *"_ivl_15", 0 0, L_0x5632f8d7ae50; 1 drivers
v0x5632f8d76350_0 .net *"_ivl_17", 0 0, L_0x5632f8d7afb0; 1 drivers
v0x5632f8d76430_0 .net *"_ivl_19", 0 0, L_0x5632f8d7b150; 1 drivers
v0x5632f8d76510_0 .net *"_ivl_3", 0 0, L_0x5632f8d7a700; 1 drivers
v0x5632f8d765f0_0 .net *"_ivl_5", 0 0, L_0x5632f8d7a810; 1 drivers
v0x5632f8d766d0_0 .net *"_ivl_7", 0 0, L_0x5632f8d7a8b0; 1 drivers
v0x5632f8d767b0_0 .net *"_ivl_9", 0 0, L_0x5632f8d7a9c0; 1 drivers
v0x5632f8d76890_0 .net "addOverflow", 0 0, L_0x5632f8d7af40; 1 drivers
v0x5632f8d76950_0 .net "detect1", 0 0, L_0x5632f8d7b2a0; 1 drivers
v0x5632f8d76a10_0 .net "detect2", 0 0, L_0x5632f8d7b310; 1 drivers
v0x5632f8d76ad0_0 .net "opC", 0 0, L_0x5632f8d7a5d0; 1 drivers
L_0x7fdc7e0b1018 .functor BUFT 1, C4<10>, C4<0>, C4<0>, C4<0>;
v0x5632f8d76b90_0 .net "opCode", 1 0, L_0x7fdc7e0b1018; 1 drivers
v0x5632f8d76c70_0 .net "overflowDetect", 0 0, L_0x5632f8d7b470; alias, 1 drivers
v0x5632f8d76d30_0 .net "sign1", 0 0, L_0x5632f8d7a7a0; 1 drivers
v0x5632f8d76df0_0 .net "sign2", 0 0, L_0x5632f8d7acf0; 1 drivers
v0x5632f8d76eb0_0 .net "sign3", 0 0, L_0x5632f8d7a950; 1 drivers
v0x5632f8d76f70_0 .net "subOverflow", 0 0, L_0x5632f8d7b050; 1 drivers
L_0x5632f8d7a660 .part L_0x7fdc7e0b1018, 0, 1;
L_0x5632f8d7a700 .part L_0x7fdc7e0b1018, 1, 1;
L_0x5632f8d7a810 .part v0x5632f8d77810_0, 3, 1;
L_0x5632f8d7a8b0 .part v0x5632f8d77940_0, 3, 1;
L_0x5632f8d7a9c0 .part v0x5632f8d77810_0, 3, 1;
L_0x5632f8d7aab0 .part v0x5632f8d77940_0, 3, 1;
L_0x5632f8d7ad60 .part L_0x5632f8d7a4c0, 3, 1;
L_0x5632f8d7ae50 .part v0x5632f8d77810_0, 3, 1;
L_0x5632f8d7afb0 .part L_0x7fdc7e0b1018, 0, 1;
L_0x5632f8d7b150 .part L_0x7fdc7e0b1018, 1, 1;
.scope S_0x5632f8d4bad0;
T_0 ; T_0 ;
%vpi_call 2 20 "$dumpfile", "subtraction.vcd" {0 0 0}; %vpi_call 2 18 "$dumpfile", "subtraction.vcd" {0 0 0};
%vpi_call 2 21 "$dumpvars" {0 0 0}; %vpi_call 2 19 "$dumpvars" {0 0 0};
%pushi/vec4 0, 0, 4; %pushi/vec4 0, 0, 4;
%store/vec4 v0x5632f8d77810_0, 0, 4; %store/vec4 v0x56044d107590_0, 0, 4;
%pushi/vec4 0, 0, 4; %pushi/vec4 0, 0, 4;
%store/vec4 v0x5632f8d77940_0, 0, 4; %store/vec4 v0x56044d107670_0, 0, 4;
%pushi/vec4 0, 0, 1; %pushi/vec4 0, 0, 1;
%store/vec4 v0x5632f8d77a50_0, 0, 1; %store/vec4 v0x56044d107740_0, 0, 1;
%delay 10, 0; %delay 10, 0;
%pushi/vec4 6, 0, 4; %pushi/vec4 6, 0, 4;
%store/vec4 v0x5632f8d77810_0, 0, 4; %store/vec4 v0x56044d107590_0, 0, 4;
%pushi/vec4 2, 0, 4; %pushi/vec4 2, 0, 4;
%store/vec4 v0x5632f8d77940_0, 0, 4; %store/vec4 v0x56044d107670_0, 0, 4;
%pushi/vec4 0, 0, 1; %pushi/vec4 0, 0, 1;
%store/vec4 v0x5632f8d77a50_0, 0, 1; %store/vec4 v0x56044d107740_0, 0, 1;
%delay 10, 0; %delay 10, 0;
%pushi/vec4 2, 0, 4; %pushi/vec4 2, 0, 4;
%store/vec4 v0x5632f8d77810_0, 0, 4; %store/vec4 v0x56044d107590_0, 0, 4;
%pushi/vec4 6, 0, 4; %pushi/vec4 6, 0, 4;
%store/vec4 v0x5632f8d77940_0, 0, 4; %store/vec4 v0x56044d107670_0, 0, 4;
%pushi/vec4 0, 0, 1; %pushi/vec4 0, 0, 1;
%store/vec4 v0x5632f8d77a50_0, 0, 1; %store/vec4 v0x56044d107740_0, 0, 1;
%delay 10, 0; %delay 10, 0;
%pushi/vec4 12, 0, 4; %pushi/vec4 12, 0, 4;
%store/vec4 v0x5632f8d77810_0, 0, 4; %store/vec4 v0x56044d107590_0, 0, 4;
%pushi/vec4 4, 0, 4; %pushi/vec4 4, 0, 4;
%store/vec4 v0x5632f8d77940_0, 0, 4; %store/vec4 v0x56044d107670_0, 0, 4;
%pushi/vec4 0, 0, 1; %pushi/vec4 0, 0, 1;
%store/vec4 v0x5632f8d77a50_0, 0, 1; %store/vec4 v0x56044d107740_0, 0, 1;
%delay 10, 0; %delay 10, 0;
%pushi/vec4 8, 0, 4; %pushi/vec4 8, 0, 4;
%store/vec4 v0x5632f8d77810_0, 0, 4; %store/vec4 v0x56044d107590_0, 0, 4;
%pushi/vec4 8, 0, 4; %pushi/vec4 8, 0, 4;
%store/vec4 v0x5632f8d77940_0, 0, 4; %store/vec4 v0x56044d107670_0, 0, 4;
%pushi/vec4 0, 0, 1; %pushi/vec4 0, 0, 1;
%store/vec4 v0x5632f8d77a50_0, 0, 1; %store/vec4 v0x56044d107740_0, 0, 1;
%delay 10, 0; %delay 10, 0;
%pushi/vec4 15, 0, 4; %pushi/vec4 15, 0, 4;
%store/vec4 v0x5632f8d77810_0, 0, 4; %store/vec4 v0x56044d107590_0, 0, 4;
%pushi/vec4 1, 0, 4; %pushi/vec4 1, 0, 4;
%store/vec4 v0x5632f8d77940_0, 0, 4; %store/vec4 v0x56044d107670_0, 0, 4;
%pushi/vec4 1, 0, 1; %pushi/vec4 1, 0, 1;
%store/vec4 v0x5632f8d77a50_0, 0, 1; %store/vec4 v0x56044d107740_0, 0, 1;
%delay 10, 0; %delay 10, 0;
%vpi_call 2 35 "$finish" {0 0 0}; %vpi_call 2 33 "$finish" {0 0 0};
%end; %end;
.thread T_0; .thread T_0;
.scope S_0x5632f8d4bad0;
T_1 ;
%vpi_call 2 40 "$monitor", "At time %t: A = %b, B = %b, Y = %b, BorrowOut = %b, overflow = %b", $time, v0x5632f8d77810_0, v0x5632f8d77940_0, v0x5632f8d77b90_0, v0x5632f8d77af0_0, v0x5632f8d77cd0_0 {0 0 0};
%end;
.thread T_1;
# The file index is used to find the file name in the following table. # The file index is used to find the file name in the following table.
:file_names 7; :file_names 6;
"N/A"; "N/A";
"<interactive>"; "<interactive>";
"subtractionTB.v"; "subtractionTB.v";
"subtraction.v"; "subtraction.v";
"fullsubtraction.v"; "fullsubtraction.v";
"halfsubtraction.v"; "halfsubtraction.v";
"overflowDetect.v";

View File

@ -1,5 +1,5 @@
$date $date
Sat Dec 21 02:52:14 2024 Wed Dec 25 00:48:05 2024
$end $end
$version $version
Icarus Verilog Icarus Verilog
@ -8,161 +8,130 @@ $timescale
1s 1s
$end $end
$scope module subtractionTB $end $scope module subtractionTB $end
$var wire 1 ! overflow $end $var wire 4 ! Y [3:0] $end
$var wire 4 " Y [3:0] $end $var wire 1 " BorrowOUT $end
$var wire 1 # BorrowOut $end $var reg 4 # A [3:0] $end
$var reg 4 $ A [3:0] $end $var reg 4 $ B [3:0] $end
$var reg 4 % B [3:0] $end $var reg 1 % BorrowIN $end
$var reg 1 & BorrowIN $end
$scope module uut $end $scope module uut $end
$var wire 4 ' A [3:0] $end $var wire 4 & A [3:0] $end
$var wire 4 ( B [3:0] $end $var wire 4 ' B [3:0] $end
$var wire 1 & BorrowIN $end $var wire 1 % BorrowIN $end
$var wire 4 ) tempB [3:0] $end $var wire 4 ( tempB [3:0] $end
$var wire 1 ! overflow $end $var wire 4 ) Y [3:0] $end
$var wire 4 * Y [3:0] $end $var wire 1 " BorrowOUT $end
$var wire 1 # BorrowOut $end
$scope module f0 $end $scope module f0 $end
$var wire 1 + A $end $var wire 1 * A $end
$var wire 1 , B $end $var wire 1 + B $end
$var wire 1 & BorrowIN $end $var wire 1 % BorrowIN $end
$var wire 1 - BorrowOut $end $var wire 1 , BorrowOut $end
$var wire 1 . tempD $end $var wire 1 - tempD $end
$var wire 1 / tempB2 $end $var wire 1 . tempB2 $end
$var wire 1 0 tempB1 $end $var wire 1 / tempB1 $end
$var wire 1 1 Difference $end $var wire 1 0 Difference $end
$scope module hf1 $end $scope module hf1 $end
$var wire 1 + A $end $var wire 1 * A $end
$var wire 1 , B $end $var wire 1 + B $end
$var wire 1 0 Borrow $end $var wire 1 / Borrow $end
$var wire 1 . Difference $end $var wire 1 - Difference $end
$var wire 1 2 notA $end $var wire 1 1 notA $end
$upscope $end $upscope $end
$scope module hf2 $end $scope module hf2 $end
$var wire 1 . A $end $var wire 1 - A $end
$var wire 1 & B $end $var wire 1 % B $end
$var wire 1 / Borrow $end $var wire 1 . Borrow $end
$var wire 1 1 Difference $end $var wire 1 0 Difference $end
$var wire 1 3 notA $end $var wire 1 2 notA $end
$upscope $end $upscope $end
$upscope $end $upscope $end
$scope module f1 $end $scope module f1 $end
$var wire 1 4 A $end $var wire 1 3 A $end
$var wire 1 5 B $end $var wire 1 4 B $end
$var wire 1 6 BorrowIN $end $var wire 1 5 BorrowIN $end
$var wire 1 7 BorrowOut $end $var wire 1 6 BorrowOut $end
$var wire 1 8 tempD $end $var wire 1 7 tempD $end
$var wire 1 9 tempB2 $end $var wire 1 8 tempB2 $end
$var wire 1 : tempB1 $end $var wire 1 9 tempB1 $end
$var wire 1 ; Difference $end $var wire 1 : Difference $end
$scope module hf1 $end $scope module hf1 $end
$var wire 1 4 A $end $var wire 1 3 A $end
$var wire 1 5 B $end $var wire 1 4 B $end
$var wire 1 : Borrow $end $var wire 1 9 Borrow $end
$var wire 1 8 Difference $end $var wire 1 7 Difference $end
$var wire 1 < notA $end $var wire 1 ; notA $end
$upscope $end $upscope $end
$scope module hf2 $end $scope module hf2 $end
$var wire 1 8 A $end $var wire 1 7 A $end
$var wire 1 6 B $end $var wire 1 5 B $end
$var wire 1 9 Borrow $end $var wire 1 8 Borrow $end
$var wire 1 ; Difference $end $var wire 1 : Difference $end
$var wire 1 = notA $end $var wire 1 < notA $end
$upscope $end $upscope $end
$upscope $end $upscope $end
$scope module f2 $end $scope module f2 $end
$var wire 1 > A $end $var wire 1 = A $end
$var wire 1 ? B $end $var wire 1 > B $end
$var wire 1 @ BorrowIN $end $var wire 1 ? BorrowIN $end
$var wire 1 A BorrowOut $end $var wire 1 @ BorrowOut $end
$var wire 1 B tempD $end $var wire 1 A tempD $end
$var wire 1 C tempB2 $end $var wire 1 B tempB2 $end
$var wire 1 D tempB1 $end $var wire 1 C tempB1 $end
$var wire 1 E Difference $end $var wire 1 D Difference $end
$scope module hf1 $end $scope module hf1 $end
$var wire 1 > A $end $var wire 1 = A $end
$var wire 1 ? B $end $var wire 1 > B $end
$var wire 1 D Borrow $end $var wire 1 C Borrow $end
$var wire 1 B Difference $end $var wire 1 A Difference $end
$var wire 1 F notA $end $var wire 1 E notA $end
$upscope $end $upscope $end
$scope module hf2 $end $scope module hf2 $end
$var wire 1 B A $end $var wire 1 A A $end
$var wire 1 @ B $end $var wire 1 ? B $end
$var wire 1 C Borrow $end $var wire 1 B Borrow $end
$var wire 1 E Difference $end $var wire 1 D Difference $end
$var wire 1 G notA $end $var wire 1 F notA $end
$upscope $end $upscope $end
$upscope $end $upscope $end
$scope module f3 $end $scope module f3 $end
$var wire 1 H A $end $var wire 1 G A $end
$var wire 1 I B $end $var wire 1 H B $end
$var wire 1 J BorrowIN $end $var wire 1 I BorrowIN $end
$var wire 1 # BorrowOut $end $var wire 1 " BorrowOut $end
$var wire 1 K tempD $end $var wire 1 J tempD $end
$var wire 1 L tempB2 $end $var wire 1 K tempB2 $end
$var wire 1 M tempB1 $end $var wire 1 L tempB1 $end
$var wire 1 N Difference $end $var wire 1 M Difference $end
$scope module hf1 $end $scope module hf1 $end
$var wire 1 H A $end $var wire 1 G A $end
$var wire 1 I B $end $var wire 1 H B $end
$var wire 1 M Borrow $end $var wire 1 L Borrow $end
$var wire 1 K Difference $end $var wire 1 J Difference $end
$var wire 1 O notA $end $var wire 1 N notA $end
$upscope $end $upscope $end
$scope module hf2 $end $scope module hf2 $end
$var wire 1 K A $end $var wire 1 J A $end
$var wire 1 J B $end $var wire 1 I B $end
$var wire 1 L Borrow $end $var wire 1 K Borrow $end
$var wire 1 N Difference $end $var wire 1 M Difference $end
$var wire 1 P notA $end $var wire 1 O notA $end
$upscope $end $upscope $end
$upscope $end $upscope $end
$scope module od1 $end
$var wire 4 Q A [3:0] $end
$var wire 4 R B [3:0] $end
$var wire 1 # CarryOUT $end
$var wire 4 S Y [3:0] $end
$var wire 1 T addOverflow $end
$var wire 1 U detect1 $end
$var wire 1 V detect2 $end
$var wire 1 W opC $end
$var wire 2 X opCode [1:0] $end
$var wire 1 ! overflowDetect $end
$var wire 1 Y sign1 $end
$var wire 1 Z sign2 $end
$var wire 1 [ sign3 $end
$var wire 1 \ subOverflow $end
$upscope $end
$upscope $end $upscope $end
$upscope $end $upscope $end
$enddefinitions $end $enddefinitions $end
#0 #0
$dumpvars $dumpvars
0\
0[
0Z
1Y
b10 X
1W
0V
0U
0T
b0 S
b0 R
b0 Q
1P
1O 1O
0N 1N
0M 0M
0L 0L
0K 0K
0J 0J
0I 0I
0H 0H
1G 0G
1F 1F
0E 1E
0D 0D
0C 0C
0B 0B
@ -170,9 +139,9 @@ b0 Q
0@ 0@
0? 0?
0> 0>
1= 0=
1< 1<
0; 1;
0: 0:
09 09
08 08
@ -180,161 +149,126 @@ b0 Q
06 06
05 05
04 04
13 03
12 12
01 11
00 00
0/ 0/
0. 0.
0- 0-
0, 0,
0+ 0+
b0 * 0*
bz000 ) b0 )
b0 ( bz000 (
b0 ' b0 '
0& b0 &
b0 % 0%
b0 $ b0 $
0# b0 #
b0 " 0"
0! b0 !
$end $end
#10 #10
b100 " b100 !
b100 * b100 )
b100 S
1E
0G
0<
1B
0F
15
14
1>
b10 %
b10 (
b10 R
b110 $
b110 '
b110 Q
#20
1Z
1#
b1100 "
b1100 *
b1100 S
1N
1L
1J
bz100 )
1A
1D 1D
1F 0F
1? 0;
0> 1A
b110 % 0E
b110 ( 14
b110 R 13
1=
b10 $ b10 $
b10 ' b10 '
b10 Q b110 #
#30 b110 &
0! #20
0V 1"
0J b1100 !
0# b1100 )
bz000 ) 1M
0A
0L
1U
0E
1G
0D
b1000 "
b1000 *
b1000 S
1N
0P
1\
1<
0B
0F
1K 1K
0O
0Y
1[
0Z
05
04
1>
1H
b100 %
b100 (
b100 R
b1100 $
b1100 '
b1100 Q
#40
1Z
0U
b0 "
b0 *
b0 S
0N
1P
0\
0K
1Y
0[
1F
0?
1I 1I
bz100 (
1@
1C
1E
1>
0=
b110 $
b110 '
b10 #
b10 &
#30
0I
0"
bz000 (
0@
0K
0D
1F
0C
b1000 !
b1000 )
1M
0O
1;
0A
0E
1J
0N
04
03
1=
1G
b100 $
b100 '
b1100 #
b1100 &
#40
b0 !
b0 )
0M
1O
0J
1E
0> 0>
b1000 % 1H
b1000 ( 0=
b1000 R
b1000 $ b1000 $
b1000 ' b1000 '
b1000 Q b1000 #
b1000 &
#50 #50
0! 15
0Z 1M
0V 0O
1U 0:
16
1N
0P
1\
0;
0=
1E
0G
bz001 )
1-
1K
0Y
1[
02
18
0< 0<
1B 1D
0F 0F
b1101 " bz001 (
b1101 *
b1101 S
11
1/
1, 1,
0I 1J
01
17
0;
1A
0E
b1101 !
b1101 )
10
1.
1+ 1+
14 0H
1> 1*
1& 13
b1 % 1=
b1 ( 1%
b1 R b1 $
b1111 $ b1 '
b1111 ' b1111 #
b1111 Q b1111 &
#60 #60

View File

@ -33,9 +33,9 @@ initial begin
#10 $finish; #10 $finish;
end end
initial begin //initial begin
// Monitor the values of Y and overflow // Monitor the values of Y and overflow
$monitor("At time %t: A = %b, B = %b, Y = %b, BorrowOut = %b, overflow = %b", $time, A, B, Y, BorrowOut, overflow); // $monitor("At time %t: A = %b, B = %b, Y = %b, BorrowOut = %b, overflow = %b", $time, A, B, Y, BorrowOut, overflow);
end //end
endmodule endmodule