Utilice el poder de los scripts y los ULP.
Cuando quiero que todas las tecnologías y combinaciones de paquetes tengan el mismo atributo, uso mi ATTR_ALL ULP:
#usage "<b><h1>Apply attribute to all package/technology variants</h1></b>\n"
"<pre><b>attr_all</b> <i>name</i> '<i>value</i>'</pre>"
"<p>"
"Sets the indicated attribute for all package and technology combinations of "
"a device. This ULP must be run in the device editor of a library."
string fnam; //script output file name
string cmd; //command to execute at end of ULP
string pack; //package variant name string
string techs[]; //list of technologies
int ntechs; //number of technologies in list
int i; //scratch integer and loop counter
//
// Start of executable program.
//
fnam = argv[0]; //init temp script name to full ULP pathname
fnam = filesetext (fnam, ".scr"); //make script file of same generic name
output (fnam, "wtD") { //open temporary script output file
deviceset (devset) {
devset.devices (dev) {
pack = dev.name;
if (pack == "''") pack = "";
printf ("package '%s';\n", pack);
ntechs = strsplit(techs, dev.technologies, ' ');
for (i = 0; i < ntechs; i++) {
printf ("technology %s;\n", techs[i]);
printf ("attribute %s '%s' constant;\n", argv[1], argv[2]);
} //back for next technology this device
} //back for next DEV in device set
} //end of device set
} //done with output file
cmd = "script " + fnam;
exit (cmd); //run the temporary script
Para los casos en que las diferentes variantes tienen atributos ligeramente diferentes, utilizo un script para configurar los atributos de la forma en que los quiero para una variante, luego replicar y editar esa parte del código del script para las otras variantes. De esa manera, solo dedicará tiempo a aquellas cosas que son diferentes entre las variantes.
Tener un script también es bueno cuando te equivocas. Cuando no te gusta el resultado, puedes realizar pequeños cambios incrementales en el script y volver a ejecutarlo todo.
Mantengo el último script que usé para este propósito como un recordatorio de la sintaxis. Eso hace que hacer algo similar la próxima vez sea más sencillo. También tengo un script de plantilla que contiene todo para crear una variante de un dispositivo. Copio la plantilla a un script temporal y edito según sea necesario. La mayoría de las veces no necesita la creación completa de dispositivos arbitrarios, así que simplemente elimine las partes que no necesita. Eso es mucho más fácil que buscar los detalles de sintaxis de los comandos que no están allí.
Aquí está mi script de plantilla:
# Templage script for creating a new device in a library.
#
edit 'xxx.dev';
description '--- description ---';
prefix 'ZZ';
value On;
# ADD symbol swaplevel add-type coordinate;
#
add SYNAME 0 next (0 0);
package PKNAME 'variant';
technology '';
attr manuf 'Megacorp:ABC-123';
attr supplier 'Mouser:666-ABC-123';
# attr qty '1';
# attr bom 'no';
attr valstat 'val';
# attr subst 'no';
attr desc '-- BOM description --';
attr dval '-- BOM value --';
# conn <pin function name> <pad number>
#
# Pad number must be upper case.
#
conn 'name1' '1';
conn 'name2' '2';