48 lines
982 B
Systemverilog
48 lines
982 B
Systemverilog
`timescale 1 ns/1 ns
|
|
|
|
module inc_lut_tb();
|
|
|
|
// Parameters
|
|
localparam CLK_PRD = 20;
|
|
localparam PHACC_WIDTH = 14;
|
|
|
|
logic clk, clr_n, wr_n;
|
|
logic [7:0] phinc_val, phase, sine;
|
|
|
|
// Instantiate UUT and connect used ports
|
|
phacc phacc(.phinc(phinc_val), .clk(clk), .reset(clr_n), .phase(phase));
|
|
defparam phacc.WIDTH = PHACC_WIDTH;
|
|
|
|
sinelut sinelut_inst (
|
|
.address (phase), .clock (clk), .q(sine)
|
|
);
|
|
|
|
|
|
// Clock definition
|
|
initial begin
|
|
clk = 0;
|
|
forever #(CLK_PRD/2) clk = ~clk;
|
|
end
|
|
|
|
// Reset and initial values definition
|
|
initial begin
|
|
clr_n = 0;
|
|
#(CLK_PRD*5) clr_n = 1;
|
|
end
|
|
|
|
// Bus write transaction simulation
|
|
initial begin
|
|
// Wait until system is out of reset
|
|
@(posedge clr_n);
|
|
|
|
phinc_val=(2**(PHACC_WIDTH - 8));
|
|
if ((phinc_val <= 255) && (phinc_val != 0)) begin
|
|
#(CLK_PRD * 256 * 5) $stop;
|
|
end else begin
|
|
$display("Error: value of phase increment is out of range! Stopped simulation.");
|
|
#1 $stop;
|
|
end
|
|
end
|
|
endmodule
|
|
|