manta/test/functional_sim/uart_tx_tb.sv

113 lines
1.6 KiB
Systemverilog
Raw Normal View History

2023-02-04 18:43:00 +01:00
`default_nettype none
`timescale 1ns / 1ps
2023-03-07 15:18:40 +01:00
`define CP 10
`define HCP 5
2023-02-04 18:43:00 +01:00
module uart_tx_tb();
logic clk;
2023-03-07 15:18:40 +01:00
logic [7:0] tb_utx_data;
logic tb_utx_valid;
logic utx_tb_busy;
logic utx_tb_tx;
uart_tx #(.CLOCKS_PER_BAUD(10)) utx (
2023-02-04 18:43:00 +01:00
.clk(clk),
2023-03-07 15:18:40 +01:00
.data(tb_utx_data),
.valid(tb_utx_valid),
.busy(utx_tb_busy),
.tx(utx_tb_tx));
logic zcpu_tb_tx;
2023-03-07 15:18:40 +01:00
logic zcpu_tb_busy;
2023-03-07 15:18:40 +01:00
tx_uart #(.CLOCKS_PER_BAUD(10)) zcpu_utx (
.i_clk(clk),
.i_wr(tb_utx_valid),
.i_data(tb_utx_data),
2023-03-07 15:18:40 +01:00
.o_uart_tx(zcpu_tb_tx),
.o_busy(zcpu_tb_busy));
logic zcpu_urx_valid;
logic[7:0] zcpu_urx_data;
rx_uart #(.CLOCKS_PER_BAUD(10)) zcpu_urx (
.i_clk(clk),
.i_uart_rx(utx_tb_tx),
.o_wr(zcpu_urx_valid),
.o_data(zcpu_urx_data));
2023-02-04 18:43:00 +01:00
always begin
2023-03-07 15:18:40 +01:00
#`HCP
2023-02-04 18:43:00 +01:00
clk = !clk;
end
initial begin
2023-03-07 15:18:40 +01:00
$dumpfile("uart_tx.vcd");
$dumpvars(0, uart_tx_tb);
2023-02-04 18:43:00 +01:00
clk = 0;
2023-03-07 15:18:40 +01:00
tb_utx_data = 0;
tb_utx_valid = 0;
#`HCP;
#(10*`CP);
$display("send a byte");
tb_utx_data = 8'h69;
tb_utx_valid = 1;
#`CP;
tb_utx_valid = 0;
#(150*`CP);
$display("send another byte");
tb_utx_data = 8'h42;
tb_utx_valid = 1;
#`CP;
tb_utx_valid = 0;
#(150*`CP);
$display("send two bytes back to back");
tb_utx_data = 8'h69;
tb_utx_valid = 1;
#`CP;
tb_utx_valid = 0;
#(99*`CP);
2023-03-07 15:18:40 +01:00
tb_utx_data = 8'h42;
tb_utx_valid = 1;
#`CP;
tb_utx_valid = 0;
#(150*`CP);
$display("send two bytes back to back, but keep valid asserted");
tb_utx_data = 8'h69;
tb_utx_valid = 1;
#`CP;
#(99*`CP);
2023-03-07 15:18:40 +01:00
tb_utx_data = 8'h42;
tb_utx_valid = 1;
#`CP;
tb_utx_valid = 0;
#(150*`CP);
2023-02-04 18:43:00 +01:00
$finish();
end
endmodule
`default_nettype wire