void draw_vpi_task_call(ivl_statement_t tnet) { unsigned parm_count = ivl_stmt_parm_count(tnet); const char *command = "error"; switch (ivl_stmt_sfunc_as_task(tnet)) { case IVL_SFUNC_AS_TASK_ERROR: command = "%vpi_call"; break; case IVL_SFUNC_AS_TASK_WARNING: command = "%vpi_call/w"; break; case IVL_SFUNC_AS_TASK_IGNORE: command = "%vpi_call/i"; break; } if (parm_count == 0) { fprintf(vvp_out, " %s %u %u \"%s\";\n", command, ivl_file_table_index(ivl_stmt_file(tnet)), ivl_stmt_lineno(tnet), ivl_stmt_name(tnet)); } else { char call_string[1024]; sprintf(call_string, " %s %u %u \"%s\"", command, ivl_file_table_index(ivl_stmt_file(tnet)), ivl_stmt_lineno(tnet), ivl_stmt_name(tnet)); draw_vpi_taskfunc_args(call_string, tnet, 0); } }
int draw_vpi_rfunc_call(ivl_expr_t fnet) { char call_string[1024]; int res = allocate_word(); sprintf(call_string, " %%vpi_func/r \"%s\", %d", ivl_expr_name(fnet), res); draw_vpi_taskfunc_args(call_string, 0, fnet); return res; }
struct vector_info draw_vpi_func_call(ivl_expr_t fnet, unsigned wid) { char call_string[1024]; struct vector_info res; res.base = allocate_vector(wid); res.wid = wid; sprintf(call_string, " %%vpi_func \"%s\", %u, %u", ivl_expr_name(fnet), res.base, res.wid); draw_vpi_taskfunc_args(call_string, 0, fnet); return res; }
struct vector_info draw_vpi_func_call(ivl_expr_t fnet, unsigned wid) { char call_string[1024]; struct vector_info res; res.base = allocate_vector(wid); res.wid = wid; if (res.base == 0) { fprintf(stderr, "%s:%u: vvp.tgt error: " "Unable to allocate %u thread bits for system function result.\n", ivl_expr_file(fnet), ivl_expr_lineno(fnet), wid); vvp_errors += 1; } sprintf(call_string, " %%vpi_func %u %u \"%s\", %u, %u", ivl_file_table_index(ivl_expr_file(fnet)), ivl_expr_lineno(fnet), ivl_expr_name(fnet), res.base, res.wid); draw_vpi_taskfunc_args(call_string, 0, fnet); return res; }
void draw_vpi_task_call(ivl_statement_t tnet) { char call_string[1024]; sprintf(call_string, " %%vpi_call \"%s\"", ivl_stmt_name(tnet)); draw_vpi_taskfunc_args(call_string, tnet, 0); }