| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-08-29 17:59:53 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-08-29 17:59:53 +0200 |
| commit | 882d605d684abf7120a1b5b095e7f5425e77dd34 (patch) | |
| tree | 648054d000fee675db64479c366ebe9a7409e237 | |
| parent | ea11fdc81ed7a8df14868476c04bf2fe7c7b6393 (diff) | |
Seems like all remains is doing the actual output.
| -rw-r--r-- | instance-calculator/src/ModelFile.java | 4 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLArchitecture.java | 41 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLComponent.java | 7 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLEntity.java | 23 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLProcess.java | 33 | ||||
| -rw-r--r-- | instance-calculator/src/VHDLWaveform.java | 2 |
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); } |


