SystemC AMS
SystemC AMS is an extension to SystemC for analog, mixed-signal and RF functionality.[1] The SystemC AMS 2.0 standard was released on April 6, 2016 as IEEE Std 1666.1-2016.
Language specification
ToDo: description
Language features
ToDo: description
MoC - Model of Computation
A model of computation (MoC) is a set of rules defining the behavior and interaction between SystemC AMS primitive modules. SystemC AMS defines the following models of computation: timed data flow (TDF), linear signal flow (LSF) and electrical linear networks (ELN).
TDF - Timed Data Flow
ToDo: description
ELN - Electrical Linear Networks
ToDo: description
LST - Linear Signal Flow
ToDo: description
Ports
TDF in/outport definition:
sca_tdf::sca_in<PortType> sca_tdf::sca_out<PortType>
TDF converter in/outport definition:
sca_tdf::sc_in<PortType> // DE → TDF inport sca_tdf::sc_out<PortType> // TDF → DE outport
ELN terminal definition:
sca_eln::sca_terminal
Nodes
sca_eln::sca_node // ELN node sca_eln::sca_node_ref // ELN reference node
Cluster
ToDo: description
Tracing
sca_trace_file *tf = sca_create_tabular_trace_file("trace_file_name.dat");
sca_trace(tf, <PORT|SIGNAL|NODE>, "name");
Example code
TDF
Timed-Data-Flow 1st order low pass model:
#include <systemc-ams>
using namespace sca_util; // introduced for convenience: sca_util::sca_vector<TYPE> → sca_vector<TYPE>
using namespace sca_core; // introduced for convenience: sca_core::sca_time() → sca_time()
using namespace sca_ac_analysis; // introduced for convenience: sca_ac_analysis::sca_ac() → sca_ac()
SCA_TDF_MODULE(tdf_low_pass)
{
// TDF ports
sca_tdf::sca_in<double> inp;
sca_tdf::sca_out<double> outp;
// parameters
double fcut; // cut-off frequency
// methods
void initialize(); // simulator callback for initialization purpose
void ac_processing(); // simulator callback for AC behavior implementation
void processing(); // simulator callback for time implementation
// constructor
SCA_CTOR(tdf_low_pass) {
fcut = 1.0e3; // cut-off frequency 1kHz
}
private:
sca_vector<double > num; // numerator coefficients
sca_vector<double > den; // de-numerator coefficients
sca_vector<double > state; // state vector
sca_tdf::sca_ltf_nd ltf_nd; // linear transfer function (numerator/de-numerator type)
};
linear transfer function:
// initialize linear transfer function coefficients
void tdf_low_pass::initialize(){
num(0) = 1.0;
den(0) = 1.0;
den(1) = 1.0/(2.0*M_PI*fcut);
}
ToDo: description
// AC implementation
void tdf_low_pass::ac_processing(){
sca_ac(outp) = sca_ac_ltf_nd(num, den, sca_ac(inp));
}
ToDo: description
// time domain implementation
void tdf_low_pass::processing(){
outp = ltf_nd(num, den, state, inp);
}
ELN
Electrical-Linear-Networks 1st order low pass netlist:
SC_MODULE(eln_low_pass_netlist)
{
// sca eln terminals
sca_eln::sca_terminal n1;
sca_eln::sca_terminal n2;
// internal nodes
sca_eln::sca_node_ref gnd;
// eln modules
sca_eln::sca_r i_r;
sca_eln::sca_c i_c;
SC_CTOR(eln_low_pass_netlist) : i_r("i_r"), i_c("i_c")
{
i_r.value = 1.0;
i_r.p.bind(n1);
i_r.n.bind(n2);
i_c.value = 1.0/(2.0*M_PI*1.0e3);
i_c.p.bind(n2);
i_c.n.bind(gnd);
}
};
LSF
Linear-Signal-Flow netlist:
History
SystemC AMS study group was founded in 2002 to develop and maintain analog and mixed-signal extensions to SystemC, and to initiate an OSCI (Open SystemC initiative) SystemC-AMS working group. The study group has made initial investigations and specified and implemented a SystemC extension to demonstrate feasibility of the approach. In 2006, a SystemC AMS working group has been funded which continued the work of the study group inside OSCI, and now goes on to work on SystemC AMS within the Accellera Systems Initiative, resulting in the AMS 1.0 standard in 2010. After the release of the Accellera SystemC AMS 2.0 standard in 2013, the standard was transferred to the IEEE Standards Association in 2014 for further industry adoption and maintenance. The SystemC AMS standard was released April 6, 2016 as IEEE Std 1666.1-2016.[2][3] COSEDA Technologies provides with COSIDE the first commercially available design environment based on SystemC AMS standard.
References
- ↑ "SystemC AMS". accellera.org. Retrieved 2016-08-01.
- ↑ "SystemC AMS (Analog/Mixed-Signal)". accellera.org. Retrieved 2016-08-01.
- ↑ "SystemC-AMS and Design of Embedded Mixed-Signal Systems". www.systemc-ams.org. Retrieved 2016-08-01.