diff --git a/project0.2/arithmeticUnit.v b/project0.2/arithmeticUnit.v index 8fe493e..c79c344 100644 --- a/project0.2/arithmeticUnit.v +++ b/project0.2/arithmeticUnit.v @@ -8,9 +8,9 @@ module arithmeticUnit ( ); 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)); 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]); or or1 (CarryOUT, CarryOUTADD, CarryOUTSUB); -or or2 (overflow, overflowADD, CarryOUTSUB); endmodule diff --git a/project0.2/subtraction b/project0.2/subtraction index a9c61f0..6717a3d 100644 --- a/project0.2/subtraction +++ b/project0.2/subtraction @@ -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/v2005_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; -v0x5632f8d77810_0 .var "A", 3 0; -v0x5632f8d77940_0 .var "B", 3 0; -v0x5632f8d77a50_0 .var "BorrowIN", 0 0; -v0x5632f8d77af0_0 .net "BorrowOut", 0 0, L_0x5632f8d79f90; 1 drivers -v0x5632f8d77b90_0 .net "Y", 3 0, L_0x5632f8d7a4c0; 1 drivers -v0x5632f8d77cd0_0 .net "overflow", 0 0, L_0x5632f8d7b470; 1 drivers -S_0x5632f8d362e0 .scope module, "uut" "subtraction" 2 10, 3 1 0, S_0x5632f8d4bad0; +v0x56044d107590_0 .var "A", 3 0; +v0x56044d107670_0 .var "B", 3 0; +v0x56044d107740_0 .var "BorrowIN", 0 0; +v0x56044d107810_0 .net "BorrowOUT", 0 0, L_0x56044d109c20; 1 drivers +v0x56044d107900_0 .net "Y", 3 0, L_0x56044d10a0c0; 1 drivers +S_0x56044d0d0e60 .scope module, "uut" "subtraction" 2 9, 3 1 0, S_0x56044d0d48c0; .timescale 0 0; .port_info 0 /INPUT 4 "A"; .port_info 1 /INPUT 4 "B"; .port_info 2 /INPUT 1 "BorrowIN"; .port_info 3 /OUTPUT 4 "Y"; - .port_info 4 /OUTPUT 1 "BorrowOut"; - .port_info 5 /OUTPUT 1 "overflow"; -v0x5632f8d770f0_0 .net "A", 3 0, v0x5632f8d77810_0; 1 drivers -v0x5632f8d771d0_0 .net "B", 3 0, v0x5632f8d77940_0; 1 drivers -v0x5632f8d772a0_0 .net "BorrowIN", 0 0, v0x5632f8d77a50_0; 1 drivers -v0x5632f8d77370_0 .net "BorrowOut", 0 0, L_0x5632f8d79f90; alias, 1 drivers -v0x5632f8d77460_0 .net "Y", 3 0, L_0x5632f8d7a4c0; alias, 1 drivers -o0x7fdc7e0fb6c8 .functor BUFZ 1, C4; HiZ drive -; Elide local net with no drivers, v0x5632f8d77550_0 name=_ivl_41 -v0x5632f8d775f0_0 .net "overflow", 0 0, L_0x5632f8d7b470; alias, 1 drivers -v0x5632f8d77690_0 .net "tempB", 3 0, L_0x5632f8d7b580; 1 drivers -L_0x5632f8d783d0 .part v0x5632f8d77810_0, 0, 1; -L_0x5632f8d78520 .part v0x5632f8d77940_0, 0, 1; -L_0x5632f8d78c60 .part v0x5632f8d77810_0, 1, 1; -L_0x5632f8d78e20 .part v0x5632f8d77940_0, 1, 1; -L_0x5632f8d78fe0 .part L_0x5632f8d7b580, 0, 1; -L_0x5632f8d795f0 .part v0x5632f8d77810_0, 2, 1; -L_0x5632f8d79760 .part v0x5632f8d77940_0, 2, 1; -L_0x5632f8d79890 .part L_0x5632f8d7b580, 1, 1; -L_0x5632f8d7a0d0 .part v0x5632f8d77810_0, 3, 1; -L_0x5632f8d7a200 .part v0x5632f8d77940_0, 3, 1; -L_0x5632f8d7a390 .part L_0x5632f8d7b580, 2, 1; -L_0x5632f8d7a4c0 .concat8 [ 1 1 1 1], L_0x5632f8d780b0, L_0x5632f8d788a0, L_0x5632f8d79280, L_0x5632f8d79c60; -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; + .port_info 4 /OUTPUT 1 "BorrowOUT"; +v0x56044d106ef0_0 .net "A", 3 0, v0x56044d107590_0; 1 drivers +v0x56044d106fd0_0 .net "B", 3 0, v0x56044d107670_0; 1 drivers +v0x56044d1070b0_0 .net "BorrowIN", 0 0, v0x56044d107740_0; 1 drivers +v0x56044d1071a0_0 .net "BorrowOUT", 0 0, L_0x56044d109c20; alias, 1 drivers +v0x56044d107240_0 .net "Y", 3 0, L_0x56044d10a0c0; alias, 1 drivers +o0x7f55d9dc01e8 .functor BUFZ 1, C4; HiZ drive +; Elide local net with no drivers, v0x56044d107330_0 name=_ivl_39 +v0x56044d107410_0 .net "tempB", 3 0, L_0x56044d10a1d0; 1 drivers +L_0x56044d107fc0 .part v0x56044d107590_0, 0, 1; +L_0x56044d108110 .part v0x56044d107670_0, 0, 1; +L_0x56044d1088f0 .part v0x56044d107590_0, 1, 1; +L_0x56044d108a20 .part v0x56044d107670_0, 1, 1; +L_0x56044d108b50 .part L_0x56044d10a1d0, 0, 1; +L_0x56044d109200 .part v0x56044d107590_0, 2, 1; +L_0x56044d109400 .part v0x56044d107670_0, 2, 1; +L_0x56044d1095c0 .part L_0x56044d10a1d0, 1, 1; +L_0x56044d109cd0 .part v0x56044d107590_0, 3, 1; +L_0x56044d109e00 .part v0x56044d107670_0, 3, 1; +L_0x56044d109f90 .part L_0x56044d10a1d0, 2, 1; +L_0x56044d10a0c0 .concat8 [ 1 1 1 1], L_0x56044d107ca0, L_0x56044d108530, L_0x56044d108e40, L_0x56044d1098f0; +L_0x56044d10a1d0 .concat [ 1 1 1 1], L_0x56044d107f30, L_0x56044d108860, L_0x56044d109170, o0x7f55d9dc01e8; +S_0x56044d0deda0 .scope module, "f0" "fullsubtraction" 3 11, 4 1 0, S_0x56044d0d0e60; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /INPUT 1 "BorrowIN"; .port_info 3 /OUTPUT 1 "Difference"; .port_info 4 /OUTPUT 1 "BorrowOut"; -L_0x5632f8d78340 .functor OR 1, L_0x5632f8d77fa0, L_0x5632f8d782d0, C4<0>, C4<0>; -v0x5632f8d70d80_0 .net "A", 0 0, L_0x5632f8d783d0; 1 drivers -v0x5632f8d70e40_0 .net "B", 0 0, L_0x5632f8d78520; 1 drivers -v0x5632f8d70f10_0 .net "BorrowIN", 0 0, v0x5632f8d77a50_0; alias, 1 drivers -v0x5632f8d71010_0 .net "BorrowOut", 0 0, L_0x5632f8d78340; 1 drivers -v0x5632f8d710b0_0 .net "Difference", 0 0, L_0x5632f8d780b0; 1 drivers -v0x5632f8d711a0_0 .net "tempB1", 0 0, L_0x5632f8d77fa0; 1 drivers -v0x5632f8d71270_0 .net "tempB2", 0 0, L_0x5632f8d782d0; 1 drivers -v0x5632f8d71340_0 .net "tempD", 0 0, L_0x5632f8d77dc0; 1 drivers -S_0x5632f8d430f0 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x5632f8d4a0f0; +L_0x56044d107f30 .functor OR 1, L_0x56044d107b90, L_0x56044d107ec0, C4<0>, C4<0>; +v0x56044d102580_0 .net "A", 0 0, L_0x56044d107fc0; 1 drivers +v0x56044d102640_0 .net "B", 0 0, L_0x56044d108110; 1 drivers +v0x56044d102710_0 .net "BorrowIN", 0 0, v0x56044d107740_0; alias, 1 drivers +v0x56044d102810_0 .net "BorrowOut", 0 0, L_0x56044d107f30; 1 drivers +v0x56044d1028b0_0 .net "Difference", 0 0, L_0x56044d107ca0; 1 drivers +v0x56044d1029a0_0 .net "tempB1", 0 0, L_0x56044d107b90; 1 drivers +v0x56044d102a70_0 .net "tempB2", 0 0, L_0x56044d107ec0; 1 drivers +v0x56044d102b40_0 .net "tempD", 0 0, L_0x56044d1079f0; 1 drivers +S_0x56044d09ecf0 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x56044d0deda0; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Borrow"; -L_0x5632f8d77dc0 .functor XOR 1, L_0x5632f8d783d0, L_0x5632f8d78520, C4<0>, C4<0>; -L_0x5632f8d77f10 .functor NOT 1, L_0x5632f8d783d0, C4<0>, C4<0>, C4<0>; -L_0x5632f8d77fa0 .functor AND 1, L_0x5632f8d77f10, L_0x5632f8d78520, C4<1>, C4<1>; -v0x5632f8d4c0e0_0 .net "A", 0 0, L_0x5632f8d783d0; alias, 1 drivers -v0x5632f8d38690_0 .net "B", 0 0, L_0x5632f8d78520; alias, 1 drivers -v0x5632f8d36980_0 .net "Borrow", 0 0, L_0x5632f8d77fa0; alias, 1 drivers -v0x5632f8d70490_0 .net "Difference", 0 0, L_0x5632f8d77dc0; alias, 1 drivers -v0x5632f8d70550_0 .net "notA", 0 0, L_0x5632f8d77f10; 1 drivers -S_0x5632f8d706e0 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x5632f8d4a0f0; +L_0x56044d1079f0 .functor XOR 1, L_0x56044d107fc0, L_0x56044d108110, C4<0>, C4<0>; +L_0x56044d107b00 .functor NOT 1, L_0x56044d107fc0, C4<0>, C4<0>, C4<0>; +L_0x56044d107b90 .functor AND 1, L_0x56044d107b00, L_0x56044d108110, C4<1>, C4<1>; +v0x56044d0d6940_0 .net "A", 0 0, L_0x56044d107fc0; alias, 1 drivers +v0x56044d0d4ef0_0 .net "B", 0 0, L_0x56044d108110; alias, 1 drivers +v0x56044d0d3210_0 .net "Borrow", 0 0, L_0x56044d107b90; alias, 1 drivers +v0x56044d0d1500_0 .net "Difference", 0 0, L_0x56044d1079f0; alias, 1 drivers +v0x56044d0d4c60_0 .net "notA", 0 0, L_0x56044d107b00; 1 drivers +S_0x56044d102060 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x56044d0deda0; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Borrow"; -L_0x5632f8d780b0 .functor XOR 1, L_0x5632f8d77dc0, v0x5632f8d77a50_0, C4<0>, C4<0>; -L_0x5632f8d78240 .functor NOT 1, L_0x5632f8d77dc0, C4<0>, C4<0>, C4<0>; -L_0x5632f8d782d0 .functor AND 1, L_0x5632f8d78240, v0x5632f8d77a50_0, C4<1>, C4<1>; -v0x5632f8d70950_0 .net "A", 0 0, L_0x5632f8d77dc0; alias, 1 drivers -v0x5632f8d709f0_0 .net "B", 0 0, v0x5632f8d77a50_0; alias, 1 drivers -v0x5632f8d70a90_0 .net "Borrow", 0 0, L_0x5632f8d782d0; alias, 1 drivers -v0x5632f8d70b30_0 .net "Difference", 0 0, L_0x5632f8d780b0; alias, 1 drivers -v0x5632f8d70bf0_0 .net "notA", 0 0, L_0x5632f8d78240; 1 drivers -S_0x5632f8d71430 .scope module, "f1" "fullsubtraction" 3 13, 4 1 0, S_0x5632f8d362e0; +L_0x56044d107ca0 .functor XOR 1, L_0x56044d1079f0, v0x56044d107740_0, C4<0>, C4<0>; +L_0x56044d107e30 .functor NOT 1, L_0x56044d1079f0, C4<0>, C4<0>, C4<0>; +L_0x56044d107ec0 .functor AND 1, L_0x56044d107e30, v0x56044d107740_0, C4<1>, C4<1>; +v0x56044d0d2f80_0 .net "A", 0 0, L_0x56044d1079f0; alias, 1 drivers +v0x56044d0d1280_0 .net "B", 0 0, v0x56044d107740_0; alias, 1 drivers +v0x56044d102260_0 .net "Borrow", 0 0, L_0x56044d107ec0; alias, 1 drivers +v0x56044d102330_0 .net "Difference", 0 0, L_0x56044d107ca0; alias, 1 drivers +v0x56044d1023f0_0 .net "notA", 0 0, L_0x56044d107e30; 1 drivers +S_0x56044d102c30 .scope module, "f1" "fullsubtraction" 3 12, 4 1 0, S_0x56044d0d0e60; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /INPUT 1 "BorrowIN"; .port_info 3 /OUTPUT 1 "Difference"; .port_info 4 /OUTPUT 1 "BorrowOut"; -L_0x5632f8d78bd0 .functor OR 1, L_0x5632f8d78790, L_0x5632f8d78ac0, C4<0>, C4<0>; -v0x5632f8d72450_0 .net "A", 0 0, L_0x5632f8d78c60; 1 drivers -v0x5632f8d72510_0 .net "B", 0 0, L_0x5632f8d78e20; 1 drivers -v0x5632f8d725e0_0 .net "BorrowIN", 0 0, L_0x5632f8d78fe0; 1 drivers -v0x5632f8d726e0_0 .net "BorrowOut", 0 0, L_0x5632f8d78bd0; 1 drivers -v0x5632f8d72780_0 .net "Difference", 0 0, L_0x5632f8d788a0; 1 drivers -v0x5632f8d72870_0 .net "tempB1", 0 0, L_0x5632f8d78790; 1 drivers -v0x5632f8d72940_0 .net "tempB2", 0 0, L_0x5632f8d78ac0; 1 drivers -v0x5632f8d72a10_0 .net "tempD", 0 0, L_0x5632f8d78650; 1 drivers -S_0x5632f8d71610 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x5632f8d71430; +L_0x56044d108860 .functor OR 1, L_0x56044d108420, L_0x56044d108750, C4<0>, C4<0>; +v0x56044d103b70_0 .net "A", 0 0, L_0x56044d1088f0; 1 drivers +v0x56044d103c30_0 .net "B", 0 0, L_0x56044d108a20; 1 drivers +v0x56044d103d00_0 .net "BorrowIN", 0 0, L_0x56044d108b50; 1 drivers +v0x56044d103e00_0 .net "BorrowOut", 0 0, L_0x56044d108860; 1 drivers +v0x56044d103ea0_0 .net "Difference", 0 0, L_0x56044d108530; 1 drivers +v0x56044d103f90_0 .net "tempB1", 0 0, L_0x56044d108420; 1 drivers +v0x56044d104060_0 .net "tempB2", 0 0, L_0x56044d108750; 1 drivers +v0x56044d104130_0 .net "tempD", 0 0, L_0x56044d108240; 1 drivers +S_0x56044d102e10 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x56044d102c30; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Borrow"; -L_0x5632f8d78650 .functor XOR 1, L_0x5632f8d78c60, L_0x5632f8d78e20, C4<0>, C4<0>; -L_0x5632f8d78700 .functor NOT 1, L_0x5632f8d78c60, C4<0>, C4<0>, C4<0>; -L_0x5632f8d78790 .functor AND 1, L_0x5632f8d78700, L_0x5632f8d78e20, C4<1>, C4<1>; -v0x5632f8d71890_0 .net "A", 0 0, L_0x5632f8d78c60; alias, 1 drivers -v0x5632f8d71970_0 .net "B", 0 0, L_0x5632f8d78e20; alias, 1 drivers -v0x5632f8d71a30_0 .net "Borrow", 0 0, L_0x5632f8d78790; alias, 1 drivers -v0x5632f8d71b00_0 .net "Difference", 0 0, L_0x5632f8d78650; alias, 1 drivers -v0x5632f8d71bc0_0 .net "notA", 0 0, L_0x5632f8d78700; 1 drivers -S_0x5632f8d71d50 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x5632f8d71430; +L_0x56044d108240 .functor XOR 1, L_0x56044d1088f0, L_0x56044d108a20, C4<0>, C4<0>; +L_0x56044d108390 .functor NOT 1, L_0x56044d1088f0, C4<0>, C4<0>, C4<0>; +L_0x56044d108420 .functor AND 1, L_0x56044d108390, L_0x56044d108a20, C4<1>, C4<1>; +v0x56044d103020_0 .net "A", 0 0, L_0x56044d1088f0; alias, 1 drivers +v0x56044d103100_0 .net "B", 0 0, L_0x56044d108a20; alias, 1 drivers +v0x56044d1031c0_0 .net "Borrow", 0 0, L_0x56044d108420; alias, 1 drivers +v0x56044d103290_0 .net "Difference", 0 0, L_0x56044d108240; alias, 1 drivers +v0x56044d103350_0 .net "notA", 0 0, L_0x56044d108390; 1 drivers +S_0x56044d1034e0 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x56044d102c30; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Borrow"; -L_0x5632f8d788a0 .functor XOR 1, L_0x5632f8d78650, L_0x5632f8d78fe0, C4<0>, C4<0>; -L_0x5632f8d78a30 .functor NOT 1, L_0x5632f8d78650, C4<0>, C4<0>, C4<0>; -L_0x5632f8d78ac0 .functor AND 1, L_0x5632f8d78a30, L_0x5632f8d78fe0, C4<1>, C4<1>; -v0x5632f8d71fc0_0 .net "A", 0 0, L_0x5632f8d78650; alias, 1 drivers -v0x5632f8d72090_0 .net "B", 0 0, L_0x5632f8d78fe0; alias, 1 drivers -v0x5632f8d72130_0 .net "Borrow", 0 0, L_0x5632f8d78ac0; alias, 1 drivers -v0x5632f8d72200_0 .net "Difference", 0 0, L_0x5632f8d788a0; alias, 1 drivers -v0x5632f8d722c0_0 .net "notA", 0 0, L_0x5632f8d78a30; 1 drivers -S_0x5632f8d72b00 .scope module, "f2" "fullsubtraction" 3 14, 4 1 0, S_0x5632f8d362e0; +L_0x56044d108530 .functor XOR 1, L_0x56044d108240, L_0x56044d108b50, C4<0>, C4<0>; +L_0x56044d1086c0 .functor NOT 1, L_0x56044d108240, C4<0>, C4<0>, C4<0>; +L_0x56044d108750 .functor AND 1, L_0x56044d1086c0, L_0x56044d108b50, C4<1>, C4<1>; +v0x56044d1036e0_0 .net "A", 0 0, L_0x56044d108240; alias, 1 drivers +v0x56044d1037b0_0 .net "B", 0 0, L_0x56044d108b50; alias, 1 drivers +v0x56044d103850_0 .net "Borrow", 0 0, L_0x56044d108750; alias, 1 drivers +v0x56044d103920_0 .net "Difference", 0 0, L_0x56044d108530; alias, 1 drivers +v0x56044d1039e0_0 .net "notA", 0 0, L_0x56044d1086c0; 1 drivers +S_0x56044d104220 .scope module, "f2" "fullsubtraction" 3 13, 4 1 0, S_0x56044d0d0e60; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /INPUT 1 "BorrowIN"; .port_info 3 /OUTPUT 1 "Difference"; .port_info 4 /OUTPUT 1 "BorrowOut"; -L_0x5632f8d79560 .functor OR 1, L_0x5632f8d79210, L_0x5632f8d79450, C4<0>, C4<0>; -v0x5632f8d73bb0_0 .net "A", 0 0, L_0x5632f8d795f0; 1 drivers -v0x5632f8d73c70_0 .net "B", 0 0, L_0x5632f8d79760; 1 drivers -v0x5632f8d73d40_0 .net "BorrowIN", 0 0, L_0x5632f8d79890; 1 drivers -v0x5632f8d73e40_0 .net "BorrowOut", 0 0, L_0x5632f8d79560; 1 drivers -v0x5632f8d73ee0_0 .net "Difference", 0 0, L_0x5632f8d79280; 1 drivers -v0x5632f8d73fd0_0 .net "tempB1", 0 0, L_0x5632f8d79210; 1 drivers -v0x5632f8d740a0_0 .net "tempB2", 0 0, L_0x5632f8d79450; 1 drivers -v0x5632f8d74170_0 .net "tempD", 0 0, L_0x5632f8d79110; 1 drivers -S_0x5632f8d72d90 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x5632f8d72b00; +L_0x56044d109170 .functor OR 1, L_0x56044d108d80, L_0x56044d109060, C4<0>, C4<0>; +v0x56044d105170_0 .net "A", 0 0, L_0x56044d109200; 1 drivers +v0x56044d105230_0 .net "B", 0 0, L_0x56044d109400; 1 drivers +v0x56044d105300_0 .net "BorrowIN", 0 0, L_0x56044d1095c0; 1 drivers +v0x56044d105400_0 .net "BorrowOut", 0 0, L_0x56044d109170; 1 drivers +v0x56044d1054a0_0 .net "Difference", 0 0, L_0x56044d108e40; 1 drivers +v0x56044d105590_0 .net "tempB1", 0 0, L_0x56044d108d80; 1 drivers +v0x56044d105660_0 .net "tempB2", 0 0, L_0x56044d109060; 1 drivers +v0x56044d105730_0 .net "tempD", 0 0, L_0x56044d108c80; 1 drivers +S_0x56044d104430 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x56044d104220; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Borrow"; -L_0x5632f8d79110 .functor XOR 1, L_0x5632f8d795f0, L_0x5632f8d79760, C4<0>, C4<0>; -L_0x5632f8d79180 .functor NOT 1, L_0x5632f8d795f0, C4<0>, C4<0>, C4<0>; -L_0x5632f8d79210 .functor AND 1, L_0x5632f8d79180, L_0x5632f8d79760, C4<1>, C4<1>; -v0x5632f8d73010_0 .net "A", 0 0, L_0x5632f8d795f0; alias, 1 drivers -v0x5632f8d730d0_0 .net "B", 0 0, L_0x5632f8d79760; alias, 1 drivers -v0x5632f8d73190_0 .net "Borrow", 0 0, L_0x5632f8d79210; alias, 1 drivers -v0x5632f8d73260_0 .net "Difference", 0 0, L_0x5632f8d79110; alias, 1 drivers -v0x5632f8d73320_0 .net "notA", 0 0, L_0x5632f8d79180; 1 drivers -S_0x5632f8d734b0 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x5632f8d72b00; +L_0x56044d108c80 .functor XOR 1, L_0x56044d109200, L_0x56044d109400, C4<0>, C4<0>; +L_0x56044d108cf0 .functor NOT 1, L_0x56044d109200, C4<0>, C4<0>, C4<0>; +L_0x56044d108d80 .functor AND 1, L_0x56044d108cf0, L_0x56044d109400, C4<1>, C4<1>; +v0x56044d104640_0 .net "A", 0 0, L_0x56044d109200; alias, 1 drivers +v0x56044d104700_0 .net "B", 0 0, L_0x56044d109400; alias, 1 drivers +v0x56044d1047c0_0 .net "Borrow", 0 0, L_0x56044d108d80; alias, 1 drivers +v0x56044d104890_0 .net "Difference", 0 0, L_0x56044d108c80; alias, 1 drivers +v0x56044d104950_0 .net "notA", 0 0, L_0x56044d108cf0; 1 drivers +S_0x56044d104ae0 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x56044d104220; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Borrow"; -L_0x5632f8d79280 .functor XOR 1, L_0x5632f8d79110, L_0x5632f8d79890, C4<0>, C4<0>; -L_0x5632f8d793c0 .functor NOT 1, L_0x5632f8d79110, C4<0>, C4<0>, C4<0>; -L_0x5632f8d79450 .functor AND 1, L_0x5632f8d793c0, L_0x5632f8d79890, C4<1>, C4<1>; -v0x5632f8d73720_0 .net "A", 0 0, L_0x5632f8d79110; alias, 1 drivers -v0x5632f8d737f0_0 .net "B", 0 0, L_0x5632f8d79890; alias, 1 drivers -v0x5632f8d73890_0 .net "Borrow", 0 0, L_0x5632f8d79450; alias, 1 drivers -v0x5632f8d73960_0 .net "Difference", 0 0, L_0x5632f8d79280; alias, 1 drivers -v0x5632f8d73a20_0 .net "notA", 0 0, L_0x5632f8d793c0; 1 drivers -S_0x5632f8d74260 .scope module, "f3" "fullsubtraction" 3 15, 4 1 0, S_0x5632f8d362e0; +L_0x56044d108e40 .functor XOR 1, L_0x56044d108c80, L_0x56044d1095c0, C4<0>, C4<0>; +L_0x56044d108fd0 .functor NOT 1, L_0x56044d108c80, C4<0>, C4<0>, C4<0>; +L_0x56044d109060 .functor AND 1, L_0x56044d108fd0, L_0x56044d1095c0, C4<1>, C4<1>; +v0x56044d104ce0_0 .net "A", 0 0, L_0x56044d108c80; alias, 1 drivers +v0x56044d104db0_0 .net "B", 0 0, L_0x56044d1095c0; alias, 1 drivers +v0x56044d104e50_0 .net "Borrow", 0 0, L_0x56044d109060; alias, 1 drivers +v0x56044d104f20_0 .net "Difference", 0 0, L_0x56044d108e40; alias, 1 drivers +v0x56044d104fe0_0 .net "notA", 0 0, L_0x56044d108fd0; 1 drivers +S_0x56044d105820 .scope module, "f3" "fullsubtraction" 3 14, 4 1 0, S_0x56044d0d0e60; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /INPUT 1 "BorrowIN"; .port_info 3 /OUTPUT 1 "Difference"; .port_info 4 /OUTPUT 1 "BorrowOut"; -L_0x5632f8d79f90 .functor OR 1, L_0x5632f8d79b50, L_0x5632f8d79e80, C4<0>, C4<0>; -v0x5632f8d75300_0 .net "A", 0 0, L_0x5632f8d7a0d0; 1 drivers -v0x5632f8d753c0_0 .net "B", 0 0, L_0x5632f8d7a200; 1 drivers -v0x5632f8d75490_0 .net "BorrowIN", 0 0, L_0x5632f8d7a390; 1 drivers -v0x5632f8d75590_0 .net "BorrowOut", 0 0, L_0x5632f8d79f90; alias, 1 drivers -v0x5632f8d75630_0 .net "Difference", 0 0, L_0x5632f8d79c60; 1 drivers -v0x5632f8d75720_0 .net "tempB1", 0 0, L_0x5632f8d79b50; 1 drivers -v0x5632f8d757f0_0 .net "tempB2", 0 0, L_0x5632f8d79e80; 1 drivers -v0x5632f8d758c0_0 .net "tempD", 0 0, L_0x5632f8d79a10; 1 drivers -S_0x5632f8d744c0 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x5632f8d74260; +L_0x56044d109c20 .functor OR 1, L_0x56044d109880, L_0x56044d109b10, C4<0>, C4<0>; +v0x56044d106840_0 .net "A", 0 0, L_0x56044d109cd0; 1 drivers +v0x56044d106900_0 .net "B", 0 0, L_0x56044d109e00; 1 drivers +v0x56044d1069d0_0 .net "BorrowIN", 0 0, L_0x56044d109f90; 1 drivers +v0x56044d106ad0_0 .net "BorrowOut", 0 0, L_0x56044d109c20; alias, 1 drivers +v0x56044d106b70_0 .net "Difference", 0 0, L_0x56044d1098f0; 1 drivers +v0x56044d106c60_0 .net "tempB1", 0 0, L_0x56044d109880; 1 drivers +v0x56044d106d30_0 .net "tempB2", 0 0, L_0x56044d109b10; 1 drivers +v0x56044d106e00_0 .net "tempD", 0 0, L_0x56044d109740; 1 drivers +S_0x56044d105a00 .scope module, "hf1" "halfsubtraction" 4 8, 5 1 0, S_0x56044d105820; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Borrow"; -L_0x5632f8d79a10 .functor XOR 1, L_0x5632f8d7a0d0, L_0x5632f8d7a200, C4<0>, C4<0>; -L_0x5632f8d79ac0 .functor NOT 1, L_0x5632f8d7a0d0, C4<0>, C4<0>, C4<0>; -L_0x5632f8d79b50 .functor AND 1, L_0x5632f8d79ac0, L_0x5632f8d7a200, C4<1>, C4<1>; -v0x5632f8d74740_0 .net "A", 0 0, L_0x5632f8d7a0d0; alias, 1 drivers -v0x5632f8d74820_0 .net "B", 0 0, L_0x5632f8d7a200; alias, 1 drivers -v0x5632f8d748e0_0 .net "Borrow", 0 0, L_0x5632f8d79b50; alias, 1 drivers -v0x5632f8d749b0_0 .net "Difference", 0 0, L_0x5632f8d79a10; alias, 1 drivers -v0x5632f8d74a70_0 .net "notA", 0 0, L_0x5632f8d79ac0; 1 drivers -S_0x5632f8d74c00 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x5632f8d74260; +L_0x56044d109740 .functor XOR 1, L_0x56044d109cd0, L_0x56044d109e00, C4<0>, C4<0>; +L_0x56044d1097f0 .functor NOT 1, L_0x56044d109cd0, C4<0>, C4<0>, C4<0>; +L_0x56044d109880 .functor AND 1, L_0x56044d1097f0, L_0x56044d109e00, C4<1>, C4<1>; +v0x56044d105c80_0 .net "A", 0 0, L_0x56044d109cd0; alias, 1 drivers +v0x56044d105d60_0 .net "B", 0 0, L_0x56044d109e00; alias, 1 drivers +v0x56044d105e20_0 .net "Borrow", 0 0, L_0x56044d109880; alias, 1 drivers +v0x56044d105ef0_0 .net "Difference", 0 0, L_0x56044d109740; alias, 1 drivers +v0x56044d105fb0_0 .net "notA", 0 0, L_0x56044d1097f0; 1 drivers +S_0x56044d106140 .scope module, "hf2" "halfsubtraction" 4 9, 5 1 0, S_0x56044d105820; .timescale 0 0; .port_info 0 /INPUT 1 "A"; .port_info 1 /INPUT 1 "B"; .port_info 2 /OUTPUT 1 "Difference"; .port_info 3 /OUTPUT 1 "Borrow"; -L_0x5632f8d79c60 .functor XOR 1, L_0x5632f8d79a10, L_0x5632f8d7a390, C4<0>, C4<0>; -L_0x5632f8d79df0 .functor NOT 1, L_0x5632f8d79a10, C4<0>, C4<0>, C4<0>; -L_0x5632f8d79e80 .functor AND 1, L_0x5632f8d79df0, L_0x5632f8d7a390, C4<1>, C4<1>; -v0x5632f8d74e70_0 .net "A", 0 0, L_0x5632f8d79a10; alias, 1 drivers -v0x5632f8d74f40_0 .net "B", 0 0, L_0x5632f8d7a390; alias, 1 drivers -v0x5632f8d74fe0_0 .net "Borrow", 0 0, L_0x5632f8d79e80; alias, 1 drivers -v0x5632f8d750b0_0 .net "Difference", 0 0, L_0x5632f8d79c60; alias, 1 drivers -v0x5632f8d75170_0 .net "notA", 0 0, L_0x5632f8d79df0; 1 drivers -S_0x5632f8d759b0 .scope module, "od1" "overflowDetect" 3 18, 6 1 0, S_0x5632f8d362e0; - .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; +L_0x56044d1098f0 .functor XOR 1, L_0x56044d109740, L_0x56044d109f90, C4<0>, C4<0>; +L_0x56044d109a80 .functor NOT 1, L_0x56044d109740, C4<0>, C4<0>, C4<0>; +L_0x56044d109b10 .functor AND 1, L_0x56044d109a80, L_0x56044d109f90, C4<1>, C4<1>; +v0x56044d1063b0_0 .net "A", 0 0, L_0x56044d109740; alias, 1 drivers +v0x56044d106480_0 .net "B", 0 0, L_0x56044d109f90; alias, 1 drivers +v0x56044d106520_0 .net "Borrow", 0 0, L_0x56044d109b10; alias, 1 drivers +v0x56044d1065f0_0 .net "Difference", 0 0, L_0x56044d1098f0; alias, 1 drivers +v0x56044d1066b0_0 .net "notA", 0 0, L_0x56044d109a80; 1 drivers + .scope S_0x56044d0d48c0; T_0 ; - %vpi_call 2 20 "$dumpfile", "subtraction.vcd" {0 0 0}; - %vpi_call 2 21 "$dumpvars" {0 0 0}; + %vpi_call 2 18 "$dumpfile", "subtraction.vcd" {0 0 0}; + %vpi_call 2 19 "$dumpvars" {0 0 0}; %pushi/vec4 0, 0, 4; - %store/vec4 v0x5632f8d77810_0, 0, 4; + %store/vec4 v0x56044d107590_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; - %store/vec4 v0x5632f8d77a50_0, 0, 1; + %store/vec4 v0x56044d107740_0, 0, 1; %delay 10, 0; %pushi/vec4 6, 0, 4; - %store/vec4 v0x5632f8d77810_0, 0, 4; + %store/vec4 v0x56044d107590_0, 0, 4; %pushi/vec4 2, 0, 4; - %store/vec4 v0x5632f8d77940_0, 0, 4; + %store/vec4 v0x56044d107670_0, 0, 4; %pushi/vec4 0, 0, 1; - %store/vec4 v0x5632f8d77a50_0, 0, 1; + %store/vec4 v0x56044d107740_0, 0, 1; %delay 10, 0; %pushi/vec4 2, 0, 4; - %store/vec4 v0x5632f8d77810_0, 0, 4; + %store/vec4 v0x56044d107590_0, 0, 4; %pushi/vec4 6, 0, 4; - %store/vec4 v0x5632f8d77940_0, 0, 4; + %store/vec4 v0x56044d107670_0, 0, 4; %pushi/vec4 0, 0, 1; - %store/vec4 v0x5632f8d77a50_0, 0, 1; + %store/vec4 v0x56044d107740_0, 0, 1; %delay 10, 0; %pushi/vec4 12, 0, 4; - %store/vec4 v0x5632f8d77810_0, 0, 4; + %store/vec4 v0x56044d107590_0, 0, 4; %pushi/vec4 4, 0, 4; - %store/vec4 v0x5632f8d77940_0, 0, 4; + %store/vec4 v0x56044d107670_0, 0, 4; %pushi/vec4 0, 0, 1; - %store/vec4 v0x5632f8d77a50_0, 0, 1; + %store/vec4 v0x56044d107740_0, 0, 1; %delay 10, 0; %pushi/vec4 8, 0, 4; - %store/vec4 v0x5632f8d77810_0, 0, 4; + %store/vec4 v0x56044d107590_0, 0, 4; %pushi/vec4 8, 0, 4; - %store/vec4 v0x5632f8d77940_0, 0, 4; + %store/vec4 v0x56044d107670_0, 0, 4; %pushi/vec4 0, 0, 1; - %store/vec4 v0x5632f8d77a50_0, 0, 1; + %store/vec4 v0x56044d107740_0, 0, 1; %delay 10, 0; %pushi/vec4 15, 0, 4; - %store/vec4 v0x5632f8d77810_0, 0, 4; + %store/vec4 v0x56044d107590_0, 0, 4; %pushi/vec4 1, 0, 4; - %store/vec4 v0x5632f8d77940_0, 0, 4; + %store/vec4 v0x56044d107670_0, 0, 4; %pushi/vec4 1, 0, 1; - %store/vec4 v0x5632f8d77a50_0, 0, 1; + %store/vec4 v0x56044d107740_0, 0, 1; %delay 10, 0; - %vpi_call 2 35 "$finish" {0 0 0}; + %vpi_call 2 33 "$finish" {0 0 0}; %end; .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. -:file_names 7; +:file_names 6; "N/A"; ""; "subtractionTB.v"; "subtraction.v"; "fullsubtraction.v"; "halfsubtraction.v"; - "overflowDetect.v"; diff --git a/project0.2/subtraction.vcd b/project0.2/subtraction.vcd index df08a1a..f2676fc 100644 --- a/project0.2/subtraction.vcd +++ b/project0.2/subtraction.vcd @@ -1,5 +1,5 @@ $date - Sat Dec 21 02:52:14 2024 + Wed Dec 25 00:48:05 2024 $end $version Icarus Verilog @@ -8,161 +8,130 @@ $timescale 1s $end $scope module subtractionTB $end -$var wire 1 ! overflow $end -$var wire 4 " Y [3:0] $end -$var wire 1 # BorrowOut $end -$var reg 4 $ A [3:0] $end -$var reg 4 % B [3:0] $end -$var reg 1 & BorrowIN $end +$var wire 4 ! Y [3:0] $end +$var wire 1 " BorrowOUT $end +$var reg 4 # A [3:0] $end +$var reg 4 $ B [3:0] $end +$var reg 1 % BorrowIN $end $scope module uut $end -$var wire 4 ' A [3:0] $end -$var wire 4 ( B [3:0] $end -$var wire 1 & BorrowIN $end -$var wire 4 ) tempB [3:0] $end -$var wire 1 ! overflow $end -$var wire 4 * Y [3:0] $end -$var wire 1 # BorrowOut $end +$var wire 4 & A [3:0] $end +$var wire 4 ' B [3:0] $end +$var wire 1 % BorrowIN $end +$var wire 4 ( tempB [3:0] $end +$var wire 4 ) Y [3:0] $end +$var wire 1 " BorrowOUT $end $scope module f0 $end -$var wire 1 + A $end -$var wire 1 , B $end -$var wire 1 & BorrowIN $end -$var wire 1 - BorrowOut $end -$var wire 1 . tempD $end -$var wire 1 / tempB2 $end -$var wire 1 0 tempB1 $end -$var wire 1 1 Difference $end +$var wire 1 * A $end +$var wire 1 + B $end +$var wire 1 % BorrowIN $end +$var wire 1 , BorrowOut $end +$var wire 1 - tempD $end +$var wire 1 . tempB2 $end +$var wire 1 / tempB1 $end +$var wire 1 0 Difference $end $scope module hf1 $end -$var wire 1 + A $end -$var wire 1 , B $end -$var wire 1 0 Borrow $end -$var wire 1 . Difference $end -$var wire 1 2 notA $end +$var wire 1 * A $end +$var wire 1 + B $end +$var wire 1 / Borrow $end +$var wire 1 - Difference $end +$var wire 1 1 notA $end $upscope $end $scope module hf2 $end -$var wire 1 . A $end -$var wire 1 & B $end -$var wire 1 / Borrow $end -$var wire 1 1 Difference $end -$var wire 1 3 notA $end +$var wire 1 - A $end +$var wire 1 % B $end +$var wire 1 . Borrow $end +$var wire 1 0 Difference $end +$var wire 1 2 notA $end $upscope $end $upscope $end $scope module f1 $end -$var wire 1 4 A $end -$var wire 1 5 B $end -$var wire 1 6 BorrowIN $end -$var wire 1 7 BorrowOut $end -$var wire 1 8 tempD $end -$var wire 1 9 tempB2 $end -$var wire 1 : tempB1 $end -$var wire 1 ; Difference $end +$var wire 1 3 A $end +$var wire 1 4 B $end +$var wire 1 5 BorrowIN $end +$var wire 1 6 BorrowOut $end +$var wire 1 7 tempD $end +$var wire 1 8 tempB2 $end +$var wire 1 9 tempB1 $end +$var wire 1 : Difference $end $scope module hf1 $end -$var wire 1 4 A $end -$var wire 1 5 B $end -$var wire 1 : Borrow $end -$var wire 1 8 Difference $end -$var wire 1 < notA $end +$var wire 1 3 A $end +$var wire 1 4 B $end +$var wire 1 9 Borrow $end +$var wire 1 7 Difference $end +$var wire 1 ; notA $end $upscope $end $scope module hf2 $end -$var wire 1 8 A $end -$var wire 1 6 B $end -$var wire 1 9 Borrow $end -$var wire 1 ; Difference $end -$var wire 1 = notA $end +$var wire 1 7 A $end +$var wire 1 5 B $end +$var wire 1 8 Borrow $end +$var wire 1 : Difference $end +$var wire 1 < notA $end $upscope $end $upscope $end $scope module f2 $end -$var wire 1 > A $end -$var wire 1 ? B $end -$var wire 1 @ BorrowIN $end -$var wire 1 A BorrowOut $end -$var wire 1 B tempD $end -$var wire 1 C tempB2 $end -$var wire 1 D tempB1 $end -$var wire 1 E Difference $end +$var wire 1 = A $end +$var wire 1 > B $end +$var wire 1 ? BorrowIN $end +$var wire 1 @ BorrowOut $end +$var wire 1 A tempD $end +$var wire 1 B tempB2 $end +$var wire 1 C tempB1 $end +$var wire 1 D Difference $end $scope module hf1 $end -$var wire 1 > A $end -$var wire 1 ? B $end -$var wire 1 D Borrow $end -$var wire 1 B Difference $end -$var wire 1 F notA $end +$var wire 1 = A $end +$var wire 1 > B $end +$var wire 1 C Borrow $end +$var wire 1 A Difference $end +$var wire 1 E notA $end $upscope $end $scope module hf2 $end -$var wire 1 B A $end -$var wire 1 @ B $end -$var wire 1 C Borrow $end -$var wire 1 E Difference $end -$var wire 1 G notA $end +$var wire 1 A A $end +$var wire 1 ? B $end +$var wire 1 B Borrow $end +$var wire 1 D Difference $end +$var wire 1 F notA $end $upscope $end $upscope $end $scope module f3 $end -$var wire 1 H A $end -$var wire 1 I B $end -$var wire 1 J BorrowIN $end -$var wire 1 # BorrowOut $end -$var wire 1 K tempD $end -$var wire 1 L tempB2 $end -$var wire 1 M tempB1 $end -$var wire 1 N Difference $end +$var wire 1 G A $end +$var wire 1 H B $end +$var wire 1 I BorrowIN $end +$var wire 1 " BorrowOut $end +$var wire 1 J tempD $end +$var wire 1 K tempB2 $end +$var wire 1 L tempB1 $end +$var wire 1 M Difference $end $scope module hf1 $end -$var wire 1 H A $end -$var wire 1 I B $end -$var wire 1 M Borrow $end -$var wire 1 K Difference $end -$var wire 1 O notA $end +$var wire 1 G A $end +$var wire 1 H B $end +$var wire 1 L Borrow $end +$var wire 1 J Difference $end +$var wire 1 N notA $end $upscope $end $scope module hf2 $end -$var wire 1 K A $end -$var wire 1 J B $end -$var wire 1 L Borrow $end -$var wire 1 N Difference $end -$var wire 1 P notA $end +$var wire 1 J A $end +$var wire 1 I B $end +$var wire 1 K Borrow $end +$var wire 1 M Difference $end +$var wire 1 O notA $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 $enddefinitions $end #0 $dumpvars -0\ -0[ -0Z -1Y -b10 X -1W -0V -0U -0T -b0 S -b0 R -b0 Q -1P 1O -0N +1N 0M 0L 0K 0J 0I 0H -1G +0G 1F -0E +1E 0D 0C 0B @@ -170,9 +139,9 @@ b0 Q 0@ 0? 0> -1= +0= 1< -0; +1; 0: 09 08 @@ -180,161 +149,126 @@ b0 Q 06 05 04 -13 +03 12 -01 +11 00 0/ 0. 0- 0, 0+ -b0 * -bz000 ) -b0 ( +0* +b0 ) +bz000 ( b0 ' -0& -b0 % +b0 & +0% b0 $ -0# -b0 " -0! +b0 # +0" +b0 ! $end #10 -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 +b100 ! +b100 ) 1D -1F -1? -0> -b110 % -b110 ( -b110 R +0F +0; +1A +0E +14 +13 +1= b10 $ b10 ' -b10 Q -#30 -0! -0V -0J -0# -bz000 ) -0A -0L -1U -0E -1G -0D -b1000 " -b1000 * -b1000 S -1N -0P -1\ -1< -0B -0F +b110 # +b110 & +#20 +1" +b1100 ! +b1100 ) +1M 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 +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> -b1000 % -b1000 ( -b1000 R +1H +0= b1000 $ b1000 ' -b1000 Q +b1000 # +b1000 & #50 -0! -0Z -0V -1U -16 -1N -0P -1\ -0; -0= -1E -0G -bz001 ) -1- -1K -0Y -1[ -02 -18 +15 +1M +0O +0: 0< -1B +1D 0F -b1101 " -b1101 * -b1101 S -11 -1/ +bz001 ( 1, -0I +1J +01 +17 +0; +1A +0E +b1101 ! +b1101 ) +10 +1. 1+ -14 -1> -1& -b1 % -b1 ( -b1 R -b1111 $ -b1111 ' -b1111 Q +0H +1* +13 +1= +1% +b1 $ +b1 ' +b1111 # +b1111 & #60 diff --git a/project0.2/subtractionTB.v b/project0.2/subtractionTB.v index e677b4d..efc7db9 100644 --- a/project0.2/subtractionTB.v +++ b/project0.2/subtractionTB.v @@ -33,9 +33,9 @@ initial begin #10 $finish; end -initial begin +//initial begin // 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); -end + // $monitor("At time %t: A = %b, B = %b, Y = %b, BorrowOut = %b, overflow = %b", $time, A, B, Y, BorrowOut, overflow); +//end endmodule