summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-08-29 17:59:53 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-08-29 17:59:53 +0200
commit882d605d684abf7120a1b5b095e7f5425e77dd34 (patch)
tree648054d000fee675db64479c366ebe9a7409e237
parentea11fdc81ed7a8df14868476c04bf2fe7c7b6393 (diff)
Seems like all remains is doing the actual output.
-rw-r--r--instance-calculator/src/ModelFile.java4
-rw-r--r--instance-calculator/src/VHDLArchitecture.java41
-rw-r--r--instance-calculator/src/VHDLComponent.java7
-rw-r--r--instance-calculator/src/VHDLEntity.java23
-rw-r--r--instance-calculator/src/VHDLProcess.java33
-rw-r--r--instance-calculator/src/VHDLWaveform.java2
6 files changed, 107 insertions, 3 deletions
diff --git a/instance-calculator/src/ModelFile.java b/instance-calculator/src/ModelFile.java
index b873c3b..8589116 100644
--- a/instance-calculator/src/ModelFile.java
+++ b/instance-calculator/src/ModelFile.java
@@ -128,6 +128,10 @@ public class ModelFile
{
VHDLArchitecture.add_element(input[2]);
}
+ else if (input[1].equals("waveform"))
+ {
+ VHDLWaveform.add_element(input[2]);
+ }
else if (input[1].equals("process"))
{
VHDLProcess.add_element(input[2]);
diff --git a/instance-calculator/src/VHDLArchitecture.java b/instance-calculator/src/VHDLArchitecture.java
index 09576e3..5597529 100644
--- a/instance-calculator/src/VHDLArchitecture.java
+++ b/instance-calculator/src/VHDLArchitecture.java
@@ -99,4 +99,45 @@ public class VHDLArchitecture
waveforms.add(wfm);
}
}
+
+ public void add_instance_to
+ (
+ final Collection<VHDLProcess.Instance> process_instances,
+ final Collection<VHDLWaveform.Instance> waveform_instances,
+ final Map<VHDLWaveform, VHDLWaveform.Instance> local_conversion
+ )
+ {
+ for (final VHDLWaveform wfm: waveforms)
+ {
+ final VHDLWaveform.Instance i_wfm;
+
+ i_wfm = wfm.add_instance(entity);
+
+ waveform_instances.add(i_wfm);
+
+ local_conversion.put(wfm, i_wfm);
+ }
+
+ for (final VHDLProcess ps: processes)
+ {
+ process_instances.add
+ (
+ ps.generate_base_instance
+ (
+ entity,
+ waveform_instances
+ )
+ );
+ }
+
+ for (final VHDLComponent cmp: components)
+ {
+ cmp.add_instance_content_to
+ (
+ process_instances,
+ waveform_instances,
+ local_conversion
+ );
+ }
+ }
}
diff --git a/instance-calculator/src/VHDLComponent.java b/instance-calculator/src/VHDLComponent.java
index 6803a57..fb05c6e 100644
--- a/instance-calculator/src/VHDLComponent.java
+++ b/instance-calculator/src/VHDLComponent.java
@@ -74,7 +74,8 @@ public class VHDLComponent
public void add_instance_content_to
(
final Collection<VHDLProcess.Instance> process_instances,
- final Collection<VHDLWaveform.Instance> waveform_instances
+ final Collection<VHDLWaveform.Instance> waveform_instances,
+ final Map<VHDLWaveform, VHDLWaveform.Instance> local_conversion
)
{
final Collection<VHDLProcess.Instance> dest_process_instances;
@@ -107,9 +108,9 @@ public class VHDLComponent
else
{
replacement =
- VHDLWaveform.get_from_id(dest).add_instance
+ local_conversion.get
(
- parent.get_entity()
+ Waveforms.get_waveform_id_from_id(dest)
);
}
diff --git a/instance-calculator/src/VHDLEntity.java b/instance-calculator/src/VHDLEntity.java
index 7c29e63..91de6f6 100644
--- a/instance-calculator/src/VHDLEntity.java
+++ b/instance-calculator/src/VHDLEntity.java
@@ -104,5 +104,28 @@ public class VHDLEntity
public void generate_instance ()
{
+ final Map<VHDLWaveform, VHDLWaveform.Instance> local_conversion;
+
+ local_conversion = new HashMap<VHDLWaveform, VHDLWaveform.Instance>();
+
+ for (final String pt: ports)
+ {
+ final VHDLWaveform wfm;
+ final VHDLWaveform.Instance i_wfm;
+
+ wfm = VHDLWaveform.get_from_id(Waveforms.get_waveform_id_from_id(pt));
+ i_wfm = wfm.add_instance(this);
+
+ waveform_instances.add(i_wfm);
+
+ local_conversion.put(wfm, i_wfm);
+ }
+
+ architecture.add_instance_to
+ (
+ process_instances,
+ waveform_instances,
+ local_conversion
+ );
}
}
diff --git a/instance-calculator/src/VHDLProcess.java b/instance-calculator/src/VHDLProcess.java
index 5466dbb..d54e0cc 100644
--- a/instance-calculator/src/VHDLProcess.java
+++ b/instance-calculator/src/VHDLProcess.java
@@ -74,6 +74,39 @@ public class VHDLProcess
architecture = arch;
}
+ public VHDLProcess.Instance generate_base_instance
+ (
+ final VHDLEntity visibility,
+ final Collection<VHDLWaveform.Instance> waveform_instances
+ )
+ {
+ final VHDLProcess.Instance result;
+ final Map<VHDLWaveform.Instance, VHDLWaveform> iwfm_map;
+
+ iwfm_map = new HashMap<VHDLWaveform.Instance, VHDLWaveform>();
+
+ for (final VHDLWaveform.Instance i_wfm: waveform_instances)
+ {
+ if (accessed_wfm.contains(i_wfm.get_parent()))
+ {
+ iwfm_map.put(i_wfm, i_wfm.get_parent());
+ }
+ }
+
+ result =
+ new VHDLProcess.Instance
+ (
+ Instances.get_id_for(instances_count),
+ this,
+ visibility,
+ iwfm_map
+ );
+
+ instances_count += 1;
+
+ return result;
+ }
+
public static class Instance
{
private final String id;
diff --git a/instance-calculator/src/VHDLWaveform.java b/instance-calculator/src/VHDLWaveform.java
index 1f29b99..eb5c38e 100644
--- a/instance-calculator/src/VHDLWaveform.java
+++ b/instance-calculator/src/VHDLWaveform.java
@@ -33,6 +33,8 @@ public class VHDLWaveform
+ " that use."
);
+ new Exception().printStackTrace();
+
System.exit(-1);
}