The following table gives an overviev on the C++/SystemC™ features supported by the fossy synthesis tool.
| C++/Systemc™ feature | Comment | |||
|---|---|---|---|---|
| Translation units | ☑ | Only one translation unit allowed | ||
| Modules | ||||
Members: signals, sub-modules, ctors, HAS_PROCESS | ☑ | |||
Ports/Signals: sc_signal, sc_in, sc_out, sc_inout, sc_in_clk | ☑ | |||
Ports/Signals: sc_out_clk, sc_inout_clk | ☐ | Not supported, but deprecated anyway. | ||
Ports/Signals: *_resolved, *_rv | ☐ | Not supported. | ||
Ctor: w/ and w/o SC_CTOR macro | ☑ | |||
| Deriving | ☑ | |||
| Datatypes | ||||
| Integral types | ☑ | |||
| Integral promotion, arithmetic conversion | ☑ | |||
| Operators | ☑ | |||
| Compounds: arrays, enums, class/struct/unions | ☑ | No pointers and no references supported. | ||
SysC: sc_int, sc_uint, sc_bigint, sc_biguint | ☑ | |||
| SysC: fixed-point types | ☐ | |||
SysC: sc_bv | ☑ | |||
SysC: sc_logic | ☑ | Converted to sc_bv<1> internally. | ||
SysC: sc_lv | ☐ | |||
| SysC: arithmetic operators | ☑ | |||
| SysC: bitwise operators | ☑ | |||
| SysC: relational oparators | ☑ | |||
| SysC: shift operators | ☑ | |||
| SysC: assignment operators | ☑ | No chained assignments, LHS must be side effect-free. | ||
| SysC: bit select operators | ☑ | |||
| SysC: part select operators | ☑ | Reverse ranges not supported. | ||
| SysC: concatenation operators | ☑ | Assignment to concats not supported. | ||
SysC: conversion to C integral (to_int(), to_bool() etc.) | ☑ | |||
SysC: additional methods: iszero(), sign(), bit(), reverse(), etc. | ☐ | accepted, but not fully implemented | ||
| Declarations | ||||
| typedef | ☑ | |||
| enums | ☑ | |||
| aggregates | ☑ | No support for aggregate inits. | ||
| arrays | ☑ | |||
| references | ☐ | Copy-in copy-out support for functions/methods. | ||
| pointers | ☐ | Pointers allowed for sub-module instantiation only. | ||
| Expressions | ☑ | new/delete not supported, no chained assignments. | ||
| Functions | ☑ | |||
| Statements | ☑ | |||
| Processes | ☑ | No SC_THREAD supported. |
||
| Sub-module instantiation | ☑ | No support for positional port binding. | ||
| Namespaces | ☑ | |||
| Classes | ||||
| Member functions | ☑ | |||
| Member vars | ☑ | |||
| Inheritance | ☑ | |||
| Abstract classes | ☑ | |||
| Constructors | ☑ | Restrictions on default arguments. | ||
| Overloading | ☑ | |||
| Templates | ☑ | |||
| Pre-processing directives | ☑ | |||