| summaryrefslogtreecommitdiff | 
path: root/instance-calculator
diff options
Diffstat (limited to 'instance-calculator')
| -rw-r--r-- | instance-calculator/src/Instances.java | 30 | ||||
| -rw-r--r-- | instance-calculator/src/Main.java | 26 | ||||
| -rw-r--r-- | instance-calculator/src/ModelFile.java | 36 | ||||
| -rw-r--r-- | instance-calculator/src/ProcessInstance.java | 9 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLArchitecture.java | 9 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLComponent.java | 60 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLEntity.java | 30 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLProcess.java | 76 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLWaveform.java | 99 | 
9 files changed, 318 insertions, 57 deletions
| diff --git a/instance-calculator/src/Instances.java b/instance-calculator/src/Instances.java new file mode 100644 index 0000000..5d6ec8b --- /dev/null +++ b/instance-calculator/src/Instances.java @@ -0,0 +1,30 @@ +import java.util.*; + +public class Instances +{ +   private static final Map<Integer, String> instances; + +   static +   { +      instances = new HashMap<Integer, String>(); +   } + +   public static String get_id_for (final int i) +   { +      final Integer j; +      String result; + +      j = new Integer(i); + +      result = instances.get(j); + +      if (result == null) +      { +         result = (Main.get_parameters().get_id_prefix() + i); + +         instances.put(j, result); +      } + +      return result; +   } +} diff --git a/instance-calculator/src/Main.java b/instance-calculator/src/Main.java index 488b9bb..3835c16 100644 --- a/instance-calculator/src/Main.java +++ b/instance-calculator/src/Main.java @@ -54,25 +54,18 @@ public class Main         *    {         *       a = Candidates.pop();         * -       *       for (c: a.component) +       *       if (a.has_components_not_in(ProcessedCandidates))         *       { -       *          if (!contains(c.target, ProcessedCandidates)) -       *          { -       *             FuturCandidates.push(a); -       *             continue; -       *          } +       *          FuturCandidates.push(a);         *       } +       *       else +       *       { +       *          is_stuck = False;         * -       *       is_stuck = False; -       * -       *       a.instantiate_all_processes(); +       *          a.create_instance();         * -       *       for (c: a.component) -       *       { -       *          a.integrate_instanciated_processes_from(c); +       *          ProcessedCandidates.add(a);         *       } -       * -       *       ProcessedCandidates.add(a);         *    }         *         *    if (is_stuck) @@ -82,4 +75,9 @@ public class Main         * }         */     } + +   public static Parameters get_parameters () +   { +      return PARAMETERS; +   }  } diff --git a/instance-calculator/src/ModelFile.java b/instance-calculator/src/ModelFile.java index 7ca0899..691de1a 100644 --- a/instance-calculator/src/ModelFile.java +++ b/instance-calculator/src/ModelFile.java @@ -178,9 +178,7 @@ public class ModelFile           return false;        } -      VHDLEntity.handle_is_port_of(input[1], input[2]); - -      return true; +      return VHDLEntity.handle_is_port_of(input[1], input[2]);     }     private static boolean handle_is_architecture_of @@ -193,24 +191,7 @@ public class ModelFile           return false;        } -      VHDLArchitecture.handle_is_architecture_of(input[1], input[2]); - -      return true; -   } - -   private static boolean handle_belongs_to_architecture -   ( -      final String[] input -   ) -   { -      if (input.length != 3) -      { -         return false; -      } - -      VHDLArchitecture.handle_belongs_to_architecture(input[1], input[2]); - -      return true; +      return VHDLArchitecture.handle_is_architecture_of(input[1], input[2]);     }     private static boolean handle_belongs_to_architecture @@ -223,9 +204,8 @@ public class ModelFile           return false;        } -      VHDLArchitecture.handle_belongs_to_architecture(input[1], input[2]); - -      return true; +      return +         VHDLArchitecture.handle_belongs_to_architecture(input[1], input[2]);     }     private static boolean handle_is_component_of @@ -238,9 +218,7 @@ public class ModelFile           return false;        } -      VHDLComponent.handle_is_component_of(input[1], input[2]); - -      return true; +      return VHDLComponent.handle_is_component_of(input[1], input[2]);     }     private static boolean handle_port_maps @@ -253,9 +231,7 @@ public class ModelFile           return false;        } -      VHDLComponent.handle_port_maps(input[1], input[2], input[3]); - -      return true; +      return VHDLComponent.handle_port_maps(input[1], input[2], input[3]);     }     private ModelFile () {} /* Utility Class */ diff --git a/instance-calculator/src/ProcessInstance.java b/instance-calculator/src/ProcessInstance.java deleted file mode 100644 index 580df6b..0000000 --- a/instance-calculator/src/ProcessInstance.java +++ /dev/null @@ -1,9 +0,0 @@ -import java.util.*; - -public class ProcessInstance -{ -   private final String id; -   private String process_id; -   private Map<String, String> wfm_map; - -} diff --git a/instance-calculator/src/VHDLArchitecture.java b/instance-calculator/src/VHDLArchitecture.java index 2834ab3..7f3be10 100644 --- a/instance-calculator/src/VHDLArchitecture.java +++ b/instance-calculator/src/VHDLArchitecture.java @@ -23,6 +23,7 @@ public class VHDLArchitecture        final String arch_id     )     { +      /* TODO */        return false;     } @@ -32,6 +33,7 @@ public class VHDLArchitecture        final String e_id     )     { +      /* TODO */        return false;     } @@ -40,6 +42,8 @@ public class VHDLArchitecture     private final List<String> components;     private final String id; +   private VHDLEntity entity; +     private VHDLArchitecture (final String id)     {        this.id = id; @@ -47,4 +51,9 @@ public class VHDLArchitecture        processes = new ArrayList<String>();        components = new ArrayList<String>();     } + +   public VHDLEntity get_entity () +   { +      return entity; +   }  } diff --git a/instance-calculator/src/VHDLComponent.java b/instance-calculator/src/VHDLComponent.java index 493ba22..5972173 100644 --- a/instance-calculator/src/VHDLComponent.java +++ b/instance-calculator/src/VHDLComponent.java @@ -23,6 +23,7 @@ public class VHDLComponent        final String e_id     )     { +      /* TODO */        return false;     } @@ -33,6 +34,7 @@ public class VHDLComponent        final String wfm_id     )     { +      /* TODO */        return false;     } @@ -40,6 +42,64 @@ public class VHDLComponent     private final Map<String, String> port_map;     private final String id; +   private VHDLEntity destination; +   private VHDLArchitecture parent; + +   public void add_instance_content_to +   ( +      final Collection<VHDLProcess.Instance> process_instances, +      final Collection<VHDLWaveform.Instance> waveform_instances +   ) +   { +      final Collection<VHDLProcess.Instance> dest_process_instances; +      final Collection<VHDLWaveform.Instance> dest_waveform_instances; +      final Map<VHDLWaveform.Instance, VHDLWaveform.Instance> wfm_map; + +      dest_process_instances = destination.get_process_instances(); +      dest_waveform_instances = destination.get_waveform_instances(); + +      wfm_map = new HashMap<VHDLWaveform.Instance, VHDLWaveform.Instance>(); + +      for (final VHDLWaveform.Instance i_wfm: dest_waveform_instances) +      { +         final String dest; +         final VHDLWaveform.Instance replacement; + +         dest = +            port_map.get +            ( +               Waveforms.get_id_from_waveform_id +               ( +                  i_wfm.get_parent().get_id() +               ) +            ); + +         if (dest == null) +         { +            replacement = i_wfm.get_parent().add_instance(parent.get_entity()); +         } +         else +         { +            replacement = +               VHDLWaveform.get_from_id(dest).add_instance +               ( +                  parent.get_entity() +               ); +         } + +         wfm_map.put(i_wfm, replacement); +         waveform_instances.add(replacement); +      } + +      for (final VHDLProcess.Instance i_ps: dest_process_instances) +      { +         process_instances.add +         ( +            i_ps.add_instance(parent.get_entity(), wfm_map) +         ); +      } +   } +     private VHDLComponent (final String id)     {        this.id = id; diff --git a/instance-calculator/src/VHDLEntity.java b/instance-calculator/src/VHDLEntity.java index a5ba28c..8059566 100644 --- a/instance-calculator/src/VHDLEntity.java +++ b/instance-calculator/src/VHDLEntity.java @@ -23,17 +23,45 @@ public class VHDLEntity        final String e_id     )     { +      /* TODO */ +      return false; +   } + +   public static boolean handle_is_architecture_of +   ( +      final String pt_id, +      final String e_id +   ) +   { +      /* TODO */        return false;     }  /******************************************************************************/ +   private final Collection<VHDLProcess.Instance> process_instances; +   private final Collection<VHDLWaveform.Instance> waveform_instances; +     private final List<String> ports;     private final String id; +   private String architecture; +     private VHDLEntity (final String id)     {        this.id = id; -        ports = new ArrayList<String>(); + +      this.process_instances = new ArrayList<VHDLProcess.Instance>(); +      this.waveform_instances = new ArrayList<VHDLWaveform.Instance>(); +   } + +   public Collection<VHDLProcess.Instance> get_process_instances () +   { +      return process_instances; +   } + +   public Collection<VHDLWaveform.Instance> get_waveform_instances () +   { +      return waveform_instances;     }  } diff --git a/instance-calculator/src/VHDLProcess.java b/instance-calculator/src/VHDLProcess.java index a017ef4..f85fe9a 100644 --- a/instance-calculator/src/VHDLProcess.java +++ b/instance-calculator/src/VHDLProcess.java @@ -23,18 +23,88 @@ public class VHDLProcess        final String ps_id     )     { +      /* TODO */        return false;     }  /******************************************************************************/ - -   private final List<String> accessed_wfm; +   private final Collection<VHDLWaveform> accessed_wfm; +   private final Collection<VHDLProcess.Instance> instances;     private final String id; +   private int instances_count;     private VHDLProcess (final String id)     {        this.id = id; +      accessed_wfm = new ArrayList<VHDLWaveform>(); +      instances = new ArrayList<VHDLProcess.Instance>(); +      instances_count = 0; +   } + +   public static class Instance +   { +      private final String id; +      private final VHDLProcess parent; +      private final Map<VHDLWaveform.Instance, VHDLWaveform> iwfm_map; +      private final VHDLEntity visibility; + +      private Instance +      ( +         final String id, +         final VHDLProcess parent, +         final VHDLEntity visibility, +         final Map<VHDLWaveform.Instance, VHDLWaveform> iwfm_map +      ) +      { +         this.id = id; +         this.parent = parent; +         this.visibility = visibility; +         this.iwfm_map = iwfm_map; +      } + +      public VHDLProcess get_parent () +      { +         return parent; +      } + +      public VHDLProcess.Instance add_instance +      ( +         final VHDLEntity visibility, +         final Map<VHDLWaveform.Instance, VHDLWaveform.Instance> convertion +      ) +      { +         final VHDLProcess.Instance result; +         final Set<Map.Entry<VHDLWaveform.Instance, VHDLWaveform>> iwfm_set; +         final Map<VHDLWaveform.Instance, VHDLWaveform> new_iwfm_map; + +         iwfm_set = iwfm_map.entrySet(); + +         new_iwfm_map = new HashMap<VHDLWaveform.Instance, VHDLWaveform>(); -      ports = new ArrayList<String>(); +         for +         ( +            final Map.Entry<VHDLWaveform.Instance, VHDLWaveform> me: iwfm_set +         ) +         { +            new_iwfm_map.put +            ( +               convertion.get(me.getKey()), +               me.getValue() +            ); +         } + +         result = +            new VHDLProcess.Instance +            ( +               Instances.get_id_for(parent.instances_count), +               parent, +               visibility, +               new_iwfm_map +            ); + +         parent.instances_count += 1; + +         return result; +      }     }  } diff --git a/instance-calculator/src/VHDLWaveform.java b/instance-calculator/src/VHDLWaveform.java new file mode 100644 index 0000000..83b9626 --- /dev/null +++ b/instance-calculator/src/VHDLWaveform.java @@ -0,0 +1,99 @@ +import java.util.*; + +public class VHDLWaveform +{ +   private static final Map<String, VHDLWaveform> FROM_ID; + +   static +   { +      FROM_ID = new HashMap<String, VHDLWaveform>(); +   } + +   public static void add_element (final String id) +   { +      if (!FROM_ID.containsKey(id)) +      { +         FROM_ID.put(id, new VHDLWaveform(id)); +      } +   } + +   public static VHDLWaveform get_from_id (final String id) +   { +      return FROM_ID.get(id); +   } + +   public static boolean handle_is_accessed_by +   ( +      final String wfm_id, +      final String ps_id +   ) +   { +      /* TODO */ +      return false; +   } + +/******************************************************************************/ +   private final Collection<String> accessed_wfm; +   private final Collection<VHDLWaveform.Instance> instances; +   private final String id; +   private int instances_count; + +   private VHDLWaveform (final String id) +   { +      this.id = id; +      accessed_wfm = new ArrayList<String>(); +      instances = new ArrayList<VHDLWaveform.Instance>(); +      instances_count = 0; +   } + +   public VHDLWaveform.Instance add_instance +   ( +      final VHDLEntity visibility +   ) +   { +      final VHDLWaveform.Instance result; + +      result = +         new VHDLWaveform.Instance +         ( +            Instances.get_id_for(instances_count), +            this, +            visibility +         ); + +      instances.add(result); + +      instances_count += 1; + +      return result; +   } + +   public String get_id () +   { +      return id; +   } + +   public static class Instance +   { +      private final String id; +      private final VHDLWaveform parent; +      private final VHDLEntity visibility; + +      private Instance +      ( +         final String id, +         final VHDLWaveform parent, +         final VHDLEntity visibility +      ) +      { +         this.id = id; +         this.parent = parent; +         this.visibility = visibility; +      } + +      public VHDLWaveform get_parent () +      { +         return parent; +      } +   } +} | 


