ext/vlog.c in ruby-vpi-12.1.0 vs ext/vlog.c in ruby-vpi-13.0.0

- old
+ new

@@ -18,45 +18,38 @@ along with Ruby-VPI; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "vlog.h" - #include "relay.h" -#include <stdlib.h> -verilog_tf_funcSig(vlog_ruby_init) { +verilog_cb_funcSig(vlog_relay_main) { relay_init(); - relay_ruby_run(); - verilog_tf_funcReturn(0); + relay_main(); + verilog_cb_funcReturn(0); } -verilog_tf_funcSig(vlog_ruby_relay) { +verilog_cb_funcSig(vlog_relay_ruby) { relay_ruby(); - verilog_tf_funcReturn(0); + verilog_cb_funcReturn(0); } -void vlog_bind_task(PLI_BYTE8* apTaskName, verilog_tf_funcPtr(apTaskDef)) { - s_vpi_systf_data tf; - tf.type = vpiSysTask; - tf.sysfunctype = 0; - tf.tfname = apTaskName; - tf.calltf = (verilog_tf_funcPtr_strict())apTaskDef; - tf.compiletf = NULL; - tf.sizetf = NULL; - tf.user_data = NULL; - - vpi_register_systf(&tf); -} - /** - Binds the default VPI tasks (provided by Ruby-VPI) before the Verilog simulator begins to simulate. + Registers a callback at start of simulation to vlog_relay_main(); */ void vlog_startup() { - vlog_bind_task("$ruby_init", vlog_ruby_init); - vlog_bind_task("$ruby_relay", vlog_ruby_relay); + s_cb_data call; + + call.reason = cbStartOfSimulation; + call.cb_rtn = vlog_relay_main; + call.obj = NULL; + call.time = NULL; + call.value = NULL; + call.user_data = NULL; + + vpi_free_object(vpi_register_cb(&call)); } void (*vlog_startup_routines[])() = { vlog_startup, 0 }; #if defined(PRAGMATIC_CVER) || defined(SYNOPSYS_VCS)