Why is the OS dynamic loader unable to find my .so PLI program libraries?
Include file vpi_user.h, #include "cver/pli_incs/vpi_user.h" #include "cver/pli_incs/cv_vpi_user.h"
Assume you have this register routine
void hello_world_register(){
s_vpi_systf_data tf_data;
tf_data.type = vpiSysTask;
tf_data.sysfunctype = 0;
tf_data.tfname = "$hello_world";
tf_data.calltf = hello_world_calltf;
tf_data.compiletf = hello_world_compiletf;
tf_data.sizetf = NULL;
tf_data.user_data = NULL;
vpi_register_systf(&tf_data);
}
To insert following lines into PLI .c file to make CVER take PLI call
void (*vlog_startup_routines[])() = {
/*** add user entries here ***/
hello_world_register,
0 /*** final entry must be 0 ***/
};
/* dummy +loadvpi= boostrap routine - mimics old style exec all routines */
/* in standard PLI vlog_startup_routines */
void vpi_compat_bootstrap(void){
int i;
for (i = 0;; i++){
if (vlog_startup_routines[i] == NULL) break;
vlog_startup_routines[i]();
}
}