| 
									
										
										
										
											2025-05-05 15:23:44 +02:00
										 |  |  | `timescale 1ns/1ps | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module tb_fifo; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     reg clk = 0; | 
					
						
							|  |  |  |      | 
					
						
							| 
									
										
										
										
											2025-05-06 09:14:59 +02:00
										 |  |  |     reg wr_en = 0; | 
					
						
							|  |  |  |     reg rd_en = 0; | 
					
						
							|  |  |  |     reg [7:0] wr_data = 0; | 
					
						
							|  |  |  |     wire [7:0] rd_data; | 
					
						
							|  |  |  |     wire full; | 
					
						
							|  |  |  |     wire empty; | 
					
						
							| 
									
										
										
										
											2025-05-05 15:23:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     always #18.5 clk = ~clk; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-06 09:14:59 +02:00
										 |  |  |     fifo #( | 
					
						
							|  |  |  |         .DETPH(16), | 
					
						
							|  |  |  |         .WIDTH(8) | 
					
						
							|  |  |  |     ) fifo_inst ( | 
					
						
							|  |  |  |         .clk(clk), | 
					
						
							|  |  |  |         .wr_en(wr_en), | 
					
						
							|  |  |  |         .wr_data(wr_data), | 
					
						
							|  |  |  |         .rd_en(rd_en), | 
					
						
							|  |  |  |         .rd_data(rd_data), | 
					
						
							|  |  |  |         .full(full), | 
					
						
							|  |  |  |         .empty(empty) | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2025-05-05 15:23:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     initial begin | 
					
						
							|  |  |  |         $dumpfile("runs/fifo.vcd"); | 
					
						
							|  |  |  |         $dumpvars(0, tb_fifo); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-06 09:14:59 +02:00
										 |  |  |         wr_en = 1; | 
					
						
							|  |  |  |         wr_data = 8'hAA; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         wr_en = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         wr_en = 1; | 
					
						
							|  |  |  |         wr_data = 8'hBB; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         wr_en = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         wr_en = 1; | 
					
						
							|  |  |  |         wr_data = 8'hCC; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         wr_en = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $display("rd_data: %h", rd_data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         rd_en = 1; | 
					
						
							|  |  |  |         $display("rd_data: %h", rd_data); | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         rd_en = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         rd_en = 1; | 
					
						
							|  |  |  |         $display("rd_data: %h", rd_data); | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  |         rd_en = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         rd_en = 1; | 
					
						
							|  |  |  |         $display("rd_data: %h", rd_data); | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  |         rd_en = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         rd_en = 1; | 
					
						
							|  |  |  |         $display("rd_data: %h", rd_data); | 
					
						
							|  |  |  |         #19.0; | 
					
						
							|  |  |  |         rd_en = 0; | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         #37.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $finish; | 
					
						
							| 
									
										
										
										
											2025-05-05 15:23:44 +02:00
										 |  |  |          | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | endmodule |