Le circuit à synthétiser est num6add.raw.pla, un
additionneur 6 bits (6+6 bits vers 6 bits) avec un codage spécial
des opérandes []. Le circuit est décrit en
logique 2-niveaux au format PLA. Cela correspond à une équation
logique unique, très complexe (le fichier fait 82 Ko), par sortie
du circuit. Là encore, la cible technologique est la série FPGA
xc4000. 8 processeurs sont disponibles pour la synthèse.
L'application de la méthode de synthèse de l'exemple STD ne donnera pas de bons résultats sur ce circuit pour deux raisons :
La représentation du circuit va donc être décomposée (éclatée) avant le partitionnement pour la synthèse en parallèle, afin de permettre la répartition des équations sur les 8 processeurs disponibles. De plus, en employant un nombre de parties important, on va limiter la complexité de chaque partie dans un premier temps. Ensuite, pour obtenir des résultats acceptables en terme de qualité, des parties de taille plus importante seront utilisées dans une deuxième passe d'optimisation.
######################### # Pscript file PLA/8P : # ######################### # Demarrage de la machine virtuelle pvm mach1 mach2 mach3 mach4 mach5 machine6 machine7 machine8 # Repartition des equations dans un sous-circuit chacune, puis # eclatement de la repr\'esentation des equations en sommets de # petite taille a l'aide du script SIS 'pla' part 6 num6add.raw.pla pla 6 source pla num6add.raw.pla num6add.comb merge 6 num6add.comb num6add.comb.blif
# Le circuit obtenu est de tres grande taille. Partition en 16 # petites parties et synthese part 16 num6add.comb.blif 16 source 1P num6add.comb.blif num6add.map4.blif merge 16 num6add.map4.blif num6add.map4.blif
# Le nombre de parties utilise dans la phase precedente etant # tres important (16), le partage de logique commune n'a pas ete # realise efficacement. Une deuxieme phase de synthese, sur le # circuit deja optimise est faite, avec un nombre de parties moins # important, pour ameliorer la qualite du circuit part 8 num6add.map4.blif 8 source 1P num6add.map4.blif num6add.map4.blif merge 8 num6add.map4.blif num6add.map4.blif