File gpi_priv.h

Defines

GPI_ENTRY_POINT(NAME, func)

extern “C” { \

const void NAME##_entry_point(void) \

{ \

func(); \

} \

}

Typedefs

typedef enum gpi_cb_state gpi_cb_state_e
typedef const void (*layer_entry_func)(void)

Enums

enum gpi_cb_state

Values:

GPI_FREE = 0
GPI_PRIMED = 1
GPI_CALL = 2
GPI_REPRIME = 3
GPI_DELETE = 4

Functions

template<class To>
To sim_to_hdl(gpi_sim_hdl input)
int gpi_register_impl(GpiImplInterface *func_tbl)
void gpi_embed_init(gpi_sim_info_t *info)
void gpi_embed_end(void)
void gpi_embed_event(gpi_event_t level, const char *msg)
void gpi_load_extra_libs(void)
class GpiHdl

Subclassed by GpiCbHdl, GpiIterator, GpiObjHdl

Public Functions

GpiHdl(GpiImplInterface *impl)
GpiHdl(GpiImplInterface *impl, void *hdl)
virtual ~GpiHdl()
int initialise(std::string &name)
template<typename T>
T get_handle(void) const
char *gpi_copy_name(const char *name)
bool is_this_impl(GpiImplInterface *impl)

Public Members

GpiImplInterface *m_impl

Protected Attributes

void *m_obj_hdl

Private Functions

GpiHdl()
class GpiObjHdl : public GpiHdl

Subclassed by FliObjHdl, GpiSignalObjHdl, VhpiArrayObjHdl, VhpiObjHdl, VpiArrayObjHdl, VpiObjHdl

Public Functions

GpiObjHdl(GpiImplInterface *impl)
GpiObjHdl(GpiImplInterface *impl, void *hdl, gpi_objtype_t objtype)
GpiObjHdl(GpiImplInterface *impl, void *hdl, gpi_objtype_t objtype, bool is_const)
virtual ~GpiObjHdl()
const char *get_name_str(void)
const char *get_fullname_str(void)
const char *get_type_str(void)
gpi_objtype_t get_type(void)
bool get_const(void)
int get_num_elems(void)
int get_range_left(void)
int get_range_right(void)
int get_indexable(void)
const std::string &get_name(void)
const std::string &get_fullname(void)
virtual const char *get_definition_name()
virtual const char *get_definition_file()
bool is_native_impl(GpiImplInterface *impl)
int initialise(std::string &name, std::string &full_name)

Protected Attributes

int m_num_elems
bool m_indexable
int m_range_left
int m_range_right
std::string m_name
std::string m_fullname
std::string m_definition_name
std::string m_definition_file
gpi_objtype_t m_type
bool m_const
class GpiSignalObjHdl : public GpiObjHdl

Subclassed by FliSignalObjHdl, VhpiSignalObjHdl, VpiSignalObjHdl

Public Functions

GpiSignalObjHdl(GpiImplInterface *impl, void *hdl, gpi_objtype_t objtype, bool is_const)
virtual ~GpiSignalObjHdl()
virtual const char *get_signal_value_binstr(void) = 0
virtual const char *get_signal_value_str(void) = 0
virtual double get_signal_value_real(void) = 0
virtual long get_signal_value_long(void) = 0
virtual int set_signal_value(const long value) = 0
virtual int set_signal_value(const double value) = 0
virtual int set_signal_value(std::string &value) = 0
virtual GpiCbHdl *value_change_cb(unsigned int edge) = 0

Public Members

int m_length
class GpiCbHdl : public GpiHdl

Subclassed by FliProcessCbHdl, GpiValueCbHdl, VhpiCbHdl, VpiCbHdl

Public Functions

GpiCbHdl(GpiImplInterface *impl)
int arm_callback(void) = 0
int run_callback(void)
int cleanup_callback(void) = 0
int set_user_data(int (*gpi_function)(const void *), const void *data, )
const void *get_user_data(void)
void set_call_state(gpi_cb_state_e new_state)
gpi_cb_state_e get_call_state(void)
~GpiCbHdl()

Protected Attributes

int (*gpi_function)(const void *)
const void *m_cb_data
gpi_cb_state_e m_state
class GpiValueCbHdl : public virtual GpiCbHdl

Subclassed by FliSignalCbHdl, VhpiValueCbHdl, VpiValueCbHdl

Public Functions

GpiValueCbHdl(GpiImplInterface *impl, GpiSignalObjHdl *signal, int edge)
virtual ~GpiValueCbHdl()
int run_callback(void)
virtual int cleanup_callback(void) = 0

Protected Attributes

std::string required_value
GpiSignalObjHdl *m_signal
class GpiClockHdl

Public Functions

GpiClockHdl(GpiObjHdl *clk)
GpiClockHdl(const char *clk)
~GpiClockHdl()
int start_clock(const int period_ps)
int stop_clock(void)
class GpiIterator : public GpiHdl

Subclassed by FliIterator, VhpiIterator, VpiIterator, VpiSingleIterator

Public Types

enum Status

Values:

NATIVE
NATIVE_NO_NAME
NOT_NATIVE
NOT_NATIVE_NO_NAME
END

Public Functions

GpiIterator(GpiImplInterface *impl, GpiObjHdl *hdl)
virtual ~GpiIterator()
virtual Status next_handle(std::string &name, GpiObjHdl **hdl, void **raw_hdl)
GpiObjHdl *get_parent(void)

Protected Attributes

GpiObjHdl *m_parent
template<class Ti, class Tm>
class GpiIteratorMapping

Public Functions

GpiIteratorMapping(void (*populate)(GpiIteratorMapping<Ti, Tm>&))
std::vector<Tm> *get_options(Ti type)
void add_to_options(Ti type, Tm *options)

Private Members

std::map<Ti, std::vector<Tm>> options_map
class GpiImplInterface

Subclassed by FliImpl, VhpiImpl, VpiImpl

Public Functions

GpiImplInterface(const std::string &name)
const char *get_name_c(void)
const string &get_name_s(void)
virtual ~GpiImplInterface()
virtual void sim_end(void) = 0
virtual void get_sim_time(uint32_t *high, uint32_t *low) = 0
virtual void get_sim_precision(int32_t *precision) = 0
virtual GpiObjHdl *native_check_create(std::string &name, GpiObjHdl *parent) = 0
virtual GpiObjHdl *native_check_create(int32_t index, GpiObjHdl *parent) = 0
virtual GpiObjHdl *native_check_create(void *raw_hdl, GpiObjHdl *parent) = 0
virtual GpiObjHdl *get_root_handle(const char *name) = 0
virtual GpiIterator *iterate_handle(GpiObjHdl *obj_hdl, gpi_iterator_sel_t type) = 0
virtual GpiCbHdl *register_timed_callback(uint64_t time_ps) = 0
virtual GpiCbHdl *register_readonly_callback(void) = 0
virtual GpiCbHdl *register_nexttime_callback(void) = 0
virtual GpiCbHdl *register_readwrite_callback(void) = 0
virtual int deregister_callback(GpiCbHdl *obj_hdl) = 0
virtual const char *reason_to_string(int reason) = 0

Private Members

std::string m_name