192 | | Pour ce qui concerne les timers, on souhaite avoir un timer indépendant pour chaque processeur, mais puisque le composant !VciTimer peut contenir jusque 256 timers indépendants, on utilisera un seul composant !VciTimer. |
| 192 | Pour ce qui concerne les timers, on souhaite avoir un timer indépendant pour chaque processeur, mais puisque le composant !VciTimer peut contenir jusque 256 timers indépendants, on utilisera un seul composant !VciTimer. |
| 193 | On aura également un seul contrôleur de disque et un seul contrôleur DMA. |
| 194 | |
| 195 | Pour écrire ce modèle générique, vous suivrez les recommandations suivantes: |
200 | | * Il faut utiliser une boucle indexée par l'index du processeur pour les constructteurs des composants PROC[i], ICU[i], et TTY[i]. |
201 | | |
202 | | * Pour l'index des initiateurs (SRCID), on utilisera les valeurs 0 à (NPROCS-1) pour les processeurs, et les valeurs NPROCS et (NPROCS+1) pour le composant IOC et pour le composant DMA respectivement. |
203 | | |
204 | | * Pour l'index des cibles (TGTID), on utilisera les valeurs (0) à (6) pour les composants matériels non répliqués (ROM, RAM GCD, TIMER, IOC, DMA, FBF). On utilisera les valeurs (7) à ( 7 + NPROCS -1) pour les composants TTY[i]. On utilisera les valeurs (7 + NPROCS) à (7 + 2*NPROCS -1) pour les composants ICU[i]. |
205 | | |
206 | | * il faut définir NPROCS segments pour les composants ICU[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_icu_base + icu_segment_increment * proc_id. La valeur de cette variable ''icu_segment_increment'' devra donc être définie dans le fichier '''tp4_top_multi.cpp pour le matériel, |
207 | | et dans le fichier '''ldscript''' pour le logiciel. On prendra par exemple la valeur 0x00100000. |
208 | | |
209 | | * Il faut définir NPROCS segments pour les NPROCS TTY[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_tty_base + tty_segment_increment * proc_id. On prendra également la valeur 0x00100000 pour la variable ''tty_segment_increment''. |
210 | | |
211 | | * Pour la net-list, il faut utiliser des boucles indexées par l'index du processeur pour connecter les composants répliqués et signaux répliqués. |
| 203 | * Vous utiliserez une boucle indexée par l'index du processeur pour les constructteurs des composants PROC[i], ICU[i], et TTY[i]. |
| 204 | |
| 205 | * Pour l'index des initiateurs (SRCID), vous utiliserez les valeurs 0 à (NPROCS-1) pour les processeurs, et les valeurs NPROCS et (NPROCS+1) pour le composant IOC et pour le composant DMA respectivement. |
| 206 | |
| 207 | * Pour l'index des cibles (TGTID), vous utiliserez les valeurs (0) à (6) pour les composants matériels non répliqués (ROM, RAM GCD, TIMER, IOC, DMA, FBF). On utilisera les valeurs (7) à ( 7 + NPROCS -1) pour les composants TTY[i]. On utilisera les valeurs (7 + NPROCS) à (7 + 2*NPROCS -1) pour les composants ICU[i]. |
| 208 | |
| 209 | * il faut définir NPROCS segments pour les composants ICU[i]. L'adresse de base du segment associé au composant ICU[i] est définie dans le GIET comme : seg_icu_base + icu_segment_increment * proc_id. La valeur de cette variable ''icu_segment_increment'' devra donc être définie dans le fichier '''tp4_top_multi.cpp''' pour le matériel, et dans le fichier '''ldscript''' pour le logiciel. On prendra par exemple la valeur 0x00100000. |
| 210 | |
| 211 | * Il faut définir NPROCS segments pour les NPROCS TTY[i]. L'adresse de base du segment associé au composant TTY[i] est définie dans le GIET comme : seg_tty_base + tty_segment_increment * proc_id. On prendra également la valeur 0x00100000 pour la variable ''tty_segment_increment''. |
| 212 | |
| 213 | * Pour la net-list, vous utiliserez des boucles indexées par l'index du processeur pour connecter les composants répliqués et signaux répliqués. |