TP2/3 : Chemin de données du Mips
1 Schéma du chemin de données
- Etant donné le fichier de description en vbe du chemin de données fourni lors du TP précédent et des cours présentés, vous devez créer le fichier de description du chemin de données en Stratus :
- Vous avez à disposition un fichier squelette à compléter. Ce fichier est à mettre dans le répertoire design ; le fichier .vst qui sera obtenu remplacera le .vbe que vous aviez à disposition.
- Suivez bien les indications du fichier .vbe (utilisation de tri-states, de mux à deux entrées ...)
- Vous avez à disposition tous les générateurs de la bibliothèque Dpgen, consultez la documentation fournie : http://www-asim.lip6.fr/recherche/coriolis/doc/en/html/dpgen/index.html. (Note : Pour le banc de registre, vous pouvez utiliser les générateurs sans décodeur d'adresse DPGENRF2 ou DPGENRF2R0 non documentés)
- Les générateurs sont utilisables comme suit :
# Génération avec les paramètres voulus Generate ( 'DpgenRf2', 'rf2_4_16' , param = { 'nbit' : 4, 'nword' : 16 } ) # Instanciation avec la connectique voulue self.I = Inst ( 'rf2_4_16', 'inst' , map = { 'ck' : self.ck , 'sel' : self.sel , 'sela' : self.sela , 'selb' : self.selb , 'selw' : self.selw , 'datain0' : self.datain0 , 'datain1' : self.datain1 , 'dataouta' : self.dataouta , 'dataoutb' : self.sataoutb , 'vdd' : self.vdd , 'vss' : self.vss } )
- Même si le langage offre d'autres possibilités, vous devez dans le cadre de cette UE uniquement utiliser la fonction Inst pour effectuer les instanciations de cellules ; de plus, même si cela n'est pas obligatoire dans le langage, donnez toujours un nom à L'instance créée en utilisant un attibut de classe (i.e. écrivez self.instance = Inst (...) et non pas instance = Inst (...) ou Inst (...) tout court), cela vous sera utile lors du placement. Donnez des noms les plus significatifs possibles !
- Une fois un fichier .vst obtenu, modifier le script de test fourni de façon à tester ce fichier.
2 Placement du chemin de données
L'intérêt de décrire le chemin de données à la main en Stratus et d'utiliser la bibliothèque Dpgen est de profiter de la régularité des cellules. Vous devez ici effectuer le placement à la main des différents générateurs Dpgen que vous avez instancié.
- Créez une méthode Layout dans la description Stratus du chemin de données.
- Placez avec les directives fournies par Stratus (Place(), PlaceRight(), ....) toutes les colonnes qui ont été instanciées dans la netlist. Vous devez bien réfléchir à votre placement, le routage en dépendra ! N'hésitez pas à faire des schémas pour représenter les connections entre colonnes et placez à proximité les colonnes ayant un grand nombre d'interconnexions communes.
- De façon à avoir une idée de la qualité de votre placement, vous pouvez lancer le script python createCongestion.py inclu dans Stratus, comme suit :
> createCongestion.py mips_r3000_1m_dp
Cela peut être fait sur chacun des fichiers représentant le circuit, du moment que les fichiers .vst et .ap (avant routage) existent. L'image obtenue permet d'évaluer la congestion (i.e. les endroits susceptibles de poser problème lors du routage) : noir = pas de congestion, rouge = un peu de congestion, jaune / blanc : beaucoup de congestion ...
- Ajoutez l'appel à la méthode Layout dans le script servant à créer le chemin de données et ajoutez l'argument PHYSICAL à l'appel de la méthode Save dans ce même fichier. Lorsque vous lancez ce script, vous obtenez normalement un fichier .ap en plus du fichier .vst décrivant la netlist. Vous pouvez visualiser ce fichier avec graal.
Attachments (1)
- mips_r3000_1m_dp.py (20.3 KB) - added by 15 years ago.
Download all attachments as: .zip