Você está na página 1de 22

DISEO DE COMPUTADORES: SNTESIS LGICA Gua de prcticas: Diseo del SRC con Alliance

Gua de prcticas de DCSL: Diseo del SRC con Alliance

Gua de prcticas de DCSL: Diseo del SRC con Alliance Contenidos

1 INTRODUCCIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 GUAS GENERALES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 PROCESO DE DISEO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4


3.1 Esquema general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Alternativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.3 Notas tiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4 REGISTROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1 Registros simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.2 Array de registros de propsito general (R) . . . . . . . . . . . . . . . . . . . . . . 8 4.3 Contador de desplazamientos (n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

5 UNIDAD ARITMTICO-LGICA . . . . . . . . . . . . . . . . . . . . . . . . 10 6 UNIDAD DE CONTROL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 7 SRC COMPLETO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12


7.1 Diseo y verificacin lgica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7.2 Colocacin de PADs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Gua de prcticas de DCSL: Diseo del SRC con Alliance

INTRODUCCIN

INTRODUCCIN
El objetivo de este documento es servir como gua para la implementacin mediante el

paquete Alliance del SRC (Simple Risc Computer) objeto de la asignatura. Se proporciona informacin sobre el proceso de diseo y verificacin de cada componente del SRC y de los pasos necesarios para obtener el layout final del circuito completo. En todo momento se asume que el alumno conoce tanto la estructura del SRC como el uso bsico de las herramientas del entorno Alliance. El entorno permite diferentes alternativas de diseo. La que aqu se proporciona busca la mxima sencillez y se basa fundamentalmente en la descripcin a alto nivel de los diferentes componentes y en el empleo de la sntesis lgica. Otras alternativas pueden hacer uso de los diferentes generadores de mdulos incluidos en el entorno Alliance. El alumno debe sentirse libre para explorar estas herramientas y buscar otras alternativas de diseo. El esfuerzo realizado en este sentido ser valorado. El diseo se compone de los siguientes mdulos: Registro temporal (A) Registro acumulador (C) Registro de direcciones de memoria (MA) Registro de datos de memoria (MD) Registro contador de programa (PC) Registro de almacenamiento del PC durante interrupcin (IPC) Registro de vectores de interrupcin (ISR) Registro de instrucciones (IR) Registro evaluador de la condicin de salto (cond) Array de 32 registros de propsito general (R[31..0]) Unidad Aritmtico-Lgica (ALU)

Gua de prcticas de DCSL: Diseo del SRC con Alliance

GUAS GENERALES

Contador de desplazamientos (n) Unidad de control (control) Procesador completo (SRC) La implementacin de cada mdulo se har en base a la representacin entrada/salida y tabla de comportamiento de cada elemento. A partir de ah, se realizar, cuando sea posible, una descripcin de comportamiento en VHDL de Alliance (ficheros .vbe) que corresponda con el funcionamiento del mdulo. Se generarn as mismo aquellos ficheros de entrada a las herramientas de Alliance que sean precisos para cubrir las diferentes etapas del proceso de diseo: patrones de test, etc. A modo de ejemplo, en un apartado posterior, se facilita la descripcin de comportamiento correspondiente al registro IR (fichero ir.vbe).

GUAS GENERALES
Con objeto de facilitar la evaluacin de los diseos, se han de seguir unos criterios

comunes relativos, principalmente, a la forma de nombrar los ficheros y las seales externas de cada circuito. Estos criterios son lo siguientes: Emplear para las seales de entrada/salida los nombres que se indican en los respectivos esquemas de los registros. Agrupar los cheros relativos a cada elemento dentro de un sub directorio. El nombre de ese sub directorio debe corresponder con el del elemento al que se reere. Nombrar los cheros y directorios en minsculas y con el nombre del mdulo al que hacen referencia. Ej.: ir.vbe, ir.vst, ir.pat, ... Cuando se emplee una herramienta para generar un chero con la misma extensin, elegir un nombre del chero de salida que reeje el proceso por el que se ha obtenido. Ej.: Proceso Optimizacin con bop Simulacin de chero vbe Sntesis lgica Entrada(s) ir.vbe ir.vbe, ir.pat ir.vbe Salida ir_bop.vbe ir_vbe_out.pat ir.vst

Gua de prcticas de DCSL: Diseo del SRC con Alliance

PROCESO DE DISEO

Al final de este documento se encuentran dos apndices con informacin relativa a la distribucin de los ficheros en el rbol de directorios y a los nombres de las seales de entrada/salida a emplear en cada mdulo (entidades).

PROCESO DE DISEO
El proceso de diseo del SRC se compone de las siguientes fases:

Diseo de los diferentes mdulos: registros, unidad de control, etc. Conexin de los mdulos: descripcin del SRC completo. Generacin del layout del SRC completo. Colocacin de PADS. El diseo de cada mdulo responde a una serie de pasos que se describen a continuacin, cuya finalidad es obtener una descripcin estructural (vst) del componente. El resto de las fases se describen en el apartado de integracin del SRC.

3.1 Esquema general


Los pasos generales para el diseo de cada mdulo del SRC son: 1. Descripcin de comportamiento (chero .vbe). En la mayora de los casos ser posible realizar una descripcin de comportamiento. Recordar que hay que emplear los nombres facilitados para las seales de entrada/salida (Apndice A). 2. Vericacin sintctica con asimut. Vericar el chero escrito usando las opciones -c y -b. Omitir -b en caso de que se trate de una descripcin estructural. 3. Optimizacin con bop. Toda descripcin funcional debe optimizarse con bop usando las opciones -l o -o, eligiendo el resultado ms simple. 4. Creacin de chero de patrones de test. Esta parte es fundamental, ya que un diseo es intil si no se ha comprobado de forma suciente su correcto funcionamiento. El chero

Gua de prcticas de DCSL: Diseo del SRC con Alliance

PROCESO DE DISEO

deber contener un nmero suciente de patrones que permita vericar la correcta realizacin de las diferentes operaciones del mdulo. 5. Simulacin con asimut tanto del chero original como del optimizado, comprobando que ambos generan los mismos resultados. 6. Sntesis lgica con scmap y simulacin del chero estructural, en su caso.

3.2 Alternativas
El proceso anterior es aplicable a la mayora de los registros y mdulos que componen el SRC. En ocasiones es posible emplear diversos generadores de mdulos que incorpora el entorno Alliance. En este caso la estructura del proceso de diseo puede variar incluso de forma muy significativa respecto de como se describe en esta gua, siendo posible la obtencin de alternativas de diseo ms eficientes y compactas. Como se mencion anteriormente, el alumno puede explorar estas vas basndose en la documentacin y ejemplos suministrados con el paquete Alliance, pudiendo para ello realizar las modificaciones que estime oportunas en el diseo, valorndose su esfuerzo en este sentido.

3.3 Notas tiles


A continuacin se recogen algunas notas a tener en cuenta durante el proceso de diseo con Alliance, extradas de la experiencia. Se puede obtener documentacin sobre cada comando del entorno y sobre los formatos de los cheros usando las pginas de manual del sistema. Ej. man asimut, man vbe. Puede encontrarse informacin adicional en la pgina web de Alliance: http://asim.lip6.fr/alliance Para facilitar el proceso de sntesis, asegrese de que cada mdulo ha sido optimizado con bop y que la versin optimizada funciona (asimut). Ensayar optimizacin global y local. Ojo! A veces el chero vbe optimizado con bop, a pesar de ser ms simple en trminos de literales, da lugar a cheros vst ms complejos. Para medir la complejidad puede usarse glop con la opcin -i. En las primeras lneas de la salida aparece el nmero de celdas empleadas.

Gua de prcticas de DCSL: Diseo del SRC con Alliance

REGISTROS

La herramienta scmap no maneja adecuadamente los cheros vbe que contienen dos estructuras block con asignamientos a la misma seal. En concreto, el ejemplo del multiplexor que se muestra en man vbe no es generado correctamente por scmap. La alternativa que se propone es emplear una estructura with-select que asigne a una seal intermedia, y luego asignar sta con una sola estructura block. En las estructuras block se recomienda usar condiciones simples del tipo: block (CK = '0') block (CK = '0' and not CK'stable) - Disparo por nivel - Disparo por anco

REGISTROS
En el SRC se emplean multitud de registros simples, un array de 32 registros de propsito

general y un contador empleado en las operaciones de desplazamiento. Trataremos estos tres casos por separado.

4.1 Registros simples


Los registros simples que componen el SRC son: A, C, MA, MD, PC, IPC, ISR, IR y COND. Todos ellos se pueden disearse de forma sencilla a partir de los esquemas y tablas de comportamiento suministrados en las clases tericas y siguiendo el esquema general el apartado anterior. Es til tener en cuenta que en la mayora de los casos las tablas de comportamiento de los registros son incompletas en el sentido de que slo especifican la funcionalidad para los valores de entrada que son tiles. El resto de los casos, por tanto, no ha de ser considerado en la descripcin vbe de los registros, simplificndose considerablemente el diseo. A modo de ejemplo se muestra el fichero vbe correspondiente al registro IR.

Gua de prcticas de DCSL: Diseo del SRC con Alliance

REGISTROS

Descripcin entrada/salida del registro de instrucciones (IR)

c1 c2 gra grb grc IRin

db<31..0>

IR<31..0>

sel_reg<4..0> op_code<4..0> c3<2..0>

Tabla de comportamiento
c1 0 0 1 0 0 0 0 *1 *2 c2 0 0 0 1 0 0 0 gra 0 0 0 0 1 0 0 grb 0 0 0 0 0 1 0 grc 0 0 0 0 0 0 1 0 0 0 0 0 IRin IR<- db 0 IR IN IR IR IR IR IR H.I. IN *1 *2. H.I. H.I. H.I. sel_reg 0 0 0 0 IR<26..22> IR<21..17> IR<16..12> op_code IR<31..27> IR<31..27> IR<31..27> IR<31..27> IR<31..27> IR<31..27> IR<31..27> c3 IR<2..0> IR<2..0> IR<2..0> IR<2..0> IR<2..0> IR<2..0> IR<2..0>

db<31..21> = IR<21>, db<20..0>=IR<20..0> db<31..16> = IR<16>, db<15..0>=IR<15..0>

Descripcin funcional VHDL-Alliance (ir.vbe)


-- Registro IR del SRC ----- DEFINICION DE LA ENTIDAD: ENTRADAS Y SALIDAS -entity IR is port ( db c1 c2 gra grb grc op_code c3 sel_reg vdd vss IRin ); end IR;

:inout wor_vector(31 downto 0) bus; :in bit; :in bit; :in bit; :in bit; :in bit; :out bit_vector(4 downto 0); :out bit_vector(2 downto 0); :out bit_vector(4 downto 0); :in bit; :in bit; :in bit

-- DEFINICION DE LA ARQUITECTURA O COMPORTAMIENTO DEL REGISTRO --

Gua de prcticas de DCSL: Diseo del SRC con Alliance

REGISTROS

architecture funcional of IR is -- Sennales internas signal irq :reg_vector (31 downto 0) register; signal pre_db :bit_vector (15 downto 0); begin -- Carga en paralelo REG_IR: block (IRin=0 and not IRinstable) begin irq <= guarded db; end block REG_IR; -- Salida de seleccion de registros with gra & grb & grc select sel_reg <= irq(26 downto 22) when "100", irq(21 downto 17) when "010", irq(16 downto 12) when "001", "00000" -- Escritura en el bus -- esto deberia funcionar, pero no es tratado correctamente por la -- sintesis logica (scmap) ---------c1_driven: block (c1&c2="10") begin db <= guarded ...; end block; c2_driven: block (c1&c2="01") begin db <= guarded ...; end block; -- almacenamiento

when others;

-- solucion alternativa empleando sennal auxiliar "pre_db" with c1&c2 select pre_db <= irq(16)&irq(16)&irq(16)&irq(16)&irq(16)&irq(16)&irq(16)&irq(16)& irq(16)&irq(16)&irq(16)&irq(16)&irq(16)&irq(16)&irq(16)&irq(16) when "01", irq(21)&irq(21)&irq(21)&irq(21)&irq(21)&irq(21)&irq(21)&irq(21)& irq(21)&irq(21)&irq(21)&irq(20 downto 16) when "10", X"0000" when others; db_out: block (c1 or c2=1) begin db(31 downto 16) <= guarded pre_db; db(15 downto 0) <= guarded irq(15 downto 0); end block; -- Codigo de operacion op_code <= irq(31 downto 27); -- c3 c3 <= irq(2 downto 0); end funcional;

4.2 Array de registros de propsito general (R)


La etapa de sntesis de layout (scr) requiere grandes cantidades de tiempo de CPU, mientras que el chequeo de reglas de diseo (druc) y la extraccin (lynx) requieren grandes

Gua de prcticas de DCSL: Diseo del SRC con Alliance

REGISTROS

Alternativa 1

Alternativa 2

db

0 1 deci Rin

D Ri

Q Q deci Rin

db

D Ri

Q Q

Figura 1: Alternativas para la inhibicin de un registro del array. cantidades de memoria. Dichas cantidades aumentan considerablemente con la complejidad del diseo (nmero de celdas). Para hacer ms viables todos estos pasos se propone emplear tcnicas de diseo que reduzcan el nmero de puertas empleadas. En concreto, el array de registros R es el que ms puertas requiere al constar de 32x32 elementos de almacenamiento, junto con la lgica asociada. Es en esta lgica asociada donde se propone hacer la simplificacin. Entre las dos alternativas mostradas en la Fig. 1, que implementan la inhibicin del registro i-simo del array, se debe optar por la segunda, que sustituye el multiplexor de entrada a cada elemento de memoria (ms complejo) por una puerta nand controlando la seal de reloj (ms simple). Esta opcin tiene, sin embargo, un inconveniente, y es que obliga a que la seal Rin permanezca en bajo mientras exista actividad en el decodificador. De lo contrario podran producirse cargas no deseadas de los elementos de memoria. Dicho problema puede resolverse fcilmente en la unidad de control multiplicando la seal Rin por la seal principal de reloj, como se muestra en la Fig. 2. En este caso, el tiempo T1 debe ser lo bastante grande para que se produzcan todas las operaciones combinacionales. De hecho, esta tcnica debera emplearse de forma generalizada para todas las seales de carga, ya que aseguran la ejecucin de un flanco de bajada en las mismas al final del ciclo de reloj.

4.3 Contador de desplazamientos (n)


Para realizar este mdulo, y como alternativa al procedimiento general de crear un fichero vbe, puede ser conveniente el uso de la herramienta syf del entorno. Esta herramienta est

Gua de prcticas de DCSL: Diseo del SRC con Alliance

UNIDAD ARITMTICO-LGICA

CK Rin_pre T1 CK Rin_pre Rin T2

Rin

Figura 2: Sincronizacin de la seal Rin con el reloj. pensada para la generacin de mquinas de estados finitos, lo que la hace indicada para el diseo de contadores. El circuito se especifica en un lenguaje especial para mquinas de estados finitos (fsm) y la herramienta genera el correspondiente fichero vbe que ahora puede ser sintetizado con scmap. El lenguaje fsm es bsicamente un sub conjunto de instrucciones procedimentales de VHDL. Un ejemplo muy completo puede consultarse en la pgina de manual de fsm (man fsm). La ejecucin de la herramienta syf se describe en man syf.

UNIDAD ARITMTICO-LGICA
El diseo de la Unidad Aritmtico-Lgica (ALU) es complejo, por lo que habr que

evaluar si es conveniente un particionado del diseo en diferentes bloques y un ensamblado posterior. En concreto, y a ttulo de ejemplo, se presentan tres opciones: 1. Sin particionado: Consistira en realizar la descripcin de comportamiento de todos los elementos de la ALU dentro de un mismo chero vbe. Ello dara lugar a un chero de tamao moderado ms difcil de depurar, pero con la ventaja de poder obtener la descripcin estructural (.vst) en un slo paso de sntesis lgica. 2. Particionado completo: Consistira en realizar descripciones vbe independientes de cada elemento de la ALU (circuito aritmtico, circuito lgico y circuito de desplazamiento), realizar la sntesis lgica de cada uno de ellos para obtener la descripcin vst y luego ensamblar los tres mdulos mediante una descripcin vst que empleara los mdulos anteriores como componentes.

10

Gua de prcticas de DCSL: Diseo del SRC con Alliance

UNIDAD DE CONTROL

3. Particionado parcial: Realizar la descripcin vbe independiente slo del mdulo ms complejo (p. ej. circuito aritmtico), el resto en una sola descripcin vbe y el ensamblado posterior de ambos bloques de forma similar al caso anterior. Estas opciones o cualquier otra que se considere oportuna deber desembocar en la generacin de un fichero alu.vst con la funcionalidad descrita en la tabla de comportamiento facilitada en clase. En cualquier caso, la mayor dificultad se encuentra en la realizacin del circuito sumador de 32 bits que es la base de la ALU. Esta dificultad estriba en que el formato vbe no incluye operadores aritmticos, por lo que la operacin de suma debe realizarse empleando nicamente operadores lgicos. En este sentido es til recordar que la suma S de dos nmeros binarios A y B se obtiene a partir de operaciones lgicas como sigue: ci + 1 = ai bi + bi ci + ai ci si = ai bi ci

(1)

donde a i , b i , s i y c i son respectivamente los bits i-simos del nmeros A, B, suma (S) y acarreo (C). Teniendo en cuenta esta ecuacin y las capacidades del formato vbe para componer y asignar vectores, la obtencin de la suma es relativamente sencilla. Esta misma capacidad para la manipulacin de vectores puede aplicarse al resto de operaciones de la ALU, haciendo que la descripcin del circuito en un slo fichero vbe no resulte excesivamente compleja. Como en los casos anteriores, es preciso escribir un fichero de patrones de test lo bastante completo y simular con asimut tanto el fichero alu.vbe (si existe) como el alu.vst.

UNIDAD DE CONTROL
La implementacin de dicha unidad se har en base a la representacin entrada/salida

facilitada y a las tablas de activacin de las seales de control que el alumno ha debido de calcular. Salvo por el contador de ciclos, la unidad de control es un circuito principalmente combinacional cuya lgica es diversa, por lo que se presta muy bien a su descripcin funcional

11

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

(control.vbe) y su posterior sntesis lgica con la herramienta scmap. No obstante, el alumno pude dividir su diseo en varios sub mdulos si lo estima oportuno. Dado el gran nmero de expresiones lgicas que se integran en la unidad de control, es necesario prestar la mxima atencin tanto en la implementacin de las mismas como en la comprobacin de las tablas de activacin de las seales de control. Por el mismo motivo es muy importante elaborar un completo conjunto de patrones de test que permita verificar en la mayor medida posible la correcta operacin de la unidad de control. En la elaboracin de estos patrones ha de ponerse especial atencin en los primeros patrones, que han de llevar a cabo la inicializacin del circuito, y en la construccin de una seal de reloj adecuada que, cuyos flancos estn distanciados entre s por varios patrones de test. Es muy probable que las funciones que componen la unidad de control puedan optimizarse, por lo que habr que usar la herramienta bop antes hacer la sntesis lgica y evaluar los beneficios que aporta.

SRC COMPLETO
El SRC (Simple Risc Computer) se construye empleando los bloques previamente

diseados (diversos registros, ALU y unidad de control). Se trata en definitiva de realizar una descripcin estructural que conecte los diferentes mdulos mediante un fichero que denominaremos src.vst, y que constituir el fichero cabecera de nuestro diseo. Se escribirn, adems, dos ficheros de conexin y colocacin de pads (src_pads.vst y src_pads.rin). Con todo ello, y con ayuda de las herramientas de sntesis, ser posible la generacin del layout completo del SRC. En este sentido, se distinguen tres fases: diseo (y verificacin) lgica, sntesis (y verificacin) de layout y colocacin de PADs (generacin del chip). A continuacin se describen estas fases.

7.1 Diseo y vericacin lgica


El proceso de diseo y verificacin lgica se compone de los siguientes pasos: 1. Escribir el chero de conexin src.vst: se hace notar que la declaracin de cada componentes en el chero src.vst debe corresponder con la entidad de dicho componente que

12

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

aparece en el chero vst del mismo. En concreto, las seales que en la descripcin vbe aparecan como wor_vector o mux_vector deben aparecer como linkage bit_vector en la declaracin del componente 2. Vericacin sintctica con asimut (asimut -c ...) 3. (opcional) Optimizacin lgica con glop: El comando glop, mediante la opcin -f, permite la optimizacin lgica mediante la insercin de buffers y duplicacin de puertas. Dicha optimizacin aumenta sensiblemente la complejidad del circuito. 4. Escritura de patrones de test y simulacin. Como el fichero src.vst emplea los otros mdulos como componentes, es necesario indicar a asimut y al resto de herramientas de Alliance en que directorios debe buscar estos componentes. En este sentido caben varias soluciones: Por defecto se busca en el directorio actual, por lo que se pueden copiar al mismo (.../src/src) los diferentes cheros de que depende. Esta solucin tiene el problema de tener que copiar manualmente estos cheros desde sus lugares originales en caso de que se realicen cambios en el diseo, situacin ms que probable. El problema anterior puede resolverse si en vez de realizar copias se realizan enlaces simblicos. Por ejemplo, estando en el directorio ~/src/src: $ ln -s ../a/a.vst . etc. La tercera solucin evita tener que copiar o enlazar cheros y consiste en ampliar la variable de entorno que indica donde se buscan los componentes. Por ejemplo, si se usa un shell de la familia del sh: $ MBK_CATA_LIB="$MBK_CATA_LIB:../a:../alu:../c:../cond:\ ../control:../ipc:../ir:../isr:../ma:../md:../n:../pc:../r" $ export MBK_CATA_LIB

Sntesis y vericacin de layout


Al tratarse de un circuito de tamao considerable, ciertas fases de la sntesis y vericacin de layout pueden necesitar gran cantidad de recursos en cuanto a memoria y/o tiempo de CPU. El proceso de sntesis y vericacin de layout consta de las siguientes fases:

13

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

1. Sntesis de layout con scr (generacin del chero src.ap). 2. Visualizacin de layout con graal: opcionalmente, si el layout no tuviera forma cuadrada, puede volver a generarse con scr empleando el parmetro -l. 3. Chequeo de reglas de diseo con druc. (opcional) 4. Extraccin del layout con lynx: Se debe emplear la opcin -f (man lynx). La extraccin debe tener el formato lgico de Alliance, lo cual se establece deniendo la variable MBK_OUT_LO al valor al (su valor habitual es vst). Esta denicin puede hacerse slo para la ejecucin actual si el comando se ejecuta de la siguiente forma (shell tipo sh): $ MBK_OUT_LO=al lynx -f src src_lynx 5. Comparacin de netlists con lvx: cheros src.vst y src_lynx.al. Emplear la opcin -f (man lvx). 6. Generacin de layout real con s2r. (opcional) 7. Visualizacin del layout real con dreal. Tambin es posible simular la versin extrada del layout (src_lynx.al), indicando a asimut el formato de entrada al, definiendo apropiadamente la variable de entorno MBK_IN_LO. Por ejemplo: $ MBK_IN_LO=al asimut src_lynx src src_out

7.2 Colocacin de PADs


El layout generado en el apartado anterior es el core del circuito integrado. Para completar el chip falta incluir unos dispositivos de acoplo entre cada seal externa del core y el mundo exterior. Estos dispositivos son los PADs y se disponen en forma de anillo entorno a core. Hay que colocar un PAD por cada seal externa del SRC, adems de una pareja de PADs de polarizacin del core y otra pareja de polarizacin del propio anillo de PADs. En la Tabla 1 se muestran los PADs a emplear y su uso. Informacin detallada sobre la operacin de cada uno puede obtenerse en las pginas de manual del sistema (man nobre_pad). La colocacin de los PADs para la generacin del chip completo conlleva las siguientes tareas:

14

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

Tabla 1: PADs empleados para la construccin del chip del SRC. Nombre pi_sp Descripcin PAD de entrada Ejemplo pdone : pi_sp port map(pad=>done, t=>donei, ck=>cki, vdde=>vdde, vddi=>vdd, vsse=>vsse, vssi=>vss); pab00 : po_sp port map(i=>abi(0), pad=>ab(0), ck=>cki, vdde=>vdde, vddi=>vdd, vsse=>vsse, vssi=>vss); pmdb00 : piot_sp port map(i=>mdboi(0), b=>mdbr, t=>mdbii(0), pad=>mdb(0), ck=>cki, vdde=>vdde, vddi=>vdd, vsse=>vsse, vssi=>vss); pvdde: pvddeck_sp port map(cko=>clock, ck=>cki, vdde=>vdde, vddi=>vdd, vsse=>vsse, vssi=>vss); pvsse: pvsse_sp port map(ck=>cki, vdde=>vdde, vddi=>vdd, vsse=>vsse, vssi=>vss); pvddi: pvddi_sp port map(ck=>cki, vdde=>vdde, vddi=>vdd, vsse=>vsse, vssi=>vss); pvssi: pvssi_sp port map(ck=>cki, vdde=>vdde, vddi=>vdd, vsse=>vsse, vssi=>vss); pck: pck_sp port map(pad=>ck, ck=>cki, vdde=>vdde, vddi=>vdd, vsse=>vsse, vssi=>vss);

po_sp

PAD de salida

piot_sp

PAD de entrada/salida.

pvddeck_sp

PAD de polarizacin superior del anillo de PADs. Incluye adems la seal de reloj hacia el core. PAD de polarizacin inferior del anillo de PADs. PAD de polarizacin superior del core. PAD de polarizacin inferior del core.

pvsse_sp

pvddi_sp

pvssi_sp

pck_sp

PAD de entrada de reloj al chip.

1. Creacin del chero de conexin de PADs (src_pads.vst): se trata de un chero estructural dnde se conecta cada PAD con la seal correspondiente del circuito central o core. Hay que emplear los PADs apropiados de la librera (entrada, salida, entrada/salida, polarizacin, etc.). No olvidar incluir PADs para la polarizacin del propio anillo de pads. Adems, hay que tener en cuenta que los PADs de entrada/salida (piot_sp) conectan los buses internos mdbi y mdbo con un nico bus externo mdb, y que estn controlados por la seal mdbr. 2. Creacin del chero de colocacin de pads (src_pads.rin): se trata del chero de entrada para la herramienta ring. Es aconsejable colocar los PADs de alimentacin junto al eje de simetra vertical.

15

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

3. Generar el layout del circuito con los pads (ring). 4. Extraccin (lynx) y comparacin (lvx) del chero de conexin de pads y del extrado (ver pgina de manual de lvx). 5. Visualizacin del layout con graal. 6. Generacin del layout real con s2r. 7. Visualizacin del layout real con dreal.

16

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

APNDICE A: ORGANIZACIN DE LOS FICHEROS


En la se muestra un esquema con los ficheros que deben ser escritos y/o generados al realizar la prctica segn se indica en esta gua. Se han omitido ficheros de algunos pasos intermedios como los resultados de los tests, etc. Estos ficheros deben organizarse tal y como se muestra, usando los mismos nombre y en minsculas! dentro de un directorio denominado src y con sub directorios apropiados para cada mdulo.

src |- a | |- a.vbe | |- a.vst | - a.pat |- alu | |- alu.vbe | |- alu.vst | - alu.pat |- c | |- c.vbe | |- c.vst | - c.pat |- cond | |- cond.vbe | |- cond.vst | - cond.pat |- control | |- control.vbe | |- control.vst | - control.pat |- ipc | |- ipc.vbe | |- ipc.vst | - ipc.pat |- ir | |- ir.vbe | |- ir.vst | - ir.pat |- isr | |- isr.vbe | |- isr.vst | - isr.pat

|| | | || | | || | | | || | | || | | -

ma |- ma.vbe |- ma.vst - ma.pat md |- md.vbe |- md.vst - md.pat n |- n.fsm |- n.vbe |- n.vst - n.pat pc |- pc.vbe |- pc.vst - pc.pat r |- r.vbe |- r.vst - r.pat src |- src.vst |- src.ap |- src_pads.vst |- src_pads.rin |- src_pads.ap - src_pads.pat

Figura 3: Estructura de directorios y ficheros esenciales para el diseo del SRC.

17

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

APNDICE B: ENTIDADES DE LOS MDULOS DEL SRC


**** mdulo: a/a.vbe **** entity A is port( d Ain a vdd vss :in ); end A; **** mdulo: alu/alu.vbe **** entity ALU port ( a b add sub inc4 c_and c_or c_not c_b shr shra shc shl f vdd vss ); end ALU; is :in bit_vector(31 downto 0); :in bit_vector(31 downto 0); :in bit; :in bit; :in bit; :in bit; :in bit; :in bit; :in bit; :in bit; :in bit; :in bit; :in bit; :out bit_vector(31 downto 0); :in bit; :in bit :in bit_vector(31 downto 0); -- dato de entrada :in bit; -- sennal carga (flanco bajada) :out bit_vector(31 downto 0); -- salida :in bit; -- polarizacion bit

**** mdulo: c/c.vbe **** entity C is port( d Cin cout:in db vdd vss :in ); end C;

:in bit_vector(31 downto 0); -- dato de entrada :in bit; -- sennal carga (flanco bajada) bit; -- sennal de lectura :out wor_vector(31 downto 0) bus; -- bus salida :in bit; -- polarizacion bit

**** mdulo: cond/cond.vbe **** entity COND is port( db c3 CONin cond vdd vss ); end COND; **** mdulo: control/control.vbe **** entity CONTROL is port ( ck :in bit; strt :in bit; Done :in bit; Reset :in bit; ireq :in bit; hard_reset :out bit; iack :out bit; op_code :in bit_vector(4 downto 0); :in bit_vector(31 downto 0); :in bit_vector(2 downto 0); :in bit; :out bit; :in bit; :in bit

18

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

bw :in bit; cond :in bit; IRin :out bit; c1 :out bit; c2 :out bit; gra :out bit; grb :out bit; grc :out bit; PCin :out bit; pcout :out bit; resetpc :out bit; IPCin :out bit; ipcout :out bit; ISRin :out bit; isri :out bit; isrm :out bit; isrout :out bit; MAin :out bit; MDin :out bit; dbr :out bit; mdbr :out bit; dbw :out bit; mdbw :out bit; Rin :out bit; rout :out bit; resetreg :out bit; ba :out bit; decr :out bit; ld :out bit; CONin :out bit; Ain :out bit; Cin :out bit; cout :out bit; ADD :out bit; SUB :out bit; INC4 :out bit; c_AND :out bit; c_OR :out bit; c_NOT :out bit; C_B :out bit; SHR :out bit; SHRA :out bit; SHC :out bit; SHL :out bit; R :out bit; W :out bit vdd :in bit; vss :in bit; ); end CONTROL; **** mdulo: ipc/ipc.vbe **** entity IPC is port ( db ipcout IPCin vdd vss ); end IPC; **** mdulo: ir/ir.vbe **** entity IR is port ( db c1 c2 gra grb grc op_code c3 sel_reg vdd :inout :in :in :in :in wor_vector(31 downto 0) bus; -- data bus bit; -- escribe IPC en el bus bit; -- carga el IPC con el dato del bus bit; bit

:inout wor_vector(31 downto 0) bus; :in bit; :in bit; :in bit; :in bit; :in bit; :out bit_vector(4 downto 0); :out bit_vector(2 downto 0); :out bit_vector(4 downto 0); :in bit;

19

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

vss IRin ); end IR;

:in bit; :in bit

**** mdulo: isr/isr.vbe **** entity ISR is port ( db idb imdb isri isrm isrout ISRin vdd vss ); end ISR; **** mdulo: ma/ma.vbe **** entity MA is port ( db ab MAin vdd vss ); end MA; **** mdulo: md/md.vbe **** entity MD is port ( db :inout wor_vector(31 downto 0) bus; -- data bus -- mdbi y mdbo se unen en mdb (inout) en el pad de salida mdbi :in bit_vector(31 downto 0); -memory data bus in mdbo :out wor_vector(31 downto 0) bus; -- memory data bus out dbr :in bit; -- lee MD hacia db dbw :in bit; -- escribe MD desde db mdbr :in bit; -- lee MD hacia mdbo mdbw :in bit; -- escribe MD desde mdbi MDin :in bit; vdd :in bit; vss :in bit ); end MD; **** mdulo: n/n.fsm **** entity N is port( ndb decr ld bw vdd vss ); end N; **** mdulo: pc/pc.vbe **** entity PC is port ( db resetpc :in pcout :in PCin :in vdd vss ); end PC; :inout bit; bit; :in :in bit; bit wor_vector(31 downto 0) bus; bit; : : : : : : in bit_vector(4 Downto 0); in bit; in bit; out bit; in bit; in bit :in :out :in :in :in bit_vector(31 downto 0); bit_vector(31 downto 0); bit; bit; bit :in :in :in :in :in :in :in :in :out wor_vector(31 downto 0) bus; bit_vector(7 downto 0); bit_vector(7 downto 0); bit; bit; bit; bit; bit; bit

20

Gua de prcticas de DCSL: Diseo del SRC con Alliance

SRC COMPLETO

**** mdulo: r/r.vbe **** entity R is port ( sel_reg :in rout :in ba Rin db resetreg :in vdd vss ); end R; **** mdulo: src/src.vst **** entity SRC is port( -- Buses de direcciones y datos a memoria ab : out bit_vector(31 downto 0); mdbi : in bit_vector(31 downto 0); mdbo : out bit_vector(31 downto 0); w r mdbr done ireq iack hard_reset reset strt ck : out : out : out bit; : in bit; : in bit; : out bit; : out bit; : in bit; : in bit; : in bit; bit bit; -- escritura en memoria bit; -- lectura de memoria -- activa pad de salida a memoria -- op. de memoria completada :in :in :inout bit; :in :in bit_vector(4 downto 0); bit; bit; bit; wor_vector(31 downto 0) bus; bit; bit

-- hard_reset (disp. externos) -- reset del procesador -- strt bit; -- reloj principal

-- polarizacion vdd : in vss : in ); end SRC; **** mdulo: src/src_pads.vst **** entity SRC is port(

-- Buses de direcciones y datos a memoria ab : out bit_vector(31 downto 0); mdb : inout wor_vector(31 downto 0); w r done ireq iack hard_reset reset strt ck : out : out : in bit; : in bit; : out bit; : out : in bit; : in bit; : in bit; bit bit; -- escritura en memoria bit; -- lectura de memoria -- op. de memoria completada

-- hard_reset (disp. externos) bit; -- reset del procesador -- strt bit; -- reloj principal

-- polarizacion vdd : in vss : in ); end SRC;

21

Você também pode gostar