2 module elastic_buffer_tb;
4 reg rx_clk = 0, tx_clk = 0, rst = 1;
8 reg rx_dv, rx_er, crs, col;
9 wire rx_dv_ret, rx_er_ret, crs_ret, col_ret;
11 elastic_buffer elastic_buffer
12 (.rx_clk(rx_clk),.tx_clk(tx_clk),.rst(rst),
13 .rxd(rxd),.rx_dv(rx_dv),.rx_er(rx_er),.crs(crs),.col(col),
14 .rxd_ret(rxd_ret),.rx_dv_ret(rx_dv_ret),.rx_er_ret(rx_er_ret),
15 .crs_ret(crs_ret),.col_ret(col_ret) );
17 always #100 rx_clk = ~rx_clk;
18 always #101 tx_clk = ~tx_clk;
23 {col,crs,rx_er,rx_dv,rxd} <= 0;
39 always @(posedge tx_clk)
40 rxd_ret_d1 <= rxd_ret;
42 wire [7:0] diff = rxd_ret_d1 - rxd_ret;
44 wire error = rx_dv_ret && (diff != 8'hFF);
48 {col,crs,rx_er,rx_dv,rxd} <= 0;
50 {col,crs,rx_er,rx_dv,rxd} <= {4'hF,8'd1};
57 {col,crs,rx_er,rx_dv,rxd} <= 0;
63 $dumpfile("elastic_buffer_tb.vcd");
64 $dumpvars(0,elastic_buffer_tb);
66 endmodule // elastic_buffer_tb