blob: 50acb7d1ea5202a1a0905c9a16490f716678b430 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
#ifndef OPENTITAN_HW_DV_DPI_DMIDPI_DMIDPI_H_
#define OPENTITAN_HW_DV_DPI_DMIDPI_DMIDPI_H_
#include <svdpi.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* Constructor: Create and initialize dmidpi context object
*
* Call from a initial block.
*
* @param display_name Name of the interface (for display purposes only)
* @param listen_port Port to listen on
* @return an initialized struct dmidpi_ctx context object
*/
void *dmidpi_create(const char *display_name, int listen_port);
/**
* Destructor: Close all connections and free all resources
*
* Call from a finish block.
*
* @param ctx_void a struct dmidpi_ctx context object
*/
void dmidpi_close(void *ctx_void);
/**
* Drive DMI signals
*
* Call this function from the simulation at every clock tick to read/write
* from/to the DMI signals.
*
* @param ctx_void a struct dmidpi_ctx context object
*/
void dmidpi_tick(void *ctx_void, svBit *dmi_req_valid,
const svBit dmi_req_ready, svBitVecVal *dmi_req_addr,
svBitVecVal *dmi_req_op, svBitVecVal *dmi_req_data,
const svBit dmi_resp_valid, svBit *dmi_resp_ready,
const svBitVecVal *dmi_resp_data,
const svBitVecVal *dmi_resp_resp, svBit *dmi_reset_n);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // OPENTITAN_HW_DV_DPI_DMIDPI_DMIDPI_H_