Spectre: medición de corriente de subcircuito con comodines

Actualmente estoy midiendo la corriente del subcircuito como se muestra a continuación:

.probe isub(segio.Vdd)

Funciona bien, pero tengo que escribir por separado para todos los subcircuitos.

¿Hay alguna opción para usar comodines o dar profundidad en el espectro como se muestra a continuación?

.probe isub(segio. *.Vdd) depth=10
Con comodines: no, eso no es posible. Sin embargo, podría usar un script SKILL para atravesar la jerarquía del diseño. Pero esto no es tan fácil de codificar, especialmente si no tienes experiencia con SKILL. Puede intentar encontrar un ejemplo en el foro de soporte de Cadence.

Respuestas (3)

No. No puede usar un comodín o no puede dar un valor de profundidad para usar el

.probe isub()

varias veces.

Me pregunto qué me estoy perdiendo aquí, pero mi versión de Spectre puede hacer esto. De la ayuda de Spectre:

Output parameters
9       save=selected     Signals to output  public. Possible values are all, lvl, allpub, lvlpub, selected, none, and
                          nooutput.
10      autosavecurvolt=no
                          Automatically save terminal currents and node voltage. Possible values are no and yes.
11      nestlvl=infinity  Levels of subcircuits to output.
12      subcktprobelvl=0  Level up to which the subcircuit terminal currents are to be computed.
13      subcktiprobes=yes
                          Insert iprobes when computing subcircuit terminal currents. Possible values are no and yes.
14      amsiprobes=no     Insert iprobes when computing MDL-related terminal currents. Possible values are no and yes.
15      termcur_method=default
                          Select methods to compute terminal currents. Set termcur_method=complete to get correct currents
                          when devices have no termcurs output. However, this may negatively impact performance.. Possible
                          values are default and complete.
16      currents=selected
                          Terminal currents to output. (See important note in the description below the parameter
                          descriptions about saving currents by using probes). Possible values are all, nonlinear, selected,
                          and none.
17      useprobes=no      Use current probes when measuring terminal currents. (See important note in the description below
                          the parameter descriptions about saving currents by using probes). Possible values are no and
                          yes.

Uso subcktprobelvl todo el tiempo, por lo que definitivamente funciona.

No uso comodines muy a menudo, pero la documentación dice:

save x*.*1 sigtype=subckt
Saves all terminal currents of subcircuits from level 2 and above whose name starts with `x' and ends in `1'. For example,
x1.x21:2, x1.x2.x31:3 

Actualmente estoy en la versión 14 de Spectre.

Intenté usar los comandos save y *lvl pero no pude obtener la sintaxis correcta. Lo implementé como debajo, pero seguramente debería haber una mejor manera de hacer lo mismo.
Tal vez tenga que cambiar al modo de sintaxis de espectro usando "simulator lang=spectre" para que esto funcione.
Guardar período:VDD probelvl=10

sonda isub(SEGIOX2.VDD) .sonda isub(SEGIOX2.SEGIO0.VDD) .sonda isub(SEGIOX2.REBUF.VDD) .sonda isub(SEGIOX2.SEGIO0.G_IO.VDD) .sonda isub(SEGIOX2.SEGIO0.G_IO.IO_COM .VDD) .isub sonda(SEGIOX2.SEGIO0.G_IO.IO_COM.IO_COM_F_0.VDD) .isub sonda(SEGIOX2.SEGIO0.G_IO.IO_COM.IO_COM_F_0.WRITE0.VDD)

.isub sonda(SEGARRAYX2.SEG0.BANK_MAX.HBANK.LBL.LBLX4_0.VDD) .isub sonda(SEGARRAYX2.SEG0.BANK_MAX.HBANK.LBL.LBLX4_1.VDD) .isub sonda(SEGARRAYX2.SEG0.BANK_MAX.HBANK.LBL. LBLX4_2.VDD) .sonda isub(SEGARRAYX2.SEG0.BANK_MAX.HBANK.LBL.LBLX4_3.VDD) .sonda isub(SEGARRAYX2.SEG0.BANK_MAX.HBANK.LBL.LBLX4_4.VDD) .sonda isub(SEGARRAYX2.SEG0.BANK_MAX. HBANK.LBL.LBLX4_5.VDD) .probe isub(SEGARRAYX2.SEG0.BANK_MAX.HBANK.LBL.LBLX4_6.VDD) .probe isub(SEGARRAYX2.SEG0.BANK_MAX.HBANK.LBL.LBLX4_7.VDD) .probe isub(SEGARRAYX2. SEG0.BANK_MAX.HBANK.LBL.LBLX4_8.VDD)