Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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
.names a b c
11 1
.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
19-01-2010
3
#lee el modelo desde archivo
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
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
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
19-01-2010
LatchOut_v1
IN_0
Out_0
D
LatchIn_[14]
clk
Figura A6.4
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
19-01-2010
[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;
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;
19-01-2010
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
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
r =q + a
q = ce +de
w =r+b
c
d
e
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;
19-01-2010
13
invert <nodo>
producto de sumas.
reduce_depth d k
este comando controla el retardo de la red en una optimizacin
multinivel, dejndola en k niveles.
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
b
c
b
c
19-01-2010
15
a
f
b
c
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.
19-01-2010
17
O=CONST0;
O=CONST1;
O=!a;
O=!(a*b);
O=!(a+b);
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);
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:
6.00
<4.50, 4.50>
19-01-2010
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.
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]";
a 3
abcd
19-01-2010
21
Write_xnf p X4 out.xnf
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
19-01-2010
22
Sistemas Digitales
19-01-2010
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
P1
z
Y
P2
DQ
clk
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
19-01-2010
25
1la0
0ma1
1ma1
0na1
1na1
0oa1
1oa1
.e
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
19-01-2010
26
Sistemas Digitales
En el Captulo 12 se obtienen mediante reglas heursticas:
V1V2
00
V3
0
E0
E1
01
0
1
E3
E4
11
2
3
E6
E5
10
6
7
E2
19-01-2010
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
V1V2
00
V3
0
E3
E2
01
0
1
E4
E1
11
2
3
E0
10
6
7
E5
E6
4
5
19-01-2010
28
Sistemas Digitales
19-01-2010
29
v.2.0
v.1.0
v.2.1
v.1.1
v.2.2
v.1.2
v_0
v.3
clk
0/0
0/0
1/0
st0
1/0
st1
0/0
st2
1/1
st3
0/0
1/0
reset
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
19-01-2010
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
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
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:
19-01-2010
34
Sistemas Digitales
1
st1
st0
0
st2
0
0
0
st3
1
1
reset
19-01-2010
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.
19-01-2010
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
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
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);
19-01-2010
40
Sistemas Digitales
x+
x-
y+
z-
y-
19-01-2010
41
19-01-2010
42
Sistemas Digitales
xyz
000
x+
100
y+
z+
y-
110
x- 101
y+
z+
001
111
y+
x011
z010
x
z
z (x y)
x y z
z x
y
z
19-01-2010
43
a
r
x
y
z
b
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
G+/1
G-/1
D-
G+/2
Q-
G-/2
D+
G+/4
G+/3
G-/3
Q+
G-/4
19-01-2010
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+
G
Q
19-01-2010
47
s
q
m
2
1
2
2
s+/1
m+/1
q+ /1
s+/2
q+/2
LQ2
q-
s-/1
m+/2
LQ4
m-
LQ3
s-/2
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
49
m
s
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
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
19-01-2010
51
1
q2
q1
q0
z1
z0
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- ]
19-01-2010
53
00
00
1
1
1
A
00
0
0
10
00
10
1
1
01
1
0
01
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+
q0
01
11
10
00
01
10
00
00
01
10
00
z1z0
19-01-2010
55
C
x
G H A B
3
q2
q1
q0
z1
z0
19-01-2010
56
Sistemas Digitales
19-01-2010
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
19-01-2010
58
Sistemas Digitales
x-
a+
b+
x+
a-
b-
3
3
4
4
a
x
b
19-01-2010
59
3
3
4
4
5
5
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
19-01-2010
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.
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
19-01-2010
63
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
65
19-01-2010