diff --git a/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java b/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java
index 540f5654cc2c32298282b831f64b5b99acb9a924..9cc066dae4a72218bb9081e78bbec320f97650e3 100644
--- a/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java
+++ b/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java
@@ -1086,6 +1086,29 @@ public class NetList
                 "sc_trace(tf,signal_from_ams" + amsCluster.getNo_amsCluster () +
                 ",\"signal_from_ams" + amsCluster.getNo_amsCluster () + "\");" + CR;
             }
+
+  //Call trace function from the AMS cluster.
+	    int tracefile_present=0;//only one trace file for all AMS clusters
+            for (AvatarAmsCluster amsCluster:TopCellGenerator.avatardd.getAllAmsCluster())
+		{
+		if(tracefile_present==0){
+		  
+                netlist += CR +
+		    "sca_util::sca_trace_file *tfp = sca_util::sca_create_tabular_trace_file(\"my_trace_analog\");" + CR;tracefile_present=1;}
+                netlist +=
+                "sca_util::sca_trace(tfp,signal_to_ams" + amsCluster.getNo_amsCluster() +
+                ",\"signal_to_ams" + amsCluster.getNo_amsCluster() + "\");" + CR;
+                netlist +=
+                "sca_util::sca_trace(tfp,signal_from_ams" + amsCluster.getNo_amsCluster() +
+                ",\"signal_from_ams" + amsCluster.getNo_amsCluster() + "\");" + CR;
+                
+                netlist +=
+                amsCluster.getAmsClusterName() + amsCluster.getNo_amsCluster() +
+                ".trace_" + amsCluster.getAmsClusterName() + "(tfp);" + CR;
+            }
+            
+            netlist += CR;
+	    
 	    }
 
 	netlist =
@@ -1100,6 +1123,7 @@ public class NetList
 	if (tracing)
 	    {
 		netlist += "sc_close_vcd_trace_file(tf);" + CR;
+		netlist += "sca_util::sca_close_tabular_trace_file(tfp);" + CR;
 	    }
 	netlist = netlist + CR + "  return EXIT_SUCCESS;" + CR;
 	netlist = netlist + "}" + CR;