../src/lowrisc_dv_dpi_dmidpi_0.1/dmidpi.sv Cov: 69.4%
1: // Copyright lowRISC contributors.
2: // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3: // SPDX-License-Identifier: Apache-2.0
4:
5: module dmidpi #(
6: parameter string Name = "dmi0", // name of the interface (display only)
7: parameter int ListenPort = 44853 // TCP port to listen on
8: )(
9: input bit clk_i,
10: input bit rst_ni,
11:
12: output bit dmi_req_valid,
13: input bit dmi_req_ready,
14: output bit [6:0] dmi_req_addr,
15: output bit [1:0] dmi_req_op,
16: output bit [31:0] dmi_req_data,
17: input bit dmi_rsp_valid,
18: output bit dmi_rsp_ready,
19: input bit [31:0] dmi_rsp_data,
20: input bit [1:0] dmi_rsp_resp,
21: output bit dmi_rst_n
22: );
23:
24: import "DPI-C"
25: function chandle dmidpi_create(input string name, input int listen_port);
26:
27: import "DPI-C"
28: function void dmidpi_tick(input chandle ctx, output bit dmi_req_valid,
29: input bit dmi_req_ready, output bit [6:0] dmi_req_addr,
30: output bit [1:0] dmi_req_op, output bit [31:0] dmi_req_data,
31: input bit dmi_rsp_valid, output bit dmi_rsp_ready,
32: input bit [31:0] dmi_rsp_data, input bit [1:0] dmi_rsp_resp,
33: output bit dmi_rst_n);
34:
35: import "DPI-C"
36: function void dmidpi_close(input chandle ctx);
37:
38: chandle ctx;
39:
40: initial begin
41: ctx = dmidpi_create(Name, ListenPort);
42: end
43:
44: final begin
45: dmidpi_close(ctx);
46: ctx = 0;
47: end
48:
49: always_ff @(posedge clk_i, negedge rst_ni) begin
50: dmidpi_tick(ctx, dmi_req_valid, dmi_req_ready, dmi_req_addr, dmi_req_op,
51: dmi_req_data, dmi_rsp_valid, dmi_rsp_ready, dmi_rsp_data,
52: dmi_rsp_resp, dmi_rst_n);
53: end
54:
55: endmodule
56: