blob: 73fbb2ee555d5bd44a7f1fb02ed7b133ea579165 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
module dmidpi #(
parameter string Name = "dmi0", // name of the interface (display only)
parameter int ListenPort = 44853 // TCP port to listen on
)(
input bit clk_i,
input bit rst_ni,
output bit dmi_req_valid,
input bit dmi_req_ready,
output bit [6:0] dmi_req_addr,
output bit [1:0] dmi_req_op,
output bit [31:0] dmi_req_data,
input bit dmi_rsp_valid,
output bit dmi_rsp_ready,
input bit [31:0] dmi_rsp_data,
input bit [1:0] dmi_rsp_resp,
output bit dmi_rst_n
);
import "DPI-C"
function chandle dmidpi_create(input string name, input int listen_port);
import "DPI-C"
function void dmidpi_tick(input chandle ctx, output bit dmi_req_valid,
input bit dmi_req_ready, output bit [6:0] dmi_req_addr,
output bit [1:0] dmi_req_op, output bit [31:0] dmi_req_data,
input bit dmi_rsp_valid, output bit dmi_rsp_ready,
input bit [31:0] dmi_rsp_data, input bit [1:0] dmi_rsp_resp,
output bit dmi_rst_n);
import "DPI-C"
function void dmidpi_close(input chandle ctx);
chandle ctx;
initial begin
ctx = dmidpi_create(Name, ListenPort);
end
final begin
dmidpi_close(ctx);
ctx = 0;
end
always_ff @(posedge clk_i, negedge rst_ni) begin
dmidpi_tick(ctx, dmi_req_valid, dmi_req_ready, dmi_req_addr, dmi_req_op,
dmi_req_data, dmi_rsp_valid, dmi_rsp_ready, dmi_rsp_data,
dmi_rsp_resp, dmi_rst_n);
end
endmodule