SystemC
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
- Web SystemC
- Linux "Live" CD od SystemC s C++/SystemC tutoriálem
- Synopsys , tvůrci CoCentric SystemC Compiler
- Evropská skupina uživatelů SystemC
- Průvodce SystemC