xorGate
This commit is contained in:
1 parent
6f6f491135
commit
2acbfd9d8d
29 files changed
+425
-178
No files matched your search
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -7,46 +7,47 @@
|
||||
: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_0x55a27af99200 .scope module, "andGateTB" "andGateTB" 2 1;
|
||||
S_0x563ba96be200 .scope module, "andGateTB" "andGateTB" 2 1;
|
||||
.timescale 0 0;
|
||||
v0x55a27afaa010_0 .var "A", 0 0;
|
||||
v0x55a27afaa0e0_0 .var "B", 0 0;
|
||||
v0x55a27afaa1b0_0 .net "Y", 0 0, L_0x55a27afaa3f0; 1 drivers
|
||||
S_0x55a27af99390 .scope module, "uut" "andGate" 2 5, 3 1 0, S_0x55a27af99200;
|
||||
v0x563ba96cf140_0 .var "A_i", 0 0;
|
||||
v0x563ba96cf210_0 .var "B_i", 0 0;
|
||||
v0x563ba96cf2e0_0 .net "Y_o", 0 0, L_0x563ba96cf520; 1 drivers
|
||||
S_0x563ba96be390 .scope module, "uut" "andGate" 2 5, 3 1 0, S_0x563ba96be200;
|
||||
.timescale 0 0;
|
||||
.port_info 0 /INPUT 1 "A";
|
||||
.port_info 1 /INPUT 1 "B";
|
||||
.port_info 2 /OUTPUT 1 "Y";
|
||||
L_0x55a27afaa2b0 .functor NAND 1, v0x55a27afaa010_0, v0x55a27afaa0e0_0, C4<1>, C4<1>;
|
||||
L_0x55a27afaa3f0 .functor NAND 1, L_0x55a27afaa2b0, L_0x55a27afaa2b0, C4<1>, C4<1>;
|
||||
v0x55a27af61c00_0 .net "A", 0 0, v0x55a27afaa010_0; 1 drivers
|
||||
v0x55a27afa9d70_0 .net "B", 0 0, v0x55a27afaa0e0_0; 1 drivers
|
||||
v0x55a27afa9e30_0 .net "Y", 0 0, L_0x55a27afaa3f0; alias, 1 drivers
|
||||
v0x55a27afa9ed0_0 .net "tempOut", 0 0, L_0x55a27afaa2b0; 1 drivers
|
||||
.scope S_0x55a27af99200;
|
||||
.port_info 0 /INPUT 1 "A_i";
|
||||
.port_info 1 /INPUT 1 "B_i";
|
||||
.port_info 2 /OUTPUT 1 "Y_o";
|
||||
L_0x563ba96cf3e0 .functor NAND 1, v0x563ba96cf140_0, v0x563ba96cf210_0, C4<1>, C4<1>;
|
||||
L_0x563ba96cf520 .functor NAND 1, L_0x563ba96cf3e0, L_0x563ba96cf3e0, C4<1>, C4<1>;
|
||||
v0x563ba9686c00_0 .net "A_i", 0 0, v0x563ba96cf140_0; 1 drivers
|
||||
v0x563ba96ceea0_0 .net "B_i", 0 0, v0x563ba96cf210_0; 1 drivers
|
||||
v0x563ba96cef60_0 .net "Y_o", 0 0, L_0x563ba96cf520; alias, 1 drivers
|
||||
v0x563ba96cf000_0 .net "nand_out", 0 0, L_0x563ba96cf3e0; 1 drivers
|
||||
.scope S_0x563ba96be200;
|
||||
T_0 ;
|
||||
%vpi_call 2 12 "$dumpfile", "andGate.vcd" {0 0 0};
|
||||
%vpi_call 2 13 "$dumpvars" {0 0 0};
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55a27afaa010_0, 0, 1;
|
||||
%store/vec4 v0x563ba96cf140_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55a27afaa0e0_0, 0, 1;
|
||||
%store/vec4 v0x563ba96cf210_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55a27afaa010_0, 0, 1;
|
||||
%store/vec4 v0x563ba96cf140_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55a27afaa0e0_0, 0, 1;
|
||||
%store/vec4 v0x563ba96cf210_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55a27afaa010_0, 0, 1;
|
||||
%store/vec4 v0x563ba96cf140_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55a27afaa0e0_0, 0, 1;
|
||||
%store/vec4 v0x563ba96cf210_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55a27afaa010_0, 0, 1;
|
||||
%store/vec4 v0x563ba96cf140_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55a27afaa0e0_0, 0, 1;
|
||||
%store/vec4 v0x563ba96cf210_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%vpi_call 2 26 "$finish" {0 0 0};
|
||||
%end;
|
||||
.thread T_0;
|
||||
# The file index is used to find the file name in the following table.
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
module andGate (
|
||||
input wire A_i,
|
||||
input wire B_i,
|
||||
output wire Y_o
|
||||
);
|
||||
|
||||
wire nand_out;
|
||||
|
||||
nand nand1 ( nand_out, A_i, B_i );
|
||||
nand nand2 ( Y_o, nand_out, nand_out );
|
||||
|
||||
endmodule
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
$date
|
||||
Sun Dec 1 02:41:57 2024
|
||||
Mon Dec 9 22:41:40 2024
|
||||
$end
|
||||
$version
|
||||
Icarus Verilog
|
||||
@@ -8,14 +8,14 @@ $timescale
|
||||
1s
|
||||
$end
|
||||
$scope module andGateTB $end
|
||||
$var wire 1 ! Y $end
|
||||
$var reg 1 " A $end
|
||||
$var reg 1 # B $end
|
||||
$var wire 1 ! Y_o $end
|
||||
$var reg 1 " A_i $end
|
||||
$var reg 1 # B_i $end
|
||||
$scope module uut $end
|
||||
$var wire 1 " A $end
|
||||
$var wire 1 # B $end
|
||||
$var wire 1 ! Y $end
|
||||
$var wire 1 $ tempOut $end
|
||||
$var wire 1 " A_i $end
|
||||
$var wire 1 # B_i $end
|
||||
$var wire 1 ! Y_o $end
|
||||
$var wire 1 $ nand_out $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
module andGateTB ();
|
||||
reg A, B;
|
||||
wire Y;
|
||||
reg A_i, B_i;
|
||||
wire Y_o;
|
||||
|
||||
andGate uut (
|
||||
.A(A),
|
||||
.B(B),
|
||||
.Y(Y)
|
||||
.A_i(A_i),
|
||||
.B_i(B_i),
|
||||
.Y_o(Y_o)
|
||||
);
|
||||
|
||||
initial begin
|
||||
$dumpfile("andGate.vcd");
|
||||
$dumpvars;
|
||||
A = 1'b0;
|
||||
B = 1'b0;
|
||||
A_i = 1'b0;
|
||||
B_i = 1'b0;
|
||||
#10;
|
||||
A = 1'b0;
|
||||
B = 1'b1;
|
||||
A_i = 1'b0;
|
||||
B_i = 1'b1;
|
||||
#10;
|
||||
A = 1'b1;
|
||||
B = 1'b0;
|
||||
A_i = 1'b1;
|
||||
B_i = 1'b0;
|
||||
#10;
|
||||
A = 1'b1;
|
||||
B = 1'b1;
|
||||
A_i = 1'b1;
|
||||
B_i = 1'b1;
|
||||
#10;
|
||||
$finish;
|
||||
end
|
||||
|
||||
@@ -7,26 +7,26 @@
|
||||
: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_0x5628fffa0b60 .scope module, "notGateTB" "notGateTB" 2 1;
|
||||
S_0x56057d7feb60 .scope module, "notGateTB" "notGateTB" 2 1;
|
||||
.timescale 0 0;
|
||||
v0x5628fffafdd0_0 .var "A", 0 0;
|
||||
v0x5628fffafe70_0 .net "B", 0 0, L_0x5628fffaff40; 1 drivers
|
||||
S_0x5628fffa0cf0 .scope module, "uut" "notGate" 2 6, 3 1 0, S_0x5628fffa0b60;
|
||||
v0x56057d80ddd0_0 .var "A_i", 0 0;
|
||||
v0x56057d80de70_0 .net "B_o", 0 0, L_0x56057d80df40; 1 drivers
|
||||
S_0x56057d7fecf0 .scope module, "uut" "notGate" 2 6, 3 1 0, S_0x56057d7feb60;
|
||||
.timescale 0 0;
|
||||
.port_info 0 /INPUT 1 "A";
|
||||
.port_info 1 /OUTPUT 1 "B";
|
||||
L_0x5628fffaff40 .functor NAND 1, v0x5628fffafdd0_0, v0x5628fffafdd0_0, C4<1>, C4<1>;
|
||||
v0x5628fff697f0_0 .net "A", 0 0, v0x5628fffafdd0_0; 1 drivers
|
||||
v0x5628fff69c00_0 .net "B", 0 0, L_0x5628fffaff40; alias, 1 drivers
|
||||
.scope S_0x5628fffa0b60;
|
||||
.port_info 0 /INPUT 1 "A_i";
|
||||
.port_info 1 /OUTPUT 1 "B_o";
|
||||
L_0x56057d80df40 .functor NAND 1, v0x56057d80ddd0_0, v0x56057d80ddd0_0, C4<1>, C4<1>;
|
||||
v0x56057d7c77f0_0 .net "A_i", 0 0, v0x56057d80ddd0_0; 1 drivers
|
||||
v0x56057d7c7c00_0 .net "B_o", 0 0, L_0x56057d80df40; alias, 1 drivers
|
||||
.scope S_0x56057d7feb60;
|
||||
T_0 ;
|
||||
%vpi_call 2 12 "$dumpfile", "notGate.vcd" {0 0 0};
|
||||
%vpi_call 2 13 "$dumpvars" {0 0 0};
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x5628fffafdd0_0, 0, 1;
|
||||
%store/vec4 v0x56057d80ddd0_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x5628fffafdd0_0, 0, 1;
|
||||
%store/vec4 v0x56057d80ddd0_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%vpi_call 2 18 "$finish" {0 0 0};
|
||||
%end;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
module notGate (
|
||||
input A,
|
||||
output B
|
||||
input A_i,
|
||||
output B_o
|
||||
);
|
||||
|
||||
nand nand1 (B, A, A);
|
||||
nand nand1 (B_o, A_i, A_i);
|
||||
endmodule
|
||||
@@ -1,5 +1,5 @@
|
||||
$date
|
||||
Sun Dec 1 02:50:52 2024
|
||||
Mon Dec 9 22:38:49 2024
|
||||
$end
|
||||
$version
|
||||
Icarus Verilog
|
||||
@@ -8,11 +8,11 @@ $timescale
|
||||
1s
|
||||
$end
|
||||
$scope module notGateTB $end
|
||||
$var wire 1 ! B $end
|
||||
$var reg 1 " A $end
|
||||
$var wire 1 ! B_o $end
|
||||
$var reg 1 " A_i $end
|
||||
$scope module uut $end
|
||||
$var wire 1 " A $end
|
||||
$var wire 1 ! B $end
|
||||
$var wire 1 " A_i $end
|
||||
$var wire 1 ! B_o $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
module notGateTB ();
|
||||
module notGateTB;
|
||||
|
||||
reg A;
|
||||
wire B;
|
||||
reg A_i;
|
||||
wire B_o;
|
||||
|
||||
notGate uut (
|
||||
.A(A),
|
||||
.B(B)
|
||||
);
|
||||
notGate uut (
|
||||
.A_i(A_i),
|
||||
.B_o(B_o)
|
||||
);
|
||||
|
||||
initial begin
|
||||
$dumpfile("notGate.vcd");
|
||||
$dumpvars;
|
||||
A = 1'b0;
|
||||
#10;
|
||||
A = 1'b1;
|
||||
#10;
|
||||
$finish;
|
||||
end
|
||||
initial begin
|
||||
$dumpfile("notGate.vcd");
|
||||
$dumpvars;
|
||||
A_i = 1'b0;
|
||||
#10;
|
||||
A_i = 1'b1;
|
||||
#10;
|
||||
$finish;
|
||||
end
|
||||
endmodule
|
||||
@@ -0,0 +1,60 @@
|
||||
#! /usr/bin/vvp
|
||||
:ivl_version "11.0 (stable)";
|
||||
:ivl_delay_selection "TYPICAL";
|
||||
:vpi_time_precision + 0;
|
||||
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/system.vpi";
|
||||
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/vhdl_sys.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/va_math.vpi";
|
||||
S_0x55778f5946b0 .scope module, "orGateTB" "orGateTB" 2 1;
|
||||
.timescale 0 0;
|
||||
v0x55778f5a58d0_0 .var "A_i", 0 0;
|
||||
v0x55778f5a5970_0 .var "B_i", 0 0;
|
||||
v0x55778f5a5a40_0 .net "F_o", 0 0, L_0x55778f5a5cf0; 1 drivers
|
||||
S_0x55778f594840 .scope module, "uut" "orGate" 2 5, 3 1 0, S_0x55778f5946b0;
|
||||
.timescale 0 0;
|
||||
.port_info 0 /INPUT 1 "A_i";
|
||||
.port_info 1 /INPUT 1 "B_i";
|
||||
.port_info 2 /OUTPUT 1 "F_o";
|
||||
L_0x55778f5a5b40 .functor NAND 1, v0x55778f5a58d0_0, v0x55778f5a58d0_0, C4<1>, C4<1>;
|
||||
L_0x55778f5a5c30 .functor NAND 1, v0x55778f5a5970_0, v0x55778f5a5970_0, C4<1>, C4<1>;
|
||||
L_0x55778f5a5cf0 .functor NAND 1, L_0x55778f5a5b40, L_0x55778f5a5c30, C4<1>, C4<1>;
|
||||
v0x55778f581720_0 .net "A_i", 0 0, v0x55778f5a58d0_0; 1 drivers
|
||||
v0x55778f5a5520_0 .net "B_i", 0 0, v0x55778f5a5970_0; 1 drivers
|
||||
v0x55778f5a55e0_0 .net "F_o", 0 0, L_0x55778f5a5cf0; alias, 1 drivers
|
||||
v0x55778f5a5680_0 .net "nand1_out", 0 0, L_0x55778f5a5b40; 1 drivers
|
||||
v0x55778f5a5740_0 .net "nand2_out", 0 0, L_0x55778f5a5c30; 1 drivers
|
||||
.scope S_0x55778f5946b0;
|
||||
T_0 ;
|
||||
%vpi_call 2 12 "$dumpfile", "orGate.vcd" {0 0 0};
|
||||
%vpi_call 2 13 "$dumpvars" {0 0 0};
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55778f5a58d0_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55778f5a5970_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55778f5a58d0_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55778f5a5970_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55778f5a58d0_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55778f5a5970_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55778f5a58d0_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55778f5a5970_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%vpi_call 2 18 "$finish" {0 0 0};
|
||||
%end;
|
||||
.thread T_0;
|
||||
# The file index is used to find the file name in the following table.
|
||||
:file_names 4;
|
||||
"N/A";
|
||||
"<interactive>";
|
||||
"orGateTB.v";
|
||||
"orGate.v";
|
||||
@@ -0,0 +1,43 @@
|
||||
$date
|
||||
Mon Dec 9 22:45:31 2024
|
||||
$end
|
||||
$version
|
||||
Icarus Verilog
|
||||
$end
|
||||
$timescale
|
||||
1s
|
||||
$end
|
||||
$scope module orGateTB $end
|
||||
$var wire 1 ! F_o $end
|
||||
$var reg 1 " A_i $end
|
||||
$var reg 1 # B_i $end
|
||||
$scope module uut $end
|
||||
$var wire 1 " A_i $end
|
||||
$var wire 1 # B_i $end
|
||||
$var wire 1 ! F_o $end
|
||||
$var wire 1 $ nand1_out $end
|
||||
$var wire 1 % nand2_out $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
1%
|
||||
1$
|
||||
0#
|
||||
0"
|
||||
0!
|
||||
$end
|
||||
#10
|
||||
1!
|
||||
0%
|
||||
1#
|
||||
#20
|
||||
1%
|
||||
0$
|
||||
0#
|
||||
1"
|
||||
#30
|
||||
0%
|
||||
1#
|
||||
#40
|
||||
@@ -0,0 +1,21 @@
|
||||
module orGateTB();
|
||||
reg A_i, B_i;
|
||||
wire F_o;
|
||||
|
||||
orGate uut(
|
||||
.A_i(A_i),
|
||||
.B_i(B_i),
|
||||
.F_o(F_o)
|
||||
);
|
||||
|
||||
initial begin
|
||||
$dumpfile("orGate.vcd");
|
||||
$dumpvars;
|
||||
A_i = 1'b0; B_i = 1'b0; #10;
|
||||
A_i = 1'b0; B_i = 1'b1; #10;
|
||||
A_i = 1'b1; B_i = 1'b0; #10;
|
||||
A_i = 1'b1; B_i = 1'b1; #10;
|
||||
$finish;
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,62 @@
|
||||
#! /usr/bin/vvp
|
||||
:ivl_version "11.0 (stable)";
|
||||
:ivl_delay_selection "TYPICAL";
|
||||
:vpi_time_precision + 0;
|
||||
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/system.vpi";
|
||||
:vpi_module "/usr/lib/x86_64-linux-gnu/ivl/vhdl_sys.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/va_math.vpi";
|
||||
S_0x55594b700b30 .scope module, "xorGateTB" "xorGateTB" 2 1;
|
||||
.timescale 0 0;
|
||||
v0x55594b712090_0 .var "A_i", 0 0;
|
||||
v0x55594b712130_0 .var "B_i", 0 0;
|
||||
v0x55594b712200_0 .net "F_o", 0 0, L_0x55594b712570; 1 drivers
|
||||
S_0x55594b700cc0 .scope module, "uut" "xorGate" 2 5, 3 1 0, S_0x55594b700b30;
|
||||
.timescale 0 0;
|
||||
.port_info 0 /INPUT 1 "A_i";
|
||||
.port_info 1 /INPUT 1 "B_i";
|
||||
.port_info 2 /OUTPUT 1 "F_o";
|
||||
L_0x55594b712300 .functor NAND 1, v0x55594b712090_0, v0x55594b712130_0, C4<1>, C4<1>;
|
||||
L_0x55594b712440 .functor NAND 1, v0x55594b712090_0, L_0x55594b712300, C4<1>, C4<1>;
|
||||
L_0x55594b712500 .functor NAND 1, v0x55594b712130_0, L_0x55594b712300, C4<1>, C4<1>;
|
||||
L_0x55594b712570 .functor NAND 1, L_0x55594b712500, L_0x55594b712440, C4<1>, C4<1>;
|
||||
v0x55594b6eda80_0 .net "A_i", 0 0, v0x55594b712090_0; 1 drivers
|
||||
v0x55594b711c20_0 .net "B_i", 0 0, v0x55594b712130_0; 1 drivers
|
||||
v0x55594b711ce0_0 .net "F_o", 0 0, L_0x55594b712570; alias, 1 drivers
|
||||
v0x55594b711d80_0 .net "nand1_out", 0 0, L_0x55594b712300; 1 drivers
|
||||
v0x55594b711e40_0 .net "nand2_out", 0 0, L_0x55594b712440; 1 drivers
|
||||
v0x55594b711f50_0 .net "nand3_out", 0 0, L_0x55594b712500; 1 drivers
|
||||
.scope S_0x55594b700b30;
|
||||
T_0 ;
|
||||
%vpi_call 2 12 "$dumpfile", "xorGate.vcd" {0 0 0};
|
||||
%vpi_call 2 13 "$dumpvars" {0 0 0};
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55594b712090_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55594b712130_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55594b712090_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55594b712130_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55594b712090_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x55594b712130_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55594b712090_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x55594b712130_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%vpi_call 2 18 "$finish" {0 0 0};
|
||||
%end;
|
||||
.thread T_0;
|
||||
# The file index is used to find the file name in the following table.
|
||||
:file_names 4;
|
||||
"N/A";
|
||||
"<interactive>";
|
||||
"xorGateTB.v";
|
||||
"xorGate.v";
|
||||
@@ -0,0 +1,14 @@
|
||||
module xorGate (
|
||||
input A_i,
|
||||
input B_i,
|
||||
output F_o
|
||||
);
|
||||
|
||||
wire nand1_out, nand2_out, nand3_out;
|
||||
|
||||
nand nand1(nand1_out, A_i, B_i);
|
||||
nand nand2(nand2_out, A_i, nand1_out);
|
||||
nand nand3(nand3_out, B_i, nand1_out);
|
||||
nand nand4(F_o, nand3_out, nand2_out);
|
||||
|
||||
endmodule
|
||||
@@ -0,0 +1,48 @@
|
||||
$date
|
||||
Mon Dec 9 22:56:38 2024
|
||||
$end
|
||||
$version
|
||||
Icarus Verilog
|
||||
$end
|
||||
$timescale
|
||||
1s
|
||||
$end
|
||||
$scope module xorGateTB $end
|
||||
$var wire 1 ! F_o $end
|
||||
$var reg 1 " A_i $end
|
||||
$var reg 1 # B_i $end
|
||||
$scope module uut $end
|
||||
$var wire 1 " A_i $end
|
||||
$var wire 1 # B_i $end
|
||||
$var wire 1 ! F_o $end
|
||||
$var wire 1 $ nand1_out $end
|
||||
$var wire 1 % nand2_out $end
|
||||
$var wire 1 & nand3_out $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
1&
|
||||
1%
|
||||
1$
|
||||
0#
|
||||
0"
|
||||
0!
|
||||
$end
|
||||
#10
|
||||
1!
|
||||
0&
|
||||
1#
|
||||
#20
|
||||
1&
|
||||
0%
|
||||
0#
|
||||
1"
|
||||
#30
|
||||
0!
|
||||
1%
|
||||
0$
|
||||
1&
|
||||
1#
|
||||
#40
|
||||
@@ -0,0 +1,21 @@
|
||||
module xorGateTB();
|
||||
reg A_i, B_i;
|
||||
wire F_o;
|
||||
|
||||
xorGate uut(
|
||||
.A_i(A_i),
|
||||
.B_i(B_i),
|
||||
.F_o(F_o)
|
||||
);
|
||||
|
||||
initial begin
|
||||
$dumpfile("xorGate.vcd");
|
||||
$dumpvars;
|
||||
A_i = 1'b0; B_i = 1'b0; #10;
|
||||
A_i = 1'b0; B_i = 1'b1; #10;
|
||||
A_i = 1'b1; B_i = 1'b0; #10;
|
||||
A_i = 1'b1; B_i = 1'b1; #10;
|
||||
$finish;
|
||||
end
|
||||
|
||||
endmodule
|
||||
@@ -1,26 +0,0 @@
|
||||
module Fulladder (
|
||||
input A,
|
||||
input B,
|
||||
input Cin,
|
||||
output S,
|
||||
output Cout
|
||||
);
|
||||
wire AxB, AnB1, AnB2;
|
||||
|
||||
|
||||
halfadder h1 (
|
||||
.A(A),
|
||||
.B(B),
|
||||
.Sum(AxB),
|
||||
.Carry(AnB2)
|
||||
);
|
||||
|
||||
halfadder h2 (
|
||||
.A(AxB),
|
||||
.B(Cin),
|
||||
.Sum(S),
|
||||
.Carry(AnB1)
|
||||
);
|
||||
|
||||
or o1 (.Y(Cout), .A(AnB1), .B(AnB2));
|
||||
endmodule
|
||||
@@ -1,5 +1,5 @@
|
||||
$date
|
||||
Tue Oct 8 14:05:40 2024
|
||||
Sun Dec 8 20:51:56 2024
|
||||
$end
|
||||
$version
|
||||
Icarus Verilog
|
||||
|
||||
@@ -7,115 +7,115 @@
|
||||
: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_0x557fe3a27ae0 .scope module, "fulladdertb" "fulladdertb" 2 1;
|
||||
S_0x56122b07fae0 .scope module, "fulladdertb" "fulladdertb" 2 1;
|
||||
.timescale 0 0;
|
||||
v0x557fe3a3b940_0 .var "r1", 0 0;
|
||||
v0x557fe3a3ba30_0 .var "r2", 0 0;
|
||||
v0x557fe3a3bb40_0 .var "r3", 0 0;
|
||||
v0x557fe3a3bc30_0 .net "w1", 0 0, L_0x557fe3a3bf40; 1 drivers
|
||||
v0x557fe3a3bd20_0 .net "w2", 0 0, L_0x557fe3a3c1a0; 1 drivers
|
||||
S_0x557fe3a27c70 .scope module, "uut" "fullAdder" 2 6, 3 1 0, S_0x557fe3a27ae0;
|
||||
v0x56122b093940_0 .var "r1", 0 0;
|
||||
v0x56122b093a30_0 .var "r2", 0 0;
|
||||
v0x56122b093b40_0 .var "r3", 0 0;
|
||||
v0x56122b093c30_0 .net "w1", 0 0, L_0x56122b093f40; 1 drivers
|
||||
v0x56122b093d20_0 .net "w2", 0 0, L_0x56122b0941a0; 1 drivers
|
||||
S_0x56122b07fc70 .scope module, "uut" "fulladder" 2 6, 3 1 0, S_0x56122b07fae0;
|
||||
.timescale 0 0;
|
||||
.port_info 0 /INPUT 1 "A";
|
||||
.port_info 1 /INPUT 1 "B";
|
||||
.port_info 2 /INPUT 1 "Cin";
|
||||
.port_info 3 /OUTPUT 1 "S";
|
||||
.port_info 4 /OUTPUT 1 "Cout";
|
||||
L_0x557fe3a3c1a0 .functor OR 1, L_0x557fe3a3c080, L_0x557fe3a3be80, C4<0>, C4<0>;
|
||||
v0x557fe3a3b290_0 .net "A", 0 0, v0x557fe3a3b940_0; 1 drivers
|
||||
v0x557fe3a3b350_0 .net "AnB1", 0 0, L_0x557fe3a3c080; 1 drivers
|
||||
v0x557fe3a3b420_0 .net "AnB2", 0 0, L_0x557fe3a3be80; 1 drivers
|
||||
v0x557fe3a3b520_0 .net "AxB", 0 0, L_0x557fe3a3be10; 1 drivers
|
||||
v0x557fe3a3b610_0 .net "B", 0 0, v0x557fe3a3ba30_0; 1 drivers
|
||||
v0x557fe3a3b700_0 .net "Cin", 0 0, v0x557fe3a3bb40_0; 1 drivers
|
||||
v0x557fe3a3b7a0_0 .net "Cout", 0 0, L_0x557fe3a3c1a0; alias, 1 drivers
|
||||
v0x557fe3a3b840_0 .net "S", 0 0, L_0x557fe3a3bf40; alias, 1 drivers
|
||||
S_0x557fe3a22df0 .scope module, "h1" "halfadder" 3 9, 4 1 0, S_0x557fe3a27c70;
|
||||
L_0x56122b0941a0 .functor OR 1, L_0x56122b094080, L_0x56122b093e80, C4<0>, C4<0>;
|
||||
v0x56122b093290_0 .net "A", 0 0, v0x56122b093940_0; 1 drivers
|
||||
v0x56122b093350_0 .net "AnB1", 0 0, L_0x56122b094080; 1 drivers
|
||||
v0x56122b093420_0 .net "AnB2", 0 0, L_0x56122b093e80; 1 drivers
|
||||
v0x56122b093520_0 .net "AxB", 0 0, L_0x56122b093e10; 1 drivers
|
||||
v0x56122b093610_0 .net "B", 0 0, v0x56122b093a30_0; 1 drivers
|
||||
v0x56122b093700_0 .net "Cin", 0 0, v0x56122b093b40_0; 1 drivers
|
||||
v0x56122b0937a0_0 .net "Cout", 0 0, L_0x56122b0941a0; alias, 1 drivers
|
||||
v0x56122b093840_0 .net "S", 0 0, L_0x56122b093f40; alias, 1 drivers
|
||||
S_0x56122b07adf0 .scope module, "h1" "halfadder" 3 11, 4 1 0, S_0x56122b07fc70;
|
||||
.timescale 0 0;
|
||||
.port_info 0 /INPUT 1 "A";
|
||||
.port_info 1 /INPUT 1 "B";
|
||||
.port_info 2 /OUTPUT 1 "S";
|
||||
.port_info 3 /OUTPUT 1 "C";
|
||||
L_0x557fe3a3be10 .functor XOR 1, v0x557fe3a3b940_0, v0x557fe3a3ba30_0, C4<0>, C4<0>;
|
||||
L_0x557fe3a3be80 .functor AND 1, v0x557fe3a3b940_0, v0x557fe3a3ba30_0, C4<1>, C4<1>;
|
||||
v0x557fe3a23070_0 .net "A", 0 0, v0x557fe3a3b940_0; alias, 1 drivers
|
||||
v0x557fe3a3a970_0 .net "B", 0 0, v0x557fe3a3ba30_0; alias, 1 drivers
|
||||
v0x557fe3a3aa30_0 .net "C", 0 0, L_0x557fe3a3be80; alias, 1 drivers
|
||||
v0x557fe3a3ab00_0 .net "S", 0 0, L_0x557fe3a3be10; alias, 1 drivers
|
||||
S_0x557fe3a3ac70 .scope module, "h2" "halfadder" 3 10, 4 1 0, S_0x557fe3a27c70;
|
||||
L_0x56122b093e10 .functor XOR 1, v0x56122b093940_0, v0x56122b093a30_0, C4<0>, C4<0>;
|
||||
L_0x56122b093e80 .functor AND 1, v0x56122b093940_0, v0x56122b093a30_0, C4<1>, C4<1>;
|
||||
v0x56122b07b070_0 .net "A", 0 0, v0x56122b093940_0; alias, 1 drivers
|
||||
v0x56122b092970_0 .net "B", 0 0, v0x56122b093a30_0; alias, 1 drivers
|
||||
v0x56122b092a30_0 .net "C", 0 0, L_0x56122b093e80; alias, 1 drivers
|
||||
v0x56122b092b00_0 .net "S", 0 0, L_0x56122b093e10; alias, 1 drivers
|
||||
S_0x56122b092c70 .scope module, "h2" "halfadder" 3 13, 4 1 0, S_0x56122b07fc70;
|
||||
.timescale 0 0;
|
||||
.port_info 0 /INPUT 1 "A";
|
||||
.port_info 1 /INPUT 1 "B";
|
||||
.port_info 2 /OUTPUT 1 "S";
|
||||
.port_info 3 /OUTPUT 1 "C";
|
||||
L_0x557fe3a3bf40 .functor XOR 1, L_0x557fe3a3be10, v0x557fe3a3bb40_0, C4<0>, C4<0>;
|
||||
L_0x557fe3a3c080 .functor AND 1, L_0x557fe3a3be10, v0x557fe3a3bb40_0, C4<1>, C4<1>;
|
||||
v0x557fe3a3aee0_0 .net "A", 0 0, L_0x557fe3a3be10; alias, 1 drivers
|
||||
v0x557fe3a3afb0_0 .net "B", 0 0, v0x557fe3a3bb40_0; alias, 1 drivers
|
||||
v0x557fe3a3b050_0 .net "C", 0 0, L_0x557fe3a3c080; alias, 1 drivers
|
||||
v0x557fe3a3b120_0 .net "S", 0 0, L_0x557fe3a3bf40; alias, 1 drivers
|
||||
.scope S_0x557fe3a27ae0;
|
||||
L_0x56122b093f40 .functor XOR 1, L_0x56122b093e10, v0x56122b093b40_0, C4<0>, C4<0>;
|
||||
L_0x56122b094080 .functor AND 1, L_0x56122b093e10, v0x56122b093b40_0, C4<1>, C4<1>;
|
||||
v0x56122b092ee0_0 .net "A", 0 0, L_0x56122b093e10; alias, 1 drivers
|
||||
v0x56122b092fb0_0 .net "B", 0 0, v0x56122b093b40_0; alias, 1 drivers
|
||||
v0x56122b093050_0 .net "C", 0 0, L_0x56122b094080; alias, 1 drivers
|
||||
v0x56122b093120_0 .net "S", 0 0, L_0x56122b093f40; alias, 1 drivers
|
||||
.scope S_0x56122b07fae0;
|
||||
T_0 ;
|
||||
%vpi_call 2 15 "$dumpfile", "fdmp.vcd" {0 0 0};
|
||||
%vpi_call 2 16 "$dumpvars" {0 0 0};
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3b940_0, 0, 1;
|
||||
%store/vec4 v0x56122b093940_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3ba30_0, 0, 1;
|
||||
%store/vec4 v0x56122b093a30_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3bb40_0, 0, 1;
|
||||
%store/vec4 v0x56122b093b40_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3b940_0, 0, 1;
|
||||
%store/vec4 v0x56122b093940_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3ba30_0, 0, 1;
|
||||
%store/vec4 v0x56122b093a30_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3bb40_0, 0, 1;
|
||||
%store/vec4 v0x56122b093b40_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3b940_0, 0, 1;
|
||||
%store/vec4 v0x56122b093940_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3ba30_0, 0, 1;
|
||||
%store/vec4 v0x56122b093a30_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3bb40_0, 0, 1;
|
||||
%store/vec4 v0x56122b093b40_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3b940_0, 0, 1;
|
||||
%store/vec4 v0x56122b093940_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3ba30_0, 0, 1;
|
||||
%store/vec4 v0x56122b093a30_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3bb40_0, 0, 1;
|
||||
%store/vec4 v0x56122b093b40_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3b940_0, 0, 1;
|
||||
%store/vec4 v0x56122b093940_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3ba30_0, 0, 1;
|
||||
%store/vec4 v0x56122b093a30_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3bb40_0, 0, 1;
|
||||
%store/vec4 v0x56122b093b40_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3b940_0, 0, 1;
|
||||
%store/vec4 v0x56122b093940_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3ba30_0, 0, 1;
|
||||
%store/vec4 v0x56122b093a30_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3bb40_0, 0, 1;
|
||||
%store/vec4 v0x56122b093b40_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3b940_0, 0, 1;
|
||||
%store/vec4 v0x56122b093940_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3ba30_0, 0, 1;
|
||||
%store/vec4 v0x56122b093a30_0, 0, 1;
|
||||
%pushi/vec4 0, 0, 1;
|
||||
%store/vec4 v0x557fe3a3bb40_0, 0, 1;
|
||||
%store/vec4 v0x56122b093b40_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3b940_0, 0, 1;
|
||||
%store/vec4 v0x56122b093940_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3ba30_0, 0, 1;
|
||||
%store/vec4 v0x56122b093a30_0, 0, 1;
|
||||
%pushi/vec4 1, 0, 1;
|
||||
%store/vec4 v0x557fe3a3bb40_0, 0, 1;
|
||||
%store/vec4 v0x56122b093b40_0, 0, 1;
|
||||
%delay 10, 0;
|
||||
%vpi_call 2 25 "$display", v0x557fe3a3bc30_0 {0 0 0};
|
||||
%vpi_call 2 26 "$display", v0x557fe3a3bd20_0 {0 0 0};
|
||||
%vpi_call 2 25 "$display", v0x56122b093c30_0 {0 0 0};
|
||||
%vpi_call 2 26 "$display", v0x56122b093d20_0 {0 0 0};
|
||||
%end;
|
||||
.thread T_0;
|
||||
# The file index is used to find the file name in the following table.
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
module fulladder (
|
||||
input A,
|
||||
input B,
|
||||
input Cin,
|
||||
output S,
|
||||
output Cout
|
||||
);
|
||||
wire AxB, AnB1, AnB2;
|
||||
|
||||
|
||||
halfadder h1 (A,B,AxB,AnB2);
|
||||
|
||||
halfadder h2 (AxB,Cin,S,AnB1);
|
||||
|
||||
or o1 (Cout,AnB1,AnB2);
|
||||
endmodule
|
||||
@@ -3,7 +3,7 @@ module fulladdertb ();
|
||||
reg r1, r2, r3;
|
||||
wire w1, w2;
|
||||
|
||||
FullAdder uut(
|
||||
fulladder uut(
|
||||
.A(r1),
|
||||
.B(r2),
|
||||
.Cin(r3),
|
||||
|
||||
Reference in new issue
Block a user