diff --git a/SysCAMSGenerationCode/README b/SysCAMSGenerationCode/README new file mode 100644 index 0000000000000000000000000000000000000000..831e5020d5586d752fdf4a53581e1d95b1b13eb5 --- /dev/null +++ b/SysCAMSGenerationCode/README @@ -0,0 +1,9 @@ +The files can be compiled by using the generated Makefile +in standalone mode, without SoCLib cross-compilation, if no GPIO2VCI +component or code running on the SoCLib digital platform is required + +A SystemC-AMS proof-of-concept(2.1) is provided in +https://www.coseda-tech.com/systemc-ams-proof-of-concept + +In the Virtual Machine, the authors kindly accepted that we +provide the PoC diff --git a/doc/README_syscams b/doc/README_syscams new file mode 100644 index 0000000000000000000000000000000000000000..8a38f453b3ac83df97dc4186cc8bfaa87c93c9d8 --- /dev/null +++ b/doc/README_syscams @@ -0,0 +1,6 @@ +TTool, an open-source UML toolkit for modeling embedded systems and procotols. +TTool is developed at Telecom ParisTech, http://ttool.telecom-paristech.fr/ +------------------------------------------------------------------------------- + +The SysCAMSGenerationCode and ELNGenerationCode directories are intended to store the SystemC-AMS (TDF and DE) and SystemC-AMS (ELN) files generated from TTool. The former can be uses in standalone mode with SystemC-AMS 2.1 available from +COSEDA https://www.coseda-tech.com/systemc-ams-proof-of-concept \ No newline at end of file diff --git a/doc/documents_systemc-ams/TTool_AMS_Doc.pdf b/doc/documents_systemc-ams/TTool_AMS_Doc.pdf new file mode 100644 index 0000000000000000000000000000000000000000..eb4c2e70d51cf76a32c7c0068f26217e2f2db65c Binary files /dev/null and b/doc/documents_systemc-ams/TTool_AMS_Doc.pdf differ diff --git a/doc/documents_systemc-ams/fdl_tutorial.pdf b/doc/documents_systemc-ams/fdl_tutorial.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0c8a922a6f849c2608074293a5b1a3377dcfdaa7 Binary files /dev/null and b/doc/documents_systemc-ams/fdl_tutorial.pdf differ diff --git a/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java b/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java index bd45f77961f7c35e5be72b279f3e26cc13624638..7e08b1d363bc48a332cf798960a289c8a26242de 100644 --- a/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java +++ b/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java @@ -40,9 +40,6 @@ /* this class produces the lines containing essentially the initial #includes; we include all potential components event if they are not used in the deployment diagram*/ -/* authors: v1.0 Raja GATGOUT 2014 - v2.0 Daniela GENIUS, Julien HENON 2015 */ - package syscamstranslator.toSysCAMS; import java.util.LinkedList; @@ -54,7 +51,9 @@ import syscamstranslator.*; * Principal code of a cluster component * Creation: 14/05/2018 * @version 1.0 14/05/2018 - * @author Irina Kit Yan LEE + * @author Irina Kit Yan LEE, + * @version 1.1 30/09/2019 + * @modified Daniela GENIUS */ public class ClusterCode { @@ -75,10 +74,9 @@ public class ClusterCode { LinkedList<SysCAMSTBlockDE> de = cluster.getBlockDE(); LinkedList<SysCAMSTClock> clock = cluster.getClock(); - //DG 19.09. + //corpsCluster = "template <typename vci_param>" + CR + - // "class " +cluster.getClusterName()+ " : public sc_core::sc_module { "+ CR; - //fin DG 19.09. + // "class " +cluster.getClusterName()+ " : public sc_core::sc_module { "+ CR; corpsCluster = "// Simulation entry point." + CR + "int sc_main(int argc, char *argv[]) {" + CR2 + "\tusing namespace sc_core;" + CR + "\tusing namespace sca_util;" + CR2; @@ -88,59 +86,51 @@ public class ClusterCode { for (SysCAMSTConnector c : connectors) { if ((c.get_p1().getComponent() instanceof SysCAMSTPortTDF && c.get_p2().getComponent() instanceof SysCAMSTPortTDF) || (c.get_p1().getComponent() instanceof SysCAMSTPortTDF && c.get_p2().getComponent() instanceof SysCAMSTPortTDF)) { - if (c.getName().equals("")) {//corpsCluster +="6"+CR; + if (c.getName().equals("")) { corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortTDF) c.get_p1().getComponent()).getTDFType() + " > " + "sig_" + nb_con + ";" + CR; names.add("sig_" + nb_con); nb_con++; - } else {//corpsCluster +="5"+CR; + } else { corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortTDF) c.get_p1().getComponent()).getTDFType() + "> " + c.getName() + ";" + CR; names.add(c.getName()); } } else if ((c.get_p1().getComponent() instanceof SysCAMSTPortConverter && c.get_p2().getComponent() instanceof SysCAMSTPortDE)) { - if (c.getName().equals("")) {// corpsCluster +="4"+CR; - // corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> " + "sig_" + nb_con + ";" + CR;//DG 19.09 sca-> sc - - corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> " + "sig_" + nb_con + ";" + CR;//DG 19.09 sca-> sc + if (c.getName().equals("")) { + corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> " + "sig_" + nb_con + ";" + CR; names.add("sig_" + nb_con); nb_con++; } else{ if(((SysCAMSTPortConverter) c.get_p1().getComponent()).getNbits()==0) - { //corpsCluster +="3"+CR; - // corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> " + c.getName() + ";" + CR;//DG 19.09 sca-> sc - corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> " + c.getName() + ";" + CR;//DG 19.09 sca-> sc + { + corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType() + "> " + c.getName() + ";" + CR; names.add(c.getName()); } - else{//sc_uint - // corpsCluster +="@@@2"+CR; + else{ corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p1().getComponent()).getConvType()+ "<"+ ((SysCAMSTPortConverter) c.get_p1().getComponent()).getNbits()+"> " + "> " + c.getName() + ";" + CR; names.add(c.getName()); } - - } } else if ((c.get_p2().getComponent() instanceof SysCAMSTPortConverter && c.get_p1().getComponent() instanceof SysCAMSTPortDE)) { - if (c.getName().equals("")) { corpsCluster +="@@@0"+CR; - // corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType() + " > " + "sig_" + nb_con + ";" + CR; + if (c.getName().equals("")) { - corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType() + "> " + "sig_" + nb_con + ";" + CR;//DG 30.09 sca-> sc + corpsCluster = corpsCluster + "\tsc_core::sc_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType() + "> " + "sig_" + nb_con + ";" + CR; names.add("sig_" + nb_con); nb_con++; } else { if( ((SysCAMSTPortConverter) c.get_p2().getComponent()).getNbits()==0 ) - { //corpsCluster +="@@@1"+CR; + { corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType() + "> " + c.getName() + ";" + CR; names.add(c.getName()); } - else{//sc_uint - //corpsCluster +="@@@4"+CR; + else{ corpsCluster = corpsCluster + "\tsca_tdf::sca_signal<" + ((SysCAMSTPortConverter) c.get_p2().getComponent()).getConvType()+ "<"+((SysCAMSTPortConverter) c.get_p2().getComponent()).getNbits() + "> > " + c.getName() + ";" + CR; names.add(c.getName()); @@ -179,115 +169,12 @@ public class ClusterCode { corpsCluster = corpsCluster + "\t sc_clock " + t.getName() + " (\"" + t.getName() + "\"," + t.getFrequency()+","+ t.getUnit()+","+ t.getDutyCycle()+","+ t.getStartTime()+","+ t.getUnitStartTime()+","+ t.getPosFirst()+");" + CR; } - - /* DG 19.09. - corpsCluster = corpsCluster + CR + "\t// Instantiate headers files as well as bind their ports to the signal." + CR; - - - for (SysCAMSTBlockTDF t : tdf) { - corpsCluster = corpsCluster + "\t" + t.getName() + " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR; - - LinkedList<SysCAMSTPortTDF> portTDF = t.getPortTDF(); - LinkedList<SysCAMSTPortConverter> portConv = t.getPortConverter(); - - for (SysCAMSTPortTDF p : portTDF) { - for (int i = 0; i < connectors.size(); i++) { - if (connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortTDF && connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortTDF) { - if (((SysCAMSTPortTDF) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortTDF) connectors.get(i).get_p1().getComponent()).getBlockTDF().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } else if (((SysCAMSTPortTDF) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortTDF) connectors.get(i).get_p2().getComponent()).getBlockTDF().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } - } - } - } - - for (SysCAMSTPortConverter p : portConv) { - for (int i = 0; i < connectors.size(); i++) { - if (connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortConverter && connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortDE) { - if (((SysCAMSTPortConverter) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortConverter) connectors.get(i).get_p1().getComponent()).getBlockTDF().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } else if (((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getBlockDE().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } - } else if (connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortConverter && connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortDE) { - if (((SysCAMSTPortConverter) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortConverter) connectors.get(i).get_p2().getComponent()).getBlockTDF().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } else if (((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getBlockDE().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } - } - } - } - corpsCluster = corpsCluster + CR; - nb_block++; - } - - for (SysCAMSTBlockDE t : de) { - corpsCluster = corpsCluster + "\t" + t.getName() + " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR; - - LinkedList<SysCAMSTPortDE> portDE = t.getPortDE(); - - for (SysCAMSTPortDE p : portDE) { - for (int i = 0; i < connectors.size(); i++) { - if (connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortDE && connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortDE) { - if (((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getBlockDE().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } else if (((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getBlockDE().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } - } else if (connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortConverter && connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortDE) { - if (((SysCAMSTPortConverter) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortConverter) connectors.get(i).get_p1().getComponent()).getBlockTDF().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } else if (((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p2().getComponent()).getBlockDE().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } - } else if (connectors.get(i).get_p2().getComponent() instanceof SysCAMSTPortConverter && connectors.get(i).get_p1().getComponent() instanceof SysCAMSTPortDE) { - if (((SysCAMSTPortConverter) connectors.get(i).get_p2().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortConverter) connectors.get(i).get_p2().getComponent()).getBlockTDF().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } else if (((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getName().equals(p.getName()) && ((SysCAMSTPortDE) connectors.get(i).get_p1().getComponent()).getBlockDE().getName().equals(t.getName())) { - corpsCluster = corpsCluster + "\t" + t.getName() + "_" + nb_block + "." + p.getName() + "(" + names.get(i) + ");" + CR; - } - } - } - } - corpsCluster = corpsCluster + CR; - nb_block++; - } - - */ - -//fin DG 19.09. - -//DG 19.09. replaced by new code from Rodrigo's version - nb_block=0;//DG 19.09. corrected reset to 0 - corpsCluster = corpsCluster + CR + "\t// Instantiate cluster's modules." + CR; - // DG 19.09. enleve - /* for (SysCAMSTBlockTDF t : tdf) { - corpsCluster = corpsCluster + "\t" + t.getName(); - if (!t.getListTypedef().isEmpty()) { - corpsCluster += "<"+t.getValueTemplate()+">"; - } - corpsCluster += " " + t.getName() + "_" + nb_block + ";" + CR; - nb_block++; - } - - for (SysCAMSTBlockDE t : de) { - corpsCluster = corpsCluster + "\t" + t.getName(); - if (!t.getListTypedef().isEmpty()) { - corpsCluster += "<"+t.getValueTemplate()+">"; - } - corpsCluster += " " + t.getName() + "_" + nb_block + ";" + CR; - nb_block++; - }*/ - // DG 19.09. enleve - //corpsCluster = corpsCluster + "public:" + CR; - - // corpsCluster = corpsCluster + "\tsc_in< typename vci_param::data_t > in_ams;" + CR; - //corpsCluster = corpsCluster + "\tsc_out< typename vci_param::data_t > out_ams;" + CR2; + + nb_block=0; + corpsCluster = corpsCluster + CR + "\t// Instantiate cluster's modules." + CR; nb_block = 0; - //corpsCluster = corpsCluster + "\tSC_CTOR(" +cluster.getClusterName()+ ") :" + CR; + for (SysCAMSTBlockTDF t : tdf) { corpsCluster = corpsCluster + "\t" + t.getName()+ " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR; nb_block++; @@ -296,10 +183,7 @@ public class ClusterCode { corpsCluster = corpsCluster + "\t" + t.getName()+ " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR; nb_block++; } - //DG 19.09. enleve - // corpsCluster = corpsCluster + "\tin_ams(\"in_ams\")," + CR; - //corpsCluster = corpsCluster + "\tout_ams(\"out_ams\") {" + CR; - + nb_block = 0; for (SysCAMSTBlockTDF t : tdf) { //corpsCluster = corpsCluster + "\t" + t.getName() + " " + t.getName() + "_" + nb_block + "(\"" + t.getName() + "_" + nb_block + "\");" + CR;