../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: