Sei sulla pagina 1di 65

1

Apndice 6

Uso de sis
Sequential Interactive System
A6.1. Introduccin
En las primeras etapas de un diseo digital se requiere obtener la estructura del sistema en
trminos de componentes de hardware. Se denomina sntesis lgica al proceso de generar un
circuito en trminos de compuertas y flip-flops; en esta etapa suele efectuarse una minimizacin
del nmero de transistores que se emplearn (optimizacin espacial). Luego es necesario
efectuar minimizaciones de los retardos (optimizacin temporal), para esto se requiere efectuar
transformaciones de la red booleana de tal modo que la implementacin final satisfaga los
requerimientos.
A medida que aumenta el tamao del sistema estas tcnicas no pueden aplicarse
manualmente y resultan indispensables herramientas computacionales.
Sis es un programa interactivo para la sntesis y optimizacin de circuitos combinacionales,
secuenciales sincrnicos y asincrnicos.
Pueden describirse funciones booleanas mediante: ecuaciones (.eqn), tablas de verdad o
matrices de cobertura (.pla), redes lgicas booleanas (.blif).
Los circuitos secuenciales pueden almacenarse como mquinas de estados finitos
describiendo el diagrama de estados (.kiss) o mediante una red booleana formada por
compuertas lgicas y elementos de memoria (.kiss2 blif sincrnicos).
Las funciones pueden ser manipuladas escribiendo comandos en forma interactiva o
empleando archivos de comandos (scripts). Se dispone de herramientas para: minimizar y
asignar estados; optimizar el rea requerida para implementar las ecuaciones lgicas y
minimizar los retardos; mapear tecnolgicamente a componentes mediante bibliotecas de partes.
El comando help despliega las rdenes disponibles.

A6.2. Formato blif.


Berkeley Logic Interchange Format especifica mediante un archivo de texto una red lgica
booleana. Cada nodo queda descrito por una funcin booleana en dos niveles.
Profesor Leopoldo Silva Bijit

19-01-2010

Sistemas Digitales

Puede encontrarse una especificacin detallada de este formato en el apndice del manual de
SIS.
Estudiaremos el formato a travs de ejemplos. El siguiente cdigo describe una simple
compuerta and de dos entradas. Se emplean comentarios de fin de lnea para explicar los
comandos.
.model CompuertaAnd
.inputs a b
.outputs c

# nombre de la red. Suele ser el nombre del archivo


#entradas del mdulo
#salida del mdulo

.names a b c
11 1

# Descripcin pla de la funcin nand del nodo.

.end
La siguiente descripcin muestra un sumador completo, texto que asumimos almacenado en
el archivo sumadorcompleto.blif.
.model SumadorCompleto
.inputs a b cin
.outputs sum cout
.names a b cin sum
001 1
010 1
100 1
111 1
.names a b cin cout
110 1
101 1
011 1
111 1
.end
El formato blif permite descripciones jerrquicas de redes complejas. Por ejemplo un
sumador completo de 4 bits puede describirse empleando el comando subcircuito, mediante el
cual se instancian cuatro mdulos con las variables actuales, segn:
.module fulladder4
.inputs a3 a2 a1 a0 b3 b2 b1 b0
.outputs s3 s2 s1 s0 cout
.subckt sumadorcompleto a=a0 b=b0 cin=zero sum=s0 cout=cout0
.subckt sumadorcompleto a=a1 b=b1 cin=cout0 sum=s1 cout=cout1
.subckt sumadorcompleto a=a2 b=b2 cin=cout1 sum=s2 cout=cout2
.subckt sumadorcompleto a=a3 b=b3 cin=cout2 sum=s3 cout=cout
.names zero
.end

#define la seal zero con valor 0

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis


.search sumadorcompleto.blif

3
#lee el modelo desde archivo

En el ejemplo la reserva de entrada se ha fijado en cero, mediante la seal zero. La definicin


de compuerta: .names zero fija o fuerza un cero lgico en la seal zero.
Una seal puede fijarse en uno, mediante la declaracin:
.names uno
1
# setea en 1 la seal uno.
Mediante el comando .search se lee el contenido del archivo, con las declaraciones del mdulo
del sumador completo.

A6.3. Lectura y escritura de archivos.


En el apndice 3 sobre uso de espresso se describieron los formatos pla y eqn.
Se puede traducir de un formato a otro mediante la lectura de un formato y la escritura en
otro.
Los comandos que leen especificaciones de sistemas digitales combinacionales son:
read_eqn, read_pla y read_blif, seguidos del nombre del archivo.
Los comandos que escriben en diferentes formatos son: write_blif, write_pla, write_eqn. Si
se les agrega a continuacin del comando un nombre de archivo, ste se almacena en disco; si
no se especifica nombre de archivo se despliega el formato en la pantalla.
En versiones unix, los finales de lnea deben terminar en LF solamente.
Ejemplo A6.1. eqn.
Si un archivo denominando eq.eqn contiene la siguiente lnea, en formato eqn:
O = a*b + !c*((d+e+f)*!(g+h));
Puede ser ingresado en sis, con el comando:
sis> read_eqn eq.eqn
Puede verificarse la ecuacin ingresada, mediante el comando print, que muestra la ecuacin
del nodo:
sis> print
{O} = a b + c' d g' h' + c' e g' h' + c' f g' h'
Ejemplo A6.2. blif.
Puede ingresarse una red boolena en formato blif, en la cual se especifican funciones
combinacionales mediante tablas de verdad en formato pla.

Profesor Leopoldo Silva Bijit

19-01-2010

Sistemas Digitales

El ejemplo siguiente crea el modelo de una compuerta NOR de 3 entradas usando tres nodos
descritos por sus tablas de verdad, se especifican dos formas de definir compuertas OR de dos
entradas y un inversor. El archivo tiene nombre nor3.blif.
# Las lneas de comentario comienzan con #
# Debe colocarse un nombre para cada modelo
.model NOR3
# Se definen las entradas y salidas del modelo
.inputs a b c
.outputs out
#OR de dos entradas a y b, con condiciones superfluas.
# Se define un nodo interno (wire) de nombre int1
.names a b int1
1- 1
-1 1
# Tabla de verdad del conjunto on de un OR de dos entradas
.names int1 c int2
10 1
01 1
11 1
# Inversor
.names int2 out
1 0
# Fin del modelo.
.end
La estructura de la red, se muestra en la Figura A6.1
a
b

int1

int2

out

Figura A6.1
La red puede leerse y describirse mediante las ecuaciones de los nodos, con los comandos:
sis> read_blif nor3.blif
sis> print
{out} = int2'
int1 = a + b
int2 = c int1 + c int1' + c' int1
Puede comprobarse que: out = abc = (a + b +c)= nor3(a, b, c)
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

Ejemplo A6.3. Mquina de estados finitos.


Se puede especificar una mquina de estados empleando formato kiss, dentro de un archivo
con extensin blif. El diagrama de estados de la Figura A6.2 representa a un verificador
(chequeador) de paridad. La entrada es serial. La salida es cero si, hasta el momento, han
llegado un nmero par de unos; y es uno si el nmero de unos es impar.
La mquina se mantiene en el estado PAR si han llegado un nmero par de unos; y se
mantiene en el estado IMPAR, si el nmero de unos que han llegado, hasta ese momento es
impar.
1/1
PAR
0/0

0/1
IMPAR

1/0

Figura A6.2
La descripcin en formato kiss, se ilustra en el ejemplo siguiente. En el formato kiss no
pueden colocarse nombres a las seales. Sin embargo al incluirlo dentro de un blif, podran
colocarse identificadores para las seales.
# El archivo se almacena con el nombre paridad.blif
# Se emplea formato kiss para especificar mquinas de estado
.start_kiss
# una entrada (i), una salida (o), y 2 estados (s)
.i 1
.o 1
.s 2
# <entrada> <EstadoActual> <ProximoEstado> <salida>
0 PAR PAR 0
1 PAR IMPAR 1
0 IMPAR IMPAR 1
1 IMPAR PAR 0
.end_kiss
Puede minimizarse el nmero de estados con el comando: state_minimize y luego efectuarse
la asignacin de estados con el comando state_assign. La salida puede escribirse en formato blif
con el comando write_blif, esto genera un archivo con el diseo en base a compuertas y flipflops.
La siguiente secuencia realiza el diseo de la red booleana.
sis> read_blif parity.blif
sis> state_minimize

Profesor Leopoldo Silva Bijit

19-01-2010

Sistemas Digitales
sis> state_assign
sis> write_blif

La cual genera, en forma automtica nombres para las seales de entrada y salida, adems
coloca automticamente los nombres a las entradas y salidas de los latch:
.inputs IN_0
.outputs OUT_0
.latch v2.0 LatchOut_v1 0
//asigna nombres a la entrada y salida de un latch
.start_kiss
.i 1
.o 1
.p 4
.s 2
.r PAR
0 PAR PAR 0
1 PAR IMPAR 1
0 IMPAR IMPAR 1
1 IMPAR PAR 0
.end_kiss
.latch_order LatchOut_v1
.code PAR 0
.code IMPAR 1
.names IN_0 LatchOut_v1 OUT_0
01 1
10 1
.names IN_0 LatchOut_v1 v2.0
01 1
10 1
.end
Notar que despus de la descripcin kiss, se especifica la asignacin de estados y luego se
agregan los nodos combinacionales del prximo estado y de la salida, en trminos de las seales
definidas al inicio. Si las ecuaciones se interpretan como compuertas or exclusivo, la Figura
A6.3, muestra la red booleana, resultante del diseo:

IN_0

Out_0

v2_0

LatchOut_v1

clk

Figura A6.3

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

El comando print, muestra las ecuaciones de los nodos:


sis> print
{OUT_0} = IN_0 LatchOut_v1' + IN_0' LatchOut_v1
v2.0 = IN_0 LatchOut_v1' + IN_0' LatchOut_v1
El comando write_eqn escribe las ecuaciones de las redes combinacionales solamente.
sis> write_eqn
Se genera la siguiente descripcin:
INORDER = IN_0 LatchOut_v1;
OUTORDER = v2.0 OUT_0;
OUT_0 = IN_0*!LatchOut_v1 + !IN_0*LatchOut_v1;
v2.0 = IN_0*!LatchOut_v1 + !IN_0*LatchOut_v1;
Tambin se puede generar la descripcin combinacional en formato pla, lo cual podra ser
utilizado para minimizar con espresso. El siguiente comando:
sis> write_pla
Genera la siguiente descripcin de las redes combinacionales, notar que se ha definido
automticamente con el nombre LatchIn_[14] la entrada D del latch:
.i 2
.o 2
.ilb IN_0 LatchOut_v1
.ob LatchIn_[14] OUT_0
.p 4
01 10
10 10
01 01
10 01
.e
La Figura A6.4 muestra un esquema de la red combinacional; se ha agregado el latch que
completa el diseo.

LatchOut_v1
IN_0

Out_0
D

LatchIn_[14]

clk

Figura A6.4

Profesor Leopoldo Silva Bijit

19-01-2010

Sistemas Digitales

Latch genrico.
La sintaxis de un latch genrico es:
.latch <input> <output> [<tipo> <control>] [<valor inicial>]
Tipo es uno de los siguientes: fe, re, ah, al, as , que corresponden a acrnimos de falling
edge, rising edge, active high, active low, o asynchronous.
Control es la seal de reloj para el latch. Puede ser la seal definida con: .clock en el modelo,
la salida de cualquier funcin del modelo o NIL si no hay reloj
Valor-inicial es el valor del estado inicial del latch. Puede ser: 0, 1, 2, 3 . 2 si es dont
care y 3 si es unknown. Un valor no especificado se asume 3.
Un modelo que tenga realimentaciones debe usar latchs, no se aceptan lazos puramente
combinacionales.
f

Ejemplo.
.model ffd # flip-flop D sincronizado con cantos de subida (re) del reloj c.
.inputs d
.output q
.clock c
.latch d q re c 0
.end

A6.4. Comandos para minimizacin de redes multinivel.


Una vez ingresado el circuito en alguno de los formatos: eqn, pla o blif, pueden aplicarse los
comandos para minimizacin multinivel.
A6.4.1. Descomposicin.
decomp descompone un nodo interno en ms de un nodo.
Normalmente esto conduce a la reduccin de literales; y al mismo tiempo lleva a incrementar el
retardo de la red.
Si tenemos en el archivo ejdecomp.eqn la siguiente ecuacin:
f=a*d+a*e+b*d+b*e+c*d+c*e;
sis>read_eqn ejdecomp.eqn
sis>print_stats
ejdecomop.eqn pi=5 po=1 node=1 lits(sop)=12
El comando: print_stats muestra que el sistema tiene: 5 variables de entrada, 1 de salida, 1
nodo interno, y 12 literales.
Si se ejecuta el comando decomp, y luego se muestran las ecuaciones se tiene:
sis>decomp
sis>write_eqn
f=[2]*[1];
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

[1]=d +e;
[2]=a + b +c;
Lo cual muestra que se han creado dos nodos internos, a los cuales se les ha colocado, en forma
automtica, los nombres [1] y [2]. La estadstica muestra que se tienen ahora 3 nodos internos y
se han reducido los literales a 7.
A6.4.2. Eliminacin.
eliminate k remueve todos los vrtices internos de la red cuyos valores sean menores o
iguales a k. El valor del nodo es el nmero de literales que se ahorran en la cuenta de literales de
la red dejando el nodo. La variable correspondiente al nodo se reemplaza en todas sus
ocurrencias; esto aumenta la cuenta de los literales. Este comando efecta lo contrario de
decomp; y ayuda a disminuir el retardo de la red.
eliminate -1 remueve nodos que son empleados slo una vez.
La siguiente red tiene 12 literales y 4 nodos.

f = a*b*c;
g = f + d;
h = f + b*c;
i = f + b*c*d;
Si se elimina el nodo f, resulta un costo de 15 literales; es decir se produce un incremento de
3 literales.
Entonces el comando eliminate 1, o eliminate 2 no producen cambios, pero eliminate 3 logra
la eliminacin del nodo f; ya que es 3 el costo de eliminar f. La red reducida queda:

g = a*b*c + d;
h = a*b*c + b*c;
i = a*b*c + b*c*d;

#h puede reducirse a b*c solamente.

En el caso de que un nodo slo aparezca una vez, su eliminacin se logra con el comando:
eliminate -1.

La red:
f = a*b;
g = f+c;
Se simplifica a:
g = a*b+c;
A6.4.3. Simplificacin.
Los comandos simplify y full_simplify ejecutan un programa de minimizacin en dos
niveles en cada uno de los nodos de la red; la simplificacin completa emplea algoritmos ms
complejos que tienden a obtener mejores resultados, pero con un mayor costo temporal de
ejecucin. Puede emplearse los comandos con opciones m nocomp, que utiliza las heursticas
de minimizacin de espresso.
Para la siguiente red con 10 literales
f = a*!b*c + !a*!c + a*b;
Profesor Leopoldo Silva Bijit

19-01-2010

10

Sistemas Digitales
g = !a*!b + a;

Luego de simplify, se reduce a 8 literales


f = b*g + !a*!c + a*c;
g = !b + a;
A6.4.4. Resubstitucin.
Resub intenta substituir la expresin correspondiente a un nodo en las expresiones
correspondientes a los otros nodos. El propsito es reutilizar la expresin de un nodo como
subexpresin en alguno de los otros nodos, disminuyendo el nmero de literales.
Para cada par de nodos verifica si uno es factor del otro y viceversa; si se agrega opcin a,
se emplea mtodo de divisin algebraica para determinar si un nodo es factor de otro. Se intenta
con la expresin para el nodo y la expresin complementada, iterando entre los nodos de la red
hasta que la reduccin del costo no siga disminuyendo.
La siguiente red, tiene costo de 11 literales.
f = a*b;
g = a*b + c;
h = a*b + e;
i = a' + b' +k;
Luego de resub, queda con 8 literales.
f = a*b;
g = f + c;
h = f + e;
i = f +k;
A6.4.5. Factorizacin.
Extrae subexpresiones comunes entre los nodos y reescribe las ecuaciones de los nodos en
trminos de las subexpresiones comunes.
Si se tiene la siguiente red, con 4 nodos y 26 literales:
w = a*!e + !c*d + b*d + !a*d;
x = d*e + c*e + !b + !a;
y = b*d + a*d + b*c + a*c + e;
z = c + b + a;
Luego de ejecutado el comando fx, se crean, en forma automtica dos nuevos nodos, y
disminuyendo la cuenta de literales a 21.
w = d*b + !c*d + !a*d + a*!e;
x = e*[16] + !b + !a;
y = [16]*[17] + e;
z = [17] + c;
[16] = d + c;
[17] = b + a;

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

11

Suele usarse la secuencia fx, seguida de resub, ya que el primer comando encuentra los
factores comunes, y el segundo intenta emplear esos factores para mejorar la red.
A6.4.6. Limpieza.
Sweep es un comando que elimina los vrtices que tienen solo una entrada y los de valor
constante.
La red siguiente tiene el nodo i, con valor constante, y el nodo f, con una sola entrada:
f = a;
g = f + c*i;
h = f + d;
i = 1;
Luego de sweep, resulta:
g = a + c;
h = a + d;
A6.4.7 Archivos de optimizacin multinivel.
Si se desea ejecutar una secuencia de comandos de optimizacin se suele usar un script. El
cual es un archivo de texto que contiene la secuencia de comandos que se desean ejecutar. Por
ejemplo si se desea ejecutar: fx, resub y luego sweep, basta escribir un archivo de texto con el
nombre comandos.script, con las siguientes lneas:
fx
resub; sweep
Pueden colocarse varios comandos, en la misma lnea, separados por puntos y comas.
Se ejecuta la secuencia anterior con el comando:
source comandos.script
No es sencillo determinar una secuencia de comandos que produzcan el nivel de
minimizacin multinivel deseado. Los creadores del sistema sis han propuesto una secuencia
que ha dado buenos resultados para una gran variedad de circuitos. El archivo de comandos se
denomina script.rugged, y contiene cuatro etapas de minimizacin.
#primera etapa de limpieza
sweep
eliminate -1
simplify -m nocomp
eliminate -1
#simplificacin con disminucin acotada del fan in
sweep
eliminate 5
simplify -m nocomp
resub -a

Profesor Leopoldo Silva Bijit

19-01-2010

12

Sistemas Digitales

#factorizacin
fx
resub -a
sweep
#simplificacin del nodo
eliminate -1
sweep
full_simplify -m nocomp
Ejemplo A6.4.
Sea la red de la Figura A6.5
a
b

z = ac +ad +bc +bd +e

r =q + a

q = ce +de

w =r+b

c
d
e

y =ad +bd +cd+ ae

p=a+b

y
x = pc + pc+ pc

Figura A6.5
Las ecuaciones de la red, con 7 nodos y 33 literales es la siguiente:
z = a*c + a*d + b*c + b*d + e;
q = c*e + d*e;
r = q + a';
w = r + b';
y = a'*d + b*d + c'*d + a*e';
p = a + b;
x = p'*c + p*c' + p*c;
Luego de ejecutado script.rugged con los datos de la red anterior, se logra la siguiente red:
con 6 nodos y 21 literales. Aparecen dos nuevos nodos y se eliminan p, q y r.
z = [28]*[29] + e;
w = e*[28] + !b + !a;
y = a*!e + d*b + !c*d + !a*d;
x = [29] + c;
[28] = d + c;
[29] = b + a;

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

13

A6.4.8. Otros comandos multinivel.


print_level imprime el nivel de todos los nodos. Los de nivel cero son las entradas a la red.
print_io

imprime las entradas y salidas de la red.

invert <nodo>
producto de sumas.

obtiene el complemento del nodo. Entregando el complemento del

reduce_depth d k
este comando controla el retardo de la red en una optimizacin
multinivel, dejndola en k niveles.

A6.5. Mapeo tecnolgico.


Se denomina mapeo tecnolgico al proceso de convertir una red lgica formada por
componentes arbitrarias a una red formada por componentes especificadas en una biblioteca
tecnolgica.
Primero se forman diagramas patrones representando cada una de las compuertas de la
biblioteca por el conjunto bsico de compuertas, por ejemplo nand de dos entradas e inversores.
Luego la lgica del sistema se transforma a una red formada por el conjunto bsico de
compuertas, por ejemplo nand de dos entradas e inversores; luego esta red, que es independiente
de la tecnologa, se minimiza.
Finalmente la red, es cubierta por un conjunto de los diagramas patrones, que son elecciones
posibles desde la biblioteca. Existen diferentes coberturas posibles; durante la cobertura, el rea
o el retardo se emplean como criterios de optimizacin.
Ejemplo A6.5.
Se tiene la funcin: f=a +b +c, y una biblioteca de partes constituida por compuertas:
inversor, nand, and, y or.
El conjunto de compuertas bsicas est formado por nand e inversor.
La Figura A6.6 muestra la red estructurada con compuertas bsicas. Es el mapeo
independiente de la tecnologa.
a
f

b
c

Figura A6.6
La Figura A6.7 muestra los patrones de biblioteca, en base a las compuertas bsicas.
Se indica el costo asociado al rea, para cada elemento de la biblioteca, representado por
patrones. El tiempo de propagacin a travs de un inversor es 1, y a travs del nand es 1.5.
Profesor Leopoldo Silva Bijit

19-01-2010

14

Sistemas Digitales
inv

2
nand 3

and

or

Figura A6.7 Patrones biblioteca.


Se van haciendo calzar los patrones de la biblioteca con partes de la red que se desea mapear.
Se reconocen los patrones hasta tener cobertura completa y se calcula el costo espacial y
temporal. Encontrar todos las calces es un problema complejo; seleccionar los calces que son
coberturas tambin es un problema complejo.
En general pueden obtenerse varias soluciones, debe seleccionarse la ms conveniente de
acuerdo al costo espacial y temporal.
Costo espacial: 2+3+2+3=10. Costo temporal: 1.5+1+1.5=4.
a
f

b
c

Figura A6.8 Cobertura 1.


Costo espacial: 2+4 +3 =9. Costo temporal: 1.5+1+1.5=4.
a
f

b
c

Figura A6.9 Cobertura 2.


Costo: 5+3=8. Costo temporal: 1.5+1+1.5=4.
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

15

a
f

b
c

Figura A6.10 Cobertura 3.


La heurstica de calce estructural no es adecuada para las componentes programables
actuales. Esto debido a que para celdas bsicas formadas por tablas de bsqueda de cuatro
variables, la biblioteca tendra demasiadas componentes, ya que habra que generar una celda de
biblioteca para cada una de las funciones que pueden generarse en una LUT. Una LUT de 4
variables permite formar 216 funciones, sin embargo no todas son diferentes; pero el nmero es
demasiado elevado. Este problema requiere herramientas computacionales de ayuda al diseo.
tech_decomp [-a and-limit] [-o or-limit]
Descompone todos los nodos de la red en compuertas and o compuertas or, dependiendo del
tipo de flag que se especifique: -a, -o.
Los fan-in quedan limitados por los nmeros and-limit u or-limit. Si no se especifican por
defecto se asumen lmites en 2.
read_library [-ainr] filename
Se lee una biblioteca de compuertas disponibles para efectuar el mapeo tecnolgico.
La opcin -a agrega la biblioteca a la corriente; si no se especifica a, se descarta la biblioteca
previa. La opcin i suprime agregar inversores extra a los primitivos. El flag n indica usar nand
en lugar de nor. El flag r indica que la biblioteca est en formato blif, en lugar de genlib.
map [-b #][-f #][-i][-m #][-n #][-r][-s][-p][-v #] [-A][-B #][-F][-G][-W]
El comando map, realiza el mapeo tecnolgico, previo a su ejecucin debe haberse cargado
la biblioteca de compuertas.
Con opcin m 0 produce un circuito de mnima rea, sin considerar lmites de carga.
Con opcin m 0 AF produce un circuito de mnima rea, considerando lmites de carga.
Con opcin n 1 AFG produce un circuito de mnimo retardo, considerando lmites de
carga. Pueden especificarse los requerimientos de tiempo con el comando set_delays, de este
modo el comando puede intercambiar rea por tiempo.
Con flag s se imprime estadstica del mapeo.
Print_gate imprime los nombres de las compuertas empleadas en cada nodo.
Print_delay imprime los retardos de cada nodo.

Profesor Leopoldo Silva Bijit

19-01-2010

16

Sistemas Digitales

El retardo de la red se calcula por la estructura de la red multinivel y por la eleccin de las
compuertas que implementan las funciones.
Existen dos algoritmos que reestructuran la lgica para disminuir el retardo.
El comando speed up descompone la red en trminos de compuertas simples, nands de dos
entradas e inversores, e intenta reducir los niveles colapsando secciones a travs de trayectorias
largas. Se sugiere correr el comando con el script:
decomp -g; eliminate -1; speed up;
map -m 1 -A.
El commando reduce depth reduce en forma uniforme la profundidad de la red, formando
racimos de nodos que luego transforma en un nodo simple. Para evitar crecimiento del rea se
determinan tamaos mximos de los racimos y se emplean comando de simplificacin y
factorizacin. Los creadores de sis sugieren el siguiente script.delay para emplear este
comando.
#script.delay
sweep
decomp -q
tech_decomp -o 2
resub -a -d
sweep
reduce_depth -b -r
red_removal
eliminate -l 100 -1
simplify -l
full_simplify -l
sweep
decomp -q
fx -l
tech_decomp -o 2
read_library lib2.genlib
read_library -a lib2_latch.genlib
map -s -n 1 -AFG -p
Formato de bibliotecas genlib.
Las celdas combinacionales tienen el siguiente formato:
GATE <cell-name> <cell-area> <cell-logic-function>
<pin-info>
..
<pin-info>
<cell-name> es el nombre de la celda en la biblioteca. El net-list queda en terminus de estos
nombres.
<cell-area> define un costo relativo del rea de la celda, en punto flotante.

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

17

<cell-logic-function> es la ecuacin de la celda, en formato eqn, la cual se termina en punto


y coma. La ecuacin define las entradas y salida de la celda. Si existen formas factorizadas que
pueden escribirse de diferente manera se especifican separadamente.
Ejemplo de minimal.genlib
GATE zero
0
GATE one
0
GATE inv1
1
GATE nand2
2
GATE nor2
2

O=CONST0;
O=CONST1;
O=!a;
O=!(a*b);
O=!(a+b);

PIN * INV 1 999 0.9 0.3 0.9 0.3


PIN * INV 1 999 1.0 0.2 1.0 0.2
PIN * INV 1 999 1.0 0.2 1.0 0.2

Cada <pin-info> tiene el formato:


PIN <pin-name> <phase> <input-load> <max-load>
<rise-block-delay> <rise-fanout-delay> <fall-block-delay> <fall-fanout-delay>
<pin-name> es el nombre del pin en la <cell-logic-function>, puede ser un * para
especificar que todos los pines tienen idntica informacin.
<phase> es INV, NONINV, o UNKNOWN
<input-load> define la carga de entrada del pin.
<max-load> especifica el fanout del pin.
<rise-block-delay> y <rise-fanout-delay> son los tiempos de levantamiento, tpicamente en
nanoseconds, y nanoseconds/unidad de carga.
<fall-block-delay> y <fall-fanout-delay> son los tiempos de bajada.
Ejemplo A6.6.
Para la siguiente red, almacenada en ejmap.eqn: f=a*b*c*!d;
Empleando minimal.genlib, con los siguientes comandos:
sis>read_eqn ejmap.eqn
sis>read_library minimal.genlib
sis>map
sis>print
[4]= a + b
[3]= d
[5]=[3] + c
{f}=[4] + [5]
sis>print_gate
[4] nand2 2.00
[3] inv1 1.00
[5] nand2 2.00
{f} nand2 2.00
Ntese que la suma de los pesos asociados a las reas da 7.00.
Las ecuaciones del mapeo se representan en la red de la Figura A6.11:

Profesor Leopoldo Silva Bijit

19-01-2010

18

Sistemas Digitales
4

a
b

f
c
d

Figura A6.11
Si el comando map se ejecuta con el flag s, se obtienen los valores:
Total gate area:
7.00
Maximun arrival time <3.90, 3.90>
Se asume que un cambio de una entrada se realiza con un retardo de 0.3. Luego la
propagacin de la seal d, a travs del inversor, tiene un costo temporal de: 0.9+0.3*1, que es la
suma del tiempo de levantamiento, ms el debido al fan-out, que es uno en este caso. La
propagacin a travs de la compuerta [5] que es un nand2, tiene costo temporal: 1.0+0.2*1=1.2,
igual retardo produce el nand en la salida. En total: (0.3 + 1.2 + 1.2 + 1.2) = 3.9, que es el
tiempo de retardo de la ruta crtica, que es entregado como el mximo tiempo de arribo.
Si se ejecutan los mismos comandos, pero cambiando la biblioteca para el mapeo, por la que
se muestra a continuacin, se obtiene la red de la Figura A6.12.
GATE zero
GATE one
GATE inv1
GATE nand2
GATE nand3
GATE nand4

0
0
1
2
3
4

O=CONST0;
O=CONST1;
O=!a;
O=!(a*b);
O=!(a*b*c);
O=!(a*b*c*d);

PIN * INV 1 999 0.9 0.3 0.9 0.3


PIN * INV 1 999 1.0 0.2 1.0 0.2
PIN * INV 1 999 1.1 0.3 1.1 0.3
PIN * INV 1 999 1.4 0.4 1.4 0.4

Ntese que en este caso se utiliza un nand de 4 entradas que ahora est disponible.
sis>print_gate
[3] inv1 1.00
[4] nand4 4.00
[f] inv1 1.00
sis>print
[3] = d
[4] = [3] + a + b + c
{f}= [4]
Total gate area:
Maximum arrival time:

Profesor Leopoldo Silva Bijit

6.00
<4.50, 4.50>

19-01-2010

Apndice 6. Uso de sis

19
a
b
c

Figura A6.12
Clculo del retardo: Cada inversor: 1.2, el nand aporta: 1.4+0.4*1=1.8. La seal de entrada
se asume con un cambio de 0.3. Resulta: 0.3+1.2+1.8+1.2=4.5.

A6.6. Mapeo tecnolgico a FPGA.


Las arquitecturas de las fpga ms representativas estn formadas por arreglos repetidos de
bloques lgicos idnticos. Los bloques tpicos son: tablas de bsqueda y arreglos de
multiplexores.
Arquitecturas basadas en multiplexores.
El comando act_map realiza el mapeo sobre una fpga con arquitectura Actel. Con el flag r
<filename> se escribe el mapeo en el archivo de nombre filename. No es necesario cargar una
biblioteca.
En la Figura A6.13 se ilustra el bloque bsico, que implementa la siguiente ecuacin:

out

( s0

s1 )( s A A0

s A A1 ) ( s0

s1 )( sB B0

sB B1 )

s0
s1
sA
A0

A1

1
0

sB
B0
B1

out

0
1

Figura A6.13
La siguiente ecuacin: f=a*b*c*d'; una vez cargada, mediante el comando:
act_map r <nombre_archivo>, genera el siguiente mapeo:
MODEL "ejmapfpga.eqn";
TECHNOLOGY scmos;
VIEWTYPE SYMBOLIC;
Profesor Leopoldo Silva Bijit

19-01-2010

20

Sistemas Digitales
EDITSTYLE SYMBOLIC;
INPUT
INPUT
INPUT
INPUT

"a"
"b"
"c"
"d"

:
:
:
:

"a";
"b";
"c";
"d";

OUTPUT

"f"

"[2]";

INSTANCE "BASIC_BLOCK":physical NAME = INST0;


"A0"
:
"GND";
"A1"
:
"c";
"SA"
:
"b";
"B0"
:
"GND";
"B1"
:
"GND";
"SB"
:
"Vdd";
"S0"
:
"d";
"S1"
:
"GND";
"out"
:
"[3]";
INSTANCE "BASIC_BLOCK":physical NAME = INST1;
"A0"
:
"GND";
"A1"
:
"GND";
"SA"
:
"Vdd";
"B0"
:
"GND";
"B1"
:
"[3]";
"SB"
:
"Vdd";
"S0"
:
"a";
"S1"
:
"GND";
"out"
:
"[2]";
ENDMODEL;
Se tiene, para la instancia 0, la ecuacin del bloque, en la cual se reemplazaron las entradas:

[3] (d 0)(b 0 b c) (d 0)(1 0 1 0) bcd


Reemplazando en la instancia 1, de la ecuacin del bloque, se obtiene:

[2] (a 0)(1 0 1 0) ( a 0)(1 0 1 [3])

a 3

abcd

Que comprueba el mapeo realizado, usando dos bloques.


Mapeo a xilinx
Write_xnf pXC40 <nombre_archivo>
Genera archivo con extensin xnf, que es compatible con las herramientas xilinx.

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

21

Write_xnf p X4 out.xnf

A6.7. Minimizacin y asignacin de estados.


Los mtodos descritos en el Captulo 12, quedan restringidos a matrices de transiciones con
un nmero limitado de renglones y columnas.
Ejemplo A6.7. Formato kiss en Sis.
Se tiene la siguiente matriz de transiciones, ver captulo 12, ejemplo 12.3:
Estado/Entrada
A
B
C
D
E
F

0
E/0
F/0
E/0
F/0
C/0
B/0

1
D/1
D/0
B/1
B/0
F/1
C/0

Figura A6.14. Matriz de transiciones Ejemplo A6.7.


#La descripcin se almacena el ej12_3.blif
.start_kiss
# una entrada (i), una salida (o) y 6 estados (s)
.i 1
.o 1
.s 6
# nmero de estados
.r A
# reset lleva a estado A.
# <entrada> <EstadoActual> <ProximoEstado> <salida>
0AE0
1AD1
0BF0
1BD0
0CE0
1CB1
0DF0
1DB0
0EC0
1EF1
0FB0
1FC0
.end_kiss
.end

Despus de leer el archivo, puede efectuarse la minimizacin:


sis> read_blif ej12_3.blif
sis> state_minimize
sis> write_blif
Profesor Leopoldo Silva Bijit

19-01-2010

22

Sistemas Digitales

Se reducen dos estados, y se cambian automticamente los identificadores de los estados,


resulta:
.start_kiss
.i 1
.o 1
.p 8
.s 4
.r S1
0 S0 S3 0
1 S0 S0 0
0 S3 S0 0
1 S3 S1 0
0 S1 S2 0
1 S1 S0 1
0 S2 S1 0
1 S2 S3 1
.end_kiss

La asignacin de estados se logra con el comando state_assign, el cual adems genera el


diseo de la red booleana. Se han agregado comentarios a los identificadores elegidos por el
programa:
.model ej12_3.blif
.inputs IN_0
.outputs OUT_0
.latch v3.0 LatchOut_v1 0 # flip-flop con entrada v3.0 y salida v1.
.latch v3.1 LatchOut_v2 1 # flip-flop con entrada v3.1 y salida v2.
.start_kiss
#la aplicacin repite el cdigo con las transiciones entre estados.
.i 1
.o 1
.p 8
.s 4
.r S1
0 S0 S3 0
1 S0 S0 0
0 S3 S0 0
1 S3 S1 0
0 S1 S2 0
1 S1 S0 1
0 S2 S1 0
1 S2 S3 1
.end_kiss
.latch_order LatchOut_v1 LatchOut_v2 #cdigos asignados
.code S0 00
.code S3 11
.code S1 01
.code S2 10
.names IN_0 LatchOut_v1 LatchOut_v2 OUT_0 #ecuacin de salida
101 1
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

23

110 1
.names IN_0 LatchOut_v1 LatchOut_v2 v3.0
00- 1
110 1
.names IN_0 LatchOut_v1 LatchOut_v2 v3.1
11- 1
0-0 1
.end

#entrada flip-flop v2

#entrada flip-flop v1

Las ecuaciones que describen las redes combinacionales de salida y prximo estado, se
obtienen con el comando write_eqn.
INORDER = IN_0 LatchOut_v1 LatchOut_v2;
OUTORDER = v3.0 v3.1 OUT_0;
OUT_0 = IN_0*LatchOut_v1*!LatchOut_v2 + IN_0*!LatchOut_v1*LatchOut_v2;
v3.0 = IN_0*LatchOut_v1*!LatchOut_v2 + !IN_0*!LatchOut_v1;
v3.1 = !IN_0*!LatchOut_v2 + IN_0*LatchOut_v1;

Out_0
LatchOut_v1

v3.0

LatchOut_v2

v3.1

IN_0

clk

Figura A6.15. Red booleana.


De blif a Verilog.
Considerando que con una seal de reset, la mquina debe ir al estado inicial S1=01, el cual
equivale a LatchOut_v1=0 y LatchOut_v2=1, puede traducirse las ecuaciones a un mdulo
Verilog, considerando el esquema de procesos, tipo Mealy, de la Figura A6.15 a.
Reset

P1

z
Y

P2
DQ

clk

Figura A6.15a. Esquema procesos verilog.


Profesor Leopoldo Silva Bijit

19-01-2010

24

Sistemas Digitales
module ej12_3 (input clk, Resetn, IN_0, output OUT_0);
reg LatchOut_v1, LatchOut_v2;
wire OUT_0, v3_0,v3_1;
// Redes combinacionales de prximo estado y de salida. P1
assign OUT_0 = (IN_0&LatchOut_v1&~LatchOut_v2) | (IN_0&~LatchOut_v1&LatchOut_v2);
assign v3_0 = (IN_0&LatchOut_v1&~LatchOut_v2) | ( ~IN_0&~LatchOut_v1);
assign v3_1 =( ~IN_0&~LatchOut_v2) | (IN_0&LatchOut_v1);

// Proceso registro. P2
always @(negedge Resetn or posedge clk)
if (Resetn == 0) begin LatchOut_v1<=0; LatchOut_v2 <= 1; end //Inicial=01
else begin LatchOut_v1<=v3_0; LatchOut_v2 <= v3_1; end
endmodule
Se han colocado los operadores booleanos de verilog, y el nombre de las seales blif v3.0 y
v3.1, por identificadores vlidos verilog.
Ejemplo A6.7a.
El diagrama de estados del ejemplo 12.4, en formato kiss2:
#ej12_4.kiss2
.i 1
.o 1
.p 30
.s 15
.r a
0ab0
1ac0
0bd0
1be0
0cf0
1cg0
0dh0
1di0
0ej0
1ek0
0fl0
1fm0
0gn0
1go0
0ha0
1ha0
0ia0
1ia0
0ja0
1ja0
0ka0
1ka0
0la0

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

25

1la0
0ma1
1ma1
0na1
1na1
0oa1
1oa1
.e

Luego de ejecutar: read_kiss ej12_4.kiss2 y state_minimize, con write_kiss se obtiene:


.i 1
.o 1
.p 16
.s 8
.r S3
0 S0 S3 1
1 S0 S3 1
0 S3 S4 0
1 S3 S5 0
0 S1 S3 0
1 S1 S3 0
0 S2 S1 0
1 S2 S1 0
0 S4 S2 0
1 S4 S2 0
0 S5 S6 0
1 S5 S7 0
0 S6 S1 0
1 S6 S0 0
0 S7 S0 0
1 S7 S0 0

Logrando una reduccin a 8 estados. Ahora el inicial es S3.


Ejemplo A6.8. Nova
Reconocedor de secuencias de largo 4. Salida uno cuando llegan: 0110 y 1010; salida cero
en el resto de los casos. El comando externo reset, debe llevar al estado inicial E0.

Estado
E0
E1
E2
E3
E4
E5
E6

Entrada
0
1
E1/0 E2/0
E3/0 E4/0
E4/0 E3/0
E5/0 E5/0
E5/0 E6/0
E0/0 E0/0
E0/1 E0/0

Figura A6.16 Matriz de transiciones Ejemplo A6.8


Profesor Leopoldo Silva Bijit

19-01-2010

26

Sistemas Digitales
En el Captulo 12 se obtienen mediante reglas heursticas:

Primera regla: E3 adyacente con E4; E5 con E6


Segunda regla: E1 adyacente con E2; E3 con E4; E5 con E6.
Tercera regla: Para entrada 0, estados E0, E1, E2, E3, E4, E5 adyacentes entre s. E0, E1, E2,
E3, E4, E5, E6 adyacentes entre s para entrada 1. Dando preferencia a las dos primeras reglas,
se obtuvo la asignacin que se muestra en la Figura A6.17:

V1V2
00
V3
0

E0

E1

01
0
1

E3
E4

11
2
3

E6
E5

10
6
7

E2

Figura A6.17. Asignacin por reglas.


La descripcin de la mquina secuencial:
.start_kiss
.i 1
.o 1
.s 7
.r E0
# <entrada> <EstadoActual> <ProximoEstado> <salida>
0 E0 E1 0
1 E0 E2 0
0 E1 E3 0
1 E1 E4 0
0 E2 E4 0
1 E2 E3 0
0 E3 E5 0
1 E3 E5 0
0 E4 E5 0
1 E4 E6 0
0 E5 E0 0
1 E5 E0 0
0 E6 E0 1
1 E6 E0 0
.end_kiss
.end

Luego de minimizar y asignar estados, con el comando state_assig, se obtiene la siguiente


asignacin:
.latch_order LatchOut_v1 LatchOut_v2 LatchOut_v3
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

27

.code E0 000
.code E1 001
.code E2 100
.code E3 011
.code E4 101
.code E5 111
.code E6 110
La cual se muestra en la Figura A6.18.

V1V2
00
V3
0

E0

E1

01
0

11
2

E3

E6

10

E5

E2

E4

Figura A6.18. Asignacin por defecto de nova.


El programa nova, tiene diferentes algoritmos de asignacin de estados.
El comando: state_assign nova h, produce un listado de opciones.
Por defecto aplica la opcin e ig, que aplica slo las restricciones debidas a la entrada.
Ejecutando el comando: state_assign nova e ioh, se aplican restricciones debidas a la
entrada y salida, y da mejores resultados. Se obtiene la asignacin:
.code E0 110
.code E1 011
.code E2 001
.code E3 000
.code E4 010
.code E5 100
.code E6 101
En este caso se cumplen las dos primeras reglas.

V1V2
00
V3
0

E3

E2

01
0
1

E4

E1

11
2
3

E0

10
6
7

E5
E6

4
5

Figura A6.19. Asignacin e ioh.

Profesor Leopoldo Silva Bijit

19-01-2010

28

Sistemas Digitales

Ejemplo A6.9. Jedi.


Como alternativa para efectuar la asignacin de estados se dispone de la aplicacin Jedi. Que
permite generar la codificacin binaria de entradas y/o salidas descritas en forma simblica. A
la vez, si se describe la matriz de transiciones entre estados en forma simblica (formato kiss),
puede efectuar la asignacin de estados.
Como puede verificarse la eleccin de los cdigos binarios puede significar un ahorro
considerable en el costo de la implementacin.
El comando: jedi ej12_8.blif, genera en la salida estndar, en formato blif, la asignacin de
estados.
Si se redirige la salida a un archivo se obtiene otro que luego puede ser procesado, dentro de
sis. Por ejemplo: jedi ej12_8.blif > ej128as.blif.
Si se comunica la salida de jedi con espresso, mediante una caera o pipe, puede
obtenerse el diseo minimizado de las redes combinacionales. En este caso debe agregarse la
opcin p, para generar el formato pla, que es compatible con espresso.
Por ejemplo: jedi p ej12_8.blif | espresso > ej12.pla, genera el siguiente archivo:
# JEDI, official release 1.2
#
# States.E0 100
# States.E1 111
# States.E2 110
# States.E3 001
# States.E4 101
# States.E5 000
# States.E6 010
#
.i 4
.o 4
.ilb v.0 v.1.0 v.1.1 v.1.2
.ob v.2.0 v.2.1 v.2.2 v.3
.p 7
001- 0001
1-11 1000
110- 0100
-100 1100
01-0 1010
-0-0 1000
-11- 0010
.e

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

29

v.2.0

v.1.0

v.2.1

v.1.1

v.2.2

v.1.2
v_0

v.3

clk

Figura A6.20. Asignacin jedi.


El comando: jedi h, muestra las opciones de codificacin que pueden emplearse. Por
ejemplo, el comando: jedi e c ej12_8.blif, emplea una combinacin de codificacin de las
entradas y salidas.
En el manual de la aplicacin, puede encontrarse la descripcin del formato para
codificacin con entradas y salidas simblicas.
Ejemplo A6.10. Modelo Mealy.
El siguiente diagrama representa a una mquina secuencial de estados finitos que tiene salida
uno cada vez que las ltimas tres entradas son la secuencia 101; cero en el resto de las
secuencias de entrada.

0/0
0/0

1/0
st0

1/0

st1

0/0

st2

1/1
st3
0/0

1/0

reset

Figura A6.21. Detector secuencia 101.


Puede describirse el diagrama por su matriz de transiciones.
.model 101 # salida 1 cada vez que las ltimas tres entradas sean 1, 0, 1
.start_kiss
.i 1
.o 1
0 st0 st0 0
1 st0 st1 0
0 st1 st2 0

Profesor Leopoldo Silva Bijit

19-01-2010

30

Sistemas Digitales
1 st1 st1 0
0 st2 st0 0
1 st2 st3 1
0 st3 st2 0
1 st3 st1 0
.end_kiss
.end
Los comandos:
sis> read_blif model101.blif
sis> state_minimize
sis> state_assign
sis> write_blif
Generan el siguiente archivo, con el diseo:
.model model101
.inputs v0
.outputs v3.2
.latch [6] v1 0
.latch [7] v2 0
.start_kiss
.i 1
.o 1
.p 8
.s 4
.r st0
0 st0 st0 0
1 st0 st1 0
0 st1 st2 0
1 st1 st1 0
0 st2 st0 0
1 st2 st3 1
0 st3 st2 0
1 st3 st1 0
.end_kiss
.latch_order v1 v2
.code st0 00
.code st1 11
.code st2 01
.code st3 10
.names v0 [6]
11
.names v0 v1 v2 [7]
-1- 1
1-0 1

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

31

.names v0 v1 v2 v3.2
101 1
.end
Que describe la red, formada por dos flip-flops.
Si se eliminan las lneas que describen la matriz de transiciones y la asignacin de estados,
resulta:
.model model101
.inputs v0
.outputs v3.2
.latch [6] v1 0
.latch [7] v2 0
.names v0 [6]
11
.names v0 v1 v2 [7]
-1- 1
1-0 1
.names v0 v1 v2 v3.2
101 1
.end
v3.2

v1

[6]

v2
v0

[7]
clk

Figura A6.22. Modelo blif, detector secuencia 101.


Empleando: x para la entrada, z para la salida, y con flip-flops Ds, puede escribirse:
.model model101
.inputs x
.outputs z
.latch D1 Q1 0
.latch D2 Q2 0
.names x D1
11
.names x Q1 Q2 D2
-1- 1
1-0 1
.names x Q1 Q2 z
101 1
.end

Profesor Leopoldo Silva Bijit

19-01-2010

32

Sistemas Digitales
Del formato blif, pueden escribirse las ecuaciones para los flip-flops y la salida:
Z= xQ1Q2;
D1= x; D2=xQ2+Q1
Las ecuaciones pueden obtenerse dentro de sis, mediante el comando print.

De blif a Verilog.
Ecuaciones de las cuales puede describirse la estructura de la red en Verilog:
// output 1 whenever last 3 inputs were 1, 0, 1
module model101 (input clk, Resetn, x, output z);
reg Q1, Q2;
wire z, D1, D2;
// Redes combinacionales de prximo estado y de salida. P1
assign z = (x&~Q1&Q2);
assign D1 = x;
assign D2 = (x&~Q2) | (Q1);
// Proceso registro. P2
always @(negedge Resetn or posedge clk)
if (Resetn == 0) begin Q1<=0; Q2 <= 0; end //Inicial=00
else begin Q1<=D1; Q2 <=D2; end
endmodule
Si se agregan los mdulos siguientes puede efectuarse una simulacin, con una secuencia de
entrada: 10100100.
module test(z,x,clk,Resetn);
input z;
output x,clk,Resetn;
reg x,clk,Resetn;
initial
begin
$dumpfile("model101.vcd");
$dumpvars(0, x, Resetn,clk,z);
end
initial begin: DetenerSimulacion
// Detiene la simulacin despus de 100 unidades de tiempo de simulacin.
#1000 $stop;
end
initial
begin
$monitor("x=%b z=%b Resetn=%b clk=%b ", x,z, Resetn, clk, $time);
Resetn=1;clk=0;x=0;
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

33

#5 Resetn=0;
#5 Resetn=1;
#5 x=1;
#5 clk=~clk;
#5 clk=~clk;
#5 x=0;
#5 clk=~clk;
#5 clk=~clk;
#5 x=1;
#5 clk=~clk;
if(z!=1) $display("error salida debe ser 1.");
#5 clk=~clk;
#5 x=0;
#5 clk=~clk;
#5 clk=~clk;
#5 x=1;
#5 clk=~clk;
if(z!=1) $display("error salida debe ser 1.");
#5 clk=~clk;
#5 x=0;
#5 clk=~clk;
#5 clk=~clk;
#5 x=0;
#5 clk=~clk;
#5 clk=~clk;
#5 $finish;
end
endmodule
module BancoDePrueba;
wire clk,Resetn,x,z;
model101 m1 (clk, Resetn,x,z);
test t1 (z,x,clk,Resetn);
endmodule
Pueden visualizarse las formas de ondas que se generan en el archivo model101.vcd:

Figura A6.23. Formas de ondas. Secuencia de entrada 1010100.

Profesor Leopoldo Silva Bijit

19-01-2010

34

Sistemas Digitales

La salida z es asincrnica, debido al Modelo de Mealy. No se especific escala de tiempo en


la simulacin.
Ejemplo A6.11. Modelo de Moore.
El siguiente diagrama de Moore representa a una mquina secuencial de estados finitos, que
tiene salida uno cada vez que las ltimas tres entradas son la secuencia 101; cero en el resto de
las secuencias de entrada.
0
0

1
st1

st0
0

st2
0

0
0

st3
1

1
reset

Figura A6.24. Detector secuencia 101.


La descripcin de los estados:
.model m101Moore
.inputs x
.outputs z
.start_kiss
.i 1
.o 1
.p 8
.s 4
.r st0
0 st0 st0 0
1 st0 st1 0
0 st1 st2 0
1 st1 st1 0
0 st2 st0 0
1 st2 st3 0
0 st3 st2 1
1 st3 st1 1
.end_kiss
Luego de disear en sis, se obtiene:
.model m101Moore
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

35

.inputs x
.outputs z
.latch x LatchOut_v1 0
.latch v3.1 LatchOut_v2 0
.names LatchOut_v1 LatchOut_v2 z
10 1
.names x LatchOut_v1 LatchOut_v2 v3.1
-1- 1
1-0 1
.end
De blif a Verilog.
El cual se puede escribir como un mdulo Verilog. Ntese que slo cambia el proceso
combinacional.
module model101Moore (input clk, Resetn, x, output z);
reg Q1, Q2;
wire z, D1, D2;
// Redes combinacionales de prximo estado y de salida. P1
assign z = (Q1&~Q2);
assign D1 = x;
assign D2 = (x&~Q2) | (Q1);
// Proceso registro. P2
always @(negedge Resetn or posedge clk)
if (Resetn == 0) begin Q1<=0; Q2 <= 0; end //Inicial=00
else begin Q1<=D1; Q2 <=D2; end
endmodule
El siguiente mdulo de prueba ilustra la generacin de la secuencia dentro de un lazo for.
module test(z,x,clk,Resetn);
input z;
output x,clk,Resetn;
reg x,clk,Resetn;
reg [1:10] sec;
//variable para almacenar secuencia de entrada
integer j;
initial
begin
$dumpfile("model101.vcd");
$dumpvars(0, x, Resetn, clk, z);
end
initial
begin
sec={1'b1,1'b0,1'b1,1'b0,1'b1,1'b0,1'b0,1'b1,1'b0,1'b1}; //inicio secuencia
//for (j=1;j<11;j=j+1) $display(" %d %b", j, sec[j]);
Profesor Leopoldo Silva Bijit

19-01-2010

36

Sistemas Digitales
$monitor("x=%b z=%b Resetn=%b clk=%b ", x,z, Resetn, clk, $time);
Resetn=1;clk=0;x=0;
#5 Resetn=0;
#5 Resetn=1;
for (j=1;j<11;j=j+1)
begin
#5 x=sec[j];
#5 clk=~clk; //subida
#5 clk=~clk;
if(j>2)
if( (x==1)&&(sec[j-1]==0)&&(sec[j-2]==1)&&(z==1)) $display ("ok");
end
#5 $finish;
end
endmodule

ok
Figura A6.25. Formas de ondas. Modelo de Moore.

En la Figura A6.25, se muestra el momento en el que debe imprimirse ok, para


indicar que detect la secuencia 101 en la entrada.
A6.8. Conversin de blif a VHDL.
En la distribucin de sis se dispone de dos aplicaciones que permiten convertir archivos en
formato blif a vhdl y viceversa. El formato blif debe especificar las compuertas y flip-flops
como compuertas de biblioteca; es decir debe estar mapeado tecnolgicamente.
Requieren de una biblioteca genlib, como primer argumento. La entrada y salida pueden ser
redirigidas desde y hacia archivos.
Para pasar de blif a vhdl:
blif2vst ejlib.genlib < intro.blif > intro.vhd
Para convertir de vhdl a blif:
vst2blif ejlib.genlib < intro.vhd > intro.blif

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

37

Ejemplo A6.12.
Una compuerta de biblioteca crea una instancia de una compuerta o flip-flop dependiente de
la tecnologa. Los parmetros de esas compuertas estn definidos en una biblioteca con formato
genlib. Con la siguiente biblioteca, almacenada en un archivo con nombre: ejlib.genlib:
#
# library gates + flip-flop + buffer
# Mnemonic gate names
#
# --- COMBINATIONAL GATES
GATE "inv_comb" 16 O=!1A;
PIN
* INV 1 999 1 .2 1 .2
GATE "buffer_comb" 16 O=1A;
PIN
* NONINV 1 999 1 .2 1 .2
GATE "and2_comb" 32 O2=1A*1B; PIN
* NONINV 1 999 1 .2 1 .2
GATE "or2_comb" 32 O1=1A+1B; PIN
* NONINV 1 999 1 .2 1 .2
GATE "const1_comb" 8 O=CONST1;
GATE "const0_comb" 8 O=CONST0;
# --- EDGE_TRIGGERED FLIP FLOPS
# D-FF
LATCH "dff_re"
88 Q=D;
PIN D
NONINV 1 999 1 .2 1 .2
SEQ Q ANY RISING_EDGE
CONTROL CLK 1 999 1 .2 1 .2
CONSTRAINT * .2 .2
Para el siguiente esquemtico, la descripcin blif con mapeo tecnolgico, es la siguiente:
E1

E1n

E2
S1

E0

E4
E0n

E3

S0

Figura A6.26. Esquemtico intro.blif.


#intro.blif
.model intro
.inputs E1, E0
.outputs S1, S0
.gate inv_comb 1A=E1 O=E1n
.gate inv_comb 1A=E0 O=E0n
.gate and2_comb 1A=E1n 1B=E0 O2=E2
.gate and2_comb 1A=E1 1B=E0n O2=E3
.gate or2_comb 1A=E2 1B=E3 O1=E4
.gate buffer_comb 1A=E0n O=S0
Profesor Leopoldo Silva Bijit

19-01-2010

38

Sistemas Digitales
.gate buffer_comb 1A=E4 O=S1
.end
El cual puede ser traducido a vhdl:
--intro.vhd
--[]-----------------------------------------[]--- | File created by Blif2Sls v1.0
| --- |
| --- |
by Roberto Rambaldi
| --- | D.E.I.S. Universita' di Bologna | ---[]-----------------------------------------[]-ENTITY intro IS
PORT(E1, E0: in BIT ; S1, S0: out BIT );
END intro;
ARCHITECTURE structural_from_SIS OF intro IS
COMPONENT "inv_comb"
PORT (O : out BIT ; 1A : in BIT );
END COMPONENT;
COMPONENT "buffer_comb"
PORT (O : out BIT ; 1A : in BIT );
END COMPONENT;
COMPONENT "and2_comb"
PORT (O2 : out BIT ; 1A : in BIT ; 1B : in BIT );
END COMPONENT;
COMPONENT "or2_comb"
PORT (O1 : out BIT ; 1A : in BIT ; 1B : in BIT );
END COMPONENT;
SIGNAL E1 : BIT;
SIGNAL E1n : BIT;
SIGNAL E0 : BIT;
SIGNAL E0n : BIT;
SIGNAL E2 : BIT;
SIGNAL E3 : BIT;
SIGNAL E4 : BIT;
SIGNAL S0 : BIT;
SIGNAL S1 : BIT;
BEGIN
inst0 : "inv_comb"
PORT MAP (O => E1n, 1A => E1);
inst1 : "inv_comb"
PORT MAP (O => E0n, 1A => E0);
inst2 : "and2_comb"
PORT MAP (O2 => E2, 1A => E1n, 1B => E0);
inst3 : "and2_comb"
PORT MAP (O2 => E3, 1A => E1, 1B => E0n);
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

39

inst4 : "or2_comb"
PORT MAP (O1 => E4, 1A => E2,
inst5 : "buffer_comb"
PORT MAP (O => S0, 1A => E0n);
inst6 : "buffer_comb"
PORT MAP (O => S1, 1A => E4);
END structural_from_SIS;

1B => E3);

A6.9. Sntesis de circuitos asincrnicos.


Mediante ejemplos simples se describe el uso de SIS para el diseo o sntesis de dispositivos
asincrnicos.
Los circuitos asincrnicos pueden describirse por un grafo de transiciones de seales
(ASTG). Se denominan transiciones a los eventos que representan cambios de los valores de las
seales de entrada o salida. Los estados o lugares representan las pre y post condiciones de las
transiciones.
Ejemplo A6.13.
Se tienen dos circuitos asincrnicos que interactan entre s a travs de las seales: x, y, z.
x
y
z

Figura A6.27. Comunicacin entre mquinas asincrnicas.


Los siguientes eventos se ilustran en la Figura A6.28: Un canto de subida de x desencadena
cantos de subida en z y en y. Un canto de subida en z implica un canto de bajada en x. Un canto
de subida en y, y un canto de bajada en x, producen un canto de bajada en z; ste ltimo
desencadena un canto de bajada en y; el que a su vez produce un canto de subida en x.
x
y
z

Figura A6.28. Eventos.

Profesor Leopoldo Silva Bijit

19-01-2010

40

Sistemas Digitales

El circuito a la derecha de la Figura A6.27, con entrada y, y con salidas x, z, puede


describirse mediante el siguiente grafo:
.model example
.inputs y
.outputs x z
.graph
x+ z+
x+ y+
z+ xx- zy+ zz- yy- x+
.end
El circuito a la izquierda tiene el mismo grafo, pero tiene como entradas a: x, z; con salida y.
El grafo puede almacenarse en el archivo: ex2astg.g, que se emplear ms adelante.
Las listas de las seales de entrada y salida son separadas por espacios, no por comas. Un
nombre de seal seguido del smbolo + representa un canto de subida; seguido por el smbolo
representa un canto de bajada. Puede usarse ~ para indicar conmutacin. Cada lnea describe un
elemento del grafo orientado, el cual se ilustra en la Figura A6.29.
z+

x+

x-

y+

z-

y-

Figura A6.29. Grafo ASTG.


Si se dispara x+, esta transicin marca los lugares implcitos entre x+ y z+ y entre x+ e y+.
Entonces el evento x+ habilita las transiciones z+ e y+. Las transiciones z+ e y+ no comparten
precondiciones, por lo cual pueden dispararse en cualquier orden, se dice que son concurrentes.
Cuando las transiciones y+ y x- se disparan se habilita z-, ya que ambas precondiciones estn
marcadas.
La representacin, que es ms general que el ejemplo simple que se ilustra, permite hacer
circular tokens a travs del grafo, con lo cual pueden representarse las interacciones del circuito
con su ambiente. El ejemplo ilustra un caso sencillo de comunicacin entre dispositivos
asincrnicos.
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

41

Estando dentro de SIS, el comando: read_astg <nombre_archivo> ingresa el grafo.


sis> read_astg exastg.g
sis> astg_syn
El comando astg_syn sintetiza el grafo en una implementacin en dos niveles. Con una
asignacin de estados libre de carreras.
El comando print muestra la red boolena.
sis> print
x_next = x_ z_' + y' z_'
z_next = x_ + y' z_
{x} = x_
{z} = z_
Las variables de estado se muestran seguidas de un underscore. Las salidas de las redes
combinacionales se muestran seguidas de next, por prximo estado.
Las ecuaciones anteriores resumen el diseo asincrnico mediante compuertas.
El comando astg_print_sg muestra el grafo con la asignacin de estados y las transiciones
habilitadas en cada lugar.
sis> astg_print_sg
STATE GRAPH
state 0 : (y=0 x=0 z=0 )
enabled transitions : [x+ ]
state 1 : (y=0 x=1 z=0 )
enabled transitions : [y+ z+ ]
state 2 : (y=0 x=0 z=1 )
enabled transitions : [y+ ]
state 3 : (y=0 x=1 z=1 )
enabled transitions : [y+ x- ]
state 4 : (y=1 x=0 z=0 )
enabled transitions : [y- ]
state 5 : (y=1 x=1 z=0 )
enabled transitions : [z+ ]
state 6 : (y=1 x=0 z=1 )
enabled transitions : [z- ]
state 7 : (y=1 x=1 z=1 )
enabled transitions : [x- ]
La descripcin grfica de las transiciones entre estados, del listado anterior, se muestra en la
Figura A6.30.

Profesor Leopoldo Silva Bijit

19-01-2010

42

Sistemas Digitales
xyz
000
x+
100
y+
z+
y-

110
x- 101
y+
z+
001
111
y+
x011
z010

Figura A6.30. Diagrama de transiciones.


Si se realiza el diseo para la red asincrnica a la izquierda de la Figura A6.27, resulta
sis> read_astg ex2astg.g
sis> astg_syn
sis> print
{y_next} = x + z
Ahora se tiene la variable de estado y.
Resumiendo las ecuaciones obtenidas, en ambos diseos, se obtiene, para las variables de
estado, identificando los prximos estados con el nombre de la variable seguida del smbolo +:

x
z

z (x y)
x y z

z x

Las cuales pueden representarse por el esquemtico de la Figura A6.31:

y
z

Figura A6.31. Red asincrnica.


Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

43

Modificando el circuito de la Figura A6.31, agregando la seal r, que permite establecer el


estado inicial como x=0, y=0 y z=0, se obtiene:

a
r

x
y
z
b

Figura A6.32. Red asincrnica con seal de reset r.


Mdulo que puede simularse, mediante Verilog, segn:
module ej(r, x, y, z);
input r;
output x, y, z;
wire a, b;
or #2 G1 (y, x, z);
not #1 G2 (xp, x);
not #1 G3 (yp, y);
not #1 G4 (rp, r);
and #2 G5 (a, xp, y);
and #2 G6 (b, yp, z, rp);
nor #2 G7 (x, r, a, z);
or #4 G8 (z, x, b); // z se genera ms lentamente que y
endmodule
Con lo cual pueden obtenerse las formas de ondas:

Figura A6.33. Formas de ondas.

Profesor Leopoldo Silva Bijit

19-01-2010

44

Sistemas Digitales

Ejemplo A6.14.
Latch transparente. Sean las siguientes formas de ondas que especifican un latch, con D y G
entradas y salida Q:
1

G
D
Q

Figura A6.34. Formas de ondas latch.


Se indican cuatro pulsos de G. En el intervalo 1, puede ocurrir primero el canto de bajada de
D o bien el canto de subida de G; en la Figura A6.34 ocurre primero el canto de subida de G.
Para representar esta situacin, puede definirse un lugar LQ1, de ste pueden gatillarse, en
cualquier orden, las transiciones G+ o D-.
El grafo de la Figura A6.35, muestra los lugares con crculos dobles, las transiciones con
crculos simples; un token como un punto negro, en el lugar LQ1. Esta marca indica que las
precondiciones se han cumplido; en el caso del ejemplo, significa que ya se produjo el canto de
bajada de G. Las diferentes instancias de G se enumeran de acuerdo a los nmeros de la Figura
A6.34.
Cuando todas las pre-condiciones de una transicin se han cumplido, sta puede dispararse,
cambiando su valor y el token pasa a su post-condicin. Los lugares con una pre-condicin y
una post-condicin se denominan lugares implcitos y no se dibujan. Un token slo puede pasar
a un lugar, lo cual modela que los eventos deben producirse con una mnima separacin
temporal entre ellos. Se acepta un no determinismo slo en las entradas.
LQ0
LQ1

G+/1

G-/1

D-

G+/2

Q-

G-/2

D+

G+/4

G+/3

G-/3

Q+

G-/4

Figura A6.35. ASTG del latch.


Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

45

En caso de estar en LQ1 se puede producir G+ o D- pero no ambas. Estando en LQ0 slo se
puede producir una de las dos posibles: D+ o G+.
La descripcin del grafo puede anotarse:
.name dlatch
.inputs D G
.outputs Q
.graph
LQ1 G+/1 DG+/1 G-/1
G-/1 LQ1
D- G+/2
G+/2 QQ- G-/2
G-/2 LQ0
LQ0 G+/3 D+
G+/3 G-/3
G-/3 LQ0
D+ G+/4
G+/4 Q+
Q+ G-/4
G-/4 LQ1
.end
La sntesis puede realizarse segn:
sis> read_astg dlatch.g
sis> astg_syn
sis> print
Q_next = G D + G' Q_ + D Q_
{Q} = Q_
sis> astg_print_sg
STATE GRAPH
state 7 : (D=1 CLK=1 Q=1 )
enabled transitions : [CLK- ]
state 6 : (D=1 CLK=1 Q=0 )
enabled transitions : [Q+ ]
state 5 : (D=0 CLK=1 Q=1 )
enabled transitions : [Q- ]
state 4 : (D=0 CLK=1 Q=0 )
enabled transitions : [CLK- ]
state 3 : (D=1 CLK=0 Q=1 )
enabled transitions : [D- CLK+ ]
state 2 : (D=1 CLK=0 Q=0 )
enabled transitions : [CLK+ ]
state 1 : (D=0 CLK=0 Q=1 )
Profesor Leopoldo Silva Bijit

19-01-2010

46

Sistemas Digitales
enabled transitions : [CLK+ ]
state 0 : (D=0 CLK=0 Q=0 )
enabled transitions : [D+ CLK+ ]
Del listado anterior puede confeccionarse el diagrama de transiciones:

Q+
110
G+
100
D+

DGQ
111
G101
D001
G+
011
Q010
G000

G+

G+

Figura A6.36. Diagrama de transiciones del latch.


De las ecuaciones de la red booleana, se obtiene el esquemtico en base a compuertas. El
diseo est libre de perturbaciones y sin carreras crticas.

G
Q

Figura A6.37. Circuito latch.


Ejemplo A6.15.
Sintetizar mediante compuertas un sistema digital con dos entradas m y s, y una salida q.

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

47
s
q
m

Figura A6.38. Entradas y salida de latch.


La Figura A6.39 muestra las relaciones causa-efecto entre las entradas y la salida. El canto
de subida de s, coloca alta la salida q; la seal m, puede ocurrir antes o despus del canto de
subida de s, y su canto de bajada (en caso de estar presente) coloca baja la salida q. Si m no est
presente, la bajada de s tambin pone la salida q baja. El circuito que genera las seales s y m,
adems debe cumplir que el canto de bajada de s ocurre antes que el canto de bajada de la seal
m.
s

2
1

2
2

Figura A6.39. Formas de ondas latch.


LQ1

s+/1

m+/1

q+ /1

s+/2

q+/2

LQ2
q-

s-/1

m+/2

LQ4

m-

LQ3

s-/2

Figura A6.40. ASTG del latch.

Profesor Leopoldo Silva Bijit

19-01-2010

48

Sistemas Digitales
La descripcin del grafo resulta:
#sm1.g
.inputs s m
.outputs q
.graph
LQ1 s+/1 m+/1
s+/1 q+/1
q+/1 LQ2
m+/1 s+/2
s+/2 q+/2
q+/2 LQ3
LQ2 s-/1 m+/2
s-/1 p4
m+/2 LQ3
LQ3 s-/2
s-/2 mm- LQ4
LQ4 qq- LQ1
.end

Notar que se han definido lugares donde existen ms de una transicin de salida o donde
llega ms de una transicin de entrada. Los tres recorridos posibles del token, a travs del grafo,
representan las tres situaciones ilustradas en las formas de ondas. Se han numerado los cantos,
que especifican instancias de los eventos, en la Figura A6.39.
La sntesis mediante sis, se efecta con los comandos:
sis> read_astg sm1.g
sis> astg_syn
sis> print
q_next = m q_ + s
{q} = q_
sis> astg_print_sg
STATE GRAPH
state 5 : (s=0 m=1 q=1 )
enabled transitions : [m- ]
state 4 : (s=0 m=1 q=0 )
enabled transitions : [s+ ]
state 7 : (s=1 m=1 q=1 )
enabled transitions : [s- ]
state 6 : (s=1 m=1 q=0 )
enabled transitions : [q+ ]
state 1 : (s=0 m=0 q=1 )
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

49

enabled transitions : [q- ]


state 0 : (s=0 m=0 q=0 )
enabled transitions : [s+ m+ ]
state 3 : (s=1 m=0 q=1 )
enabled transitions : [s- m+ ]
state 2 : (s=1 m=0 q=0 )
enabled transitions : [q+ ]
Las ecuaciones obtenidas permiten dibujar el esquemtico del latch.

m
s

Figura A6.41. Sntesis del latch.


El diagrama con asignacin de estados libre de carreras, puede dibujarse a partir de la
descripcin que entrega sis. Se ha mantenido de igual forma que el ASTG de la Figura A6.40,
para reforzar las similitudes y diferencias.
smq

000

m+/1
s+/1
100

101

s-/1

010

110

s+/2

q+ /1

q-

001

m+/2

q+/2

111

m-

s-/2
011

Figura A6.42. Diagrama de estados.

Profesor Leopoldo Silva Bijit

19-01-2010

50

Sistemas Digitales

Ejemplo A6.16.
Disear un contador binario asincrnico ascendente, mdulo 4, en base a compuertas, sin
emplear flip-flops, el diseo debe estar libre de perturbaciones y carreras. Con z 1 la cifra ms
significativa. Se cuentan los cantos de subida de la seal de entrada x. Expresar el diseo
mediante ecuaciones.

z1

z0
Figura A6.43. Contador asincrnico mdulo cuatro.
Se requieren ocho estados, los que se muestran en la Figura A6.44.

A
0

1
1

B
0

C
1

1
0

Figura A6.44. Diagrama de estados contador asincrnico mdulo cuatro.


Asumiendo q2, q1 y q0 como variables de estado, en la Figura A6.45 se muestran las
relaciones causa-efecto entre la entrada y el estado.
Se han numerado algunos eventos, debido a que, en un perodo, existen cuatro cantos de
subida y bajada de x, y dos de q0. La descripcin del grafo de las transiciones de las seales, se
basa en la Figura A6.45.

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis


x

51
1

q2
q1
q0

z1
z0

Figura A6.45. Eventos en contador mdulo 4.


La representacin del grafo resulta:
.model cntmod4
.inputs x
.outputs q2 q1 q0
.graph
x+/1 q0+/1
q0+/1 x-/1
x-/1 q1+
q1+ x+/2
x+/2 q0-/1
q0-/1 x-/2
x-/2 q2+
q2+ x+/3
x+/3 q0+/2
q0+/2 x-/3
x-/3 q1q1- x+/4
x+/4 q0-/2
q0-/2 x-/4
x-/4 q2q2- x+/1
.end
Luego de lo cual puede obtenerse informacin de las ecuaciones y del diagrama de estados.
sis> read_astg contador.g
sis> astg_syn
sis> print
q2_next = q0_ q2_ + q0_' q1_ x' + q1_ q2_ + q2_ x
q1_next = q0_ q2_' x' + q0_' q1_ + q1_ q2_' + q1_ x
q0_next = q0_ q1_ q2_ + q0_ q1_' q2_' + q0_ x' + q1_ q2_ x + q1_' q2_' x
{q2} = q2_
{q1} = q1_
{q0} = q0_
Profesor Leopoldo Silva Bijit

19-01-2010

52

Sistemas Digitales
Para el diagrama de estados, se obtiene:
sis> astg_print_sg
STATE GRAPH
state 11 : (x=1 q2=1 q1=1 q0=0 )
enabled transitions : [q0+ ]
state 0 : (x=0 q2=0 q1=0 q0=0 )
enabled transitions : [x+ ]
state 1 : (x=0 q2=1 q1=0 q0=0 )
enabled transitions : [q2- ]
state 12 : (x=1 q2=0 q1=0 q0=1 )
enabled transitions : [x- ]
state 13 : (x=1 q2=1 q1=0 q0=1 )
enabled transitions : [q0- ]
state 2 : (x=0 q2=0 q1=1 q0=0 )
enabled transitions : [q2+ ]
state 3 : (x=0 q2=1 q1=1 q0=0 )
enabled transitions : [x+ ]
state 14 : (x=1 q2=0 q1=1 q0=1 )
enabled transitions : [q0- ]
state 15 : (x=1 q2=1 q1=1 q0=1 )
enabled transitions : [x- ]
state 4 : (x=0 q2=0 q1=0 q0=1 )
enabled transitions : [q1+ ]
state 5 : (x=0 q2=1 q1=0 q0=1 )
enabled transitions : [x+ ]
state 6 : (x=0 q2=0 q1=1 q0=1 )
enabled transitions : [x+ ]
state 7 : (x=0 q2=1 q1=1 q0=1 )
enabled transitions : [q1- ]
state 8 : (x=1 q2=0 q1=0 q0=0 )
enabled transitions : [q0+ ]
state 9 : (x=1 q2=1 q1=0 q0=0 )
enabled transitions : [x- ]
state 10 : (x=1 q2=0 q1=1 q0=0 )
enabled transitions : [x- ]

Ejemplo A6.17. Contador asincrnico mdulo tres.


Primero realizaremos un diseo clsico de la red asincrnica; luego describiremos las
relaciones causa-efecto que determinan el ASTG, y se emplear sis.
La Figura A6.46 muestra un diagrama de estados para el contador asincrnico mdulo 3.

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

53

00

00

1
1

1
A

00

0
0

10

00

10

1
1

01

1
0

01

Figura A6.46. Diagrama de estados contador mdulo 3.


La asignacin de estados se efecta empleando cdigo Gray, de tal modo que los estados
adyacentes en la Figura A6.46 estn a distancia 1. Se elige arbitrariamente que el estado A est
asociado al cdigo 000.
G y H son estados inestables, empleados para transitar sin carreras desde estado F hasta el
estado A. Se dejan dos estados prximos sin especificar: estando en G con entrada 0, y estando
en H con entrada 0.
x
q2q1q0
0
1
A
000 001 000
00
B
001 001 011
00
C
011 010 011
01
D
010 010 110
01
E
110 111 110
10
F
111 111 101
10
G
101
100
00
H
100
000
00
q2+q1+q0+ z1z0
Figura A6.47. Tabla de transiciones contador mdulo 3.
La Figura A6.48 muestra un mapa del prximo estado, construido a partir de la tabla de la
Figura A6.47. Minimizando las funciones de prximo estado, libres de perturbaciones, se
obtienen:
q2+ = xq1q0 + q2q1 + q2q0
q1+ = xq2q0 + q1q0+ xq1 + q2q1
q0+ = q2q1q0+ q2'q1'q0 + xq2'q0 + x'q1' + x'q2 + xq1q0

Profesor Leopoldo Silva Bijit

19-01-2010

54

Sistemas Digitales
xq2
00

q1q0

01

11

10

00

001

---

000

000

01

001

---

100

011

11

010

111

101

011

10

010

111

110

110

q2+q1+q0+

Figura A6.48. Mapa de prximos estados de contador mdulo 3.


Las funciones de salida, se representan en el mapa de la Figura A6.49, a partir de la tabla de
la Figura A6.47.
q2q1
00

q0

01

11

10

00

01

10

00

00

01

10

00

z1z0

Figura A6.49. Mapa de funciones de salida de contador mdulo 3.


Se obtienen:
z1 = q2q1; z0 = q21
La Figura A6.50 muestra las formas de ondas de los cambios de estado relativas a los pulsos
asincrnicos de la entrada x. Se han enumerado los diferentes cambios de las seales, x y q0, en
un perodo.

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

55
C
x

G H A B
3

q2
q1
q0

z1
z0

Figura A6.50. Relaciones causa-efecto contador mdulo 3.


La representacin del grafo resulta:
.model cntmod3
.inputs x
.outputs q2 q1 q0
.graph
x+/1 q1+
q1+ x-/1
x-/1 q0-/2
q0-/2 x+/2
x+/2 q2+
q2+ x-/2
x-/2 q0+/1
q0+/1 x+/3
x+/3 q1q1- q0-/1
q0-/1 q2q2- x-/3
x-/3 q0+/2
q0+/2 x+/1
.end
La sntesis, libre de perturbaciones se obtiene mediante:
sis> read_astg cntmod3.g
sis> astg_syn
sis> print
q2_next = q0_ q2_ + q0_' q1_ x + q1_ q2_
q1_next = q0_ q2_' x + q0_' q1_ + q1_ q2_' + q1_ x'
q0_next = q0_ q1_ q2_ + q0_ q1_' q2_' + q0_ q2_' x + q1_' x' + q2_ x'
{q2} = q2_
{q1} = q1_
{q0} = q0_
Profesor Leopoldo Silva Bijit

19-01-2010

56

Sistemas Digitales

En el diseo clsico se obtiene un trmino adicional, xq1q0, para eliminar perturbaciones en la


funcin q0+. La posible perturbacin se produce con x=1, q1=1, q0=1; ya que con estos valores
la funcin, sin el trmino de consenso, queda: q0+= q2 + q2. Si q2 se genera a partir de q2, se
producir la perturbacin, de tipo falso cero, en el canto de bajada de q2. Observando las
formas de ondas de la Figura A6.50, se aprecia que el canto de bajada de q2 se produce con
q1=0 y q0=0; de este modo no es necesario emplear el trmino xq1q0. Debe notarse que la
sntesis de sis no lo genera.
La informacin del diagrama de estados, se logra con:
sis> astg_print_sg
STATE GRAPH
state 15 : (x=1 q2=1 q1=1 q0=1 )
enabled transitions : [q1- ]
state 4 : (x=0 q2=0 q1=0 q0=1 )
enabled transitions : [x+ ]
state 8 : (x=1 q2=0 q1=0 q0=0 )
enabled transitions : [x- ]
state 9 : (x=1 q2=1 q1=0 q0=0 )
enabled transitions : [q2- ]
state 6 : (x=0 q2=0 q1=1 q0=1 )
enabled transitions : [q0- ]
state 7 : (x=0 q2=1 q1=1 q0=1 )
enabled transitions : [x+ ]
state 10 : (x=1 q2=0 q1=1 q0=0 )
enabled transitions : [q2+ ]
state 0 : (x=0 q2=0 q1=0 q0=0 )
enabled transitions : [q0+ ]
state 11 : (x=1 q2=1 q1=1 q0=0 )
enabled transitions : [x- ]
state 2 : (x=0 q2=0 q1=1 q0=0 )
enabled transitions : [x+ ]
state 3 : (x=0 q2=1 q1=1 q0=0 )
enabled transitions : [q0+ ]
state 12 : (x=1 q2=0 q1=0 q0=1 )
enabled transitions : [q1+ ]
state 13 : (x=1 q2=1 q1=0 q0=1 )
enabled transitions : [q0- ]
state 14 : (x=1 q2=0 q1=1 q0=1 )
enabled transitions : [x- ]
Con la informacin anterior puede confeccionarse un grafo de transiciones con el estado total;
en ste se identifica el estado como la suma de las entradas y los estados internos, y se muestran
las transiciones nicas entre estados como eventos asincrnicos.

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

57
A = St0

0000
00

x-

q0+
-

B=St4

1100 St9
00

q0-

1001
01

xq2q1q0
z1z2

1101
00

q1+

1111 St15
00
1 x+

x0011
01

0111
10

q0-

St7

q0+

St2 0010

0110
10

01

x+
1010
St10
10

St13

q1-

1011
St14
01

St6

St8

q2-

0001
00

x+
St12

1000
00

St3

xq2+

1110
10 St11

Figura A6.51. Grafo de transiciones entre estados totales.


Ejemplo A6.18. Elemento C.
Los cuatro posibles recorridos del ASTG se ilustran con las formas de ondas.
Se acepta concurrencia entre las entradas. Estando x baja, puede producirse primero el canto
de a o b; similarmente estando x alta, los cantos de bajada de a y b pueden llegar en cualquier
orden. El canto de subida de x tiene dos precondiciones: que hayan llegado primero los cantos
de subida de a y b.
.model elementoC
.inputs a b
.outputs x
.graph
x- a+ b+
a+ x+
b+ x+
x+ a- ba- xb- x.end

Profesor Leopoldo Silva Bijit

19-01-2010

58

Sistemas Digitales

x-

a+

b+

x+

a-

b-

Figura A6.53. ASTG de elemento C.


a

3
3

4
4

Figura A6.54. Formas de ondas en elemento C.


La sntesis se realize mediante:
sis> read_astg elementoC.g
sis> astg_syn
sis> print
x_next = a b + a x_ + b x_
{x} = x_

a
x
b

Figura A6.55. Sntesis de elemento C.


sis> astg_print_sg
STATE GRAPH
state 1 : (a=0 b=0 x=1 )
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

59

enabled transitions : [x- ]


state 0 : (a=0 b=0 x=0 )
enabled transitions : [a+ b+ ]
state 3 : (a=1 b=0 x=1 )
enabled transitions : [a- ]
state 2 : (a=1 b=0 x=0 )
enabled transitions : [b+ ]
state 5 : (a=0 b=1 x=1 )
enabled transitions : [b- ]
state 4 : (a=0 b=1 x=0 )
enabled transitions : [a+ ]
state 7 : (a=1 b=1 x=1 )
enabled transitions : [a- b- ]
state 6 : (a=1 b=1 x=0 )
enabled transitions : [x+ ]
Ejemplo A6.19. Compuerta and.
a

3
3

4
4

5
5

Figura A6.56. Formas de ondas en compuerta and.


Descripcin del grafo asociado a compuerta and.
.model and
.inputs a b
.outputs x
.graph
a+/1 b+/1
b+/1 x+/1
x+/1 a-/1
a-/1 x-/1
x-/1 b-/1
b-/1 a+/2
a+/2 b+/2
b+/2 x+/2
x+/2 b-/2
b-/2 x-/2
x-/2 a-/2
a-/2 b+/3

Profesor Leopoldo Silva Bijit

19-01-2010

60

Sistemas Digitales
b+/3 a+/3
a+/3 x+/3
x+/3 a-/3
a-/3 x-/3
x-/3 b-/3
b-/3 b+/4
b+/4 a+/4
a+/4 x+/4
x+/4 b-/4
b-/4 x-/4
x-/4 a-/4
a-/4 a+/5
a+/5 a-/5
a-/5 b+/5
b+/5 b-/5
b-/5 a+/1
.end
Grafo del estado total.
sis> astg_print_sg
STATE GRAPH
state 0 : (a=0 b=0 x=0 )
enabled transitions : [a+ b+ ]
state 2 : (a=1 b=0 x=0 )
enabled transitions : [a- b+ ]
state 3 : (a=1 b=0 x=1 )
enabled transitions : [x- ]
state 4 : (a=0 b=1 x=0 )
enabled transitions : [a+ b- ]
state 5 : (a=0 b=1 x=1 )
enabled transitions : [x- ]
state 6 : (a=1 b=1 x=0 )
enabled transitions : [x+ ]
state 7 : (a=1 b=1 x=1 )
enabled transitions : [a- b- ]
Finalmente, la sntesis:
sis> print
{x_next} = a b

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

61

Referencias
http://www-cad.eecs.berkeley.edu
SIS: A System for Sequential Circuit Synthesis. Ellen M. Sentovich, Kanwar Jit Singh, Luciano
Lavagno, Cho Moon, Rajeev Murgai, Alexander Saldanha, Hamid Savoj, Paul R. Stephan,
Robert K. Brayton, Alberto Sangiovanni-Vincentelli. Electronics Research Laboratory
Memorandum No. UCB/ERL M92/41, Mayo 1992.

Profesor Leopoldo Silva Bijit

19-01-2010

62

Sistemas Digitales

ndice general.
APNDICE 6 .........................................................................................................................................1
USO DE SIS ...........................................................................................................................................1
SEQUENTIAL INTERACTIVE SYSTEM ........................................................................................1
A6.1. INTRODUCCIN ..........................................................................................................................1
A6.2. FORMATO BLIF. ..........................................................................................................................1
A6.3. LECTURA Y ESCRITURA DE ARCHIVOS. .......................................................................................3
Ejemplo A6.1. eqn. ........................................................................................................................3
Ejemplo A6.2. blif. .........................................................................................................................3
Ejemplo A6.3. Mquina de estados finitos. ...................................................................................5
Latch genrico. ...............................................................................................................................8
Ejemplo. ................................................................................................................................................ 8

A6.4. COMANDOS PARA MINIMIZACIN DE REDES MULTINIVEL. .........................................................8


A6.4.1. Descomposicin. ................................................................................................................8
A6.4.2. Eliminacin. .......................................................................................................................9
A6.4.3. Simplificacin. ...................................................................................................................9
A6.4.4. Resubstitucin. .................................................................................................................10
A6.4.5. Factorizacin. ..................................................................................................................10
A6.4.6. Limpieza. ..........................................................................................................................11
A6.4.7 Archivos de optimizacin multinivel. ................................................................................11
Ejemplo A6.4. .......................................................................................................................................... 12

A6.4.8. Otros comandos multinivel. ............................................................................................13


A6.5. MAPEO TECNOLGICO. ............................................................................................................13
Ejemplo A6.5. ...............................................................................................................................13
tech_decomp .................................................................................................................................15
read_library .................................................................................................................................15
map ...............................................................................................................................................15
Print_gate .....................................................................................................................................15
Print_delay ...................................................................................................................................15
Formato de bibliotecas genlib. .....................................................................................................16
Ejemplo A6.6. ...............................................................................................................................17
A6.6. MAPEO TECNOLGICO A FPGA. ..............................................................................................19
Arquitecturas basadas en multiplexores.......................................................................................19
Mapeo a xilinx .............................................................................................................................20
A6.7. MINIMIZACIN Y ASIGNACIN DE ESTADOS. ............................................................................21
Ejemplo A6.7. Formato kiss en Sis. ..............................................................................................21
De blif a Verilog. ..................................................................................................................................... 23
Ejemplo A6.7a. ................................................................................................................................... 24

Ejemplo A6.8. Nova ......................................................................................................................25


Ejemplo A6.9. Jedi. ......................................................................................................................28
Ejemplo A6.10. Modelo Mealy. ....................................................................................................29
De blif a Verilog. ..................................................................................................................................... 32

Ejemplo A6.11. Modelo de Moore. ...............................................................................................34


De blif a Verilog. ..................................................................................................................................... 35

Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

63

A6.8. CONVERSIN DE BLIF A VHDL. .............................................................................................. 36


Ejemplo A6.12. ............................................................................................................................ 37
A6.9. SNTESIS DE CIRCUITOS ASINCRNICOS. .................................................................................. 39
Ejemplo A6.13. ............................................................................................................................ 39
Ejemplo A6.14. ............................................................................................................................ 44
Ejemplo A6.15. ............................................................................................................................ 46
Ejemplo A6.16. ............................................................................................................................ 50
Ejemplo A6.17. Contador asincrnico mdulo tres. .................................................................... 52
Ejemplo A6.18. Elemento C. ........................................................................................................ 57
Ejemplo A6.19. Compuerta and. .................................................................................................. 59
REFERENCIAS.................................................................................................................................... 61
NDICE GENERAL. .............................................................................................................................. 62
NDICE DE FIGURAS. .......................................................................................................................... 64

Profesor Leopoldo Silva Bijit

19-01-2010

64

Sistemas Digitales

ndice de figuras.
Figura A6.1 .................................................................................................................................... 4
Figura A6.2 .................................................................................................................................... 5
Figura A6.3 .................................................................................................................................... 6
Figura A6.4 .................................................................................................................................... 7
Figura A6.5 .................................................................................................................................. 12
Figura A6.6 .................................................................................................................................. 13
Figura A6.7 Patrones biblioteca. ................................................................................................. 14
Figura A6.8 Cobertura 1. ............................................................................................................. 14
Figura A6.9 Cobertura 2. ............................................................................................................. 14
Figura A6.10 Cobertura 3. ........................................................................................................... 15
Figura A6.11 ................................................................................................................................ 18
Figura A6.12 ................................................................................................................................ 19
Figura A6.13 ................................................................................................................................ 19
Figura A6.14. Matriz de transiciones Ejemplo A6.7. .................................................................. 21
Figura A6.15. Red booleana. ....................................................................................................... 23
Figura A6.15a. Esquema procesos verilog. ................................................................................. 23
Figura A6.16 Matriz de transiciones Ejemplo A6.8 .................................................................... 25
Figura A6.17. Asignacin por reglas. .......................................................................................... 26
Figura A6.18. Asignacin por defecto de nova. .......................................................................... 27
Figura A6.19. Asignacin e ioh. ................................................................................................ 27
Figura A6.20. Asignacin jedi..................................................................................................... 29
Figura A6.21. Detector secuencia 101......................................................................................... 29
Figura A6.22. Modelo blif, detector secuencia 101..................................................................... 31
Figura A6.23. Formas de ondas. Secuencia de entrada 1010100. ............................................... 33
Figura A6.24. Detector secuencia 101......................................................................................... 34
Figura A6.25. Formas de ondas. Modelo de Moore. ................................................................... 36
Figura A6.26. Esquemtico intro.blif. ......................................................................................... 37
Figura A6.27. Comunicacin entre mquinas asincrnicas......................................................... 39
Figura A6.28. Eventos. ................................................................................................................ 39
Figura A6.29. Grafo ASTG. ........................................................................................................ 40
Figura A6.30. Diagrama de transiciones. .................................................................................... 42
Figura A6.31. Red asincrnica. ................................................................................................... 42
Figura A6.32. Red asincrnica con seal de reset r. .................................................................... 43
Figura A6.33. Formas de ondas. .................................................................................................. 43
Figura A6.34. Formas de ondas latch. ......................................................................................... 44
Figura A6.35. ASTG del latch. .................................................................................................... 44
Figura A6.36. Diagrama de transiciones del latch....................................................................... 46
Figura A6.37. Circuito latch. ....................................................................................................... 46
Figura A6.38. Entradas y salida de latch. .................................................................................... 47
Figura A6.39. Formas de ondas latch. ......................................................................................... 47
Figura A6.40. ASTG del latch. .................................................................................................... 47
Figura A6.41. Sntesis del latch. .................................................................................................. 49
Figura A6.42. Diagrama de estados............................................................................................. 49
Profesor Leopoldo Silva Bijit

19-01-2010

Apndice 6. Uso de sis

65

Figura A6.43. Contador asincrnico mdulo cuatro. .................................................................. 50


Figura A6.44. Diagrama de estados contador asincrnico mdulo cuatro. ................................. 50
Figura A6.45. Eventos en contador mdulo 4. ............................................................................ 51
Figura A6.46. Diagrama de estados contador mdulo 3. ............................................................ 53
Figura A6.47. Tabla de transiciones contador mdulo 3............................................................. 53
Figura A6.48. Mapa de prximos estados de contador mdulo 3. .............................................. 54
Figura A6.49. Mapa de funciones de salida de contador mdulo 3. ........................................... 54
Figura A6.50. Relaciones causa-efecto contador mdulo 3. ....................................................... 55
Figura A6.51. Grafo de transiciones entre estados totales. ......................................................... 57
Figura A6.53. ASTG de elemento C. .......................................................................................... 58
Figura A6.54. Formas de ondas en elemento C........................................................................... 58
Figura A6.55. Sntesis de elemento C. ........................................................................................ 58
Figura A6.56. Formas de ondas en compuerta and. .................................................................... 59

Profesor Leopoldo Silva Bijit

19-01-2010

Potrebbero piacerti anche