Quiero comparar las señales de mi subcircuito fancy
(muy complejo) y los subcircuitos múltiples level1
(deberían ser casi equivalentes, pero más simples) con diferentes parámetros; estos parámetros deben pasarse a level2
subcircuits.
A continuación se muestra un código de ejemplo (simplificado) que no funciona:
Xfncy 2 0 fancy
Xlvl10 2 0 level1 PARAMS: Y1=1 Y2=1
Xlvl11 2 0 level1 PARAMS: Y1=1 Y2=10
Xlvl12 2 0 level1 PARAMS: Y1=10 Y2=1
Xlvl13 2 0 level1 PARAMS: Y1=10 Y2=10
.SUBCKT fancy 1 2
* STUFF
.ENDS fancy
.SUBCKT level1 1 2 PARAMS: Y1=1 Y2=2
.param Z10=1 Z20=1 Z11=1 Z21=1 Z12=1 Z22=1
Xlvl20 1 2 level2 PARAMS: Y3=Z10*Y1 Y3=Z20*Y2
Xlvl21 1 2 level2 PARAMS: Y3=Z11*Y1 Y4=Z21*Y2
...
...
Xlvl28 1 2 level2 PARAMS: Y3=Z18*Y1 Y4=Z28*Y2
.SUBCKT level2 1 2 PARAMS: Y3=1 Y4=1
* STUFF
.ENDS level2
.ENDS level1
Corriendo así, me sale el siguiente error:
ADVERTENCIA: No se puede resolver .param Y3 = Z10 * Y1
Seleccione Aceptar para continuar la simulación con el modelo predeterminado o Cancelar para salir ahora
Mi primera versión de la instancia Xlvl20
line:
Xlvl20 1 2 level2 PARAMS: Y3={Z10*Y1} Y3={Z20*Y2}
produce el mismo error. Si cambio la línea a:
Xlvl20 1 2 level2 PARAMS: {Y3=Z10*Y1 Y3=Z20*Y2}
me sale:
Falta expresión en
"{Y3 = Z10 * Y1 Y3 = Z20 * Y2}"
¿Es posible pasar parámetros como este en LTSpice y, si es así, cómo? Los enfoques alternativos también son bienvenidos.
PS: Sí, he intentado .step param
para evitar empacar level1
stuff en un subcircuito, pero luego no puedo compararlo con fancy
, porque fancy
toma aproximadamente 30 veces más tiempo para simular .