close

SystemC

Gå til navigation Gå til søg

SystemC beskrives ofte som et hardwarebeskrivelsessprog som VHDL og Verilog , men det beskrives mere præcist som et systembeskrivelsessprog , da det er virkelig nyttigt, når det bruges til at modellere systemer på adfærdsniveau.

Beskrivelse

SystemC er et sæt af biblioteker og makroer implementeret i C++ , der gør det muligt at simulere samtidige processer med syntaksen for det almindelige C++ sprog. Således kan de beskrevne objekter kommunikere under en realtidssimulering ved hjælp af signaler af enhver type, der tilbydes af C++, plus nogle andre, der tilbydes af SystemC-bibliotekerne og også andre, der er defineret af brugeren.

Designmetoden er at starte med en højniveaumodel skrevet i C++ og anvende en iterativ proces med at transformere koden til kun at bruge de elementer, der har deres ækvivalent i et hardwarebeskrivelsessprog.

Sprog

Moduler

Moduler ( modul ) er de grundlæggende byggeklodser i designet af et hierarki i SystemC. En SystemC-model består typisk af flere moduler, der kommunikerer gennem porte.

Porte

Porte ( port ) giver et modul mulighed for at kommunikere med omverdenen, normalt med andre moduler.

Processer

Processerne ( processerne ) er hovedelementerne i beregningen. De er samtidige.

Kanaler

Kanaler er kommunikationselementer i SystemC. De kan være simple kabler eller komplekse mekanismer såsom FIFO-systemer eller busser. De grundlæggende kanaler er:

  • signal
  • buffer
  • FIFO
  • mutex
  • semafor

Grænseflader

Grænseflader bruges af porte til at kommunikere med kanaler.

Begivenheder

Hændelser ( hændelser ) tillader synkronisering mellem processer.

Datatyper

SystemC introducerer forskellige datatyper for at understøtte hardwaremodellering.

Udvidede typer

  • sc_int<> 64-bit signeret heltal
  • sc_uint<> 64-bit usigneret heltal
  • sc_bigint<> vilkårlig -præcision signeret heltal
  • sc_biguint<> usigneret heltal med vilkårlig præcision

Logiske typer

  • sc_bit en bit med kun to mulige værdier2-værdi single bit
  • sc_logic en bit, hvori 4 værdier kan gives
  • sc_bv<> vektor af sc_bit
  • sc_lv<> array af sc_logic
  • sc_lv<> er normalt udtrykt i decimaltal

Typer af faste punkter

  • sc_fixed<> skabelon signeret fikspunkt
  • sc_ufixed<> skabelon usigneret fikspunkt
  • sc_fix untemplated signeret fikspunkt
  • sc_ufix ustempleret usigneret fikspunkt

Kodeeksempel

Følgende eksempel er en adder:

#include "systemc.h"

SC_MODULE(adder) // modul, klasseerklæring
{
 sc_in<int> a, b; // porte
 sc_out<int> sum;

 void do_add() // proces
 {
   sum = a + b;
 }

 SC_CTOR(adder) // konstruktør
 {
   SC_METHOD(do_add); // do_add log til kernen
   følsom << a << b; // do_add følsomhedsliste
 }
};

Alternativer

SystemC bruger kode skrevet i C som input til dets synteseprogrammer. En anden mulighed er at transformere en beskrivelse lavet i et programmeringssprog til et hardwarebeskrivelsessprog såsom VHDL eller Verilog, nogle værktøjer til dette er:

  • BachC
  • CoWare
  • OCAPI
  • CynApps
  • HDL-C2
  • AR|T Builder

Se også

Eksterne links