alliance-programmers '01
ALC : CVS loginfo, sea


Jean-Paul CHAPUT (Jean-Paul.CHAPUT@asim.lip6.fr)
Fri, 18 May 2001 17:59:01 +0200

=================================================================== Modification le : Fri May 18 17:58:46 CEST 2001 Par : jpc =================================================================== Update of /users/outil/alliance/cvsroot/alliance/sources/sea In directory melon.lip6.fr:/users/cao/jpc/alliance/sources/sea Modified Files: DEF2a.c DEF_actions.c DEF_drive.c DEF_drive.h DEF_grammar.h LEF_drive.c LEF_drive_sxlib.c LEF_drive_sxlib.h MAC_drive.c Makefile a2DEF.c a2lef.sh sea.sh seplace.sh seroute.sh sxlib2LEF.c util_Defs.h util_Floorplan.c util_LEFDEF.c util_MBK.c util_Power.c util_RTU.c Log Message: * sea.sh : - Normalisation des repertoires de la MBK_CATA_LIB : plus de doubles "/" et suppression des derniers "/". Exemple : "/toto//tata/" devient "/toto/tata". * seroute.sh : - Ajout de l'option "--core" dans le help (pour router les terminaux jusqu'a l'AB). * util_Power.c : - powToCon() : ajoute des "anciens" connecteurs aux bouts des rails d'alimentation (une modification "special ring"). - Pour eviter d'avoir deux connecteurs d'alimentation trop proches pour ring on fusionne les deux connecteurs en un seul de 12 lambdas. * LEF_drive_sxlib.c/sxlib2LEF.c/a2lef.sh : - Nouvelle option "-o|--allow-offgid" autorise les connecteurs offgrid (au lieu de les supprimer dans l'abstract comme precedemment). - Nouvelle option "-p|--fake-power" : genere des connecteurs d'alimenta- tion sans aucune geometrie. Necessaire pour les cellules feuilles des ROMs & RAMs qui ne respectent absolument pas le gabarit. * a2DEF.c : - Bug : Quant il n'y a pas de figure physique chargee, ne pas essayer de creer la grille de routage (avec "hasROW()"). * DEF_drive.c/util_MBK.c : - Bug : Lors de la generation de la connectique des nets la taille des VIA etait ignoree. On ne generait que des VIA de taille minimale. Modification de DEF_via2a() qui prend deux arguments supplementaires : DX et DY. Par la meme occasion on rend plus lisible le nom des big VIA generes : CONT_type_DX_DY (ex : "CONT_VIA2_1200_200"). * DEF_actions.c : - Bug : Le tableau statique "LV_tPin" est alloue avec une taille egale au nombre d'objets annonces dans la declaration de la section "PIN". Si le nombre d'objets est plus grand qu'annonce : on ecrit au dela des limites du tableau... Pour eviter ce gros bug on fait de la re-allocation en cas de depassement. * util_MBK.c : - isobs() : Changement de politique, on reconnait les obstacles par le fait que ce sont des segments de LAYER "TALUx" et non plus parce que le cheminom se termine par ".obs". * util_RTU.c/util_MBK.c : - Bug : "via2obs()" : Mauvaise generation de la taille du segment englobant le VIA. Generait le curieux effet des obstacles depassant de l'AB... Mauvais traitement des VIA vdd/vss se trouvant en haut de l'AB sur un rappel vertical en ALU3. - Bug : "via2obs()" : Dans le cas d'un stacked VIA, il faut generer des obstacle non seulement pour les layers en haut et en bas du VIA, mais aussi pour tout les layers intermediaires. D'ou l'introduction dans "util_MBK.c" des fonctions : - "getUpLayer()" - "isVIALayer()" - "getUpVIALayer()". Qui permettent de parcourir de bas en haut la liste des layers d'un VIA (combine avec la fonction pre-existante "getBottomVIALayer()"). - Bug : Il ne faut pas generer d'obstacle pour les vias qui font partie de l'interface. Probleme : comment les reperer. Plutot que de reconstruire une loseg complete, couteuse en temps de calcul et necessitant de connaitre la lofig, on se contente de creer une table de hash de tous les noms des segments en CALUx. Si le nom d'un VIA est dans cette table il fait partie de l'interface et ne genere pas d'obstacle. Remarque : les VIAs importes des instances ne sont pas forcement nommes et de toute facon, ils n'ont pas le nom de l'equipotentielle a laquelle ils peuvent etre connectes dans le pere. Pour l'instant on les considere tous comme des obstacles. * Nouvelle fonctionnalite : Prise en compte du pre-routage dans a2def (implique des modifications dans def2a). - Creation d'une structure additionnelle a la phfig dans le genre de la "lofigchain" : la "losegchain", la liste des segments, VIAS et connecteurs triees par noms. Accessible par le biais d'une table de hash ou le nom est la cle. - Dans un fichier DEF pour avoir plusieurs connecteurs associe a un unique signal, il faut creer plusieurs connecteurs de nom differents mais associe au meme noeud. Ce qui implique que c'est le nom du noeud qui est unique et sert de reference (en DEF). On a donc un comportement different de MBK ou le nom de connecteur est unique et le signal peut avoir plusieurs noms. Donc au niveau de a2def le nom de connecteur doit ecraser le nom de signal, et si le signal a plusieurs connecteurs externes on cree autant de PIN que de connecteurs en utilisant l'index (du phcon) pour produire des noms differents. Ce qui autorise alors au niveau de def2a de pouvoir se servir du nom de noeud comme nom de connecteur pour retomber sur nos pieds (le nom de noeud etant present dans la description de la PIN). C'est une inversion de ce qui etait fait jusqu'a present : le nom de connecteur ecrasait le nom de noeud (avec table de hashage pour faire une correspondance rapide NOEUD --> SIGNAL). Detail pour le calcul du nombre de PIN : on doit compter le nombre de connecteurs logiques et rechercher les connecteurs physiques dupliques pour augmenter ce nombre (vive la loseg!). =================================================================== Index: DEF2a.c =================================================================== RCS file: /users/outil/alliance/cvsroot/alliance/sources/sea/DEF2a.c,v retrieving revision 1.3 retrieving revision 1.4 diff -r1.3 -r1.4 32a33,34 > # define F_NO_INTERF 0x00000020 > # define F_MERGE_TERM 0x00000040 71c73 < printf ( " [-v] [-V] [-h] [-s] [-b]\n"); --- > printf ( " [-v] [-V] [-h] [-s] [-b] [-i] [-r]\n"); 81a84,85 > printf (" [-i] := Do not build physical interface.\n"); > printf (" [-r] := Merge power terminals for ring.\n"); 155a160,163 > if (!strcmp (argv[i], "-i")) { defFlags |= F_NO_INTERF; > LV_flags |= F_DEF_NO_INTERF; continue; } > if (!strcmp (argv[i], "-r")) { defFlags |= F_MERGE_TERM; > LV_flags |= F_DEF_MERGE_TERM; continue; } Index: DEF_actions.c =================================================================== RCS file: /users/outil/alliance/cvsroot/alliance/sources/sea/DEF_actions.c,v retrieving revision 1.7 retrieving revision 1.8 diff -r1.7 -r1.8 39a40 > # define SIZE_TPIN 512 84a86 > char *netName; 103a106 > static long LV_mPin; 105c108 < static ht *LV_htPin; --- > static struct authtable *LV_htPin; 117a121 > static long LV_numPins; 347a352,353 > LV_numPins = 0L; > LV_mPin = LV_numObjects; 352c358 < LV_htPin = addht (LV_numObjects << 1); --- > LV_htPin = createauthtable (LV_numObjects); 376,377c382,406 < addhtitem (LV_htPin, DEF2MBK_name (net_name), (int)LV_numObjectsRead); < LV_tPin[LV_numObjectsRead].pinName = DEF2MBK_name (pin_name); --- =================================================================== Ce message est envoyé au personnes abonnées à alliance-programmers Pour plus d'information sur cette mailling-list, visitez : http://asim.lip6.fr/alliance/mailing-lists/

 



Alliance Web Site © 1997, 2002 ASIM/LIP6/UPMC, page maintained by Czo [Olivier Sirol] , last updated on 18 May 2001.