Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / sim / sim_meas.h
1 /****************************************************************************/
2 /* */
3 /* Chaine de CAO & VLSI AVERTEC */
4 /* */
5 /* Produit : AVERTEC global tools */
6 /* Fichier : sim_meas.h */
7 /* */
8 /* © copyright 2000 AVERTEC */
9 /* Tous droits reserves */
10 /* */
11 /* Auteur(s) : Antony PINTO */
12 /* */
13 /****************************************************************************/
14
15 #ifndef SIM_MEAS_H
16 #define SIM_MEAS_H
17
18 #include "sim_message.h"
19 #include <stdarg.h>
20 #include MUT_H
21 #include SIM_H
22
23 #define SIM_MEAS_LABEL (int)0
24 #define SIM_MEAS_SIG (int)1
25 #define SIM_MEAS_VALUE (int)2
26 #define SIM_MEAS_TRANS (int)3
27 #define SIM_MEAS_NTRANS (int)4
28 #define SIM_MEAS_UP (int)0
29 #define SIM_MEAS_DN (int)1
30
31 #define SIM_MEAS_A4S (int)4
32 #define SIM_MEAS_NBSIG (int)2
33 #define SIM_MEAS_NBARG (int)(SIM_MEAS_A4S * SIM_MEAS_NBSIG + 1)
34
35 typedef struct sim_meas_cmd
36 {
37 /* order of each argument */
38 short ARGORDER[SIM_MEAS_NBARG];
39 /* last representing string */
40 char *LAST[SIM_MEAS_NBSIG];
41 /* transition U and D representing string */
42 char *TRANS[SIM_MEAS_NBSIG][2];
43 /* command string */
44 char *CMDSTR;
45 } sim_meas_cmd;
46
47 typedef struct sim_meas_arg
48 {
49 struct sim_meas_arg *NEXT;
50 char *ARG[SIM_MEAS_NBARG];/*list of argument to be driven*/
51 sim_meas_cmd *REFCMD; /* reference command rule for drive */
52 } sim_meas_arg;
53
54 typedef struct sim_meas_print
55 {
56 struct sim_meas_print *NEXT;
57 char *LABEL;
58 char *SIGNAME[2];
59 char SIGTYPE[2];
60 char *TRANSITION;
61 int DELAY_TYPE;
62 SIM_FLOAT TH_IN, TH_OUT;
63 } sim_meas_print;
64
65 void sim_decodeMeasCmd(char *env);
66 void sim_decodeMeasCmdFree();
67 extern void sim_affectMeasCmdArg(sim_model *model, char *label, char *sig1, char trans1, int ntrans1, double val1, char *sig2, char trans2, int ntrans2, double val2);
68 extern void sim_printMeasCmd(sim_model *model, FILE *fd);
69 extern void sim_freeMeasArg(sim_model *model, char *label);
70 extern void sim_freeMeasAllArg(sim_model *model);
71 extern void sim_freePrn(sim_model *model);
72
73 extern int sim_getMeas(sim_model *model, char *delay, char *slope, double *dval, double *sval);
74 extern int sim_getMeasSlope(sim_model *model, char *label, double *value);
75 extern int sim_getMeasDelay(sim_model *model, char *label, double *value);
76 extern int sim_getMcMeas( sim_model *model, char *label, double *value, int idmc );
77 extern void sim_addMeas(sim_model *model, char *delay, char *slope, char *sig1, char *sig2, char *transition, int delay_type);
78 extern void sim_addMeasDelay(sim_model *model, char *delay, char *sig1, char *sig2, char *transition, int delay_type);
79 extern void sim_addMeasSlope(sim_model *model, char *slope, char *sig, char *transition, int delay_type);
80
81 extern void sim_addMeasWithoutNameCheck(sim_model *model, char *delay, char *slope, char *sig1, char *sig2, char *transition, int delay_type);
82 extern void sim_addMeasDelayWithoutNameCheck(sim_model *model, char *delay, char *sig1, char *sig2, char *transition, int delay_type);
83 extern void sim_addMeasSlopeWithoutNameCheck(sim_model *model, char *slope, char *sig, char *transition, int delay_type);
84 int sim_getTransition(sim_model *model, char *trans, char t[2], long n[2]);
85
86 #endif