1 /****************************************************************************/
3 /* Chaine de CAO & VLSI AVERTEC */
5 /* Produit : STM Version 1.00 */
6 /* Fichier : stm_modscm_good.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_good_create (float *tab0
, float *tabi
, float *tabn
, float *tabd
)
54 timing_scm
*scm
= (timing_scm
*)mbkalloc (sizeof (struct timing_scm
));
55 scm
->TYPE
= STM_MODSCM_GOOD
;
56 scm
->PARAMS
.GOOD
= (goodparams
*)mbkalloc (sizeof (struct goodparams
));
59 scm
->PARAMS
.GOOD
->L0
= (float*)mbkalloc (STM_NB_LINK_0_PARAMS
* sizeof (float));
60 scm
->PARAMS
.GOOD
->L0
[STM_CI_0
] = tab0
[STM_CI_0
];
61 scm
->PARAMS
.GOOD
->L0
[STM_CF_0
] = tab0
[STM_CF_0
];
62 scm
->PARAMS
.GOOD
->L0
[STM_K3_0
] = tab0
[STM_K3_0
];
63 scm
->PARAMS
.GOOD
->L0
[STM_K4_0
] = tab0
[STM_K4_0
];
64 scm
->PARAMS
.GOOD
->L0
[STM_K5_0
] = tab0
[STM_K5_0
];
66 scm
->PARAMS
.GOOD
->L0
= NULL
;
68 /* link i = 1 to n - 1 */
70 scm
->PARAMS
.GOOD
->LI
= (float*)mbkalloc ((1 + tabi
[STM_NB_I_LINKS
] * STM_NB_LINK_I_PARAMS
) * sizeof (float));
71 scm
->PARAMS
.GOOD
->LI
[STM_NB_I_LINKS
] = tabi
[STM_NB_I_LINKS
];
72 for (i
= 0; i
< tabi
[STM_NB_I_LINKS
]; i
++) {
73 index
= 1 + i
* STM_NB_LINK_I_PARAMS
;
74 scm
->PARAMS
.GOOD
->LI
[index
+ STM_CI_I
] = tabi
[index
+ STM_CI_I
];
75 scm
->PARAMS
.GOOD
->LI
[index
+ STM_CF_I
] = tabi
[index
+ STM_CF_I
];
76 scm
->PARAMS
.GOOD
->LI
[index
+ STM_ACTI_I
] = tabi
[index
+ STM_ACTI_I
];
77 scm
->PARAMS
.GOOD
->LI
[index
+ STM_BCTI_I
] = tabi
[index
+ STM_BCTI_I
];
78 scm
->PARAMS
.GOOD
->LI
[index
+ STM_K3_I
] = tabi
[index
+ STM_K3_I
];
79 scm
->PARAMS
.GOOD
->LI
[index
+ STM_K4_I
] = tabi
[index
+ STM_K4_I
];
80 scm
->PARAMS
.GOOD
->LI
[index
+ STM_K5_I
] = tabi
[index
+ STM_K5_I
];
83 scm
->PARAMS
.GOOD
->LI
= NULL
;
87 scm
->PARAMS
.GOOD
->LN
= (float*)mbkalloc (STM_NB_LINK_N_PARAMS
* sizeof (float));
88 scm
->PARAMS
.GOOD
->LN
[STM_CI_N
] = tabn
[STM_CI_N
];
89 scm
->PARAMS
.GOOD
->LN
[STM_CF_N
] = tabn
[STM_CF_N
];
90 scm
->PARAMS
.GOOD
->LN
[STM_ACTI_N
] = tabn
[STM_ACTI_N
];
91 scm
->PARAMS
.GOOD
->LN
[STM_BCTI_N
] = tabn
[STM_BCTI_N
];
93 scm
->PARAMS
.GOOD
->LN
= NULL
;
96 scm
->PARAMS
.GOOD
->DP
= (float*)mbkalloc (STM_NB_DUAL_PARAMS
* sizeof (float));
97 for( i
=0 ; i
<STM_NB_DUAL_PARAMS
; i
++ )
98 scm
->PARAMS
.GOOD
->DP
[i
] = tabd
[i
];
103 /****************************************************************************/
105 void stm_modscm_good_destroy (goodparams
*params
)
111 mbkfree (params
->L0
);
114 mbkfree (params
->LI
);
117 mbkfree (params
->LN
);
120 mbkfree (params
->DP
);