summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'instance-calculator/src/VHDLArchitecture.java')
-rw-r--r--instance-calculator/src/VHDLArchitecture.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/instance-calculator/src/VHDLArchitecture.java b/instance-calculator/src/VHDLArchitecture.java
index 5597529..407a09f 100644
--- a/instance-calculator/src/VHDLArchitecture.java
+++ b/instance-calculator/src/VHDLArchitecture.java
@@ -9,6 +9,14 @@ public class VHDLArchitecture
FROM_ID = new HashMap<String, VHDLArchitecture>();
}
+ public static void resolve_all_waveforms ()
+ {
+ for (final VHDLArchitecture arch: FROM_ID.values())
+ {
+ arch.resolve_waveforms();
+ }
+ }
+
public static void add_element (final String id)
{
if (!FROM_ID.containsKey(id))
@@ -48,6 +56,7 @@ public class VHDLArchitecture
private final Collection<VHDLProcess> processes;
private final Collection<VHDLComponent> components;
private final Collection<VHDLWaveform> waveforms;
+ private final Deque<String> futur_waveforms;
private final String id;
private VHDLEntity entity;
@@ -59,6 +68,7 @@ public class VHDLArchitecture
processes = new ArrayList<VHDLProcess>();
components = new ArrayList<VHDLComponent>();
waveforms = new ArrayList<VHDLWaveform>();
+ futur_waveforms = new ArrayDeque<String>();
}
public VHDLEntity get_entity ()
@@ -100,6 +110,27 @@ public class VHDLArchitecture
}
}
+ public void add_futur_waveform (final String fwfm)
+ {
+ if (!futur_waveforms.contains(fwfm))
+ {
+ futur_waveforms.add(fwfm);
+ }
+ }
+
+ public void resolve_waveforms ()
+ {
+ while (!futur_waveforms.isEmpty())
+ {
+ final String src_id, wfm_id;
+
+ src_id = futur_waveforms.pop();
+
+ wfm_id = Waveforms.get_waveform_id_from_id(src_id);
+ add_waveform(VHDLWaveform.get_from_id(wfm_id));
+ }
+ }
+
public void add_instance_to
(
final Collection<VHDLProcess.Instance> process_instances,