File simulatormodule.cpp¶
Callback Handling
Handle a callback coming from GPI
GILState before calling: Unknown
GILState after calling: Unknown
Makes one call to TAKE_GIL and one call to DROP_GIL
Returns 0 on success or 1 on a failure.
Handles a callback from the simulator, all of which call this function.
We extract the associated context and find the Python function (usually cocotb.scheduler.react) calling it with a reference to the trigger that fired. The scheduler can then call next() on all the coroutines that are waiting on that particular trigger.
TODO:
Tidy up return values
Ensure cleanup correctly in exception cases
-
struct PyModuleDef
moduledef
= {PyModuleDef_HEAD_INIT, MODULE_NAME, NULL, -1, SimulatorMethods, NULL, NULL, NULL, NULL}¶
-
PyMethodDef
gpi_sim_hdl_methods
[]¶
-
PyMethodDef gpi_cb_hdl_methods [] = { {"deregister", (PyCFunction)deregister, METH_NOARGS, PyDoc_STR( "deregister($self)\n" "--\n\n" "deregister() -> None\n" "De-register this callback." )}, {NULL, NULL, 0, NULL} }
-
int
handle_gpi_callback
(void *user_data)¶
-
PyObject *
log_msg
(PyObject *self, PyObject *args)¶
-
callback_data *
callback_data_new
(PyObject *func, PyObject *args, PyObject *kwargs)¶
-
PyObject *
register_readonly_callback
(PyObject *self, PyObject *args)¶
-
PyObject *
register_rwsynch_callback
(PyObject *self, PyObject *args)¶
-
PyObject *
register_nextstep_callback
(PyObject *self, PyObject *args)¶
-
PyObject *
register_timed_callback
(PyObject *self, PyObject *args)¶
-
PyObject *
register_value_change_callback
(PyObject *self, PyObject *args)¶
-
PyObject *
iterate
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
next
(gpi_hdl_Object<gpi_iterator_hdl> *self)¶
-
PyObject *
get_signal_val_binstr
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_signal_val_str
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_signal_val_real
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_signal_val_long
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
set_signal_val_binstr
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
set_signal_val_str
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
set_signal_val_real
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
set_signal_val_long
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_definition_name
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_definition_file
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_handle_by_name
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_handle_by_index
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_root_handle
(PyObject *self, PyObject *args)¶
-
PyObject *
get_name_string
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_type
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_const
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_type_string
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
is_running
(PyObject *self, PyObject *args)¶
-
PyObject *
get_sim_time
(PyObject *self, PyObject *args)¶
-
PyObject *
get_precision
(PyObject *self, PyObject *args)¶
-
PyObject *
get_simulator_product
(PyObject *m, PyObject *args)¶
-
PyObject *
get_simulator_version
(PyObject *m, PyObject *args)¶
-
PyObject *
get_num_elems
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
get_range
(gpi_hdl_Object<gpi_sim_hdl> *self, PyObject *args)¶
-
PyObject *
stop_simulator
(PyObject *self, PyObject *args)¶
-
PyObject *
deregister
(gpi_hdl_Object<gpi_cb_hdl> *self, PyObject *args)¶
-
PyObject *
log_level
(PyObject *self, PyObject *args)¶
-
int
add_module_constants
(PyObject *simulator)¶
-
int
add_module_types
(PyObject *simulator)¶
-
PyMODINIT_FUNC
PyInit_simulator
(void)¶
Typedefs
-
typedef int (*
gpi_function_t
)(const void*)¶
-
struct
sim_time
¶