• No results found

Chapter 2: Study region, study species and development of a participatory

2.5. The research process and implications of external perceptions

2.5.4. The effects of external perceptions

Es la corriente que fluye a través de los diodos, cuando se encuentran polarizados de forma inversa. El leakage está directamente relacionado con el proceso de fabricación, esta puede ser reducida con el tamaño de los diodos. Una forma de combatir este tipo de corriente es apagándolos en los momentos en que no se vayan a utilizar.

2.5. Pipeline

La segmentación (pipelining) es un método por el cual se consigue aumentar el rendimiento de sistemas digitales. Es aplicado, sobre todo, en microprocesadores. Un ejemplo claro puede ser que el gas en un oleoducto, a la máxima velocidad es necesario dividirlo en tramos y colocar una bomba que dé un nuevo impulso al gas. El símil con la programación existe en que los cálculos deben ser registrados o sincronizados con el reloj cada cierto tiempo, para que la ruta crítica (tramo con más carga o retardo computacional entre dos registros de reloj) se reduzca [15].

La ruta crítica es en realidad la frecuencia máxima de trabajo alcanzada por el conjunto. A mayor ruta crítica (tiempo o retraso entre registros) menor es la frecuencia máxima de trabajo y a menor ruta crítica mayor frecuencia de trabajo. La una es la inversa de la otra. Repartir o segmentar equitativamente el cálculo hace que esa frecuencia sea la óptima a costa de más área para el almacenamiento o registro de los datos intervinientes y de un retraso o latencia (en ciclos de reloj/tiempo) en la salida del resultado equivalente al número de segmentaciones o registros realizados. La ventaja primordial de este sistema es que, tal y como se muestra en la figura 2.18, una vez el pipe está lleno, es decir,

30

después de una latencia de cuatro en la figura 2.18, los resultados de cada comando vienen uno tras otro, cada flanco de reloj y sin latencia extra por estar encadenados dentro del mismo pipe. Todo esto habiendo aumentado a la frecuencia máxima de trabajo [15].

Figura 2.18 Bloque de Pipeline [15].

2.6. Auto Pipeline

La técnica de auto pipeline es una técnica propia de las herramientas de síntesis, que se encargan de analizar en qué parte del circuito se encuentra la carga más alta de componentes combinacionales y pone una línea de pipes, para mitigar el impacto que tiene sobre la potencia y el desempeño del circuito, dependiendo las metas del diseño. En la figura 2.19 se aprecia un diseño completamente combinacional:

Figura 2.19 Diseño Combinacional

Diseño

31

Después de realizar el proceso de auto pipeline, en el momento de realizar la síntesis el software dependiendo de las líneas de pipes que se quieran colocar por el usuario, el software divide el circuito y su salida se puede apreciar en la figura 2.20:

Figura 2.20 Diseño combinacional con auto pipe line

La figura 2.20 se puede apreciar el circuito dividido con dos pipe-lines, esta técnica permite la reducción de potencia ya que el circuito no debe resolver todas las operaciones en un sólo ciclo de reloj, sino que usa pipes para resolverlos en ciclos determinados, esta técnica es implementada en este trabajo de investigación para la parte de optimización de potencia.

2.7. Testbench

El testbench tiene como propósito el de generar los estímulos que excitará el circuito bajo prueba, escribir testbench es igual de complejo que escribir el rtl ya que debe cumplir exactamente los mismos requisitos que el rtl que fue diseñado.

En la figura 2.21 se puede apreciar cómo las salidas del testbench son las entradas del DUT (Device Under Test) este DUT es el diseño en rtl, y las salidas del DUT son las entradas del testbench, esto con el fin de verificar la funcionalidad del diseño.

Hay varias etapas de verificación o de diseño de testbench:

Test básico: este tipo de test lo que se encarga es de excitar el DUT para verificar la interconectividad del diseño y observar los resultados.

32

Test medio: este tipo de test se encarga de excitar el circuito o DUT, y verificar las salidas del diseño para comprobar la funcionabilidad del mismo.

Test avanzado: este tipo de test se encarga de excitar el circuito, verificar las salidas y realizar un cubrimiento de todos los posibles movimientos del diseño, para así lograr un cubrimiento por encima del 90% de todas las señales del circuito, y garantizar su funcionamiento total en caso de llevarlo al proceso de fabricación.

Como el testbench debe verificar el funcionamiento del circuito, este mismo debe de realizar exactamente lo mismo que se describe en rtl, una ventaja importante de los testbench es que este código no es sintetizable, lo que permite escribir el diseño en alto nivel y realizar la comprobación del circuito con un código diferente al diseñado en rtl.

Figura 2.22 Señales en una simulación

En la figura 2.22 se puede apreciar la simulación de un circuito donde sus señales son generadas por el testbench.

La comprobación del funcionamiento del circuito no es más que la comparación del modelo de referencia testbench con el circuito en rtl, si el resultado de estos dos diseños es diferente, se debe reportar para realizar los ajustes al rtl, aclarando que el testbench debe estar bien escrito para realizar esta comparación.

El testbench puede ser escrito en diferentes lenguajes de alto nivel como C, Sytem C,C++ Specman, Vera , Phyton entre otros, lo que hace del testbench una herramienta poderosa de verificación.

33

Capítulo 3

3. OBJETIVOS

3.1

Objetivo general

Implementar un diseño en RTL que garantice una buena relación de desempeño y potencia del algoritmo de encriptación AES-128.