diff --git a/src/main/java/ddtranslatorSoclib/AvatarChannel.java b/src/main/java/ddtranslatorSoclib/AvatarChannel.java index 4412a0279a696f4b09ccce24db384a3b3498a28d..d52a80f8c7bb8cccea9982db640c27bfb4992d12 100755 --- a/src/main/java/ddtranslatorSoclib/AvatarChannel.java +++ b/src/main/java/ddtranslatorSoclib/AvatarChannel.java @@ -78,7 +78,7 @@ public class AvatarChannel extends AvatarMappedObject{ return channelName; } - public int getNo_cluster(){ + public int getClusterIndex(){ return no_cluster; } @@ -86,4 +86,4 @@ public class AvatarChannel extends AvatarMappedObject{ return monitored; } -} \ No newline at end of file +} diff --git a/src/main/java/ddtranslatorSoclib/AvatarCoproMWMR.java b/src/main/java/ddtranslatorSoclib/AvatarCoproMWMR.java index 7c5f5891abf2f0a2d0355378c7a9487a3fd1597c..1305d904fdd043cdd7203f3b2e88a89ba36c995c 100755 --- a/src/main/java/ddtranslatorSoclib/AvatarCoproMWMR.java +++ b/src/main/java/ddtranslatorSoclib/AvatarCoproMWMR.java @@ -61,14 +61,14 @@ public class AvatarCoproMWMR extends AvatarComponent{ private int nStatus; private boolean useLLSC; private int coprocType; - private int cluster_address; + private int cluster_index; private AvatarConnectingPoint[] connectingsPoints; private int nbConnectingPoint = 16 ; - private LinkedList<AvatarTask> tasksMapped;// DG 21.09. + private LinkedList<AvatarTask> tasksMapped; - public AvatarCoproMWMR(String _coprocName,int srcid, int _srcid, int _tgtid, int _plaps, int _fifoToCoprocDepth,int _fifoFromCoprocDepth, int _nToCopro, int _nFromCopro, int _nConfig, int _nStatus, boolean _useLLSC, int _coprocType, int _cluster_address) + public AvatarCoproMWMR(String _coprocName,int srcid, int _srcid, int _tgtid, int _plaps, int _fifoToCoprocDepth,int _fifoFromCoprocDepth, int _nToCopro, int _nFromCopro, int _nConfig, int _nStatus, boolean _useLLSC, int _coprocType, int _cluster_index) { coprocName = _coprocName; srcid = _srcid; @@ -82,7 +82,7 @@ public class AvatarCoproMWMR extends AvatarComponent{ nStatus = _nStatus; useLLSC = _useLLSC; coprocType = _coprocType; - cluster_address = _cluster_address ; + cluster_index = _cluster_index; connectingsPoints = new AvatarConnectingPoint[nbConnectingPoint] ; tasksMapped = new LinkedList<AvatarTask>(); //DG 21.09. @@ -114,8 +114,8 @@ public class AvatarCoproMWMR extends AvatarComponent{ } - public int getNo_cluster(){ - return cluster_address; + public int getClusterIndex(){ + return cluster_index; } public int getTgtid(){ @@ -156,7 +156,7 @@ public class AvatarCoproMWMR extends AvatarComponent{ public int getCoprocType(){ return coprocType; } - //DG 21.09. + public LinkedList<AvatarTask> getAllTasks(){ return tasksMapped; } diff --git a/src/main/java/ddtranslatorSoclib/AvatarRAM.java b/src/main/java/ddtranslatorSoclib/AvatarRAM.java index 6307ec8212761830b3c7b8f534d953984b33856d..6bd1bce02608d14d67c12ca159448e7298c2d88a 100755 --- a/src/main/java/ddtranslatorSoclib/AvatarRAM.java +++ b/src/main/java/ddtranslatorSoclib/AvatarRAM.java @@ -85,9 +85,9 @@ public class AvatarRAM extends AvatarComponent{ return no_target; } - public int getNo_cluster(){ + public int getClusterIndex(){ return no_cluster; - } + } public void setNo_ram(int _no_ram){ no_ram = _no_ram; diff --git a/src/main/java/ddtranslatorSoclib/AvatarTTY.java b/src/main/java/ddtranslatorSoclib/AvatarTTY.java index a9ddce603395daa10ff31fae036d0f8fe0fbb4ba..ccfd520b223802569f85bde15d80957e29c961a0 100755 --- a/src/main/java/ddtranslatorSoclib/AvatarTTY.java +++ b/src/main/java/ddtranslatorSoclib/AvatarTTY.java @@ -80,7 +80,7 @@ public class AvatarTTY extends AvatarComponent { return no_target; } - public int getNo_cluster(){ + public int getClusterIndex(){ return no_cluster; } diff --git a/src/main/java/ddtranslatorSoclib/toTopCell/Declaration.java b/src/main/java/ddtranslatorSoclib/toTopCell/Declaration.java index 9bc3c34c0dbd0724ce2fca83d512cae75ca9bda1..d738adec2bfc5fa7763da49a04eaf1fc9d48fb0c 100755 --- a/src/main/java/ddtranslatorSoclib/toTopCell/Declaration.java +++ b/src/main/java/ddtranslatorSoclib/toTopCell/Declaration.java @@ -84,6 +84,7 @@ public class Declaration AvatarComponent comp2 = my_p2.getComponent(); if (comp1 instanceof AvatarCPU){ AvatarCPU comp1cpu = (AvatarCPU)comp1; + if(comp1cpu.getClusterIndex()==cluster_no) cpus++; } @@ -101,7 +102,8 @@ public static int rams_in_cluster(AvatarddSpecification dd,int cluster_no){ AvatarComponent comp1 = my_p1.getComponent(); AvatarComponent comp2 = my_p2.getComponent(); if (comp1 instanceof AvatarRAM){ - AvatarRAM comp1cpu = (AvatarRAM)comp1; + AvatarRAM comp1ram = (AvatarRAM)comp1; + if(comp1ram.getClusterIndex()==cluster_no) rams++; } @@ -250,7 +252,7 @@ public static int rams_in_cluster(AvatarddSpecification dd,int cluster_no){ for (AvatarTTY tty:TopCellGenerator.avatardd.getAllTTY ()) - { int cluster_no=tty.getNo_cluster(); + { int cluster_no=tty.getClusterIndex(); int nb_ram = rams_in_cluster(avatardd, cluster_no); @@ -258,14 +260,14 @@ public static int rams_in_cluster(AvatarddSpecification dd,int cluster_no){ declaration += "caba::VciMultiTty<vci_param> " + tty.getTTYName () + "(\"" + tty.getTTYName () + "\", IntTab(" + - tty.getNo_cluster () + "," + (nb_ram+10) + + tty.getClusterIndex () + "," + (nb_ram+10) + "), maptab, \"vci_multi_tty" + cluster_no + "\", NULL);" + CR; } else{ declaration += "caba::VciMultiTty<vci_param> " + tty.getTTYName () + "(\"" + tty.getTTYName () + "\", IntTab(" + - tty.getNo_cluster () + "," + nb_ram + + tty.getClusterIndex () + "," + nb_ram + "), maptab, \"vci_multi_tty" + cluster_no + "\", NULL);" + CR; } @@ -276,7 +278,7 @@ public static int rams_in_cluster(AvatarddSpecification dd,int cluster_no){ declaration += "soclib::caba::VciRam<vci_param>" + ram.getMemoryName () + "(\"" + ram.getMemoryName () + - "\"" + ", IntTab(" + ram.getNo_cluster () + "," + + "\"" + ", IntTab(" + ram.getClusterIndex () + "," + ram.getNo_target () + "), maptab);" + CR2; } if (nb_clusters == 0) @@ -320,8 +322,8 @@ public static int rams_in_cluster(AvatarddSpecification dd,int cluster_no){ "caba::VciMwmrController<vci_param> " + copro.getCoprocName () + "_wrapper(\"" + copro.getCoprocName () + - "_wrapper\", IntTab(" + copro.getNo_cluster () + "," + - (init_no - 1) +" ,IntTab(" + copro.getNo_cluster () + "," + + "_wrapper\", IntTab(" + copro.getClusterIndex () + "," + + (init_no - 1) +" ,IntTab(" + copro.getClusterIndex () + "," + target_no + ")," + copro.getPlaps () + "," + copro.getFifoToCoprocDepth () + "," + copro.getFifoFromCoprocDepth () + "," + @@ -555,7 +557,7 @@ public static int rams_in_cluster(AvatarddSpecification dd,int cluster_no){ " , maptab, " + crossbar.getClusterIndex () + "," + crossbar.getClusterIndex () + ", " + cpus_in_cluster(avatardd, cluster_no) + ", " + - rams_in_cluster(avatardd, cluster_no) + ");" + CR2; + (rams_in_cluster(avatardd, cluster_no)+1) + ");" + CR2; //if CROSSBAR was not last in input file, update here } diff --git a/src/main/java/ddtranslatorSoclib/toTopCell/MappingTable.java b/src/main/java/ddtranslatorSoclib/toTopCell/MappingTable.java index 12b5447c072aa8393027f0e2e7916c51c25d1b8d..ada872cc34e57f15909effc0a6b29aad1c21115a 100755 --- a/src/main/java/ddtranslatorSoclib/toTopCell/MappingTable.java +++ b/src/main/java/ddtranslatorSoclib/toTopCell/MappingTable.java @@ -76,7 +76,8 @@ public class MappingTable { AvatarComponent comp1 = my_p1.getComponent(); AvatarComponent comp2 = my_p2.getComponent(); if (comp1 instanceof AvatarRAM){ - AvatarRAM comp1cpu = (AvatarRAM)comp1; + AvatarRAM comp1ram = (AvatarRAM)comp1; + if(comp1ram.getClusterIndex()==cluster_no) rams++; } @@ -282,9 +283,9 @@ public class MappingTable { //we want to identify the RAMS on this cluster (not RAMs in total) for (AvatarRAM ram : TopCellGenerator.avatardd.getAllRAM()) { - mapping += "maptab.add(Segment(\"cram" + ram.getNo_ram() + "\", 0x"+Integer.toHexString(SEG_RAM_BASE+ ram.getNo_cluster()*CLUSTER_SIZE)+", 0x"+Integer.toHexString(ram.getDataSize()/2)+", IntTab("+ram.getNo_cluster()+","+(ram.getNo_target())+"), true));" + CR; + mapping += "maptab.add(Segment(\"cram" + ram.getNo_ram() + "\", 0x"+Integer.toHexString(SEG_RAM_BASE+ ram.getClusterIndex()*CLUSTER_SIZE)+", 0x"+Integer.toHexString(ram.getDataSize()/2)+", IntTab("+ram.getClusterIndex()+","+(ram.getNo_target())+"), true));" + CR; - mapping += "maptab.add(Segment(\"uram" + ram.getNo_ram() + "\", 0x"+Integer.toHexString(SEG_RAM_BASE + ram.getNo_cluster()*CLUSTER_SIZE+cacheability_bit)+", 0x"+Integer.toHexString(ram.getDataSize()/2)+", IntTab("+ram.getNo_cluster()+","+(ram.getNo_target())+"), false));" + CR; + mapping += "maptab.add(Segment(\"uram" + ram.getNo_ram() + "\", 0x"+Integer.toHexString(SEG_RAM_BASE + ram.getClusterIndex()*CLUSTER_SIZE+cacheability_bit)+", 0x"+Integer.toHexString(ram.getDataSize()/2)+", IntTab("+ram.getClusterIndex()+","+(ram.getNo_target())+"), false));" + CR; } //we want to identify the TTYS on this cluster (not TTYs in total) @@ -293,17 +294,17 @@ public class MappingTable { for (AvatarTTY tty : TopCellGenerator.avatardd.getAllTTY()) { /* the number of fixed targets varies depending on if we are on cluster 0 or on other clusters */ int tty_no; - int cluster_no=tty.getNo_cluster(); + int cluster_no=tty.getClusterIndex(); int cluster_rams=rams_in_cluster(avatardd,cluster_no); - if(tty.getNo_cluster()==0){ + if(tty.getClusterIndex()==0){ tty_no=6+cluster_rams; } else{ tty_no=cluster_rams; } - mapping += "maptab.add(Segment(\"vci_multi_tty"+tty.getIndex()+"\" , 0x"+Integer.toHexString(SEG_TTY_BASE + tty.getNo_cluster()* CLUSTER_SIZE)+", 0x00000010, IntTab("+tty.getNo_cluster()+","+tty_no+"), false));" + CR; + mapping += "maptab.add(Segment(\"vci_multi_tty"+tty.getIndex()+"\" , 0x"+Integer.toHexString(SEG_TTY_BASE + tty.getClusterIndex()* CLUSTER_SIZE)+", 0x00000010, IntTab("+tty.getClusterIndex()+","+tty_no+"), false));" + CR; } /* Add as many mwmr controllers as there are hardware accelerators */ diff --git a/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java b/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java index 926532713ea989ac6eeb2e495d890eb61c2ad831..593469b454d8df59e1d00a9c72e01dce7b3d32eb 100755 --- a/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java +++ b/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java @@ -75,6 +75,7 @@ public class NetList AvatarComponent comp2 = my_p2.getComponent(); if (comp1 instanceof AvatarCPU){ AvatarCPU comp1cpu = (AvatarCPU)comp1; + if(comp1cpu.getClusterIndex()==cluster_no) cpus++; } } @@ -223,7 +224,7 @@ public class NetList " cpus[i]->connect(cpus[i], signal_clk, signal_resetn, signal_vci_m"+crossbar.getClusterIndex()+"[j]);"+ CR; netlist = netlist +"}" + CR; - netlist = netlist + "// connected cluster" + +crossbar.getClusterIndex()+"."+CR2; + netlist = netlist + "// connected cluster" +crossbar.getClusterIndex()+"."+CR2; i++; } } @@ -429,7 +430,7 @@ public class NetList CR2; //target number for local cluster: this is set at avatardd creation netlist = - netlist + "crossbar" + ram.getNo_cluster () + + netlist + "crossbar" + ram.getClusterIndex () + ".p_to_target[" + ram.getNo_target () + "](signal_vci_vciram" + ram.getIndex () + ");" + CR2; } @@ -587,7 +588,7 @@ public class NetList netlist = netlist + tty.getTTYName () + ".p_irq[0](signal_xicu_irq[" + - (tty.getNo_cluster () * 5) + "]);" + CR2; + (tty.getClusterIndex () * 5) + "]);" + CR2; } } i++; @@ -825,7 +826,7 @@ public class NetList //If there is a spy, add logger or stats to vci interface - + if(nb_clusters==0){ i = 0; for (AvatarCPU cpu:TopCellGenerator.avatardd.getAllCPU ()) { @@ -842,7 +843,28 @@ public class NetList } j = 0; + } + else{ + i = 0; + for (AvatarCPU cpu:TopCellGenerator.avatardd.getAllCPU ()) + { + int number = cpu.getNo_proc (); + if (cpu.getMonitored () == 1) + { + netlist = netlist + CR + + "logger" + i + ".p_clk(signal_clk);" + CR + + "logger" + i + ".p_resetn(signal_resetn);" + CR + + "logger" + i + ".p_vci(signal_vci_m"+cpu.getClusterIndex()+"[" + number + + "]);" + CR2; + i++; + } + + } + j = 0; + } + if(nb_clusters==0){ + i = 0; for (AvatarRAM ram:TopCellGenerator.avatardd.getAllRAM ()) { if (ram.getMonitored () == 1) @@ -852,7 +874,7 @@ public class NetList netlist += "logger" + i + ".p_resetn(signal_resetn);" + CR; netlist += - "logger" + i + ".p_vci(signal_vci_vciram" + number + + "logger" + i + ".p_vci(signal_vci_vciram"+ ram.getClusterIndex() +"_" + number + ");" + CR2; i++; } @@ -868,13 +890,47 @@ public class NetList "mwmr_stats" + j + ".p_resetn(signal_resetn);" + CR; netlist += - "mwmr_stats" + j + ".p_vci(signal_vci_vciram" + + "mwmr_stats" + j + ".p_vci(signal_vci_vciram"+ ram.getClusterIndex() +"_" + number + ");" + CR2; j++; } } } + } + else{ + i = 0; + for (AvatarRAM ram:TopCellGenerator.avatardd.getAllRAM ()) + { + if (ram.getMonitored () == 1) + { + int number = number = ram.getIndex (); + netlist += "logger" + i + ".p_clk(signal_clk);" + CR; + netlist += + "logger" + i + ".p_resetn(signal_resetn);" + CR; + netlist += + "logger" + i + ".p_vci(signal_vci_vciram" + number + + ");" + CR2; + i++; + } + else + { + if (ram.getMonitored () == 2) + { + int number = number = ram.getIndex (); + netlist += + "mwmr_stats" + j + ".p_clk(signal_clk);" + CR; + netlist += + "mwmr_stats" + j + ".p_resetn(signal_resetn);" + + CR; + netlist += + "mwmr_stats" + j + ".p_vci(signal_vci_vciram" + + number + ");" + CR2; + j++; + } + } + } + } int p = 0; diff --git a/src/main/java/ddtranslatorSoclib/toTopCell/Signal.java b/src/main/java/ddtranslatorSoclib/toTopCell/Signal.java index 794b41528f5ad5db0814b3cc713d512e880aef58..33fa399000852d89de61dbb7e6956d6c54e36e80 100755 --- a/src/main/java/ddtranslatorSoclib/toTopCell/Signal.java +++ b/src/main/java/ddtranslatorSoclib/toTopCell/Signal.java @@ -73,6 +73,7 @@ public static int cpus_in_cluster(AvatarddSpecification dd,int cluster_no){ AvatarComponent comp2 = my_p2.getComponent(); if (comp1 instanceof AvatarCPU){ AvatarCPU comp1cpu = (AvatarCPU)comp1; + if(comp1cpu.getClusterIndex()==cluster_no) cpus++; } @@ -116,9 +117,9 @@ public static int cpus_in_cluster(AvatarddSpecification dd,int cluster_no){ signal = signal + "sc_clock signal_clk(\"signal_clk\");" + CR; signal = signal + "sc_signal<bool> signal_resetn(\"" + NAME_RST + "\");" + CR2; - + i=0; for (AvatarCoproMWMR copro : TopCellGenerator.avatardd.getAllCoproMWMR()) { - i=0; + if(copro.getCoprocType()==0){ signal = signal + "soclib::caba::VciSignals<vci_param> signal_vci_IE(\"signal_vci_IE\");"+CR; signal = signal +"caba::VciSignals<vci_param> signal_mwmr_"+i+"_initiator;"+ CR; @@ -146,9 +147,8 @@ public static int cpus_in_cluster(AvatarddSpecification dd,int cluster_no){ signal = signal +"caba::VciSignals<vci_param> signal_mwmr_"+i+"_target;"+ CR; signal = signal +" soclib::caba::FifoSignals<uint32_t> signal_fifo_"+i+"_from_ctrl;"+ CR; signal = signal +" soclib::caba::FifoSignals<uint32_t> signal_fifo_"+i+"_to_ctrl;"+ CR; - } - - } + } + } i++; /* signal = signal + " soclib::caba::VciSignals<vci_param> signal_mwmr"+p+"_target(\"signal_mwmr"+p+"_target\""+CR; @@ -161,22 +161,24 @@ public static int cpus_in_cluster(AvatarddSpecification dd,int cluster_no){ i = 0; if(TopCellGenerator.avatardd.getAllCrossbar().size()==0){ + int j = 0; for (AvatarRAM ram : TopCellGenerator.avatardd.getAllRAM()){ // signal = signal + "soclib::caba::VciSignals<vci_param> signal_vci_vciram" + ram.getIndex() // + "(\"signal_vci_vciram" + ram.getIndex() + "\");" + CR2; signal = signal + "soclib::caba::VciSignals<vci_param> signal_vci_vciram" + i - + "(\"signal_vci_vciram" + i + "\");" + CR2; - i++; + + "(\"signal_vci_vciram" + i +"_"+ j + "\");" + CR2; + j++; } - i = 0; - + int k = 0; + for (AvatarTTY tty : TopCellGenerator.avatardd.getAllTTY()){ //signal = signal + "soclib::caba::VciSignals<vci_param> signal_vci_tty"+tty.getNo_tty()+"(\"signal_vci_tty"+tty.getNo_tty()+"\");" + CR2; - signal = signal + "soclib::caba::VciSignals<vci_param> signal_vci_tty"+i+"(\"signal_vci_tty"+i+"\");" + CR2; - i++; + signal = signal + "soclib::caba::VciSignals<vci_param> signal_vci_tty"+i+"(\"signal_vci_tty"+ i +"_"+k+"\");" + CR2; + k++; } // signal = signal + " sc_core::sc_signal<bool> signal_xicu_irq[xicu_n_irq];" + CR2; // System.out.print("number of processors : " + TopCellGenerator.avatardd.getNbCPU()+"\n"); + i++; }