1 U NIVERSIDAD DE G UADALAJARA CUCEI División de Electrónica y Computación Dpto. de Electrónica “Síntesis de Circuitos Integrados Digitales a partir de su Descripción en VHDL” Dr. Marco Antonio Gurrola Navarro Dr. Agustín Santiago Medina Vázquez Dr. Juan José Raygoza Panduro Dra. Susana Ortega Cisneros Enero 2010
2 2 Contenido 1. Introducción 2. Herramientas Alliance 3. Scripts bash 4. Patrones de Simulación
3 3 1. Introducción
4 4 Introducción Desde su nacimiento, la microelectrónica ha evolucionado rápidamente. En solo un poco más de una década se paso del primer dispositivo Integrado (flip-flop con unos pocos transistores) a las primeras memorias y procesadores.
5 5 ASIC (Application Specific Integrated Circuit) Pocos años después el diseño de circuitos integrados dejo de ser exclusivamente de las fabricas y paso a ser accesible a los ingenieros diseñadores de aplicación, dando lugar a los ASIC. Fue a mediados de los 80s cuando se puso de manifiesto la necesidad de disponer de un lenguaje estándar capaz de dar soporte necesario al proceso completo de diseño de chips y sistemas electrónicos.
6 6 VHSIC (Very High Speed Integrated Circuit) Un lenguaje que permitiera a todos describir un circuito de igual forma y fuese común para su fabricación e implementación “HDL” Hardware Description Lenguage. En 1987 el departamento de defensa de EUA, creo el VHDL, para posteriormente ser adoptado como estándar por la IEEE (std. 1076-1987).
7 7 Alternativas de Diseño de Circuitos Integrados Diseño totalmente a medida (full-custom). El diseñador enfrenta a los niveles eléctrico y geométrico el diseño del circuito. Alto costo, se emplea principalmente para diseño analógico o para celdas digitales básicas. Metodología de Celdas Estándar se realizan diseños empleando celdas lógicas básicas prediseñadas empleando herramientas de place-and- route a partir de un diseño esquemático. Alternativa para diseños digitales de tamaño pequeño y moderado. Síntesis digital a partir de la descripción del sistema en HDL. Implica el empleo de herramientas place-and-route. Unica alternativa para diseños digitales grandes.
8 8 2. Herramientas Alliance
9 9 Conjunto de herramientas Alliance Síntesis de Circuitos Integrados Digitales a partir de su Descripción en VHDL
10 10 Circuito integrado digital diseñado con Alliance y enviado para su fabricación en enero de 2010
11 11 Comandos mkdir, cd, gedit y ls Abrir el emulador de terminal. Crear un directorio del proyecto $ mkdir deco -- creamos directorio Ubicarse dentro del directorio $ cd deco -- directorio en home/deco Crear un archivo de prueba $ gedit prueba.txt -- crear o abrir archivo deco.vhd Ver los archivos que hay dentro de la carpeta en donde nos encontramos $ ls -- visualizar archivos
12 12 ● Conjunto de herramientas libres y portables utilizadas para el diseño VLSI. ● Desarrollado por la University Pierre et Marie Curie (París, Francia). ● Contiene mas de 30 herramientas que Incluyen: – Compilador y simulador VHDL – Herramientas de Síntesis Lógica – Herramientas de Posicionamiento y Ruteado Alliance
13 13 ● Librería de celdas estándar “sxlib” (61 celdas de funciones combinacionales de 1-4 entradas). ● Celdas desarrolladas en tecnología genérica. ● La escala de los transistores es en lambda. inv x1 inv_x2 inv_x4 inv_x8 Alliance
14 14 ● env | grep MBK Variables de entorno
15 15 Flujo de diseño con el conjunto de herramientas Alliance
16 16 Se propone el diseño de un decodificador de 3 bits de entrada a 8 bits de salida, el cual se describe en la tabla siguiente: Diseño de un decodificador
17 17 Código VHDL Copiar archivo VHDL $ cp /home/usuario/ejemplo/deco.vhd /home/usuario/deco Abrir archivo.vhd $ gedit deco.vhd -- crear o abrir archivo deco.vhd
18 18 Código VHDL library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity DECO is Port ( B : in STD_LOGIC_VECTOR (2 downto 0); X0,X1,X2,X3,X4,X5,X6,X7 : out STD_LOGIC); end DECO; architecture F_D of DECO is begin X0
19 19 Traductor VHDL ● Carga descripciones comportamentales o estructurales en VHDL, y produce una o más descripciones en VHDL usando los subconjuntos VHDL de Alliance.vbe o.vst. Sintaxis: vasy [opción] [entrada(vhd,vhdl)] [salida(vbe,vst)] Manual: man vasy VASY
20 20 VASY
21 21 VASY Sintaxis : vasy -V -a -o -p -I vhd deco deco -V Modo detallado. -a Formato de salida en VHDL de Alliance en formato.vbe y/o.vst. -o Autoriza sobrescribir archivos existentes. -p Agrega conectores de suministro de alimentación (vdd y vss). -I Especifica el formato de entrada de VHDL (vhd o vhdl). Se puede visualizar el archivo.vbe (comportamental) generado por la herramienta, con el siguiente comando. $ kwrite deco.vbe -- abrir archivo comportamental
22 22 VASY ENTITY deco IS PORT( b: IN BIT_VECTOR(2 DOWNTO 0); x0: OUT BIT; x1: OUT BIT; x2: OUT BIT; x3: OUT BIT; x4: OUT BIT; x5: OUT BIT; x6: OUT BIT; x7: OUT BIT; vdd: IN BIT; vss: IN BIT ); END deco; ARCHITECTURE VBE OF deco IS BEGIN x7
23 23 ASIMUT – Simulador y Compilador VHDL ● Simulador de VHDL optimizado para Alliance que permite cargar archivos de estímulos entregando un archivo de patrones con el resultado de la simulación (.pat ). ● Compilador de VHDL subconjunto alliance, muestra errores posibles de la decripcion.vbe o.vst. – Sintaxis: – asimut [opción] [entrada(vbe,vst)] – Manual: man asimut
24 24 ASIMUT Sintaxis : asimut -c -b deco -c sintetizar o compilar -b archivo comportamental
25 25 ASIMUT
26 26 BOOM – Minimiza la expresión Booleana ● Recibe una descripción comportamental, *.vbe, y opcionalmente un archivo de parámetros, entregando una red booleana minimizada equivalente y con los términos de red factorizados. – Sintaxis: – boom [opción] [entrada(vbe)] [salida(vbe)] – Manual: man boom
27 27 BOOM Sintaxis : boom -l 3 -d 50 deco deco1 -l Especifica el nivel de optimización (0-3) -d especifica el porcentaje optimización del retardo
28 28 BOOM
29 29 BOOM Se puede visualizar el archivo.vbe (comportamental) optimizado por la herramienta, con el siguiente comando. $ gedit deco1.vbe -- abrir archivo comportamental
30 30 BOOM ENTITY deco1 IS PORT ( b : in bit_vector(2 DOWNTO 0) ; - - b x0 : out BIT;-- x0 x1 : out BIT;-- x1 x2 : out BIT;-- x2 x3 : out BIT;-- x3 x4 : out BIT;-- x4 x5 : out BIT;-- x5 x6 : out BIT;-- x6 x7 : out BIT;-- x7 vdd : in BIT;-- vdd vss : in BIT-- vss ); END deco1; -- Architecture Declaration ARCHITECTURE behaviour_data_flow OF deco1 IS SIGNAL aux0 : BIT;-- aux0 SIGNAL aux1 : BIT;-- aux1 SIGNAL aux2 : BIT;-- aux2 SIGNAL aux3 : BIT;-- aux3 BEGIN aux3
31 31 BOOG – Convierte descripción comportamental a su equivalente estructural ● Recibe la red booleana optimizada por BOOM y mapea las funciones lógicas de dicha red empleando una librería de celdas estándar para obtener una red equivalente en descripción estructural, *.vst. – Sintaxis: – boog [entrada(vbe)] [salida(vst)] [opción] – Manual: man boog
32 32 BOOG Sintaxis : boog deco1 deco -x 1 -m 2 -x genera un.xsc, que especifica la graduación de retardo por color. -m modo de optimización, (0 - 4) 0 área, 4 retardo.
33 33 BOOG
34 34 XSCH Se puede visualizar el archivo.vst (estructural) que genero la herramienta, con el siguiente comando. $ gedit deco.vst -- abrir archivo estructural Para ver el esquematico generado por BOOG se puede utilizar la herramienta XSCH, con el siguiente comando. $ xsch -l deco.vst -- abrir esquematico -l Carga el archivo.vst
35 35 XSCH
36 36 ASIMUT (compilación) Sintaxis : asimut -c deco -c sintetizar o compilar
37 37 ASIMUT (compilación)
38 38 Archivo de patrones Un archivo.pat, contiene los parámetros para la simulación. Copiar archivo.pat $ cp /home/usuario/ejemplo/deco_in.pat /home/usuario/deco Abrir archivo.pat $ gedit deco_in.pat-- abrir o crear archivo pat
39 39 Archivo de patrones -- Pat driver -- input / output list : in vdd B; in vss B;; in b (2 downto 0) B;; out x0 B; out x1 B; out x2 B; out x3 B; out x4 B; out x5 B; out x6 B; out x7 B; Begin -- Pattern description : -- vv b x x x x x x x x -- ds 0 1 2 3 4 5 6 7 -- ds : 10 000 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 001 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 010 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 011 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 100 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 101 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 110 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 111 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 000 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 001 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 010 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 011 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 100 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 101 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 110 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 111 ?* ?* ?* ?* ?* ?* ?* ?*; : 10 000 ?* ?* ?* ?* ?* ?* ?* ?*; end;
40 40 Simulación con ASIMUT Sintaxis : asimut deco deco_in deco_out
41 41 Simulación con ASIMUT
42 42 XPAT Podemos observar el archivo resultante de la simulacion con la herramienta XPAT Abrir archivos.pat $ xpat -l deco_in.pat -- archivo de entrada.pat $ xpat -l deco_out.pat -- archivo de salida.pat
43 43 XPAT
44 44 XPAT
45 45 LOON ● Optimizador Local de Nodos ● Recibe el archivo de descripción estructural, decrementa las capacitancias los retardos globales, entregando un archivo estructural optimizado, *.vst. – Sintaxis: – loon [opción ] [entrada(vst)] [salida(vst)] – Manual: man loon
46 46 LOON Sintaxis : loon -x 1 -m 2 deco deco1 -x genera un.xsc, que especifica graduaciones de retardo por color. -m modo de optimización, (0 - 4) 0 área, 4 retardo.
47 47 LOON
48 48 XSCH Para ver el esquemático generado por LOON $ xsch -l deco1.vst -l Carga el archivo.vst
49 49 XSCH
50 50 OCP – Coloca las Celdas Estándar ● Coloca y minimiza la distancia entre las celdas estándar contenidas en el listado *.vst, entregando un archivo de layout físico con celdas estándar y puertos colocados *ap. – Sintaxis: – ocp [opción] [entrada(vst)] [salida(ap)] – Manual: man ocp
51 51 OCP Sintaxis : $ ocp deco1 decop
52 52 GRAAL Para ver el layout generado por OCP se puede utilizar la herramienta GRAAL con el siguiente comando. $ graal -l decop -- abrir layout -l Carga el archivo.ap
53 53 GRAAL
54 54 GRAAL Para poder ver completamente las celdas de este layout Tools > Flat > seleccionar el layout con el puntero
55 55 GRAAL
56 56 NERO ● Ruteador de Celdas ● Rutea las celdas colocadas por OCP, entregando un layout que permite realizar el ruteo de cada nodo, (archivo con extensión *.ap ). ● Sintaxis: ● nero [opción] [entrada(ap)] [entrada(vst)] [salida(ap)] ● Manual: man nero
57 57 NERO Sintaxis : nero -V -p decop deco1 decor -V Detallado -p Especifica un nombre para el archivo de salida
58 58 NERO
59 59 GRAAL Para ver el layout ruteado NERO. $ graal -l decor -- abrir layout -l Carga el archivo.ap
60 60 GRAAL
61 61 GRAAL
62 62 COUGAR – Extractor de Lista de Nodos ● Recibe un archivo de layout ya sea escalado en lambdas o en unidades reales y extrae el correspondiente netlist con propósitos de verificación *.al, también puede extraer un archivo *.sp para Spice. – Sintaxis: – cougar [opción] [entrada(ap)] [salida(al,sp,…)] – Manual: man cougar
63 63 COUGAR Para extraer la lista de nodos (netlist) se necesita cambiar una variable de entorno ya que el netlist requiere guardase en un archivo.al $ MBK_OUT_LO=al $ cougar decor decoc-- crear netlist
64 64 COUGAR
65 65 COUGAR $ gedit decoc.al -- abrir netlist I no2_x1,x5_ins C i0,UNKNOWN,INTERNAL,4 C i1,UNKNOWN,INTERNAL,3 C nq,UNKNOWN,INTERNAL,2 C vdd,UNKNOWN,INTERNAL,1 C vss,UNKNOWN,INTERNAL,10 S 19,EXTERNAL,x0 S 18,EXTERNAL,x1 S 17,EXTERNAL,x2 S 16,EXTERNAL,x3 S 14,INTERNAL,not_aux3 S 13,EXTERNAL,b 1 S 12,INTERNAL,not_aux2 S 11,EXTERNAL,b 2 S 10,EXTERNAL,vss S 9,EXTERNAL,x7 S 8,EXTERNAL,x6 S 7,INTERNAL,not_aux0 S 6,EXTERNAL,b 0 S 5,EXTERNAL,x4 S 4,INTERNAL,not_b 0 S 3,INTERNAL,not_aux1 S 2,EXTERNAL,x5 S 1,EXTERNAL,vdd
66 66 COUGAR Para exportar a SPICE se necesita cambiar una variable de estado por la extencion de.sp $ MBK_OUT_LO=sp $ cougar -t decor deco-- exporta archivo.sp -t Notifica a la extracción de los transistores
67 67 COUGAR
68 68 COUGAR $ gedit deco.sp -- abrir sp * INTERF b[0] b[1] b[2] vdd vss x0 x1 x2 x3 x4 x5 x6 x7.subckt deco 26 16 15 31 20 3 4 5 7 28 32 23 25 * NET 3 = x0 * NET 4 = x1 * NET 5 = x2 * NET 7 = x3 * NET 10 = not_aux3 * NET 15 = b[2] * NET 16 = b[1] * NET 18 = not_aux2 * NET 20 = vss * NET 22 = not_aux0 * NET 23 = x6 * NET 25 = x7 * NET 26 = b[0] * NET 28 = x4 * NET 29 = not_b[0] * NET 30 = not_aux1 * NET 31 = vdd * NET 32 = x5 Mtr_00056 33 30 32 31 tp L=1U W=20U AS=40P AD=40P PS=44U PD=44U Mtr_00055 31 29 33 31 tp L=1U W=20U AS=40P AD=40P PS=44U PD=44U
69 69 LVX – Comparador de Listas de Nodos ● Comparar la equivalencia de un netlist *.al vs *.vst – Sintaxis: lvx [formato 1 (vst)] [formato 2 (al)] [entrada 1 (vst)] [entrada 2 (al)] [opción] – Manual: man lvx
70 70 LVX Sintaxis : lvx vst al deco1 decoc
71 71 LVX
72 72 S2R ● Transforma el layout Simbólico a Real ● Entrega un archivo de tecnología, transforma un layout escalado en lambdas a su correspondiente layout real dimensionado en micrómetros ( *.cif ). ● Sintaxis: ● s2r [opción] [entrada(ap)] [salida(cif)] ● Manual: man s2r
73 73 S2R Sintaxis : s2r -v decor decoe -v Detallado
74 74 S2R
75 75 DREAL Para visualizar el leyout a escala real se hace con la herramienta DREAL con el comando: $ dreal -l decoe -l abrir archivo directamente
76 76 DREAL
77 77 3. Scripts Bash
78 78 Comandos introducidos manualmente ● Par diseñar un Chip se requiere recorrer el “Flujo de Diseño de principio a fin” – Esto requiere la introducción secuencial de muchos comandos en el Emulador de Terminal. – Si se hace manualmente esto será confuso cuando el usuario tiene poca experiencia ● Para dejar un diseño “a punto” se debe repetir el flujo de diseño muchas veces). – Si se hace manualmente esto resulta tedioso y muy propenso a errores.
79 79 Scripts ● Podemos considerar un script como un programa interpretado (no compilado). – Un script se captura como un archivo de texto en cualquier editor. – En el archivo de texto del script se anotan en renglones sucesivos una serie de comandos. – Después de guardar el archivo del script, lo podemos ejecutar desde el emulador de terminal.
80 80 Ventajas de los scripts ● El script nos permite ejecutar todos los comandos que contiene con un sólo comando ● Un script puede llamar a su vez a otros scripts ● La automatización del flujo del diseño aumenta ● Hay que pagar un precio: dedicar tiempo para dejar los scripts “a punto” sin errores ● Este esfuerzo está justificado pues para depurar y optimizar un diseño, se puede llegar a requerir que algunas partes del flujo se repitan decenas o cientos de veces.
81 81 Scripts Bash - Reglas ● El primer renglón del script debe ser ● #! /bin/bash ● Los comandos se colocan a partir del 2o regnlón en adelante, tal como se escribirían en el emulador de terminal ● El último renglón debe ser ● exit
82 82 Ejercicio ● Abra una terminal y vaya a la carpeta donde tiene los archivos deco.vhd y deco.pat ● Con gedit Abra un archivo de texto con el nombre mi-script y al mismo tiempo abra el archivo deco.txt ● $ gedit mi-script deco.txt ● Copie o escriba los comandos que sean necesarios para dejar el archivo mi-script de la siguiente manera
83 83 Ejercicio (cont...) #! /bin/bash vasy -V -a -o -p -I vhd deco deco asimut -c -b deco boom -l 3 -d 50 deco deco1 boog deco1 deco -x 1 -m 2 xsch -l deco asimut -c deco loon -x 1 -m 2 deco deco1 xsch -l deco1 exit
84 84 Ejercicio (cont...) ● No cierre gedit para que pueda experimentar con algunos cambios en el script ● Desbloqué la terminal o abra otra y póngase en el directorio donde está su script ● Ejecute el siguiente comando ● $ bash mi-script ● Cuando el script lanza programas en otras ventanas la ejecución del script se detiene, y se reanuda hasta que usted la cierra manualmente
85 85 Comentarios en el script bash ● Para comentar una línea simpemente ponemos el símbolo # como su primer caracter ● Ejercicio: – En el archivo mi-script añada algunos comentarios personales – Comente las dos líneas que contienen el comando xsch – y después vuelva a ejecutar el script ● ¿Que diferencias observa?
86 86 Comando echo ● echo permite imprimir mensajes en la terminal ● Modifique mi-script como se muestra #! /bin/bash echo ¡Hola voy empezando! vasy -V -a -o -p -I vhd deco deco asimut -c -b deco echo ¡Ya pasé Asimut!... exit ● Ejecute y analice los efectos de echo
87 87 Errores de ejecución ● Realice el siguiente cambio en el código #! /bin/bash echo ¡Hola voy empezando! vasy -V -a -o -p -I vhd deco deco asimut -c -b decoKKK echo ¡Ya pasé Asimut!... ● No existe un archivo que se llame decoKKK.vbe en su directorio, por lo tanto Asimut no puede realizar la operación indicada
88 88 Errores de ejecución (cont...) ● Revise que Asimut imprimio un error de ejecución en el emulador de terminal que nuestro script no fue capaz de detectar ● ¿y así quiere mandar a hacer chips :-)? ● Solucione el problema añadiendo un par de ampersand && al final de la línea de cada comando como se muestra vasy -V -a -o -p -I vhd deco deco && ● Ejecute nuevamente el script y observe lo que pasa
89 89 Errores de ejecución (cont...) ● Cada programa entrega a bash un mensaje donde dice si su ejecución fue exitosa o hubo algún error ● Pero si en el script, la línea con que se invocó al comando contiene && al final, entonces bash pasará a ejecutar la siguiente línea sólo si no hubo errores de ejecución
90 90 Errores de Ejecución (cont...) ● Ejemplo comando_1 && comando_2 comando_3 ● Precaución: Como la línea de comando_1 contiene && al final, si ocurriea un error en comando_1, el siguiente comando se excluiría de la ejecución. Pero como la línea de comando_2 no contiene && al final entonces la exclusión no se puede propagar hasta la línea de comando_3
91 91 Errores de Ejecución (cont...) ● Conclusión: para lograr que un comando se excluya de la ejecución cuando ocurra un error en un comando anterior: todas las líneas intermedias deben contener && al final incluyendo la línea donde ocurre el error. ● Ejemplo corregido comando_1 && comando_2 && comando_3
92 92 Ejercicio ● Crear un script con nombre mi-script2 que contenga los siguientes comandos asimut -c -b deco > reporte gedit reporte ● No se olvide de poner la línea de encabezado y la úlima línea correctamente ● Primero vea qué archivos contiene su directorio actual y después ejecute mi-script2 ● ¿Cuál es el efecto del símbolo “ > ” ?
93 93 Otro ejercicio ● Ponga todos los comandos del archivo deco.txt en un archivo de script que lleve por nombre flujo ● Ponga el símbolo && al final de cada comando ● Ejecútelo, vaya cerrando las ventanas de los visualizadores conforme se vayan abriendo hasta llegar al final del flujo
94 94 Scripts reutilizables ● En nuestro proyecto de ejemplo, que fue un decodificador, empleamos la cadena de caracteres “deco” en los nombres de todos los archivos de entrada y salidad requeridos por los comandos de nuestro flujo de diseño – deco.vhd, deco.pat, deco.vst, decop.ap, deco.cif, etc. ● Para que nuestro script se pueda volver a utilizar con proyectos futuros con nombres diferentes, es preciso hacerle una modificación
95 95 Scripts reutilizables (cont...) ● Abramos flujo, y cambiemos cada ocurrencia de la cadena de caracteres deco por la cadena ${NOMBRE}, guardemos el archivo como flujo- completo ● Esto se puede abreviar con: ● cat flujo | sed 's/deco/${NOMBRE}/g' > flujo- completo ● Añadamos una línea entre el encabezado y el segundo renglón ● NOMBRE=deco
96 96 4. Patrones de Simuación
97 97 Síntesis y Verificación ● El flujo de diseño se compone de los siguientes pasos de síntesis ● *.vhdl VASY *.vbe BOOM *_o.vbe BOOG *.vst LOON *_o.vst OCP *_p.ap NERO *_pr.ap S2R *.cif ● Por cada paso de síntesis en nuestro flujo de diseño es posible realizar un paso de verificación ● ASIMUT : vbe, vst ● COUGAR, LVX : ap ● DRUC : ap
98 98 Asimut ● Verificación de sintaxis ● Obtención de valores de salida de una entidad ante un patrón de estímulos ● Comparación con los valores de salida esperados
99 99 Asimut – revisión de sintaxis ● con archivo vbe asimut -b -c deco ● con archivo vst asimut -c deco
100 100 Archivo de patrones
101 101 Archivo de patrones
102 102 Asimut - simulación ● con archivo vbe asimut -b deco deco_in deco_out ● con archivo vst asimut deco deco_in deco_out
103 103 Haga este script y ejecútelo
104 104... y ahora este otro script
105 105 Observe el retardo de salida
106 106 Repita por lo menos 2 veces cada patrón
107 107 La salida se atraza pero una parte cae dentro del patrón de entrada correcto
108 108 Ahora ponga los patrones esperados en la segunda línea de cada patrón
109 109 Esto es lo correcto...
110 110 Patrones – conclusiones ● Cada patrón debe repetirse por lo menos dos veces ● Si hay señal de reloj, deben usarse dos patrones para el estado bajo y dos para el estado alto ● Los valores esperados deben ponerse en la segunda línea de cada patrón, de esta manera el patrón podra emplearse cuando se simulen ambos tipos de archivos: vbe y vst
111 111 Agradecimientos ● Agradecemos al Ing. Adrian Pedroza de la Cruz su colaboración en la elaboración del ejemplo deco de esta presentación.
112 112 ¡¡Muchas Gracias por su atención !!