¿Cómo se usa SystemC en sistemas embebidos?

Trabajo con SystemC todos los días.

Lo estoy usando de 4 maneras:

  • Diseño de hardware complejo con síntesis a RTL utilizando la herramienta Stratus HLS de Cadence. Específicamente, estoy trabajando en cosas como los controladores de E / S y el “firmware” incorporado que los acompaña, implementado directamente como lógica en lugar de software. La herramienta de síntesis hace un trabajo bastante decente convirtiendo mis descripciones de comportamiento en puertas y mantiene el código fuente a un tamaño mantenible. Un poco de SystemC puede reemplazar muchas líneas de Verilog.
  • Simulación de nivel de sistema. En algunos de mis diseños, el firmware es SystemC con modelos funcionales de bus de varios maestros de bus (es decir, AMBA, Wishbone) para hablar con hardware sintetizable. Esto me permite crear un prototipo de firmware sin la molestia de cargar un simulador de conjunto de instrucciones, etc. Mi código C se compila directamente en el sistema host. Con el inteligente # ifdef’s puedo usar el mismo código fuente en el simulador y en HW real.
  • Verificación del sistema: con los contenedores, el código SystemC se puede colocar en un entorno UVM / systemVerilog para probarlo contra la verificación comercial IP. Aquí también se pueden hacer cosas salvajes e interesantes, como hacer que las llamadas a la función de activación del entorno UVM en mi firmware permitan probar casos “difíciles de alcanzar”.
  • Validación de hardware: el código My SystemC se puede usar para simulación, generación de código ASIC y validación FPGA.

Además, hay cosas que puedo hacer con las extensiones de verificación para SystemC en las que apenas he comenzado a rascar la superficie de lo que está disponible: restricciones de aleatorización, que incluyen afirmaciones de PSL, análisis de cobertura y más.

El ecosistema SystemC es imperfecto, las herramientas no son tan bonitas como las que tenemos para Verilog, pero Stratus funciona y hace un buen trabajo en la producción de puertas. Esto hace posible que los equipos pequeños de pequeñas empresas hagan grandes cosas.