SistemaC
La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la
versión revisada el 28 de agosto de 2018; las comprobaciones requieren
6 ediciones .
SystemC es un lenguaje de verificación y diseño de modelos a nivel de sistema implementado como una biblioteca C++ de código abierto . [2] La biblioteca incluye un motor de modelado de eventos que le permite obtener un modelo de dispositivo ejecutable. El lenguaje se utiliza para construir modelos transaccionales y de comportamiento, así como para síntesis de alto nivel.
El lenguaje SystemC utiliza una serie de conceptos similares a los de los lenguajes de descripción de hardware VHDL y Verilog : interfaces, procesos, señales, eventos, jerarquía de módulos. El estándar SystemC no impone restricciones sobre el uso del lenguaje C++ al describir modelos de sistemas.
Se ha desarrollado un borrador de estándar para la síntesis de SystemC , cuyo propósito es definir un subconjunto de los lenguajes C++ y SystemC adecuados para la síntesis de comportamiento y RTL. [3]
Estándares
- Norma IEEE 1666-2005 IEEE Standard System C Language Reference Manual [4]
Ejemplo
Ejemplo de descripción del modelo sumador :
#include "systemc.h" // incluyendo el archivo de encabezado de la biblioteca SystemC
SC_MODULE ( sumador ) // declaración de módulo (clase) {
sc_in < int > a , b ; // puertos sc_out < int > sum ;
void do_add () // proceso {
suma = a + b ;
}
SC_CTOR ( sumador ) // constructor {
SC_METHOD ( hacer_agregar ); // registro del proceso do_add en el motor de modelado sensitivo << a << b ; // lista de sensibilidad del proceso do_add }
};
Características del lenguaje
Módulos (módulo)
Los módulos son los componentes básicos de SystemC. Un modelo en SystemC generalmente consta de varios módulos que se comunican a través de puertos.
Señales
Las señales en SystemC son el equivalente a enviarlas por cable.
Puertos
A través de los puertos, el módulo se comunica con el mundo exterior (generalmente con otros módulos).
Procesos
Los procesos son los principales elementos informáticos. Los procesos se ejecutan en paralelo .
Canales
Los elementos se comunican a través de canales en SystemC. Los canales pueden ser cables simples o mecanismos de conexión complejos como colas FIFO o buses .
Canales básicos:
- señal
- buffer
- fifo
- exclusión mutua
- semáforo
Interfaces
Los puertos utilizan interfaces para comunicarse a través de canales.
Eventos
Debe declararse durante la inicialización. Permitir la sincronización de procesos.
Tipos de datos
SystemC contiene varios tipos de datos que admiten el modelado de hardware.
Ampliación de tipos estándar:
- sc_int<> entero con signo de 64 bits
- sc_uint<> entero sin signo de 64 bits
- sc_bigint<> entero con signo de valor de bits arbitrario
- sc_biguint<> entero sin signo de bitness arbitrario
Tipos booleanos:
- sc_bit bit de 2 dígitos
- bit de 4 dígitos sc_logic
- sc_bv<> vector (matriz unidimensional) de sc_bit
- sc_lv<> vector sc_logic
Tipos de puntos fijos:
- sc_fixed<> punto fijo firmado con plantilla
- sc_ufixed<> punto fijo sin firmar con plantilla
- sc_fix punto fijo firmado sin plantilla
- sc_ufix punto fijo sin firmar sin plantilla
Lista de aplicaciones que soportan SystemC
- Aldec Active-HDL , Riviera [5] , cosimulación.
- Cadence Design Systems C-to-Silicon Compiler [6] , síntesis.
- Synopsys System Studio [7] , modelado, análisis, verificación.
- Mentor Graphics Catapult C Síntesis [8] , síntesis.
- Forte Design Systems Cynthesizer [9] , síntesis.
- Sistema Calypto SLEC [10] , análisis de código.
- Conjunto de herramientas de validación de Jeda [11] , análisis de código.
- SystemCrafter SystemCrafter SC [12] , síntesis.
Notas
- ↑ https://github.com/accellera-official/systemc/blob/master/LICENSE
- ↑ Acerca de SystemC (ing.) (enlace descendente) . - una breve descripción del lenguaje SystemC. Fecha de acceso: 13 de agosto de 2009. Archivado desde el original el 28 de octubre de 2007.
- ↑ Borradores OSCI bajo revisión pública (inglés) (enlace no disponible) . - una lista de proyectos de normas OSCI. Consultado el 13 de agosto de 2009. Archivado desde el original el 21 de marzo de 2012.
- ↑ Condiciones de uso de IEEE-SA GetIEEE 1666 (enlace descendente) . Consultado el 16 de noviembre de 2008. Archivado desde el original el 18 de mayo de 2008. (indefinido)
- ↑ Aldec - Technologies - SystemC Archivado el 22 de marzo de 2009.
- ↑ Compilador Cadence C-to-Silicon . Consultado el 28 de noviembre de 2008. Archivado desde el original el 19 de septiembre de 2011. (indefinido)
- ↑ Estudio del sistema . Consultado el 2 de junio de 2011. Archivado desde el original el 4 de junio de 2011. (indefinido)
- ↑ Catapult C Synthesis - Correcto por construcción, RTL de alta calidad, 10-100 veces más rápido - Mentor Graphics . Consultado el 28 de noviembre de 2008. Archivado desde el original el 6 de diciembre de 2008. (indefinido)
- ↑ Cynthesizer cierra la brecha de ESL a silicio (enlace no disponible) . Consultado el 28 de noviembre de 2008. Archivado desde el original el 12 de mayo de 2008. (indefinido)
- ↑ Calipto | Sistema SLEC . Consultado el 28 de noviembre de 2008. Archivado desde el original el 21 de diciembre de 2008. (indefinido)
- ↑ Productos JEDA | Automatización de la validación del modelo ESL . Consultado el 28 de noviembre de 2008. Archivado desde el original el 4 de mayo de 2006. (indefinido)
- ↑ Productos de SystemCrafter . Consultado el 28 de noviembre de 2008. Archivado desde el original el 1 de diciembre de 2008. (indefinido)
Literatura
- Alekhin V. A. SistemaC. Modelado de sistemas electrónicos. - M . : Hot line - Telecom , 2018. - 320 p. - 500 copias. - ISBN 978-5-9912-0722-5 .
Véase también