Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / pli / veriuser.h
CommitLineData
86530b38
AT
1/*
2* ========== Copyright Header Begin ==========================================
3*
4* OpenSPARC T2 Processor File: veriuser.h
5* Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
6* 4150 Network Circle, Santa Clara, California 95054, U.S.A.
7*
8* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9*
10* This program is free software; you can redistribute it and/or modify
11* it under the terms of the GNU General Public License as published by
12* the Free Software Foundation; version 2 of the License.
13*
14* This program is distributed in the hope that it will be useful,
15* but WITHOUT ANY WARRANTY; without even the implied warranty of
16* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17* GNU General Public License for more details.
18*
19* You should have received a copy of the GNU General Public License
20* along with this program; if not, write to the Free Software
21* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22*
23* For the avoidance of doubt, and except that if any non-GPL license
24* choice is available it will apply instead, Sun elects to use only
25* the General Public License version 2 (GPLv2) at this time for any
26* software where a choice of GPL license versions is made
27* available with the language indicating that GPLv2 or any later version
28* may be used, or where a choice of which version of the GPL is applied is
29* otherwise unspecified.
30*
31* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
32* CA 95054 USA or visit www.sun.com if you need additional information or
33* have any questions.
34*
35*
36* ========== Copyright Header End ============================================
37*/
38#ifndef VERIUSER_H
39#define VERIUSER_H
40
41/*---------------------------------------------------------------------------*/
42/*------------------------------- definitions -------------------------------*/
43/*---------------------------------------------------------------------------*/
44
45#if defined(__cplusplus)
46extern "C" {
47#endif
48
49/*----------------------------- general defines -----------------------------*/
50
51#ifndef PLI_EXTRAS
52#define PLI_EXTRAS 1
53#define true 1
54#define TRUE 1
55#define false 0
56#define FALSE 0
57#define bool int
58#endif /* PLI_EXTRAS */
59
60/*---------------------- defines for error interception ---------------------*/
61
62#define ERR_MESSAGE 1
63#define ERR_WARNING 2
64#define ERR_ERROR 3
65#define ERR_INTERNAL 4
66#define ERR_SYSTEM 5
67
68/*-------------- values for reason parameter to misctf routines -------------*/
69
70#define reason_checktf 1
71#define REASON_CHECKTF reason_checktf
72#define reason_sizetf 2
73#define REASON_SIZETF reason_sizetf
74#define reason_calltf 3
75#define REASON_CALLTF reason_calltf
76#define reason_save 4
77#define REASON_SAVE reason_save
78#define reason_restart 5
79#define REASON_RESTART reason_restart
80#define reason_disable 6
81#define REASON_DISABLE reason_disable
82#define reason_paramvc 7
83#define REASON_PARAMVC reason_paramvc
84#define reason_synch 8
85#define REASON_SYNCH reason_synch
86#define reason_finish 9
87#define REASON_FINISH reason_finish
88#define reason_reactivate 10
89#define REASON_REACTIVATE reason_reactivate
90#define reason_rosynch 11
91#define REASON_ROSYNCH reason_rosynch
92#define reason_paramdrc 15
93#define REASON_PARAMDRC reason_paramdrc
94#define reason_endofcompile 16
95#define REASON_ENDOFCOMPILE reason_endofcompile
96#define reason_scope 17
97#define REASON_SCOPE reason_scope
98#define reason_interactive 18
99#define REASON_INTERACTIVE reason_interactive
100#define reason_reset 19
101#define REASON_RESET reason_reset
102#define reason_endofreset 20
103#define REASON_ENDOFRESET reason_endofreset
104#define reason_force 21
105#define REASON_FORCE reason_force
106#define reason_release 22
107#define REASON_RELEASE reason_release
108#define reason_startofsave 27
109#define reason_startofrestart 28
110#define REASON_MAX 28
111
112/*-- types used by tf_typep() and expr_type field in tf_exprinfo structure --*/
113#define tf_nullparam 0
114#define TF_NULLPARAM tf_nullparam
115#define tf_string 1
116#define TF_STRING tf_string
117#define tf_specialparam 2
118#define TF_SPECIALPARAM tf_specialparam
119#define tf_readonly 10
120#define TF_READONLY tf_readonly
121#define tf_readwrite 11
122#define TF_READWRITE tf_readwrite
123#define tf_rwbitselect 12
124#define TF_RWBITSELECT tf_rwbitselect
125#define tf_rwpartselect 13
126#define TF_RWPARTSELECT tf_rwpartselect
127#define tf_rwmemselect 14
128#define TF_RWMEMSELECT tf_rwmemselect
129#define tf_readonlyreal 15
130#define TF_READONLYREAL tf_readonlyreal
131#define tf_readwritereal 16
132#define TF_READWRITEREAL tf_readwritereal
133
134/*---------- types used by node_type field in tf_nodeinfo structure ---------*/
135#define tf_null_node 100
136#define TF_NULL_NODE tf_null_node
137#define tf_reg_node 101
138#define TF_REG_NODE tf_reg_node
139#define tf_integer_node 102
140#define TF_INTEGER_NODE tf_integer_node
141#define tf_time_node 103
142#define TF_TIME_NODE tf_time_node
143#define tf_netvector_node 104
144#define TF_NETVECTOR_NODE tf_netvector_node
145#define tf_netscalar_node 105
146#define TF_NETSCALAR_NODE tf_netscalar_node
147#define tf_memory_node 106
148#define TF_MEMORY_NODE tf_memory_node
149#define tf_real_node 107
150#define TF_REAL_NODE tf_real_node
151#define tf_mda_node 108
152#define TF_MDA_NODE tf_mda_node
153#define tf_wiremda_node 109
154#define TF_WIREMDA_NODE tf_wiremda_node
155
156
157/*---------------------------------------------------------------------------*/
158/*-------------------------- structure definitions --------------------------*/
159/*---------------------------------------------------------------------------*/
160
161/*----- structure used with tf_exprinfo() to get expression information -----*/
162typedef struct t_tfexprinfo
163{
164 short expr_type;
165 short padding;
166 struct t_vecval *expr_value_p;
167 double real_value;
168 char *expr_string;
169 int expr_ngroups;
170 int expr_vec_size;
171 int expr_sign;
172 int expr_lhs_select;
173 int expr_rhs_select;
174} s_tfexprinfo, *p_tfexprinfo;
175
176/*------- structure for use with tf_nodeinfo() to get node information ------*/
177typedef struct t_tfnodeinfo
178{
179 short node_type;
180 short padding;
181 union {
182 struct t_vecval *vecval_p;
183 struct t_strengthval *strengthval_p;
184 char *memoryval_p;
185 double *real_val_p;
186 } node_value;
187 char *node_symbol;
188 int node_ngroups;
189 int node_vec_size;
190 int node_sign;
191 int node_ms_index;
192 int node_ls_index;
193 int node_mem_size;
194 int node_lhs_element;
195 int node_rhs_element;
196 int *node_handle;
197} s_tfnodeinfo, *p_tfnodeinfo;
198
199/*------- structure for use with tf_mdanodeinfo() to get mda
200node information ------ */
201
202typedef struct t_tfmdanodeinfo
203{
204 short node_type;
205 short node_fulltype;
206 char *memoryval_p;
207 char *node_symbol;
208 int node_ngroups;
209 int node_vec_size;
210 int node_sign;
211 int node_ms_index;
212 int node_ls_index;
213 int node_mem_size;
214 int *node_lhs_element;
215 int *node_rhs_element;
216 int node_dimension;
217 int *node_handle;
218 int node_vec_type;
219} s_tfmdanodeinfo, *p_tfmdanodeinfo;
220
221
222/*--------------------- data structure of vector values ---------------------*/
223typedef struct t_vecval
224{
225 int avalbits;
226 int bvalbits;
227} s_vecval, *p_vecval;
228
229/*--------------- data structure of scalar net strength values --------------*/
230typedef struct t_strengthval
231{
232 int strength0;
233 int strength1;
234} s_strengthval, *p_strengthval;
235
236/*---------------------------------------------------------------------------*/
237/*--------------------------- routine definitions ---------------------------*/
238/*---------------------------------------------------------------------------*/
239
240#if defined(__STDC__) || defined(__cplusplus) || defined(_AIX)
241
242#ifndef PROTO_PARAMS
243#define PROTO_PARAMS(params) params
244#define DEFINED_PROTO_PARAMS
245#endif
246#ifndef EXTERN
247#define EXTERN
248#define DEFINED_EXTERN
249#endif
250
251#else
252
253#ifndef PROTO_PARAMS
254#define PROTO_PARAMS(params) (/* nothing */)
255#define DEFINED_PROTO_PARAMS
256#endif
257#ifndef EXTERN
258#define EXTERN extern
259#define DEFINED_EXTERN
260#endif
261
262#endif /* __STDC__ */
263
264/* Make sure the 64-bit platforms are correctly prototyped. */
265#if !defined(_LP64)
266#if defined(__sparcv9) || defined(__LP64__) || defined(__ia64)
267#define _LP64 1
268# endif
269#endif
270
271#if defined(_LP64)
272# define LP64BIT long /* a 64-bit object */
273#else
274# define LP64BIT int /* a 32-bit object */
275#endif
276
277EXTERN void io_mcdprintf PROTO_PARAMS((int mcd, const char *format, ...));
278EXTERN void io_printf PROTO_PARAMS((char *format, ...));
279EXTERN char *mc_scan_plusargs PROTO_PARAMS((const char *plusarg));
280EXTERN int tf_add_long PROTO_PARAMS((int *aof_lowtime1, int *aof_hightime1, int lowtime2, int hightime2));
281EXTERN int tf_asynchoff PROTO_PARAMS((void));
282EXTERN int tf_asynchon PROTO_PARAMS((void));
283EXTERN int tf_clearalldelays PROTO_PARAMS((void));
284EXTERN int tf_compare_long PROTO_PARAMS((unsigned int low1, unsigned int high1, unsigned int low2, unsigned int high2));
285EXTERN int tf_copypvc_flag PROTO_PARAMS((int nparam));
286EXTERN void tf_divide_long PROTO_PARAMS((int *aof_low1, int *aof_high1, int low2, int high2));
287EXTERN int tf_dofinish PROTO_PARAMS((void));
288EXTERN int tf_dostop PROTO_PARAMS((void));
289EXTERN int tf_error PROTO_PARAMS((char *fmt, ...));
290EXTERN int tf_evaluatep PROTO_PARAMS((int pnum));
291EXTERN p_tfexprinfo tf_exprinfo PROTO_PARAMS((int pnum, p_tfexprinfo pinfo));
292EXTERN char *tf_getcstringp PROTO_PARAMS((int nparam));
293EXTERN char *tf_getinstance PROTO_PARAMS((void));
294EXTERN int tf_getlongp PROTO_PARAMS((int *aof_highvalue, int pnum));
295EXTERN int tf_getlongtime PROTO_PARAMS((int *aof_hightime));
296EXTERN int tf_getnextlongtime PROTO_PARAMS((int *aof_lowtime, int *aof_hightime));
297EXTERN LP64BIT tf_getp PROTO_PARAMS((int pnum));
298EXTERN int tf_getpchange PROTO_PARAMS((int nparam));
299EXTERN double tf_getrealp PROTO_PARAMS((int pnum));
300EXTERN double tf_getrealtime PROTO_PARAMS((void));
301EXTERN char *tf_gettflist PROTO_PARAMS((void));
302EXTERN int tf_gettime PROTO_PARAMS((void));
303EXTERN int tf_gettimeprecision PROTO_PARAMS((void));
304EXTERN int tf_gettimeunit PROTO_PARAMS((void));
305EXTERN char *tf_getworkarea PROTO_PARAMS((void));
306EXTERN int tf_iasynchoff PROTO_PARAMS((char *inst));
307EXTERN int tf_iasynchon PROTO_PARAMS((char *inst));
308EXTERN int tf_iclearalldelays PROTO_PARAMS((char *inst));
309EXTERN int tf_icopypvc_flag PROTO_PARAMS((int nparam, char *inst));
310EXTERN int tf_ievaluatep PROTO_PARAMS((int pnum, char *inst));
311EXTERN p_tfexprinfo tf_iexprinfo PROTO_PARAMS((int pnum, p_tfexprinfo pinfo, char *inst));
312EXTERN char *tf_igetcstringp PROTO_PARAMS((int nparam, char *inst));
313EXTERN int tf_igetlongp PROTO_PARAMS((int *aof_highvalue, int pnum, char *inst));
314EXTERN int tf_igetlongtime PROTO_PARAMS((int *aof_hightime, char *inst));
315EXTERN LP64BIT tf_igetp PROTO_PARAMS((int pnum, char *inst));
316EXTERN int tf_igetpchange PROTO_PARAMS((int nparam, char *inst));
317EXTERN double tf_igetrealp PROTO_PARAMS((int pnum, char *inst));
318EXTERN double tf_igetrealtime PROTO_PARAMS((char *inst));
319EXTERN int tf_igettime PROTO_PARAMS((char *inst));
320EXTERN int tf_igettimeprecision PROTO_PARAMS((char *inst));
321EXTERN int tf_igettimeunit PROTO_PARAMS((char *inst));
322EXTERN char *tf_igetworkarea PROTO_PARAMS((char *inst));
323EXTERN char *tf_imipname PROTO_PARAMS((char *cell));
324EXTERN int tf_imovepvc_flag PROTO_PARAMS((int nparam, char *inst));
325EXTERN p_tfnodeinfo tf_inodeinfo PROTO_PARAMS((int pnum, p_tfnodeinfo pinfo, char *inst));
326EXTERN int tf_inump PROTO_PARAMS((char *inst));
327EXTERN int tf_ipropagatep PROTO_PARAMS((int pnum, char *inst));
328EXTERN int tf_iputlongp PROTO_PARAMS((int pnum, int lowvalue, int highvalue, char *inst));
329EXTERN int tf_iputp PROTO_PARAMS((int pnum, int value, char *inst));
330EXTERN int tf_iputrealp PROTO_PARAMS((int pnum, double value, char *inst));
331EXTERN int tf_irosynchronize PROTO_PARAMS((char *inst));
332EXTERN int tf_isetdelay PROTO_PARAMS((int delay, char *inst));
333EXTERN int tf_isetlongdelay PROTO_PARAMS((int lowdelay, int highdelay, char *inst));
334EXTERN int tf_isetrealdelay PROTO_PARAMS((double realdelay, char *inst));
335EXTERN int tf_isetworkarea PROTO_PARAMS((char *workarea, char *inst));
336EXTERN int tf_isizep PROTO_PARAMS((int pnum, char *inst));
337EXTERN char *tf_ispname PROTO_PARAMS((char *cell));
338EXTERN int tf_istrdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, int delay, int delaytype, char *inst));
339EXTERN char *tf_istrgetp PROTO_PARAMS((int pnum, int format_char, char *inst));
340EXTERN int tf_istrlongdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, int lowdelay, int highdelay, int delaytype, char *inst));
341EXTERN int tf_istrrealdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, double realdelay, int delaytype, char *inst));
342EXTERN int tf_isynchronize PROTO_PARAMS((char *inst));
343EXTERN int tf_itestpvc_flag PROTO_PARAMS((int nparam, char *inst));
344EXTERN int tf_itypep PROTO_PARAMS((int pnum, char *inst));
345EXTERN void tf_long_to_real PROTO_PARAMS((int int_lo, int int_hi, double *aof_real));
346EXTERN char *tf_longtime_tostr PROTO_PARAMS((int lowtime, int hightime));
347EXTERN int tf_message PROTO_PARAMS((int level, char *facility, char *messno, char *message, ...));
348EXTERN char *tf_mipname PROTO_PARAMS((void));
349EXTERN int tf_movepvc_flag PROTO_PARAMS((int nparam));
350EXTERN void tf_multiply_long PROTO_PARAMS((int *aof_low1, int *aof_high1, int low2, int high2));
351EXTERN p_tfnodeinfo tf_nodeinfo PROTO_PARAMS((int pnum, p_tfnodeinfo pinfo));
352EXTERN int tf_nump PROTO_PARAMS((void));
353EXTERN int tf_propagatep PROTO_PARAMS((int pnum));
354EXTERN int tf_putlongp PROTO_PARAMS((int pnum, int lowvalue, int highvalue));
355EXTERN int tf_putp PROTO_PARAMS((int pnum, int value));
356EXTERN int tf_putrealp PROTO_PARAMS((int pnum, double value));
357EXTERN int tf_read_restart PROTO_PARAMS((char *blockptr, int blocklen));
358EXTERN void tf_real_to_long PROTO_PARAMS((double real, int *aof_int_lo, int *aof_int_hi));
359EXTERN int tf_rosynchronize PROTO_PARAMS((void));
360EXTERN void tf_scale_longdelay PROTO_PARAMS((char *cell, int delay_lo, int delay_hi, int *aof_delay_lo, int *aof_delay_hi));
361EXTERN void tf_scale_realdelay PROTO_PARAMS((char *cell, double realdelay, double *aof_realdelay));
362EXTERN int tf_setdelay PROTO_PARAMS((int delay));
363EXTERN int tf_setlongdelay PROTO_PARAMS((int lowdelay, int highdelay));
364EXTERN int tf_setrealdelay PROTO_PARAMS((double realdelay));
365EXTERN int tf_setworkarea PROTO_PARAMS((char *workarea));
366EXTERN int tf_sizep PROTO_PARAMS((int pnum));
367EXTERN char *tf_spname PROTO_PARAMS((void));
368EXTERN int tf_strdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, int delay, int delaytype));
369EXTERN char *tf_strgetp PROTO_PARAMS((int pnum, int format_char));
370EXTERN char *tf_strgetscaledtime PROTO_PARAMS((void));
371EXTERN char *tf_strgettime PROTO_PARAMS((void));
372EXTERN int tf_strlongdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, int lowdelay, int highdelay, int delaytype));
373EXTERN int tf_strrealdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, double realdelay, int delaytype));
374EXTERN int tf_subtract_long PROTO_PARAMS((int *aof_lowtime1, int *aof_hightime1, int lowtime2, int hightime2));
375EXTERN int tf_synchronize PROTO_PARAMS((void));
376EXTERN int tf_testpvc_flag PROTO_PARAMS((int nparam));
377EXTERN int tf_text PROTO_PARAMS((char *fmt, ...));
378EXTERN int tf_typep PROTO_PARAMS((int pnum));
379EXTERN void tf_unscale_longdelay PROTO_PARAMS((char *cell, int delay_lo, int delay_hi, int *aof_delay_lo, int *aof_delay_hi));
380EXTERN void tf_unscale_realdelay PROTO_PARAMS((char *cell, double realdelay, double *aof_realdelay));
381EXTERN int tf_warning PROTO_PARAMS((char *fmt, ...));
382EXTERN int tf_write_save PROTO_PARAMS((char *blockptr, int blocklen));
383EXTERN char *tf_getroutine PROTO_PARAMS((void));
384EXTERN char *tf_igetroutine PROTO_PARAMS((char *inst));
385
386/* routines added for MDA support */
387EXTERN p_tfmdanodeinfo tf_mdanodeinfo PROTO_PARAMS((int pnum, p_tfmdanodeinfo pinfo));
388EXTERN p_tfmdanodeinfo tf_imdanodeinfo PROTO_PARAMS((int pnum, p_tfmdanodeinfo pinfo, char *inst));
389
390
391#ifdef DEFINED_PROTO_PARAMS
392# undef DEFINED_PROTO_PARAMS
393# undef PROTO_PARAMS
394#endif
395
396#ifdef DEFINED_EXTERN
397# undef DEFINED_EXTERN
398# undef EXTERN
399#endif
400
401#if defined(__cplusplus)
402} /* extern "C" */
403#endif
404
405#endif /* VERIUSER_H */