From 4835386b0bbaed398935aee19195e6f49c6be09d Mon Sep 17 00:00:00 2001
From: Daniela Genius <genius@debussy.soc.lip6.fr>
Date: Mon, 25 Nov 2019 15:32:11 +0100
Subject: [PATCH] GAW tracing of clock signals

---
 .../syscamstranslator/toSysCAMS/ClusterCode.java  | 12 ++++++++++--
 .../toSysCAMSCluster/ClusterCode.java             |  9 ++++++++-
 .../ui/window/JDialogSysCAMSPortConverter.java    | 15 ++++++++++++++-
 src/main/java/ui/window/JDialogSysCAMSPortDE.java | 12 ++++++++++++
 4 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java b/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java
index 69211191ad..dde7eabba5 100644
--- a/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java
+++ b/src/main/java/syscamstranslator/toSysCAMS/ClusterCode.java
@@ -68,7 +68,8 @@ public class ClusterCode {
 	int nb_block = 1;
 
 	LinkedList<String> names = new LinkedList<String>();
-
+	LinkedList<String> clocknames = new LinkedList<String>();
+	
 	if (cluster != null) {
 	    LinkedList<SysCAMSTBlockTDF> tdf = cluster.getBlockTDF();
 	    LinkedList<SysCAMSTBlockDE> de = cluster.getBlockDE();
@@ -180,7 +181,9 @@ public class ClusterCode {
 		     if(t.getUnitStartTime().equals("\u03BCs"))unitStartTimeString="SC_US";
 		     if(t.getUnit().equals("ns"))unitString="SC_NS";
 		     if(t.getUnitStartTime().equals("ns"))unitStartTimeString="SC_NS";		   		    
-		    corpsCluster = corpsCluster + "\t  sc_clock " + t.getName() + " (\"" + t.getName() + "\"," + t.getFrequency()+","+ unitString+","+ t.getDutyCycle()+","+ t.getStartTime()+","+unitStartTimeString+","+ t.getPosFirst()+");" + CR;    		}
+		    corpsCluster = corpsCluster + "\t  sc_clock " + t.getName() + " (\"" + t.getName() + "\"," + t.getFrequency()+","+ unitString+","+ t.getDutyCycle()+","+ t.getStartTime()+","+unitStartTimeString+","+ t.getPosFirst()+");" + CR;
+		    clocknames.add(t.getName());
+		}
 					      		
 		nb_block=0;
 				corpsCluster = corpsCluster + CR + "\t// Instantiate cluster's modules." + CR;	
@@ -315,6 +318,11 @@ public class ClusterCode {
 		corpsCluster = corpsCluster + "\t// Configure signal tracing." + CR 
 		    + "\tsca_trace_file* tfp = sca_create_tabular_trace_file(\"" + cluster.getClusterName() + "_tb\");" + CR;
 
+	for (int i = 0; i <clock.size(); i++) {
+		    corpsCluster = corpsCluster + "\tsca_trace(tfp, "+ clocknames.get(i) + ", \"" + clocknames.get(i) + "\");" + CR;
+		}
+
+		
 		for (int i = 0; i < connectors.size(); i++) {
 		    corpsCluster = corpsCluster + "\tsca_trace(tfp, "+ names.get(i) + ", \"" + names.get(i) + "\");" + CR;
 		}
diff --git a/src/main/java/syscamstranslator/toSysCAMSCluster/ClusterCode.java b/src/main/java/syscamstranslator/toSysCAMSCluster/ClusterCode.java
index 67c4c2ef75..fe988a3f31 100644
--- a/src/main/java/syscamstranslator/toSysCAMSCluster/ClusterCode.java
+++ b/src/main/java/syscamstranslator/toSysCAMSCluster/ClusterCode.java
@@ -64,6 +64,7 @@ public class ClusterCode {
 		int nb_block = 0;
         
         LinkedList<String> names = new LinkedList<String>();
+	LinkedList<String> clocknames = new LinkedList<String>();
 		
 	if (cluster != null) {
 	    LinkedList<SysCAMSTBlockTDF> tdf = cluster.getBlockTDF();
@@ -83,7 +84,9 @@ public class ClusterCode {
 		     if(t.getUnitStartTime().equals("\u03BCs"))unitStartTimeString="SC_US";
 		     if(t.getUnit().equals("ns"))unitString="SC_NS";
 		     if(t.getUnitStartTime().equals("ns"))unitStartTimeString="SC_NS";		   		    
-		    corpsCluster += "\t  sc_clock " + t.getName() + " (\"" + t.getName() + "\"," + t.getFrequency()+","+ unitString+","+ t.getDutyCycle()+","+ t.getStartTime()+","+unitStartTimeString+","+ t.getPosFirst()+");" + CR;    		}
+		    corpsCluster += "\t  sc_clock " + t.getName() + " (\"" + t.getName() + "\"," + t.getFrequency()+","+ unitString+","+ t.getDutyCycle()+","+ t.getStartTime()+","+unitStartTimeString+","+ t.getPosFirst()+");" + CR;
+		    clocknames.add(t.getName());
+	    }
 			
             corpsCluster += "template <typename vci_param>" + CR +
                           "class " +cluster.getClusterName()+ " : public sc_core::sc_module { "+ CR;
@@ -115,6 +118,10 @@ public class ClusterCode {
             }
 			
 			corpsCluster = corpsCluster + CR + "\t// Declare signals to interconnect." + CR;
+
+			for (int i = 0; i <clock.size(); i++) {
+		    corpsCluster = corpsCluster + "\tsca_trace(tfp, "+ clocknames.get(i) + ", \"" + clocknames.get(i) + "\");" + CR;
+		}
 			
             for (int i = 0; i < connectors.size(); i++) {
                 nb_con = i;
diff --git a/src/main/java/ui/window/JDialogSysCAMSPortConverter.java b/src/main/java/ui/window/JDialogSysCAMSPortConverter.java
index 3f1f8989d7..2ebc505b36 100644
--- a/src/main/java/ui/window/JDialogSysCAMSPortConverter.java
+++ b/src/main/java/ui/window/JDialogSysCAMSPortConverter.java
@@ -242,6 +242,7 @@ public class JDialogSysCAMSPortConverter extends JDialog implements ActionListen
 		listArrayTypeString.add("bool");
 		listArrayTypeString.add("double");
 		listArrayTypeString.add("sc_int<N>");
+		listArrayTypeString.add("sc_uint<N>");
 		if (port.getFather() != null) {
 			if (port.getFather() instanceof SysCAMSBlockTDF) {
 				if (!((SysCAMSBlockTDF) port.getFather()).getListTypedef().isEmpty()) {
@@ -271,6 +272,9 @@ public class JDialogSysCAMSPortConverter extends JDialog implements ActionListen
 			if (port.getConvType().equals("sc_dt::sc_int")) {
 				typeComboBoxString.setSelectedIndex(3);
 			}
+				if (port.getConvType().equals("sc_dt::sc_uint")) {
+				typeComboBoxString.setSelectedIndex(4);
+			}
 		}
 		typeComboBoxString.addActionListener(this);
 		constraints = new GridBagConstraints(1, 5, 2, 1, 1.0, 1.0,
@@ -414,7 +418,16 @@ public class JDialogSysCAMSPortConverter extends JDialog implements ActionListen
 				     port.setNbits(Integer.parseInt(nbitsTextField.getText()));
 			
 					
-				}		
+				}
+			
+	if(typeComboBoxString.getSelectedItem()=="sc_uint<N>"){
+			    //port.setConvType("sc_dt::sc_int<"+nbitsTextField.getText()+"> ");
+				     port.setConvType("sc_dt::sc_uint");
+				     port.setNbits(Integer.parseInt(nbitsTextField.getText()));
+			
+					
+				}
+			
 				else{
 			port.setConvType((String) typeComboBoxString.getSelectedItem());
 			port.setNbits(Integer.parseInt(nbitsTextField.getText()));
diff --git a/src/main/java/ui/window/JDialogSysCAMSPortDE.java b/src/main/java/ui/window/JDialogSysCAMSPortDE.java
index c5402792b1..3f2c253dd3 100644
--- a/src/main/java/ui/window/JDialogSysCAMSPortDE.java
+++ b/src/main/java/ui/window/JDialogSysCAMSPortDE.java
@@ -153,6 +153,7 @@ public class JDialogSysCAMSPortDE extends JDialog implements ActionListener {
 		listArrayTypeString.add("bool");
 		listArrayTypeString.add("double");
 		listArrayTypeString.add("sc_int<N>");
+		listArrayTypeString.add("sc_uint<N>");
 		listArrayTypeString.add("sc_uint<32>");
 		
 		if (port.getFather() != null) {
@@ -189,6 +190,9 @@ public class JDialogSysCAMSPortDE extends JDialog implements ActionListener {
 			if (port.getDEType().equals("sc_dt::sc_uint<32>")) {
 				typeComboBoxString.setSelectedIndex(3);		      
 			}
+			if (port.getDEType().equals("sc_dt::sc_uint<N>")) {
+				typeComboBoxString.setSelectedIndex(3);		      
+			}
 			
 		}
 		typeComboBoxString.addActionListener(this);
@@ -316,6 +320,14 @@ public class JDialogSysCAMSPortDE extends JDialog implements ActionListener {
 				 
 			 
 			    	}
+
+				if(typeComboBoxString.getSelectedItem()=="sc_uint<N>"){
+			    //	port.setDEType((String)"sc_int<"+nbitsTextField.getText()+"> ");
+			    port.setDEType("sc_dt::sc_uint");
+				 
+			 
+			    	}
+				
 				else{
 				   	if(typeComboBoxString.getSelectedItem()=="sc_uint<32>"){
 			    //	port.setDEType((String)"sc_int<"+nbitsTextField.getText()+"> ");
-- 
GitLab