vpi_register_cb 注册自定义的回调函数

1.vpi_register_cb函数接口:

vpiHandle vpi_register_cb(p_cb_data cb_data_p);

其中,p_cb_data结构定义如下:

typedef struct t_cb_data
{
    PLI_INT32 reason;
    PLI_INT32 (*cb_rtn) (struct t_cb_data *);
    vpiHandle obj;
    p_vpi_time time;
    p_vpi_value value;
    PLI_INT32 index;
    PLI_BYTE8 *user_data; 
}s_cb_data, *p_cb_data;

2.struct t_cb_data中各个成员的含义

2.1 reason:

对于vpi回调来说,非常重要的一点是“什么时候触发回调”,reason就用来描述这一点。

举几个常见reason取值的例子:

#define cbValueChange 1      //用来获取value change
#define cbAtStartOfSimTime 5 //sim start 时触发
#define cbEndOfSimulation    //用于simulation结束后,程序退出前触发,可以用来做程序的一些推出前 
                             //的收尾工作

#define cbStartOfSimulation  //simulation开始时触发,准确的说是在time 0周期的开始时触发
                             //(beginning of time - simulation cycle)

#define cbAtStartOfSimTime   //在指定的某个仿真时间中(struct t_cb_data中time字段指定)第一个执行此回调
 

上一篇:寄存器位查看工具——寄存器小精灵


下一篇:关于java WatchService使用的研究