close

SystemC

Přejít na navigaci Přejít na hledání

SystemC je často popisován jako jazyk pro popis hardwaru jako VHDL a Verilog , ale přesněji je popisován jako jazyk pro popis systémů , protože je opravdu užitečný, když se používá k modelování systémů na úrovni chování.

Popis

SystemC je sada knihoven a maker implementovaných v C++ , které umožňují simulovat souběžné procesy se syntaxí běžného jazyka C++. Popsané objekty tak mohou komunikovat během simulace v reálném čase pomocí signálů jakéhokoli typu nabízeného C++, plus některé další nabízené knihovnami SystemC a také další definované uživatelem.

Metodologie návrhu je začít s modelem na vysoké úrovni napsaným v C++ a použít iterativní proces transformace kódu tak, aby používal pouze ty prvky, které mají svůj ekvivalent v jazyce popisu hardwaru.

Jazyk

Moduly

Moduly ( modul ) jsou základními stavebními kameny při návrhu hierarchie v SystemC. Model SystemC se obvykle skládá z více modulů, které komunikují prostřednictvím portů.

Porty

Porty ( port ) umožňují modulu komunikovat s vnějším světem, obvykle s jinými moduly.

Procesy

Procesy ( procesy ) jsou hlavními prvky počítání. Jsou souběžné.

Kanály

Kanály jsou komunikační prvky SystemC. Mohou to být jednoduché kabely nebo složité mechanismy, jako jsou systémy FIFO nebo sběrnice. Základní kanály jsou:

  • signál
  • vyrovnávací paměť
  • FIFO
  • mutex
  • semafor

Rozhraní

Rozhraní používají porty ke komunikaci s kanály.

Události

Události ( events ) umožňují synchronizaci mezi procesy.

Typy dat

SystemC zavádí různé typy dat pro podporu modelování hardwaru.

Rozšířené typy

  • sc_int<> 64bitové celé číslo se znaménkem
  • sc_uint<> 64bitové celé číslo bez znaménka
  • sc_bigint<> libovolné -přesné celé číslo se znaménkem
  • sc_biguint<> celé číslo bez znaménka s libovolnou přesností

Logické typy

  • sc_bit bit s pouze dvěma možnými hodnotami2 s jedním bitem
  • sc_logic bit, ve kterém lze zadat 4 hodnoty
  • sc_bv<> vektor sc_bit
  • sc_lv<> pole sc_logic
  • sc_lv<> se obvykle vyjadřuje v desetinných číslech

Typy pevných bodů

  • sc_fixed<> šablona podepsaný pevný bod
  • sc_ufixed<> šablonovaný nepodepsaný pevný bod
  • sc_fix netemplátovaný podepsaný pevný bod
  • sc_ufix untemplated unsigned pevný bod

Příklad kódu

Následující příklad je sčítačka:

#include "systemc.h"

SC_MODULE(sčítačka) // modul, deklarace třídy
{
 sc_in<int> a, b; // porty
 sc_out<int> součet;

 void do_add() // proces
 {
   součet = a + b;
 }

 SC_CTOR(sčítačka) // konstruktor
 {
   SC_METHOD(do_přidat); // do_add log do jádra
   citlivé << a << b; // do_add seznam citlivosti
 }
};

Alternativy

SystemC používá kód napsaný v C jako vstup do svých programů pro syntézu. Další možností je transformovat popis vytvořený v programovacím jazyce na jazyk pro popis hardwaru, jako je VHDL nebo Verilog, některé nástroje pro to jsou:

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

Viz také

  • Spoludesign hardwaru a softwaru
  • návrh obvodu
  • Úroveň přenosu záznamu (RTL)

Externí odkazy