Problèmes rencontrés :
Hierarchie
Vous devez respecter la hiérarchie présentée en cours , c'est à dire le coeur est composé de 5 blocs:
muxe
muxs
alu
accu
ram
chacun de ces blocs est directement décrit en cellules de SXLIB
pour utiliser les outils de placement il est indispensable qu'il n'existe pas de niveau intermédiaire
alimentations VDDI et VSSI
Dans l'interface du chip les alimentations doivent être vddi, vssi, vdde, vsse
Pour router corectement les Alim du coeur :
dans le fichier générant le coeur ajouter une cellule de bourage tie_x :
- dans la netlist (méthode Netlist) :
def Netlist ( self ) : self.tie = Inst ("tie_x0", "tie", map = {'vdd' : self.vdd, 'vss' : self.vss } )
- dans la méthode Layout :
def Layout ( self ): DefAb(XY(0,0),XY(1500,1500)) Place(self.tie, NOSYM, XY(0,0)) AlimConnectors()
modification des connecteurs des plots
Afin d'être conforme aux modèles des plots de pxlib il faut modifier certains out en inout dans le fichier généré par Python:
q0 doit être inout mux_bit bus , de même q3,r0,r3
pour la définition de component piot_x il faut pad : inout mux_bit bus
et cko: out wor_bit bus
Vérification des deux netlists par LVX
Avant de lancer lvx il faut indiquer que cougar utilise '_' comme séparateur dans la création du cheminom, alors que les netlists de départ ont le '.' comme séparateur
export MBK_SEPAR='_' lvx vst vst amd_route amd_net -f