module test_arp_cache;

// Parameters
parameter CACHE_ADDR_WIDTH = 2;

// Inputs
reg clk = 0;
reg rst = 0;
reg [7:0] current_test = 0;

reg query_request_valid = 0;
reg [31:0] query_request_ip = 0;

reg query_response_ready = 0;

reg write_request_valid = 0;
reg [31:0] write_request_ip = 0;
reg [47:0] write_request_mac = 0;

reg clear_cache = 0;

// Outputs
wire query_request_ready;

wire query_response_valid;
wire query_response_error;
wire [47:0] query_response_mac;

wire write_request_ready;

initial begin
    // myhdl integration
    $from_myhdl(
        clk,
        rst,
        current_test,
        query_request_valid,
        query_request_ip,
        query_response_ready,
        write_request_valid,
        write_request_ip,
        write_request_mac,
        clear_cache
    );
    $to_myhdl(
        query_request_ready,
        query_response_valid,
        query_response_error,
        query_response_mac,
        write_request_ready
    );

    // dump file
    $dumpfile("test_arp_cache.lxt");
    $dumpvars(0, test_arp_cache);
end

arp_cache #(
    .CACHE_ADDR_WIDTH(CACHE_ADDR_WIDTH)
)
UUT (
    .clk(clk),
    .rst(rst),
    // Query cache
    .query_request_valid(query_request_valid),
    .query_request_ready(query_request_ready),
    .query_request_ip(query_request_ip),
    .query_response_valid(query_response_valid),
    .query_response_ready(query_response_ready),
    .query_response_error(query_response_error),
    .query_response_mac(query_response_mac),
    // Write cache
    .write_request_valid(write_request_valid),
    .write_request_ready(write_request_ready),
    .write_request_ip(write_request_ip),
    .write_request_mac(write_request_mac),
    // Configuration
    .clear_cache(clear_cache)
);

endmodule