iverilog/ivtest/vpi/timescale.c

75 lines
1.9 KiB
C

#include "veriuser.h"
extern PLI_INT32 tf_getlongsimtime(PLI_INT32 *high);
static int
mytest(int ud, int reason)
{
PLI_INT32 ht, lt;
PLI_BYTE8 *cp;
PLI_BYTE8 *inst = tf_getinstance();
PLI_BYTE8 *name = tf_spname();
(void)ud; /* Parameter is not used. */
(void)reason; /* Parameter is not used. */
io_printf("Module %s\n", name);
lt = tf_gettime();
io_printf("\ttf_gettime()\t\t\t-> %d\n", (int)lt);
cp = tf_strgettime();
io_printf("\ttf_strgettime()\t\t\t-> %s\n", cp);
lt = tf_getlongtime(&ht);
io_printf("\ttf_getlongtime()\t\t-> %d/%d\n", (int)ht, (int)lt);
lt = tf_igetlongtime(&ht, inst);
io_printf("\ttf_igetlongtime(inst)\t\t-> %d/%d\n", (int)ht, (int)lt);
lt = tf_getlongsimtime(&ht);
io_printf("\ttf_getlongsimtime()\t\t-> %d/%d\n", (int)ht, (int)lt);
lt = tf_gettimeprecision();
io_printf("\ttf_gettimeprecision()\t\t-> %d\n", (int)lt);
lt = tf_igettimeprecision(inst);
io_printf("\ttf_igettimeprecision(inst)\t-> %d\n", (int)lt);
lt = tf_gettimeunit();
io_printf("\ttf_gettimeunit()\t\t-> %d\n", (int)lt);
lt = tf_igettimeunit(inst);
io_printf("\ttf_gettimeunit(inst)\t\t-> %d\n", (int)lt);
lt = tf_igettimeunit(0);
io_printf("\ttf_gettimeunit(0)\t\t-> %d\n", (int)lt);
return 0;
}
static int return_32(int ud, int reason)
{
(void)ud; /* Parameter is not used. */
(void)reason; /* Parameter is not used. */
return 32;
}
s_tfcell veriusertfs[2] = {
{ usertask, 0, 0, return_32, mytest, 0, "$mytest", 1, 0, 0, {0} },
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0} }
};
// Icarus registration
p_tfcell icarus_veriusertfs(void) {
return veriusertfs;
}
// Icarus Verilog compatibility
static void veriusertfs_register(void)
{
veriusertfs_register_table(veriusertfs);
}
void (*vlog_startup_routines[])(void) = { &veriusertfs_register, 0 };