1 /****************************************************************************/
3 /* Chaine de CAO & VLSI AVERTEC */
5 /* Produit : STM Version 1.00 */
6 /* Fichier : stm_modscm_false.c */
8 /* (c) copyright 2000 AVERTEC */
9 /* Tous droits reserves */
11 /* Auteur(s) : Gilles Augustins */
13 /****************************************************************************/
15 /****************************************************************************/
17 /****************************************************************************/
21 /****************************************************************************/
23 /****************************************************************************/
25 index | param. | signif.
26 --------------------------+---------+------------
28 --------------------------+---------+------------
34 --------------------------+---------+------------
35 6 + 7 * (i - 1) | Ci | link i
36 6 + 7 * (i - 1) + 1 | Cf | 1 to n - 1
37 6 + 7 * (i - 1) + 2 | acti |
38 6 + 7 * (i - 1) + 3 | bcti |
39 6 + 7 * (i - 1) + 4 | k3 |
40 6 + 7 * (i - 1) + 5 | k4 |
41 6 + 7 * (i - 1) + 6 | k5 |
42 --------------------------+---------+------------
43 6 + 7 * (n - 2) | Ci | link n
44 6 + 7 * (n - 2) + 1 | Cf |
45 6 + 7 * (n - 2) + 2 | acti |
46 6 + 7 * (n - 2) + 3 | bcti |
47 --------------------------+---------+------------
50 timing_scm
*stm_modscm_false_create (float *tab0
, float *tabi
, float *tabn
, float *tabf
)
54 timing_scm
*scm
= (timing_scm
*)mbkalloc (sizeof (struct timing_scm
));
55 scm
->TYPE
= STM_MODSCM_FALSE
;
56 scm
->PARAMS
.FALS
= (falseparams
*)mbkalloc (sizeof (struct falseparams
));
60 scm
->PARAMS
.FALS
->L0
= (float*)mbkalloc (STM_NB_LINK_0_PARAMS
* sizeof (float));
61 scm
->PARAMS
.FALS
->L0
[STM_CI_0
] = tab0
[STM_CI_0
];
62 scm
->PARAMS
.FALS
->L0
[STM_CF_0
] = tab0
[STM_CF_0
];
63 scm
->PARAMS
.FALS
->L0
[STM_K3_0
] = tab0
[STM_K3_0
];
64 scm
->PARAMS
.FALS
->L0
[STM_K4_0
] = tab0
[STM_K4_0
];
65 scm
->PARAMS
.FALS
->L0
[STM_K5_0
] = tab0
[STM_K5_0
];
67 scm
->PARAMS
.FALS
->L0
= NULL
;
69 /* link i = 1 to n - 1 */
71 scm
->PARAMS
.FALS
->LI
= (float*)mbkalloc ((1 + tabi
[STM_NB_I_LINKS
] * STM_NB_LINK_I_PARAMS
) * sizeof (float));
72 scm
->PARAMS
.FALS
->LI
[STM_NB_I_LINKS
] = tabi
[STM_NB_I_LINKS
];
73 for (i
= 0; i
< tabi
[STM_NB_I_LINKS
]; i
++) {
74 index
= 1 + i
* STM_NB_LINK_I_PARAMS
;
75 scm
->PARAMS
.FALS
->LI
[index
+ STM_CI_I
] = tabi
[index
+ STM_CI_I
];
76 scm
->PARAMS
.FALS
->LI
[index
+ STM_CF_I
] = tabi
[index
+ STM_CF_I
];
77 scm
->PARAMS
.FALS
->LI
[index
+ STM_ACTI_I
] = tabi
[index
+ STM_ACTI_I
];
78 scm
->PARAMS
.FALS
->LI
[index
+ STM_BCTI_I
] = tabi
[index
+ STM_BCTI_I
];
79 scm
->PARAMS
.FALS
->LI
[index
+ STM_K3_I
] = tabi
[index
+ STM_K3_I
];
80 scm
->PARAMS
.FALS
->LI
[index
+ STM_K4_I
] = tabi
[index
+ STM_K4_I
];
81 scm
->PARAMS
.FALS
->LI
[index
+ STM_K5_I
] = tabi
[index
+ STM_K5_I
];
84 scm
->PARAMS
.FALS
->LI
= NULL
;
88 scm
->PARAMS
.FALS
->LN
= (float*)mbkalloc (STM_NB_LINK_N_PARAMS
* sizeof (float));
89 scm
->PARAMS
.FALS
->LN
[STM_CI_N
] = tabn
[STM_CI_N
];
90 scm
->PARAMS
.FALS
->LN
[STM_CF_N
] = tabn
[STM_CF_N
];
91 scm
->PARAMS
.FALS
->LN
[STM_ACTI_N
] = tabn
[STM_ACTI_N
];
92 scm
->PARAMS
.FALS
->LN
[STM_BCTI_N
] = tabn
[STM_BCTI_N
];
94 scm
->PARAMS
.FALS
->LN
= NULL
;
98 scm
->PARAMS
.FALS
->FP
= (float*)mbkalloc (STM_NB_FALSE_PARAMS
* sizeof (float));
99 scm
->PARAMS
.FALS
->FP
[STM_PCONF0
] = tabf
[STM_PCONF0
];
100 scm
->PARAMS
.FALS
->FP
[STM_PCONF1
] = tabf
[STM_PCONF1
];
101 scm
->PARAMS
.FALS
->FP
[STM_RTOT_F
] = tabf
[STM_RTOT_F
];
102 scm
->PARAMS
.FALS
->FP
[STM_K_F
] = tabf
[STM_K_F
];
103 scm
->PARAMS
.FALS
->FP
[STM_VDDMAX_F
] = tabf
[STM_VDDMAX_F
];
104 scm
->PARAMS
.FALS
->FP
[STM_DRC_F
] = tabf
[STM_DRC_F
];
105 scm
->PARAMS
.FALS
->FP
[STM_VF_INPUT_F
] = tabf
[STM_VF_INPUT_F
];
110 /****************************************************************************/
112 void stm_modscm_false_destroy (falseparams
*params
)
118 mbkfree (params
->L0
);
121 mbkfree (params
->LI
);
124 mbkfree (params
->LN
);
127 mbkfree (params
->FP
);