verilog
This commit is contained in:
		
							
								
								
									
										77
									
								
								labs/lab2_prep/src/dmp.vcd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								labs/lab2_prep/src/dmp.vcd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| $date | ||||
| 	Thu Apr 11 06:20:47 2024 | ||||
| $end | ||||
| $version | ||||
| 	Icarus Verilog | ||||
| $end | ||||
| $timescale | ||||
| 	1s | ||||
| $end | ||||
| $scope module tb $end | ||||
| $var wire 1 ! w1 $end | ||||
| $var reg 1 " r1 $end | ||||
| $var reg 1 # r2 $end | ||||
| $var reg 1 $ r3 $end | ||||
| $var reg 1 % r4 $end | ||||
| $scope module uut $end | ||||
| $var wire 1 " A $end | ||||
| $var wire 1 & AD $end | ||||
| $var wire 1 ' An $end | ||||
| $var wire 1 ( AnBC $end | ||||
| $var wire 1 # B $end | ||||
| $var wire 1 ) Bn $end | ||||
| $var wire 1 $ C $end | ||||
| $var wire 1 * Cn $end | ||||
| $var wire 1 + CnD $end | ||||
| $var wire 1 % D $end | ||||
| $var wire 1 ! F $end | ||||
| $upscope $end | ||||
| $upscope $end | ||||
| $enddefinitions $end | ||||
| $comment Show the parameter values. $end | ||||
| $dumpall | ||||
| $end | ||||
| #0 | ||||
| $dumpvars | ||||
| 0+ | ||||
| 1* | ||||
| 1) | ||||
| 0( | ||||
| 1' | ||||
| 0& | ||||
| 0% | ||||
| 0$ | ||||
| 0# | ||||
| 0" | ||||
| 1! | ||||
| $end | ||||
| #50 | ||||
| 1+ | ||||
| 1% | ||||
| #100 | ||||
| 0+ | ||||
| 0* | ||||
| 0% | ||||
| 1$ | ||||
| #150 | ||||
| 1% | ||||
| #200 | ||||
| 0! | ||||
| 1* | ||||
| 0) | ||||
| 0% | ||||
| 0$ | ||||
| 1# | ||||
| #250 | ||||
| 1! | ||||
| 1+ | ||||
| 1% | ||||
| #300 | ||||
| 0+ | ||||
| 1( | ||||
| 0* | ||||
| 0% | ||||
| 1$ | ||||
| #350 | ||||
| 1% | ||||
| #400 | ||||
							
								
								
									
										126
									
								
								labs/lab2_prep/src/lab
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								labs/lab2_prep/src/lab
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | ||||
| #! /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_000001e2946aad20 .scope module, "tb" "tb" 2 1; | ||||
|  .timescale 0 0; | ||||
| v000001e29475e7f0_0 .var "r1", 0 0; | ||||
| v000001e29475e6b0_0 .var "r2", 0 0; | ||||
| v000001e29475ec50_0 .var "r3", 0 0; | ||||
| v000001e29475e430_0 .var "r4", 0 0; | ||||
| v000001e29475ecf0_0 .net "w1", 0 0, L_000001e29475f0f0;  1 drivers | ||||
| S_000001e294717fc0 .scope module, "uut" "lab2" 2 6, 3 1 0, S_000001e2946aad20; | ||||
|  .timescale 0 0; | ||||
|     .port_info 0 /INPUT 1 "A"; | ||||
|     .port_info 1 /INPUT 1 "B"; | ||||
|     .port_info 2 /INPUT 1 "C"; | ||||
|     .port_info 3 /INPUT 1 "D"; | ||||
|     .port_info 4 /OUTPUT 1 "F"; | ||||
| L_000001e2947183d0 .functor NOT 1, v000001e29475e7f0_0, C4<0>, C4<0>, C4<0>; | ||||
| L_000001e2946e2bc0 .functor AND 1, L_000001e2947183d0, v000001e29475e6b0_0, v000001e29475ec50_0, C4<1>; | ||||
| L_000001e2946e2d20 .functor NOT 1, v000001e29475e6b0_0, C4<0>, C4<0>, C4<0>; | ||||
| L_000001e29475f390 .functor AND 1, v000001e29475e7f0_0, v000001e29475e430_0, C4<1>, C4<1>; | ||||
| L_000001e29475f4e0 .functor NOT 1, v000001e29475ec50_0, C4<0>, C4<0>, C4<0>; | ||||
| L_000001e29475f780 .functor AND 1, L_000001e29475f4e0, v000001e29475e430_0, C4<1>, C4<1>; | ||||
| L_000001e29475f0f0 .functor OR 1, L_000001e2946e2bc0, L_000001e2946e2d20, L_000001e29475f390, L_000001e29475f780; | ||||
| v000001e2946e2a40_0 .net "A", 0 0, v000001e29475e7f0_0;  1 drivers | ||||
| v000001e2946e28d0_0 .net "AD", 0 0, L_000001e29475f390;  1 drivers | ||||
| v000001e2946a9e10_0 .net "An", 0 0, L_000001e2947183d0;  1 drivers | ||||
| v000001e2946aaeb0_0 .net "AnBC", 0 0, L_000001e2946e2bc0;  1 drivers | ||||
| v000001e294718150_0 .net "B", 0 0, v000001e29475e6b0_0;  1 drivers | ||||
| v000001e2947181f0_0 .net "Bn", 0 0, L_000001e2946e2d20;  1 drivers | ||||
| v000001e294718290_0 .net "C", 0 0, v000001e29475ec50_0;  1 drivers | ||||
| v000001e294718330_0 .net "Cn", 0 0, L_000001e29475f4e0;  1 drivers | ||||
| v000001e294714e50_0 .net "CnD", 0 0, L_000001e29475f780;  1 drivers | ||||
| v000001e294714ef0_0 .net "D", 0 0, v000001e29475e430_0;  1 drivers | ||||
| v000001e29475e390_0 .net "F", 0 0, L_000001e29475f0f0;  alias, 1 drivers | ||||
|     .scope S_000001e2946aad20; | ||||
| T_0 ; | ||||
|     %vpi_call 2 17 "$dumpfile", "dmp.vcd" {0 0 0}; | ||||
|     %vpi_call 2 18 "$dumpvars" {0 0 0}; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e7f0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e6b0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475ec50_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e430_0, 0, 1; | ||||
|     %delay 50, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e7f0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e6b0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475ec50_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475e430_0, 0, 1; | ||||
|     %delay 50, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e7f0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e6b0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475ec50_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e430_0, 0, 1; | ||||
|     %delay 50, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e7f0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e6b0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475ec50_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475e430_0, 0, 1; | ||||
|     %delay 50, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e7f0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475e6b0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475ec50_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e430_0, 0, 1; | ||||
|     %delay 50, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e7f0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475e6b0_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475ec50_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475e430_0, 0, 1; | ||||
|     %delay 50, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e7f0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475e6b0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475ec50_0, 0, 1; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e430_0, 0, 1; | ||||
|     %delay 50, 0; | ||||
|     %pushi/vec4 0, 0, 1; | ||||
|     %store/vec4 v000001e29475e7f0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475e6b0_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475ec50_0, 0, 1; | ||||
|     %pushi/vec4 1, 0, 1; | ||||
|     %store/vec4 v000001e29475e430_0, 0, 1; | ||||
|     %delay 50, 0; | ||||
|     %vpi_call 2 27 "$display", v000001e29475ecf0_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"; | ||||
|     "lab2.v"; | ||||
							
								
								
									
										43
									
								
								labs/lab2_prep/src/lab2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								labs/lab2_prep/src/lab2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| #! /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_0000016d6fd625e0 .scope module, "lab2" "lab2" 2 1; | ||||
|  .timescale 0 0; | ||||
|     .port_info 0 /INPUT 1 "A"; | ||||
|     .port_info 1 /INPUT 1 "B"; | ||||
|     .port_info 2 /INPUT 1 "C"; | ||||
|     .port_info 3 /INPUT 1 "D"; | ||||
|     .port_info 4 /OUTPUT 1 "F"; | ||||
| o0000016d6fd96f98 .functor BUFZ 1, C4<z>; HiZ drive | ||||
| L_0000016d6fd62f70 .functor NOT 1, o0000016d6fd96f98, C4<0>, C4<0>, C4<0>; | ||||
| o0000016d6fd97058 .functor BUFZ 1, C4<z>; HiZ drive | ||||
| o0000016d6fd970b8 .functor BUFZ 1, C4<z>; HiZ drive | ||||
| L_0000016d6fedb7d0 .functor AND 1, L_0000016d6fd62f70, o0000016d6fd97058, o0000016d6fd970b8, C4<1>; | ||||
| L_0000016d6fedb840 .functor NOT 1, o0000016d6fd97058, C4<0>, C4<0>, C4<0>; | ||||
| o0000016d6fd97148 .functor BUFZ 1, C4<z>; HiZ drive | ||||
| L_0000016d6fedb8b0 .functor AND 1, o0000016d6fd96f98, o0000016d6fd97148, C4<1>, C4<1>; | ||||
| L_0000016d6fedb920 .functor NOT 1, o0000016d6fd970b8, C4<0>, C4<0>, C4<0>; | ||||
| L_0000016d6fedb990 .functor AND 1, L_0000016d6fedb920, o0000016d6fd97148, C4<1>, C4<1>; | ||||
| L_0000016d6fedba00 .functor OR 1, L_0000016d6fedb7d0, L_0000016d6fedb840, L_0000016d6fedb8b0, L_0000016d6fedb990; | ||||
| v0000016d6fd62b30_0 .net "A", 0 0, o0000016d6fd96f98;  0 drivers | ||||
| v0000016d6fd62d50_0 .net "AD", 0 0, L_0000016d6fedb8b0;  1 drivers | ||||
| v0000016d6fd62770_0 .net "An", 0 0, L_0000016d6fd62f70;  1 drivers | ||||
| v0000016d6fd62810_0 .net "AnBC", 0 0, L_0000016d6fedb7d0;  1 drivers | ||||
| v0000016d6fd628b0_0 .net "B", 0 0, o0000016d6fd97058;  0 drivers | ||||
| v0000016d6fededb0_0 .net "Bn", 0 0, L_0000016d6fedb840;  1 drivers | ||||
| v0000016d6fedee50_0 .net "C", 0 0, o0000016d6fd970b8;  0 drivers | ||||
| v0000016d6fedeef0_0 .net "Cn", 0 0, L_0000016d6fedb920;  1 drivers | ||||
| v0000016d6fedb600_0 .net "CnD", 0 0, L_0000016d6fedb990;  1 drivers | ||||
| v0000016d6fedb730_0 .net "D", 0 0, o0000016d6fd97148;  0 drivers | ||||
| v0000016d6fd90c30_0 .net "F", 0 0, L_0000016d6fedba00;  1 drivers | ||||
| # The file index is used to find the file name in the following table. | ||||
| :file_names 3; | ||||
|     "N/A"; | ||||
|     "<interactive>"; | ||||
|     "lab2.v"; | ||||
							
								
								
									
										24
									
								
								labs/lab2_prep/src/lab2.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								labs/lab2_prep/src/lab2.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| module lab2( | ||||
|      input A, | ||||
|      input B, | ||||
|      input C, | ||||
|      input D, | ||||
|      output F | ||||
|      ); | ||||
|  | ||||
|      wire An, Bn, Cn; | ||||
|      wire AnBC, AD, CnD; | ||||
|  | ||||
|      not n1 (An, A); | ||||
|      and (AnBC, An, B, C); | ||||
|  | ||||
|      not (Bn, B); | ||||
|      and (AD, A, D); | ||||
|  | ||||
|      not (Cn, C); | ||||
|      and (CnD, Cn, D); | ||||
|  | ||||
|      or (F, AnBC, Bn, AD, CnD); | ||||
|  | ||||
|  | ||||
| endmodule | ||||
							
								
								
									
										43
									
								
								labs/lab2_prep/src/labwave
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								labs/lab2_prep/src/labwave
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| #! /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_000001e0df4625e0 .scope module, "f_lab2" "f_lab2" 2 1; | ||||
|  .timescale 0 0; | ||||
|     .port_info 0 /INPUT 1 "A"; | ||||
|     .port_info 1 /INPUT 1 "B"; | ||||
|     .port_info 2 /INPUT 1 "C"; | ||||
|     .port_info 3 /INPUT 1 "D"; | ||||
|     .port_info 4 /OUTPUT 1 "F"; | ||||
| o000001e0df496fd8 .functor BUFZ 1, C4<z>; HiZ drive | ||||
| L_000001e0df462f70 .functor NOT 1, o000001e0df496fd8, C4<0>, C4<0>, C4<0>; | ||||
| o000001e0df497098 .functor BUFZ 1, C4<z>; HiZ drive | ||||
| o000001e0df4970f8 .functor BUFZ 1, C4<z>; HiZ drive | ||||
| L_000001e0df64aa10 .functor AND 1, L_000001e0df462f70, o000001e0df497098, o000001e0df4970f8, C4<1>; | ||||
| L_000001e0df64aa80 .functor NOT 1, o000001e0df497098, C4<0>, C4<0>, C4<0>; | ||||
| o000001e0df497188 .functor BUFZ 1, C4<z>; HiZ drive | ||||
| L_000001e0df64aaf0 .functor AND 1, o000001e0df496fd8, o000001e0df497188, C4<1>, C4<1>; | ||||
| L_000001e0df64ab60 .functor NOT 1, o000001e0df4970f8, C4<0>, C4<0>, C4<0>; | ||||
| L_000001e0df64abd0 .functor AND 1, L_000001e0df64ab60, o000001e0df497188, C4<1>, C4<1>; | ||||
| L_000001e0df64ac40 .functor OR 1, L_000001e0df64aa10, L_000001e0df64aa80, L_000001e0df64aaf0, L_000001e0df64abd0; | ||||
| v000001e0df462b30_0 .net "A", 0 0, o000001e0df496fd8;  0 drivers | ||||
| v000001e0df462d50_0 .net "AD", 0 0, L_000001e0df64aaf0;  1 drivers | ||||
| v000001e0df462770_0 .net "An", 0 0, L_000001e0df462f70;  1 drivers | ||||
| v000001e0df462810_0 .net "AnBC", 0 0, L_000001e0df64aa10;  1 drivers | ||||
| v000001e0df4628b0_0 .net "B", 0 0, o000001e0df497098;  0 drivers | ||||
| v000001e0df64ed90_0 .net "Bn", 0 0, L_000001e0df64aa80;  1 drivers | ||||
| v000001e0df64ee30_0 .net "C", 0 0, o000001e0df4970f8;  0 drivers | ||||
| v000001e0df64eed0_0 .net "Cn", 0 0, L_000001e0df64ab60;  1 drivers | ||||
| v000001e0df64a840_0 .net "CnD", 0 0, L_000001e0df64abd0;  1 drivers | ||||
| v000001e0df64a970_0 .net "D", 0 0, o000001e0df497188;  0 drivers | ||||
| v000001e0df492660_0 .net "F", 0 0, L_000001e0df64ac40;  1 drivers | ||||
| # The file index is used to find the file name in the following table. | ||||
| :file_names 3; | ||||
|     "N/A"; | ||||
|     "<interactive>"; | ||||
|     ".\f_lab2.v"; | ||||
							
								
								
									
										32
									
								
								labs/lab2_prep/src/tb.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								labs/lab2_prep/src/tb.v
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| module tb(); | ||||
|  | ||||
| reg r1, r2, r3, r4; | ||||
| wire w1; | ||||
|      | ||||
| lab2 uut( | ||||
|     .A(r1), | ||||
|     .B(r2), | ||||
|     .C(r3), | ||||
|     .D(r4), | ||||
|     .F(w1) | ||||
| ); | ||||
|  | ||||
| // test uut(r1, r2, w1, w2, w3); | ||||
|  | ||||
| initial begin | ||||
|     $dumpfile("dmp.vcd"); | ||||
|     $dumpvars; | ||||
|     r1 = 1'b0; r2 = 1'b0; r3 = 1'b0; r4 = 1'b0;  #50; | ||||
|     r1 = 1'b0; r2 = 1'b0; r3 = 1'b0; r4 = 1'b1;  #50; | ||||
|     r1 = 1'b0; r2 = 1'b0; r3 = 1'b1; r4 = 1'b0;  #50; | ||||
|     r1 = 1'b0; r2 = 1'b0; r3 = 1'b1; r4 = 1'b1;  #50; | ||||
|     r1 = 1'b0; r2 = 1'b1; r3 = 1'b0; r4 = 1'b0;  #50; | ||||
|     r1 = 1'b0; r2 = 1'b1; r3 = 1'b0; r4 = 1'b1;  #50; | ||||
|     r1 = 1'b0; r2 = 1'b1; r3 = 1'b1; r4 = 1'b0;  #50; | ||||
|     r1 = 1'b0; r2 = 1'b1; r3 = 1'b1; r4 = 1'b1;  #50; | ||||
|     $display(w1); | ||||
| end | ||||
|  | ||||
|  | ||||
|  | ||||
| endmodule | ||||
		Reference in New Issue
	
	Block a user