SPI_Test/tb/awg_top/TB.sv

331 lines
9.7 KiB
Systemverilog

`timescale 1ns/1ps
//`define FPGA_TEST
//`define SRAM32KB_FILENAME "./mcu.cde"
//`define AHB_RAM_SMIC_MODEL
//`define AHB_RAM_FPGA_SRAM_MODEL
//`define AHB_ROM_SMIC_MODEL_16KB
//`define AHB_ROM_SMIC_MODEL_8KB
//`define SMIC_PAD
// `define FPGA_PAD
//`include "qbmcu_defines.v"
module TB;
//======================================================================
initial begin
$fsdbAutoSwitchDumpfile(500, "./verdplus.fsdb", 1000000);
$fsdbDumpvars();
end
//======================================================================
//clock & reset & bootsel
//======================================================================
logic clk ;
logic rst_n ;
logic qbmcu_i_start ;
parameter SYS_PERIOD = 1.33;
//sys_clk --> 50M, 0 phase
initial begin
clk =0;
forever # (SYS_PERIOD/2) clk = ~clk;
end
//hresetn
initial begin
rst_n = 0;
#1000;
rst_n = 0;
#1000;
rst_n = 1;
// $display("m%");
end
logic [31:0] mcu_cwfr [3:0] ;
logic [31:0] mcu_gapr [7:0] ;
logic [31:0] mcu_ampr [3:0] ;
logic [31:0] mcu_baisr [3:0] ;
logic [1 :0] mcu_intp_sel ;
logic mcu_nco_pha_clr ;
logic [15:0] mcu_rz_pha ;
logic send ;
logic sendc ;
logic [31 :0] codeword ;
logic [1 :0] fb_st ;
logic [31 :0] enve_bwrdata ;
logic [0 :0] enve_bwren ;
logic [24 :0] enve_brwaddr ;
logic [0 :0] enve_brden = 1'b0 ;
logic [31 :0] enve_brddata ;
logic [31 :0] enve_id_bwrdata ;
logic [0 :0] enve_id_bwren ;
logic [24 :0] enve_id_brwaddr ;
logic [0 :0] enve_id_brden = 1'b0;
logic [31 :0] enve_id_brddata ;
logic [0 :0] enve_read_fsm_st ;
logic proc_cft ;
logic mod_sideband_sel ;
logic mod_pha_sfot_clr ;
logic [1 :0] role_sel ;
logic [1 :0] intp_sel ;
logic [15 :0] mod_data_i ;
logic [15 :0] mod_data_q ;
logic mod_vld ;
/////////////////////////////////////////////////////////////////////////////////////
//mcu_cwfr
assign mcu_cwfr[0] = 32'h1000_0000;
assign mcu_cwfr[1] = 32'h0800_0000;
assign mcu_cwfr[2] = 32'h0400_0000;
assign mcu_cwfr[3] = 32'h0200_0000;
//mcu_gapr
assign mcu_gapr[0] = 16'h0000;
assign mcu_gapr[1] = 16'h0800;
assign mcu_gapr[2] = 16'h0400;
assign mcu_gapr[3] = 16'h0200;
assign mcu_gapr[4] = 16'h1000;
assign mcu_gapr[5] = 16'h0800;
assign mcu_gapr[6] = 16'h0400;
assign mcu_gapr[7] = 16'h0200;
//mcu_ampr
assign mcu_ampr[0] = 16'hf000;
assign mcu_ampr[1] = 16'h8000;
assign mcu_ampr[2] = 16'h4000;
assign mcu_ampr[3] = 16'h2000;
//mcu_baisr
assign mcu_baisr[0] = 16'h0100;
assign mcu_baisr[1] = 16'h0200;
assign mcu_baisr[2] = 16'h0300;
assign mcu_baisr[3] = 16'h0400;
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
enve_bwrdata <= '0;
enve_bwren <= '0;
enve_brwaddr <= '0;
end
else begin
if(enve_bwrdata == 32'd8191) begin
enve_bwrdata <= enve_bwrdata;
enve_bwren <= '0;
enve_brwaddr <= enve_brwaddr;
end
else begin
enve_bwrdata <= enve_bwrdata + 1'b1;
enve_bwren <= '1;
enve_brwaddr <= {enve_bwrdata[11:2],2'b00};
end
end
end
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
enve_id_bwrdata <= {16'd0,16'd20};
enve_id_bwren <= '0;
enve_id_brwaddr <= '0;
end
else begin
if(enve_id_brwaddr[7:2] == 6'd63) begin
enve_id_bwrdata <= enve_id_bwrdata;
enve_id_bwren <= '0;
enve_id_brwaddr <= enve_id_brwaddr;
end
else begin
enve_id_bwrdata <={enve_id_bwrdata[31:16] + 16'd20,enve_id_bwrdata[15:0] + 16'd20};
enve_id_bwren <= '1;
enve_id_brwaddr <= enve_id_brwaddr + 16'd4;
end
end
end
//mod_sideband_sel
assign mod_sideband_sel = 1'b0;
//mod_pha_sfot_clr
assign mod_pha_sfot_clr = 1'b0;
//role_sel
logic [31:0] cnt_c;
wire add_cnt = 'b1;
wire end_cnt = 1'b0;
wire [31:0] cnt_n = end_cnt ? 32'h0 :
add_cnt ? cnt_c + 1'b1 :
cnt_c ;
sirv_gnrl_dffr #(32) cnt_c_dffr (cnt_n, cnt_c, clk, rst_n);
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b00;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'b0;
send <= 1'b0;
sendc <= 1'b0;
codeword <= 32'b0;
fb_st <= 2'b00;
end
else if(cnt_c == 32'd1000) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'b0;
send <= 1'b1;
sendc <= 1'b0;
codeword <= 32'b000000000000_0_0000_01_101_11_00000100;
fb_st <= 2'b00;
end
else if(cnt_c == 32'd1001) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'd5;
send <= 1'b0;
sendc <= 1'b0;
codeword <= 32'b000000000000_0_0000_01_101_11_00000100;
fb_st <= 2'b00;
end
else if(cnt_c == 32'd10000) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'd88;
send <= 1'b1;
sendc <= 1'b0;
codeword <= 32'b000000000000_1_0000_01_101_11_00000100;
fb_st <= 2'b00;
end
else if(cnt_c == 32'd10001) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'b0;
send <= 1'b0;
sendc <= 1'b0;
codeword <= 32'b000000000000_0_0000_01_101_11_00000100;
fb_st <= 2'b00;
end
else if(cnt_c == 32'd20000) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'b0;
send <= 1'b0;
sendc <= 1'b1;
codeword <= 32'b000000000000_0_0000_01_101_11_00000100;
fb_st <= 2'b01;
end
else if(cnt_c == 32'd20001) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'b0;
send <= 1'b0;
sendc <= 1'b0;
codeword <= 32'b000000000000_0_0000_01_000_11_00000100;
fb_st <= 2'b01;
end
else if(cnt_c == 32'd30000) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'hf000;
send <= 1'b1;
sendc <= 1'b0;
codeword <= 32'b000000000000_0_0000_00_000_11_00000100;
fb_st <= 2'b01;
end
else if(cnt_c == 32'd30001) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'hf000;
send <= 1'b0;
sendc <= 1'b0;
codeword <= 32'b000000000000_0_0000_00_000_11_00000100;
fb_st <= 2'b01;
end
else if(cnt_c == 32'd30002) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'hf000;
send <= 1'b0;
sendc <= 1'b0;
codeword <= 32'b000000000000_0_0000_00_000_11_00000100;
fb_st <= 2'b01;
end
else if(cnt_c == 32'd40000) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'h1000;
send <= 1'b1;
sendc <= 1'b0;
codeword <= 32'b000000000000_0_0000_00_000_11_00000100;
fb_st <= 2'b01;
end
else if(cnt_c == 32'd40001) begin
role_sel <= 2'b00;
mcu_intp_sel <= 2'b11;
mcu_nco_pha_clr <= 1'b0;
mcu_rz_pha <= 16'h1000;
send <= 1'b0;
sendc <= 1'b0;
codeword <= 32'b000000000000_0_0000_00_000_11_00000100;
fb_st <= 2'b01;
end
end
awg_top U_awg_top (
.clk ( clk )
,.rst_n ( rst_n )
,.mcu_cwfr ( mcu_cwfr )
,.mcu_gapr ( mcu_gapr )
,.mcu_ampr ( mcu_ampr )
,.mcu_baisr ( mcu_baisr )
,.mcu_intp_sel ( mcu_intp_sel )
,.mcu_nco_pha_clr ( mcu_nco_pha_clr )
,.mcu_rz_pha ( mcu_rz_pha )
,.send ( send )
,.sendc ( sendc )
,.codeword ( codeword )
,.fb_st ( fb_st )
,.enve_bwrdata ( enve_bwrdata )
,.enve_bwren ( enve_bwren )
,.enve_brwaddr ( enve_brwaddr )
,.enve_brden ( enve_brden )
,.enve_brddata ( enve_brddata )
,.enve_id_bwrdata ( enve_id_bwrdata )
,.enve_id_bwren ( enve_id_bwren )
,.enve_id_brwaddr ( enve_id_brwaddr )
,.enve_id_brden ( enve_id_brden )
,.enve_id_brddata ( enve_id_brddata )
,.enve_read_fsm_st ( enve_read_fsm_st )
,.proc_cft ( proc_cft )
,.mod_sideband_sel ( mod_sideband_sel )
,.mod_pha_sfot_clr ( mod_pha_sfot_clr )
,.role_sel ( role_sel )
,.intp_sel ( intp_sel )
,.mod_data_i ( mod_data_i )
,.mod_data_q ( mod_data_q )
,.mod_vld ( mod_vld )
);
initial begin
wait(cnt_c == 32'd100000)
$finish(0);
end
endmodule