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)