`timescale 1ns / 1ps | |
//`include "user_module.v" | |
module user_module_tb; | |
wire [7:0] io_in; | |
wire [7:0] io_out; | |
reg clk, reset, write_en; | |
reg [4:0] pdm_input; | |
assign io_in = {pdm_input, write_en, reset, clk}; | |
user_module UUT (.io_in(io_in), .io_out(io_out)); | |
initial begin | |
$dumpfile("user_module_tb.vcd"); | |
$dumpvars(0, user_module_tb); | |
end | |
initial begin | |
#100_000_000; // Wait a long time in simulation units (adjust as needed). | |
$display("Caught by trap"); | |
$finish; | |
end | |
parameter CLK_HALF_PERIOD = 5; | |
parameter TCLK = 2*CLK_HALF_PERIOD; | |
always begin | |
clk = 1'b1; | |
#(CLK_HALF_PERIOD); | |
clk = 1'b0; | |
#(CLK_HALF_PERIOD); | |
end | |
initial | |
begin | |
#20 | |
reset = 1; | |
#(CLK_HALF_PERIOD); | |
reset = 0; | |
end | |
initial begin | |
write_en = 0; | |
pdm_input = 5'h00; | |
#(CLK_HALF_PERIOD); | |
#(5*TCLK) | |
write_en = 1; | |
pdm_input= 5'h08; | |
#(TCLK); | |
write_en = 0; | |
#(63*TCLK); | |
write_en = 1; | |
pdm_input= 5'h1a; | |
#(TCLK); | |
write_en = 0; | |
#(63*TCLK); | |
write_en = 1; | |
pdm_input= 5'h0f; | |
#(64*TCLK); | |
pdm_input= 5'h04; | |
#(64*TCLK); | |
$finish; | |
end | |
endmodule |