Problema del inductor de Virtuoso Monte Carlo

1

Para un diseño de LNA, las simulaciones para los inductores y la simulación para el resto de los componentes (transistores, condensadores, resistencias, etc.) se realizan en dos paquetes de software diferentes. Los inductores se simulan en EMX y los otros componentes forman parte del paquete Cadence Virtuoso. Para incluir los inductores como parte del diseño, tomamos los archivos de parámetros S generados a partir de las simulaciones de EMX, establecemos el inductor en el diseño en una vista de n puertos y hacemos que apunte a los archivos de parámetros S generados por el programa EMX.

Ahora, cuando ejecutamos un análisis de Monte Carlo, eso simula básicamente diferentes variaciones de fabricación. Esto solo varía los modelos que forman parte del paquete de cadencia, no los inductores que tenemos en el diseño. Los inductores apuntan a los mismos archivos de parámetros S para cada iteración de la carrera de Monte Carlo. Así que el diseño no está siendo "verdaderamente" monte carlo simulado para todo el diseño LNA.

En EMX, hay una forma de realizar monte carlo en los inductores, y generarían una cantidad n de archivos de parámetros S, uno para cada n iteración. Lo que pensé que se podría hacer para hacer un verdadero análisis de Monte Carlo en el diseño en cadencia es una pausa después de cada iteración de la simulación, y cambiar el archivo al que apunta la vista n-port y hacer esto para cada iteración. En este sentido, monte carlo run apunta a un parámetro S diferente para cada iteración que contiene variaciones de fabricación que se simularon en la carpeta EMX.

Entonces, la pregunta es, ¿hay alguna forma de hacer una pausa después de cada iteración de la simulación de monte carlo en ADE XL o usar SKILL / Ocean?

    
pregunta Zmixma

1 respuesta

0

EDIT

Creo que una mejor solución sería utilizar el comando .ALTER de spice. Esto se volverá a ejecutar al modificar lo que especifique. Entonces, supongamos que normalmente especificaría un MC con 200,000 puntos de datos (solo como ejemplo) y tiene 200 modelos de parámetros s generados para los inductores. Cree 200 sentencias .ALTER, una para cada modelo de parámetros s, y en su lugar ejecute 1000 puntos de datos aleatorios. En total, tendría 200000 ejecuciones de MC con los modelos de parámetros s incluidos aleatoriamente.

200 puede parecer tedioso pero podría hacerse fácilmente con cualquier lenguaje de scripting, por ejemplo perl psueudocode (copie y pegue lo que esto genere en su mazo de especias):

my $count = 0;
foreach my $model ('ls dir/to/folder/with/smodels/*.<extension_for_smodels>') {
    print $spice_file_handle '.ALTER '."case $count\n";  
    print $spice_file_handle '.INCLUDE '."'$model'\n";   
}
print $spice_file_handle '.END'

Si cada uno incluye los nombres de archivo del módulo inductor de la misma manera, cada alterador debe sobrescribir los modelos anteriores, para las nuevas ejecuciones de MC.

END EDIT

No estoy seguro de cómo puede hacer que esto funcione con su idea actual, porque el análisis SPICE Monte Carlo se define por parámetro.
Por lo tanto, cada ejecución de Monte Carlo del diseño completo no corresponderá 1: 1 a un modelo de parámetros s generado por EMX.

Por ejemplo, el análisis de MC en uno de sus inductores es proporcional a sus valores de parámetros nominales. Eligiendo solo uno, digamos que una variable es la capacitancia parásita entre el inductor y un cable cercano. El valor nominal es 1fF. Por lo tanto, este parámetro combinado con todos los demás se analiza estadísticamente, y uno de esos segmentos de puntos de datos (un punto en un diagrama de dispersión de MC) contiene esta capacidad parásita a 0.9fF, 10% de su valor nominal (junto con todos los demás parámetros internos que también varían un poco). ¿Cómo coincide este modelo con la ejecución de MC actual en SPICE? ¿Cómo sabría SPICE cuál de estos archivos de parámetros s de EMX elegir, porque su propia ejecución de MC actual está definida por una lista de parámetros internos que varían un poco de% de su valor nominal?

No es tan fácil vincular uno con otro.

Creo que una forma más sencilla sería llevar los parámetros del inductor nominal desde el modelo n-port a la ejecución de SPICE, y permitir que SPICE ejecute MC como los parámetros normales de SPICE. Defínalos como .PARAM en el nivel superior y luego como variables MC.

    
respondido por el jbord39

Lea otras preguntas en las etiquetas