blob: 7850f3b063533268310b930800921b4fcd00cd57 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#include "vpi.h"
vpi_api_t vpi_api;
/*==========================================================================
User Functions
=============================================================================*/
PLI_INT32 init_clks_calltf(PLI_BYTE8 *user_data) {
vpi_api.init_clks();
return 0;
}
PLI_INT32 init_rsts_calltf(PLI_BYTE8 *user_data) {
vpi_api.init_rsts();
return 0;
}
PLI_INT32 init_ins_calltf(PLI_BYTE8 *user_data) {
vpi_api.init_ins();
return 0;
}
PLI_INT32 init_outs_calltf(PLI_BYTE8 *user_data) {
vpi_api.init_outs();
return 0;
}
PLI_INT32 init_sigs_calltf(PLI_BYTE8 *user_data) {
vpi_api.init_sigs();
return 0;
}
PLI_INT32 tick_calltf(PLI_BYTE8 *user_data) {
vpi_api.tick();
return 0;
}
PLI_INT32 tick_cb(p_cb_data cb_data) {
vpi_api.tick();
return 0;
}
/*==========================================================================
Registration Functions
=============================================================================*/
void init_clks_registration() {
s_vpi_systf_data tf_data;
tf_data.type = vpiSysTask;
tf_data.tfname = (PLI_BYTE8*) "$init_clks";
tf_data.sizetf = NULL;
tf_data.calltf = init_clks_calltf;
tf_data.compiletf = NULL;
tf_data.user_data = NULL;
vpi_register_systf(&tf_data);
return;
}
void init_rsts_registration() {
s_vpi_systf_data tf_data;
tf_data.type = vpiSysTask;
tf_data.tfname = (PLI_BYTE8*) "$init_rsts";
tf_data.sizetf = NULL;
tf_data.calltf = init_rsts_calltf;
tf_data.compiletf = NULL;
tf_data.user_data = NULL;
vpi_register_systf(&tf_data);
return;
}
void init_ins_registration() {
s_vpi_systf_data tf_data;
tf_data.type = vpiSysTask;
tf_data.tfname = (PLI_BYTE8*) "$init_ins";
tf_data.sizetf = NULL;
tf_data.calltf = init_ins_calltf;
tf_data.compiletf = NULL;
tf_data.user_data = NULL;
vpi_register_systf(&tf_data);
return;
}
void init_outs_registration() {
s_vpi_systf_data tf_data;
tf_data.type = vpiSysTask;
tf_data.tfname = (PLI_BYTE8*) "$init_outs";
tf_data.sizetf = NULL;
tf_data.calltf = init_outs_calltf;
tf_data.compiletf = NULL;
tf_data.user_data = NULL;
vpi_register_systf(&tf_data);
return;
}
void init_sigs_registration() {
s_vpi_systf_data tf_data;
tf_data.type = vpiSysTask;
tf_data.tfname = (PLI_BYTE8*) "$init_sigs";
tf_data.sizetf = NULL;
tf_data.calltf = init_sigs_calltf;
tf_data.compiletf = NULL;
tf_data.user_data = NULL;
vpi_register_systf(&tf_data);
return;
}
void tick_registration() {
s_vpi_systf_data tf_data;
tf_data.type = vpiSysTask;
tf_data.tfname = (PLI_BYTE8*) "$tick";
tf_data.sizetf = NULL;
tf_data.calltf = tick_calltf;
tf_data.compiletf = NULL;
tf_data.user_data = NULL;
vpi_register_systf(&tf_data);
return;
}
/*==========================================================================
Start-up Array
=============================================================================*/
void (*vlog_startup_routines[]) () = {
init_clks_registration,
init_rsts_registration,
init_ins_registration,
init_outs_registration,
init_sigs_registration,
tick_registration,
0
};
|