Tensilica Instruction Extension
# Tensilica Instruction Extension

Tensilica Instruction Extension (TIE) refiere al lenguaje propietario usado para personalizar la arquitectura de los núcleos de los procesadores Xtensa de Tensilica.

Usando TIE, el usuario puede modificar la arquitectura Xtensa agregando instrucciones y registros personalizados, instanciar puertos y colas TIE para comunicación multiprocesadores y agregar extensiones pre-configuradas (tales como Tensilica DSP). Las aplicaciones de software pueden beneficiarse en gran manera de instrucciones definidas por el usuario bien dirigidas, mientras que los puertos y colas TIE facilitan la comunicación multiprocesadores agregando interfaces I/O al núcleo del procesador. Usando el lenguaje TIE, el kit de herramientas Xtensa Xplorer se automatiza la generación y verificación de las instrucciones usadas para extender el procesador ISA. Esta automatización ayuda a reducir el tiempo de verificación de hardware que típicamente consume un gran porcentaje de la duración de los proyectos.

## Historia

TIE fue desarrollado por Tensilica para extender el conjunto de instrucciones de los procesadores Xtensa.

## Creación de código TIE

El código TIE puede crearse de dos maneras. Puede ser:

* Manualmente escrito y adjunto al núcleo del procesador en cuestión.
* Automáticamente generado usando Xtensa Xpress.

La codificación manual es similar a la programación con Verilog, un lenguaje de descripción de hardware. La generación automática de código TIE se hace usando la herramienta Xtensa Xpress. Esta herramienta analiza el código que será ejecutado por el procesador y genera las instrucciones TIE adicionales para el núcleo del procesador. Estas instrucciones adicionales serán automáticamente sustituidas cuando el compilador C/C++ genere el código assembler, impidiendo cualquier intervención manual.Esto provee una abstracción completa al usuario del proceso de generación de código TIE automático.

## Prueba y verificación

Una vez que el código ha sido compilado usando el compilador TIE, hay un mínimo de dos niveles de verificación y prueba requeridos para verificar la funcionalidad.

* Software testing: usando las interfaces C/C++ para las operaciones TIE. Estas instrucciones se integran al código C que prueba la funcionalidad requerida. Después de dicha integración, se prueba correr el software en un núcleo Xtensa usando un software de simulación para PC llamado ISS (Instruction Set Simulator).
* Verificación de hardware: Los RTL y las netlists producidas como salidas del compilador TIE son pasadas como entrada a varios simuladores como Modelsim. La funcionalidad requerida es verificada mediante simulación de hardware, para lo cual requiere la preparación de un entorno de co-simulación hardware/software.
