verilog
This commit is contained in:
		
							
								
								
									
										19
									
								
								labs/lab2/src/BitM.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								labs/lab2/src/BitM.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| module BitM( | ||||
|   input A, | ||||
|   input B, | ||||
|   output AlB, | ||||
|   output AeB, | ||||
|   output AgB   | ||||
| ); | ||||
|  | ||||
|     wire An, Bn; | ||||
|  | ||||
|     not n1 (An, A); | ||||
|     not n2 (Bn, B); | ||||
|  | ||||
|     and a1 (AlB, An, B); | ||||
|     and a2 (AgB, Bn, A); | ||||
|  | ||||
|     nor nor1 (AeB, AlB, AgB); | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										26
									
								
								labs/lab2/src/BitM_tb.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								labs/lab2/src/BitM_tb.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| module BitM_tb(); | ||||
|  | ||||
| reg r1, r2; | ||||
| wire w1, w2, w3; | ||||
|  | ||||
| BitM uut( | ||||
|     .A(r1), | ||||
|     .B(r2), | ||||
|     .AlB(w1), | ||||
|     .AeB(w2), | ||||
|     .AgB(w3) | ||||
| ); | ||||
|  | ||||
| initial begin | ||||
|     $dumpfile("bdmp.vcd"); | ||||
|     $dumpvars; | ||||
|     r1 = 0; r2 = 0; #10 | ||||
|     r1 = 0; r2 = 1; #10 | ||||
|     r1 = 1; r2 = 0; #10 | ||||
|     r1 = 1; r2 = 1; #10 | ||||
|     $display(w1); | ||||
|     $display(w2); | ||||
|     $display(w3); | ||||
| end | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										58
									
								
								labs/lab2/src/bdmp.vcd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								labs/lab2/src/bdmp.vcd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| $date | ||||
| 	Thu Apr 11 07:50:26 2024 | ||||
| $end | ||||
| $version | ||||
| 	Icarus Verilog | ||||
| $end | ||||
| $timescale | ||||
| 	1s | ||||
| $end | ||||
| $scope module BitM_tb $end | ||||
| $var wire 1 ! w3 $end | ||||
| $var wire 1 " w2 $end | ||||
| $var wire 1 # w1 $end | ||||
| $var reg 1 $ r1 $end | ||||
| $var reg 1 % r2 $end | ||||
| $scope module uut $end | ||||
| $var wire 1 $ A $end | ||||
| $var wire 1 " AeB $end | ||||
| $var wire 1 ! AgB $end | ||||
| $var wire 1 # AlB $end | ||||
| $var wire 1 & An $end | ||||
| $var wire 1 % B $end | ||||
| $var wire 1 ' Bn $end | ||||
| $upscope $end | ||||
| $upscope $end | ||||
| $enddefinitions $end | ||||
| $comment Show the parameter values. $end | ||||
| $dumpall | ||||
| $end | ||||
| #0 | ||||
| $dumpvars | ||||
| 1' | ||||
| 1& | ||||
| 0% | ||||
| 0$ | ||||
| 0# | ||||
| 1" | ||||
| 0! | ||||
| $end | ||||
| #10 | ||||
| 0" | ||||
| 0' | ||||
| 1# | ||||
| 1% | ||||
| #20 | ||||
| 1! | ||||
| 0" | ||||
| 1' | ||||
| 0# | ||||
| 0& | ||||
| 0% | ||||
| 1$ | ||||
| #30 | ||||
| 1" | ||||
| 0! | ||||
| 0' | ||||
| 1% | ||||
| #40 | ||||
							
								
								
									
										70
									
								
								labs/lab2/src/blab2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								labs/lab2/src/blab2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| #! /c/Source/iverilog-install/bin/vvp | ||||
| :ivl_version "12.0 (devel)" "(s20150603-1539-g2693dd32b)"; | ||||
| :ivl_delay_selection "TYPICAL"; | ||||
| :vpi_time_precision + 0; | ||||
| :vpi_module "C:\iverilog\lib\ivl\system.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\vhdl_sys.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\vhdl_textio.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\v2005_math.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\va_math.vpi"; | ||||
| S_000002114102cad0 .scope module, "BitM_tb" "BitM_tb" 2 1; | ||||
|  .timescale 0 0; | ||||
| v0000021140f146e0_0 .var "r1", 0 0; | ||||
| v0000021140f14780_0 .var "r2", 0 0; | ||||
| v0000021140f14820_0 .net "w1", 0 0, L_0000021140ee32f0;  1 drivers | ||||
| v0000021140f148c0_0 .net "w2", 0 0, L_0000021140f14f60;  1 drivers | ||||
| v0000021140f14960_0 .net "w3", 0 0, L_0000021140f14de0;  1 drivers | ||||
| S_000002114102cc60 .scope module, "uut" "BitM" 2 6, 3 1 0, S_000002114102cad0; | ||||
|  .timescale 0 0; | ||||
|     .port_info 0 /INPUT 1 "A"; | ||||
|     .port_info 1 /INPUT 1 "B"; | ||||
|     .port_info 2 /OUTPUT 1 "AlB"; | ||||
|     .port_info 3 /OUTPUT 1 "AeB"; | ||||
|     .port_info 4 /OUTPUT 1 "AgB"; | ||||
| L_000002114102af60 .functor NOT 1, v0000021140f146e0_0, C4<0>, C4<0>, C4<0>; | ||||
| L_0000021140ee3190 .functor NOT 1, v0000021140f14780_0, C4<0>, C4<0>, C4<0>; | ||||
| L_0000021140ee32f0 .functor AND 1, L_000002114102af60, v0000021140f14780_0, C4<1>, C4<1>; | ||||
| L_0000021140f14de0 .functor AND 1, L_0000021140ee3190, v0000021140f146e0_0, C4<1>, C4<1>; | ||||
| L_0000021140f14f60 .functor NOR 1, L_0000021140ee32f0, L_0000021140f14de0, C4<0>, C4<0>; | ||||
| v0000021141028fc0_0 .net "A", 0 0, v0000021140f146e0_0;  1 drivers | ||||
| v0000021140ee2ee0_0 .net "AeB", 0 0, L_0000021140f14f60;  alias, 1 drivers | ||||
| v000002114102aec0_0 .net "AgB", 0 0, L_0000021140f14de0;  alias, 1 drivers | ||||
| v000002114102cdf0_0 .net "AlB", 0 0, L_0000021140ee32f0;  alias, 1 drivers | ||||
| v000002114102ce90_0 .net "An", 0 0, L_000002114102af60;  1 drivers | ||||
| v0000021140f145a0_0 .net "B", 0 0, v0000021140f14780_0;  1 drivers | ||||
| v0000021140f14640_0 .net "Bn", 0 0, L_0000021140ee3190;  1 drivers | ||||
|     .scope S_000002114102cad0; | ||||
| T_0 ; | ||||
|     %vpi_call 2 15 "$dumpfile", "bdmp.vcd" {0 0 0}; | ||||
|     %vpi_call 2 16 "$dumpvars" {0 0 0}; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v0000021140f146e0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v0000021140f14780_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v0000021140f146e0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v0000021140f14780_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v0000021140f146e0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v0000021140f14780_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v0000021140f146e0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v0000021140f14780_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %vpi_call 2 21 "$display", v0000021140f14820_0 {0 0 0}; | ||||
|     %vpi_call 2 22 "$display", v0000021140f148c0_0 {0 0 0}; | ||||
|     %vpi_call 2 23 "$display", v0000021140f14960_0 {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>"; | ||||
|     "BitM_tb.v"; | ||||
|     "BitM.v"; | ||||
							
								
								
									
										43
									
								
								labs/lab2/src/dmp.vcd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								labs/lab2/src/dmp.vcd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| $date | ||||
| 	Thu Apr 11 06:36:34 2024 | ||||
| $end | ||||
| $version | ||||
| 	Icarus Verilog | ||||
| $end | ||||
| $timescale | ||||
| 	1s | ||||
| $end | ||||
| $scope module tb $end | ||||
| $var wire 1 ! w2 $end | ||||
| $var wire 1 " w1 $end | ||||
| $var reg 1 # r1 $end | ||||
| $var reg 1 $ r2 $end | ||||
| $scope module uut $end | ||||
| $var wire 1 # A $end | ||||
| $var wire 1 $ B $end | ||||
| $var wire 1 ! C $end | ||||
| $var wire 1 " S $end | ||||
| $upscope $end | ||||
| $upscope $end | ||||
| $enddefinitions $end | ||||
| $comment Show the parameter values. $end | ||||
| $dumpall | ||||
| $end | ||||
| #0 | ||||
| $dumpvars | ||||
| 0$ | ||||
| 0# | ||||
| 0" | ||||
| 0! | ||||
| $end | ||||
| #20 | ||||
| 1" | ||||
| 1# | ||||
| #40 | ||||
| 1$ | ||||
| 0# | ||||
| #60 | ||||
| 0" | ||||
| 1! | ||||
| 1# | ||||
| #80 | ||||
							
								
								
									
										75
									
								
								labs/lab2/src/fdmp.vcd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								labs/lab2/src/fdmp.vcd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| $date | ||||
| 	Thu Apr 11 07:39:27 2024 | ||||
| $end | ||||
| $version | ||||
| 	Icarus Verilog | ||||
| $end | ||||
| $timescale | ||||
| 	1s | ||||
| $end | ||||
| $scope module ftb $end | ||||
| $var wire 1 ! w2 $end | ||||
| $var wire 1 " w1 $end | ||||
| $var reg 1 # r1 $end | ||||
| $var reg 1 $ r2 $end | ||||
| $var reg 1 % r3 $end | ||||
| $scope module uut $end | ||||
| $var wire 1 # A $end | ||||
| $var wire 1 & AB $end | ||||
| $var wire 1 ' ABCin $end | ||||
| $var wire 1 ( AaB $end | ||||
| $var wire 1 $ B $end | ||||
| $var wire 1 % Cin $end | ||||
| $var wire 1 ! Cout $end | ||||
| $var wire 1 " S $end | ||||
| $upscope $end | ||||
| $upscope $end | ||||
| $enddefinitions $end | ||||
| $comment Show the parameter values. $end | ||||
| $dumpall | ||||
| $end | ||||
| #0 | ||||
| $dumpvars | ||||
| 0( | ||||
| 0' | ||||
| 0& | ||||
| 0% | ||||
| 0$ | ||||
| 0# | ||||
| 0" | ||||
| 0! | ||||
| $end | ||||
| #10 | ||||
| 1" | ||||
| 1% | ||||
| #20 | ||||
| 1& | ||||
| 0% | ||||
| 1$ | ||||
| #30 | ||||
| 1! | ||||
| 0" | ||||
| 1' | ||||
| 1% | ||||
| #40 | ||||
| 0! | ||||
| 1" | ||||
| 0' | ||||
| 0% | ||||
| 0$ | ||||
| 1# | ||||
| #50 | ||||
| 1! | ||||
| 0" | ||||
| 1' | ||||
| 1% | ||||
| #60 | ||||
| 0' | ||||
| 0& | ||||
| 1( | ||||
| 0% | ||||
| 1$ | ||||
| #70 | ||||
| 1" | ||||
| 1% | ||||
| #80 | ||||
							
								
								
									
										106
									
								
								labs/lab2/src/flab2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								labs/lab2/src/flab2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| #! /c/Source/iverilog-install/bin/vvp | ||||
| :ivl_version "12.0 (devel)" "(s20150603-1539-g2693dd32b)"; | ||||
| :ivl_delay_selection "TYPICAL"; | ||||
| :vpi_time_precision + 0; | ||||
| :vpi_module "C:\iverilog\lib\ivl\system.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\vhdl_sys.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\vhdl_textio.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\v2005_math.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\va_math.vpi"; | ||||
| S_000001da0354ad70 .scope module, "ftb" "ftb" 2 1; | ||||
|  .timescale 0 0; | ||||
| v000001da035dc840_0 .var "r1", 0 0; | ||||
| v000001da035dc8e0_0 .var "r2", 0 0; | ||||
| v000001da035dc980_0 .var "r3", 0 0; | ||||
| v000001da035dca20_0 .net "w1", 0 0, L_000001da03594080;  1 drivers | ||||
| v000001da035935f0_0 .net "w2", 0 0, L_000001da03594470;  1 drivers | ||||
| S_000001da0354e9e0 .scope module, "uut" "fullAdder" 2 6, 3 1 0, S_000001da0354ad70; | ||||
|  .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_000001da03594010 .functor XOR 1, v000001da035dc840_0, v000001da035dc8e0_0, C4<0>, C4<0>; | ||||
| L_000001da03594080 .functor XOR 1, L_000001da03594010, v000001da035dc980_0, C4<0>, C4<0>; | ||||
| L_000001da03593e50 .functor AND 1, L_000001da03594010, v000001da035dc980_0, C4<1>, C4<1>; | ||||
| L_000001da035940f0 .functor AND 1, v000001da035dc840_0, v000001da035dc8e0_0, C4<1>, C4<1>; | ||||
| L_000001da03594470 .functor OR 1, L_000001da03593e50, L_000001da035940f0, C4<0>, C4<0>; | ||||
| v000001da03563310_0 .net "A", 0 0, v000001da035dc840_0;  1 drivers | ||||
| v000001da03562ee0_0 .net "AB", 0 0, L_000001da03594010;  1 drivers | ||||
| v000001da0354af00_0 .net "ABCin", 0 0, L_000001da03593e50;  1 drivers | ||||
| v000001da03549850_0 .net "AaB", 0 0, L_000001da035940f0;  1 drivers | ||||
| v000001da0354eb70_0 .net "B", 0 0, v000001da035dc8e0_0;  1 drivers | ||||
| v000001da0354ec10_0 .net "Cin", 0 0, v000001da035dc980_0;  1 drivers | ||||
| v000001da0354ecb0_0 .net "Cout", 0 0, L_000001da03594470;  alias, 1 drivers | ||||
| v000001da0354ed50_0 .net "S", 0 0, L_000001da03594080;  alias, 1 drivers | ||||
|     .scope S_000001da0354ad70; | ||||
| 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 v000001da035dc840_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc8e0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc980_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc840_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc8e0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc980_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc840_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc8e0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc980_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc840_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc8e0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc980_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc840_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc8e0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc980_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc840_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc8e0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc980_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc840_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc8e0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001da035dc980_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc840_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc8e0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001da035dc980_0, 0, 1; | ||||
|     %delay 10, 0; | ||||
|     %vpi_call 2 25 "$display", v000001da035dca20_0 {0 0 0}; | ||||
|     %vpi_call 2 26 "$display", v000001da035935f0_0 {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>"; | ||||
|     "ftb.v"; | ||||
|     "fullAdder.v"; | ||||
							
								
								
									
										29
									
								
								labs/lab2/src/ftb.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								labs/lab2/src/ftb.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| module ftb (); | ||||
|  | ||||
| reg r1, r2, r3; | ||||
| wire w1, w2; | ||||
|  | ||||
| fullAdder uut( | ||||
|     .A(r1), | ||||
|     .B(r2), | ||||
|     .Cin(r3), | ||||
|     .S(w1), | ||||
|     .Cout(w2) | ||||
| ); | ||||
|  | ||||
| initial begin | ||||
|     $dumpfile("fdmp.vcd"); | ||||
|     $dumpvars; | ||||
|     r1 = 0; r2 = 0; r3 = 0; #10 | ||||
|     r1 = 0; r2 = 0; r3 = 1; #10 | ||||
|     r1 = 0; r2 = 1; r3 = 0; #10 | ||||
|     r1 = 0; r2 = 1; r3 = 1; #10 | ||||
|     r1 = 1; r2 = 0; r3 = 0; #10 | ||||
|     r1 = 1; r2 = 0; r3 = 1; #10 | ||||
|     r1 = 1; r2 = 1; r3 = 0; #10 | ||||
|     r1 = 1; r2 = 1; r3 = 1; #10 | ||||
|     $display(w1); | ||||
|     $display(w2); | ||||
| end | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										20
									
								
								labs/lab2/src/fullAdder.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								labs/lab2/src/fullAdder.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| module fullAdder( | ||||
|   input A, | ||||
|   input B, | ||||
|   input Cin, | ||||
|   output S, | ||||
|   output Cout   | ||||
| ); | ||||
|  | ||||
|     wire AB; | ||||
|     wire ABCin, AaB; | ||||
|  | ||||
|     xor (AB, A, B); | ||||
|     xor (S, AB, Cin); | ||||
|  | ||||
|     and (ABCin, AB, Cin); | ||||
|     and (AaB, A, B); | ||||
|  | ||||
|     or (Cout, ABCin, AaB); | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										11
									
								
								labs/lab2/src/halfAdder.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								labs/lab2/src/halfAdder.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| module halfAdder( | ||||
|   input A, | ||||
|   input B, | ||||
|   output S, | ||||
|   output C   | ||||
| ); | ||||
|  | ||||
|     xor (S, A, B); | ||||
|     and (C, A, B); | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										61
									
								
								labs/lab2/src/lab2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								labs/lab2/src/lab2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| #! /c/Source/iverilog-install/bin/vvp | ||||
| :ivl_version "12.0 (devel)" "(s20150603-1539-g2693dd32b)"; | ||||
| :ivl_delay_selection "TYPICAL"; | ||||
| :vpi_time_precision + 0; | ||||
| :vpi_module "C:\iverilog\lib\ivl\system.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\vhdl_sys.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\vhdl_textio.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\v2005_math.vpi"; | ||||
| :vpi_module "C:\iverilog\lib\ivl\va_math.vpi"; | ||||
| S_000001b4458eec80 .scope module, "tb" "tb" 2 1; | ||||
|  .timescale 0 0; | ||||
| v000001b4458ec1d0_0 .var "r1", 0 0; | ||||
| v000001b4458ec270_0 .var "r2", 0 0; | ||||
| v000001b4458ec310_0 .net "w1", 0 0, L_000001b445783190;  1 drivers | ||||
| v000001b4458ec3b0_0 .net "w2", 0 0, L_000001b4457832f0;  1 drivers | ||||
| S_000001b4458eee10 .scope module, "uut" "halfAdder" 2 6, 3 1 0, S_000001b4458eec80; | ||||
|  .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_000001b445783190 .functor XOR 1, v000001b4458ec1d0_0, v000001b4458ec270_0, C4<0>, C4<0>; | ||||
| L_000001b4457832f0 .functor AND 1, v000001b4458ec1d0_0, v000001b4458ec270_0, C4<1>, C4<1>; | ||||
| v000001b4458ebff0_0 .net "A", 0 0, v000001b4458ec1d0_0;  1 drivers | ||||
| v000001b445782ee0_0 .net "B", 0 0, v000001b4458ec270_0;  1 drivers | ||||
| v000001b4458ec090_0 .net "C", 0 0, L_000001b4457832f0;  alias, 1 drivers | ||||
| v000001b4458ec130_0 .net "S", 0 0, L_000001b445783190;  alias, 1 drivers | ||||
|     .scope S_000001b4458eec80; | ||||
| T_0 ; | ||||
|     %vpi_call 2 14 "$dumpfile", "dmp.vcd" {0 0 0}; | ||||
|     %vpi_call 2 15 "$dumpvars" {0 0 0}; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001b4458ec1d0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001b4458ec270_0, 0, 1; | ||||
|     %delay 20, 0; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001b4458ec1d0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001b4458ec270_0, 0, 1; | ||||
|     %delay 20, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001b4458ec1d0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001b4458ec270_0, 0, 1; | ||||
|     %delay 20, 0; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001b4458ec1d0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001b4458ec270_0, 0, 1; | ||||
|     %delay 20, 0; | ||||
|     %vpi_call 2 20 "$display", v000001b4458ec310_0 {0 0 0}; | ||||
|     %vpi_call 2 21 "$display", v000001b4458ec3b0_0 {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>"; | ||||
|     "tb.v"; | ||||
|     "halfAdder.v"; | ||||
							
								
								
									
										24
									
								
								labs/lab2/src/tb.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								labs/lab2/src/tb.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| module tb(); | ||||
|  | ||||
| reg r1, r2; | ||||
| wire w1, w2; | ||||
|  | ||||
| halfAdder uut( | ||||
|     .A(r1), | ||||
|     .B(r2), | ||||
|     .S(w1), | ||||
|     .C(w2) | ||||
| ); | ||||
|  | ||||
| initial begin | ||||
|     $dumpfile("dmp.vcd"); | ||||
|     $dumpvars; | ||||
|     r1 = 0; r2 = 0; #20 | ||||
|     r1 = 1; r2 = 0; #20 | ||||
|     r1 = 0; r2 = 1; #20 | ||||
|     r1 = 1; r2 = 1; #20 | ||||
|     $display(w1); | ||||
|     $display(w2); | ||||
| end | ||||
|  | ||||
| endmodule | ||||
		Reference in New Issue
	
	Block a user