-Subproject commit 5d095c6ec38999a30aea50212e0637d41cb25c2b
+Subproject commit 675171d7c711e4d699b44c40d2b68d18709b7b90
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import net.mograsim.logic.core.LogicObservable;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.timeline.Timeline;
-
-/**
- * A basic component that recomputes all outputs (with a delay), when it is updated.
- *
- * @author Fabian Stemmler
- */
-public abstract class BasicComponent extends Component implements LogicObserver
-{
- private int processTime;
-
- /**
- *
- * @param processTime Amount of time this component takes to update its outputs. Must be more than 0, otherwise 1 is assumed.
- *
- * @author Fabian Stemmler
- */
- public BasicComponent(Timeline timeline, int processTime)
- {
- super(timeline);
- this.processTime = processTime > 0 ? processTime : 1;
- }
-
- @Override
- public void update(LogicObservable initiator)
- {
- timeline.addEvent(e -> compute(), processTime);
- }
-
- protected abstract void compute();
-}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import net.mograsim.logic.core.LogicObservable;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.timeline.Timeline;
+
+/**
+ * A basic component that recomputes all outputs (with a delay), when it is updated.
+ *
+ * @author Fabian Stemmler
+ */
+public abstract class BasicCoreComponent extends CoreComponent implements LogicObserver
+{
+ private int processTime;
+
+ /**
+ *
+ * @param processTime Amount of time this component takes to update its outputs. Must be more than 0, otherwise 1 is assumed.
+ *
+ * @author Fabian Stemmler
+ */
+ public BasicCoreComponent(Timeline timeline, int processTime)
+ {
+ super(timeline);
+ this.processTime = processTime > 0 ? processTime : 1;
+ }
+
+ @Override
+ public void update(LogicObservable initiator)
+ {
+ timeline.addEvent(e -> compute(), processTime);
+ }
+
+ protected abstract void compute();
+}
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import net.mograsim.logic.core.LogicObservable;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class BitDisplay extends BasicComponent implements LogicObservable
-{
- private Collection<LogicObserver> observers;
- private final ReadEnd in;
- private BitVector displayedValue;
-
- public BitDisplay(Timeline timeline, ReadEnd in)
- {
- super(timeline, 1);
- observers = new ArrayList<>();
- this.in = in;
- in.registerObserver(this);
- compute();
- }
-
- @Override
- protected void compute()
- {
- displayedValue = in.getValues();
- notifyObservers();
- }
-
- public BitVector getDisplayedValue()
- {
- return displayedValue;
- }
-
- public boolean isDisplaying(Bit... values)
- {
- return displayedValue.equals(BitVector.of(values));
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- return List.of(in);
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of();
- }
-
- @Override
- public void registerObserver(LogicObserver ob)
- {
- observers.add(ob);
- }
-
- @Override
- public void deregisterObserver(LogicObserver ob)
- {
- observers.remove(ob);
- }
-
- @Override
- public void notifyObservers()
- {
- observers.forEach(ob -> ob.update(this));
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-
-import net.mograsim.logic.core.LogicObservable;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.timeline.TimelineEvent;
-import net.mograsim.logic.core.timeline.TimelineEventHandler;
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class Clock extends Component implements TimelineEventHandler, LogicObservable
-{
- private Collection<LogicObserver> observers;
- private boolean toggle = false;
- private ReadWriteEnd out;
- private int delta;
-
- /**
- *
- * @param out {@link Wire} the clock's impulses are fed into
- * @param delta ticks between rising and falling edge
- */
- public Clock(Timeline timeline, ReadWriteEnd out, int delta)
- {
- super(timeline);
- this.delta = delta;
- this.out = out;
- this.observers = new HashSet<>();
- addToTimeline();
- }
-
- @Override
- public void handle(TimelineEvent e)
- {
- addToTimeline();
- out.feedSignals(toggle ? Bit.ONE : Bit.ZERO);
- toggle = !toggle;
- notifyObservers();
- }
-
- public ReadWriteEnd getOut()
- {
- return out;
- }
-
- public boolean isOn()
- {
- return !toggle;
- }
-
- private void addToTimeline()
- {
- timeline.addEvent(this, delta);
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- return List.of();
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of(out);
- }
-
- @Override
- public void registerObserver(LogicObserver ob)
- {
- observers.add(ob);
- }
-
- @Override
- public void deregisterObserver(LogicObserver ob)
- {
- observers.remove(ob);
- }
-
- @Override
- public void notifyObservers()
- {
- observers.forEach(ob -> ob.update(this));
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import java.util.List;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public abstract class Component
-{
- protected Timeline timeline;
-
- public Component(Timeline timeline)
- {
- this.timeline = timeline;
- }
-
- /**
- * Returns immutable list of all inputs to the {@link Component} (including e.g. the select bits to a MUX). Intended for visualization
- * in the UI.
- */
- public abstract List<ReadEnd> getAllInputs();
-
- /**
- * Returns immutable list of all outputs to the {@link Component}. Intended for visualization in the UI.
- */
- public abstract List<ReadWriteEnd> getAllOutputs();
-}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import net.mograsim.logic.core.LogicObservable;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreBitDisplay extends BasicCoreComponent implements LogicObservable
+{
+ private Collection<LogicObserver> observers;
+ private final ReadEnd in;
+ private BitVector displayedValue;
+
+ public CoreBitDisplay(Timeline timeline, ReadEnd in)
+ {
+ super(timeline, 1);
+ observers = new ArrayList<>();
+ this.in = in;
+ in.registerObserver(this);
+ compute();
+ }
+
+ @Override
+ protected void compute()
+ {
+ displayedValue = in.getValues();
+ notifyObservers();
+ }
+
+ public BitVector getDisplayedValue()
+ {
+ return displayedValue;
+ }
+
+ public boolean isDisplaying(Bit... values)
+ {
+ return displayedValue.equals(BitVector.of(values));
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ return List.of(in);
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of();
+ }
+
+ @Override
+ public void registerObserver(LogicObserver ob)
+ {
+ observers.add(ob);
+ }
+
+ @Override
+ public void deregisterObserver(LogicObserver ob)
+ {
+ observers.remove(ob);
+ }
+
+ @Override
+ public void notifyObservers()
+ {
+ observers.forEach(ob -> ob.update(this));
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+
+import net.mograsim.logic.core.LogicObservable;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.timeline.TimelineEvent;
+import net.mograsim.logic.core.timeline.TimelineEventHandler;
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreClock extends CoreComponent implements TimelineEventHandler, LogicObservable
+{
+ private Collection<LogicObserver> observers;
+ private boolean toggle = false;
+ private ReadWriteEnd out;
+ private int delta;
+
+ /**
+ *
+ * @param out {@link CoreWire} the clock's impulses are fed into
+ * @param delta ticks between rising and falling edge
+ */
+ public CoreClock(Timeline timeline, ReadWriteEnd out, int delta)
+ {
+ super(timeline);
+ this.delta = delta;
+ this.out = out;
+ this.observers = new HashSet<>();
+ addToTimeline();
+ }
+
+ @Override
+ public void handle(TimelineEvent e)
+ {
+ addToTimeline();
+ out.feedSignals(toggle ? Bit.ONE : Bit.ZERO);
+ toggle = !toggle;
+ notifyObservers();
+ }
+
+ public ReadWriteEnd getOut()
+ {
+ return out;
+ }
+
+ public boolean isOn()
+ {
+ return !toggle;
+ }
+
+ private void addToTimeline()
+ {
+ timeline.addEvent(this, delta);
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ return List.of();
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of(out);
+ }
+
+ @Override
+ public void registerObserver(LogicObserver ob)
+ {
+ observers.add(ob);
+ }
+
+ @Override
+ public void deregisterObserver(LogicObserver ob)
+ {
+ observers.remove(ob);
+ }
+
+ @Override
+ public void notifyObservers()
+ {
+ observers.forEach(ob -> ob.update(this));
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import java.util.List;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public abstract class CoreComponent
+{
+ protected Timeline timeline;
+
+ public CoreComponent(Timeline timeline)
+ {
+ this.timeline = timeline;
+ }
+
+ /**
+ * Returns immutable list of all inputs to the {@link CoreComponent} (including e.g. the select bits to a MUX). Intended for visualization
+ * in the UI.
+ */
+ public abstract List<ReadEnd> getAllInputs();
+
+ /**
+ * Returns immutable list of all outputs to the {@link CoreComponent}. Intended for visualization in the UI.
+ */
+ public abstract List<ReadWriteEnd> getAllOutputs();
+}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import java.util.List;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+/**
+ * Models a multiplexer. Takes an arbitrary amount of input {@link CoreWire}s, one of which, as determined by select, is put through to the
+ * output.
+ *
+ * @author Fabian Stemmler
+ *
+ */
+public class CoreDemux extends BasicCoreComponent
+{
+ private final ReadEnd select, in;
+ private final ReadWriteEnd[] outputs;
+ private final int outputSize;
+ private int selected = -1;
+
+ /**
+ * Output {@link CoreWire}s and in must be of uniform width
+ *
+ * @param in Must be of uniform width with all outputs.
+ * @param select Indexes the output array to which the input is mapped. Must have enough bits to index all outputs.
+ * @param outputs One of these outputs receives the input signal, depending on the select bits
+ */
+ public CoreDemux(Timeline timeline, int processTime, ReadEnd in, ReadEnd select, ReadWriteEnd... outputs)
+ {
+ super(timeline, processTime);
+ outputSize = in.width();
+
+ this.in = in;
+ this.outputs = outputs;
+ for (int i = 0; i < this.outputs.length; i++)
+ {
+ if (outputs[i].width() != outputSize)
+ throw new IllegalArgumentException("All DEMUX wire arrays must be of uniform width!");
+ this.outputs[i] = outputs[i];
+ }
+
+ this.select = select;
+ select.registerObserver(this);
+
+ int maxInputs = 1 << select.width();
+ if (this.outputs.length > maxInputs)
+ throw new IllegalArgumentException("There are more outputs (" + this.outputs.length + ") to the DEMUX than supported by "
+ + select.width() + " select bits (" + maxInputs + ").");
+ in.registerObserver(this);
+ }
+
+ @Override
+ public void compute()
+ {
+ int selectValue = select.hasNumericValue() ? (int) select.getUnsignedValue() : -1;
+ if (selectValue >= outputs.length)
+ selectValue = -1;
+
+ if (selected != selectValue && selected != -1)
+ outputs[selected].clearSignals();
+
+ selected = selectValue;
+
+ if (selectValue != -1)
+ outputs[selectValue].feedSignals(in.getValues());
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ return List.of(in, select);
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of(outputs);
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import net.mograsim.logic.core.LogicObservable;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+/**
+ * This class models a simple on/off (ONE/ZERO) switch for user interaction.
+ *
+ * @author Christian Femers
+ *
+ */
+public class CoreManualSwitch extends CoreComponent implements LogicObservable
+{
+ private Collection<LogicObserver> observers;
+ private ReadWriteEnd output;
+ private BitVector inputValues;
+
+ public CoreManualSwitch(Timeline timeline, ReadWriteEnd output)
+ {
+ super(timeline);
+ observers = new ArrayList<>();
+ this.output = output;
+ this.inputValues = output.getInputValues();
+ }
+
+ public void switchFullOn()
+ {
+ setState(BitVector.of(Bit.ONE, output.width()));
+ }
+
+ public void switchFullOff()
+ {
+ setState(BitVector.of(Bit.ZERO, output.width()));
+ }
+
+ public void toggle()
+ {
+ if (isFullOn())
+ switchFullOff();
+ else
+ switchFullOn();
+ }
+
+ public void setState(Bit bit)
+ {
+ setState(BitVector.of(bit));
+ }
+
+ public void setState(BitVector bits)
+ {
+ if (bits.length() != output.width())
+ throw new IllegalArgumentException("Incorrect bit vector length");
+ if (bits.equals(inputValues))
+ return;
+ inputValues = bits;
+ output.feedSignals(bits);
+ notifyObservers();
+ }
+
+ public boolean isFullOn()
+ {
+ return BitVector.of(Bit.ONE, output.width()).equals(output.getInputValues());
+ }
+
+ public BitVector getValues()
+ {
+ return inputValues;
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ return List.of();
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of(output);
+ }
+
+ @Override
+ public void registerObserver(LogicObserver ob)
+ {
+ observers.add(ob);
+ }
+
+ @Override
+ public void deregisterObserver(LogicObserver ob)
+ {
+ observers.remove(ob);
+ }
+
+ @Override
+ public void notifyObservers()
+ {
+ observers.forEach(ob -> ob.update(this));
+ }
+
+}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+/**
+ * Models a multiplexer. Takes an arbitrary amount of input {@link CoreWire}s, one of which, as determined by select, is put through to the
+ * output.
+ *
+ * @author Fabian Stemmler
+ *
+ */
+public class CoreMux extends BasicCoreComponent
+{
+ private ReadEnd select;
+ private ReadWriteEnd out;
+ private ReadEnd[] inputs;
+ private final int outputSize;
+
+ /**
+ * Input {@link CoreWire}s and out must be of uniform width
+ *
+ * @param out Must be of uniform width with all inputs.
+ * @param select Indexes the input array which is to be mapped to the output. Must have enough bits to index all inputs.
+ * @param inputs One of these inputs is mapped to the output, depending on the select bits
+ */
+ public CoreMux(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd select, ReadEnd... inputs)
+ {
+ super(timeline, processTime);
+ outputSize = out.width();
+
+ this.inputs = inputs.clone();
+ for (int i = 0; i < this.inputs.length; i++)
+ {
+ if (inputs[i].width() != outputSize)
+ throw new IllegalArgumentException("All MUX wire arrays must be of uniform width!");
+ inputs[i].registerObserver(this);
+ }
+
+ this.select = select;
+ select.registerObserver(this);
+
+ int maxInputs = 1 << select.width();
+ if (this.inputs.length > maxInputs)
+ throw new IllegalArgumentException("There are more inputs (" + this.inputs.length + ") to the MUX than supported by "
+ + select.width() + " select bits (" + maxInputs + ").");
+
+ this.out = out;
+ }
+
+ public ReadEnd getOut()
+ {
+ return out;
+ }
+
+ public ReadEnd getSelect()
+ {
+ return select;
+ }
+
+ @Override
+ public void compute()
+ {
+ int selectValue;
+ if (!select.hasNumericValue() || (selectValue = (int) select.getUnsignedValue()) >= inputs.length)
+ {
+ out.clearSignals();
+ return;
+ }
+
+ ReadEnd active = inputs[selectValue];
+ out.feedSignals(active.getValues());
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ ArrayList<ReadEnd> wires = new ArrayList<>(Arrays.asList(inputs));
+ wires.add(select);
+ return Collections.unmodifiableList(wires);
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of(out);
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import java.util.List;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreTriStateBuffer extends BasicCoreComponent
+{
+ ReadEnd in, enable;
+ ReadWriteEnd out;
+
+ public CoreTriStateBuffer(Timeline timeline, int processTime, ReadEnd in, ReadWriteEnd out, ReadEnd enable)
+ {
+ super(timeline, processTime);
+ if (in.width() != out.width())
+ throw new IllegalArgumentException(
+ "Tri-state output must have the same amount of bits as the input. Input: " + in.width() + " Output: " + out.width());
+ if (enable.width() != 1)
+ throw new IllegalArgumentException("Tri-state enable must have exactly one bit, not " + enable.width() + ".");
+ this.in = in;
+ in.registerObserver(this);
+ this.enable = enable;
+ enable.registerObserver(this);
+ this.out = out;
+ }
+
+ @Override
+ protected void compute()
+ {
+ if (enable.getValue() == Bit.ONE)
+ out.feedSignals(in.getValues());
+ else
+ out.clearSignals();
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ return List.of(in, enable);
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of(out);
+ }
+
+}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import java.util.List;
+
+import net.mograsim.logic.core.LogicObservable;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreUnidirectionalMerger extends CoreComponent implements LogicObserver
+{
+ private ReadWriteEnd out;
+ private ReadEnd[] inputs;
+ private int[] beginningIndex;
+
+ /**
+ *
+ * @param union The output of merging n {@link CoreWire}s into one. Must have width = a1.width() + a2.width() + ... + an.width().
+ * @param inputs The inputs to be merged into the union
+ */
+ public CoreUnidirectionalMerger(Timeline timeline, ReadWriteEnd union, ReadEnd... inputs)
+ {
+ super(timeline);
+ this.inputs = inputs;
+ this.out = union;
+ this.beginningIndex = new int[inputs.length];
+
+ int width = 0;
+ for (int i = 0; i < inputs.length; i++)
+ {
+ beginningIndex[i] = width;
+ width += inputs[i].width();
+ inputs[i].registerObserver(this);
+ }
+
+ if (width != union.width())
+ throw new IllegalArgumentException(
+ "The output of merging n WireArrays into one must have width = a1.width() + a2.width() + ... + an.width().");
+ }
+
+ public ReadEnd getInput(int index)
+ {
+ return inputs[index];
+ }
+
+ public ReadEnd getUnion()
+ {
+ return out;
+ }
+
+ @Override
+ public void update(LogicObservable initiator)
+ {
+ int index = find(initiator);
+ int beginning = beginningIndex[index];
+ out.feedSignals(beginning, inputs[index].getValues());
+ }
+
+ private int find(LogicObservable r)
+ {
+ for (int i = 0; i < inputs.length; i++)
+ if (inputs[i] == r)
+ return i;
+ return -1;
+ }
+
+ public ReadEnd[] getInputs()
+ {
+ return inputs.clone();
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ return List.of(inputs);
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of(out);
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components;
+
+import java.util.List;
+
+import net.mograsim.logic.core.LogicObservable;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreUnidirectionalSplitter extends CoreComponent implements LogicObserver
+{
+ private ReadEnd input;
+ private ReadWriteEnd[] outputs;
+
+ public CoreUnidirectionalSplitter(Timeline timeline, ReadEnd input, ReadWriteEnd... outputs)
+ {
+ super(timeline);
+ this.input = input;
+ this.outputs = outputs;
+ input.registerObserver(this);
+ int width = 0;
+ for (ReadEnd out : outputs)
+ width += out.width();
+
+ if (input.width() != width)
+ throw new IllegalArgumentException(
+ "The input of splitting one into n WireArrays must have width = a1.width() + a2.width() + ... + an.width().");
+ }
+
+ protected void compute()
+ {
+ BitVector inputBits = input.getValues();
+ int startIndex = 0;
+ for (int i = 0; i < outputs.length; i++)
+ {
+ outputs[i].feedSignals(inputBits.subVector(startIndex, startIndex + outputs[i].width()));
+ startIndex += outputs[i].width();
+ }
+ }
+
+ @Override
+ public void update(LogicObservable initiator)
+ {
+ compute();
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ return List.of(input);
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of(outputs);
+ }
+}
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import java.util.List;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-/**
- * Models a multiplexer. Takes an arbitrary amount of input {@link Wire}s, one of which, as determined by select, is put through to the
- * output.
- *
- * @author Fabian Stemmler
- *
- */
-public class Demux extends BasicComponent
-{
- private final ReadEnd select, in;
- private final ReadWriteEnd[] outputs;
- private final int outputSize;
- private int selected = -1;
-
- /**
- * Output {@link Wire}s and in must be of uniform width
- *
- * @param in Must be of uniform width with all outputs.
- * @param select Indexes the output array to which the input is mapped. Must have enough bits to index all outputs.
- * @param outputs One of these outputs receives the input signal, depending on the select bits
- */
- public Demux(Timeline timeline, int processTime, ReadEnd in, ReadEnd select, ReadWriteEnd... outputs)
- {
- super(timeline, processTime);
- outputSize = in.width();
-
- this.in = in;
- this.outputs = outputs;
- for (int i = 0; i < this.outputs.length; i++)
- {
- if (outputs[i].width() != outputSize)
- throw new IllegalArgumentException("All DEMUX wire arrays must be of uniform width!");
- this.outputs[i] = outputs[i];
- }
-
- this.select = select;
- select.registerObserver(this);
-
- int maxInputs = 1 << select.width();
- if (this.outputs.length > maxInputs)
- throw new IllegalArgumentException("There are more outputs (" + this.outputs.length + ") to the DEMUX than supported by "
- + select.width() + " select bits (" + maxInputs + ").");
- in.registerObserver(this);
- }
-
- @Override
- public void compute()
- {
- int selectValue = select.hasNumericValue() ? (int) select.getUnsignedValue() : -1;
- if (selectValue >= outputs.length)
- selectValue = -1;
-
- if (selected != selectValue && selected != -1)
- outputs[selected].clearSignals();
-
- selected = selectValue;
-
- if (selectValue != -1)
- outputs[selectValue].feedSignals(in.getValues());
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- return List.of(in, select);
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of(outputs);
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import net.mograsim.logic.core.LogicObservable;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-/**
- * This class models a simple on/off (ONE/ZERO) switch for user interaction.
- *
- * @author Christian Femers
- *
- */
-public class ManualSwitch extends Component implements LogicObservable
-{
- private Collection<LogicObserver> observers;
- private ReadWriteEnd output;
- private BitVector inputValues;
-
- public ManualSwitch(Timeline timeline, ReadWriteEnd output)
- {
- super(timeline);
- observers = new ArrayList<>();
- this.output = output;
- this.inputValues = output.getInputValues();
- }
-
- public void switchFullOn()
- {
- setState(BitVector.of(Bit.ONE, output.width()));
- }
-
- public void switchFullOff()
- {
- setState(BitVector.of(Bit.ZERO, output.width()));
- }
-
- public void toggle()
- {
- if (isFullOn())
- switchFullOff();
- else
- switchFullOn();
- }
-
- public void setState(Bit bit)
- {
- setState(BitVector.of(bit));
- }
-
- public void setState(BitVector bits)
- {
- if (bits.length() != output.width())
- throw new IllegalArgumentException("Incorrect bit vector length");
- if (bits.equals(inputValues))
- return;
- inputValues = bits;
- output.feedSignals(bits);
- notifyObservers();
- }
-
- public boolean isFullOn()
- {
- return BitVector.of(Bit.ONE, output.width()).equals(output.getInputValues());
- }
-
- public BitVector getValues()
- {
- return inputValues;
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- return List.of();
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of(output);
- }
-
- @Override
- public void registerObserver(LogicObserver ob)
- {
- observers.add(ob);
- }
-
- @Override
- public void deregisterObserver(LogicObserver ob)
- {
- observers.remove(ob);
- }
-
- @Override
- public void notifyObservers()
- {
- observers.forEach(ob -> ob.update(this));
- }
-
-}
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-/**
- * Models a multiplexer. Takes an arbitrary amount of input {@link Wire}s, one of which, as determined by select, is put through to the
- * output.
- *
- * @author Fabian Stemmler
- *
- */
-public class Mux extends BasicComponent
-{
- private ReadEnd select;
- private ReadWriteEnd out;
- private ReadEnd[] inputs;
- private final int outputSize;
-
- /**
- * Input {@link Wire}s and out must be of uniform width
- *
- * @param out Must be of uniform width with all inputs.
- * @param select Indexes the input array which is to be mapped to the output. Must have enough bits to index all inputs.
- * @param inputs One of these inputs is mapped to the output, depending on the select bits
- */
- public Mux(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd select, ReadEnd... inputs)
- {
- super(timeline, processTime);
- outputSize = out.width();
-
- this.inputs = inputs.clone();
- for (int i = 0; i < this.inputs.length; i++)
- {
- if (inputs[i].width() != outputSize)
- throw new IllegalArgumentException("All MUX wire arrays must be of uniform width!");
- inputs[i].registerObserver(this);
- }
-
- this.select = select;
- select.registerObserver(this);
-
- int maxInputs = 1 << select.width();
- if (this.inputs.length > maxInputs)
- throw new IllegalArgumentException("There are more inputs (" + this.inputs.length + ") to the MUX than supported by "
- + select.width() + " select bits (" + maxInputs + ").");
-
- this.out = out;
- }
-
- public ReadEnd getOut()
- {
- return out;
- }
-
- public ReadEnd getSelect()
- {
- return select;
- }
-
- @Override
- public void compute()
- {
- int selectValue;
- if (!select.hasNumericValue() || (selectValue = (int) select.getUnsignedValue()) >= inputs.length)
- {
- out.clearSignals();
- return;
- }
-
- ReadEnd active = inputs[selectValue];
- out.feedSignals(active.getValues());
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- ArrayList<ReadEnd> wires = new ArrayList<>(Arrays.asList(inputs));
- wires.add(select);
- return Collections.unmodifiableList(wires);
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of(out);
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import java.util.List;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class TriStateBuffer extends BasicComponent
-{
- ReadEnd in, enable;
- ReadWriteEnd out;
-
- public TriStateBuffer(Timeline timeline, int processTime, ReadEnd in, ReadWriteEnd out, ReadEnd enable)
- {
- super(timeline, processTime);
- if (in.width() != out.width())
- throw new IllegalArgumentException(
- "Tri-state output must have the same amount of bits as the input. Input: " + in.width() + " Output: " + out.width());
- if (enable.width() != 1)
- throw new IllegalArgumentException("Tri-state enable must have exactly one bit, not " + enable.width() + ".");
- this.in = in;
- in.registerObserver(this);
- this.enable = enable;
- enable.registerObserver(this);
- this.out = out;
- }
-
- @Override
- protected void compute()
- {
- if (enable.getValue() == Bit.ONE)
- out.feedSignals(in.getValues());
- else
- out.clearSignals();
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- return List.of(in, enable);
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of(out);
- }
-
-}
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import java.util.List;
-
-import net.mograsim.logic.core.LogicObservable;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class UnidirectionalMerger extends Component implements LogicObserver
-{
- private ReadWriteEnd out;
- private ReadEnd[] inputs;
- private int[] beginningIndex;
-
- /**
- *
- * @param union The output of merging n {@link Wire}s into one. Must have width = a1.width() + a2.width() + ... + an.width().
- * @param inputs The inputs to be merged into the union
- */
- public UnidirectionalMerger(Timeline timeline, ReadWriteEnd union, ReadEnd... inputs)
- {
- super(timeline);
- this.inputs = inputs;
- this.out = union;
- this.beginningIndex = new int[inputs.length];
-
- int width = 0;
- for (int i = 0; i < inputs.length; i++)
- {
- beginningIndex[i] = width;
- width += inputs[i].width();
- inputs[i].registerObserver(this);
- }
-
- if (width != union.width())
- throw new IllegalArgumentException(
- "The output of merging n WireArrays into one must have width = a1.width() + a2.width() + ... + an.width().");
- }
-
- public ReadEnd getInput(int index)
- {
- return inputs[index];
- }
-
- public ReadEnd getUnion()
- {
- return out;
- }
-
- @Override
- public void update(LogicObservable initiator)
- {
- int index = find(initiator);
- int beginning = beginningIndex[index];
- out.feedSignals(beginning, inputs[index].getValues());
- }
-
- private int find(LogicObservable r)
- {
- for (int i = 0; i < inputs.length; i++)
- if (inputs[i] == r)
- return i;
- return -1;
- }
-
- public ReadEnd[] getInputs()
- {
- return inputs.clone();
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- return List.of(inputs);
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of(out);
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components;
-
-import java.util.List;
-
-import net.mograsim.logic.core.LogicObservable;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class UnidirectionalSplitter extends Component implements LogicObserver
-{
- private ReadEnd input;
- private ReadWriteEnd[] outputs;
-
- public UnidirectionalSplitter(Timeline timeline, ReadEnd input, ReadWriteEnd... outputs)
- {
- super(timeline);
- this.input = input;
- this.outputs = outputs;
- input.registerObserver(this);
- int width = 0;
- for (ReadEnd out : outputs)
- width += out.width();
-
- if (input.width() != width)
- throw new IllegalArgumentException(
- "The input of splitting one into n WireArrays must have width = a1.width() + a2.width() + ... + an.width().");
- }
-
- protected void compute()
- {
- BitVector inputBits = input.getValues();
- int startIndex = 0;
- for (int i = 0; i < outputs.length; i++)
- {
- outputs[i].feedSignals(inputBits.subVector(startIndex, startIndex + outputs[i].width()));
- startIndex += outputs[i].width();
- }
- }
-
- @Override
- public void update(LogicObservable initiator)
- {
- compute();
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- return List.of(input);
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of(outputs);
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components.gates;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class AndGate extends MultiInputGate
-{
- public AndGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
- {
- super(timeline, processTime, BitVectorMutator::and, out, in);
- }
-}
--- /dev/null
+package net.mograsim.logic.core.components.gates;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreAndGate extends MultiInputCoreGate
+{
+ public CoreAndGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
+ {
+ super(timeline, processTime, BitVectorMutator::and, out, in);
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components.gates;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreNandGate extends MultiInputCoreGate
+{
+ public CoreNandGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
+ {
+ super(timeline, processTime, BitVectorMutator::and, true, out, in);
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components.gates;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreNorGate extends MultiInputCoreGate
+{
+ public CoreNorGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
+ {
+ super(timeline, processTime, BitVectorMutator::or, true, out, in);
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components.gates;
+
+import java.util.List;
+
+import net.mograsim.logic.core.components.BasicCoreComponent;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreNotGate extends BasicCoreComponent
+{
+ private ReadEnd in;
+ private ReadWriteEnd out;
+
+ public CoreNotGate(Timeline timeline, int processTime, ReadEnd in, ReadWriteEnd out)
+ {
+ super(timeline, processTime);
+ this.in = in;
+ in.registerObserver(this);
+ this.out = out;
+ }
+
+ @Override
+ protected void compute()
+ {
+ out.feedSignals(in.getValues().not());
+ }
+
+ public ReadEnd getIn()
+ {
+ return in;
+ }
+
+ public ReadEnd getOut()
+ {
+ return out;
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ return List.of(in);
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of(out);
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components.gates;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public class CoreOrGate extends MultiInputCoreGate
+{
+ public CoreOrGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
+ {
+ super(timeline, processTime, BitVectorMutator::or, out, in);
+ }
+}
--- /dev/null
+package net.mograsim.logic.core.components.gates;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+/**
+ * Outputs 1 when the number of 1 inputs is odd.
+ *
+ * @author Fabian Stemmler
+ */
+public class CoreXorGate extends MultiInputCoreGate
+{
+ public CoreXorGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
+ {
+ super(timeline, processTime, BitVectorMutator::xor, out, in);
+ }
+
+}
--- /dev/null
+package net.mograsim.logic.core.components.gates;
+
+import java.util.List;
+
+import net.mograsim.logic.core.components.BasicCoreComponent;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
+import net.mograsim.logic.core.types.MutationOperation;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+public abstract class MultiInputCoreGate extends BasicCoreComponent
+{
+ protected ReadEnd[] in;
+ protected ReadWriteEnd out;
+ protected final int width;
+ protected MutationOperation op;
+ protected boolean invert = false;
+
+ protected MultiInputCoreGate(Timeline timeline, int processTime, MutationOperation op, ReadWriteEnd out, ReadEnd... in)
+ {
+ super(timeline, processTime);
+ this.op = op;
+ width = out.width();
+ this.in = in.clone();
+ if (in.length < 1)
+ throw new IllegalArgumentException(String.format("Cannot create gate with %d wires.", in.length));
+ for (ReadEnd w : in)
+ {
+ if (w.width() != width)
+ throw new IllegalArgumentException("All wires connected to the gate must be of uniform length.");
+ w.registerObserver(this);
+ }
+ this.out = out;
+ }
+
+ protected MultiInputCoreGate(Timeline timeline, int processTime, MutationOperation op, boolean invert, ReadWriteEnd out, ReadEnd... in)
+ {
+ this(timeline, processTime, op, out, in);
+ this.invert = invert;
+ }
+
+ @Override
+ public List<ReadEnd> getAllInputs()
+ {
+ return List.of(in);
+ }
+
+ @Override
+ public List<ReadWriteEnd> getAllOutputs()
+ {
+ return List.of(out);
+ }
+
+ @Override
+ protected void compute()
+ {
+ BitVectorMutator mutator = BitVectorMutator.empty();
+ for (ReadEnd w : in)
+ op.apply(mutator, w.getValues());
+ out.feedSignals(invert ? mutator.toBitVector().not() : mutator.toBitVector());
+ }
+}
+++ /dev/null
-package net.mograsim.logic.core.components.gates;
-
-import java.util.List;
-
-import net.mograsim.logic.core.components.BasicComponent;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
-import net.mograsim.logic.core.types.MutationOperation;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public abstract class MultiInputGate extends BasicComponent
-{
- protected ReadEnd[] in;
- protected ReadWriteEnd out;
- protected final int width;
- protected MutationOperation op;
- protected boolean invert = false;
-
- protected MultiInputGate(Timeline timeline, int processTime, MutationOperation op, ReadWriteEnd out, ReadEnd... in)
- {
- super(timeline, processTime);
- this.op = op;
- width = out.width();
- this.in = in.clone();
- if (in.length < 1)
- throw new IllegalArgumentException(String.format("Cannot create gate with %d wires.", in.length));
- for (ReadEnd w : in)
- {
- if (w.width() != width)
- throw new IllegalArgumentException("All wires connected to the gate must be of uniform length.");
- w.registerObserver(this);
- }
- this.out = out;
- }
-
- protected MultiInputGate(Timeline timeline, int processTime, MutationOperation op, boolean invert, ReadWriteEnd out, ReadEnd... in)
- {
- this(timeline, processTime, op, out, in);
- this.invert = invert;
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- return List.of(in);
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of(out);
- }
-
- @Override
- protected void compute()
- {
- BitVectorMutator mutator = BitVectorMutator.empty();
- for (ReadEnd w : in)
- op.apply(mutator, w.getValues());
- out.feedSignals(invert ? mutator.toBitVector().not() : mutator.toBitVector());
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components.gates;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class NandGate extends MultiInputGate
-{
- public NandGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
- {
- super(timeline, processTime, BitVectorMutator::and, true, out, in);
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components.gates;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class NorGate extends MultiInputGate
-{
- public NorGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
- {
- super(timeline, processTime, BitVectorMutator::or, true, out, in);
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components.gates;
-
-import java.util.List;
-
-import net.mograsim.logic.core.components.BasicComponent;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class NotGate extends BasicComponent
-{
- private ReadEnd in;
- private ReadWriteEnd out;
-
- public NotGate(Timeline timeline, int processTime, ReadEnd in, ReadWriteEnd out)
- {
- super(timeline, processTime);
- this.in = in;
- in.registerObserver(this);
- this.out = out;
- }
-
- @Override
- protected void compute()
- {
- out.feedSignals(in.getValues().not());
- }
-
- public ReadEnd getIn()
- {
- return in;
- }
-
- public ReadEnd getOut()
- {
- return out;
- }
-
- @Override
- public List<ReadEnd> getAllInputs()
- {
- return List.of(in);
- }
-
- @Override
- public List<ReadWriteEnd> getAllOutputs()
- {
- return List.of(out);
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components.gates;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-public class OrGate extends MultiInputGate
-{
- public OrGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
- {
- super(timeline, processTime, BitVectorMutator::or, out, in);
- }
-}
+++ /dev/null
-package net.mograsim.logic.core.components.gates;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-/**
- * Outputs 1 when the number of 1 inputs is odd.
- *
- * @author Fabian Stemmler
- */
-public class XorGate extends MultiInputGate
-{
- public XorGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
- {
- super(timeline, processTime, BitVectorMutator::xor, out, in);
- }
-
-}
package net.mograsim.logic.core.types;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
import net.mograsim.preferences.ColorDefinition;
import net.mograsim.preferences.ColorDefinition.BuiltInColor;
import net.mograsim.preferences.Preferences;
--- /dev/null
+package net.mograsim.logic.core.wires;
+
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.Z;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import net.mograsim.logic.core.LogicObservable;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
+
+/**
+ * Represents an array of wires that can store n bits of information.
+ *
+ * @author Fabian Stemmler
+ *
+ */
+public class CoreWire
+{
+ public final String name;
+ private BitVector cachedValues;
+ public final int travelTime;
+ private List<ReadEnd> attached = new ArrayList<>();
+ public final int width;
+ List<ReadWriteEnd> inputs = new ArrayList<>();
+ Timeline timeline;
+ private Bit[] bitsWithoutFusions;
+ FusedBit[] fusedBits;
+
+ public CoreWire(Timeline timeline, int width, int travelTime)
+ {
+ this(timeline, width, travelTime, null);
+ }
+
+ public CoreWire(Timeline timeline, int width, int travelTime, String name)
+ {
+ if (width < 1)
+ throw new IllegalArgumentException(
+ String.format("Tried to create an array of wires with width %d, but a width of less than 1 makes no sense.", width));
+ this.name = name;
+ this.timeline = timeline;
+ this.width = width;
+ this.travelTime = travelTime;
+ initValues();
+ }
+
+ private void initValues()
+ {
+ cachedValues = U.toVector(width);
+ bitsWithoutFusions = cachedValues.getBits();
+ }
+
+ private void setNewValues(BitVector newValues)
+ {
+ cachedValues = newValues;
+ notifyObservers();
+ }
+
+ private void invalidateCachedValuesForAllFusedWires()
+ {
+ invalidateCachedValues();
+ if (fusedBits != null)
+ for (FusedBit fusion : fusedBits)
+ if (fusion != null)
+ fusion.invalidateCachedValuesForAllParticipatingWires();
+ }
+
+ private void invalidateCachedValues()
+ {
+ cachedValues = null;
+ notifyObservers();
+ }
+
+ void recalculateValuesWithoutFusions()
+ {
+ Bit[] bits = new Bit[width];
+ if (inputs.isEmpty())
+ Arrays.fill(bits, U);
+ else
+ {
+ System.arraycopy(inputs.get(0).getInputValues().getBits(), 0, bits, 0, width);
+ for (int i = 1; i < inputs.size(); i++)
+ Bit.join(bits, inputs.get(i).getInputValues().getBits());
+ }
+ bitsWithoutFusions = bits;
+ if (fusedBits == null)
+ setNewValues(BitVector.of(bits));
+ else
+ invalidateCachedValuesForAllFusedWires();
+ }
+
+ private void recalculatedCachedValues()
+ {
+ Bit[] bits;
+ if (fusedBits == null)
+ bits = bitsWithoutFusions;
+ else
+ {
+ bits = new Bit[width];
+ for (int i = 0; i < width; i++)
+ {
+ FusedBit fusion = fusedBits[i];
+ if (fusion == null)
+ bits[i] = bitsWithoutFusions[i];
+ else
+ bits[i] = fusion.getValue();
+ }
+ }
+ cachedValues = BitVector.of(bits);
+ }
+
+ /**
+ * Forces a Wire to take on specific values. If the new values differ from the old ones, the observers of the Wire will be notified.
+ * WARNING! Use this with care! The preferred way of writing the values is ReadWriteEnd.feedSignals(BitVector)
+ *
+ * @param values The values the <code>Wire</code> will have immediately after this method is called
+ */
+ public void forceValues(BitVector values)
+ {
+ setNewValues(values);
+ }
+
+ /**
+ * The {@link CoreWire} is interpreted as an unsigned integer with n bits.
+ *
+ * @return <code>true</code> if all bits are either <code>Bit.ONE</code> or <code>Bit.ZERO</code> (they do not all have to have the same
+ * value), not <code>Bit.U</code>, <code>Bit.X</code> or <code>Bit.Z</code>. <code>false</code> is returned otherwise.
+ *
+ * @author Fabian Stemmler
+ */
+ public boolean hasNumericValue()
+ {
+ return getValues().isBinary();
+ }
+
+ /**
+ * The {@link CoreWire} is interpreted as an unsigned integer with n bits.
+ *
+ * @return The unsigned value of the {@link CoreWire}'s bits, where value 0 corresponds with 2^0, value 1 is 2^1 and so on.
+ *
+ * @author Fabian Stemmler
+ */
+ public long getUnsignedValue()
+ {
+ long val = 0;
+ long mask = 1;
+ for (Bit bit : getValues())
+ {
+ switch (bit)
+ {
+ default:
+ case Z:
+ case X:
+ return 0; // TODO: Proper handling for getUnsignedValue(), if not all bits are 1 or 0;
+ case ONE:
+ val |= mask;
+ break;
+ case ZERO:
+ }
+ mask = mask << 1;
+ }
+ return val;
+ }
+
+ /**
+ * The {@link CoreWire} is interpreted as a signed integer with n bits.
+ *
+ * @return The signed value of the {@link CoreWire}'s bits, where value 0 corresponds with 2^0, value 1 is 2^1 and so on.
+ *
+ * @author Fabian Stemmler
+ */
+ public long getSignedValue()
+ {
+ long val = getUnsignedValue();
+ long mask = 1 << (width - 1);
+ if ((mask & val) != 0)
+ {
+ int shifts = 64 - width;
+ return (val << shifts) >> shifts;
+ }
+ return val;
+ }
+
+ /**
+ * Returns the least significant bit (LSB)
+ */
+ public Bit getValue()
+ {
+ return getValue(0);
+ }
+
+ /**
+ * Returns the least significant bit (LSB) of the given index
+ */
+ public Bit getValue(int index)
+ {
+ return getValues().getLSBit(index);
+ }
+
+ public BitVector getValues(int start, int end)
+ {
+ return getValues().subVector(start, end);
+ }
+
+ public BitVector getValues()
+ {
+ if (cachedValues == null)
+ recalculatedCachedValues();
+ return cachedValues;
+ }
+
+ /**
+ * Adds an {@link LogicObserver}, who will be notified when the value of the {@link CoreWire} is updated.
+ *
+ * @param ob The {@link LogicObserver} to be notified of changes.
+ * @return true if the given {@link LogicObserver} was not already registered, false otherwise
+ *
+ * @author Fabian Stemmler
+ */
+ boolean attachEnd(ReadEnd end)
+ {
+ return attached.add(end);
+ }
+
+ void detachEnd(ReadEnd end)
+ {
+ attached.remove(end);
+ }
+
+ private void notifyObservers()
+ {
+ attached.forEach(ReadEnd::update);
+ }
+
+ /**
+ * Create and register a {@link ReadWriteEnd} object, which is tied to this {@link CoreWire}. This {@link ReadWriteEnd} can be written
+ * to.
+ */
+ public ReadWriteEnd createReadWriteEnd()
+ {
+ return new ReadWriteEnd();
+ }
+
+ /**
+ * Create a {@link ReadEnd} object, which is tied to this {@link CoreWire}. This {@link ReadEnd} cannot be written to.
+ */
+ public ReadEnd createReadOnlyEnd()
+ {
+ return new ReadEnd();
+ }
+
+ void registerInput(ReadWriteEnd toRegister)
+ {
+ inputs.add(toRegister);
+ recalculateValuesWithoutFusions();
+ }
+
+ /**
+ * A {@link ReadEnd} feeds a constant signal into the {@link CoreWire} it is tied to. The combination of all inputs determines the
+ * {@link CoreWire}s final value. X dominates all other inputs Z does not affect the final value, unless there are no other inputs than
+ * Z 0 and 1 turn into X when they are mixed
+ *
+ * @author Fabian Stemmler
+ */
+ public class ReadEnd implements LogicObservable
+ {
+ private List<LogicObserver> observers = new ArrayList<>();
+
+ ReadEnd()
+ {
+ super();
+ CoreWire.this.attachEnd(this);
+ }
+
+ public void update()
+ {
+ notifyObservers();
+ }
+
+ /**
+ * Included for convenient use on {@link CoreWire}s of width 1.
+ *
+ * @return The value of bit 0.
+ *
+ * @author Fabian Stemmler
+ */
+ public Bit getValue()
+ {
+ return CoreWire.this.getValue();
+ }
+
+ /**
+ * @param index Index of the requested bit.
+ * @return The value of the indexed bit.
+ *
+ * @author Fabian Stemmler
+ */
+ public Bit getValue(int index)
+ {
+ return CoreWire.this.getValue(index);
+ }
+
+ public BitVector getValues()
+ {
+ return CoreWire.this.getValues();
+ }
+
+ /**
+ * @param start Start of the wanted segment. (inclusive)
+ * @param end End of the wanted segment. (exclusive)
+ * @return The values of the segment of {@link Bit}s indexed.
+ *
+ * @author Fabian Stemmler
+ */
+ public BitVector getValues(int start, int end)
+ {
+ return CoreWire.this.getValues(start, end);
+ }
+
+ /**
+ * The {@link CoreWire} is interpreted as an unsigned integer with n bits.
+ *
+ * @return <code>true</code> if all bits are either <code>Bit.ONE</code> or <code>Bit.ZERO</code> (they do not all have to have the
+ * same value), not <code>Bit.X</code> or <code>Bit.Z</code>. <code>false</code> is returned otherwise.
+ *
+ * @author Fabian Stemmler
+ */
+ public boolean hasNumericValue()
+ {
+ return CoreWire.this.hasNumericValue();
+ }
+
+ /**
+ * The {@link CoreWire} is interpreted as an unsigned integer with n bits.
+ *
+ * @return The unsigned value of the {@link CoreWire}'s bits, where value 0 corresponds with 2^0, value 1 is 2^1 and so on.
+ *
+ * @author Fabian Stemmler
+ */
+ public long getUnsignedValue()
+ {
+ return CoreWire.this.getUnsignedValue();
+ }
+
+ /**
+ * The {@link CoreWire} is interpreted as a signed integer with n bits.
+ *
+ * @return The signed value of the {@link CoreWire}'s bits, where value 0 corresponds with 2^0, value 1 is 2^1 and so on.
+ *
+ * @author Fabian Stemmler
+ */
+ public long getSignedValue()
+ {
+ return CoreWire.this.getSignedValue();
+ }
+
+ @Override
+ public String toString()
+ {
+ return CoreWire.this.toString();
+ }
+
+ public void close()
+ {
+ inputs.remove(this);
+ detachEnd(this);
+ recalculateValuesWithoutFusions();
+ }
+
+ public int width()
+ {
+ return width;
+ }
+
+ public CoreWire getWire()
+ {
+ return CoreWire.this;
+ }
+
+ @Override
+ public void registerObserver(LogicObserver ob)
+ {
+ observers.add(ob);
+ }
+
+ @Override
+ public void deregisterObserver(LogicObserver ob)
+ {
+ observers.remove(ob);
+ }
+
+// void registerCloseObserver(LogicObserver ob)
+// {
+// closeObserver.add(ob);
+// }
+//
+// void deregisterCloseObserver(LogicObserver ob)
+// {
+// closeObserver.remove(ob);
+// }
+
+ @Override
+ public void notifyObservers()
+ {
+ observers.forEach(ob -> ob.update(this));
+ }
+ }
+
+ public class ReadWriteEnd extends ReadEnd
+ {
+ private boolean open;
+ private boolean isWriting;
+ private BitVector inputValues;
+
+ ReadWriteEnd()
+ {
+ super();
+ open = true;
+ isWriting = true;
+ initValues();
+ registerInput(this);
+ }
+
+ private void initValues()
+ {
+ inputValues = U.toVector(width);
+ }
+
+ /**
+ * Sets the wires values. This takes up time, as specified by the {@link CoreWire}s travel time.
+ *
+ * @param newValues The new values the wires should take on.
+ *
+ * @author Fabian Stemmler
+ */
+ public void feedSignals(Bit... newValues)
+ {
+ feedSignals(BitVector.of(newValues));
+ }
+
+ public void feedSignals(BitVector newValues)
+ {
+ if (newValues.length() != width)
+ throw new IllegalArgumentException(
+ String.format("Attempted to input %d bits instead of %d bits.", newValues.length(), width));
+ if (!open)
+ throw new IllegalStateException("Attempted to write to closed WireArrayEnd.");
+ timeline.addEvent(e -> setValues(newValues), travelTime);
+ }
+
+ /**
+ * Sets values of a subarray of wires. This takes up time, as specified by the {@link CoreWire}s travel time.
+ *
+ * @param bitVector The new values the wires should take on.
+ * @param startingBit The first index of the subarray of wires.
+ *
+ * @author Fabian Stemmler
+ */
+ public void feedSignals(int startingBit, BitVector bitVector)
+ {
+ if (!open)
+ throw new IllegalStateException("Attempted to write to closed WireArrayEnd.");
+ timeline.addEvent(e -> setValues(startingBit, bitVector), travelTime);
+ }
+
+ /**
+ * Sets the values that are being fed into the {@link CoreWire}. The preferred way of setting {@link ReadWriteEnd} values is via
+ * feedValues(...) with a delay.
+ */
+ void setValues(int startingBit, BitVector newValues)
+ {
+ // index check covered in equals
+ if (!inputValues.equalsWithOffset(newValues, startingBit))
+ {
+ Bit[] vals = inputValues.getBits();
+ System.arraycopy(newValues.getBits(), 0, vals, startingBit, newValues.length());
+ inputValues = BitVector.of(vals);
+ CoreWire.this.recalculateValuesWithoutFusions();
+ }
+ }
+
+ /**
+ * Sets the values that are being fed into the {@link CoreWire}. The preferred way of setting {@link ReadWriteEnd} values is via
+ * feedValues(...) with a delay.
+ */
+ void setValues(BitVector newValues)
+ {
+ if (inputValues.equals(newValues))
+ return;
+ inputValues = newValues;
+ CoreWire.this.recalculateValuesWithoutFusions();
+ }
+
+ /**
+ * @return The value (of bit 0) the {@link ReadEnd} is currently feeding into the associated {@link CoreWire}.Returns the least
+ * significant bit (LSB)
+ */
+ public Bit getInputValue()
+ {
+ return getInputValue(0);
+ }
+
+ /**
+ * @return The value which the {@link ReadEnd} is currently feeding into the associated {@link CoreWire} at the indexed {@link Bit}.
+ * Returns the least significant bit (LSB)
+ *
+ */
+ public Bit getInputValue(int index)
+ {
+ return inputValues.getLSBit(index);
+ }
+
+ /**
+ * @return A copy (safe to modify) of the values the {@link ReadEnd} is currently feeding into the associated {@link CoreWire}.
+ */
+ public BitVector getInputValues()
+ {
+ return inputValues;
+ }
+
+ public BitVector getInputValues(int start, int end)
+ {
+ return inputValues.subVector(start, end);
+ }
+
+ /**
+ * {@link ReadEnd} now feeds Z into the associated {@link CoreWire}.
+ */
+ public void clearSignals()
+ {
+ feedSignals(Z.toVector(width));
+ }
+
+ public BitVector wireValuesExcludingMe()
+ {
+ BitVectorMutator mutator = BitVectorMutator.empty();
+ boolean modified = false;
+ for (ReadWriteEnd wireEnd : inputs)
+ {
+ if (wireEnd == this)
+ continue;
+ modified = true;
+ mutator.join(wireEnd.inputValues);
+ }
+ if (!modified)
+ mutator.join(BitVector.of(Bit.Z, width));
+ return mutator.toBitVector();
+ }
+
+ @Override
+ public String toString()
+ {
+ return inputValues.toString();
+ }
+
+ @Override
+ public void close()
+ {
+ super.close();
+ open = false;
+ }
+
+ void setWriting(boolean isWriting)
+ {
+ if (this.isWriting != isWriting)
+ {
+ this.isWriting = isWriting;
+ if (isWriting)
+ inputs.add(this);
+ else
+ inputs.remove(this);
+ CoreWire.this.recalculateValuesWithoutFusions();
+ }
+ }
+
+ boolean isWriting()
+ {
+ return isWriting;
+ }
+ }
+
+ @Override
+ public String toString()
+ {
+ String name = this.name == null ? String.format("0x%08x", hashCode()) : this.name;
+ return String.format("wire %s value: %s inputs: %s", name, getValues(), inputs);
+ }
+
+ public static ReadEnd[] extractEnds(CoreWire[] w)
+ {
+ ReadEnd[] inputs = new ReadEnd[w.length];
+ for (int i = 0; i < w.length; i++)
+ inputs[i] = w[i].createReadWriteEnd();
+ return inputs;
+ }
+
+ /**
+ *
+ * Fuses two wires together. If the bits change in one Wire, the other is changed accordingly immediately. Warning: The bits are
+ * permanently fused together.
+ *
+ * @param a The {@link CoreWire} to be fused with b
+ * @param b The {@link CoreWire} to be fused with a
+ */
+ public static void fuse(CoreWire a, CoreWire b)
+ {
+ fuse(a, b, 0, 0, a.width);
+ }
+
+ /**
+ * Fuses the selected bits of two wires together. If the bits change in one Wire, the other is changed accordingly immediately. Warning:
+ * The bits are permanently fused together.
+ *
+ * @param a The {@link CoreWire} to be (partially) fused with b
+ * @param b The {@link CoreWire} to be (partially) fused with a
+ * @param fromA The first bit of {@link CoreWire} a to be fused
+ * @param fromB The first bit of {@link CoreWire} b to be fused
+ * @param width The amount of bits to fuse
+ */
+ public static void fuse(CoreWire a, CoreWire b, int fromA, int fromB, int width)
+ {
+ // iterate in this direction to be fail-fast (rely on the checks in fuse(Wire, Wire, int, int)
+ for (int i = width - 1; i >= 0; i--)
+ fuse(a, b, fromA + i, fromB + i);
+ }
+
+ /**
+ * Fuses one bit of two wires together. If this bit changes in one Wire, the other is changed accordingly immediately. Warning: The bits
+ * are permanently fused together.
+ *
+ * @param a The {@link CoreWire} to be (partially) fused with b
+ * @param b The {@link CoreWire} to be (partially) fused with a
+ * @param bitA The bit of {@link CoreWire} a to be fused
+ * @param bitB The bit of {@link CoreWire} b to be fused
+ */
+ public static void fuse(CoreWire a, CoreWire b, int bitA, int bitB)
+ {
+ if (bitA >= a.width)
+ throw new IllegalArgumentException("No bit " + bitA + " in " + a + " (width " + a.width + ")");
+ if (bitB >= b.width)
+ throw new IllegalArgumentException("No bit " + bitB + " in " + b + " (width " + b.width + ")");
+ if (a.fusedBits == null)
+ a.fusedBits = new FusedBit[a.width];
+ if (b.fusedBits == null)
+ b.fusedBits = new FusedBit[b.width];
+ FusedBit oldFusionA = a.fusedBits[bitA];
+ FusedBit oldFusionB = b.fusedBits[bitB];
+ if (oldFusionA == null)
+ if (oldFusionB == null)
+ {
+ FusedBit fusion = new FusedBit();
+ fusion.addParticipatingWireBit(a, bitA);
+ fusion.addParticipatingWireBit(b, bitB);
+ } else
+ oldFusionB.addParticipatingWireBit(a, bitA);
+ else if (oldFusionB == null)
+ oldFusionA.addParticipatingWireBit(b, bitB);
+ else
+ oldFusionA.mergeOtherIntoThis(oldFusionB);
+ }
+
+ private static class FusedBit
+ {
+ private final Set<WireBit> participatingWireBits;
+
+ public FusedBit()
+ {
+ this.participatingWireBits = new HashSet<>();
+ }
+
+ public void addParticipatingWireBit(CoreWire w, int bit)
+ {
+ addParticipatingWireBit(new WireBit(w, bit));
+ }
+
+ private void addParticipatingWireBit(WireBit wb)
+ {
+ wb.wire.fusedBits[wb.bit] = this;
+ participatingWireBits.add(wb);
+ wb.wire.invalidateCachedValuesForAllFusedWires();
+ }
+
+ public void mergeOtherIntoThis(FusedBit other)
+ {
+ for (WireBit wb : other.participatingWireBits)
+ addParticipatingWireBit(wb);
+ }
+
+ public void invalidateCachedValuesForAllParticipatingWires()
+ {
+ for (WireBit wb : participatingWireBits)
+ wb.wire.invalidateCachedValues();
+ }
+
+ public Bit getValue()
+ {
+ Bit result = null;
+ for (WireBit wb : participatingWireBits)
+ if (!wb.wire.inputs.isEmpty())
+ {
+ Bit bit = wb.wire.bitsWithoutFusions[wb.bit];
+ result = result == null ? bit : result.join(bit);
+ }
+ return result == null ? U : result;
+ }
+ }
+
+ private static class WireBit
+ {
+ public final CoreWire wire;
+ public final int bit;
+
+ public WireBit(CoreWire wire, int bit)
+ {
+ this.wire = wire;
+ this.bit = bit;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + bit;
+ result = prime * result + ((wire == null) ? 0 : wire.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ WireBit other = (WireBit) obj;
+ if (bit != other.bit)
+ return false;
+ if (wire == null)
+ {
+ if (other.wire != null)
+ return false;
+ } else if (!wire.equals(other.wire))
+ return false;
+ return true;
+ }
+ }
+}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.core.wires;
-
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.Z;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import net.mograsim.logic.core.LogicObservable;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.types.BitVector.BitVectorMutator;
-
-/**
- * Represents an array of wires that can store n bits of information.
- *
- * @author Fabian Stemmler
- *
- */
-public class Wire
-{
- public final String name;
- private BitVector cachedValues;
- public final int travelTime;
- private List<ReadEnd> attached = new ArrayList<>();
- public final int width;
- List<ReadWriteEnd> inputs = new ArrayList<>();
- Timeline timeline;
- private Bit[] bitsWithoutFusions;
- FusedBit[] fusedBits;
-
- public Wire(Timeline timeline, int width, int travelTime)
- {
- this(timeline, width, travelTime, null);
- }
-
- public Wire(Timeline timeline, int width, int travelTime, String name)
- {
- if (width < 1)
- throw new IllegalArgumentException(
- String.format("Tried to create an array of wires with width %d, but a width of less than 1 makes no sense.", width));
- this.name = name;
- this.timeline = timeline;
- this.width = width;
- this.travelTime = travelTime;
- initValues();
- }
-
- private void initValues()
- {
- cachedValues = U.toVector(width);
- bitsWithoutFusions = cachedValues.getBits();
- }
-
- private void setNewValues(BitVector newValues)
- {
- cachedValues = newValues;
- notifyObservers();
- }
-
- private void invalidateCachedValuesForAllFusedWires()
- {
- invalidateCachedValues();
- if (fusedBits != null)
- for (FusedBit fusion : fusedBits)
- if (fusion != null)
- fusion.invalidateCachedValuesForAllParticipatingWires();
- }
-
- private void invalidateCachedValues()
- {
- cachedValues = null;
- notifyObservers();
- }
-
- void recalculateValuesWithoutFusions()
- {
- Bit[] bits = new Bit[width];
- if (inputs.isEmpty())
- Arrays.fill(bits, U);
- else
- {
- System.arraycopy(inputs.get(0).getInputValues().getBits(), 0, bits, 0, width);
- for (int i = 1; i < inputs.size(); i++)
- Bit.join(bits, inputs.get(i).getInputValues().getBits());
- }
- bitsWithoutFusions = bits;
- if (fusedBits == null)
- setNewValues(BitVector.of(bits));
- else
- invalidateCachedValuesForAllFusedWires();
- }
-
- private void recalculatedCachedValues()
- {
- Bit[] bits;
- if (fusedBits == null)
- bits = bitsWithoutFusions;
- else
- {
- bits = new Bit[width];
- for (int i = 0; i < width; i++)
- {
- FusedBit fusion = fusedBits[i];
- if (fusion == null)
- bits[i] = bitsWithoutFusions[i];
- else
- bits[i] = fusion.getValue();
- }
- }
- cachedValues = BitVector.of(bits);
- }
-
- /**
- * Forces a Wire to take on specific values. If the new values differ from the old ones, the observers of the Wire will be notified.
- * WARNING! Use this with care! The preferred way of writing the values is ReadWriteEnd.feedSignals(BitVector)
- *
- * @param values The values the <code>Wire</code> will have immediately after this method is called
- */
- public void forceValues(BitVector values)
- {
- setNewValues(values);
- }
-
- /**
- * The {@link Wire} is interpreted as an unsigned integer with n bits.
- *
- * @return <code>true</code> if all bits are either <code>Bit.ONE</code> or <code>Bit.ZERO</code> (they do not all have to have the same
- * value), not <code>Bit.U</code>, <code>Bit.X</code> or <code>Bit.Z</code>. <code>false</code> is returned otherwise.
- *
- * @author Fabian Stemmler
- */
- public boolean hasNumericValue()
- {
- return getValues().isBinary();
- }
-
- /**
- * The {@link Wire} is interpreted as an unsigned integer with n bits.
- *
- * @return The unsigned value of the {@link Wire}'s bits, where value 0 corresponds with 2^0, value 1 is 2^1 and so on.
- *
- * @author Fabian Stemmler
- */
- public long getUnsignedValue()
- {
- long val = 0;
- long mask = 1;
- for (Bit bit : getValues())
- {
- switch (bit)
- {
- default:
- case Z:
- case X:
- return 0; // TODO: Proper handling for getUnsignedValue(), if not all bits are 1 or 0;
- case ONE:
- val |= mask;
- break;
- case ZERO:
- }
- mask = mask << 1;
- }
- return val;
- }
-
- /**
- * The {@link Wire} is interpreted as a signed integer with n bits.
- *
- * @return The signed value of the {@link Wire}'s bits, where value 0 corresponds with 2^0, value 1 is 2^1 and so on.
- *
- * @author Fabian Stemmler
- */
- public long getSignedValue()
- {
- long val = getUnsignedValue();
- long mask = 1 << (width - 1);
- if ((mask & val) != 0)
- {
- int shifts = 64 - width;
- return (val << shifts) >> shifts;
- }
- return val;
- }
-
- /**
- * Returns the least significant bit (LSB)
- */
- public Bit getValue()
- {
- return getValue(0);
- }
-
- /**
- * Returns the least significant bit (LSB) of the given index
- */
- public Bit getValue(int index)
- {
- return getValues().getLSBit(index);
- }
-
- public BitVector getValues(int start, int end)
- {
- return getValues().subVector(start, end);
- }
-
- public BitVector getValues()
- {
- if (cachedValues == null)
- recalculatedCachedValues();
- return cachedValues;
- }
-
- /**
- * Adds an {@link LogicObserver}, who will be notified when the value of the {@link Wire} is updated.
- *
- * @param ob The {@link LogicObserver} to be notified of changes.
- * @return true if the given {@link LogicObserver} was not already registered, false otherwise
- *
- * @author Fabian Stemmler
- */
- boolean attachEnd(ReadEnd end)
- {
- return attached.add(end);
- }
-
- void detachEnd(ReadEnd end)
- {
- attached.remove(end);
- }
-
- private void notifyObservers()
- {
- attached.forEach(ReadEnd::update);
- }
-
- /**
- * Create and register a {@link ReadWriteEnd} object, which is tied to this {@link Wire}. This {@link ReadWriteEnd} can be written to.
- */
- public ReadWriteEnd createReadWriteEnd()
- {
- return new ReadWriteEnd();
- }
-
- /**
- * Create a {@link ReadEnd} object, which is tied to this {@link Wire}. This {@link ReadEnd} cannot be written to.
- */
- public ReadEnd createReadOnlyEnd()
- {
- return new ReadEnd();
- }
-
- void registerInput(ReadWriteEnd toRegister)
- {
- inputs.add(toRegister);
- recalculateValuesWithoutFusions();
- }
-
- /**
- * A {@link ReadEnd} feeds a constant signal into the {@link Wire} it is tied to. The combination of all inputs determines the
- * {@link Wire}s final value. X dominates all other inputs Z does not affect the final value, unless there are no other inputs than Z 0
- * and 1 turn into X when they are mixed
- *
- * @author Fabian Stemmler
- */
- public class ReadEnd implements LogicObservable
- {
- private List<LogicObserver> observers = new ArrayList<>();
-
- ReadEnd()
- {
- super();
- Wire.this.attachEnd(this);
- }
-
- public void update()
- {
- notifyObservers();
- }
-
- /**
- * Included for convenient use on {@link Wire}s of width 1.
- *
- * @return The value of bit 0.
- *
- * @author Fabian Stemmler
- */
- public Bit getValue()
- {
- return Wire.this.getValue();
- }
-
- /**
- * @param index Index of the requested bit.
- * @return The value of the indexed bit.
- *
- * @author Fabian Stemmler
- */
- public Bit getValue(int index)
- {
- return Wire.this.getValue(index);
- }
-
- public BitVector getValues()
- {
- return Wire.this.getValues();
- }
-
- /**
- * @param start Start of the wanted segment. (inclusive)
- * @param end End of the wanted segment. (exclusive)
- * @return The values of the segment of {@link Bit}s indexed.
- *
- * @author Fabian Stemmler
- */
- public BitVector getValues(int start, int end)
- {
- return Wire.this.getValues(start, end);
- }
-
- /**
- * The {@link Wire} is interpreted as an unsigned integer with n bits.
- *
- * @return <code>true</code> if all bits are either <code>Bit.ONE</code> or <code>Bit.ZERO</code> (they do not all have to have the
- * same value), not <code>Bit.X</code> or <code>Bit.Z</code>. <code>false</code> is returned otherwise.
- *
- * @author Fabian Stemmler
- */
- public boolean hasNumericValue()
- {
- return Wire.this.hasNumericValue();
- }
-
- /**
- * The {@link Wire} is interpreted as an unsigned integer with n bits.
- *
- * @return The unsigned value of the {@link Wire}'s bits, where value 0 corresponds with 2^0, value 1 is 2^1 and so on.
- *
- * @author Fabian Stemmler
- */
- public long getUnsignedValue()
- {
- return Wire.this.getUnsignedValue();
- }
-
- /**
- * The {@link Wire} is interpreted as a signed integer with n bits.
- *
- * @return The signed value of the {@link Wire}'s bits, where value 0 corresponds with 2^0, value 1 is 2^1 and so on.
- *
- * @author Fabian Stemmler
- */
- public long getSignedValue()
- {
- return Wire.this.getSignedValue();
- }
-
- @Override
- public String toString()
- {
- return Wire.this.toString();
- }
-
- public void close()
- {
- inputs.remove(this);
- detachEnd(this);
- recalculateValuesWithoutFusions();
- }
-
- public int width()
- {
- return width;
- }
-
- public Wire getWire()
- {
- return Wire.this;
- }
-
- @Override
- public void registerObserver(LogicObserver ob)
- {
- observers.add(ob);
- }
-
- @Override
- public void deregisterObserver(LogicObserver ob)
- {
- observers.remove(ob);
- }
-
-// void registerCloseObserver(LogicObserver ob)
-// {
-// closeObserver.add(ob);
-// }
-//
-// void deregisterCloseObserver(LogicObserver ob)
-// {
-// closeObserver.remove(ob);
-// }
-
- @Override
- public void notifyObservers()
- {
- observers.forEach(ob -> ob.update(this));
- }
- }
-
- public class ReadWriteEnd extends ReadEnd
- {
- private boolean open;
- private boolean isWriting;
- private BitVector inputValues;
-
- ReadWriteEnd()
- {
- super();
- open = true;
- isWriting = true;
- initValues();
- registerInput(this);
- }
-
- private void initValues()
- {
- inputValues = U.toVector(width);
- }
-
- /**
- * Sets the wires values. This takes up time, as specified by the {@link Wire}s travel time.
- *
- * @param newValues The new values the wires should take on.
- *
- * @author Fabian Stemmler
- */
- public void feedSignals(Bit... newValues)
- {
- feedSignals(BitVector.of(newValues));
- }
-
- public void feedSignals(BitVector newValues)
- {
- if (newValues.length() != width)
- throw new IllegalArgumentException(
- String.format("Attempted to input %d bits instead of %d bits.", newValues.length(), width));
- if (!open)
- throw new IllegalStateException("Attempted to write to closed WireArrayEnd.");
- timeline.addEvent(e -> setValues(newValues), travelTime);
- }
-
- /**
- * Sets values of a subarray of wires. This takes up time, as specified by the {@link Wire}s travel time.
- *
- * @param bitVector The new values the wires should take on.
- * @param startingBit The first index of the subarray of wires.
- *
- * @author Fabian Stemmler
- */
- public void feedSignals(int startingBit, BitVector bitVector)
- {
- if (!open)
- throw new IllegalStateException("Attempted to write to closed WireArrayEnd.");
- timeline.addEvent(e -> setValues(startingBit, bitVector), travelTime);
- }
-
- /**
- * Sets the values that are being fed into the {@link Wire}. The preferred way of setting {@link ReadWriteEnd} values is via
- * feedValues(...) with a delay.
- */
- void setValues(int startingBit, BitVector newValues)
- {
- // index check covered in equals
- if (!inputValues.equalsWithOffset(newValues, startingBit))
- {
- Bit[] vals = inputValues.getBits();
- System.arraycopy(newValues.getBits(), 0, vals, startingBit, newValues.length());
- inputValues = BitVector.of(vals);
- Wire.this.recalculateValuesWithoutFusions();
- }
- }
-
- /**
- * Sets the values that are being fed into the {@link Wire}. The preferred way of setting {@link ReadWriteEnd} values is via
- * feedValues(...) with a delay.
- */
- void setValues(BitVector newValues)
- {
- if (inputValues.equals(newValues))
- return;
- inputValues = newValues;
- Wire.this.recalculateValuesWithoutFusions();
- }
-
- /**
- * @return The value (of bit 0) the {@link ReadEnd} is currently feeding into the associated {@link Wire}.Returns the least
- * significant bit (LSB)
- */
- public Bit getInputValue()
- {
- return getInputValue(0);
- }
-
- /**
- * @return The value which the {@link ReadEnd} is currently feeding into the associated {@link Wire} at the indexed {@link Bit}.
- * Returns the least significant bit (LSB)
- *
- */
- public Bit getInputValue(int index)
- {
- return inputValues.getLSBit(index);
- }
-
- /**
- * @return A copy (safe to modify) of the values the {@link ReadEnd} is currently feeding into the associated {@link Wire}.
- */
- public BitVector getInputValues()
- {
- return inputValues;
- }
-
- public BitVector getInputValues(int start, int end)
- {
- return inputValues.subVector(start, end);
- }
-
- /**
- * {@link ReadEnd} now feeds Z into the associated {@link Wire}.
- */
- public void clearSignals()
- {
- feedSignals(Z.toVector(width));
- }
-
- public BitVector wireValuesExcludingMe()
- {
- BitVectorMutator mutator = BitVectorMutator.empty();
- boolean modified = false;
- for (ReadWriteEnd wireEnd : inputs)
- {
- if (wireEnd == this)
- continue;
- modified = true;
- mutator.join(wireEnd.inputValues);
- }
- if (!modified)
- mutator.join(BitVector.of(Bit.Z, width));
- return mutator.toBitVector();
- }
-
- @Override
- public String toString()
- {
- return inputValues.toString();
- }
-
- @Override
- public void close()
- {
- super.close();
- open = false;
- }
-
- void setWriting(boolean isWriting)
- {
- if (this.isWriting != isWriting)
- {
- this.isWriting = isWriting;
- if (isWriting)
- inputs.add(this);
- else
- inputs.remove(this);
- Wire.this.recalculateValuesWithoutFusions();
- }
- }
-
- boolean isWriting()
- {
- return isWriting;
- }
- }
-
- @Override
- public String toString()
- {
- String name = this.name == null ? String.format("0x%08x", hashCode()) : this.name;
- return String.format("wire %s value: %s inputs: %s", name, getValues(), inputs);
- }
-
- public static ReadEnd[] extractEnds(Wire[] w)
- {
- ReadEnd[] inputs = new ReadEnd[w.length];
- for (int i = 0; i < w.length; i++)
- inputs[i] = w[i].createReadWriteEnd();
- return inputs;
- }
-
- /**
- *
- * Fuses two wires together. If the bits change in one Wire, the other is changed accordingly immediately. Warning: The bits are
- * permanently fused together.
- *
- * @param a The {@link Wire} to be fused with b
- * @param b The {@link Wire} to be fused with a
- */
- public static void fuse(Wire a, Wire b)
- {
- fuse(a, b, 0, 0, a.width);
- }
-
- /**
- * Fuses the selected bits of two wires together. If the bits change in one Wire, the other is changed accordingly immediately. Warning:
- * The bits are permanently fused together.
- *
- * @param a The {@link Wire} to be (partially) fused with b
- * @param b The {@link Wire} to be (partially) fused with a
- * @param fromA The first bit of {@link Wire} a to be fused
- * @param fromB The first bit of {@link Wire} b to be fused
- * @param width The amount of bits to fuse
- */
- public static void fuse(Wire a, Wire b, int fromA, int fromB, int width)
- {
- // iterate in this direction to be fail-fast (rely on the checks in fuse(Wire, Wire, int, int)
- for (int i = width - 1; i >= 0; i--)
- fuse(a, b, fromA + i, fromB + i);
- }
-
- /**
- * Fuses one bit of two wires together. If this bit changes in one Wire, the other is changed accordingly immediately. Warning: The bits
- * are permanently fused together.
- *
- * @param a The {@link Wire} to be (partially) fused with b
- * @param b The {@link Wire} to be (partially) fused with a
- * @param bitA The bit of {@link Wire} a to be fused
- * @param bitB The bit of {@link Wire} b to be fused
- */
- public static void fuse(Wire a, Wire b, int bitA, int bitB)
- {
- if (bitA >= a.width)
- throw new IllegalArgumentException("No bit " + bitA + " in " + a + " (width " + a.width + ")");
- if (bitB >= b.width)
- throw new IllegalArgumentException("No bit " + bitB + " in " + b + " (width " + b.width + ")");
- if (a.fusedBits == null)
- a.fusedBits = new FusedBit[a.width];
- if (b.fusedBits == null)
- b.fusedBits = new FusedBit[b.width];
- FusedBit oldFusionA = a.fusedBits[bitA];
- FusedBit oldFusionB = b.fusedBits[bitB];
- if (oldFusionA == null)
- if (oldFusionB == null)
- {
- FusedBit fusion = new FusedBit();
- fusion.addParticipatingWireBit(a, bitA);
- fusion.addParticipatingWireBit(b, bitB);
- } else
- oldFusionB.addParticipatingWireBit(a, bitA);
- else if (oldFusionB == null)
- oldFusionA.addParticipatingWireBit(b, bitB);
- else
- oldFusionA.mergeOtherIntoThis(oldFusionB);
- }
-
- private static class FusedBit
- {
- private final List<WireBit> participatingWireBits;
-
- public FusedBit()
- {
- this.participatingWireBits = new ArrayList<>();
- }
-
- public void addParticipatingWireBit(Wire w, int bit)
- {
- addParticipatingWireBit(new WireBit(w, bit));
- }
-
- private void addParticipatingWireBit(WireBit wb)
- {
- wb.wire.fusedBits[wb.bit] = this;
- participatingWireBits.add(wb);
- wb.wire.invalidateCachedValuesForAllFusedWires();
- }
-
- public void mergeOtherIntoThis(FusedBit other)
- {
- for (WireBit wb : other.participatingWireBits)
- addParticipatingWireBit(wb);
- }
-
- public void invalidateCachedValuesForAllParticipatingWires()
- {
- for (WireBit wb : participatingWireBits)
- wb.wire.invalidateCachedValues();
- }
-
- public Bit getValue()
- {
- Bit result = null;
- for (WireBit wb : participatingWireBits)
- if (!wb.wire.inputs.isEmpty())
- {
- Bit bit = wb.wire.bitsWithoutFusions[wb.bit];
- result = result == null ? bit : result.join(bit);
- }
- return result == null ? U : result;
- }
- }
-
- private static class WireBit
- {
- public final Wire wire;
- public final int bit;
-
- public WireBit(Wire wire, int bit)
- {
- this.wire = wire;
- this.bit = bit;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.core.tests;
-
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-
-import net.mograsim.logic.core.components.Demux;
-import net.mograsim.logic.core.components.Mux;
-import net.mograsim.logic.core.components.TriStateBuffer;
-import net.mograsim.logic.core.components.UnidirectionalMerger;
-import net.mograsim.logic.core.components.UnidirectionalSplitter;
-import net.mograsim.logic.core.components.gates.AndGate;
-import net.mograsim.logic.core.components.gates.NandGate;
-import net.mograsim.logic.core.components.gates.NorGate;
-import net.mograsim.logic.core.components.gates.NotGate;
-import net.mograsim.logic.core.components.gates.OrGate;
-import net.mograsim.logic.core.components.gates.XorGate;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-
-@SuppressWarnings("unused")
-class ComponentTest
-{
- private Timeline t = new Timeline(11);
-
- @BeforeEach
- void resetTimeline()
- {
- t.reset();
- }
-
- @Test
- void circuitExampleTest()
- {
- Wire a = new Wire(t, 1, 1), b = new Wire(t, 1, 1), c = new Wire(t, 1, 10), d = new Wire(t, 2, 1), e = new Wire(t, 1, 1),
- f = new Wire(t, 1, 1), g = new Wire(t, 1, 1), h = new Wire(t, 2, 1), i = new Wire(t, 2, 1), j = new Wire(t, 1, 1),
- k = new Wire(t, 1, 1);
- new AndGate(t, 1, f.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd());
- new NotGate(t, 1, f.createReadOnlyEnd(), g.createReadWriteEnd());
- new UnidirectionalMerger(t, h.createReadWriteEnd(), c.createReadOnlyEnd(), g.createReadOnlyEnd());
- new Mux(t, 1, i.createReadWriteEnd(), e.createReadOnlyEnd(), h.createReadOnlyEnd(), d.createReadOnlyEnd());
- new UnidirectionalSplitter(t, i.createReadOnlyEnd(), k.createReadWriteEnd(), j.createReadWriteEnd());
-
- a.createReadWriteEnd().feedSignals(Bit.ZERO);
- b.createReadWriteEnd().feedSignals(Bit.ONE);
- c.createReadWriteEnd().feedSignals(Bit.ZERO);
- d.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE);
- e.createReadWriteEnd().feedSignals(Bit.ZERO);
-
- t.executeAll();
-
- assertEquals(Bit.ONE, j.getValue());
- assertEquals(Bit.ZERO, k.getValue());
- }
-
- @Test
- void splitterTest()
- {
- Wire a = new Wire(t, 3, 1), b = new Wire(t, 2, 1), c = new Wire(t, 3, 1), in = new Wire(t, 8, 1);
- in.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
- new UnidirectionalSplitter(t, in.createReadOnlyEnd(), a.createReadWriteEnd(), b.createReadWriteEnd(), c.createReadWriteEnd());
-
- t.executeAll();
-
- assertBitArrayEquals(a.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO);
- assertBitArrayEquals(b.getValues(), Bit.ONE, Bit.ZERO);
- assertBitArrayEquals(c.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE);
- }
-
- @Test
- void mergerTest()
- {
- Wire a = new Wire(t, 3, 1), b = new Wire(t, 2, 1), c = new Wire(t, 3, 1), out = new Wire(t, 8, 1);
- a.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO);
- b.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO);
- c.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE);
-
- new UnidirectionalMerger(t, out.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(), c.createReadOnlyEnd());
-
- t.executeAll();
-
- assertBitArrayEquals(out.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
- }
-
- @Test
- void fusionTest1()
- {
- Wire a = new Wire(t, 3, 1), b = new Wire(t, 2, 1), c = new Wire(t, 3, 1), out = new Wire(t, 8, 1);
- Wire.fuse(a, out, 0, 0, a.width);
- Wire.fuse(b, out, 0, a.width, b.width);
- Wire.fuse(c, out, 0, a.width + b.width, c.width);
- ReadWriteEnd rA = a.createReadWriteEnd();
- rA.feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO);
- ReadWriteEnd rB = b.createReadWriteEnd();
- rB.feedSignals(Bit.ONE, Bit.ZERO);
- ReadWriteEnd rC = c.createReadWriteEnd();
- rC.feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE);
-
- t.executeAll();
- assertBitArrayEquals(out.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
- out.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
- t.executeAll();
- assertBitArrayEquals(rA.getValues(), Bit.X, Bit.X, Bit.X);
- assertBitArrayEquals(rB.getValues(), Bit.X, Bit.X);
- assertBitArrayEquals(rC.getValues(), Bit.X, Bit.X, Bit.X);
- rA.clearSignals();
- rB.clearSignals();
- rC.clearSignals();
- t.executeAll();
- assertBitArrayEquals(rA.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE);
- assertBitArrayEquals(rB.getValues(), Bit.ZERO, Bit.ONE);
- assertBitArrayEquals(rC.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO);
- }
-
- @Test
- void fusionTest2()
- {
- Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1);
- Wire.fuse(a, b);
- ReadWriteEnd rw = a.createReadWriteEnd();
- t.executeAll();
- assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U);
-
- rw.feedSignals(Bit.ONE, Bit.U, Bit.Z);
- t.executeAll();
- assertBitArrayEquals(b.getValues(), Bit.ONE, Bit.U, Bit.Z);
- }
-
- @Test
- void fusionTest3()
- {
- Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1);
- a.createReadWriteEnd().feedSignals(Bit.Z, Bit.U, Bit.X);
- t.executeAll();
- Wire.fuse(a, b);
- t.executeAll();
- assertBitArrayEquals(b.getValues(), Bit.Z, Bit.U, Bit.X);
- }
-
- @Test
- void fusionTest4()
- {
- Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1);
- a.createReadWriteEnd();
- t.executeAll();
-
- Wire.fuse(a, b);
- t.executeAll();
- assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U);
- }
-
-// @Test
-// void connectorTest()
-// {
-// t.reset();
-// Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1);
-// new Connector(t, a.createReadWriteEnd(), b.createReadWriteEnd()).connect();
-//// b.createReadWriteEnd();
-// a.createReadWriteEnd();
-// t.executeAll();
-// assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U);
-// }
-
- @Test
- void triStateBufferTest()
- {
- Wire a = new Wire(t, 1, 1), b = new Wire(t, 1, 1), en = new Wire(t, 1, 1), notEn = new Wire(t, 1, 1);
- new NotGate(t, 1, en.createReadOnlyEnd(), notEn.createReadWriteEnd());
- new TriStateBuffer(t, 1, a.createReadOnlyEnd(), b.createReadWriteEnd(), en.createReadOnlyEnd());
- new TriStateBuffer(t, 1, b.createReadOnlyEnd(), a.createReadWriteEnd(), notEn.createReadOnlyEnd());
-
- ReadWriteEnd enI = en.createReadWriteEnd(), aI = a.createReadWriteEnd(), bI = b.createReadWriteEnd();
- enI.feedSignals(Bit.ONE);
- aI.feedSignals(Bit.ONE);
- bI.feedSignals(Bit.Z);
-
- t.executeAll();
-
- assertEquals(Bit.ONE, b.getValue());
-
- bI.feedSignals(Bit.ZERO);
-
- t.executeAll();
-
- assertEquals(Bit.X, b.getValue());
- assertEquals(Bit.ONE, a.getValue());
-
- aI.clearSignals();
- enI.feedSignals(Bit.ZERO);
-
- t.executeAll();
-
- assertEquals(Bit.ZERO, a.getValue());
-
- }
-
- @Test
- void muxTest()
- {
- Wire a = new Wire(t, 4, 3), b = new Wire(t, 4, 6), c = new Wire(t, 4, 4), select = new Wire(t, 2, 5), out = new Wire(t, 4, 1);
- ReadWriteEnd selectIn = select.createReadWriteEnd();
-
- selectIn.feedSignals(Bit.ZERO, Bit.ZERO);
- a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
- c.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
-
- new Mux(t, 1, out.createReadWriteEnd(), select.createReadOnlyEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(),
- c.createReadOnlyEnd());
- t.executeAll();
-
- assertBitArrayEquals(out.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
- selectIn.feedSignals(Bit.ZERO, Bit.ONE);
- t.executeAll();
-
- assertBitArrayEquals(out.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
-
- selectIn.feedSignals(Bit.ONE, Bit.ONE);
- t.executeAll();
-
- assertBitArrayEquals(out.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);
-
- }
-
- @Test
- void demuxTest()
- {
- Wire a = new Wire(t, 4, 3), b = new Wire(t, 4, 6), c = new Wire(t, 4, 4), select = new Wire(t, 2, 5), in = new Wire(t, 4, 1);
- ReadWriteEnd selectIn = select.createReadWriteEnd();
-
- selectIn.feedSignals(Bit.ZERO, Bit.ZERO);
- in.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
-
- new Demux(t, 1, in.createReadOnlyEnd(), select.createReadOnlyEnd(), a.createReadWriteEnd(), b.createReadWriteEnd(),
- c.createReadWriteEnd());
- t.executeAll();
-
- assertBitArrayEquals(a.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
- assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);
- assertBitArrayEquals(c.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);
- selectIn.feedSignals(Bit.ZERO, Bit.ONE);
- t.executeAll();
-
- assertBitArrayEquals(a.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);
- assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);
- assertBitArrayEquals(c.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
-
- selectIn.feedSignals(Bit.ONE, Bit.ONE);
- t.executeAll();
-
- assertBitArrayEquals(a.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);
- assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);
- assertBitArrayEquals(c.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);
-
- }
-
- @Test
- void andTest()
- {
- Wire a = new Wire(t, 4, 1), b = new Wire(t, 4, 3), c = new Wire(t, 4, 1);
- new AndGate(t, 1, c.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd());
- a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
- b.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
-
- t.executeAll();
-
- assertBitArrayEquals(c.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ZERO);
- }
-
- @Test
- void orTest()
- {
- Wire a = new Wire(t, 4, 1), b = new Wire(t, 4, 3), c = new Wire(t, 4, 1);
- new OrGate(t, 1, c.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd());
- a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
- b.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
-
- t.executeAll();
-
- assertBitArrayEquals(c.getValues(), Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ONE);
- }
-
- @Test
- void nandTest()
- {
- Wire a = new Wire(t, 4, 1), b = new Wire(t, 4, 3), c = new Wire(t, 4, 1), d = new Wire(t, 4, 1);
- new NandGate(t, 1, d.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(), c.createReadOnlyEnd());
- a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
- b.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
- c.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
-
- t.executeAll();
-
- assertBitArrayEquals(d.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ONE);
- }
-
- @Test
- void norTest()
- {
- Wire a = new Wire(t, 4, 1), b = new Wire(t, 4, 3), c = new Wire(t, 4, 1), d = new Wire(t, 4, 1);
- new NorGate(t, 1, d.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(), c.createReadOnlyEnd());
- a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
- b.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
- c.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
-
- t.executeAll();
-
- assertBitArrayEquals(d.getValues(), Bit.ZERO, Bit.ZERO, Bit.ONE, Bit.ZERO);
- }
-
- @Test
- void xorTest()
- {
- Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 2), c = new Wire(t, 3, 1), d = new Wire(t, 3, 1);
- new XorGate(t, 1, d.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(), c.createReadOnlyEnd());
- a.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ONE);
- b.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE);
- c.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE);
-
- t.executeAll();
-
- assertBitArrayEquals(d.getValues(), Bit.ZERO, Bit.ONE, Bit.ONE);
- }
-
- @Test
- void notTest()
- {
- Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 2);
- new NotGate(t, 1, a.createReadOnlyEnd(), b.createReadWriteEnd());
- a.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ONE);
-
- t.executeAll();
-
- assertBitArrayEquals(b.getValues(), Bit.ONE, Bit.ZERO, Bit.ZERO);
- }
-
- @Test
- void rsLatchCircuitTest()
- {
- Wire r = new Wire(t, 1, 1), s = new Wire(t, 1, 1), t1 = new Wire(t, 1, 15), t2 = new Wire(t, 1, 1), q = new Wire(t, 1, 1),
- nq = new Wire(t, 1, 1);
-
- new OrGate(t, 1, t2.createReadWriteEnd(), r.createReadOnlyEnd(), nq.createReadOnlyEnd());
- new OrGate(t, 1, t1.createReadWriteEnd(), s.createReadOnlyEnd(), q.createReadOnlyEnd());
- new NotGate(t, 1, t2.createReadOnlyEnd(), q.createReadWriteEnd());
- new NotGate(t, 1, t1.createReadOnlyEnd(), nq.createReadWriteEnd());
-
- ReadWriteEnd sIn = s.createReadWriteEnd(), rIn = r.createReadWriteEnd();
-
- sIn.feedSignals(Bit.ONE);
- rIn.feedSignals(Bit.ZERO);
-
- t.executeAll();
-
- assertEquals(Bit.ONE, q.getValue());
- assertEquals(Bit.ZERO, nq.getValue());
-
- sIn.feedSignals(Bit.ZERO);
-
- t.executeAll();
- assertEquals(Bit.ONE, q.getValue());
- assertEquals(Bit.ZERO, nq.getValue());
-
- rIn.feedSignals(Bit.ONE);
-
- t.executeAll();
-
- assertEquals(Bit.ZERO, q.getValue());
- assertEquals(Bit.ONE, nq.getValue());
- }
-
- @Test
- void numericValueTest()
- {
- Wire a = new Wire(t, 4, 1);
- a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ONE, Bit.ONE);
-
- t.executeAll();
-
- assertEquals(15, a.getUnsignedValue());
- assertEquals(-1, a.getSignedValue());
- }
-
- boolean flag = false;
-
- @Test
- void simpleTimelineTest()
- {
- Timeline t = new Timeline(3);
- flag = false;
- t.addEvent((e) ->
- {
- if (!flag)
- fail("Events executed out of order!");
- flag = false;
- }, 15);
- t.addEvent((e) ->
- {
- if (flag)
- fail("Events executed out of order!");
- flag = true;
- }, 10);
- t.addEvent((e) ->
- {
- if (flag)
- fail("Events executed out of order!");
- flag = true;
- }, 20);
- t.addEvent((e) ->
- {
- fail("Only supposed to execute until timestamp 20, not 25");
- }, 25);
-
- t.executeUntil(t.laterThan(20), 100);
-
- if (!flag)
- fail("Not all events were executed in order!");
- }
-
- // TODO: Adapt this test, now that update notifications are issued whenever any input to a wire changes
- @Disabled("Out of date")
- @Test
- void multipleInputs()
- {
- Wire w = new Wire(t, 2, 1);
- ReadWriteEnd wI1 = w.createReadWriteEnd(), wI2 = w.createReadWriteEnd();
- wI1.feedSignals(Bit.ONE, Bit.Z);
- wI2.feedSignals(Bit.Z, Bit.X);
- t.executeAll();
- assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.X);
-
- wI2.feedSignals(Bit.ZERO, Bit.Z);
- t.executeAll();
- assertBitArrayEquals(w.getValues(), Bit.X, Bit.Z);
-
- wI2.feedSignals(Bit.Z, Bit.Z);
- t.executeAll();
- assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.Z);
-
- wI2.feedSignals(Bit.ONE, Bit.Z);
- ReadEnd rE = w.createReadOnlyEnd();
- rE.registerObserver((i) -> fail("WireEnd notified observer, although value did not change."));
- t.executeAll();
- rE.close();
- wI1.feedSignals(Bit.X, Bit.X);
- t.executeAll();
- wI1.registerObserver((i) -> fail("WireEnd notified observer, although it was closed."));
- wI1.close();
- assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.Z);
- }
-
- private static void assertBitArrayEquals(BitVector actual, Bit... expected)
- {
- assertArrayEquals(expected, actual.getBits());
- }
-}
--- /dev/null
+package net.mograsim.logic.core.tests;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import net.mograsim.logic.core.components.CoreDemux;
+import net.mograsim.logic.core.components.CoreMux;
+import net.mograsim.logic.core.components.CoreTriStateBuffer;
+import net.mograsim.logic.core.components.CoreUnidirectionalMerger;
+import net.mograsim.logic.core.components.CoreUnidirectionalSplitter;
+import net.mograsim.logic.core.components.gates.CoreAndGate;
+import net.mograsim.logic.core.components.gates.CoreNandGate;
+import net.mograsim.logic.core.components.gates.CoreNorGate;
+import net.mograsim.logic.core.components.gates.CoreNotGate;
+import net.mograsim.logic.core.components.gates.CoreOrGate;
+import net.mograsim.logic.core.components.gates.CoreXorGate;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+
+@SuppressWarnings("unused")
+class CoreComponentTest
+{
+ private Timeline t = new Timeline(11);
+
+ @BeforeEach
+ void resetTimeline()
+ {
+ t.reset();
+ }
+
+ @Test
+ void circuitExampleTest()
+ {
+ CoreWire a = new CoreWire(t, 1, 1), b = new CoreWire(t, 1, 1), c = new CoreWire(t, 1, 10), d = new CoreWire(t, 2, 1), e = new CoreWire(t, 1, 1),
+ f = new CoreWire(t, 1, 1), g = new CoreWire(t, 1, 1), h = new CoreWire(t, 2, 1), i = new CoreWire(t, 2, 1), j = new CoreWire(t, 1, 1),
+ k = new CoreWire(t, 1, 1);
+ new CoreAndGate(t, 1, f.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd());
+ new CoreNotGate(t, 1, f.createReadOnlyEnd(), g.createReadWriteEnd());
+ new CoreUnidirectionalMerger(t, h.createReadWriteEnd(), c.createReadOnlyEnd(), g.createReadOnlyEnd());
+ new CoreMux(t, 1, i.createReadWriteEnd(), e.createReadOnlyEnd(), h.createReadOnlyEnd(), d.createReadOnlyEnd());
+ new CoreUnidirectionalSplitter(t, i.createReadOnlyEnd(), k.createReadWriteEnd(), j.createReadWriteEnd());
+
+ a.createReadWriteEnd().feedSignals(Bit.ZERO);
+ b.createReadWriteEnd().feedSignals(Bit.ONE);
+ c.createReadWriteEnd().feedSignals(Bit.ZERO);
+ d.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE);
+ e.createReadWriteEnd().feedSignals(Bit.ZERO);
+
+ t.executeAll();
+
+ assertEquals(Bit.ONE, j.getValue());
+ assertEquals(Bit.ZERO, k.getValue());
+ }
+
+ @Test
+ void splitterTest()
+ {
+ CoreWire a = new CoreWire(t, 3, 1), b = new CoreWire(t, 2, 1), c = new CoreWire(t, 3, 1), in = new CoreWire(t, 8, 1);
+ in.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
+ new CoreUnidirectionalSplitter(t, in.createReadOnlyEnd(), a.createReadWriteEnd(), b.createReadWriteEnd(), c.createReadWriteEnd());
+
+ t.executeAll();
+
+ assertBitArrayEquals(a.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO);
+ assertBitArrayEquals(b.getValues(), Bit.ONE, Bit.ZERO);
+ assertBitArrayEquals(c.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE);
+ }
+
+ @Test
+ void mergerTest()
+ {
+ CoreWire a = new CoreWire(t, 3, 1), b = new CoreWire(t, 2, 1), c = new CoreWire(t, 3, 1), out = new CoreWire(t, 8, 1);
+ a.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO);
+ b.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO);
+ c.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE);
+
+ new CoreUnidirectionalMerger(t, out.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(), c.createReadOnlyEnd());
+
+ t.executeAll();
+
+ assertBitArrayEquals(out.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
+ }
+
+ @Test
+ void fusionTest1()
+ {
+ CoreWire a = new CoreWire(t, 3, 1), b = new CoreWire(t, 2, 1), c = new CoreWire(t, 3, 1), out = new CoreWire(t, 8, 1);
+ CoreWire.fuse(a, out, 0, 0, a.width);
+ CoreWire.fuse(b, out, 0, a.width, b.width);
+ CoreWire.fuse(c, out, 0, a.width + b.width, c.width);
+ ReadWriteEnd rA = a.createReadWriteEnd();
+ rA.feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO);
+ ReadWriteEnd rB = b.createReadWriteEnd();
+ rB.feedSignals(Bit.ONE, Bit.ZERO);
+ ReadWriteEnd rC = c.createReadWriteEnd();
+ rC.feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE);
+
+ t.executeAll();
+ assertBitArrayEquals(out.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
+ out.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
+ t.executeAll();
+ assertBitArrayEquals(rA.getValues(), Bit.X, Bit.X, Bit.X);
+ assertBitArrayEquals(rB.getValues(), Bit.X, Bit.X);
+ assertBitArrayEquals(rC.getValues(), Bit.X, Bit.X, Bit.X);
+ rA.clearSignals();
+ rB.clearSignals();
+ rC.clearSignals();
+ t.executeAll();
+ assertBitArrayEquals(rA.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE);
+ assertBitArrayEquals(rB.getValues(), Bit.ZERO, Bit.ONE);
+ assertBitArrayEquals(rC.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO);
+ }
+
+ @Test
+ void fusionTest2()
+ {
+ CoreWire a = new CoreWire(t, 3, 1), b = new CoreWire(t, 3, 1);
+ CoreWire.fuse(a, b);
+ ReadWriteEnd rw = a.createReadWriteEnd();
+ t.executeAll();
+ assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U);
+
+ rw.feedSignals(Bit.ONE, Bit.U, Bit.Z);
+ t.executeAll();
+ assertBitArrayEquals(b.getValues(), Bit.ONE, Bit.U, Bit.Z);
+ }
+
+ @Test
+ void fusionTest3()
+ {
+ CoreWire a = new CoreWire(t, 3, 1), b = new CoreWire(t, 3, 1);
+ a.createReadWriteEnd().feedSignals(Bit.Z, Bit.U, Bit.X);
+ t.executeAll();
+ CoreWire.fuse(a, b);
+ t.executeAll();
+ assertBitArrayEquals(b.getValues(), Bit.Z, Bit.U, Bit.X);
+ }
+
+ @Test
+ void fusionTest4()
+ {
+ CoreWire a = new CoreWire(t, 3, 1), b = new CoreWire(t, 3, 1);
+ a.createReadWriteEnd();
+ t.executeAll();
+
+ CoreWire.fuse(a, b);
+ t.executeAll();
+ assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U);
+ }
+
+// @Test
+// void connectorTest()
+// {
+// t.reset();
+// Wire a = new Wire(t, 3, 1), b = new Wire(t, 3, 1);
+// new Connector(t, a.createReadWriteEnd(), b.createReadWriteEnd()).connect();
+//// b.createReadWriteEnd();
+// a.createReadWriteEnd();
+// t.executeAll();
+// assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U);
+// }
+
+ @Test
+ void triStateBufferTest()
+ {
+ CoreWire a = new CoreWire(t, 1, 1), b = new CoreWire(t, 1, 1), en = new CoreWire(t, 1, 1), notEn = new CoreWire(t, 1, 1);
+ new CoreNotGate(t, 1, en.createReadOnlyEnd(), notEn.createReadWriteEnd());
+ new CoreTriStateBuffer(t, 1, a.createReadOnlyEnd(), b.createReadWriteEnd(), en.createReadOnlyEnd());
+ new CoreTriStateBuffer(t, 1, b.createReadOnlyEnd(), a.createReadWriteEnd(), notEn.createReadOnlyEnd());
+
+ ReadWriteEnd enI = en.createReadWriteEnd(), aI = a.createReadWriteEnd(), bI = b.createReadWriteEnd();
+ enI.feedSignals(Bit.ONE);
+ aI.feedSignals(Bit.ONE);
+ bI.feedSignals(Bit.Z);
+
+ t.executeAll();
+
+ assertEquals(Bit.ONE, b.getValue());
+
+ bI.feedSignals(Bit.ZERO);
+
+ t.executeAll();
+
+ assertEquals(Bit.X, b.getValue());
+ assertEquals(Bit.ONE, a.getValue());
+
+ aI.clearSignals();
+ enI.feedSignals(Bit.ZERO);
+
+ t.executeAll();
+
+ assertEquals(Bit.ZERO, a.getValue());
+
+ }
+
+ @Test
+ void muxTest()
+ {
+ CoreWire a = new CoreWire(t, 4, 3), b = new CoreWire(t, 4, 6), c = new CoreWire(t, 4, 4), select = new CoreWire(t, 2, 5), out = new CoreWire(t, 4, 1);
+ ReadWriteEnd selectIn = select.createReadWriteEnd();
+
+ selectIn.feedSignals(Bit.ZERO, Bit.ZERO);
+ a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
+ c.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
+
+ new CoreMux(t, 1, out.createReadWriteEnd(), select.createReadOnlyEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(),
+ c.createReadOnlyEnd());
+ t.executeAll();
+
+ assertBitArrayEquals(out.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
+ selectIn.feedSignals(Bit.ZERO, Bit.ONE);
+ t.executeAll();
+
+ assertBitArrayEquals(out.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
+
+ selectIn.feedSignals(Bit.ONE, Bit.ONE);
+ t.executeAll();
+
+ assertBitArrayEquals(out.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);
+
+ }
+
+ @Test
+ void demuxTest()
+ {
+ CoreWire a = new CoreWire(t, 4, 3), b = new CoreWire(t, 4, 6), c = new CoreWire(t, 4, 4), select = new CoreWire(t, 2, 5), in = new CoreWire(t, 4, 1);
+ ReadWriteEnd selectIn = select.createReadWriteEnd();
+
+ selectIn.feedSignals(Bit.ZERO, Bit.ZERO);
+ in.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
+
+ new CoreDemux(t, 1, in.createReadOnlyEnd(), select.createReadOnlyEnd(), a.createReadWriteEnd(), b.createReadWriteEnd(),
+ c.createReadWriteEnd());
+ t.executeAll();
+
+ assertBitArrayEquals(a.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
+ assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);
+ assertBitArrayEquals(c.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);
+ selectIn.feedSignals(Bit.ZERO, Bit.ONE);
+ t.executeAll();
+
+ assertBitArrayEquals(a.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);
+ assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);
+ assertBitArrayEquals(c.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);
+
+ selectIn.feedSignals(Bit.ONE, Bit.ONE);
+ t.executeAll();
+
+ assertBitArrayEquals(a.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);
+ assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);
+ assertBitArrayEquals(c.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);
+
+ }
+
+ @Test
+ void andTest()
+ {
+ CoreWire a = new CoreWire(t, 4, 1), b = new CoreWire(t, 4, 3), c = new CoreWire(t, 4, 1);
+ new CoreAndGate(t, 1, c.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd());
+ a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
+ b.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
+
+ t.executeAll();
+
+ assertBitArrayEquals(c.getValues(), Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ZERO);
+ }
+
+ @Test
+ void orTest()
+ {
+ CoreWire a = new CoreWire(t, 4, 1), b = new CoreWire(t, 4, 3), c = new CoreWire(t, 4, 1);
+ new CoreOrGate(t, 1, c.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd());
+ a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
+ b.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
+
+ t.executeAll();
+
+ assertBitArrayEquals(c.getValues(), Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ONE);
+ }
+
+ @Test
+ void nandTest()
+ {
+ CoreWire a = new CoreWire(t, 4, 1), b = new CoreWire(t, 4, 3), c = new CoreWire(t, 4, 1), d = new CoreWire(t, 4, 1);
+ new CoreNandGate(t, 1, d.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(), c.createReadOnlyEnd());
+ a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
+ b.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
+ c.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
+
+ t.executeAll();
+
+ assertBitArrayEquals(d.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ONE);
+ }
+
+ @Test
+ void norTest()
+ {
+ CoreWire a = new CoreWire(t, 4, 1), b = new CoreWire(t, 4, 3), c = new CoreWire(t, 4, 1), d = new CoreWire(t, 4, 1);
+ new CoreNorGate(t, 1, d.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(), c.createReadOnlyEnd());
+ a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
+ b.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);
+ c.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ZERO, Bit.ZERO);
+
+ t.executeAll();
+
+ assertBitArrayEquals(d.getValues(), Bit.ZERO, Bit.ZERO, Bit.ONE, Bit.ZERO);
+ }
+
+ @Test
+ void xorTest()
+ {
+ CoreWire a = new CoreWire(t, 3, 1), b = new CoreWire(t, 3, 2), c = new CoreWire(t, 3, 1), d = new CoreWire(t, 3, 1);
+ new CoreXorGate(t, 1, d.createReadWriteEnd(), a.createReadOnlyEnd(), b.createReadOnlyEnd(), c.createReadOnlyEnd());
+ a.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ONE);
+ b.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE);
+ c.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE);
+
+ t.executeAll();
+
+ assertBitArrayEquals(d.getValues(), Bit.ZERO, Bit.ONE, Bit.ONE);
+ }
+
+ @Test
+ void notTest()
+ {
+ CoreWire a = new CoreWire(t, 3, 1), b = new CoreWire(t, 3, 2);
+ new CoreNotGate(t, 1, a.createReadOnlyEnd(), b.createReadWriteEnd());
+ a.createReadWriteEnd().feedSignals(Bit.ZERO, Bit.ONE, Bit.ONE);
+
+ t.executeAll();
+
+ assertBitArrayEquals(b.getValues(), Bit.ONE, Bit.ZERO, Bit.ZERO);
+ }
+
+ @Test
+ void rsLatchCircuitTest()
+ {
+ CoreWire r = new CoreWire(t, 1, 1), s = new CoreWire(t, 1, 1), t1 = new CoreWire(t, 1, 15), t2 = new CoreWire(t, 1, 1), q = new CoreWire(t, 1, 1),
+ nq = new CoreWire(t, 1, 1);
+
+ new CoreOrGate(t, 1, t2.createReadWriteEnd(), r.createReadOnlyEnd(), nq.createReadOnlyEnd());
+ new CoreOrGate(t, 1, t1.createReadWriteEnd(), s.createReadOnlyEnd(), q.createReadOnlyEnd());
+ new CoreNotGate(t, 1, t2.createReadOnlyEnd(), q.createReadWriteEnd());
+ new CoreNotGate(t, 1, t1.createReadOnlyEnd(), nq.createReadWriteEnd());
+
+ ReadWriteEnd sIn = s.createReadWriteEnd(), rIn = r.createReadWriteEnd();
+
+ sIn.feedSignals(Bit.ONE);
+ rIn.feedSignals(Bit.ZERO);
+
+ t.executeAll();
+
+ assertEquals(Bit.ONE, q.getValue());
+ assertEquals(Bit.ZERO, nq.getValue());
+
+ sIn.feedSignals(Bit.ZERO);
+
+ t.executeAll();
+ assertEquals(Bit.ONE, q.getValue());
+ assertEquals(Bit.ZERO, nq.getValue());
+
+ rIn.feedSignals(Bit.ONE);
+
+ t.executeAll();
+
+ assertEquals(Bit.ZERO, q.getValue());
+ assertEquals(Bit.ONE, nq.getValue());
+ }
+
+ @Test
+ void numericValueTest()
+ {
+ CoreWire a = new CoreWire(t, 4, 1);
+ a.createReadWriteEnd().feedSignals(Bit.ONE, Bit.ONE, Bit.ONE, Bit.ONE);
+
+ t.executeAll();
+
+ assertEquals(15, a.getUnsignedValue());
+ assertEquals(-1, a.getSignedValue());
+ }
+
+ boolean flag = false;
+
+ @Test
+ void simpleTimelineTest()
+ {
+ Timeline t = new Timeline(3);
+ flag = false;
+ t.addEvent((e) ->
+ {
+ if (!flag)
+ fail("Events executed out of order!");
+ flag = false;
+ }, 15);
+ t.addEvent((e) ->
+ {
+ if (flag)
+ fail("Events executed out of order!");
+ flag = true;
+ }, 10);
+ t.addEvent((e) ->
+ {
+ if (flag)
+ fail("Events executed out of order!");
+ flag = true;
+ }, 20);
+ t.addEvent((e) ->
+ {
+ fail("Only supposed to execute until timestamp 20, not 25");
+ }, 25);
+
+ t.executeUntil(t.laterThan(20), 100);
+
+ if (!flag)
+ fail("Not all events were executed in order!");
+ }
+
+ // TODO: Adapt this test, now that update notifications are issued whenever any input to a wire changes
+ @Disabled("Out of date")
+ @Test
+ void multipleInputs()
+ {
+ CoreWire w = new CoreWire(t, 2, 1);
+ ReadWriteEnd wI1 = w.createReadWriteEnd(), wI2 = w.createReadWriteEnd();
+ wI1.feedSignals(Bit.ONE, Bit.Z);
+ wI2.feedSignals(Bit.Z, Bit.X);
+ t.executeAll();
+ assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.X);
+
+ wI2.feedSignals(Bit.ZERO, Bit.Z);
+ t.executeAll();
+ assertBitArrayEquals(w.getValues(), Bit.X, Bit.Z);
+
+ wI2.feedSignals(Bit.Z, Bit.Z);
+ t.executeAll();
+ assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.Z);
+
+ wI2.feedSignals(Bit.ONE, Bit.Z);
+ ReadEnd rE = w.createReadOnlyEnd();
+ rE.registerObserver((i) -> fail("WireEnd notified observer, although value did not change."));
+ t.executeAll();
+ rE.close();
+ wI1.feedSignals(Bit.X, Bit.X);
+ t.executeAll();
+ wI1.registerObserver((i) -> fail("WireEnd notified observer, although it was closed."));
+ wI1.close();
+ assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.Z);
+ }
+
+ private static void assertBitArrayEquals(BitVector actual, Bit... expected)
+ {
+ assertArrayEquals(expected, actual.getBits());
+ }
+}
import javax.swing.JPanel;
import javax.swing.WindowConstants;
-import net.mograsim.logic.core.components.ManualSwitch;
-import net.mograsim.logic.core.components.gates.NotGate;
-import net.mograsim.logic.core.components.gates.OrGate;
+import net.mograsim.logic.core.components.CoreManualSwitch;
+import net.mograsim.logic.core.components.gates.CoreNotGate;
+import net.mograsim.logic.core.components.gates.CoreOrGate;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.core.timeline.Timeline.ExecutionResult;
-import net.mograsim.logic.core.wires.Wire;
+import net.mograsim.logic.core.wires.CoreWire;
public class GUITest extends JPanel
{
private Timeline t = new Timeline(11);
- Wire r = new Wire(t, 1, WIRE_DELAY);
- Wire s = new Wire(t, 1, WIRE_DELAY);
- Wire t1 = new Wire(t, 1, WIRE_DELAY);
- Wire t2 = new Wire(t, 1, WIRE_DELAY);
- Wire q = new Wire(t, 1, WIRE_DELAY);
- Wire nq = new Wire(t, 1, WIRE_DELAY);
+ CoreWire r = new CoreWire(t, 1, WIRE_DELAY);
+ CoreWire s = new CoreWire(t, 1, WIRE_DELAY);
+ CoreWire t1 = new CoreWire(t, 1, WIRE_DELAY);
+ CoreWire t2 = new CoreWire(t, 1, WIRE_DELAY);
+ CoreWire q = new CoreWire(t, 1, WIRE_DELAY);
+ CoreWire nq = new CoreWire(t, 1, WIRE_DELAY);
- ManualSwitch rIn = new ManualSwitch(t, r.createReadWriteEnd());
- ManualSwitch sIn = new ManualSwitch(t, s.createReadWriteEnd());
+ CoreManualSwitch rIn = new CoreManualSwitch(t, r.createReadWriteEnd());
+ CoreManualSwitch sIn = new CoreManualSwitch(t, s.createReadWriteEnd());
- OrGate or1 = new OrGate(t, OR_DELAY, t2.createReadWriteEnd(), r.createReadOnlyEnd(), nq.createReadOnlyEnd());
- OrGate or2 = new OrGate(t, OR_DELAY, t1.createReadWriteEnd(), s.createReadOnlyEnd(), q.createReadOnlyEnd());
- NotGate not1 = new NotGate(t, NOT_DELAY, t2.createReadOnlyEnd(), q.createReadWriteEnd());
- NotGate not2 = new NotGate(t, NOT_DELAY, t1.createReadOnlyEnd(), nq.createReadWriteEnd());
+ CoreOrGate or1 = new CoreOrGate(t, OR_DELAY, t2.createReadWriteEnd(), r.createReadOnlyEnd(), nq.createReadOnlyEnd());
+ CoreOrGate or2 = new CoreOrGate(t, OR_DELAY, t1.createReadWriteEnd(), s.createReadOnlyEnd(), q.createReadOnlyEnd());
+ CoreNotGate not1 = new CoreNotGate(t, NOT_DELAY, t2.createReadOnlyEnd(), q.createReadWriteEnd());
+ CoreNotGate not2 = new CoreNotGate(t, NOT_DELAY, t1.createReadOnlyEnd(), nq.createReadWriteEnd());
- Map<ManualSwitch, Rectangle> switchMap = new HashMap<>();
+ Map<CoreManualSwitch, Rectangle> switchMap = new HashMap<>();
int height;
int width;
@Override
public void mouseReleased(MouseEvent e)
{
- for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet())
+ for (Entry<CoreManualSwitch, Rectangle> dim : switchMap.entrySet())
{
if (dim.getValue().contains(e.getPoint()))
{
@Override
public void mousePressed(MouseEvent e)
{
- for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet())
+ for (Entry<CoreManualSwitch, Rectangle> dim : switchMap.entrySet())
{
if (dim.getValue().contains(e.getPoint()))
{
g.drawString(s, x - (int) (w * anchorX), y + (int) (h * anchorY));
}
- private void drawWire(Graphics g, Wire wa, String name, double x1, double y1, double x2, double y2)
+ private void drawWire(Graphics g, CoreWire wa, String name, double x1, double y1, double x2, double y2)
{
setTo(g, wa);
g.drawLine(gX(x1), gY(y1), gX(x2), gY(y2));
}
- private void drawSwitch(Graphics g, ManualSwitch ms, String text, double posX1, double posY1, double posX2, double posY2)
+ private void drawSwitch(Graphics g, CoreManualSwitch ms, String text, double posX1, double posY1, double posX2, double posY2)
{
int x1 = gX(posX1) - 5;
int x2 = gX(posX2) + 5;
g.setColor(Color.BLACK);
}
- private static void setTo(Graphics g, Wire wa)
+ private static void setTo(Graphics g, CoreWire wa)
{
switch (wa.getValue())
{
+++ /dev/null
-package net.mograsim.logic.core.tests;
-
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-
-import java.util.function.LongConsumer;
-
-import net.mograsim.logic.core.components.BitDisplay;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-
-public final class TestBitDisplay extends BitDisplay
-{
-
- public TestBitDisplay(Timeline timeline, ReadEnd in)
- {
- super(timeline, in);
- }
-
- public void assertDisplays(Bit... expected)
- {
- assertArrayEquals(expected, getDisplayedValue().getBits());
- }
-
- public void assertAfterSimulationIs(Bit... expected)
- {
- timeline.executeAll();
- assertDisplays(expected);
- }
-
- public void assertAfterSimulationIs(LongConsumer r, Bit... expected)
- {
- while (timeline.hasNext())
- {
- timeline.executeNext();
- r.accept(timeline.getSimulationTime());
- }
- assertDisplays(expected);
- }
-
- @Override
- protected void compute()
- {
- super.compute();
- System.out.println("update: value is " + getDisplayedValue());
- }
-}
--- /dev/null
+package net.mograsim.logic.core.tests;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+
+import java.util.function.LongConsumer;
+
+import net.mograsim.logic.core.components.CoreBitDisplay;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+
+public final class TestCoreBitDisplay extends CoreBitDisplay
+{
+
+ public TestCoreBitDisplay(Timeline timeline, ReadEnd in)
+ {
+ super(timeline, in);
+ }
+
+ public void assertDisplays(Bit... expected)
+ {
+ assertArrayEquals(expected, getDisplayedValue().getBits());
+ }
+
+ public void assertAfterSimulationIs(Bit... expected)
+ {
+ timeline.executeAll();
+ assertDisplays(expected);
+ }
+
+ public void assertAfterSimulationIs(LongConsumer r, Bit... expected)
+ {
+ while (timeline.hasNext())
+ {
+ timeline.executeNext();
+ r.accept(timeline.getSimulationTime());
+ }
+ assertDisplays(expected);
+ }
+
+ @Override
+ protected void compute()
+ {
+ super.compute();
+ System.out.println("update: value is " + getDisplayedValue());
+ }
+}
--- /dev/null
+{
+ "width": 0.0,
+ "height": 0.0,
+ "interfacePins": [],
+ "innerScale": 1.0,
+ "submodel": {
+ "components": [
+ {
+ "id": "Am2904",
+ "name": "Am2904#0",
+ "pos": {
+ "x": 220.0,
+ "y": 175.0
+ }
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#0",
+ "pos": {
+ "x": 391.0,
+ "y": 150.0
+ },
+ "params": 1
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#1",
+ "pos": {
+ "x": 391.0,
+ "y": 165.0
+ },
+ "params": 1
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#2",
+ "pos": {
+ "x": 391.0,
+ "y": 180.0
+ },
+ "params": 1
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#3",
+ "pos": {
+ "x": 391.0,
+ "y": 195.0
+ },
+ "params": 1
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#4",
+ "pos": {
+ "x": 365.0,
+ "y": 240.0
+ },
+ "params": 1
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#5",
+ "pos": {
+ "x": 365.0,
+ "y": 275.0
+ },
+ "params": 1
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#6",
+ "pos": {
+ "x": 365.0,
+ "y": 370.0
+ },
+ "params": 1
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#7",
+ "pos": {
+ "x": 365.0,
+ "y": 385.0
+ },
+ "params": 1
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#8",
+ "pos": {
+ "x": 365.0,
+ "y": 330.0
+ },
+ "params": 1
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#9",
+ "pos": {
+ "x": 365.0,
+ "y": 315.0
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#0",
+ "pos": {
+ "x": 255.0,
+ "y": 152.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#1",
+ "pos": {
+ "x": 170.0,
+ "y": 82.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#10",
+ "pos": {
+ "x": 160.0,
+ "y": 247.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#11",
+ "pos": {
+ "x": 160.0,
+ "y": 217.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#12",
+ "pos": {
+ "x": 160.0,
+ "y": 202.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#13",
+ "pos": {
+ "x": 60.0,
+ "y": 132.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#14",
+ "pos": {
+ "x": 165.0,
+ "y": 287.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#15",
+ "pos": {
+ "x": 140.0,
+ "y": 317.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#16",
+ "pos": {
+ "x": 140.0,
+ "y": 332.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#17",
+ "pos": {
+ "x": 140.0,
+ "y": 387.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#18",
+ "pos": {
+ "x": 140.0,
+ "y": 372.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#19",
+ "pos": {
+ "x": 140.0,
+ "y": 357.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#2",
+ "pos": {
+ "x": 170.0,
+ "y": 112.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#20",
+ "pos": {
+ "x": 140.0,
+ "y": 302.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#21",
+ "pos": {
+ "x": 55.0,
+ "y": 142.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#22",
+ "pos": {
+ "x": 60.0,
+ "y": 152.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#23",
+ "pos": {
+ "x": 60.0,
+ "y": 172.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#24",
+ "pos": {
+ "x": 55.0,
+ "y": 162.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#25",
+ "pos": {
+ "x": 55.0,
+ "y": 182.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#26",
+ "pos": {
+ "x": 60.0,
+ "y": 192.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#27",
+ "pos": {
+ "x": 60.0,
+ "y": 232.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#28",
+ "pos": {
+ "x": 55.0,
+ "y": 202.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#29",
+ "pos": {
+ "x": 55.0,
+ "y": 222.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#3",
+ "pos": {
+ "x": 55.0,
+ "y": 122.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#30",
+ "pos": {
+ "x": 60.0,
+ "y": 212.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#31",
+ "pos": {
+ "x": 55.0,
+ "y": 242.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#32",
+ "pos": {
+ "x": 300.0,
+ "y": 107.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#33",
+ "pos": {
+ "x": 300.0,
+ "y": 137.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#34",
+ "pos": {
+ "x": 300.0,
+ "y": 92.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#35",
+ "pos": {
+ "x": 300.0,
+ "y": 122.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#36",
+ "pos": {
+ "x": 300.0,
+ "y": 77.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#37",
+ "pos": {
+ "x": 165.0,
+ "y": 270.0
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#38",
+ "pos": {
+ "x": 385.0,
+ "y": 220.0
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#4",
+ "pos": {
+ "x": 170.0,
+ "y": 127.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#5",
+ "pos": {
+ "x": 170.0,
+ "y": 142.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#6",
+ "pos": {
+ "x": 170.0,
+ "y": 157.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#7",
+ "pos": {
+ "x": 155.0,
+ "y": 172.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#8",
+ "pos": {
+ "x": 155.0,
+ "y": 187.5
+ },
+ "params": 1
+ },
+ {
+ "id": "ManualSwitch",
+ "name": "ManualSwitch#9",
+ "pos": {
+ "x": 160.0,
+ "y": 232.5
+ },
+ "params": 1
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 85.0,
+ "y": 130.0
+ },
+ "params": 13
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#0",
+ "pos": {
+ "x": 140.0,
+ "y": 110.0
+ },
+ "params": "IZ"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#1",
+ "pos": {
+ "x": 140.0,
+ "y": 125.0
+ },
+ "params": "IC"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#10",
+ "pos": {
+ "x": 35.0,
+ "y": 240.0
+ },
+ "params": "I0"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#11",
+ "pos": {
+ "x": 35.0,
+ "y": 120.0
+ },
+ "params": "I12"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#12",
+ "pos": {
+ "x": 35.0,
+ "y": 220.0
+ },
+ "params": "I2"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#13",
+ "pos": {
+ "x": 40.0,
+ "y": 190.0
+ },
+ "params": "I5"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#14",
+ "pos": {
+ "x": 40.0,
+ "y": 230.0
+ },
+ "params": "I1"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#15",
+ "pos": {
+ "x": 40.0,
+ "y": 210.0
+ },
+ "params": "I3"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#16",
+ "pos": {
+ "x": 35.0,
+ "y": 200.0
+ },
+ "params": "I4"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#17",
+ "pos": {
+ "x": 35.0,
+ "y": 180.0
+ },
+ "params": "I6"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#18",
+ "pos": {
+ "x": 40.0,
+ "y": 170.0
+ },
+ "params": "I7"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#19",
+ "pos": {
+ "x": 35.0,
+ "y": 160.0
+ },
+ "params": "I8"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#2",
+ "pos": {
+ "x": 140.0,
+ "y": 140.0
+ },
+ "params": "IN"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#20",
+ "pos": {
+ "x": 40.0,
+ "y": 150.0
+ },
+ "params": "I9"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#21",
+ "pos": {
+ "x": 35.0,
+ "y": 140.0
+ },
+ "params": "I10"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#22",
+ "pos": {
+ "x": 40.0,
+ "y": 130.0
+ },
+ "params": "I11"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#23",
+ "pos": {
+ "x": 145.0,
+ "y": 285.0
+ },
+ "params": "CX"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#24",
+ "pos": {
+ "x": 150.0,
+ "y": 80.0
+ },
+ "params": "C"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#25",
+ "pos": {
+ "x": 225.0,
+ "y": 150.0
+ },
+ "params": "_OEY"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#26",
+ "pos": {
+ "x": 416.0,
+ "y": 150.0
+ },
+ "params": "YZ"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#27",
+ "pos": {
+ "x": 416.0,
+ "y": 165.0
+ },
+ "params": "YC"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#28",
+ "pos": {
+ "x": 416.0,
+ "y": 180.0
+ },
+ "params": "YN"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#29",
+ "pos": {
+ "x": 416.0,
+ "y": 195.0
+ },
+ "params": "YOVR"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#3",
+ "pos": {
+ "x": 140.0,
+ "y": 155.0
+ },
+ "params": "IOVR"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#30",
+ "pos": {
+ "x": 390.0,
+ "y": 240.0
+ },
+ "params": "CT"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#31",
+ "pos": {
+ "x": 390.0,
+ "y": 275.0
+ },
+ "params": "C0"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#32",
+ "pos": {
+ "x": 390.0,
+ "y": 315.0
+ },
+ "params": "SIOn"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#33",
+ "pos": {
+ "x": 390.0,
+ "y": 330.0
+ },
+ "params": "QIOn"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#34",
+ "pos": {
+ "x": 390.0,
+ "y": 370.0
+ },
+ "params": "SIO0"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#35",
+ "pos": {
+ "x": 390.0,
+ "y": 385.0
+ },
+ "params": "QIO0"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#36",
+ "pos": {
+ "x": 30.0,
+ "y": 300.0
+ },
+ "params": "enable S/QIOn input"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#37",
+ "pos": {
+ "x": 30.0,
+ "y": 355.0
+ },
+ "params": "enable S/QIO0 input"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#38",
+ "pos": {
+ "x": 110.0,
+ "y": 385.0
+ },
+ "params": "QIO0"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#39",
+ "pos": {
+ "x": 110.0,
+ "y": 370.0
+ },
+ "params": "SIO0"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#4",
+ "pos": {
+ "x": 115.0,
+ "y": 170.0
+ },
+ "params": "_CEM"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#40",
+ "pos": {
+ "x": 110.0,
+ "y": 315.0
+ },
+ "params": "SIOn"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#41",
+ "pos": {
+ "x": 110.0,
+ "y": 330.0
+ },
+ "params": "QIOn"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#42",
+ "pos": {
+ "x": 270.0,
+ "y": 135.0
+ },
+ "params": "YOVR"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#43",
+ "pos": {
+ "x": 270.0,
+ "y": 120.0
+ },
+ "params": "YN"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#44",
+ "pos": {
+ "x": 270.0,
+ "y": 90.0
+ },
+ "params": "YZ"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#45",
+ "pos": {
+ "x": 270.0,
+ "y": 105.0
+ },
+ "params": "YC"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#46",
+ "pos": {
+ "x": 220.0,
+ "y": 75.0
+ },
+ "params": "enable Y input"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#47",
+ "pos": {
+ "x": 145.0,
+ "y": 270.0
+ },
+ "params": "_SE"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#48",
+ "pos": {
+ "x": 350.0,
+ "y": 220.0
+ },
+ "params": "_OECT"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#5",
+ "pos": {
+ "x": 115.0,
+ "y": 185.0
+ },
+ "params": "_CEmu"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#6",
+ "pos": {
+ "x": 125.0,
+ "y": 200.0
+ },
+ "params": "_EZ"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#7",
+ "pos": {
+ "x": 125.0,
+ "y": 215.0
+ },
+ "params": "_EC"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#8",
+ "pos": {
+ "x": 125.0,
+ "y": 230.0
+ },
+ "params": "_EN"
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#9",
+ "pos": {
+ "x": 125.0,
+ "y": 245.0
+ },
+ "params": "_EOVR"
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#0",
+ "pos": {
+ "x": 175.0,
+ "y": 315.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#1",
+ "pos": {
+ "x": 175.0,
+ "y": 330.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#2",
+ "pos": {
+ "x": 175.0,
+ "y": 385.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#3",
+ "pos": {
+ "x": 175.0,
+ "y": 370.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#4",
+ "pos": {
+ "x": 335.0,
+ "y": 105.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#5",
+ "pos": {
+ "x": 335.0,
+ "y": 90.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#6",
+ "pos": {
+ "x": 335.0,
+ "y": 120.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#7",
+ "pos": {
+ "x": 335.0,
+ "y": 135.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 185.0,
+ "y": 365.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 185.0,
+ "y": 310.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 370.0,
+ "y": 175.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 375.0,
+ "y": 190.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 380.0,
+ "y": 200.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 210.0,
+ "y": 325.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 215.0,
+ "y": 340.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 355.0,
+ "y": 380.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 360.0,
+ "y": 390.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 345.0,
+ "y": 85.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 360.0,
+ "y": 110.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 360.0,
+ "y": 125.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 365.0,
+ "y": 160.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "ManualSwitch#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "_OEY"
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 280.0,
+ "y": 160.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 215.0,
+ "y": 90.0
+ },
+ {
+ "x": 215.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "_EOVR"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 220.0
+ },
+ {
+ "x": 205.0,
+ "y": 255.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "_EN"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 240.0
+ },
+ {
+ "x": 200.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 190.0
+ },
+ {
+ "x": 105.0,
+ "y": 265.0
+ },
+ {
+ "x": 210.0,
+ "y": 265.0
+ },
+ {
+ "x": 210.0,
+ "y": 235.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "Cx"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 295.0
+ },
+ {
+ "x": 200.0,
+ "y": 285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "YOVR"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "YN"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 375.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "BitDisplay#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "YZ"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 365.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "CT"
+ },
+ "pin2": {
+ "compName": "BitDisplay#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 345.0,
+ "y": 235.0
+ },
+ {
+ "x": 345.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "C0"
+ },
+ "pin2": {
+ "compName": "BitDisplay#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "IZ"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 120.0
+ },
+ {
+ "x": 210.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "SIOn"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 295.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "OUT"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "QIOn"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 215.0,
+ "y": 305.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#1",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#1",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#2",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#3",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#3",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "IC"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 190.0
+ },
+ {
+ "x": 205.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#2",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 365.0
+ },
+ {
+ "x": 200.0,
+ "y": 390.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#1",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#33",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 310.0
+ },
+ {
+ "x": 200.0,
+ "y": 335.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "BitDisplay#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#34",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 375.0
+ },
+ {
+ "x": 345.0,
+ "y": 375.0
+ },
+ {
+ "x": 345.0,
+ "y": 325.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "BitDisplay#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#35",
+ "path": [
+ {
+ "x": 350.0,
+ "y": 340.0
+ },
+ {
+ "x": 350.0,
+ "y": 380.0
+ },
+ {
+ "x": 215.0,
+ "y": 380.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#3",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 380.0
+ },
+ {
+ "x": 210.0,
+ "y": 385.0
+ },
+ {
+ "x": 355.0,
+ "y": 385.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#2",
+ "pinName": "OUT"
+ },
+ "name": "unnamedWire#37",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 390.0
+ },
+ {
+ "x": 210.0,
+ "y": 395.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "BitDisplay#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": [
+ {
+ "x": 360.0,
+ "y": 395.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "BitDisplay#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 150.0
+ },
+ {
+ "x": 200.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "SIO0"
+ },
+ "name": "unnamedWire#40",
+ "path": [
+ {
+ "x": 355.0,
+ "y": 295.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "QIO0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#41",
+ "path": [
+ {
+ "x": 360.0,
+ "y": 305.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I12"
+ },
+ "name": "unnamedWire#42",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I11"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I10"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I9"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#45",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I8"
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I7"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#23",
+ "pinName": ""
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I6"
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#26",
+ "pinName": ""
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "IOVR"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 200.0
+ },
+ {
+ "x": 195.0,
+ "y": 165.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#30",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#29",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#31",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#54",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#7",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#33",
+ "pinName": ""
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#35",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#6",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#4",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#32",
+ "pinName": ""
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#34",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#5",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#5",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#59",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "_CEM"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 190.0,
+ "y": 180.0
+ },
+ {
+ "x": 190.0,
+ "y": 205.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ManualSwitch#36",
+ "pinName": ""
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#61",
+ "path": [
+ {
+ "x": 360.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#4",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#62",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#63",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#6",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#64",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#7",
+ "pinName": "EN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#65",
+ "path": [
+ {
+ "x": 360.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "BitDisplay#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#5",
+ "pinName": "OUT"
+ },
+ "name": "unnamedWire#67",
+ "path": [
+ {
+ "x": 365.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "YC"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#68",
+ "path": [
+ {
+ "x": 370.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#4",
+ "pinName": "OUT"
+ },
+ "name": "unnamedWire#69",
+ "path": [
+ {
+ "x": 370.0,
+ "y": 115.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "_CEmu"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 185.0,
+ "y": 205.0
+ },
+ {
+ "x": 185.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#6",
+ "pinName": "OUT"
+ },
+ "name": "unnamedWire#70",
+ "path": [
+ {
+ "x": 375.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "BitDisplay#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#71",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "BitDisplay#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#72",
+ "path": [
+ {
+ "x": 380.0,
+ "y": 205.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#7",
+ "pinName": "OUT"
+ },
+ "name": "unnamedWire#73",
+ "path": [
+ {
+ "x": 380.0,
+ "y": 145.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "_SE"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#37",
+ "pinName": ""
+ },
+ "name": "unnamedWire#74",
+ "path": [
+ {
+ "x": 215.0,
+ "y": 260.0
+ },
+ {
+ "x": 215.0,
+ "y": 280.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ManualSwitch#38",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904#0",
+ "pinName": "_OECT"
+ },
+ "name": "unnamedWire#75",
+ "path": [
+ {
+ "x": 410.0,
+ "y": 230.0
+ },
+ {
+ "x": 410.0,
+ "y": 215.0
+ },
+ {
+ "x": 345.0,
+ "y": 215.0
+ },
+ {
+ "x": 345.0,
+ "y": 225.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "_EZ"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904#0",
+ "pinName": "_EC"
+ },
+ "pin2": {
+ "compName": "ManualSwitch#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 215.0
+ },
+ {
+ "x": 195.0,
+ "y": 225.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "default",
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
+++ /dev/null
-{
- "width": 0.0,
- "height": 0.0,
- "interfacePins": [],
- "innerScale": 1.0,
- "submodel": {
- "components": [
- {
- "id": "GUIAm2904",
- "name": "Am2904",
- "pos": {
- "x": 220.0,
- "y": 175.0
- }
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#0",
- "pos": {
- "x": 391.0,
- "y": 150.0
- },
- "params": 1
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#1",
- "pos": {
- "x": 391.0,
- "y": 165.0
- },
- "params": 1
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#2",
- "pos": {
- "x": 391.0,
- "y": 180.0
- },
- "params": 1
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#3",
- "pos": {
- "x": 391.0,
- "y": 195.0
- },
- "params": 1
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#4",
- "pos": {
- "x": 365.0,
- "y": 240.0
- },
- "params": 1
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#5",
- "pos": {
- "x": 365.0,
- "y": 275.0
- },
- "params": 1
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#6",
- "pos": {
- "x": 365.0,
- "y": 370.0
- },
- "params": 1
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#7",
- "pos": {
- "x": 365.0,
- "y": 385.0
- },
- "params": 1
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#8",
- "pos": {
- "x": 365.0,
- "y": 330.0
- },
- "params": 1
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#9",
- "pos": {
- "x": 365.0,
- "y": 315.0
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#0",
- "pos": {
- "x": 255.0,
- "y": 152.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#1",
- "pos": {
- "x": 170.0,
- "y": 82.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#10",
- "pos": {
- "x": 160.0,
- "y": 247.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#11",
- "pos": {
- "x": 160.0,
- "y": 217.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#12",
- "pos": {
- "x": 160.0,
- "y": 202.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#13",
- "pos": {
- "x": 60.0,
- "y": 132.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#14",
- "pos": {
- "x": 165.0,
- "y": 287.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#15",
- "pos": {
- "x": 140.0,
- "y": 317.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#16",
- "pos": {
- "x": 140.0,
- "y": 332.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#17",
- "pos": {
- "x": 140.0,
- "y": 387.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#18",
- "pos": {
- "x": 140.0,
- "y": 372.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#19",
- "pos": {
- "x": 140.0,
- "y": 357.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#2",
- "pos": {
- "x": 170.0,
- "y": 112.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#20",
- "pos": {
- "x": 140.0,
- "y": 302.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#21",
- "pos": {
- "x": 55.0,
- "y": 142.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#22",
- "pos": {
- "x": 60.0,
- "y": 152.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#23",
- "pos": {
- "x": 60.0,
- "y": 172.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#24",
- "pos": {
- "x": 55.0,
- "y": 162.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#25",
- "pos": {
- "x": 55.0,
- "y": 182.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#26",
- "pos": {
- "x": 60.0,
- "y": 192.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#27",
- "pos": {
- "x": 60.0,
- "y": 232.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#28",
- "pos": {
- "x": 55.0,
- "y": 202.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#29",
- "pos": {
- "x": 55.0,
- "y": 222.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#3",
- "pos": {
- "x": 55.0,
- "y": 122.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#30",
- "pos": {
- "x": 60.0,
- "y": 212.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#31",
- "pos": {
- "x": 55.0,
- "y": 242.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#32",
- "pos": {
- "x": 300.0,
- "y": 107.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#33",
- "pos": {
- "x": 300.0,
- "y": 137.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#34",
- "pos": {
- "x": 300.0,
- "y": 92.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#35",
- "pos": {
- "x": 300.0,
- "y": 122.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#36",
- "pos": {
- "x": 300.0,
- "y": 77.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#37",
- "pos": {
- "x": 165.0,
- "y": 270.0
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#38",
- "pos": {
- "x": 385.0,
- "y": 220.0
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#4",
- "pos": {
- "x": 170.0,
- "y": 127.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#5",
- "pos": {
- "x": 170.0,
- "y": 142.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#6",
- "pos": {
- "x": 170.0,
- "y": 157.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#7",
- "pos": {
- "x": 155.0,
- "y": 172.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#8",
- "pos": {
- "x": 155.0,
- "y": 187.5
- },
- "params": 1
- },
- {
- "id": "GUIManualSwitch",
- "name": "GUIManualSwitch#9",
- "pos": {
- "x": 160.0,
- "y": 232.5
- },
- "params": 1
- },
- {
- "id": "GUIMerger",
- "name": "GUIMerger#0",
- "pos": {
- "x": 85.0,
- "y": 130.0
- },
- "params": 13
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#0",
- "pos": {
- "x": 175.0,
- "y": 315.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#1",
- "pos": {
- "x": 175.0,
- "y": 330.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#2",
- "pos": {
- "x": 175.0,
- "y": 385.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#3",
- "pos": {
- "x": 175.0,
- "y": 370.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#4",
- "pos": {
- "x": 335.0,
- "y": 105.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#5",
- "pos": {
- "x": 335.0,
- "y": 90.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#6",
- "pos": {
- "x": 335.0,
- "y": 120.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#7",
- "pos": {
- "x": 335.0,
- "y": 135.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#0",
- "pos": {
- "x": 140.0,
- "y": 110.0
- },
- "params": "IZ"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#1",
- "pos": {
- "x": 140.0,
- "y": 125.0
- },
- "params": "IC"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#10",
- "pos": {
- "x": 35.0,
- "y": 240.0
- },
- "params": "I0"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#11",
- "pos": {
- "x": 35.0,
- "y": 120.0
- },
- "params": "I12"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#12",
- "pos": {
- "x": 35.0,
- "y": 220.0
- },
- "params": "I2"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#13",
- "pos": {
- "x": 40.0,
- "y": 190.0
- },
- "params": "I5"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#14",
- "pos": {
- "x": 40.0,
- "y": 230.0
- },
- "params": "I1"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#15",
- "pos": {
- "x": 40.0,
- "y": 210.0
- },
- "params": "I3"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#16",
- "pos": {
- "x": 35.0,
- "y": 200.0
- },
- "params": "I4"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#17",
- "pos": {
- "x": 35.0,
- "y": 180.0
- },
- "params": "I6"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#18",
- "pos": {
- "x": 40.0,
- "y": 170.0
- },
- "params": "I7"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#19",
- "pos": {
- "x": 35.0,
- "y": 160.0
- },
- "params": "I8"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#2",
- "pos": {
- "x": 140.0,
- "y": 140.0
- },
- "params": "IN"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#20",
- "pos": {
- "x": 40.0,
- "y": 150.0
- },
- "params": "I9"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#21",
- "pos": {
- "x": 35.0,
- "y": 140.0
- },
- "params": "I10"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#22",
- "pos": {
- "x": 40.0,
- "y": 130.0
- },
- "params": "I11"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#23",
- "pos": {
- "x": 145.0,
- "y": 285.0
- },
- "params": "CX"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#24",
- "pos": {
- "x": 150.0,
- "y": 80.0
- },
- "params": "C"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#25",
- "pos": {
- "x": 225.0,
- "y": 150.0
- },
- "params": "_OEY"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#26",
- "pos": {
- "x": 416.0,
- "y": 150.0
- },
- "params": "YZ"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#27",
- "pos": {
- "x": 416.0,
- "y": 165.0
- },
- "params": "YC"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#28",
- "pos": {
- "x": 416.0,
- "y": 180.0
- },
- "params": "YN"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#29",
- "pos": {
- "x": 416.0,
- "y": 195.0
- },
- "params": "YOVR"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#3",
- "pos": {
- "x": 140.0,
- "y": 155.0
- },
- "params": "IOVR"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#30",
- "pos": {
- "x": 390.0,
- "y": 240.0
- },
- "params": "CT"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#31",
- "pos": {
- "x": 390.0,
- "y": 275.0
- },
- "params": "C0"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#32",
- "pos": {
- "x": 390.0,
- "y": 315.0
- },
- "params": "SIOn"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#33",
- "pos": {
- "x": 390.0,
- "y": 330.0
- },
- "params": "QIOn"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#34",
- "pos": {
- "x": 390.0,
- "y": 370.0
- },
- "params": "SIO0"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#35",
- "pos": {
- "x": 390.0,
- "y": 385.0
- },
- "params": "QIO0"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#36",
- "pos": {
- "x": 30.0,
- "y": 300.0
- },
- "params": "enable S/QIOn input"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#37",
- "pos": {
- "x": 30.0,
- "y": 355.0
- },
- "params": "enable S/QIO0 input"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#38",
- "pos": {
- "x": 110.0,
- "y": 385.0
- },
- "params": "QIO0"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#39",
- "pos": {
- "x": 110.0,
- "y": 370.0
- },
- "params": "SIO0"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#4",
- "pos": {
- "x": 115.0,
- "y": 170.0
- },
- "params": "_CEM"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#40",
- "pos": {
- "x": 110.0,
- "y": 315.0
- },
- "params": "SIOn"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#41",
- "pos": {
- "x": 110.0,
- "y": 330.0
- },
- "params": "QIOn"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#42",
- "pos": {
- "x": 270.0,
- "y": 135.0
- },
- "params": "YOVR"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#43",
- "pos": {
- "x": 270.0,
- "y": 120.0
- },
- "params": "YN"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#44",
- "pos": {
- "x": 270.0,
- "y": 90.0
- },
- "params": "YZ"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#45",
- "pos": {
- "x": 270.0,
- "y": 105.0
- },
- "params": "YC"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#46",
- "pos": {
- "x": 220.0,
- "y": 75.0
- },
- "params": "enable Y input"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#47",
- "pos": {
- "x": 145.0,
- "y": 270.0
- },
- "params": "_SE"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#48",
- "pos": {
- "x": 350.0,
- "y": 220.0
- },
- "params": "_OECT"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#5",
- "pos": {
- "x": 115.0,
- "y": 185.0
- },
- "params": "_CEmu"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#6",
- "pos": {
- "x": 125.0,
- "y": 200.0
- },
- "params": "_EZ"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#7",
- "pos": {
- "x": 125.0,
- "y": 215.0
- },
- "params": "_EC"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#8",
- "pos": {
- "x": 125.0,
- "y": 230.0
- },
- "params": "_EN"
- },
- {
- "id": "TextComponent",
- "name": "TextComponent#9",
- "pos": {
- "x": 125.0,
- "y": 245.0
- },
- "params": "_EOVR"
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 185.0,
- "y": 365.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 185.0,
- "y": 310.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 370.0,
- "y": 175.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#11",
- "pos": {
- "x": 375.0,
- "y": 190.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#12",
- "pos": {
- "x": 380.0,
- "y": 200.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 210.0,
- "y": 325.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 215.0,
- "y": 340.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 355.0,
- "y": 380.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 360.0,
- "y": 390.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 345.0,
- "y": 85.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 360.0,
- "y": 110.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 360.0,
- "y": 125.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 365.0,
- "y": 160.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "GUIManualSwitch#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "_OEY"
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 280.0,
- "y": 160.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "C"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 215.0,
- "y": 90.0
- },
- {
- "x": 215.0,
- "y": 180.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "_EOVR"
- },
- "pin2": {
- "compName": "GUIManualSwitch#10",
- "pinName": ""
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 205.0,
- "y": 220.0
- },
- {
- "x": 205.0,
- "y": 255.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "_EN"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 200.0,
- "y": 240.0
- },
- {
- "x": 200.0,
- "y": 215.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "O"
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "I"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 105.0,
- "y": 190.0
- },
- {
- "x": 105.0,
- "y": 265.0
- },
- {
- "x": 210.0,
- "y": 265.0
- },
- {
- "x": 210.0,
- "y": 235.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "Cx"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 200.0,
- "y": 295.0
- },
- {
- "x": 200.0,
- "y": 285.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "YOVR"
- },
- "pin2": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "YN"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 375.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIBitDisplay#1",
- "pinName": ""
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "YZ"
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 365.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "CT"
- },
- "pin2": {
- "compName": "GUIBitDisplay#4",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 345.0,
- "y": 235.0
- },
- {
- "x": 345.0,
- "y": 250.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "C0"
- },
- "pin2": {
- "compName": "GUIBitDisplay#5",
- "pinName": ""
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "IZ"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 210.0,
- "y": 120.0
- },
- {
- "x": 210.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "SIOn"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 210.0,
- "y": 295.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "OUT"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "QIOn"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 215.0,
- "y": 305.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#1",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "IN"
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#1",
- "pinName": "IN"
- },
- "name": "unnamedWire#25",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#2",
- "pinName": "IN"
- },
- "pin2": {
- "compName": "GUIManualSwitch#17",
- "pinName": ""
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#3",
- "pinName": "IN"
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#28",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#3",
- "pinName": "EN"
- },
- "name": "unnamedWire#29",
- "path": []
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "IC"
- },
- "pin2": {
- "compName": "GUIManualSwitch#4",
- "pinName": ""
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 205.0,
- "y": 190.0
- },
- {
- "x": 205.0,
- "y": 135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#2",
- "pinName": "EN"
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 200.0,
- "y": 365.0
- },
- {
- "x": 200.0,
- "y": 390.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#20",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#31",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "EN"
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#1",
- "pinName": "EN"
- },
- "name": "unnamedWire#33",
- "path": [
- {
- "x": 200.0,
- "y": 310.0
- },
- {
- "x": 200.0,
- "y": 335.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIBitDisplay#9",
- "pinName": ""
- },
- "name": "unnamedWire#34",
- "path": [
- {
- "x": 210.0,
- "y": 375.0
- },
- {
- "x": 345.0,
- "y": 375.0
- },
- {
- "x": 345.0,
- "y": 325.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIBitDisplay#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#35",
- "path": [
- {
- "x": 350.0,
- "y": 340.0
- },
- {
- "x": 350.0,
- "y": 380.0
- },
- {
- "x": 215.0,
- "y": 380.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#3",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#36",
- "path": [
- {
- "x": 210.0,
- "y": 380.0
- },
- {
- "x": 210.0,
- "y": 385.0
- },
- {
- "x": 355.0,
- "y": 385.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#2",
- "pinName": "OUT"
- },
- "name": "unnamedWire#37",
- "path": [
- {
- "x": 210.0,
- "y": 390.0
- },
- {
- "x": 210.0,
- "y": 395.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIBitDisplay#7",
- "pinName": ""
- },
- "name": "unnamedWire#38",
- "path": [
- {
- "x": 360.0,
- "y": 395.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIBitDisplay#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#39",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "IN"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 200.0,
- "y": 150.0
- },
- {
- "x": 200.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "SIO0"
- },
- "name": "unnamedWire#40",
- "path": [
- {
- "x": 355.0,
- "y": 295.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "QIO0"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#41",
- "path": [
- {
- "x": 360.0,
- "y": 305.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I12"
- },
- "name": "unnamedWire#42",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I11"
- },
- "pin2": {
- "compName": "GUIManualSwitch#13",
- "pinName": ""
- },
- "name": "unnamedWire#43",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#21",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I10"
- },
- "name": "unnamedWire#44",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I9"
- },
- "pin2": {
- "compName": "GUIManualSwitch#22",
- "pinName": ""
- },
- "name": "unnamedWire#45",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#24",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I8"
- },
- "name": "unnamedWire#46",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I7"
- },
- "pin2": {
- "compName": "GUIManualSwitch#23",
- "pinName": ""
- },
- "name": "unnamedWire#47",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#25",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I6"
- },
- "name": "unnamedWire#48",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I5"
- },
- "pin2": {
- "compName": "GUIManualSwitch#26",
- "pinName": ""
- },
- "name": "unnamedWire#49",
- "path": []
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "IOVR"
- },
- "pin2": {
- "compName": "GUIManualSwitch#6",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 195.0,
- "y": 200.0
- },
- {
- "x": 195.0,
- "y": 165.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#28",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I4"
- },
- "name": "unnamedWire#50",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "GUIManualSwitch#30",
- "pinName": ""
- },
- "name": "unnamedWire#51",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#29",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I2"
- },
- "name": "unnamedWire#52",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUIManualSwitch#27",
- "pinName": ""
- },
- "name": "unnamedWire#53",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#31",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I0"
- },
- "name": "unnamedWire#54",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#7",
- "pinName": "IN"
- },
- "pin2": {
- "compName": "GUIManualSwitch#33",
- "pinName": ""
- },
- "name": "unnamedWire#55",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#35",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#6",
- "pinName": "IN"
- },
- "name": "unnamedWire#56",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#4",
- "pinName": "IN"
- },
- "pin2": {
- "compName": "GUIManualSwitch#32",
- "pinName": ""
- },
- "name": "unnamedWire#57",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#34",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#5",
- "pinName": "IN"
- },
- "name": "unnamedWire#58",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#5",
- "pinName": "EN"
- },
- "name": "unnamedWire#59",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "_CEM"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 190.0,
- "y": 180.0
- },
- {
- "x": 190.0,
- "y": 205.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIManualSwitch#36",
- "pinName": ""
- },
- "name": "unnamedWire#60",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#61",
- "path": [
- {
- "x": 360.0,
- "y": 85.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#4",
- "pinName": "EN"
- },
- "name": "unnamedWire#62",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#63",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#6",
- "pinName": "EN"
- },
- "name": "unnamedWire#64",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#7",
- "pinName": "EN"
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#65",
- "path": [
- {
- "x": 360.0,
- "y": 140.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIBitDisplay#0",
- "pinName": ""
- },
- "name": "unnamedWire#66",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#5",
- "pinName": "OUT"
- },
- "name": "unnamedWire#67",
- "path": [
- {
- "x": 365.0,
- "y": 100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "YC"
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#68",
- "path": [
- {
- "x": 370.0,
- "y": 190.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#4",
- "pinName": "OUT"
- },
- "name": "unnamedWire#69",
- "path": [
- {
- "x": 370.0,
- "y": 115.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "_CEmu"
- },
- "pin2": {
- "compName": "GUIManualSwitch#8",
- "pinName": ""
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 185.0,
- "y": 205.0
- },
- {
- "x": 185.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#6",
- "pinName": "OUT"
- },
- "name": "unnamedWire#70",
- "path": [
- {
- "x": 375.0,
- "y": 130.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIBitDisplay#2",
- "pinName": ""
- },
- "name": "unnamedWire#71",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIBitDisplay#3",
- "pinName": ""
- },
- "name": "unnamedWire#72",
- "path": [
- {
- "x": 380.0,
- "y": 205.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#7",
- "pinName": "OUT"
- },
- "name": "unnamedWire#73",
- "path": [
- {
- "x": 380.0,
- "y": 145.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "_SE"
- },
- "pin2": {
- "compName": "GUIManualSwitch#37",
- "pinName": ""
- },
- "name": "unnamedWire#74",
- "path": [
- {
- "x": 215.0,
- "y": 260.0
- },
- {
- "x": 215.0,
- "y": 280.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIManualSwitch#38",
- "pinName": ""
- },
- "pin2": {
- "compName": "Am2904",
- "pinName": "_OECT"
- },
- "name": "unnamedWire#75",
- "path": [
- {
- "x": 410.0,
- "y": 230.0
- },
- {
- "x": 410.0,
- "y": 215.0
- },
- {
- "x": 345.0,
- "y": 215.0
- },
- {
- "x": 345.0,
- "y": 225.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "_EZ"
- },
- "pin2": {
- "compName": "GUIManualSwitch#12",
- "pinName": ""
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "Am2904",
- "pinName": "_EC"
- },
- "pin2": {
- "compName": "GUIManualSwitch#11",
- "pinName": ""
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 195.0,
- "y": 215.0
- },
- {
- "x": 195.0,
- "y": 225.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "default",
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
--- /dev/null
+{
+ "width": 344.0,
+ "height": 242.0,
+ "interfacePins": [],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "Clock",
+ "name": "Clock#0",
+ "pos": {
+ "x": 155.0,
+ "y": 246.0
+ },
+ "params": {
+ "delta": 1000,
+ "orientation": "DOWN"
+ }
+ },
+ {
+ "id": "Am2901",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 420.0,
+ "y": 240.0
+ }
+ },
+ {
+ "id": "Am2901",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 485.0,
+ "y": 240.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#10",
+ "pos": {
+ "x": 320.0,
+ "y": 15.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#11",
+ "pos": {
+ "x": 320.0,
+ "y": 120.0
+ }
+ },
+ {
+ "id": "dff12_we",
+ "name": "DeserializedSubmodelComponent#12",
+ "pos": {
+ "x": 290.0,
+ "y": 485.0
+ }
+ },
+ {
+ "id": "mux1_12",
+ "name": "DeserializedSubmodelComponent#13",
+ "pos": {
+ "x": 170.0,
+ "y": 495.0
+ }
+ },
+ {
+ "id": "Am2901",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 550.0,
+ "y": 240.0
+ }
+ },
+ {
+ "id": "Am2901",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 615.0,
+ "y": 240.0
+ }
+ },
+ {
+ "id": "Am2904",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 240.0,
+ "y": 241.0
+ }
+ },
+ {
+ "id": "Am2910",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 100.0,
+ "y": 351.0
+ }
+ },
+ {
+ "id": "and",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 665.0,
+ "y": 501.0
+ }
+ },
+ {
+ "id": "and",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 550.0,
+ "y": 541.0
+ }
+ },
+ {
+ "id": "and",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 730.0,
+ "y": 526.0
+ }
+ },
+ {
+ "id": "dff16_invwe",
+ "name": "DeserializedSubmodelComponent#9",
+ "pos": {
+ "x": 135.0,
+ "y": 106.0
+ }
+ },
+ {
+ "id": "FixedOutput",
+ "name": "FixedOutput#0",
+ "pos": {
+ "x": 205.0,
+ "y": 211.0
+ },
+ "params": {
+ "bits": [
+ "ZERO"
+ ]
+ }
+ },
+ {
+ "id": "FixedOutput",
+ "name": "FixedOutput#1",
+ "pos": {
+ "x": 370.0,
+ "y": 301.0
+ },
+ "params": {
+ "bits": [
+ "ZERO"
+ ]
+ }
+ },
+ {
+ "id": "FixedOutput",
+ "name": "FixedOutput#11",
+ "pos": {
+ "x": 210.0,
+ "y": 281.0
+ },
+ "params": {
+ "bits": [
+ "ZERO"
+ ]
+ }
+ },
+ {
+ "id": "FixedOutput",
+ "name": "FixedOutput#3",
+ "pos": {
+ "x": 70.0,
+ "y": 346.0
+ },
+ "params": {
+ "bits": [
+ "ONE"
+ ]
+ }
+ },
+ {
+ "id": "FixedOutput",
+ "name": "FixedOutput#5",
+ "pos": {
+ "x": 175.0,
+ "y": 396.0
+ },
+ "params": {
+ "bits": [
+ "ONE"
+ ]
+ }
+ },
+ {
+ "id": "FixedOutput",
+ "name": "FixedOutput#7",
+ "pos": {
+ "x": 140.0,
+ "y": 431.0
+ },
+ "params": {
+ "bits": [
+ "ZERO"
+ ]
+ }
+ },
+ {
+ "id": "FixedOutput",
+ "name": "FixedOutput#9",
+ "pos": {
+ "x": 210.0,
+ "y": 316.0
+ },
+ "params": {
+ "bits": [
+ "ZERO"
+ ]
+ }
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 235.0,
+ "y": 56.0
+ },
+ "params": 8
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#1",
+ "pos": {
+ "x": 235.0,
+ "y": 136.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#2",
+ "pos": {
+ "x": 235.0,
+ "y": 176.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#3",
+ "pos": {
+ "x": 360.0,
+ "y": 20.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#4",
+ "pos": {
+ "x": 360.0,
+ "y": 125.0
+ },
+ "params": 4
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 255.0,
+ "y": 495.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 270.0,
+ "y": 550.0
+ },
+ "params": 1
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 215.0,
+ "y": 56.0
+ },
+ "params": 16
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#1",
+ "pos": {
+ "x": 305.0,
+ "y": 30.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#10",
+ "pos": {
+ "x": 600.0,
+ "y": 395.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#2",
+ "pos": {
+ "x": 305.0,
+ "y": 135.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#3",
+ "pos": {
+ "x": 405.0,
+ "y": 395.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#4",
+ "pos": {
+ "x": 405.0,
+ "y": 435.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#5",
+ "pos": {
+ "x": 470.0,
+ "y": 395.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#6",
+ "pos": {
+ "x": 470.0,
+ "y": 435.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#7",
+ "pos": {
+ "x": 535.0,
+ "y": 435.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#8",
+ "pos": {
+ "x": 535.0,
+ "y": 395.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#9",
+ "pos": {
+ "x": 600.0,
+ "y": 435.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 200.0,
+ "y": 236.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 400.0,
+ "y": 231.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 415.0,
+ "y": 220.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 410.0,
+ "y": 225.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 266.0,
+ "y": 555.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 245.0,
+ "y": 490.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 355.0,
+ "y": 505.0
+ },
+ "params": 12
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 470.0,
+ "y": 231.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 535.0,
+ "y": 231.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 230.0,
+ "y": 176.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 235.0,
+ "y": 281.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 525.0,
+ "y": 225.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 530.0,
+ "y": 220.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 465.0,
+ "y": 220.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 460.0,
+ "y": 225.0
+ },
+ "params": 4
+ },
+ {
+ "id": "inc12",
+ "name": "inc12#0",
+ "pos": {
+ "x": 245.0,
+ "y": 525.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "CT"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "_CC"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Qn+3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Qn"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "QIOn"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Qn+3"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "B0"
+ },
+ "pin2": {
+ "compName": "Splitter#7",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#100",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#8",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#101",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "Splitter#8",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#102",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#8",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#103",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "A0"
+ },
+ "pin2": {
+ "compName": "Splitter#8",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#104",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#10",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A0"
+ },
+ "name": "unnamedWire#105",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "Splitter#10",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#106",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#10",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#107",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "Splitter#10",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#108",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#9",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "B0"
+ },
+ "name": "unnamedWire#109",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "F3"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "B1"
+ },
+ "pin2": {
+ "compName": "Splitter#9",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#110",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#9",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#111",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "B3"
+ },
+ "pin2": {
+ "compName": "Splitter#9",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#112",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#3",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#113",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#4",
+ "pinName": "O"
+ },
+ "name": "unnamedWire#114",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#115",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#116",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#117",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#118",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Splitter#4",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#119",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "F\u003d0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#120",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Splitter#6",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#121",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Splitter#5",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#122",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#7",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#123",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Splitter#8",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#124",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Splitter#9",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#125",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#10",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#126",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "WE"
+ },
+ "name": "unnamedWire#127",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "inc12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#128",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "inc12#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#129",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "F\u003d0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "inc12#0",
+ "pinName": "CI"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#130",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#131",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#132",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#133",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#134",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "S"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#135",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#136",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#137",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#138",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "F\u003d0"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "F\u003d0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "IZ"
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "OVR"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "IOVR"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "RAMn+3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "RAMn"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Cn+4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "IC"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Cn+4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Cn"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Cn+4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Cn"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Cn+4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Cn"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Clock#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Qn+3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Qn"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Cn"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "C0"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "FixedOutput#1",
+ "pinName": "out"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "_OECT"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "FixedOutput#3",
+ "pinName": "out"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "_RLD"
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "CI"
+ },
+ "pin2": {
+ "compName": "FixedOutput#5",
+ "pinName": "out"
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "_OE"
+ },
+ "pin2": {
+ "compName": "FixedOutput#7",
+ "pinName": "out"
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "FixedOutput#9",
+ "pinName": "out"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "_SE"
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "RAMn"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "RAMn+3"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "FixedOutput#11",
+ "pinName": "out"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "_EZ"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "_EOVR"
+ },
+ "name": "unnamedWire#42",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "_EC"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "_EN"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#45",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O15"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I7"
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I6"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O14"
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O13"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I5"
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I4"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O12"
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "RAMn"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "RAMn+3"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O11"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O10"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O9"
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "FixedOutput#0",
+ "pinName": "out"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#54",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 221.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#1",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#55",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 136.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#2",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#2",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "Merger#2",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#2",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#59",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Qn+3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Qn"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#1",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O4"
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O5"
+ },
+ "pin2": {
+ "compName": "Merger#1",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#61",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#1",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O6"
+ },
+ "name": "unnamedWire#62",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#63",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#64",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#67",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "Splitter#2",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#68",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#69",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Qn"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "QIO0"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#70",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#2",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "Splitter#2",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#71",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#1",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#72",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "Merger#3",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#73",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#3",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#74",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "Merger#3",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#75",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#3",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#76",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "Merger#4",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#77",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#4",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#78",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "Merger#4",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#79",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "SIO0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "RAMn"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#4",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#80",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "B3"
+ },
+ "pin2": {
+ "compName": "Splitter#4",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#81",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#4",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#82",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "B1"
+ },
+ "pin2": {
+ "compName": "Splitter#4",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#83",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#4",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "B0"
+ },
+ "name": "unnamedWire#84",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "Splitter#3",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#85",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#86",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "Splitter#3",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#87",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "A0"
+ },
+ "pin2": {
+ "compName": "Splitter#3",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#88",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#5",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "A0"
+ },
+ "name": "unnamedWire#89",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "SIOn"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "RAMn+3"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "Splitter#5",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#90",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#5",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#91",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "Splitter#5",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#92",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "B0"
+ },
+ "pin2": {
+ "compName": "Splitter#6",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#93",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#6",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#94",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "B2"
+ },
+ "pin2": {
+ "compName": "Splitter#6",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#95",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#6",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#96",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#7",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#97",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "B2"
+ },
+ "pin2": {
+ "compName": "Splitter#7",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#98",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#7",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#99",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "_rsLatch",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
+++ /dev/null
-{
- "width": 224.0,
- "height": 136.0,
- "interfacePins": [],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUIAm2901",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 315.0,
- "y": 25.0
- }
- },
- {
- "id": "GUIAm2901",
- "name": "DeserializedSubmodelComponent#1",
- "pos": {
- "x": 375.0,
- "y": 25.0
- }
- },
- {
- "id": "GUIAm2901",
- "name": "DeserializedSubmodelComponent#2",
- "pos": {
- "x": 435.0,
- "y": 25.0
- }
- },
- {
- "id": "GUIAm2901",
- "name": "DeserializedSubmodelComponent#3",
- "pos": {
- "x": 495.0,
- "y": 25.0
- }
- },
- {
- "id": "GUIAm2904",
- "name": "DeserializedSubmodelComponent#4",
- "pos": {
- "x": 175.0,
- "y": 25.0
- }
- },
- {
- "id": "GUIAm2910",
- "name": "DeserializedSubmodelComponent#5",
- "pos": {
- "x": 35.0,
- "y": 135.0
- }
- },
- {
- "id": "GUIClock",
- "name": "GUIClock#0",
- "pos": {
- "x": 90.0,
- "y": 30.0
- },
- "params": {
- "delta": 1000,
- "orientation": "DOWN"
- }
- }
- ],
- "wires": [],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "_rsLatch",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 20.0,
- "interfacePins": [
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Q",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "_Q",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "_R",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "_S",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 10.0,
- "y": 7.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 40.0,
- "y": 12.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 34.0,
- "y": 16.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 64.0,
- "y": 36.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_Q"
- },
- "name": "_q",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q"
- },
- "name": "q",
- "path": [
- {
- "x": 35.0,
- "y": 17.5
- },
- {
- "x": 35.0,
- "y": 7.5
- },
- {
- "x": 65.0,
- "y": 7.5
- },
- {
- "x": 65.0,
- "y": 12.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_S"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_R"
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 35.0,
- "y": 37.5
- },
- {
- "x": 35.0,
- "y": 27.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 65.0,
- "y": 22.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 65.0,
- "y": 42.5
- },
- {
- "x": 5.0,
- "y": 42.5
- },
- {
- "x": 5.0,
- "y": 22.5
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "_rsLatch",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {
- "q": {
- "id": "wireForcing",
- "params": {
- "wiresToForce": [
- "q"
- ],
- "wiresToForceInverted": [
- "_q"
- ]
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 20.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "B",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 20.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 50.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 44.0,
- "y": 24.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#0"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#1"
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 45.0,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 45.0,
- "y": 30.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#5"
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIand",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 50.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "A4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "B",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Y2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Y3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Y4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUIand",
- "name": "GUIand#0",
- "pos": {
- "x": 30.0,
- "y": 7.5
- }
- },
- {
- "id": "GUIand",
- "name": "GUIand#1",
- "pos": {
- "x": 30.0,
- "y": 32.5
- }
- },
- {
- "id": "GUIand",
- "name": "GUIand#2",
- "pos": {
- "x": 30.0,
- "y": 57.5
- }
- },
- {
- "id": "GUIand",
- "name": "GUIand#3",
- "pos": {
- "x": 30.0,
- "y": 82.5
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 24.0,
- "y": 46.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 24.0,
- "y": 71.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 24.0,
- "y": 96.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "A"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "GUIand#1",
- "pinName": "A"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "B"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 25.0,
- "y": 22.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y1"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIand#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y2"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIand#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y3"
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIand#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y4"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "GUIand#2",
- "pinName": "A"
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A4"
- },
- "pin2": {
- "compName": "GUIand#3",
- "pinName": "A"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 25.0,
- "y": 112.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#3",
- "pinName": "B"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#2",
- "pinName": "B"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#1",
- "pinName": "B"
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIand41",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 90.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "A4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "B",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "C1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "C2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "C3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "C4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Y2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Y3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Y4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUIand41",
- "name": "GUIand41#0",
- "pos": {
- "x": 15.0,
- "y": 137.5
- }
- },
- {
- "id": "GUIor_4",
- "name": "GUIor_4#0",
- "pos": {
- "x": 35.0,
- "y": 37.5
- }
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 10.0,
- "y": 112.5
- },
- {
- "x": 10.0,
- "y": 142.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 5.0,
- "y": 137.5
- },
- {
- "x": 5.0,
- "y": 152.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIor_4#0",
- "pinName": "B2"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 65.0,
- "y": 152.5
- },
- {
- "x": 65.0,
- "y": 125.0
- },
- {
- "x": 25.0,
- "y": 125.0
- },
- {
- "x": 25.0,
- "y": 92.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIor_4#0",
- "pinName": "B3"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 60.0,
- "y": 162.5
- },
- {
- "x": 60.0,
- "y": 130.0
- },
- {
- "x": 20.0,
- "y": 130.0
- },
- {
- "x": 20.0,
- "y": 102.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIor_4#0",
- "pinName": "B4"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 55.0,
- "y": 172.5
- },
- {
- "x": 55.0,
- "y": 135.0
- },
- {
- "x": 15.0,
- "y": 135.0
- },
- {
- "x": 15.0,
- "y": 112.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIor_4#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y1"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 75.0,
- "y": 42.5
- },
- {
- "x": 75.0,
- "y": 12.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIor_4#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y2"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 80.0,
- "y": 52.5
- },
- {
- "x": 80.0,
- "y": 37.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIor_4#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y3"
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIor_4#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y4"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 80.0,
- "y": 72.5
- },
- {
- "x": 80.0,
- "y": 87.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A4"
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 5.0,
- "y": 187.5
- },
- {
- "x": 5.0,
- "y": 172.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "B"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 10.0,
- "y": 212.5
- },
- {
- "x": 10.0,
- "y": 182.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C1"
- },
- "pin2": {
- "compName": "GUIor_4#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 10.0,
- "y": 12.5
- },
- {
- "x": 10.0,
- "y": 42.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C2"
- },
- "pin2": {
- "compName": "GUIor_4#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 5.0,
- "y": 37.5
- },
- {
- "x": 5.0,
- "y": 52.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C3"
- },
- "pin2": {
- "compName": "GUIor_4#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C4"
- },
- "pin2": {
- "compName": "GUIor_4#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 5.0,
- "y": 87.5
- },
- {
- "x": 5.0,
- "y": 72.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIor_4#0",
- "pinName": "B1"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 70.0,
- "y": 142.5
- },
- {
- "x": 70.0,
- "y": 120.0
- },
- {
- "x": 30.0,
- "y": 120.0
- },
- {
- "x": 30.0,
- "y": 82.5
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIandor414",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 40.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "S0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "S1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y00",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Y01",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Y10",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Y11",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 10.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 10.0,
- "y": 27.5
- },
- "params": 1
- },
- {
- "id": "GUIand",
- "name": "GUIand#0",
- "pos": {
- "x": 40.0,
- "y": 2.5
- }
- },
- {
- "id": "GUIand",
- "name": "GUIand#1",
- "pos": {
- "x": 40.0,
- "y": 27.5
- }
- },
- {
- "id": "GUIand",
- "name": "GUIand#2",
- "pos": {
- "x": 40.0,
- "y": 52.5
- }
- },
- {
- "id": "GUIand",
- "name": "GUIand#3",
- "pos": {
- "x": 40.0,
- "y": 77.5
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 6.5,
- "y": 11.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 6.5,
- "y": 16.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 36.5,
- "y": 61.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 4.0,
- "y": 36.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 4.0,
- "y": 41.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 31.5,
- "y": 66.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 31.5,
- "y": 11.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 34.0,
- "y": 36.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S1"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "A"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 32.5,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "B"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 35.0,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#1",
- "pinName": "A"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 37.5,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#1",
- "pinName": "B"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 35.0,
- "y": 42.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#2",
- "pinName": "A"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 32.5,
- "y": 57.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#2",
- "pinName": "B"
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#3",
- "pinName": "A"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 37.5,
- "y": 82.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#3",
- "pinName": "B"
- },
- "name": "unnamedWire#19",
- "path": [
- {
- "x": 32.5,
- "y": 92.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 7.5,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y00"
- },
- "name": "unnamedWire#20"
- },
- {
- "pin1": {
- "compName": "GUIand#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y01"
- },
- "name": "unnamedWire#21"
- },
- {
- "pin1": {
- "compName": "GUIand#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y10"
- },
- "name": "unnamedWire#22"
- },
- {
- "pin1": {
- "compName": "GUIand#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y11"
- },
- "name": "unnamedWire#23"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 5.0,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 7.5,
- "y": 62.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 5.0,
- "y": 67.5
- },
- {
- "x": 32.5,
- "y": 67.5
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIdemux2",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 20.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "D",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Q",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "_Q",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.2,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 120.0,
- "y": 60.0
- },
- "params": 1
- },
- {
- "id": "GUI_rsLatch",
- "name": "GUI_rsLatch#0",
- "pos": {
- "x": 40.0,
- "y": 10.0
- }
- },
- {
- "id": "GUI_rsLatch",
- "name": "GUI_rsLatch#1",
- "pos": {
- "x": 120.0,
- "y": 30.0
- }
- },
- {
- "id": "GUInand3",
- "name": "GUInand3#0",
- "pos": {
- "x": 40.0,
- "y": 40.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 9.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 19.0,
- "y": 64.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 99.0,
- "y": 34.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 99.0,
- "y": 44.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUI_rsLatch#0",
- "pinName": "_R"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUInand3#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUI_rsLatch#1",
- "pinName": "_R"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 100.0,
- "y": 65.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUI_rsLatch#1",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q"
- },
- "name": "unnamedWire#13"
- },
- {
- "pin1": {
- "compName": "GUI_rsLatch#1",
- "pinName": "_Q"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_Q"
- },
- "name": "unnamedWire#14"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUInand3#0",
- "pinName": "B"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 10.0,
- "y": 55.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 145.0,
- "y": 70.0
- },
- {
- "x": 145.0,
- "y": 85.0
- },
- {
- "x": 20.0,
- "y": 85.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUI_rsLatch#0",
- "pinName": "_S"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 20.0,
- "y": 15.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUInand3#0",
- "pinName": "C"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUI_rsLatch#0",
- "pinName": "_Q"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 100.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUInand3#0",
- "pinName": "A"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 30.0,
- "y": 35.0
- },
- {
- "x": 30.0,
- "y": 45.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUI_rsLatch#1",
- "pinName": "_S"
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIdff",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {
- "q": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUI_rsLatch#1",
- "subStateID": "q"
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 60.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "D1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "D2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "D3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "D4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Q1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Q2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Q3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Q4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "WE",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.2,
- "submodel": {
- "components": [
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 55.0,
- "y": 70.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#0",
- "pos": {
- "x": 115.0,
- "y": 20.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#1",
- "pos": {
- "x": 115.0,
- "y": 70.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#2",
- "pos": {
- "x": 115.0,
- "y": 120.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#3",
- "pos": {
- "x": 115.0,
- "y": 170.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 104.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 104.0,
- "y": 74.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 104.0,
- "y": 124.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 169.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 164.0,
- "y": 74.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 159.0,
- "y": 124.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 154.0,
- "y": 174.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIdff#0",
- "pinName": "D"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 100.0,
- "y": 75.0
- },
- {
- "x": 100.0,
- "y": 35.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_2"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 5.0,
- "y": 175.0
- },
- {
- "x": 5.0,
- "y": 135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 10.0,
- "y": 225.0
- },
- {
- "x": 10.0,
- "y": 145.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff#0",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q1"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#1",
- "pinName": "Q"
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_4"
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 15.0,
- "y": 275.0
- },
- {
- "x": 15.0,
- "y": 155.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff#2",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q3"
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIdff#1",
- "pinName": "D"
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q4"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#3",
- "pinName": "Q"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIdff#2",
- "pinName": "D"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 100.0,
- "y": 95.0
- },
- {
- "x": 100.0,
- "y": 135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIdff#3",
- "pinName": "D"
- },
- "name": "unnamedWire#23",
- "path": [
- {
- "x": 95.0,
- "y": 105.0
- },
- {
- "x": 95.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 170.0,
- "y": 195.0
- },
- {
- "x": 50.0,
- "y": 195.0
- },
- {
- "x": 50.0,
- "y": 85.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_2"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 165.0,
- "y": 200.0
- },
- {
- "x": 45.0,
- "y": 200.0
- },
- {
- "x": 45.0,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_3"
- },
- "name": "unnamedWire#26",
- "path": [
- {
- "x": 160.0,
- "y": 205.0
- },
- {
- "x": 40.0,
- "y": 205.0
- },
- {
- "x": 40.0,
- "y": 105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_4"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 155.0,
- "y": 210.0
- },
- {
- "x": 35.0,
- "y": 210.0
- },
- {
- "x": 35.0,
- "y": 115.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#0",
- "pinName": "C"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#1",
- "pinName": "C"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#2",
- "pinName": "C"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#3",
- "pinName": "C"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 105.0,
- "y": 175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "WE"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "D flip flop\n4 bit",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {
- "q1": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff#0",
- "subStateID": "q"
- }
- },
- "q2": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff#1",
- "subStateID": "q"
- }
- },
- "q": {
- "id": "bitVectorSplitting",
- "params": {
- "vectorPartTargets": [
- "q1",
- "q2",
- "q3",
- "q4"
- ],
- "vectorPartLengthes": [
- 1,
- 1,
- 1,
- 1
- ]
- }
- },
- "q3": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff#2",
- "subStateID": "q"
- }
- },
- "q4": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff#3",
- "subStateID": "q"
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 60.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "D1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "D2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "D3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "D4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Q1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Q2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Q3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Q4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "_WE",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.2,
- "submodel": {
- "components": [
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 55.0,
- "y": 70.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#0",
- "pos": {
- "x": 115.0,
- "y": 20.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#1",
- "pos": {
- "x": 115.0,
- "y": 70.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#2",
- "pos": {
- "x": 115.0,
- "y": 120.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#3",
- "pos": {
- "x": 115.0,
- "y": 170.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 104.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 104.0,
- "y": 74.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 104.0,
- "y": 124.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 169.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 164.0,
- "y": 74.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 159.0,
- "y": 124.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 154.0,
- "y": 174.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIdff#0",
- "pinName": "D"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 100.0,
- "y": 75.0
- },
- {
- "x": 100.0,
- "y": 35.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 10.0,
- "y": 125.0
- },
- {
- "x": 10.0,
- "y": 85.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_2"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 15.0,
- "y": 175.0
- },
- {
- "x": 15.0,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_3"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 20.0,
- "y": 225.0
- },
- {
- "x": 20.0,
- "y": 105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff#0",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q1"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#1",
- "pinName": "Q"
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_4"
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 25.0,
- "y": 275.0
- },
- {
- "x": 25.0,
- "y": 115.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff#2",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q3"
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIdff#1",
- "pinName": "D"
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q4"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#3",
- "pinName": "Q"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIdff#2",
- "pinName": "D"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 100.0,
- "y": 95.0
- },
- {
- "x": 100.0,
- "y": 135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIdff#3",
- "pinName": "D"
- },
- "name": "unnamedWire#23",
- "path": [
- {
- "x": 95.0,
- "y": 105.0
- },
- {
- "x": 95.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 170.0,
- "y": 205.0
- },
- {
- "x": 50.0,
- "y": 205.0
- },
- {
- "x": 50.0,
- "y": 125.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_2"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 165.0,
- "y": 210.0
- },
- {
- "x": 45.0,
- "y": 210.0
- },
- {
- "x": 45.0,
- "y": 135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#26",
- "path": [
- {
- "x": 160.0,
- "y": 215.0
- },
- {
- "x": 40.0,
- "y": 215.0
- },
- {
- "x": 40.0,
- "y": 145.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_4"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 155.0,
- "y": 220.0
- },
- {
- "x": 35.0,
- "y": 220.0
- },
- {
- "x": 35.0,
- "y": 155.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#0",
- "pinName": "C"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#1",
- "pinName": "C"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#2",
- "pinName": "C"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#3",
- "pinName": "C"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 105.0,
- "y": 175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_WE"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "D flip flop\n4 bit",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {
- "q1": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff#0",
- "subStateID": "q"
- }
- },
- "q2": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff#1",
- "subStateID": "q"
- }
- },
- "q": {
- "id": "bitVectorSplitting",
- "params": {
- "vectorPartTargets": [
- "q1",
- "q2",
- "q3",
- "q4"
- ],
- "vectorPartLengthes": [
- 1,
- 1,
- 1,
- 1
- ]
- }
- },
- "q3": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff#2",
- "subStateID": "q"
- }
- },
- "q4": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff#3",
- "subStateID": "q"
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 20.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "D",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "E",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Q",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "_Q",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 10.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 15.0,
- "y": 27.5
- },
- "params": 1
- },
- {
- "id": "GUI_rsLatch",
- "name": "GUI_rsLatch#0",
- "pos": {
- "x": 45.0,
- "y": 7.5
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 4.0,
- "y": 36.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 34.0,
- "y": 11.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#0"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "E"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 5.0,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 5.0,
- "y": 42.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 35.0,
- "y": 25.0
- },
- {
- "x": 10.0,
- "y": 25.0
- },
- {
- "x": 10.0,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUI_rsLatch#0",
- "pinName": "_S"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUI_rsLatch#0",
- "pinName": "_R"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 40.0,
- "y": 37.5
- },
- {
- "x": 40.0,
- "y": 22.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUI_rsLatch#0",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUI_rsLatch#0",
- "pinName": "_Q"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_Q"
- },
- "name": "unnamedWire#9"
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIdlatch",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {
- "q": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUI_rsLatch#0",
- "subStateID": "q"
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 50.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "D1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "D2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "D3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "D4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Q1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Q2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Q3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Q4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUIdlatch",
- "name": "GUIdlatch#0",
- "pos": {
- "x": 30.0,
- "y": 7.5
- }
- },
- {
- "id": "GUIdlatch",
- "name": "GUIdlatch#1",
- "pos": {
- "x": 30.0,
- "y": 32.5
- }
- },
- {
- "id": "GUIdlatch",
- "name": "GUIdlatch#2",
- "pos": {
- "x": 30.0,
- "y": 57.5
- }
- },
- {
- "id": "GUIdlatch",
- "name": "GUIdlatch#3",
- "pos": {
- "x": 30.0,
- "y": 82.5
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 14.0,
- "y": 46.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 14.0,
- "y": 71.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 14.0,
- "y": 96.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 15.0,
- "y": 112.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch#3",
- "pinName": "E"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D4"
- },
- "pin2": {
- "compName": "GUIdlatch#3",
- "pinName": "D"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch#0",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q1"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch#1",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q2"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch#2",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q3"
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch#3",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q4"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch#2",
- "pinName": "E"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch#1",
- "pinName": "E"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch#0",
- "pinName": "E"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 15.0,
- "y": 22.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "GUIdlatch#0",
- "pinName": "D"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D2"
- },
- "pin2": {
- "compName": "GUIdlatch#1",
- "pinName": "D"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D3"
- },
- "pin2": {
- "compName": "GUIdlatch#2",
- "pinName": "D"
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIdlatch4",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {
- "q1": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdlatch#0",
- "subStateID": "q"
- }
- },
- "q2": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdlatch#1",
- "subStateID": "q"
- }
- },
- "q": {
- "id": "bitVectorSplitting",
- "params": {
- "vectorPartTargets": [
- "q1",
- "q2",
- "q3",
- "q4"
- ],
- "vectorPartLengthes": [
- 1,
- 1,
- 1,
- 1
- ]
- }
- },
- "q3": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdlatch#2",
- "subStateID": "q"
- }
- },
- "q4": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdlatch#3",
- "subStateID": "q"
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 30.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "B",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Z",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 57.5,
- "y": 40.0
- },
- "params": 1
- },
- {
- "id": "GUIhalfadder",
- "name": "GUIhalfadder#0",
- "pos": {
- "x": 5.0,
- "y": 40.0
- }
- },
- {
- "id": "GUIhalfadder",
- "name": "GUIhalfadder#1",
- "pos": {
- "x": 45.0,
- "y": 7.5
- }
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A"
- },
- "pin2": {
- "compName": "GUIhalfadder#1",
- "pinName": "A"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUIhalfadder#0",
- "pinName": "A"
- },
- "name": "unnamedWire#1"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "GUIhalfadder#0",
- "pinName": "B"
- },
- "name": "unnamedWire#2"
- },
- {
- "pin1": {
- "compName": "GUIhalfadder#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIhalfadder#1",
- "pinName": "B"
- },
- "name": "unnamedWire#3"
- },
- {
- "pin1": {
- "compName": "GUIhalfadder#0",
- "pinName": "_Z"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIhalfadder#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIhalfadder#1",
- "pinName": "_Z"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 82.5,
- "y": 22.5
- },
- {
- "x": 82.5,
- "y": 35.0
- },
- {
- "x": 52.5,
- "y": 35.0
- },
- {
- "x": 52.5,
- "y": 45.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Z"
- },
- "name": "unnamedWire#7"
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIfulladder",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 20.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "B",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "_Z",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 10.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 40.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 40.0,
- "y": 27.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 65.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 4.0,
- "y": 11.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 4.0,
- "y": 36.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 34.0,
- "y": 24.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 5.0,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 62.5,
- "y": 12.5
- },
- {
- "x": 62.5,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 62.5,
- "y": 37.5
- },
- {
- "x": 62.5,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 5.0,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 5.0,
- "y": 42.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 5.0,
- "y": 30.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_Z"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 80.0,
- "y": 25.0
- },
- {
- "x": 80.0,
- "y": 37.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 35.0,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 35.0,
- "y": 32.5
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIhalfadder",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 30.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "I0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "I1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "S0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 10.0,
- "y": 7.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 35.0,
- "y": 22.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 35.0,
- "y": 47.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 60.0,
- "y": 30.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 4.0,
- "y": 11.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 4.0,
- "y": 21.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#10"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#4"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 5.0,
- "y": 52.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#8"
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#9"
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUImux1",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 90.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "I0_1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "I0_2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "I0_3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "I0_4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "I1_1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "I1_2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "I1_3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "I1_4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "S0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Y2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Y3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Y4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUImux1",
- "name": "GUImux1#0",
- "pos": {
- "x": 30.0,
- "y": 7.5
- }
- },
- {
- "id": "GUImux1",
- "name": "GUImux1#1",
- "pos": {
- "x": 30.0,
- "y": 42.5
- }
- },
- {
- "id": "GUImux1",
- "name": "GUImux1#2",
- "pos": {
- "x": 30.0,
- "y": 77.5
- }
- },
- {
- "id": "GUImux1",
- "name": "GUImux1#3",
- "pos": {
- "x": 30.0,
- "y": 112.5
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 24.0,
- "y": 11.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 24.0,
- "y": 46.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 24.0,
- "y": 81.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1#2",
- "pinName": "S0"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I0_3"
- },
- "pin2": {
- "compName": "GUImux1#2",
- "pinName": "I0"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 5.0,
- "y": 87.5
- },
- {
- "x": 5.0,
- "y": 92.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I1_3"
- },
- "pin2": {
- "compName": "GUImux1#2",
- "pinName": "I1"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 20.0,
- "y": 187.5
- },
- {
- "x": 20.0,
- "y": 102.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUImux1#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y3"
- },
- "name": "unnamedWire#14"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1#3",
- "pinName": "S0"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 25.0,
- "y": 117.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I0_4"
- },
- "pin2": {
- "compName": "GUImux1#3",
- "pinName": "I0"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 5.0,
- "y": 112.5
- },
- {
- "x": 5.0,
- "y": 127.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I1_4"
- },
- "pin2": {
- "compName": "GUImux1#3",
- "pinName": "I1"
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 25.0,
- "y": 212.5
- },
- {
- "x": 25.0,
- "y": 137.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUImux1#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y4"
- },
- "name": "unnamedWire#18"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I0_1"
- },
- "pin2": {
- "compName": "GUImux1#0",
- "pinName": "I0"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 5.0,
- "y": 37.5
- },
- {
- "x": 5.0,
- "y": 22.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I1_1"
- },
- "pin2": {
- "compName": "GUImux1#0",
- "pinName": "I1"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 10.0,
- "y": 137.5
- },
- {
- "x": 10.0,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUImux1#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y1"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1#1",
- "pinName": "S0"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I0_2"
- },
- "pin2": {
- "compName": "GUImux1#1",
- "pinName": "I0"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 5.0,
- "y": 62.5
- },
- {
- "x": 5.0,
- "y": 57.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I1_2"
- },
- "pin2": {
- "compName": "GUImux1#1",
- "pinName": "I1"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 15.0,
- "y": 162.5
- },
- {
- "x": 15.0,
- "y": 67.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUImux1#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y2"
- },
- "name": "unnamedWire#9"
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUImux1_4",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 70.0,
- "height": 70.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 30.0
- },
- "name": "I00",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 40.0
- },
- "name": "I01",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 50.0
- },
- "name": "I10",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 60.0
- },
- "name": "I11",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 20.0
- },
- "name": "S0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 10.0
- },
- "name": "S1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 70.0,
- "y": 10.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUIsel1",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 60.0,
- "y": 35.0
- }
- },
- {
- "id": "GUIsel1",
- "name": "DeserializedSubmodelComponent#1",
- "pos": {
- "x": 60.0,
- "y": 100.0
- }
- },
- {
- "id": "GUImux1",
- "name": "DeserializedSubmodelComponent#2",
- "pos": {
- "x": 115.0,
- "y": 20.0
- }
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 30.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 24.0,
- "y": 29.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 24.0,
- "y": 49.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 54.0,
- "y": 39.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "S0"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S2"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S1"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 55.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "S2"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 25.0,
- "y": 115.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "S1"
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 55.0,
- "y": 105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 25.0,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I00"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 35.0,
- "y": 75.0
- },
- {
- "x": 35.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I01"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I2"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 40.0,
- "y": 100.0
- },
- {
- "x": 40.0,
- "y": 70.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I10"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I1"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I11"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I2"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 20.0,
- "y": 150.0
- },
- {
- "x": 20.0,
- "y": 135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 105.0,
- "y": 40.0
- },
- {
- "x": 105.0,
- "y": 35.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 105.0,
- "y": 105.0
- },
- {
- "x": 105.0,
- "y": 45.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "S0"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 15.0,
- "y": 25.0
- },
- {
- "x": 15.0,
- "y": 10.0
- },
- {
- "x": 85.0,
- "y": 10.0
- },
- {
- "x": 85.0,
- "y": 25.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUImux2",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 62.0,
- "height": 90.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 30.0
- },
- "name": "I00",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 40.0
- },
- "name": "I01",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 50.0
- },
- "name": "I10",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 60.0
- },
- "name": "I11",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 10.0
- },
- "name": "S0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 20.0
- },
- "name": "S1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 62.0,
- "y": 16.0
- },
- "name": "Y",
- "logicWidth": 4,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 40.0,
- "y": 30.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#1",
- "pos": {
- "x": 40.0,
- "y": 125.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#2",
- "pos": {
- "x": 100.0,
- "y": 20.0
- }
- },
- {
- "id": "GUIMerger",
- "name": "GUIMerger#0",
- "pos": {
- "x": 140.0,
- "y": 25.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#0",
- "pos": {
- "x": 25.0,
- "y": 45.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#1",
- "pos": {
- "x": 25.0,
- "y": 85.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#2",
- "pos": {
- "x": 25.0,
- "y": 140.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#3",
- "pos": {
- "x": 25.0,
- "y": 180.0
- },
- "params": 4
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 19.0,
- "y": 34.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I0_2"
- },
- "pin2": {
- "compName": "GUISplitter#2",
- "pinName": "O1"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_1"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "O0"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "O3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_4"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_4"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O3"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_3"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O2"
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_2"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O1"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_1"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O0"
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 20.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "S0"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 20.0,
- "y": 130.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "I"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "I00"
- },
- "name": "unnamedWire#19",
- "path": [
- {
- "x": 15.0,
- "y": 60.0
- },
- {
- "x": 15.0,
- "y": 75.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I0_3"
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I01"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "I"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "I"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "I10"
- },
- "name": "unnamedWire#21",
- "path": [
- {
- "x": 15.0,
- "y": 155.0
- },
- {
- "x": 15.0,
- "y": 125.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I11"
- },
- "pin2": {
- "compName": "GUISplitter#3",
- "pinName": "I"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 10.0,
- "y": 150.0
- },
- {
- "x": 10.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0_2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y2"
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0_3"
- },
- "name": "unnamedWire#25",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0_4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y4"
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1_1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y1"
- },
- "name": "unnamedWire#27",
- "path": [
- {
- "x": 80.0,
- "y": 75.0
- },
- {
- "x": 80.0,
- "y": 130.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1_2"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 85.0,
- "y": 140.0
- },
- {
- "x": 85.0,
- "y": 85.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1_3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y3"
- },
- "name": "unnamedWire#29",
- "path": [
- {
- "x": 90.0,
- "y": 95.0
- },
- {
- "x": 90.0,
- "y": 150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1_4"
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 95.0,
- "y": 160.0
- },
- {
- "x": 95.0,
- "y": 105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "O"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#31",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y1"
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I1"
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y3"
- },
- "name": "unnamedWire#34",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I3"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "S0"
- },
- "name": "unnamedWire#36",
- "path": [
- {
- "x": 15.0,
- "y": 50.0
- },
- {
- "x": 15.0,
- "y": 20.0
- },
- {
- "x": 60.0,
- "y": 20.0
- },
- {
- "x": 60.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I0_4"
- },
- "pin2": {
- "compName": "GUISplitter#2",
- "pinName": "O3"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I1_2"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I1_3"
- },
- "pin2": {
- "compName": "GUISplitter#3",
- "pinName": "O2"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "O3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I1_4"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_2"
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUImux1_4",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 80.0,
- "height": 120.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 40.0
- },
- "name": "I000",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 50.0
- },
- "name": "I001",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 60.0
- },
- "name": "I010",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 70.0
- },
- "name": "I011",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 80.0
- },
- "name": "I100",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 90.0
- },
- "name": "I101",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 100.0
- },
- "name": "I110",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 110.0
- },
- "name": "I111",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 30.0
- },
- "name": "S0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 20.0
- },
- "name": "S1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 10.0
- },
- "name": "S2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 80.0,
- "y": 10.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUImux2",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 35.0,
- "y": 185.0
- }
- },
- {
- "id": "GUImux1",
- "name": "DeserializedSubmodelComponent#2",
- "pos": {
- "x": 125.0,
- "y": 20.0
- }
- },
- {
- "id": "GUImux2",
- "name": "DeserializedSubmodelComponent#3",
- "pos": {
- "x": 35.0,
- "y": 85.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 19.0,
- "y": 104.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 24.0,
- "y": 94.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 20.0,
- "y": 75.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "S1"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 25.0,
- "y": 50.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I11"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "I011"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 15.0,
- "y": 145.0
- },
- {
- "x": 15.0,
- "y": 175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I00"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "I100"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 10.0,
- "y": 215.0
- },
- {
- "x": 10.0,
- "y": 200.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I101"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I01"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I10"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "I110"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 10.0,
- "y": 235.0
- },
- {
- "x": 10.0,
- "y": 250.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I111"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I11"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 15.0,
- "y": 275.0
- },
- {
- "x": 15.0,
- "y": 245.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 115.0,
- "y": 195.0
- },
- {
- "x": 115.0,
- "y": 45.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 110.0,
- "y": 95.0
- },
- {
- "x": 110.0,
- "y": 35.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "S2"
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "S1"
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S1"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 25.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 20.0,
- "y": 205.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I000"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I00"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 10.0,
- "y": 100.0
- },
- {
- "x": 10.0,
- "y": 115.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I01"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "I001"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I010"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I10"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 10.0,
- "y": 150.0
- },
- {
- "x": 10.0,
- "y": 135.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUImux3",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 30.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "B",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 10.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 35.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 62.5,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 31.5,
- "y": 24.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#0"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#1"
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 32.5,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 32.5,
- "y": 30.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 57.5,
- "y": 25.0
- },
- {
- "x": 57.5,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 60.0,
- "y": 62.5
- },
- {
- "x": 60.0,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#7",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUInand3",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 40.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "A4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Y2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Y3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Y4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 30.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 30.0,
- "y": 27.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 30.0,
- "y": 52.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 30.0,
- "y": 77.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 14.0,
- "y": 11.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 14.0,
- "y": 36.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 14.0,
- "y": 61.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 14.0,
- "y": 86.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 15.0,
- "y": 67.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 15.0,
- "y": 92.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y1"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y2"
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y3"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y4"
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A4"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 15.0,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 15.0,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 15.0,
- "y": 57.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 15.0,
- "y": 82.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 15.0,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 15.0,
- "y": 42.5
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUInot4",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 40.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "A4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.2,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 20.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 20.0,
- "y": 65.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 20.0,
- "y": 115.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 20.0,
- "y": 165.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#4",
- "pos": {
- "x": 50.0,
- "y": 40.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#5",
- "pos": {
- "x": 50.0,
- "y": 140.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#6",
- "pos": {
- "x": 110.0,
- "y": 40.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#7",
- "pos": {
- "x": 110.0,
- "y": 140.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#8",
- "pos": {
- "x": 140.0,
- "y": 90.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 14.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 14.0,
- "y": 74.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 14.0,
- "y": 124.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 14.0,
- "y": 174.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 104.0,
- "y": 49.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 104.0,
- "y": 149.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 15.0,
- "y": 130.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 15.0,
- "y": 180.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "A"
- },
- "name": "unnamedWire#12"
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "B"
- },
- "name": "unnamedWire#13"
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "A"
- },
- "name": "unnamedWire#14"
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "B"
- },
- "name": "unnamedWire#15"
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#5",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "A"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 105.0,
- "y": 45.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "B"
- },
- "name": "unnamedWire#19",
- "path": [
- {
- "x": 105.0,
- "y": 55.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "A"
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 105.0,
- "y": 145.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "B"
- },
- "name": "unnamedWire#21",
- "path": [
- {
- "x": 105.0,
- "y": 155.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#6",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "A"
- },
- "name": "unnamedWire#22"
- },
- {
- "pin1": {
- "compName": "GUINandGate#7",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "B"
- },
- "name": "unnamedWire#23"
- },
- {
- "pin1": {
- "compName": "GUINandGate#8",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#24"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A4"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 15.0,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 15.0,
- "y": 70.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 15.0,
- "y": 120.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 15.0,
- "y": 170.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 15.0,
- "y": 30.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 15.0,
- "y": 80.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIor4",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 80.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "A4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "B1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "B2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "B3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "B4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Y2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Y3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Y4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 15.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 15.0,
- "y": 27.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#10",
- "pos": {
- "x": 65.0,
- "y": 52.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#11",
- "pos": {
- "x": 65.0,
- "y": 77.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 15.0,
- "y": 52.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 15.0,
- "y": 77.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#4",
- "pos": {
- "x": 15.0,
- "y": 102.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#5",
- "pos": {
- "x": 15.0,
- "y": 127.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#6",
- "pos": {
- "x": 15.0,
- "y": 152.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#7",
- "pos": {
- "x": 15.0,
- "y": 177.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#8",
- "pos": {
- "x": 65.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#9",
- "pos": {
- "x": 65.0,
- "y": 27.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 6.5,
- "y": 11.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 6.5,
- "y": 36.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 6.5,
- "y": 61.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 6.5,
- "y": 86.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 6.5,
- "y": 111.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 6.5,
- "y": 136.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 6.5,
- "y": 161.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 6.5,
- "y": 186.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 7.5,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 7.5,
- "y": 42.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 7.5,
- "y": 57.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 7.5,
- "y": 67.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 7.5,
- "y": 82.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 7.5,
- "y": 92.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "A"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 7.5,
- "y": 107.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "B"
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 7.5,
- "y": 117.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "A"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 7.5,
- "y": 132.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "B"
- },
- "name": "unnamedWire#19",
- "path": [
- {
- "x": 7.5,
- "y": 142.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "A"
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 7.5,
- "y": 157.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "B"
- },
- "name": "unnamedWire#21",
- "path": [
- {
- "x": 7.5,
- "y": 167.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "A"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 7.5,
- "y": 182.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "B"
- },
- "name": "unnamedWire#23",
- "path": [
- {
- "x": 7.5,
- "y": 192.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "A"
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 40.0,
- "y": 12.5
- },
- {
- "x": 40.0,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "B"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 45.0,
- "y": 112.5
- },
- {
- "x": 45.0,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#9",
- "pinName": "A"
- },
- "name": "unnamedWire#26",
- "path": [
- {
- "x": 40.0,
- "y": 37.5
- },
- {
- "x": 40.0,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#5",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#9",
- "pinName": "B"
- },
- "name": "unnamedWire#27",
- "path": [
- {
- "x": 50.0,
- "y": 137.5
- },
- {
- "x": 50.0,
- "y": 42.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#10",
- "pinName": "A"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 40.0,
- "y": 62.5
- },
- {
- "x": 40.0,
- "y": 57.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#6",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#10",
- "pinName": "B"
- },
- "name": "unnamedWire#29",
- "path": [
- {
- "x": 55.0,
- "y": 162.5
- },
- {
- "x": 55.0,
- "y": 67.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A4"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#11",
- "pinName": "A"
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 40.0,
- "y": 87.5
- },
- {
- "x": 40.0,
- "y": 82.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#7",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#11",
- "pinName": "B"
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 60.0,
- "y": 187.5
- },
- {
- "x": 60.0,
- "y": 92.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#8",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y1"
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#9",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y2"
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#10",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y3"
- },
- "name": "unnamedWire#34",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#11",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y4"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B1"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B2"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B3"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B4"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 7.5,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 7.5,
- "y": 17.5
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIor_4",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 90.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "B0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "B1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "D1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "D2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "D3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "D4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "QA1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "QA2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "QA3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "QA4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 45.0
- },
- "name": "QB1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 55.0
- },
- "name": "QB2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 65.0
- },
- "name": "QB3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 75.0
- },
- "name": "QB4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "WE",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.1,
- "submodel": {
- "components": [
- {
- "id": "GUIand41",
- "name": "GUIand41#0",
- "pos": {
- "x": 130.0,
- "y": 150.0
- }
- },
- {
- "id": "GUIand41",
- "name": "GUIand41#1",
- "pos": {
- "x": 235.0,
- "y": 375.0
- }
- },
- {
- "id": "GUIand41",
- "name": "GUIand41#2",
- "pos": {
- "x": 135.0,
- "y": 325.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#0",
- "pos": {
- "x": 235.0,
- "y": 485.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#1",
- "pos": {
- "x": 235.0,
- "y": 635.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#2",
- "pos": {
- "x": 235.0,
- "y": 785.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#3",
- "pos": {
- "x": 135.0,
- "y": 435.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#4",
- "pos": {
- "x": 135.0,
- "y": 585.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#5",
- "pos": {
- "x": 135.0,
- "y": 735.0
- }
- },
- {
- "id": "GUIdemux2",
- "name": "GUIdemux2#0",
- "pos": {
- "x": 55.0,
- "y": 45.0
- }
- },
- {
- "id": "GUIdemux2",
- "name": "GUIdemux2#1",
- "pos": {
- "x": 55.0,
- "y": 150.0
- }
- },
- {
- "id": "GUIdlatch4",
- "name": "GUIdlatch4#0",
- "pos": {
- "x": 55.0,
- "y": 325.0
- }
- },
- {
- "id": "GUIdlatch4",
- "name": "GUIdlatch4#1",
- "pos": {
- "x": 55.0,
- "y": 475.0
- }
- },
- {
- "id": "GUIdlatch4",
- "name": "GUIdlatch4#2",
- "pos": {
- "x": 55.0,
- "y": 625.0
- }
- },
- {
- "id": "GUIdlatch4",
- "name": "GUIdlatch4#3",
- "pos": {
- "x": 55.0,
- "y": 775.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 109.0,
- "y": 154.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 104.0,
- "y": 164.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 44.0,
- "y": 499.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#11",
- "pos": {
- "x": 49.0,
- "y": 509.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#12",
- "pos": {
- "x": 34.0,
- "y": 629.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#13",
- "pos": {
- "x": 39.0,
- "y": 639.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#14",
- "pos": {
- "x": 44.0,
- "y": 649.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#15",
- "pos": {
- "x": 49.0,
- "y": 659.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#16",
- "pos": {
- "x": 129.0,
- "y": 329.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#17",
- "pos": {
- "x": 124.0,
- "y": 339.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#18",
- "pos": {
- "x": 119.0,
- "y": 349.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#19",
- "pos": {
- "x": 114.0,
- "y": 359.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 99.0,
- "y": 174.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#20",
- "pos": {
- "x": 129.0,
- "y": 479.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#21",
- "pos": {
- "x": 124.0,
- "y": 489.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#22",
- "pos": {
- "x": 119.0,
- "y": 499.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#23",
- "pos": {
- "x": 114.0,
- "y": 509.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#24",
- "pos": {
- "x": 129.0,
- "y": 629.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#25",
- "pos": {
- "x": 124.0,
- "y": 639.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#26",
- "pos": {
- "x": 119.0,
- "y": 649.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#27",
- "pos": {
- "x": 114.0,
- "y": 659.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#28",
- "pos": {
- "x": 129.0,
- "y": 779.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#29",
- "pos": {
- "x": 124.0,
- "y": 789.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 94.0,
- "y": 184.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#30",
- "pos": {
- "x": 119.0,
- "y": 799.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#31",
- "pos": {
- "x": 114.0,
- "y": 809.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 34.0,
- "y": 549.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 39.0,
- "y": 649.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 44.0,
- "y": 749.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 49.0,
- "y": 809.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 34.0,
- "y": 479.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 39.0,
- "y": 489.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A0"
- },
- "pin2": {
- "compName": "GUIdemux2#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "GUIdemux2#0",
- "pinName": "S1"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 10.0,
- "y": 150.0
- },
- {
- "x": 10.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#31",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "A4"
- },
- "name": "unnamedWire#100",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIand41#1",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "C1"
- },
- "name": "unnamedWire#101",
- "path": [
- {
- "x": 290.0,
- "y": 380.0
- },
- {
- "x": 290.0,
- "y": 445.0
- },
- {
- "x": 230.0,
- "y": 445.0
- },
- {
- "x": 230.0,
- "y": 490.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#1",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "C2"
- },
- "name": "unnamedWire#102",
- "path": [
- {
- "x": 285.0,
- "y": 390.0
- },
- {
- "x": 285.0,
- "y": 440.0
- },
- {
- "x": 225.0,
- "y": 440.0
- },
- {
- "x": 225.0,
- "y": 500.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#1",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "C3"
- },
- "name": "unnamedWire#103",
- "path": [
- {
- "x": 280.0,
- "y": 400.0
- },
- {
- "x": 280.0,
- "y": 435.0
- },
- {
- "x": 220.0,
- "y": 435.0
- },
- {
- "x": 220.0,
- "y": 510.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#1",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "C4"
- },
- "name": "unnamedWire#104",
- "path": [
- {
- "x": 275.0,
- "y": 410.0
- },
- {
- "x": 275.0,
- "y": 430.0
- },
- {
- "x": 215.0,
- "y": 430.0
- },
- {
- "x": 215.0,
- "y": 520.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "C1"
- },
- "name": "unnamedWire#105",
- "path": [
- {
- "x": 290.0,
- "y": 490.0
- },
- {
- "x": 290.0,
- "y": 595.0
- },
- {
- "x": 230.0,
- "y": 595.0
- },
- {
- "x": 230.0,
- "y": 640.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "C2"
- },
- "name": "unnamedWire#106",
- "path": [
- {
- "x": 285.0,
- "y": 500.0
- },
- {
- "x": 285.0,
- "y": 590.0
- },
- {
- "x": 225.0,
- "y": 590.0
- },
- {
- "x": 225.0,
- "y": 650.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "C3"
- },
- "name": "unnamedWire#107",
- "path": [
- {
- "x": 280.0,
- "y": 510.0
- },
- {
- "x": 280.0,
- "y": 585.0
- },
- {
- "x": 220.0,
- "y": 585.0
- },
- {
- "x": 220.0,
- "y": 660.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "C4"
- },
- "name": "unnamedWire#108",
- "path": [
- {
- "x": 275.0,
- "y": 520.0
- },
- {
- "x": 275.0,
- "y": 580.0
- },
- {
- "x": 215.0,
- "y": 580.0
- },
- {
- "x": 215.0,
- "y": 670.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#1",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "C1"
- },
- "name": "unnamedWire#109",
- "path": [
- {
- "x": 290.0,
- "y": 640.0
- },
- {
- "x": 290.0,
- "y": 745.0
- },
- {
- "x": 230.0,
- "y": 745.0
- },
- {
- "x": 230.0,
- "y": 790.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIandor414#1",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "C2"
- },
- "name": "unnamedWire#110",
- "path": [
- {
- "x": 285.0,
- "y": 650.0
- },
- {
- "x": 285.0,
- "y": 740.0
- },
- {
- "x": 225.0,
- "y": 740.0
- },
- {
- "x": 225.0,
- "y": 800.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#1",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "C3"
- },
- "name": "unnamedWire#111",
- "path": [
- {
- "x": 280.0,
- "y": 660.0
- },
- {
- "x": 280.0,
- "y": 735.0
- },
- {
- "x": 220.0,
- "y": 735.0
- },
- {
- "x": 220.0,
- "y": 810.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#1",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "C4"
- },
- "name": "unnamedWire#112",
- "path": [
- {
- "x": 275.0,
- "y": 670.0
- },
- {
- "x": 275.0,
- "y": 730.0
- },
- {
- "x": 215.0,
- "y": 730.0
- },
- {
- "x": 215.0,
- "y": 820.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#2",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QA1"
- },
- "name": "unnamedWire#113",
- "path": [
- {
- "x": 300.0,
- "y": 790.0
- },
- {
- "x": 300.0,
- "y": 50.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#2",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QA2"
- },
- "name": "unnamedWire#114",
- "path": [
- {
- "x": 305.0,
- "y": 800.0
- },
- {
- "x": 305.0,
- "y": 150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#2",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QA3"
- },
- "name": "unnamedWire#115",
- "path": [
- {
- "x": 310.0,
- "y": 810.0
- },
- {
- "x": 310.0,
- "y": 250.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#2",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QA4"
- },
- "name": "unnamedWire#116",
- "path": [
- {
- "x": 315.0,
- "y": 820.0
- },
- {
- "x": 315.0,
- "y": 350.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#2",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "C1"
- },
- "name": "unnamedWire#117",
- "path": [
- {
- "x": 190.0,
- "y": 330.0
- },
- {
- "x": 190.0,
- "y": 430.0
- },
- {
- "x": 130.0,
- "y": 430.0
- },
- {
- "x": 130.0,
- "y": 440.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#2",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "C2"
- },
- "name": "unnamedWire#118",
- "path": [
- {
- "x": 185.0,
- "y": 340.0
- },
- {
- "x": 185.0,
- "y": 425.0
- },
- {
- "x": 125.0,
- "y": 425.0
- },
- {
- "x": 125.0,
- "y": 450.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#2",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "C3"
- },
- "name": "unnamedWire#119",
- "path": [
- {
- "x": 180.0,
- "y": 350.0
- },
- {
- "x": 180.0,
- "y": 420.0
- },
- {
- "x": 120.0,
- "y": 420.0
- },
- {
- "x": 120.0,
- "y": 460.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "WE"
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "B"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 5.0,
- "y": 450.0
- },
- {
- "x": 5.0,
- "y": 300.0
- },
- {
- "x": 125.0,
- "y": 300.0
- },
- {
- "x": 125.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#2",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "C4"
- },
- "name": "unnamedWire#120",
- "path": [
- {
- "x": 175.0,
- "y": 360.0
- },
- {
- "x": 175.0,
- "y": 415.0
- },
- {
- "x": 115.0,
- "y": 415.0
- },
- {
- "x": 115.0,
- "y": 470.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#3",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "C1"
- },
- "name": "unnamedWire#121",
- "path": [
- {
- "x": 190.0,
- "y": 440.0
- },
- {
- "x": 190.0,
- "y": 580.0
- },
- {
- "x": 130.0,
- "y": 580.0
- },
- {
- "x": 130.0,
- "y": 590.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#3",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "C2"
- },
- "name": "unnamedWire#122",
- "path": [
- {
- "x": 185.0,
- "y": 450.0
- },
- {
- "x": 185.0,
- "y": 575.0
- },
- {
- "x": 125.0,
- "y": 575.0
- },
- {
- "x": 125.0,
- "y": 600.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#3",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "C3"
- },
- "name": "unnamedWire#123",
- "path": [
- {
- "x": 180.0,
- "y": 460.0
- },
- {
- "x": 180.0,
- "y": 570.0
- },
- {
- "x": 120.0,
- "y": 570.0
- },
- {
- "x": 120.0,
- "y": 610.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#3",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "C4"
- },
- "name": "unnamedWire#124",
- "path": [
- {
- "x": 175.0,
- "y": 470.0
- },
- {
- "x": 175.0,
- "y": 565.0
- },
- {
- "x": 115.0,
- "y": 565.0
- },
- {
- "x": 115.0,
- "y": 620.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#4",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "C1"
- },
- "name": "unnamedWire#125",
- "path": [
- {
- "x": 190.0,
- "y": 590.0
- },
- {
- "x": 190.0,
- "y": 730.0
- },
- {
- "x": 130.0,
- "y": 730.0
- },
- {
- "x": 130.0,
- "y": 740.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#4",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "C2"
- },
- "name": "unnamedWire#126",
- "path": [
- {
- "x": 185.0,
- "y": 600.0
- },
- {
- "x": 185.0,
- "y": 725.0
- },
- {
- "x": 125.0,
- "y": 725.0
- },
- {
- "x": 125.0,
- "y": 750.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#4",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "C3"
- },
- "name": "unnamedWire#127",
- "path": [
- {
- "x": 180.0,
- "y": 610.0
- },
- {
- "x": 180.0,
- "y": 720.0
- },
- {
- "x": 120.0,
- "y": 720.0
- },
- {
- "x": 120.0,
- "y": 760.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#4",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "C4"
- },
- "name": "unnamedWire#128",
- "path": [
- {
- "x": 175.0,
- "y": 620.0
- },
- {
- "x": 175.0,
- "y": 715.0
- },
- {
- "x": 115.0,
- "y": 715.0
- },
- {
- "x": 115.0,
- "y": 770.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#5",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QB1"
- },
- "name": "unnamedWire#129",
- "path": [
- {
- "x": 190.0,
- "y": 740.0
- },
- {
- "x": 190.0,
- "y": 880.0
- },
- {
- "x": 325.0,
- "y": 880.0
- },
- {
- "x": 325.0,
- "y": 450.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "C"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 185.0,
- "y": 155.0
- },
- {
- "x": 185.0,
- "y": 250.0
- },
- {
- "x": 30.0,
- "y": 250.0
- },
- {
- "x": 30.0,
- "y": 370.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#5",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QB2"
- },
- "name": "unnamedWire#130",
- "path": [
- {
- "x": 185.0,
- "y": 750.0
- },
- {
- "x": 185.0,
- "y": 885.0
- },
- {
- "x": 330.0,
- "y": 885.0
- },
- {
- "x": 330.0,
- "y": 550.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#5",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QB3"
- },
- "name": "unnamedWire#131",
- "path": [
- {
- "x": 180.0,
- "y": 760.0
- },
- {
- "x": 180.0,
- "y": 890.0
- },
- {
- "x": 335.0,
- "y": 890.0
- },
- {
- "x": 335.0,
- "y": 650.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#5",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QB4"
- },
- "name": "unnamedWire#132",
- "path": [
- {
- "x": 175.0,
- "y": 770.0
- },
- {
- "x": 175.0,
- "y": 895.0
- },
- {
- "x": 340.0,
- "y": 895.0
- },
- {
- "x": 340.0,
- "y": 750.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "C"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 180.0,
- "y": 165.0
- },
- {
- "x": 180.0,
- "y": 245.0
- },
- {
- "x": 25.0,
- "y": 245.0
- },
- {
- "x": 25.0,
- "y": 520.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIdlatch4#2",
- "pinName": "C"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 175.0,
- "y": 175.0
- },
- {
- "x": 175.0,
- "y": 240.0
- },
- {
- "x": 20.0,
- "y": 240.0
- },
- {
- "x": 20.0,
- "y": 670.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIdlatch4#3",
- "pinName": "C"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 170.0,
- "y": 185.0
- },
- {
- "x": 170.0,
- "y": 235.0
- },
- {
- "x": 15.0,
- "y": 235.0
- },
- {
- "x": 15.0,
- "y": 820.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D2"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D3"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B0"
- },
- "pin2": {
- "compName": "GUIdemux2#1",
- "pinName": "S0"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 5.0,
- "y": 250.0
- },
- {
- "x": 5.0,
- "y": 155.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D4"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 50.0,
- "y": 850.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "D1"
- },
- "name": "unnamedWire#21",
- "path": [
- {
- "x": 35.0,
- "y": 330.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "D2"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 40.0,
- "y": 340.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "D3"
- },
- "name": "unnamedWire#23",
- "path": [
- {
- "x": 45.0,
- "y": 350.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "D4"
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 50.0,
- "y": 360.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "D1"
- },
- "name": "unnamedWire#25",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "D2"
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "D3"
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "D4"
- },
- "name": "unnamedWire#28",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#29",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B1"
- },
- "pin2": {
- "compName": "GUIdemux2#1",
- "pinName": "S1"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 10.0,
- "y": 350.0
- },
- {
- "x": 10.0,
- "y": 165.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "name": "unnamedWire#30",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "name": "unnamedWire#31",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#2",
- "pinName": "D1"
- },
- "name": "unnamedWire#34",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#2",
- "pinName": "D2"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#2",
- "pinName": "D3"
- },
- "name": "unnamedWire#36",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#2",
- "pinName": "D4"
- },
- "name": "unnamedWire#37",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#38",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#39",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdemux2#1",
- "pinName": "Y00"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#40",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#3",
- "pinName": "D1"
- },
- "name": "unnamedWire#41",
- "path": [
- {
- "x": 35.0,
- "y": 780.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#3",
- "pinName": "D2"
- },
- "name": "unnamedWire#42",
- "path": [
- {
- "x": 40.0,
- "y": 790.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#3",
- "pinName": "D3"
- },
- "name": "unnamedWire#43",
- "path": [
- {
- "x": 45.0,
- "y": 800.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#3",
- "pinName": "D4"
- },
- "name": "unnamedWire#44",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#0",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "name": "unnamedWire#45",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#0",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "name": "unnamedWire#46",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#0",
- "pinName": "Q3"
- },
- "pin2": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "name": "unnamedWire#47",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#0",
- "pinName": "Q4"
- },
- "pin2": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "name": "unnamedWire#48",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#1",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "name": "unnamedWire#49",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdemux2#1",
- "pinName": "Y01"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#1",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "name": "unnamedWire#50",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#1",
- "pinName": "Q3"
- },
- "pin2": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "name": "unnamedWire#51",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#1",
- "pinName": "Q4"
- },
- "pin2": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "name": "unnamedWire#52",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#2",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "name": "unnamedWire#53",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#2",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "name": "unnamedWire#54",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#2",
- "pinName": "Q3"
- },
- "pin2": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "name": "unnamedWire#55",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#2",
- "pinName": "Q4"
- },
- "pin2": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "name": "unnamedWire#56",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#3",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "WireCrossPoint#28",
- "pinName": ""
- },
- "name": "unnamedWire#57",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#3",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#29",
- "pinName": ""
- },
- "name": "unnamedWire#58",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#3",
- "pinName": "Q3"
- },
- "pin2": {
- "compName": "WireCrossPoint#30",
- "pinName": ""
- },
- "name": "unnamedWire#59",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdemux2#1",
- "pinName": "Y10"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#3",
- "pinName": "Q4"
- },
- "pin2": {
- "compName": "WireCrossPoint#31",
- "pinName": ""
- },
- "name": "unnamedWire#60",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdemux2#0",
- "pinName": "Y00"
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "B"
- },
- "name": "unnamedWire#61",
- "path": [
- {
- "x": 210.0,
- "y": 50.0
- },
- {
- "x": 210.0,
- "y": 420.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#0",
- "pinName": "Y01"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "B"
- },
- "name": "unnamedWire#62",
- "path": [
- {
- "x": 205.0,
- "y": 60.0
- },
- {
- "x": 205.0,
- "y": 570.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#0",
- "pinName": "Y10"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "B"
- },
- "name": "unnamedWire#63",
- "path": [
- {
- "x": 200.0,
- "y": 70.0
- },
- {
- "x": 200.0,
- "y": 720.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#0",
- "pinName": "Y11"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "B"
- },
- "name": "unnamedWire#64",
- "path": [
- {
- "x": 195.0,
- "y": 80.0
- },
- {
- "x": 195.0,
- "y": 870.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "B"
- },
- "name": "unnamedWire#65",
- "path": [
- {
- "x": 110.0,
- "y": 370.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "B"
- },
- "name": "unnamedWire#66",
- "path": [
- {
- "x": 105.0,
- "y": 520.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "B"
- },
- "name": "unnamedWire#67",
- "path": [
- {
- "x": 100.0,
- "y": 670.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "B"
- },
- "name": "unnamedWire#68",
- "path": [
- {
- "x": 95.0,
- "y": 820.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "A1"
- },
- "name": "unnamedWire#69",
- "path": [
- {
- "x": 130.0,
- "y": 380.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#1",
- "pinName": "Y11"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "A2"
- },
- "name": "unnamedWire#70",
- "path": [
- {
- "x": 125.0,
- "y": 390.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "A3"
- },
- "name": "unnamedWire#71",
- "path": [
- {
- "x": 120.0,
- "y": 400.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "A4"
- },
- "name": "unnamedWire#72",
- "path": [
- {
- "x": 115.0,
- "y": 410.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#73",
- "path": [
- {
- "x": 130.0,
- "y": 530.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#74",
- "path": [
- {
- "x": 125.0,
- "y": 540.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#75",
- "path": [
- {
- "x": 120.0,
- "y": 550.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#76",
- "path": [
- {
- "x": 115.0,
- "y": 560.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "A1"
- },
- "name": "unnamedWire#77",
- "path": [
- {
- "x": 130.0,
- "y": 680.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "A2"
- },
- "name": "unnamedWire#78",
- "path": [
- {
- "x": 125.0,
- "y": 690.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "A3"
- },
- "name": "unnamedWire#79",
- "path": [
- {
- "x": 120.0,
- "y": 700.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "A4"
- },
- "name": "unnamedWire#80",
- "path": [
- {
- "x": 115.0,
- "y": 710.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#28",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "A1"
- },
- "name": "unnamedWire#81",
- "path": [
- {
- "x": 130.0,
- "y": 830.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#29",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "A2"
- },
- "name": "unnamedWire#82",
- "path": [
- {
- "x": 125.0,
- "y": 840.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#30",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "A3"
- },
- "name": "unnamedWire#83",
- "path": [
- {
- "x": 120.0,
- "y": 850.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#31",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "A4"
- },
- "name": "unnamedWire#84",
- "path": [
- {
- "x": 115.0,
- "y": 860.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "A1"
- },
- "name": "unnamedWire#85",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "A2"
- },
- "name": "unnamedWire#86",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "A3"
- },
- "name": "unnamedWire#87",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "A4"
- },
- "name": "unnamedWire#88",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "A1"
- },
- "name": "unnamedWire#89",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#9",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "A2"
- },
- "name": "unnamedWire#90",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "A3"
- },
- "name": "unnamedWire#91",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "A4"
- },
- "name": "unnamedWire#92",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "A1"
- },
- "name": "unnamedWire#93",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "A2"
- },
- "name": "unnamedWire#94",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "A3"
- },
- "name": "unnamedWire#95",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "A4"
- },
- "name": "unnamedWire#96",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#28",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "A1"
- },
- "name": "unnamedWire#97",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#29",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "A2"
- },
- "name": "unnamedWire#98",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#30",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "A3"
- },
- "name": "unnamedWire#99",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIram2",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {
- "c00": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdlatch4#0"
- }
- },
- "c11": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdlatch4#3"
- }
- },
- "c10": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdlatch4#2"
- }
- },
- "c01": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdlatch4#1"
- }
- }
- },
- "atomicHighLevelStates": {
- "q": {
- "id": "bitVectorSplitting",
- "params": {
- "vectorPartTargets": [
- "c11.q",
- "c10.q",
- "c01.q",
- "c00.q"
- ],
- "vectorPartLengthes": [
- 4,
- 4,
- 4,
- 4
- ]
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 130.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "B0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "B1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "B2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "B3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 95.0
- },
- "name": "D1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 105.0
- },
- "name": "D2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 115.0
- },
- "name": "D3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 125.0
- },
- "name": "D4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "QA1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "QA2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "QA3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "QA4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 45.0
- },
- "name": "QB1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 55.0
- },
- "name": "QB2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 65.0
- },
- "name": "QB3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 75.0
- },
- "name": "QB4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "WE",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.1,
- "submodel": {
- "components": [
- {
- "id": "GUIand41",
- "name": "GUIand41#0",
- "pos": {
- "x": 235.0,
- "y": 150.0
- }
- },
- {
- "id": "GUIand41",
- "name": "GUIand41#1",
- "pos": {
- "x": 250.0,
- "y": 375.0
- }
- },
- {
- "id": "GUIand41",
- "name": "GUIand41#2",
- "pos": {
- "x": 155.0,
- "y": 325.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#0",
- "pos": {
- "x": 250.0,
- "y": 485.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#1",
- "pos": {
- "x": 250.0,
- "y": 635.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#2",
- "pos": {
- "x": 250.0,
- "y": 785.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#3",
- "pos": {
- "x": 155.0,
- "y": 435.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#4",
- "pos": {
- "x": 155.0,
- "y": 585.0
- }
- },
- {
- "id": "GUIandor414",
- "name": "GUIandor414#5",
- "pos": {
- "x": 155.0,
- "y": 735.0
- }
- },
- {
- "id": "GUIdemux2",
- "name": "GUIdemux2#0",
- "pos": {
- "x": 55.0,
- "y": 45.0
- }
- },
- {
- "id": "GUIdemux2",
- "name": "GUIdemux2#1",
- "pos": {
- "x": 55.0,
- "y": 150.0
- }
- },
- {
- "id": "GUIram2",
- "name": "GUIram2#0",
- "pos": {
- "x": 80.0,
- "y": 330.0
- }
- },
- {
- "id": "GUIram2",
- "name": "GUIram2#1",
- "pos": {
- "x": 80.0,
- "y": 480.0
- }
- },
- {
- "id": "GUIram2",
- "name": "GUIram2#2",
- "pos": {
- "x": 80.0,
- "y": 630.0
- }
- },
- {
- "id": "GUIram2",
- "name": "GUIram2#3",
- "pos": {
- "x": 80.0,
- "y": 780.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 229.0,
- "y": 154.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 224.0,
- "y": 164.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 69.0,
- "y": 704.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#11",
- "pos": {
- "x": 74.0,
- "y": 714.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#12",
- "pos": {
- "x": 59.0,
- "y": 834.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#13",
- "pos": {
- "x": 64.0,
- "y": 844.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#14",
- "pos": {
- "x": 69.0,
- "y": 854.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#15",
- "pos": {
- "x": 74.0,
- "y": 864.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#16",
- "pos": {
- "x": 39.0,
- "y": 484.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#17",
- "pos": {
- "x": 44.0,
- "y": 494.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#18",
- "pos": {
- "x": 49.0,
- "y": 504.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#19",
- "pos": {
- "x": 54.0,
- "y": 514.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 219.0,
- "y": 174.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#20",
- "pos": {
- "x": 39.0,
- "y": 634.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#21",
- "pos": {
- "x": 44.0,
- "y": 644.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#22",
- "pos": {
- "x": 49.0,
- "y": 654.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#23",
- "pos": {
- "x": 54.0,
- "y": 664.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#24",
- "pos": {
- "x": 39.0,
- "y": 334.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#25",
- "pos": {
- "x": 44.0,
- "y": 349.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#26",
- "pos": {
- "x": 49.0,
- "y": 649.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#27",
- "pos": {
- "x": 54.0,
- "y": 749.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 214.0,
- "y": 184.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 59.0,
- "y": 534.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 64.0,
- "y": 544.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 69.0,
- "y": 554.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 74.0,
- "y": 564.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 59.0,
- "y": 684.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 64.0,
- "y": 694.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A0"
- },
- "pin2": {
- "compName": "GUIdemux2#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "GUIdemux2#0",
- "pinName": "S1"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 10.0,
- "y": 150.0
- },
- {
- "x": 10.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIram2#0",
- "pinName": "QA4"
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "A4"
- },
- "name": "unnamedWire#100",
- "path": [
- {
- "x": 140.0,
- "y": 365.0
- },
- {
- "x": 140.0,
- "y": 360.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#1",
- "pinName": "QA1"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "A1"
- },
- "name": "unnamedWire#101",
- "path": [
- {
- "x": 140.0,
- "y": 485.0
- },
- {
- "x": 140.0,
- "y": 480.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#1",
- "pinName": "QA2"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "A2"
- },
- "name": "unnamedWire#102",
- "path": [
- {
- "x": 140.0,
- "y": 495.0
- },
- {
- "x": 140.0,
- "y": 490.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#1",
- "pinName": "QA3"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "A3"
- },
- "name": "unnamedWire#103",
- "path": [
- {
- "x": 140.0,
- "y": 505.0
- },
- {
- "x": 140.0,
- "y": 500.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#1",
- "pinName": "QA4"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "A4"
- },
- "name": "unnamedWire#104",
- "path": [
- {
- "x": 140.0,
- "y": 515.0
- },
- {
- "x": 140.0,
- "y": 510.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#2",
- "pinName": "QA1"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "A1"
- },
- "name": "unnamedWire#105",
- "path": [
- {
- "x": 140.0,
- "y": 635.0
- },
- {
- "x": 140.0,
- "y": 630.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#2",
- "pinName": "QA2"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "A2"
- },
- "name": "unnamedWire#106",
- "path": [
- {
- "x": 140.0,
- "y": 645.0
- },
- {
- "x": 140.0,
- "y": 640.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#2",
- "pinName": "QA3"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "A3"
- },
- "name": "unnamedWire#107",
- "path": [
- {
- "x": 140.0,
- "y": 655.0
- },
- {
- "x": 140.0,
- "y": 650.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#2",
- "pinName": "QA4"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "A4"
- },
- "name": "unnamedWire#108",
- "path": [
- {
- "x": 140.0,
- "y": 665.0
- },
- {
- "x": 140.0,
- "y": 660.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#3",
- "pinName": "QA1"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "A1"
- },
- "name": "unnamedWire#109",
- "path": [
- {
- "x": 140.0,
- "y": 785.0
- },
- {
- "x": 140.0,
- "y": 780.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIram2#3",
- "pinName": "QA2"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "A2"
- },
- "name": "unnamedWire#110",
- "path": [
- {
- "x": 140.0,
- "y": 795.0
- },
- {
- "x": 140.0,
- "y": 790.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#3",
- "pinName": "QA3"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "A3"
- },
- "name": "unnamedWire#111",
- "path": [
- {
- "x": 140.0,
- "y": 805.0
- },
- {
- "x": 140.0,
- "y": 800.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#3",
- "pinName": "QA4"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "A4"
- },
- "name": "unnamedWire#112",
- "path": [
- {
- "x": 140.0,
- "y": 815.0
- },
- {
- "x": 140.0,
- "y": 810.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#1",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "C1"
- },
- "name": "unnamedWire#113",
- "path": [
- {
- "x": 305.0,
- "y": 380.0
- },
- {
- "x": 305.0,
- "y": 445.0
- },
- {
- "x": 245.0,
- "y": 445.0
- },
- {
- "x": 245.0,
- "y": 490.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#1",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "C2"
- },
- "name": "unnamedWire#114",
- "path": [
- {
- "x": 300.0,
- "y": 390.0
- },
- {
- "x": 300.0,
- "y": 440.0
- },
- {
- "x": 240.0,
- "y": 440.0
- },
- {
- "x": 240.0,
- "y": 500.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#1",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "C3"
- },
- "name": "unnamedWire#115",
- "path": [
- {
- "x": 295.0,
- "y": 400.0
- },
- {
- "x": 295.0,
- "y": 435.0
- },
- {
- "x": 235.0,
- "y": 435.0
- },
- {
- "x": 235.0,
- "y": 510.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#1",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "C4"
- },
- "name": "unnamedWire#116",
- "path": [
- {
- "x": 290.0,
- "y": 410.0
- },
- {
- "x": 290.0,
- "y": 430.0
- },
- {
- "x": 230.0,
- "y": 430.0
- },
- {
- "x": 230.0,
- "y": 520.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "C1"
- },
- "name": "unnamedWire#117",
- "path": [
- {
- "x": 305.0,
- "y": 490.0
- },
- {
- "x": 305.0,
- "y": 595.0
- },
- {
- "x": 245.0,
- "y": 595.0
- },
- {
- "x": 245.0,
- "y": 640.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "C2"
- },
- "name": "unnamedWire#118",
- "path": [
- {
- "x": 300.0,
- "y": 500.0
- },
- {
- "x": 300.0,
- "y": 590.0
- },
- {
- "x": 240.0,
- "y": 590.0
- },
- {
- "x": 240.0,
- "y": 650.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "C3"
- },
- "name": "unnamedWire#119",
- "path": [
- {
- "x": 295.0,
- "y": 510.0
- },
- {
- "x": 295.0,
- "y": 585.0
- },
- {
- "x": 235.0,
- "y": 585.0
- },
- {
- "x": 235.0,
- "y": 660.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "WE"
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "B"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 15.0,
- "y": 850.0
- },
- {
- "x": 15.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "C4"
- },
- "name": "unnamedWire#120",
- "path": [
- {
- "x": 290.0,
- "y": 520.0
- },
- {
- "x": 290.0,
- "y": 580.0
- },
- {
- "x": 230.0,
- "y": 580.0
- },
- {
- "x": 230.0,
- "y": 670.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#1",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "C1"
- },
- "name": "unnamedWire#121",
- "path": [
- {
- "x": 305.0,
- "y": 640.0
- },
- {
- "x": 305.0,
- "y": 745.0
- },
- {
- "x": 245.0,
- "y": 745.0
- },
- {
- "x": 245.0,
- "y": 790.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#1",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "C2"
- },
- "name": "unnamedWire#122",
- "path": [
- {
- "x": 300.0,
- "y": 650.0
- },
- {
- "x": 300.0,
- "y": 740.0
- },
- {
- "x": 240.0,
- "y": 740.0
- },
- {
- "x": 240.0,
- "y": 800.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#1",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "C3"
- },
- "name": "unnamedWire#123",
- "path": [
- {
- "x": 295.0,
- "y": 660.0
- },
- {
- "x": 295.0,
- "y": 735.0
- },
- {
- "x": 235.0,
- "y": 735.0
- },
- {
- "x": 235.0,
- "y": 810.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#1",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "C4"
- },
- "name": "unnamedWire#124",
- "path": [
- {
- "x": 290.0,
- "y": 670.0
- },
- {
- "x": 290.0,
- "y": 730.0
- },
- {
- "x": 230.0,
- "y": 730.0
- },
- {
- "x": 230.0,
- "y": 820.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#2",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QB1"
- },
- "name": "unnamedWire#125",
- "path": [
- {
- "x": 330.0,
- "y": 790.0
- },
- {
- "x": 330.0,
- "y": 450.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#2",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QB2"
- },
- "name": "unnamedWire#126",
- "path": [
- {
- "x": 335.0,
- "y": 800.0
- },
- {
- "x": 335.0,
- "y": 550.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#2",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QB3"
- },
- "name": "unnamedWire#127",
- "path": [
- {
- "x": 340.0,
- "y": 810.0
- },
- {
- "x": 340.0,
- "y": 650.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#2",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QB4"
- },
- "name": "unnamedWire#128",
- "path": [
- {
- "x": 345.0,
- "y": 820.0
- },
- {
- "x": 345.0,
- "y": 750.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#2",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "C1"
- },
- "name": "unnamedWire#129",
- "path": [
- {
- "x": 210.0,
- "y": 330.0
- },
- {
- "x": 210.0,
- "y": 430.0
- },
- {
- "x": 150.0,
- "y": 430.0
- },
- {
- "x": 150.0,
- "y": 440.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIram2#0",
- "pinName": "WE"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 290.0,
- "y": 155.0
- },
- {
- "x": 290.0,
- "y": 230.0
- },
- {
- "x": 35.0,
- "y": 230.0
- },
- {
- "x": 35.0,
- "y": 375.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#2",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "C2"
- },
- "name": "unnamedWire#130",
- "path": [
- {
- "x": 205.0,
- "y": 340.0
- },
- {
- "x": 205.0,
- "y": 425.0
- },
- {
- "x": 145.0,
- "y": 425.0
- },
- {
- "x": 145.0,
- "y": 450.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#2",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "C3"
- },
- "name": "unnamedWire#131",
- "path": [
- {
- "x": 200.0,
- "y": 350.0
- },
- {
- "x": 200.0,
- "y": 420.0
- },
- {
- "x": 140.0,
- "y": 420.0
- },
- {
- "x": 140.0,
- "y": 460.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#2",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "C4"
- },
- "name": "unnamedWire#132",
- "path": [
- {
- "x": 195.0,
- "y": 360.0
- },
- {
- "x": 195.0,
- "y": 415.0
- },
- {
- "x": 135.0,
- "y": 415.0
- },
- {
- "x": 135.0,
- "y": 470.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#3",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "C1"
- },
- "name": "unnamedWire#133",
- "path": [
- {
- "x": 210.0,
- "y": 440.0
- },
- {
- "x": 210.0,
- "y": 580.0
- },
- {
- "x": 150.0,
- "y": 580.0
- },
- {
- "x": 150.0,
- "y": 590.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#3",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "C2"
- },
- "name": "unnamedWire#134",
- "path": [
- {
- "x": 205.0,
- "y": 450.0
- },
- {
- "x": 205.0,
- "y": 575.0
- },
- {
- "x": 145.0,
- "y": 575.0
- },
- {
- "x": 145.0,
- "y": 600.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#3",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "C3"
- },
- "name": "unnamedWire#135",
- "path": [
- {
- "x": 200.0,
- "y": 460.0
- },
- {
- "x": 200.0,
- "y": 570.0
- },
- {
- "x": 140.0,
- "y": 570.0
- },
- {
- "x": 140.0,
- "y": 610.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#3",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "C4"
- },
- "name": "unnamedWire#136",
- "path": [
- {
- "x": 195.0,
- "y": 470.0
- },
- {
- "x": 195.0,
- "y": 565.0
- },
- {
- "x": 135.0,
- "y": 565.0
- },
- {
- "x": 135.0,
- "y": 620.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#4",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "C1"
- },
- "name": "unnamedWire#137",
- "path": [
- {
- "x": 210.0,
- "y": 590.0
- },
- {
- "x": 210.0,
- "y": 730.0
- },
- {
- "x": 150.0,
- "y": 730.0
- },
- {
- "x": 150.0,
- "y": 740.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#4",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "C2"
- },
- "name": "unnamedWire#138",
- "path": [
- {
- "x": 205.0,
- "y": 600.0
- },
- {
- "x": 205.0,
- "y": 725.0
- },
- {
- "x": 145.0,
- "y": 725.0
- },
- {
- "x": 145.0,
- "y": 750.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#4",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "C3"
- },
- "name": "unnamedWire#139",
- "path": [
- {
- "x": 200.0,
- "y": 610.0
- },
- {
- "x": 200.0,
- "y": 720.0
- },
- {
- "x": 140.0,
- "y": 720.0
- },
- {
- "x": 140.0,
- "y": 760.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIram2#1",
- "pinName": "WE"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 285.0,
- "y": 165.0
- },
- {
- "x": 285.0,
- "y": 225.0
- },
- {
- "x": 30.0,
- "y": 225.0
- },
- {
- "x": 30.0,
- "y": 525.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#4",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "C4"
- },
- "name": "unnamedWire#140",
- "path": [
- {
- "x": 195.0,
- "y": 620.0
- },
- {
- "x": 195.0,
- "y": 715.0
- },
- {
- "x": 135.0,
- "y": 715.0
- },
- {
- "x": 135.0,
- "y": 770.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#5",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QA1"
- },
- "name": "unnamedWire#141",
- "path": [
- {
- "x": 210.0,
- "y": 740.0
- },
- {
- "x": 210.0,
- "y": 880.0
- },
- {
- "x": 310.0,
- "y": 880.0
- },
- {
- "x": 310.0,
- "y": 50.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#5",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QA2"
- },
- "name": "unnamedWire#142",
- "path": [
- {
- "x": 205.0,
- "y": 750.0
- },
- {
- "x": 205.0,
- "y": 885.0
- },
- {
- "x": 315.0,
- "y": 885.0
- },
- {
- "x": 315.0,
- "y": 150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#5",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QA3"
- },
- "name": "unnamedWire#143",
- "path": [
- {
- "x": 200.0,
- "y": 760.0
- },
- {
- "x": 200.0,
- "y": 890.0
- },
- {
- "x": 320.0,
- "y": 890.0
- },
- {
- "x": 320.0,
- "y": 250.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIandor414#5",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QA4"
- },
- "name": "unnamedWire#144",
- "path": [
- {
- "x": 195.0,
- "y": 770.0
- },
- {
- "x": 195.0,
- "y": 895.0
- },
- {
- "x": 325.0,
- "y": 895.0
- },
- {
- "x": 325.0,
- "y": 350.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIram2#2",
- "pinName": "WE"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 280.0,
- "y": 175.0
- },
- {
- "x": 280.0,
- "y": 220.0
- },
- {
- "x": 25.0,
- "y": 220.0
- },
- {
- "x": 25.0,
- "y": 675.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand41#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIram2#3",
- "pinName": "WE"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 275.0,
- "y": 185.0
- },
- {
- "x": 275.0,
- "y": 215.0
- },
- {
- "x": 20.0,
- "y": 215.0
- },
- {
- "x": 20.0,
- "y": 825.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#0",
- "pinName": "A0"
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B0"
- },
- "pin2": {
- "compName": "GUIdemux2#1",
- "pinName": "S0"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 5.0,
- "y": 450.0
- },
- {
- "x": 5.0,
- "y": 155.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 45.0,
- "y": 345.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#0",
- "pinName": "B0"
- },
- "name": "unnamedWire#21",
- "path": [
- {
- "x": 50.0,
- "y": 355.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#0",
- "pinName": "B1"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 55.0,
- "y": 365.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#1",
- "pinName": "A0"
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#1",
- "pinName": "A1"
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#1",
- "pinName": "B0"
- },
- "name": "unnamedWire#25",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#1",
- "pinName": "B1"
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "name": "unnamedWire#28",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "name": "unnamedWire#29",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B1"
- },
- "pin2": {
- "compName": "GUIdemux2#1",
- "pinName": "S1"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 10.0,
- "y": 550.0
- },
- {
- "x": 10.0,
- "y": 165.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B2"
- },
- "pin2": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "name": "unnamedWire#30",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "name": "unnamedWire#31",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#2",
- "pinName": "A0"
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#2",
- "pinName": "A1"
- },
- "name": "unnamedWire#34",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#2",
- "pinName": "B0"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#2",
- "pinName": "B1"
- },
- "name": "unnamedWire#36",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#3",
- "pinName": "A0"
- },
- "name": "unnamedWire#37",
- "path": [
- {
- "x": 40.0,
- "y": 785.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#3",
- "pinName": "A1"
- },
- "name": "unnamedWire#38",
- "path": [
- {
- "x": 45.0,
- "y": 795.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#3",
- "pinName": "B0"
- },
- "name": "unnamedWire#39",
- "path": [
- {
- "x": 50.0,
- "y": 805.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#1",
- "pinName": "Y00"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "name": "unnamedWire#40",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#3",
- "pinName": "B1"
- },
- "name": "unnamedWire#41",
- "path": [
- {
- "x": 55.0,
- "y": 815.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "name": "unnamedWire#42",
- "path": [
- {
- "x": 40.0,
- "y": 250.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "name": "unnamedWire#43",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B3"
- },
- "pin2": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "name": "unnamedWire#44",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#0",
- "pinName": "D1"
- },
- "name": "unnamedWire#45",
- "path": [
- {
- "x": 60.0,
- "y": 385.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#0",
- "pinName": "D2"
- },
- "name": "unnamedWire#46",
- "path": [
- {
- "x": 65.0,
- "y": 395.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#0",
- "pinName": "D3"
- },
- "name": "unnamedWire#47",
- "path": [
- {
- "x": 70.0,
- "y": 405.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#0",
- "pinName": "D4"
- },
- "name": "unnamedWire#48",
- "path": [
- {
- "x": 75.0,
- "y": 415.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#1",
- "pinName": "D1"
- },
- "name": "unnamedWire#49",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdemux2#1",
- "pinName": "Y01"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#1",
- "pinName": "D2"
- },
- "name": "unnamedWire#50",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#1",
- "pinName": "D3"
- },
- "name": "unnamedWire#51",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#1",
- "pinName": "D4"
- },
- "name": "unnamedWire#52",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#53",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#54",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#55",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "name": "unnamedWire#56",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#2",
- "pinName": "D1"
- },
- "name": "unnamedWire#57",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#2",
- "pinName": "D2"
- },
- "name": "unnamedWire#58",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#2",
- "pinName": "D3"
- },
- "name": "unnamedWire#59",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdemux2#1",
- "pinName": "Y10"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#2",
- "pinName": "D4"
- },
- "name": "unnamedWire#60",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "name": "unnamedWire#61",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "name": "unnamedWire#62",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#63",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "name": "unnamedWire#64",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#3",
- "pinName": "D1"
- },
- "name": "unnamedWire#65",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#3",
- "pinName": "D2"
- },
- "name": "unnamedWire#66",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#3",
- "pinName": "D3"
- },
- "name": "unnamedWire#67",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram2#3",
- "pinName": "D4"
- },
- "name": "unnamedWire#68",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "name": "unnamedWire#69",
- "path": [
- {
- "x": 60.0,
- "y": 950.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#1",
- "pinName": "Y11"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D2"
- },
- "pin2": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "name": "unnamedWire#70",
- "path": [
- {
- "x": 65.0,
- "y": 1050.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D3"
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#71",
- "path": [
- {
- "x": 70.0,
- "y": 1150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D4"
- },
- "pin2": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "name": "unnamedWire#72",
- "path": [
- {
- "x": 75.0,
- "y": 1250.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#0",
- "pinName": "Y00"
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "B"
- },
- "name": "unnamedWire#73",
- "path": [
- {
- "x": 135.0,
- "y": 50.0
- },
- {
- "x": 135.0,
- "y": 370.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#0",
- "pinName": "Y01"
- },
- "pin2": {
- "compName": "GUIandor414#3",
- "pinName": "B"
- },
- "name": "unnamedWire#74",
- "path": [
- {
- "x": 130.0,
- "y": 60.0
- },
- {
- "x": 130.0,
- "y": 520.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#0",
- "pinName": "Y10"
- },
- "pin2": {
- "compName": "GUIandor414#4",
- "pinName": "B"
- },
- "name": "unnamedWire#75",
- "path": [
- {
- "x": 125.0,
- "y": 70.0
- },
- {
- "x": 125.0,
- "y": 670.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdemux2#0",
- "pinName": "Y11"
- },
- "pin2": {
- "compName": "GUIandor414#5",
- "pinName": "B"
- },
- "name": "unnamedWire#76",
- "path": [
- {
- "x": 120.0,
- "y": 80.0
- },
- {
- "x": 120.0,
- "y": 820.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "B"
- },
- "name": "unnamedWire#77",
- "path": [
- {
- "x": 230.0,
- "y": 420.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "B"
- },
- "name": "unnamedWire#78",
- "path": [
- {
- "x": 225.0,
- "y": 570.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "B"
- },
- "name": "unnamedWire#79",
- "path": [
- {
- "x": 220.0,
- "y": 720.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "B"
- },
- "name": "unnamedWire#80",
- "path": [
- {
- "x": 215.0,
- "y": 870.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#0",
- "pinName": "QB1"
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "A1"
- },
- "name": "unnamedWire#81",
- "path": [
- {
- "x": 140.0,
- "y": 375.0
- },
- {
- "x": 140.0,
- "y": 380.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#0",
- "pinName": "QB2"
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "A2"
- },
- "name": "unnamedWire#82",
- "path": [
- {
- "x": 140.0,
- "y": 385.0
- },
- {
- "x": 140.0,
- "y": 390.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#0",
- "pinName": "QB3"
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "A3"
- },
- "name": "unnamedWire#83",
- "path": [
- {
- "x": 140.0,
- "y": 395.0
- },
- {
- "x": 140.0,
- "y": 400.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#0",
- "pinName": "QB4"
- },
- "pin2": {
- "compName": "GUIand41#1",
- "pinName": "A4"
- },
- "name": "unnamedWire#84",
- "path": [
- {
- "x": 140.0,
- "y": 405.0
- },
- {
- "x": 140.0,
- "y": 410.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#1",
- "pinName": "QB1"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#85",
- "path": [
- {
- "x": 140.0,
- "y": 525.0
- },
- {
- "x": 140.0,
- "y": 530.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#1",
- "pinName": "QB2"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#86",
- "path": [
- {
- "x": 140.0,
- "y": 535.0
- },
- {
- "x": 140.0,
- "y": 540.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#1",
- "pinName": "QB3"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#87",
- "path": [
- {
- "x": 140.0,
- "y": 545.0
- },
- {
- "x": 140.0,
- "y": 550.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#1",
- "pinName": "QB4"
- },
- "pin2": {
- "compName": "GUIandor414#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#88",
- "path": [
- {
- "x": 140.0,
- "y": 555.0
- },
- {
- "x": 140.0,
- "y": 560.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#2",
- "pinName": "QB1"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "A1"
- },
- "name": "unnamedWire#89",
- "path": [
- {
- "x": 140.0,
- "y": 675.0
- },
- {
- "x": 140.0,
- "y": 680.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand41#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#9",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIram2#2",
- "pinName": "QB2"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "A2"
- },
- "name": "unnamedWire#90",
- "path": [
- {
- "x": 140.0,
- "y": 685.0
- },
- {
- "x": 140.0,
- "y": 690.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#2",
- "pinName": "QB3"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "A3"
- },
- "name": "unnamedWire#91",
- "path": [
- {
- "x": 140.0,
- "y": 695.0
- },
- {
- "x": 140.0,
- "y": 700.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#2",
- "pinName": "QB4"
- },
- "pin2": {
- "compName": "GUIandor414#1",
- "pinName": "A4"
- },
- "name": "unnamedWire#92",
- "path": [
- {
- "x": 140.0,
- "y": 705.0
- },
- {
- "x": 140.0,
- "y": 710.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#3",
- "pinName": "QB1"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "A1"
- },
- "name": "unnamedWire#93",
- "path": [
- {
- "x": 140.0,
- "y": 825.0
- },
- {
- "x": 140.0,
- "y": 830.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#3",
- "pinName": "QB2"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "A2"
- },
- "name": "unnamedWire#94",
- "path": [
- {
- "x": 140.0,
- "y": 835.0
- },
- {
- "x": 140.0,
- "y": 840.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#3",
- "pinName": "QB3"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "A3"
- },
- "name": "unnamedWire#95",
- "path": [
- {
- "x": 140.0,
- "y": 845.0
- },
- {
- "x": 140.0,
- "y": 850.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#3",
- "pinName": "QB4"
- },
- "pin2": {
- "compName": "GUIandor414#2",
- "pinName": "A4"
- },
- "name": "unnamedWire#96",
- "path": [
- {
- "x": 140.0,
- "y": 855.0
- },
- {
- "x": 140.0,
- "y": 860.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#0",
- "pinName": "QA1"
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "A1"
- },
- "name": "unnamedWire#97",
- "path": [
- {
- "x": 140.0,
- "y": 335.0
- },
- {
- "x": 140.0,
- "y": 330.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#0",
- "pinName": "QA2"
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "A2"
- },
- "name": "unnamedWire#98",
- "path": [
- {
- "x": 140.0,
- "y": 345.0
- },
- {
- "x": 140.0,
- "y": 340.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram2#0",
- "pinName": "QA3"
- },
- "pin2": {
- "compName": "GUIand41#2",
- "pinName": "A3"
- },
- "name": "unnamedWire#99",
- "path": [
- {
- "x": 140.0,
- "y": 355.0
- },
- {
- "x": 140.0,
- "y": 350.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIram4",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {
- "c00": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#0"
- }
- },
- "c11": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#3"
- }
- },
- "c10": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#2"
- }
- },
- "c01": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#1"
- }
- },
- "c1000": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#0",
- "prefix": "c10"
- }
- },
- "c1011": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#3",
- "prefix": "c10"
- }
- },
- "c1110": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#2",
- "prefix": "c11"
- }
- },
- "c1001": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#1",
- "prefix": "c10"
- }
- },
- "c1100": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#0",
- "prefix": "c11"
- }
- },
- "c1111": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#3",
- "prefix": "c11"
- }
- },
- "c0000": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#0",
- "prefix": "c00"
- }
- },
- "c0011": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#3",
- "prefix": "c00"
- }
- },
- "c0110": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#2",
- "prefix": "c01"
- }
- },
- "c0010": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#2",
- "prefix": "c00"
- }
- },
- "c1010": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#2",
- "prefix": "c10"
- }
- },
- "c0101": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#1",
- "prefix": "c01"
- }
- },
- "c0001": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#1",
- "prefix": "c00"
- }
- },
- "c0100": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#0",
- "prefix": "c01"
- }
- },
- "c0111": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#3",
- "prefix": "c01"
- }
- },
- "c1101": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram2#1",
- "prefix": "c11"
- }
- }
- },
- "atomicHighLevelStates": {
- "q": {
- "id": "bitVectorSplitting",
- "params": {
- "vectorPartTargets": [
- "c11.q",
- "c10.q",
- "c01.q",
- "c00.q"
- ],
- "vectorPartLengthes": [
- 16,
- 16,
- 16,
- 16
- ]
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 40.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "I1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "I2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "S1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "S2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 35.0,
- "y": 30.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 35.0,
- "y": 55.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 60.0,
- "y": 40.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S1"
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 25.0,
- "y": 12.5
- },
- {
- "x": 25.0,
- "y": 35.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S2"
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 15.0,
- "y": 37.5
- },
- {
- "x": 15.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#10"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 25.0,
- "y": 62.5
- },
- {
- "x": 25.0,
- "y": 45.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I2"
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 15.0,
- "y": 87.5
- },
- {
- "x": 15.0,
- "y": 70.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#8"
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#9"
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIsel1",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 100.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "A4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "B1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "B2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "B3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 95.0
- },
- "name": "B4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "SA",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "SB",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Y2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Y3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Y4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 20.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 20.0,
- "y": 52.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#10",
- "pos": {
- "x": 65.0,
- "y": 52.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#11",
- "pos": {
- "x": 65.0,
- "y": 77.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 20.0,
- "y": 102.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 20.0,
- "y": 152.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#4",
- "pos": {
- "x": 20.0,
- "y": 27.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#5",
- "pos": {
- "x": 20.0,
- "y": 77.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#6",
- "pos": {
- "x": 20.0,
- "y": 127.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#7",
- "pos": {
- "x": 20.0,
- "y": 177.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#8",
- "pos": {
- "x": 65.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#9",
- "pos": {
- "x": 65.0,
- "y": 27.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 6.5,
- "y": 16.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 6.5,
- "y": 66.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 6.5,
- "y": 116.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 4.0,
- "y": 41.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 4.0,
- "y": 91.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 4.0,
- "y": 141.5
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 15.0,
- "y": 62.5
- },
- {
- "x": 15.0,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 17.5,
- "y": 87.5
- },
- {
- "x": 17.5,
- "y": 57.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#10"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#11"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#12"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#13"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#14"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 7.5,
- "y": 167.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#16"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "B"
- },
- "name": "unnamedWire#17"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#18"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "B"
- },
- "name": "unnamedWire#19"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 17.5,
- "y": 112.5
- },
- {
- "x": 17.5,
- "y": 107.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "B"
- },
- "name": "unnamedWire#20"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "B"
- },
- "name": "unnamedWire#21",
- "path": [
- {
- "x": 5.0,
- "y": 192.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "A"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 42.5,
- "y": 12.5
- },
- {
- "x": 42.5,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "B"
- },
- "name": "unnamedWire#23",
- "path": [
- {
- "x": 45.0,
- "y": 37.5
- },
- {
- "x": 45.0,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#9",
- "pinName": "A"
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 47.5,
- "y": 62.5
- },
- {
- "x": 47.5,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#5",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#9",
- "pinName": "B"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 50.0,
- "y": 87.5
- },
- {
- "x": 50.0,
- "y": 42.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#10",
- "pinName": "A"
- },
- "name": "unnamedWire#26",
- "path": [
- {
- "x": 52.5,
- "y": 112.5
- },
- {
- "x": 52.5,
- "y": 57.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#6",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#10",
- "pinName": "B"
- },
- "name": "unnamedWire#27",
- "path": [
- {
- "x": 55.0,
- "y": 137.5
- },
- {
- "x": 55.0,
- "y": 67.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#11",
- "pinName": "A"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 57.5,
- "y": 162.5
- },
- {
- "x": 57.5,
- "y": 82.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#7",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#11",
- "pinName": "B"
- },
- "name": "unnamedWire#29",
- "path": [
- {
- "x": 60.0,
- "y": 187.5
- },
- {
- "x": 60.0,
- "y": 92.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A4"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 17.5,
- "y": 137.5
- },
- {
- "x": 17.5,
- "y": 157.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#8",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y1"
- },
- "name": "unnamedWire#30",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#9",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y2"
- },
- "name": "unnamedWire#31",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#10",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y3"
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#11",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y4"
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B1"
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "A"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 10.0,
- "y": 162.5
- },
- {
- "x": 10.0,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B2"
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "A"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 12.5,
- "y": 187.5
- },
- {
- "x": 12.5,
- "y": 82.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B3"
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "A"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 15.0,
- "y": 212.5
- },
- {
- "x": 15.0,
- "y": 132.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B4"
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "A"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 10.0,
- "y": 237.5
- },
- {
- "x": 10.0,
- "y": 182.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "SA"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#8"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "SB"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#9"
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIsel2_4",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 150.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "A4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "B1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "B2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 95.0
- },
- "name": "B3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 105.0
- },
- "name": "B4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 115.0
- },
- "name": "C1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 125.0
- },
- "name": "C2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 135.0
- },
- "name": "C3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 145.0
- },
- "name": "C4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "SA",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "SB",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "SC",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Y2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Y3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Y4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.2,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 50.0,
- "y": 570.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 50.0,
- "y": 620.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 50.0,
- "y": 670.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 50.0,
- "y": 720.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#4",
- "pos": {
- "x": 152.5,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#5",
- "pos": {
- "x": 152.5,
- "y": 65.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#6",
- "pos": {
- "x": 152.5,
- "y": 115.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#7",
- "pos": {
- "x": 152.5,
- "y": 165.0
- },
- "params": 1
- },
- {
- "id": "GUInot4",
- "name": "GUInot4#0",
- "pos": {
- "x": 75.0,
- "y": 250.0
- }
- },
- {
- "id": "GUIsel2_4",
- "name": "GUIsel2_4#0",
- "pos": {
- "x": 35.0,
- "y": 250.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 29.0,
- "y": 584.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 29.0,
- "y": 634.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 29.0,
- "y": 684.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "SA"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "SA"
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 25.0,
- "y": 25.0
- },
- {
- "x": 25.0,
- "y": 255.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "SB"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "SB"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 20.0,
- "y": 75.0
- },
- {
- "x": 20.0,
- "y": 265.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIsel2_4#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUInot4#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel2_4#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUInot4#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel2_4#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUInot4#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel2_4#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUInot4#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "SC"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 30.0,
- "y": 125.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 30.0,
- "y": 125.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 30.0,
- "y": 125.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 15.0,
- "y": 175.0
- },
- {
- "x": 15.0,
- "y": 275.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 30.0,
- "y": 735.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C1"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C2"
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C3"
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C4"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUInot4#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "A"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 115.0,
- "y": 255.0
- },
- {
- "x": 115.0,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUInot4#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "A"
- },
- "name": "unnamedWire#26",
- "path": [
- {
- "x": 120.0,
- "y": 265.0
- },
- {
- "x": 120.0,
- "y": 70.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUInot4#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "A"
- },
- "name": "unnamedWire#27",
- "path": [
- {
- "x": 125.0,
- "y": 275.0
- },
- {
- "x": 125.0,
- "y": 120.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUInot4#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "A"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 130.0,
- "y": 285.0
- },
- {
- "x": 130.0,
- "y": 170.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "B"
- },
- "name": "unnamedWire#29",
- "path": [
- {
- "x": 135.0,
- "y": 580.0
- },
- {
- "x": 135.0,
- "y": 30.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 10.0,
- "y": 225.0
- },
- {
- "x": 10.0,
- "y": 285.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "B"
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 140.0,
- "y": 630.0
- },
- {
- "x": 140.0,
- "y": 80.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "B"
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 145.0,
- "y": 680.0
- },
- {
- "x": 145.0,
- "y": 130.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "B"
- },
- "name": "unnamedWire#32",
- "path": [
- {
- "x": 150.0,
- "y": 730.0
- },
- {
- "x": 150.0,
- "y": 180.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y1"
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#5",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y2"
- },
- "name": "unnamedWire#34",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#6",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y3"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#7",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y4"
- },
- "name": "unnamedWire#36",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 5.0,
- "y": 275.0
- },
- {
- "x": 5.0,
- "y": 295.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A4"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 5.0,
- "y": 325.0
- },
- {
- "x": 5.0,
- "y": 305.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B1"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "B1"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 10.0,
- "y": 375.0
- },
- {
- "x": 10.0,
- "y": 315.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B2"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "B2"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 15.0,
- "y": 425.0
- },
- {
- "x": 15.0,
- "y": 325.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B3"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "B3"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 20.0,
- "y": 475.0
- },
- {
- "x": 20.0,
- "y": 335.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B4"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "B4"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 25.0,
- "y": 525.0
- },
- {
- "x": 25.0,
- "y": 345.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIsel3_4",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 20.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "A",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "B",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 7.5,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 35.0,
- "y": 2.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 35.0,
- "y": 27.5
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 62.5,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 4.0,
- "y": 11.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 4.0,
- "y": 36.5
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 29.0,
- "y": 24.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#10"
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#11"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 5.0,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 5.0,
- "y": 30.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#4"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 30.0,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 30.0,
- "y": 32.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 5.0,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 5.0,
- "y": 42.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#9"
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIxor",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 20.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Q",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "_Q",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "_R",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "_S",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 10.0,
+ "y": 7.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 40.0,
+ "y": 12.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 34.0,
+ "y": 16.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 64.0,
+ "y": 36.5
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_Q"
+ },
+ "name": "_q",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q"
+ },
+ "name": "q",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 17.5
+ },
+ {
+ "x": 35.0,
+ "y": 7.5
+ },
+ {
+ "x": 65.0,
+ "y": 7.5
+ },
+ {
+ "x": 65.0,
+ "y": 12.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_S"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_R"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 37.5
+ },
+ {
+ "x": 35.0,
+ "y": 27.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 22.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 42.5
+ },
+ {
+ "x": 5.0,
+ "y": 42.5
+ },
+ {
+ "x": 5.0,
+ "y": 22.5
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "_rsLatch",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q": {
+ "id": "wireForcing",
+ "params": {
+ "wiresToForce": [
+ "q"
+ ],
+ "wiresToForceInverted": [
+ "_q"
+ ]
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 270.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 155.0
+ },
+ "name": "A0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 165.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 175.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 185.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 195.0
+ },
+ "name": "B0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 205.0
+ },
+ "name": "B1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 215.0
+ },
+ "name": "B2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 225.0
+ },
+ "name": "B3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 95.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 105.0
+ },
+ "name": "Cn",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "name": "Cn+4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 115.0
+ },
+ "name": "D1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 125.0
+ },
+ "name": "D2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 135.0
+ },
+ "name": "D3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 145.0
+ },
+ "name": "D4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 75.0
+ },
+ "name": "F3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 45.0
+ },
+ "name": "F\u003d0",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "I0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "I1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "I2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "I3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "I4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "I5",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I6",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "I7",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "I8",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 65.0
+ },
+ "name": "OVR",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 255.0
+ },
+ "name": "Qn",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 115.0
+ },
+ "name": "Qn+3",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 235.0
+ },
+ "name": "RAMn",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 95.0
+ },
+ "name": "RAMn+3",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Y2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Y3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Y4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.1,
+ "submodel": {
+ "components": [
+ {
+ "id": "Am2901ALUInclSourceDecodeInclFunctionDecode",
+ "name": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pos": {
+ "x": 240.0,
+ "y": 2110.0
+ }
+ },
+ {
+ "id": "Am2901DestDecode",
+ "name": "Am2901DestDecode#0",
+ "pos": {
+ "x": 15.0,
+ "y": 45.0
+ }
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 160.0,
+ "y": 75.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 320.0,
+ "y": 440.0
+ },
+ "params": 1
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#0",
+ "pos": {
+ "x": 255.0,
+ "y": 2485.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#1",
+ "pos": {
+ "x": 270.0,
+ "y": 2435.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "DOWN"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#3",
+ "pos": {
+ "x": 300.0,
+ "y": 2515.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#4",
+ "pos": {
+ "x": 300.0,
+ "y": 2310.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT_ALT"
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 154.0,
+ "y": 949.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 154.0,
+ "y": 89.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 234.0,
+ "y": 2254.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 129.0,
+ "y": 2494.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 134.0,
+ "y": 2504.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 139.0,
+ "y": 2514.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 144.0,
+ "y": 2524.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 219.0,
+ "y": 2494.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 234.0,
+ "y": 2524.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#17",
+ "pos": {
+ "x": 34.0,
+ "y": 2624.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#18",
+ "pos": {
+ "x": 39.0,
+ "y": 2634.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#19",
+ "pos": {
+ "x": 279.0,
+ "y": 2114.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 154.0,
+ "y": 2264.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#20",
+ "pos": {
+ "x": 294.0,
+ "y": 2144.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#21",
+ "pos": {
+ "x": 334.0,
+ "y": 2319.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#22",
+ "pos": {
+ "x": 254.0,
+ "y": 2089.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#23",
+ "pos": {
+ "x": 259.0,
+ "y": 2094.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#24",
+ "pos": {
+ "x": 264.0,
+ "y": 2099.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#25",
+ "pos": {
+ "x": 269.0,
+ "y": 2104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#26",
+ "pos": {
+ "x": 254.0,
+ "y": 449.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#27",
+ "pos": {
+ "x": 259.0,
+ "y": 459.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#28",
+ "pos": {
+ "x": 264.0,
+ "y": 469.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#29",
+ "pos": {
+ "x": 269.0,
+ "y": 479.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 154.0,
+ "y": 2319.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#30",
+ "pos": {
+ "x": 9.0,
+ "y": 2354.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#31",
+ "pos": {
+ "x": 14.0,
+ "y": 2364.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#32",
+ "pos": {
+ "x": 19.0,
+ "y": 2374.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#33",
+ "pos": {
+ "x": 14.0,
+ "y": 2394.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#34",
+ "pos": {
+ "x": 19.0,
+ "y": 2404.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#35",
+ "pos": {
+ "x": 24.0,
+ "y": 2414.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#36",
+ "pos": {
+ "x": 9.0,
+ "y": 2384.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#37",
+ "pos": {
+ "x": 14.0,
+ "y": 2424.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#38",
+ "pos": {
+ "x": 19.0,
+ "y": 2434.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#39",
+ "pos": {
+ "x": 24.0,
+ "y": 2444.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 39.0,
+ "y": 2314.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#40",
+ "pos": {
+ "x": 314.0,
+ "y": 449.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#41",
+ "pos": {
+ "x": 4.0,
+ "y": 2549.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#42",
+ "pos": {
+ "x": 4.0,
+ "y": 2349.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#43",
+ "pos": {
+ "x": 339.0,
+ "y": 2524.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#44",
+ "pos": {
+ "x": 29.0,
+ "y": 2469.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#45",
+ "pos": {
+ "x": 264.0,
+ "y": 2469.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#46",
+ "pos": {
+ "x": 39.0,
+ "y": 2474.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#47",
+ "pos": {
+ "x": 309.0,
+ "y": 2474.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 34.0,
+ "y": 2324.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 29.0,
+ "y": 2334.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 219.0,
+ "y": 2224.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 224.0,
+ "y": 2234.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 229.0,
+ "y": 2244.0
+ },
+ "params": 1
+ },
+ {
+ "id": "and",
+ "name": "and#0",
+ "pos": {
+ "x": 190.0,
+ "y": 65.0
+ }
+ },
+ {
+ "id": "dff4",
+ "name": "dff4#0",
+ "pos": {
+ "x": 90.0,
+ "y": 2490.0
+ }
+ },
+ {
+ "id": "dlatch4",
+ "name": "dlatch4#0",
+ "pos": {
+ "x": 160.0,
+ "y": 2220.0
+ }
+ },
+ {
+ "id": "dlatch4",
+ "name": "dlatch4#1",
+ "pos": {
+ "x": 160.0,
+ "y": 2275.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "mux1_4#0",
+ "pos": {
+ "x": 275.0,
+ "y": 135.0
+ }
+ },
+ {
+ "id": "or4",
+ "name": "or4#0",
+ "pos": {
+ "x": 275.0,
+ "y": 445.0
+ }
+ },
+ {
+ "id": "ram4",
+ "name": "ram4#0",
+ "pos": {
+ "x": 95.0,
+ "y": 2220.0
+ }
+ },
+ {
+ "id": "sel3_4",
+ "name": "sel3_4#0",
+ "pos": {
+ "x": 45.0,
+ "y": 2310.0
+ }
+ },
+ {
+ "id": "sel3_4",
+ "name": "sel3_4#1",
+ "pos": {
+ "x": 45.0,
+ "y": 2510.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I8"
+ },
+ "pin2": {
+ "compName": "Am2901DestDecode#0",
+ "pinName": "I8"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I7"
+ },
+ "pin2": {
+ "compName": "Am2901DestDecode#0",
+ "pinName": "I7"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 150.0
+ },
+ {
+ "x": 5.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "F3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "name": "unnamedWire#100",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 2135.0
+ },
+ {
+ "x": 290.0,
+ "y": 2100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "name": "unnamedWire#101",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 2105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "name": "unnamedWire#102",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#103",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "name": "unnamedWire#104",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#29",
+ "pinName": ""
+ },
+ "name": "unnamedWire#105",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "or4#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#106",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "or4#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#107",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "or4#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#108",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#29",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "or4#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#109",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 155.0,
+ "y": 80.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1_4#0",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#110",
+ "path": [
+ {
+ "x": 255.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1_4#0",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#111",
+ "path": [
+ {
+ "x": 260.0,
+ "y": 200.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1_4#0",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#112",
+ "path": [
+ {
+ "x": 265.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#29",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1_4#0",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#113",
+ "path": [
+ {
+ "x": 270.0,
+ "y": 220.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "name": "unnamedWire#114",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 2090.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#31",
+ "pinName": ""
+ },
+ "name": "unnamedWire#115",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 2095.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#32",
+ "pinName": ""
+ },
+ "name": "unnamedWire#116",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 2100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#1",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#41",
+ "pinName": ""
+ },
+ "name": "unnamedWire#117",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 2545.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#118",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#31",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#119",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#32",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#120",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#31",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#33",
+ "pinName": ""
+ },
+ "name": "unnamedWire#121",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#32",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#34",
+ "pinName": ""
+ },
+ "name": "unnamedWire#122",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#35",
+ "pinName": ""
+ },
+ "name": "unnamedWire#123",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 2105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#36",
+ "pinName": ""
+ },
+ "name": "unnamedWire#124",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#36",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#125",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#33",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#126",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#34",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#127",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#35",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "B4"
+ },
+ "name": "unnamedWire#128",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#33",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#37",
+ "pinName": ""
+ },
+ "name": "unnamedWire#129",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#34",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#38",
+ "pinName": ""
+ },
+ "name": "unnamedWire#130",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#35",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#39",
+ "pinName": ""
+ },
+ "name": "unnamedWire#131",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#37",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#132",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#38",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#133",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#39",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#134",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#3",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#135",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#36",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#136",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 2585.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#37",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#137",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 2595.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#38",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#138",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 2605.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#39",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "B4"
+ },
+ "name": "unnamedWire#139",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 2615.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#140",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#141",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#142",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#143",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2901DestDecode#0",
+ "pinName": "RAMWE"
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#144",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#145"
+ },
+ {
+ "pin1": {
+ "compName": "and#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "WE"
+ },
+ "name": "unnamedWire#146",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 70.0
+ },
+ {
+ "x": 230.0,
+ "y": 105.0
+ },
+ {
+ "x": 90.0,
+ "y": 105.0
+ },
+ {
+ "x": 90.0,
+ "y": 2305.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901DestDecode#0",
+ "pinName": "QWE"
+ },
+ "pin2": {
+ "compName": "dff4#0",
+ "pinName": "WE"
+ },
+ "name": "unnamedWire#147",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 100.0
+ },
+ {
+ "x": 85.0,
+ "y": 2505.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901DestDecode#0",
+ "pinName": "YF"
+ },
+ "pin2": {
+ "compName": "mux1_4#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#148",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 80.0
+ },
+ {
+ "x": 70.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "mux1_4#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#149",
+ "path": [
+ {
+ "x": 335.0,
+ "y": 140.0
+ },
+ {
+ "x": 335.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "mux1_4#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#150",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "mux1_4#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#151",
+ "path": [
+ {
+ "x": 335.0,
+ "y": 160.0
+ },
+ {
+ "x": 335.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "mux1_4#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#152",
+ "path": [
+ {
+ "x": 325.0,
+ "y": 170.0
+ },
+ {
+ "x": 325.0,
+ "y": 350.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "or4#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#40",
+ "pinName": ""
+ },
+ "name": "unnamedWire#153",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#40",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#154",
+ "path": [
+ {
+ "x": 315.0,
+ "y": 445.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#40",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#155",
+ "path": [
+ {
+ "x": 315.0,
+ "y": 455.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F\u003d0"
+ },
+ "name": "unnamedWire#156",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#3",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#43",
+ "pinName": ""
+ },
+ "name": "unnamedWire#157",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#41",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "OUT"
+ },
+ "name": "unnamedWire#158",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 2690.0
+ },
+ {
+ "x": 280.0,
+ "y": 2690.0
+ },
+ {
+ "x": 280.0,
+ "y": 2495.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#1",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#159",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#42",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#160",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 2345.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#42",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#1",
+ "pinName": "OUT"
+ },
+ "name": "unnamedWire#161",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 2465.0
+ },
+ {
+ "x": 280.0,
+ "y": 2465.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F3"
+ },
+ "name": "unnamedWire#162",
+ "path": [
+ {
+ "x": 330.0,
+ "y": 2145.0
+ },
+ {
+ "x": 330.0,
+ "y": 750.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Qn+3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#43",
+ "pinName": ""
+ },
+ "name": "unnamedWire#163",
+ "path": [
+ {
+ "x": 340.0,
+ "y": 1150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#44",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#164",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#45",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#1",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#165",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 2470.0
+ },
+ {
+ "x": 290.0,
+ "y": 2445.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#45",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#166",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#45",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#44",
+ "pinName": ""
+ },
+ "name": "unnamedWire#167",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#46",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#168",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#46",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#47",
+ "pinName": ""
+ },
+ "name": "unnamedWire#169",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff4#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 155.0,
+ "y": 2485.0
+ },
+ {
+ "x": 80.0,
+ "y": 2485.0
+ },
+ {
+ "x": 80.0,
+ "y": 2495.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#3",
+ "pinName": "EN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#47",
+ "pinName": ""
+ },
+ "name": "unnamedWire#170",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#4",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#171",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 2320.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901DestDecode#0",
+ "pinName": "LSH"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 90.0
+ },
+ {
+ "x": 55.0,
+ "y": 125.0
+ },
+ {
+ "x": 40.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901DestDecode#0",
+ "pinName": "NSH"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#19",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 50.0
+ },
+ {
+ "x": 60.0,
+ "y": 120.0
+ },
+ {
+ "x": 35.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I6"
+ },
+ "pin2": {
+ "compName": "Am2901DestDecode#0",
+ "pinName": "I6"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 250.0
+ },
+ {
+ "x": 10.0,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901DestDecode#0",
+ "pinName": "RSH"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 60.0
+ },
+ {
+ "x": 65.0,
+ "y": 115.0
+ },
+ {
+ "x": 30.0,
+ "y": 115.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "SA"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "SB"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "SC"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#46",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "SA"
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 2515.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "SB"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 2525.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#1",
+ "pinName": "SC"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#44",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 2535.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A0"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "A0"
+ },
+ "name": "unnamedWire#27",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 1550.0
+ },
+ {
+ "x": 80.0,
+ "y": 2225.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 1650.0
+ },
+ {
+ "x": 75.0,
+ "y": 2235.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#29",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 1750.0
+ },
+ {
+ "x": 70.0,
+ "y": 2245.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "I5"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 350.0
+ },
+ {
+ "x": 130.0,
+ "y": 2115.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 1850.0
+ },
+ {
+ "x": 65.0,
+ "y": 2255.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B0"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "B0"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 1950.0
+ },
+ {
+ "x": 60.0,
+ "y": 2265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B1"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 2050.0
+ },
+ {
+ "x": 55.0,
+ "y": 2275.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B2"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#33",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 2150.0
+ },
+ {
+ "x": 50.0,
+ "y": 2285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B3"
+ },
+ "pin2": {
+ "compName": "ram4#0",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#34",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 2250.0
+ },
+ {
+ "x": 45.0,
+ "y": 2295.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram4#0",
+ "pinName": "QA1"
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ram4#0",
+ "pinName": "QA2"
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ram4#0",
+ "pinName": "QA3"
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ram4#0",
+ "pinName": "QA4"
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ram4#0",
+ "pinName": "QB1"
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#39",
+ "path": [
+ {
+ "x": 150.0,
+ "y": 2265.0
+ },
+ {
+ "x": 150.0,
+ "y": 2280.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I4"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 450.0
+ },
+ {
+ "x": 125.0,
+ "y": 2125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram4#0",
+ "pinName": "QB2"
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#40",
+ "path": [
+ {
+ "x": 145.0,
+ "y": 2275.0
+ },
+ {
+ "x": 145.0,
+ "y": 2290.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram4#0",
+ "pinName": "QB3"
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#41",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 2285.0
+ },
+ {
+ "x": 140.0,
+ "y": 2300.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram4#0",
+ "pinName": "QB4"
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#42",
+ "path": [
+ {
+ "x": 135.0,
+ "y": 2295.0
+ },
+ {
+ "x": 135.0,
+ "y": 2310.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Cn"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "Cn"
+ },
+ "name": "unnamedWire#43",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 1050.0
+ },
+ {
+ "x": 100.0,
+ "y": 2175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#44",
+ "path": [
+ {
+ "x": 180.0,
+ "y": 1150.0
+ },
+ {
+ "x": 180.0,
+ "y": 2185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D2"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 175.0,
+ "y": 1250.0
+ },
+ {
+ "x": 175.0,
+ "y": 2195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D3"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#46",
+ "path": [
+ {
+ "x": 170.0,
+ "y": 1350.0
+ },
+ {
+ "x": 170.0,
+ "y": 2205.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D4"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#47",
+ "path": [
+ {
+ "x": 165.0,
+ "y": 1450.0
+ },
+ {
+ "x": 165.0,
+ "y": 2215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#0",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#0",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 550.0
+ },
+ {
+ "x": 120.0,
+ "y": 2135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#0",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#0",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1_4#0",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#52",
+ "path": [
+ {
+ "x": 220.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1_4#0",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#53",
+ "path": [
+ {
+ "x": 225.0,
+ "y": 160.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1_4#0",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#54",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1_4#0",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#55",
+ "path": [
+ {
+ "x": 235.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#59",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 650.0
+ },
+ {
+ "x": 115.0,
+ "y": 2145.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#1",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#60",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 2280.0
+ },
+ {
+ "x": 200.0,
+ "y": 2265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#1",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#61",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 2290.0
+ },
+ {
+ "x": 205.0,
+ "y": 2275.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#1",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#62",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 2300.0
+ },
+ {
+ "x": 210.0,
+ "y": 2285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#1",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "B4"
+ },
+ "name": "unnamedWire#63",
+ "path": [
+ {
+ "x": 215.0,
+ "y": 2310.0
+ },
+ {
+ "x": 215.0,
+ "y": 2295.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff4#0",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#64",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dff4#0",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dff4#0",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dff4#0",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#67",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#68",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#69",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 750.0
+ },
+ {
+ "x": 110.0,
+ "y": 2155.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "name": "unnamedWire#70",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Qn"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#41",
+ "pinName": ""
+ },
+ "name": "unnamedWire#71",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#72",
+ "path": [
+ {
+ "x": 135.0,
+ "y": 2670.0
+ },
+ {
+ "x": 30.0,
+ "y": 2670.0
+ },
+ {
+ "x": 30.0,
+ "y": 2635.0
+ },
+ {
+ "x": 35.0,
+ "y": 2635.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "name": "unnamedWire#73",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 2675.0
+ },
+ {
+ "x": 35.0,
+ "y": 2675.0
+ },
+ {
+ "x": 35.0,
+ "y": 2640.0
+ },
+ {
+ "x": 40.0,
+ "y": 2640.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#74",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#75",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#76",
+ "path": [
+ {
+ "x": 145.0,
+ "y": 2680.0
+ },
+ {
+ "x": 40.0,
+ "y": 2680.0
+ },
+ {
+ "x": 40.0,
+ "y": 2645.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#43",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#77",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "RAMn"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#42",
+ "pinName": ""
+ },
+ "name": "unnamedWire#78",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#79",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 2665.0
+ },
+ {
+ "x": 25.0,
+ "y": 2665.0
+ },
+ {
+ "x": 25.0,
+ "y": 2630.0
+ },
+ {
+ "x": 30.0,
+ "y": 2630.0
+ },
+ {
+ "x": 30.0,
+ "y": 2555.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 850.0
+ },
+ {
+ "x": 105.0,
+ "y": 2165.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "Q1"
+ },
+ "name": "unnamedWire#80",
+ "path": [
+ {
+ "x": 220.0,
+ "y": 2305.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "Q2"
+ },
+ "name": "unnamedWire#81",
+ "path": [
+ {
+ "x": 225.0,
+ "y": 2505.0
+ },
+ {
+ "x": 225.0,
+ "y": 2315.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "Q3"
+ },
+ "name": "unnamedWire#82",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 2515.0
+ },
+ {
+ "x": 230.0,
+ "y": 2325.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "Q4"
+ },
+ "name": "unnamedWire#83",
+ "path": [
+ {
+ "x": 235.0,
+ "y": 2335.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#84",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 2565.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#1",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#85",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 2575.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#1",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "dff4#0",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#86",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#1",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "dff4#0",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#87",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#1",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "dff4#0",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#88",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#1",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "dff4#0",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#89",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "Cn+4"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Cn+4"
+ },
+ "name": "unnamedWire#90",
+ "path": [
+ {
+ "x": 315.0,
+ "y": 2155.0
+ },
+ {
+ "x": 315.0,
+ "y": 550.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "OVR"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "OVR"
+ },
+ "name": "unnamedWire#91",
+ "path": [
+ {
+ "x": 320.0,
+ "y": 2165.0
+ },
+ {
+ "x": 320.0,
+ "y": 650.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "F1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "name": "unnamedWire#92",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "F4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "name": "unnamedWire#93",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#4",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "name": "unnamedWire#94",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#47",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#4",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#95",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#96",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "RAMn+3"
+ },
+ "name": "unnamedWire#97",
+ "path": [
+ {
+ "x": 335.0,
+ "y": 950.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#98",
+ "path": [
+ {
+ "x": 280.0,
+ "y": 2090.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+ "pinName": "F2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "name": "unnamedWire#99",
+ "path": [
+ {
+ "x": 285.0,
+ "y": 2125.0
+ },
+ {
+ "x": 285.0,
+ "y": 2095.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Am2901",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {
+ "qreg": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff4#0"
+ }
+ },
+ "regs": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram4#0"
+ }
+ }
+ },
+ "atomicHighLevelStates": {}
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 60.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "CinE",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 45.0
+ },
+ "name": "FN",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "I4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "I5",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "L",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "name": "RN",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "SBE",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "SN",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.25,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 15.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 15.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 55.0,
+ "y": 45.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 55.0,
+ "y": 70.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#4",
+ "pos": {
+ "x": 100.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 4.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 4.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 39.0,
+ "y": 34.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 4.0,
+ "y": 44.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 9.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 9.0,
+ "y": 54.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 9.0,
+ "y": 64.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 9.0,
+ "y": 84.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 49.0,
+ "y": 99.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 49.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 39.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "and",
+ "name": "and#0",
+ "pos": {
+ "x": 100.0,
+ "y": 135.0
+ }
+ },
+ {
+ "id": "nand3",
+ "name": "nand3#0",
+ "pos": {
+ "x": 55.0,
+ "y": 10.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 15.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "SN"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 105.0
+ },
+ {
+ "x": 135.0,
+ "y": 105.0
+ },
+ {
+ "x": 135.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "RN"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 220.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "nand3#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#19",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "CinE"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 5.0
+ },
+ {
+ "x": 115.0,
+ "y": 5.0
+ },
+ {
+ "x": 115.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "nand3#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "nand3#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#27"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#28"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#29"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "L"
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "and#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "SBE"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 45.0
+ },
+ {
+ "x": 45.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "FN"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "nand3#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 40.0
+ },
+ {
+ "x": 45.0,
+ "y": 40.0
+ },
+ {
+ "x": 45.0,
+ "y": 15.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Am2901ALUFuncDecode",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 120.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "Cn",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 45.0
+ },
+ "name": "Cn+4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "F1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "F2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "F3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "F4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "I4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "I5",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "name": "OVR",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "R1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "R2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "R3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "R4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "S1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 95.0
+ },
+ "name": "S2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 105.0
+ },
+ "name": "S3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 115.0
+ },
+ "name": "S4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.25,
+ "submodel": {
+ "components": [
+ {
+ "id": "Am2901ALUFuncDecode",
+ "name": "Am2901ALUFuncDecode#0",
+ "pos": {
+ "x": 20.0,
+ "y": 2.5
+ }
+ },
+ {
+ "id": "Am2901ALUOneBit",
+ "name": "Am2901ALUOneBit#0",
+ "pos": {
+ "x": 45.0,
+ "y": 80.0
+ }
+ },
+ {
+ "id": "Am2901ALUOneBit",
+ "name": "Am2901ALUOneBit#1",
+ "pos": {
+ "x": 45.0,
+ "y": 180.0
+ }
+ },
+ {
+ "id": "Am2901ALUOneBit",
+ "name": "Am2901ALUOneBit#2",
+ "pos": {
+ "x": 45.0,
+ "y": 280.0
+ }
+ },
+ {
+ "id": "Am2901ALUOneBit",
+ "name": "Am2901ALUOneBit#3",
+ "pos": {
+ "x": 45.0,
+ "y": 380.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 24.0,
+ "y": 94.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 24.0,
+ "y": 194.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 31.5,
+ "y": 244.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 31.5,
+ "y": 344.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 34.0,
+ "y": 154.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 34.0,
+ "y": 254.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 34.0,
+ "y": 354.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 36.5,
+ "y": 164.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 36.5,
+ "y": 264.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#17",
+ "pos": {
+ "x": 36.5,
+ "y": 364.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#18",
+ "pos": {
+ "x": 84.0,
+ "y": 374.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#19",
+ "pos": {
+ "x": 84.0,
+ "y": 384.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 24.0,
+ "y": 294.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 26.5,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 26.5,
+ "y": 204.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 26.5,
+ "y": 304.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 29.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 29.0,
+ "y": 224.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 29.0,
+ "y": 324.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 31.5,
+ "y": 144.0
+ },
+ "params": 1
+ },
+ {
+ "id": "xor",
+ "name": "xor#0",
+ "pos": {
+ "x": 95.0,
+ "y": 400.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "Am2901ALUFuncDecode#0",
+ "pinName": "I5"
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 20.0
+ },
+ {
+ "x": 5.0,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I4"
+ },
+ "pin2": {
+ "compName": "Am2901ALUFuncDecode#0",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 60.0
+ },
+ {
+ "x": 10.0,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUFuncDecode#0",
+ "pinName": "CinE"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 7.5
+ },
+ {
+ "x": 70.0,
+ "y": 77.5
+ },
+ {
+ "x": 27.5,
+ "y": 77.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "CinE"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "CinE"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "CinE"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "CinE"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 27.5,
+ "y": 405.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUFuncDecode#0",
+ "pinName": "RN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 57.5,
+ "y": 57.5
+ },
+ {
+ "x": 57.5,
+ "y": 65.0
+ },
+ {
+ "x": 30.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "Am2901ALUFuncDecode#0",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 100.0
+ },
+ {
+ "x": 15.0,
+ "y": 27.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "RN"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "RN"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "RN"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "RN"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 425.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUFuncDecode#0",
+ "pinName": "SN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 27.5
+ },
+ {
+ "x": 65.0,
+ "y": 72.5
+ },
+ {
+ "x": 32.5,
+ "y": 72.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "SN"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "SN"
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "SN"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUFuncDecode#0",
+ "pinName": "SBE"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 62.5,
+ "y": 37.5
+ },
+ {
+ "x": 62.5,
+ "y": 70.0
+ },
+ {
+ "x": 25.0,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "SN"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 32.5,
+ "y": 445.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUFuncDecode#0",
+ "pinName": "FN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 47.5
+ },
+ {
+ "x": 60.0,
+ "y": 67.5
+ },
+ {
+ "x": 35.0,
+ "y": 67.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "FN"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "FN"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "FN"
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "FN"
+ },
+ "name": "unnamedWire#37",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 455.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUFuncDecode#0",
+ "pinName": "L"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": [
+ {
+ "x": 67.5,
+ "y": 17.5
+ },
+ {
+ "x": 67.5,
+ "y": 75.0
+ },
+ {
+ "x": 37.5,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "L"
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "L"
+ },
+ "name": "unnamedWire#42",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "L"
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "L"
+ },
+ "name": "unnamedWire#44",
+ "path": [
+ {
+ "x": 37.5,
+ "y": 465.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "R1"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "R"
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 180.0
+ },
+ {
+ "x": 10.0,
+ "y": 115.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "R2"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "R"
+ },
+ "name": "unnamedWire#46",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 220.0
+ },
+ {
+ "x": 10.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "R3"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "R"
+ },
+ "name": "unnamedWire#47",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 260.0
+ },
+ {
+ "x": 10.0,
+ "y": 315.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "R4"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "R"
+ },
+ "name": "unnamedWire#48",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 300.0
+ },
+ {
+ "x": 20.0,
+ "y": 415.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "S"
+ },
+ "name": "unnamedWire#49",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 340.0
+ },
+ {
+ "x": 15.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "S"
+ },
+ "name": "unnamedWire#50",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 380.0
+ },
+ {
+ "x": 5.0,
+ "y": 235.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S3"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "S"
+ },
+ "name": "unnamedWire#51",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 420.0
+ },
+ {
+ "x": 10.0,
+ "y": 335.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S4"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "S"
+ },
+ "name": "unnamedWire#52",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 460.0
+ },
+ {
+ "x": 10.0,
+ "y": 435.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Cn"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "Cin"
+ },
+ "name": "unnamedWire#53",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 140.0
+ },
+ {
+ "x": 5.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "Cout"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "Cin"
+ },
+ "name": "unnamedWire#54",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 85.0
+ },
+ {
+ "x": 85.0,
+ "y": 175.0
+ },
+ {
+ "x": 40.0,
+ "y": 175.0
+ },
+ {
+ "x": 40.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "Cout"
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "Cin"
+ },
+ "name": "unnamedWire#55",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 185.0
+ },
+ {
+ "x": 85.0,
+ "y": 275.0
+ },
+ {
+ "x": 40.0,
+ "y": 275.0
+ },
+ {
+ "x": 40.0,
+ "y": 285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "Cout"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "name": "unnamedWire#56",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "Cin"
+ },
+ "name": "unnamedWire#57",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 375.0
+ },
+ {
+ "x": 40.0,
+ "y": 385.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "Cout"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "F"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F1"
+ },
+ "name": "unnamedWire#59",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 95.0
+ },
+ {
+ "x": 90.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#0",
+ "pinName": "CoutE"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "F"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F2"
+ },
+ "name": "unnamedWire#60",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 195.0
+ },
+ {
+ "x": 95.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "F"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F3"
+ },
+ "name": "unnamedWire#61",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 295.0
+ },
+ {
+ "x": 100.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "F"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F4"
+ },
+ "name": "unnamedWire#62",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 395.0
+ },
+ {
+ "x": 105.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "xor#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#63",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 375.0
+ },
+ {
+ "x": 90.0,
+ "y": 405.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "xor#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#64",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 415.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Cn+4"
+ },
+ "name": "unnamedWire#65",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 385.0
+ },
+ {
+ "x": 130.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "xor#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "OVR"
+ },
+ "name": "unnamedWire#66"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#1",
+ "pinName": "CoutE"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#2",
+ "pinName": "CoutE"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2901ALUOneBit#3",
+ "pinName": "CoutE"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 395.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Am2901ALUInclDecode",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 230.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 115.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 125.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 135.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 145.0
+ },
+ "name": "A4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 155.0
+ },
+ "name": "B1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 165.0
+ },
+ "name": "B2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 175.0
+ },
+ "name": "B3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 185.0
+ },
+ "name": "B4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "Cn",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 45.0
+ },
+ "name": "Cn+4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "D1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "D2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 95.0
+ },
+ "name": "D3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 105.0
+ },
+ "name": "D4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "F1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "F2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "F3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "F4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "I0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "I1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "I2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "I4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "I5",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "name": "OVR",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 195.0
+ },
+ "name": "Q1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 205.0
+ },
+ "name": "Q2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 215.0
+ },
+ "name": "Q3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 225.0
+ },
+ "name": "Q4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.25,
+ "submodel": {
+ "components": [
+ {
+ "id": "Am2901ALUInclDecode",
+ "name": "Am2901ALUInclDecode#0",
+ "pos": {
+ "x": 60.0,
+ "y": 15.0
+ }
+ },
+ {
+ "id": "Am2901SourceDecode",
+ "name": "Am2901SourceDecode#0",
+ "pos": {
+ "x": 15.0,
+ "y": 165.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 9.0,
+ "y": 459.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 14.0,
+ "y": 499.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 19.0,
+ "y": 539.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 24.0,
+ "y": 579.0
+ },
+ "params": 1
+ },
+ {
+ "id": "sel2_4",
+ "name": "sel2_4#0",
+ "pos": {
+ "x": 45.0,
+ "y": 365.0
+ }
+ },
+ {
+ "id": "sel3_4",
+ "name": "sel3_4#0",
+ "pos": {
+ "x": 45.0,
+ "y": 575.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "I5"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I4"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 60.0
+ },
+ {
+ "x": 5.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D4"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 430.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 440.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 450.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "B4"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 460.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#19",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 610.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 100.0
+ },
+ {
+ "x": 15.0,
+ "y": 40.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 620.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 630.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 640.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B1"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 620.0
+ },
+ {
+ "x": 5.0,
+ "y": 650.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B2"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B3"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 700.0
+ },
+ {
+ "x": 5.0,
+ "y": 670.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B4"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "B4"
+ },
+ "name": "unnamedWire#26",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 740.0
+ },
+ {
+ "x": 10.0,
+ "y": 680.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#27",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 780.0
+ },
+ {
+ "x": 15.0,
+ "y": 690.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 820.0
+ },
+ {
+ "x": 20.0,
+ "y": 700.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#29",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 860.0
+ },
+ {
+ "x": 25.0,
+ "y": 710.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "Am2901SourceDecode#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 140.0
+ },
+ {
+ "x": 5.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 900.0
+ },
+ {
+ "x": 30.0,
+ "y": 720.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901SourceDecode#0",
+ "pinName": "SQ"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "SC"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 170.0
+ },
+ {
+ "x": 75.0,
+ "y": 240.0
+ },
+ {
+ "x": 30.0,
+ "y": 240.0
+ },
+ {
+ "x": 30.0,
+ "y": 600.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901SourceDecode#0",
+ "pinName": "RA"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "SB"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 180.0
+ },
+ {
+ "x": 70.0,
+ "y": 235.0
+ },
+ {
+ "x": 20.0,
+ "y": 235.0
+ },
+ {
+ "x": 20.0,
+ "y": 380.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901SourceDecode#0",
+ "pinName": "SB"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "SB"
+ },
+ "name": "unnamedWire#33",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 190.0
+ },
+ {
+ "x": 65.0,
+ "y": 230.0
+ },
+ {
+ "x": 35.0,
+ "y": 230.0
+ },
+ {
+ "x": 35.0,
+ "y": 590.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901SourceDecode#0",
+ "pinName": "SA"
+ },
+ "pin2": {
+ "compName": "sel3_4#0",
+ "pinName": "SA"
+ },
+ "name": "unnamedWire#34",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 200.0
+ },
+ {
+ "x": 60.0,
+ "y": 225.0
+ },
+ {
+ "x": 40.0,
+ "y": 225.0
+ },
+ {
+ "x": 40.0,
+ "y": 580.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901SourceDecode#0",
+ "pinName": "RD"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "SA"
+ },
+ "name": "unnamedWire#35",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 210.0
+ },
+ {
+ "x": 55.0,
+ "y": 220.0
+ },
+ {
+ "x": 25.0,
+ "y": 220.0
+ },
+ {
+ "x": 25.0,
+ "y": 370.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel2_4#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "R1"
+ },
+ "name": "unnamedWire#36",
+ "path": [
+ {
+ "x": 82.5,
+ "y": 370.0
+ },
+ {
+ "x": 82.5,
+ "y": 162.5
+ },
+ {
+ "x": 20.0,
+ "y": 162.5
+ },
+ {
+ "x": 20.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel2_4#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "R2"
+ },
+ "name": "unnamedWire#37",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 380.0
+ },
+ {
+ "x": 85.0,
+ "y": 160.0
+ },
+ {
+ "x": 22.5,
+ "y": 160.0
+ },
+ {
+ "x": 22.5,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel2_4#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "R3"
+ },
+ "name": "unnamedWire#38",
+ "path": [
+ {
+ "x": 87.5,
+ "y": 390.0
+ },
+ {
+ "x": 87.5,
+ "y": 157.5
+ },
+ {
+ "x": 25.0,
+ "y": 157.5
+ },
+ {
+ "x": 25.0,
+ "y": 80.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel2_4#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "R4"
+ },
+ "name": "unnamedWire#39",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 400.0
+ },
+ {
+ "x": 90.0,
+ "y": 155.0
+ },
+ {
+ "x": 27.5,
+ "y": 155.0
+ },
+ {
+ "x": 27.5,
+ "y": 90.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "Am2901SourceDecode#0",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#40",
+ "path": [
+ {
+ "x": 92.5,
+ "y": 580.0
+ },
+ {
+ "x": 92.5,
+ "y": 152.5
+ },
+ {
+ "x": 30.0,
+ "y": 152.5
+ },
+ {
+ "x": 30.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#41",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 590.0
+ },
+ {
+ "x": 95.0,
+ "y": 150.0
+ },
+ {
+ "x": 32.5,
+ "y": 150.0
+ },
+ {
+ "x": 32.5,
+ "y": 110.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "S3"
+ },
+ "name": "unnamedWire#42",
+ "path": [
+ {
+ "x": 97.5,
+ "y": 600.0
+ },
+ {
+ "x": 97.5,
+ "y": 147.5
+ },
+ {
+ "x": 35.0,
+ "y": 147.5
+ },
+ {
+ "x": 35.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel3_4#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "S4"
+ },
+ "name": "unnamedWire#43",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 610.0
+ },
+ {
+ "x": 100.0,
+ "y": 145.0
+ },
+ {
+ "x": 37.5,
+ "y": 145.0
+ },
+ {
+ "x": 37.5,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "F1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F1"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "F2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F2"
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 135.0,
+ "y": 30.0
+ },
+ {
+ "x": 135.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "F3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F3"
+ },
+ "name": "unnamedWire#46",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 40.0
+ },
+ {
+ "x": 130.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "F4"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F4"
+ },
+ "name": "unnamedWire#47",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 50.0
+ },
+ {
+ "x": 125.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "Cn+4"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Cn+4"
+ },
+ "name": "unnamedWire#48",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 60.0
+ },
+ {
+ "x": 120.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "OVR"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "OVR"
+ },
+ "name": "unnamedWire#49",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 70.0
+ },
+ {
+ "x": 115.0,
+ "y": 220.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "Am2901SourceDecode#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 220.0
+ },
+ {
+ "x": 5.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Cn"
+ },
+ "pin2": {
+ "compName": "Am2901ALUInclDecode#0",
+ "pinName": "Cn"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 260.0
+ },
+ {
+ "x": 10.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 300.0
+ },
+ {
+ "x": 15.0,
+ "y": 390.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D2"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 340.0
+ },
+ {
+ "x": 10.0,
+ "y": 400.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D3"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 380.0
+ },
+ {
+ "x": 5.0,
+ "y": 410.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Am2901ALUInclSourceDecodeInclFunctionDecode",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 90.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "Cin",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "CinE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Cout",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "CoutE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "F",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "FN",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "L",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "R",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "RN",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "S",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "SN",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 60.0,
+ "y": 55.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 49.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 54.0,
+ "y": 69.0
+ },
+ "params": 1
+ },
+ {
+ "id": "and",
+ "name": "and#0",
+ "pos": {
+ "x": 10.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "and",
+ "name": "and#1",
+ "pos": {
+ "x": 135.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "fulladder",
+ "name": "fulladder#0",
+ "pos": {
+ "x": 60.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "mux1#0",
+ "pos": {
+ "x": 90.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "xor",
+ "name": "xor#0",
+ "pos": {
+ "x": 10.0,
+ "y": 190.0
+ }
+ },
+ {
+ "id": "xor",
+ "name": "xor#1",
+ "pos": {
+ "x": 10.0,
+ "y": 290.0
+ }
+ },
+ {
+ "id": "xor",
+ "name": "xor#2",
+ "pos": {
+ "x": 135.0,
+ "y": 70.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Cin"
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "CoutE"
+ },
+ "pin2": {
+ "compName": "and#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 75.0
+ },
+ {
+ "x": 5.0,
+ "y": 10.0
+ },
+ {
+ "x": 130.0,
+ "y": 10.0
+ },
+ {
+ "x": 130.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "xor#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "fulladder#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 35.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "xor#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 295.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "fulladder#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "fulladder#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "mux1#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 25.0
+ },
+ {
+ "x": 100.0,
+ "y": 65.0
+ },
+ {
+ "x": 85.0,
+ "y": 65.0
+ },
+ {
+ "x": 85.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "fulladder#0",
+ "pinName": "Z"
+ },
+ "pin2": {
+ "compName": "and#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "mux1#0",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 82.5,
+ "y": 65.0
+ },
+ {
+ "x": 82.5,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "mux1#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "xor#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "CinE"
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 125.0
+ },
+ {
+ "x": 7.5,
+ "y": 35.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Cout"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "xor#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "F"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "R"
+ },
+ "pin2": {
+ "compName": "xor#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "RN"
+ },
+ "pin2": {
+ "compName": "xor#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S"
+ },
+ "pin2": {
+ "compName": "xor#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#5"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "SN"
+ },
+ "pin2": {
+ "compName": "xor#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#6"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "FN"
+ },
+ "pin2": {
+ "compName": "xor#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 375.0
+ },
+ {
+ "x": 130.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "L"
+ },
+ "pin2": {
+ "compName": "mux1#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 87.5,
+ "y": 425.0
+ },
+ {
+ "x": 87.5,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "fulladder#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Am2901ALUOneBit",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 60.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I6",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "I7",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "I8",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 45.0
+ },
+ "name": "LSH",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "NSH",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "name": "QWE",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "RAMWE",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "RSH",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "YF",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.25,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 15.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 15.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#10",
+ "pos": {
+ "x": 80.0,
+ "y": 145.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#11",
+ "pos": {
+ "x": 110.0,
+ "y": 105.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#12",
+ "pos": {
+ "x": 115.0,
+ "y": 210.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 15.0,
+ "y": 90.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 15.0,
+ "y": 150.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#4",
+ "pos": {
+ "x": 50.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#5",
+ "pos": {
+ "x": 50.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#6",
+ "pos": {
+ "x": 50.0,
+ "y": 90.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#7",
+ "pos": {
+ "x": 50.0,
+ "y": 130.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#8",
+ "pos": {
+ "x": 80.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#9",
+ "pos": {
+ "x": 80.0,
+ "y": 90.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 4.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 4.0,
+ "y": 14.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 39.0,
+ "y": 134.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 74.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 74.0,
+ "y": 99.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 74.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 74.0,
+ "y": 159.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 109.0,
+ "y": 214.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 4.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 9.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 9.0,
+ "y": 64.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 9.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 4.0,
+ "y": 154.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 39.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 44.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 44.0,
+ "y": 54.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I8"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I6"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 165.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 5.0
+ },
+ {
+ "x": 40.0,
+ "y": 5.0
+ },
+ {
+ "x": 40.0,
+ "y": 15.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "NSH"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 5.0
+ },
+ {
+ "x": 135.0,
+ "y": 5.0
+ },
+ {
+ "x": 135.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 115.0
+ },
+ {
+ "x": 45.0,
+ "y": 115.0
+ },
+ {
+ "x": 45.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#27",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 145.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#29",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 15.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#5",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "RAMWE"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 60.0
+ },
+ {
+ "x": 125.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#9",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#33",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#9",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "LSH"
+ },
+ "name": "unnamedWire#36",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 140.0
+ },
+ {
+ "x": 125.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#37",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#10",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "RSH"
+ },
+ "name": "unnamedWire#40",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 20.0
+ },
+ {
+ "x": 130.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#11",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#41"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#11",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#42",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 170.0
+ },
+ {
+ "x": 105.0,
+ "y": 170.0
+ },
+ {
+ "x": 105.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#10",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#43",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 155.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#12",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#12",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 225.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#11",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "YF"
+ },
+ "name": "unnamedWire#46"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#12",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QWE"
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I7"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 55.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Am2901DestDecode",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 50.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "I1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "I2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "RA",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 45.0
+ },
+ "name": "RD",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "SA",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "SB",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "SQ",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.25,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 10.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 10.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#10",
+ "pos": {
+ "x": 70.0,
+ "y": 90.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#11",
+ "pos": {
+ "x": 70.0,
+ "y": 130.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#12",
+ "pos": {
+ "x": 70.0,
+ "y": 170.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#13",
+ "pos": {
+ "x": 100.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#14",
+ "pos": {
+ "x": 100.0,
+ "y": 170.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 10.0,
+ "y": 90.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 40.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#4",
+ "pos": {
+ "x": 40.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#5",
+ "pos": {
+ "x": 40.0,
+ "y": 90.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#6",
+ "pos": {
+ "x": 40.0,
+ "y": 130.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#7",
+ "pos": {
+ "x": 40.0,
+ "y": 170.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#8",
+ "pos": {
+ "x": 70.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#9",
+ "pos": {
+ "x": 70.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 4.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 6.5,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 36.5,
+ "y": 99.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 64.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 64.0,
+ "y": 99.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 64.0,
+ "y": 139.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 94.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 94.0,
+ "y": 179.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 4.0,
+ "y": 144.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 6.5,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 6.5,
+ "y": 99.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 6.5,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 31.5,
+ "y": 54.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 34.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 34.0,
+ "y": 64.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 34.0,
+ "y": 134.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 5.0
+ },
+ {
+ "x": 35.0,
+ "y": 5.0
+ },
+ {
+ "x": 35.0,
+ "y": 15.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 112.5
+ },
+ {
+ "x": 32.5,
+ "y": 112.5
+ },
+ {
+ "x": 32.5,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 32.5,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 32.5,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#27",
+ "path": [
+ {
+ "x": 37.5,
+ "y": 35.0
+ },
+ {
+ "x": 65.0,
+ "y": 35.0
+ },
+ {
+ "x": 65.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 37.5,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#29"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 15.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#9",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 55.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#9",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#5",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#34",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#10",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#35",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#11",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#37",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#11",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#38",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 145.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#12",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#39"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#13",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#41",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 15.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#13",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#42",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "RA"
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#10",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "SB"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#11",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "SA"
+ },
+ "name": "unnamedWire#45",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#12",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#14",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#47",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#14",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#48",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#13",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "SQ"
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#14",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "RD"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#12",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 195.0
+ },
+ {
+ "x": 65.0,
+ "y": 195.0
+ },
+ {
+ "x": 65.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 55.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Am2901SourceDecode",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 270.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 155.0
- },
- "name": "A0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 165.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 175.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 185.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 195.0
- },
- "name": "B0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 205.0
- },
- "name": "B1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 215.0
- },
- "name": "B2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 225.0
- },
- "name": "B3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 95.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 105.0
- },
- "name": "Cn",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 55.0
- },
- "name": "Cn+4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 115.0
- },
- "name": "D1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 125.0
- },
- "name": "D2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 135.0
- },
- "name": "D3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 145.0
- },
- "name": "D4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 75.0
- },
- "name": "F3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 45.0
- },
- "name": "F\u003d0",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "I0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "I1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "I2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "I3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "I4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "I5",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "I6",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "I7",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "I8",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 255.0
- },
- "name": "IQn",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 265.0
- },
- "name": "IQn+3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 235.0
- },
- "name": "IRAMn",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 245.0
- },
- "name": "IRAMn+3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 105.0
- },
- "name": "OQn",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 115.0
- },
- "name": "OQn+3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 85.0
- },
- "name": "ORAMn",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 95.0
- },
- "name": "ORAMn+3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 65.0
- },
- "name": "OVR",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Y1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Y2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Y3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Y4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.1,
- "submodel": {
- "components": [
- {
- "id": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode",
- "name": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pos": {
- "x": 240.0,
- "y": 2110.0
- }
- },
- {
- "id": "GUIAm2901DestDecode",
- "name": "GUIAm2901DestDecode#0",
- "pos": {
- "x": 15.0,
- "y": 45.0
- }
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 160.0,
- "y": 75.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 320.0,
- "y": 440.0
- },
- "params": 1
- },
- {
- "id": "GUIand",
- "name": "GUIand#0",
- "pos": {
- "x": 190.0,
- "y": 65.0
- }
- },
- {
- "id": "GUIdff4",
- "name": "GUIdff4#0",
- "pos": {
- "x": 90.0,
- "y": 2490.0
- }
- },
- {
- "id": "GUIdlatch4",
- "name": "GUIdlatch4#0",
- "pos": {
- "x": 160.0,
- "y": 2220.0
- }
- },
- {
- "id": "GUIdlatch4",
- "name": "GUIdlatch4#1",
- "pos": {
- "x": 160.0,
- "y": 2275.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "GUImux1_4#0",
- "pos": {
- "x": 275.0,
- "y": 135.0
- }
- },
- {
- "id": "GUIor4",
- "name": "GUIor4#0",
- "pos": {
- "x": 275.0,
- "y": 445.0
- }
- },
- {
- "id": "GUIram4",
- "name": "GUIram4#0",
- "pos": {
- "x": 95.0,
- "y": 2220.0
- }
- },
- {
- "id": "GUIsel3_4",
- "name": "GUIsel3_4#0",
- "pos": {
- "x": 45.0,
- "y": 2310.0
- }
- },
- {
- "id": "GUIsel3_4",
- "name": "GUIsel3_4#1",
- "pos": {
- "x": 45.0,
- "y": 2510.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 154.0,
- "y": 949.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 154.0,
- "y": 89.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 234.0,
- "y": 2254.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#11",
- "pos": {
- "x": 129.0,
- "y": 2494.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#12",
- "pos": {
- "x": 134.0,
- "y": 2504.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#13",
- "pos": {
- "x": 139.0,
- "y": 2514.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#14",
- "pos": {
- "x": 144.0,
- "y": 2524.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#15",
- "pos": {
- "x": 219.0,
- "y": 2494.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#16",
- "pos": {
- "x": 234.0,
- "y": 2524.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#17",
- "pos": {
- "x": 34.0,
- "y": 2624.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#18",
- "pos": {
- "x": 39.0,
- "y": 2634.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#19",
- "pos": {
- "x": 279.0,
- "y": 2114.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 154.0,
- "y": 2264.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#20",
- "pos": {
- "x": 294.0,
- "y": 2144.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#21",
- "pos": {
- "x": 329.0,
- "y": 949.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#22",
- "pos": {
- "x": 254.0,
- "y": 2089.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#23",
- "pos": {
- "x": 259.0,
- "y": 2094.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#24",
- "pos": {
- "x": 264.0,
- "y": 2099.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#25",
- "pos": {
- "x": 269.0,
- "y": 2104.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#26",
- "pos": {
- "x": 254.0,
- "y": 449.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#27",
- "pos": {
- "x": 259.0,
- "y": 459.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#28",
- "pos": {
- "x": 264.0,
- "y": 469.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#29",
- "pos": {
- "x": 269.0,
- "y": 479.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 154.0,
- "y": 2319.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#30",
- "pos": {
- "x": 9.0,
- "y": 2354.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#31",
- "pos": {
- "x": 14.0,
- "y": 2364.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#32",
- "pos": {
- "x": 19.0,
- "y": 2374.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#33",
- "pos": {
- "x": 14.0,
- "y": 2394.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#34",
- "pos": {
- "x": 19.0,
- "y": 2404.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#35",
- "pos": {
- "x": 24.0,
- "y": 2414.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#36",
- "pos": {
- "x": 9.0,
- "y": 2384.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#37",
- "pos": {
- "x": 14.0,
- "y": 2424.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#38",
- "pos": {
- "x": 19.0,
- "y": 2434.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#39",
- "pos": {
- "x": 24.0,
- "y": 2444.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 39.0,
- "y": 2314.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#40",
- "pos": {
- "x": 314.0,
- "y": 449.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 34.0,
- "y": 2324.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 29.0,
- "y": 2334.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 219.0,
- "y": 2224.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 224.0,
- "y": 2234.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 229.0,
- "y": 2244.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I8"
- },
- "pin2": {
- "compName": "GUIAm2901DestDecode#0",
- "pinName": "I8"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I7"
- },
- "pin2": {
- "compName": "GUIAm2901DestDecode#0",
- "pinName": "I7"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 5.0,
- "y": 150.0
- },
- {
- "x": 5.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "F3"
- },
- "pin2": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "name": "unnamedWire#100",
- "path": [
- {
- "x": 290.0,
- "y": 2135.0
- },
- {
- "x": 290.0,
- "y": 2100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "name": "unnamedWire#101",
- "path": [
- {
- "x": 295.0,
- "y": 2105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "name": "unnamedWire#102",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "name": "unnamedWire#103",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#28",
- "pinName": ""
- },
- "name": "unnamedWire#104",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#29",
- "pinName": ""
- },
- "name": "unnamedWire#105",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIor4#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#106",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIor4#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#107",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#28",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIor4#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#108",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#29",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIor4#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#109",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 155.0,
- "y": 80.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1_4#0",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#110",
- "path": [
- {
- "x": 255.0,
- "y": 190.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1_4#0",
- "pinName": "I1_2"
- },
- "name": "unnamedWire#111",
- "path": [
- {
- "x": 260.0,
- "y": 200.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#28",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1_4#0",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#112",
- "path": [
- {
- "x": 265.0,
- "y": 210.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#29",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1_4#0",
- "pinName": "I1_4"
- },
- "name": "unnamedWire#113",
- "path": [
- {
- "x": 270.0,
- "y": 220.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#30",
- "pinName": ""
- },
- "name": "unnamedWire#114",
- "path": [
- {
- "x": 10.0,
- "y": 2090.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#31",
- "pinName": ""
- },
- "name": "unnamedWire#115",
- "path": [
- {
- "x": 15.0,
- "y": 2095.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#32",
- "pinName": ""
- },
- "name": "unnamedWire#116",
- "path": [
- {
- "x": 20.0,
- "y": 2100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "IRAMn"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#117",
- "path": [
- {
- "x": 5.0,
- "y": 2350.0
- },
- {
- "x": 5.0,
- "y": 2345.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#30",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#118",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#31",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#119",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#32",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#120",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#31",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#33",
- "pinName": ""
- },
- "name": "unnamedWire#121",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#32",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#34",
- "pinName": ""
- },
- "name": "unnamedWire#122",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#35",
- "pinName": ""
- },
- "name": "unnamedWire#123",
- "path": [
- {
- "x": 25.0,
- "y": 2105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#30",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#36",
- "pinName": ""
- },
- "name": "unnamedWire#124",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#36",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "B1"
- },
- "name": "unnamedWire#125",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#33",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "B2"
- },
- "name": "unnamedWire#126",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#34",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "B3"
- },
- "name": "unnamedWire#127",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#35",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "B4"
- },
- "name": "unnamedWire#128",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#33",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#37",
- "pinName": ""
- },
- "name": "unnamedWire#129",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#34",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#38",
- "pinName": ""
- },
- "name": "unnamedWire#130",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#35",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#39",
- "pinName": ""
- },
- "name": "unnamedWire#131",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#37",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "C1"
- },
- "name": "unnamedWire#132",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#38",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "C2"
- },
- "name": "unnamedWire#133",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#39",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "C3"
- },
- "name": "unnamedWire#134",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "IRAMn+3"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "C4"
- },
- "name": "unnamedWire#135",
- "path": [
- {
- "x": 5.0,
- "y": 2450.0
- },
- {
- "x": 5.0,
- "y": 2455.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#36",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "B1"
- },
- "name": "unnamedWire#136",
- "path": [
- {
- "x": 10.0,
- "y": 2585.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#37",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "B2"
- },
- "name": "unnamedWire#137",
- "path": [
- {
- "x": 15.0,
- "y": 2595.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#38",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "B3"
- },
- "name": "unnamedWire#138",
- "path": [
- {
- "x": 20.0,
- "y": 2605.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#39",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "B4"
- },
- "name": "unnamedWire#139",
- "path": [
- {
- "x": 25.0,
- "y": 2615.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "C"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "D1"
- },
- "name": "unnamedWire#140",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "D2"
- },
- "name": "unnamedWire#141",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "D3"
- },
- "name": "unnamedWire#142",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "D4"
- },
- "name": "unnamedWire#143",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2901DestDecode#0",
- "pinName": "RAMWE"
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "A"
- },
- "name": "unnamedWire#144",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "B"
- },
- "name": "unnamedWire#145"
- },
- {
- "pin1": {
- "compName": "GUIand#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "WE"
- },
- "name": "unnamedWire#146",
- "path": [
- {
- "x": 230.0,
- "y": 70.0
- },
- {
- "x": 230.0,
- "y": 105.0
- },
- {
- "x": 90.0,
- "y": 105.0
- },
- {
- "x": 90.0,
- "y": 2305.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901DestDecode#0",
- "pinName": "QWE"
- },
- "pin2": {
- "compName": "GUIdff4#0",
- "pinName": "WE"
- },
- "name": "unnamedWire#147",
- "path": [
- {
- "x": 85.0,
- "y": 100.0
- },
- {
- "x": 85.0,
- "y": 2505.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901DestDecode#0",
- "pinName": "YF"
- },
- "pin2": {
- "compName": "GUImux1_4#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#148",
- "path": [
- {
- "x": 70.0,
- "y": 80.0
- },
- {
- "x": 70.0,
- "y": 140.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUImux1_4#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y1"
- },
- "name": "unnamedWire#149",
- "path": [
- {
- "x": 335.0,
- "y": 140.0
- },
- {
- "x": 335.0,
- "y": 50.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUImux1_4#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y2"
- },
- "name": "unnamedWire#150",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUImux1_4#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y3"
- },
- "name": "unnamedWire#151",
- "path": [
- {
- "x": 335.0,
- "y": 160.0
- },
- {
- "x": 335.0,
- "y": 250.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUImux1_4#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y4"
- },
- "name": "unnamedWire#152",
- "path": [
- {
- "x": 325.0,
- "y": 170.0
- },
- {
- "x": 325.0,
- "y": 350.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIor4#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#40",
- "pinName": ""
- },
- "name": "unnamedWire#153",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#40",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#154",
- "path": [
- {
- "x": 315.0,
- "y": 445.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#40",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#155",
- "path": [
- {
- "x": 315.0,
- "y": 455.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F\u003d0"
- },
- "name": "unnamedWire#156",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "C"
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff4#0",
- "pinName": "C"
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 155.0,
- "y": 2485.0
- },
- {
- "x": 80.0,
- "y": 2485.0
- },
- {
- "x": 80.0,
- "y": 2495.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901DestDecode#0",
- "pinName": "LSH"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 55.0,
- "y": 90.0
- },
- {
- "x": 55.0,
- "y": 125.0
- },
- {
- "x": 40.0,
- "y": 125.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901DestDecode#0",
- "pinName": "NSH"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#19",
- "path": [
- {
- "x": 60.0,
- "y": 50.0
- },
- {
- "x": 60.0,
- "y": 120.0
- },
- {
- "x": 35.0,
- "y": 120.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I6"
- },
- "pin2": {
- "compName": "GUIAm2901DestDecode#0",
- "pinName": "I6"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 10.0,
- "y": 250.0
- },
- {
- "x": 10.0,
- "y": 70.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901DestDecode#0",
- "pinName": "RSH"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 65.0,
- "y": 60.0
- },
- {
- "x": 65.0,
- "y": 115.0
- },
- {
- "x": 30.0,
- "y": 115.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "SA"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "SB"
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "SC"
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "SA"
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 40.0,
- "y": 2515.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "SB"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 35.0,
- "y": 2525.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "SC"
- },
- "name": "unnamedWire#26",
- "path": [
- {
- "x": 30.0,
- "y": 2535.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A0"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "A0"
- },
- "name": "unnamedWire#27",
- "path": [
- {
- "x": 80.0,
- "y": 1550.0
- },
- {
- "x": 80.0,
- "y": 2225.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 75.0,
- "y": 1650.0
- },
- {
- "x": 75.0,
- "y": 2235.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#29",
- "path": [
- {
- "x": 70.0,
- "y": 1750.0
- },
- {
- "x": 70.0,
- "y": 2245.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I5"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "I5"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 130.0,
- "y": 350.0
- },
- {
- "x": 130.0,
- "y": 2115.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 65.0,
- "y": 1850.0
- },
- {
- "x": 65.0,
- "y": 2255.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B0"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "B0"
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 60.0,
- "y": 1950.0
- },
- {
- "x": 60.0,
- "y": 2265.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B1"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "B1"
- },
- "name": "unnamedWire#32",
- "path": [
- {
- "x": 55.0,
- "y": 2050.0
- },
- {
- "x": 55.0,
- "y": 2275.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B2"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "B2"
- },
- "name": "unnamedWire#33",
- "path": [
- {
- "x": 50.0,
- "y": 2150.0
- },
- {
- "x": 50.0,
- "y": 2285.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B3"
- },
- "pin2": {
- "compName": "GUIram4#0",
- "pinName": "B3"
- },
- "name": "unnamedWire#34",
- "path": [
- {
- "x": 45.0,
- "y": 2250.0
- },
- {
- "x": 45.0,
- "y": 2295.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram4#0",
- "pinName": "QA1"
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "D1"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIram4#0",
- "pinName": "QA2"
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "D2"
- },
- "name": "unnamedWire#36",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIram4#0",
- "pinName": "QA3"
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "D3"
- },
- "name": "unnamedWire#37",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIram4#0",
- "pinName": "QA4"
- },
- "pin2": {
- "compName": "GUIdlatch4#0",
- "pinName": "D4"
- },
- "name": "unnamedWire#38",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIram4#0",
- "pinName": "QB1"
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "D1"
- },
- "name": "unnamedWire#39",
- "path": [
- {
- "x": 150.0,
- "y": 2265.0
- },
- {
- "x": 150.0,
- "y": 2280.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I4"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "I4"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 125.0,
- "y": 450.0
- },
- {
- "x": 125.0,
- "y": 2125.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram4#0",
- "pinName": "QB2"
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "D2"
- },
- "name": "unnamedWire#40",
- "path": [
- {
- "x": 145.0,
- "y": 2275.0
- },
- {
- "x": 145.0,
- "y": 2290.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram4#0",
- "pinName": "QB3"
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "D3"
- },
- "name": "unnamedWire#41",
- "path": [
- {
- "x": 140.0,
- "y": 2285.0
- },
- {
- "x": 140.0,
- "y": 2300.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram4#0",
- "pinName": "QB4"
- },
- "pin2": {
- "compName": "GUIdlatch4#1",
- "pinName": "D4"
- },
- "name": "unnamedWire#42",
- "path": [
- {
- "x": 135.0,
- "y": 2295.0
- },
- {
- "x": 135.0,
- "y": 2310.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Cn"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "Cn"
- },
- "name": "unnamedWire#43",
- "path": [
- {
- "x": 100.0,
- "y": 1050.0
- },
- {
- "x": 100.0,
- "y": 2175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "D1"
- },
- "name": "unnamedWire#44",
- "path": [
- {
- "x": 180.0,
- "y": 1150.0
- },
- {
- "x": 180.0,
- "y": 2185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D2"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "D2"
- },
- "name": "unnamedWire#45",
- "path": [
- {
- "x": 175.0,
- "y": 1250.0
- },
- {
- "x": 175.0,
- "y": 2195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D3"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "D3"
- },
- "name": "unnamedWire#46",
- "path": [
- {
- "x": 170.0,
- "y": 1350.0
- },
- {
- "x": 170.0,
- "y": 2205.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D4"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "D4"
- },
- "name": "unnamedWire#47",
- "path": [
- {
- "x": 165.0,
- "y": 1450.0
- },
- {
- "x": 165.0,
- "y": 2215.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#0",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#48",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#0",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#49",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "I3"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 120.0,
- "y": 550.0
- },
- {
- "x": 120.0,
- "y": 2135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#0",
- "pinName": "Q3"
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#50",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#0",
- "pinName": "Q4"
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#51",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1_4#0",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#52",
- "path": [
- {
- "x": 220.0,
- "y": 150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1_4#0",
- "pinName": "I0_2"
- },
- "name": "unnamedWire#53",
- "path": [
- {
- "x": 225.0,
- "y": 160.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1_4#0",
- "pinName": "I0_3"
- },
- "name": "unnamedWire#54",
- "path": [
- {
- "x": 230.0,
- "y": 170.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUImux1_4#0",
- "pinName": "I0_4"
- },
- "name": "unnamedWire#55",
- "path": [
- {
- "x": 235.0,
- "y": 180.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#56",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#57",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#58",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#59",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I2"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "I2"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 115.0,
- "y": 650.0
- },
- {
- "x": 115.0,
- "y": 2145.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#1",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "B1"
- },
- "name": "unnamedWire#60",
- "path": [
- {
- "x": 200.0,
- "y": 2280.0
- },
- {
- "x": 200.0,
- "y": 2265.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#1",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "B2"
- },
- "name": "unnamedWire#61",
- "path": [
- {
- "x": 205.0,
- "y": 2290.0
- },
- {
- "x": 205.0,
- "y": 2275.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#1",
- "pinName": "Q3"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "B3"
- },
- "name": "unnamedWire#62",
- "path": [
- {
- "x": 210.0,
- "y": 2300.0
- },
- {
- "x": 210.0,
- "y": 2285.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdlatch4#1",
- "pinName": "Q4"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "B4"
- },
- "name": "unnamedWire#63",
- "path": [
- {
- "x": 215.0,
- "y": 2310.0
- },
- {
- "x": 215.0,
- "y": 2295.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff4#0",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "name": "unnamedWire#64",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff4#0",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "name": "unnamedWire#65",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff4#0",
- "pinName": "Q3"
- },
- "pin2": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "name": "unnamedWire#66",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff4#0",
- "pinName": "Q4"
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#67",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "name": "unnamedWire#68",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "OQn"
- },
- "name": "unnamedWire#69",
- "path": [
- {
- "x": 335.0,
- "y": 2495.0
- },
- {
- "x": 335.0,
- "y": 1050.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "I1"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 110.0,
- "y": 750.0
- },
- {
- "x": 110.0,
- "y": 2155.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "name": "unnamedWire#70",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "OQn+3"
- },
- "name": "unnamedWire#71",
- "path": [
- {
- "x": 340.0,
- "y": 2525.0
- },
- {
- "x": 340.0,
- "y": 1150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "name": "unnamedWire#72",
- "path": [
- {
- "x": 135.0,
- "y": 2670.0
- },
- {
- "x": 30.0,
- "y": 2670.0
- },
- {
- "x": 30.0,
- "y": 2635.0
- },
- {
- "x": 35.0,
- "y": 2635.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "name": "unnamedWire#73",
- "path": [
- {
- "x": 140.0,
- "y": 2675.0
- },
- {
- "x": 35.0,
- "y": 2675.0
- },
- {
- "x": 35.0,
- "y": 2640.0
- },
- {
- "x": 40.0,
- "y": 2640.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "C1"
- },
- "name": "unnamedWire#74",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "C2"
- },
- "name": "unnamedWire#75",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "C3"
- },
- "name": "unnamedWire#76",
- "path": [
- {
- "x": 145.0,
- "y": 2680.0
- },
- {
- "x": 40.0,
- "y": 2680.0
- },
- {
- "x": 40.0,
- "y": 2645.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "IQn+3"
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "C4"
- },
- "name": "unnamedWire#77",
- "path": [
- {
- "x": 5.0,
- "y": 2650.0
- },
- {
- "x": 5.0,
- "y": 2655.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "IQn"
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "A1"
- },
- "name": "unnamedWire#78",
- "path": [
- {
- "x": 5.0,
- "y": 2550.0
- },
- {
- "x": 5.0,
- "y": 2545.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "A2"
- },
- "name": "unnamedWire#79",
- "path": [
- {
- "x": 130.0,
- "y": 2665.0
- },
- {
- "x": 25.0,
- "y": 2665.0
- },
- {
- "x": 25.0,
- "y": 2630.0
- },
- {
- "x": 30.0,
- "y": 2630.0
- },
- {
- "x": 30.0,
- "y": 2555.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "I0"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 105.0,
- "y": 850.0
- },
- {
- "x": 105.0,
- "y": 2165.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "Q1"
- },
- "name": "unnamedWire#80",
- "path": [
- {
- "x": 220.0,
- "y": 2305.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "Q2"
- },
- "name": "unnamedWire#81",
- "path": [
- {
- "x": 225.0,
- "y": 2505.0
- },
- {
- "x": 225.0,
- "y": 2315.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "Q3"
- },
- "name": "unnamedWire#82",
- "path": [
- {
- "x": 230.0,
- "y": 2515.0
- },
- {
- "x": 230.0,
- "y": 2325.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "Q4"
- },
- "name": "unnamedWire#83",
- "path": [
- {
- "x": 235.0,
- "y": 2335.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "A3"
- },
- "name": "unnamedWire#84",
- "path": [
- {
- "x": 35.0,
- "y": 2565.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#1",
- "pinName": "A4"
- },
- "name": "unnamedWire#85",
- "path": [
- {
- "x": 40.0,
- "y": 2575.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#1",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIdff4#0",
- "pinName": "D1"
- },
- "name": "unnamedWire#86",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#1",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIdff4#0",
- "pinName": "D2"
- },
- "name": "unnamedWire#87",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#1",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIdff4#0",
- "pinName": "D3"
- },
- "name": "unnamedWire#88",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#1",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIdff4#0",
- "pinName": "D4"
- },
- "name": "unnamedWire#89",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#9",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "Cn+4"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Cn+4"
- },
- "name": "unnamedWire#90",
- "path": [
- {
- "x": 315.0,
- "y": 2155.0
- },
- {
- "x": 315.0,
- "y": 550.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "OVR"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "OVR"
- },
- "name": "unnamedWire#91",
- "path": [
- {
- "x": 320.0,
- "y": 2165.0
- },
- {
- "x": 320.0,
- "y": 650.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "F1"
- },
- "pin2": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "name": "unnamedWire#92",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "F4"
- },
- "pin2": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "name": "unnamedWire#93",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "ORAMn"
- },
- "name": "unnamedWire#94",
- "path": [
- {
- "x": 325.0,
- "y": 2115.0
- },
- {
- "x": 325.0,
- "y": 850.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "name": "unnamedWire#95",
- "path": [
- {
- "x": 330.0,
- "y": 2145.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "ORAMn+3"
- },
- "name": "unnamedWire#96",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F3"
- },
- "name": "unnamedWire#97",
- "path": [
- {
- "x": 330.0,
- "y": 750.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "name": "unnamedWire#98",
- "path": [
- {
- "x": 280.0,
- "y": 2090.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
- "pinName": "F2"
- },
- "pin2": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "name": "unnamedWire#99",
- "path": [
- {
- "x": 285.0,
- "y": 2125.0
- },
- {
- "x": 285.0,
- "y": 2095.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIAm2901",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {
- "qreg": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff4#0"
- }
- },
- "regs": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram4#0"
- }
- }
- },
- "atomicHighLevelStates": {}
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 60.0,
- "interfacePins": [
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "CinE",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 45.0
- },
- "name": "FN",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "I3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "I4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "I5",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "L",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 55.0
- },
- "name": "RN",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "SBE",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "SN",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.25,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 15.0,
- "y": 10.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 15.0,
- "y": 50.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 55.0,
- "y": 45.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 55.0,
- "y": 70.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#4",
- "pos": {
- "x": 100.0,
- "y": 50.0
- },
- "params": 1
- },
- {
- "id": "GUIand",
- "name": "GUIand#0",
- "pos": {
- "x": 100.0,
- "y": 135.0
- }
- },
- {
- "id": "GUInand3",
- "name": "GUInand3#0",
- "pos": {
- "x": 55.0,
- "y": 10.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 4.0,
- "y": 19.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 4.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 39.0,
- "y": 34.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 4.0,
- "y": 44.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 9.0,
- "y": 59.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 9.0,
- "y": 54.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 9.0,
- "y": 64.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 9.0,
- "y": 84.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 49.0,
- "y": 99.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 49.0,
- "y": 74.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 39.0,
- "y": 19.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I5"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 5.0,
- "y": 15.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "SN"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 10.0,
- "y": 105.0
- },
- {
- "x": 135.0,
- "y": 105.0
- },
- {
- "x": 135.0,
- "y": 100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 50.0,
- "y": 100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "RN"
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 50.0,
- "y": 220.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUInand3#0",
- "pinName": "B"
- },
- "name": "unnamedWire#19",
- "path": [
- {
- "x": 50.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "CinE"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 40.0,
- "y": 5.0
- },
- {
- "x": 115.0,
- "y": 5.0
- },
- {
- "x": 115.0,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUInand3#0",
- "pinName": "C"
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "B"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 40.0,
- "y": 150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUInand3#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "A"
- },
- "name": "unnamedWire#27"
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "B"
- },
- "name": "unnamedWire#28"
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "A"
- },
- "name": "unnamedWire#29"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "L"
- },
- "name": "unnamedWire#30",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIand#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "SBE"
- },
- "name": "unnamedWire#31",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 45.0,
- "y": 45.0
- },
- {
- "x": 45.0,
- "y": 50.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "FN"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 5.0,
- "y": 180.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I4"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUInand3#0",
- "pinName": "A"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 10.0,
- "y": 40.0
- },
- {
- "x": 45.0,
- "y": 40.0
- },
- {
- "x": 45.0,
- "y": 15.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIAm2901ALUFuncDecode",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 120.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "Cn",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 45.0
- },
- "name": "Cn+4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "F1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "F2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "F3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "F4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "I3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "I4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "I5",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 55.0
- },
- "name": "OVR",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "R1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "R2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "R3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "R4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "S1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 95.0
- },
- "name": "S2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 105.0
- },
- "name": "S3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 115.0
- },
- "name": "S4",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.25,
- "submodel": {
- "components": [
- {
- "id": "GUIAm2901ALUFuncDecode",
- "name": "GUIAm2901ALUFuncDecode#0",
- "pos": {
- "x": 20.0,
- "y": 2.5
- }
- },
- {
- "id": "GUIAm2901ALUOneBit",
- "name": "GUIAm2901ALUOneBit#0",
- "pos": {
- "x": 45.0,
- "y": 80.0
- }
- },
- {
- "id": "GUIAm2901ALUOneBit",
- "name": "GUIAm2901ALUOneBit#1",
- "pos": {
- "x": 45.0,
- "y": 180.0
- }
- },
- {
- "id": "GUIAm2901ALUOneBit",
- "name": "GUIAm2901ALUOneBit#2",
- "pos": {
- "x": 45.0,
- "y": 280.0
- }
- },
- {
- "id": "GUIAm2901ALUOneBit",
- "name": "GUIAm2901ALUOneBit#3",
- "pos": {
- "x": 45.0,
- "y": 380.0
- }
- },
- {
- "id": "GUIxor",
- "name": "GUIxor#0",
- "pos": {
- "x": 95.0,
- "y": 400.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 24.0,
- "y": 94.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 24.0,
- "y": 194.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 31.5,
- "y": 244.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#11",
- "pos": {
- "x": 31.5,
- "y": 344.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#12",
- "pos": {
- "x": 34.0,
- "y": 154.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#13",
- "pos": {
- "x": 34.0,
- "y": 254.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#14",
- "pos": {
- "x": 34.0,
- "y": 354.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#15",
- "pos": {
- "x": 36.5,
- "y": 164.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#16",
- "pos": {
- "x": 36.5,
- "y": 264.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#17",
- "pos": {
- "x": 36.5,
- "y": 364.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#18",
- "pos": {
- "x": 84.0,
- "y": 374.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#19",
- "pos": {
- "x": 84.0,
- "y": 384.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 24.0,
- "y": 294.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 26.5,
- "y": 104.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 26.5,
- "y": 204.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 26.5,
- "y": 304.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 29.0,
- "y": 124.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 29.0,
- "y": 224.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 29.0,
- "y": 324.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 31.5,
- "y": 144.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I5"
- },
- "pin2": {
- "compName": "GUIAm2901ALUFuncDecode#0",
- "pinName": "I5"
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 5.0,
- "y": 20.0
- },
- {
- "x": 5.0,
- "y": 7.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I4"
- },
- "pin2": {
- "compName": "GUIAm2901ALUFuncDecode#0",
- "pinName": "I4"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 10.0,
- "y": 60.0
- },
- {
- "x": 10.0,
- "y": 17.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUFuncDecode#0",
- "pinName": "CinE"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 70.0,
- "y": 7.5
- },
- {
- "x": 70.0,
- "y": 77.5
- },
- {
- "x": 27.5,
- "y": 77.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "CinE"
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "CinE"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "CinE"
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "CinE"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 27.5,
- "y": 405.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUFuncDecode#0",
- "pinName": "RN"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 57.5,
- "y": 57.5
- },
- {
- "x": 57.5,
- "y": 65.0
- },
- {
- "x": 30.0,
- "y": 65.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "GUIAm2901ALUFuncDecode#0",
- "pinName": "I3"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 15.0,
- "y": 100.0
- },
- {
- "x": 15.0,
- "y": 27.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "RN"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "RN"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "RN"
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "RN"
- },
- "name": "unnamedWire#23",
- "path": [
- {
- "x": 30.0,
- "y": 425.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUFuncDecode#0",
- "pinName": "SN"
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 65.0,
- "y": 27.5
- },
- {
- "x": 65.0,
- "y": 72.5
- },
- {
- "x": 32.5,
- "y": 72.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#25",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "SN"
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "SN"
- },
- "name": "unnamedWire#28",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "SN"
- },
- "name": "unnamedWire#29",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUFuncDecode#0",
- "pinName": "SBE"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 62.5,
- "y": 37.5
- },
- {
- "x": 62.5,
- "y": 70.0
- },
- {
- "x": 25.0,
- "y": 70.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "SN"
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 32.5,
- "y": 445.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUFuncDecode#0",
- "pinName": "FN"
- },
- "pin2": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 60.0,
- "y": 47.5
- },
- {
- "x": 60.0,
- "y": 67.5
- },
- {
- "x": 35.0,
- "y": 67.5
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "FN"
- },
- "name": "unnamedWire#34",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "FN"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "FN"
- },
- "name": "unnamedWire#36",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "FN"
- },
- "name": "unnamedWire#37",
- "path": [
- {
- "x": 35.0,
- "y": 455.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUFuncDecode#0",
- "pinName": "L"
- },
- "pin2": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "name": "unnamedWire#38",
- "path": [
- {
- "x": 67.5,
- "y": 17.5
- },
- {
- "x": 67.5,
- "y": 75.0
- },
- {
- "x": 37.5,
- "y": 75.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "name": "unnamedWire#39",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "name": "unnamedWire#40",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "L"
- },
- "name": "unnamedWire#41",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "L"
- },
- "name": "unnamedWire#42",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "L"
- },
- "name": "unnamedWire#43",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "L"
- },
- "name": "unnamedWire#44",
- "path": [
- {
- "x": 37.5,
- "y": 465.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "R1"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "R"
- },
- "name": "unnamedWire#45",
- "path": [
- {
- "x": 10.0,
- "y": 180.0
- },
- {
- "x": 10.0,
- "y": 115.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "R2"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "R"
- },
- "name": "unnamedWire#46",
- "path": [
- {
- "x": 10.0,
- "y": 220.0
- },
- {
- "x": 10.0,
- "y": 215.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "R3"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "R"
- },
- "name": "unnamedWire#47",
- "path": [
- {
- "x": 10.0,
- "y": 260.0
- },
- {
- "x": 10.0,
- "y": 315.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "R4"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "R"
- },
- "name": "unnamedWire#48",
- "path": [
- {
- "x": 20.0,
- "y": 300.0
- },
- {
- "x": 20.0,
- "y": 415.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S1"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "S"
- },
- "name": "unnamedWire#49",
- "path": [
- {
- "x": 15.0,
- "y": 340.0
- },
- {
- "x": 15.0,
- "y": 135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S2"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "S"
- },
- "name": "unnamedWire#50",
- "path": [
- {
- "x": 5.0,
- "y": 380.0
- },
- {
- "x": 5.0,
- "y": 235.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S3"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "S"
- },
- "name": "unnamedWire#51",
- "path": [
- {
- "x": 10.0,
- "y": 420.0
- },
- {
- "x": 10.0,
- "y": 335.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S4"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "S"
- },
- "name": "unnamedWire#52",
- "path": [
- {
- "x": 10.0,
- "y": 460.0
- },
- {
- "x": 10.0,
- "y": 435.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Cn"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "Cin"
- },
- "name": "unnamedWire#53",
- "path": [
- {
- "x": 5.0,
- "y": 140.0
- },
- {
- "x": 5.0,
- "y": 85.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "Cout"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "Cin"
- },
- "name": "unnamedWire#54",
- "path": [
- {
- "x": 85.0,
- "y": 85.0
- },
- {
- "x": 85.0,
- "y": 175.0
- },
- {
- "x": 40.0,
- "y": 175.0
- },
- {
- "x": 40.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "Cout"
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "Cin"
- },
- "name": "unnamedWire#55",
- "path": [
- {
- "x": 85.0,
- "y": 185.0
- },
- {
- "x": 85.0,
- "y": 275.0
- },
- {
- "x": 40.0,
- "y": 275.0
- },
- {
- "x": 40.0,
- "y": 285.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "Cout"
- },
- "pin2": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "name": "unnamedWire#56",
- "path": [
- {
- "x": 85.0,
- "y": 285.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "Cin"
- },
- "name": "unnamedWire#57",
- "path": [
- {
- "x": 40.0,
- "y": 375.0
- },
- {
- "x": 40.0,
- "y": 385.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "Cout"
- },
- "pin2": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "name": "unnamedWire#58",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "F"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F1"
- },
- "name": "unnamedWire#59",
- "path": [
- {
- "x": 90.0,
- "y": 95.0
- },
- {
- "x": 90.0,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#0",
- "pinName": "CoutE"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "F"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F2"
- },
- "name": "unnamedWire#60",
- "path": [
- {
- "x": 95.0,
- "y": 195.0
- },
- {
- "x": 95.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "F"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F3"
- },
- "name": "unnamedWire#61",
- "path": [
- {
- "x": 100.0,
- "y": 295.0
- },
- {
- "x": 100.0,
- "y": 100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "F"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F4"
- },
- "name": "unnamedWire#62",
- "path": [
- {
- "x": 105.0,
- "y": 395.0
- },
- {
- "x": 105.0,
- "y": 140.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIxor#0",
- "pinName": "A"
- },
- "name": "unnamedWire#63",
- "path": [
- {
- "x": 90.0,
- "y": 375.0
- },
- {
- "x": 90.0,
- "y": 405.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIxor#0",
- "pinName": "B"
- },
- "name": "unnamedWire#64",
- "path": [
- {
- "x": 85.0,
- "y": 415.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Cn+4"
- },
- "name": "unnamedWire#65",
- "path": [
- {
- "x": 130.0,
- "y": 385.0
- },
- {
- "x": 130.0,
- "y": 180.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIxor#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "OVR"
- },
- "name": "unnamedWire#66"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#1",
- "pinName": "CoutE"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#2",
- "pinName": "CoutE"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2901ALUOneBit#3",
- "pinName": "CoutE"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 25.0,
- "y": 395.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIAm2901ALUInclDecode",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 230.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 115.0
- },
- "name": "A1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 125.0
- },
- "name": "A2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 135.0
- },
- "name": "A3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 145.0
- },
- "name": "A4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 155.0
- },
- "name": "B1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 165.0
- },
- "name": "B2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 175.0
- },
- "name": "B3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 185.0
- },
- "name": "B4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "Cn",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 45.0
- },
- "name": "Cn+4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "D1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "D2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 95.0
- },
- "name": "D3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 105.0
- },
- "name": "D4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "F1",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "F2",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "F3",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "F4",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "I0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "I1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "I2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "I3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "I4",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "I5",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 55.0
- },
- "name": "OVR",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 195.0
- },
- "name": "Q1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 205.0
- },
- "name": "Q2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 215.0
- },
- "name": "Q3",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 225.0
- },
- "name": "Q4",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.25,
- "submodel": {
- "components": [
- {
- "id": "GUIAm2901ALUInclDecode",
- "name": "GUIAm2901ALUInclDecode#0",
- "pos": {
- "x": 60.0,
- "y": 15.0
- }
- },
- {
- "id": "GUIAm2901SourceDecode",
- "name": "GUIAm2901SourceDecode#0",
- "pos": {
- "x": 15.0,
- "y": 165.0
- }
- },
- {
- "id": "GUIsel2_4",
- "name": "GUIsel2_4#0",
- "pos": {
- "x": 45.0,
- "y": 365.0
- }
- },
- {
- "id": "GUIsel3_4",
- "name": "GUIsel3_4#0",
- "pos": {
- "x": 45.0,
- "y": 575.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 9.0,
- "y": 459.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 14.0,
- "y": 499.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 19.0,
- "y": 539.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 24.0,
- "y": 579.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I5"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "I5"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I4"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "I4"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 5.0,
- "y": 60.0
- },
- {
- "x": 5.0,
- "y": 30.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D4"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "A4"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "B1"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 10.0,
- "y": 430.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "B2"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 15.0,
- "y": 440.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "B3"
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 20.0,
- "y": 450.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "B4"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 25.0,
- "y": 460.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#19",
- "path": [
- {
- "x": 10.0,
- "y": 610.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "I3"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 15.0,
- "y": 100.0
- },
- {
- "x": 15.0,
- "y": 40.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 15.0,
- "y": 620.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#21",
- "path": [
- {
- "x": 20.0,
- "y": 630.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "A4"
- },
- "name": "unnamedWire#22",
- "path": [
- {
- "x": 25.0,
- "y": 640.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B1"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "B1"
- },
- "name": "unnamedWire#23",
- "path": [
- {
- "x": 5.0,
- "y": 620.0
- },
- {
- "x": 5.0,
- "y": 650.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B2"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "B2"
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B3"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "B3"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 5.0,
- "y": 700.0
- },
- {
- "x": 5.0,
- "y": 670.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "B4"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "B4"
- },
- "name": "unnamedWire#26",
- "path": [
- {
- "x": 10.0,
- "y": 740.0
- },
- {
- "x": 10.0,
- "y": 680.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "C1"
- },
- "name": "unnamedWire#27",
- "path": [
- {
- "x": 15.0,
- "y": 780.0
- },
- {
- "x": 15.0,
- "y": 690.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "C2"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 20.0,
- "y": 820.0
- },
- {
- "x": 20.0,
- "y": 700.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Q3"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "C3"
- },
- "name": "unnamedWire#29",
- "path": [
- {
- "x": 25.0,
- "y": 860.0
- },
- {
- "x": 25.0,
- "y": 710.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I2"
- },
- "pin2": {
- "compName": "GUIAm2901SourceDecode#0",
- "pinName": "I2"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 5.0,
- "y": 140.0
- },
- {
- "x": 5.0,
- "y": 170.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Q4"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "C4"
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 30.0,
- "y": 900.0
- },
- {
- "x": 30.0,
- "y": 720.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901SourceDecode#0",
- "pinName": "SQ"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "SC"
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 75.0,
- "y": 170.0
- },
- {
- "x": 75.0,
- "y": 240.0
- },
- {
- "x": 30.0,
- "y": 240.0
- },
- {
- "x": 30.0,
- "y": 600.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901SourceDecode#0",
- "pinName": "RA"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "SB"
- },
- "name": "unnamedWire#32",
- "path": [
- {
- "x": 70.0,
- "y": 180.0
- },
- {
- "x": 70.0,
- "y": 235.0
- },
- {
- "x": 20.0,
- "y": 235.0
- },
- {
- "x": 20.0,
- "y": 380.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901SourceDecode#0",
- "pinName": "SB"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "SB"
- },
- "name": "unnamedWire#33",
- "path": [
- {
- "x": 65.0,
- "y": 190.0
- },
- {
- "x": 65.0,
- "y": 230.0
- },
- {
- "x": 35.0,
- "y": 230.0
- },
- {
- "x": 35.0,
- "y": 590.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901SourceDecode#0",
- "pinName": "SA"
- },
- "pin2": {
- "compName": "GUIsel3_4#0",
- "pinName": "SA"
- },
- "name": "unnamedWire#34",
- "path": [
- {
- "x": 60.0,
- "y": 200.0
- },
- {
- "x": 60.0,
- "y": 225.0
- },
- {
- "x": 40.0,
- "y": 225.0
- },
- {
- "x": 40.0,
- "y": 580.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901SourceDecode#0",
- "pinName": "RD"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "SA"
- },
- "name": "unnamedWire#35",
- "path": [
- {
- "x": 55.0,
- "y": 210.0
- },
- {
- "x": 55.0,
- "y": 220.0
- },
- {
- "x": 25.0,
- "y": 220.0
- },
- {
- "x": 25.0,
- "y": 370.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIsel2_4#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "R1"
- },
- "name": "unnamedWire#36",
- "path": [
- {
- "x": 82.5,
- "y": 370.0
- },
- {
- "x": 82.5,
- "y": 162.5
- },
- {
- "x": 20.0,
- "y": 162.5
- },
- {
- "x": 20.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIsel2_4#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "R2"
- },
- "name": "unnamedWire#37",
- "path": [
- {
- "x": 85.0,
- "y": 380.0
- },
- {
- "x": 85.0,
- "y": 160.0
- },
- {
- "x": 22.5,
- "y": 160.0
- },
- {
- "x": 22.5,
- "y": 70.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIsel2_4#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "R3"
- },
- "name": "unnamedWire#38",
- "path": [
- {
- "x": 87.5,
- "y": 390.0
- },
- {
- "x": 87.5,
- "y": 157.5
- },
- {
- "x": 25.0,
- "y": 157.5
- },
- {
- "x": 25.0,
- "y": 80.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIsel2_4#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "R4"
- },
- "name": "unnamedWire#39",
- "path": [
- {
- "x": 90.0,
- "y": 400.0
- },
- {
- "x": 90.0,
- "y": 155.0
- },
- {
- "x": 27.5,
- "y": 155.0
- },
- {
- "x": 27.5,
- "y": 90.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUIAm2901SourceDecode#0",
- "pinName": "I1"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "S1"
- },
- "name": "unnamedWire#40",
- "path": [
- {
- "x": 92.5,
- "y": 580.0
- },
- {
- "x": 92.5,
- "y": 152.5
- },
- {
- "x": 30.0,
- "y": 152.5
- },
- {
- "x": 30.0,
- "y": 100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "S2"
- },
- "name": "unnamedWire#41",
- "path": [
- {
- "x": 95.0,
- "y": 590.0
- },
- {
- "x": 95.0,
- "y": 150.0
- },
- {
- "x": 32.5,
- "y": 150.0
- },
- {
- "x": 32.5,
- "y": 110.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "S3"
- },
- "name": "unnamedWire#42",
- "path": [
- {
- "x": 97.5,
- "y": 600.0
- },
- {
- "x": 97.5,
- "y": 147.5
- },
- {
- "x": 35.0,
- "y": 147.5
- },
- {
- "x": 35.0,
- "y": 120.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIsel3_4#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "S4"
- },
- "name": "unnamedWire#43",
- "path": [
- {
- "x": 100.0,
- "y": 610.0
- },
- {
- "x": 100.0,
- "y": 145.0
- },
- {
- "x": 37.5,
- "y": 145.0
- },
- {
- "x": 37.5,
- "y": 130.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "F1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F1"
- },
- "name": "unnamedWire#44",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "F2"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F2"
- },
- "name": "unnamedWire#45",
- "path": [
- {
- "x": 135.0,
- "y": 30.0
- },
- {
- "x": 135.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "F3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F3"
- },
- "name": "unnamedWire#46",
- "path": [
- {
- "x": 130.0,
- "y": 40.0
- },
- {
- "x": 130.0,
- "y": 100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "F4"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F4"
- },
- "name": "unnamedWire#47",
- "path": [
- {
- "x": 125.0,
- "y": 50.0
- },
- {
- "x": 125.0,
- "y": 140.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "Cn+4"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Cn+4"
- },
- "name": "unnamedWire#48",
- "path": [
- {
- "x": 120.0,
- "y": 60.0
- },
- {
- "x": 120.0,
- "y": 180.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "OVR"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "OVR"
- },
- "name": "unnamedWire#49",
- "path": [
- {
- "x": 115.0,
- "y": 70.0
- },
- {
- "x": 115.0,
- "y": 220.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "GUIAm2901SourceDecode#0",
- "pinName": "I0"
- },
- "name": "unnamedWire#5",
- "path": [
- {
- "x": 5.0,
- "y": 220.0
- },
- {
- "x": 5.0,
- "y": 190.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Cn"
- },
- "pin2": {
- "compName": "GUIAm2901ALUInclDecode#0",
- "pinName": "Cn"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 10.0,
- "y": 260.0
- },
- {
- "x": 10.0,
- "y": 50.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "A1"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 15.0,
- "y": 300.0
- },
- {
- "x": 15.0,
- "y": 390.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D2"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "A2"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 10.0,
- "y": 340.0
- },
- {
- "x": 10.0,
- "y": 400.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D3"
- },
- "pin2": {
- "compName": "GUIsel2_4#0",
- "pinName": "A3"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 5.0,
- "y": 380.0
- },
- {
- "x": 5.0,
- "y": 410.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 90.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "Cin",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "CinE",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Cout",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "CoutE",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "F",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 75.0
- },
- "name": "FN",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 85.0
- },
- "name": "L",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "R",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "RN",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "S",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 65.0
- },
- "name": "SN",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.2,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 60.0,
- "y": 55.0
- },
- "params": 1
- },
- {
- "id": "GUIand",
- "name": "GUIand#0",
- "pos": {
- "x": 10.0,
- "y": 20.0
- }
- },
- {
- "id": "GUIand",
- "name": "GUIand#1",
- "pos": {
- "x": 135.0,
- "y": 20.0
- }
- },
- {
- "id": "GUIfulladder",
- "name": "GUIfulladder#0",
- "pos": {
- "x": 60.0,
- "y": 20.0
- }
- },
- {
- "id": "GUImux1",
- "name": "GUImux1#0",
- "pos": {
- "x": 90.0,
- "y": 70.0
- }
- },
- {
- "id": "GUIxor",
- "name": "GUIxor#0",
- "pos": {
- "x": 10.0,
- "y": 190.0
- }
- },
- {
- "id": "GUIxor",
- "name": "GUIxor#1",
- "pos": {
- "x": 10.0,
- "y": 290.0
- }
- },
- {
- "id": "GUIxor",
- "name": "GUIxor#2",
- "pos": {
- "x": 135.0,
- "y": 70.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 49.0,
- "y": 59.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 54.0,
- "y": 69.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Cin"
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "A"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "CoutE"
- },
- "pin2": {
- "compName": "GUIand#1",
- "pinName": "A"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 5.0,
- "y": 75.0
- },
- {
- "x": 5.0,
- "y": 10.0
- },
- {
- "x": 130.0,
- "y": 10.0
- },
- {
- "x": 130.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIxor#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 50.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIfulladder#0",
- "pinName": "B"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 50.0,
- "y": 35.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIxor#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 55.0,
- "y": 295.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIfulladder#0",
- "pinName": "C"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 55.0,
- "y": 45.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIfulladder#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUImux1#0",
- "pinName": "I0"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 100.0,
- "y": 25.0
- },
- {
- "x": 100.0,
- "y": 65.0
- },
- {
- "x": 85.0,
- "y": 65.0
- },
- {
- "x": 85.0,
- "y": 85.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIfulladder#0",
- "pinName": "Z"
- },
- "pin2": {
- "compName": "GUIand#1",
- "pinName": "B"
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUImux1#0",
- "pinName": "I1"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 82.5,
- "y": 65.0
- },
- {
- "x": 82.5,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUImux1#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIxor#2",
- "pinName": "A"
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "CinE"
- },
- "pin2": {
- "compName": "GUIand#0",
- "pinName": "B"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 7.5,
- "y": 125.0
- },
- {
- "x": 7.5,
- "y": 35.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Cout"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIxor#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "F"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "R"
- },
- "pin2": {
- "compName": "GUIxor#0",
- "pinName": "A"
- },
- "name": "unnamedWire#3"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "RN"
- },
- "pin2": {
- "compName": "GUIxor#0",
- "pinName": "B"
- },
- "name": "unnamedWire#4"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "S"
- },
- "pin2": {
- "compName": "GUIxor#1",
- "pinName": "A"
- },
- "name": "unnamedWire#5"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "SN"
- },
- "pin2": {
- "compName": "GUIxor#1",
- "pinName": "B"
- },
- "name": "unnamedWire#6"
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "FN"
- },
- "pin2": {
- "compName": "GUIxor#2",
- "pinName": "B"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 130.0,
- "y": 375.0
- },
- {
- "x": 130.0,
- "y": 85.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "L"
- },
- "pin2": {
- "compName": "GUImux1#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 87.5,
- "y": 425.0
- },
- {
- "x": 87.5,
- "y": 75.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIand#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIfulladder#0",
- "pinName": "A"
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIAm2901ALUOneBit",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 60.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "I6",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "I7",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "I8",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 45.0
- },
- "name": "LSH",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "NSH",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 55.0
- },
- "name": "QWE",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "RAMWE",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "RSH",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "YF",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.25,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 15.0,
- "y": 10.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 15.0,
- "y": 50.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#10",
- "pos": {
- "x": 80.0,
- "y": 145.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#11",
- "pos": {
- "x": 110.0,
- "y": 105.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#12",
- "pos": {
- "x": 115.0,
- "y": 210.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 15.0,
- "y": 90.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 15.0,
- "y": 150.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#4",
- "pos": {
- "x": 50.0,
- "y": 10.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#5",
- "pos": {
- "x": 50.0,
- "y": 50.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#6",
- "pos": {
- "x": 50.0,
- "y": 90.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#7",
- "pos": {
- "x": 50.0,
- "y": 130.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#8",
- "pos": {
- "x": 80.0,
- "y": 10.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#9",
- "pos": {
- "x": 80.0,
- "y": 90.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 4.0,
- "y": 19.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 4.0,
- "y": 14.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 39.0,
- "y": 134.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#11",
- "pos": {
- "x": 74.0,
- "y": 19.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#12",
- "pos": {
- "x": 74.0,
- "y": 99.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#13",
- "pos": {
- "x": 74.0,
- "y": 104.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#14",
- "pos": {
- "x": 74.0,
- "y": 159.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#15",
- "pos": {
- "x": 109.0,
- "y": 214.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 4.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 9.0,
- "y": 59.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 9.0,
- "y": 64.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 9.0,
- "y": 104.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 4.0,
- "y": 154.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 39.0,
- "y": 59.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 44.0,
- "y": 19.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 44.0,
- "y": 54.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I8"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 5.0,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I6"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 5.0,
- "y": 100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 5.0,
- "y": 165.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "A"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 5.0,
- "y": 5.0
- },
- {
- "x": 40.0,
- "y": 5.0
- },
- {
- "x": 40.0,
- "y": 15.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "B"
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 40.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "B"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 40.0,
- "y": 65.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "NSH"
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 45.0,
- "y": 5.0
- },
- {
- "x": 135.0,
- "y": 5.0
- },
- {
- "x": 135.0,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "A"
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "A"
- },
- "name": "unnamedWire#23",
- "path": [
- {
- "x": 45.0,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "B"
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 10.0,
- "y": 115.0
- },
- {
- "x": 45.0,
- "y": 115.0
- },
- {
- "x": 45.0,
- "y": 105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 40.0,
- "y": 100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "A"
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "B"
- },
- "name": "unnamedWire#27",
- "path": [
- {
- "x": 40.0,
- "y": 145.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "name": "unnamedWire#28",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "A"
- },
- "name": "unnamedWire#29",
- "path": [
- {
- "x": 75.0,
- "y": 15.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "B"
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 75.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#5",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "RAMWE"
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 125.0,
- "y": 60.0
- },
- {
- "x": 125.0,
- "y": 100.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#6",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#9",
- "pinName": "A"
- },
- "name": "unnamedWire#33",
- "path": [
- {
- "x": 75.0,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "name": "unnamedWire#34",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#9",
- "pinName": "B"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#7",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "LSH"
- },
- "name": "unnamedWire#36",
- "path": [
- {
- "x": 125.0,
- "y": 140.0
- },
- {
- "x": 125.0,
- "y": 180.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#10",
- "pinName": "A"
- },
- "name": "unnamedWire#37",
- "path": [
- {
- "x": 75.0,
- "y": 150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#38",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#10",
- "pinName": "B"
- },
- "name": "unnamedWire#39",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#8",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "RSH"
- },
- "name": "unnamedWire#40",
- "path": [
- {
- "x": 130.0,
- "y": 20.0
- },
- {
- "x": 130.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#9",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#11",
- "pinName": "A"
- },
- "name": "unnamedWire#41"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#11",
- "pinName": "B"
- },
- "name": "unnamedWire#42",
- "path": [
- {
- "x": 75.0,
- "y": 170.0
- },
- {
- "x": 105.0,
- "y": 170.0
- },
- {
- "x": 105.0,
- "y": 120.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#10",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "name": "unnamedWire#43",
- "path": [
- {
- "x": 110.0,
- "y": 155.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#12",
- "pinName": "A"
- },
- "name": "unnamedWire#44",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#12",
- "pinName": "B"
- },
- "name": "unnamedWire#45",
- "path": [
- {
- "x": 110.0,
- "y": 225.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#11",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "YF"
- },
- "name": "unnamedWire#46"
- },
- {
- "pin1": {
- "compName": "GUINandGate#12",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "QWE"
- },
- "name": "unnamedWire#47",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I7"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#6",
- "path": [
- {
- "x": 10.0,
- "y": 55.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "GUIAm2901DestDecode",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 35.0,
- "height": 50.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "I0",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "I1",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "I2",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "RA",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 45.0
- },
- "name": "RD",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "SA",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "SB",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "SQ",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.25,
- "submodel": {
- "components": [
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 10.0,
- "y": 10.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 10.0,
- "y": 50.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#10",
- "pos": {
- "x": 70.0,
- "y": 90.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#11",
- "pos": {
- "x": 70.0,
- "y": 130.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#12",
- "pos": {
- "x": 70.0,
- "y": 170.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#13",
- "pos": {
- "x": 100.0,
- "y": 10.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#14",
- "pos": {
- "x": 100.0,
- "y": 170.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 10.0,
- "y": 90.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 40.0,
- "y": 10.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#4",
- "pos": {
- "x": 40.0,
- "y": 50.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#5",
- "pos": {
- "x": 40.0,
- "y": 90.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#6",
- "pos": {
- "x": 40.0,
- "y": 130.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#7",
- "pos": {
- "x": 40.0,
- "y": 170.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#8",
- "pos": {
- "x": 70.0,
- "y": 10.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#9",
- "pos": {
- "x": 70.0,
- "y": 50.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 4.0,
- "y": 19.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 6.5,
- "y": 19.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 36.5,
- "y": 99.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#11",
- "pos": {
- "x": 64.0,
- "y": 59.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#12",
- "pos": {
- "x": 64.0,
- "y": 99.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#13",
- "pos": {
- "x": 64.0,
- "y": 139.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#14",
- "pos": {
- "x": 94.0,
- "y": 19.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#15",
- "pos": {
- "x": 94.0,
- "y": 179.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 4.0,
- "y": 144.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 6.5,
- "y": 59.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 6.5,
- "y": 99.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 6.5,
- "y": 104.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 31.5,
- "y": 54.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 34.0,
- "y": 59.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 34.0,
- "y": 64.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 34.0,
- "y": 134.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I2"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 5.0,
- "y": 5.0
- },
- {
- "x": 35.0,
- "y": 5.0
- },
- {
- "x": 35.0,
- "y": 15.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 7.5,
- "y": 65.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 7.5,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "B"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 7.5,
- "y": 112.5
- },
- {
- "x": 32.5,
- "y": 112.5
- },
- {
- "x": 32.5,
- "y": 105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 32.5,
- "y": 20.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "A"
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "A"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 32.5,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 35.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "B"
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "A"
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "A"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 35.0,
- "y": 175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "B"
- },
- "name": "unnamedWire#27",
- "path": [
- {
- "x": 37.5,
- "y": 35.0
- },
- {
- "x": 65.0,
- "y": 35.0
- },
- {
- "x": 65.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "B"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 37.5,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "A"
- },
- "name": "unnamedWire#29"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 7.5,
- "y": 15.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "name": "unnamedWire#30",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#9",
- "pinName": "A"
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 65.0,
- "y": 55.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#9",
- "pinName": "B"
- },
- "name": "unnamedWire#32",
- "path": [
- {
- "x": 65.0,
- "y": 65.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#5",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#10",
- "pinName": "A"
- },
- "name": "unnamedWire#34",
- "path": [
- {
- "x": 65.0,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#10",
- "pinName": "B"
- },
- "name": "unnamedWire#35",
- "path": [
- {
- "x": 65.0,
- "y": 105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#6",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "name": "unnamedWire#36",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#11",
- "pinName": "A"
- },
- "name": "unnamedWire#37",
- "path": [
- {
- "x": 65.0,
- "y": 135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#11",
- "pinName": "B"
- },
- "name": "unnamedWire#38",
- "path": [
- {
- "x": 65.0,
- "y": 145.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#7",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#12",
- "pinName": "A"
- },
- "name": "unnamedWire#39"
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 7.5,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#8",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#40",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#13",
- "pinName": "A"
- },
- "name": "unnamedWire#41",
- "path": [
- {
- "x": 95.0,
- "y": 15.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#13",
- "pinName": "B"
- },
- "name": "unnamedWire#42",
- "path": [
- {
- "x": 95.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#9",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "RA"
- },
- "name": "unnamedWire#43",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#10",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "SB"
- },
- "name": "unnamedWire#44",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#11",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "SA"
- },
- "name": "unnamedWire#45",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#12",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "name": "unnamedWire#46",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#14",
- "pinName": "A"
- },
- "name": "unnamedWire#47",
- "path": [
- {
- "x": 95.0,
- "y": 175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#14",
- "pinName": "B"
- },
- "name": "unnamedWire#48",
- "path": [
- {
- "x": 95.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#13",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "SQ"
- },
- "name": "unnamedWire#49",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#14",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "RD"
- },
- "name": "unnamedWire#50",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "B"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#12",
- "pinName": "B"
- },
- "name": "unnamedWire#7",
- "path": [
- {
- "x": 5.0,
- "y": 195.0
- },
- {
- "x": 65.0,
- "y": 195.0
- },
- {
- "x": 65.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#9",
- "path": [
- {
- "x": 7.5,
- "y": 55.0
- }
- ]
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "Am2901SourceDecode",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "default",
- "version": "0.1.5"
-}
\ No newline at end of file
--- /dev/null
+{
+ "width": 120.0,
+ "height": 178.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 108.0
+ },
+ "name": "C0",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 60.0
+ },
+ "name": "CT",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 110.0
+ },
+ "name": "Cx",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 61.0
+ },
+ "name": "I",
+ "logicWidth": 13,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "IC",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "IN",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "IOVR",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "IZ",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 128.0
+ },
+ "name": "QIO0",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 128.0
+ },
+ "name": "QIOn",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 118.0
+ },
+ "name": "SIO0",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 119.0
+ },
+ "name": "SIOn",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 17.0
+ },
+ "name": "YC",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 21.0
+ },
+ "name": "YN",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 25.0
+ },
+ "name": "YOVR",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 11.0
+ },
+ "name": "YZ",
+ "logicWidth": 1,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "_CEM",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 33.0
+ },
+ "name": "_CEmu",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 38.0
+ },
+ "name": "_EC",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "_EN",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 42.0
+ },
+ "name": "_EOVR",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 36.0
+ },
+ "name": "_EZ",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 51.0
+ },
+ "name": "_OECT",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 61.0,
+ "y": 0.0
+ },
+ "name": "_OEY",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 83.0
+ },
+ "name": "_SE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "Am2904RegCTInstrDecode",
+ "name": "Am2904RegCTInstrDecode#0",
+ "pos": {
+ "x": 50.0,
+ "y": 240.0
+ }
+ },
+ {
+ "id": "Am2904ShiftInstrDecode",
+ "name": "Am2904ShiftInstrDecode#0",
+ "pos": {
+ "x": 50.0,
+ "y": 360.0
+ }
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#0",
+ "pos": {
+ "x": 530.0,
+ "y": 70.0
+ },
+ "params": 4
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#1",
+ "pos": {
+ "x": 565.0,
+ "y": 180.0
+ },
+ "params": 4
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#2",
+ "pos": {
+ "x": 530.0,
+ "y": 200.0
+ },
+ "params": 4
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#3",
+ "pos": {
+ "x": 560.0,
+ "y": 150.0
+ },
+ "params": 1
+ },
+ {
+ "id": "Am2904MSR",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 225.0,
+ "y": 95.0
+ }
+ },
+ {
+ "id": "Am2904muSR",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 270.0,
+ "y": 250.0
+ }
+ },
+ {
+ "id": "xor",
+ "name": "DeserializedSubmodelComponent#10",
+ "pos": {
+ "x": 455.0,
+ "y": 355.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "DeserializedSubmodelComponent#11",
+ "pos": {
+ "x": 265.0,
+ "y": 515.0
+ }
+ },
+ {
+ "id": "xor",
+ "name": "DeserializedSubmodelComponent#12",
+ "pos": {
+ "x": 315.0,
+ "y": 505.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "DeserializedSubmodelComponent#13",
+ "pos": {
+ "x": 365.0,
+ "y": 485.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "DeserializedSubmodelComponent#14",
+ "pos": {
+ "x": 415.0,
+ "y": 465.0
+ }
+ },
+ {
+ "id": "mux2",
+ "name": "DeserializedSubmodelComponent#15",
+ "pos": {
+ "x": 435.0,
+ "y": 575.0
+ }
+ },
+ {
+ "id": "mux2",
+ "name": "DeserializedSubmodelComponent#16",
+ "pos": {
+ "x": 435.0,
+ "y": 655.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "DeserializedSubmodelComponent#17",
+ "pos": {
+ "x": 190.0,
+ "y": 460.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "DeserializedSubmodelComponent#18",
+ "pos": {
+ "x": 135.0,
+ "y": 470.0
+ }
+ },
+ {
+ "id": "and",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 380.0,
+ "y": 125.0
+ }
+ },
+ {
+ "id": "xor",
+ "name": "DeserializedSubmodelComponent#21",
+ "pos": {
+ "x": 250.0,
+ "y": 820.0
+ }
+ },
+ {
+ "id": "mux2",
+ "name": "DeserializedSubmodelComponent#22",
+ "pos": {
+ "x": 120.0,
+ "y": 720.0
+ }
+ },
+ {
+ "id": "mux3",
+ "name": "DeserializedSubmodelComponent#23",
+ "pos": {
+ "x": 300.0,
+ "y": 715.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 470.0,
+ "y": 160.0
+ }
+ },
+ {
+ "id": "not4",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 135.0,
+ "y": 40.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 415.0,
+ "y": 210.0
+ }
+ },
+ {
+ "id": "Am2904TestLogic",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 225.0,
+ "y": 340.0
+ }
+ },
+ {
+ "id": "mux3",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 300.0,
+ "y": 310.0
+ }
+ },
+ {
+ "id": "xor",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 495.0,
+ "y": 295.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "DeserializedSubmodelComponent#9",
+ "pos": {
+ "x": 450.0,
+ "y": 310.0
+ }
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 25.0,
+ "y": 315.0
+ },
+ "params": 6
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#1",
+ "pos": {
+ "x": 25.0,
+ "y": 265.0
+ },
+ "params": 5
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#2",
+ "pos": {
+ "x": 15.0,
+ "y": 65.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#3",
+ "pos": {
+ "x": 510.0,
+ "y": 165.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#4",
+ "pos": {
+ "x": 25.0,
+ "y": 245.0
+ },
+ "params": 2
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 190.0,
+ "y": 145.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 130.0,
+ "y": 5.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#10",
+ "pos": {
+ "x": 340.0,
+ "y": 120.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#12",
+ "pos": {
+ "x": 540.0,
+ "y": 265.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 225.0,
+ "y": 195.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 225.0,
+ "y": 215.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#4",
+ "pos": {
+ "x": 225.0,
+ "y": 155.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#5",
+ "pos": {
+ "x": 225.0,
+ "y": 175.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#6",
+ "pos": {
+ "x": 205.0,
+ "y": 70.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#7",
+ "pos": {
+ "x": 205.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#8",
+ "pos": {
+ "x": 205.0,
+ "y": 30.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#9",
+ "pos": {
+ "x": 205.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 10.0,
+ "y": 245.0
+ },
+ "params": 13
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#1",
+ "pos": {
+ "x": 555.0,
+ "y": 80.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#10",
+ "pos": {
+ "x": 420.0,
+ "y": 410.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#11",
+ "pos": {
+ "x": 405.0,
+ "y": 585.0
+ },
+ "params": 3
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#12",
+ "pos": {
+ "x": 410.0,
+ "y": 665.0
+ },
+ "params": 3
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#13",
+ "pos": {
+ "x": 265.0,
+ "y": 725.0
+ },
+ "params": 3
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#14",
+ "pos": {
+ "x": 90.0,
+ "y": 730.0
+ },
+ "params": 3
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#15",
+ "pos": {
+ "x": 120.0,
+ "y": 455.0
+ },
+ "params": 2
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#2",
+ "pos": {
+ "x": 395.0,
+ "y": 195.0
+ },
+ "params": 2
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#3",
+ "pos": {
+ "x": 450.0,
+ "y": 175.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#4",
+ "pos": {
+ "x": 395.0,
+ "y": 225.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#5",
+ "pos": {
+ "x": 395.0,
+ "y": 265.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#6",
+ "pos": {
+ "x": 285.0,
+ "y": 320.0
+ },
+ "params": 3
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#7",
+ "pos": {
+ "x": 420.0,
+ "y": 325.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#8",
+ "pos": {
+ "x": 420.0,
+ "y": 365.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#9",
+ "pos": {
+ "x": 240.0,
+ "y": 475.0
+ },
+ "params": 4
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#0",
+ "pos": {
+ "x": 535.0,
+ "y": 165.0
+ },
+ "params": {
+ "logicWidth": 4,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#1",
+ "pos": {
+ "x": 10.0,
+ "y": 650.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#2",
+ "pos": {
+ "x": 10.0,
+ "y": 605.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#3",
+ "pos": {
+ "x": 560.0,
+ "y": 595.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#4",
+ "pos": {
+ "x": 565.0,
+ "y": 655.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#5",
+ "pos": {
+ "x": 560.0,
+ "y": 290.0
+ },
+ "params": {
+ "logicWidth": 1,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 165.0,
+ "y": 150.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 180.0,
+ "y": 135.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 195.0,
+ "y": 55.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 195.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 195.0,
+ "y": 35.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 330.0,
+ "y": 125.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 520.0,
+ "y": 190.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 255.0,
+ "y": 265.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 255.0,
+ "y": 255.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#17",
+ "pos": {
+ "x": 360.0,
+ "y": 495.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#18",
+ "pos": {
+ "x": 35.0,
+ "y": 640.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#19",
+ "pos": {
+ "x": 35.0,
+ "y": 595.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 295.0,
+ "y": 120.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#20",
+ "pos": {
+ "x": 585.0,
+ "y": 590.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#21",
+ "pos": {
+ "x": 585.0,
+ "y": 640.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#22",
+ "pos": {
+ "x": 250.0,
+ "y": 540.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#23",
+ "pos": {
+ "x": 330.0,
+ "y": 640.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#24",
+ "pos": {
+ "x": 285.0,
+ "y": 745.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#25",
+ "pos": {
+ "x": 285.0,
+ "y": 755.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#26",
+ "pos": {
+ "x": 290.0,
+ "y": 805.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#27",
+ "pos": {
+ "x": 440.0,
+ "y": 385.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#28",
+ "pos": {
+ "x": 440.0,
+ "y": 345.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 335.0,
+ "y": 270.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#30",
+ "pos": {
+ "x": 550.0,
+ "y": 570.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#32",
+ "pos": {
+ "x": 85.0,
+ "y": 590.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#33",
+ "pos": {
+ "x": 530.0,
+ "y": 270.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 150.0,
+ "y": 160.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 530.0,
+ "y": 100.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 120.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 215.0,
+ "y": 180.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 215.0,
+ "y": 160.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 215.0,
+ "y": 200.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 25.0
+ },
+ {
+ "x": 5.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "muSR_MUX"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "MUX"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O6"
+ },
+ "pin2": {
+ "compName": "Merger#1",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#100",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#101",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#4",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#102",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "Splitter#4",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#103",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#4",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#104",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "Splitter#4",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#105",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#4",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#106",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#5",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#107",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "Splitter#5",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#108",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#5",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#109",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#1",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O7"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_1"
+ },
+ "pin2": {
+ "compName": "Splitter#5",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#110",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#5",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#111",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#112",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#113",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y111"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I111"
+ },
+ "name": "unnamedWire#114",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I110"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y110"
+ },
+ "name": "unnamedWire#115",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y101"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I101"
+ },
+ "name": "unnamedWire#116",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I100"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y100"
+ },
+ "name": "unnamedWire#117",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y011"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I011"
+ },
+ "name": "unnamedWire#118",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y010"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I010"
+ },
+ "name": "unnamedWire#119",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "Merger#1",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I001"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y001"
+ },
+ "name": "unnamedWire#120",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y000"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I000"
+ },
+ "name": "unnamedWire#121",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#12",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#5",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#122",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#123",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#6",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "CT_MUX"
+ },
+ "name": "unnamedWire#124",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#6",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#125",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "Splitter#6",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#126",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#6",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#127",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "CT_EXP"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#128",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#129",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#1",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O9"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "CT_INV"
+ },
+ "name": "unnamedWire#130",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#131",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#132",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Splitter#7",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#133",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#7",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "name": "unnamedWire#134",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#8",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#135",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "M"
+ },
+ "name": "unnamedWire#136",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Splitter#8",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#137",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "OEN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#138",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O11"
+ },
+ "pin2": {
+ "compName": "Merger#4",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#139",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O10"
+ },
+ "pin2": {
+ "compName": "Merger#1",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#4",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O12"
+ },
+ "name": "unnamedWire#140",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#4",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "I12-11"
+ },
+ "name": "unnamedWire#141",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "C0_MUX"
+ },
+ "pin2": {
+ "compName": "Splitter#9",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#142",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#143",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#10",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#144",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "Splitter#10",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#145",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#9",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#146",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#147",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "Splitter#9",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#148",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#9",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#149",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "I5-0"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#150",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#151",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Cx"
+ },
+ "name": "unnamedWire#152",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#153",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#154",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "Splitter#9",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#155",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "C0"
+ },
+ "name": "unnamedWire#156",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "QIOn"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "name": "unnamedWire#157",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "SIOn"
+ },
+ "name": "unnamedWire#158",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "SIO0"
+ },
+ "name": "unnamedWire#159",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Merger#1",
+ "pinName": "O"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 385.0
+ },
+ {
+ "x": 40.0,
+ "y": 285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "QIO0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "name": "unnamedWire#160",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#1",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "name": "unnamedWire#161",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#2",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "name": "unnamedWire#162",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#3",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "name": "unnamedWire#163",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#4",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "name": "unnamedWire#164",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#3",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#165",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "SIO0_MUX"
+ },
+ "pin2": {
+ "compName": "Splitter#11",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#166",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#11",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "I00"
+ },
+ "name": "unnamedWire#167",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#11",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#168",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "Splitter#11",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#169",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IOVR"
+ },
+ "pin2": {
+ "compName": "Merger#2",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "I01"
+ },
+ "name": "unnamedWire#170",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "I10"
+ },
+ "name": "unnamedWire#171",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#8",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#172",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "name": "unnamedWire#173",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#12",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#174",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "Splitter#12",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#175",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#12",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "I00"
+ },
+ "name": "unnamedWire#176",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#4",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#177",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#12",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "QIO0_MUX"
+ },
+ "name": "unnamedWire#178",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "I01"
+ },
+ "name": "unnamedWire#179",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "Merger#2",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "I10"
+ },
+ "name": "unnamedWire#180",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "I11"
+ },
+ "name": "unnamedWire#181",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "I11"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "name": "unnamedWire#182",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#13",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "name": "unnamedWire#183",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#184",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "name": "unnamedWire#185",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "I000"
+ },
+ "name": "unnamedWire#186",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "I001"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "name": "unnamedWire#187",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#13",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "SIOn_MUX"
+ },
+ "name": "unnamedWire#188",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#13",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#189",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#2",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "IC"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#13",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#190",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "I010"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "name": "unnamedWire#191",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "I011"
+ },
+ "name": "unnamedWire#192",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "I100"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "name": "unnamedWire#193",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#21",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "I111"
+ },
+ "name": "unnamedWire#194",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "name": "unnamedWire#195",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "I110"
+ },
+ "pin2": {
+ "compName": "Splitter#7",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#196",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#22",
+ "pinName": "I01"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "name": "unnamedWire#197",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#22",
+ "pinName": "I10"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "name": "unnamedWire#198",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "I101"
+ },
+ "name": "unnamedWire#199",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "muSR_OVRRET"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "OVRRET"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IZ"
+ },
+ "pin2": {
+ "compName": "Merger#2",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#200",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#22",
+ "pinName": "I11"
+ },
+ "name": "unnamedWire#201",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#32",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "OEn"
+ },
+ "name": "unnamedWire#202",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "OE0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "name": "unnamedWire#203",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#204",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#21",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#205",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#21",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "Splitter#7",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#206",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#22",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#1",
+ "pinName": "IN"
+ },
+ "name": "unnamedWire#207",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#14",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#22",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#208",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#14",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#22",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#209",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "muSR_CINV"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "CINV"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#14",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "QIOn_MUX"
+ },
+ "name": "unnamedWire#210",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#14",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#22",
+ "pinName": "I00"
+ },
+ "name": "unnamedWire#211",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#2",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#23",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#212",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_SE"
+ },
+ "pin2": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "_SE"
+ },
+ "name": "unnamedWire#213",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#3",
+ "pinName": "EN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "name": "unnamedWire#214",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#4",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#215",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#2",
+ "pinName": "EN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#32",
+ "pinName": ""
+ },
+ "name": "unnamedWire#218",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#32",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#1",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#219",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#2",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#18",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#17",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#221",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#17",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "COVD_V"
+ },
+ "name": "unnamedWire#222",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#17",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "name": "unnamedWire#223",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#18",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "name": "unnamedWire#224",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#18",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#225",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "MC_MUX"
+ },
+ "pin2": {
+ "compName": "Splitter#15",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#226",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#15",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#18",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#227",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#15",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#17",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#228",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "BitDisplay#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#229",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "BitDisplay#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#230",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "BitDisplay#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#231",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "EN"
+ },
+ "pin2": {
+ "compName": "BitDisplay#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#232",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#33",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#12",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#233",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#12",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#33",
+ "pinName": ""
+ },
+ "name": "unnamedWire#234",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#33",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_OECT"
+ },
+ "name": "unnamedWire#235",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#5",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "CT"
+ },
+ "name": "unnamedWire#236",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#5",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#237",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "mu"
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "MSR_MUX"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "MUX"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904ShiftInstrDecode#0",
+ "pinName": "MC_EN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "COVD_EN"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_CEmu"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#42",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EOVR"
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EN"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EC"
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#45",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EZ"
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEZ"
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEC"
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "YZ"
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "YC"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "YN"
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "YOVR"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#54",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_CEM"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEN"
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEOVR"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#59",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#7",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#61",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#62",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#9",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#63",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#64",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EOVR"
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EN"
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#67",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EC"
+ },
+ "name": "unnamedWire#68",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EZ"
+ },
+ "name": "unnamedWire#69",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#70",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "NandGate#9",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#71",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#8",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#72",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#73",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#74",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_EZ"
+ },
+ "name": "unnamedWire#75",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EC"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#76",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_EN"
+ },
+ "name": "unnamedWire#77",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EOVR"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#78",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#79",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O4"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#80",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#10",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#81",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_OEY"
+ },
+ "name": "unnamedWire#82",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#10",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#83",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#84",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#85",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#86",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#87",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#88",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#3",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#89",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O5"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "Merger#3",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#90",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#3",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#91",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "Merger#3",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#92",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#3",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#93",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2904RegCTInstrDecode#0",
+ "pinName": "Y_MUX"
+ },
+ "pin2": {
+ "compName": "Splitter#2",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#94",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#95",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#96",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#97",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#98",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "Splitter#3",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#99",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Am2904",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {
+ "musr": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "DeserializedSubmodelComponent#1"
+ }
+ },
+ "msr": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "DeserializedSubmodelComponent#0"
+ }
+ }
+ },
+ "atomicHighLevelStates": {}
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 45.0,
+ "height": 46.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 14.0,
+ "y": 46.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 27.5,
+ "y": 46.0
+ },
+ "name": "COVD_EN",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 37.5,
+ "y": 46.0
+ },
+ "name": "COVD_V",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 31.0
+ },
+ "name": "I",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 4.0,
+ "y": 46.0
+ },
+ "name": "MUX",
+ "logicWidth": 3,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 45.0,
+ "y": 19.0
+ },
+ "name": "Q",
+ "logicWidth": 4,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 18.0
+ },
+ "name": "Y",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 15.5,
+ "y": 0.0
+ },
+ "name": "_EC",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 25.5,
+ "y": 0.0
+ },
+ "name": "_EN",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.5,
+ "y": 0.2
+ },
+ "name": "_EOVR",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 5.5,
+ "y": 0.0
+ },
+ "name": "_EZ",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "mu",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.1,
+ "submodel": {
+ "components": [
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 55.0,
+ "y": 110.0
+ }
+ },
+ {
+ "id": "xor",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 35.0,
+ "y": 250.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 150.0,
+ "y": 280.0
+ }
+ },
+ {
+ "id": "not4",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 100.0,
+ "y": 330.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 110.0,
+ "y": 60.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 200.0,
+ "y": 230.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 250.0,
+ "y": 180.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 325.0,
+ "y": 290.0
+ }
+ },
+ {
+ "id": "and",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 380.0,
+ "y": 85.0
+ }
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 435.0,
+ "y": 175.0
+ },
+ "params": 4
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 325.0,
+ "y": 90.0
+ },
+ "params": 1
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 5.0,
+ "y": 35.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#1",
+ "pos": {
+ "x": 5.0,
+ "y": 165.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#2",
+ "pos": {
+ "x": 45.0,
+ "y": 425.0
+ },
+ "params": 3
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#3",
+ "pos": {
+ "x": 5.0,
+ "y": 295.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 29.0,
+ "y": 284.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 414.0,
+ "y": 174.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 89.0,
+ "y": 84.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 89.0,
+ "y": 94.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 19.0,
+ "y": 294.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 194.0,
+ "y": 234.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 89.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 319.0,
+ "y": 294.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 319.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 419.0,
+ "y": 184.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 424.0,
+ "y": 194.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 429.0,
+ "y": 204.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 84.0,
+ "y": 344.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 94.0,
+ "y": 364.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 29.0,
+ "y": 254.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 74.0,
+ "y": 314.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 49.0,
+ "y": 114.0
+ },
+ "params": 1
+ },
+ {
+ "id": "dff4_finewe",
+ "name": "dff4_finewe#0",
+ "pos": {
+ "x": 375.0,
+ "y": 170.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 445.0
+ },
+ {
+ "x": 255.0,
+ "y": 445.0
+ },
+ {
+ "x": 255.0,
+ "y": 280.0
+ },
+ {
+ "x": 340.0,
+ "y": 280.0
+ },
+ {
+ "x": 340.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EOVR"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "_WE4"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 355.0,
+ "y": 30.0
+ },
+ {
+ "x": 355.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "mu"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_1"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 125.0
+ },
+ {
+ "x": 35.0,
+ "y": 35.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 45.0
+ },
+ {
+ "x": 30.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 55.0
+ },
+ {
+ "x": 25.0,
+ "y": 145.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 65.0
+ },
+ {
+ "x": 20.0,
+ "y": 155.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EN"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "_WE3"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 255.0,
+ "y": 25.0
+ },
+ {
+ "x": 360.0,
+ "y": 25.0
+ },
+ {
+ "x": 360.0,
+ "y": 205.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "MUX"
+ },
+ "pin2": {
+ "compName": "Splitter#2",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 435.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Splitter#3",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 305.0
+ },
+ {
+ "x": 25.0,
+ "y": 265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 445.0
+ },
+ {
+ "x": 60.0,
+ "y": 415.0
+ },
+ {
+ "x": 30.0,
+ "y": 415.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "Q4"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EC"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 155.0,
+ "y": 20.0
+ },
+ {
+ "x": 365.0,
+ "y": 20.0
+ },
+ {
+ "x": 365.0,
+ "y": 90.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#34",
+ "path": [
+ {
+ "x": 415.0,
+ "y": 380.0
+ },
+ {
+ "x": 80.0,
+ "y": 380.0
+ },
+ {
+ "x": 80.0,
+ "y": 335.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#35",
+ "path": [
+ {
+ "x": 420.0,
+ "y": 385.0
+ },
+ {
+ "x": 85.0,
+ "y": 385.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#36",
+ "path": [
+ {
+ "x": 425.0,
+ "y": 390.0
+ },
+ {
+ "x": 90.0,
+ "y": 390.0
+ },
+ {
+ "x": 90.0,
+ "y": 355.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#37",
+ "path": [
+ {
+ "x": 430.0,
+ "y": 395.0
+ },
+ {
+ "x": 95.0,
+ "y": 395.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Splitter#3",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#39",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 325.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EZ"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "_WE1"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 15.0
+ },
+ {
+ "x": 370.0,
+ "y": 15.0
+ },
+ {
+ "x": 370.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#40",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 305.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#42",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 230.0
+ },
+ {
+ "x": 50.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I0_1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#54",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#59",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 245.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#61",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#62",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 325.0
+ },
+ {
+ "x": 80.0,
+ "y": 275.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#63",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#64",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#67",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 435.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#68",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#69",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 235.0
+ },
+ {
+ "x": 105.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#70",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 215.0
+ },
+ {
+ "x": 295.0,
+ "y": 255.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "D3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#71",
+ "path": [
+ {
+ "x": 300.0,
+ "y": 245.0
+ },
+ {
+ "x": 300.0,
+ "y": 205.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "_WE2"
+ },
+ "name": "unnamedWire#72",
+ "path": [
+ {
+ "x": 420.0,
+ "y": 90.0
+ },
+ {
+ "x": 420.0,
+ "y": 110.0
+ },
+ {
+ "x": 365.0,
+ "y": 110.0
+ },
+ {
+ "x": 365.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#73",
+ "path": [
+ {
+ "x": 310.0,
+ "y": 225.0
+ },
+ {
+ "x": 310.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#74",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#75",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#76",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#77",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#78",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 225.0
+ },
+ {
+ "x": 200.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#79",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 85.0
+ },
+ {
+ "x": 205.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#80",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 205.0
+ },
+ {
+ "x": 210.0,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#81",
+ "path": [
+ {
+ "x": 215.0,
+ "y": 65.0
+ },
+ {
+ "x": 215.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#82",
+ "path": [
+ {
+ "x": 245.0,
+ "y": 425.0
+ },
+ {
+ "x": 245.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#83",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "COVD_EN"
+ },
+ "name": "unnamedWire#84",
+ "path": [
+ {
+ "x": 275.0,
+ "y": 295.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#85",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "COVD_V"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#86",
+ "path": [
+ {
+ "x": 375.0,
+ "y": 325.0
+ },
+ {
+ "x": 320.0,
+ "y": 325.0
+ },
+ {
+ "x": 320.0,
+ "y": 315.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#87",
+ "path": [
+ {
+ "x": 305.0,
+ "y": 195.0
+ },
+ {
+ "x": 305.0,
+ "y": 305.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#88",
+ "path": [
+ {
+ "x": 365.0,
+ "y": 295.0
+ },
+ {
+ "x": 365.0,
+ "y": 235.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#89",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#90",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#91",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "name": "unnamedWire#92",
+ "path": [
+ {
+ "x": 320.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#93",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "MSR",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff4_finewe#0",
+ "subStateID": "q"
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 60.0,
+ "height": 90.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 10.0
+ },
+ "name": "Y000",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 20.0
+ },
+ "name": "Y001",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 30.0
+ },
+ "name": "Y010",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 40.0
+ },
+ "name": "Y011",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 50.0
+ },
+ "name": "Y100",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 60.0
+ },
+ "name": "Y101",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 70.0
+ },
+ "name": "Y110",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 80.0
+ },
+ "name": "Y111",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "xor",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 40.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 85.0,
+ "y": 20.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 45.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 120.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 45.0,
+ "y": 105.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#4",
+ "pos": {
+ "x": 80.0,
+ "y": 115.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#5",
+ "pos": {
+ "x": 80.0,
+ "y": 165.0
+ },
+ "params": 1
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 5.0,
+ "y": 110.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 29.0,
+ "y": 129.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 34.0,
+ "y": 99.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 39.0,
+ "y": 109.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 79.0,
+ "y": 34.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 79.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 19.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 24.0,
+ "y": 119.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 39.0,
+ "y": 64.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 74.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 74.0,
+ "y": 119.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 24.0,
+ "y": 149.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 20.0
+ },
+ {
+ "x": 110.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 55.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 60.0
+ },
+ {
+ "x": 115.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y001"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y000"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 110.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y011"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y010"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y100"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 115.0
+ },
+ {
+ "x": 70.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Y101"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Y110"
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#5",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Y111"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 200.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#34",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 110.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 35.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Test\nlogic",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {}
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 45.0,
+ "height": 46.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 14.0,
+ "y": 46.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 27.5,
+ "y": 46.0
+ },
+ "name": "CINV",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 31.0
+ },
+ "name": "I",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 13.5
+ },
+ "name": "M",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 4.0,
+ "y": 46.0
+ },
+ "name": "MUX",
+ "logicWidth": 2,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 37.5,
+ "y": 46.0
+ },
+ "name": "OVRRET",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 45.0,
+ "y": 19.0
+ },
+ "name": "Q",
+ "logicWidth": 4,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 15.5,
+ "y": 0.0
+ },
+ "name": "_EC",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 25.5,
+ "y": 0.0
+ },
+ "name": "_EN",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.5,
+ "y": 0.0
+ },
+ "name": "_EOVR",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 5.5,
+ "y": 0.0
+ },
+ "name": "_EZ",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.1,
+ "submodel": {
+ "components": [
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 45.0,
+ "y": 240.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 100.0,
+ "y": 190.0
+ }
+ },
+ {
+ "id": "xor",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 215.0,
+ "y": 200.0
+ }
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 435.0,
+ "y": 175.0
+ },
+ "params": 4
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 245.0,
+ "y": 245.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 215.0,
+ "y": 255.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 215.0,
+ "y": 235.0
+ },
+ "params": 1
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 5.0,
+ "y": 120.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#1",
+ "pos": {
+ "x": 5.0,
+ "y": 295.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#2",
+ "pos": {
+ "x": 45.0,
+ "y": 430.0
+ },
+ "params": 2
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 89.0,
+ "y": 234.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 89.0,
+ "y": 224.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 89.0,
+ "y": 214.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 429.0,
+ "y": 204.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 209.0,
+ "y": 244.0
+ },
+ "params": 1
+ },
+ {
+ "id": "dff4_finewe",
+ "name": "dff4_finewe#0",
+ "pos": {
+ "x": 375.0,
+ "y": 170.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "Q2"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 150.0
+ },
+ {
+ "x": 20.0,
+ "y": 285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 140.0
+ },
+ {
+ "x": 25.0,
+ "y": 275.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 130.0
+ },
+ {
+ "x": 30.0,
+ "y": 265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "MUX"
+ },
+ "pin2": {
+ "compName": "Splitter#2",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 435.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 440.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "Q3"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 205.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#27",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 235.0
+ },
+ {
+ "x": 40.0,
+ "y": 245.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 430.0
+ },
+ {
+ "x": 85.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 240.0,
+ "y": 245.0
+ },
+ {
+ "x": 240.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 240.0,
+ "y": 260.0
+ },
+ {
+ "x": 240.0,
+ "y": 265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "OVRRET"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 375.0,
+ "y": 360.0
+ },
+ {
+ "x": 205.0,
+ "y": 360.0
+ },
+ {
+ "x": 205.0,
+ "y": 260.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#34",
+ "path": [
+ {
+ "x": 430.0,
+ "y": 280.0
+ },
+ {
+ "x": 210.0,
+ "y": 280.0
+ },
+ {
+ "x": 210.0,
+ "y": 270.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "CINV"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#36",
+ "path": [
+ {
+ "x": 275.0,
+ "y": 390.0
+ },
+ {
+ "x": 190.0,
+ "y": 390.0
+ },
+ {
+ "x": 190.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "_WE1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_EZ"
+ },
+ "name": "unnamedWire#37",
+ "path": [
+ {
+ "x": 370.0,
+ "y": 185.0
+ },
+ {
+ "x": 370.0,
+ "y": 5.0
+ },
+ {
+ "x": 55.0,
+ "y": 5.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#38",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 325.0
+ },
+ {
+ "x": 345.0,
+ "y": 325.0
+ },
+ {
+ "x": 345.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EOVR"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "_WE4"
+ },
+ "name": "unnamedWire#39",
+ "path": [
+ {
+ "x": 355.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "_WE3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_EN"
+ },
+ "name": "unnamedWire#40",
+ "path": [
+ {
+ "x": 360.0,
+ "y": 205.0
+ },
+ {
+ "x": 360.0,
+ "y": 15.0
+ },
+ {
+ "x": 255.0,
+ "y": 15.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EC"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "_WE2"
+ },
+ "name": "unnamedWire#41",
+ "path": [
+ {
+ "x": 155.0,
+ "y": 10.0
+ },
+ {
+ "x": 365.0,
+ "y": 10.0
+ },
+ {
+ "x": 365.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#42",
+ "path": [
+ {
+ "x": 315.0,
+ "y": 225.0
+ },
+ {
+ "x": 315.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#43",
+ "path": [
+ {
+ "x": 310.0,
+ "y": 205.0
+ },
+ {
+ "x": 310.0,
+ "y": 235.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff4_finewe#0",
+ "pinName": "D3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#44",
+ "path": [
+ {
+ "x": 305.0,
+ "y": 245.0
+ },
+ {
+ "x": 305.0,
+ "y": 225.0
+ },
+ {
+ "x": 170.0,
+ "y": 225.0
+ },
+ {
+ "x": 170.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 160.0,
+ "y": 245.0
+ },
+ {
+ "x": 160.0,
+ "y": 225.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "dff4_finewe#0",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#47",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 240.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#48",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#49",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 120.0
+ },
+ {
+ "x": 35.0,
+ "y": 255.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "M"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "muSR",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff4_finewe#0",
+ "subStateID": "q"
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
+++ /dev/null
-{
- "width": 120.0,
- "height": 178.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 120.0,
- "y": 108.0
- },
- "name": "C0",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 120.0,
- "y": 60.0
- },
- "name": "CT",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 110.0
- },
- "name": "Cx",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 61.0
- },
- "name": "I",
- "logicWidth": 13,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "IC",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 20.0
- },
- "name": "IN",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "IOVR",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 10.0
- },
- "name": "IZ",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 120.0,
- "y": 128.0
- },
- "name": "QIO0",
- "logicWidth": 1,
- "usage": "TRISTATE"
- },
- {
- "location": {
- "x": 0.0,
- "y": 128.0
- },
- "name": "QIOn",
- "logicWidth": 1,
- "usage": "TRISTATE"
- },
- {
- "location": {
- "x": 120.0,
- "y": 118.0
- },
- "name": "SIO0",
- "logicWidth": 1,
- "usage": "TRISTATE"
- },
- {
- "location": {
- "x": 0.0,
- "y": 119.0
- },
- "name": "SIOn",
- "logicWidth": 1,
- "usage": "TRISTATE"
- },
- {
- "location": {
- "x": 120.0,
- "y": 17.0
- },
- "name": "YC",
- "logicWidth": 1,
- "usage": "TRISTATE"
- },
- {
- "location": {
- "x": 120.0,
- "y": 21.0
- },
- "name": "YN",
- "logicWidth": 1,
- "usage": "TRISTATE"
- },
- {
- "location": {
- "x": 120.0,
- "y": 25.0
- },
- "name": "YOVR",
- "logicWidth": 1,
- "usage": "TRISTATE"
- },
- {
- "location": {
- "x": 120.0,
- "y": 11.0
- },
- "name": "YZ",
- "logicWidth": 1,
- "usage": "TRISTATE"
- },
- {
- "location": {
- "x": 0.0,
- "y": 30.0
- },
- "name": "_CEM",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 33.0
- },
- "name": "_CEmu",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 38.0
- },
- "name": "_EC",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 40.0
- },
- "name": "_EN",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 42.0
- },
- "name": "_EOVR",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 36.0
- },
- "name": "_EZ",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 120.0,
- "y": 51.0
- },
- "name": "_OECT",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 61.0,
- "y": 0.0
- },
- "name": "_OEY",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 83.0
- },
- "name": "_SE",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.2,
- "submodel": {
- "components": [
- {
- "id": "GUIAm2904MSR",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 225.0,
- "y": 95.0
- }
- },
- {
- "id": "GUIAm2904muSR",
- "name": "DeserializedSubmodelComponent#1",
- "pos": {
- "x": 270.0,
- "y": 250.0
- }
- },
- {
- "id": "GUIxor",
- "name": "DeserializedSubmodelComponent#10",
- "pos": {
- "x": 455.0,
- "y": 355.0
- }
- },
- {
- "id": "GUImux1",
- "name": "DeserializedSubmodelComponent#11",
- "pos": {
- "x": 265.0,
- "y": 515.0
- }
- },
- {
- "id": "GUIxor",
- "name": "DeserializedSubmodelComponent#12",
- "pos": {
- "x": 315.0,
- "y": 505.0
- }
- },
- {
- "id": "GUImux1",
- "name": "DeserializedSubmodelComponent#13",
- "pos": {
- "x": 365.0,
- "y": 485.0
- }
- },
- {
- "id": "GUImux1",
- "name": "DeserializedSubmodelComponent#14",
- "pos": {
- "x": 415.0,
- "y": 465.0
- }
- },
- {
- "id": "GUImux2",
- "name": "DeserializedSubmodelComponent#15",
- "pos": {
- "x": 435.0,
- "y": 575.0
- }
- },
- {
- "id": "GUImux2",
- "name": "DeserializedSubmodelComponent#16",
- "pos": {
- "x": 435.0,
- "y": 655.0
- }
- },
- {
- "id": "GUImux1",
- "name": "DeserializedSubmodelComponent#17",
- "pos": {
- "x": 190.0,
- "y": 460.0
- }
- },
- {
- "id": "GUImux1",
- "name": "DeserializedSubmodelComponent#18",
- "pos": {
- "x": 135.0,
- "y": 470.0
- }
- },
- {
- "id": "GUIand",
- "name": "DeserializedSubmodelComponent#2",
- "pos": {
- "x": 380.0,
- "y": 125.0
- }
- },
- {
- "id": "GUIxor",
- "name": "DeserializedSubmodelComponent#21",
- "pos": {
- "x": 250.0,
- "y": 820.0
- }
- },
- {
- "id": "GUImux2",
- "name": "DeserializedSubmodelComponent#22",
- "pos": {
- "x": 120.0,
- "y": 720.0
- }
- },
- {
- "id": "GUImux3",
- "name": "DeserializedSubmodelComponent#23",
- "pos": {
- "x": 300.0,
- "y": 715.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#3",
- "pos": {
- "x": 470.0,
- "y": 160.0
- }
- },
- {
- "id": "GUInot4",
- "name": "DeserializedSubmodelComponent#4",
- "pos": {
- "x": 135.0,
- "y": 40.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#5",
- "pos": {
- "x": 415.0,
- "y": 210.0
- }
- },
- {
- "id": "GUIAm2904TestLogic",
- "name": "DeserializedSubmodelComponent#6",
- "pos": {
- "x": 225.0,
- "y": 340.0
- }
- },
- {
- "id": "GUImux3",
- "name": "DeserializedSubmodelComponent#7",
- "pos": {
- "x": 300.0,
- "y": 310.0
- }
- },
- {
- "id": "GUIxor",
- "name": "DeserializedSubmodelComponent#8",
- "pos": {
- "x": 495.0,
- "y": 295.0
- }
- },
- {
- "id": "GUImux1",
- "name": "DeserializedSubmodelComponent#9",
- "pos": {
- "x": 450.0,
- "y": 310.0
- }
- },
- {
- "id": "GUIAm2904RegCTInstrDecode",
- "name": "GUIAm2904RegCTInstrDecode#0",
- "pos": {
- "x": 50.0,
- "y": 240.0
- }
- },
- {
- "id": "GUIAm2904ShiftInstrDecode",
- "name": "GUIAm2904ShiftInstrDecode#0",
- "pos": {
- "x": 50.0,
- "y": 360.0
- }
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#0",
- "pos": {
- "x": 530.0,
- "y": 70.0
- },
- "params": 4
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#1",
- "pos": {
- "x": 565.0,
- "y": 180.0
- },
- "params": 4
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#2",
- "pos": {
- "x": 530.0,
- "y": 200.0
- },
- "params": 4
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#3",
- "pos": {
- "x": 560.0,
- "y": 150.0
- },
- "params": 1
- },
- {
- "id": "GUIMerger",
- "name": "GUIMerger#0",
- "pos": {
- "x": 25.0,
- "y": 315.0
- },
- "params": 6
- },
- {
- "id": "GUIMerger",
- "name": "GUIMerger#1",
- "pos": {
- "x": 25.0,
- "y": 265.0
- },
- "params": 5
- },
- {
- "id": "GUIMerger",
- "name": "GUIMerger#2",
- "pos": {
- "x": 15.0,
- "y": 65.0
- },
- "params": 4
- },
- {
- "id": "GUIMerger",
- "name": "GUIMerger#3",
- "pos": {
- "x": 510.0,
- "y": 165.0
- },
- "params": 4
- },
- {
- "id": "GUIMerger",
- "name": "GUIMerger#4",
- "pos": {
- "x": 25.0,
- "y": 245.0
- },
- "params": 2
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 190.0,
- "y": 145.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 130.0,
- "y": 5.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#10",
- "pos": {
- "x": 340.0,
- "y": 120.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#12",
- "pos": {
- "x": 540.0,
- "y": 265.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 225.0,
- "y": 195.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 225.0,
- "y": 215.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#4",
- "pos": {
- "x": 225.0,
- "y": 155.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#5",
- "pos": {
- "x": 225.0,
- "y": 175.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#6",
- "pos": {
- "x": 205.0,
- "y": 70.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#7",
- "pos": {
- "x": 205.0,
- "y": 50.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#8",
- "pos": {
- "x": 205.0,
- "y": 30.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#9",
- "pos": {
- "x": 205.0,
- "y": 10.0
- },
- "params": 1
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#0",
- "pos": {
- "x": 10.0,
- "y": 245.0
- },
- "params": 13
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#1",
- "pos": {
- "x": 555.0,
- "y": 80.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#10",
- "pos": {
- "x": 420.0,
- "y": 410.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#11",
- "pos": {
- "x": 405.0,
- "y": 585.0
- },
- "params": 3
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#12",
- "pos": {
- "x": 410.0,
- "y": 665.0
- },
- "params": 3
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#13",
- "pos": {
- "x": 265.0,
- "y": 725.0
- },
- "params": 3
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#14",
- "pos": {
- "x": 90.0,
- "y": 730.0
- },
- "params": 3
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#15",
- "pos": {
- "x": 120.0,
- "y": 455.0
- },
- "params": 2
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#2",
- "pos": {
- "x": 395.0,
- "y": 195.0
- },
- "params": 2
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#3",
- "pos": {
- "x": 450.0,
- "y": 175.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#4",
- "pos": {
- "x": 395.0,
- "y": 225.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#5",
- "pos": {
- "x": 395.0,
- "y": 265.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#6",
- "pos": {
- "x": 285.0,
- "y": 320.0
- },
- "params": 3
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#7",
- "pos": {
- "x": 420.0,
- "y": 325.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#8",
- "pos": {
- "x": 420.0,
- "y": 365.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#9",
- "pos": {
- "x": 240.0,
- "y": 475.0
- },
- "params": 4
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#0",
- "pos": {
- "x": 535.0,
- "y": 165.0
- },
- "params": {
- "logicWidth": 4,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#1",
- "pos": {
- "x": 10.0,
- "y": 650.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#2",
- "pos": {
- "x": 10.0,
- "y": 605.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#3",
- "pos": {
- "x": 560.0,
- "y": 595.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#4",
- "pos": {
- "x": 565.0,
- "y": 655.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#5",
- "pos": {
- "x": 560.0,
- "y": 290.0
- },
- "params": {
- "logicWidth": 1,
- "orientation": "RIGHT"
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 165.0,
- "y": 150.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 180.0,
- "y": 135.0
- },
- "params": 4
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 195.0,
- "y": 55.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#11",
- "pos": {
- "x": 195.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#12",
- "pos": {
- "x": 195.0,
- "y": 35.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#13",
- "pos": {
- "x": 330.0,
- "y": 125.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#14",
- "pos": {
- "x": 520.0,
- "y": 190.0
- },
- "params": 4
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#15",
- "pos": {
- "x": 255.0,
- "y": 265.0
- },
- "params": 4
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#16",
- "pos": {
- "x": 255.0,
- "y": 255.0
- },
- "params": 4
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#17",
- "pos": {
- "x": 360.0,
- "y": 495.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#18",
- "pos": {
- "x": 35.0,
- "y": 640.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#19",
- "pos": {
- "x": 35.0,
- "y": 595.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 295.0,
- "y": 120.0
- },
- "params": 4
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#20",
- "pos": {
- "x": 585.0,
- "y": 590.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#21",
- "pos": {
- "x": 585.0,
- "y": 640.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#22",
- "pos": {
- "x": 250.0,
- "y": 540.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#23",
- "pos": {
- "x": 330.0,
- "y": 640.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#24",
- "pos": {
- "x": 285.0,
- "y": 745.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#25",
- "pos": {
- "x": 285.0,
- "y": 755.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#26",
- "pos": {
- "x": 290.0,
- "y": 805.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#27",
- "pos": {
- "x": 440.0,
- "y": 385.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#28",
- "pos": {
- "x": 440.0,
- "y": 345.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 335.0,
- "y": 270.0
- },
- "params": 4
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#30",
- "pos": {
- "x": 550.0,
- "y": 570.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#32",
- "pos": {
- "x": 85.0,
- "y": 590.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#33",
- "pos": {
- "x": 530.0,
- "y": 270.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 150.0,
- "y": 160.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 530.0,
- "y": 100.0
- },
- "params": 4
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 120.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 215.0,
- "y": 180.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 215.0,
- "y": 160.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 215.0,
- "y": 200.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 5.0,
- "y": 25.0
- },
- {
- "x": 5.0,
- "y": 10.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "muSR_MUX"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "MUX"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O6"
- },
- "pin2": {
- "compName": "GUIMerger#1",
- "pinName": "I0"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I0_4"
- },
- "name": "unnamedWire#100",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "I"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#101",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#4",
- "pinName": "O3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#102",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I0_2"
- },
- "pin2": {
- "compName": "GUISplitter#4",
- "pinName": "O2"
- },
- "name": "unnamedWire#103",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#4",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I0_3"
- },
- "name": "unnamedWire#104",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I0_4"
- },
- "pin2": {
- "compName": "GUISplitter#4",
- "pinName": "O0"
- },
- "name": "unnamedWire#105",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#4",
- "pinName": "I"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#106",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#5",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I1_4"
- },
- "name": "unnamedWire#107",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I1_3"
- },
- "pin2": {
- "compName": "GUISplitter#5",
- "pinName": "O1"
- },
- "name": "unnamedWire#108",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#5",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I1_2"
- },
- "name": "unnamedWire#109",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#1",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O7"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I1_1"
- },
- "pin2": {
- "compName": "GUISplitter#5",
- "pinName": "O3"
- },
- "name": "unnamedWire#110",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#5",
- "pinName": "I"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#111",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "IN"
- },
- "name": "unnamedWire#112",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "I"
- },
- "name": "unnamedWire#113",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y111"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I111"
- },
- "name": "unnamedWire#114",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I110"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y110"
- },
- "name": "unnamedWire#115",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y101"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I101"
- },
- "name": "unnamedWire#116",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I100"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y100"
- },
- "name": "unnamedWire#117",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y011"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I011"
- },
- "name": "unnamedWire#118",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y010"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I010"
- },
- "name": "unnamedWire#119",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O8"
- },
- "pin2": {
- "compName": "GUIMerger#1",
- "pinName": "I2"
- },
- "name": "unnamedWire#12",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I001"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y001"
- },
- "name": "unnamedWire#120",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y000"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I000"
- },
- "name": "unnamedWire#121",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#12",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUITriStateBuffer#5",
- "pinName": "EN"
- },
- "name": "unnamedWire#122",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#9",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#8",
- "pinName": "B"
- },
- "name": "unnamedWire#123",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#6",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "CT_MUX"
- },
- "name": "unnamedWire#124",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#6",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "S0"
- },
- "name": "unnamedWire#125",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "S1"
- },
- "pin2": {
- "compName": "GUISplitter#6",
- "pinName": "O1"
- },
- "name": "unnamedWire#126",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#6",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "S2"
- },
- "name": "unnamedWire#127",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "CT_EXP"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#9",
- "pinName": "S0"
- },
- "name": "unnamedWire#128",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#9",
- "pinName": "I0"
- },
- "name": "unnamedWire#129",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#1",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O9"
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#8",
- "pinName": "A"
- },
- "pin2": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "CT_INV"
- },
- "name": "unnamedWire#130",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#10",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#9",
- "pinName": "I1"
- },
- "name": "unnamedWire#131",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I"
- },
- "name": "unnamedWire#132",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUISplitter#7",
- "pinName": "I"
- },
- "name": "unnamedWire#133",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#7",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "WireCrossPoint#28",
- "pinName": ""
- },
- "name": "unnamedWire#134",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#8",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "name": "unnamedWire#135",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "M"
- },
- "name": "unnamedWire#136",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUISplitter#8",
- "pinName": "I"
- },
- "name": "unnamedWire#137",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "OEN"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "B"
- },
- "name": "unnamedWire#138",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O11"
- },
- "pin2": {
- "compName": "GUIMerger#4",
- "pinName": "I0"
- },
- "name": "unnamedWire#139",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O10"
- },
- "pin2": {
- "compName": "GUIMerger#1",
- "pinName": "I4"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#4",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O12"
- },
- "name": "unnamedWire#140",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#4",
- "pinName": "O"
- },
- "pin2": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "I12-11"
- },
- "name": "unnamedWire#141",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "C0_MUX"
- },
- "pin2": {
- "compName": "GUISplitter#9",
- "pinName": "I"
- },
- "name": "unnamedWire#142",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#11",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "name": "unnamedWire#143",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#10",
- "pinName": "I"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#144",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#11",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "GUISplitter#10",
- "pinName": "O2"
- },
- "name": "unnamedWire#145",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#9",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#11",
- "pinName": "S0"
- },
- "name": "unnamedWire#146",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#11",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#12",
- "pinName": "B"
- },
- "name": "unnamedWire#147",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#12",
- "pinName": "A"
- },
- "pin2": {
- "compName": "GUISplitter#9",
- "pinName": "O0"
- },
- "name": "unnamedWire#148",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#9",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "name": "unnamedWire#149",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "O"
- },
- "pin2": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "I5-0"
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#13",
- "pinName": "S0"
- },
- "name": "unnamedWire#150",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#12",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#13",
- "pinName": "I1"
- },
- "name": "unnamedWire#151",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#13",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Cx"
- },
- "name": "unnamedWire#152",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#13",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#14",
- "pinName": "I1"
- },
- "name": "unnamedWire#153",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#14",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "WireCrossPoint#17",
- "pinName": ""
- },
- "name": "unnamedWire#154",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#14",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "GUISplitter#9",
- "pinName": "O3"
- },
- "name": "unnamedWire#155",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#14",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "C0"
- },
- "name": "unnamedWire#156",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "QIOn"
- },
- "pin2": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "name": "unnamedWire#157",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "SIOn"
- },
- "name": "unnamedWire#158",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "SIO0"
- },
- "name": "unnamedWire#159",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUIMerger#1",
- "pinName": "O"
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 40.0,
- "y": 385.0
- },
- {
- "x": 40.0,
- "y": 285.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "QIO0"
- },
- "pin2": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "name": "unnamedWire#160",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#1",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "name": "unnamedWire#161",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#2",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "name": "unnamedWire#162",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#3",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "name": "unnamedWire#163",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#4",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "name": "unnamedWire#164",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#3",
- "pinName": "IN"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#15",
- "pinName": "Y"
- },
- "name": "unnamedWire#165",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "SIO0_MUX"
- },
- "pin2": {
- "compName": "GUISplitter#11",
- "pinName": "I"
- },
- "name": "unnamedWire#166",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#11",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#15",
- "pinName": "I00"
- },
- "name": "unnamedWire#167",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#11",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#15",
- "pinName": "S1"
- },
- "name": "unnamedWire#168",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#15",
- "pinName": "S0"
- },
- "pin2": {
- "compName": "GUISplitter#11",
- "pinName": "O1"
- },
- "name": "unnamedWire#169",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "IOVR"
- },
- "pin2": {
- "compName": "GUIMerger#2",
- "pinName": "I0"
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#15",
- "pinName": "I01"
- },
- "name": "unnamedWire#170",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#15",
- "pinName": "I10"
- },
- "name": "unnamedWire#171",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#8",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "name": "unnamedWire#172",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#22",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "name": "unnamedWire#173",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#12",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#16",
- "pinName": "S0"
- },
- "name": "unnamedWire#174",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#16",
- "pinName": "S1"
- },
- "pin2": {
- "compName": "GUISplitter#12",
- "pinName": "O2"
- },
- "name": "unnamedWire#175",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#12",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#16",
- "pinName": "I00"
- },
- "name": "unnamedWire#176",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#16",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUITriStateBuffer#4",
- "pinName": "IN"
- },
- "name": "unnamedWire#177",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#12",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "QIO0_MUX"
- },
- "name": "unnamedWire#178",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#16",
- "pinName": "I01"
- },
- "name": "unnamedWire#179",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "IN"
- },
- "pin2": {
- "compName": "GUIMerger#2",
- "pinName": "I1"
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#18",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#16",
- "pinName": "I10"
- },
- "name": "unnamedWire#180",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#16",
- "pinName": "I11"
- },
- "name": "unnamedWire#181",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#15",
- "pinName": "I11"
- },
- "pin2": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "name": "unnamedWire#182",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#13",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "name": "unnamedWire#183",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "S0"
- },
- "name": "unnamedWire#184",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#24",
- "pinName": ""
- },
- "name": "unnamedWire#185",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "I000"
- },
- "name": "unnamedWire#186",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "I001"
- },
- "pin2": {
- "compName": "WireCrossPoint#25",
- "pinName": ""
- },
- "name": "unnamedWire#187",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#13",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "SIOn_MUX"
- },
- "name": "unnamedWire#188",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#13",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "S2"
- },
- "name": "unnamedWire#189",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#2",
- "pinName": "I2"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "IC"
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#13",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "S1"
- },
- "name": "unnamedWire#190",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "I010"
- },
- "pin2": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "name": "unnamedWire#191",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "I011"
- },
- "name": "unnamedWire#192",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "I100"
- },
- "pin2": {
- "compName": "WireCrossPoint#23",
- "pinName": ""
- },
- "name": "unnamedWire#193",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#21",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "I111"
- },
- "name": "unnamedWire#194",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "name": "unnamedWire#195",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "I110"
- },
- "pin2": {
- "compName": "GUISplitter#7",
- "pinName": "O1"
- },
- "name": "unnamedWire#196",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#22",
- "pinName": "I01"
- },
- "pin2": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "name": "unnamedWire#197",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#22",
- "pinName": "I10"
- },
- "pin2": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "name": "unnamedWire#198",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "I101"
- },
- "name": "unnamedWire#199",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "muSR_OVRRET"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "OVRRET"
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "IZ"
- },
- "pin2": {
- "compName": "GUIMerger#2",
- "pinName": "I3"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#27",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#10",
- "pinName": "B"
- },
- "name": "unnamedWire#200",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#26",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#22",
- "pinName": "I11"
- },
- "name": "unnamedWire#201",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#32",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "OEn"
- },
- "name": "unnamedWire#202",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "OE0"
- },
- "pin2": {
- "compName": "WireCrossPoint#30",
- "pinName": ""
- },
- "name": "unnamedWire#203",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#28",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#10",
- "pinName": "A"
- },
- "name": "unnamedWire#204",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#28",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#21",
- "pinName": "A"
- },
- "name": "unnamedWire#205",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#21",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUISplitter#7",
- "pinName": "O0"
- },
- "name": "unnamedWire#206",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#22",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUITriStateBuffer#1",
- "pinName": "IN"
- },
- "name": "unnamedWire#207",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#14",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#22",
- "pinName": "S1"
- },
- "name": "unnamedWire#208",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#14",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#22",
- "pinName": "S0"
- },
- "name": "unnamedWire#209",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "muSR_CINV"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "CINV"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#14",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "QIOn_MUX"
- },
- "name": "unnamedWire#210",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#14",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#22",
- "pinName": "I00"
- },
- "name": "unnamedWire#211",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#2",
- "pinName": "IN"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#23",
- "pinName": "Y"
- },
- "name": "unnamedWire#212",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_SE"
- },
- "pin2": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "_SE"
- },
- "name": "unnamedWire#213",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#3",
- "pinName": "EN"
- },
- "pin2": {
- "compName": "WireCrossPoint#30",
- "pinName": ""
- },
- "name": "unnamedWire#214",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#30",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#4",
- "pinName": "EN"
- },
- "name": "unnamedWire#215",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#2",
- "pinName": "EN"
- },
- "pin2": {
- "compName": "WireCrossPoint#32",
- "pinName": ""
- },
- "name": "unnamedWire#218",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#32",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUITriStateBuffer#1",
- "pinName": "EN"
- },
- "name": "unnamedWire#219",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#2",
- "pinName": "O"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#18",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#17",
- "pinName": "I0"
- },
- "name": "unnamedWire#221",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#17",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "COVD_V"
- },
- "name": "unnamedWire#222",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#17",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "WireCrossPoint#19",
- "pinName": ""
- },
- "name": "unnamedWire#223",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#18",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "WireCrossPoint#20",
- "pinName": ""
- },
- "name": "unnamedWire#224",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#21",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#18",
- "pinName": "I1"
- },
- "name": "unnamedWire#225",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "MC_MUX"
- },
- "pin2": {
- "compName": "GUISplitter#15",
- "pinName": "I"
- },
- "name": "unnamedWire#226",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#15",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#18",
- "pinName": "S0"
- },
- "name": "unnamedWire#227",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#15",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#17",
- "pinName": "S0"
- },
- "name": "unnamedWire#228",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIBitDisplay#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#229",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I"
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "GUIBitDisplay#1",
- "pinName": ""
- },
- "name": "unnamedWire#230",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "IN"
- },
- "pin2": {
- "compName": "GUIBitDisplay#2",
- "pinName": ""
- },
- "name": "unnamedWire#231",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "EN"
- },
- "pin2": {
- "compName": "GUIBitDisplay#3",
- "pinName": ""
- },
- "name": "unnamedWire#232",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#33",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#12",
- "pinName": "A"
- },
- "name": "unnamedWire#233",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#12",
- "pinName": "B"
- },
- "pin2": {
- "compName": "WireCrossPoint#33",
- "pinName": ""
- },
- "name": "unnamedWire#234",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#33",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_OECT"
- },
- "name": "unnamedWire#235",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#5",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "CT"
- },
- "name": "unnamedWire#236",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#5",
- "pinName": "IN"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#8",
- "pinName": "Y"
- },
- "name": "unnamedWire#237",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#25",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "mu"
- },
- "name": "unnamedWire#28",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "C"
- },
- "name": "unnamedWire#29",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "I"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "C"
- },
- "name": "unnamedWire#30",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "MSR_MUX"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "MUX"
- },
- "name": "unnamedWire#31",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "MC_EN"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "COVD_EN"
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#34",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_CEmu"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#36",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "A"
- },
- "name": "unnamedWire#37",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#38",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "A"
- },
- "name": "unnamedWire#39",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I0"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#40",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#41",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#42",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "_EOVR"
- },
- "name": "unnamedWire#43",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "_EN"
- },
- "name": "unnamedWire#44",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "_EC"
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "Y"
- },
- "name": "unnamedWire#45",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "_EZ"
- },
- "name": "unnamedWire#46",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "muSR_WEZ"
- },
- "name": "unnamedWire#47",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "muSR_WEC"
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "B"
- },
- "name": "unnamedWire#48",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "O3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "YZ"
- },
- "name": "unnamedWire#49",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O1"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "YC"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "O2"
- },
- "name": "unnamedWire#50",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "YN"
- },
- "name": "unnamedWire#51",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "YOVR"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "O0"
- },
- "name": "unnamedWire#52",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "I"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#53",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y"
- },
- "name": "unnamedWire#54",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#55",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#56",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_CEM"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#57",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "muSR_WEN"
- },
- "name": "unnamedWire#58",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "muSR_WEOVR"
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "name": "unnamedWire#59",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I2"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "A"
- },
- "name": "unnamedWire#60",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#7",
- "pinName": "A"
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#61",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#8",
- "pinName": "A"
- },
- "name": "unnamedWire#62",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#9",
- "pinName": "A"
- },
- "pin2": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "name": "unnamedWire#63",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "name": "unnamedWire#64",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#65",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#6",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "_EOVR"
- },
- "name": "unnamedWire#66",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "_EN"
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "Y"
- },
- "name": "unnamedWire#67",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#8",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "_EC"
- },
- "name": "unnamedWire#68",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#9",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "_EZ"
- },
- "name": "unnamedWire#69",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O3"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "name": "unnamedWire#70",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUINandGate#9",
- "pinName": "B"
- },
- "name": "unnamedWire#71",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#8",
- "pinName": "B"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "Y2"
- },
- "name": "unnamedWire#72",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUINandGate#7",
- "pinName": "B"
- },
- "name": "unnamedWire#73",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUINandGate#6",
- "pinName": "B"
- },
- "name": "unnamedWire#74",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "A1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_EZ"
- },
- "name": "unnamedWire#75",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_EC"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "A2"
- },
- "name": "unnamedWire#76",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "A3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_EN"
- },
- "name": "unnamedWire#77",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_EOVR"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "A4"
- },
- "name": "unnamedWire#78",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#79",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O4"
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I4"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#10",
- "pinName": "A"
- },
- "name": "unnamedWire#80",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#10",
- "pinName": "B"
- },
- "pin2": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "name": "unnamedWire#81",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_OEY"
- },
- "name": "unnamedWire#82",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#10",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "A"
- },
- "name": "unnamedWire#83",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "EN"
- },
- "name": "unnamedWire#84",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#85",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I1_2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "Y2"
- },
- "name": "unnamedWire#86",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#87",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I1_4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "Y4"
- },
- "name": "unnamedWire#88",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#3",
- "pinName": "I0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "Y4"
- },
- "name": "unnamedWire#89",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I5"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O5"
- },
- "name": "unnamedWire#9",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "GUIMerger#3",
- "pinName": "I1"
- },
- "name": "unnamedWire#90",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#3",
- "pinName": "I2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "Y2"
- },
- "name": "unnamedWire#91",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "GUIMerger#3",
- "pinName": "I3"
- },
- "name": "unnamedWire#92",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#3",
- "pinName": "O"
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#93",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "Y_MUX"
- },
- "pin2": {
- "compName": "GUISplitter#2",
- "pinName": "I"
- },
- "name": "unnamedWire#94",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "S0"
- },
- "name": "unnamedWire#95",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "S0"
- },
- "name": "unnamedWire#96",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "O3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#97",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I0_2"
- },
- "name": "unnamedWire#98",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "I0_3"
- },
- "pin2": {
- "compName": "GUISplitter#3",
- "pinName": "O1"
- },
- "name": "unnamedWire#99",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "Am2904",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {
- "musr": {
- "id": "delegating",
- "params": {
- "delegateTarget": "DeserializedSubmodelComponent#1"
- }
- },
- "msr": {
- "id": "delegating",
- "params": {
- "delegateTarget": "DeserializedSubmodelComponent#0"
- }
- }
- },
- "atomicHighLevelStates": {}
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 45.0,
- "height": 46.0,
- "interfacePins": [
- {
- "location": {
- "x": 14.0,
- "y": 46.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 27.5,
- "y": 46.0
- },
- "name": "COVD_EN",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 37.5,
- "y": 46.0
- },
- "name": "COVD_V",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 31.0
- },
- "name": "I",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 4.0,
- "y": 46.0
- },
- "name": "MUX",
- "logicWidth": 3,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 45.0,
- "y": 19.0
- },
- "name": "Q",
- "logicWidth": 4,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 18.0
- },
- "name": "Y",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 15.5,
- "y": 0.0
- },
- "name": "_EC",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 25.5,
- "y": 0.0
- },
- "name": "_EN",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.5,
- "y": 0.2
- },
- "name": "_EOVR",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 5.5,
- "y": 0.0
- },
- "name": "_EZ",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "mu",
- "logicWidth": 4,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.1,
- "submodel": {
- "components": [
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 55.0,
- "y": 110.0
- }
- },
- {
- "id": "GUIxor",
- "name": "DeserializedSubmodelComponent#1",
- "pos": {
- "x": 35.0,
- "y": 250.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#2",
- "pos": {
- "x": 150.0,
- "y": 280.0
- }
- },
- {
- "id": "GUInot4",
- "name": "DeserializedSubmodelComponent#3",
- "pos": {
- "x": 100.0,
- "y": 330.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#4",
- "pos": {
- "x": 110.0,
- "y": 60.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#5",
- "pos": {
- "x": 200.0,
- "y": 230.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#6",
- "pos": {
- "x": 250.0,
- "y": 180.0
- }
- },
- {
- "id": "GUImux1",
- "name": "DeserializedSubmodelComponent#7",
- "pos": {
- "x": 325.0,
- "y": 290.0
- }
- },
- {
- "id": "GUIand",
- "name": "DeserializedSubmodelComponent#8",
- "pos": {
- "x": 380.0,
- "y": 85.0
- }
- },
- {
- "id": "GUIMerger",
- "name": "GUIMerger#0",
- "pos": {
- "x": 435.0,
- "y": 175.0
- },
- "params": 4
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 325.0,
- "y": 90.0
- },
- "params": 1
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#0",
- "pos": {
- "x": 5.0,
- "y": 35.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#1",
- "pos": {
- "x": 5.0,
- "y": 165.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#2",
- "pos": {
- "x": 45.0,
- "y": 425.0
- },
- "params": 3
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#3",
- "pos": {
- "x": 5.0,
- "y": 295.0
- },
- "params": 4
- },
- {
- "id": "GUIdff4_finewe",
- "name": "GUIdff4_finewe#0",
- "pos": {
- "x": 375.0,
- "y": 170.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 29.0,
- "y": 284.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 414.0,
- "y": 174.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 89.0,
- "y": 84.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#11",
- "pos": {
- "x": 89.0,
- "y": 94.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#12",
- "pos": {
- "x": 19.0,
- "y": 294.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#13",
- "pos": {
- "x": 194.0,
- "y": 234.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#14",
- "pos": {
- "x": 89.0,
- "y": 104.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#15",
- "pos": {
- "x": 319.0,
- "y": 294.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#16",
- "pos": {
- "x": 319.0,
- "y": 104.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 419.0,
- "y": 184.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 424.0,
- "y": 194.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 429.0,
- "y": 204.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 84.0,
- "y": 344.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 94.0,
- "y": 364.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 29.0,
- "y": 254.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 74.0,
- "y": 314.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 49.0,
- "y": 114.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "C"
- },
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 140.0,
- "y": 445.0
- },
- {
- "x": 255.0,
- "y": 445.0
- },
- {
- "x": 255.0,
- "y": 280.0
- },
- {
- "x": 340.0,
- "y": 280.0
- },
- {
- "x": 340.0,
- "y": 175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_EOVR"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "_WE4"
- },
- "name": "unnamedWire#1",
- "path": [
- {
- "x": 355.0,
- "y": 30.0
- },
- {
- "x": 355.0,
- "y": 215.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "mu"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "I"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "I"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_1"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O3"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 35.0,
- "y": 125.0
- },
- {
- "x": 35.0,
- "y": 35.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_2"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 30.0,
- "y": 45.0
- },
- {
- "x": 30.0,
- "y": 135.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_3"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 25.0,
- "y": 55.0
- },
- {
- "x": 25.0,
- "y": 145.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_4"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 20.0,
- "y": 65.0
- },
- {
- "x": 20.0,
- "y": 155.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "O3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_2"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "O2"
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_4"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "O0"
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_EN"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "_WE3"
- },
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 255.0,
- "y": 25.0
- },
- {
- "x": 360.0,
- "y": 25.0
- },
- {
- "x": 360.0,
- "y": 205.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "MUX"
- },
- "pin2": {
- "compName": "GUISplitter#2",
- "pinName": "I"
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 40.0,
- "y": 435.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUISplitter#3",
- "pinName": "I"
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "B"
- },
- "name": "unnamedWire#23",
- "path": [
- {
- "x": 25.0,
- "y": 305.0
- },
- {
- "x": 25.0,
- "y": 265.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 60.0,
- "y": 445.0
- },
- {
- "x": 60.0,
- "y": 415.0
- },
- {
- "x": 30.0,
- "y": 415.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "A"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#25",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "Q3"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I2"
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#28",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "Q4"
- },
- "name": "unnamedWire#29",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_EC"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#8",
- "pinName": "A"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 155.0,
- "y": 20.0
- },
- {
- "x": 365.0,
- "y": 20.0
- },
- {
- "x": 365.0,
- "y": 90.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#30",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1_2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "Y2"
- },
- "name": "unnamedWire#31",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#32",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I1_4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "Y4"
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "A1"
- },
- "name": "unnamedWire#34",
- "path": [
- {
- "x": 415.0,
- "y": 380.0
- },
- {
- "x": 80.0,
- "y": 380.0
- },
- {
- "x": 80.0,
- "y": 335.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#35",
- "path": [
- {
- "x": 420.0,
- "y": 385.0
- },
- {
- "x": 85.0,
- "y": 385.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "A3"
- },
- "name": "unnamedWire#36",
- "path": [
- {
- "x": 425.0,
- "y": 390.0
- },
- {
- "x": 90.0,
- "y": 390.0
- },
- {
- "x": 90.0,
- "y": 355.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#37",
- "path": [
- {
- "x": 430.0,
- "y": 395.0
- },
- {
- "x": 95.0,
- "y": 395.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUISplitter#3",
- "pinName": "O3"
- },
- "name": "unnamedWire#38",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0_4"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#39",
- "path": [
- {
- "x": 85.0,
- "y": 325.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_EZ"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "_WE1"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 55.0,
- "y": 15.0
- },
- {
- "x": 370.0,
- "y": 15.0
- },
- {
- "x": 370.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0_2"
- },
- "name": "unnamedWire#40",
- "path": [
- {
- "x": 95.0,
- "y": 305.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0_3"
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#41",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#42",
- "path": [
- {
- "x": 30.0,
- "y": 230.0
- },
- {
- "x": 50.0,
- "y": 230.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "S0"
- },
- "name": "unnamedWire#43",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#44",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#45",
- "path": [
- {
- "x": 50.0,
- "y": 105.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "I1_2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y2"
- },
- "name": "unnamedWire#46",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#47",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "I1_4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y4"
- },
- "name": "unnamedWire#48",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "I0_4"
- },
- "name": "unnamedWire#49",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "O"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "name": "unnamedWire#50",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#14",
- "pinName": ""
- },
- "name": "unnamedWire#51",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "I0_3"
- },
- "pin2": {
- "compName": "WireCrossPoint#11",
- "pinName": ""
- },
- "name": "unnamedWire#52",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "I0_2"
- },
- "name": "unnamedWire#53",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "I0_1"
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#54",
- "path": [
- {
- "x": 90.0,
- "y": 75.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "A4"
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#55",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#3",
- "pinName": "A2"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#56",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#57",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#58",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#12",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#59",
- "path": [
- {
- "x": 20.0,
- "y": 245.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I0_2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y"
- },
- "name": "unnamedWire#60",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I0_3"
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#61",
- "path": [
- {
- "x": 75.0,
- "y": 265.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#3",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I0_4"
- },
- "name": "unnamedWire#62",
- "path": [
- {
- "x": 80.0,
- "y": 325.0
- },
- {
- "x": 80.0,
- "y": 275.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#63",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I1_2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y2"
- },
- "name": "unnamedWire#64",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#65",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "I1_4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y4"
- },
- "name": "unnamedWire#66",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "name": "unnamedWire#67",
- "path": [
- {
- "x": 195.0,
- "y": 435.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "S0"
- },
- "name": "unnamedWire#68",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#13",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "S0"
- },
- "name": "unnamedWire#69",
- "path": [
- {
- "x": 105.0,
- "y": 235.0
- },
- {
- "x": 105.0,
- "y": 65.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I0"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "D4"
- },
- "name": "unnamedWire#70",
- "path": [
- {
- "x": 295.0,
- "y": 215.0
- },
- {
- "x": 295.0,
- "y": 255.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "D3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y3"
- },
- "name": "unnamedWire#71",
- "path": [
- {
- "x": 300.0,
- "y": 245.0
- },
- {
- "x": 300.0,
- "y": 205.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#8",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "_WE2"
- },
- "name": "unnamedWire#72",
- "path": [
- {
- "x": 420.0,
- "y": 90.0
- },
- {
- "x": 420.0,
- "y": 110.0
- },
- {
- "x": 365.0,
- "y": 110.0
- },
- {
- "x": 365.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y1"
- },
- "name": "unnamedWire#73",
- "path": [
- {
- "x": 310.0,
- "y": 225.0
- },
- {
- "x": 310.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "I1_4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "Y4"
- },
- "name": "unnamedWire#74",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#75",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "I1_2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "Y2"
- },
- "name": "unnamedWire#76",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#5",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#77",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "I0_4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "Y4"
- },
- "name": "unnamedWire#78",
- "path": [
- {
- "x": 200.0,
- "y": 225.0
- },
- {
- "x": 200.0,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "Y3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "I0_3"
- },
- "name": "unnamedWire#79",
- "path": [
- {
- "x": 205.0,
- "y": 85.0
- },
- {
- "x": 205.0,
- "y": 215.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "I0_2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "Y2"
- },
- "name": "unnamedWire#80",
- "path": [
- {
- "x": 210.0,
- "y": 205.0
- },
- {
- "x": 210.0,
- "y": 75.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#4",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#81",
- "path": [
- {
- "x": 215.0,
- "y": 65.0
- },
- {
- "x": 215.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "S0"
- },
- "name": "unnamedWire#82",
- "path": [
- {
- "x": 245.0,
- "y": 425.0
- },
- {
- "x": 245.0,
- "y": 185.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "name": "unnamedWire#83",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "COVD_EN"
- },
- "name": "unnamedWire#84",
- "path": [
- {
- "x": 275.0,
- "y": 295.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "S0"
- },
- "name": "unnamedWire#85",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "COVD_V"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I1"
- },
- "name": "unnamedWire#86",
- "path": [
- {
- "x": 375.0,
- "y": 325.0
- },
- {
- "x": 320.0,
- "y": 325.0
- },
- {
- "x": 320.0,
- "y": 315.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#6",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "I0"
- },
- "name": "unnamedWire#87",
- "path": [
- {
- "x": 305.0,
- "y": 195.0
- },
- {
- "x": 305.0,
- "y": 305.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#7",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "D2"
- },
- "name": "unnamedWire#88",
- "path": [
- {
- "x": 365.0,
- "y": 295.0
- },
- {
- "x": 365.0,
- "y": 235.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#8",
- "pinName": "B"
- },
- "name": "unnamedWire#89",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#9",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#15",
- "pinName": ""
- },
- "name": "unnamedWire#90",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#91",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "pin2": {
- "compName": "WireCrossPoint#16",
- "pinName": ""
- },
- "name": "unnamedWire#92",
- "path": [
- {
- "x": 320.0,
- "y": 95.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#93",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "MSR",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {
- "q": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff4_finewe#0",
- "subStateID": "q"
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 60.0,
- "height": 90.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 50.0
- },
- "name": "I",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 60.0,
- "y": 10.0
- },
- "name": "Y000",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 60.0,
- "y": 20.0
- },
- "name": "Y001",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 60.0,
- "y": 30.0
- },
- "name": "Y010",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 60.0,
- "y": 40.0
- },
- "name": "Y011",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 60.0,
- "y": 50.0
- },
- "name": "Y100",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 60.0,
- "y": 60.0
- },
- "name": "Y101",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 60.0,
- "y": 70.0
- },
- "name": "Y110",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 60.0,
- "y": 80.0
- },
- "name": "Y111",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.4,
- "submodel": {
- "components": [
- {
- "id": "GUIxor",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 40.0,
- "y": 20.0
- }
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 85.0,
- "y": 20.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 45.0,
- "y": 50.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 120.0,
- "y": 15.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#3",
- "pos": {
- "x": 45.0,
- "y": 105.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#4",
- "pos": {
- "x": 80.0,
- "y": 115.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#5",
- "pos": {
- "x": 80.0,
- "y": 165.0
- },
- "params": 1
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#0",
- "pos": {
- "x": 5.0,
- "y": 110.0
- },
- "params": 4
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 29.0,
- "y": 129.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 34.0,
- "y": 99.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#10",
- "pos": {
- "x": 39.0,
- "y": 109.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 79.0,
- "y": 34.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 79.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 19.0,
- "y": 74.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 24.0,
- "y": 119.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 39.0,
- "y": 64.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 74.0,
- "y": 59.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 74.0,
- "y": 119.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 24.0,
- "y": 149.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "I"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O2"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 110.0,
- "y": 20.0
- },
- {
- "x": 110.0,
- "y": 30.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 20.0,
- "y": 65.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 40.0,
- "y": 55.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 115.0,
- "y": 60.0
- },
- {
- "x": 115.0,
- "y": 30.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y001"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 80.0,
- "y": 50.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y000"
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#17",
- "path": [
- {
- "x": 25.0,
- "y": 110.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y011"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#21",
- "path": [
- {
- "x": 35.0,
- "y": 140.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y010"
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#4",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y100"
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "B"
- },
- "name": "unnamedWire#24",
- "path": [
- {
- "x": 70.0,
- "y": 115.0
- },
- {
- "x": 70.0,
- "y": 130.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#25",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#4",
- "pinName": "A"
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#3",
- "pinName": "A"
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Y101"
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#28",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Y110"
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "Y"
- },
- "name": "unnamedWire#29",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "A"
- },
- "name": "unnamedWire#3",
- "path": [
- {
- "x": 30.0,
- "y": 25.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#5",
- "pinName": "A"
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 75.0,
- "y": 170.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#3",
- "pinName": "B"
- },
- "pin2": {
- "compName": "WireCrossPoint#10",
- "pinName": ""
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 40.0,
- "y": 120.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#5",
- "pinName": "B"
- },
- "name": "unnamedWire#32",
- "path": [
- {
- "x": 25.0,
- "y": 180.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Y111"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#33",
- "path": [
- {
- "x": 30.0,
- "y": 200.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O3"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#34",
- "path": [
- {
- "x": 20.0,
- "y": 110.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "B"
- },
- "name": "unnamedWire#4",
- "path": [
- {
- "x": 35.0,
- "y": 35.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "Test\nlogic",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {}
- },
- "version": "0.1.5"
-}
\ No newline at end of file
+++ /dev/null
-{
- "width": 45.0,
- "height": 46.0,
- "interfacePins": [
- {
- "location": {
- "x": 14.0,
- "y": 46.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 27.5,
- "y": 46.0
- },
- "name": "CINV",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 31.0
- },
- "name": "I",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 13.5
- },
- "name": "M",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 4.0,
- "y": 46.0
- },
- "name": "MUX",
- "logicWidth": 2,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 37.5,
- "y": 46.0
- },
- "name": "OVRRET",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 45.0,
- "y": 19.0
- },
- "name": "Q",
- "logicWidth": 4,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 15.5,
- "y": 0.0
- },
- "name": "_EC",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 25.5,
- "y": 0.0
- },
- "name": "_EN",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 35.5,
- "y": 0.0
- },
- "name": "_EOVR",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 5.5,
- "y": 0.0
- },
- "name": "_EZ",
- "logicWidth": 1,
- "usage": "INPUT"
- }
- ],
- "innerScale": 0.1,
- "submodel": {
- "components": [
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 45.0,
- "y": 240.0
- }
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#1",
- "pos": {
- "x": 100.0,
- "y": 190.0
- }
- },
- {
- "id": "GUIxor",
- "name": "DeserializedSubmodelComponent#2",
- "pos": {
- "x": 215.0,
- "y": 200.0
- }
- },
- {
- "id": "GUIMerger",
- "name": "GUIMerger#0",
- "pos": {
- "x": 435.0,
- "y": 175.0
- },
- "params": 4
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 245.0,
- "y": 245.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 215.0,
- "y": 255.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#2",
- "pos": {
- "x": 215.0,
- "y": 235.0
- },
- "params": 1
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#0",
- "pos": {
- "x": 5.0,
- "y": 120.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#1",
- "pos": {
- "x": 5.0,
- "y": 295.0
- },
- "params": 4
- },
- {
- "id": "GUISplitter",
- "name": "GUISplitter#2",
- "pos": {
- "x": 45.0,
- "y": 430.0
- },
- "params": 2
- },
- {
- "id": "GUIdff4_finewe",
- "name": "GUIdff4_finewe#0",
- "pos": {
- "x": 375.0,
- "y": 170.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 89.0,
- "y": 234.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 89.0,
- "y": 224.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 89.0,
- "y": 214.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 429.0,
- "y": 204.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 209.0,
- "y": 244.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "Q1"
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I3"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I2"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "Q2"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_4"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "O0"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I0"
- },
- "name": "unnamedWire#11",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_4"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 20.0,
- "y": 150.0
- },
- {
- "x": 20.0,
- "y": 285.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_3"
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 25.0,
- "y": 140.0
- },
- {
- "x": 25.0,
- "y": 275.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_2"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 30.0,
- "y": 130.0
- },
- {
- "x": 30.0,
- "y": 265.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "MUX"
- },
- "pin2": {
- "compName": "GUISplitter#2",
- "pinName": "I"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 40.0,
- "y": 435.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "O0"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 90.0,
- "y": 440.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y4"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I1_4"
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I1_3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y3"
- },
- "name": "unnamedWire#18",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I1_2"
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "Q3"
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "Y1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I0_1"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#21",
- "path": [
- {
- "x": 90.0,
- "y": 205.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I0_2"
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I0_3"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#25",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "I0_4"
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#27",
- "path": [
- {
- "x": 40.0,
- "y": 235.0
- },
- {
- "x": 40.0,
- "y": 245.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#2",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "S0"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 85.0,
- "y": 430.0
- },
- {
- "x": 85.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "Q4"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#30",
- "path": [
- {
- "x": 240.0,
- "y": 245.0
- },
- {
- "x": 240.0,
- "y": 250.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 240.0,
- "y": 260.0
- },
- {
- "x": 240.0,
- "y": 265.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "OVRRET"
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#32",
- "path": [
- {
- "x": 375.0,
- "y": 360.0
- },
- {
- "x": 205.0,
- "y": 360.0
- },
- {
- "x": 205.0,
- "y": 260.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#33",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#34",
- "path": [
- {
- "x": 430.0,
- "y": 280.0
- },
- {
- "x": 210.0,
- "y": 280.0
- },
- {
- "x": 210.0,
- "y": 270.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "A"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "CINV"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "B"
- },
- "name": "unnamedWire#36",
- "path": [
- {
- "x": 275.0,
- "y": 390.0
- },
- {
- "x": 190.0,
- "y": 390.0
- },
- {
- "x": 190.0,
- "y": 215.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "_WE1"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_EZ"
- },
- "name": "unnamedWire#37",
- "path": [
- {
- "x": 370.0,
- "y": 185.0
- },
- {
- "x": 370.0,
- "y": 5.0
- },
- {
- "x": 55.0,
- "y": 5.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "C"
- },
- "name": "unnamedWire#38",
- "path": [
- {
- "x": 140.0,
- "y": 325.0
- },
- {
- "x": 345.0,
- "y": 325.0
- },
- {
- "x": 345.0,
- "y": 175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_EOVR"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "_WE4"
- },
- "name": "unnamedWire#39",
- "path": [
- {
- "x": 355.0,
- "y": 215.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "O"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "_WE3"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_EN"
- },
- "name": "unnamedWire#40",
- "path": [
- {
- "x": 360.0,
- "y": 205.0
- },
- {
- "x": 360.0,
- "y": 15.0
- },
- {
- "x": 255.0,
- "y": 15.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_EC"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "_WE2"
- },
- "name": "unnamedWire#41",
- "path": [
- {
- "x": 155.0,
- "y": 10.0
- },
- {
- "x": 365.0,
- "y": 10.0
- },
- {
- "x": 365.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y1"
- },
- "name": "unnamedWire#42",
- "path": [
- {
- "x": 315.0,
- "y": 225.0
- },
- {
- "x": 315.0,
- "y": 195.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#2",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "D2"
- },
- "name": "unnamedWire#43",
- "path": [
- {
- "x": 310.0,
- "y": 205.0
- },
- {
- "x": 310.0,
- "y": 235.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "D3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y3"
- },
- "name": "unnamedWire#44",
- "path": [
- {
- "x": 305.0,
- "y": 245.0
- },
- {
- "x": 305.0,
- "y": 225.0
- },
- {
- "x": 170.0,
- "y": 225.0
- },
- {
- "x": 170.0,
- "y": 215.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#1",
- "pinName": "Y4"
- },
- "name": "unnamedWire#45",
- "path": [
- {
- "x": 160.0,
- "y": 245.0
- },
- {
- "x": 160.0,
- "y": 225.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "D4"
- },
- "name": "unnamedWire#46",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "A"
- },
- "name": "unnamedWire#47",
- "path": [
- {
- "x": 210.0,
- "y": 240.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#2",
- "pinName": "B"
- },
- "name": "unnamedWire#48",
- "path": [
- {
- "x": 210.0,
- "y": 250.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I0_1"
- },
- "name": "unnamedWire#49",
- "path": [
- {
- "x": 35.0,
- "y": 120.0
- },
- {
- "x": 35.0,
- "y": 255.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "M"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "I"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "I"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "O3"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_2"
- },
- "pin2": {
- "compName": "GUISplitter#1",
- "pinName": "O2"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUISplitter#1",
- "pinName": "O1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_3"
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "muSR",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {
- "q": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff4_finewe#0",
- "subStateID": "q"
- }
- }
- }
- },
- "version": "0.1.5"
-}
\ No newline at end of file
--- /dev/null
+{
+ "width": 72.0,
+ "height": 67.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 60.0,
+ "y": 0.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 72.0,
+ "y": 40.0
+ },
+ "name": "CI",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 36.0,
+ "y": 0.0
+ },
+ "name": "D",
+ "logicWidth": 12,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 38.0,
+ "y": 67.0
+ },
+ "name": "Y",
+ "logicWidth": 12,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 38.0
+ },
+ "name": "_CC",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 44.0
+ },
+ "name": "_CCEN",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 72.0,
+ "y": 14.0
+ },
+ "name": "_FULL",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 19.0,
+ "y": 67.0
+ },
+ "name": "_MAP",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 49.0,
+ "y": 67.0
+ },
+ "name": "_OE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 13.0,
+ "y": 67.0
+ },
+ "name": "_PL",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 6.0
+ },
+ "name": "_RLD",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 25.0,
+ "y": 67.0
+ },
+ "name": "_VECT",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "Am2910InstrPLA",
+ "name": "Am2910InstrPLA#0",
+ "pos": {
+ "x": 80.0,
+ "y": 155.0
+ }
+ },
+ {
+ "id": "Am2910RegCntr",
+ "name": "Am2910RegCntr#0",
+ "pos": {
+ "x": 160.0,
+ "y": 25.0
+ }
+ },
+ {
+ "id": "Am2910SP",
+ "name": "Am2910SP#0",
+ "pos": {
+ "x": 305.0,
+ "y": 55.0
+ }
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#0",
+ "pos": {
+ "x": 160.0,
+ "y": 95.0
+ },
+ "params": 12
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#1",
+ "pos": {
+ "x": 260.0,
+ "y": 115.0
+ },
+ "params": 12
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#2",
+ "pos": {
+ "x": 345.0,
+ "y": 180.0
+ },
+ "params": 12
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#3",
+ "pos": {
+ "x": 265.0,
+ "y": 150.0
+ },
+ "params": 12
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#4",
+ "pos": {
+ "x": 260.0,
+ "y": 85.0
+ },
+ "params": 3
+ },
+ {
+ "id": "BitDisplay",
+ "name": "BitDisplay#5",
+ "pos": {
+ "x": 260.0,
+ "y": 70.0
+ },
+ "params": 3
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 40.0,
+ "y": 185.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 10.0,
+ "y": 210.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 250.0,
+ "y": 305.0
+ },
+ "params": 1
+ },
+ {
+ "id": "TriStateBuffer",
+ "name": "TriStateBuffer#0",
+ "pos": {
+ "x": 180.0,
+ "y": 290.0
+ },
+ "params": {
+ "logicWidth": 12,
+ "orientation": "DOWN"
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 324.0,
+ "y": 149.0
+ },
+ "params": 12
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 294.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 244.0,
+ "y": 319.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 189.0,
+ "y": 274.0
+ },
+ "params": 12
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 179.0,
+ "y": 89.0
+ },
+ "params": 12
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 179.0,
+ "y": 14.0
+ },
+ "params": 12
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 4.0,
+ "y": 219.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 299.0,
+ "y": 79.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 299.0,
+ "y": 44.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 299.0,
+ "y": 169.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 299.0,
+ "y": 114.0
+ },
+ "params": 1
+ },
+ {
+ "id": "dff12",
+ "name": "dff12#0",
+ "pos": {
+ "x": 305.0,
+ "y": 160.0
+ }
+ },
+ {
+ "id": "inc12",
+ "name": "inc12#0",
+ "pos": {
+ "x": 305.0,
+ "y": 190.0
+ }
+ },
+ {
+ "id": "nor12",
+ "name": "nor12#0",
+ "pos": {
+ "x": 190.0,
+ "y": 80.0
+ }
+ },
+ {
+ "id": "ram5_12",
+ "name": "ram5_12#0",
+ "pos": {
+ "x": 305.0,
+ "y": 100.0
+ }
+ },
+ {
+ "id": "sel4_12",
+ "name": "sel4_12#0",
+ "pos": {
+ "x": 150.0,
+ "y": 175.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "YD"
+ },
+ "pin2": {
+ "compName": "sel4_12#0",
+ "pinName": "SA"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "YR"
+ },
+ "pin2": {
+ "compName": "sel4_12#0",
+ "pinName": "SB"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "nor12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "R\u003d0"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 90.0
+ },
+ {
+ "x": 230.0,
+ "y": 120.0
+ },
+ {
+ "x": 95.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "RWE"
+ },
+ "pin2": {
+ "compName": "Am2910RegCntr#0",
+ "pinName": "WE"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 160.0
+ },
+ {
+ "x": 115.0,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "RDEC"
+ },
+ "pin2": {
+ "compName": "Am2910RegCntr#0",
+ "pinName": "DEC"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 170.0
+ },
+ {
+ "x": 120.0,
+ "y": 55.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "STKI0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 220.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "STKI1"
+ },
+ "pin2": {
+ "compName": "Am2910SP#0",
+ "pinName": "STKI1"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 230.0
+ },
+ {
+ "x": 290.0,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2910SP#0",
+ "pinName": "STKI0"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram5_12#0",
+ "pinName": "WE"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel4_12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "inc12#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 325.0,
+ "y": 275.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram5_12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "sel4_12#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#19",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "YF"
+ },
+ "pin2": {
+ "compName": "sel4_12#0",
+ "pinName": "SC"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel4_12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 220.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel4_12#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "nor12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2910RegCntr#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "sel4_12#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 145.0,
+ "y": 15.0
+ },
+ {
+ "x": 145.0,
+ "y": 150.0
+ },
+ {
+ "x": 160.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_RLD"
+ },
+ "pin2": {
+ "compName": "Am2910RegCntr#0",
+ "pinName": "_RLD"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "PASS"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 195.0
+ },
+ {
+ "x": 65.0,
+ "y": 160.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_CC"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "YmuPC"
+ },
+ "pin2": {
+ "compName": "sel4_12#0",
+ "pinName": "SD"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_CCEN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 225.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#33",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 220.0
+ },
+ {
+ "x": 35.0,
+ "y": 200.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2910SP#0",
+ "pinName": "_FULL"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_FULL"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff12#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2910SP#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "Am2910RegCntr#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "inc12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "dff12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "inc12#0",
+ "pinName": "CI"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "CI"
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "_PL"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_PL"
+ },
+ "name": "unnamedWire#42",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 290.0
+ },
+ {
+ "x": 65.0,
+ "y": 290.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "_MAP"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_MAP"
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "_VECT"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_VECT"
+ },
+ "name": "unnamedWire#44",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 290.0
+ },
+ {
+ "x": 125.0,
+ "y": 290.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "Am2910InstrPLA#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 250.0
+ },
+ {
+ "x": 70.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Am2910RegCntr#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "BitDisplay#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ram5_12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "BitDisplay#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "inc12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "BitDisplay#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dff12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "BitDisplay#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dff12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram5_12#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_OE"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2910SP#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "BitDisplay#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#54",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2910SP#0",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "BitDisplay#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#57",
+ "path": [
+ {
+ "x": 245.0,
+ "y": 310.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "TriStateBuffer#0",
+ "pinName": "EN"
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#58",
+ "path": [
+ {
+ "x": 275.0,
+ "y": 300.0
+ },
+ {
+ "x": 275.0,
+ "y": 315.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram5_12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2910SP#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "ram5_12#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2910SP#0",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "ram5_12#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Am2910RegCntr#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "Am2910",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {
+ "r": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "Am2910RegCntr#0"
+ }
+ },
+ "stack": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram5_12#0"
+ }
+ },
+ "mupc": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff12#0"
+ }
+ },
+ "sp": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "Am2910SP#0"
+ }
+ }
+ },
+ "atomicHighLevelStates": {}
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
+++ /dev/null
-{
- "width": 72.0,
- "height": 67.0,
- "interfacePins": [
- {
- "location": {
- "x": 60.0,
- "y": 0.0
- },
- "name": "C",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 72.0,
- "y": 40.0
- },
- "name": "CI",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 36.0,
- "y": 0.0
- },
- "name": "D",
- "logicWidth": 12,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 50.0
- },
- "name": "I",
- "logicWidth": 4,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 38.0,
- "y": 67.0
- },
- "name": "Y",
- "logicWidth": 12,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 38.0
- },
- "name": "_CC",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 44.0
- },
- "name": "_CCEN",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 72.0,
- "y": 14.0
- },
- "name": "_FULL",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 19.0,
- "y": 67.0
- },
- "name": "_MAP",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 49.0,
- "y": 67.0
- },
- "name": "_OE",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 13.0,
- "y": 67.0
- },
- "name": "_PL",
- "logicWidth": 1,
- "usage": "OUTPUT"
- },
- {
- "location": {
- "x": 0.0,
- "y": 6.0
- },
- "name": "_RLD",
- "logicWidth": 1,
- "usage": "INPUT"
- },
- {
- "location": {
- "x": 25.0,
- "y": 67.0
- },
- "name": "_VECT",
- "logicWidth": 1,
- "usage": "OUTPUT"
- }
- ],
- "innerScale": 0.2,
- "submodel": {
- "components": [
- {
- "id": "GUIAm2910InstrPLA",
- "name": "GUIAm2910InstrPLA#0",
- "pos": {
- "x": 80.0,
- "y": 155.0
- }
- },
- {
- "id": "GUIAm2910RegCntr",
- "name": "GUIAm2910RegCntr#0",
- "pos": {
- "x": 160.0,
- "y": 25.0
- }
- },
- {
- "id": "GUIAm2910SP",
- "name": "GUIAm2910SP#0",
- "pos": {
- "x": 305.0,
- "y": 55.0
- }
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#0",
- "pos": {
- "x": 160.0,
- "y": 95.0
- },
- "params": 12
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#1",
- "pos": {
- "x": 260.0,
- "y": 115.0
- },
- "params": 12
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#2",
- "pos": {
- "x": 345.0,
- "y": 180.0
- },
- "params": 12
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#3",
- "pos": {
- "x": 265.0,
- "y": 150.0
- },
- "params": 12
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#4",
- "pos": {
- "x": 260.0,
- "y": 85.0
- },
- "params": 3
- },
- {
- "id": "GUIBitDisplay",
- "name": "GUIBitDisplay#5",
- "pos": {
- "x": 260.0,
- "y": 70.0
- },
- "params": 3
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#0",
- "pos": {
- "x": 40.0,
- "y": 185.0
- },
- "params": 1
- },
- {
- "id": "GUINandGate",
- "name": "GUINandGate#1",
- "pos": {
- "x": 10.0,
- "y": 210.0
- },
- "params": 1
- },
- {
- "id": "GUITriStateBuffer",
- "name": "GUITriStateBuffer#0",
- "pos": {
- "x": 180.0,
- "y": 290.0
- },
- "params": {
- "logicWidth": 12,
- "orientation": "DOWN"
- }
- },
- {
- "id": "GUIdff12",
- "name": "GUIdff12#0",
- "pos": {
- "x": 305.0,
- "y": 160.0
- }
- },
- {
- "id": "GUIinc12",
- "name": "GUIinc12#0",
- "pos": {
- "x": 305.0,
- "y": 190.0
- }
- },
- {
- "id": "GUInor12",
- "name": "GUInor12#0",
- "pos": {
- "x": 190.0,
- "y": 80.0
- }
- },
- {
- "id": "GUIram5_12",
- "name": "GUIram5_12#0",
- "pos": {
- "x": 305.0,
- "y": 100.0
- }
- },
- {
- "id": "GUIsel4_12",
- "name": "GUIsel4_12#0",
- "pos": {
- "x": 150.0,
- "y": 175.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 324.0,
- "y": 149.0
- },
- "params": 12
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 294.0,
- "y": 104.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 189.0,
- "y": 274.0
- },
- "params": 12
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 179.0,
- "y": 89.0
- },
- "params": 12
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 179.0,
- "y": 14.0
- },
- "params": 12
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 4.0,
- "y": 219.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 299.0,
- "y": 79.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#7",
- "pos": {
- "x": 299.0,
- "y": 44.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#8",
- "pos": {
- "x": 299.0,
- "y": 169.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#9",
- "pos": {
- "x": 299.0,
- "y": 114.0
- },
- "params": 1
- }
- ],
- "wires": [
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "YD"
- },
- "pin2": {
- "compName": "GUIsel4_12#0",
- "pinName": "SA"
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "YR"
- },
- "pin2": {
- "compName": "GUIsel4_12#0",
- "pinName": "SB"
- },
- "name": "unnamedWire#1",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUInor12#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "R\u003d0"
- },
- "name": "unnamedWire#10",
- "path": [
- {
- "x": 230.0,
- "y": 90.0
- },
- {
- "x": 230.0,
- "y": 120.0
- },
- {
- "x": 95.0,
- "y": 120.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "RWE"
- },
- "pin2": {
- "compName": "GUIAm2910RegCntr#0",
- "pinName": "WE"
- },
- "name": "unnamedWire#11",
- "path": [
- {
- "x": 115.0,
- "y": 160.0
- },
- {
- "x": 115.0,
- "y": 45.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "RDEC"
- },
- "pin2": {
- "compName": "GUIAm2910RegCntr#0",
- "pinName": "DEC"
- },
- "name": "unnamedWire#12",
- "path": [
- {
- "x": 120.0,
- "y": 170.0
- },
- {
- "x": 120.0,
- "y": 55.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "STKI0"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#13",
- "path": [
- {
- "x": 295.0,
- "y": 220.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "STKI1"
- },
- "pin2": {
- "compName": "GUIAm2910SP#0",
- "pinName": "STKI1"
- },
- "name": "unnamedWire#14",
- "path": [
- {
- "x": 290.0,
- "y": 230.0
- },
- {
- "x": 290.0,
- "y": 70.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2910SP#0",
- "pinName": "STKI0"
- },
- "name": "unnamedWire#15",
- "path": [
- {
- "x": 295.0,
- "y": 60.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram5_12#0",
- "pinName": "WE"
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIsel4_12#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#17",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIinc12#0",
- "pinName": "A"
- },
- "name": "unnamedWire#18",
- "path": [
- {
- "x": 325.0,
- "y": 275.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIram5_12#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIsel4_12#0",
- "pinName": "C"
- },
- "name": "unnamedWire#19",
- "path": [
- {
- "x": 200.0,
- "y": 130.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "YF"
- },
- "pin2": {
- "compName": "GUIsel4_12#0",
- "pinName": "SC"
- },
- "name": "unnamedWire#2",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel4_12#0",
- "pinName": "D"
- },
- "name": "unnamedWire#20",
- "path": [
- {
- "x": 220.0,
- "y": 150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel4_12#0",
- "pinName": "B"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUInor12#0",
- "pinName": "D"
- },
- "name": "unnamedWire#22",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#23",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2910RegCntr#0",
- "pinName": "D"
- },
- "name": "unnamedWire#24",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIsel4_12#0",
- "pinName": "A"
- },
- "name": "unnamedWire#25",
- "path": [
- {
- "x": 145.0,
- "y": 15.0
- },
- {
- "x": 145.0,
- "y": 150.0
- },
- {
- "x": 160.0,
- "y": 150.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_RLD"
- },
- "pin2": {
- "compName": "GUIAm2910RegCntr#0",
- "pinName": "_RLD"
- },
- "name": "unnamedWire#26",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "IN"
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUINandGate#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "PASS"
- },
- "name": "unnamedWire#28",
- "path": [
- {
- "x": 65.0,
- "y": 195.0
- },
- {
- "x": 65.0,
- "y": 160.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_CC"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "A"
- },
- "name": "unnamedWire#29",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "YmuPC"
- },
- "pin2": {
- "compName": "GUIsel4_12#0",
- "pinName": "SD"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "_CCEN"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#30",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "A"
- },
- "name": "unnamedWire#31",
- "path": [
- {
- "x": 5.0,
- "y": 215.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUINandGate#1",
- "pinName": "B"
- },
- "name": "unnamedWire#32",
- "path": [
- {
- "x": 5.0,
- "y": 225.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUINandGate#1",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUINandGate#0",
- "pinName": "B"
- },
- "name": "unnamedWire#33",
- "path": [
- {
- "x": 35.0,
- "y": 220.0
- },
- {
- "x": 35.0,
- "y": 200.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2910SP#0",
- "pinName": "_FULL"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_FULL"
- },
- "name": "unnamedWire#34",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff12#0",
- "pinName": "C"
- },
- "name": "unnamedWire#35",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "name": "unnamedWire#36",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2910SP#0",
- "pinName": "C"
- },
- "name": "unnamedWire#37",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#38",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIAm2910RegCntr#0",
- "pinName": "C"
- },
- "name": "unnamedWire#39",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIinc12#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIdff12#0",
- "pinName": "D"
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "WireCrossPoint#7",
- "pinName": ""
- },
- "name": "unnamedWire#40",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIinc12#0",
- "pinName": "CI"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "CI"
- },
- "name": "unnamedWire#41",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "_PL"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_PL"
- },
- "name": "unnamedWire#42",
- "path": [
- {
- "x": 85.0,
- "y": 290.0
- },
- {
- "x": 65.0,
- "y": 290.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "_MAP"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_MAP"
- },
- "name": "unnamedWire#43",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "_VECT"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_VECT"
- },
- "name": "unnamedWire#44",
- "path": [
- {
- "x": 105.0,
- "y": 290.0
- },
- {
- "x": 125.0,
- "y": 290.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUIAm2910InstrPLA#0",
- "pinName": "I"
- },
- "name": "unnamedWire#45",
- "path": [
- {
- "x": 70.0,
- "y": 250.0
- },
- {
- "x": 70.0,
- "y": 175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2910RegCntr#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIBitDisplay#0",
- "pinName": ""
- },
- "name": "unnamedWire#46",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIram5_12#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIBitDisplay#1",
- "pinName": ""
- },
- "name": "unnamedWire#47",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIinc12#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIBitDisplay#2",
- "pinName": ""
- },
- "name": "unnamedWire#48",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff12#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "GUIBitDisplay#3",
- "pinName": ""
- },
- "name": "unnamedWire#49",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff12#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram5_12#0",
- "pinName": "C"
- },
- "name": "unnamedWire#50",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#9",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#8",
- "pinName": ""
- },
- "name": "unnamedWire#51",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "OUT"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Y"
- },
- "name": "unnamedWire#52",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUITriStateBuffer#0",
- "pinName": "EN"
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "_OE"
- },
- "name": "unnamedWire#53",
- "path": [
- {
- "x": 245.0,
- "y": 300.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "GUIAm2910SP#0",
- "pinName": "A"
- },
- "pin2": {
- "compName": "GUIBitDisplay#5",
- "pinName": ""
- },
- "name": "unnamedWire#54",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2910SP#0",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUIBitDisplay#4",
- "pinName": ""
- },
- "name": "unnamedWire#55",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIram5_12#0",
- "pinName": "D"
- },
- "name": "unnamedWire#6",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2910SP#0",
- "pinName": "A"
- },
- "pin2": {
- "compName": "GUIram5_12#0",
- "pinName": "A"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2910SP#0",
- "pinName": "B"
- },
- "pin2": {
- "compName": "GUIram5_12#0",
- "pinName": "B"
- },
- "name": "unnamedWire#8",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIAm2910RegCntr#0",
- "pinName": "Y"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#9",
- "path": []
- }
- ],
- "version": "0.1.1"
- },
- "symbolRendererSnippetID": "simpleRectangularLike",
- "symbolRendererParams": {
- "centerText": "Am2910",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "default",
- "highLevelStateHandlerSnippetID": "standard",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {
- "r": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIAm2910RegCntr#0"
- }
- },
- "stack": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIram5_12#0"
- }
- },
- "mupc": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIdff12#0"
- }
- },
- "sp": {
- "id": "delegating",
- "params": {
- "delegateTarget": "GUIAm2910SP#0"
- }
- }
- },
- "atomicHighLevelStates": {}
- },
- "version": "0.1.5"
-}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 20.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "B",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 20.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 50.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 44.0,
+ "y": 24.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#0"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#1"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#5"
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "and",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 50.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "A4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "B",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Y2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Y3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Y4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 24.0,
+ "y": 46.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 24.0,
+ "y": 71.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 24.0,
+ "y": 96.5
+ },
+ "params": 1
+ },
+ {
+ "id": "and",
+ "name": "and#0",
+ "pos": {
+ "x": 30.0,
+ "y": 7.5
+ }
+ },
+ {
+ "id": "and",
+ "name": "and#1",
+ "pos": {
+ "x": 30.0,
+ "y": 32.5
+ }
+ },
+ {
+ "id": "and",
+ "name": "and#2",
+ "pos": {
+ "x": 30.0,
+ "y": 57.5
+ }
+ },
+ {
+ "id": "and",
+ "name": "and#3",
+ "pos": {
+ "x": 30.0,
+ "y": 82.5
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "and#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 22.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "and#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "and#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "and#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "and#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "and#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 112.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "and41",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 90.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "A4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "B",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "C2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "C3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "C4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Y2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Y3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Y4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "and41",
+ "name": "and41#0",
+ "pos": {
+ "x": 15.0,
+ "y": 137.5
+ }
+ },
+ {
+ "id": "or_4",
+ "name": "or_4#0",
+ "pos": {
+ "x": 35.0,
+ "y": 37.5
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 112.5
+ },
+ {
+ "x": 10.0,
+ "y": 142.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 137.5
+ },
+ {
+ "x": 5.0,
+ "y": 152.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "or_4#0",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 152.5
+ },
+ {
+ "x": 65.0,
+ "y": 125.0
+ },
+ {
+ "x": 25.0,
+ "y": 125.0
+ },
+ {
+ "x": 25.0,
+ "y": 92.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "or_4#0",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 162.5
+ },
+ {
+ "x": 60.0,
+ "y": 130.0
+ },
+ {
+ "x": 20.0,
+ "y": 130.0
+ },
+ {
+ "x": 20.0,
+ "y": 102.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "or_4#0",
+ "pinName": "B4"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 172.5
+ },
+ {
+ "x": 55.0,
+ "y": 135.0
+ },
+ {
+ "x": 15.0,
+ "y": 135.0
+ },
+ {
+ "x": 15.0,
+ "y": 112.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "or_4#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 42.5
+ },
+ {
+ "x": 75.0,
+ "y": 12.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "or_4#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 52.5
+ },
+ {
+ "x": 80.0,
+ "y": 37.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "or_4#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "or_4#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 72.5
+ },
+ {
+ "x": 80.0,
+ "y": 87.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 187.5
+ },
+ {
+ "x": 5.0,
+ "y": 172.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 212.5
+ },
+ {
+ "x": 10.0,
+ "y": 182.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C1"
+ },
+ "pin2": {
+ "compName": "or_4#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 12.5
+ },
+ {
+ "x": 10.0,
+ "y": 42.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C2"
+ },
+ "pin2": {
+ "compName": "or_4#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 37.5
+ },
+ {
+ "x": 5.0,
+ "y": 52.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C3"
+ },
+ "pin2": {
+ "compName": "or_4#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C4"
+ },
+ "pin2": {
+ "compName": "or_4#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 87.5
+ },
+ {
+ "x": 5.0,
+ "y": 72.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "or_4#0",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 142.5
+ },
+ {
+ "x": 70.0,
+ "y": 120.0
+ },
+ {
+ "x": 30.0,
+ "y": 120.0
+ },
+ {
+ "x": 30.0,
+ "y": 82.5
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "andor414",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 40.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "S0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "S1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y00",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Y01",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Y10",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Y11",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 10.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 10.0,
+ "y": 27.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 6.5,
+ "y": 11.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 6.5,
+ "y": 16.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 36.5,
+ "y": 61.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 4.0,
+ "y": 36.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 4.0,
+ "y": 41.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 31.5,
+ "y": 66.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 31.5,
+ "y": 11.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 34.0,
+ "y": 36.5
+ },
+ "params": 1
+ },
+ {
+ "id": "and",
+ "name": "and#0",
+ "pos": {
+ "x": 40.0,
+ "y": 2.5
+ }
+ },
+ {
+ "id": "and",
+ "name": "and#1",
+ "pos": {
+ "x": 40.0,
+ "y": 27.5
+ }
+ },
+ {
+ "id": "and",
+ "name": "and#2",
+ "pos": {
+ "x": 40.0,
+ "y": 52.5
+ }
+ },
+ {
+ "id": "and",
+ "name": "and#3",
+ "pos": {
+ "x": 40.0,
+ "y": 77.5
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 32.5,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 37.5,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 42.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 32.5,
+ "y": 57.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 37.5,
+ "y": 82.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#19",
+ "path": [
+ {
+ "x": 32.5,
+ "y": 92.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y00"
+ },
+ "name": "unnamedWire#20"
+ },
+ {
+ "pin1": {
+ "compName": "and#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y01"
+ },
+ "name": "unnamedWire#21"
+ },
+ {
+ "pin1": {
+ "compName": "and#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y10"
+ },
+ "name": "unnamedWire#22"
+ },
+ {
+ "pin1": {
+ "compName": "and#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y11"
+ },
+ "name": "unnamedWire#23"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 62.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 67.5
+ },
+ {
+ "x": 32.5,
+ "y": 67.5
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "demux2",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 20.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "D",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Q",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "_Q",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 120.0,
+ "y": 60.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 9.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 19.0,
+ "y": 64.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 99.0,
+ "y": 34.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 99.0,
+ "y": 44.0
+ },
+ "params": 1
+ },
+ {
+ "id": "_rsLatch",
+ "name": "_rsLatch#0",
+ "pos": {
+ "x": 40.0,
+ "y": 10.0
+ }
+ },
+ {
+ "id": "_rsLatch",
+ "name": "_rsLatch#1",
+ "pos": {
+ "x": 120.0,
+ "y": 30.0
+ }
+ },
+ {
+ "id": "nand3",
+ "name": "nand3#0",
+ "pos": {
+ "x": 40.0,
+ "y": 40.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_rsLatch#0",
+ "pinName": "_R"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "nand3#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_rsLatch#1",
+ "pinName": "_R"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_rsLatch#1",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#13"
+ },
+ {
+ "pin1": {
+ "compName": "_rsLatch#1",
+ "pinName": "_Q"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_Q"
+ },
+ "name": "unnamedWire#14"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "nand3#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 55.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 145.0,
+ "y": 70.0
+ },
+ {
+ "x": 145.0,
+ "y": 85.0
+ },
+ {
+ "x": 20.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_rsLatch#0",
+ "pinName": "_S"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 15.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "nand3#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_rsLatch#0",
+ "pinName": "_Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "nand3#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 35.0
+ },
+ {
+ "x": 30.0,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_rsLatch#1",
+ "pinName": "_S"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "dff",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "_rsLatch#1",
+ "subStateID": "q"
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 55.0,
+ "height": 40.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "D",
+ "logicWidth": 12,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 55.0,
+ "y": 20.0
+ },
+ "name": "Q",
+ "logicWidth": 12,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "WE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#10",
+ "pos": {
+ "x": 175.0,
+ "y": 170.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#11",
+ "pos": {
+ "x": 130.0,
+ "y": 160.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#12",
+ "pos": {
+ "x": 130.0,
+ "y": 130.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#13",
+ "pos": {
+ "x": 175.0,
+ "y": 80.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#14",
+ "pos": {
+ "x": 175.0,
+ "y": 110.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#15",
+ "pos": {
+ "x": 130.0,
+ "y": 100.0
+ }
+ },
+ {
+ "id": "mux1_12",
+ "name": "DeserializedSubmodelComponent#17",
+ "pos": {
+ "x": 15.0,
+ "y": 90.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 175.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 175.0,
+ "y": 50.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 130.0,
+ "y": 10.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 130.0,
+ "y": 40.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 130.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#9",
+ "pos": {
+ "x": 175.0,
+ "y": 140.0
+ }
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 250.0,
+ "y": 45.0
+ },
+ "params": 12
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 70.0,
+ "y": 65.0
+ },
+ "params": 12
+ },
+ {
+ "id": "TextComponent",
+ "name": "TextComponent#0",
+ "pos": {
+ "x": -35.0,
+ "y": -5.0
+ },
+ "params": "a"
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 169.0,
+ "y": 54.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 169.0,
+ "y": 144.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 169.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 169.0,
+ "y": 84.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 169.0,
+ "y": 114.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 124.0,
+ "y": 14.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 124.0,
+ "y": 44.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 124.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 124.0,
+ "y": 134.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 124.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 264.0,
+ "y": 99.0
+ },
+ "params": 12
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 5.0
+ },
+ {
+ "x": 170.0,
+ "y": 5.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 15.0
+ },
+ {
+ "x": 55.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O5"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 115.0
+ },
+ {
+ "x": 115.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 135.0
+ },
+ {
+ "x": 120.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 175.0
+ },
+ {
+ "x": 90.0,
+ "y": 165.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 175.0
+ },
+ {
+ "x": 85.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "WE"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#17",
+ "pinName": "S"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 100.0
+ },
+ {
+ "x": 10.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#17",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 175.0
+ },
+ {
+ "x": 5.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#17",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#17",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 110.0
+ },
+ {
+ "x": 10.0,
+ "y": 195.0
+ },
+ {
+ "x": 265.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 165.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 170.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O11"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 65.0
+ },
+ {
+ "x": 85.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O10"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 35.0
+ },
+ {
+ "x": 90.0,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I11"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#53",
+ "path": [
+ {
+ "x": 245.0,
+ "y": 45.0
+ },
+ {
+ "x": 245.0,
+ "y": 15.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I10"
+ },
+ "name": "unnamedWire#54",
+ "path": [
+ {
+ "x": 235.0,
+ "y": 25.0
+ },
+ {
+ "x": 235.0,
+ "y": 55.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I9"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#55",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 65.0
+ },
+ {
+ "x": 230.0,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I8"
+ },
+ "name": "unnamedWire#56",
+ "path": [
+ {
+ "x": 225.0,
+ "y": 55.0
+ },
+ {
+ "x": 225.0,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I7"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#57",
+ "path": [
+ {
+ "x": 220.0,
+ "y": 85.0
+ },
+ {
+ "x": 220.0,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I6"
+ },
+ "name": "unnamedWire#58",
+ "path": [
+ {
+ "x": 215.0,
+ "y": 85.0
+ },
+ {
+ "x": 215.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#59",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O9"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 55.0
+ },
+ {
+ "x": 95.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#61",
+ "path": [
+ {
+ "x": 215.0,
+ "y": 125.0
+ },
+ {
+ "x": 215.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#62",
+ "path": [
+ {
+ "x": 220.0,
+ "y": 145.0
+ },
+ {
+ "x": 220.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#63",
+ "path": [
+ {
+ "x": 225.0,
+ "y": 145.0
+ },
+ {
+ "x": 225.0,
+ "y": 165.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#64",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 175.0
+ },
+ {
+ "x": 230.0,
+ "y": 155.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 95.0
+ },
+ {
+ "x": 100.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O7"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 85.0
+ },
+ {
+ "x": 105.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O6"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 115.0
+ },
+ {
+ "x": 110.0,
+ "y": 95.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "D flip flop\n12 bit",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 30.0,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 60.0,
+ "height": 60.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "D",
+ "logicWidth": 16,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 25.0
+ },
+ "name": "Q",
+ "logicWidth": 16,
+ "usage": "TRISTATE"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "_WE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 140.0,
+ "y": 15.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 190.0,
+ "y": 25.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#10",
+ "pos": {
+ "x": 190.0,
+ "y": 235.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#11",
+ "pos": {
+ "x": 140.0,
+ "y": 225.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#12",
+ "pos": {
+ "x": 140.0,
+ "y": 195.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#13",
+ "pos": {
+ "x": 190.0,
+ "y": 145.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#14",
+ "pos": {
+ "x": 190.0,
+ "y": 175.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#15",
+ "pos": {
+ "x": 140.0,
+ "y": 165.0
+ }
+ },
+ {
+ "id": "mux1_16",
+ "name": "DeserializedSubmodelComponent#16",
+ "pos": {
+ "x": 15.0,
+ "y": 95.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 190.0,
+ "y": 55.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 140.0,
+ "y": 45.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 190.0,
+ "y": 85.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 190.0,
+ "y": 115.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 140.0,
+ "y": 75.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 140.0,
+ "y": 105.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 140.0,
+ "y": 135.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "DeserializedSubmodelComponent#9",
+ "pos": {
+ "x": 190.0,
+ "y": 205.0
+ }
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 275.0,
+ "y": 50.0
+ },
+ "params": 16
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 75.0,
+ "y": 70.0
+ },
+ "params": 16
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 134.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 134.0,
+ "y": 49.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 184.0,
+ "y": 29.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 184.0,
+ "y": 119.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 184.0,
+ "y": 209.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 184.0,
+ "y": 89.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 184.0,
+ "y": 149.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 184.0,
+ "y": 179.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 134.0,
+ "y": 79.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 134.0,
+ "y": 109.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 134.0,
+ "y": 169.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 134.0,
+ "y": 199.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 134.0,
+ "y": 139.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 289.0,
+ "y": 124.0
+ },
+ "params": 16
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 184.0,
+ "y": 59.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O15"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 70.0
+ },
+ {
+ "x": 90.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O14"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 40.0
+ },
+ {
+ "x": 95.0,
+ "y": 80.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O5"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 180.0
+ },
+ {
+ "x": 120.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 180.0
+ },
+ {
+ "x": 115.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 210.0
+ },
+ {
+ "x": 110.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 200.0
+ },
+ {
+ "x": 105.0,
+ "y": 220.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 240.0
+ },
+ {
+ "x": 100.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 220.0
+ },
+ {
+ "x": 95.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O13"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 90.0
+ },
+ {
+ "x": 100.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O12"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 70.0
+ },
+ {
+ "x": 105.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 135.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 185.0,
+ "y": 240.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O11"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 110.0
+ },
+ {
+ "x": 110.0,
+ "y": 90.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#42",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 135.0,
+ "y": 10.0
+ },
+ {
+ "x": 185.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_WE"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "S"
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#48",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 20.0
+ },
+ {
+ "x": 35.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I15"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#49",
+ "path": [
+ {
+ "x": 265.0,
+ "y": 50.0
+ },
+ {
+ "x": 265.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O10"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 100.0
+ },
+ {
+ "x": 115.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I14"
+ },
+ "name": "unnamedWire#50",
+ "path": [
+ {
+ "x": 260.0,
+ "y": 30.0
+ },
+ {
+ "x": 260.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I13"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#51",
+ "path": [
+ {
+ "x": 255.0,
+ "y": 70.0
+ },
+ {
+ "x": 255.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I12"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#52",
+ "path": [
+ {
+ "x": 250.0,
+ "y": 80.0
+ },
+ {
+ "x": 250.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I11"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#53",
+ "path": [
+ {
+ "x": 245.0,
+ "y": 90.0
+ },
+ {
+ "x": 245.0,
+ "y": 80.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I10"
+ },
+ "name": "unnamedWire#54",
+ "path": [
+ {
+ "x": 240.0,
+ "y": 90.0
+ },
+ {
+ "x": 240.0,
+ "y": 100.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I9"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I8"
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I7"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#57",
+ "path": [
+ {
+ "x": 235.0,
+ "y": 130.0
+ },
+ {
+ "x": 235.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I6"
+ },
+ "name": "unnamedWire#58",
+ "path": [
+ {
+ "x": 240.0,
+ "y": 150.0
+ },
+ {
+ "x": 240.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#59",
+ "path": [
+ {
+ "x": 245.0,
+ "y": 150.0
+ },
+ {
+ "x": 245.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O9"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 120.0
+ },
+ {
+ "x": 120.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#60",
+ "path": [
+ {
+ "x": 250.0,
+ "y": 160.0
+ },
+ {
+ "x": 250.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#61",
+ "path": [
+ {
+ "x": 255.0,
+ "y": 170.0
+ },
+ {
+ "x": 255.0,
+ "y": 200.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#62",
+ "path": [
+ {
+ "x": 260.0,
+ "y": 210.0
+ },
+ {
+ "x": 260.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#63",
+ "path": [
+ {
+ "x": 265.0,
+ "y": 190.0
+ },
+ {
+ "x": 265.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#64",
+ "path": [
+ {
+ "x": 270.0,
+ "y": 240.0
+ },
+ {
+ "x": 270.0,
+ "y": 200.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#67",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 275.0
+ },
+ {
+ "x": 10.0,
+ "y": 275.0
+ },
+ {
+ "x": 10.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#16",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#68",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 175.0
+ },
+ {
+ "x": 10.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 140.0
+ },
+ {
+ "x": 125.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O7"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O6"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "D flip flop\n16 bit",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 30.0,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 60.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "D1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "D2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "D3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "D4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Q1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Q2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Q3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Q4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "WE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 55.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 104.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 104.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 104.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 169.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 164.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 159.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 154.0,
+ "y": 174.0
+ },
+ "params": 1
+ },
+ {
+ "id": "dff",
+ "name": "dff#0",
+ "pos": {
+ "x": 115.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "dff#1",
+ "pos": {
+ "x": 115.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "dff#2",
+ "pos": {
+ "x": 115.0,
+ "y": 120.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "dff#3",
+ "pos": {
+ "x": 115.0,
+ "y": 170.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "dff#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 75.0
+ },
+ {
+ "x": 100.0,
+ "y": 35.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 175.0
+ },
+ {
+ "x": 5.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 225.0
+ },
+ {
+ "x": 10.0,
+ "y": 145.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff#0",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q1"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#1",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 275.0
+ },
+ {
+ "x": 15.0,
+ "y": 155.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff#2",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q3"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "dff#1",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q4"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#3",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "dff#2",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 95.0
+ },
+ {
+ "x": 100.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "dff#3",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 105.0
+ },
+ {
+ "x": 95.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 170.0,
+ "y": 195.0
+ },
+ {
+ "x": 50.0,
+ "y": 195.0
+ },
+ {
+ "x": 50.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 165.0,
+ "y": 200.0
+ },
+ {
+ "x": 45.0,
+ "y": 200.0
+ },
+ {
+ "x": 45.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#26",
+ "path": [
+ {
+ "x": 160.0,
+ "y": 205.0
+ },
+ {
+ "x": 40.0,
+ "y": 205.0
+ },
+ {
+ "x": 40.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 155.0,
+ "y": 210.0
+ },
+ {
+ "x": 35.0,
+ "y": 210.0
+ },
+ {
+ "x": 35.0,
+ "y": 115.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#2",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#3",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "WE"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "D flip flop\n4 bit",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q1": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff#0",
+ "subStateID": "q"
+ }
+ },
+ "q2": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff#1",
+ "subStateID": "q"
+ }
+ },
+ "q": {
+ "id": "bitVectorSplitting",
+ "params": {
+ "vectorPartTargets": [
+ "q1",
+ "q2",
+ "q3",
+ "q4"
+ ],
+ "vectorPartLengthes": [
+ 1,
+ 1,
+ 1,
+ 1
+ ]
+ }
+ },
+ "q3": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff#2",
+ "subStateID": "q"
+ }
+ },
+ "q4": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff#3",
+ "subStateID": "q"
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 60.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "D1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "D2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "D3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "D4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Q1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Q2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Q3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Q4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "_WE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 55.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 104.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 104.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 104.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 169.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 164.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 159.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 154.0,
+ "y": 174.0
+ },
+ "params": 1
+ },
+ {
+ "id": "dff",
+ "name": "dff#0",
+ "pos": {
+ "x": 115.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "dff#1",
+ "pos": {
+ "x": 115.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "dff#2",
+ "pos": {
+ "x": 115.0,
+ "y": 120.0
+ }
+ },
+ {
+ "id": "dff",
+ "name": "dff#3",
+ "pos": {
+ "x": 115.0,
+ "y": 170.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "dff#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 75.0
+ },
+ {
+ "x": 100.0,
+ "y": 35.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 125.0
+ },
+ {
+ "x": 10.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 175.0
+ },
+ {
+ "x": 15.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 225.0
+ },
+ {
+ "x": 20.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff#0",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q1"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#1",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 275.0
+ },
+ {
+ "x": 25.0,
+ "y": 115.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "dff#2",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q3"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "dff#1",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q4"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#3",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "dff#2",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 95.0
+ },
+ {
+ "x": 100.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "dff#3",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 105.0
+ },
+ {
+ "x": 95.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 170.0,
+ "y": 205.0
+ },
+ {
+ "x": 50.0,
+ "y": 205.0
+ },
+ {
+ "x": 50.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 165.0,
+ "y": 210.0
+ },
+ {
+ "x": 45.0,
+ "y": 210.0
+ },
+ {
+ "x": 45.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#26",
+ "path": [
+ {
+ "x": 160.0,
+ "y": 215.0
+ },
+ {
+ "x": 40.0,
+ "y": 215.0
+ },
+ {
+ "x": 40.0,
+ "y": 145.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 155.0,
+ "y": 220.0
+ },
+ {
+ "x": 35.0,
+ "y": 220.0
+ },
+ {
+ "x": 35.0,
+ "y": 155.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#2",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dff#3",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_WE"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "D flip flop\n4 bit",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q1": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff#0",
+ "subStateID": "q"
+ }
+ },
+ "q2": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff#1",
+ "subStateID": "q"
+ }
+ },
+ "q": {
+ "id": "bitVectorSplitting",
+ "params": {
+ "vectorPartTargets": [
+ "q1",
+ "q2",
+ "q3",
+ "q4"
+ ],
+ "vectorPartLengthes": [
+ 1,
+ 1,
+ 1,
+ 1
+ ]
+ }
+ },
+ "q3": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff#2",
+ "subStateID": "q"
+ }
+ },
+ "q4": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dff#3",
+ "subStateID": "q"
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 20.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "D",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "E",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Q",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "_Q",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 10.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 15.0,
+ "y": 27.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 4.0,
+ "y": 36.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 34.0,
+ "y": 11.5
+ },
+ "params": 1
+ },
+ {
+ "id": "_rsLatch",
+ "name": "_rsLatch#0",
+ "pos": {
+ "x": 45.0,
+ "y": 7.5
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#0"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "E"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 42.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 25.0
+ },
+ {
+ "x": 10.0,
+ "y": 25.0
+ },
+ {
+ "x": 10.0,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_rsLatch#0",
+ "pinName": "_S"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_rsLatch#0",
+ "pinName": "_R"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 37.5
+ },
+ {
+ "x": 40.0,
+ "y": 22.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_rsLatch#0",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_rsLatch#0",
+ "pinName": "_Q"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_Q"
+ },
+ "name": "unnamedWire#9"
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "dlatch",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "_rsLatch#0",
+ "subStateID": "q"
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 50.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "D1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "D2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "D3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "D4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Q1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Q2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Q3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Q4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 14.0,
+ "y": 46.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 14.0,
+ "y": 71.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 14.0,
+ "y": 96.5
+ },
+ "params": 1
+ },
+ {
+ "id": "dlatch",
+ "name": "dlatch#0",
+ "pos": {
+ "x": 30.0,
+ "y": 7.5
+ }
+ },
+ {
+ "id": "dlatch",
+ "name": "dlatch#1",
+ "pos": {
+ "x": 30.0,
+ "y": 32.5
+ }
+ },
+ {
+ "id": "dlatch",
+ "name": "dlatch#2",
+ "pos": {
+ "x": 30.0,
+ "y": 57.5
+ }
+ },
+ {
+ "id": "dlatch",
+ "name": "dlatch#3",
+ "pos": {
+ "x": 30.0,
+ "y": 82.5
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 112.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch#3",
+ "pinName": "E"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D4"
+ },
+ "pin2": {
+ "compName": "dlatch#3",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch#0",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q1"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch#1",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q2"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch#2",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q3"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch#3",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q4"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch#2",
+ "pinName": "E"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch#1",
+ "pinName": "E"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch#0",
+ "pinName": "E"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 22.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "dlatch#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D2"
+ },
+ "pin2": {
+ "compName": "dlatch#1",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D3"
+ },
+ "pin2": {
+ "compName": "dlatch#2",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "dlatch4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q1": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dlatch#0",
+ "subStateID": "q"
+ }
+ },
+ "q2": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dlatch#1",
+ "subStateID": "q"
+ }
+ },
+ "q": {
+ "id": "bitVectorSplitting",
+ "params": {
+ "vectorPartTargets": [
+ "q1",
+ "q2",
+ "q3",
+ "q4"
+ ],
+ "vectorPartLengthes": [
+ 1,
+ 1,
+ 1,
+ 1
+ ]
+ }
+ },
+ "q3": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dlatch#2",
+ "subStateID": "q"
+ }
+ },
+ "q4": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dlatch#3",
+ "subStateID": "q"
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 30.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "B",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Z",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 57.5,
+ "y": 40.0
+ },
+ "params": 1
+ },
+ {
+ "id": "halfadder",
+ "name": "halfadder#0",
+ "pos": {
+ "x": 5.0,
+ "y": 40.0
+ }
+ },
+ {
+ "id": "halfadder",
+ "name": "halfadder#1",
+ "pos": {
+ "x": 45.0,
+ "y": 7.5
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "halfadder#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "halfadder#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#1"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "halfadder#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#2"
+ },
+ {
+ "pin1": {
+ "compName": "halfadder#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "halfadder#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#3"
+ },
+ {
+ "pin1": {
+ "compName": "halfadder#0",
+ "pinName": "_Z"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "halfadder#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "halfadder#1",
+ "pinName": "_Z"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 82.5,
+ "y": 22.5
+ },
+ {
+ "x": 82.5,
+ "y": 35.0
+ },
+ {
+ "x": 52.5,
+ "y": 35.0
+ },
+ {
+ "x": 52.5,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Z"
+ },
+ "name": "unnamedWire#7"
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "fulladder",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 20.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "B",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "_Z",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 10.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 40.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 40.0,
+ "y": 27.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 65.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 4.0,
+ "y": 11.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 4.0,
+ "y": 36.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 34.0,
+ "y": 24.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 62.5,
+ "y": 12.5
+ },
+ {
+ "x": 62.5,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 62.5,
+ "y": 37.5
+ },
+ {
+ "x": 62.5,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 42.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_Z"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 25.0
+ },
+ {
+ "x": 80.0,
+ "y": 37.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 32.5
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "halfadder",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 30.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "I0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "S0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 10.0,
+ "y": 7.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 35.0,
+ "y": 22.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 35.0,
+ "y": 47.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 60.0,
+ "y": 30.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 4.0,
+ "y": 11.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 4.0,
+ "y": 21.5
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#10"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#4"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 52.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#8"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#9"
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "mux1",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 50.0,
+ "height": 80.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "I0",
+ "logicWidth": 12,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I1",
+ "logicWidth": 12,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "S",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 50.0,
+ "y": 30.0
+ },
+ "name": "Y",
+ "logicWidth": 12,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#10",
+ "pos": {
+ "x": 95.0,
+ "y": 145.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#11",
+ "pos": {
+ "x": 95.0,
+ "y": 205.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#12",
+ "pos": {
+ "x": 150.0,
+ "y": 285.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#13",
+ "pos": {
+ "x": 150.0,
+ "y": 225.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#14",
+ "pos": {
+ "x": 95.0,
+ "y": 265.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#15",
+ "pos": {
+ "x": 150.0,
+ "y": 345.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 150.0,
+ "y": 45.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 95.0,
+ "y": 85.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 150.0,
+ "y": 105.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 95.0,
+ "y": 25.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 95.0,
+ "y": 325.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#9",
+ "pos": {
+ "x": 150.0,
+ "y": 165.0
+ }
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 235.0,
+ "y": 95.0
+ },
+ "params": 12
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 55.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 5.0,
+ "y": 45.0
+ },
+ "params": 12
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#1",
+ "pos": {
+ "x": 5.0,
+ "y": 245.0
+ },
+ "params": 12
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 144.0,
+ "y": 239.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 139.0,
+ "y": 229.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 144.0,
+ "y": 299.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 139.0,
+ "y": 289.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 89.0,
+ "y": 4.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 84.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 49.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#17",
+ "pos": {
+ "x": 49.0,
+ "y": 14.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#18",
+ "pos": {
+ "x": 84.0,
+ "y": 269.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#19",
+ "pos": {
+ "x": 89.0,
+ "y": 279.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#20",
+ "pos": {
+ "x": 84.0,
+ "y": 209.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#21",
+ "pos": {
+ "x": 89.0,
+ "y": 219.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#22",
+ "pos": {
+ "x": 89.0,
+ "y": 159.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#23",
+ "pos": {
+ "x": 84.0,
+ "y": 149.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#24",
+ "pos": {
+ "x": 84.0,
+ "y": 89.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#25",
+ "pos": {
+ "x": 89.0,
+ "y": 99.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#26",
+ "pos": {
+ "x": 84.0,
+ "y": 29.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#27",
+ "pos": {
+ "x": 89.0,
+ "y": 39.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 139.0,
+ "y": 49.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 144.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 144.0,
+ "y": 119.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 139.0,
+ "y": 109.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 139.0,
+ "y": 169.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 144.0,
+ "y": 179.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I11"
+ },
+ "name": "unnamedWire#103",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 30.0
+ },
+ {
+ "x": 210.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I10"
+ },
+ "name": "unnamedWire#104",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 50.0
+ },
+ {
+ "x": 205.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I9"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#105",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 115.0
+ },
+ {
+ "x": 200.0,
+ "y": 90.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I8"
+ },
+ "name": "unnamedWire#106",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 110.0
+ },
+ {
+ "x": 195.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I7"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#107",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 135.0
+ },
+ {
+ "x": 195.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I6"
+ },
+ "name": "unnamedWire#108",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 170.0
+ },
+ {
+ "x": 200.0,
+ "y": 145.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#109",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 155.0
+ },
+ {
+ "x": 205.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#110",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 230.0
+ },
+ {
+ "x": 210.0,
+ "y": 165.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#111",
+ "path": [
+ {
+ "x": 215.0,
+ "y": 175.0
+ },
+ {
+ "x": 215.0,
+ "y": 270.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#112",
+ "path": [
+ {
+ "x": 220.0,
+ "y": 290.0
+ },
+ {
+ "x": 220.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#113",
+ "path": [
+ {
+ "x": 225.0,
+ "y": 195.0
+ },
+ {
+ "x": 225.0,
+ "y": 330.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#114",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 350.0
+ },
+ {
+ "x": 230.0,
+ "y": 205.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#115",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#116",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 5.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 350.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 145.0,
+ "y": 5.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#42",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#43",
+ "path": [
+ {
+ "x": 145.0,
+ "y": 360.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "name": "unnamedWire#45",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#48",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 330.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#49",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 340.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O11"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#64",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 45.0
+ },
+ {
+ "x": 75.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O10"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#65",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 55.0
+ },
+ {
+ "x": 70.0,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O9"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#66",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 65.0
+ },
+ {
+ "x": 65.0,
+ "y": 110.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#67",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 75.0
+ },
+ {
+ "x": 60.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O7"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#68",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 85.0
+ },
+ {
+ "x": 55.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O6"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#69",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 95.0
+ },
+ {
+ "x": 50.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O5"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#70",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 105.0
+ },
+ {
+ "x": 45.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#71",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 115.0
+ },
+ {
+ "x": 40.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#72",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 125.0
+ },
+ {
+ "x": 35.0,
+ "y": 290.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#73",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 135.0
+ },
+ {
+ "x": 30.0,
+ "y": 310.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#74",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 145.0
+ },
+ {
+ "x": 25.0,
+ "y": 350.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#75",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 155.0
+ },
+ {
+ "x": 20.0,
+ "y": 370.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#76",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#77",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O11"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#82",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 245.0
+ },
+ {
+ "x": 75.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O10"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#83",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 255.0
+ },
+ {
+ "x": 70.0,
+ "y": 80.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O9"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#84",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 265.0
+ },
+ {
+ "x": 65.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#85",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 275.0
+ },
+ {
+ "x": 60.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O7"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#86",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 285.0
+ },
+ {
+ "x": 55.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O6"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#87",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 295.0
+ },
+ {
+ "x": 50.0,
+ "y": 200.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O5"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#88",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 305.0
+ },
+ {
+ "x": 45.0,
+ "y": 240.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#89",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 315.0
+ },
+ {
+ "x": 40.0,
+ "y": 260.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#90",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 325.0
+ },
+ {
+ "x": 35.0,
+ "y": 300.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#91",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 335.0
+ },
+ {
+ "x": 30.0,
+ "y": 320.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#92",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 345.0
+ },
+ {
+ "x": 45.0,
+ "y": 360.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#93",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 355.0
+ },
+ {
+ "x": 40.0,
+ "y": 380.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#94",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#95",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#96",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#97",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "name": "unnamedWire#98",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "MUX\n12 bit",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 23.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 55.0,
+ "height": 110.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I0",
+ "logicWidth": 16,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 90.0
+ },
+ "name": "I1",
+ "logicWidth": 16,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "S",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 55.0,
+ "y": 50.0
+ },
+ "name": "Y",
+ "logicWidth": 16,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 115.0,
+ "y": 25.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 175.0,
+ "y": 45.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#10",
+ "pos": {
+ "x": 115.0,
+ "y": 265.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#11",
+ "pos": {
+ "x": 115.0,
+ "y": 325.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#12",
+ "pos": {
+ "x": 175.0,
+ "y": 405.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#13",
+ "pos": {
+ "x": 175.0,
+ "y": 345.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#14",
+ "pos": {
+ "x": 115.0,
+ "y": 385.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#15",
+ "pos": {
+ "x": 175.0,
+ "y": 465.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 115.0,
+ "y": 85.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 175.0,
+ "y": 105.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 175.0,
+ "y": 165.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 115.0,
+ "y": 205.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 175.0,
+ "y": 225.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 115.0,
+ "y": 145.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 115.0,
+ "y": 445.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#9",
+ "pos": {
+ "x": 175.0,
+ "y": 285.0
+ }
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 260.0,
+ "y": 175.0
+ },
+ "params": 16
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 70.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 5.0,
+ "y": 50.0
+ },
+ "params": 16
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#1",
+ "pos": {
+ "x": 5.0,
+ "y": 375.0
+ },
+ "params": 16
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 164.0,
+ "y": 49.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 169.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 169.0,
+ "y": 359.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 164.0,
+ "y": 349.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 169.0,
+ "y": 419.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 164.0,
+ "y": 409.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 109.0,
+ "y": 4.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 104.0,
+ "y": 19.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 64.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#17",
+ "pos": {
+ "x": 64.0,
+ "y": 14.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#18",
+ "pos": {
+ "x": 104.0,
+ "y": 389.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#19",
+ "pos": {
+ "x": 109.0,
+ "y": 399.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 164.0,
+ "y": 109.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#20",
+ "pos": {
+ "x": 104.0,
+ "y": 329.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#21",
+ "pos": {
+ "x": 109.0,
+ "y": 339.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#22",
+ "pos": {
+ "x": 109.0,
+ "y": 279.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#23",
+ "pos": {
+ "x": 104.0,
+ "y": 269.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#24",
+ "pos": {
+ "x": 104.0,
+ "y": 209.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#25",
+ "pos": {
+ "x": 109.0,
+ "y": 219.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#26",
+ "pos": {
+ "x": 104.0,
+ "y": 149.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#27",
+ "pos": {
+ "x": 109.0,
+ "y": 159.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#28",
+ "pos": {
+ "x": 109.0,
+ "y": 99.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#29",
+ "pos": {
+ "x": 104.0,
+ "y": 89.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 169.0,
+ "y": 119.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#30",
+ "pos": {
+ "x": 104.0,
+ "y": 29.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#31",
+ "pos": {
+ "x": 109.0,
+ "y": 39.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 164.0,
+ "y": 169.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 169.0,
+ "y": 179.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 169.0,
+ "y": 239.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 164.0,
+ "y": 229.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 164.0,
+ "y": 289.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 169.0,
+ "y": 299.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#31",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I14"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#100",
+ "path": [
+ {
+ "x": 250.0,
+ "y": 185.0
+ },
+ {
+ "x": 250.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I13"
+ },
+ "name": "unnamedWire#101",
+ "path": [
+ {
+ "x": 245.0,
+ "y": 90.0
+ },
+ {
+ "x": 245.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I12"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#102",
+ "path": [
+ {
+ "x": 240.0,
+ "y": 205.0
+ },
+ {
+ "x": 240.0,
+ "y": 110.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I11"
+ },
+ "name": "unnamedWire#103",
+ "path": [
+ {
+ "x": 235.0,
+ "y": 150.0
+ },
+ {
+ "x": 235.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I10"
+ },
+ "name": "unnamedWire#104",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 170.0
+ },
+ {
+ "x": 230.0,
+ "y": 225.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I9"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#105",
+ "path": [
+ {
+ "x": 225.0,
+ "y": 235.0
+ },
+ {
+ "x": 225.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I8"
+ },
+ "name": "unnamedWire#106",
+ "path": [
+ {
+ "x": 220.0,
+ "y": 230.0
+ },
+ {
+ "x": 220.0,
+ "y": 245.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I7"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#107",
+ "path": [
+ {
+ "x": 220.0,
+ "y": 255.0
+ },
+ {
+ "x": 220.0,
+ "y": 270.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I6"
+ },
+ "name": "unnamedWire#108",
+ "path": [
+ {
+ "x": 225.0,
+ "y": 290.0
+ },
+ {
+ "x": 225.0,
+ "y": 265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#109",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 275.0
+ },
+ {
+ "x": 230.0,
+ "y": 330.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#110",
+ "path": [
+ {
+ "x": 235.0,
+ "y": 350.0
+ },
+ {
+ "x": 235.0,
+ "y": 285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#111",
+ "path": [
+ {
+ "x": 240.0,
+ "y": 295.0
+ },
+ {
+ "x": 240.0,
+ "y": 390.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#112",
+ "path": [
+ {
+ "x": 245.0,
+ "y": 410.0
+ },
+ {
+ "x": 245.0,
+ "y": 305.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#113",
+ "path": [
+ {
+ "x": 250.0,
+ "y": 315.0
+ },
+ {
+ "x": 250.0,
+ "y": 450.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#114",
+ "path": [
+ {
+ "x": 255.0,
+ "y": 470.0
+ },
+ {
+ "x": 255.0,
+ "y": 325.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#115",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#116",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 5.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#29",
+ "pinName": ""
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#29",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 165.0,
+ "y": 470.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#29",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#42",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#43",
+ "path": [
+ {
+ "x": 170.0,
+ "y": 480.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "name": "unnamedWire#45",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#48",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 450.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#49",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 460.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#54",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#31",
+ "pinName": ""
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#31",
+ "pinName": ""
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#58",
+ "path": [
+ {
+ "x": 165.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#59",
+ "path": [
+ {
+ "x": 170.0,
+ "y": 5.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O15"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O14"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#61",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 60.0
+ },
+ {
+ "x": 90.0,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O13"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#62",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 70.0
+ },
+ {
+ "x": 85.0,
+ "y": 110.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O12"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#63",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 80.0
+ },
+ {
+ "x": 80.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O11"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#64",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 90.0
+ },
+ {
+ "x": 75.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O10"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#65",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 100.0
+ },
+ {
+ "x": 70.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O9"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#66",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 110.0
+ },
+ {
+ "x": 65.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#67",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 120.0
+ },
+ {
+ "x": 60.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O7"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#68",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 130.0
+ },
+ {
+ "x": 55.0,
+ "y": 290.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O6"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#69",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 140.0
+ },
+ {
+ "x": 50.0,
+ "y": 310.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O5"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#70",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 150.0
+ },
+ {
+ "x": 45.0,
+ "y": 350.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#71",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 160.0
+ },
+ {
+ "x": 40.0,
+ "y": 370.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#72",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 170.0
+ },
+ {
+ "x": 35.0,
+ "y": 410.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#73",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 180.0
+ },
+ {
+ "x": 30.0,
+ "y": 430.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#74",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 190.0
+ },
+ {
+ "x": 25.0,
+ "y": 470.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#75",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 200.0
+ },
+ {
+ "x": 20.0,
+ "y": 490.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#76",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#77",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O15"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#78",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 375.0
+ },
+ {
+ "x": 95.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O14"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#79",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 385.0
+ },
+ {
+ "x": 90.0,
+ "y": 80.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O13"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#80",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 395.0
+ },
+ {
+ "x": 85.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O12"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#81",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 405.0
+ },
+ {
+ "x": 80.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O11"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#82",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 415.0
+ },
+ {
+ "x": 75.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O10"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#83",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 425.0
+ },
+ {
+ "x": 70.0,
+ "y": 200.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O9"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#84",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 435.0
+ },
+ {
+ "x": 65.0,
+ "y": 240.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#85",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 445.0
+ },
+ {
+ "x": 60.0,
+ "y": 260.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O7"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#86",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 455.0
+ },
+ {
+ "x": 55.0,
+ "y": 300.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O6"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#87",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 465.0
+ },
+ {
+ "x": 50.0,
+ "y": 320.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O5"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#11",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#88",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 475.0
+ },
+ {
+ "x": 45.0,
+ "y": 360.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#13",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#89",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 485.0
+ },
+ {
+ "x": 40.0,
+ "y": 380.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#14",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#90",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 495.0
+ },
+ {
+ "x": 35.0,
+ "y": 420.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#12",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#91",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 505.0
+ },
+ {
+ "x": 30.0,
+ "y": 440.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#92",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 515.0
+ },
+ {
+ "x": 25.0,
+ "y": 480.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#15",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#93",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 525.0
+ },
+ {
+ "x": 20.0,
+ "y": 500.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#94",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#95",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#96",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#97",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "name": "unnamedWire#98",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I15"
+ },
+ "name": "unnamedWire#99",
+ "path": [
+ {
+ "x": 255.0,
+ "y": 30.0
+ },
+ {
+ "x": 255.0,
+ "y": 175.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "MUX\n16 bit",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 23.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 90.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "I0_1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I0_2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "I0_3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "I0_4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "I1_1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "I1_2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "I1_3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "I1_4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "S0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Y2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Y3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Y4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 24.0,
+ "y": 11.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 24.0,
+ "y": 46.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 24.0,
+ "y": 81.5
+ },
+ "params": 1
+ },
+ {
+ "id": "mux1",
+ "name": "mux1#0",
+ "pos": {
+ "x": 30.0,
+ "y": 7.5
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "mux1#1",
+ "pos": {
+ "x": 30.0,
+ "y": 42.5
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "mux1#2",
+ "pos": {
+ "x": 30.0,
+ "y": 77.5
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "mux1#3",
+ "pos": {
+ "x": 30.0,
+ "y": 112.5
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1#2",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "mux1#2",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 87.5
+ },
+ {
+ "x": 5.0,
+ "y": 92.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "mux1#2",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 187.5
+ },
+ {
+ "x": 20.0,
+ "y": 102.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "mux1#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#14"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1#3",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 117.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "mux1#3",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 112.5
+ },
+ {
+ "x": 5.0,
+ "y": 127.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "mux1#3",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 212.5
+ },
+ {
+ "x": 25.0,
+ "y": 137.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "mux1#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#18"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0_1"
+ },
+ "pin2": {
+ "compName": "mux1#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 37.5
+ },
+ {
+ "x": 5.0,
+ "y": 22.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1_1"
+ },
+ "pin2": {
+ "compName": "mux1#0",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 137.5
+ },
+ {
+ "x": 10.0,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "mux1#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "mux1#1",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "mux1#1",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 62.5
+ },
+ {
+ "x": 5.0,
+ "y": 57.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "mux1#1",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 162.5
+ },
+ {
+ "x": 15.0,
+ "y": 67.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "mux1#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#9"
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "mux1_4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 70.0,
+ "height": 70.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "I00",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "I01",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I10",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I11",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "S0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "S1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 70.0,
+ "y": 10.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 60.0,
+ "y": 35.0
+ }
+ },
+ {
+ "id": "sel1",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 60.0,
+ "y": 100.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 115.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 30.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 24.0,
+ "y": 29.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 24.0,
+ "y": 49.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 54.0,
+ "y": 39.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 115.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I00"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 75.0
+ },
+ {
+ "x": 35.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I01"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 100.0
+ },
+ {
+ "x": 40.0,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I10"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I11"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 150.0
+ },
+ {
+ "x": 20.0,
+ "y": 135.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 40.0
+ },
+ {
+ "x": 105.0,
+ "y": 35.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 105.0
+ },
+ {
+ "x": 105.0,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 25.0
+ },
+ {
+ "x": 15.0,
+ "y": 10.0
+ },
+ {
+ "x": 85.0,
+ "y": 10.0
+ },
+ {
+ "x": 85.0,
+ "y": 25.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "mux2",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 62.0,
+ "height": 90.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "I00",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "I01",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I10",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I11",
+ "logicWidth": 4,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "S0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "S1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 62.0,
+ "y": 16.0
+ },
+ "name": "Y",
+ "logicWidth": 4,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 40.0,
+ "y": 30.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 40.0,
+ "y": 125.0
+ }
+ },
+ {
+ "id": "mux1_4",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 100.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "Merger",
+ "name": "Merger#0",
+ "pos": {
+ "x": 140.0,
+ "y": 25.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#0",
+ "pos": {
+ "x": 25.0,
+ "y": 45.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#1",
+ "pos": {
+ "x": 25.0,
+ "y": 85.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#2",
+ "pos": {
+ "x": 25.0,
+ "y": 140.0
+ },
+ "params": 4
+ },
+ {
+ "id": "Splitter",
+ "name": "Splitter#3",
+ "pos": {
+ "x": 25.0,
+ "y": 180.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 19.0,
+ "y": 34.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "Splitter#2",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_1"
+ },
+ "pin2": {
+ "compName": "Splitter#0",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#0",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I00"
+ },
+ "name": "unnamedWire#19",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 60.0
+ },
+ {
+ "x": 15.0,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I01"
+ },
+ "pin2": {
+ "compName": "Splitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#2",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I10"
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 155.0
+ },
+ {
+ "x": 15.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I11"
+ },
+ "pin2": {
+ "compName": "Splitter#3",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 150.0
+ },
+ {
+ "x": 10.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#27",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 75.0
+ },
+ {
+ "x": 80.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 140.0
+ },
+ {
+ "x": 85.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#29",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 95.0
+ },
+ {
+ "x": 90.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 160.0
+ },
+ {
+ "x": 95.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Merger#0",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "Merger#0",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#36",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 50.0
+ },
+ {
+ "x": 15.0,
+ "y": 20.0
+ },
+ {
+ "x": 60.0,
+ "y": 20.0
+ },
+ {
+ "x": 60.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "Splitter#2",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "Splitter#3",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#3",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "Splitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "mux1_4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 80.0,
+ "height": 120.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "I000",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I001",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I010",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 70.0
+ },
+ "name": "I011",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 80.0
+ },
+ "name": "I100",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 90.0
+ },
+ "name": "I101",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 100.0
+ },
+ "name": "I110",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 110.0
+ },
+ "name": "I111",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "S0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "S1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "S2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 80.0,
+ "y": 10.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "mux2",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 35.0,
+ "y": 185.0
+ }
+ },
+ {
+ "id": "mux1",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 125.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "mux2",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 35.0,
+ "y": 85.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 19.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 24.0,
+ "y": 94.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I11"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I011"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 145.0
+ },
+ {
+ "x": 15.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I00"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I100"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 215.0
+ },
+ {
+ "x": 10.0,
+ "y": 200.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I101"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I01"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I10"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I110"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 235.0
+ },
+ {
+ "x": 10.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I111"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I11"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 275.0
+ },
+ {
+ "x": 15.0,
+ "y": 245.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 195.0
+ },
+ {
+ "x": 115.0,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 95.0
+ },
+ {
+ "x": 110.0,
+ "y": 35.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 205.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I000"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I00"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 100.0
+ },
+ {
+ "x": 10.0,
+ "y": 115.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I01"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I001"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I010"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I10"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 150.0
+ },
+ {
+ "x": 10.0,
+ "y": 135.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "mux3",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 30.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "B",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "C",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 10.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 62.5,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 31.5,
+ "y": 24.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#0"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#1"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 32.5,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 32.5,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 57.5,
+ "y": 25.0
+ },
+ {
+ "x": 57.5,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 62.5
+ },
+ {
+ "x": 60.0,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "nand3",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 40.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "A4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Y2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Y3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Y4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 30.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 30.0,
+ "y": 27.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 30.0,
+ "y": 52.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 30.0,
+ "y": 77.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 14.0,
+ "y": 11.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 14.0,
+ "y": 36.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 14.0,
+ "y": 61.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 14.0,
+ "y": 86.5
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 67.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 92.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 57.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 82.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 42.5
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "not4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 40.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "A4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 20.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 20.0,
+ "y": 65.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 20.0,
+ "y": 115.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 20.0,
+ "y": 165.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#4",
+ "pos": {
+ "x": 50.0,
+ "y": 40.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#5",
+ "pos": {
+ "x": 50.0,
+ "y": 140.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#6",
+ "pos": {
+ "x": 110.0,
+ "y": 40.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#7",
+ "pos": {
+ "x": 110.0,
+ "y": 140.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#8",
+ "pos": {
+ "x": 140.0,
+ "y": 90.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 14.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 14.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 14.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 14.0,
+ "y": 174.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 104.0,
+ "y": 49.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 104.0,
+ "y": 149.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#12"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#13"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#14"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#15"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#5",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#19",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 55.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 145.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 155.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#22"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#23"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#24"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 80.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "or4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 80.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "A4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "B1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "B2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "B3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "B4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Y2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Y3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Y4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 15.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 15.0,
+ "y": 27.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#10",
+ "pos": {
+ "x": 65.0,
+ "y": 52.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#11",
+ "pos": {
+ "x": 65.0,
+ "y": 77.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 15.0,
+ "y": 52.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 15.0,
+ "y": 77.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#4",
+ "pos": {
+ "x": 15.0,
+ "y": 102.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#5",
+ "pos": {
+ "x": 15.0,
+ "y": 127.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#6",
+ "pos": {
+ "x": 15.0,
+ "y": 152.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#7",
+ "pos": {
+ "x": 15.0,
+ "y": 177.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#8",
+ "pos": {
+ "x": 65.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#9",
+ "pos": {
+ "x": 65.0,
+ "y": 27.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 6.5,
+ "y": 11.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 6.5,
+ "y": 36.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 6.5,
+ "y": 61.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 6.5,
+ "y": 86.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 6.5,
+ "y": 111.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 6.5,
+ "y": 136.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 6.5,
+ "y": 161.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 6.5,
+ "y": 186.5
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#10",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 42.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 57.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 67.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 82.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 92.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 107.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 117.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 132.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#19",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 142.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 157.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 167.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 182.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 192.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 12.5
+ },
+ {
+ "x": 40.0,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 112.5
+ },
+ {
+ "x": 45.0,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#9",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#26",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 37.5
+ },
+ {
+ "x": 40.0,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#5",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#9",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#27",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 137.5
+ },
+ {
+ "x": 50.0,
+ "y": 42.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 62.5
+ },
+ {
+ "x": 40.0,
+ "y": 57.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#10",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#29",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 162.5
+ },
+ {
+ "x": 55.0,
+ "y": 67.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#11",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 87.5
+ },
+ {
+ "x": 40.0,
+ "y": 82.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#11",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 187.5
+ },
+ {
+ "x": 60.0,
+ "y": 92.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#10",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#11",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 17.5
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "or_4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 90.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "B0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "B1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "D1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "D2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "D3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "D4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "QA1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "QA2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "QA3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "QA4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 45.0
+ },
+ "name": "QB1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "name": "QB2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 65.0
+ },
+ "name": "QB3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 75.0
+ },
+ "name": "QB4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "WE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.1,
+ "submodel": {
+ "components": [
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 109.0,
+ "y": 154.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 104.0,
+ "y": 164.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 44.0,
+ "y": 499.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 49.0,
+ "y": 509.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 34.0,
+ "y": 629.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 39.0,
+ "y": 639.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 44.0,
+ "y": 649.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 49.0,
+ "y": 659.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 129.0,
+ "y": 329.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#17",
+ "pos": {
+ "x": 124.0,
+ "y": 339.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#18",
+ "pos": {
+ "x": 119.0,
+ "y": 349.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#19",
+ "pos": {
+ "x": 114.0,
+ "y": 359.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 99.0,
+ "y": 174.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#20",
+ "pos": {
+ "x": 129.0,
+ "y": 479.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#21",
+ "pos": {
+ "x": 124.0,
+ "y": 489.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#22",
+ "pos": {
+ "x": 119.0,
+ "y": 499.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#23",
+ "pos": {
+ "x": 114.0,
+ "y": 509.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#24",
+ "pos": {
+ "x": 129.0,
+ "y": 629.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#25",
+ "pos": {
+ "x": 124.0,
+ "y": 639.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#26",
+ "pos": {
+ "x": 119.0,
+ "y": 649.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#27",
+ "pos": {
+ "x": 114.0,
+ "y": 659.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#28",
+ "pos": {
+ "x": 129.0,
+ "y": 779.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#29",
+ "pos": {
+ "x": 124.0,
+ "y": 789.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 94.0,
+ "y": 184.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#30",
+ "pos": {
+ "x": 119.0,
+ "y": 799.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#31",
+ "pos": {
+ "x": 114.0,
+ "y": 809.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 34.0,
+ "y": 549.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 39.0,
+ "y": 649.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 44.0,
+ "y": 749.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 49.0,
+ "y": 809.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 34.0,
+ "y": 479.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 39.0,
+ "y": 489.0
+ },
+ "params": 1
+ },
+ {
+ "id": "and41",
+ "name": "and41#0",
+ "pos": {
+ "x": 130.0,
+ "y": 150.0
+ }
+ },
+ {
+ "id": "and41",
+ "name": "and41#1",
+ "pos": {
+ "x": 235.0,
+ "y": 375.0
+ }
+ },
+ {
+ "id": "and41",
+ "name": "and41#2",
+ "pos": {
+ "x": 135.0,
+ "y": 325.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#0",
+ "pos": {
+ "x": 235.0,
+ "y": 485.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#1",
+ "pos": {
+ "x": 235.0,
+ "y": 635.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#2",
+ "pos": {
+ "x": 235.0,
+ "y": 785.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#3",
+ "pos": {
+ "x": 135.0,
+ "y": 435.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#4",
+ "pos": {
+ "x": 135.0,
+ "y": 585.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#5",
+ "pos": {
+ "x": 135.0,
+ "y": 735.0
+ }
+ },
+ {
+ "id": "demux2",
+ "name": "demux2#0",
+ "pos": {
+ "x": 55.0,
+ "y": 45.0
+ }
+ },
+ {
+ "id": "demux2",
+ "name": "demux2#1",
+ "pos": {
+ "x": 55.0,
+ "y": 150.0
+ }
+ },
+ {
+ "id": "dlatch4",
+ "name": "dlatch4#0",
+ "pos": {
+ "x": 55.0,
+ "y": 325.0
+ }
+ },
+ {
+ "id": "dlatch4",
+ "name": "dlatch4#1",
+ "pos": {
+ "x": 55.0,
+ "y": 475.0
+ }
+ },
+ {
+ "id": "dlatch4",
+ "name": "dlatch4#2",
+ "pos": {
+ "x": 55.0,
+ "y": 625.0
+ }
+ },
+ {
+ "id": "dlatch4",
+ "name": "dlatch4#3",
+ "pos": {
+ "x": 55.0,
+ "y": 775.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A0"
+ },
+ "pin2": {
+ "compName": "demux2#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "demux2#0",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 150.0
+ },
+ {
+ "x": 10.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#31",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#100",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "and41#1",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#101",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 380.0
+ },
+ {
+ "x": 290.0,
+ "y": 445.0
+ },
+ {
+ "x": 230.0,
+ "y": 445.0
+ },
+ {
+ "x": 230.0,
+ "y": 490.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#1",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#102",
+ "path": [
+ {
+ "x": 285.0,
+ "y": 390.0
+ },
+ {
+ "x": 285.0,
+ "y": 440.0
+ },
+ {
+ "x": 225.0,
+ "y": 440.0
+ },
+ {
+ "x": 225.0,
+ "y": 500.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#1",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#103",
+ "path": [
+ {
+ "x": 280.0,
+ "y": 400.0
+ },
+ {
+ "x": 280.0,
+ "y": 435.0
+ },
+ {
+ "x": 220.0,
+ "y": 435.0
+ },
+ {
+ "x": 220.0,
+ "y": 510.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#1",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#104",
+ "path": [
+ {
+ "x": 275.0,
+ "y": 410.0
+ },
+ {
+ "x": 275.0,
+ "y": 430.0
+ },
+ {
+ "x": 215.0,
+ "y": 430.0
+ },
+ {
+ "x": 215.0,
+ "y": 520.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#105",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 490.0
+ },
+ {
+ "x": 290.0,
+ "y": 595.0
+ },
+ {
+ "x": 230.0,
+ "y": 595.0
+ },
+ {
+ "x": 230.0,
+ "y": 640.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#106",
+ "path": [
+ {
+ "x": 285.0,
+ "y": 500.0
+ },
+ {
+ "x": 285.0,
+ "y": 590.0
+ },
+ {
+ "x": 225.0,
+ "y": 590.0
+ },
+ {
+ "x": 225.0,
+ "y": 650.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#107",
+ "path": [
+ {
+ "x": 280.0,
+ "y": 510.0
+ },
+ {
+ "x": 280.0,
+ "y": 585.0
+ },
+ {
+ "x": 220.0,
+ "y": 585.0
+ },
+ {
+ "x": 220.0,
+ "y": 660.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#108",
+ "path": [
+ {
+ "x": 275.0,
+ "y": 520.0
+ },
+ {
+ "x": 275.0,
+ "y": 580.0
+ },
+ {
+ "x": 215.0,
+ "y": 580.0
+ },
+ {
+ "x": 215.0,
+ "y": 670.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#1",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#109",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 640.0
+ },
+ {
+ "x": 290.0,
+ "y": 745.0
+ },
+ {
+ "x": 230.0,
+ "y": 745.0
+ },
+ {
+ "x": 230.0,
+ "y": 790.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "andor414#1",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#110",
+ "path": [
+ {
+ "x": 285.0,
+ "y": 650.0
+ },
+ {
+ "x": 285.0,
+ "y": 740.0
+ },
+ {
+ "x": 225.0,
+ "y": 740.0
+ },
+ {
+ "x": 225.0,
+ "y": 800.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#1",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#111",
+ "path": [
+ {
+ "x": 280.0,
+ "y": 660.0
+ },
+ {
+ "x": 280.0,
+ "y": 735.0
+ },
+ {
+ "x": 220.0,
+ "y": 735.0
+ },
+ {
+ "x": 220.0,
+ "y": 810.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#1",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#112",
+ "path": [
+ {
+ "x": 275.0,
+ "y": 670.0
+ },
+ {
+ "x": 275.0,
+ "y": 730.0
+ },
+ {
+ "x": 215.0,
+ "y": 730.0
+ },
+ {
+ "x": 215.0,
+ "y": 820.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#2",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QA1"
+ },
+ "name": "unnamedWire#113",
+ "path": [
+ {
+ "x": 300.0,
+ "y": 790.0
+ },
+ {
+ "x": 300.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#2",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QA2"
+ },
+ "name": "unnamedWire#114",
+ "path": [
+ {
+ "x": 305.0,
+ "y": 800.0
+ },
+ {
+ "x": 305.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#2",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QA3"
+ },
+ "name": "unnamedWire#115",
+ "path": [
+ {
+ "x": 310.0,
+ "y": 810.0
+ },
+ {
+ "x": 310.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#2",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QA4"
+ },
+ "name": "unnamedWire#116",
+ "path": [
+ {
+ "x": 315.0,
+ "y": 820.0
+ },
+ {
+ "x": 315.0,
+ "y": 350.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#2",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#117",
+ "path": [
+ {
+ "x": 190.0,
+ "y": 330.0
+ },
+ {
+ "x": 190.0,
+ "y": 430.0
+ },
+ {
+ "x": 130.0,
+ "y": 430.0
+ },
+ {
+ "x": 130.0,
+ "y": 440.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#2",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#118",
+ "path": [
+ {
+ "x": 185.0,
+ "y": 340.0
+ },
+ {
+ "x": 185.0,
+ "y": 425.0
+ },
+ {
+ "x": 125.0,
+ "y": 425.0
+ },
+ {
+ "x": 125.0,
+ "y": 450.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#2",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#119",
+ "path": [
+ {
+ "x": 180.0,
+ "y": 350.0
+ },
+ {
+ "x": 180.0,
+ "y": 420.0
+ },
+ {
+ "x": 120.0,
+ "y": 420.0
+ },
+ {
+ "x": 120.0,
+ "y": 460.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "WE"
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 450.0
+ },
+ {
+ "x": 5.0,
+ "y": 300.0
+ },
+ {
+ "x": 125.0,
+ "y": 300.0
+ },
+ {
+ "x": 125.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#2",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#120",
+ "path": [
+ {
+ "x": 175.0,
+ "y": 360.0
+ },
+ {
+ "x": 175.0,
+ "y": 415.0
+ },
+ {
+ "x": 115.0,
+ "y": 415.0
+ },
+ {
+ "x": 115.0,
+ "y": 470.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#3",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#121",
+ "path": [
+ {
+ "x": 190.0,
+ "y": 440.0
+ },
+ {
+ "x": 190.0,
+ "y": 580.0
+ },
+ {
+ "x": 130.0,
+ "y": 580.0
+ },
+ {
+ "x": 130.0,
+ "y": 590.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#3",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#122",
+ "path": [
+ {
+ "x": 185.0,
+ "y": 450.0
+ },
+ {
+ "x": 185.0,
+ "y": 575.0
+ },
+ {
+ "x": 125.0,
+ "y": 575.0
+ },
+ {
+ "x": 125.0,
+ "y": 600.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#3",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#123",
+ "path": [
+ {
+ "x": 180.0,
+ "y": 460.0
+ },
+ {
+ "x": 180.0,
+ "y": 570.0
+ },
+ {
+ "x": 120.0,
+ "y": 570.0
+ },
+ {
+ "x": 120.0,
+ "y": 610.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#3",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#124",
+ "path": [
+ {
+ "x": 175.0,
+ "y": 470.0
+ },
+ {
+ "x": 175.0,
+ "y": 565.0
+ },
+ {
+ "x": 115.0,
+ "y": 565.0
+ },
+ {
+ "x": 115.0,
+ "y": 620.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#4",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#125",
+ "path": [
+ {
+ "x": 190.0,
+ "y": 590.0
+ },
+ {
+ "x": 190.0,
+ "y": 730.0
+ },
+ {
+ "x": 130.0,
+ "y": 730.0
+ },
+ {
+ "x": 130.0,
+ "y": 740.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#4",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#126",
+ "path": [
+ {
+ "x": 185.0,
+ "y": 600.0
+ },
+ {
+ "x": 185.0,
+ "y": 725.0
+ },
+ {
+ "x": 125.0,
+ "y": 725.0
+ },
+ {
+ "x": 125.0,
+ "y": 750.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#4",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#127",
+ "path": [
+ {
+ "x": 180.0,
+ "y": 610.0
+ },
+ {
+ "x": 180.0,
+ "y": 720.0
+ },
+ {
+ "x": 120.0,
+ "y": 720.0
+ },
+ {
+ "x": 120.0,
+ "y": 760.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#4",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#128",
+ "path": [
+ {
+ "x": 175.0,
+ "y": 620.0
+ },
+ {
+ "x": 175.0,
+ "y": 715.0
+ },
+ {
+ "x": 115.0,
+ "y": 715.0
+ },
+ {
+ "x": 115.0,
+ "y": 770.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#5",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QB1"
+ },
+ "name": "unnamedWire#129",
+ "path": [
+ {
+ "x": 190.0,
+ "y": 740.0
+ },
+ {
+ "x": 190.0,
+ "y": 880.0
+ },
+ {
+ "x": 325.0,
+ "y": 880.0
+ },
+ {
+ "x": 325.0,
+ "y": 450.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 185.0,
+ "y": 155.0
+ },
+ {
+ "x": 185.0,
+ "y": 250.0
+ },
+ {
+ "x": 30.0,
+ "y": 250.0
+ },
+ {
+ "x": 30.0,
+ "y": 370.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#5",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QB2"
+ },
+ "name": "unnamedWire#130",
+ "path": [
+ {
+ "x": 185.0,
+ "y": 750.0
+ },
+ {
+ "x": 185.0,
+ "y": 885.0
+ },
+ {
+ "x": 330.0,
+ "y": 885.0
+ },
+ {
+ "x": 330.0,
+ "y": 550.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#5",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QB3"
+ },
+ "name": "unnamedWire#131",
+ "path": [
+ {
+ "x": 180.0,
+ "y": 760.0
+ },
+ {
+ "x": 180.0,
+ "y": 890.0
+ },
+ {
+ "x": 335.0,
+ "y": 890.0
+ },
+ {
+ "x": 335.0,
+ "y": 650.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#5",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QB4"
+ },
+ "name": "unnamedWire#132",
+ "path": [
+ {
+ "x": 175.0,
+ "y": 770.0
+ },
+ {
+ "x": 175.0,
+ "y": 895.0
+ },
+ {
+ "x": 340.0,
+ "y": 895.0
+ },
+ {
+ "x": 340.0,
+ "y": 750.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 180.0,
+ "y": 165.0
+ },
+ {
+ "x": 180.0,
+ "y": 245.0
+ },
+ {
+ "x": 25.0,
+ "y": 245.0
+ },
+ {
+ "x": 25.0,
+ "y": 520.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "dlatch4#2",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 175.0,
+ "y": 175.0
+ },
+ {
+ "x": 175.0,
+ "y": 240.0
+ },
+ {
+ "x": 20.0,
+ "y": 240.0
+ },
+ {
+ "x": 20.0,
+ "y": 670.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "dlatch4#3",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 170.0,
+ "y": 185.0
+ },
+ {
+ "x": 170.0,
+ "y": 235.0
+ },
+ {
+ "x": 15.0,
+ "y": 235.0
+ },
+ {
+ "x": 15.0,
+ "y": 820.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B0"
+ },
+ "pin2": {
+ "compName": "demux2#1",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 250.0
+ },
+ {
+ "x": 5.0,
+ "y": 155.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 850.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 330.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 340.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 350.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#0",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 360.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#1",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B1"
+ },
+ "pin2": {
+ "compName": "demux2#1",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 350.0
+ },
+ {
+ "x": 10.0,
+ "y": 165.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#2",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#2",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#2",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#2",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "demux2#1",
+ "pinName": "Y00"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#3",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#41",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 780.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#3",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#42",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 790.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#3",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#43",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 800.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "dlatch4#3",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#0",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "name": "unnamedWire#45",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#0",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#0",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#0",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#1",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "demux2#1",
+ "pinName": "Y01"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#1",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#1",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#1",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#2",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#2",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "name": "unnamedWire#54",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#2",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#2",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#3",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#3",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#29",
+ "pinName": ""
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#3",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "name": "unnamedWire#59",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "demux2#1",
+ "pinName": "Y10"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "dlatch4#3",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#31",
+ "pinName": ""
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "demux2#0",
+ "pinName": "Y00"
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#61",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 50.0
+ },
+ {
+ "x": 210.0,
+ "y": 420.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#0",
+ "pinName": "Y01"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#62",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 60.0
+ },
+ {
+ "x": 205.0,
+ "y": 570.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#0",
+ "pinName": "Y10"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#63",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 70.0
+ },
+ {
+ "x": 200.0,
+ "y": 720.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#0",
+ "pinName": "Y11"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#64",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 80.0
+ },
+ {
+ "x": 195.0,
+ "y": 870.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#65",
+ "path": [
+ {
+ "x": 110.0,
+ "y": 370.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#66",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 520.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#67",
+ "path": [
+ {
+ "x": 100.0,
+ "y": 670.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#68",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 820.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#69",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 380.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#1",
+ "pinName": "Y11"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#70",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 390.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#71",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 400.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#72",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 410.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#73",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 530.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#74",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 540.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#75",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 550.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#76",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 560.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#77",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 680.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#78",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 690.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#79",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 700.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#80",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 710.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#81",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 830.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#29",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#82",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 840.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#83",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 850.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#31",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#84",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 860.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#85",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#86",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#87",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#88",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#89",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#90",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#91",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#92",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#93",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#94",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#95",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#96",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#28",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#97",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#29",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#98",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#30",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#99",
+ "path": []
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "ram2",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {
+ "c00": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dlatch4#0"
+ }
+ },
+ "c11": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dlatch4#3"
+ }
+ },
+ "c10": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dlatch4#2"
+ }
+ },
+ "c01": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "dlatch4#1"
+ }
+ }
+ },
+ "atomicHighLevelStates": {
+ "q": {
+ "id": "bitVectorSplitting",
+ "params": {
+ "vectorPartTargets": [
+ "c11.q",
+ "c10.q",
+ "c01.q",
+ "c00.q"
+ ],
+ "vectorPartLengthes": [
+ 4,
+ 4,
+ 4,
+ 4
+ ]
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 130.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "B0",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "B1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "B2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "B3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 95.0
+ },
+ "name": "D1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 105.0
+ },
+ "name": "D2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 115.0
+ },
+ "name": "D3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 125.0
+ },
+ "name": "D4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "QA1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "QA2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "QA3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "QA4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 45.0
+ },
+ "name": "QB1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "name": "QB2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 65.0
+ },
+ "name": "QB3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 75.0
+ },
+ "name": "QB4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "WE",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ }
+ ],
+ "innerScale": 0.1,
+ "submodel": {
+ "components": [
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 229.0,
+ "y": 154.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 224.0,
+ "y": 164.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 69.0,
+ "y": 704.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 74.0,
+ "y": 714.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 59.0,
+ "y": 834.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 64.0,
+ "y": 844.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 69.0,
+ "y": 854.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 74.0,
+ "y": 864.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 39.0,
+ "y": 484.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#17",
+ "pos": {
+ "x": 44.0,
+ "y": 494.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#18",
+ "pos": {
+ "x": 49.0,
+ "y": 504.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#19",
+ "pos": {
+ "x": 54.0,
+ "y": 514.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 219.0,
+ "y": 174.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#20",
+ "pos": {
+ "x": 39.0,
+ "y": 634.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#21",
+ "pos": {
+ "x": 44.0,
+ "y": 644.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#22",
+ "pos": {
+ "x": 49.0,
+ "y": 654.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#23",
+ "pos": {
+ "x": 54.0,
+ "y": 664.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#24",
+ "pos": {
+ "x": 39.0,
+ "y": 334.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#25",
+ "pos": {
+ "x": 44.0,
+ "y": 349.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#26",
+ "pos": {
+ "x": 49.0,
+ "y": 649.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#27",
+ "pos": {
+ "x": 54.0,
+ "y": 749.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 214.0,
+ "y": 184.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 59.0,
+ "y": 534.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 64.0,
+ "y": 544.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 69.0,
+ "y": 554.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 74.0,
+ "y": 564.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 59.0,
+ "y": 684.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 64.0,
+ "y": 694.0
+ },
+ "params": 1
+ },
+ {
+ "id": "and41",
+ "name": "and41#0",
+ "pos": {
+ "x": 235.0,
+ "y": 150.0
+ }
+ },
+ {
+ "id": "and41",
+ "name": "and41#1",
+ "pos": {
+ "x": 250.0,
+ "y": 375.0
+ }
+ },
+ {
+ "id": "and41",
+ "name": "and41#2",
+ "pos": {
+ "x": 155.0,
+ "y": 325.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#0",
+ "pos": {
+ "x": 250.0,
+ "y": 485.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#1",
+ "pos": {
+ "x": 250.0,
+ "y": 635.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#2",
+ "pos": {
+ "x": 250.0,
+ "y": 785.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#3",
+ "pos": {
+ "x": 155.0,
+ "y": 435.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#4",
+ "pos": {
+ "x": 155.0,
+ "y": 585.0
+ }
+ },
+ {
+ "id": "andor414",
+ "name": "andor414#5",
+ "pos": {
+ "x": 155.0,
+ "y": 735.0
+ }
+ },
+ {
+ "id": "demux2",
+ "name": "demux2#0",
+ "pos": {
+ "x": 55.0,
+ "y": 45.0
+ }
+ },
+ {
+ "id": "demux2",
+ "name": "demux2#1",
+ "pos": {
+ "x": 55.0,
+ "y": 150.0
+ }
+ },
+ {
+ "id": "ram2",
+ "name": "ram2#0",
+ "pos": {
+ "x": 80.0,
+ "y": 330.0
+ }
+ },
+ {
+ "id": "ram2",
+ "name": "ram2#1",
+ "pos": {
+ "x": 80.0,
+ "y": 480.0
+ }
+ },
+ {
+ "id": "ram2",
+ "name": "ram2#2",
+ "pos": {
+ "x": 80.0,
+ "y": 630.0
+ }
+ },
+ {
+ "id": "ram2",
+ "name": "ram2#3",
+ "pos": {
+ "x": 80.0,
+ "y": 780.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A0"
+ },
+ "pin2": {
+ "compName": "demux2#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "demux2#0",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 150.0
+ },
+ {
+ "x": 10.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ram2#0",
+ "pinName": "QA4"
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#100",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 365.0
+ },
+ {
+ "x": 140.0,
+ "y": 360.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#1",
+ "pinName": "QA1"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#101",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 485.0
+ },
+ {
+ "x": 140.0,
+ "y": 480.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#1",
+ "pinName": "QA2"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#102",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 495.0
+ },
+ {
+ "x": 140.0,
+ "y": 490.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#1",
+ "pinName": "QA3"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#103",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 505.0
+ },
+ {
+ "x": 140.0,
+ "y": 500.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#1",
+ "pinName": "QA4"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#104",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 515.0
+ },
+ {
+ "x": 140.0,
+ "y": 510.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#2",
+ "pinName": "QA1"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#105",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 635.0
+ },
+ {
+ "x": 140.0,
+ "y": 630.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#2",
+ "pinName": "QA2"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#106",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 645.0
+ },
+ {
+ "x": 140.0,
+ "y": 640.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#2",
+ "pinName": "QA3"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#107",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 655.0
+ },
+ {
+ "x": 140.0,
+ "y": 650.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#2",
+ "pinName": "QA4"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#108",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 665.0
+ },
+ {
+ "x": 140.0,
+ "y": 660.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#3",
+ "pinName": "QA1"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#109",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 785.0
+ },
+ {
+ "x": 140.0,
+ "y": 780.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ram2#3",
+ "pinName": "QA2"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#110",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 795.0
+ },
+ {
+ "x": 140.0,
+ "y": 790.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#3",
+ "pinName": "QA3"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#111",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 805.0
+ },
+ {
+ "x": 140.0,
+ "y": 800.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#3",
+ "pinName": "QA4"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#112",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 815.0
+ },
+ {
+ "x": 140.0,
+ "y": 810.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#1",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#113",
+ "path": [
+ {
+ "x": 305.0,
+ "y": 380.0
+ },
+ {
+ "x": 305.0,
+ "y": 445.0
+ },
+ {
+ "x": 245.0,
+ "y": 445.0
+ },
+ {
+ "x": 245.0,
+ "y": 490.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#1",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#114",
+ "path": [
+ {
+ "x": 300.0,
+ "y": 390.0
+ },
+ {
+ "x": 300.0,
+ "y": 440.0
+ },
+ {
+ "x": 240.0,
+ "y": 440.0
+ },
+ {
+ "x": 240.0,
+ "y": 500.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#1",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#115",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 400.0
+ },
+ {
+ "x": 295.0,
+ "y": 435.0
+ },
+ {
+ "x": 235.0,
+ "y": 435.0
+ },
+ {
+ "x": 235.0,
+ "y": 510.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#1",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#116",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 410.0
+ },
+ {
+ "x": 290.0,
+ "y": 430.0
+ },
+ {
+ "x": 230.0,
+ "y": 430.0
+ },
+ {
+ "x": 230.0,
+ "y": 520.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#117",
+ "path": [
+ {
+ "x": 305.0,
+ "y": 490.0
+ },
+ {
+ "x": 305.0,
+ "y": 595.0
+ },
+ {
+ "x": 245.0,
+ "y": 595.0
+ },
+ {
+ "x": 245.0,
+ "y": 640.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#118",
+ "path": [
+ {
+ "x": 300.0,
+ "y": 500.0
+ },
+ {
+ "x": 300.0,
+ "y": 590.0
+ },
+ {
+ "x": 240.0,
+ "y": 590.0
+ },
+ {
+ "x": 240.0,
+ "y": 650.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#119",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 510.0
+ },
+ {
+ "x": 295.0,
+ "y": 585.0
+ },
+ {
+ "x": 235.0,
+ "y": 585.0
+ },
+ {
+ "x": 235.0,
+ "y": 660.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "WE"
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 850.0
+ },
+ {
+ "x": 15.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#120",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 520.0
+ },
+ {
+ "x": 290.0,
+ "y": 580.0
+ },
+ {
+ "x": 230.0,
+ "y": 580.0
+ },
+ {
+ "x": 230.0,
+ "y": 670.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#1",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#121",
+ "path": [
+ {
+ "x": 305.0,
+ "y": 640.0
+ },
+ {
+ "x": 305.0,
+ "y": 745.0
+ },
+ {
+ "x": 245.0,
+ "y": 745.0
+ },
+ {
+ "x": 245.0,
+ "y": 790.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#1",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#122",
+ "path": [
+ {
+ "x": 300.0,
+ "y": 650.0
+ },
+ {
+ "x": 300.0,
+ "y": 740.0
+ },
+ {
+ "x": 240.0,
+ "y": 740.0
+ },
+ {
+ "x": 240.0,
+ "y": 800.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#1",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#123",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 660.0
+ },
+ {
+ "x": 295.0,
+ "y": 735.0
+ },
+ {
+ "x": 235.0,
+ "y": 735.0
+ },
+ {
+ "x": 235.0,
+ "y": 810.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#1",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#124",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 670.0
+ },
+ {
+ "x": 290.0,
+ "y": 730.0
+ },
+ {
+ "x": 230.0,
+ "y": 730.0
+ },
+ {
+ "x": 230.0,
+ "y": 820.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#2",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QB1"
+ },
+ "name": "unnamedWire#125",
+ "path": [
+ {
+ "x": 330.0,
+ "y": 790.0
+ },
+ {
+ "x": 330.0,
+ "y": 450.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#2",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QB2"
+ },
+ "name": "unnamedWire#126",
+ "path": [
+ {
+ "x": 335.0,
+ "y": 800.0
+ },
+ {
+ "x": 335.0,
+ "y": 550.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#2",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QB3"
+ },
+ "name": "unnamedWire#127",
+ "path": [
+ {
+ "x": 340.0,
+ "y": 810.0
+ },
+ {
+ "x": 340.0,
+ "y": 650.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#2",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QB4"
+ },
+ "name": "unnamedWire#128",
+ "path": [
+ {
+ "x": 345.0,
+ "y": 820.0
+ },
+ {
+ "x": 345.0,
+ "y": 750.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#2",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#129",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 330.0
+ },
+ {
+ "x": 210.0,
+ "y": 430.0
+ },
+ {
+ "x": 150.0,
+ "y": 430.0
+ },
+ {
+ "x": 150.0,
+ "y": 440.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "ram2#0",
+ "pinName": "WE"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 290.0,
+ "y": 155.0
+ },
+ {
+ "x": 290.0,
+ "y": 230.0
+ },
+ {
+ "x": 35.0,
+ "y": 230.0
+ },
+ {
+ "x": 35.0,
+ "y": 375.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#2",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#130",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 340.0
+ },
+ {
+ "x": 205.0,
+ "y": 425.0
+ },
+ {
+ "x": 145.0,
+ "y": 425.0
+ },
+ {
+ "x": 145.0,
+ "y": 450.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#2",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#131",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 350.0
+ },
+ {
+ "x": 200.0,
+ "y": 420.0
+ },
+ {
+ "x": 140.0,
+ "y": 420.0
+ },
+ {
+ "x": 140.0,
+ "y": 460.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#2",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#132",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 360.0
+ },
+ {
+ "x": 195.0,
+ "y": 415.0
+ },
+ {
+ "x": 135.0,
+ "y": 415.0
+ },
+ {
+ "x": 135.0,
+ "y": 470.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#3",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#133",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 440.0
+ },
+ {
+ "x": 210.0,
+ "y": 580.0
+ },
+ {
+ "x": 150.0,
+ "y": 580.0
+ },
+ {
+ "x": 150.0,
+ "y": 590.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#3",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#134",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 450.0
+ },
+ {
+ "x": 205.0,
+ "y": 575.0
+ },
+ {
+ "x": 145.0,
+ "y": 575.0
+ },
+ {
+ "x": 145.0,
+ "y": 600.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#3",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#135",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 460.0
+ },
+ {
+ "x": 200.0,
+ "y": 570.0
+ },
+ {
+ "x": 140.0,
+ "y": 570.0
+ },
+ {
+ "x": 140.0,
+ "y": 610.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#3",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#136",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 470.0
+ },
+ {
+ "x": 195.0,
+ "y": 565.0
+ },
+ {
+ "x": 135.0,
+ "y": 565.0
+ },
+ {
+ "x": 135.0,
+ "y": 620.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#4",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "C1"
+ },
+ "name": "unnamedWire#137",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 590.0
+ },
+ {
+ "x": 210.0,
+ "y": 730.0
+ },
+ {
+ "x": 150.0,
+ "y": 730.0
+ },
+ {
+ "x": 150.0,
+ "y": 740.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#4",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "C2"
+ },
+ "name": "unnamedWire#138",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 600.0
+ },
+ {
+ "x": 205.0,
+ "y": 725.0
+ },
+ {
+ "x": 145.0,
+ "y": 725.0
+ },
+ {
+ "x": 145.0,
+ "y": 750.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#4",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "C3"
+ },
+ "name": "unnamedWire#139",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 610.0
+ },
+ {
+ "x": 200.0,
+ "y": 720.0
+ },
+ {
+ "x": 140.0,
+ "y": 720.0
+ },
+ {
+ "x": 140.0,
+ "y": 760.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "ram2#1",
+ "pinName": "WE"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 285.0,
+ "y": 165.0
+ },
+ {
+ "x": 285.0,
+ "y": 225.0
+ },
+ {
+ "x": 30.0,
+ "y": 225.0
+ },
+ {
+ "x": 30.0,
+ "y": 525.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#4",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "C4"
+ },
+ "name": "unnamedWire#140",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 620.0
+ },
+ {
+ "x": 195.0,
+ "y": 715.0
+ },
+ {
+ "x": 135.0,
+ "y": 715.0
+ },
+ {
+ "x": 135.0,
+ "y": 770.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#5",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QA1"
+ },
+ "name": "unnamedWire#141",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 740.0
+ },
+ {
+ "x": 210.0,
+ "y": 880.0
+ },
+ {
+ "x": 310.0,
+ "y": 880.0
+ },
+ {
+ "x": 310.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#5",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QA2"
+ },
+ "name": "unnamedWire#142",
+ "path": [
+ {
+ "x": 205.0,
+ "y": 750.0
+ },
+ {
+ "x": 205.0,
+ "y": 885.0
+ },
+ {
+ "x": 315.0,
+ "y": 885.0
+ },
+ {
+ "x": 315.0,
+ "y": 150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#5",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QA3"
+ },
+ "name": "unnamedWire#143",
+ "path": [
+ {
+ "x": 200.0,
+ "y": 760.0
+ },
+ {
+ "x": 200.0,
+ "y": 890.0
+ },
+ {
+ "x": 320.0,
+ "y": 890.0
+ },
+ {
+ "x": 320.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "andor414#5",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "QA4"
+ },
+ "name": "unnamedWire#144",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 770.0
+ },
+ {
+ "x": 195.0,
+ "y": 895.0
+ },
+ {
+ "x": 325.0,
+ "y": 895.0
+ },
+ {
+ "x": 325.0,
+ "y": 350.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "ram2#2",
+ "pinName": "WE"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 280.0,
+ "y": 175.0
+ },
+ {
+ "x": 280.0,
+ "y": 220.0
+ },
+ {
+ "x": 25.0,
+ "y": 220.0
+ },
+ {
+ "x": 25.0,
+ "y": 675.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "and41#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "ram2#3",
+ "pinName": "WE"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 275.0,
+ "y": 185.0
+ },
+ {
+ "x": 275.0,
+ "y": 215.0
+ },
+ {
+ "x": 20.0,
+ "y": 215.0
+ },
+ {
+ "x": 20.0,
+ "y": 825.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#0",
+ "pinName": "A0"
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B0"
+ },
+ "pin2": {
+ "compName": "demux2#1",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 450.0
+ },
+ {
+ "x": 5.0,
+ "y": 155.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 345.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#0",
+ "pinName": "B0"
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 355.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#0",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 365.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#1",
+ "pinName": "A0"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#1",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#1",
+ "pinName": "B0"
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#1",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#17",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#18",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B1"
+ },
+ "pin2": {
+ "compName": "demux2#1",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 550.0
+ },
+ {
+ "x": 10.0,
+ "y": 165.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#26",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#19",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#2",
+ "pinName": "A0"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#2",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#2",
+ "pinName": "B0"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#2",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#20",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#3",
+ "pinName": "A0"
+ },
+ "name": "unnamedWire#37",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 785.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#21",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#3",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#38",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 795.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#22",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#3",
+ "pinName": "B0"
+ },
+ "name": "unnamedWire#39",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 805.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#1",
+ "pinName": "Y00"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#23",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#3",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#41",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 815.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#24",
+ "pinName": ""
+ },
+ "name": "unnamedWire#42",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#25",
+ "pinName": ""
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#27",
+ "pinName": ""
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#0",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 385.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#0",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#46",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 395.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#0",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#47",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 405.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#0",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#48",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 415.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#1",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "demux2#1",
+ "pinName": "Y01"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#1",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#1",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#1",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#54",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#2",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#2",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#2",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#59",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "demux2#1",
+ "pinName": "Y10"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#2",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#61",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#62",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#63",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#64",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#3",
+ "pinName": "D1"
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#3",
+ "pinName": "D2"
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#3",
+ "pinName": "D3"
+ },
+ "name": "unnamedWire#67",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "ram2#3",
+ "pinName": "D4"
+ },
+ "name": "unnamedWire#68",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#69",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 950.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#1",
+ "pinName": "Y11"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#70",
+ "path": [
+ {
+ "x": 65.0,
+ "y": 1050.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#71",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 1150.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#72",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 1250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#0",
+ "pinName": "Y00"
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#73",
+ "path": [
+ {
+ "x": 135.0,
+ "y": 50.0
+ },
+ {
+ "x": 135.0,
+ "y": 370.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#0",
+ "pinName": "Y01"
+ },
+ "pin2": {
+ "compName": "andor414#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#74",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 60.0
+ },
+ {
+ "x": 130.0,
+ "y": 520.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#0",
+ "pinName": "Y10"
+ },
+ "pin2": {
+ "compName": "andor414#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#75",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 70.0
+ },
+ {
+ "x": 125.0,
+ "y": 670.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "demux2#0",
+ "pinName": "Y11"
+ },
+ "pin2": {
+ "compName": "andor414#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#76",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 80.0
+ },
+ {
+ "x": 120.0,
+ "y": 820.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#77",
+ "path": [
+ {
+ "x": 230.0,
+ "y": 420.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#78",
+ "path": [
+ {
+ "x": 225.0,
+ "y": 570.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#79",
+ "path": [
+ {
+ "x": 220.0,
+ "y": 720.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#80",
+ "path": [
+ {
+ "x": 215.0,
+ "y": 870.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#0",
+ "pinName": "QB1"
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#81",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 375.0
+ },
+ {
+ "x": 140.0,
+ "y": 380.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#0",
+ "pinName": "QB2"
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#82",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 385.0
+ },
+ {
+ "x": 140.0,
+ "y": 390.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#0",
+ "pinName": "QB3"
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#83",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 395.0
+ },
+ {
+ "x": 140.0,
+ "y": 400.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#0",
+ "pinName": "QB4"
+ },
+ "pin2": {
+ "compName": "and41#1",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#84",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 405.0
+ },
+ {
+ "x": 140.0,
+ "y": 410.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#1",
+ "pinName": "QB1"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#85",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 525.0
+ },
+ {
+ "x": 140.0,
+ "y": 530.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#1",
+ "pinName": "QB2"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#86",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 535.0
+ },
+ {
+ "x": 140.0,
+ "y": 540.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#1",
+ "pinName": "QB3"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#87",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 545.0
+ },
+ {
+ "x": 140.0,
+ "y": 550.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#1",
+ "pinName": "QB4"
+ },
+ "pin2": {
+ "compName": "andor414#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#88",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 555.0
+ },
+ {
+ "x": 140.0,
+ "y": 560.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#2",
+ "pinName": "QB1"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#89",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 675.0
+ },
+ {
+ "x": 140.0,
+ "y": 680.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "and41#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "ram2#2",
+ "pinName": "QB2"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#90",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 685.0
+ },
+ {
+ "x": 140.0,
+ "y": 690.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#2",
+ "pinName": "QB3"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#91",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 695.0
+ },
+ {
+ "x": 140.0,
+ "y": 700.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#2",
+ "pinName": "QB4"
+ },
+ "pin2": {
+ "compName": "andor414#1",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#92",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 705.0
+ },
+ {
+ "x": 140.0,
+ "y": 710.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#3",
+ "pinName": "QB1"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#93",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 825.0
+ },
+ {
+ "x": 140.0,
+ "y": 830.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#3",
+ "pinName": "QB2"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#94",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 835.0
+ },
+ {
+ "x": 140.0,
+ "y": 840.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#3",
+ "pinName": "QB3"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#95",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 845.0
+ },
+ {
+ "x": 140.0,
+ "y": 850.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#3",
+ "pinName": "QB4"
+ },
+ "pin2": {
+ "compName": "andor414#2",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#96",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 855.0
+ },
+ {
+ "x": 140.0,
+ "y": 860.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#0",
+ "pinName": "QA1"
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#97",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 335.0
+ },
+ {
+ "x": 140.0,
+ "y": 330.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#0",
+ "pinName": "QA2"
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#98",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 345.0
+ },
+ {
+ "x": 140.0,
+ "y": 340.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "ram2#0",
+ "pinName": "QA3"
+ },
+ "pin2": {
+ "compName": "and41#2",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#99",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 355.0
+ },
+ {
+ "x": 140.0,
+ "y": 350.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "ram4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {
+ "c00": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#0"
+ }
+ },
+ "c11": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#3"
+ }
+ },
+ "c10": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#2"
+ }
+ },
+ "c01": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#1"
+ }
+ },
+ "c1000": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#0",
+ "prefix": "c10"
+ }
+ },
+ "c1011": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#3",
+ "prefix": "c10"
+ }
+ },
+ "c1110": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#2",
+ "prefix": "c11"
+ }
+ },
+ "c1001": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#1",
+ "prefix": "c10"
+ }
+ },
+ "c1100": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#0",
+ "prefix": "c11"
+ }
+ },
+ "c1111": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#3",
+ "prefix": "c11"
+ }
+ },
+ "c0000": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#0",
+ "prefix": "c00"
+ }
+ },
+ "c0011": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#3",
+ "prefix": "c00"
+ }
+ },
+ "c0110": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#2",
+ "prefix": "c01"
+ }
+ },
+ "c0010": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#2",
+ "prefix": "c00"
+ }
+ },
+ "c1010": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#2",
+ "prefix": "c10"
+ }
+ },
+ "c0101": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#1",
+ "prefix": "c01"
+ }
+ },
+ "c0001": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#1",
+ "prefix": "c00"
+ }
+ },
+ "c0100": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#0",
+ "prefix": "c01"
+ }
+ },
+ "c0111": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#3",
+ "prefix": "c01"
+ }
+ },
+ "c1101": {
+ "id": "delegating",
+ "params": {
+ "delegateTarget": "ram2#1",
+ "prefix": "c11"
+ }
+ }
+ },
+ "atomicHighLevelStates": {
+ "q": {
+ "id": "bitVectorSplitting",
+ "params": {
+ "vectorPartTargets": [
+ "c11.q",
+ "c10.q",
+ "c01.q",
+ "c00.q"
+ ],
+ "vectorPartLengthes": [
+ 16,
+ 16,
+ 16,
+ 16
+ ]
+ }
+ }
+ }
+ },
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 40.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "I2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "S1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "S2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 35.0,
+ "y": 30.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 60.0,
+ "y": 40.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 12.5
+ },
+ {
+ "x": 25.0,
+ "y": 35.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S2"
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 37.5
+ },
+ {
+ "x": 15.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#10"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 62.5
+ },
+ {
+ "x": 25.0,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 87.5
+ },
+ {
+ "x": 15.0,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#8"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#9"
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "sel1",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 100.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "A4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "B1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "B2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "B3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 95.0
+ },
+ "name": "B4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "SA",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "SB",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Y2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Y3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Y4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 20.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 20.0,
+ "y": 52.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#10",
+ "pos": {
+ "x": 65.0,
+ "y": 52.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#11",
+ "pos": {
+ "x": 65.0,
+ "y": 77.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 20.0,
+ "y": 102.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 20.0,
+ "y": 152.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#4",
+ "pos": {
+ "x": 20.0,
+ "y": 27.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#5",
+ "pos": {
+ "x": 20.0,
+ "y": 77.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#6",
+ "pos": {
+ "x": 20.0,
+ "y": 127.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#7",
+ "pos": {
+ "x": 20.0,
+ "y": 177.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#8",
+ "pos": {
+ "x": 65.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#9",
+ "pos": {
+ "x": 65.0,
+ "y": 27.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 6.5,
+ "y": 16.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 6.5,
+ "y": 66.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 6.5,
+ "y": 116.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 4.0,
+ "y": 41.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 4.0,
+ "y": 91.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 4.0,
+ "y": 141.5
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 62.5
+ },
+ {
+ "x": 15.0,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 17.5,
+ "y": 87.5
+ },
+ {
+ "x": 17.5,
+ "y": 57.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#11"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#12"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#13"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#14"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 7.5,
+ "y": 167.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#17"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#19"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 17.5,
+ "y": 112.5
+ },
+ {
+ "x": 17.5,
+ "y": 107.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#20"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 192.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#22",
+ "path": [
+ {
+ "x": 42.5,
+ "y": 12.5
+ },
+ {
+ "x": 42.5,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#8",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 45.0,
+ "y": 37.5
+ },
+ {
+ "x": 45.0,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#9",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 47.5,
+ "y": 62.5
+ },
+ {
+ "x": 47.5,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#5",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#9",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 87.5
+ },
+ {
+ "x": 50.0,
+ "y": 42.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#26",
+ "path": [
+ {
+ "x": 52.5,
+ "y": 112.5
+ },
+ {
+ "x": 52.5,
+ "y": 57.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#10",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#27",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 137.5
+ },
+ {
+ "x": 55.0,
+ "y": 67.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#11",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 57.5,
+ "y": 162.5
+ },
+ {
+ "x": 57.5,
+ "y": 82.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#11",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#29",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 187.5
+ },
+ {
+ "x": 60.0,
+ "y": 92.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 17.5,
+ "y": 137.5
+ },
+ {
+ "x": 17.5,
+ "y": 157.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#10",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#11",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B1"
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 162.5
+ },
+ {
+ "x": 10.0,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B2"
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 12.5,
+ "y": 187.5
+ },
+ {
+ "x": 12.5,
+ "y": 82.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B3"
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 212.5
+ },
+ {
+ "x": 15.0,
+ "y": 132.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B4"
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 237.5
+ },
+ {
+ "x": 10.0,
+ "y": 182.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "SA"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8"
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "SB"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9"
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "sel2_4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 150.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "A1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "A2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "A3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 65.0
+ },
+ "name": "A4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 75.0
+ },
+ "name": "B1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 85.0
+ },
+ "name": "B2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 95.0
+ },
+ "name": "B3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 105.0
+ },
+ "name": "B4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 115.0
+ },
+ "name": "C1",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 125.0
+ },
+ "name": "C2",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 135.0
+ },
+ "name": "C3",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 145.0
+ },
+ "name": "C4",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "SA",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "SB",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "SC",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y1",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Y2",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Y3",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Y4",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.2,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 50.0,
+ "y": 570.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 50.0,
+ "y": 620.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 50.0,
+ "y": 670.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 50.0,
+ "y": 720.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#4",
+ "pos": {
+ "x": 152.5,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#5",
+ "pos": {
+ "x": 152.5,
+ "y": 65.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#6",
+ "pos": {
+ "x": 152.5,
+ "y": 115.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#7",
+ "pos": {
+ "x": 152.5,
+ "y": 165.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 29.0,
+ "y": 584.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 29.0,
+ "y": 634.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 29.0,
+ "y": 684.0
+ },
+ "params": 1
+ },
+ {
+ "id": "not4",
+ "name": "not4#0",
+ "pos": {
+ "x": 75.0,
+ "y": 250.0
+ }
+ },
+ {
+ "id": "sel2_4",
+ "name": "sel2_4#0",
+ "pos": {
+ "x": 35.0,
+ "y": 250.0
+ }
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "SA"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "SA"
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 25.0
+ },
+ {
+ "x": 25.0,
+ "y": 255.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "SB"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "SB"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 75.0
+ },
+ {
+ "x": 20.0,
+ "y": 265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "sel2_4#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "not4#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel2_4#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "not4#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel2_4#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "not4#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "sel2_4#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "not4#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "SC"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "A1"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 175.0
+ },
+ {
+ "x": 15.0,
+ "y": 275.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 735.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C1"
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C2"
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C3"
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C4"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "not4#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#25",
+ "path": [
+ {
+ "x": 115.0,
+ "y": 255.0
+ },
+ {
+ "x": 115.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "not4#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#26",
+ "path": [
+ {
+ "x": 120.0,
+ "y": 265.0
+ },
+ {
+ "x": 120.0,
+ "y": 70.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "not4#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#27",
+ "path": [
+ {
+ "x": 125.0,
+ "y": 275.0
+ },
+ {
+ "x": 125.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "not4#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 130.0,
+ "y": 285.0
+ },
+ {
+ "x": 130.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#4",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#29",
+ "path": [
+ {
+ "x": 135.0,
+ "y": 580.0
+ },
+ {
+ "x": 135.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 225.0
+ },
+ {
+ "x": 10.0,
+ "y": 285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 630.0
+ },
+ {
+ "x": 140.0,
+ "y": 80.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#6",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 145.0,
+ "y": 680.0
+ },
+ {
+ "x": 145.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 150.0,
+ "y": 730.0
+ },
+ {
+ "x": 150.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#5",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "A3"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 275.0
+ },
+ {
+ "x": 5.0,
+ "y": 295.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 325.0
+ },
+ {
+ "x": 5.0,
+ "y": 305.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B1"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "B1"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 375.0
+ },
+ {
+ "x": 10.0,
+ "y": 315.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B2"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "B2"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 425.0
+ },
+ {
+ "x": 15.0,
+ "y": 325.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B3"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "B3"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 475.0
+ },
+ {
+ "x": 20.0,
+ "y": 335.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B4"
+ },
+ "pin2": {
+ "compName": "sel2_4#0",
+ "pinName": "B4"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 525.0
+ },
+ {
+ "x": 25.0,
+ "y": 345.0
+ }
+ ]
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "sel3_4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
--- /dev/null
+{
+ "width": 35.0,
+ "height": 20.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "A",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "B",
+ "logicWidth": 1,
+ "usage": "INPUT"
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1,
+ "usage": "OUTPUT"
+ }
+ ],
+ "innerScale": 0.4,
+ "submodel": {
+ "components": [
+ {
+ "id": "NandGate",
+ "name": "NandGate#0",
+ "pos": {
+ "x": 7.5,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#1",
+ "pos": {
+ "x": 35.0,
+ "y": 2.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#2",
+ "pos": {
+ "x": 35.0,
+ "y": 27.5
+ },
+ "params": 1
+ },
+ {
+ "id": "NandGate",
+ "name": "NandGate#3",
+ "pos": {
+ "x": 62.5,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 4.0,
+ "y": 11.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 4.0,
+ "y": 36.5
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 29.0,
+ "y": 24.0
+ },
+ "params": 1
+ }
+ ],
+ "wires": [
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#10"
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#11"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4"
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 17.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#6",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 32.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#7",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 7.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "NandGate#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 42.5
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "NandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "NandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#9"
+ }
+ ],
+ "version": "0.1.1"
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "xor",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default",
+ "version": "0.1.5"
+}
\ No newline at end of file
import org.osgi.framework.BundleContext;
import net.mograsim.logic.model.serializing.ClassLoaderBasedResourceLoader;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
public class Am2900Loader implements BundleActivator
{
if (activated.getAndSet(true))
return;
ClassLoaderBasedResourceLoader resourceLoader = ClassLoaderBasedResourceLoader.create(Am2900Loader.class.getClassLoader());
- IndirectGUIComponentCreator.registerResourceLoader(resourceLoader, "Am2900Loader");
- IndirectGUIComponentCreator.loadStandardComponentIDs(Am2900Loader.class.getResourceAsStream("standardComponentIDMapping.json"));
+ IndirectModelComponentCreator.registerResourceLoader(resourceLoader, "Am2900Loader");
+ IndirectModelComponentCreator.loadStandardComponentIDs(Am2900Loader.class.getResourceAsStream("standardComponentIDMapping.json"));
// System.out.println("SETUP DONE"); // TODO: Debug
}
}
+++ /dev/null
-package net.mograsim.logic.model.am2900.components;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Arrays;
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIdff12 extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIdff12(ViewModelModifiable model, String name)
- {
- super(model, name, "D flip flop\n12 bits");
- setSize(40, 20);
- addPin(new Pin(this, "D", 12, PinUsage.INPUT, 20, 20), Position.TOP);
- addPin(new Pin(this, "C", 1, PinUsage.INPUT, 0, 10), Position.RIGHT);
- addPin(new Pin(this, "Y", 12, PinUsage.OUTPUT, 20, 0), Position.BOTTOM);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- Bit[] QC = (Bit[]) lastState;
- if (QC == null)
- {
- QC = new Bit[13];
- Arrays.fill(QC, U);
- }
-
- Bit CVal = readEnds.get("C").getValue();
-
- if (QC[12] == ZERO && CVal == ONE)
- System.arraycopy(readEnds.get("D").getValues().getBits(), 0, QC, 0, 12);
-
- readWriteEnds.get("Y").feedSignals(Arrays.copyOfRange(QC, 0, 12));
- QC[12] = CVal;
-
- return QC;
- }
-
- @Override
- protected Object getHighLevelState(Object state, String stateID)
- {
- switch (stateID)
- {
- case "q":
- return BitVector.of(Arrays.copyOfRange((Bit[]) state, 0, 12));
- default:
- return super.getHighLevelState(state, stateID);
- }
- }
-
- @Override
- protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
- {
- switch (stateID)
- {
- case "q":
- BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
- if (newHighLevelStateCasted.length() != 12)
- throw new IllegalArgumentException("Expected BitVector of length 12, not " + newHighLevelStateCasted.length());
- System.arraycopy(newHighLevelStateCasted.getBits(), 0, lastState, 0, 12);
- return lastState;
- default:
- return super.setHighLevelState(lastState, stateID, newHighLevelState);
- }
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIdff12.class.getCanonicalName(), (m, p, n) -> new GUIdff12(m, n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.Z;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Arrays;
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIdff4_finewe extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIdff4_finewe(ViewModelModifiable model, String name)
- {
- super(model, name, "D flip flop\n4 bits");
- setSize(35, 90);
- addPin(new Pin(this, "C", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
- addPin(new Pin(this, "_WE1", 1, PinUsage.INPUT, 0, 15), Position.RIGHT);
- addPin(new Pin(this, "_WE2", 1, PinUsage.INPUT, 0, 25), Position.RIGHT);
- addPin(new Pin(this, "_WE3", 1, PinUsage.INPUT, 0, 35), Position.RIGHT);
- addPin(new Pin(this, "_WE4", 1, PinUsage.INPUT, 0, 45), Position.RIGHT);
- addPin(new Pin(this, "D1", 1, PinUsage.INPUT, 0, 55), Position.RIGHT);
- addPin(new Pin(this, "D2", 1, PinUsage.INPUT, 0, 65), Position.RIGHT);
- addPin(new Pin(this, "D3", 1, PinUsage.INPUT, 0, 75), Position.RIGHT);
- addPin(new Pin(this, "D4", 1, PinUsage.INPUT, 0, 85), Position.RIGHT);
- addPin(new Pin(this, "Q1", 1, PinUsage.OUTPUT, 35, 5), Position.LEFT);
- addPin(new Pin(this, "Q2", 1, PinUsage.OUTPUT, 35, 15), Position.LEFT);
- addPin(new Pin(this, "Q3", 1, PinUsage.OUTPUT, 35, 25), Position.LEFT);
- addPin(new Pin(this, "Q4", 1, PinUsage.OUTPUT, 35, 35), Position.LEFT);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- Bit[] QC = (Bit[]) lastState;
- if (QC == null)
- QC = new Bit[] { U, U, U, U, U };
-
- Bit CVal = readEnds.get("C").getValue();
-
- if (QC[0] == ZERO && CVal == ONE)
- for (int i = 1; i < 5; i++)
- {
- Bit WEiVal = readEnds.get("_WE" + i).getValue();
- if (WEiVal == X || WEiVal == Z)
- QC[i] = X;
- else if (WEiVal == U)
- QC[i] = U;
- else if (WEiVal == ZERO)
- QC[i] = readEnds.get("D" + i).getValue();
- }
-
- QC[0] = CVal;
-
- readWriteEnds.get("Q1").feedSignals(QC[1]);
- readWriteEnds.get("Q2").feedSignals(QC[2]);
- readWriteEnds.get("Q3").feedSignals(QC[3]);
- readWriteEnds.get("Q4").feedSignals(QC[4]);
-
- return QC;
- }
-
- @Override
- protected Object getHighLevelState(Object state, String stateID)
- {
- switch (stateID)
- {
- case "q":
- return BitVector.of(Arrays.copyOfRange((Bit[]) state, 1, 5));
- default:
- return super.getHighLevelState(state, stateID);
- }
- }
-
- @Override
- protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
- {
- switch (stateID)
- {
- case "q":
- BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
- if (newHighLevelStateCasted.length() != 4)
- throw new IllegalArgumentException("Expected BitVector of length 4, not " + newHighLevelStateCasted.length());
- System.arraycopy(newHighLevelStateCasted.getBits(), 0, lastState, 1, 4);
- return lastState;
- default:
- return super.setHighLevelState(lastState, stateID, newHighLevelState);
- }
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIdff4_finewe.class.getCanonicalName(), (m, p, n) -> new GUIdff4_finewe(m, n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components;
-
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.Z;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Arrays;
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIinc12 extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIinc12(ViewModelModifiable model, String name)
- {
- super(model, name, "Incrementer");
- setSize(40, 20);
- addPin(new Pin(this, "A", 12, PinUsage.INPUT, 20, 20), Position.TOP);
- addPin(new Pin(this, "CI", 1, PinUsage.INPUT, 40, 10), Position.LEFT);
- addPin(new Pin(this, "Y", 12, PinUsage.OUTPUT, 20, 0), Position.BOTTOM);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- Bit[] ABits = readEnds.get("A").getValues().getBits();
- Bit CIVal = readEnds.get("CI").getValue();
- Bit[] YBits = new Bit[12];
- if (CIVal == X)
- Arrays.fill(YBits, X);
- else if (CIVal == U)
- Arrays.fill(YBits, U);
- else if (CIVal == Z)
- Arrays.fill(YBits, X);
- else if (CIVal == ZERO)
- YBits = ABits;
- else
- {
- Bit carry = Bit.ONE;
- // TODO extract to helper. This code almost also exists in GUIAM2910RegCntr.
- for (int i = 11; i >= 0; i--)
- {
- Bit a = ABits[i];
- YBits[i] = a.xor(carry);
- carry = a.and(carry);
- }
- }
- readWriteEnds.get("Y").feedSignals(YBits);
- return null;
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIinc12.class.getCanonicalName(), (m, p, n) -> new GUIinc12(m, n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.Z;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUInor12 extends SimpleRectangularHardcodedGUIComponent
-{
- public GUInor12(ViewModelModifiable model, String name)
- {
- super(model, name, "=0");
- setSize(35, 20);
- addPin(new Pin(this, "D", 12, PinUsage.INPUT, 0, 10), Position.RIGHT);
- addPin(new Pin(this, "Y", 1, PinUsage.OUTPUT, 35, 10), Position.LEFT);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- readWriteEnds.get("Y").feedSignals(getResult(readEnds.get("D").getValues().getBits()));
- return null;
- }
-
- private static Bit getResult(Bit[] DValArr)
- {
- for (int i = 0; i < 12; i++)
- if (DValArr[i] == X)
- return X;
- for (int i = 0; i < 12; i++)
- if (DValArr[i] == U)
- return U;
- for (int i = 0; i < 12; i++)
- if (DValArr[i] == ONE)
- return ZERO;
- for (int i = 0; i < 12; i++)
- if (DValArr[i] == Z)
- return X;
- return ONE;
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUInor12.class.getCanonicalName(), (m, p, n) -> new GUInor12(m, n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.Z;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Arrays;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIram5_12 extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIram5_12(ViewModelModifiable model, String name)
- {
- super(model, name, "RAM\n5 x 12 Bit");
- setSize(40, 40);
- addPin(new Pin(this, "A", 3, PinUsage.INPUT, 10, 0), Position.BOTTOM);
- addPin(new Pin(this, "B", 3, PinUsage.INPUT, 30, 0), Position.BOTTOM);
- addPin(new Pin(this, "WE", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
- addPin(new Pin(this, "C", 1, PinUsage.INPUT, 0, 15), Position.RIGHT);
- addPin(new Pin(this, "Y", 12, PinUsage.OUTPUT, 0, 30), Position.RIGHT);
- addPin(new Pin(this, "D", 12, PinUsage.INPUT, 20, 40), Position.TOP);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- BitVector[] memC = (BitVector[]) lastState;
- if (memC == null)
- {
- memC = new BitVector[6];
- Arrays.fill(memC, 0, 5, BitVector.of(U, 12));
- memC[5] = BitVector.of(U);
- }
- BitVector CVal = readEnds.get("C").getValues();
- BitVector oldC = memC[5];
- // TODO is the timing right?
- if (oldC.getLSBit(0) == ZERO && CVal.getLSBit(0) == ONE && readEnds.get("WE").getValue() == ONE)
- {
- int BInt = getAsInt(readEnds.get("B").getValues());
- if (BInt == -1 || BInt > 4)
- Arrays.fill(memC, BitVector.of(X, 12));
- else if (BInt == -2)
- Arrays.fill(memC, BitVector.of(U, 12));
- else
- memC[BInt] = readEnds.get("D").getValues();
- }
- int AInt = getAsInt(readEnds.get("A").getValues());
- BitVector YVal = AInt == -1 || AInt > 4 ? BitVector.of(X, 12) : AInt == -2 ? BitVector.of(U, 12) : memC[AInt];
- readWriteEnds.get("Y").feedSignals(YVal);
- memC[5] = CVal;
- return memC;
- }
-
- /**
- * -1 means X, -2 means U
- */
- private static int getAsInt(BitVector vect)
- {
- Bit[] bits = vect.getBits();
- for (int i = 0; i < 3; i++)
- if (bits[i] == X)
- return -1;
- for (int i = 0; i < 3; i++)
- if (bits[i] == U)
- return -2;
- for (int i = 0; i < 3; i++)
- if (bits[i] == Z)
- return -1;
- return (bits[0] == ONE ? 4 : 0) + (bits[1] == ONE ? 2 : 0) + (bits[2] == ONE ? 1 : 0);
- }
-
- Pattern stateIDPattern = Pattern.compile("c(0[10][10]|100)");
-
- @Override
- protected Object getHighLevelState(Object state, String stateID)
- {
- Matcher m = stateIDPattern.matcher(stateID);
- if (m.matches())
- return ((BitVector[]) state)[Integer.parseInt(m.group(1), 2)];
- return super.getHighLevelState(state, stateID);
- }
-
- @Override
- protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
- {
- Matcher m = stateIDPattern.matcher(stateID);
- if (m.matches())
- {
- int addr = Integer.parseInt(m.group(1), 2);
- BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
- if (newHighLevelStateCasted.length() != 12)
- throw new IllegalArgumentException("Expected BitVector of length 12, not " + newHighLevelStateCasted.length());
- BitVector[] memC = (BitVector[]) lastState;
- memC[addr] = newHighLevelStateCasted;
- return memC;
- }
- return super.setHighLevelState(lastState, stateID, newHighLevelState);
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIram5_12.class.getCanonicalName(), (m, p, n) -> new GUIram5_12(m, n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.Z;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIsel4_12 extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIsel4_12(ViewModelModifiable model, String name)
- {
- super(model, name, "4-way SEL\n12 bit");
- setSize(80, 40);
- addPin(new Pin(this, "SA", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
- addPin(new Pin(this, "SB", 1, PinUsage.INPUT, 0, 15), Position.RIGHT);
- addPin(new Pin(this, "SC", 1, PinUsage.INPUT, 0, 25), Position.RIGHT);
- addPin(new Pin(this, "SD", 1, PinUsage.INPUT, 0, 35), Position.RIGHT);
- addPin(new Pin(this, "A", 12, PinUsage.INPUT, 10, 0), Position.BOTTOM);
- addPin(new Pin(this, "B", 12, PinUsage.INPUT, 30, 0), Position.BOTTOM);
- addPin(new Pin(this, "C", 12, PinUsage.INPUT, 50, 0), Position.BOTTOM);
- addPin(new Pin(this, "D", 12, PinUsage.INPUT, 70, 0), Position.BOTTOM);
- addPin(new Pin(this, "Y", 12, PinUsage.OUTPUT, 40, 40), Position.TOP);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- Bit SAVal = readEnds.get("SA").getValue();
- Bit SBVal = readEnds.get("SB").getValue();
- Bit SCVal = readEnds.get("SC").getValue();
- Bit SDVal = readEnds.get("SD").getValue();
- BitVector YVal;
- if (SAVal == X || SBVal == X || SCVal == X || SDVal == X)
- YVal = BitVector.of(X, 12);
- else if (SAVal == U || SBVal == U || SCVal == U || SDVal == U)
- YVal = BitVector.of(U, 12);
- else if (SAVal == Z || SBVal == Z || SCVal == Z || SDVal == Z)
- YVal = BitVector.of(X, 12);
- else
- {
- YVal = null;
- if (SAVal == ONE)
- YVal = readEnds.get("A").getValues();
- if (SBVal == ONE)
- if (YVal != null)
- YVal = BitVector.of(X, 12);
- else
- YVal = readEnds.get("B").getValues();
- if (SCVal == ONE)
- if (YVal != null)
- YVal = BitVector.of(X, 12);
- else
- YVal = readEnds.get("C").getValues();
- if (SDVal == ONE)
- if (YVal != null)
- YVal = BitVector.of(X, 12);
- else
- YVal = readEnds.get("D").getValues();
- if (YVal == null)
- YVal = BitVector.of(ZERO, 12);
- }
-
- readWriteEnds.get("Y").feedSignals(YVal);
- return null;
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIsel4_12.class.getCanonicalName(), (m, p, n) -> new GUIsel4_12(m, n));
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class Modeldff12 extends SimpleRectangularHardcodedModelComponent
+{
+ public Modeldff12(LogicModelModifiable model, String name)
+ {
+ super(model, "dff12", name, "D flip flop\n12 bits", false);
+ setSize(40, 20);
+ addPin(new Pin(model, this, "D", 12, PinUsage.INPUT, 20, 20), Position.TOP);
+ addPin(new Pin(model, this, "C", 1, PinUsage.INPUT, 0, 10), Position.RIGHT);
+ addPin(new Pin(model, this, "Y", 12, PinUsage.OUTPUT, 20, 0), Position.BOTTOM);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ Bit[] QC = (Bit[]) lastState;
+ if (QC == null)
+ {
+ QC = new Bit[13];
+ Arrays.fill(QC, U);
+ }
+
+ Bit CVal = readEnds.get("C").getValue();
+
+ if (QC[12] == ZERO && CVal == ONE)
+ System.arraycopy(readEnds.get("D").getValues().getBits(), 0, QC, 0, 12);
+
+ readWriteEnds.get("Y").feedSignals(Arrays.copyOfRange(QC, 0, 12));
+ QC[12] = CVal;
+
+ return QC;
+ }
+
+ @Override
+ protected Object getHighLevelState(Object state, String stateID)
+ {
+ switch (stateID)
+ {
+ case "q":
+ return BitVector.of(Arrays.copyOfRange((Bit[]) state, 0, 12));
+ default:
+ return super.getHighLevelState(state, stateID);
+ }
+ }
+
+ @Override
+ protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
+ {
+ switch (stateID)
+ {
+ case "q":
+ BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
+ if (newHighLevelStateCasted.length() != 12)
+ throw new IllegalArgumentException("Expected BitVector of length 12, not " + newHighLevelStateCasted.length());
+ System.arraycopy(newHighLevelStateCasted.getBits(), 0, lastState, 0, 12);
+ return lastState;
+ default:
+ return super.setHighLevelState(lastState, stateID, newHighLevelState);
+ }
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(Modeldff12.class.getCanonicalName(), (m, p, n) -> new Modeldff12(m, n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.X;
+import static net.mograsim.logic.core.types.Bit.Z;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class Modeldff4_finewe extends SimpleRectangularHardcodedModelComponent
+{
+ public Modeldff4_finewe(LogicModelModifiable model, String name)
+ {
+ super(model, "dff4_finewe", name, "D flip flop\n4 bits", false);
+ setSize(35, 90);
+ addPin(new Pin(model, this, "C", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
+ addPin(new Pin(model, this, "_WE1", 1, PinUsage.INPUT, 0, 15), Position.RIGHT);
+ addPin(new Pin(model, this, "_WE2", 1, PinUsage.INPUT, 0, 25), Position.RIGHT);
+ addPin(new Pin(model, this, "_WE3", 1, PinUsage.INPUT, 0, 35), Position.RIGHT);
+ addPin(new Pin(model, this, "_WE4", 1, PinUsage.INPUT, 0, 45), Position.RIGHT);
+ addPin(new Pin(model, this, "D1", 1, PinUsage.INPUT, 0, 55), Position.RIGHT);
+ addPin(new Pin(model, this, "D2", 1, PinUsage.INPUT, 0, 65), Position.RIGHT);
+ addPin(new Pin(model, this, "D3", 1, PinUsage.INPUT, 0, 75), Position.RIGHT);
+ addPin(new Pin(model, this, "D4", 1, PinUsage.INPUT, 0, 85), Position.RIGHT);
+ addPin(new Pin(model, this, "Q1", 1, PinUsage.OUTPUT, 35, 5), Position.LEFT);
+ addPin(new Pin(model, this, "Q2", 1, PinUsage.OUTPUT, 35, 15), Position.LEFT);
+ addPin(new Pin(model, this, "Q3", 1, PinUsage.OUTPUT, 35, 25), Position.LEFT);
+ addPin(new Pin(model, this, "Q4", 1, PinUsage.OUTPUT, 35, 35), Position.LEFT);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ Bit[] QC = (Bit[]) lastState;
+ if (QC == null)
+ QC = new Bit[] { U, U, U, U, U };
+
+ Bit CVal = readEnds.get("C").getValue();
+
+ if (QC[0] == ZERO && CVal == ONE)
+ for (int i = 1; i < 5; i++)
+ {
+ Bit WEiVal = readEnds.get("_WE" + i).getValue();
+ if (WEiVal == X || WEiVal == Z)
+ QC[i] = X;
+ else if (WEiVal == U)
+ QC[i] = U;
+ else if (WEiVal == ZERO)
+ QC[i] = readEnds.get("D" + i).getValue();
+ }
+
+ QC[0] = CVal;
+
+ readWriteEnds.get("Q1").feedSignals(QC[1]);
+ readWriteEnds.get("Q2").feedSignals(QC[2]);
+ readWriteEnds.get("Q3").feedSignals(QC[3]);
+ readWriteEnds.get("Q4").feedSignals(QC[4]);
+
+ return QC;
+ }
+
+ @Override
+ protected Object getHighLevelState(Object state, String stateID)
+ {
+ switch (stateID)
+ {
+ case "q":
+ return BitVector.of(Arrays.copyOfRange((Bit[]) state, 1, 5));
+ default:
+ return super.getHighLevelState(state, stateID);
+ }
+ }
+
+ @Override
+ protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
+ {
+ switch (stateID)
+ {
+ case "q":
+ BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
+ if (newHighLevelStateCasted.length() != 4)
+ throw new IllegalArgumentException("Expected BitVector of length 4, not " + newHighLevelStateCasted.length());
+ System.arraycopy(newHighLevelStateCasted.getBits(), 0, lastState, 1, 4);
+ return lastState;
+ default:
+ return super.setHighLevelState(lastState, stateID, newHighLevelState);
+ }
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(Modeldff4_finewe.class.getCanonicalName(),
+ (m, p, n) -> new Modeldff4_finewe(m, n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components;
+
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.X;
+import static net.mograsim.logic.core.types.Bit.Z;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class Modelinc12 extends SimpleRectangularHardcodedModelComponent
+{
+ public Modelinc12(LogicModelModifiable model, String name)
+ {
+ super(model, "inc12", name, "Incrementer", false);
+ setSize(40, 20);
+ addPin(new Pin(model, this, "A", 12, PinUsage.INPUT, 20, 20), Position.TOP);
+ addPin(new Pin(model, this, "CI", 1, PinUsage.INPUT, 40, 10), Position.LEFT);
+ addPin(new Pin(model, this, "Y", 12, PinUsage.OUTPUT, 20, 0), Position.BOTTOM);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ Bit[] ABits = readEnds.get("A").getValues().getBits();
+ Bit CIVal = readEnds.get("CI").getValue();
+ Bit[] YBits = new Bit[12];
+ if (CIVal == X)
+ Arrays.fill(YBits, X);
+ else if (CIVal == U)
+ Arrays.fill(YBits, U);
+ else if (CIVal == Z)
+ Arrays.fill(YBits, X);
+ else if (CIVal == ZERO)
+ YBits = ABits;
+ else
+ {
+ Bit carry = Bit.ONE;
+ // TODO extract to helper. This code almost also exists in ModelAm2910RegCntr.
+ for (int i = 11; i >= 0; i--)
+ {
+ Bit a = ABits[i];
+ YBits[i] = a.xor(carry);
+ carry = a.and(carry);
+ }
+ }
+ readWriteEnds.get("Y").feedSignals(YBits);
+ return null;
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(Modelinc12.class.getCanonicalName(), (m, p, n) -> new Modelinc12(m, n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.X;
+import static net.mograsim.logic.core.types.Bit.Z;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class Modelnor12 extends SimpleRectangularHardcodedModelComponent
+{
+ public Modelnor12(LogicModelModifiable model, String name)
+ {
+ super(model, "nor12", name, "=0", false);
+ setSize(35, 20);
+ addPin(new Pin(model, this, "D", 12, PinUsage.INPUT, 0, 10), Position.RIGHT);
+ addPin(new Pin(model, this, "Y", 1, PinUsage.OUTPUT, 35, 10), Position.LEFT);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ readWriteEnds.get("Y").feedSignals(getResult(readEnds.get("D").getValues().getBits()));
+ return null;
+ }
+
+ private static Bit getResult(Bit[] DValArr)
+ {
+ for (int i = 0; i < 12; i++)
+ if (DValArr[i] == X)
+ return X;
+ for (int i = 0; i < 12; i++)
+ if (DValArr[i] == U)
+ return U;
+ for (int i = 0; i < 12; i++)
+ if (DValArr[i] == ONE)
+ return ZERO;
+ for (int i = 0; i < 12; i++)
+ if (DValArr[i] == Z)
+ return X;
+ return ONE;
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(Modelnor12.class.getCanonicalName(), (m, p, n) -> new Modelnor12(m, n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.X;
+import static net.mograsim.logic.core.types.Bit.Z;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class Modelram5_12 extends SimpleRectangularHardcodedModelComponent
+{
+ public Modelram5_12(LogicModelModifiable model, String name)
+ {
+ super(model, "ram5_12", name, "RAM\n5 x 12 Bit", false);
+ setSize(40, 40);
+ addPin(new Pin(model, this, "A", 3, PinUsage.INPUT, 10, 0), Position.BOTTOM);
+ addPin(new Pin(model, this, "B", 3, PinUsage.INPUT, 30, 0), Position.BOTTOM);
+ addPin(new Pin(model, this, "WE", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
+ addPin(new Pin(model, this, "C", 1, PinUsage.INPUT, 0, 15), Position.RIGHT);
+ addPin(new Pin(model, this, "Y", 12, PinUsage.OUTPUT, 0, 30), Position.RIGHT);
+ addPin(new Pin(model, this, "D", 12, PinUsage.INPUT, 20, 40), Position.TOP);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ BitVector[] memC = (BitVector[]) lastState;
+ if (memC == null)
+ {
+ memC = new BitVector[6];
+ Arrays.fill(memC, 0, 5, BitVector.of(U, 12));
+ memC[5] = BitVector.of(U);
+ }
+ BitVector CVal = readEnds.get("C").getValues();
+ BitVector oldC = memC[5];
+ // TODO is the timing right?
+ if (oldC.getLSBit(0) == ZERO && CVal.getLSBit(0) == ONE && readEnds.get("WE").getValue() == ONE)
+ {
+ int BInt = getAsInt(readEnds.get("B").getValues());
+ if (BInt == -1 || BInt > 4)
+ Arrays.fill(memC, BitVector.of(X, 12));
+ else if (BInt == -2)
+ Arrays.fill(memC, BitVector.of(U, 12));
+ else
+ memC[BInt] = readEnds.get("D").getValues();
+ }
+ int AInt = getAsInt(readEnds.get("A").getValues());
+ BitVector YVal = AInt == -1 || AInt > 4 ? BitVector.of(X, 12) : AInt == -2 ? BitVector.of(U, 12) : memC[AInt];
+ readWriteEnds.get("Y").feedSignals(YVal);
+ memC[5] = CVal;
+ return memC;
+ }
+
+ /**
+ * -1 means X, -2 means U
+ */
+ private static int getAsInt(BitVector vect)
+ {
+ Bit[] bits = vect.getBits();
+ for (int i = 0; i < 3; i++)
+ if (bits[i] == X)
+ return -1;
+ for (int i = 0; i < 3; i++)
+ if (bits[i] == U)
+ return -2;
+ for (int i = 0; i < 3; i++)
+ if (bits[i] == Z)
+ return -1;
+ return (bits[0] == ONE ? 4 : 0) + (bits[1] == ONE ? 2 : 0) + (bits[2] == ONE ? 1 : 0);
+ }
+
+ Pattern stateIDPattern = Pattern.compile("c(0[10][10]|100)");
+
+ @Override
+ protected Object getHighLevelState(Object state, String stateID)
+ {
+ Matcher m = stateIDPattern.matcher(stateID);
+ if (m.matches())
+ return ((BitVector[]) state)[Integer.parseInt(m.group(1), 2)];
+ return super.getHighLevelState(state, stateID);
+ }
+
+ @Override
+ protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
+ {
+ Matcher m = stateIDPattern.matcher(stateID);
+ if (m.matches())
+ {
+ int addr = Integer.parseInt(m.group(1), 2);
+ BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
+ if (newHighLevelStateCasted.length() != 12)
+ throw new IllegalArgumentException("Expected BitVector of length 12, not " + newHighLevelStateCasted.length());
+ BitVector[] memC = (BitVector[]) lastState;
+ memC[addr] = newHighLevelStateCasted;
+ return memC;
+ }
+ return super.setHighLevelState(lastState, stateID, newHighLevelState);
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(Modelram5_12.class.getCanonicalName(), (m, p, n) -> new Modelram5_12(m, n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.X;
+import static net.mograsim.logic.core.types.Bit.Z;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class Modelsel4_12 extends SimpleRectangularHardcodedModelComponent
+{
+ public Modelsel4_12(LogicModelModifiable model, String name)
+ {
+ super(model, "sel4_12", name, "4-way SEL\n12 bit", false);
+ setSize(80, 40);
+ addPin(new Pin(model, this, "SA", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
+ addPin(new Pin(model, this, "SB", 1, PinUsage.INPUT, 0, 15), Position.RIGHT);
+ addPin(new Pin(model, this, "SC", 1, PinUsage.INPUT, 0, 25), Position.RIGHT);
+ addPin(new Pin(model, this, "SD", 1, PinUsage.INPUT, 0, 35), Position.RIGHT);
+ addPin(new Pin(model, this, "A", 12, PinUsage.INPUT, 10, 0), Position.BOTTOM);
+ addPin(new Pin(model, this, "B", 12, PinUsage.INPUT, 30, 0), Position.BOTTOM);
+ addPin(new Pin(model, this, "C", 12, PinUsage.INPUT, 50, 0), Position.BOTTOM);
+ addPin(new Pin(model, this, "D", 12, PinUsage.INPUT, 70, 0), Position.BOTTOM);
+ addPin(new Pin(model, this, "Y", 12, PinUsage.OUTPUT, 40, 40), Position.TOP);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ Bit SAVal = readEnds.get("SA").getValue();
+ Bit SBVal = readEnds.get("SB").getValue();
+ Bit SCVal = readEnds.get("SC").getValue();
+ Bit SDVal = readEnds.get("SD").getValue();
+ BitVector YVal;
+ if (SAVal == X || SBVal == X || SCVal == X || SDVal == X)
+ YVal = BitVector.of(X, 12);
+ else if (SAVal == U || SBVal == U || SCVal == U || SDVal == U)
+ YVal = BitVector.of(U, 12);
+ else if (SAVal == Z || SBVal == Z || SCVal == Z || SDVal == Z)
+ YVal = BitVector.of(X, 12);
+ else
+ {
+ YVal = null;
+ if (SAVal == ONE)
+ YVal = readEnds.get("A").getValues();
+ if (SBVal == ONE)
+ if (YVal != null)
+ YVal = BitVector.of(X, 12);
+ else
+ YVal = readEnds.get("B").getValues();
+ if (SCVal == ONE)
+ if (YVal != null)
+ YVal = BitVector.of(X, 12);
+ else
+ YVal = readEnds.get("C").getValues();
+ if (SDVal == ONE)
+ if (YVal != null)
+ YVal = BitVector.of(X, 12);
+ else
+ YVal = readEnds.get("D").getValues();
+ if (YVal == null)
+ YVal = BitVector.of(ZERO, 12);
+ }
+
+ readWriteEnds.get("Y").feedSignals(YVal);
+ return null;
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(Modelsel4_12.class.getCanonicalName(), (m, p, n) -> new Modelsel4_12(m, n));
+ }
+}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components.am2904;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIAm2904RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIAm2904RegCTInstrDecode(ViewModelModifiable model, String name)
- {
- super(model, name, "Instruction\ndecode");
- setSize(80, 80);
- addPin(new Pin(this, "I12-11", 2, PinUsage.INPUT, 0, 30), Position.RIGHT);
- addPin(new Pin(this, "I5-0", 6, PinUsage.INPUT, 0, 50), Position.RIGHT);
- // muSR MUX:
- // 00: 0
- // 01: 1
- // 10: M
- // 11: I
- addPin(new Pin(this, "muSR_MUX", 2, PinUsage.OUTPUT, 80, 10), Position.LEFT);
- addPin(new Pin(this, "muSR_OVRRET", 1, PinUsage.OUTPUT, 80, 20), Position.LEFT);
- addPin(new Pin(this, "muSR_CINV", 1, PinUsage.OUTPUT, 80, 30), Position.LEFT);
- addPin(new Pin(this, "muSR_WEZ", 1, PinUsage.OUTPUT, 80, 40), Position.LEFT);
- addPin(new Pin(this, "muSR_WEC", 1, PinUsage.OUTPUT, 80, 50), Position.LEFT);
- addPin(new Pin(this, "muSR_WEN", 1, PinUsage.OUTPUT, 80, 60), Position.LEFT);
- addPin(new Pin(this, "muSR_WEOVR", 1, PinUsage.OUTPUT, 80, 70), Position.LEFT);
- // MSR MUX:
- // 000: 0
- // 001: 1
- // 010: mu
- // 011: Y
- // 100: I
- // 101: I, invert C
- // 110: Swap OVR and C
- // 111: _M
- addPin(new Pin(this, "MSR_MUX", 3, PinUsage.OUTPUT, 20, 0), Position.BOTTOM);
- addPin(new Pin(this, "OEN", 1, PinUsage.OUTPUT, 60, 0), Position.BOTTOM);
- // Y MUX:
- // 00: mu
- // 01: mu
- // 10: M
- // 11: I
- addPin(new Pin(this, "Y_MUX", 2, PinUsage.OUTPUT, 10, 80), Position.TOP);
- // CT MUX:
- // see Am2900 Family Data Book, Am2904, Table 4 (CT_MUX2-0 = I3-1)
- addPin(new Pin(this, "CT_MUX", 3, PinUsage.OUTPUT, 30, 80), Position.TOP);
- addPin(new Pin(this, "CT_INV", 1, PinUsage.OUTPUT, 40, 80), Position.TOP);
- addPin(new Pin(this, "CT_EXP", 1, PinUsage.OUTPUT, 50, 80), Position.TOP);
- // C0 MUX:
- // 00xx: 0
- // 01xx: 1
- // 10xx: CX
- // 1100: muC
- // 1101: _muC
- // 1110: MC
- // 1111: _MC
- addPin(new Pin(this, "C0_MUX", 4, PinUsage.OUTPUT, 70, 80), Position.TOP);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- Bit[] I5_0Bits = readEnds.get("I5-0").getValues().getBits();
- Bit[] I12_11Bits = readEnds.get("I12-11").getValues().getBits();
- int IAsInt = 0;
- for (int i = 0; i < 6; i++)
- switch (I5_0Bits[5 - i])
- {
- case ONE:
- IAsInt |= 1 << i;
- break;
- case U:
- for (ReadWriteEnd e : readWriteEnds.values())
- e.feedSignals(BitVector.of(U, e.width()));
- return null;
- case X:
- case Z:
- for (ReadWriteEnd e : readWriteEnds.values())
- e.feedSignals(BitVector.of(X, e.width()));
- return null;
- case ZERO:
- break;
- default:
- throw new IllegalArgumentException("Unknown enum constant: " + I5_0Bits[i]);
- }
- switch (IAsInt)
- {
- case 0:
- case 2:
- readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
- readWriteEnds.get("muSR_WEC").feedSignals(ONE);
- readWriteEnds.get("muSR_WEN").feedSignals(ONE);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
- break;
- case 1:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
- readWriteEnds.get("muSR_WEC").feedSignals(ONE);
- readWriteEnds.get("muSR_WEN").feedSignals(ONE);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
- break;
- case 3:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
- readWriteEnds.get("muSR_WEC").feedSignals(ONE);
- readWriteEnds.get("muSR_WEN").feedSignals(ONE);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
- break;
- case 6:
- case 7:
- readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ONE);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
- readWriteEnds.get("muSR_WEC").feedSignals(ONE);
- readWriteEnds.get("muSR_WEN").feedSignals(ONE);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
- break;
- case 8:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
- readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
- break;
- case 9:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
- readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
- break;
- case 10:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEC").feedSignals(ONE);
- readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
- break;
- case 11:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEC").feedSignals(ONE);
- readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
- break;
- case 12:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEN").feedSignals(ONE);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
- break;
- case 13:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEN").feedSignals(ONE);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
- break;
- case 14:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
- break;
- case 15:
- readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
- break;
- case 24:
- case 25:
- case 40:
- case 41:
- case 56:
- case 57:
- readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ONE);
- readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
- readWriteEnds.get("muSR_WEC").feedSignals(ONE);
- readWriteEnds.get("muSR_WEN").feedSignals(ONE);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
- break;
- default:
- readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
- readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
- readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
- readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
- readWriteEnds.get("muSR_WEC").feedSignals(ONE);
- readWriteEnds.get("muSR_WEN").feedSignals(ONE);
- readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
- }
- switch (IAsInt)
- {
- case 0:
- readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ONE);
- break;
- case 1:
- readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ONE);
- break;
- case 2:
- readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ZERO);
- break;
- case 3:
- readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ZERO);
- break;
- case 4:
- readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ZERO);
- break;
- case 5:
- readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ONE);
- break;
- case 8:
- case 9:
- case 24:
- case 25:
- case 40:
- case 41:
- case 56:
- case 57:
- readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ONE);
- break;
- default:
- readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ZERO);
- break;
- }
- readWriteEnds.get("OEN").feedSignals(I5_0Bits[0].or(I5_0Bits[1]).or(I5_0Bits[2]).or(I5_0Bits[3]).or(I5_0Bits[4]).or(I5_0Bits[5]));
- readWriteEnds.get("Y_MUX").feedSignals(I5_0Bits[0], I5_0Bits[1]);
- readWriteEnds.get("CT_INV").feedSignals(I5_0Bits[5]);
- readWriteEnds.get("CT_MUX").feedSignals(I5_0Bits[2], I5_0Bits[3], I5_0Bits[4]);
- readWriteEnds.get("CT_EXP").feedSignals((IAsInt & 0b111110) == 0b001110 ? ONE : ZERO);
- readWriteEnds.get("C0_MUX").feedSignals(I12_11Bits[0], I12_11Bits[1], I5_0Bits[0],
- I5_0Bits[2].and(I5_0Bits[3].not()).and(I5_0Bits[4].not()));
- return null;
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIAm2904RegCTInstrDecode.class.getCanonicalName(),
- (m, p, n) -> new GUIAm2904RegCTInstrDecode(m, n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components.am2904;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.Z;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIAm2904ShiftInstrDecode extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIAm2904ShiftInstrDecode(ViewModelModifiable model, String name)
- {
- super(model, name, "Shift \ninstruction\ndecode");
- setSize(60, 80);
- addPin(new Pin(this, "I", 5, PinUsage.INPUT, 0, 25), Position.RIGHT);
- addPin(new Pin(this, "_SE", 1, PinUsage.INPUT, 0, 55), Position.RIGHT);
- // SIO0 MUX:
- // 000: 0
- // 001: 1
- // 01x: SIOn
- // 10x: QIOn
- // 11x: MC
- addPin(new Pin(this, "SIO0_MUX", 3, PinUsage.OUTPUT, 60, 5), Position.LEFT);
- // SIOn MUX:
- // 000: 0
- // 001: 1
- // 010: SIO0
- // 011: QIO0
- // 100: MC
- // 101: MN
- // 110: IC
- // 111: IN xor IVOR
- addPin(new Pin(this, "SIOn_MUX", 3, PinUsage.OUTPUT, 60, 15), Position.LEFT);
- // QIO0 MUX:
- // 000: 0
- // 001: 1
- // 01x: SIOn
- // 10x: QIOn
- // 11x: MC
- addPin(new Pin(this, "QIO0_MUX", 3, PinUsage.OUTPUT, 60, 25), Position.LEFT);
- // QIOn MUX:
- // 000: 0
- // 001: 1
- // 01x: SIO0
- // 10x: QIO0
- // 11x: MN
- addPin(new Pin(this, "QIOn_MUX", 3, PinUsage.OUTPUT, 60, 35), Position.LEFT);
- addPin(new Pin(this, "OEn", 1, PinUsage.OUTPUT, 60, 45), Position.LEFT);
- addPin(new Pin(this, "OE0", 1, PinUsage.OUTPUT, 60, 55), Position.LEFT);
- // 00: SIO0
- // 01: QIO0
- // 1x: SIOn
- addPin(new Pin(this, "MC_MUX", 2, PinUsage.OUTPUT, 60, 65), Position.LEFT);
- addPin(new Pin(this, "MC_EN", 1, PinUsage.OUTPUT, 60, 75), Position.LEFT);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- Bit _SE = readEnds.get("_SE").getValue();
- BitVector I = readEnds.get("I").getValues();
- readWriteEnds.get("OEn").feedSignals(I.getMSBit(0).not().and(_SE.not()));
- readWriteEnds.get("OE0").feedSignals(I.getMSBit(0).and(_SE.not()));
- if (_SE == Z || _SE == X)
- {
- readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
- readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
- readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
- readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
- readWriteEnds.get("MC_MUX").feedSignals(X, X);
- readWriteEnds.get("MC_EN").feedSignals(X);
- return null;
- } else if (_SE == U)
- {
-
- readWriteEnds.get("SIO0_MUX").feedSignals(U, U, U);
- readWriteEnds.get("SIOn_MUX").feedSignals(U, U, U);
- readWriteEnds.get("QIO0_MUX").feedSignals(U, U, U);
- readWriteEnds.get("QIOn_MUX").feedSignals(U, U, U);
- readWriteEnds.get("MC_MUX").feedSignals(U, U);
- readWriteEnds.get("MC_EN").feedSignals(U);
- return null;
- } else if (_SE == ONE)
- {
- readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
- readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
- readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
- readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
- readWriteEnds.get("MC_MUX").feedSignals(X, X);
- readWriteEnds.get("MC_EN").feedSignals(ZERO);
- return null;
- }
- if (!I.isBinary())
- {
- Bit val = null;
- for (Bit b : I.getBits())
- if (!b.isBinary())
- {
- val = b;
- break;
- }
- readWriteEnds.get("SIO0_MUX").feedSignals(val, val, val);
- readWriteEnds.get("SIOn_MUX").feedSignals(val, val, val);
- readWriteEnds.get("QIO0_MUX").feedSignals(val, val, val);
- readWriteEnds.get("QIOn_MUX").feedSignals(val, val, val);
- readWriteEnds.get("MC_MUX").feedSignals(val, val);
- readWriteEnds.get("MC_EN").feedSignals(val);
- return null;
- }
- int IAsInt = I.getUnsignedValue().intValue();
- if (IAsInt < 16)
- {
- readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
- readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
- switch (IAsInt)
- {
- case 0:
- case 2:
- case 6:
- case 7:
- readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ZERO, ZERO);
- break;
- case 1:
- case 3:
- readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ZERO, ONE);
- break;
- case 4:
- case 9:
- case 12:
- readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ZERO, ZERO);
- break;
- case 5:
- readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ZERO, ONE);
- break;
- case 8:
- case 10:
- readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ONE, ZERO);
- break;
- case 11:
- readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ONE, ZERO);
- break;
- case 13:
- case 15:
- readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ONE, ONE);
- break;
- case 14:
- readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ONE, ONE);
- break;
- default:
- throw new IllegalStateException("can't happen");
- }
- switch (IAsInt)
- {
- case 0:
- readWriteEnds.get("QIOn_MUX").feedSignals(ZERO, ZERO, ZERO);
- break;
- case 1:
- readWriteEnds.get("QIOn_MUX").feedSignals(ZERO, ZERO, ONE);
- break;
- case 2:
- readWriteEnds.get("QIOn_MUX").feedSignals(ONE, ONE, X);
- break;
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- readWriteEnds.get("QIOn_MUX").feedSignals(ZERO, ONE, X);
- break;
- case 8:
- case 9:
- case 10:
- readWriteEnds.get("QIOn_MUX").feedSignals(ONE, ZERO, X);
- break;
- default:
- throw new IllegalStateException("can't happen");
- }
- } else
- {
- readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
- readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
- switch (IAsInt)
- {
- case 16:
- case 18:
- readWriteEnds.get("SIO0_MUX").feedSignals(ZERO, ZERO, ZERO);
- break;
- case 17:
- case 19:
- readWriteEnds.get("SIO0_MUX").feedSignals(ZERO, ZERO, ONE);
- break;
- case 20:
- case 21:
- case 22:
- case 23:
- case 28:
- case 29:
- case 30:
- case 31:
- readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ZERO, X);
- break;
- case 24:
- case 26:
- readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ONE, X);
- break;
- case 25:
- case 27:
- readWriteEnds.get("SIO0_MUX").feedSignals(ZERO, ONE, X);
- break;
- default:
- throw new IllegalStateException("can't happen");
- }
- switch (IAsInt)
- {
- case 16:
- case 18:
- case 20:
- case 22:
- case 27:
- readWriteEnds.get("QIO0_MUX").feedSignals(ZERO, ZERO, ZERO);
- break;
- case 17:
- case 19:
- case 21:
- case 23:
- readWriteEnds.get("QIO0_MUX").feedSignals(ZERO, ZERO, ONE);
- break;
- case 24:
- case 25:
- case 26:
- readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ZERO, X);
- break;
- case 28:
- case 30:
- readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ONE, X);
- break;
- case 29:
- case 31:
- readWriteEnds.get("QIO0_MUX").feedSignals(ZERO, ONE, X);
- break;
- default:
- throw new IllegalStateException("can't happen");
- }
- }
- // MC
- switch (IAsInt)
- {
- case 0:
- case 1:
- case 3:
- case 4:
- case 5:
- case 6:
- case 10:
- case 11:
- case 14:
- case 15:
- case 18:
- case 19:
- case 22:
- case 23:
- case 26:
- case 27:
- case 30:
- case 31:
- readWriteEnds.get("MC_EN").feedSignals(ZERO);
- readWriteEnds.get("MC_MUX").feedSignals(X, X);
- break;
- case 2:
- case 8:
- case 9:
- readWriteEnds.get("MC_EN").feedSignals(ONE);
- readWriteEnds.get("MC_MUX").feedSignals(ZERO, ZERO);
- break;
- case 7:
- case 12:
- case 13:
- readWriteEnds.get("MC_EN").feedSignals(ONE);
- readWriteEnds.get("MC_MUX").feedSignals(ZERO, ONE);
- break;
- case 16:
- case 17:
- case 20:
- case 21:
- case 24:
- case 25:
- case 28:
- case 29:
- readWriteEnds.get("MC_EN").feedSignals(ONE);
- readWriteEnds.get("MC_MUX").feedSignals(ONE, X);
- break;
- default:
- throw new IllegalStateException("can't happen");
- }
- return null;
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIAm2904ShiftInstrDecode.class.getCanonicalName(),
- (m, p, n) -> new GUIAm2904ShiftInstrDecode(m, n));
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components.am2904;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.X;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class ModelAm2904RegCTInstrDecode extends SimpleRectangularHardcodedModelComponent
+{
+ public ModelAm2904RegCTInstrDecode(LogicModelModifiable model, String name)
+ {
+ super(model, "Am2904RegCTInstrDecode", name, "Instruction\ndecode", false);
+ setSize(80, 80);
+ addPin(new Pin(model, this, "I12-11", 2, PinUsage.INPUT, 0, 30), Position.RIGHT);
+ addPin(new Pin(model, this, "I5-0", 6, PinUsage.INPUT, 0, 50), Position.RIGHT);
+ // muSR MUX:
+ // 00: 0
+ // 01: 1
+ // 10: M
+ // 11: I
+ addPin(new Pin(model, this, "muSR_MUX", 2, PinUsage.OUTPUT, 80, 10), Position.LEFT);
+ addPin(new Pin(model, this, "muSR_OVRRET", 1, PinUsage.OUTPUT, 80, 20), Position.LEFT);
+ addPin(new Pin(model, this, "muSR_CINV", 1, PinUsage.OUTPUT, 80, 30), Position.LEFT);
+ addPin(new Pin(model, this, "muSR_WEZ", 1, PinUsage.OUTPUT, 80, 40), Position.LEFT);
+ addPin(new Pin(model, this, "muSR_WEC", 1, PinUsage.OUTPUT, 80, 50), Position.LEFT);
+ addPin(new Pin(model, this, "muSR_WEN", 1, PinUsage.OUTPUT, 80, 60), Position.LEFT);
+ addPin(new Pin(model, this, "muSR_WEOVR", 1, PinUsage.OUTPUT, 80, 70), Position.LEFT);
+ // MSR MUX:
+ // 000: 0
+ // 001: 1
+ // 010: mu
+ // 011: Y
+ // 100: I
+ // 101: I, invert C
+ // 110: Swap OVR and C
+ // 111: _M
+ addPin(new Pin(model, this, "MSR_MUX", 3, PinUsage.OUTPUT, 20, 0), Position.BOTTOM);
+ addPin(new Pin(model, this, "OEN", 1, PinUsage.OUTPUT, 60, 0), Position.BOTTOM);
+ // Y MUX:
+ // 00: mu
+ // 01: mu
+ // 10: M
+ // 11: I
+ addPin(new Pin(model, this, "Y_MUX", 2, PinUsage.OUTPUT, 10, 80), Position.TOP);
+ // CT MUX:
+ // see Am2900 Family Data Book, Am2904, Table 4 (CT_MUX2-0 = I3-1)
+ addPin(new Pin(model, this, "CT_MUX", 3, PinUsage.OUTPUT, 30, 80), Position.TOP);
+ addPin(new Pin(model, this, "CT_INV", 1, PinUsage.OUTPUT, 40, 80), Position.TOP);
+ addPin(new Pin(model, this, "CT_EXP", 1, PinUsage.OUTPUT, 50, 80), Position.TOP);
+ // C0 MUX:
+ // 00xx: 0
+ // 01xx: 1
+ // 10xx: CX
+ // 1100: muC
+ // 1101: _muC
+ // 1110: MC
+ // 1111: _MC
+ addPin(new Pin(model, this, "C0_MUX", 4, PinUsage.OUTPUT, 70, 80), Position.TOP);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ Bit[] I5_0Bits = readEnds.get("I5-0").getValues().getBits();
+ Bit[] I12_11Bits = readEnds.get("I12-11").getValues().getBits();
+ int IAsInt = 0;
+ for (int i = 0; i < 6; i++)
+ switch (I5_0Bits[5 - i])
+ {
+ case ONE:
+ IAsInt |= 1 << i;
+ break;
+ case U:
+ for (ReadWriteEnd e : readWriteEnds.values())
+ e.feedSignals(BitVector.of(U, e.width()));
+ return null;
+ case X:
+ case Z:
+ for (ReadWriteEnd e : readWriteEnds.values())
+ e.feedSignals(BitVector.of(X, e.width()));
+ return null;
+ case ZERO:
+ break;
+ default:
+ throw new IllegalArgumentException("Unknown enum constant: " + I5_0Bits[i]);
+ }
+ switch (IAsInt)
+ {
+ case 0:
+ case 2:
+ readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
+ break;
+ case 1:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
+ break;
+ case 3:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
+ break;
+ case 6:
+ case 7:
+ readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ONE);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
+ break;
+ case 8:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
+ break;
+ case 9:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
+ break;
+ case 10:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
+ break;
+ case 11:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
+ break;
+ case 12:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
+ break;
+ case 13:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
+ break;
+ case 14:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
+ break;
+ case 15:
+ readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
+ break;
+ case 24:
+ case 25:
+ case 40:
+ case 41:
+ case 56:
+ case 57:
+ readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
+ break;
+ default:
+ readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
+ readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
+ readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
+ readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+ readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
+ }
+ switch (IAsInt)
+ {
+ case 0:
+ readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ONE);
+ break;
+ case 1:
+ readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ONE);
+ break;
+ case 2:
+ readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ZERO);
+ break;
+ case 3:
+ readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ZERO);
+ break;
+ case 4:
+ readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ZERO);
+ break;
+ case 5:
+ readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ONE);
+ break;
+ case 8:
+ case 9:
+ case 24:
+ case 25:
+ case 40:
+ case 41:
+ case 56:
+ case 57:
+ readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ONE);
+ break;
+ default:
+ readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ZERO);
+ break;
+ }
+ readWriteEnds.get("OEN").feedSignals(I5_0Bits[0].or(I5_0Bits[1]).or(I5_0Bits[2]).or(I5_0Bits[3]).or(I5_0Bits[4]).or(I5_0Bits[5]));
+ readWriteEnds.get("Y_MUX").feedSignals(I5_0Bits[0], I5_0Bits[1]);
+ readWriteEnds.get("CT_INV").feedSignals(I5_0Bits[5]);
+ readWriteEnds.get("CT_MUX").feedSignals(I5_0Bits[2], I5_0Bits[3], I5_0Bits[4]);
+ readWriteEnds.get("CT_EXP").feedSignals((IAsInt & 0b111110) == 0b001110 ? ONE : ZERO);
+ readWriteEnds.get("C0_MUX").feedSignals(I12_11Bits[0], I12_11Bits[1], I5_0Bits[0],
+ I5_0Bits[2].and(I5_0Bits[3].not()).and(I5_0Bits[4].not()));
+ return null;
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(ModelAm2904RegCTInstrDecode.class.getCanonicalName(),
+ (m, p, n) -> new ModelAm2904RegCTInstrDecode(m, n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components.am2904;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.X;
+import static net.mograsim.logic.core.types.Bit.Z;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class ModelAm2904ShiftInstrDecode extends SimpleRectangularHardcodedModelComponent
+{
+ public ModelAm2904ShiftInstrDecode(LogicModelModifiable model, String name)
+ {
+ super(model, "Am2904ShiftInstrDecode", name, "Shift \ninstruction\ndecode", false);
+ setSize(60, 80);
+ addPin(new Pin(model, this, "I", 5, PinUsage.INPUT, 0, 25), Position.RIGHT);
+ addPin(new Pin(model, this, "_SE", 1, PinUsage.INPUT, 0, 55), Position.RIGHT);
+ // SIO0 MUX:
+ // 000: 0
+ // 001: 1
+ // 01x: SIOn
+ // 10x: QIOn
+ // 11x: MC
+ addPin(new Pin(model, this, "SIO0_MUX", 3, PinUsage.OUTPUT, 60, 5), Position.LEFT);
+ // SIOn MUX:
+ // 000: 0
+ // 001: 1
+ // 010: SIO0
+ // 011: QIO0
+ // 100: MC
+ // 101: MN
+ // 110: IC
+ // 111: IN xor IVOR
+ addPin(new Pin(model, this, "SIOn_MUX", 3, PinUsage.OUTPUT, 60, 15), Position.LEFT);
+ // QIO0 MUX:
+ // 000: 0
+ // 001: 1
+ // 01x: SIOn
+ // 10x: QIOn
+ // 11x: MC
+ addPin(new Pin(model, this, "QIO0_MUX", 3, PinUsage.OUTPUT, 60, 25), Position.LEFT);
+ // QIOn MUX:
+ // 000: 0
+ // 001: 1
+ // 01x: SIO0
+ // 10x: QIO0
+ // 11x: MN
+ addPin(new Pin(model, this, "QIOn_MUX", 3, PinUsage.OUTPUT, 60, 35), Position.LEFT);
+ addPin(new Pin(model, this, "OEn", 1, PinUsage.OUTPUT, 60, 45), Position.LEFT);
+ addPin(new Pin(model, this, "OE0", 1, PinUsage.OUTPUT, 60, 55), Position.LEFT);
+ // 00: SIO0
+ // 01: QIO0
+ // 1x: SIOn
+ addPin(new Pin(model, this, "MC_MUX", 2, PinUsage.OUTPUT, 60, 65), Position.LEFT);
+ addPin(new Pin(model, this, "MC_EN", 1, PinUsage.OUTPUT, 60, 75), Position.LEFT);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ Bit _SE = readEnds.get("_SE").getValue();
+ BitVector I = readEnds.get("I").getValues();
+ readWriteEnds.get("OEn").feedSignals(I.getMSBit(0).not().and(_SE.not()));
+ readWriteEnds.get("OE0").feedSignals(I.getMSBit(0).and(_SE.not()));
+ if (_SE == Z || _SE == X)
+ {
+ readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("MC_MUX").feedSignals(X, X);
+ readWriteEnds.get("MC_EN").feedSignals(X);
+ return null;
+ } else if (_SE == U)
+ {
+
+ readWriteEnds.get("SIO0_MUX").feedSignals(U, U, U);
+ readWriteEnds.get("SIOn_MUX").feedSignals(U, U, U);
+ readWriteEnds.get("QIO0_MUX").feedSignals(U, U, U);
+ readWriteEnds.get("QIOn_MUX").feedSignals(U, U, U);
+ readWriteEnds.get("MC_MUX").feedSignals(U, U);
+ readWriteEnds.get("MC_EN").feedSignals(U);
+ return null;
+ } else if (_SE == ONE)
+ {
+ readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("MC_MUX").feedSignals(X, X);
+ readWriteEnds.get("MC_EN").feedSignals(ZERO);
+ return null;
+ }
+ if (!I.isBinary())
+ {
+ Bit val = null;
+ for (Bit b : I.getBits())
+ if (!b.isBinary())
+ {
+ val = b;
+ break;
+ }
+ readWriteEnds.get("SIO0_MUX").feedSignals(val, val, val);
+ readWriteEnds.get("SIOn_MUX").feedSignals(val, val, val);
+ readWriteEnds.get("QIO0_MUX").feedSignals(val, val, val);
+ readWriteEnds.get("QIOn_MUX").feedSignals(val, val, val);
+ readWriteEnds.get("MC_MUX").feedSignals(val, val);
+ readWriteEnds.get("MC_EN").feedSignals(val);
+ return null;
+ }
+ int IAsInt = I.getUnsignedValue().intValue();
+ if (IAsInt < 16)
+ {
+ readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
+ switch (IAsInt)
+ {
+ case 0:
+ case 2:
+ case 6:
+ case 7:
+ readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ZERO, ZERO);
+ break;
+ case 1:
+ case 3:
+ readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ZERO, ONE);
+ break;
+ case 4:
+ case 9:
+ case 12:
+ readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ZERO, ZERO);
+ break;
+ case 5:
+ readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ZERO, ONE);
+ break;
+ case 8:
+ case 10:
+ readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ONE, ZERO);
+ break;
+ case 11:
+ readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ONE, ZERO);
+ break;
+ case 13:
+ case 15:
+ readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ONE, ONE);
+ break;
+ case 14:
+ readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ONE, ONE);
+ break;
+ default:
+ throw new IllegalStateException("can't happen");
+ }
+ switch (IAsInt)
+ {
+ case 0:
+ readWriteEnds.get("QIOn_MUX").feedSignals(ZERO, ZERO, ZERO);
+ break;
+ case 1:
+ readWriteEnds.get("QIOn_MUX").feedSignals(ZERO, ZERO, ONE);
+ break;
+ case 2:
+ readWriteEnds.get("QIOn_MUX").feedSignals(ONE, ONE, X);
+ break;
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ readWriteEnds.get("QIOn_MUX").feedSignals(ZERO, ONE, X);
+ break;
+ case 8:
+ case 9:
+ case 10:
+ readWriteEnds.get("QIOn_MUX").feedSignals(ONE, ZERO, X);
+ break;
+ default:
+ throw new IllegalStateException("can't happen");
+ }
+ } else
+ {
+ readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
+ readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
+ switch (IAsInt)
+ {
+ case 16:
+ case 18:
+ readWriteEnds.get("SIO0_MUX").feedSignals(ZERO, ZERO, ZERO);
+ break;
+ case 17:
+ case 19:
+ readWriteEnds.get("SIO0_MUX").feedSignals(ZERO, ZERO, ONE);
+ break;
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ZERO, X);
+ break;
+ case 24:
+ case 26:
+ readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ONE, X);
+ break;
+ case 25:
+ case 27:
+ readWriteEnds.get("SIO0_MUX").feedSignals(ZERO, ONE, X);
+ break;
+ default:
+ throw new IllegalStateException("can't happen");
+ }
+ switch (IAsInt)
+ {
+ case 16:
+ case 18:
+ case 20:
+ case 22:
+ case 27:
+ readWriteEnds.get("QIO0_MUX").feedSignals(ZERO, ZERO, ZERO);
+ break;
+ case 17:
+ case 19:
+ case 21:
+ case 23:
+ readWriteEnds.get("QIO0_MUX").feedSignals(ZERO, ZERO, ONE);
+ break;
+ case 24:
+ case 25:
+ case 26:
+ readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ZERO, X);
+ break;
+ case 28:
+ case 30:
+ readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ONE, X);
+ break;
+ case 29:
+ case 31:
+ readWriteEnds.get("QIO0_MUX").feedSignals(ZERO, ONE, X);
+ break;
+ default:
+ throw new IllegalStateException("can't happen");
+ }
+ }
+ // MC
+ switch (IAsInt)
+ {
+ case 0:
+ case 1:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 10:
+ case 11:
+ case 14:
+ case 15:
+ case 18:
+ case 19:
+ case 22:
+ case 23:
+ case 26:
+ case 27:
+ case 30:
+ case 31:
+ readWriteEnds.get("MC_EN").feedSignals(ZERO);
+ readWriteEnds.get("MC_MUX").feedSignals(X, X);
+ break;
+ case 2:
+ case 8:
+ case 9:
+ readWriteEnds.get("MC_EN").feedSignals(ONE);
+ readWriteEnds.get("MC_MUX").feedSignals(ZERO, ZERO);
+ break;
+ case 7:
+ case 12:
+ case 13:
+ readWriteEnds.get("MC_EN").feedSignals(ONE);
+ readWriteEnds.get("MC_MUX").feedSignals(ZERO, ONE);
+ break;
+ case 16:
+ case 17:
+ case 20:
+ case 21:
+ case 24:
+ case 25:
+ case 28:
+ case 29:
+ readWriteEnds.get("MC_EN").feedSignals(ONE);
+ readWriteEnds.get("MC_MUX").feedSignals(ONE, X);
+ break;
+ default:
+ throw new IllegalStateException("can't happen");
+ }
+ return null;
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(ModelAm2904ShiftInstrDecode.class.getCanonicalName(),
+ (m, p, n) -> new ModelAm2904ShiftInstrDecode(m, n));
+ }
+}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components.am2910;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIAm2910InstrPLA extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIAm2910InstrPLA(ViewModelModifiable model, String name)
- {
- super(model, name, "Instr.\nPLA");
- setSize(30, 85);
- addPin(new Pin(this, "PASS", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
- addPin(new Pin(this, "I", 4, PinUsage.INPUT, 0, 20), Position.RIGHT);
- addPin(new Pin(this, "R=0", 1, PinUsage.INPUT, 15, 0), Position.BOTTOM);
- addPin(new Pin(this, "_PL", 1, PinUsage.OUTPUT, 5, 85), Position.TOP);
- addPin(new Pin(this, "_MAP", 1, PinUsage.OUTPUT, 15, 85), Position.TOP);
- addPin(new Pin(this, "_VECT", 1, PinUsage.OUTPUT, 25, 85), Position.TOP);
- addPin(new Pin(this, "RWE", 1, PinUsage.OUTPUT, 30, 5), Position.LEFT);
- addPin(new Pin(this, "RDEC", 1, PinUsage.OUTPUT, 30, 15), Position.LEFT);
- addPin(new Pin(this, "YD", 1, PinUsage.OUTPUT, 30, 25), Position.LEFT);
- addPin(new Pin(this, "YR", 1, PinUsage.OUTPUT, 30, 35), Position.LEFT);
- addPin(new Pin(this, "YF", 1, PinUsage.OUTPUT, 30, 45), Position.LEFT);
- addPin(new Pin(this, "YmuPC", 1, PinUsage.OUTPUT, 30, 55), Position.LEFT);
- addPin(new Pin(this, "STKI0", 1, PinUsage.OUTPUT, 30, 65), Position.LEFT);
- addPin(new Pin(this, "STKI1", 1, PinUsage.OUTPUT, 30, 75), Position.LEFT);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- ReadEnd PASS = readEnds.get("PASS");
- ReadEnd I = readEnds.get("I");
- ReadEnd Req0 = readEnds.get("R=0");
- ReadWriteEnd _PL = readWriteEnds.get("_PL");
- ReadWriteEnd _MAP = readWriteEnds.get("_MAP");
- ReadWriteEnd _VECT = readWriteEnds.get("_VECT");
- ReadWriteEnd RWE = readWriteEnds.get("RWE");
- ReadWriteEnd RDEC = readWriteEnds.get("RDEC");
- ReadWriteEnd YD = readWriteEnds.get("YD");
- ReadWriteEnd YR = readWriteEnds.get("YR");
- ReadWriteEnd YF = readWriteEnds.get("YF");
- ReadWriteEnd YmuPC = readWriteEnds.get("YmuPC");
- ReadWriteEnd STKI0 = readWriteEnds.get("STKI0");
- ReadWriteEnd STKI1 = readWriteEnds.get("STKI1");
-
- Bit PASSVal = PASS.getValue();
- Bit I3Val = I.getValue(3);
- Bit I2Val = I.getValue(2);
- Bit I1Val = I.getValue(1);
- Bit I0Val = I.getValue(0);
- Bit Req0Val = Req0.getValue();
-
- if (!I3Val.isBinary() || !I2Val.isBinary() || !I1Val.isBinary() || !I0Val.isBinary())
- if ((I3Val == U || I3Val.isBinary()) || (I2Val == U || I2Val.isBinary()) || (I1Val == U || I1Val.isBinary())
- || (I0Val == U || I0Val.isBinary()))
- {
- _PL.feedSignals(U);
- _MAP.feedSignals(U);
- _VECT.feedSignals(U);
- RWE.feedSignals(U);
- RDEC.feedSignals(U);
- YD.feedSignals(U);
- YR.feedSignals(U);
- YF.feedSignals(U);
- YmuPC.feedSignals(U);
- STKI0.feedSignals(U);
- STKI1.feedSignals(U);
- } else
- {
- _PL.feedSignals(X);
- _MAP.feedSignals(X);
- _VECT.feedSignals(X);
- RWE.feedSignals(X);
- RDEC.feedSignals(X);
- YD.feedSignals(X);
- YR.feedSignals(X);
- YF.feedSignals(X);
- YmuPC.feedSignals(X);
- STKI0.feedSignals(X);
- STKI1.feedSignals(X);
- }
- else
- {
- int IAsInt = (I3Val == ONE ? 8 : 0) + (I2Val == ONE ? 4 : 0) + (I1Val == ONE ? 2 : 0) + (I0Val == ONE ? 1 : 0);
- Bit _PLVal = ONE;
- Bit _MAPVal = ONE;
- Bit _VECTVal = ONE;
- if (IAsInt == 2)
- _MAPVal = ZERO;
- else if (IAsInt == 6)
- _VECTVal = ZERO;
- else
- _PLVal = ZERO;
- _PL.feedSignals(_PLVal);
- _MAP.feedSignals(_MAPVal);
- _VECT.feedSignals(_VECTVal);
- if (IAsInt == 8 || IAsInt == 9 || IAsInt == 15)
- {
- RWE.feedSignals(Req0Val);
- RDEC.feedSignals(Req0Val);// "forward" X/U/Z
- } else if (IAsInt == 4)
- {
- RWE.feedSignals(PASSVal);
- RDEC.feedSignals(PASSVal == ONE ? ZERO : PASSVal);// "forward" X/U/Z
- } else
- {
- RWE.feedSignals(ZERO);
- RDEC.feedSignals(ZERO);
- }
- if (!PASSVal.isBinary())
- {
- YD.feedSignals(PASSVal);// "forward" X/U/Z
- YR.feedSignals(PASSVal);// "forward" X/U/Z
- YF.feedSignals(PASSVal);// "forward" X/U/Z
- YmuPC.feedSignals(PASSVal);// "forward" X/U/Z
- } else
- {
- Bit YDVal = ZERO;
- Bit YRVal = ZERO;
- Bit YFVal = ZERO;
- Bit YmuPCVal = ZERO;
- switch (IAsInt + (PASSVal == ONE ? 16 : 0))
- {
- case 0:
- case 0 + 16:
- break;
- case 2:
- case 1 + 16:
- case 2 + 16:
- case 3 + 16:
- case 5 + 16:
- case 6 + 16:
- case 7 + 16:
- case 11 + 16:
- YDVal = ONE;
- break;
- case 5:
- case 7:
- YRVal = ONE;
- break;
- case 13:
- case 10 + 16:
- YFVal = ONE;
- break;
- case 1:
- case 3:
- case 4:
- case 6:
- case 10:
- case 11:
- case 12:
- case 14:
- case 4 + 16:
- case 12 + 16:
- case 13 + 16:
- case 14 + 16:
- case 15 + 16:
- YmuPCVal = ONE;
- break;
- case 8:
- case 8 + 16:
- YFVal = Req0Val.not();// "forward" X/U/Z
- YmuPCVal = Req0Val;// "forward" X/U/Z
- break;
- case 9:
- case 9 + 16:
- YDVal = Req0Val.not();// "forward" X/U/Z
- YmuPCVal = Req0Val;// "forward" X/U/Z
- break;
- case 15:
- YFVal = Req0Val.not();// "forward" X/U/Z
- YDVal = Req0Val;// "forward" X/U/Z
- break;
- default:
- throw new IllegalStateException("shouldn't happen");
- }
- YD.feedSignals(YDVal);
- YR.feedSignals(YRVal);
- YF.feedSignals(YFVal);
- YmuPC.feedSignals(YmuPCVal);
- Bit STKI0Val;
- Bit STKI1Val;
- switch (IAsInt + (PASSVal == ONE ? 16 : 0))
- {
- case 1:
- case 2:
- case 3:
- case 6:
- case 7:
- case 9:
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 2 + 16:
- case 3 + 16:
- case 6 + 16:
- case 7 + 16:
- case 9 + 16:
- case 12 + 16:
- case 14 + 16:
- // HOLD
- STKI1Val = ZERO;
- STKI0Val = ZERO;
- break;
- case 4:
- case 5:
- case 1 + 16:
- case 4 + 16:
- case 5 + 16:
- // PUSH
- STKI1Val = ZERO;
- STKI0Val = ONE;
- break;
- case 0:
- case 0 + 16:
- // CLEAR
- STKI1Val = ONE;
- STKI0Val = ZERO;
- break;
- case 10 + 16:
- case 11 + 16:
- case 13 + 16:
- case 15 + 16:
- // POP
- STKI1Val = ONE;
- STKI0Val = ONE;
- break;
- case 8:
- case 15:
- case 8 + 16:
- STKI1Val = Req0Val;// "forward" X/U/Z
- STKI0Val = Req0Val;// "forward" X/U/Z
- break;
- default:
- throw new IllegalStateException("shouldn't happen");
- }
- STKI0.feedSignals(STKI0Val);
- STKI1.feedSignals(STKI1Val);
- }
- }
- return null;
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIAm2910InstrPLA.class.getCanonicalName(),
- (m, p, n) -> new GUIAm2910InstrPLA(m, n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components.am2910;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Arrays;
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIAm2910RegCntr extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIAm2910RegCntr(ViewModelModifiable model, String name)
- {
- super(model, name, "Register/\nCounter");
- setSize(40, 40);
- addPin(new Pin(this, "D", 12, PinUsage.INPUT, 20, 0), Position.BOTTOM);
- addPin(new Pin(this, "_RLD", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
- addPin(new Pin(this, "WE", 1, PinUsage.INPUT, 0, 20), Position.RIGHT);
- addPin(new Pin(this, "DEC", 1, PinUsage.INPUT, 0, 30), Position.RIGHT);
- addPin(new Pin(this, "C", 1, PinUsage.INPUT, 40, 20), Position.LEFT);
- addPin(new Pin(this, "Y", 12, PinUsage.OUTPUT, 20, 40), Position.TOP);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- Bit[] QC = (Bit[]) lastState;
- if (QC == null)
- {
- QC = new Bit[13];
- Arrays.fill(QC, U);
- }
-
- ReadEnd D = readEnds.get("D");
- ReadEnd _RLD = readEnds.get("_RLD");
- ReadEnd WE = readEnds.get("WE");
- ReadEnd DEC = readEnds.get("DEC");
- ReadEnd C = readEnds.get("C");
- ReadWriteEnd Y = readWriteEnds.get("Y");
-
- Bit oldCVal = QC[12];
- Bit CVal = C.getValue();
-
- // TODO handle U/X/Z
- if (oldCVal == ZERO && CVal == ONE)
- {
- if ((DEC.getValue() == ZERO && WE.getValue() == ONE) || _RLD.getValue() == ZERO)
- System.arraycopy(D.getValues().getBits(), 0, QC, 0, 12);
- else if (WE.getValue() == ONE)
- {
- Bit carry = Bit.ZERO;
- // TODO extract to helper. This code almost also exists in GUIinc12.
- for (int i = 11; i >= 0; i--)
- {
- Bit a = QC[i];
- QC[i] = a.xnor(carry);
- carry = a.or(carry);
- }
- }
- }
- QC[12] = CVal;
- Y.feedSignals(Arrays.copyOfRange(QC, 0, 12));
-
- return QC;
- }
-
- @Override
- protected Object getHighLevelState(Object state, String stateID)
- {
- switch (stateID)
- {
- case "q":
- return BitVector.of(Arrays.copyOfRange((Bit[]) state, 0, 12));
- default:
- return super.getHighLevelState(state, stateID);
- }
- }
-
- @Override
- protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
- {
- switch (stateID)
- {
- case "q":
- BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
- if (newHighLevelStateCasted.length() != 12)
- throw new IllegalArgumentException("Expected BitVector of length 12, not " + newHighLevelStateCasted.length());
- System.arraycopy(newHighLevelStateCasted.getBits(), 0, lastState, 0, 12);
- return lastState;
- default:
- return super.setHighLevelState(lastState, stateID, newHighLevelState);
- }
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIAm2910RegCntr.class.getCanonicalName(),
- (m, p, n) -> new GUIAm2910RegCntr(m, n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.am2900.components.am2910;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class GUIAm2910SP extends SimpleRectangularHardcodedGUIComponent
-{
- public GUIAm2910SP(ViewModelModifiable model, String name)
- {
- super(model, name, "Stack\npointer");
- setSize(40, 30);
- addPin(new Pin(this, "STKI0", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
- addPin(new Pin(this, "STKI1", 1, PinUsage.INPUT, 0, 15), Position.RIGHT);
- addPin(new Pin(this, "C", 1, PinUsage.INPUT, 0, 25), Position.RIGHT);
- addPin(new Pin(this, "A", 3, PinUsage.OUTPUT, 10, 30), Position.TOP);
- addPin(new Pin(this, "B", 3, PinUsage.OUTPUT, 30, 30), Position.TOP);
- addPin(new Pin(this, "_FULL", 1, PinUsage.OUTPUT, 40, 15), Position.LEFT);
- }
-
- @Override
- public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
- {
- BitAndInt SPC = (BitAndInt) lastState;
- if (SPC == null)
- {
- SPC = new BitAndInt();
- SPC.bit = U;
- SPC.i = -2;
- }
- int SP = SPC.i;
-
- Bit STKI0Val = readEnds.get("STKI0").getValue();
- Bit STKI1Val = readEnds.get("STKI1").getValue();
- Bit CVal = readEnds.get("C").getValue();
- if (SPC.bit == ZERO && CVal == ONE)
- if (STKI0Val == U && STKI1Val == U)
- SP = -2;
- else if (!STKI0Val.isBinary() || !STKI1Val.isBinary())
- SP = -1;
- else if (STKI0Val == ONE && STKI1Val == ZERO)
- {
- // PUSH
- if (SP >= 0)
- SP = SP == 5 ? 5 : SP + 1;
- } else if (STKI0Val == ZERO && STKI1Val == ONE)
- // CLEAR
- SP = 0;
- else if (STKI0Val == ONE && STKI1Val == ONE)
- // POP
- SP = SP <= 0 ? SP : SP - 1;
- readWriteEnds.get("A").feedSignals(getAsBitVector(SP == 0 ? 7 : SP < 0 ? SP : SP - 1));
- readWriteEnds.get("B").feedSignals(getAsBitVector(SP == 5 ? 4 : SP));
- readWriteEnds.get("_FULL").feedSignals(SP == -2 ? U : SP == -1 ? X : SP == 5 ? ZERO : ONE);
-
- SPC.i = SP;
- SPC.bit = CVal;
- return SPC;
- }
-
- @Override
- protected Object getHighLevelState(Object state, String stateID)
- {
- switch (stateID)
- {
- case "q":
- return getAsBitVector(((BitAndInt) state).i);
- default:
- return super.getHighLevelState(state, stateID);
- }
- }
-
- @Override
- protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
- {
- switch (stateID)
- {
- case "q":
- int i;
- BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
- if (newHighLevelStateCasted.length() != 3)
- throw new IllegalArgumentException("Expected BitVector of length 3, not " + newHighLevelStateCasted.length());
- if (newHighLevelStateCasted.isBinary())
- i = newHighLevelStateCasted.getUnsignedValue().intValue();
- else
- i = -1;// this makes setting to U impossible
- if (i > 5)
- throw new IllegalArgumentException("Given value not in range (0-5 incl.): " + i);
- ((BitAndInt) lastState).i = i;
- return lastState;
- default:
- return super.setHighLevelState(lastState, stateID, newHighLevelState);
- }
- }
-
- private static class BitAndInt
- {
- Bit bit;
- int i;
- }
-
- /**
- * -1 means X, -2 means U
- */
- private static BitVector getAsBitVector(int i)
- {
- if (i == -1)
- return BitVector.of(X, 3);
- if (i == -2)
- return BitVector.of(U, 3);
- return BitVector.of((i & 0b100) > 0 ? ONE : ZERO, (i & 0b10) > 0 ? ONE : ZERO, (i & 0b1) > 0 ? ONE : ZERO);
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(GUIAm2910SP.class.getCanonicalName(), (m, p, n) -> new GUIAm2910SP(m, n));
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components.am2910;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.X;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class ModelAm2910InstrPLA extends SimpleRectangularHardcodedModelComponent
+{
+ public ModelAm2910InstrPLA(LogicModelModifiable model, String name)
+ {
+ super(model, "Am2910InstrPLA", name, "Instr.\nPLA", false);
+ setSize(30, 85);
+ addPin(new Pin(model, this, "PASS", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
+ addPin(new Pin(model, this, "I", 4, PinUsage.INPUT, 0, 20), Position.RIGHT);
+ addPin(new Pin(model, this, "R=0", 1, PinUsage.INPUT, 15, 0), Position.BOTTOM);
+ addPin(new Pin(model, this, "_PL", 1, PinUsage.OUTPUT, 5, 85), Position.TOP);
+ addPin(new Pin(model, this, "_MAP", 1, PinUsage.OUTPUT, 15, 85), Position.TOP);
+ addPin(new Pin(model, this, "_VECT", 1, PinUsage.OUTPUT, 25, 85), Position.TOP);
+ addPin(new Pin(model, this, "RWE", 1, PinUsage.OUTPUT, 30, 5), Position.LEFT);
+ addPin(new Pin(model, this, "RDEC", 1, PinUsage.OUTPUT, 30, 15), Position.LEFT);
+ addPin(new Pin(model, this, "YD", 1, PinUsage.OUTPUT, 30, 25), Position.LEFT);
+ addPin(new Pin(model, this, "YR", 1, PinUsage.OUTPUT, 30, 35), Position.LEFT);
+ addPin(new Pin(model, this, "YF", 1, PinUsage.OUTPUT, 30, 45), Position.LEFT);
+ addPin(new Pin(model, this, "YmuPC", 1, PinUsage.OUTPUT, 30, 55), Position.LEFT);
+ addPin(new Pin(model, this, "STKI0", 1, PinUsage.OUTPUT, 30, 65), Position.LEFT);
+ addPin(new Pin(model, this, "STKI1", 1, PinUsage.OUTPUT, 30, 75), Position.LEFT);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ ReadEnd PASS = readEnds.get("PASS");
+ ReadEnd I = readEnds.get("I");
+ ReadEnd Req0 = readEnds.get("R=0");
+ ReadWriteEnd _PL = readWriteEnds.get("_PL");
+ ReadWriteEnd _MAP = readWriteEnds.get("_MAP");
+ ReadWriteEnd _VECT = readWriteEnds.get("_VECT");
+ ReadWriteEnd RWE = readWriteEnds.get("RWE");
+ ReadWriteEnd RDEC = readWriteEnds.get("RDEC");
+ ReadWriteEnd YD = readWriteEnds.get("YD");
+ ReadWriteEnd YR = readWriteEnds.get("YR");
+ ReadWriteEnd YF = readWriteEnds.get("YF");
+ ReadWriteEnd YmuPC = readWriteEnds.get("YmuPC");
+ ReadWriteEnd STKI0 = readWriteEnds.get("STKI0");
+ ReadWriteEnd STKI1 = readWriteEnds.get("STKI1");
+
+ Bit PASSVal = PASS.getValue();
+ Bit I3Val = I.getValue(3);
+ Bit I2Val = I.getValue(2);
+ Bit I1Val = I.getValue(1);
+ Bit I0Val = I.getValue(0);
+ Bit Req0Val = Req0.getValue();
+
+ if (!I3Val.isBinary() || !I2Val.isBinary() || !I1Val.isBinary() || !I0Val.isBinary())
+ if ((I3Val == U || I3Val.isBinary()) || (I2Val == U || I2Val.isBinary()) || (I1Val == U || I1Val.isBinary())
+ || (I0Val == U || I0Val.isBinary()))
+ {
+ _PL.feedSignals(U);
+ _MAP.feedSignals(U);
+ _VECT.feedSignals(U);
+ RWE.feedSignals(U);
+ RDEC.feedSignals(U);
+ YD.feedSignals(U);
+ YR.feedSignals(U);
+ YF.feedSignals(U);
+ YmuPC.feedSignals(U);
+ STKI0.feedSignals(U);
+ STKI1.feedSignals(U);
+ } else
+ {
+ _PL.feedSignals(X);
+ _MAP.feedSignals(X);
+ _VECT.feedSignals(X);
+ RWE.feedSignals(X);
+ RDEC.feedSignals(X);
+ YD.feedSignals(X);
+ YR.feedSignals(X);
+ YF.feedSignals(X);
+ YmuPC.feedSignals(X);
+ STKI0.feedSignals(X);
+ STKI1.feedSignals(X);
+ }
+ else
+ {
+ int IAsInt = (I3Val == ONE ? 8 : 0) + (I2Val == ONE ? 4 : 0) + (I1Val == ONE ? 2 : 0) + (I0Val == ONE ? 1 : 0);
+ Bit _PLVal = ONE;
+ Bit _MAPVal = ONE;
+ Bit _VECTVal = ONE;
+ if (IAsInt == 2)
+ _MAPVal = ZERO;
+ else if (IAsInt == 6)
+ _VECTVal = ZERO;
+ else
+ _PLVal = ZERO;
+ _PL.feedSignals(_PLVal);
+ _MAP.feedSignals(_MAPVal);
+ _VECT.feedSignals(_VECTVal);
+ if (IAsInt == 8 || IAsInt == 9 || IAsInt == 15)
+ {
+ RWE.feedSignals(Req0Val);
+ RDEC.feedSignals(Req0Val);// "forward" X/U/Z
+ } else if (IAsInt == 4)
+ {
+ RWE.feedSignals(PASSVal);
+ RDEC.feedSignals(PASSVal == ONE ? ZERO : PASSVal);// "forward" X/U/Z
+ } else
+ {
+ RWE.feedSignals(ZERO);
+ RDEC.feedSignals(ZERO);
+ }
+ if (!PASSVal.isBinary())
+ {
+ YD.feedSignals(PASSVal);// "forward" X/U/Z
+ YR.feedSignals(PASSVal);// "forward" X/U/Z
+ YF.feedSignals(PASSVal);// "forward" X/U/Z
+ YmuPC.feedSignals(PASSVal);// "forward" X/U/Z
+ } else
+ {
+ Bit YDVal = ZERO;
+ Bit YRVal = ZERO;
+ Bit YFVal = ZERO;
+ Bit YmuPCVal = ZERO;
+ switch (IAsInt + (PASSVal == ONE ? 16 : 0))
+ {
+ case 0:
+ case 0 + 16:
+ break;
+ case 2:
+ case 1 + 16:
+ case 2 + 16:
+ case 3 + 16:
+ case 5 + 16:
+ case 6 + 16:
+ case 7 + 16:
+ case 11 + 16:
+ YDVal = ONE;
+ break;
+ case 5:
+ case 7:
+ YRVal = ONE;
+ break;
+ case 13:
+ case 10 + 16:
+ YFVal = ONE;
+ break;
+ case 1:
+ case 3:
+ case 4:
+ case 6:
+ case 10:
+ case 11:
+ case 12:
+ case 14:
+ case 4 + 16:
+ case 12 + 16:
+ case 13 + 16:
+ case 14 + 16:
+ case 15 + 16:
+ YmuPCVal = ONE;
+ break;
+ case 8:
+ case 8 + 16:
+ YFVal = Req0Val.not();// "forward" X/U/Z
+ YmuPCVal = Req0Val;// "forward" X/U/Z
+ break;
+ case 9:
+ case 9 + 16:
+ YDVal = Req0Val.not();// "forward" X/U/Z
+ YmuPCVal = Req0Val;// "forward" X/U/Z
+ break;
+ case 15:
+ YFVal = Req0Val.not();// "forward" X/U/Z
+ YDVal = Req0Val;// "forward" X/U/Z
+ break;
+ default:
+ throw new IllegalStateException("shouldn't happen");
+ }
+ YD.feedSignals(YDVal);
+ YR.feedSignals(YRVal);
+ YF.feedSignals(YFVal);
+ YmuPC.feedSignals(YmuPCVal);
+ Bit STKI0Val;
+ Bit STKI1Val;
+ switch (IAsInt + (PASSVal == ONE ? 16 : 0))
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 6:
+ case 7:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 2 + 16:
+ case 3 + 16:
+ case 6 + 16:
+ case 7 + 16:
+ case 9 + 16:
+ case 12 + 16:
+ case 14 + 16:
+ // HOLD
+ STKI1Val = ZERO;
+ STKI0Val = ZERO;
+ break;
+ case 4:
+ case 5:
+ case 1 + 16:
+ case 4 + 16:
+ case 5 + 16:
+ // PUSH
+ STKI1Val = ZERO;
+ STKI0Val = ONE;
+ break;
+ case 0:
+ case 0 + 16:
+ // CLEAR
+ STKI1Val = ONE;
+ STKI0Val = ZERO;
+ break;
+ case 10 + 16:
+ case 11 + 16:
+ case 13 + 16:
+ case 15 + 16:
+ // POP
+ STKI1Val = ONE;
+ STKI0Val = ONE;
+ break;
+ case 8:
+ case 15:
+ case 8 + 16:
+ STKI1Val = Req0Val;// "forward" X/U/Z
+ STKI0Val = Req0Val;// "forward" X/U/Z
+ break;
+ default:
+ throw new IllegalStateException("shouldn't happen");
+ }
+ STKI0.feedSignals(STKI0Val);
+ STKI1.feedSignals(STKI1Val);
+ }
+ }
+ return null;
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(ModelAm2910InstrPLA.class.getCanonicalName(),
+ (m, p, n) -> new ModelAm2910InstrPLA(m, n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components.am2910;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class ModelAm2910RegCntr extends SimpleRectangularHardcodedModelComponent
+{
+ public ModelAm2910RegCntr(LogicModelModifiable model, String name)
+ {
+ super(model, "Am2910RegCntr", name, "Register/\nCounter", false);
+ setSize(40, 40);
+ addPin(new Pin(model, this, "D", 12, PinUsage.INPUT, 20, 0), Position.BOTTOM);
+ addPin(new Pin(model, this, "_RLD", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
+ addPin(new Pin(model, this, "WE", 1, PinUsage.INPUT, 0, 20), Position.RIGHT);
+ addPin(new Pin(model, this, "DEC", 1, PinUsage.INPUT, 0, 30), Position.RIGHT);
+ addPin(new Pin(model, this, "C", 1, PinUsage.INPUT, 40, 20), Position.LEFT);
+ addPin(new Pin(model, this, "Y", 12, PinUsage.OUTPUT, 20, 40), Position.TOP);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ Bit[] QC = (Bit[]) lastState;
+ if (QC == null)
+ {
+ QC = new Bit[13];
+ Arrays.fill(QC, U);
+ }
+
+ ReadEnd D = readEnds.get("D");
+ ReadEnd _RLD = readEnds.get("_RLD");
+ ReadEnd WE = readEnds.get("WE");
+ ReadEnd DEC = readEnds.get("DEC");
+ ReadEnd C = readEnds.get("C");
+ ReadWriteEnd Y = readWriteEnds.get("Y");
+
+ Bit oldCVal = QC[12];
+ Bit CVal = C.getValue();
+
+ // TODO handle U/X/Z
+ if (oldCVal == ZERO && CVal == ONE)
+ {
+ if ((DEC.getValue() == ZERO && WE.getValue() == ONE) || _RLD.getValue() == ZERO)
+ System.arraycopy(D.getValues().getBits(), 0, QC, 0, 12);
+ else if (WE.getValue() == ONE)
+ {
+ Bit carry = Bit.ZERO;
+ // TODO extract to helper. This code almost also exists in Modelinc12.
+ for (int i = 11; i >= 0; i--)
+ {
+ Bit a = QC[i];
+ QC[i] = a.xnor(carry);
+ carry = a.or(carry);
+ }
+ }
+ }
+ QC[12] = CVal;
+ Y.feedSignals(Arrays.copyOfRange(QC, 0, 12));
+
+ return QC;
+ }
+
+ @Override
+ protected Object getHighLevelState(Object state, String stateID)
+ {
+ switch (stateID)
+ {
+ case "q":
+ return BitVector.of(Arrays.copyOfRange((Bit[]) state, 0, 12));
+ default:
+ return super.getHighLevelState(state, stateID);
+ }
+ }
+
+ @Override
+ protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
+ {
+ switch (stateID)
+ {
+ case "q":
+ BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
+ if (newHighLevelStateCasted.length() != 12)
+ throw new IllegalArgumentException("Expected BitVector of length 12, not " + newHighLevelStateCasted.length());
+ System.arraycopy(newHighLevelStateCasted.getBits(), 0, lastState, 0, 12);
+ return lastState;
+ default:
+ return super.setHighLevelState(lastState, stateID, newHighLevelState);
+ }
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(ModelAm2910RegCntr.class.getCanonicalName(),
+ (m, p, n) -> new ModelAm2910RegCntr(m, n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.components.am2910;
+
+import static net.mograsim.logic.core.types.Bit.ONE;
+import static net.mograsim.logic.core.types.Bit.U;
+import static net.mograsim.logic.core.types.Bit.X;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Map;
+
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class ModelAm2910SP extends SimpleRectangularHardcodedModelComponent
+{
+ public ModelAm2910SP(LogicModelModifiable model, String name)
+ {
+ super(model, "Am2910SP", name, "Stack\npointer", false);
+ setSize(40, 30);
+ addPin(new Pin(model, this, "STKI0", 1, PinUsage.INPUT, 0, 5), Position.RIGHT);
+ addPin(new Pin(model, this, "STKI1", 1, PinUsage.INPUT, 0, 15), Position.RIGHT);
+ addPin(new Pin(model, this, "C", 1, PinUsage.INPUT, 0, 25), Position.RIGHT);
+ addPin(new Pin(model, this, "A", 3, PinUsage.OUTPUT, 10, 30), Position.TOP);
+ addPin(new Pin(model, this, "B", 3, PinUsage.OUTPUT, 30, 30), Position.TOP);
+ addPin(new Pin(model, this, "_FULL", 1, PinUsage.OUTPUT, 40, 15), Position.LEFT);
+
+ init();
+ }
+
+ @Override
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+ {
+ BitAndInt SPC = (BitAndInt) lastState;
+ if (SPC == null)
+ {
+ SPC = new BitAndInt();
+ SPC.bit = U;
+ SPC.i = -2;
+ }
+ int SP = SPC.i;
+
+ Bit STKI0Val = readEnds.get("STKI0").getValue();
+ Bit STKI1Val = readEnds.get("STKI1").getValue();
+ Bit CVal = readEnds.get("C").getValue();
+ if (SPC.bit == ZERO && CVal == ONE)
+ if (STKI0Val == U && STKI1Val == U)
+ SP = -2;
+ else if (!STKI0Val.isBinary() || !STKI1Val.isBinary())
+ SP = -1;
+ else if (STKI0Val == ONE && STKI1Val == ZERO)
+ {
+ // PUSH
+ if (SP >= 0)
+ SP = SP == 5 ? 5 : SP + 1;
+ } else if (STKI0Val == ZERO && STKI1Val == ONE)
+ // CLEAR
+ SP = 0;
+ else if (STKI0Val == ONE && STKI1Val == ONE)
+ // POP
+ SP = SP <= 0 ? SP : SP - 1;
+ readWriteEnds.get("A").feedSignals(getAsBitVector(SP == 0 ? 7 : SP < 0 ? SP : SP - 1));
+ readWriteEnds.get("B").feedSignals(getAsBitVector(SP == 5 ? 4 : SP));
+ readWriteEnds.get("_FULL").feedSignals(SP == -2 ? U : SP == -1 ? X : SP == 5 ? ZERO : ONE);
+
+ SPC.i = SP;
+ SPC.bit = CVal;
+ return SPC;
+ }
+
+ @Override
+ protected Object getHighLevelState(Object state, String stateID)
+ {
+ switch (stateID)
+ {
+ case "q":
+ return getAsBitVector(((BitAndInt) state).i);
+ default:
+ return super.getHighLevelState(state, stateID);
+ }
+ }
+
+ @Override
+ protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
+ {
+ switch (stateID)
+ {
+ case "q":
+ int i;
+ BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
+ if (newHighLevelStateCasted.length() != 3)
+ throw new IllegalArgumentException("Expected BitVector of length 3, not " + newHighLevelStateCasted.length());
+ if (newHighLevelStateCasted.isBinary())
+ i = newHighLevelStateCasted.getUnsignedValue().intValue();
+ else
+ i = -1;// this makes setting to U impossible
+ if (i > 5)
+ throw new IllegalArgumentException("Given value not in range (0-5 incl.): " + i);
+ ((BitAndInt) lastState).i = i;
+ return lastState;
+ default:
+ return super.setHighLevelState(lastState, stateID, newHighLevelState);
+ }
+ }
+
+ private static class BitAndInt
+ {
+ Bit bit;
+ int i;
+ }
+
+ /**
+ * -1 means X, -2 means U
+ */
+ private static BitVector getAsBitVector(int i)
+ {
+ if (i == -1)
+ return BitVector.of(X, 3);
+ if (i == -2)
+ return BitVector.of(U, 3);
+ return BitVector.of((i & 0b100) > 0 ? ONE : ZERO, (i & 0b10) > 0 ? ONE : ZERO, (i & 0b1) > 0 ? ONE : ZERO);
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(ModelAm2910SP.class.getCanonicalName(), (m, p, n) -> new ModelAm2910SP(m, n));
+ }
+}
\ No newline at end of file
package net.mograsim.logic.model.am2900.machine;
-import net.mograsim.logic.core.components.Clock;
+import net.mograsim.logic.core.components.CoreClock;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.model.model.ViewModel;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.model.LogicModel;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
import net.mograsim.machine.Machine;
import net.mograsim.machine.MachineDefinition;
import net.mograsim.machine.MainMemory;
public class Am2900Machine implements Machine
{
private Am2900MachineDefinition machineDefinition;
- private ViewModelModifiable viewModel;
+ private LogicModelModifiable logicModel;
private Timeline timeline;
- private Clock clock;
private MainMemory mainMemory;
private MicroInstructionMemory instMemory;
+ private CoreClock clock;
public Am2900Machine(Am2900MachineDefinition am2900MachineDefinition)
{
this.machineDefinition = am2900MachineDefinition;
- viewModel = new ViewModelModifiable();
- IndirectGUIComponentCreator.createComponent(viewModel,
- "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIAm2900.json");
- LogicModelParameters params = new LogicModelParameters();
+ logicModel = new LogicModelModifiable();
+ IndirectModelComponentCreator.createComponent(logicModel,
+ "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/Am2900.json");
+ CoreModelParameters params = new CoreModelParameters();
params.gateProcessTime = 50;
params.wireTravelTime = 10;
- timeline = ViewLogicModelAdapter.convert(viewModel, params);
-
mainMemory = new WordAddressableMemory(am2900MachineDefinition.getMainMemoryDefinition());
instMemory = new StandardMicroInstructionMemory(am2900MachineDefinition.getMicroInstructionMemoryDefinition());
+ timeline = LogicCoreAdapter.convert(logicModel, params);
}
@Override
}
@Override
- public ViewModel getModel()
+ public LogicModel getModel()
{
- return viewModel;
+ return logicModel;
}
@Override
}
@Override
- public Clock getClock()
+ public CoreClock getClock()
{
return clock;
}
mograsim version: 0.1.3
{
- "GUIAm2904RegCTInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904RegCTInstrDecode",
- "GUIAm2904ShiftInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904ShiftInstrDecode",
- "GUIAm2910InstrPLA": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910InstrPLA",
- "GUIAm2910RegCntr": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910RegCntr",
- "GUIAm2910SP": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910SP",
- "GUIdff12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.GUIdff12",
- "GUIdff4_finewe": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.GUIdff4_finewe",
- "GUIinc12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.GUIinc12",
- "GUInor12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.GUInor12",
- "GUIram5_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.GUIram5_12",
- "GUIsel4_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.GUIsel4_12",
+ "Am2904RegCTInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.ModelAm2904RegCTInstrDecode",
+ "Am2904ShiftInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.ModelAm2904ShiftInstrDecode",
+ "Am2910InstrPLA": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.ModelAm2910InstrPLA",
+ "Am2910RegCntr": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.ModelAm2910RegCntr",
+ "Am2910SP": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.ModelAm2910SP",
+ "dff12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modeldff12",
+ "dff4_finewe": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modeldff4_finewe",
+ "inc12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelinc12",
+ "nor12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelnor12",
+ "ram5_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelram5_12",
+ "sel4_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelsel4_12",
- "GUIAm2901": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/GUIAm2901.json",
- "GUIAm2901ALUFuncDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/GUIAm2901ALUFuncDecode.json",
- "GUIAm2901ALUInclDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/GUIAm2901ALUInclDecode.json",
- "GUIAm2901ALUInclSourceDecodeInclFunctionDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json",
- "GUIAm2901ALUOneBit": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/GUIAm2901ALUOneBit.json",
- "GUIAm2904": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/GUIAm2904.json",
- "GUIAm2910": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2910/GUIAm2910.json",
- "GUIAm2904MSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/GUIAm2904MSR.json",
- "GUIAm2904muSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/GUIAm2904muSR.json",
- "GUIAm2904TestLogic": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/GUIAm2904TestLogic.json",
- "GUIAm2901DestDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/GUIAm2901DestDecode.json",
- "GUIAm2901SourceDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/GUIAm2901SourceDecode.json",
- "GUI_rsLatch": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUI_rsLatch.json",
- "GUIand": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIand.json",
- "GUIand41": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIand41.json",
- "GUIandor414": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIandor414.json",
- "GUIdemux2": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIdemux2.json",
- "GUIdff": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIdff.json",
- "GUIdff4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIdff4.json",
- "GUIdff4_invwe": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIdff4_invwe.json",
- "GUIdlatch": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIdlatch.json",
- "GUIdlatch4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIdlatch4.json",
- "GUIfulladder": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIfulladder.json",
- "GUIhalfadder": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIhalfadder.json",
- "GUImux1": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUImux1.json",
- "GUImux1_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUImux1_4.json",
- "GUImux2": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUImux2.json",
- "GUImux2_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUImux2_4.json",
- "GUImux3": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUImux3.json",
- "GUInand3": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUInand3.json",
- "GUInot4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUInot4.json",
- "GUIor4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIor4.json",
- "GUIor_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIor_4.json",
- "GUIram2": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIram2.json",
- "GUIram4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIram4.json",
- "GUIsel1": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIsel1.json",
- "GUIsel2_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIsel2_4.json",
- "GUIsel3_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIsel3_4.json",
- "GUIxor": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIxor.json"
+ "Am2901": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901.json",
+ "Am2901ALUFuncDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901ALUFuncDecode.json",
+ "Am2901ALUInclDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901ALUInclDecode.json",
+ "Am2901ALUInclSourceDecodeInclFunctionDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901ALUInclSourceDecodeInclFunctionDecode.json",
+ "Am2901ALUOneBit": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901ALUOneBit.json",
+ "Am2904": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904.json",
+ "Am2910": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2910/Am2910.json",
+ "Am2904MSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904MSR.json",
+ "Am2904muSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904muSR.json",
+ "Am2904TestLogic": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904TestLogic.json",
+ "Am2901DestDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901DestDecode.json",
+ "Am2901SourceDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901SourceDecode.json",
+ "_rsLatch": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/_rsLatch.json",
+ "and": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/and.json",
+ "and41": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/and41.json",
+ "andor414": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/andor414.json",
+ "demux2": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/demux2.json",
+ "dff": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff.json",
+ "dff12_we": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff12_we.json",
+ "dff16_invwe": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff16_invwe.json",
+ "dff4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff4.json",
+ "dff4_invwe": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff4_invwe.json",
+ "dlatch": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dlatch.json",
+ "dlatch4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dlatch4.json",
+ "fulladder": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/fulladder.json",
+ "halfadder": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/halfadder.json",
+ "mux1": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1.json",
+ "mux1_12": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_12.json",
+ "mux1_16": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_16.json",
+ "mux1_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_4.json",
+ "mux2": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux2.json",
+ "mux2_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux2_4.json",
+ "mux3": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux3.json",
+ "nand3": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/nand3.json",
+ "not4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/not4.json",
+ "or4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/or4.json",
+ "or_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/or_4.json",
+ "ram2": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/ram2.json",
+ "ram4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/ram4.json",
+ "sel1": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/sel1.json",
+ "sel2_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/sel2_4.json",
+ "sel3_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/sel3_4.json",
+ "xor": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/xor.json"
}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.examples;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-
-import net.mograsim.logic.model.SimpleLogicUIStandalone;
-import net.mograsim.logic.model.am2900.Am2900Loader;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
-import net.mograsim.logic.model.model.wires.GUIWire;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-
-public class GUIComponentTestbench
-{
- public static void main(String[] args)
- {
- SimpleLogicUIStandalone.executeVisualisation(GUIComponentTestbench::createTestbench);
- }
-
- @SuppressWarnings("unused") // for GUIWires being created
- public static void createTestbench(ViewModelModifiable model)
- {
- Am2900Loader.setup();
- GUIComponent comp = IndirectGUIComponentCreator.createComponent(model,
- "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/GUIAm2900.json");
-
- List<String> inputPinNames = new ArrayList<>();
- List<String> outputPinNames = new ArrayList<>();
- for (Pin p : comp.getPins().values())
- if (p.usage == PinUsage.INPUT)
- inputPinNames.add(p.name);
- else
- outputPinNames.add(p.name);
-
- inputPinNames.sort(Comparator.comparing(comp::getPin, Comparator.comparing(Pin::getRelY)));
- outputPinNames.sort(Comparator.comparing(comp::getPin, Comparator.comparing(Pin::getRelY)));
-
- comp.moveTo(100, 0);
- for (int i = 0; i < inputPinNames.size(); i++)
- {
- String pinName = inputPinNames.get(i);
- GUIManualSwitch sw = new GUIManualSwitch(model, comp.getPin(pinName).logicWidth);
- sw.moveTo(0, 20 * i);
- new GUIWire(model, comp.getPin(pinName), sw.getOutputPin());
- }
- for (int i = 0; i < outputPinNames.size(); i++)
- {
- String pinName = outputPinNames.get(i);
- GUIBitDisplay bd = new GUIBitDisplay(model, comp.getPin(pinName).logicWidth);
- bd.moveTo(200, 20 * i);
- new GUIWire(model, comp.getPin(pinName), bd.getInputPin());
- }
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.examples;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
+import net.mograsim.logic.model.SimpleLogicUIStandalone;
+import net.mograsim.logic.model.am2900.Am2900Loader;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+
+public class ModelComponentTestbench
+{
+ public static void main(String[] args)
+ {
+ SimpleLogicUIStandalone.executeVisualisation(ModelComponentTestbench::createTestbench);
+ }
+
+ @SuppressWarnings("unused") // for ModelWires being created
+ public static void createTestbench(LogicModelModifiable model)
+ {
+ Am2900Loader.setup();
+ ModelComponent comp = IndirectModelComponentCreator.createComponent(model,
+ "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff16_invwe.json");
+
+ List<String> inputPinNames = new ArrayList<>();
+ List<String> outputPinNames = new ArrayList<>();
+ for (Pin p : comp.getPins().values())
+ if (p.usage == PinUsage.INPUT)
+ inputPinNames.add(p.name);
+ else
+ outputPinNames.add(p.name);
+
+ inputPinNames.sort(Comparator.comparing(comp::getPin, Comparator.comparing(Pin::getRelY)));
+ outputPinNames.sort(Comparator.comparing(comp::getPin, Comparator.comparing(Pin::getRelY)));
+
+ comp.moveTo(100, 0);
+ for (int i = 0; i < inputPinNames.size(); i++)
+ {
+ String pinName = inputPinNames.get(i);
+ ModelManualSwitch sw = new ModelManualSwitch(model, comp.getPin(pinName).logicWidth);
+ sw.moveTo(0, 20 * i);
+ new ModelWire(model, comp.getPin(pinName), sw.getOutputPin());
+ }
+ for (int i = 0; i < outputPinNames.size(); i++)
+ {
+ String pinName = outputPinNames.get(i);
+ ModelBitDisplay bd = new ModelBitDisplay(model, comp.getPin(pinName).logicWidth);
+ bd.moveTo(200, 20 * i);
+ new ModelWire(model, comp.getPin(pinName), bd.getInputPin());
+ }
+ }
+}
\ No newline at end of file
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Map.Entry;
+import java.util.Optional;
import java.util.Scanner;
import java.util.Set;
+import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.am2900.Am2900Loader;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.model.components.submodels.SubmodelInterface;
+import net.mograsim.logic.model.model.wires.ModelWire;
import net.mograsim.logic.model.model.wires.MovablePin;
import net.mograsim.logic.model.model.wires.Pin;
import net.mograsim.logic.model.model.wires.PinUsage;
import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
import net.mograsim.logic.model.serializing.SubmodelComponentSerializer;
public class ReserializeJSONsSettingUsages
{
+ public static boolean changePinUsages = false;
+ public static boolean changeComponentNames = true;
+
public static void main(String[] args) throws IOException
{
+ Am2900Loader.setup();
try (Scanner sysin = new Scanner(System.in))
{
System.out.print("Directory to search for JSONs in / JSON file to reserialize >");
{
try
{
- DeserializedSubmodelComponent comp = (DeserializedSubmodelComponent) IndirectGUIComponentCreator
- .createComponent(new ViewModelModifiable(), "jsonfile:" + json.toString());
+ DeserializedSubmodelComponent comp = (DeserializedSubmodelComponent) IndirectModelComponentCreator
+ .createComponent(new LogicModelModifiable(), "jsonfile:" + json.toString());
System.out.println("Reserializing " + json);
- comp.getSupermodelPins().entrySet().stream().sorted(Comparator.comparing(Entry::getKey)).map(Entry::getValue).forEach(pin ->
+ if (changePinUsages)
+ comp.getSupermodelPins().entrySet().stream().sorted(Comparator.comparing(Entry::getKey)).map(Entry::getValue).forEach(pin ->
+ {
+ PinUsage usage = null;
+ while (usage == null)
+ try
+ {
+ System.out.print(" Usage for interface pin " + pin.name + " (empty: " + pin.usage + ") >");
+ String usageStr = sysin.nextLine().toUpperCase();
+ usage = usageStr.equals("") ? pin.usage
+ : usageStr.equals("I") ? PinUsage.INPUT
+ : usageStr.equals("O") ? PinUsage.OUTPUT
+ : usageStr.equals("T") ? PinUsage.TRISTATE : PinUsage.valueOf(usageStr);
+ }
+ catch (@SuppressWarnings("unused") IllegalArgumentException e)
+ {
+ System.err.println(" Illegal usage");
+ }
+ setInterfacePinUsage(comp, pin, usage);
+ });
+ LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable();
+ if (changeComponentNames)
{
- System.out.print(" Usage for interface pin " + pin.name + " (empty: " + pin.usage + ") >");
- String usageStr = sysin.nextLine().toUpperCase();
- PinUsage usage = usageStr.equals("") ? pin.usage
- : usageStr.equals("I") ? PinUsage.INPUT
- : usageStr.equals("O") ? PinUsage.OUTPUT
- : usageStr.equals("T") ? PinUsage.TRISTATE : PinUsage.valueOf(usageStr);
- setInterfacePinUsage(comp, pin, usage);
- });
+ Map<String, String> componentNameRemapping = new HashMap<>();
+ componentNameRemapping.put(SubmodelComponent.SUBMODEL_INTERFACE_NAME, SubmodelComponent.SUBMODEL_INTERFACE_NAME);
+ LogicModelModifiable tempModel = new LogicModelModifiable();
+ IdentifyParams iP = new IdentifyParams();
+ submodelModifiable.getComponentsByName().entrySet().stream()
+ .filter(e -> !e.getKey().equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME))
+ .sorted(Comparator.comparing(Entry::getKey, ReserializeJSONsSettingUsages::compareStringsWithIntegers)).forEach(e ->
+ {
+ String oldName = e.getKey();
+ ModelComponent subcomp = e.getValue();
+ String defaultName = tempModel.getDefaultComponentName(subcomp);
+ String newName = null;
+ while (newName == null)
+ {
+ System.out.print(" New name for component " + oldName + " of type " + subcomp.getIDForSerializing(iP)
+ + " (empty: " + defaultName + ") >");
+ newName = sysin.nextLine();
+ if (newName.equals(""))
+ newName = defaultName;
+ if (tempModel.getComponentsByName().containsKey(newName))
+ {
+ System.err.println(" There already is a component with that name");
+ newName = null;
+ }
+ }
+ componentNameRemapping.put(oldName, newName);
+ IndirectModelComponentCreator.createComponent(tempModel, subcomp.getIDForSerializing(iP),
+ subcomp.getParamsForSerializingJSON(iP), newName).moveTo(subcomp.getPosX(), subcomp.getPosY());
+ });
+ SubmodelInterface tempSubmodelInterface = new SubmodelInterface(tempModel);
+ for (Pin p : submodelModifiable.getComponentsByName().get(SubmodelComponent.SUBMODEL_INTERFACE_NAME).getPins().values())
+ tempSubmodelInterface
+ .addPin(new Pin(tempModel, tempSubmodelInterface, p.name, p.logicWidth, p.usage, p.getRelX(), p.getRelY()));
+ for (ModelWire w : submodelModifiable.getWiresByName().values())
+ createWire(componentNameRemapping::get, tempModel, w);
+
+ Optional<ModelComponent> o;
+ while ((o = submodelModifiable.getComponentsByName().values().stream()
+ .filter(c -> !c.name.equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME)).findAny()).isPresent())
+ submodelModifiable.destroyComponent(o.get());
+
+ tempModel.getComponentsByName().values().stream().filter(c -> !c.name.equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME))
+ .forEach(c -> IndirectModelComponentCreator
+ .createComponent(submodelModifiable, c.getIDForSerializing(iP), c.getParamsForSerializingJSON(iP), c.name)
+ .moveTo(c.getPosX(), c.getPosY()));
+ for (ModelWire w : tempModel.getWiresByName().values())
+ createWire(Function.identity(), submodelModifiable, w);
+ }
SubmodelComponentSerializer.serialize(comp, json.toString());
}
catch (Exception e)
}
}
+ private static ModelWire createWire(Function<String, String> componentNameRemapping, LogicModelModifiable tempModelForDefaultNames,
+ ModelWire w)
+ {
+ return new ModelWire(tempModelForDefaultNames, w.name,
+ getRemappedPin(componentNameRemapping, tempModelForDefaultNames, w.getPin1()),
+ getRemappedPin(componentNameRemapping, tempModelForDefaultNames, w.getPin2()), w.getPath());
+ }
+
+ private static Pin getRemappedPin(Function<String, String> componentNameRemapping, LogicModelModifiable tempModelForDefaultNames,
+ Pin pin)
+ {
+ return tempModelForDefaultNames.getComponentsByName().get(componentNameRemapping.apply(pin.component.name)).getPin(pin.name);
+ }
+
+ private static int compareStringsWithIntegers(String a, String b)
+ {
+ int aLoc = 0;
+ int bLoc = 0;
+ for (;;)
+ {
+ if (aLoc == a.length())
+ {
+ if (bLoc == b.length())
+ return 0;
+ return -1;
+ }
+ if (bLoc == b.length())
+ return 1;
+ int aInt = 0;
+ int aIntLen = 0;
+ char nextCharA;
+ for (;;)
+ {
+ nextCharA = a.charAt(aLoc++);
+ if (nextCharA < '0' || nextCharA > '9')
+ break;
+ aIntLen++;
+ aInt = aInt * 10 + nextCharA - '0';
+ if (aLoc == a.length())
+ break;
+ }
+ int bInt = 0;
+ int bIntLen = 0;
+ char nextCharB;
+ for (;;)
+ {
+ nextCharB = b.charAt(bLoc++);
+ if (nextCharB < '0' || nextCharB > '9')
+ break;
+ bIntLen++;
+ bInt = bInt * 10 + nextCharB - '0';
+ if (bLoc == b.length())
+ break;
+ }
+ if (aIntLen != 0)
+ {
+ if (bIntLen == 0)
+ return -1;
+ int comp = Integer.compare(aInt, bInt);
+ if (comp != 0)
+ return comp;
+ } else
+ {
+ if (bIntLen != 0)
+ return 1;
+ int comp = Character.compare(nextCharA, nextCharB);
+ if (comp != 0)
+ return comp;
+ }
+ }
+ }
+
private static void setInterfacePinUsage(DeserializedSubmodelComponent comp, Pin interfacePin, PinUsage usage)
{
- Set<GUIWire> wiresConnectedToPin = comp.submodel.getWiresByName().values().stream()
+ Set<ModelWire> wiresConnectedToPin = comp.submodel.getWiresByName().values().stream()
.filter(w -> w.getPin1() == interfacePin || w.getPin2() == interfacePin).collect(Collectors.toSet());
- wiresConnectedToPin.forEach(comp.getSubmodelModifiable()::destroyWire);
+ LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable();
+ wiresConnectedToPin.forEach(submodelModifiable::destroyWire);
comp.removeSubmodelInterface(interfacePin.name);
- comp.addSubmodelInterface(
- new MovablePin(comp, interfacePin.name, interfacePin.logicWidth, usage, interfacePin.getRelX(), interfacePin.getRelY()));
- ViewModelModifiable submodelModifiable = comp.getSubmodelModifiable();
- wiresConnectedToPin.forEach(w -> new GUIWire(submodelModifiable, w.getPin1(), w.getPin2()));
+ comp.addSubmodelInterface(new MovablePin(submodelModifiable, comp, interfacePin.name, interfacePin.logicWidth, usage,
+ interfacePin.getRelX(), interfacePin.getRelY()));
+ wiresConnectedToPin.forEach(w -> new ModelWire(submodelModifiable, w.getPin1(), w.getPin2()));
}
}
\ No newline at end of file
import net.mograsim.logic.model.SimpleLogicUIStandalone;
import net.mograsim.logic.model.SimpleLogicUIStandalone.VisualisationObjects;
import net.mograsim.logic.model.am2900.Am2900Loader;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.atomic.GUIAndGate;
-import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
-import net.mograsim.logic.model.model.components.atomic.GUINotGate;
-import net.mograsim.logic.model.model.components.atomic.TextComponent;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.atomic.ModelAndGate;
+import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
+import net.mograsim.logic.model.model.components.atomic.ModelNotGate;
+import net.mograsim.logic.model.model.components.atomic.ModelTextComponent;
import net.mograsim.logic.model.model.wires.Pin;
import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.model.wires.WireCrossPoint;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.model.wires.ModelWireCrossPoint;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
import net.mograsim.logic.model.util.ModellingTool;
public class Am2901Testbench
SimpleLogicUIStandalone.executeVisualisation(Am2901Testbench::createTestbench, Am2901Testbench::beforeRun);
}
- public static void createTestbench(ViewModelModifiable model)
+ public static void createTestbench(LogicModelModifiable model)
{
- GUIComponent comp = IndirectGUIComponentCreator.createComponent(model, "GUIAm2901");
+ ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "Am2901");
ModellingTool tool = ModellingTool.createFor(model);
comp.moveTo(240, 0);
- GUIManualSwitch enable = new GUIManualSwitch(model, 1);
- WireCrossPoint wcp0 = new WireCrossPoint(model, 1);
- GUINotGate not1 = new GUINotGate(model, 1);
- GUINotGate not2 = new GUINotGate(model, 1);
- GUINotGate not3 = new GUINotGate(model, 1);
- GUIAndGate and = new GUIAndGate(model, 1);
+ ModelManualSwitch enable = new ModelManualSwitch(model, 1);
+ ModelWireCrossPoint wcp0 = new ModelWireCrossPoint(model, 1);
+ ModelNotGate not1 = new ModelNotGate(model, 1);
+ ModelNotGate not2 = new ModelNotGate(model, 1);
+ ModelNotGate not3 = new ModelNotGate(model, 1);
+ ModelAndGate and = new ModelAndGate(model, 1);
tool.connect(wcp0, enable, "");
tool.connect(wcp0, and, "A");
tool.connect(wcp0, not1, "A");
double x = 55 + 70 * (i % 2);
double y = 10 * i;
- WireCrossPoint wcp = new WireCrossPoint(model, 1);
- GUIComponent d_ff = IndirectGUIComponentCreator.createComponent(model, "GUIdff");
- GUIManualSwitch sw = new GUIManualSwitch(model, 1);
+ ModelWireCrossPoint wcp = new ModelWireCrossPoint(model, 1);
+ ModelComponent d_ff = IndirectModelComponentCreator.createComponent(model, "dff");
+ ModelManualSwitch sw = new ModelManualSwitch(model, 1);
tool.connect(last, wcp);
tool.connect(wcp, d_ff, "C");
tool.connect(d_ff, comp, "Q", inputPinNames.get(i));
last = wcp.getPin();
- TextComponent label = new TextComponent(model, inputPinNames.get(i));
+ ModelTextComponent label = new ModelTextComponent(model, inputPinNames.get(i));
sw.moveTo(x, y + 7.5);
wcp.moveTo(160, y);
{
double x = 300 + 75 * (i % 2);
double y = 10 * i - 2.5;
- GUIBitDisplay bd = new GUIBitDisplay(model, 1);
+ ModelBitDisplay bd = new ModelBitDisplay(model, 1);
bd.moveTo(x, y);
tool.connect(bd.getInputPin(), comp, outputPinNames.get(i));
- TextComponent label = new TextComponent(model, outputPinNames.get(i));
+ ModelTextComponent label = new ModelTextComponent(model, outputPinNames.get(i));
label.moveTo(x + 25, y);
}
}
{
vis.model.getComponentsByName().values().forEach(c ->
{
- if (c instanceof GUIManualSwitch)
+ if (c instanceof ModelManualSwitch)
{
- GUIManualSwitch cCasted = (GUIManualSwitch) c;
+ ModelManualSwitch cCasted = (ModelManualSwitch) c;
cCasted.setHighLevelState("out", BitVector.of(Bit.ZERO, cCasted.logicWidth));
}
});
package net.mograsim.logic.model.am2900.am2901;
-import net.mograsim.logic.core.components.BitDisplay;
-import net.mograsim.logic.core.components.ManualSwitch;
+import net.mograsim.logic.core.components.CoreBitDisplay;
+import net.mograsim.logic.core.components.CoreManualSwitch;
import net.mograsim.logic.core.types.Bit;
import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.model.am2900.util.SwitchWithDisplay;
import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper;
-import net.mograsim.logic.model.am2900.util.TestUtil;
import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper.DebugState;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.am2900.util.TestUtil;
+import net.mograsim.logic.model.model.components.ModelComponent;
public class TestableAm2901Impl implements TestableAm2901
{
- private GUIComponent am2901;
- private ManualSwitch I8, I7, I6, I5, I4, I3, I2, I1, I0;
- private ManualSwitch C;
- private ManualSwitch Cn;
- private ManualSwitch D1, D2, D3, D4;
- private ManualSwitch A0, A1, A2, A3;
- private ManualSwitch B0, B1, B2, B3;
- private ManualSwitch IRAMn, IRAMn_3, IQn, IQn_3;
- private BitDisplay Y1, Y2, Y3, Y4;
- private BitDisplay F_0, Cn_4, OVR, F3;
- private BitDisplay ORAMn, ORAMn_3, OQn, OQn_3;
+ private ModelComponent am2901;
+ private CoreManualSwitch I8, I7, I6, I5, I4, I3, I2, I1, I0;
+ private CoreManualSwitch C;
+ private CoreManualSwitch Cn;
+ private CoreManualSwitch D1, D2, D3, D4;
+ private CoreManualSwitch A0, A1, A2, A3;
+ private CoreManualSwitch B0, B1, B2, B3;
+ private CoreBitDisplay Y1, Y2, Y3, Y4;
+ private CoreBitDisplay F_0, Cn_4, OVR, F3;
+ private SwitchWithDisplay RAMn, RAMn_3, Qn, Qn_3;
- private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "GUIAm2901");
+ private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "Am2901");
@Override
public Result run()
@Override
public void setQ_0(String val_1_bit)
{
- IQn.setState(Bit.parse(val_1_bit));
+ Qn.setState(Bit.parse(val_1_bit).toVector());
}
@Override
public void setQ_3(String val_1_bit)
{
- IQn_3.setState(Bit.parse(val_1_bit));
+ Qn_3.setState(Bit.parse(val_1_bit).toVector());
}
@Override
public void setRAM_0(String val_1_bit)
{
- IRAMn.setState(Bit.parse(val_1_bit));
+ RAMn.setState(Bit.parse(val_1_bit).toVector());
}
@Override
public void setRAM_3(String val_1_bit)
{
- IRAMn_3.setState(Bit.parse(val_1_bit));
+ RAMn_3.setState(Bit.parse(val_1_bit).toVector());
}
@Override
@Override
public String getQ_0()
{
- return OQn.getDisplayedValue().toString();
+ return Qn.getDisplayedValue().toString();
}
@Override
public String getQ_3()
{
- return OQn_3.getDisplayedValue().toString();
+ return Qn_3.getDisplayedValue().toString();
}
@Override
public String getRAM_0()
{
- return ORAMn.getDisplayedValue().toString();
+ return RAMn.getDisplayedValue().toString();
}
@Override
public String getRAM_3()
{
- return ORAMn_3.getDisplayedValue().toString();
+ return RAMn_3.getDisplayedValue().toString();
}
@Override
import net.mograsim.logic.model.SimpleLogicUIStandalone;
import net.mograsim.logic.model.SimpleLogicUIStandalone.VisualisationObjects;
import net.mograsim.logic.model.am2900.Am2900Loader;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
import net.mograsim.logic.model.snippets.Renderer;
public class Am2904Testbench
SimpleLogicUIStandalone.executeVisualisation(Am2904Testbench::create, Am2904Testbench::beforeRun);
}
- public static void create(ViewModelModifiable model)
+ public static void create(LogicModelModifiable model)
{
- // TODO replace with proper ViewModel deserialization
- DeserializedSubmodelComponent testbench = (DeserializedSubmodelComponent) IndirectGUIComponentCreator.createComponent(model,
- "jsonfile:GUIAm2904Testbench.json", "testbench");
+ // TODO replace with proper LogicModel deserialization
+ DeserializedSubmodelComponent testbench = (DeserializedSubmodelComponent) IndirectModelComponentCreator.createComponent(model,
+ "jsonfile:Am2904Testbench.json", "testbench");
testbench.setSize(1000, 1000);
testbench.setOutlineRenderer(new Renderer()
{
@Override
- public Void getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return null;
+ }
+
+ @Override
+ public Void getParamsForSerializing(IdentifyParams idParams)
{
return null;
}
{
((SubmodelComponent) vis.model.getComponentsByName().get("testbench")).submodel.getComponentsByName().values().forEach(c ->
{
- if (c instanceof GUIManualSwitch)
+ if (c instanceof ModelManualSwitch)
{
- GUIManualSwitch cCasted = (GUIManualSwitch) c;
+ ModelManualSwitch cCasted = (ModelManualSwitch) c;
cCasted.setHighLevelState("out", BitVector.of(Bit.ZERO, cCasted.logicWidth));
}
});
package net.mograsim.logic.model.am2900.am2904;
-import net.mograsim.logic.core.components.BitDisplay;
-import net.mograsim.logic.core.components.ManualSwitch;
+import net.mograsim.logic.core.components.CoreBitDisplay;
+import net.mograsim.logic.core.components.CoreManualSwitch;
import net.mograsim.logic.core.types.Bit;
import net.mograsim.logic.core.types.BitVector;
import net.mograsim.logic.model.am2900.util.SwitchWithDisplay;
import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper;
import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper.DebugState;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.ModelComponent;
public class TestableAm2904Impl implements TestableAm2904
{
- private GUIComponent am2904;
- private ManualSwitch I;
- private ManualSwitch C;
- private ManualSwitch Cx;
- private ManualSwitch IC, IN, IOVR, IZ;
- private ManualSwitch _CEM, _CEmu;
- private ManualSwitch _EC, _EN, _EOVR, _EZ;
- private ManualSwitch _OECT, _OEY;
- private ManualSwitch _SE;
- private BitDisplay C0;
- private BitDisplay CT;
+ private ModelComponent am2904;
+ private CoreManualSwitch I;
+ private CoreManualSwitch C;
+ private CoreManualSwitch Cx;
+ private CoreManualSwitch IC, IN, IOVR, IZ;
+ private CoreManualSwitch _CEM, _CEmu;
+ private CoreManualSwitch _EC, _EN, _EOVR, _EZ;
+ private CoreManualSwitch _OECT, _OEY;
+ private CoreManualSwitch _SE;
+ private CoreBitDisplay C0;
+ private CoreBitDisplay CT;
private SwitchWithDisplay SIO0, SIOn, QIO0, QIOn;
private SwitchWithDisplay YC, YN, YOVR, YZ;
- private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "GUIAm2904");
+ private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "Am2904");
@Override
public void setup()
import net.mograsim.logic.model.SimpleLogicUIStandalone;
import net.mograsim.logic.model.SimpleLogicUIStandalone.VisualisationObjects;
import net.mograsim.logic.model.am2900.Am2900Loader;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.components.Orientation;
-import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay;
-import net.mograsim.logic.model.model.components.atomic.GUIClock;
-import net.mograsim.logic.model.model.components.atomic.GUIClock.GUIClockParams;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
-import net.mograsim.logic.model.model.wires.GUIWire;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
+import net.mograsim.logic.model.model.components.atomic.ModelClock;
+import net.mograsim.logic.model.model.components.atomic.ModelClock.ModelClockParams;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
public class Am2910Testbench
{
SimpleLogicUIStandalone.executeVisualisation(Am2910Testbench::create, Am2910Testbench::beforeRun);
}
- @SuppressWarnings("unused") // for GUIWires being created
- public static void create(ViewModelModifiable model)
+ @SuppressWarnings("unused") // for ModelWires being created
+ public static void create(LogicModelModifiable model)
{
- GUIComponent am2910 = IndirectGUIComponentCreator.createComponent(model, "GUIAm2910", "Am2910");
- GUIClock C = new GUIClock(model, new GUIClockParams(1000, Orientation.RIGHT));
- GUIManualSwitch D = new GUIManualSwitch(model, 12, "D");
- GUIManualSwitch _RLD = new GUIManualSwitch(model, 1, "_RLD");
- GUIManualSwitch _CC = new GUIManualSwitch(model, 1, "_CC");
- GUIManualSwitch _CCEN = new GUIManualSwitch(model, 1, "_CCEN");
- GUIManualSwitch I = new GUIManualSwitch(model, 4, "I");
- GUIManualSwitch CI = new GUIManualSwitch(model, 1, "CI");
- GUIManualSwitch _OE = new GUIManualSwitch(model, 1, "_OE");
- GUIBitDisplay _FULL = new GUIBitDisplay(model, 1, "_FULL");
- GUIBitDisplay _PL = new GUIBitDisplay(model, 1, "_PL");
- GUIBitDisplay _MAP = new GUIBitDisplay(model, 1, "_MAP");
- GUIBitDisplay _VECT = new GUIBitDisplay(model, 1, "_VECT");
- GUIBitDisplay Y = new GUIBitDisplay(model, 12, "Y");
+ ModelComponent am2910 = IndirectModelComponentCreator.createComponent(model, "Am2910", "Am2910");
+ ModelClock C = new ModelClock(model, new ModelClockParams(1000, Orientation.RIGHT));
+ ModelManualSwitch D = new ModelManualSwitch(model, 12, "D");
+ ModelManualSwitch _RLD = new ModelManualSwitch(model, 1, "_RLD");
+ ModelManualSwitch _CC = new ModelManualSwitch(model, 1, "_CC");
+ ModelManualSwitch _CCEN = new ModelManualSwitch(model, 1, "_CCEN");
+ ModelManualSwitch I = new ModelManualSwitch(model, 4, "I");
+ ModelManualSwitch CI = new ModelManualSwitch(model, 1, "CI");
+ ModelManualSwitch _OE = new ModelManualSwitch(model, 1, "_OE");
+ ModelBitDisplay _FULL = new ModelBitDisplay(model, 1, "_FULL");
+ ModelBitDisplay _PL = new ModelBitDisplay(model, 1, "_PL");
+ ModelBitDisplay _MAP = new ModelBitDisplay(model, 1, "_MAP");
+ ModelBitDisplay _VECT = new ModelBitDisplay(model, 1, "_VECT");
+ ModelBitDisplay Y = new ModelBitDisplay(model, 12, "Y");
C.moveTo(35, -35);
D.moveTo(10, -20);
Y.moveTo(40, 65);
_OE.moveTo(60, 85);
- new GUIWire(model, C.getOutputPin(), am2910.getPin("C"), new Point(60, -27.5));
- new GUIWire(model, D.getOutputPin(), am2910.getPin("D"), new Point(36, -12.5));
- new GUIWire(model, _RLD.getOutputPin(), am2910.getPin("_RLD"), new Point[0]);
- new GUIWire(model, _CC.getOutputPin(), am2910.getPin("_CC"));
- new GUIWire(model, _CCEN.getOutputPin(), am2910.getPin("_CCEN"));
- new GUIWire(model, I.getOutputPin(), am2910.getPin("I"));
- new GUIWire(model, CI.getOutputPin(), am2910.getPin("CI"), new Point(100, 52.5), new Point(100, 40));
- new GUIWire(model, am2910.getPin("_FULL"), _FULL.getInputPin(), new Point[0]);
- new GUIWire(model, am2910.getPin("_PL"), _PL.getInputPin(), new Point(13, 92.5));
- new GUIWire(model, am2910.getPin("_MAP"), _MAP.getInputPin(), new Point(19, 112.5));
- new GUIWire(model, am2910.getPin("_VECT"), _VECT.getInputPin(), new Point(25, 132.5));
- new GUIWire(model, am2910.getPin("Y"), Y.getInputPin(), new Point(38, 72.5));
- new GUIWire(model, am2910.getPin("_OE"), _OE.getOutputPin());
+ new ModelWire(model, C.getOutputPin(), am2910.getPin("C"), new Point(60, -27.5));
+ new ModelWire(model, D.getOutputPin(), am2910.getPin("D"), new Point(36, -12.5));
+ new ModelWire(model, _RLD.getOutputPin(), am2910.getPin("_RLD"), new Point[0]);
+ new ModelWire(model, _CC.getOutputPin(), am2910.getPin("_CC"));
+ new ModelWire(model, _CCEN.getOutputPin(), am2910.getPin("_CCEN"));
+ new ModelWire(model, I.getOutputPin(), am2910.getPin("I"));
+ new ModelWire(model, CI.getOutputPin(), am2910.getPin("CI"), new Point(100, 52.5), new Point(100, 40));
+ new ModelWire(model, am2910.getPin("_FULL"), _FULL.getInputPin(), new Point[0]);
+ new ModelWire(model, am2910.getPin("_PL"), _PL.getInputPin(), new Point(13, 92.5));
+ new ModelWire(model, am2910.getPin("_MAP"), _MAP.getInputPin(), new Point(19, 112.5));
+ new ModelWire(model, am2910.getPin("_VECT"), _VECT.getInputPin(), new Point(25, 132.5));
+ new ModelWire(model, am2910.getPin("Y"), Y.getInputPin(), new Point(38, 72.5));
+ new ModelWire(model, am2910.getPin("_OE"), _OE.getOutputPin());
}
public static void beforeRun(VisualisationObjects vis)
{
vis.model.getComponentsByName().values().forEach(c ->
{
- if (c instanceof GUIManualSwitch)
+ if (c instanceof ModelManualSwitch)
{
- GUIManualSwitch cCasted = (GUIManualSwitch) c;
+ ModelManualSwitch cCasted = (ModelManualSwitch) c;
cCasted.setHighLevelState("out", BitVector.of(Bit.ZERO, cCasted.logicWidth));
}
});
package net.mograsim.logic.model.am2900.am2910;
-import net.mograsim.logic.core.components.BitDisplay;
-import net.mograsim.logic.core.components.ManualSwitch;
+import net.mograsim.logic.core.components.CoreBitDisplay;
+import net.mograsim.logic.core.components.CoreManualSwitch;
import net.mograsim.logic.core.types.BitVector;
import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper;
import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper.DebugState;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.ModelComponent;
public class TestableAm2910Impl implements TestableAm2910
{
- private GUIComponent am2901;
- private ManualSwitch I;
- private ManualSwitch C;
- private ManualSwitch CI;
- private ManualSwitch D;
- private ManualSwitch _CC;
- private ManualSwitch _CCEN;
- private ManualSwitch _RLD;
- private ManualSwitch _OE;
- private BitDisplay _FULL;
- private BitDisplay Y;
- private BitDisplay _PL, _MAP, _VECT;
-
- private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "GUIAm2910");
+ private ModelComponent am2901;
+ private CoreManualSwitch I;
+ private CoreManualSwitch C;
+ private CoreManualSwitch CI;
+ private CoreManualSwitch D;
+ private CoreManualSwitch _CC;
+ private CoreManualSwitch _CCEN;
+ private CoreManualSwitch _RLD;
+ private CoreManualSwitch _OE;
+ private CoreBitDisplay _FULL;
+ private CoreBitDisplay Y;
+ private CoreBitDisplay _PL, _MAP, _VECT;
+
+ private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "Am2910");
@Override
public void setup()
package net.mograsim.logic.model.am2900.util;
-import net.mograsim.logic.core.components.BitDisplay;
-import net.mograsim.logic.core.components.ManualSwitch;
+import net.mograsim.logic.core.components.CoreBitDisplay;
+import net.mograsim.logic.core.components.CoreManualSwitch;
import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.WireCrossPoint;
+import net.mograsim.logic.model.model.wires.ModelWireCrossPoint;
import net.mograsim.logic.model.util.ModellingTool;
public class SwitchWithDisplay
{
private final Pin pin;
- private final GUIBitDisplay guiBitDisplay;
- private final GUIManualSwitch guiManualSwitch;
+ private final ModelBitDisplay modelBitDisplay;
+ private final ModelManualSwitch modelManualSwitch;
- public SwitchWithDisplay(ViewModelModifiable model, Pin target)
+ public SwitchWithDisplay(LogicModelModifiable model, Pin target)
{
pin = target;
- guiBitDisplay = new GUIBitDisplay(model, pin.logicWidth);
- guiManualSwitch = new GUIManualSwitch(model, pin.logicWidth);
+ modelBitDisplay = new ModelBitDisplay(model, pin.logicWidth);
+ modelManualSwitch = new ModelManualSwitch(model, pin.logicWidth);
ModellingTool tool = ModellingTool.createFor(model);
- WireCrossPoint crossPoint = new WireCrossPoint(model, pin.logicWidth);
- tool.connect(guiBitDisplay.getInputPin(), crossPoint);
- tool.connect(guiManualSwitch.getOutputPin(), crossPoint);
+ ModelWireCrossPoint crossPoint = new ModelWireCrossPoint(model, pin.logicWidth);
+ tool.connect(modelBitDisplay.getInputPin(), crossPoint);
+ tool.connect(modelManualSwitch.getOutputPin(), crossPoint);
}
public final BitVector getDisplayedValue()
{
- return guiBitDisplay.getBitDisplay().getDisplayedValue();
+ return modelBitDisplay.getBitDisplay().getDisplayedValue();
}
public final void setState(BitVector bits)
{
- guiManualSwitch.getManualSwitch().setState(bits);
+ modelManualSwitch.getManualSwitch().setState(bits);
}
public final Pin getPin()
return pin;
}
- public final BitDisplay getBitDisplay()
+ public final CoreBitDisplay getBitDisplay()
{
- return guiBitDisplay.getBitDisplay();
+ return modelBitDisplay.getBitDisplay();
}
- public final ManualSwitch getManualSwitch()
+ public final CoreManualSwitch getManualSwitch()
{
- return guiManualSwitch.getManualSwitch();
+ return modelManualSwitch.getManualSwitch();
}
- final GUIBitDisplay getGuiBitDisplay()
+ final ModelBitDisplay getModelBitDisplay()
{
- return guiBitDisplay;
+ return modelBitDisplay;
}
- final GUIManualSwitch getGuiManualSwitch()
+ final ModelManualSwitch getModelManualSwitch()
{
- return guiManualSwitch;
+ return modelManualSwitch;
}
}
import java.util.Set;
import java.util.TreeSet;
-import net.mograsim.logic.core.components.BitDisplay;
-import net.mograsim.logic.core.components.ManualSwitch;
+import net.mograsim.logic.core.components.CoreBitDisplay;
+import net.mograsim.logic.core.components.CoreManualSwitch;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.model.LogicUIStandaloneGUI;
import net.mograsim.logic.model.am2900.Am2900Loader;
import net.mograsim.logic.model.am2900.TestableCircuit;
import net.mograsim.logic.model.am2900.TestableCircuit.Result;
-import net.mograsim.logic.model.model.ViewModel;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
+import net.mograsim.logic.model.model.LogicModel;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.model.wires.ModelWire;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
import net.mograsim.logic.model.util.ModellingTool;
public class TestEnvironmentHelper
private Field componentField;
private Optional<Field> timelineField = Optional.empty();
- private GUIComponent component;
+ private ModelComponent component;
private Timeline timeline;
- private ViewModelModifiable viewModel;
+ private LogicModelModifiable logicModel;
private ModellingTool modellingTool;
- private HashMap<String, GUIManualSwitch> idSwitchMap = new HashMap<>();
- private HashMap<String, GUIBitDisplay> idDisplayMap = new HashMap<>();
+ private HashMap<String, ModelManualSwitch> idSwitchMap = new HashMap<>();
+ private HashMap<String, ModelBitDisplay> idDisplayMap = new HashMap<>();
private DebugState debug = DebugState.NO_DEBUG;
private Set<String> wireDebugChangeSet;
this.testEnvClass = testEnvInstance.getClass();
for (Field f : testEnvClass.getDeclaredFields())
{
- if (GUIComponent.class.isAssignableFrom(f.getType()))
+ if (ModelComponent.class.isAssignableFrom(f.getType()))
{
componentField = f;
componentField.setAccessible(true);
public void setup(DebugState debug)
{
this.debug = debug;
- // Create view model
- viewModel = new ViewModelModifiable();
- modellingTool = ModellingTool.createFor(viewModel);
+ // Create logic model
+ logicModel = new LogicModelModifiable();
+ modellingTool = ModellingTool.createFor(logicModel);
Am2900Loader.setup();
- component = IndirectGUIComponentCreator.createComponent(viewModel, modelId);
+ component = IndirectModelComponentCreator.createComponent(logicModel, modelId);
setField(componentField, component);
component.getPins().values().forEach(this::extendModelPin);
- // Create logic model
- LogicModelParameters params = new LogicModelParameters();
+ // Create core model
+ CoreModelParameters params = new CoreModelParameters();
params.gateProcessTime = 50;
params.wireTravelTime = 10;
- timeline = ViewLogicModelAdapter.convert(viewModel, params);
+ timeline = LogicCoreAdapter.convert(logicModel, params);
timelineField.ifPresent(f -> setField(f, timeline));
// Bind switches/displays to this test class
{
Field f = testEnvClass.getDeclaredField(javaIdentId);
Class<?> type = f.getType();
- if (ManualSwitch.class.isAssignableFrom(type))
+ if (CoreManualSwitch.class.isAssignableFrom(type))
{
- GUIManualSwitch gms = new GUIManualSwitch(viewModel, p.logicWidth);
+ ModelManualSwitch gms = new ModelManualSwitch(logicModel, p.logicWidth);
modellingTool.connect(p, gms.getOutputPin());
idSwitchMap.put(p.name, gms);
- } else if (BitDisplay.class.isAssignableFrom(type))
+ } else if (CoreBitDisplay.class.isAssignableFrom(type))
{
- GUIBitDisplay gbd = new GUIBitDisplay(viewModel, p.logicWidth);
+ ModelBitDisplay gbd = new ModelBitDisplay(logicModel, p.logicWidth);
modellingTool.connect(p, gbd.getInputPin());
idDisplayMap.put(p.name, gbd);
} else if (SwitchWithDisplay.class.isAssignableFrom(type))
{
- SwitchWithDisplay swd = new SwitchWithDisplay(viewModel, p);
+ SwitchWithDisplay swd = new SwitchWithDisplay(logicModel, p);
setField(f, swd);
} else
{
private void setupDebugging()
{
// Debug code
- HashSet<GUIWire> wiresIncludingSubmodels = new HashSet<>();
- Queue<ViewModel> modelsToIterate = new LinkedList<>();
- modelsToIterate.add(viewModel);
+ HashSet<ModelWire> wiresIncludingSubmodels = new HashSet<>();
+ Queue<LogicModel> modelsToIterate = new LinkedList<>();
+ modelsToIterate.add(logicModel);
while (modelsToIterate.size() > 0)
{
- ViewModel model = modelsToIterate.poll();
+ LogicModel model = modelsToIterate.poll();
wiresIncludingSubmodels.addAll(model.getWiresByName().values());
- for (GUIComponent comp : model.getComponentsByName().values())
+ for (ModelComponent comp : model.getComponentsByName().values())
if (comp instanceof SubmodelComponent)
modelsToIterate.offer(((SubmodelComponent) comp).submodel);
}
System.out.println(wiresIncludingSubmodels.size());
- viewModel.setRedrawHandler(() -> wiresIncludingSubmodels.forEach(w ->
+ logicModel.setRedrawHandler(() -> wiresIncludingSubmodels.forEach(w ->
{
if (debugWires)
{
{
try
{
- new LogicUIStandaloneGUI(viewModel).run();
- viewModel.setRedrawHandler(null);
+ new LogicUIStandaloneGUI(logicModel).run();
+ logicModel.setRedrawHandler(null);
}
catch (Exception e)
{
package net.mograsim.logic.model.editor;
-import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import net.mograsim.logic.model.editor.states.StateManager;
import net.mograsim.logic.model.editor.ui.DialogManager;
import net.mograsim.logic.model.editor.ui.EditorGUI;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.ModelWire;
import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
+import net.mograsim.logic.model.snippets.symbolrenderers.DefaultSymbolRenderer;
public final class Editor
{
final Set<ComponentInfo> copyBuffer = new HashSet<>();
public final DeserializedSubmodelComponent toBeEdited;
public final HandleManager handleManager;
- final static Map<GUIComponent, String> identifierPerComponent = new HashMap<>();
+ final static Map<ModelComponent, String> identifierPerComponent = new HashMap<>();
public final EditorGUI gui;
public final StateManager stateManager;
private final SaveLoadManager saveManager;
gui.open();
}
- public ViewModelModifiable getSubmodel()
+ public LogicModelModifiable getSubmodel()
{
return toBeEdited.getSubmodelModifiable();
}
selection.clear();
for (ComponentInfo info : copyBuffer)
{
- GUIComponent comp = addComponent(info.identifier, info.params);
+ ModelComponent comp = addComponent(info.identifier, info.params);
ComponentHandle h = handleManager.getHandle(comp);
h.reqMove(info.relX, info.relY);
selection.add(h);
String selected = gui.getAddListSelected();
try
{
- GUIComponent c = addComponent(selected, params);
+ ModelComponent c = addComponent(selected, params);
selection.clear();
selection.add(handleManager.getHandle(c));
moveSelection(x, y);
successful = true;
}
- catch (@SuppressWarnings("unused") UnsupportedOperationException | JsonSyntaxException | NumberFormatException e)
+ catch (@SuppressWarnings("unused") UnsupportedOperationException | JsonSyntaxException | NumberFormatException
+ | NullPointerException e)
{
String result = DialogManager.openMultiLineTextDialog("Add component", "Create", "Cancel", "Parameters:");
if (result == null)
}
}
- private GUIComponent addComponent(String identifier, JsonElement params)
+ private ModelComponent addComponent(String identifier, JsonElement params)
{
- GUIComponent comp = IndirectGUIComponentCreator.createComponent(toBeEdited.getSubmodelModifiable(), identifier, params);
+ ModelComponent comp = IndirectModelComponentCreator.createComponent(toBeEdited.getSubmodelModifiable(), identifier, params);
identifierPerComponent.put(comp, identifier);
return comp;
}
- public static String getIdentifier(GUIComponent c)
+ public static String getIdentifier(ModelComponent c)
{
if (identifierPerComponent.containsKey(c))
return identifierPerComponent.get(c);
- return new IdentifierGetter().componentIDs.apply(c);
+ return c.getIDForSerializing(new IdentifyParams());
}
public void duplicate()
@SuppressWarnings("unused")
public void addWire(PinHandle a, PinHandle b)
{
- new GUIWire(toBeEdited.getSubmodelModifiable(), a.getPin(), b.getPin(), new Point[0]);
+ new ModelWire(toBeEdited.getSubmodelModifiable(), a.getPin(), b.getPin(), new Point[0]);
}
public static enum Snapping
}
}
- public static void main(String[] args) throws IOException
+ public static void main(String[] args)
{
Am2900Loader.setup();
- SaveLoadManager.openLoadDialog();
+ openNewEditor();
+// SaveLoadManager.openLoadDialog();
+ }
+
+ public static void openNewEditor()
+ {
+ DeserializedSubmodelComponent toBeEdited = new DeserializedSubmodelComponent(new LogicModelModifiable(), null, null, null);
+ toBeEdited.setOutlineRenderer(new DefaultOutlineRenderer(toBeEdited));
+ toBeEdited.setSymbolRenderer(new DefaultSymbolRenderer(toBeEdited));
+ toBeEdited.setHighLevelStateHandler(new DefaultHighLevelStateHandler());
+ new Editor(toBeEdited);
}
public Snapping getSnapping()
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
-import net.mograsim.logic.model.model.ViewModelModifiable;
+import net.mograsim.logic.model.model.LogicModelModifiable;
import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
import net.mograsim.logic.model.serializing.SubmodelComponentSerializer;
public class SaveLoadManager
fdShell.dispose();
if (result != null)
{
- new Editor((DeserializedSubmodelComponent) IndirectGUIComponentCreator.createComponent(new ViewModelModifiable(),
+ new Editor((DeserializedSubmodelComponent) IndirectModelComponentCreator.createComponent(new LogicModelModifiable(),
"jsonfile:" + result));
}
}
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
import net.mograsim.logic.model.editor.Editor;
import net.mograsim.logic.model.editor.Editor.ComponentInfo;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.serializing.IdentifyParams;
public class ComponentHandle extends Handle
{
- private final ViewModelModifiable model;
- public final GUIComponent parent;
+ private final LogicModelModifiable model;
+ public final ModelComponent parent;
private final static double POS_OFFSET = 2.0d;
private final static double LENGTH_OFFSET = POS_OFFSET * 2;
boolean selected = false;
- public ComponentHandle(ViewModelModifiable model, GUIComponent parent)
+ public ComponentHandle(LogicModelModifiable model, ModelComponent parent)
{
super(4);
this.model = model;
public Optional<ComponentInfo> reqCopy(Point refPoint)
{
return Optional.of(new ComponentInfo(parent.getPosX() - refPoint.x, parent.getPosY() - refPoint.y, Editor.getIdentifier(parent),
- parent.getParamsForSerializingJSON(new IdentifierGetter())));
+ parent.getParamsForSerializingJSON(new IdentifyParams())));
}
@Override
import net.mograsim.logic.model.editor.Editor;
import net.mograsim.logic.model.editor.states.EditorState;
import net.mograsim.logic.model.editor.util.PrioritySet;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.model.wires.ModelWire;
import net.mograsim.logic.model.model.wires.MovablePin;
import net.mograsim.logic.model.model.wires.Pin;
{
private final Map<Pin, StaticPinHandle> handlePerPin;
private final Map<Pin, InterfacePinHandle> handlePerInterfacePin;
- private final Map<GUIWire, List<WirePointHandle>> pointHandlesPerWire;
- private final Map<GUIWire, WireHandle> handlePerWire;
+ private final Map<ModelWire, List<WirePointHandle>> pointHandlesPerWire;
+ private final Map<ModelWire, WireHandle> handlePerWire;
private final Set<Handle> handles;
private final Set<WirePointHandle> wirePointHandles;
- private final Map<GUIComponent, ComponentHandle> handlePerComp;
+ private final Map<ModelComponent, ComponentHandle> handlePerComp;
private final Collection<Consumer<Handle>> handleAddedListeners;
private final Collection<Consumer<Handle>> handleRemovedListeners;
handleAddedListeners = new ArrayList<>();
handleRemovedListeners = new ArrayList<>();
- ViewModelModifiable model = editor.getSubmodel();
+ LogicModelModifiable model = editor.getSubmodel();
model.addComponentAddedListener(c -> registerComponent(c));
System.err.println("Warning! HandleManager was already initialized.");
else
{
- ViewModelModifiable model = editor.getSubmodel();
- Map<String, GUIComponent> compsByName = model.getComponentsByName();
- Set<GUIComponent> comps = new HashSet<>(compsByName.values());
- GUIComponent interfaceComp = compsByName.get(SubmodelComponent.SUBMODEL_INTERFACE_NAME);
+ LogicModelModifiable model = editor.getSubmodel();
+ Map<String, ModelComponent> compsByName = model.getComponentsByName();
+ Set<ModelComponent> comps = new HashSet<>(compsByName.values());
+ ModelComponent interfaceComp = compsByName.get(SubmodelComponent.SUBMODEL_INTERFACE_NAME);
comps.remove(interfaceComp);
registerInterfaceComponent(interfaceComp);
comps.forEach(c -> registerComponent(c));
}
}
- private void registerInterfaceComponent(GUIComponent c)
+ private void registerInterfaceComponent(ModelComponent c)
{
c.getPins().values().forEach(p -> addInterfacePinHandle(p));
c.addPinAddedListener(p -> addInterfacePinHandle(p));
c.addPinRemovedListener(p -> removeInterfacePinHandle(p));
}
- private void registerComponent(GUIComponent c)
+ private void registerComponent(ModelComponent c)
{
addComponentHandle(c);
c.addPinRemovedListener(p -> removePinHandle(p));
}
- private void registerWire(GUIWire wire)
+ private void registerWire(ModelWire wire)
{
Point[] path = wire.getPath();
AtomicInteger oldLength = new AtomicInteger(path == null ? 0 : path.length);
// -- Adding/Removing handles -- ///
///////////////////////////////////
- private void addComponentHandle(GUIComponent c)
+ private void addComponentHandle(ModelComponent c)
{
ComponentHandle h = new ComponentHandle(editor.getSubmodel(), c);
handlePerComp.put(c, h);
addHandle(h);
}
- private void removeComponentHandle(GUIComponent c)
+ private void removeComponentHandle(ModelComponent c)
{
ComponentHandle h = handlePerComp.get(c);
handlePerComp.remove(c);
removeHandle(h);
}
- private void addWirePointHandle(GUIWire w)
+ private void addWirePointHandle(ModelWire w)
{
List<WirePointHandle> wireHandles = pointHandlesPerWire.get(w);
WirePointHandle h;
addHandle(h);
}
- void destroyWirePointHandle(GUIWire owner, WirePointHandle h)
+ void destroyWirePointHandle(ModelWire owner, WirePointHandle h)
{
if (pointHandlesPerWire.containsKey(owner))
{
}
}
- private void removeWirePointHandles(GUIWire owner)
+ private void removeWirePointHandles(ModelWire owner)
{
if (!pointHandlesPerWire.containsKey(owner))
return;
pointHandlesPerWire.remove(owner);
}
- private void addWireHandle(GUIWire w)
+ private void addWireHandle(ModelWire w)
{
WireHandle h = new WireHandle(editor.getSubmodel(), w);
handlePerWire.put(w, h);
addHandle(h);
}
- private void removeWireHandle(GUIWire w)
+ private void removeWireHandle(ModelWire w)
{
WireHandle h = handlePerWire.get(w);
handlePerWire.remove(w);
return handlePerPin.get(parent);
}
- public ComponentHandle getHandle(GUIComponent parent)
+ public ComponentHandle getHandle(ModelComponent parent)
{
return handlePerComp.get(parent);
}
- public WireHandle getHandle(GUIWire parent)
+ public WireHandle getHandle(ModelWire parent)
{
return handlePerWire.get(parent);
}
/**
* @return A Collection of the registered {@link WirePointHandle}s of the specified wire
*/
- public Collection<WirePointHandle> getWirePointHandles(GUIWire parent)
+ public Collection<WirePointHandle> getWirePointHandles(ModelWire parent)
{
return pointHandlesPerWire.get(parent).stream().collect(Collectors.toSet());
}
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
import net.mograsim.logic.model.editor.states.EditorState;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.wires.ModelWire;
public class WireHandle extends Handle
{
private boolean selected = false;
private final static double WIDTH = 2.0;
private final static double WIDTH_SQUARED = WIDTH * WIDTH;
- private final ViewModelModifiable model;
- public final GUIWire parent;
+ private final LogicModelModifiable model;
+ public final ModelWire parent;
- public WireHandle(ViewModelModifiable model, GUIWire parent)
+ public WireHandle(LogicModelModifiable model, ModelWire parent)
{
super(5);
this.model = model;
}
- private static Optional<WireClickData> click(GUIWire w, double x, double y)
+ private static Optional<WireClickData> click(ModelWire w, double x, double y)
{
Rectangle modifiedBounds = w.getBounds();
modifiedBounds.x -= WIDTH;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.model.model.wires.ModelWire;
public class WirePointHandle extends Handle
{
private final static int END_OFFSET = 4;
private final HandleManager manager;
private boolean selected = false;
- public final GUIWire parent;
+ public final ModelWire parent;
private int pointIndex;
- public WirePointHandle(HandleManager manager, GUIWire parent, int pointIndex)
+ public WirePointHandle(HandleManager manager, ModelWire parent, int pointIndex)
{
super(3);
this.manager = manager;
}
/**
- * Sets the index of the {@link Point} within the parent {@link Wire}s path that is controlled by this handle
+ * Sets the index of the {@link Point} within the parent {@link CoreWire}s path that is controlled by this handle
*
* @param index Index of the Point in the Wires path.
* @throws IndexOutOfBoundsException
{
try
{
- Pin p = editor.toBeEdited.addSubmodelInterface(new MovablePin(editor.toBeEdited, result[0], Integer.parseInt(result[1]),
- PinUsage.valueOf(result[2]), clicked.x, clicked.y));
+ Pin p = editor.toBeEdited.addSubmodelInterface(new MovablePin(editor.getSubmodel(), editor.toBeEdited, result[0],
+ Integer.parseInt(result[1]), PinUsage.valueOf(result[2]), clicked.x, clicked.y));
editor.handleManager.getInterfacePinHandle(p).reqMove(clicked.x, clicked.y);
}
catch (NumberFormatException e)
import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput;
import net.mograsim.logic.model.editor.Editor;
import net.mograsim.logic.model.editor.SaveLoadManager;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
public class EditorGUI
{
ToolItem file = new ToolItem(toolBar, SWT.DROP_DOWN);
// TODO
-// DropDownEntry newEntry = new DropDownEntry("New", e -> {
-// });
+ DropDownEntry newEntry = new DropDownEntry("New", e -> Editor.openNewEditor());
DropDownEntry loadEntry = new DropDownEntry("Load", e ->
{
try
DropDownEntry saveEntry = new DropDownEntry("Save", e -> editor.save());
DropDownEntry saveAsEntry = new DropDownEntry("Save as...", e -> editor.saveAs());
- DropDownEntry[] entries = new DropDownEntry[] { loadEntry, saveEntry, saveAsEntry };
+ DropDownEntry[] entries = new DropDownEntry[] { newEntry, loadEntry, saveEntry, saveAsEntry };
setupDrowpDownMenu(file, entries);
public void refreshAddList()
{
- addList.setItems(IndirectGUIComponentCreator.getStandardComponentIDs().keySet().stream().sorted().toArray(String[]::new));
+ addList.setItems(IndirectModelComponentCreator.getStandardComponentIDs().keySet().stream().sorted().toArray(String[]::new));
addList.select(0);
}
if (!display.readAndDispatch())
display.sleep();
}
-
-}
+}
\ No newline at end of file
#Properties file for net.mograsim.logic.model
Bundle-Vendor = Mograsim Team
-Bundle-Name = Mograsim logic user interface
\ No newline at end of file
+Bundle-Name = Mograsim logic model and user interface
\ No newline at end of file
//TODO maybe move to logic core?
public class LogicExecuter
{
- // TODO replace with LogicModel when it exists
+ // TODO replace with CoreModel when it exists
private final Timeline timeline;
private final AtomicBoolean shouldBeRunningLive;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import org.eclipse.swt.SWT;
import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas;
import net.mograsim.logic.core.types.Bit;
import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.model.model.ViewModel;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.LogicModel;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
import net.mograsim.logic.model.model.components.submodels.SubmodelInterface;
-import net.mograsim.logic.model.model.wires.WireCrossPoint;
+import net.mograsim.logic.model.model.wires.ModelWireCrossPoint;
import net.mograsim.preferences.Preferences;
/**
*/
public class LogicUICanvas extends ZoomableCanvas
{
- private static final boolean OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL = false;
+ private static final boolean OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL = true;
- private final ViewModel model;
+ private final LogicModel model;
- public LogicUICanvas(Composite parent, int style, ViewModel model)
+ public LogicUICanvas(Composite parent, int style, LogicModel model)
{
super(parent, style, Preferences.current().getBoolean("net.mograsim.logic.model.improvetext"));
if (e.button == 1)
{
Point click = canvasToWorldCoords(e.x, e.y);
- for (GUIComponent component : model.getComponentsByName().values())
+ for (ModelComponent component : model.getComponentsByName().values())
if (component.getBounds().contains(click) && component.clicked(click.x, click.y))
{
redraw();
}
}
- private void openDebugSetHighLevelStateShell(ViewModel model)
+ private void openDebugSetHighLevelStateShell(LogicModel model)
{
Shell debugShell = new Shell();
debugShell.setLayout(new GridLayout(2, false));
new Label(debugShell, SWT.NONE).setText("Target component: ");
Combo componentSelector = new Combo(debugShell, SWT.DROP_DOWN | SWT.READ_ONLY);
componentSelector.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- List<GUIComponent> componentsByItemIndex = new ArrayList<>();
- Consumer<? super GUIComponent> compsChanged = c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model);
- model.addComponentAddedListener(compsChanged);
- model.addComponentRemovedListener(compsChanged);
- debugShell.addListener(SWT.Dispose, e ->
+ List<ModelComponent> componentsByItemIndex = new ArrayList<>();
+ List<LogicModel> models = new ArrayList<>();
+ AtomicBoolean recalculateQueued = new AtomicBoolean();
+ AtomicReference<Consumer<? super ModelComponent>> compAdded = new AtomicReference<>();
+ AtomicReference<Consumer<? super ModelComponent>> compRemoved = new AtomicReference<>();
+ compAdded.set(c -> compsChanged(compAdded.get(), compRemoved.get(), c, models, componentsByItemIndex, componentSelector, model,
+ recalculateQueued, true));
+ compRemoved.set(c -> compsChanged(compAdded.get(), compRemoved.get(), c, models, componentsByItemIndex, componentSelector, model,
+ recalculateQueued, false));
+ iterateModelTree(compAdded.get(), compRemoved.get(), model, models, true);
+ debugShell.addListener(SWT.Dispose, e -> models.forEach(m ->
{
- model.removeComponentAddedListener(compsChanged);
- model.removeComponentRemovedListener(compsChanged);
- });
- recalculateComponentSelector(componentsByItemIndex, componentSelector, model);
+ m.removeComponentAddedListener(compAdded.get());
+ m.removeComponentRemovedListener(compRemoved.get());
+ }));
+ queueRecalculateComponentSelector(recalculateQueued, componentsByItemIndex, componentSelector, model);
new Label(debugShell, SWT.NONE).setText("Target state ID: ");
Text stateIDText = new Text(debugShell, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
stateIDText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
int componentIndex = componentSelector.getSelectionIndex();
if (componentIndex < 0 || componentIndex >= componentsByItemIndex.size())
throw new RuntimeException("No component selected");
- GUIComponent target = componentsByItemIndex.get(componentIndex);
+ ModelComponent target = componentsByItemIndex.get(componentIndex);
String valueString = valueText.getText();
Object value;
if (radioBit.getSelection())
debugShell.open();
}
- private void recalculateComponentSelector(List<GUIComponent> componentsByItemIndex, Combo componentSelector, ViewModel model)
+ private void compsChanged(Consumer<? super ModelComponent> compAdded, Consumer<? super ModelComponent> compRemoved, ModelComponent c,
+ List<LogicModel> models, List<ModelComponent> componentsByItemIndex, Combo componentSelector, LogicModel model,
+ AtomicBoolean recalculateQueued, boolean add)
+ {
+ iterateSubmodelTree(compAdded, compRemoved, c, models, add);
+ queueRecalculateComponentSelector(recalculateQueued, componentsByItemIndex, componentSelector, model);
+ }
+
+ private void iterateSubmodelTree(Consumer<? super ModelComponent> compAdded, Consumer<? super ModelComponent> compRemoved,
+ ModelComponent c, List<LogicModel> models, boolean add)
+ {
+ if (c instanceof SubmodelComponent)
+ iterateModelTree(compAdded, compRemoved, ((SubmodelComponent) c).submodel, models, add);
+ }
+
+ private void iterateModelTree(Consumer<? super ModelComponent> compAdded, Consumer<? super ModelComponent> compRemoved,
+ LogicModel model, List<LogicModel> models, boolean add)
+ {
+ if (add ^ models.contains(model))
+ {
+ if (add)
+ {
+ models.add(model);
+ model.addComponentAddedListener(compAdded);
+ model.addComponentRemovedListener(compRemoved);
+ } else
+ {
+ models.remove(model);
+ model.removeComponentAddedListener(compAdded);
+ model.removeComponentRemovedListener(compRemoved);
+ }
+ for (ModelComponent c : model.getComponentsByName().values())
+ iterateSubmodelTree(compAdded, compRemoved, c, models, add);
+ }
+ }
+
+ private void queueRecalculateComponentSelector(AtomicBoolean recalculateQueued, List<ModelComponent> componentsByItemIndex,
+ Combo componentSelector, LogicModel model)
+ {
+ if (recalculateQueued.compareAndSet(false, true))
+ getDisplay().asyncExec(() -> recalculateComponentSelector(recalculateQueued, componentsByItemIndex, componentSelector, model));
+ }
+
+ private void recalculateComponentSelector(AtomicBoolean recalculateQueued, List<ModelComponent> componentsByItemIndex,
+ Combo componentSelector, LogicModel model)
{
+ recalculateQueued.set(false);
componentsByItemIndex.clear();
componentSelector.setItems();
addComponentSelectorItems(componentsByItemIndex, "", componentSelector, model);
}
- private void addComponentSelectorItems(List<GUIComponent> componentsByItemIndex, String base, Combo componentSelector, ViewModel model)
+ private void addComponentSelectorItems(List<ModelComponent> componentsByItemIndex, String base, Combo componentSelector,
+ LogicModel model)
{
model.getComponentsByName().values().stream().sorted((c1, c2) -> c1.name.compareTo(c2.name)).forEach(c ->
{
- if (!(c instanceof WireCrossPoint || c instanceof SubmodelInterface))
+ if (!(c instanceof ModelWireCrossPoint || c instanceof SubmodelInterface))
{
String item = base + c.name;
componentsByItemIndex.add(c);
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.ViewModel;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.LogicModel;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.wires.Pin;
import net.mograsim.preferences.Preferences;
{
private static final boolean DRAW_PINS = false;
- private final ViewModel model;
+ private final LogicModel model;
- public LogicUIRenderer(ViewModel model)
+ public LogicUIRenderer(LogicModel model)
{
this.model = model;
}
model.getComponentsByName().values().forEach(c -> renderComponent(gc, c, visibleRegion));
}
- private static void renderComponent(GeneralGC gc, GUIComponent component, Rectangle visibleRegion)
+ private static void renderComponent(GeneralGC gc, ModelComponent component, Rectangle visibleRegion)
{
Rectangle bounds = component.getBounds();
double lw = gc.getLineWidth();
import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasOverlay;
import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput;
-import net.mograsim.logic.model.model.ViewModel;
+import net.mograsim.logic.model.model.LogicModel;
/**
* Standalone simulation visualizer graphical user interface.
private final Shell shell;
private final LogicUICanvas ui;
- public LogicUIStandaloneGUI(ViewModel model)
+ public LogicUIStandaloneGUI(LogicModel model)
{
display = new Display();
shell = new Shell(display);
import java.util.function.Consumer;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
public class SimpleLogicUIStandalone
{
- public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel)
+ public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel)
{
- executeVisualisation(setupViewModel, (Consumer<VisualisationObjects>) null);
+ executeVisualisation(setupLogicModel, (Consumer<VisualisationObjects>) null);
}
- public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel, Consumer<VisualisationObjects> beforeRun)
+ public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel, Consumer<VisualisationObjects> beforeRun)
{
- LogicModelParameters params = new LogicModelParameters();
+ CoreModelParameters params = new CoreModelParameters();
params.gateProcessTime = 50;
params.wireTravelTime = 10;
- executeVisualisation(setupViewModel, params, beforeRun);
+ executeVisualisation(setupLogicModel, params, beforeRun);
}
- public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel, LogicModelParameters params)
+ public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel, CoreModelParameters params)
{
- executeVisualisation(setupViewModel, params, null);
+ executeVisualisation(setupLogicModel, params, null);
}
- public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel, LogicModelParameters params,
+ public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel, CoreModelParameters params,
Consumer<VisualisationObjects> beforeRun)
{
- // setup view model
- ViewModelModifiable viewModel = new ViewModelModifiable();
- setupViewModel.accept(viewModel);
+ // setup logic model
+ LogicModelModifiable logicModel = new LogicModelModifiable();
+ setupLogicModel.accept(logicModel);
- // convert to logic model
- Timeline timeline = ViewLogicModelAdapter.convert(viewModel, params);
+ // convert to core model
+ Timeline timeline = LogicCoreAdapter.convert(logicModel, params);
// initialize UI and executer
- LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(viewModel);
+ LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(logicModel);
LogicExecuter exec = new LogicExecuter(timeline);
if (beforeRun != null)
- beforeRun.accept(new VisualisationObjects(viewModel, timeline, ui, exec));
+ beforeRun.accept(new VisualisationObjects(logicModel, timeline, ui, exec));
// run it
exec.startLiveExecution();
public static class VisualisationObjects
{
- public final ViewModelModifiable model;
+ public final LogicModelModifiable model;
public final Timeline timeline;
public final LogicUIStandaloneGUI gui;
public final LogicExecuter executer;
- public VisualisationObjects(ViewModelModifiable model, Timeline timeline, LogicUIStandaloneGUI gui, LogicExecuter executer)
+ public VisualisationObjects(LogicModelModifiable model, Timeline timeline, LogicUIStandaloneGUI gui, LogicExecuter executer)
{
this.model = model;
this.timeline = timeline;
package net.mograsim.logic.model.examples;
import net.mograsim.logic.model.SimpleLogicUIStandalone;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.model.wires.ModelWire;
public class ClickableSubmodelComponentsTest
{
SimpleLogicUIStandalone.executeVisualisation(ClickableSubmodelComponentsTest::createExample);
}
- public static void createExample(ViewModelModifiable model)
+ public static void createExample(LogicModelModifiable model)
{
- @SuppressWarnings("unused") // GUIWire
+ @SuppressWarnings("unused") // Wire
SimpleRectangularSubmodelComponent comp = new SimpleRectangularSubmodelComponent(model, 1, "")
{
{
setSubmodelScale(.4);
setOutputPins("O0");
- GUIManualSwitch sw = new GUIManualSwitch(submodelModifiable, 1);
- GUIBitDisplay bd = new GUIBitDisplay(submodelModifiable, 1);
+ ModelManualSwitch sw = new ModelManualSwitch(submodelModifiable, 1);
+ ModelBitDisplay bd = new ModelBitDisplay(submodelModifiable, 1);
sw.moveTo(10, 5);
bd.moveTo(50, 5);
- new GUIWire(submodelModifiable, sw.getOutputPin(), bd.getInputPin());
+ new ModelWire(submodelModifiable, sw.getOutputPin(), bd.getInputPin());
}
};
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.mograsim.logic.model.SimpleLogicUIStandalone;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
-import net.mograsim.logic.model.model.components.atomic.GUINotGate;
-import net.mograsim.logic.model.model.components.atomic.GUIOrGate;
-import net.mograsim.logic.model.model.wires.GUIWire;
-import net.mograsim.logic.model.model.wires.WireCrossPoint;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
+import net.mograsim.logic.model.model.components.atomic.ModelNotGate;
+import net.mograsim.logic.model.model.components.atomic.ModelOrGate;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.model.wires.ModelWireCrossPoint;
public class RSLatchExample
{
SimpleLogicUIStandalone.executeVisualisation(RSLatchExample::createRSLatchExample);
}
- @SuppressWarnings("unused") // for GUIWires being created
- public static void createRSLatchExample(ViewModelModifiable model)
+ @SuppressWarnings("unused") // for Wires being created
+ public static void createRSLatchExample(LogicModelModifiable model)
{
- GUIManualSwitch rIn = new GUIManualSwitch(model, 1);
+ ModelManualSwitch rIn = new ModelManualSwitch(model, 1);
rIn.moveTo(100, 100);
- GUIManualSwitch sIn = new GUIManualSwitch(model, 1);
+ ModelManualSwitch sIn = new ModelManualSwitch(model, 1);
sIn.moveTo(100, 200);
- GUIOrGate or1 = new GUIOrGate(model, 1);
+ ModelOrGate or1 = new ModelOrGate(model, 1);
or1.moveTo(160, 102.5);
- new GUIWire(model, rIn.getOutputPin(), or1.getPin("A"));
+ new ModelWire(model, rIn.getOutputPin(), or1.getPin("A"));
- GUIOrGate or2 = new GUIOrGate(model, 1);
+ ModelOrGate or2 = new ModelOrGate(model, 1);
or2.moveTo(160, 192.5);
- new GUIWire(model, sIn.getOutputPin(), or2.getPin("B"));
+ new ModelWire(model, sIn.getOutputPin(), or2.getPin("B"));
- GUINotGate not1 = new GUINotGate(model, 1);
+ ModelNotGate not1 = new ModelNotGate(model, 1);
not1.moveTo(200, 107.5);
- new GUIWire(model, or1.getPin("Y"), not1.getPin("A"));
+ new ModelWire(model, or1.getPin("Y"), not1.getPin("A"));
- GUINotGate not2 = new GUINotGate(model, 1);
+ ModelNotGate not2 = new ModelNotGate(model, 1);
not2.moveTo(200, 197.5);
- new GUIWire(model, or2.getPin("Y"), not2.getPin("A"));
+ new ModelWire(model, or2.getPin("Y"), not2.getPin("A"));
- WireCrossPoint p1 = new WireCrossPoint(model, 1);
+ ModelWireCrossPoint p1 = new ModelWireCrossPoint(model, 1);
p1.moveCenterTo(250, 112.5);
- new GUIWire(model, not1.getPin("Y"), p1);
- new GUIWire(model, p1, or2.getPin("A"), new Point(250, 130), new Point(140, 185), new Point(140, 197.5));
+ new ModelWire(model, not1.getPin("Y"), p1);
+ new ModelWire(model, p1, or2.getPin("A"), new Point(250, 130), new Point(140, 185), new Point(140, 197.5));
- WireCrossPoint p2 = new WireCrossPoint(model, 1);
+ ModelWireCrossPoint p2 = new ModelWireCrossPoint(model, 1);
p2.moveCenterTo(250, 202.5);
- new GUIWire(model, not2.getPin("Y"), p2);
- new GUIWire(model, p2, or1.getPin("B"), new Point(250, 185), new Point(140, 130), new Point(140, 117.5));
+ new ModelWire(model, not2.getPin("Y"), p2);
+ new ModelWire(model, p2, or1.getPin("B"), new Point(250, 185), new Point(140, 130), new Point(140, 117.5));
- WireCrossPoint o1 = new WireCrossPoint(model, 1);
+ ModelWireCrossPoint o1 = new ModelWireCrossPoint(model, 1);
o1.moveCenterTo(270, 112.5);
- new GUIWire(model, p1, o1);
+ new ModelWire(model, p1, o1);
- WireCrossPoint o2 = new WireCrossPoint(model, 1);
+ ModelWireCrossPoint o2 = new ModelWireCrossPoint(model, 1);
o2.moveCenterTo(270, 202.5);
- new GUIWire(model, p2, o2);
+ new ModelWire(model, p2, o2);
}
}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Consumer;
+
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.ModelWire;
+
+public class LogicModel
+{
+ private final Map<String, ModelComponent> components;
+ private final Map<String, Runnable> componentDestroyFunctions;
+ private final Map<String, ModelComponent> componentsUnmodifiable;
+ private final Map<String, ModelWire> wires;
+ private final Map<String, Runnable> wireDestroyFunctions;
+ private final Map<String, ModelWire> wiresUnmodifiable;
+
+ private final List<Consumer<? super ModelComponent>> componentAddedListeners;
+ private final List<Consumer<? super ModelComponent>> componentRemovedListeners;
+ private final List<Consumer<? super ModelWire>> wireAddedListeners;
+ private final List<Consumer<? super ModelWire>> wireRemovedListeners;
+ private final List<Consumer<? super Runnable>> redrawHandlerChangedListeners;
+
+ private Runnable redrawHandler;
+
+ protected LogicModel()
+ {
+ components = new HashMap<>();
+ componentDestroyFunctions = new HashMap<>();
+ componentsUnmodifiable = Collections.unmodifiableMap(components);
+ wires = new HashMap<>();
+ wireDestroyFunctions = new HashMap<>();
+ wiresUnmodifiable = Collections.unmodifiableMap(wires);
+
+ componentAddedListeners = new ArrayList<>();
+ componentRemovedListeners = new ArrayList<>();
+ wireAddedListeners = new ArrayList<>();
+ wireRemovedListeners = new ArrayList<>();
+ redrawHandlerChangedListeners = new ArrayList<>();
+ }
+
+ /**
+ * Adds the given component to the list of components and calls all componentAddedListeners. Don't call this method from application
+ * code as it is automatically called in {@link ModelComponent}'s constructor.
+ *
+ * @author Daniel Kirschten
+ */
+ protected void componentCreated(ModelComponent component, Runnable destroyed)
+ {
+ if (components.containsKey(component.name))
+ throw new IllegalStateException("Don't add the same component twice!");
+ components.put(component.name, component);
+ componentDestroyFunctions.put(component.name, destroyed);
+ callComponentAddedListeners(component);
+ requestRedraw();
+ }
+
+ /**
+ * Destroyes the given component, removes it from the list of components and calls all componentRemovedListeners.
+ *
+ * @author Daniel Kirschten
+ */
+ protected void destroyComponent(ModelComponent component)
+ {
+ componentDestroyFunctions.get(component.name).run();
+ if (!components.containsKey(component.name))
+ throw new IllegalStateException("Don't remove the same component twice!");
+ components.remove(component.name);
+ callComponentRemovedListeners(component);
+ requestRedraw();
+ }
+
+ /**
+ * Adds the given wire to the list of wires and calls all wireAddedListeners. Don't call this method from application code as it is
+ * automatically called in {@link ModelWire}'s constructor.
+ *
+ * @author Daniel Kirschten
+ */
+ protected void wireCreated(ModelWire wire, Runnable destroyed)
+ {
+ if (wires.containsKey(wire.name))
+ throw new IllegalStateException("Don't add the same wire twice!");
+ wires.put(wire.name, wire);
+ wireDestroyFunctions.put(wire.name, destroyed);
+ callWireAddedListeners(wire);
+ requestRedraw();
+ }
+
+ /**
+ * Destroys the given wire, removes it from the list of wires and calls all wireRemovedListeners.
+ *
+ * @author Daniel Kirschten
+ */
+ protected void destroyWire(ModelWire wire)
+ {
+ wireDestroyFunctions.get(wire.name).run();
+ if (!wires.containsKey(wire.name))
+ throw new IllegalStateException("Don't remove the same wire twice!");
+ wires.remove(wire.name);
+ callWireRemovedListeners(wire);
+ requestRedraw();
+ }
+
+ public Map<String, ModelComponent> getComponentsByName()
+ {
+ return componentsUnmodifiable;
+ }
+
+ public Map<String, ModelWire> getWiresByName()
+ {
+ return wiresUnmodifiable;
+ }
+
+ // @formatter:off
+ public void addComponentAddedListener (Consumer<? super ModelComponent> listener) {componentAddedListeners .add (listener);}
+ public void addComponentRemovedListener (Consumer<? super ModelComponent> listener) {componentRemovedListeners .add (listener);}
+ public void addWireAddedListener (Consumer<? super ModelWire > listener) {wireAddedListeners .add (listener);}
+ public void addWireRemovedListener (Consumer<? super ModelWire > listener) {wireRemovedListeners .add (listener);}
+ public void addRedrawHandlerChangedListener (Consumer<? super Runnable > listener) {redrawHandlerChangedListeners.add (listener);}
+
+ public void removeComponentAddedListener (Consumer<? super ModelComponent> listener) {componentAddedListeners .remove(listener);}
+ public void removeComponentRemovedListener (Consumer<? super ModelComponent> listener) {componentRemovedListeners .remove(listener);}
+ public void removeWireAddedListener (Consumer<? super ModelWire > listener) {wireAddedListeners .remove(listener);}
+ public void removeWireRemovedListener (Consumer<? super ModelWire > listener) {wireRemovedListeners .remove(listener);}
+ public void removeRedrawHandlerChangedListener(Consumer<? super Runnable > listener) {redrawHandlerChangedListeners.remove(listener);}
+
+ private void callComponentAddedListeners (ModelComponent c) {componentAddedListeners .forEach(l -> l.accept(c));}
+ private void callComponentRemovedListeners (ModelComponent c) {componentRemovedListeners .forEach(l -> l.accept(c));}
+ private void callWireAddedListeners (ModelWire w) {wireAddedListeners .forEach(l -> l.accept(w));}
+ private void callWireRemovedListeners (ModelWire w) {wireRemovedListeners .forEach(l -> l.accept(w));}
+ private void callRedrawHandlerChangedListener(Runnable r) {redrawHandlerChangedListeners.forEach(l -> l.accept(r));}
+ // @formatter:on
+
+ public void setRedrawHandler(Runnable handler)
+ {
+ this.redrawHandler = handler;
+ callRedrawHandlerChangedListener(handler);
+ }
+
+ public Runnable getRedrawHandler()
+ {
+ return redrawHandler;
+ }
+
+ public void requestRedraw()
+ {
+ if (redrawHandler != null)
+ redrawHandler.run();
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model;
+
+import java.util.Set;
+
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+
+public class LogicModelModifiable extends LogicModel
+{
+ public String getDefaultComponentName(ModelComponent component)
+ {
+ Set<String> componentNames = getComponentsByName().keySet();
+ String componentID = component.getIDForSerializing(new IdentifyParams());
+ String nameBase = componentID + '#';
+ for (int i = 0;; i++)
+ {
+ String nameCandidate = nameBase + i;
+ if (!componentNames.contains(nameCandidate))
+ return nameCandidate;
+ }
+ }
+
+ public String getDefaultWireName()
+ {
+ Set<String> wireNames = getWiresByName().keySet();
+ for (int i = 0;; i++)
+ {
+ String nameCandidate = "unnamedWire#" + i;
+ if (!wireNames.contains(nameCandidate))
+ return nameCandidate;
+ }
+ }
+
+ @Override
+ public void componentCreated(ModelComponent component, Runnable destroyed)
+ {
+ super.componentCreated(component, destroyed);
+ }
+
+ @Override
+ public void destroyComponent(ModelComponent component)
+ {
+ super.destroyComponent(component);
+ }
+
+ @Override
+ public void wireCreated(ModelWire wire, Runnable destroyed)
+ {
+ super.wireCreated(wire, destroyed);
+ }
+
+ @Override
+ public void destroyWire(ModelWire wire)
+ {
+ super.destroyWire(wire);
+ }
+}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Consumer;
-
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
-
-public class ViewModel
-{
- private final Map<String, GUIComponent> components;
- private final Map<String, Runnable> componentDestroyFunctions;
- private final Map<String, GUIComponent> componentsUnmodifiable;
- private final Map<String, GUIWire> wires;
- private final Map<String, Runnable> wireDestroyFunctions;
- private final Map<String, GUIWire> wiresUnmodifiable;
-
- private final List<Consumer<? super GUIComponent>> componentAddedListeners;
- private final List<Consumer<? super GUIComponent>> componentRemovedListeners;
- private final List<Consumer<? super GUIWire>> wireAddedListeners;
- private final List<Consumer<? super GUIWire>> wireRemovedListeners;
- private final List<Consumer<? super Runnable>> redrawHandlerChangedListeners;
-
- private Runnable redrawHandler;
-
- protected ViewModel()
- {
- components = new HashMap<>();
- componentDestroyFunctions = new HashMap<>();
- componentsUnmodifiable = Collections.unmodifiableMap(components);
- wires = new HashMap<>();
- wireDestroyFunctions = new HashMap<>();
- wiresUnmodifiable = Collections.unmodifiableMap(wires);
-
- componentAddedListeners = new ArrayList<>();
- componentRemovedListeners = new ArrayList<>();
- wireAddedListeners = new ArrayList<>();
- wireRemovedListeners = new ArrayList<>();
- redrawHandlerChangedListeners = new ArrayList<>();
- }
-
- /**
- * Adds the given component to the list of components and calls all componentAddedListeners. Don't call this method from application
- * code as it is automatically called in {@link GUIComponent}'s constructor.
- *
- * @author Daniel Kirschten
- */
- protected void componentCreated(GUIComponent component, Runnable destroyed)
- {
- if (components.containsKey(component.name))
- throw new IllegalStateException("Don't add the same component twice!");
- components.put(component.name, component);
- componentDestroyFunctions.put(component.name, destroyed);
- callComponentAddedListeners(component);
- requestRedraw();
- }
-
- /**
- * Destroyes the given component, removes it from the list of components and calls all componentRemovedListeners.
- *
- * @author Daniel Kirschten
- */
- protected void destroyComponent(GUIComponent component)
- {
- componentDestroyFunctions.get(component.name).run();
- if (!components.containsKey(component.name))
- throw new IllegalStateException("Don't remove the same component twice!");
- components.remove(component.name);
- callComponentRemovedListeners(component);
- requestRedraw();
- }
-
- /**
- * Adds the given wire to the list of wires and calls all wireAddedListeners.
- *
- * @author Daniel Kirschten
- */
- protected void wireCreated(GUIWire wire, Runnable destroyed)
- {
- if (wires.containsKey(wire.name))
- throw new IllegalStateException("Don't add the same wire twice!");
- wires.put(wire.name, wire);
- wireDestroyFunctions.put(wire.name, destroyed);
- callWireAddedListeners(wire);
- requestRedraw();
- }
-
- /**
- * Destroys the given wire, removes it from the list of wires and calls all wireRemovedListeners.
- *
- * @author Daniel Kirschten
- */
- protected void destroyWire(GUIWire wire)
- {
- wireDestroyFunctions.get(wire.name).run();
- if (!wires.containsKey(wire.name))
- throw new IllegalStateException("Don't remove the same wire twice!");
- wires.remove(wire.name);
- callWireRemovedListeners(wire);
- requestRedraw();
- }
-
- public Map<String, GUIComponent> getComponentsByName()
- {
- return componentsUnmodifiable;
- }
-
- public Map<String, GUIWire> getWiresByName()
- {
- return wiresUnmodifiable;
- }
-
- // @formatter:off
- public void addComponentAddedListener (Consumer<? super GUIComponent> listener) {componentAddedListeners .add (listener);}
- public void addComponentRemovedListener (Consumer<? super GUIComponent> listener) {componentRemovedListeners .add (listener);}
- public void addWireAddedListener (Consumer<? super GUIWire > listener) {wireAddedListeners .add (listener);}
- public void addWireRemovedListener (Consumer<? super GUIWire > listener) {wireRemovedListeners .add (listener);}
- public void addRedrawHandlerChangedListener (Consumer<? super Runnable > listener) {redrawHandlerChangedListeners.add (listener);}
-
- public void removeComponentAddedListener (Consumer<? super GUIComponent> listener) {componentAddedListeners .remove(listener);}
- public void removeComponentRemovedListener (Consumer<? super GUIComponent> listener) {componentRemovedListeners .remove(listener);}
- public void removeWireAddedListener (Consumer<? super GUIWire > listener) {wireAddedListeners .remove(listener);}
- public void removeWireRemovedListener (Consumer<? super GUIWire > listener) {wireRemovedListeners .remove(listener);}
- public void removeRedrawHandlerChangedListener(Consumer<? super Runnable > listener) {redrawHandlerChangedListeners.remove(listener);}
-
- private void callComponentAddedListeners (GUIComponent c) {componentAddedListeners .forEach(l -> l.accept(c));}
- private void callComponentRemovedListeners (GUIComponent c) {componentRemovedListeners .forEach(l -> l.accept(c));}
- private void callWireAddedListeners (GUIWire w) {wireAddedListeners .forEach(l -> l.accept(w));}
- private void callWireRemovedListeners (GUIWire w) {wireRemovedListeners .forEach(l -> l.accept(w));}
- private void callRedrawHandlerChangedListener(Runnable r) {redrawHandlerChangedListeners.forEach(l -> l.accept(r));}
- // @formatter:on
-
- public void setRedrawHandler(Runnable handler)
- {
- this.redrawHandler = handler;
- callRedrawHandlerChangedListener(handler);
- }
-
- public Runnable getRedrawHandler()
- {
- return redrawHandler;
- }
-
- public void requestRedraw()
- {
- if (redrawHandler != null)
- redrawHandler.run();
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model;
-
-import java.util.Set;
-
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
-
-public class ViewModelModifiable extends ViewModel
-{
- public String getDefaultComponentName(GUIComponent component)
- {
- Set<String> componentNames = getComponentsByName().keySet();
- // TODO get the ID of component
- // The following does not work because this method is called in the constructor of DeserializedSubmodelComponent at a time where
- // idForSerializingOverride is not yet set
-// String componentID = null;
-// if (component instanceof DeserializedSubmodelComponent)
-// componentID = ((DeserializedSubmodelComponent) component).idForSerializingOverride;
-// if (componentID == null)
-// componentID = component.getClass().getSimpleName();
- String componentID = component.getClass().getSimpleName();
- String nameBase = componentID + '#';
- for (int i = 0;; i++)
- {
- String nameCandidate = nameBase + i;
- if (!componentNames.contains(nameCandidate))
- return nameCandidate;
- }
- }
-
- public String getDefaultWireName()
- {
- Set<String> wireNames = getWiresByName().keySet();
- for (int i = 0;; i++)
- {
- String nameCandidate = "unnamedWire#" + i;
- if (!wireNames.contains(nameCandidate))
- return nameCandidate;
- }
- }
-
- @Override
- public void componentCreated(GUIComponent component, Runnable destroyed)
- {
- super.componentCreated(component, destroyed);
- }
-
- @Override
- public void destroyComponent(GUIComponent component)
- {
- super.destroyComponent(component);
- }
-
- @Override
- public void wireCreated(GUIWire wire, Runnable destroyed)
- {
- super.wireCreated(wire, destroyed);
- }
-
- @Override
- public void destroyWire(GUIWire wire)
- {
- super.destroyWire(wire);
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Consumer;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.JSONSerializable;
-import net.mograsim.logic.model.snippets.HighLevelStateHandler;
-
-/**
- * The base class for all GUI components.<br>
- * A <code>GUIComponent</code> has a reference to the ViewModel it belongs to.<br>
- * A <code>GUIComponent</code> has a name. This name is unique in the model the <code>GUIComponent</code> belongs to.<br>
- * A <code>GUIComponent</code> has a position and size. The size can only be modified by subclasses.
- *
- * @author Daniel Kirschten
- */
-public abstract class GUIComponent implements JSONSerializable
-{
- /**
- * The model this component is a part of.
- */
- protected final ViewModelModifiable model;
- /**
- * The name of this component. Is unique for all components in its model.
- */
- public final String name;
- private final Rectangle bounds;
- /**
- * The list of all pins of this component by name.
- */
- private final Map<String, Pin> pinsByName;
- /**
- * An unmodifiable view of {@link #pinsByName}.
- */
- protected final Map<String, Pin> pinsUnmodifiable;
-
- private final List<Consumer<? super GUIComponent>> componentMovedListeners;
- private final List<Consumer<? super GUIComponent>> componentResizedListeners;
- private final List<Consumer<? super Pin>> pinAddedListeners;
- private final List<Consumer<? super Pin>> pinRemovedListeners;
-
- private HighLevelStateHandler highLevelStateHandler;
-
- // creation and destruction
-
- public GUIComponent(ViewModelModifiable model, String name)
- {
- this.model = model;
- this.name = name == null ? model.getDefaultComponentName(this) : name;
- this.bounds = new Rectangle(0, 0, 0, 0);
- this.pinsByName = new HashMap<>();
- this.pinsUnmodifiable = Collections.unmodifiableMap(pinsByName);
-
- this.componentMovedListeners = new ArrayList<>();
- this.componentResizedListeners = new ArrayList<>();
- this.pinAddedListeners = new ArrayList<>();
- this.pinRemovedListeners = new ArrayList<>();
-
- // TODO this will crash the high level state debug shell because submodel is not yet set.
- // The same problem exists in ViewModelModifiable.getDefaultComponentName; see there
- model.componentCreated(this, this::destroyed);
- }
-
- /**
- * Destroys this component. This method is called from {@link ViewModelModifiable#componentDestroyed(GUIComponent) destroyComponent()}
- * of the model this component is a part of.<br>
- * When overriding, make sure to also call the original implementation.
- *
- * @author Daniel Kirschten
- */
- protected void destroyed()
- {
- pinsByName.values().forEach(p -> pinRemovedListeners.forEach(l -> l.accept(p)));
- }
-
- // pins
-
- /**
- * Adds the given pin to this component and calls pinAddedListeners and redrawListeners.
- *
- * @throws IllegalArgumentException if the pin doesn't belong to this component
- * @throws IllegalArgumentException if there already is a pin with the given name
- *
- * @author Daniel Kirschten
- */
- protected void addPin(Pin pin)
- {
- if (pin.component != this)
- throw new IllegalArgumentException("Can't add a pin not belonging to this component!");
- if (pinsByName.containsKey(pin.name))
- throw new IllegalArgumentException("Duplicate pin name: " + pin.name);
- pinsByName.put(pin.name, pin);
- callPinAddedListeners(pin);
- model.requestRedraw();
- }
-
- /**
- * Removes the given pin from this component and calls pinAddedListeners and redrawListeners.
- *
- * @throws NullPointerException if there was no pin with this name
- *
- * @author Daniel Kirschten
- */
- protected void removePin(String name)
- {
- Pin pin = pinsByName.remove(name);
- callPinRemovedListeners(pin);
- model.requestRedraw();
- }
-
- /**
- * Returns a collection of pins of this component.
- *
- * @author Daniel Kirschten
- */
- public Map<String, Pin> getPins()
- {
- return pinsUnmodifiable;
- }
-
- /**
- * Returns the pin with the given name of this component.
- *
- * @throws IllegalArgumentException if there is no pin with the given name
- *
- * @author Daniel Kirschten
- */
- public Pin getPin(String name)
- {
- Pin pin = pinsByName.get(name);
- if (pin == null)
- throw new IllegalArgumentException("No pin with the name " + name);
- return pin;
- }
-
- // high-level access
-
- /**
- * @author Daniel Kirschten
- */
- protected void setHighLevelStateHandler(HighLevelStateHandler highLevelStateHandler)
- {
- this.highLevelStateHandler = highLevelStateHandler;
- }
-
- public HighLevelStateHandler getHighLevelStateHandler()
- {
- return highLevelStateHandler;
- }
-
- /**
- * Gets the current value of the given high-level state. <br>
- * See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
- *
- * @see #setHighLevelState(String, Object)
- * @see HighLevelStateHandler#getHighLevelState(String)
- *
- * @author Daniel Kirschten
- */
- public Object getHighLevelState(String stateID)
- {
- return highLevelStateHandler.getHighLevelState(stateID);
- }
-
- /**
- * Sets the given high-level state to the given value. <br>
- * See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
- *
- * @see #getHighLevelState(String)
- * @see HighLevelStateHandler#setHighLevelState(String, Object)
- *
- * @author Daniel Kirschten
- */
- public void setHighLevelState(String stateID, Object newState)
- {
- highLevelStateHandler.setHighLevelState(stateID, newState);
- }
-
- // "graphical" operations
-
- /**
- * Sets the position of this component and calls componentMovedListeners and redrawListeners.
- *
- * @author Daniel Kirschten
- */
- public void moveTo(double x, double y)
- {
- bounds.x = x;
- bounds.y = y;
- callComponentMovedListeners();
- model.requestRedraw();
- }
-
- /**
- * Sets the size of this component and calls redrawListeners.
- *
- * @author Daniel Kirschten
- */
- protected void setSize(double width, double height)
- {
- bounds.width = width;
- bounds.height = height;
- callComponentResizedListener();
- model.requestRedraw();
- }
-
- /**
- * Returns the bounds of this component. Is a bit slower than {@link #getPosX()}, {@link #getPosY()}, {@link #getWidth},
- * {@link #getHeight}, because new objects are created.
- *
- * @author Daniel Kirschten
- */
- public final Rectangle getBounds()
- {
- return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height);
- }
-
- /**
- * Returns the x coordinate of the position of this component. Is a bit faster than {@link #getBounds()} because no objects are created.
- *
- * @author Daniel Kirschten
- */
- public double getPosX()
- {
- return bounds.x;
- }
-
- /**
- * Returns the y coordinate of the position of this component. Is a bit faster than {@link #getBounds()} because no objects are created.
- *
- * @author Daniel Kirschten
- */
- public double getPosY()
- {
- return bounds.y;
- }
-
- /**
- * Returns the (graphical) width of this component. Is a bit faster than {@link #getBounds()} because no objects are created.
- *
- * @author Daniel Kirschten
- */
- public double getWidth()
- {
- return bounds.width;
- }
-
- /**
- * Returns the height of this component. Is a bit faster than {@link #getBounds()} because no objects are created.
- *
- * @author Daniel Kirschten
- */
- public double getHeight()
- {
- return bounds.height;
- }
-
- /**
- * Called when this component is clicked. Absolute coordinates of the click are given. Returns true if this component consumed this
- * click.
- *
- * @author Daniel Kirschten
- */
- @SuppressWarnings({ "static-method", "unused" }) // this method is inteded to be overridden
- public boolean clicked(double x, double y)
- {
- return false;
- }
-
- /**
- * Render this component to the given gc, in absoulute coordinates.
- *
- * @author Daniel Kirschten
- */
- public abstract void render(GeneralGC gc, Rectangle visibleRegion);
-
- // serializing
-
- @Override
- public Object getParamsForSerializing(IdentifierGetter idGetter)
- {
- return null;
- }
-
- // listeners
-
- // @formatter:off
- public void addComponentMovedListener (Consumer<? super GUIComponent> listener) {componentMovedListeners .add (listener);}
- public void addComponentResizedListener (Consumer<? super GUIComponent> listener) {componentResizedListeners.add (listener);}
- public void addPinAddedListener (Consumer<? super Pin > listener) {pinAddedListeners .add (listener);}
- public void addPinRemovedListener (Consumer<? super Pin > listener) {pinRemovedListeners .add (listener);}
-
- public void removeComponentMovedListener (Consumer<? super GUIComponent> listener) {componentMovedListeners .remove(listener);}
- public void removeComponentResizedListener (Consumer<? super GUIComponent> listener) {componentResizedListeners.remove(listener);}
- public void removePinAddedListener (Consumer<? super Pin > listener) {pinAddedListeners .remove(listener);}
- public void removePinRemovedListener (Consumer<? super Pin > listener) {pinRemovedListeners .remove(listener);}
-
- private void callComponentMovedListeners ( ) {componentMovedListeners .forEach(l -> l.accept(this));}
- private void callComponentResizedListener( ) {componentResizedListeners.forEach(l -> l.accept(this));}
- private void callPinAddedListeners (Pin p) {pinAddedListeners .forEach(l -> l.accept(p ));}
- private void callPinRemovedListeners (Pin p) {pinRemovedListeners .forEach(l -> l.accept(p ));}
- // @formatter:on
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Consumer;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.JSONSerializable;
+import net.mograsim.logic.model.snippets.HighLevelStateHandler;
+
+/**
+ * The base class for all model components.<br>
+ * A <code>ModelComponent</code> has a reference to the LogicModel it belongs to.<br>
+ * A <code>ModelComponent</code> has a name. This name is unique in the model the <code>ModelComponent</code> belongs to.<br>
+ * A <code>ModelComponent</code> has a position and size. The size can only be modified by subclasses.
+ *
+ * @author Daniel Kirschten
+ */
+public abstract class ModelComponent implements JSONSerializable
+{
+ /**
+ * The model this component is a part of.
+ */
+ protected final LogicModelModifiable model;
+ /**
+ * The name of this component. Is unique for all components in its model.
+ */
+ public final String name;
+ private final Rectangle bounds;
+ /**
+ * The list of all pins of this component by name.
+ */
+ private final Map<String, Pin> pinsByName;
+ /**
+ * An unmodifiable view of {@link #pinsByName}.
+ */
+ protected final Map<String, Pin> pinsUnmodifiable;
+
+ private final List<Consumer<? super ModelComponent>> componentMovedListeners;
+ private final List<Consumer<? super ModelComponent>> componentResizedListeners;
+ private final List<Consumer<? super Pin>> pinAddedListeners;
+ private final List<Consumer<? super Pin>> pinRemovedListeners;
+
+ private HighLevelStateHandler highLevelStateHandler;
+
+ // creation and destruction
+
+ public ModelComponent(LogicModelModifiable model, String name)
+ {
+ this(model, name, true);
+ }
+
+ /**
+ * Creates a new {@link ModelComponent} and, if <code>callInit</code>, initializes the component (See {@link #init()}).<br>
+ * If <code>callInit==false</code>, make sure to call {@link #init()}!
+ *
+ * @author Daniel Kirschten
+ */
+ protected ModelComponent(LogicModelModifiable model, String name, boolean callInit)
+ {
+ this.model = model;
+ this.name = name == null ? model.getDefaultComponentName(this) : name;
+ this.bounds = new Rectangle(0, 0, 0, 0);
+ this.pinsByName = new HashMap<>();
+ this.pinsUnmodifiable = Collections.unmodifiableMap(pinsByName);
+
+ this.componentMovedListeners = new ArrayList<>();
+ this.componentResizedListeners = new ArrayList<>();
+ this.pinAddedListeners = new ArrayList<>();
+ this.pinRemovedListeners = new ArrayList<>();
+
+ if (callInit)
+ init();
+ }
+
+ /**
+ * Initializes this component. This method should be called exactly once in this component's constructor.<br>
+ * Currently, this method only registers this component in the model.
+ */
+ protected void init()
+ {
+ model.componentCreated(this, this::destroyed);
+ }
+
+ /**
+ * Destroys this component. This method is called from {@link LogicModelModifiable#componentDestroyed(ModelComponent)
+ * destroyComponent()} of the model this component is a part of.<br>
+ * When overriding, make sure to also call the original implementation.
+ *
+ * @author Daniel Kirschten
+ */
+ protected void destroyed()
+ {
+ pinsByName.values().forEach(this::removePinWithoutRedraw);
+ }
+
+ // pins
+
+ /**
+ * Adds the given pin to this component and calls pinAddedListeners and redrawListeners.
+ *
+ * @throws IllegalArgumentException if the pin doesn't belong to this component
+ * @throws IllegalArgumentException if there already is a pin with the given name
+ *
+ * @author Daniel Kirschten
+ */
+ protected void addPin(Pin pin)
+ {
+ if (pin.component != this)
+ throw new IllegalArgumentException("Can't add a pin not belonging to this component!");
+ if (pinsByName.containsKey(pin.name))
+ throw new IllegalArgumentException("Duplicate pin name: " + pin.name);
+ pinsByName.put(pin.name, pin);
+ callPinAddedListeners(pin);
+ model.requestRedraw();
+ }
+
+ /**
+ * Removes the given pin from this component and calls pinAddedListeners and redrawListeners.
+ *
+ * @throws NullPointerException if there was no pin with this name
+ *
+ * @author Daniel Kirschten
+ */
+ protected void removePin(String name)
+ {
+ removePinWithoutRedraw(pinsByName.remove(name));
+ model.requestRedraw();
+ }
+
+ private void removePinWithoutRedraw(Pin pin)
+ {
+ pin.destroyed();
+ callPinRemovedListeners(pin);
+ }
+
+ /**
+ * Returns a collection of pins of this component.
+ *
+ * @author Daniel Kirschten
+ */
+ public Map<String, Pin> getPins()
+ {
+ return pinsUnmodifiable;
+ }
+
+ /**
+ * Returns the pin with the given name of this component.
+ *
+ * @throws IllegalArgumentException if there is no pin with the given name
+ *
+ * @author Daniel Kirschten
+ */
+ public Pin getPin(String name)
+ {
+ Pin pin = pinsByName.get(name);
+ if (pin == null)
+ throw new IllegalArgumentException("No pin with the name " + name);
+ return pin;
+ }
+
+ // high-level access
+
+ /**
+ * @author Daniel Kirschten
+ */
+ protected void setHighLevelStateHandler(HighLevelStateHandler highLevelStateHandler)
+ {
+ this.highLevelStateHandler = highLevelStateHandler;
+ }
+
+ public HighLevelStateHandler getHighLevelStateHandler()
+ {
+ return highLevelStateHandler;
+ }
+
+ /**
+ * Gets the current value of the given high-level state. <br>
+ * See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
+ *
+ * @see #setHighLevelState(String, Object)
+ * @see HighLevelStateHandler#getHighLevelState(String)
+ *
+ * @author Daniel Kirschten
+ */
+ public Object getHighLevelState(String stateID)
+ {
+ return highLevelStateHandler.getHighLevelState(stateID);
+ }
+
+ /**
+ * Sets the given high-level state to the given value. <br>
+ * See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
+ *
+ * @see #getHighLevelState(String)
+ * @see HighLevelStateHandler#setHighLevelState(String, Object)
+ *
+ * @author Daniel Kirschten
+ */
+ public void setHighLevelState(String stateID, Object newState)
+ {
+ highLevelStateHandler.setHighLevelState(stateID, newState);
+ }
+
+ // "graphical" operations
+
+ /**
+ * Sets the position of this component and calls componentMovedListeners and redrawListeners.
+ *
+ * @author Daniel Kirschten
+ */
+ public void moveTo(double x, double y)
+ {
+ bounds.x = x;
+ bounds.y = y;
+ callComponentMovedListeners();
+ model.requestRedraw();
+ }
+
+ /**
+ * Sets the size of this component and calls redrawListeners.
+ *
+ * @author Daniel Kirschten
+ */
+ protected void setSize(double width, double height)
+ {
+ bounds.width = width;
+ bounds.height = height;
+ callComponentResizedListener();
+ model.requestRedraw();
+ }
+
+ /**
+ * Returns the bounds of this component. Is a bit slower than {@link #getPosX()}, {@link #getPosY()}, {@link #getWidth},
+ * {@link #getHeight}, because new objects are created.
+ *
+ * @author Daniel Kirschten
+ */
+ public final Rectangle getBounds()
+ {
+ return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height);
+ }
+
+ /**
+ * Returns the x coordinate of the position of this component. Is a bit faster than {@link #getBounds()} because no objects are created.
+ *
+ * @author Daniel Kirschten
+ */
+ public double getPosX()
+ {
+ return bounds.x;
+ }
+
+ /**
+ * Returns the y coordinate of the position of this component. Is a bit faster than {@link #getBounds()} because no objects are created.
+ *
+ * @author Daniel Kirschten
+ */
+ public double getPosY()
+ {
+ return bounds.y;
+ }
+
+ /**
+ * Returns the (graphical) width of this component. Is a bit faster than {@link #getBounds()} because no objects are created.
+ *
+ * @author Daniel Kirschten
+ */
+ public double getWidth()
+ {
+ return bounds.width;
+ }
+
+ /**
+ * Returns the height of this component. Is a bit faster than {@link #getBounds()} because no objects are created.
+ *
+ * @author Daniel Kirschten
+ */
+ public double getHeight()
+ {
+ return bounds.height;
+ }
+
+ /**
+ * Called when this component is clicked. Absolute coordinates of the click are given. Returns true if this component consumed this
+ * click.
+ *
+ * @author Daniel Kirschten
+ */
+ @SuppressWarnings({ "static-method", "unused" }) // this method is inteded to be overridden
+ public boolean clicked(double x, double y)
+ {
+ return false;
+ }
+
+ /**
+ * Render this component to the given gc, in absoulute coordinates.
+ *
+ * @author Daniel Kirschten
+ */
+ public abstract void render(GeneralGC gc, Rectangle visibleRegion);
+
+ // serializing
+
+ @Override
+ public Object getParamsForSerializing(IdentifyParams idParams)
+ {
+ return null;
+ }
+
+ // listeners
+
+ // @formatter:off
+ public void addComponentMovedListener (Consumer<? super ModelComponent> listener) {componentMovedListeners .add (listener);}
+ public void addComponentResizedListener (Consumer<? super ModelComponent> listener) {componentResizedListeners.add (listener);}
+ public void addPinAddedListener (Consumer<? super Pin > listener) {pinAddedListeners .add (listener);}
+ public void addPinRemovedListener (Consumer<? super Pin > listener) {pinRemovedListeners .add (listener);}
+
+ public void removeComponentMovedListener (Consumer<? super ModelComponent> listener) {componentMovedListeners .remove(listener);}
+ public void removeComponentResizedListener (Consumer<? super ModelComponent> listener) {componentResizedListeners.remove(listener);}
+ public void removePinAddedListener (Consumer<? super Pin > listener) {pinAddedListeners .remove(listener);}
+ public void removePinRemovedListener (Consumer<? super Pin > listener) {pinRemovedListeners .remove(listener);}
+
+ private void callComponentMovedListeners ( ) {componentMovedListeners .forEach(l -> l.accept(this));}
+ private void callComponentResizedListener( ) {componentResizedListeners.forEach(l -> l.accept(this));}
+ private void callPinAddedListeners (Pin p) {pinAddedListeners .forEach(l -> l.accept(p ));}
+ private void callPinRemovedListeners (Pin p) {pinRemovedListeners .forEach(l -> l.accept(p ));}
+ // @formatter:on
+}
\ No newline at end of file
package net.mograsim.logic.model.model.components;
/**
- * This class simplifies the calculation of coordinates, especially for GUI components.
+ * This class simplifies the calculation of coordinates, especially for model components.
* <p>
* Supply it with the original width and height and an orientation, and use the methods {@link #newX(double, double)} and
* {@link #newY(double, double)} to retrieve the new coordinates, relative to the upper left corner of {@link Orientation#RIGHT}. The
* {@link #height()} and {@link #width()} methods return the width and height in the new orientation.
* <p>
- * This is meant to be used in the context of a a classic display coordinate system, as done in the {@link GUIComponent}s.
+ * This is meant to be used in the context of a a classic display coordinate system, as done in the {@link ModelComponent}s.
*
* @see Orientation
* @author Christian Femers
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import net.mograsim.logic.core.components.gates.AndGate;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-
-public class GUIAndGate extends SimpleRectangularGUIGate
-{
- public GUIAndGate(ViewModelModifiable model, int logicWidth)
- {
- this(model, logicWidth, null);
- }
-
- public GUIAndGate(ViewModelModifiable model, int logicWidth, String name)
- {
- super(model, "&", false, logicWidth, name);
- setInputCount(2);// TODO make variable
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUIAndGate.class, AndGate::new));
- IndirectGUIComponentCreator.setComponentSupplier(GUIAndGate.class.getCanonicalName(),
- (m, p, n) -> new GUIAndGate(m, p.getAsInt(), n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import org.eclipse.swt.graphics.Color;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.components.BitDisplay;
-import net.mograsim.logic.core.types.BitVectorFormatter;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.BitDisplayAdapter;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.preferences.Preferences;
-
-public class GUIBitDisplay extends GUIComponent
-{
- private static final double width = 20;
- private static final double height = 15;
- private static final double fontHeight = 5;
-
- public final int logicWidth;
- private final Pin inputPin;
-
- private final LogicObserver logicObs;
- private BitDisplay bitDisplay;
-
- public GUIBitDisplay(ViewModelModifiable model, int logicWidth)
- {
- this(model, logicWidth, null);
- }
-
- public GUIBitDisplay(ViewModelModifiable model, int logicWidth, String name)
- {
- super(model, name);
- this.logicWidth = logicWidth;
- logicObs = (i) -> model.requestRedraw();
-
- setSize(width, height);
- addPin(this.inputPin = new Pin(this, "", logicWidth, PinUsage.INPUT, 0, height / 2));
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
- if (foreground != null)
- gc.setForeground(foreground);
- gc.drawRectangle(getBounds());
- String label = bitDisplay == null ? BitVectorFormatter.formatAsString(null)
- : BitVectorFormatter.formatAsString(bitDisplay.getDisplayedValue());
- Font oldFont = gc.getFont();
- Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
- gc.setFont(labelFont);
- Point textExtent = gc.textExtent(label);
- Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
- if (textColor != null)
- gc.setForeground(textColor);
- gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true);
- gc.setFont(oldFont);
- }
-
- public void setLogicModelBinding(BitDisplay bitDisplay)
- {
- if (this.bitDisplay != null)
- this.bitDisplay.deregisterObserver(logicObs);
- this.bitDisplay = bitDisplay;
- if (bitDisplay != null)
- bitDisplay.registerObserver(logicObs);
- }
-
- public boolean hasLogicModelBinding()
- {
- return bitDisplay != null;
- }
-
- public BitDisplay getBitDisplay()
- {
- return bitDisplay;
- }
-
- public Pin getInputPin()
- {
- return inputPin;
- }
-
- @Override
- public Integer getParamsForSerializing(IdentifierGetter idGetter)
- {
- return logicWidth;
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new BitDisplayAdapter());
- IndirectGUIComponentCreator.setComponentSupplier(GUIBitDisplay.class.getCanonicalName(),
- (m, p, n) -> new GUIBitDisplay(m, p.getAsInt(), n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import org.eclipse.swt.graphics.Color;
-
-import com.google.gson.JsonSyntaxException;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.components.Clock;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.Orientation;
-import net.mograsim.logic.model.model.components.OrientationCalculator;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.ClockAdapter;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.util.JsonHandler;
-import net.mograsim.preferences.Preferences;
-
-public class GUIClock extends GUIComponent
-{
- private static final double width = 20;
- private static final double height = 20;
- private static final double fontHeight = 5;
-
- private final Pin outputPin;
-
- private final LogicObserver logicObs;
- private GUIClockParams params;
- private OrientationCalculator oc;
- private Clock clock;
-
- public GUIClock(ViewModelModifiable model, GUIClockParams params)
- {
- this(model, params, null);
- }
-
- public GUIClock(ViewModelModifiable model, GUIClockParams params, String name)
- {
- super(model, name);
- this.params = params;
- logicObs = (i) -> model.requestRedraw();
-
- oc = new OrientationCalculator(params.orientation, width, height);
- setSize(oc.width(), oc.height());
-
- this.outputPin = new Pin(this, "", 1, PinUsage.OUTPUT, oc.newX(width, height / 2), oc.newY(width, height / 2));
- addPin(outputPin);
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
- if (foreground != null)
- gc.setForeground(foreground);
- gc.drawRectangle(getBounds());
- String label = clock == null ? "null" : (clock.isOn() ? "|" : "\u2015");
- Font oldFont = gc.getFont();
- Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
- gc.setFont(labelFont);
- Point textExtent = gc.textExtent(label);
- Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
- if (textColor != null)
- gc.setForeground(textColor);
- gc.drawText(label, getPosX() + (oc.width() - textExtent.x) / 2, getPosY() + (oc.height() - textExtent.y) / 2, true);
- gc.setFont(oldFont);
- }
-
- public void setLogicModelBinding(Clock clock)
- {
- if (this.clock != null)
- this.clock.deregisterObserver(logicObs);
- this.clock = clock;
- if (clock != null)
- clock.registerObserver(logicObs);
- }
-
- public boolean hasLogicModelBinding()
- {
- return clock != null;
- }
-
- @Override
- public Object getHighLevelState(String stateID)
- {
- switch (stateID)
- {
- case "out":
- if (clock != null)
- return clock.getOut().getInputValues();
- return null;
- default:
- return super.getHighLevelState(stateID);
- }
- }
-
- @Override
- public void setHighLevelState(String stateID, Object newState)
- {
- switch (stateID)
- {
- case "out":
- throw new UnsupportedOperationException("cannot set state of clock");
- default:
- super.setHighLevelState(stateID, newState);
- }
- }
-
- public Clock getClock()
- {
- return clock;
- }
-
- public Pin getOutputPin()
- {
- return outputPin;
- }
-
- public int getDelta()
- {
- return params.delta;
- }
-
- @Override
- public GUIClockParams getParamsForSerializing(IdentifierGetter idGetter)
- {
- return params;
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new ClockAdapter());
- IndirectGUIComponentCreator.setComponentSupplier(GUIClock.class.getName(), (m, p, n) ->
- {
- GUIClockParams params = JsonHandler.fromJsonTree(p, GUIClockParams.class);
- if (params == null)
- throw new JsonSyntaxException("Invalid!!!");
- return new GUIClock(m, params, n);
- });
- }
-
- public static class GUIClockParams
- {
- int delta;
- Orientation orientation;
-
- public GUIClockParams(int delta, Orientation orientation)
- {
- this.delta = delta;
- this.orientation = orientation;
- }
- }
-}
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import org.eclipse.swt.graphics.Color;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.components.ManualSwitch;
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.types.BitVectorFormatter;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.ManualSwitchAdapter;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.preferences.Preferences;
-
-public class GUIManualSwitch extends GUIComponent
-{
- private static final double width = 20;
- private static final double height = 15;
- private static final double fontHeight = 5;
- private static final double heightMiniButtons = 4; // 0 is disabled
-
- public final int logicWidth;
- private final Pin outputPin;
-
- private final LogicObserver logicObs;
- private ManualSwitch logicSwitch;
-
- public GUIManualSwitch(ViewModelModifiable model, int logicWidth)
- {
- this(model, logicWidth, null);
- }
-
- public GUIManualSwitch(ViewModelModifiable model, int logicWidth, String name)
- {
- super(model, name);
- this.logicWidth = logicWidth;
- logicObs = (i) -> model.requestRedraw();
-
- setSize(width, height);
- addPin(this.outputPin = new Pin(this, "", logicWidth, PinUsage.OUTPUT, width, height / 2));
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
- if (foreground != null)
- gc.setForeground(foreground);
- gc.drawRectangle(getBounds());
- String label = BitVectorFormatter.formatAsString(logicSwitch == null ? null : logicSwitch.getValues());
- Font oldFont = gc.getFont();
- Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
- gc.setFont(labelFont);
- Point textExtent = gc.textExtent(label);
- Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
- if (textColor != null)
- gc.setForeground(textColor);
- gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true);
- gc.setFont(oldFont);
-
- if (logicSwitch != null && logicWidth > 1 && heightMiniButtons > 0 && visibleRegion.y < getPosY() + heightMiniButtons)
- {
- double x = getPosX();
- double y = getPosY();
- gc.drawLine(x, y + heightMiniButtons, x + width, y + heightMiniButtons);
- Color c = gc.getBackground();
- gc.setBackground(gc.getForeground());
- BitVector bv = logicSwitch.getValues();
- double part = width / bv.length();
- for (int i = 0; i < bv.length(); i++)
- {
- double start = x + part * i;
- if (i != 0)
- gc.drawLine(start, y, start, y + heightMiniButtons);
- if (bv.getMSBit(i) == Bit.ONE)
- {
-// gc.fillRectangle(start, y, part, heightMiniButtons); // alternative, but not always visible what Bit is where
- gc.drawLine(start, y, start + part, y + heightMiniButtons);
- gc.drawLine(start + part, y, start, y + heightMiniButtons);
- }
- }
- gc.setBackground(c);
- }
- }
-
- public void setLogicModelBinding(ManualSwitch logicSwitch)
- {
- if (this.logicSwitch != null)
- this.logicSwitch.deregisterObserver(logicObs);
- this.logicSwitch = logicSwitch;
- if (logicSwitch != null)
- logicSwitch.registerObserver(logicObs);
- }
-
- public boolean hasLogicModelBinding()
- {
- return logicSwitch != null;
- }
-
- @Override
- public Object getHighLevelState(String stateID)
- {
- switch (stateID)
- {
- case "out":
- if (logicSwitch != null)
- return logicSwitch.getValues();
- return null;
- default:
- return super.getHighLevelState(stateID);
- }
- }
-
- @Override
- public void setHighLevelState(String stateID, Object newState)
- {
- switch (stateID)
- {
- case "out":
- if (logicSwitch != null)
- logicSwitch.setState((BitVector) newState);
- break;
- default:
- super.setHighLevelState(stateID, newState);
- break;
- }
- }
-
- @Override
- public boolean clicked(double x, double y)
- {
- if (logicSwitch != null)
- {
- if (heightMiniButtons > 0 && y - getPosY() < heightMiniButtons)
- {
- int part = (int) ((x - getPosX()) * logicWidth / width);
- logicSwitch.setState(logicSwitch.getValues().withBitChanged(part, Bit::not));
- } else
- {
- logicSwitch.toggle();
- }
- }
- return true;
- }
-
- public ManualSwitch getManualSwitch()
- {
- return logicSwitch;
- }
-
- public Pin getOutputPin()
- {
- return outputPin;
- }
-
- @Override
- public Integer getParamsForSerializing(IdentifierGetter idGetter)
- {
- return logicWidth;
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new ManualSwitchAdapter());
- IndirectGUIComponentCreator.setComponentSupplier(GUIManualSwitch.class.getName(),
- (m, p, n) -> new GUIManualSwitch(m, p.getAsInt(), n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import org.eclipse.swt.SWT;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.core.types.BitVectorFormatter;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.MergerAdapter;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.preferences.ColorDefinition;
-import net.mograsim.preferences.ColorManager;
-import net.mograsim.preferences.Preferences;
-
-public class GUIMerger extends GUIComponent
-{
- private static final double width = 10;
- private static final double heightPerPin = 10;
-
- public final int logicWidth;
- private final Pin outputPin;
-
- private final ReadEnd[] inputEnds;
- private ReadEnd outputEnd;
-
- public GUIMerger(ViewModelModifiable model, int logicWidth)
- {
- this(model, logicWidth, null);
- }
-
- public GUIMerger(ViewModelModifiable model, int logicWidth, String name)
- {
- super(model, name);
- this.logicWidth = logicWidth;
- setSize(width, (logicWidth - 1) * heightPerPin);
- double inputHeight = (logicWidth - 1) * heightPerPin;
- for (int i = 0; i < logicWidth; i++, inputHeight -= 10)
- addPin(new Pin(this, "I" + i, 1, PinUsage.TRISTATE, 0, inputHeight));
- addPin(this.outputPin = new Pin(this, "O", logicWidth, PinUsage.TRISTATE, width, (logicWidth - 1) * heightPerPin / 2));
- inputEnds = new ReadEnd[logicWidth];
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- double posX = getPosX();
- double posY = getPosY();
-
- ColorDefinition c = BitVectorFormatter.formatAsColor(outputEnd);
- if (c != null)
- gc.setForeground(ColorManager.current().toColor(c));
- gc.setLineWidth(
- Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire." + (logicWidth == 1 ? "singlebit" : "multibit")));
- double outLineY = posY + (logicWidth - 1) * heightPerPin / 2;
- gc.drawLine(posX + width / 2, outLineY, posX + width, outLineY);
- gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire.singlebit"));
- double inputHeight = posY;
- for (int i = 0; i < logicWidth; i++, inputHeight += 10)
- {
- c = BitVectorFormatter.formatAsColor(inputEnds[i]);
- if (c != null)
- gc.setForeground(ColorManager.current().toColor(c));
- gc.drawLine(posX, inputHeight, posX + width / 2, inputHeight);
- }
- gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground"));
- int oldLineCap = gc.getLineCap();
- int lineJoin = gc.getLineJoin();
- // TODO find better "replacement" for JOIN_BEVEL
- // TODO it looks weird that the vertical line is thinner than the single multibit wire.
- gc.setLineCap(lineJoin == SWT.JOIN_MITER ? SWT.CAP_SQUARE : lineJoin == SWT.JOIN_ROUND ? SWT.CAP_ROUND : SWT.CAP_SQUARE);
- gc.drawLine(posX + width / 2, posY, posX + width / 2, posY + heightPerPin * (logicWidth - 1));
- gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.default"));
- gc.setLineCap(oldLineCap);
- }
-
- @Override
- public Integer getParamsForSerializing(IdentifierGetter idGetter)
- {
- return logicWidth;
- }
-
- public void setLogicModelBinding(ReadEnd[] inputEnds, ReadEnd outputEnd)
- {
- System.arraycopy(inputEnds, 0, this.inputEnds, 0, logicWidth);
- this.outputEnd = outputEnd;
- }
-
- public Pin getOutputPin()
- {
- return outputPin;
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new MergerAdapter());
- IndirectGUIComponentCreator.setComponentSupplier(GUIMerger.class.getCanonicalName(),
- (m, p, n) -> new GUIMerger(m, p.getAsInt(), n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import net.mograsim.logic.core.components.gates.NandGate;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-
-public class GUINandGate extends SimpleRectangularGUIGate
-{
- public GUINandGate(ViewModelModifiable model, int logicWidth)
- {
- this(model, logicWidth, null);
- }
-
- public GUINandGate(ViewModelModifiable model, int logicWidth, String name)
- {
- super(model, "&", true, logicWidth, name);
- setInputCount(2);// TODO make variable
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUINandGate.class, NandGate::new));
- IndirectGUIComponentCreator.setComponentSupplier(GUINandGate.class.getCanonicalName(),
- (m, p, n) -> new GUINandGate(m, p.getAsInt(), n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import net.mograsim.logic.core.components.gates.NotGate;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-
-public class GUINotGate extends SimpleRectangularGUIGate
-{
- public GUINotGate(ViewModelModifiable model, int logicWidth)
- {
- this(model, logicWidth, null);
- }
-
- public GUINotGate(ViewModelModifiable model, int logicWidth, String name)
- {
- super(model, "1", true, logicWidth, name);
- setInputCount(1);
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUINotGate.class, (t, p, o, i) -> new NotGate(t, p, i[0], o)));
- IndirectGUIComponentCreator.setComponentSupplier(GUINotGate.class.getCanonicalName(),
- (m, p, n) -> new GUINotGate(m, p.getAsInt(), n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import net.mograsim.logic.core.components.gates.OrGate;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-
-public class GUIOrGate extends SimpleRectangularGUIGate
-{
- public GUIOrGate(ViewModelModifiable model, int logicWidth)
- {
- this(model, logicWidth, null);
- }
-
- public GUIOrGate(ViewModelModifiable model, int logicWidth, String name)
- {
- super(model, "\u22651", false, logicWidth, name);// ">=1"
- setInputCount(2);
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUIOrGate.class, OrGate::new));
- IndirectGUIComponentCreator.setComponentSupplier(GUIOrGate.class.getCanonicalName(),
- (m, p, n) -> new GUIOrGate(m, p.getAsInt(), n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import org.eclipse.swt.SWT;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.core.types.BitVectorFormatter;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.SplitterAdapter;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.preferences.ColorDefinition;
-import net.mograsim.preferences.ColorManager;
-import net.mograsim.preferences.Preferences;
-
-public class GUISplitter extends GUIComponent
-{
- private static final double width = 10;
- private static final double heightPerPin = 10;
-
- public final int logicWidth;
- private final Pin inputPin;
-
- private ReadEnd inputEnd;
- private final ReadEnd[] outputEnds;
-
- public GUISplitter(ViewModelModifiable model, int logicWidth)
- {
- this(model, logicWidth, null);
- }
-
- public GUISplitter(ViewModelModifiable model, int logicWidth, String name)
- {
- super(model, name);
- this.logicWidth = logicWidth;
- setSize(width, (logicWidth - 1) * heightPerPin);
- addPin(this.inputPin = new Pin(this, "I", logicWidth, PinUsage.TRISTATE, 0, (logicWidth - 1) * heightPerPin / 2));
- double outputHeight = (logicWidth - 1) * heightPerPin;
- for (int i = 0; i < logicWidth; i++, outputHeight -= 10)
- addPin(new Pin(this, "O" + i, 1, PinUsage.TRISTATE, width, outputHeight));
- outputEnds = new ReadEnd[logicWidth];
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- double posX = getPosX();
- double posY = getPosY();
-
- ColorDefinition c = BitVectorFormatter.formatAsColor(inputEnd);
- if (c != null)
- gc.setForeground(ColorManager.current().toColor(c));
- gc.setLineWidth(
- Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire." + (logicWidth == 1 ? "singlebit" : "multibit")));
- double inLineY = posY + (logicWidth - 1) * heightPerPin / 2;
- gc.drawLine(posX, inLineY, posX + width / 2, inLineY);
- gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire.singlebit"));
- double outputHeight = posY;
- for (int i = 0; i < logicWidth; i++, outputHeight += 10)
- {
- c = BitVectorFormatter.formatAsColor(outputEnds[i]);
- if (c != null)
- gc.setForeground(ColorManager.current().toColor(c));
- gc.drawLine(posX + width / 2, outputHeight, posX + width, outputHeight);
- }
- gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground"));
- int oldLineCap = gc.getLineCap();
- int lineJoin = gc.getLineJoin();
- // TODO find better "replacement" for JOIN_BEVEL
- // TODO it looks weird that the vertical line is thinner than the single multibit wire.
- gc.setLineCap(lineJoin == SWT.JOIN_MITER ? SWT.CAP_SQUARE : lineJoin == SWT.JOIN_ROUND ? SWT.CAP_ROUND : SWT.CAP_SQUARE);
- gc.drawLine(posX + width / 2, posY, posX + width / 2, posY + heightPerPin * (logicWidth - 1));
- gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.default"));
- gc.setLineCap(oldLineCap);
- }
-
- @Override
- public Integer getParamsForSerializing(IdentifierGetter idGetter)
- {
- return logicWidth;
- }
-
- public void setLogicModelBinding(ReadEnd inputEnd, ReadEnd[] outputEnds)
- {
- this.inputEnd = inputEnd;
- System.arraycopy(outputEnds, 0, this.outputEnds, 0, logicWidth);
- }
-
- public Pin getInputPin()
- {
- return inputPin;
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new SplitterAdapter());
- IndirectGUIComponentCreator.setComponentSupplier(GUISplitter.class.getCanonicalName(),
- (m, p, n) -> new GUISplitter(m, p.getAsInt(), n));
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import org.eclipse.swt.graphics.Color;
-
-import com.google.gson.JsonSyntaxException;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.Orientation;
-import net.mograsim.logic.model.model.components.OrientationCalculator;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.TriStateBufferAdapter;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.util.JsonHandler;
-import net.mograsim.preferences.Preferences;
-
-public class GUITriStateBuffer extends GUIComponent
-{
-
- private static final double width = 20;
- private static final double height = 20;
- private Pin input;
- private Pin output;
- private Pin enable;
- private double[] path;
-
- private GUITriStateBufferParams params;
- private OrientationCalculator oc;
-
- public GUITriStateBuffer(ViewModelModifiable model, GUITriStateBufferParams params)
- {
- this(model, params, null);
- }
-
- public GUITriStateBuffer(ViewModelModifiable model, GUITriStateBufferParams params, String name)
- {
- super(model, name);
- this.params = params;
-
- oc = new OrientationCalculator(params.orientation, width, height);
-
- double wHalf = width / 2;
- double hHalf = height / 2;
- double hQuar = height / 4;
-
- this.input = new Pin(this, "IN", params.logicWidth, PinUsage.INPUT, oc.newX(0, hHalf), oc.newY(0, hHalf));
- this.output = new Pin(this, "OUT", params.logicWidth, PinUsage.OUTPUT, oc.newX(width, hHalf), oc.newY(width, hHalf));
- this.enable = new Pin(this, "EN", 1, PinUsage.INPUT, oc.newX(wHalf, hQuar), oc.newY(wHalf, hQuar));
- this.path = new double[] { oc.newX(0, 0), oc.newY(0, 0), oc.newX(width, hHalf), oc.newY(width, hHalf), oc.newX(0, height),
- oc.newY(0, height) };
-
- setSize(oc.width(), oc.height());
- addPin(input);
- addPin(output);
- addPin(enable);
- }
-
- public final Pin getInputPin()
- {
- return input;
- }
-
- public final Pin getOutputPin()
- {
- return output;
- }
-
- public final Pin getEnablePin()
- {
- return enable;
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
- if (foreground != null)
- gc.setForeground(foreground);
- double x = getPosX();
- double y = getPosY();
- gc.drawPolygon(new double[] { x + path[0], y + path[1], x + path[2], y + path[3], x + path[4], y + path[5] });
- }
-
- @Override
- public GUITriStateBufferParams getParamsForSerializing(IdentifierGetter idGetter)
- {
- return params;
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new TriStateBufferAdapter());
- IndirectGUIComponentCreator.setComponentSupplier(GUITriStateBuffer.class.getName(), (m, p, n) ->
- {
- GUITriStateBufferParams params = JsonHandler.fromJsonTree(p, GUITriStateBufferParams.class);
- if (params == null)
- throw new JsonSyntaxException("Invalid!!!");
- return new GUITriStateBuffer(m, params, n);
- });
- }
-
- public static class GUITriStateBufferParams
- {
- int logicWidth;
- Orientation orientation;
-
- public GUITriStateBufferParams(int logicWidth, Orientation orientation)
- {
- this.logicWidth = logicWidth;
- this.orientation = orientation;
- }
- }
-}
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import net.mograsim.logic.core.components.gates.CoreAndGate;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+
+public class ModelAndGate extends SimpleRectangularModelGate
+{
+ public ModelAndGate(LogicModelModifiable model, int logicWidth)
+ {
+ this(model, logicWidth, null);
+ }
+
+ public ModelAndGate(LogicModelModifiable model, int logicWidth, String name)
+ {
+ super(model, "AndGate", "&", false, logicWidth, name, false);
+ setInputCount(2);// TODO make variable
+ init();
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new SimpleGateAdapter<>(ModelAndGate.class, CoreAndGate::new));
+ IndirectModelComponentCreator.setComponentSupplier(ModelAndGate.class.getCanonicalName(),
+ (m, p, n) -> new ModelAndGate(m, p.getAsInt(), n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import org.eclipse.swt.graphics.Color;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.components.CoreBitDisplay;
+import net.mograsim.logic.core.types.BitVectorFormatter;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.BitDisplayAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.preferences.Preferences;
+
+public class ModelBitDisplay extends ModelComponent
+{
+ private static final double width = 20;
+ private static final double height = 15;
+ private static final double fontHeight = 5;
+
+ public final int logicWidth;
+ private final Pin inputPin;
+
+ private final LogicObserver logicObs;
+ private CoreBitDisplay bitDisplay;
+
+ public ModelBitDisplay(LogicModelModifiable model, int logicWidth)
+ {
+ this(model, logicWidth, null);
+ }
+
+ public ModelBitDisplay(LogicModelModifiable model, int logicWidth, String name)
+ {
+ super(model, name, false);
+ this.logicWidth = logicWidth;
+ logicObs = (i) -> model.requestRedraw();
+
+ setSize(width, height);
+ addPin(this.inputPin = new Pin(model, this, "", logicWidth, PinUsage.INPUT, 0, height / 2));
+
+ init();
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
+ if (foreground != null)
+ gc.setForeground(foreground);
+ gc.drawRectangle(getBounds());
+ String label = bitDisplay == null ? BitVectorFormatter.formatAsString(null)
+ : BitVectorFormatter.formatAsString(bitDisplay.getDisplayedValue());
+ Font oldFont = gc.getFont();
+ Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
+ gc.setFont(labelFont);
+ Point textExtent = gc.textExtent(label);
+ Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
+ if (textColor != null)
+ gc.setForeground(textColor);
+ gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true);
+ gc.setFont(oldFont);
+ }
+
+ public void setCoreModelBinding(CoreBitDisplay bitDisplay)
+ {
+ if (this.bitDisplay != null)
+ this.bitDisplay.deregisterObserver(logicObs);
+ this.bitDisplay = bitDisplay;
+ if (bitDisplay != null)
+ bitDisplay.registerObserver(logicObs);
+ }
+
+ public boolean hasCoreModelBinding()
+ {
+ return bitDisplay != null;
+ }
+
+ public CoreBitDisplay getBitDisplay()
+ {
+ return bitDisplay;
+ }
+
+ public Pin getInputPin()
+ {
+ return inputPin;
+ }
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "BitDisplay";
+ }
+
+ @Override
+ public Integer getParamsForSerializing(IdentifyParams idParams)
+ {
+ return logicWidth;
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new BitDisplayAdapter());
+ IndirectModelComponentCreator.setComponentSupplier(ModelBitDisplay.class.getCanonicalName(),
+ (m, p, n) -> new ModelBitDisplay(m, p.getAsInt(), n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import org.eclipse.swt.graphics.Color;
+
+import com.google.gson.JsonSyntaxException;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.components.CoreClock;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.Orientation;
+import net.mograsim.logic.model.model.components.OrientationCalculator;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.ClockAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.util.JsonHandler;
+import net.mograsim.preferences.Preferences;
+
+public class ModelClock extends ModelComponent
+{
+ private static final double width = 20;
+ private static final double height = 20;
+ private static final double fontHeight = 5;
+
+ private final Pin outputPin;
+
+ private final LogicObserver logicObs;
+ private ModelClockParams params;
+ private OrientationCalculator oc;
+ private CoreClock clock;
+
+ public ModelClock(LogicModelModifiable model, ModelClockParams params)
+ {
+ this(model, params, null);
+ }
+
+ public ModelClock(LogicModelModifiable model, ModelClockParams params, String name)
+ {
+ super(model, name, false);
+ this.params = params;
+ logicObs = (i) -> model.requestRedraw();
+
+ oc = new OrientationCalculator(params.orientation, width, height);
+ setSize(oc.width(), oc.height());
+
+ this.outputPin = new Pin(model, this, "", 1, PinUsage.OUTPUT, oc.newX(width, height / 2), oc.newY(width, height / 2));
+ addPin(outputPin);
+
+ init();
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
+ if (foreground != null)
+ gc.setForeground(foreground);
+ gc.drawRectangle(getBounds());
+ String label = clock == null ? "null" : (clock.isOn() ? "|" : "\u2015");
+ Font oldFont = gc.getFont();
+ Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
+ gc.setFont(labelFont);
+ Point textExtent = gc.textExtent(label);
+ Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
+ if (textColor != null)
+ gc.setForeground(textColor);
+ gc.drawText(label, getPosX() + (oc.width() - textExtent.x) / 2, getPosY() + (oc.height() - textExtent.y) / 2, true);
+ gc.setFont(oldFont);
+ }
+
+ public void setCoreModelBinding(CoreClock clock)
+ {
+ if (this.clock != null)
+ this.clock.deregisterObserver(logicObs);
+ this.clock = clock;
+ if (clock != null)
+ clock.registerObserver(logicObs);
+ }
+
+ public boolean hasCoreModelBinding()
+ {
+ return clock != null;
+ }
+
+ @Override
+ public Object getHighLevelState(String stateID)
+ {
+ switch (stateID)
+ {
+ case "out":
+ if (clock != null)
+ return clock.getOut().getInputValues();
+ return null;
+ default:
+ return super.getHighLevelState(stateID);
+ }
+ }
+
+ @Override
+ public void setHighLevelState(String stateID, Object newState)
+ {
+ switch (stateID)
+ {
+ case "out":
+ throw new UnsupportedOperationException("cannot set state of clock");
+ default:
+ super.setHighLevelState(stateID, newState);
+ }
+ }
+
+ public CoreClock getClock()
+ {
+ return clock;
+ }
+
+ public Pin getOutputPin()
+ {
+ return outputPin;
+ }
+
+ public int getDelta()
+ {
+ return params.delta;
+ }
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "Clock";
+ }
+
+ @Override
+ public ModelClockParams getParamsForSerializing(IdentifyParams idParams)
+ {
+ return params;
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new ClockAdapter());
+ IndirectModelComponentCreator.setComponentSupplier(ModelClock.class.getName(), (m, p, n) ->
+ {
+ ModelClockParams params = JsonHandler.fromJsonTree(p, ModelClockParams.class);
+ if (params == null)
+ throw new JsonSyntaxException("Invalid!!!");
+ return new ModelClock(m, params, n);
+ });
+ }
+
+ public static class ModelClockParams
+ {
+ int delta;
+ Orientation orientation;
+
+ public ModelClockParams(int delta, Orientation orientation)
+ {
+ this.delta = delta;
+ this.orientation = orientation;
+ }
+ }
+}
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import java.util.Objects;
+
+import org.eclipse.swt.graphics.Color;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.types.BitVectorFormatter;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.FixedOutputAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.util.JsonHandler;
+import net.mograsim.preferences.Preferences;
+
+public class ModelFixedOutput extends ModelComponent
+{
+ private static final double width = 20;
+ private static final double height = 20;
+ private static final double fontHeight = 5;
+
+ public final BitVector bits;
+
+ public ModelFixedOutput(LogicModelModifiable model, BitVector bits, String name)
+ {
+ super(model, name, false);
+ this.bits = bits;
+ setSize(width, height);
+ addPin(new Pin(model, this, "out", bits.length(), PinUsage.OUTPUT, width, height / 2));
+
+ init();
+ }
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "FixedOutput";
+ }
+
+ @Override
+ public Object getParamsForSerializing(IdentifyParams idParams)
+ {
+ return bits;
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
+ if (foreground != null)
+ gc.setForeground(foreground);
+ gc.drawRectangle(getBounds());
+ String label = BitVectorFormatter.formatAsString(bits);
+ Font oldFont = gc.getFont();
+ Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
+ gc.setFont(labelFont);
+ Point textExtent = gc.textExtent(label);
+ Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
+ if (textColor != null)
+ gc.setForeground(textColor);
+ gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true);
+ gc.setFont(oldFont);
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new FixedOutputAdapter());
+ IndirectModelComponentCreator.setComponentSupplier(ModelFixedOutput.class.getCanonicalName(),
+ (m, p, n) -> new ModelFixedOutput(m, Objects.requireNonNull(JsonHandler.fromJsonTree(p, BitVector.class)), n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import org.eclipse.swt.graphics.Color;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.components.CoreManualSwitch;
+import net.mograsim.logic.core.types.Bit;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.types.BitVectorFormatter;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.ManualSwitchAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.preferences.Preferences;
+
+public class ModelManualSwitch extends ModelComponent
+{
+ private static final double width = 20;
+ private static final double height = 15;
+ private static final double fontHeight = 5;
+ private static final double heightMiniButtons = 4; // 0 is disabled
+
+ public final int logicWidth;
+ private final Pin outputPin;
+
+ private final LogicObserver logicObs;
+ private CoreManualSwitch manualSwitch;
+
+ public ModelManualSwitch(LogicModelModifiable model, int logicWidth)
+ {
+ this(model, logicWidth, null);
+ }
+
+ public ModelManualSwitch(LogicModelModifiable model, int logicWidth, String name)
+ {
+ super(model, name, false);
+ this.logicWidth = logicWidth;
+ logicObs = (i) -> model.requestRedraw();
+
+ setSize(width, height);
+ addPin(this.outputPin = new Pin(model, this, "", logicWidth, PinUsage.OUTPUT, width, height / 2));
+
+ init();
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
+ if (foreground != null)
+ gc.setForeground(foreground);
+ gc.drawRectangle(getBounds());
+ String label = BitVectorFormatter.formatAsString(manualSwitch == null ? null : manualSwitch.getValues());
+ Font oldFont = gc.getFont();
+ Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
+ gc.setFont(labelFont);
+ Point textExtent = gc.textExtent(label);
+ Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
+ if (textColor != null)
+ gc.setForeground(textColor);
+ gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true);
+ gc.setFont(oldFont);
+
+ if (manualSwitch != null && logicWidth > 1 && heightMiniButtons > 0 && visibleRegion.y < getPosY() + heightMiniButtons)
+ {
+ double x = getPosX();
+ double y = getPosY();
+ gc.drawLine(x, y + heightMiniButtons, x + width, y + heightMiniButtons);
+ Color c = gc.getBackground();
+ gc.setBackground(gc.getForeground());
+ BitVector bv = manualSwitch.getValues();
+ double part = width / bv.length();
+ for (int i = 0; i < bv.length(); i++)
+ {
+ double start = x + part * i;
+ if (i != 0)
+ gc.drawLine(start, y, start, y + heightMiniButtons);
+ if (bv.getMSBit(i) == Bit.ONE)
+ {
+// gc.fillRectangle(start, y, part, heightMiniButtons); // alternative, but not always visible what Bit is where
+ gc.drawLine(start, y, start + part, y + heightMiniButtons);
+ gc.drawLine(start + part, y, start, y + heightMiniButtons);
+ }
+ }
+ gc.setBackground(c);
+ }
+ }
+
+ public void setCoreModelBinding(CoreManualSwitch logicSwitch)
+ {
+ if (this.manualSwitch != null)
+ this.manualSwitch.deregisterObserver(logicObs);
+ this.manualSwitch = logicSwitch;
+ if (logicSwitch != null)
+ logicSwitch.registerObserver(logicObs);
+ }
+
+ public boolean hasCoreModelBinding()
+ {
+ return manualSwitch != null;
+ }
+
+ @Override
+ public Object getHighLevelState(String stateID)
+ {
+ switch (stateID)
+ {
+ case "out":
+ if (manualSwitch != null)
+ return manualSwitch.getValues();
+ return null;
+ default:
+ return super.getHighLevelState(stateID);
+ }
+ }
+
+ @Override
+ public void setHighLevelState(String stateID, Object newState)
+ {
+ switch (stateID)
+ {
+ case "out":
+ if (manualSwitch != null)
+ manualSwitch.setState((BitVector) newState);
+ break;
+ default:
+ super.setHighLevelState(stateID, newState);
+ break;
+ }
+ }
+
+ @Override
+ public boolean clicked(double x, double y)
+ {
+ if (manualSwitch != null)
+ {
+ if (heightMiniButtons > 0 && y - getPosY() < heightMiniButtons)
+ {
+ int part = (int) ((x - getPosX()) * logicWidth / width);
+ manualSwitch.setState(manualSwitch.getValues().withBitChanged(part, Bit::not));
+ } else
+ {
+ manualSwitch.toggle();
+ }
+ }
+ return true;
+ }
+
+ public CoreManualSwitch getManualSwitch()
+ {
+ return manualSwitch;
+ }
+
+ public Pin getOutputPin()
+ {
+ return outputPin;
+ }
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "ManualSwitch";
+ }
+
+ @Override
+ public Integer getParamsForSerializing(IdentifyParams idParams)
+ {
+ return logicWidth;
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new ManualSwitchAdapter());
+ IndirectModelComponentCreator.setComponentSupplier(ModelManualSwitch.class.getName(),
+ (m, p, n) -> new ModelManualSwitch(m, p.getAsInt(), n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import org.eclipse.swt.SWT;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.core.types.BitVectorFormatter;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.MergerAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.preferences.ColorDefinition;
+import net.mograsim.preferences.ColorManager;
+import net.mograsim.preferences.Preferences;
+
+public class ModelMerger extends ModelComponent
+{
+ private static final double width = 10;
+ private static final double heightPerPin = 10;
+
+ public final int logicWidth;
+ private final Pin outputPin;
+
+ private final ReadEnd[] inputEnds;
+ private ReadEnd outputEnd;
+
+ public ModelMerger(LogicModelModifiable model, int logicWidth)
+ {
+ this(model, logicWidth, null);
+ }
+
+ public ModelMerger(LogicModelModifiable model, int logicWidth, String name)
+ {
+ super(model, name, false);
+ this.logicWidth = logicWidth;
+ setSize(width, (logicWidth - 1) * heightPerPin);
+ double inputHeight = (logicWidth - 1) * heightPerPin;
+ for (int i = 0; i < logicWidth; i++, inputHeight -= 10)
+ addPin(new Pin(model, this, "I" + i, 1, PinUsage.TRISTATE, 0, inputHeight));
+ addPin(this.outputPin = new Pin(model, this, "O", logicWidth, PinUsage.TRISTATE, width, (logicWidth - 1) * heightPerPin / 2));
+ inputEnds = new ReadEnd[logicWidth];
+
+ init();
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ double posX = getPosX();
+ double posY = getPosY();
+
+ ColorDefinition c = BitVectorFormatter.formatAsColor(outputEnd);
+ if (c != null)
+ gc.setForeground(ColorManager.current().toColor(c));
+ gc.setLineWidth(
+ Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire." + (logicWidth == 1 ? "singlebit" : "multibit")));
+ double outLineY = posY + (logicWidth - 1) * heightPerPin / 2;
+ gc.drawLine(posX + width / 2, outLineY, posX + width, outLineY);
+ gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire.singlebit"));
+ double inputHeight = posY;
+ for (int i = 0; i < logicWidth; i++, inputHeight += 10)
+ {
+ c = BitVectorFormatter.formatAsColor(inputEnds[i]);
+ if (c != null)
+ gc.setForeground(ColorManager.current().toColor(c));
+ gc.drawLine(posX, inputHeight, posX + width / 2, inputHeight);
+ }
+ gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground"));
+ int oldLineCap = gc.getLineCap();
+ int lineJoin = gc.getLineJoin();
+ // TODO find better "replacement" for JOIN_BEVEL
+ // TODO it looks weird that the vertical line is thinner than the single multibit wire.
+ gc.setLineCap(lineJoin == SWT.JOIN_MITER ? SWT.CAP_SQUARE : lineJoin == SWT.JOIN_ROUND ? SWT.CAP_ROUND : SWT.CAP_SQUARE);
+ gc.drawLine(posX + width / 2, posY, posX + width / 2, posY + heightPerPin * (logicWidth - 1));
+ gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.default"));
+ gc.setLineCap(oldLineCap);
+ }
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "Merger";
+ }
+
+ @Override
+ public Integer getParamsForSerializing(IdentifyParams idParams)
+ {
+ return logicWidth;
+ }
+
+ public void setCoreModelBinding(ReadEnd[] inputEnds, ReadEnd outputEnd)
+ {
+ System.arraycopy(inputEnds, 0, this.inputEnds, 0, logicWidth);
+ this.outputEnd = outputEnd;
+ }
+
+ public Pin getOutputPin()
+ {
+ return outputPin;
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new MergerAdapter());
+ IndirectModelComponentCreator.setComponentSupplier(ModelMerger.class.getCanonicalName(),
+ (m, p, n) -> new ModelMerger(m, p.getAsInt(), n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import net.mograsim.logic.core.components.gates.CoreNandGate;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+
+public class ModelNandGate extends SimpleRectangularModelGate
+{
+ public ModelNandGate(LogicModelModifiable model, int logicWidth)
+ {
+ this(model, logicWidth, null);
+ }
+
+ public ModelNandGate(LogicModelModifiable model, int logicWidth, String name)
+ {
+ super(model, "NandGate", "&", true, logicWidth, name, false);
+ setInputCount(2);// TODO make variable
+ init();
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new SimpleGateAdapter<>(ModelNandGate.class, CoreNandGate::new));
+ IndirectModelComponentCreator.setComponentSupplier(ModelNandGate.class.getCanonicalName(),
+ (m, p, n) -> new ModelNandGate(m, p.getAsInt(), n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import net.mograsim.logic.core.components.gates.CoreNotGate;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+
+public class ModelNotGate extends SimpleRectangularModelGate
+{
+ public ModelNotGate(LogicModelModifiable model, int logicWidth)
+ {
+ this(model, logicWidth, null);
+ }
+
+ public ModelNotGate(LogicModelModifiable model, int logicWidth, String name)
+ {
+ super(model, "NotGate", "1", true, logicWidth, name, false);
+ setInputCount(1);
+ init();
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new SimpleGateAdapter<>(ModelNotGate.class, (t, p, o, i) -> new CoreNotGate(t, p, i[0], o)));
+ IndirectModelComponentCreator.setComponentSupplier(ModelNotGate.class.getCanonicalName(),
+ (m, p, n) -> new ModelNotGate(m, p.getAsInt(), n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import net.mograsim.logic.core.components.gates.CoreOrGate;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+
+public class ModelOrGate extends SimpleRectangularModelGate
+{
+ public ModelOrGate(LogicModelModifiable model, int logicWidth)
+ {
+ this(model, logicWidth, null);
+ }
+
+ public ModelOrGate(LogicModelModifiable model, int logicWidth, String name)
+ {
+ super(model, "OrGate", "\u22651", false, logicWidth, name, false);// ">=1"
+ setInputCount(2);
+ init();
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new SimpleGateAdapter<>(ModelOrGate.class, CoreOrGate::new));
+ IndirectModelComponentCreator.setComponentSupplier(ModelOrGate.class.getCanonicalName(),
+ (m, p, n) -> new ModelOrGate(m, p.getAsInt(), n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import org.eclipse.swt.SWT;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.core.types.BitVectorFormatter;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.SplitterAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.preferences.ColorDefinition;
+import net.mograsim.preferences.ColorManager;
+import net.mograsim.preferences.Preferences;
+
+public class ModelSplitter extends ModelComponent
+{
+ private static final double width = 10;
+ private static final double heightPerPin = 10;
+
+ public final int logicWidth;
+ private final Pin inputPin;
+
+ private ReadEnd inputEnd;
+ private final ReadEnd[] outputEnds;
+
+ public ModelSplitter(LogicModelModifiable model, int logicWidth)
+ {
+ this(model, logicWidth, null);
+ }
+
+ public ModelSplitter(LogicModelModifiable model, int logicWidth, String name)
+ {
+ super(model, name, false);
+ this.logicWidth = logicWidth;
+ setSize(width, (logicWidth - 1) * heightPerPin);
+ addPin(this.inputPin = new Pin(model, this, "I", logicWidth, PinUsage.TRISTATE, 0, (logicWidth - 1) * heightPerPin / 2));
+ double outputHeight = (logicWidth - 1) * heightPerPin;
+ for (int i = 0; i < logicWidth; i++, outputHeight -= 10)
+ addPin(new Pin(model, this, "O" + i, 1, PinUsage.TRISTATE, width, outputHeight));
+ outputEnds = new ReadEnd[logicWidth];
+
+ init();
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ double posX = getPosX();
+ double posY = getPosY();
+
+ ColorDefinition c = BitVectorFormatter.formatAsColor(inputEnd);
+ if (c != null)
+ gc.setForeground(ColorManager.current().toColor(c));
+ gc.setLineWidth(
+ Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire." + (logicWidth == 1 ? "singlebit" : "multibit")));
+ double inLineY = posY + (logicWidth - 1) * heightPerPin / 2;
+ gc.drawLine(posX, inLineY, posX + width / 2, inLineY);
+ gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire.singlebit"));
+ double outputHeight = posY;
+ for (int i = 0; i < logicWidth; i++, outputHeight += 10)
+ {
+ c = BitVectorFormatter.formatAsColor(outputEnds[i]);
+ if (c != null)
+ gc.setForeground(ColorManager.current().toColor(c));
+ gc.drawLine(posX + width / 2, outputHeight, posX + width, outputHeight);
+ }
+ gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground"));
+ int oldLineCap = gc.getLineCap();
+ int lineJoin = gc.getLineJoin();
+ // TODO find better "replacement" for JOIN_BEVEL
+ // TODO it looks weird that the vertical line is thinner than the single multibit wire.
+ gc.setLineCap(lineJoin == SWT.JOIN_MITER ? SWT.CAP_SQUARE : lineJoin == SWT.JOIN_ROUND ? SWT.CAP_ROUND : SWT.CAP_SQUARE);
+ gc.drawLine(posX + width / 2, posY, posX + width / 2, posY + heightPerPin * (logicWidth - 1));
+ gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.default"));
+ gc.setLineCap(oldLineCap);
+ }
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "Splitter";
+ }
+
+ @Override
+ public Integer getParamsForSerializing(IdentifyParams idParams)
+ {
+ return logicWidth;
+ }
+
+ public void setCoreModelBinding(ReadEnd inputEnd, ReadEnd[] outputEnds)
+ {
+ this.inputEnd = inputEnd;
+ System.arraycopy(outputEnds, 0, this.outputEnds, 0, logicWidth);
+ }
+
+ public Pin getInputPin()
+ {
+ return inputPin;
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new SplitterAdapter());
+ IndirectModelComponentCreator.setComponentSupplier(ModelSplitter.class.getCanonicalName(),
+ (m, p, n) -> new ModelSplitter(m, p.getAsInt(), n));
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import org.eclipse.swt.graphics.Color;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.NoLogicAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.preferences.Preferences;
+
+//TODO clean size calculation mess
+public class ModelTextComponent extends ModelComponent
+{
+ private final String text;
+ private boolean calculatedSize;
+
+ public ModelTextComponent(LogicModelModifiable model, String text)
+ {
+ this(model, text, null);
+ }
+
+ public ModelTextComponent(LogicModelModifiable model, String text, String name)
+ {
+ super(model, name, false);
+ this.text = text;
+ // If size is unset, it defaults to 0, which could prohibit this component from being rendered, which would prohibit the size being
+ // set to a better guess
+ setSize(1, 1);
+
+ init();
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ if (!calculatedSize)
+ {
+ calculatedSize = true;
+ Point textExtent = gc.textExtent(text);
+ setSize(textExtent.x, textExtent.y);
+ }
+
+ Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
+ if (textColor != null)
+ gc.setForeground(textColor);
+ gc.drawText(text, getPosX(), getPosY(), true);
+ }
+
+ // serializing
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "TextComponent";
+ }
+
+ @Override
+ public String getParamsForSerializing(IdentifyParams idParams)
+ {
+ return text;
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new NoLogicAdapter<>(ModelTextComponent.class));
+ IndirectModelComponentCreator.setComponentSupplier(ModelTextComponent.class.getName(),
+ (m, p, n) -> new ModelTextComponent(m, p.getAsString(), n));
+ }
+}
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import org.eclipse.swt.graphics.Color;
+
+import com.google.gson.JsonSyntaxException;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.Orientation;
+import net.mograsim.logic.model.model.components.OrientationCalculator;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.TriStateBufferAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.util.JsonHandler;
+import net.mograsim.preferences.Preferences;
+
+public class ModelTriStateBuffer extends ModelComponent
+{
+
+ private static final double width = 20;
+ private static final double height = 20;
+ private Pin input;
+ private Pin output;
+ private Pin enable;
+ private double[] path;
+
+ private ModelTriStateBufferParams params;
+ private OrientationCalculator oc;
+
+ public ModelTriStateBuffer(LogicModelModifiable model, ModelTriStateBufferParams params)
+ {
+ this(model, params, null);
+ }
+
+ public ModelTriStateBuffer(LogicModelModifiable model, ModelTriStateBufferParams params, String name)
+ {
+ super(model, name, false);
+ this.params = params;
+
+ oc = new OrientationCalculator(params.orientation, width, height);
+
+ double wHalf = width / 2;
+ double hHalf = height / 2;
+ double hQuar = height / 4;
+
+ this.input = new Pin(model, this, "IN", params.logicWidth, PinUsage.INPUT, oc.newX(0, hHalf), oc.newY(0, hHalf));
+ this.output = new Pin(model, this, "OUT", params.logicWidth, PinUsage.OUTPUT, oc.newX(width, hHalf), oc.newY(width, hHalf));
+ this.enable = new Pin(model, this, "EN", 1, PinUsage.INPUT, oc.newX(wHalf, hQuar), oc.newY(wHalf, hQuar));
+ this.path = new double[] { oc.newX(0, 0), oc.newY(0, 0), oc.newX(width, hHalf), oc.newY(width, hHalf), oc.newX(0, height),
+ oc.newY(0, height) };
+
+ setSize(oc.width(), oc.height());
+ addPin(input);
+ addPin(output);
+ addPin(enable);
+
+ init();
+ }
+
+ public final Pin getInputPin()
+ {
+ return input;
+ }
+
+ public final Pin getOutputPin()
+ {
+ return output;
+ }
+
+ public final Pin getEnablePin()
+ {
+ return enable;
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
+ if (foreground != null)
+ gc.setForeground(foreground);
+ double x = getPosX();
+ double y = getPosY();
+ gc.drawPolygon(new double[] { x + path[0], y + path[1], x + path[2], y + path[3], x + path[4], y + path[5] });
+ }
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "TriStateBuffer";
+ }
+
+ @Override
+ public ModelTriStateBufferParams getParamsForSerializing(IdentifyParams idParams)
+ {
+ return params;
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new TriStateBufferAdapter());
+ IndirectModelComponentCreator.setComponentSupplier(ModelTriStateBuffer.class.getName(), (m, p, n) ->
+ {
+ ModelTriStateBufferParams params = JsonHandler.fromJsonTree(p, ModelTriStateBufferParams.class);
+ if (params == null)
+ throw new JsonSyntaxException("Invalid!!!");
+ return new ModelTriStateBuffer(m, params, n);
+ });
+ }
+
+ public static class ModelTriStateBufferParams
+ {
+ int logicWidth;
+ Orientation orientation;
+
+ public ModelTriStateBufferParams(int logicWidth, Orientation orientation)
+ {
+ this.logicWidth = logicWidth;
+ this.orientation = orientation;
+ }
+ }
+}
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.swt.graphics.Color;
-
-import com.google.gson.JsonPrimitive;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.MovablePin;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.preferences.Preferences;
-
-public class SimpleRectangularGUIGate extends GUIComponent
-{
- private static final double width = 20;
- private static final double pinDistance = 10;
- private static final double fontHeight = 5;
- private static final double invertedCircleDiam = 3.5;
-
- private final String label;
- private final boolean isInverted;
- protected final int logicWidth;
- private final double rectWidth;
-
- private MovablePin outputPin;
- private final List<Pin> inputPins;
-
- protected SimpleRectangularGUIGate(ViewModelModifiable model, String label, boolean isInverted, int logicWidth, String name)
- {
- super(model, name);
- this.label = label;
- this.logicWidth = logicWidth;
- this.isInverted = isInverted;
- this.rectWidth = width - (isInverted ? invertedCircleDiam : 0);
- this.outputPin = new MovablePin(this, "Y", logicWidth, PinUsage.OUTPUT, width, 0);
- addPin(outputPin);
- this.inputPins = new ArrayList<>();
- setInputCount(1);
- }
-
- protected void setInputCount(int inputCount)
- {
- int oldInputCount = inputPins.size();
- setSize(width, inputCount * pinDistance);
- if (oldInputCount > inputCount)
- while (inputPins.size() > inputCount)
- removePin(inputPins.remove(inputCount).name);
- else if (oldInputCount < inputCount)
- for (int i = oldInputCount; i < inputCount; i++)
- {
- // TODO what for more than 24 input pins?
- Pin pin = new Pin(this, String.valueOf((char) ('A' + i)), logicWidth, PinUsage.INPUT, 0, pinDistance / 2 + i * pinDistance);
- inputPins.add(pin);
- addPin(pin);
- }
- outputPin.setRelPos(width, inputCount * pinDistance / 2);
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
- if (foreground != null)
- gc.setForeground(foreground);
- double height = (getPins().size() - 1) * pinDistance;
- gc.drawRectangle(getPosX(), getPosY(), rectWidth, height);
- if (isInverted)
- gc.drawOval(getPosX() + rectWidth, getPosY() + (height - invertedCircleDiam) / 2, invertedCircleDiam, invertedCircleDiam);
- Font oldFont = gc.getFont();
- Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
- gc.setFont(labelFont);
- Point textExtent = gc.textExtent(label);
- Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
- if (textColor != null)
- gc.setForeground(textColor);
- gc.drawText(label, getPosX() + (rectWidth - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true);
- gc.setFont(oldFont);
- }
-
- // serializing
-
- /**
- * {@link SimpleRectangularGUIGate}s implementation returns a {@link JsonPrimitive} of type int containing the {@link #logicWidth} of
- * this component.
- *
- * @see GUIComponent#getParamsForSerializing()
- */
- @Override
- public Integer getParamsForSerializing(IdentifierGetter idGetter)
- {
- return logicWidth;
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicReference;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.SimpleRectangularHardcodedGUIComponentAdapter;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.snippets.HighLevelStateHandler;
-import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
-import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer;
-import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer.CenteredTextParams;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public abstract class SimpleRectangularHardcodedGUIComponent extends GUIComponent
-{
- private static final double centerTextHeight = 5;
- private static final double pinNamesHeight = 3.5;
- private static final double pinNamesMargin = .5;
-
- private final DefaultOutlineRenderer outlineRenderer;
- private final CenteredTextSymbolRenderer centerTextRenderer;
- private final PinNamesSymbolRenderer pinNamesRenderer;
-
- private AtomicReference<Object> state;
- private Runnable recalculate;
-
- // creation and destruction
-
- public SimpleRectangularHardcodedGUIComponent(ViewModelModifiable model, String name, String centerText)
- {
- super(model, name);
- this.outlineRenderer = new DefaultOutlineRenderer(this);
- CenteredTextParams centeredTextParams = new CenteredTextParams();
- centeredTextParams.text = centerText;
- centeredTextParams.fontHeight = centerTextHeight;
- this.centerTextRenderer = new CenteredTextSymbolRenderer(this, centeredTextParams);
- PinNamesParams pinNamesParams = new PinNamesParams();
- pinNamesParams.pinLabelHeight = pinNamesHeight;
- pinNamesParams.pinLabelMargin = pinNamesMargin;
- this.pinNamesRenderer = new PinNamesSymbolRenderer(this, pinNamesParams);
- addPinRemovedListener(this::pinRemoved);
- setHighLevelStateHandler(new HighLevelStateHandler()
- {
- @Override
- public Object getParamsForSerializing(IdentifierGetter idGetter)
- {
- return null;
- }
-
- @Override
- public Object getHighLevelState(String stateID)
- {
- return SimpleRectangularHardcodedGUIComponent.this.getHighLevelState(state.get(), stateID);
- }
-
- @Override
- public void setHighLevelState(String stateID, Object newState)
- {
- state.updateAndGet(s -> SimpleRectangularHardcodedGUIComponent.this.setHighLevelState(s, stateID, newState));
- recalculate.run();
- }
- });
- }
-
- // pins
-
- protected void addPin(Pin pin, Position namePosition)
- {
- super.addPin(pin); // do this first to catch errors
- pinNamesRenderer.setPinPosition(pin, namePosition);
- }
-
- private void pinRemoved(Pin pin)
- {
- pinNamesRenderer.setPinPosition(pin, null);
- }
-
- // high-level access
-
- @SuppressWarnings({ "static-method", "unused" }) // this method is intended to be overridden
- protected Object getHighLevelState(Object state, String stateID)
- {
- throw new IllegalArgumentException("No high level state with ID " + stateID);
- }
-
- @SuppressWarnings({ "static-method", "unused" }) // this method is intended to be overridden
- protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
- {
- throw new IllegalArgumentException("No high level state with ID " + stateID);
- }
-
- // logic
-
- public abstract Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds);
-
- // logic model binding
-
- public void setLogicModelBindingAndResetState(AtomicReference<Object> state, Runnable recalculate)
- {
- this.state = state;
- this.recalculate = recalculate;
- }
-
- // "graphical" operations
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- outlineRenderer.render(gc, visibleRegion);
- centerTextRenderer.render(gc, visibleRegion);
- pinNamesRenderer.render(gc, visibleRegion);
- }
-
- // operations no longer supported
-
- @Override
- protected void addPin(Pin pin)
- {
- throw new UnsupportedOperationException("Can't add pins without setting usage, call addPin(Pin [, Position]) instead");
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new SimpleRectangularHardcodedGUIComponentAdapter());
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.modeladapter.componentadapters.SimpleRectangularHardcodedModelComponentAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.snippets.HighLevelStateHandler;
+import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
+import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer;
+import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer.CenteredTextParams;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public abstract class SimpleRectangularHardcodedModelComponent extends ModelComponent
+{
+ private static final double centerTextHeight = 5;
+ private static final double pinNamesHeight = 3.5;
+ private static final double pinNamesMargin = .5;
+
+ private final String id;
+
+ private final DefaultOutlineRenderer outlineRenderer;
+ private final CenteredTextSymbolRenderer centerTextRenderer;
+ private final PinNamesSymbolRenderer pinNamesRenderer;
+
+ private AtomicReference<Object> state;
+ private Runnable recalculate;
+
+ // creation and destruction
+
+ public SimpleRectangularHardcodedModelComponent(LogicModelModifiable model, String id, String name, String centerText, boolean callInit)
+ {
+ super(model, name, false);
+ this.id = id;
+ this.outlineRenderer = new DefaultOutlineRenderer(this);
+ CenteredTextParams centeredTextParams = new CenteredTextParams();
+ centeredTextParams.text = centerText;
+ centeredTextParams.fontHeight = centerTextHeight;
+ this.centerTextRenderer = new CenteredTextSymbolRenderer(this, centeredTextParams);
+ PinNamesParams pinNamesParams = new PinNamesParams();
+ pinNamesParams.pinLabelHeight = pinNamesHeight;
+ pinNamesParams.pinLabelMargin = pinNamesMargin;
+ this.pinNamesRenderer = new PinNamesSymbolRenderer(this, pinNamesParams);
+ addPinRemovedListener(this::pinRemoved);
+ setHighLevelStateHandler(new HighLevelStateHandler()
+ {
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return null;// we don't need to serialize this; it's implicit since we are a SimpleRectangularHardcodedModelComponent
+ }
+
+ @Override
+ public Object getParamsForSerializing(IdentifyParams idParams)
+ {
+ return null;
+ }
+
+ @Override
+ public Object getHighLevelState(String stateID)
+ {
+ return SimpleRectangularHardcodedModelComponent.this.getHighLevelState(state.get(), stateID);
+ }
+
+ @Override
+ public void setHighLevelState(String stateID, Object newState)
+ {
+ state.updateAndGet(s -> SimpleRectangularHardcodedModelComponent.this.setHighLevelState(s, stateID, newState));
+ recalculate.run();
+ }
+ });
+
+ if (callInit)
+ init();
+ }
+
+ // pins
+
+ protected void addPin(Pin pin, Position namePosition)
+ {
+ super.addPin(pin); // do this first to catch errors
+ pinNamesRenderer.setPinPosition(pin, namePosition);
+ }
+
+ private void pinRemoved(Pin pin)
+ {
+ pinNamesRenderer.setPinPosition(pin, null);
+ }
+
+ // high-level access
+
+ @SuppressWarnings({ "static-method", "unused" }) // this method is intended to be overridden
+ protected Object getHighLevelState(Object state, String stateID)
+ {
+ throw new IllegalArgumentException("No high level state with ID " + stateID);
+ }
+
+ @SuppressWarnings({ "static-method", "unused" }) // this method is intended to be overridden
+ protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
+ {
+ throw new IllegalArgumentException("No high level state with ID " + stateID);
+ }
+
+ // logic
+
+ public abstract Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds);
+
+ // core model binding
+
+ public void setCoreModelBindingAndResetState(AtomicReference<Object> state, Runnable recalculate)
+ {
+ this.state = state;
+ this.recalculate = recalculate;
+ }
+
+ // "graphical" operations
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ outlineRenderer.render(gc, visibleRegion);
+ centerTextRenderer.render(gc, visibleRegion);
+ pinNamesRenderer.render(gc, visibleRegion);
+ }
+
+ // serializing
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return id;
+ }
+
+ // operations no longer supported
+
+ @Override
+ protected void addPin(Pin pin)
+ {
+ throw new UnsupportedOperationException("Can't add pins without setting usage, call addPin(Pin [, Position]) instead");
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new SimpleRectangularHardcodedModelComponentAdapter());
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.components.atomic;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.graphics.Color;
+
+import com.google.gson.JsonPrimitive;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.MovablePin;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.preferences.Preferences;
+
+public class SimpleRectangularModelGate extends ModelComponent
+{
+ private static final double width = 20;
+ private static final double pinDistance = 10;
+ private static final double fontHeight = 5;
+ private static final double invertedCircleDiam = 3.5;
+
+ private final String id;
+
+ private final String label;
+ private final boolean isInverted;
+ protected final int logicWidth;
+ private final double rectWidth;
+
+ private MovablePin outputPin;
+ private final List<Pin> inputPins;
+
+ protected SimpleRectangularModelGate(LogicModelModifiable model, String id, String label, boolean isInverted, int logicWidth,
+ String name)
+ {
+ this(model, id, label, isInverted, logicWidth, name, true);
+ }
+
+ protected SimpleRectangularModelGate(LogicModelModifiable model, String id, String label, boolean isInverted, int logicWidth,
+ String name, boolean callInit)
+ {
+ super(model, name, false);
+ this.id = id;
+ this.label = label;
+ this.logicWidth = logicWidth;
+ this.isInverted = isInverted;
+ this.rectWidth = width - (isInverted ? invertedCircleDiam : 0);
+ this.outputPin = new MovablePin(model, this, "Y", logicWidth, PinUsage.OUTPUT, width, 0);
+ addPin(outputPin);
+ this.inputPins = new ArrayList<>();
+ setInputCount(1);
+
+ if (callInit)
+ init();
+ }
+
+ protected void setInputCount(int inputCount)
+ {
+ int oldInputCount = inputPins.size();
+ setSize(width, inputCount * pinDistance);
+ if (oldInputCount > inputCount)
+ while (inputPins.size() > inputCount)
+ removePin(inputPins.remove(inputCount).name);
+ else if (oldInputCount < inputCount)
+ for (int i = oldInputCount; i < inputCount; i++)
+ {
+ // TODO what for more than 24 input pins?
+ Pin pin = new Pin(model, this, String.valueOf((char) ('A' + i)), logicWidth, PinUsage.INPUT, 0,
+ pinDistance / 2 + i * pinDistance);
+ inputPins.add(pin);
+ addPin(pin);
+ }
+ outputPin.setRelPos(width, inputCount * pinDistance / 2);
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground");
+ if (foreground != null)
+ gc.setForeground(foreground);
+ double height = (getPins().size() - 1) * pinDistance;
+ gc.drawRectangle(getPosX(), getPosY(), rectWidth, height);
+ if (isInverted)
+ gc.drawOval(getPosX() + rectWidth, getPosY() + (height - invertedCircleDiam) / 2, invertedCircleDiam, invertedCircleDiam);
+ Font oldFont = gc.getFont();
+ Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle());
+ gc.setFont(labelFont);
+ Point textExtent = gc.textExtent(label);
+ Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
+ if (textColor != null)
+ gc.setForeground(textColor);
+ gc.drawText(label, getPosX() + (rectWidth - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true);
+ gc.setFont(oldFont);
+ }
+
+ // serializing
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return id;
+ }
+
+ /**
+ * {@link SimpleRectangularModelGate}s implementation returns a {@link JsonPrimitive} of type int containing the {@link #logicWidth} of
+ * this component.
+ *
+ * @see ModelComponent#getParamsForSerializing()
+ */
+ @Override
+ public Integer getParamsForSerializing(IdentifyParams idParams)
+ {
+ return logicWidth;
+ }
+}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.model.components.atomic;
-
-import org.eclipse.swt.graphics.Color;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.modeladapter.componentadapters.NoLogicAdapter;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.preferences.Preferences;
-
-//TODO clean size calculation mess
-public class TextComponent extends GUIComponent
-{
- private final String text;
- private boolean calculatedSize;
-
- public TextComponent(ViewModelModifiable model, String text)
- {
- this(model, text, null);
- }
-
- public TextComponent(ViewModelModifiable model, String text, String name)
- {
- super(model, name);
- this.text = text;
- // If size is unset, it defaults to 0, which could prohibit this component from being rendered, which would prohibit the size being
- // set to a better guess
- setSize(1, 1);
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- if (!calculatedSize)
- {
- calculatedSize = true;
- Point textExtent = gc.textExtent(text);
- setSize(textExtent.x, textExtent.y);
- }
-
- Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
- if (textColor != null)
- gc.setForeground(textColor);
- gc.drawText(text, getPosX(), getPosY(), true);
- }
-
- // serializing
-
- @Override
- public String getParamsForSerializing(IdentifierGetter idGetter)
- {
- return text;
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new NoLogicAdapter<>(TextComponent.class));
- IndirectGUIComponentCreator.setComponentSupplier(TextComponent.class.getName(),
- (m, p, n) -> new TextComponent(m, p.getAsString(), n));
- }
-}
import java.util.HashSet;
import java.util.List;
-import net.mograsim.logic.model.model.ViewModelModifiable;
+import net.mograsim.logic.model.model.LogicModelModifiable;
import net.mograsim.logic.model.model.wires.MovablePin;
import net.mograsim.logic.model.model.wires.Pin;
import net.mograsim.logic.model.model.wires.PinUsage;
private final List<String> outputPinNames;
private final List<String> outputPinNamesUnmodifiable;
- public SimpleRectangularSubmodelComponent(ViewModelModifiable model, int logicWidth, String label)
+ public SimpleRectangularSubmodelComponent(LogicModelModifiable model, int logicWidth, String label)
{
this(model, logicWidth, label, null);
}
- public SimpleRectangularSubmodelComponent(ViewModelModifiable model, int logicWidth, String label, String name)
+ public SimpleRectangularSubmodelComponent(LogicModelModifiable model, int logicWidth, String label, String name)
{
- super(model, name);
+ this(model, logicWidth, label, name, true);
+ }
+
+ protected SimpleRectangularSubmodelComponent(LogicModelModifiable model, int logicWidth, String label, String name, boolean callInit)
+ {
+ super(model, name, false);
this.label = label;
this.logicWidth = logicWidth;
this.inputPinNames = new ArrayList<>();
rendererParams.pinLabelMargin = pinNameMargin;
setSymbolRenderer(new SimpleRectangularLikeSymbolRenderer(this, rendererParams));
setOutlineRenderer(new DefaultOutlineRenderer(this));
+
+ if (callInit)
+ init();
}
protected void setInputPins(String... pinNames)
String pinName = newPinNames[i];
int oldPinIndex = pinNamesListThisSide.indexOf(pinName);
if (oldPinIndex == -1)
- super.addSubmodelInterface(new MovablePin(this, pinName, logicWidth, usage, relX, pinDistance / 2 + i * pinDistance));
+ super.addSubmodelInterface(
+ new MovablePin(model, this, pinName, logicWidth, usage, relX, pinDistance / 2 + i * pinDistance));
else
getSupermodelMovablePin(pinName).setRelPos(relX, pinDistance / 2 + i * pinDistance);
}
import net.haspamelodica.swt.helper.gcs.TranslatedGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
import net.mograsim.logic.model.LogicUIRenderer;
-import net.mograsim.logic.model.model.ViewModel;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.LogicModel;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.wires.MovablePin;
import net.mograsim.logic.model.model.wires.Pin;
import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
import net.mograsim.logic.model.serializing.SubmodelComponentParams;
import net.mograsim.logic.model.serializing.SubmodelComponentSerializer;
import net.mograsim.logic.model.snippets.Renderer;
import net.mograsim.preferences.Preferences;
/**
- * A {@link GUIComponent} consisting of another model. A <code>SubmodelComponent</code> can have so-called "interface pins" connecting the
+ * A {@link ModelComponent} consisting of another model. A <code>SubmodelComponent</code> can have so-called "interface pins" connecting the
* inner and outer models.
*/
-public abstract class SubmodelComponent extends GUIComponent
+public abstract class SubmodelComponent extends ModelComponent
{
public static final String SUBMODEL_INTERFACE_NAME = "_submodelinterface";
/**
* A modifiable view of {@link #submodel}.
*/
- protected final ViewModelModifiable submodelModifiable;
+ protected final LogicModelModifiable submodelModifiable;
/**
* The model this {@link SubmodelComponent} consists of.
*/
- public final ViewModel submodel;
+ public final LogicModel submodel;
/**
* The list of all submodel interface pins of this {@link SubmodelComponent} on the submodel side.
*/
// creation and destruction
- public SubmodelComponent(ViewModelModifiable model, String name)
+ public SubmodelComponent(LogicModelModifiable model, String name)
{
- super(model, name);
- this.submodelModifiable = new ViewModelModifiable();
+ this(model, name, true);
+ }
+
+ protected SubmodelComponent(LogicModelModifiable model, String name, boolean callInit)
+ {
+ super(model, name, false);
+ this.submodelModifiable = new LogicModelModifiable();
this.submodel = submodelModifiable;
this.submodelPins = new HashMap<>();
this.submodelMovablePinsUnmodifiable = Collections.unmodifiableMap(submodelPins);
this.supermodelPins = new HashMap<>();
this.supermodelMovablePinsUnmodifiable = Collections.unmodifiableMap(supermodelPins);
this.supermodelUnmovablePinsUnmodifiable = Collections.unmodifiableMap(supermodelPins);
- this.submodelInterface = new SubmodelInterface(submodelModifiable, SUBMODEL_INTERFACE_NAME);
+ this.submodelInterface = new SubmodelInterface(submodelModifiable);
this.submodelScale = 1;
this.maxVisibleRegionFillRatioForAlpha0 = 0.8;
model.removeRedrawHandlerChangedListener(redrawHandlerChangedListener);
});
submodelModifiable.setRedrawHandler(model.getRedrawHandler());
+
+ if (callInit)
+ init();
}
// pins
default:
throw new IllegalArgumentException("Unknown enum constant: " + supermodelPin.usage);
}
- MovablePin submodelPin = new MovablePin(submodelInterface, name, supermodelPin.logicWidth, submodelPinUsage,
+ MovablePin submodelPin = new MovablePin(model, submodelInterface, name, supermodelPin.logicWidth, submodelPinUsage,
supermodelPin.getRelX() / submodelScale, supermodelPin.getRelY() / submodelScale);
submodelPin.addPinMovedListener(p ->
{
double scaledX = (x - getPosX()) / submodelScale;
double scaledY = (y - getPosY()) / submodelScale;
- for (GUIComponent component : submodel.getComponentsByName().values())
+ for (ModelComponent component : submodel.getComponentsByName().values())
if (component.getBounds().contains(scaledX, scaledY) && component.clicked(scaledX, scaledY))
return true;
return false;
// serializing
+ /**
+ * {@link SubmodelComponent}'s implementation of {@link ModelComponent#getIDForSerializing(IdentifyParams)} returns "submodel". It is
+ * recommended to override this behaviour.
+ *
+ * @see ModelComponent#getIDForSerializing(IdentifyParams)
+ * @see ModelComponent#getParamsForSerializing(IdentifyParams)
+ */
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "submodel";// TODO what ID?
+ }
+
+ /**
+ * {@link SubmodelComponent}'s implementation of {@link ModelComponent#getParamsForSerializing(IdentifyParams)} returns an instance of
+ * {@link SubmodelComponentParams}. It is recommended to override this behaviour.
+ *
+ * @see ModelComponent#getIDForSerializing(IdentifyParams)
+ * @see ModelComponent#getParamsForSerializing(IdentifyParams)
+ */
@Override
- public SubmodelComponentParams getParamsForSerializing(IdentifierGetter idGetter)
+ public Object getParamsForSerializing(IdentifyParams idParams)
{
- return SubmodelComponentSerializer.serialize(this, idGetter);
+ return SubmodelComponentSerializer.serialize(this, idParams);
}
// operations no longer supported
static
{
- IndirectGUIComponentCreator.setComponentSupplier(SubmodelComponent.class.getCanonicalName(),
+ IndirectModelComponentCreator.setComponentSupplier(SubmodelComponent.class.getCanonicalName(),
(m, p, n) -> SubmodelComponentSerializer.deserialize(m, JsonHandler.fromJsonTree(p, SubmodelComponentParams.class), n));
}
}
\ No newline at end of file
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.serializing.IdentifyParams;
-public class SubmodelInterface extends GUIComponent
+public class SubmodelInterface extends ModelComponent
{
- public SubmodelInterface(ViewModelModifiable model, String name)
+ public SubmodelInterface(LogicModelModifiable model)
{
- super(model, name);
+ super(model, SubmodelComponent.SUBMODEL_INTERFACE_NAME, true);
}
@Override
{// nothing to do here
}
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ throw new UnsupportedOperationException("A SubmodelInterface can't be serialized. Use SubmodelComponent.addSubmodelInterface");
+ }
+
/**
* {@inheritDoc}<br>
* This method is only marked public in {@link SubmodelInterface} for {@link SubmodelComponent} to be able to add / remove pins to /
* from a SubmodelInterface.<br>
*
- * @see GUIComponent#removePin(Pin)
+ * @see ModelComponent#removePin(Pin)
*
* @author Daniel Kirschten
*/
* This method is only marked public in {@link SubmodelInterface} for {@link SubmodelComponent} to be able to add / remove pins to /
* from a SubmodelInterface.<br>
*
- * @see GUIComponent#removePin(Pin)
+ * @see ModelComponent#removePin(Pin)
*
* @author Daniel Kirschten
*/
+++ /dev/null
-package net.mograsim.logic.model.model.wires;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Consumer;
-
-import org.eclipse.swt.SWT;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.types.BitVectorFormatter;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.preferences.ColorDefinition;
-import net.mograsim.preferences.ColorManager;
-import net.mograsim.preferences.Preferences;
-
-/**
- * A wire connecting exactly two {@link Pin}s.
- *
- * @author Daniel Kirschten
- */
-public class GUIWire
-{
- /**
- * The model this wire is a part of.
- */
- private final ViewModelModifiable model;
- /**
- * The name of this wire. Is unique for all wires in its model.
- */
- public final String name;
- /**
- * The logical width of this wire. Is equal to the logical with of {@link #pin1} and {@link #pin2}.
- */
- public final int logicWidth;
- /**
- * The {@link Pin} on one side of this wire, usually the signal source.
- */
- private Pin pin1;
- /**
- * The {@link Pin} on one side of this wire, usually the signal target.
- */
- private Pin pin2;
- /**
- * The user-defined path between {@link #pin1} and {@link #pin2}.<br>
- * Special cases: <code>null</code> means "choose an interpolation as fits", and an empty array means "direct connection without any
- * interpolation".
- */
- private Point[] path;
- /**
- * The bounds of this wire, excluding line width (and line joins, if the line join is {@link SWT#JOIN_MITER})
- */
- private final Rectangle bounds;
- /**
- * The effective path of this wire, including automatic interpolation and the position of both {@link Pin}s. Is never null.
- */
- private double[] effectivePath;
-
- private final List<Consumer<GUIWire>> pathChangedListeners;
-
- /**
- * A LogicObserver calling redrawListeners. Used for logic model bindings.
- */
- private final LogicObserver logicObs;
- /**
- * A ReadEnd of the logic wire this GUI wire currently is bound to.
- */
- private ReadEnd end;
-
- // creation and destruction
-
- /**
- * Creates a new {@link GUIWire} with automatic interpolation and using the default name.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2)
- {
- this(model, null, pin1, pin2);
- }
-
- /**
- * Creates a new {@link GUIWire} with automatic interpolation and using the default name.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2)
- {
- this(model, null, pin1, pin2);
- }
-
- /**
- * Creates a new {@link GUIWire} with automatic interpolation and using the default name.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2)
- {
- this(model, null, pin1, pin2);
- }
-
- /**
- * Creates a new {@link GUIWire} with automatic interpolation and using the default name.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2)
- {
- this(model, null, pin1, pin2);
- }
-
- /**
- * Creates a new {@link GUIWire} without automatic interpolation and using the default name.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2, Point... path)
- {
- this(model, null, pin1, pin2, path);
- }
-
- /**
- * Creates a new {@link GUIWire} without automatic interpolation and using the default name.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2, Point... path)
- {
- this(model, null, pin1, pin2, path);
- }
-
- /**
- * Creates a new {@link GUIWire} without automatic interpolation and using the default name.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2, Point... path)
- {
- this(model, null, pin1, pin2, path);
- }
-
- /**
- * Creates a new {@link GUIWire} without automatic interpolation and using the default name.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2, Point... path)
- {
- this(model, null, pin1, pin2, path);
- }
-
- /**
- * Creates a new {@link GUIWire} with automatic interpolation.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, String name, WireCrossPoint pin1, WireCrossPoint pin2)
- {
- this(model, name, pin1, pin2, (Point[]) null);
- }
-
- /**
- * Creates a new {@link GUIWire} with automatic interpolation.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, String name, WireCrossPoint pin1, Pin pin2)
- {
- this(model, name, pin1, pin2, (Point[]) null);
- }
-
- /**
- * Creates a new {@link GUIWire} with automatic interpolation.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, String name, Pin pin1, WireCrossPoint pin2)
- {
- this(model, name, pin1, pin2, (Point[]) null);
- }
-
- /**
- * Creates a new {@link GUIWire} with automatic interpolation.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, String name, Pin pin1, Pin pin2)
- {
- this(model, name, pin1, pin2, (Point[]) null);
- }
-
- /**
- * Creates a new {@link GUIWire} without automatic interpolation.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, String name, WireCrossPoint pin1, WireCrossPoint pin2, Point... path)
- {
- this(model, name, pin1.getPin(), pin2.getPin(), path);
- }
-
- /**
- * Creates a new {@link GUIWire} without automatic interpolation.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, String name, WireCrossPoint pin1, Pin pin2, Point... path)
- {
- this(model, name, pin1.getPin(), pin2, path);
- }
-
- /**
- * Creates a new {@link GUIWire} without automatic interpolation.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, String name, Pin pin1, WireCrossPoint pin2, Point... path)
- {
- this(model, name, pin1, pin2.getPin(), path);
- }
-
- /**
- * Creates a new {@link GUIWire} without automatic interpolation.
- *
- * @author Daniel Kirschten
- */
- public GUIWire(ViewModelModifiable model, String name, Pin pin1, Pin pin2, Point... path)
- {
- this.model = model;
- this.name = name == null ? model.getDefaultWireName() : name;
- this.logicWidth = pin1.logicWidth;
- if (pin2.logicWidth != pin1.logicWidth)
- throw new IllegalArgumentException("Can't connect pins of different logic width");
-
- this.pin1 = pin1;
- this.pin2 = pin2;
-
- this.path = path == null ? null : Arrays.copyOf(path, path.length);
- this.bounds = new Rectangle(0, 0, -1, -1);
-
- pathChangedListeners = new ArrayList<>();
-
- logicObs = (i) -> model.requestRedraw();
-
- pin1.addPinMovedListener(p -> pinMoved());
- pin2.addPinMovedListener(p -> pinMoved());
-
- recalculateEffectivePath();
-
- model.wireCreated(this, this::destroyed);
- }
-
- /**
- * Destroys this wire. This method is called from {@link ViewModelModifiable#wireDestroyed(GUIWire) wireDestroyed()} of the model this
- * wire is a part of.
- *
- * @author Daniel Kirschten
- */
- private void destroyed()
- {
- // nothing to do
- }
-
- // pins
-
- /**
- * Returns the {@link Pin} on one side of this wire, usually the signal source.
- *
- * @author Daniel Kirschten
- */
- public Pin getPin1()
- {
- return pin1;
- }
-
- /**
- * Returns the {@link Pin} on one side of this wire, usually the signal target.
- *
- * @author Daniel Kirschten
- */
- public Pin getPin2()
- {
- return pin2;
- }
-
- /**
- * Called when {@link #pin1} or {@link #pin2} were moved.
- *
- * @author Daniel Kirschten
- */
- private void pinMoved()
- {
- recalculateEffectivePath();
- model.requestRedraw();
- }
-
- // "graphical" operations
-
- /**
- * Recalculates {@link #effectivePath} "from scratch". Also updates {@link #bounds}.
- *
- * @author Daniel Kirschten
- */
- private void recalculateEffectivePath()
- {
- Point pos1 = pin1.getPos(), pos2 = pin2.getPos();
-
- double boundsX1 = Math.min(pos1.x, pos2.x);
- double boundsY1 = Math.min(pos1.y, pos2.y);
- double boundsX2 = Math.max(pos1.x, pos2.x);
- double boundsY2 = Math.max(pos1.y, pos2.y);
-
- if (path == null)
- effectivePath = new double[] { pos1.x, pos1.y, (pos1.x + pos2.x) / 2, pos1.y, (pos1.x + pos2.x) / 2, pos2.y, pos2.x, pos2.y };
- else
- {
- effectivePath = new double[path.length * 2 + 4];
- effectivePath[0] = pos1.x;
- effectivePath[1] = pos1.y;
- for (int srcI = 0, dstI = 2; srcI < path.length; srcI++, dstI += 2)
- {
- double pathX = path[srcI].x;
- double pathY = path[srcI].y;
- effectivePath[dstI + 0] = pathX;
- effectivePath[dstI + 1] = pathY;
- if (pathX < boundsX1)
- boundsX1 = pathX;
- if (pathX > boundsX2)
- boundsX2 = pathX;
- if (pathY < boundsY1)
- boundsY1 = pathY;
- if (pathY > boundsY2)
- boundsY2 = pathY;
- }
- effectivePath[effectivePath.length - 2] = pos2.x;
- effectivePath[effectivePath.length - 1] = pos2.y;
- }
-
- bounds.x = boundsX1;
- bounds.y = boundsY1;
- bounds.width = boundsX2 - boundsX1;
- bounds.height = boundsY2 - boundsY1;
- }
-
- /**
- * Returns the bounds of this wire, excluding line width (and line joins, if the line join is {@link SWT#JOIN_MITER})
- *
- * @author Daniel Kirschten
- */
- public Rectangle getBounds()
- {
- return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height);
- }
-
- /**
- * Render this wire to the given gc, in absoulute coordinates.
- *
- * @author Daniel Kirschten
- */
- public void render(GeneralGC gc)
- {
- ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end);
- if (wireColor != null)
- gc.setForeground(ColorManager.current().toColor(wireColor));
- gc.setLineWidth(
- Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire." + (logicWidth == 1 ? "singlebit" : "multibit")));
- gc.drawPolyline(effectivePath);
- gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.default"));
- }
-
- // operations concerning the path
-
- /**
- * The user-defined path between {@link #pin1} and {@link #pin2}. Note that this is not neccessarily equal to the effective path drawn
- * in {@link #render(GeneralGC)}.<br>
- * Special cases: <code>null</code> means "choose an interpolation as fits", and an empty array means "direct connection without any
- * interpolation".
- *
- * @author Daniel Kirschten
- */
- public Point[] getPath()
- {
- return deepPathCopy(path);
- }
-
- public void setPath(Point... path)
- {
- this.path = deepPathCopy(path);
- recalculateEffectivePath();
- callPathChangedListeners();
- model.requestRedraw();
- }
-
- public Point getPathPoint(int index)
- {
- return pointCopy(path[index]);
- }
-
- public void setPathPoint(Point p, int index)
- {
- path[index] = pointCopy(p);
- recalculateEffectivePath();
- callPathChangedListeners();
- model.requestRedraw();
- }
-
- public void insertPathPoint(Point p, int index)
- {
- if (path == null)
- path = new Point[] { pointCopy(p) };
- else
- {
- Point[] oldPath = path;
- path = new Point[oldPath.length + 1];
- System.arraycopy(oldPath, 0, path, 0, index);
- if (index < oldPath.length)
- System.arraycopy(oldPath, index, path, index + 1, oldPath.length - index);
- path[index] = pointCopy(p);
- }
- recalculateEffectivePath();
- callPathChangedListeners();
- }
-
- public void removePathPoint(int index)
- {
- if (path.length == 0)
- path = null;
- else
- {
- Point[] oldPath = path;
- path = new Point[oldPath.length - 1];
- System.arraycopy(oldPath, 0, path, 0, index);
- if (index < oldPath.length - 1)
- System.arraycopy(oldPath, index + 1, path, index, oldPath.length - index - 1);
- }
- recalculateEffectivePath();
- callPathChangedListeners();
- }
-
- public double[] getEffectivePath()
- {
- return Arrays.copyOf(effectivePath, effectivePath.length);
- }
-
- private static Point[] deepPathCopy(Point[] path)
- {
- if (path == null)
- return null;
- Point[] copy = new Point[path.length];
- for (int i = 0; i < path.length; i++)
- copy[i] = pointCopy(path[i]);
- return copy;
- }
-
- private static Point pointCopy(Point p)
- {
- return new Point(p.x, p.y);
- }
-
- // logic model binding
-
- /**
- * Binds this {@link GUIWire} to the given {@link ReadEnd}: The color of this {@link GUIWire} will now depend on the state of the given
- * {@link ReadEnd}, and further changes of the given {@link ReadEnd} will result in readrawListeners being called.<br>
- * The argument can be null, in which case the old binding is stopped.
- *
- * @author Daniel Kirschten
- */
- public void setLogicModelBinding(ReadEnd end)
- {
- if (this.end != null)
- this.end.deregisterObserver(logicObs);
- this.end = end;
- if (end != null)
- end.registerObserver(logicObs);
- }
-
- /**
- * Returns whether this {@link GUIWire} has a logic model binding or not.
- *
- * @author Daniel Kirschten
- */
- public boolean hasLogicModelBinding()
- {
- return end != null;
- }
-
- /**
- * If this {@link GUIWire} has a logic model binding, delegates to {@link Wire#forceValues(BitVector)} for the {@link Wire}
- * corresponding to this {@link GUIWire}.
- *
- * @author Daniel Kirschten
- */
- public void forceWireValues(BitVector values)
- {
- end.getWire().forceValues(values);
- }
-
- /**
- * If this {@link GUIWire} has a logic model binding, delegates to {@link ReadEnd#getValues()} for the {@link ReadEnd} corresponding to
- * this {@link GUIWire}.
- *
- * @author Daniel Kirschten
- */
- public BitVector getWireValues()
- {
- return end.getValues();
- }
-
- // listeners
-
- // @formatter:off
- public void addPathChangedListener (Consumer<GUIWire> listener) {pathChangedListeners.add (listener);}
-
- public void removePathChangedListener(Consumer<GUIWire> listener) {pathChangedListeners.remove(listener);}
-
- private void callPathChangedListeners() {pathChangedListeners.forEach(l -> l.accept(this));}
- // @formatter:on
-
- @Override
- public String toString()
- {
- return "GUIWire [" + pin1 + "---" + pin2 + ", value=" + (end == null ? "null" : end.getValues()) + "]";
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.wires;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Consumer;
+
+import org.eclipse.swt.SWT;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.core.types.BitVectorFormatter;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.preferences.ColorDefinition;
+import net.mograsim.preferences.ColorManager;
+import net.mograsim.preferences.Preferences;
+
+/**
+ * A wire connecting exactly two {@link Pin}s.
+ *
+ * @author Daniel Kirschten
+ */
+public class ModelWire
+{
+ /**
+ * The model this wire is a part of.
+ */
+ private final LogicModelModifiable model;
+ /**
+ * The name of this wire. Is unique for all wires in its model.
+ */
+ public final String name;
+ /**
+ * The logical width of this wire. Is equal to the logical width of {@link #pin1} and {@link #pin2}.
+ */
+ public final int logicWidth;
+ /**
+ * The {@link Pin} on one side of this wire, usually the signal source.
+ */
+ private Pin pin1;
+ /**
+ * The {@link Pin} on one side of this wire, usually the signal target.
+ */
+ private Pin pin2;
+ /**
+ * The user-defined path between {@link #pin1} and {@link #pin2}.<br>
+ * Special cases: <code>null</code> means "choose an interpolation as fits", and an empty array means "direct connection without any
+ * interpolation".
+ */
+ private Point[] path;
+ /**
+ * The bounds of this wire, excluding line width (and line joins, if the line join is {@link SWT#JOIN_MITER})
+ */
+ private final Rectangle bounds;
+ /**
+ * The effective path of this wire, including automatic interpolation and the position of both {@link Pin}s. Is never null.
+ */
+ private double[] effectivePath;
+
+ private final List<Consumer<ModelWire>> pathChangedListeners;
+
+ /**
+ * A LogicObserver calling redrawListeners. Used for core model bindings.
+ */
+ private final LogicObserver logicObs;
+ /**
+ * A ReadEnd of the core wire this model wire currently is bound to.
+ */
+ private ReadEnd end;
+
+ // creation and destruction
+
+ /**
+ * Creates a new {@link ModelWire} with automatic interpolation and using the default name.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, ModelWireCrossPoint pin1, ModelWireCrossPoint pin2)
+ {
+ this(model, null, pin1, pin2);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} with automatic interpolation and using the default name.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, ModelWireCrossPoint pin1, Pin pin2)
+ {
+ this(model, null, pin1, pin2);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} with automatic interpolation and using the default name.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, Pin pin1, ModelWireCrossPoint pin2)
+ {
+ this(model, null, pin1, pin2);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} with automatic interpolation and using the default name.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, Pin pin1, Pin pin2)
+ {
+ this(model, null, pin1, pin2);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} without automatic interpolation and using the default name.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, ModelWireCrossPoint pin1, ModelWireCrossPoint pin2, Point... path)
+ {
+ this(model, null, pin1, pin2, path);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} without automatic interpolation and using the default name.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, ModelWireCrossPoint pin1, Pin pin2, Point... path)
+ {
+ this(model, null, pin1, pin2, path);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} without automatic interpolation and using the default name.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, Pin pin1, ModelWireCrossPoint pin2, Point... path)
+ {
+ this(model, null, pin1, pin2, path);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} without automatic interpolation and using the default name.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, Pin pin1, Pin pin2, Point... path)
+ {
+ this(model, null, pin1, pin2, path);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} with automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, String name, ModelWireCrossPoint pin1, ModelWireCrossPoint pin2)
+ {
+ this(model, name, pin1, pin2, (Point[]) null);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} with automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, String name, ModelWireCrossPoint pin1, Pin pin2)
+ {
+ this(model, name, pin1, pin2, (Point[]) null);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} with automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, String name, Pin pin1, ModelWireCrossPoint pin2)
+ {
+ this(model, name, pin1, pin2, (Point[]) null);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} with automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, String name, Pin pin1, Pin pin2)
+ {
+ this(model, name, pin1, pin2, (Point[]) null);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} without automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, String name, ModelWireCrossPoint pin1, ModelWireCrossPoint pin2, Point... path)
+ {
+ this(model, name, pin1.getPin(), pin2.getPin(), path);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} without automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, String name, ModelWireCrossPoint pin1, Pin pin2, Point... path)
+ {
+ this(model, name, pin1.getPin(), pin2, path);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} without automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, String name, Pin pin1, ModelWireCrossPoint pin2, Point... path)
+ {
+ this(model, name, pin1, pin2.getPin(), path);
+ }
+
+ /**
+ * Creates a new {@link ModelWire} without automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public ModelWire(LogicModelModifiable model, String name, Pin pin1, Pin pin2, Point... path)
+ {
+ this.model = model;
+ this.name = name == null ? model.getDefaultWireName() : name;
+ this.logicWidth = pin1.logicWidth;
+ if (pin2.logicWidth != pin1.logicWidth)
+ throw new IllegalArgumentException("Can't connect pins of different logic width");
+
+ this.pin1 = pin1;
+ this.pin2 = pin2;
+
+ this.path = path == null ? null : Arrays.copyOf(path, path.length);
+ this.bounds = new Rectangle(0, 0, -1, -1);
+
+ pathChangedListeners = new ArrayList<>();
+
+ logicObs = (i) -> model.requestRedraw();
+
+ pin1.addPinMovedListener(p -> pinMoved());
+ pin2.addPinMovedListener(p -> pinMoved());
+
+ recalculateEffectivePath();
+
+ model.wireCreated(this, this::destroyed);
+ }
+
+ /**
+ * Destroys this wire. This method is called from {@link LogicModelModifiable#wireDestroyed(ModelWire) wireDestroyed()} of the model this
+ * wire is a part of.
+ *
+ * @author Daniel Kirschten
+ */
+ private void destroyed()
+ {
+ // nothing to do
+ }
+
+ // pins
+
+ /**
+ * Returns the {@link Pin} on one side of this wire, usually the signal source.
+ *
+ * @author Daniel Kirschten
+ */
+ public Pin getPin1()
+ {
+ return pin1;
+ }
+
+ /**
+ * Returns the {@link Pin} on one side of this wire, usually the signal target.
+ *
+ * @author Daniel Kirschten
+ */
+ public Pin getPin2()
+ {
+ return pin2;
+ }
+
+ /**
+ * Called when {@link #pin1} or {@link #pin2} were moved.
+ *
+ * @author Daniel Kirschten
+ */
+ private void pinMoved()
+ {
+ recalculateEffectivePath();
+ model.requestRedraw();
+ }
+
+ // "graphical" operations
+
+ /**
+ * Recalculates {@link #effectivePath} "from scratch". Also updates {@link #bounds}.
+ *
+ * @author Daniel Kirschten
+ */
+ private void recalculateEffectivePath()
+ {
+ Point pos1 = pin1.getPos(), pos2 = pin2.getPos();
+
+ double boundsX1 = Math.min(pos1.x, pos2.x);
+ double boundsY1 = Math.min(pos1.y, pos2.y);
+ double boundsX2 = Math.max(pos1.x, pos2.x);
+ double boundsY2 = Math.max(pos1.y, pos2.y);
+
+ if (path == null)
+ effectivePath = new double[] { pos1.x, pos1.y, (pos1.x + pos2.x) / 2, pos1.y, (pos1.x + pos2.x) / 2, pos2.y, pos2.x, pos2.y };
+ else
+ {
+ effectivePath = new double[path.length * 2 + 4];
+ effectivePath[0] = pos1.x;
+ effectivePath[1] = pos1.y;
+ for (int srcI = 0, dstI = 2; srcI < path.length; srcI++, dstI += 2)
+ {
+ double pathX = path[srcI].x;
+ double pathY = path[srcI].y;
+ effectivePath[dstI + 0] = pathX;
+ effectivePath[dstI + 1] = pathY;
+ if (pathX < boundsX1)
+ boundsX1 = pathX;
+ if (pathX > boundsX2)
+ boundsX2 = pathX;
+ if (pathY < boundsY1)
+ boundsY1 = pathY;
+ if (pathY > boundsY2)
+ boundsY2 = pathY;
+ }
+ effectivePath[effectivePath.length - 2] = pos2.x;
+ effectivePath[effectivePath.length - 1] = pos2.y;
+ }
+
+ bounds.x = boundsX1;
+ bounds.y = boundsY1;
+ bounds.width = boundsX2 - boundsX1;
+ bounds.height = boundsY2 - boundsY1;
+ }
+
+ /**
+ * Returns the bounds of this wire, excluding line width (and line joins, if the line join is {@link SWT#JOIN_MITER})
+ *
+ * @author Daniel Kirschten
+ */
+ public Rectangle getBounds()
+ {
+ return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height);
+ }
+
+ /**
+ * Render this wire to the given gc, in absoulute coordinates.
+ *
+ * @author Daniel Kirschten
+ */
+ public void render(GeneralGC gc)
+ {
+ ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end);
+ if (wireColor != null)
+ gc.setForeground(ColorManager.current().toColor(wireColor));
+ gc.setLineWidth(
+ Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire." + (logicWidth == 1 ? "singlebit" : "multibit")));
+ gc.drawPolyline(effectivePath);
+ gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.default"));
+ }
+
+ // operations concerning the path
+
+ /**
+ * The user-defined path between {@link #pin1} and {@link #pin2}. Note that this is not neccessarily equal to the effective path drawn
+ * in {@link #render(GeneralGC)}.<br>
+ * Special cases: <code>null</code> means "choose an interpolation as fits", and an empty array means "direct connection without any
+ * interpolation".
+ *
+ * @author Daniel Kirschten
+ */
+ public Point[] getPath()
+ {
+ return deepPathCopy(path);
+ }
+
+ public void setPath(Point... path)
+ {
+ this.path = deepPathCopy(path);
+ recalculateEffectivePath();
+ callPathChangedListeners();
+ model.requestRedraw();
+ }
+
+ public Point getPathPoint(int index)
+ {
+ return pointCopy(path[index]);
+ }
+
+ public void setPathPoint(Point p, int index)
+ {
+ path[index] = pointCopy(p);
+ recalculateEffectivePath();
+ callPathChangedListeners();
+ model.requestRedraw();
+ }
+
+ public void insertPathPoint(Point p, int index)
+ {
+ if (path == null)
+ path = new Point[] { pointCopy(p) };
+ else
+ {
+ Point[] oldPath = path;
+ path = new Point[oldPath.length + 1];
+ System.arraycopy(oldPath, 0, path, 0, index);
+ if (index < oldPath.length)
+ System.arraycopy(oldPath, index, path, index + 1, oldPath.length - index);
+ path[index] = pointCopy(p);
+ }
+ recalculateEffectivePath();
+ callPathChangedListeners();
+ }
+
+ public void removePathPoint(int index)
+ {
+ if (path.length == 0)
+ path = null;
+ else
+ {
+ Point[] oldPath = path;
+ path = new Point[oldPath.length - 1];
+ System.arraycopy(oldPath, 0, path, 0, index);
+ if (index < oldPath.length - 1)
+ System.arraycopy(oldPath, index + 1, path, index, oldPath.length - index - 1);
+ }
+ recalculateEffectivePath();
+ callPathChangedListeners();
+ }
+
+ public double[] getEffectivePath()
+ {
+ return Arrays.copyOf(effectivePath, effectivePath.length);
+ }
+
+ private static Point[] deepPathCopy(Point[] path)
+ {
+ if (path == null)
+ return null;
+ Point[] copy = new Point[path.length];
+ for (int i = 0; i < path.length; i++)
+ copy[i] = pointCopy(path[i]);
+ return copy;
+ }
+
+ private static Point pointCopy(Point p)
+ {
+ return new Point(p.x, p.y);
+ }
+
+ // core model binding
+
+ /**
+ * Binds this {@link ModelWire} to the given {@link ReadEnd}: The color of this {@link ModelWire} will now depend on the state of the
+ * given {@link ReadEnd}, and further changes of the given {@link ReadEnd} will result in readrawListeners being called.<br>
+ * The argument can be null, in which case the old binding is stopped.
+ *
+ * @author Daniel Kirschten
+ */
+ public void setCoreModelBinding(ReadEnd end)
+ {
+ if (this.end != null)
+ this.end.deregisterObserver(logicObs);
+ this.end = end;
+ if (end != null)
+ end.registerObserver(logicObs);
+ }
+
+ /**
+ * Returns whether this {@link ModelWire} has a core model binding or not.
+ *
+ * @author Daniel Kirschten
+ */
+ public boolean hasCoreModelBinding()
+ {
+ return end != null;
+ }
+
+ /**
+ * If this {@link ModelWire} has a core model binding, delegates to {@link CoreWire#forceValues(BitVector)} for the {@link CoreWire}
+ * corresponding to this {@link ModelWire}.
+ *
+ * @author Daniel Kirschten
+ */
+ public void forceWireValues(BitVector values)
+ {
+ end.getWire().forceValues(values);
+ }
+
+ /**
+ * If this {@link ModelWire} has a core model binding, delegates to {@link ReadEnd#getValues()} for the {@link ReadEnd} corresponding to
+ * this {@link ModelWire}.
+ *
+ * @author Daniel Kirschten
+ */
+ public BitVector getWireValues()
+ {
+ return end.getValues();
+ }
+
+ // listeners
+
+ // @formatter:off
+ public void addPathChangedListener (Consumer<ModelWire> listener) {pathChangedListeners.add (listener);}
+
+ public void removePathChangedListener(Consumer<ModelWire> listener) {pathChangedListeners.remove(listener);}
+
+ private void callPathChangedListeners() {pathChangedListeners.forEach(l -> l.accept(this));}
+ // @formatter:on
+
+ @Override
+ public String toString()
+ {
+ return "ModelWire [" + pin1 + "---" + pin2 + ", value=" + (end == null ? "null" : end.getValues()) + "]";
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.model.wires;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.types.BitVectorFormatter;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.preferences.ColorDefinition;
+import net.mograsim.preferences.ColorManager;
+
+/**
+ * A {@link ModelComponent} with only one pin. Is used to create wires connecting more than two pins. <br>
+ * Example: There are three pins <code>P1</code>, <code>P2</code>, <code>P3</code> that need to be connected. Solution: Create a
+ * ModelWireCrossPoint (<code>WCP</code>) and create the ModelWires <code>P1</code>-<code>WCP</code>, <code>P2</code>-<code>WCP</code>,
+ * <code>P3</code>-<code>WCP</code>.<br>
+ * Cross points are drawn as circles. The pin of cross points is in the center of this circle.
+ *
+ * @author Daniel Kirschten
+ */
+public class ModelWireCrossPoint extends ModelComponent
+{
+ private static final int CIRCLE_RADIUS = 1;
+ private static final int CIRCLE_DIAM = CIRCLE_RADIUS * 2;
+
+ /**
+ * The logical width of this cross point.
+ */
+ public final int logicWidth;
+ /**
+ * The (single) pin of this cross point.
+ */
+ private final Pin pin;
+
+ /**
+ * A {@link LogicObserver} calling {@link #requestRedraw()}.
+ */
+ private final LogicObserver logicObs;
+ /**
+ * The {@link ReadEnd} currently bound to this cross point.
+ */
+ private ReadEnd end;
+
+ // creation and destruction
+
+ public ModelWireCrossPoint(LogicModelModifiable model, int logicWidth)
+ {
+ this(model, logicWidth, null);
+ }
+
+ public ModelWireCrossPoint(LogicModelModifiable model, int logicWidth, String name)
+ {
+ super(model, name, false);
+ this.logicWidth = logicWidth;
+ logicObs = (i) -> model.requestRedraw();
+
+ setSize(CIRCLE_DIAM, CIRCLE_DIAM);
+ addPin(this.pin = new Pin(model, this, "", logicWidth, PinUsage.TRISTATE, CIRCLE_RADIUS, CIRCLE_RADIUS));
+
+ init();
+ }
+
+ // pins
+
+ public Pin getPin()
+ {
+ return pin;
+ }
+
+ // "graphical" operations
+
+ /**
+ * Moves the center (and therefore the pin) of this {@link ModelWireCrossPoint} to the given location.
+ *
+ * @author Daniel Kirschten
+ */
+ public void moveCenterTo(double x, double y)
+ {
+ moveTo(x - CIRCLE_RADIUS, y - CIRCLE_RADIUS);
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end);
+ if (wireColor != null)
+ gc.setBackground(ColorManager.current().toColor(wireColor));
+ gc.fillOval(getPosX(), getPosY(), CIRCLE_DIAM, CIRCLE_DIAM);
+ }
+
+ // core model binding
+
+ /**
+ * Binds this {@link ModelWireCrossPoint} to the given {@link ReadEnd}: The color of this {@link ModelWireCrossPoint} will now depend on
+ * the state of the given {@link ReadEnd}, and further changes of the given {@link ReadEnd} will result in readrawListeners being
+ * called.<br>
+ * The argument can be null, in which case the old binding is stopped.
+ *
+ * @author Daniel Kirschten
+ */
+ public void setCoreModelBinding(ReadEnd end)
+ {
+ if (this.end != null)
+ this.end.deregisterObserver(logicObs);
+ this.end = end;
+ if (end != null)
+ end.registerObserver(logicObs);
+ }
+
+ /**
+ * Returns whether this {@link ModelWireCrossPoint} has a core model binding or not.
+ */
+ public boolean hasCoreModelBinding()
+ {
+ return end != null;
+ }
+
+ // serializing
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "WireCrossPoint";
+ }
+
+ @Override
+ public Integer getParamsForSerializing(IdentifyParams idParams)
+ {
+ return logicWidth;
+ }
+
+ static
+ {
+ IndirectModelComponentCreator.setComponentSupplier(ModelWireCrossPoint.class.getCanonicalName(),
+ (m, p, n) -> new ModelWireCrossPoint(m, p.getAsInt(), n));
+ }
+}
\ No newline at end of file
package net.mograsim.logic.model.model.wires;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
/**
* Exactly like {@link Pin}, but {@link #setRelPos(double, double) setRelPos(...)} is public.
*/
public class MovablePin extends Pin
{
- public MovablePin(GUIComponent component, String name, int logicWidth, PinUsage usage, double relX, double relY)
+ public MovablePin(LogicModelModifiable model, ModelComponent component, String name, int logicWidth, PinUsage usage, double relX,
+ double relY)
{
- super(component, name, logicWidth, usage, relX, relY);
+ super(model, component, name, logicWidth, usage, relX, relY);
}
@Override
package net.mograsim.logic.model.model.wires;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Objects;
+import java.util.Set;
import java.util.function.Consumer;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
/**
- * A connection interface between a GUIComponent and the rest of a ViewModel. Pins usually are created by {@link GUIComponent}s themselves.
- * <br>
- * A pin has a name identifying it. Pin names are unique for a {@link GUIComponent}: Every pin of a {@link GUIComponent} has a different
- * name, but different {@link GUIComponent}s can have pins with the same name.
+ * A connection interface between a ModelComponent and the rest of a LogicModel. Pins usually are created by {@link ModelComponent}s
+ * themselves. <br>
+ * A pin has a name identifying it. Pin names are unique for a {@link ModelComponent}: Every pin of a {@link ModelComponent} has a different
+ * name, but different {@link ModelComponent}s can have pins with the same name.
*
* @author Daniel Kirschten
*/
public class Pin
{
/**
- * The {@link GUIComponent} this pin belongs to.
+ * The {@link LogicModel} the component this pin belongs to is a part of.
*/
- public final GUIComponent component;
+ private final LogicModelModifiable model;
/**
- * The name identifying this pin. Is unique for a {@link GUIComponent}.
+ * The {@link ModelComponent} this pin belongs to.
+ */
+ public final ModelComponent component;
+ /**
+ * The name identifying this pin. Is unique for a {@link ModelComponent}.
*/
public final String name;
/**
// creation and destruction
/**
- * Creates a new pin. Usually it is not needed to call this constructor manually, as {@link GUIComponent}s create their pins themselves.
+ * Creates a new pin. Usually it is not needed to call this constructor manually, as {@link ModelComponent}s create their pins
+ * themselves.
*
* @author Daniel Kirschten
*/
- public Pin(GUIComponent component, String name, int logicWidth, PinUsage usage, double relX, double relY)
+ public Pin(LogicModelModifiable model, ModelComponent component, String name, int logicWidth, PinUsage usage, double relX, double relY)
{
+ this.model = model;
this.component = component;
this.name = name;
this.logicWidth = logicWidth;
component.addComponentMovedListener(c -> callPinMovedListeners());
}
+ /**
+ * Destroys this pin by removing all wires connected to it from the model the component is a part of.<br>
+ * Don't call this method from application code as it is automatically called in {@link ModelComponent#removePin(String)}.
+ */
+ public void destroyed()
+ {
+ Set<ModelWire> connectedWires = new HashSet<>();
+ for (ModelWire w : model.getWiresByName().values())
+ if (w.getPin1() == this || w.getPin2() == this)
+ connectedWires.add(w);
+ connectedWires.forEach(model::destroyWire);
+ }
+
// "graphical" operations
/**
+++ /dev/null
-package net.mograsim.logic.model.model.wires;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.types.BitVectorFormatter;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.preferences.ColorDefinition;
-import net.mograsim.preferences.ColorManager;
-
-/**
- * A {@link GUIComponent} with only one pin. Is used to create wires connecting more than two pins. <br>
- * Example: There are three pins <code>P1</code>, <code>P2</code>, <code>P3</code> that need to be connected. Solution: Create a
- * WireCrossPoint (<code>WCP</code>) and create the GUIWires <code>P1</code>-<code>WCP</code>, <code>P2</code>-<code>WCP</code>,
- * <code>P3</code>-<code>WCP</code>.<br>
- * Cross points are drawn as circles. The pin of cross points is in the center of this circle.
- *
- * @author Daniel Kirschten
- */
-public class WireCrossPoint extends GUIComponent
-{
- private static final int CIRCLE_RADIUS = 1;
- private static final int CIRCLE_DIAM = CIRCLE_RADIUS * 2;
-
- /**
- * The logical width of this cross point.
- */
- public final int logicWidth;
- /**
- * The (single) pin of this cross point.
- */
- private final Pin pin;
-
- /**
- * A {@link LogicObserver} calling {@link #requestRedraw()}.
- */
- private final LogicObserver logicObs;
- /**
- * The {@link ReadEnd} currently bound to this cross point.
- */
- private ReadEnd end;
-
- // creation and destruction
-
- public WireCrossPoint(ViewModelModifiable model, int logicWidth)
- {
- this(model, logicWidth, null);
- }
-
- public WireCrossPoint(ViewModelModifiable model, int logicWidth, String name)
- {
- super(model, name);
- this.logicWidth = logicWidth;
- logicObs = (i) -> model.requestRedraw();
-
- setSize(CIRCLE_DIAM, CIRCLE_DIAM);
- addPin(this.pin = new Pin(this, "", logicWidth, PinUsage.TRISTATE, CIRCLE_RADIUS, CIRCLE_RADIUS));
- }
-
- // pins
-
- public Pin getPin()
- {
- return pin;
- }
-
- // "graphical" operations
-
- /**
- * Moves the center (and therefore the pin) of this {@link WireCrossPoint} to the given location.
- *
- * @author Daniel Kirschten
- */
- public void moveCenterTo(double x, double y)
- {
- moveTo(x - CIRCLE_RADIUS, y - CIRCLE_RADIUS);
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end);
- if (wireColor != null)
- gc.setBackground(ColorManager.current().toColor(wireColor));
- gc.fillOval(getPosX(), getPosY(), CIRCLE_DIAM, CIRCLE_DIAM);
- }
-
- // logic model binding
-
- /**
- * Binds this {@link WireCrossPoint} to the given {@link ReadEnd}: The color of this {@link WireCrossPoint} will now depend on the state
- * of the given {@link ReadEnd}, and further changes of the given {@link ReadEnd} will result in readrawListeners being called.<br>
- * The argument can be null, in which case the old binding is stopped.
- *
- * @author Daniel Kirschten
- */
- public void setLogicModelBinding(ReadEnd end)
- {
- if (this.end != null)
- this.end.deregisterObserver(logicObs);
- this.end = end;
- if (end != null)
- end.registerObserver(logicObs);
- }
-
- /**
- * Returns whether this {@link WireCrossPoint} has a logic model binding or not.
- */
- public boolean hasLogicModelBinding()
- {
- return end != null;
- }
-
- // serializing
-
- @Override
- public Integer getParamsForSerializing(IdentifierGetter idGetter)
- {
- return logicWidth;
- }
-
- static
- {
- IndirectGUIComponentCreator.setComponentSupplier(WireCrossPoint.class.getCanonicalName(),
- (m, p, n) -> new WireCrossPoint(m, p.getAsInt(), n));
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.modeladapter;
+
+public class CoreModelParameters
+{
+ public int wireTravelTime;
+ public int gateProcessTime;
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.modeladapter;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.model.model.LogicModel;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.model.components.submodels.SubmodelInterface;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.ModelWireCrossPoint;
+import net.mograsim.logic.model.modeladapter.componentadapters.ComponentAdapter;
+
+public class LogicCoreAdapter
+{
+ private final static Map<Class<? extends ModelComponent>, ComponentAdapter<? extends ModelComponent>> componentAdapters = new HashMap<>();
+
+ public static void addComponentAdapter(ComponentAdapter<? extends ModelComponent> componentAdapter)
+ {
+ componentAdapters.put(componentAdapter.getSupportedClass(), componentAdapter);
+ }
+
+ public static Timeline convert(LogicModel logicModel, CoreModelParameters params)
+ {
+ // TODO replace Timeline with CoreModel as soon as it exists
+ Timeline timeline = new Timeline(10);
+
+ convert(logicModel, params, timeline, Map.of());
+
+ return timeline;
+ }
+
+ private static void convert(LogicModel logicModel, CoreModelParameters params, Timeline timeline, Map<Pin, CoreWire> externalWires)
+ {
+ Map<Pin, CoreWire> logicWiresPerPin = convertWires(getAllPins(logicModel), logicModel.getWiresByName().values(), externalWires,
+ params, timeline);
+ Map<Pin, CoreWire> logicWiresPerPinUnmodifiable = Collections.unmodifiableMap(logicWiresPerPin);
+
+ for (ModelComponent modelComp : logicModel.getComponentsByName().values())
+ {
+ if (modelComp instanceof SubmodelComponent)
+ {
+ SubmodelComponent modelCompCasted = (SubmodelComponent) modelComp;
+ Map<String, Pin> supermodelPins = modelCompCasted.getSupermodelPins();
+ Map<Pin, CoreWire> externalWiresForSubmodel = supermodelPins.entrySet().stream().collect(
+ Collectors.toMap(e -> modelCompCasted.getSubmodelPin(e.getKey()), e -> logicWiresPerPin.get(e.getValue())));
+ convert(modelCompCasted.submodel, params, timeline, externalWiresForSubmodel);
+ } else if (modelComp instanceof ModelWireCrossPoint)
+ {
+ ModelWireCrossPoint modelCompCasted = (ModelWireCrossPoint) modelComp;
+ modelCompCasted.setCoreModelBinding(logicWiresPerPin.get(modelCompCasted.getPin()).createReadOnlyEnd());
+ } else if (!(modelComp instanceof SubmodelInterface))// nothing to do for SubmodelInterfaces
+ createAndLinkComponent(timeline, params, modelComp, logicWiresPerPinUnmodifiable);
+ }
+ }
+
+ private static Set<Pin> getAllPins(LogicModel logicModel)
+ {
+ return logicModel.getComponentsByName().values().stream().flatMap(component -> component.getPins().values().stream())
+ .collect(Collectors.toSet());
+ }
+
+ private static Map<Pin, CoreWire> convertWires(Set<Pin> allPins, Collection<ModelWire> wires, Map<Pin, CoreWire> externalWires,
+ CoreModelParameters params, Timeline timeline)
+ {
+ Map<Pin, Set<Pin>> connectedPinGroups = getConnectedPinGroups(allPins, wires);
+ Map<Pin, CoreWire> logicWiresPerPin = createLogicWires(params, timeline, connectedPinGroups, externalWires);
+ setModelWiresCoreModelBinding(wires, logicWiresPerPin);
+ return logicWiresPerPin;
+ }
+
+ private static Map<Pin, CoreWire> createLogicWires(CoreModelParameters params, Timeline timeline, Map<Pin, Set<Pin>> connectedPinGroups,
+ Map<Pin, CoreWire> externalWires)
+ {
+ Map<Pin, CoreWire> logicWiresPerPin = new HashMap<>();
+ Map<Set<Pin>, CoreWire> logicWiresPerPinGroup = new HashMap<>();
+ for (Entry<Pin, Set<Pin>> e : connectedPinGroups.entrySet())
+ logicWiresPerPin.put(e.getKey(), logicWiresPerPinGroup.computeIfAbsent(e.getValue(), set ->
+ {
+ CoreWire externalWire = null;
+ for (Pin p : set)
+ {
+ CoreWire externalWireCandidate = externalWires.get(p);
+ if (externalWireCandidate != null)
+ if (externalWire == null)
+ externalWire = externalWireCandidate;
+ else if (externalWire.width == externalWireCandidate.width)
+ CoreWire.fuse(externalWire, externalWireCandidate);
+ else
+ throw new IllegalArgumentException(
+ "Two pins to external wires with different logicWidths can't be connected directly");
+ }
+ return externalWire == null ? new CoreWire(timeline, e.getKey().logicWidth, params.wireTravelTime) : externalWire;
+ }));
+ return logicWiresPerPin;
+ }
+
+ private static void setModelWiresCoreModelBinding(Collection<ModelWire> wires, Map<Pin, CoreWire> logicWiresPerPin)
+ {
+ Map<CoreWire, ReadEnd> modelWireSharedReadEnd = logicWiresPerPin.values().stream().distinct()
+ .collect(Collectors.toMap(Function.identity(), CoreWire::createReadOnlyEnd));
+ for (ModelWire modelWire : wires)
+ modelWire.setCoreModelBinding(modelWireSharedReadEnd.get(logicWiresPerPin.get(modelWire.getPin1())));
+ }
+
+ private static Map<Pin, Set<Pin>> getConnectedPinGroups(Set<Pin> allPins, Collection<ModelWire> wires)
+ {
+ Map<Pin, Set<Pin>> connectedPinsPerPin = new HashMap<>();
+
+ for (Pin p : allPins)
+ {
+ HashSet<Pin> connectedPins = new HashSet<>();
+ connectedPins.add(p);
+ connectedPinsPerPin.put(p, connectedPins);
+ }
+
+ wires.forEach(wire ->
+ {
+ Pin pin1 = wire.getPin1();
+ Pin pin2 = wire.getPin2();
+
+ Set<Pin> pin1ConnectedPins = connectedPinsPerPin.get(pin1);
+ Set<Pin> pin2ConnectedPins = connectedPinsPerPin.get(pin2);
+
+ pin1ConnectedPins.addAll(pin2ConnectedPins);
+ pin1ConnectedPins.add(pin1);
+ pin1ConnectedPins.add(pin2);
+
+ pin2ConnectedPins.forEach(pin -> connectedPinsPerPin.put(pin, pin1ConnectedPins));
+ });
+ return connectedPinsPerPin;
+ }
+
+ @SuppressWarnings("unchecked")
+ private static <G extends ModelComponent> void createAndLinkComponent(Timeline timeline, CoreModelParameters params,
+ ModelComponent modelComponent, Map<Pin, CoreWire> logicWiresPerPin)
+ {
+ Class<?> cls = modelComponent.getClass();
+ ComponentAdapter<? super G> adapter = null;
+ while (cls != ModelComponent.class && adapter == null)
+ {
+ adapter = (ComponentAdapter<? super G>) componentAdapters.get(cls);
+ cls = cls.getSuperclass();
+ }
+ if (adapter == null)
+ throw new IllegalArgumentException("Unknown component class: " + modelComponent.getClass());
+ adapter.createAndLinkComponent(timeline, params, (G) modelComponent, logicWiresPerPin);
+ }
+
+ private LogicCoreAdapter()
+ {
+ throw new UnsupportedOperationException("No LogicCoreAdapter instances");
+ }
+}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.modeladapter;
-
-public class LogicModelParameters
-{
- public int wireTravelTime;
- public int gateProcessTime;
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.modeladapter;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.model.model.ViewModel;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.model.components.submodels.SubmodelInterface;
-import net.mograsim.logic.model.model.wires.GUIWire;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.WireCrossPoint;
-import net.mograsim.logic.model.modeladapter.componentadapters.ComponentAdapter;
-
-public class ViewLogicModelAdapter
-{
- private final static Map<Class<? extends GUIComponent>, ComponentAdapter<? extends GUIComponent>> componentAdapters = new HashMap<>();
-
- public static void addComponentAdapter(ComponentAdapter<? extends GUIComponent> componentAdapter)
- {
- componentAdapters.put(componentAdapter.getSupportedClass(), componentAdapter);
- }
-
- public static Timeline convert(ViewModel viewModel, LogicModelParameters params)
- {
- // TODO replace Timeline with LogicModel as soon as it exists
- Timeline timeline = new Timeline(10);
-
- convert(viewModel, params, timeline, Map.of());
-
- return timeline;
- }
-
- private static void convert(ViewModel viewModel, LogicModelParameters params, Timeline timeline, Map<Pin, Wire> externalWires)
- {
- Map<Pin, Wire> logicWiresPerPin = convertWires(getAllPins(viewModel), viewModel.getWiresByName().values(), externalWires, params,
- timeline);
- Map<Pin, Wire> logicWiresPerPinUnmodifiable = Collections.unmodifiableMap(logicWiresPerPin);
-
- for (GUIComponent guiComp : viewModel.getComponentsByName().values())
- {
- if (guiComp instanceof SubmodelComponent)
- {
- SubmodelComponent guiCompCasted = (SubmodelComponent) guiComp;
- Map<String, Pin> supermodelPins = guiCompCasted.getSupermodelPins();
- Map<Pin, Wire> externalWiresForSubmodel = supermodelPins.entrySet().stream()
- .collect(Collectors.toMap(e -> guiCompCasted.getSubmodelPin(e.getKey()), e -> logicWiresPerPin.get(e.getValue())));
- convert(guiCompCasted.submodel, params, timeline, externalWiresForSubmodel);
- } else if (guiComp instanceof WireCrossPoint)
- {
- WireCrossPoint guiCompCasted = (WireCrossPoint) guiComp;
- guiCompCasted.setLogicModelBinding(logicWiresPerPin.get(guiCompCasted.getPin()).createReadOnlyEnd());
- } else if (!(guiComp instanceof SubmodelInterface))// nothing to do for SubmodelInterfaces
- createAndLinkComponent(timeline, params, guiComp, logicWiresPerPinUnmodifiable);
- }
- }
-
- private static Set<Pin> getAllPins(ViewModel viewModel)
- {
- return viewModel.getComponentsByName().values().stream().flatMap(component -> component.getPins().values().stream())
- .collect(Collectors.toSet());
- }
-
- private static Map<Pin, Wire> convertWires(Set<Pin> allPins, Collection<GUIWire> wires, Map<Pin, Wire> externalWires,
- LogicModelParameters params, Timeline timeline)
- {
- Map<Pin, Set<Pin>> connectedPinGroups = getConnectedPinGroups(allPins, wires);
- Map<Pin, Wire> logicWiresPerPin = createLogicWires(params, timeline, connectedPinGroups, externalWires);
- setGUIWiresLogicModelBinding(wires, logicWiresPerPin);
- return logicWiresPerPin;
- }
-
- private static Map<Pin, Wire> createLogicWires(LogicModelParameters params, Timeline timeline, Map<Pin, Set<Pin>> connectedPinGroups,
- Map<Pin, Wire> externalWires)
- {
- Map<Pin, Wire> logicWiresPerPin = new HashMap<>();
- Map<Set<Pin>, Wire> logicWiresPerPinGroup = new HashMap<>();
- for (Entry<Pin, Set<Pin>> e : connectedPinGroups.entrySet())
- logicWiresPerPin.put(e.getKey(), logicWiresPerPinGroup.computeIfAbsent(e.getValue(), set ->
- {
- Wire externalWire = null;
- for (Pin p : set)
- {
- Wire externalWireCandidate = externalWires.get(p);
- if (externalWireCandidate != null)
- if (externalWire == null)
- externalWire = externalWireCandidate;
- else if (externalWire.width == externalWireCandidate.width)
- Wire.fuse(externalWire, externalWireCandidate);
- else
- throw new IllegalArgumentException(
- "Two pins to external wires with different logicWidths can't be connected directly");
- }
- return externalWire == null ? new Wire(timeline, e.getKey().logicWidth, params.wireTravelTime) : externalWire;
- }));
- return logicWiresPerPin;
- }
-
- private static void setGUIWiresLogicModelBinding(Collection<GUIWire> wires, Map<Pin, Wire> logicWiresPerPin)
- {
- Map<Wire, ReadEnd> guiWireSharedReadEnd = logicWiresPerPin.values().stream().distinct()
- .collect(Collectors.toMap(Function.identity(), Wire::createReadOnlyEnd));
- for (GUIWire guiWire : wires)
- guiWire.setLogicModelBinding(guiWireSharedReadEnd.get(logicWiresPerPin.get(guiWire.getPin1())));
- }
-
- private static Map<Pin, Set<Pin>> getConnectedPinGroups(Set<Pin> allPins, Collection<GUIWire> wires)
- {
- Map<Pin, Set<Pin>> connectedPinsPerPin = new HashMap<>();
-
- for (Pin p : allPins)
- {
- HashSet<Pin> connectedPins = new HashSet<>();
- connectedPins.add(p);
- connectedPinsPerPin.put(p, connectedPins);
- }
-
- wires.forEach(wire ->
- {
- Pin pin1 = wire.getPin1();
- Pin pin2 = wire.getPin2();
-
- Set<Pin> pin1ConnectedPins = connectedPinsPerPin.get(pin1);
- Set<Pin> pin2ConnectedPins = connectedPinsPerPin.get(pin2);
-
- pin1ConnectedPins.addAll(pin2ConnectedPins);
- pin1ConnectedPins.add(pin1);
- pin1ConnectedPins.add(pin2);
-
- pin2ConnectedPins.forEach(pin -> connectedPinsPerPin.put(pin, pin1ConnectedPins));
- });
- return connectedPinsPerPin;
- }
-
- @SuppressWarnings("unchecked")
- private static <G extends GUIComponent> void createAndLinkComponent(Timeline timeline, LogicModelParameters params,
- GUIComponent guiComponent, Map<Pin, Wire> logicWiresPerPin)
- {
- Class<?> cls = guiComponent.getClass();
- ComponentAdapter<? super G> adapter = null;
- while (cls != GUIComponent.class && adapter == null)
- {
- adapter = (ComponentAdapter<? super G>) componentAdapters.get(cls);
- cls = cls.getSuperclass();
- }
- if (adapter == null)
- throw new IllegalArgumentException("Unknown component class: " + guiComponent.getClass());
- adapter.createAndLinkComponent(timeline, params, (G) guiComponent, logicWiresPerPin);
- }
-
- private ViewLogicModelAdapter()
- {
- throw new UnsupportedOperationException("No ViewLogicModelConverter instances");
- }
-}
\ No newline at end of file
import java.util.Map;
-import net.mograsim.logic.core.components.BitDisplay;
+import net.mograsim.logic.core.components.CoreBitDisplay;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
-public class BitDisplayAdapter implements ComponentAdapter<GUIBitDisplay>
+public class BitDisplayAdapter implements ComponentAdapter<ModelBitDisplay>
{
@Override
- public Class<GUIBitDisplay> getSupportedClass()
+ public Class<ModelBitDisplay> getSupportedClass()
{
- return GUIBitDisplay.class;
+ return ModelBitDisplay.class;
}
@Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIBitDisplay guiComponent,
- Map<Pin, Wire> logicWiresPerPin)
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, ModelBitDisplay modelComponent,
+ Map<Pin, CoreWire> logicWiresPerPin)
{
- ReadEnd end = logicWiresPerPin.get(guiComponent.getInputPin()).createReadOnlyEnd();
- BitDisplay bitDisplay = new BitDisplay(timeline, end);
- guiComponent.setLogicModelBinding(bitDisplay);
+ ReadEnd end = logicWiresPerPin.get(modelComponent.getInputPin()).createReadOnlyEnd();
+ CoreBitDisplay bitDisplay = new CoreBitDisplay(timeline, end);
+ modelComponent.setCoreModelBinding(bitDisplay);
}
}
\ No newline at end of file
import java.util.Map;
-import net.mograsim.logic.core.components.Clock;
+import net.mograsim.logic.core.components.CoreClock;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.components.atomic.GUIClock;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.components.atomic.ModelClock;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
-public class ClockAdapter implements ComponentAdapter<GUIClock>
+public class ClockAdapter implements ComponentAdapter<ModelClock>
{
@Override
- public Class<GUIClock> getSupportedClass()
+ public Class<ModelClock> getSupportedClass()
{
- return GUIClock.class;
+ return ModelClock.class;
}
@Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIClock guiClock, Map<Pin, Wire> logicWiresPerPin)
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, ModelClock modelClock,
+ Map<Pin, CoreWire> logicWiresPerPin)
{
- ReadWriteEnd out = logicWiresPerPin.get(guiClock.getOutputPin()).createReadWriteEnd();
- Clock c = new Clock(timeline, out, guiClock.getDelta());
- guiClock.setLogicModelBinding(c);
+ ReadWriteEnd out = logicWiresPerPin.get(modelClock.getOutputPin()).createReadWriteEnd();
+ CoreClock c = new CoreClock(timeline, out, modelClock.getDelta());
+ modelClock.setCoreModelBinding(c);
}
}
\ No newline at end of file
import java.util.Map;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
-public interface ComponentAdapter<G extends GUIComponent>
+public interface ComponentAdapter<G extends ModelComponent>
{
public Class<G> getSupportedClass();
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, G guiComponent, Map<Pin, Wire> logicWiresPerPin);
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, G modelComponent,
+ Map<Pin, CoreWire> logicWiresPerPin);
}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.modeladapter.componentadapters;
+
+import java.util.Map;
+
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.model.model.components.atomic.ModelFixedOutput;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
+
+public class FixedOutputAdapter implements ComponentAdapter<ModelFixedOutput>
+{
+ @Override
+ public Class<ModelFixedOutput> getSupportedClass()
+ {
+ return ModelFixedOutput.class;
+ }
+
+ @Override
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, ModelFixedOutput modelComponent,
+ Map<Pin, CoreWire> logicWiresPerPin)
+ {
+ logicWiresPerPin.get(modelComponent.getPin("out")).createReadWriteEnd().feedSignals(modelComponent.bits);
+ }
+}
\ No newline at end of file
import java.util.Map;
-import net.mograsim.logic.core.components.ManualSwitch;
+import net.mograsim.logic.core.components.CoreManualSwitch;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
-public class ManualSwitchAdapter implements ComponentAdapter<GUIManualSwitch>
+public class ManualSwitchAdapter implements ComponentAdapter<ModelManualSwitch>
{
@Override
- public Class<GUIManualSwitch> getSupportedClass()
+ public Class<ModelManualSwitch> getSupportedClass()
{
- return GUIManualSwitch.class;
+ return ModelManualSwitch.class;
}
@Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIManualSwitch guiComponent,
- Map<Pin, Wire> logicWiresPerPin)
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, ModelManualSwitch modelComponent,
+ Map<Pin, CoreWire> logicWiresPerPin)
{
- ReadWriteEnd end = logicWiresPerPin.get(guiComponent.getOutputPin()).createReadWriteEnd();
- ManualSwitch manualSwitch = new ManualSwitch(timeline, end);
- guiComponent.setLogicModelBinding(manualSwitch);
+ ReadWriteEnd end = logicWiresPerPin.get(modelComponent.getOutputPin()).createReadWriteEnd();
+ CoreManualSwitch manualSwitch = new CoreManualSwitch(timeline, end);
+ modelComponent.setCoreModelBinding(manualSwitch);
}
}
\ No newline at end of file
import java.util.Map;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.model.model.components.atomic.GUIMerger;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.model.model.components.atomic.ModelMerger;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
-public class MergerAdapter implements ComponentAdapter<GUIMerger>
+public class MergerAdapter implements ComponentAdapter<ModelMerger>
{
@Override
- public Class<GUIMerger> getSupportedClass()
+ public Class<ModelMerger> getSupportedClass()
{
- return GUIMerger.class;
+ return ModelMerger.class;
}
@Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIMerger guiComponent,
- Map<Pin, Wire> logicWiresPerPin)
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, ModelMerger modelComponent,
+ Map<Pin, CoreWire> logicWiresPerPin)
{
- Wire output = logicWiresPerPin.get(guiComponent.getPin("O"));
- ReadEnd[] inputEnds = new ReadEnd[guiComponent.logicWidth];
- for (int i = 0; i < guiComponent.logicWidth; i++)
+ CoreWire output = logicWiresPerPin.get(modelComponent.getPin("O"));
+ ReadEnd[] inputEnds = new ReadEnd[modelComponent.logicWidth];
+ for (int i = 0; i < modelComponent.logicWidth; i++)
{
- Wire input = logicWiresPerPin.get(guiComponent.getPin("I" + (guiComponent.logicWidth - 1 - i)));
- Wire.fuse(input, output, 0, i);
+ CoreWire input = logicWiresPerPin.get(modelComponent.getPin("I" + (modelComponent.logicWidth - 1 - i)));
+ CoreWire.fuse(input, output, 0, i);
inputEnds[i] = input.createReadOnlyEnd();
}
- guiComponent.setLogicModelBinding(inputEnds, output.createReadOnlyEnd());
+ modelComponent.setCoreModelBinding(inputEnds, output.createReadOnlyEnd());
}
}
\ No newline at end of file
import java.util.Map;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
/**
- * For GUIComponents that do not have any simulation logic behaviour
+ * For ModelComponents that do not have any simulation logic behaviour
*
* @author Christian Femers
*/
-public class NoLogicAdapter<T extends GUIComponent> implements ComponentAdapter<T>
+public class NoLogicAdapter<T extends ModelComponent> implements ComponentAdapter<T>
{
- private final Class<T> guiComponentClass;
+ private final Class<T> modelComponentClass;
- public NoLogicAdapter(Class<T> guiComponentClass)
+ public NoLogicAdapter(Class<T> modelComponentClass)
{
- this.guiComponentClass = guiComponentClass;
+ this.modelComponentClass = modelComponentClass;
}
@Override
public Class<T> getSupportedClass()
{
- return guiComponentClass;
+ return modelComponentClass;
}
@Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, T guiComponent, Map<Pin, Wire> logicWiresPerPin)
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, T modelComponent,
+ Map<Pin, CoreWire> logicWiresPerPin)
{
// do nothing
}
import java.util.Map;
-import net.mograsim.logic.core.components.Component;
+import net.mograsim.logic.core.components.CoreComponent;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularGUIGate;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularModelGate;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
-public class SimpleGateAdapter<G extends SimpleRectangularGUIGate> implements ComponentAdapter<G>
+public class SimpleGateAdapter<G extends SimpleRectangularModelGate> implements ComponentAdapter<G>
{
private final Class<G> supportedClass;
private final ComponentConstructor constructor;
}
@Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, G guiComponent, Map<Pin, Wire> logicWiresPerPin)
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, G modelComponent,
+ Map<Pin, CoreWire> logicWiresPerPin)
{
- ReadWriteEnd out = logicWiresPerPin.get(guiComponent.getPin("Y")).createReadWriteEnd();
+ ReadWriteEnd out = logicWiresPerPin.get(modelComponent.getPin("Y")).createReadWriteEnd();
// TODO can we do this prettier?
- int inputPinCount = guiComponent.getPins().size() - 1;
+ int inputPinCount = modelComponent.getPins().size() - 1;
ReadEnd[] ins = new ReadEnd[inputPinCount];
for (int i = 0; i < inputPinCount; i++)
- ins[i] = logicWiresPerPin.get(guiComponent.getPin(String.valueOf((char) ('A' + i)))).createReadOnlyEnd();
+ ins[i] = logicWiresPerPin.get(modelComponent.getPin(String.valueOf((char) ('A' + i)))).createReadOnlyEnd();
constructor.newComponent(timeline, params.gateProcessTime, out, ins);
}
public static interface ComponentConstructor
{
- public Component newComponent(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd[] ins);
+ public CoreComponent newComponent(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd[] ins);
}
}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.modeladapter.componentadapters;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicReference;
-
-import net.mograsim.logic.core.LogicObserver;
-import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
-
-public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentAdapter<SimpleRectangularHardcodedGUIComponent>
-{
- @Override
- public Class<SimpleRectangularHardcodedGUIComponent> getSupportedClass()
- {
- return SimpleRectangularHardcodedGUIComponent.class;
- }
-
- @Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, SimpleRectangularHardcodedGUIComponent guiComponent,
- Map<Pin, Wire> logicWiresPerPin)
- {
- Map<String, ReadEnd> readEnds = new HashMap<>();
- Map<String, ReadWriteEnd> readWriteEnds = new HashMap<>();
-
- AtomicReference<Object> state = new AtomicReference<>();
-
- Runnable recalculate = () -> state.updateAndGet(s -> guiComponent.recalculate(s, readEnds, readWriteEnds));
- LogicObserver logicObs = c -> timeline.addEvent(e -> recalculate.run(), params.gateProcessTime);
-
- guiComponent.setLogicModelBindingAndResetState(state, recalculate);
-
- for (Pin pin : guiComponent.getPins().values())
- {
- Wire wire = logicWiresPerPin.get(pin);
- ReadEnd end;
- if (pin.usage != PinUsage.INPUT)
- {
- ReadWriteEnd rwEnd = wire.createReadWriteEnd();
- readWriteEnds.put(pin.name, rwEnd);
- end = rwEnd;
- } else
- end = wire.createReadOnlyEnd();
- readEnds.put(pin.name, end);
- if (pin.usage != PinUsage.OUTPUT)
- end.registerObserver(logicObs);
- }
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.modeladapter.componentadapters;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+
+import net.mograsim.logic.core.LogicObserver;
+import net.mograsim.logic.core.timeline.Timeline;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
+
+public class SimpleRectangularHardcodedModelComponentAdapter implements ComponentAdapter<SimpleRectangularHardcodedModelComponent>
+{
+ @Override
+ public Class<SimpleRectangularHardcodedModelComponent> getSupportedClass()
+ {
+ return SimpleRectangularHardcodedModelComponent.class;
+ }
+
+ @Override
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params,
+ SimpleRectangularHardcodedModelComponent modelComponent, Map<Pin, CoreWire> logicWiresPerPin)
+ {
+ Map<String, ReadEnd> readEnds = new HashMap<>();
+ Map<String, ReadWriteEnd> readWriteEnds = new HashMap<>();
+
+ AtomicReference<Object> state = new AtomicReference<>();
+
+ Runnable recalculate = () -> state.updateAndGet(s -> modelComponent.recalculate(s, readEnds, readWriteEnds));
+ LogicObserver logicObs = c -> timeline.addEvent(e -> recalculate.run(), params.gateProcessTime);
+
+ modelComponent.setCoreModelBindingAndResetState(state, recalculate);
+
+ for (Pin pin : modelComponent.getPins().values())
+ {
+ CoreWire wire = logicWiresPerPin.get(pin);
+ ReadEnd end;
+ if (pin.usage != PinUsage.INPUT)
+ {
+ ReadWriteEnd rwEnd = wire.createReadWriteEnd();
+ readWriteEnds.put(pin.name, rwEnd);
+ end = rwEnd;
+ } else
+ end = wire.createReadOnlyEnd();
+ readEnds.put(pin.name, end);
+ if (pin.usage != PinUsage.OUTPUT)
+ end.registerObserver(logicObs);
+ }
+ }
+}
\ No newline at end of file
import java.util.Map;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.model.model.components.atomic.GUISplitter;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.model.model.components.atomic.ModelSplitter;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
-public class SplitterAdapter implements ComponentAdapter<GUISplitter>
+public class SplitterAdapter implements ComponentAdapter<ModelSplitter>
{
@Override
- public Class<GUISplitter> getSupportedClass()
+ public Class<ModelSplitter> getSupportedClass()
{
- return GUISplitter.class;
+ return ModelSplitter.class;
}
@Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUISplitter guiComponent,
- Map<Pin, Wire> logicWiresPerPin)
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, ModelSplitter modelComponent,
+ Map<Pin, CoreWire> logicWiresPerPin)
{
- Wire input = logicWiresPerPin.get(guiComponent.getPin("I"));
- ReadEnd[] outputEnds = new ReadEnd[guiComponent.logicWidth];
- for (int i = 0; i < guiComponent.logicWidth; i++)
+ CoreWire input = logicWiresPerPin.get(modelComponent.getPin("I"));
+ ReadEnd[] outputEnds = new ReadEnd[modelComponent.logicWidth];
+ for (int i = 0; i < modelComponent.logicWidth; i++)
{
- Wire output = logicWiresPerPin.get(guiComponent.getPin("O" + (guiComponent.logicWidth - 1 - i)));
- Wire.fuse(input, output, i, 0);
+ CoreWire output = logicWiresPerPin.get(modelComponent.getPin("O" + (modelComponent.logicWidth - 1 - i)));
+ CoreWire.fuse(input, output, i, 0);
outputEnds[i] = output.createReadOnlyEnd();
}
- guiComponent.setLogicModelBinding(input.createReadOnlyEnd(), outputEnds);
+ modelComponent.setCoreModelBinding(input.createReadOnlyEnd(), outputEnds);
}
}
\ No newline at end of file
import java.util.Map;
-import net.mograsim.logic.core.components.TriStateBuffer;
+import net.mograsim.logic.core.components.CoreTriStateBuffer;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
-import net.mograsim.logic.model.model.components.atomic.GUITriStateBuffer;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
+import net.mograsim.logic.model.model.components.atomic.ModelTriStateBuffer;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
-public class TriStateBufferAdapter implements ComponentAdapter<GUITriStateBuffer>
+public class TriStateBufferAdapter implements ComponentAdapter<ModelTriStateBuffer>
{
@Override
- public Class<GUITriStateBuffer> getSupportedClass()
+ public Class<ModelTriStateBuffer> getSupportedClass()
{
- return GUITriStateBuffer.class;
+ return ModelTriStateBuffer.class;
}
@SuppressWarnings("unused")
@Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUITriStateBuffer guiTsb,
- Map<Pin, Wire> logicWiresPerPin)
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, ModelTriStateBuffer modelTsb,
+ Map<Pin, CoreWire> logicWiresPerPin)
{
- ReadEnd in = logicWiresPerPin.get(guiTsb.getPin("IN")).createReadOnlyEnd();
- ReadEnd enable = logicWiresPerPin.get(guiTsb.getPin("EN")).createReadOnlyEnd();
- ReadWriteEnd out = logicWiresPerPin.get(guiTsb.getPin("OUT")).createReadWriteEnd();
- new TriStateBuffer(timeline, params.gateProcessTime, in, out, enable);
+ ReadEnd in = logicWiresPerPin.get(modelTsb.getPin("IN")).createReadOnlyEnd();
+ ReadEnd enable = logicWiresPerPin.get(modelTsb.getPin("EN")).createReadOnlyEnd();
+ ReadWriteEnd out = logicWiresPerPin.get(modelTsb.getPin("OUT")).createReadWriteEnd();
+ new CoreTriStateBuffer(timeline, params.gateProcessTime, in, out, enable);
}
}
import com.google.gson.JsonElement;
-import net.mograsim.logic.model.model.ViewModelModifiable;
+import net.mograsim.logic.model.model.LogicModelModifiable;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
import net.mograsim.logic.model.model.wires.MovablePin;
import net.mograsim.logic.model.model.wires.Pin;
* If a DeserializedSubmodelComponent is part of another SubmodelComponent, when it it serialized, it should not return its internal
* structure, but rather the component ID used to create it.
*
- * @see SubmodelComponentSerializer#deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)
+ * @see SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)
* SubmodelComponentSerializer.deserialize(...)
* @see SubmodelComponentSerializer#serialize(SubmodelComponent, java.util.function.Function) SubmodelComponentSerializer.serialize(...)
*/
/**
* See {@link #idForSerializingOverride}
*/
- public final JsonElement paramsForSerializingOverride;
+ public final Object paramsForSerializingOverride;
- public DeserializedSubmodelComponent(ViewModelModifiable model, String name, String idForSerializingOverride,
- JsonElement paramsForSerializingOverride)
+ public DeserializedSubmodelComponent(LogicModelModifiable model, String name, String idForSerializingOverride,
+ Object paramsForSerializingOverride)
{
- super(model, name);
+ super(model, name, false);
this.idForSerializingOverride = idForSerializingOverride;
this.paramsForSerializingOverride = paramsForSerializingOverride;
+ init();
+ }
+
+ /**
+ * If this component has an {@link #idForSerializingOverride} set (e.g. non-null) (see
+ * {@link SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)
+ * SubmodelComponentSerializer.deserialize(...)}), this ID is returned<br>
+ * If this case doesn't apply (this component has no {@link #idForSerializingOverride} set),
+ * {@link SubmodelComponent#getIDForSerializing(IdentifyParams)} is invoced.
+ */
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return idForSerializingOverride == null ? super.getIDForSerializing(idParams) : idForSerializingOverride;
+ }
+
+ /**
+ * If this component has an {@link #idForSerializingOverride} set (e.g. non-null) (see
+ * {@link SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)
+ * SubmodelComponentSerializer.deserialize(...)}), {@link #paramsForSerializingOverride} is returned<br>
+ * If this case doesn't apply (this component has no {@link #idForSerializingOverride} set),
+ * {@link SubmodelComponent#getParamsForSerializing(IdentifyParams)} is invoced.
+ */
+ @Override
+ public Object getParamsForSerializing(IdentifyParams idParams)
+ {
+ return idForSerializingOverride == null ? super.getParamsForSerializing(idParams) : paramsForSerializingOverride;
}
@Override
super.setHighLevelStateHandler(handler);
}
- public ViewModelModifiable getSubmodelModifiable()
+ public LogicModelModifiable getSubmodelModifiable()
{
return submodelModifiable;
}
+++ /dev/null
-package net.mograsim.logic.model.serializing;
-
-import static net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers.highLevelStateHandlerSupplier;
-import static net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers.outlineRendererSupplier;
-import static net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers.symbolRendererSupplier;
-import static net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers.atomicHandlerSupplier;
-import static net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers.subcomponentHandlerSupplier;
-
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.function.Function;
-
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.snippets.CodeSnippetSupplier;
-import net.mograsim.logic.model.snippets.HighLevelStateHandler;
-import net.mograsim.logic.model.snippets.Renderer;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.AtomicHighLevelStateHandler;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.SubcomponentHighLevelStateHandler;
-
-//TODO better name
-public class IdentifierGetter
-{
- // TODO save IDs for everything than can be deserialized / serialized (=every JSONSerializable?)
- public Function<GUIComponent, String> componentIDs;
- public Function<Renderer, String> symbolRendererIDs;
- public Function<Renderer, String> outlineRendererIDs;
- public Function<HighLevelStateHandler, String> highLevelStateHandlerIDs;
- public Function<SubcomponentHighLevelStateHandler, String> subcomponentHighLevelStateHandlerIDs;
- public Function<AtomicHighLevelStateHandler, String> atomicHighLevelStateHandlerIDs;
-
- /**
- * Creates a new IdentifierGetter using the following as the default for all ID getter functions: <br>
- * Define the verbose ID as <code>"class:" + canonicalClassName</code>.<br>
- * If there is a standard ID mapping to this verbose ID recorded in the matching {@link CodeSnippetSupplier}, use this ID; if not, use
- * the verbose ID.
- */
- public IdentifierGetter()
- {
- componentIDs = generateStandardIDFunction(IndirectGUIComponentCreator.getStandardComponentIDs());
- symbolRendererIDs = generateStandardIDFunction(symbolRendererSupplier);
- outlineRendererIDs = generateStandardIDFunction(outlineRendererSupplier);
- highLevelStateHandlerIDs = generateStandardIDFunction(highLevelStateHandlerSupplier);
- atomicHighLevelStateHandlerIDs = generateStandardIDFunction(atomicHandlerSupplier);
- subcomponentHighLevelStateHandlerIDs = generateStandardIDFunction(subcomponentHandlerSupplier);
- }
-
- private static <T> Function<T, String> generateStandardIDFunction(CodeSnippetSupplier<?, T> snippetSupplier)
- {
- return generateStandardIDFunction(snippetSupplier.getStandardSnippetIDs());
- }
-
- private static <T> Function<T, String> generateStandardIDFunction(Map<String, String> standardComponentIDs)
- {
- return t ->
- {
- String verboseID = "class:" + t.getClass().getCanonicalName();
- return standardComponentIDs.entrySet().stream().filter(e -> e.getValue().equals(verboseID)).map(Entry::getKey).findAny()
- .orElse(verboseID);
- };
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.serializing;
+
+public class IdentifyParams
+{
+ // maybe we find something to put here...
+}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.serializing;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UncheckedIOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonNull;
-import com.google.gson.JsonObject;
-
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.util.JsonHandler;
-
-public class IndirectGUIComponentCreator
-{
- private static final Map<String, String> standardComponentIDs = new HashMap<>();
- private static final Map<String, String> standardComponentIDsUnmodifiable = Collections.unmodifiableMap(standardComponentIDs);
-
- private static final Map<String, ComponentSupplier> componentSuppliers = new HashMap<>();
- private static final Map<String, ResourceLoader> resourceLoaders = new HashMap<>();
- private static final Map<String, JsonObject> componentCache = new HashMap<>();
-
- private static final ResourceLoader defaultResourceLoader;
- static
- {
- defaultResourceLoader = ClassLoaderBasedResourceLoader.create(IndirectGUIComponentCreator.class.getClassLoader());
- loadStandardComponentIDs(IndirectGUIComponentCreator.class.getResourceAsStream("standardComponentIDMapping.json"));
- }
-
- public static void loadStandardComponentIDs(InputStream standardComponentIdMappingStream)
- {
- try (InputStream s = standardComponentIdMappingStream)
- {
- if (s == null)
- throw new IOException("Resource not found");
- Map<String, String> tmp = JsonHandler.readJson(s, Map.class);
- // don't use putAll to apply sanity checks
- tmp.forEach((st, id) ->
- {
- try
- {
- addStandardComponentID(st, id);
- }
- catch (IllegalArgumentException e)
- {
- System.err.println("Component ID mapping contained illegal entry: " + e.getMessage());
- }
- });
- }
- catch (IOException e)
- {
- System.err.println("Failed to initialize standard snippet ID mapping: " + e.getMessage());
- }
- }
-
- public static void addStandardComponentID(String standardComponentID, String associatedComponentID)
- {
- if (!checkIDIsValidResolvedID(associatedComponentID))
- throw new IllegalArgumentException("Unrecognized component ID format: " + associatedComponentID);
- standardComponentIDs.put(standardComponentID, associatedComponentID);
- }
-
- public static Map<String, String> getStandardComponentIDs()
- {
- return standardComponentIDsUnmodifiable;
- }
-
- public static void setComponentSupplier(String className, ComponentSupplier componentSupplier)
- {
- componentSuppliers.put(className, componentSupplier);
- }
-
- public static GUIComponent createComponent(ViewModelModifiable model, String id)
- {
- return createComponent(model, id, (String) null);
- }
-
- public static GUIComponent createComponent(ViewModelModifiable model, String id, String name)
- {
- return createComponent(model, id, JsonNull.INSTANCE, name);
- }
-
- public static GUIComponent createComponent(ViewModelModifiable model, String id, JsonElement params)
- {
- return createComponent(model, id, params, null);
- }
-
- public static GUIComponent createComponent(ViewModelModifiable model, String id, JsonElement params, String name)
- {
- if (id == null)
- throw new NullPointerException("Component ID is null");
- if (componentCache.containsKey(id))
- return loadComponentFromJsonObject(model, id, name, componentCache.get(id));
- String resolvedID = resolveID(id);
- if (resolvedID == null)
- throw new IllegalArgumentException("Unknown standard ID or illegal resolved ID: " + id);
- String[] parts = resolvedID.split(":");
- String firstPart = parts[0];
- if (firstPart.equals("jsonfile"))
- {
- JsonObject jsonContents;
- try
- {
- // don't use parts[1], because the path could contain ':'
- jsonContents = JsonHandler.readJson(resolvedID.substring("jsonfile:".length()), JsonObject.class);
- }
- catch (IOException e)
- {
- throw new UncheckedIOException("Error loading JSON file", e);
- }
- return loadComponentFromJsonObject(model, id, name, jsonContents);
- }
- ResourceLoader loader;
- String resTypeID;
- String resID;
- if (firstPart.equals("resloader"))
- {
- String loaderID = parts[1];
- loader = resourceLoaders.get(loaderID);
- if (loader == null)
- tryLoadResourceLoader(loaderID);
- loader = resourceLoaders.get(loaderID);
- if (loader == null)
- throw new IllegalArgumentException(
- "Unknown resource loader: " + loaderID + " (but class was found. Probably the static initializer is missing)");
- resTypeID = parts[2];
- resID = parts[3];
- } else
- {
- loader = defaultResourceLoader;
- resTypeID = parts[0];
- resID = parts[1];
- }
- if (resTypeID.equals("jsonres"))
- {
- JsonObject jsonContents;
- try
- {
- @SuppressWarnings("resource") // jsonStream is closed in JsonHandler
- InputStream jsonStream = Objects.requireNonNull(loader.loadResource(resID), "Error loading JSON resource: Not found");
- jsonContents = JsonHandler.readJson(jsonStream, JsonObject.class);
- }
- catch (IOException e)
- {
- throw new UncheckedIOException("Error loading JSON resource", e);
- }
- return loadComponentFromJsonObject(model, id, name, jsonContents);
- } else if (resTypeID.equals("class"))
- {
- ComponentSupplier componentSupplier = componentSuppliers.get(resID);
- if (componentSupplier == null)
- try
- {
- loader.loadClass(resID);
- }
- catch (@SuppressWarnings("unused") ClassNotFoundException e)
- {
- throw new IllegalArgumentException("Unknown component supplier: " + resID);
- }
- componentSupplier = componentSuppliers.get(resID);
- if (componentSupplier == null)
- throw new IllegalArgumentException(
- "Unknown component supplier: " + resID + " (but class was found. Probably the static initializer is missing)");
- return componentSupplier.create(model, params, name);
- } else
- throw new IllegalStateException("Unknown resource type ID: " + resTypeID);
- }
-
- public static String resolveID(String id)
- {
- if (checkIDIsValidResolvedID(id))
- return id;
- return standardComponentIDs.get(id);
- }
-
- private static boolean checkIDIsValidResolvedID(String id)
- {
- return id.matches("jsonfile:(.+)|(resloader:([^:]+):)?(jsonres|class):[^:]+");
- }
-
- private static SubmodelComponent loadComponentFromJsonObject(ViewModelModifiable model, String id, String name, JsonObject jsonContents)
- {
- componentCache.putIfAbsent(id, jsonContents);
- SerializablePojo jsonContentsAsSerializablePojo = JsonHandler.parser.fromJson(jsonContents, SerializablePojo.class);
- if (jsonContentsAsSerializablePojo.version == null)
- return LegacySubmodelComponentSerializer.deserialize(model,
- JsonHandler.parser.fromJson(jsonContents, LegacySubmodelComponentParams.class), name, id, null);
- return SubmodelComponentSerializer.deserialize(model, JsonHandler.parser.fromJson(jsonContents, SubmodelComponentParams.class),
- name, id, null);
- }
-
- public static void registerResourceLoader(ResourceLoader resourceLoader)
- {
- registerResourceLoader(resourceLoader, resourceLoader.getClass());
- }
-
- public static void registerResourceLoader(ResourceLoader resourceLoader, Class<?> reference)
- {
- resourceLoaders.put(reference.getName(), Objects.requireNonNull(resourceLoader));
- }
-
- public static void registerResourceLoader(ResourceLoader resourceLoader, String reference)
- {
- resourceLoaders.put(reference, Objects.requireNonNull(resourceLoader));
- }
-
- private static void tryLoadResourceLoader(String loaderClassName)
- {
- ReflectionHelper.tryInvokeStaticInitializer(loaderClassName, "Error loading resoruce loader %s: %s\n");
- }
-
- public static interface ComponentSupplier
- {
- public GUIComponent create(ViewModelModifiable model, JsonElement params, String name);
- }
-}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.serializing;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UncheckedIOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonNull;
+import com.google.gson.JsonObject;
+
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.util.JsonHandler;
+
+public class IndirectModelComponentCreator
+{
+ private static final Map<String, String> standardComponentIDs = new HashMap<>();
+ private static final Map<String, String> standardComponentIDsUnmodifiable = Collections.unmodifiableMap(standardComponentIDs);
+
+ private static final Map<String, ComponentSupplier> componentSuppliers = new HashMap<>();
+ private static final Map<String, ResourceLoader> resourceLoaders = new HashMap<>();
+ private static final Map<String, JsonObject> componentCache = new HashMap<>();
+
+ private static final ResourceLoader defaultResourceLoader;
+ static
+ {
+ defaultResourceLoader = ClassLoaderBasedResourceLoader.create(IndirectModelComponentCreator.class.getClassLoader());
+ loadStandardComponentIDs(IndirectModelComponentCreator.class.getResourceAsStream("standardComponentIDMapping.json"));
+ }
+
+ public static void loadStandardComponentIDs(InputStream standardComponentIdMappingStream)
+ {
+ try (InputStream s = standardComponentIdMappingStream)
+ {
+ if (s == null)
+ throw new IOException("Resource not found");
+ Map<String, String> tmp = JsonHandler.readJson(s, Map.class);
+ // don't use putAll to apply sanity checks
+ tmp.forEach((st, id) ->
+ {
+ try
+ {
+ addStandardComponentID(st, id);
+ }
+ catch (IllegalArgumentException e)
+ {
+ System.err.println("Component ID mapping contained illegal entry: " + e.getMessage());
+ }
+ });
+ }
+ catch (IOException e)
+ {
+ System.err.println("Failed to initialize standard snippet ID mapping: " + e.getMessage());
+ }
+ }
+
+ public static void addStandardComponentID(String standardComponentID, String associatedComponentID)
+ {
+ if (!checkIDIsValidResolvedID(associatedComponentID))
+ throw new IllegalArgumentException("Unrecognized component ID format: " + associatedComponentID);
+ standardComponentIDs.put(standardComponentID, associatedComponentID);
+ }
+
+ public static Map<String, String> getStandardComponentIDs()
+ {
+ return standardComponentIDsUnmodifiable;
+ }
+
+ public static void setComponentSupplier(String id, ComponentSupplier componentSupplier)
+ {
+ componentSuppliers.put(id, componentSupplier);
+ }
+
+ public static ModelComponent createComponent(LogicModelModifiable model, String id)
+ {
+ return createComponent(model, id, (String) null);
+ }
+
+ public static ModelComponent createComponent(LogicModelModifiable model, String id, String name)
+ {
+ return createComponent(model, id, JsonNull.INSTANCE, name);
+ }
+
+ public static ModelComponent createComponent(LogicModelModifiable model, String id, JsonElement params)
+ {
+ return createComponent(model, id, params, null);
+ }
+
+ public static ModelComponent createComponent(LogicModelModifiable model, String id, JsonElement params, String name)
+ {
+ if (id == null)
+ throw new NullPointerException("Component ID is null");
+ if (componentCache.containsKey(id))
+ return loadComponentFromJsonObject(model, id, name, componentCache.get(id));
+ String resolvedID = resolveID(id);
+ if (resolvedID == null)
+ throw new IllegalArgumentException("Unknown standard ID or illegal resolved ID: " + id);
+ String[] parts = resolvedID.split(":");
+ String firstPart = parts[0];
+ if (firstPart.equals("jsonfile"))
+ {
+ JsonObject jsonContents;
+ try
+ {
+ // don't use parts[1], because the path could contain ':'
+ jsonContents = JsonHandler.readJson(resolvedID.substring("jsonfile:".length()), JsonObject.class);
+ }
+ catch (IOException e)
+ {
+ throw new UncheckedIOException("Error loading JSON file", e);
+ }
+ return loadComponentFromJsonObject(model, id, name, jsonContents);
+ }
+ ResourceLoader loader;
+ String resTypeID;
+ String resID;
+ if (firstPart.equals("resloader"))
+ {
+ String loaderID = parts[1];
+ loader = resourceLoaders.get(loaderID);
+ if (loader == null)
+ tryLoadResourceLoader(loaderID);
+ loader = resourceLoaders.get(loaderID);
+ if (loader == null)
+ throw new IllegalArgumentException(
+ "Unknown resource loader: " + loaderID + " (but class was found. Probably the static initializer is missing)");
+ resTypeID = parts[2];
+ resID = parts[3];
+ } else
+ {
+ loader = defaultResourceLoader;
+ resTypeID = parts[0];
+ resID = parts[1];
+ }
+ if (resTypeID.equals("jsonres"))
+ {
+ JsonObject jsonContents;
+ try
+ {
+ @SuppressWarnings("resource") // jsonStream is closed in JsonHandler
+ InputStream jsonStream = Objects.requireNonNull(loader.loadResource(resID), "Error loading JSON resource: Not found");
+ jsonContents = JsonHandler.readJson(jsonStream, JsonObject.class);
+ }
+ catch (IOException e)
+ {
+ throw new UncheckedIOException("Error loading JSON resource", e);
+ }
+ return loadComponentFromJsonObject(model, id, name, jsonContents);
+ } else if (resTypeID.equals("class"))
+ {
+ ComponentSupplier componentSupplier = componentSuppliers.get(resID);
+ if (componentSupplier == null)
+ try
+ {
+ loader.loadClass(resID);
+ }
+ catch (@SuppressWarnings("unused") ClassNotFoundException e)
+ {
+ throw new IllegalArgumentException("Unknown component supplier: " + resID);
+ }
+ componentSupplier = componentSuppliers.get(resID);
+ if (componentSupplier == null)
+ throw new IllegalArgumentException(
+ "Unknown component supplier: " + resID + " (but class was found. Probably the static initializer is missing)");
+ return componentSupplier.create(model, params, name);
+ } else
+ throw new IllegalStateException("Unknown resource type ID: " + resTypeID);
+ }
+
+ public static String resolveID(String id)
+ {
+ if (checkIDIsValidResolvedID(id))
+ return id;
+ return standardComponentIDs.get(id);
+ }
+
+ private static boolean checkIDIsValidResolvedID(String id)
+ {
+ return id.matches("jsonfile:(.+)|(resloader:([^:]+):)?(jsonres|class):[^:]+");
+ }
+
+ private static SubmodelComponent loadComponentFromJsonObject(LogicModelModifiable model, String id, String name, JsonObject jsonContents)
+ {
+ componentCache.putIfAbsent(id, jsonContents);
+ SerializablePojo jsonContentsAsSerializablePojo = JsonHandler.parser.fromJson(jsonContents, SerializablePojo.class);
+ if (jsonContentsAsSerializablePojo.version == null)
+ return LegacySubmodelComponentSerializer.deserialize(model,
+ JsonHandler.parser.fromJson(jsonContents, LegacySubmodelComponentParams.class), name, id, null);
+ return SubmodelComponentSerializer.deserialize(model, JsonHandler.parser.fromJson(jsonContents, SubmodelComponentParams.class),
+ name, id, null);
+ }
+
+ public static void registerResourceLoader(ResourceLoader resourceLoader)
+ {
+ registerResourceLoader(resourceLoader, resourceLoader.getClass());
+ }
+
+ public static void registerResourceLoader(ResourceLoader resourceLoader, Class<?> reference)
+ {
+ resourceLoaders.put(reference.getName(), Objects.requireNonNull(resourceLoader));
+ }
+
+ public static void registerResourceLoader(ResourceLoader resourceLoader, String reference)
+ {
+ resourceLoaders.put(reference, Objects.requireNonNull(resourceLoader));
+ }
+
+ private static void tryLoadResourceLoader(String loaderClassName)
+ {
+ ReflectionHelper.tryInvokeStaticInitializer(loaderClassName, "Error loading resoruce loader %s: %s\n");
+ }
+
+ public static interface ComponentSupplier
+ {
+ public ModelComponent create(LogicModelModifiable model, JsonElement params, String name);
+ }
+}
\ No newline at end of file
public interface JSONSerializable
{
- public Object getParamsForSerializing(IdentifierGetter idGetter);
+ public String getIDForSerializing(IdentifyParams idParams);
- public default JsonElement getParamsForSerializingJSON(IdentifierGetter idGetter)
+ public Object getParamsForSerializing(IdentifyParams idParams);
+
+ public default JsonElement getParamsForSerializingJSON(IdentifyParams idParams)
{
- return JsonHandler.toJsonTree(getParamsForSerializing(idGetter));
+ return JsonHandler.toJsonTree(getParamsForSerializing(idParams));
}
}
\ No newline at end of file
import com.google.gson.JsonElement;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.model.wires.ModelWire;
import net.mograsim.logic.model.model.wires.MovablePin;
import net.mograsim.logic.model.model.wires.Pin;
import net.mograsim.logic.model.model.wires.PinUsage;
// convenience methods
/**
- * Like {@link #deserialize(ViewModelModifiable, LegacySubmodelComponentParams)}, but first reading the
+ * Like {@link #deserialize(LogicModelModifiable, LegacySubmodelComponentParams)}, but first reading the
* {@link LegacySubmodelComponentParams} from the given file path.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, String sourcePath) throws IOException
+ public static SubmodelComponent deserialize(LogicModelModifiable model, String sourcePath) throws IOException
{
return deserialize(model, JsonHandler.readJson(sourcePath, LegacySubmodelComponentParams.class));
}
/**
- * Like {@link #deserialize(ViewModelModifiable, LegacySubmodelComponentParams, String, JsonElement)}, but first reading the
+ * Like {@link #deserialize(LogicModelModifiable, LegacySubmodelComponentParams, String, JsonElement)}, but first reading the
* {@link LegacySubmodelComponentParams} from the given file path.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, String sourcePath, String idForSerializingOverride,
+ public static SubmodelComponent deserialize(LogicModelModifiable model, String sourcePath, String idForSerializingOverride,
JsonElement paramsForSerializingOverride) throws IOException
{
return deserialize(model, JsonHandler.readJson(sourcePath, LegacySubmodelComponentParams.class), idForSerializingOverride,
}
/**
- * Like {@link #deserialize(ViewModelModifiable, LegacySubmodelComponentParams, String)}, but first reading the
+ * Like {@link #deserialize(LogicModelModifiable, LegacySubmodelComponentParams, String)}, but first reading the
* {@link LegacySubmodelComponentParams} from the given file path.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, String sourcePath, String name) throws IOException
+ public static SubmodelComponent deserialize(LogicModelModifiable model, String sourcePath, String name) throws IOException
{
return deserialize(model, JsonHandler.readJson(sourcePath, LegacySubmodelComponentParams.class), name);
}
/**
- * Like {@link #deserialize(ViewModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement)}, but first reading the
+ * Like {@link #deserialize(LogicModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement)}, but first reading the
* {@link LegacySubmodelComponentParams} from the given file path.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, String sourcePath, String name, String idForSerializingOverride,
+ public static SubmodelComponent deserialize(LogicModelModifiable model, String sourcePath, String name, String idForSerializingOverride,
JsonElement paramsForSerializingOverride) throws IOException
{
return deserialize(model, JsonHandler.readJson(sourcePath, LegacySubmodelComponentParams.class), name, idForSerializingOverride,
}
/**
- * {@link #deserialize(ViewModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement)} with no
+ * {@link #deserialize(LogicModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement)} with no
* <code>idForSerializingOverride</code> set and using the default name.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, LegacySubmodelComponentParams params)
+ public static SubmodelComponent deserialize(LogicModelModifiable model, LegacySubmodelComponentParams params)
{
return deserialize(model, params, null, null, null);
}
/**
- * {@link #deserialize(ViewModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement)} using the default name.
+ * {@link #deserialize(LogicModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement)} using the default name.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, LegacySubmodelComponentParams params,
+ public static SubmodelComponent deserialize(LogicModelModifiable model, LegacySubmodelComponentParams params,
String idForSerializingOverride, JsonElement paramsForSerializingOverride)
{
return deserialize(model, params, null, idForSerializingOverride, paramsForSerializingOverride);
}
/**
- * {@link #deserialize(ViewModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement)} with no
+ * {@link #deserialize(LogicModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement)} with no
* <code>idForSerializingOverride</code> set.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, LegacySubmodelComponentParams params, String name)
+ public static SubmodelComponent deserialize(LogicModelModifiable model, LegacySubmodelComponentParams params, String name)
{
return deserialize(model, params, name, null, null);
}
*
* @author Daniel Kirschten
*/
- public static void serialize(SubmodelComponent comp, IdentifierGetter idGetter, String targetPath) throws IOException
+ public static void serialize(SubmodelComponent comp, IdentifyParams idParams, String targetPath) throws IOException
{
- JsonHandler.writeJson(serialize(comp, idGetter), targetPath);
+ JsonHandler.writeJson(serialize(comp, idParams), targetPath);
}
/**
- * {@link #serialize(SubmodelComponent, Function)} using a default {@link IdentifierGetter} (see <code>IdentifierGetter</code>'s
- * {@link IdentifierGetter#IdentifierGetter() default constructor})
+ * {@link #serialize(SubmodelComponent, Function)} using the default {@link IdentifyParams} (see <code>IdentifyParams</code>'s
+ * {@link IdentifyParams#IdentifyParams() default constructor})
*
* @author Daniel Kirschten
*/
public static LegacySubmodelComponentParams serialize(SubmodelComponent comp)
{
- return serialize(comp, new IdentifierGetter());
+ return serialize(comp, new IdentifyParams());
}
// "core" methods
* @author Fabian Stemmler
* @author Daniel Kirschten
*/
- @SuppressWarnings("unused") // for GUIWire being created
- public static SubmodelComponent deserialize(ViewModelModifiable model, LegacySubmodelComponentParams params, String name,
+ @SuppressWarnings("unused") // for ModelWire being created
+ public static SubmodelComponent deserialize(LogicModelModifiable model, LegacySubmodelComponentParams params, String name,
String idForSerializingOverride, JsonElement paramsForSerializingOverride)
{
DeserializedSubmodelComponent comp = new DeserializedSubmodelComponent(model, name, idForSerializingOverride,
comp.setSize(params.width, params.height);
for (LegacyInterfacePinParams iPinParams : params.interfacePins)
// TRISTATE because we don't have a better choice
- comp.addSubmodelInterface(new MovablePin(comp, iPinParams.name, iPinParams.logicWidth, PinUsage.TRISTATE, iPinParams.location.x,
- iPinParams.location.y));
+ comp.addSubmodelInterface(new MovablePin(model, comp, iPinParams.name, iPinParams.logicWidth, PinUsage.TRISTATE,
+ iPinParams.location.x, iPinParams.location.y));
LegacySubmodelParameters submodelParams = params.submodel;
- ViewModelModifiable submodelModifiable = comp.getSubmodelModifiable();
- Map<String, GUIComponent> componentsByName = submodelModifiable.getComponentsByName();
- GUIComponent[] components = new GUIComponent[submodelParams.subComps.length];
+ LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable();
+ Map<String, ModelComponent> componentsByName = submodelModifiable.getComponentsByName();
+ ModelComponent[] components = new ModelComponent[submodelParams.subComps.length];
for (int i = 0; i < components.length; i++)
{
LegacyInnerComponentParams cParams = submodelParams.subComps[i];
- components[i] = IndirectGUIComponentCreator.createComponent(submodelModifiable, cParams.id, cParams.params, cParams.name);
+ components[i] = IndirectModelComponentCreator.createComponent(submodelModifiable, cParams.id, cParams.params, cParams.name);
components[i].moveTo(cParams.pos.x, cParams.pos.y);
}
for (int i = 0; i < submodelParams.innerWires.length; i++)
{
LegacyInnerWireParams innerWire = submodelParams.innerWires[i];
- new GUIWire(submodelModifiable, innerWire.name, componentsByName.get(innerWire.pin1.compName).getPin(innerWire.pin1.pinName),
+ new ModelWire(submodelModifiable, innerWire.name, componentsByName.get(innerWire.pin1.compName).getPin(innerWire.pin1.pinName),
componentsByName.get(innerWire.pin2.compName).getPin(innerWire.pin2.pinName), innerWire.path);
}
comp.setSymbolRenderer(SubmodelComponentSnippetSuppliers.symbolRendererSupplier.getSnippetSupplier(params.symbolRendererSnippetID)
* Subcomponents are serialized in the following way: <br>
* If a subcomponent is a <code>SubmodelComponent</code> which has been deserialized, and it has an
* {@link DeserializedSubmodelComponent#idForSerializingOverride idForSerializingOverride} set (e.g. non-null; see
- * {@link #deserialize(ViewModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement) deserialize(...)}), this ID and
+ * {@link #deserialize(LogicModelModifiable, LegacySubmodelComponentParams, String, String, JsonElement) deserialize(...)}), this ID and
* the component's {@link DeserializedSubmodelComponent#paramsForSerializingOverride paramsForSerializingOverride} are written.<br>
* If this case doesn't apply (e.g. if the subcomponent is not a <code>SubmodelComponent</code>; or it is a
* <code>SubmodelComponent</code>, but hasn't been deserialized; or it has no
* {@link DeserializedSubmodelComponent#idForSerializingOverride idForSerializingOverride} set), the ID defined by <code>idGetter</code>
- * and the params obtained by {@link GUIComponent#getParamsForSerializing() getParams()} are written.<br>
+ * and the params obtained by {@link ModelComponent#getParamsForSerializing() getParams()} are written.<br>
* CodeSnippets are serialized using the ID defined by <code>idGetter</code> and the params obtained by the respective
* <coce>getParamsForSerializing</code> methods ({@link Renderer#getParamsForSerializing()}).
*
* @author Fabian Stemmler
* @author Daniel Kirschten
*/
- public static LegacySubmodelComponentParams serialize(SubmodelComponent comp, IdentifierGetter idGetter)
+ public static LegacySubmodelComponentParams serialize(SubmodelComponent comp, IdentifyParams idParams)
{
LegacySubmodelParameters submodelParams = new LegacySubmodelParameters();
submodelParams.innerScale = comp.getSubmodelScale();
- Map<String, GUIComponent> components = new HashMap<>(comp.submodel.getComponentsByName());
+ Map<String, ModelComponent> components = new HashMap<>(comp.submodel.getComponentsByName());
components.remove(SubmodelComponent.SUBMODEL_INTERFACE_NAME);
LegacyInnerComponentParams[] componentParams = new LegacyInnerComponentParams[components.size()];
int i1 = 0;
- for (GUIComponent innerComponent : components.values())
+ for (ModelComponent innerComponent : components.values())
{
LegacyInnerComponentParams innerComponentParams = new LegacyInnerComponentParams();
componentParams[i1] = innerComponentParams;
innerComponentParams.pos = new Point(innerComponent.getPosX(), innerComponent.getPosY());
- DeserializedSubmodelComponent innerCompCasted;
- if (innerComponent instanceof DeserializedSubmodelComponent
- && (innerCompCasted = (DeserializedSubmodelComponent) innerComponent).idForSerializingOverride != null)
- {
- innerComponentParams.id = innerCompCasted.idForSerializingOverride;
- innerComponentParams.params = innerCompCasted.paramsForSerializingOverride;
- } else
- {
- innerComponentParams.id = idGetter.componentIDs.apply(innerComponent);
- innerComponentParams.params = innerComponent.getParamsForSerializingJSON(idGetter);
- }
+ innerComponentParams.id = innerComponent.getIDForSerializing(idParams);
+ innerComponentParams.params = innerComponent.getParamsForSerializingJSON(idParams);
innerComponentParams.name = innerComponent.name;
i1++;
}
submodelParams.subComps = componentParams;
- Collection<GUIWire> wires = comp.submodel.getWiresByName().values();
+ Collection<ModelWire> wires = comp.submodel.getWiresByName().values();
LegacyInnerWireParams wireParams[] = new LegacyInnerWireParams[wires.size()];
i1 = 0;
- for (GUIWire innerWire : wires)
+ for (ModelWire innerWire : wires)
{
LegacyInnerWireParams innerWireParams = new LegacyInnerWireParams();
wireParams[i1] = innerWireParams;
Renderer symbolRenderer = comp.getSymbolRenderer();
if (symbolRenderer != null)
{
- params.symbolRendererSnippetID = idGetter.symbolRendererIDs.apply(symbolRenderer);
- params.symbolRendererParams = symbolRenderer.getParamsForSerializingJSON(idGetter);
+ params.symbolRendererSnippetID = symbolRenderer.getIDForSerializing(idParams);
+ params.symbolRendererParams = symbolRenderer.getParamsForSerializingJSON(idParams);
}
Renderer outlineRenderer = comp.getOutlineRenderer();
if (outlineRenderer != null)
{
- params.outlineRendererSnippetID = idGetter.outlineRendererIDs.apply(outlineRenderer);
- params.outlineRendererParams = outlineRenderer.getParamsForSerializingJSON(idGetter);
+ params.outlineRendererSnippetID = outlineRenderer.getIDForSerializing(idParams);
+ params.outlineRendererParams = outlineRenderer.getParamsForSerializingJSON(idParams);
}
HighLevelStateHandler highLevelStateHandler = comp.getHighLevelStateHandler();
if (highLevelStateHandler != null)
{
- params.highLevelStateHandlerSnippetID = idGetter.highLevelStateHandlerIDs.apply(highLevelStateHandler);
- params.highLevelStateHandlerParams = highLevelStateHandler.getParamsForSerializingJSON(idGetter);
+ params.highLevelStateHandlerSnippetID = highLevelStateHandler.getIDForSerializing(idParams);
+ params.highLevelStateHandlerParams = highLevelStateHandler.getParamsForSerializingJSON(idParams);
}
return params;
--- /dev/null
+package net.mograsim.logic.model.serializing;
+
+import com.google.gson.JsonElement;
+
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.mograsim.logic.model.util.Version;
+
+public class LogicModelParams extends SerializablePojo
+{
+ public ComponentParams[] components;
+ public WireParams[] wires;
+
+ public LogicModelParams(Version version)
+ {
+ super(version);
+ }
+
+ public static class ComponentParams
+ {
+ public String id;
+ public String name;
+ public Point pos;
+ public JsonElement params;
+ }
+
+ public static class WireParams
+ {
+ public PinParams pin1, pin2;
+ public String name;
+ public Point[] path;
+
+ public static class PinParams
+ {
+ public String compName;
+ public String pinName;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.serializing;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.mograsim.logic.model.model.LogicModel;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.serializing.LogicModelParams.ComponentParams;
+import net.mograsim.logic.model.serializing.LogicModelParams.WireParams;
+import net.mograsim.logic.model.serializing.LogicModelParams.WireParams.PinParams;
+import net.mograsim.logic.model.util.JsonHandler;
+import net.mograsim.logic.model.util.Version;
+
+public class LogicModelSerializer
+{
+ public static final Version CURRENT_JSON_VERSION = Version.parseSemver("0.1.1");
+
+ // convenience methods
+ /**
+ * Like {@link #deserialize(LogicModelParams)}, but first reading the {@link LogicModelParams} from the given file path.
+ *
+ * @author Daniel Kirschten
+ */
+ public static LogicModelModifiable deserialize(String sourcePath) throws IOException
+ {
+ return deserialize(JsonHandler.readJson(sourcePath, LogicModelParams.class));
+ }
+
+ /**
+ * Like {@link #deserialize(LogicModelModifiable, LogicModelParams)}, but first reading the {@link LogicModelParams} from the given file
+ * path.
+ *
+ * @author Daniel Kirschten
+ */
+ public static void deserialize(LogicModelModifiable model, String sourcePath) throws IOException
+ {
+ deserialize(model, JsonHandler.readJson(sourcePath, LogicModelParams.class));
+ }
+
+ /**
+ * Like {@link #deserialize(LogicModelModifiable, LogicModelParams)}, but using a newly created {@link LogicModelModifiable}.
+ *
+ * @author Daniel Kirschten
+ */
+ public static LogicModelModifiable deserialize(LogicModelParams params)
+ {
+ LogicModelModifiable model = new LogicModelModifiable();
+ deserialize(model, params);
+ return model;
+ }
+
+ /**
+ * Like {@link #serialize(LogicModel)}, but instead of returning the generated {@link LogicModelParams} they are written to a file at
+ * the given path.
+ *
+ * @author Daniel Kirschten
+ */
+ public static void serialize(LogicModel model, String targetPath) throws IOException
+ {
+ JsonHandler.writeJson(serialize(model), targetPath);
+ }
+
+ /**
+ * Like {@link #serialize(LogicModel, IdentifyParams)}, but instead of returning the generated {@link LogicModelParams} they are written
+ * to a file at the given path.
+ *
+ * @author Daniel Kirschten
+ */
+ public static void serialize(LogicModel model, IdentifyParams idParams, String targetPath) throws IOException
+ {
+ JsonHandler.writeJson(serialize(model, idParams), targetPath);
+ }
+
+ /**
+ * {@link #serialize(LogicModel, IdentifyParams)} using the default {@link IdentifyParams} (see <code>IdentifyParams</code>'s
+ * {@link IdentifyParams#IdentifyParams() default constructor})
+ *
+ * @author Daniel Kirschten
+ */
+ public static LogicModelParams serialize(LogicModel model)
+ {
+ return serialize(model, new IdentifyParams());
+ }
+
+ // "core" methods
+ /**
+ * Deserializes components and wires from the specified {@link LogicModelParams} and adds them to the given
+ * {@link LogicModelModifiable}.
+ *
+ * @author Fabian Stemmler
+ * @author Daniel Kirschten
+ */
+ @SuppressWarnings("unused") // for ModelWire being created
+ public static void deserialize(LogicModelModifiable model, LogicModelParams params)
+ {
+ Map<String, ModelComponent> componentsByName = model.getComponentsByName();
+ ModelComponent[] components = new ModelComponent[params.components.length];
+ for (int i = 0; i < components.length; i++)
+ {
+ ComponentParams compParams = params.components[i];
+ components[i] = IndirectModelComponentCreator.createComponent(model, compParams.id, compParams.params, compParams.name);
+ components[i].moveTo(compParams.pos.x, compParams.pos.y);
+ }
+
+ for (int i = 0; i < params.wires.length; i++)
+ {
+ WireParams wire = params.wires[i];
+ new ModelWire(model, wire.name, componentsByName.get(wire.pin1.compName).getPin(wire.pin1.pinName),
+ componentsByName.get(wire.pin2.compName).getPin(wire.pin2.pinName), wire.path);
+ }
+ }
+
+ /**
+ * Returns {@link LogicModelModifiable}, which describe the components and wires in the given {@link LogicModel}. <br>
+ * Components are serialized using {@link ModelComponent#getIDForSerializing(IdentifyParams)} and
+ * {@link ModelComponent#getParamsForSerializingJSON(IdentifyParams)} <br>
+ *
+ * @author Fabian Stemmler
+ * @author Daniel Kirschten
+ */
+ public static LogicModelParams serialize(LogicModel model, IdentifyParams idParams)
+ {
+ LogicModelParams modelParams = new LogicModelParams(CURRENT_JSON_VERSION);
+
+ Map<String, ModelComponent> components = new HashMap<>(model.getComponentsByName());
+ components.remove(SubmodelComponent.SUBMODEL_INTERFACE_NAME);
+ Set<ComponentParams> componentsParams = new HashSet<>();
+ for (ModelComponent component : components.values())
+ {
+ ComponentParams compParams = new ComponentParams();
+ componentsParams.add(compParams);
+ compParams.pos = new Point(component.getPosX(), component.getPosY());
+ compParams.id = component.getIDForSerializing(idParams);
+ compParams.params = component.getParamsForSerializingJSON(idParams);
+ compParams.name = component.name;
+ }
+ modelParams.components = componentsParams.toArray(ComponentParams[]::new);
+ Arrays.sort(modelParams.components, Comparator.comparing(c -> c.name));
+
+ Collection<ModelWire> wires = model.getWiresByName().values();
+ Set<WireParams> wiresParams = new HashSet<>();
+ for (ModelWire innerWire : wires)
+ {
+ WireParams innerWireParams = new WireParams();
+ wiresParams.add(innerWireParams);
+ PinParams pin1Params = new PinParams(), pin2Params = new PinParams();
+
+ pin1Params.pinName = innerWire.getPin1().name;
+ pin1Params.compName = innerWire.getPin1().component.name;
+ pin2Params.pinName = innerWire.getPin2().name;
+ pin2Params.compName = innerWire.getPin2().component.name;
+ innerWireParams.name = innerWire.name;
+ innerWireParams.pin1 = pin1Params;
+ innerWireParams.pin2 = pin2Params;
+ innerWireParams.path = innerWire.getPath();
+ }
+ modelParams.wires = wiresParams.toArray(WireParams[]::new);
+ Arrays.sort(modelParams.wires, Comparator.comparing(c -> c.name));
+
+ return modelParams;
+ }
+}
\ No newline at end of file
import java.io.IOException;
import java.io.InputStream;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.ModelComponent;
/**
- * For loading JSON {@link GUIComponent}s from other OSGI-Modules or jar-Files.
+ * For loading JSON {@link ModelComponent}s from other OSGI-Modules or jar-Files.
*/
public interface ResourceLoader
{
public double width, height;
public InterfacePinParams[] interfacePins;
public double innerScale;
- public ViewModelParams submodel;
+ public LogicModelParams submodel;
// functionality that needs to be expressed in Java code
public String symbolRendererSnippetID;
import com.google.gson.JsonElement;
-import net.mograsim.logic.model.model.ViewModelModifiable;
+import net.mograsim.logic.model.model.LogicModelModifiable;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
import net.mograsim.logic.model.model.wires.MovablePin;
import net.mograsim.logic.model.model.wires.Pin;
// convenience methods
/**
- * Like {@link #deserialize(ViewModelModifiable, SubmodelComponentParams)}, but first reading the {@link SubmodelComponentParams} from
+ * Like {@link #deserialize(LogicModelModifiable, SubmodelComponentParams)}, but first reading the {@link SubmodelComponentParams} from
* the given file path.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, String sourcePath) throws IOException
+ public static SubmodelComponent deserialize(LogicModelModifiable model, String sourcePath) throws IOException
{
return deserialize(model, JsonHandler.readJson(sourcePath, SubmodelComponentParams.class));
}
/**
- * Like {@link #deserialize(ViewModelModifiable, SubmodelComponentParams, String, JsonElement)}, but first reading the
+ * Like {@link #deserialize(LogicModelModifiable, SubmodelComponentParams, String, JsonElement)}, but first reading the
* {@link SubmodelComponentParams} from the given file path.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, String sourcePath, String idForSerializingOverride,
+ public static SubmodelComponent deserialize(LogicModelModifiable model, String sourcePath, String idForSerializingOverride,
JsonElement paramsForSerializingOverride) throws IOException
{
return deserialize(model, JsonHandler.readJson(sourcePath, SubmodelComponentParams.class), idForSerializingOverride,
}
/**
- * Like {@link #deserialize(ViewModelModifiable, SubmodelComponentParams, String)}, but first reading the
+ * Like {@link #deserialize(LogicModelModifiable, SubmodelComponentParams, String)}, but first reading the
* {@link SubmodelComponentParams} from the given file path.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, String sourcePath, String name) throws IOException
+ public static SubmodelComponent deserialize(LogicModelModifiable model, String sourcePath, String name) throws IOException
{
return deserialize(model, JsonHandler.readJson(sourcePath, SubmodelComponentParams.class), name);
}
/**
- * Like {@link #deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)}, but first reading the
+ * Like {@link #deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)}, but first reading the
* {@link SubmodelComponentParams} from the given file path.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, String sourcePath, String name, String idForSerializingOverride,
+ public static SubmodelComponent deserialize(LogicModelModifiable model, String sourcePath, String name, String idForSerializingOverride,
JsonElement paramsForSerializingOverride) throws IOException
{
return deserialize(model, JsonHandler.readJson(sourcePath, SubmodelComponentParams.class), name, idForSerializingOverride,
}
/**
- * {@link #deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)} with no
+ * {@link #deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)} with no
* <code>idForSerializingOverride</code> set and using the default name.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, SubmodelComponentParams params)
+ public static SubmodelComponent deserialize(LogicModelModifiable model, SubmodelComponentParams params)
{
return deserialize(model, params, null, null, null);
}
/**
- * {@link #deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)} using the default name.
+ * {@link #deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)} using the default name.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, SubmodelComponentParams params, String idForSerializingOverride,
+ public static SubmodelComponent deserialize(LogicModelModifiable model, SubmodelComponentParams params, String idForSerializingOverride,
JsonElement paramsForSerializingOverride)
{
return deserialize(model, params, null, idForSerializingOverride, paramsForSerializingOverride);
}
/**
- * {@link #deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)} with no
+ * {@link #deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)} with no
* <code>idForSerializingOverride</code> set.
*
* @author Daniel Kirschten
*/
- public static SubmodelComponent deserialize(ViewModelModifiable model, SubmodelComponentParams params, String name)
+ public static SubmodelComponent deserialize(LogicModelModifiable model, SubmodelComponentParams params, String name)
{
return deserialize(model, params, name, null, null);
}
}
/**
- * Like {@link #serialize(SubmodelComponent, IdentifierGetter)}, but instead of returning the generated {@link SubmodelComponentParams}
+ * Like {@link #serialize(SubmodelComponent, IdentifyParams)}, but instead of returning the generated {@link SubmodelComponentParams}
* they are written to a file at the given path.
*
* @author Daniel Kirschten
*/
- public static void serialize(SubmodelComponent comp, IdentifierGetter idGetter, String targetPath) throws IOException
+ public static void serialize(SubmodelComponent comp, IdentifyParams idParams, String targetPath) throws IOException
{
- JsonHandler.writeJson(serialize(comp, idGetter), targetPath);
+ JsonHandler.writeJson(serialize(comp, idParams), targetPath);
}
/**
- * {@link #serialize(SubmodelComponent, IdentifierGetter)} using a default {@link IdentifierGetter} (see <code>IdentifierGetter</code>'s
- * {@link IdentifierGetter#IdentifierGetter() default constructor})
+ * {@link #serialize(SubmodelComponent, IdentifyParams)} using the default {@link IdentifyParams} (see <code>IdentifyParams</code>'s
+ * {@link IdentifyParams#IdentifyParams() default constructor})
*
* @author Daniel Kirschten
*/
public static SubmodelComponentParams serialize(SubmodelComponent comp)
{
- return serialize(comp, new IdentifierGetter());
+ return serialize(comp, new IdentifyParams());
}
// "core" methods
* When serializing a <code>SubmodelComponent</code>, it is undesired for every subcomponent to be serialized with its complete inner
* structure. Instead, these sub-<code>SubmodelComponent</code>s should be serialized with the ID and params which were used to
* determine the <code>SubmodelComponentParams</code> defining the sub-<code>SubmodelComponent</code>. Because of this, it is possible
- * to override the ID and params used in {@link #serialize(SubmodelComponent, IdentifierGetter) serialize(...)} to describe this
+ * to override the ID and params used in {@link #serialize(SubmodelComponent, IdentifyParams) serialize(...)} to describe this
* subcomponent. See there for details.
*
* @author Fabian Stemmler
* @author Daniel Kirschten
*/
- @SuppressWarnings("unused") // for GUIWire being created
- public static SubmodelComponent deserialize(ViewModelModifiable model, SubmodelComponentParams params, String name,
+ @SuppressWarnings("unused") // for ModelWire being created
+ public static SubmodelComponent deserialize(LogicModelModifiable model, SubmodelComponentParams params, String name,
String idForSerializingOverride, JsonElement paramsForSerializingOverride)
{
Version version = params.version;
comp.setSize(params.width, params.height);
for (InterfacePinParams iPinParams : params.interfacePins)
// TRISTATE because we don't have a better choice
- comp.addSubmodelInterface(new MovablePin(comp, iPinParams.name, iPinParams.logicWidth,
+ comp.addSubmodelInterface(new MovablePin(model, comp, iPinParams.name, iPinParams.logicWidth,
hasUsageSerialized ? iPinParams.usage : PinUsage.TRISTATE, iPinParams.location.x, iPinParams.location.y));
- ViewModelModifiable submodelModifiable = comp.getSubmodelModifiable();
- ViewModelSerializer.deserialize(comp.getSubmodelModifiable(), params.submodel);
+ LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable();
+ LogicModelSerializer.deserialize(comp.getSubmodelModifiable(), params.submodel);
comp.setSymbolRenderer(SubmodelComponentSnippetSuppliers.symbolRendererSupplier.getSnippetSupplier(params.symbolRendererSnippetID)
.create(comp, params.symbolRendererParams));
comp.setOutlineRenderer(SubmodelComponentSnippetSuppliers.outlineRendererSupplier
/**
* Returns {@link SubmodelComponentParams}, which describe this {@link SubmodelComponent}. <br>
- * See {@link ViewModelSerializer#serialize(net.mograsim.logic.model.model.ViewModel, IdentifierGetter)
- * ViewModelSerializer.serialize(...)} for how subcomponents are serialized.<br>
+ * See {@link LogicModelSerializer#serialize(net.mograsim.logic.model.model.LogicModel, IdentifierGetter)
+ * LogicModelSerializer.serialize(...)} for how subcomponents are serialized.<br>
* CodeSnippets are serialized using the ID defined by <code>idGetter</code> and the params obtained by the respective
* <coce>getParamsForSerializing</code> methods ({@link Renderer#getParamsForSerializing()}).
*
* @author Fabian Stemmler
* @author Daniel Kirschten
*/
- public static SubmodelComponentParams serialize(SubmodelComponent comp, IdentifierGetter idGetter)
+ public static SubmodelComponentParams serialize(SubmodelComponent comp, IdentifyParams idParams)
{
SubmodelComponentParams params = new SubmodelComponentParams(JSON_VERSION_CURRENT_SERIALIZING);
params.innerScale = comp.getSubmodelScale();
- params.submodel = ViewModelSerializer.serialize(comp.submodel, idGetter);
+ params.submodel = LogicModelSerializer.serialize(comp.submodel, idParams);
params.width = comp.getWidth();
params.height = comp.getHeight();
Renderer symbolRenderer = comp.getSymbolRenderer();
if (symbolRenderer != null)
{
- params.symbolRendererSnippetID = idGetter.symbolRendererIDs.apply(symbolRenderer);
- params.symbolRendererParams = symbolRenderer.getParamsForSerializingJSON(idGetter);
+ params.symbolRendererSnippetID = symbolRenderer.getIDForSerializing(idParams);
+ params.symbolRendererParams = symbolRenderer.getParamsForSerializingJSON(idParams);
}
Renderer outlineRenderer = comp.getOutlineRenderer();
if (outlineRenderer != null)
{
- params.outlineRendererSnippetID = idGetter.outlineRendererIDs.apply(outlineRenderer);
- params.outlineRendererParams = outlineRenderer.getParamsForSerializingJSON(idGetter);
+ params.outlineRendererSnippetID = outlineRenderer.getIDForSerializing(idParams);
+ params.outlineRendererParams = outlineRenderer.getParamsForSerializingJSON(idParams);
}
HighLevelStateHandler highLevelStateHandler = comp.getHighLevelStateHandler();
if (highLevelStateHandler != null)
{
- params.highLevelStateHandlerSnippetID = idGetter.highLevelStateHandlerIDs.apply(highLevelStateHandler);
- params.highLevelStateHandlerParams = highLevelStateHandler.getParamsForSerializingJSON(idGetter);
+ params.highLevelStateHandlerSnippetID = highLevelStateHandler.getIDForSerializing(idParams);
+ params.highLevelStateHandlerParams = highLevelStateHandler.getParamsForSerializingJSON(idParams);
}
return params;
+++ /dev/null
-package net.mograsim.logic.model.serializing;
-
-import com.google.gson.JsonElement;
-
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.mograsim.logic.model.util.Version;
-
-public class ViewModelParams extends SerializablePojo
-{
- public ComponentParams[] components;
- public WireParams[] wires;
-
- public ViewModelParams(Version version)
- {
- super(version);
- }
-
- public static class ComponentParams
- {
- public String id;
- public String name;
- public Point pos;
- public JsonElement params;
- }
-
- public static class WireParams
- {
- public PinParams pin1, pin2;
- public String name;
- public Point[] path;
-
- public static class PinParams
- {
- public String compName;
- public String pinName;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-package net.mograsim.logic.model.serializing;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import com.google.gson.JsonElement;
-
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.mograsim.logic.model.model.ViewModel;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
-import net.mograsim.logic.model.serializing.ViewModelParams.ComponentParams;
-import net.mograsim.logic.model.serializing.ViewModelParams.WireParams;
-import net.mograsim.logic.model.serializing.ViewModelParams.WireParams.PinParams;
-import net.mograsim.logic.model.util.JsonHandler;
-import net.mograsim.logic.model.util.Version;
-
-public class ViewModelSerializer
-{
- public static final Version CURRENT_JSON_VERSION = Version.parseSemver("0.1.1");
-
- // convenience methods
- /**
- * Like {@link #deserialize(ViewModelParams)}, but first reading the {@link ViewModelParams} from the given file path.
- *
- * @author Daniel Kirschten
- */
- public static ViewModelModifiable deserialize(String sourcePath) throws IOException
- {
- return deserialize(JsonHandler.readJson(sourcePath, ViewModelParams.class));
- }
-
- /**
- * Like {@link #deserialize(ViewModelModifiable, ViewModelParams)}, but first reading the {@link ViewModelParams} from the given file
- * path.
- *
- * @author Daniel Kirschten
- */
- public static void deserialize(ViewModelModifiable model, String sourcePath) throws IOException
- {
- deserialize(model, JsonHandler.readJson(sourcePath, ViewModelParams.class));
- }
-
- /**
- * Like {@link #deserialize(ViewModelModifiable, ViewModelParams)}, but using a newly created {@link ViewModelModifiable}.
- *
- * @author Daniel Kirschten
- */
- public static ViewModelModifiable deserialize(ViewModelParams params)
- {
- ViewModelModifiable model = new ViewModelModifiable();
- deserialize(model, params);
- return model;
- }
-
- /**
- * Like {@link #serialize(ViewModel)}, but instead of returning the generated {@link ViewModelParams} they are written to a file at the
- * given path.
- *
- * @author Daniel Kirschten
- */
- public static void serialize(ViewModel model, String targetPath) throws IOException
- {
- JsonHandler.writeJson(serialize(model), targetPath);
- }
-
- /**
- * Like {@link #serialize(ViewModel, IdentifierGetter)}, but instead of returning the generated {@link ViewModelParams} they are written
- * to a file at the given path.
- *
- * @author Daniel Kirschten
- */
- public static void serialize(ViewModel model, IdentifierGetter idGetter, String targetPath) throws IOException
- {
- JsonHandler.writeJson(serialize(model, idGetter), targetPath);
- }
-
- /**
- * {@link #serialize(ViewModel, IdentifierGetter)} using a default {@link IdentifierGetter} (see <code>IdentifierGetter</code>'s
- * {@link IdentifierGetter#IdentifierGetter() default constructor})
- *
- * @author Daniel Kirschten
- */
- public static ViewModelParams serialize(ViewModel model)
- {
- return serialize(model, new IdentifierGetter());
- }
-
- // "core" methods
- /**
- * Deserializes components and wires from the specified {@link ViewModelParams} and adds them to the given {@link ViewModelModifiable}.
- *
- * @author Fabian Stemmler
- * @author Daniel Kirschten
- */
- @SuppressWarnings("unused") // for GUIWire being created
- public static void deserialize(ViewModelModifiable model, ViewModelParams params)
- {
- Map<String, GUIComponent> componentsByName = model.getComponentsByName();
- GUIComponent[] components = new GUIComponent[params.components.length];
- for (int i = 0; i < components.length; i++)
- {
- ComponentParams compParams = params.components[i];
- components[i] = IndirectGUIComponentCreator.createComponent(model, compParams.id, compParams.params, compParams.name);
- components[i].moveTo(compParams.pos.x, compParams.pos.y);
- }
-
- for (int i = 0; i < params.wires.length; i++)
- {
- WireParams wire = params.wires[i];
- new GUIWire(model, wire.name, componentsByName.get(wire.pin1.compName).getPin(wire.pin1.pinName),
- componentsByName.get(wire.pin2.compName).getPin(wire.pin2.pinName), wire.path);
- }
- }
-
- /**
- * Returns {@link ViewModelModifiable}, which describe the components and wires in the given {@link ViewModel}. <br>
- * Components are serialized in the following way: <br>
- * If a component is a <code>SubmodelComponent</code> which has been deserialized, and it has an
- * {@link DeserializedSubmodelComponent#idForSerializingOverride idForSerializingOverride} set (e.g. non-null; see
- * {@link SubmodelComponentSerializer#deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)
- * SubmodelComponentSerializer.deserialize(...)}), this ID and the component's
- * {@link DeserializedSubmodelComponent#paramsForSerializingOverride paramsForSerializingOverride} are written.<br>
- * If this case doesn't apply (e.g. if the component is not a <code>SubmodelComponent</code>; or it is a <code>SubmodelComponent</code>,
- * but hasn't been deserialized; or it has no {@link DeserializedSubmodelComponent#idForSerializingOverride idForSerializingOverride}
- * set), the ID defined by <code>idGetter</code> and the params obtained by {@link GUIComponent#getParamsForSerializing() getParams()}
- * are written.
- *
- * @author Fabian Stemmler
- * @author Daniel Kirschten
- */
- public static ViewModelParams serialize(ViewModel model, IdentifierGetter idGetter)
- {
- ViewModelParams modelParams = new ViewModelParams(CURRENT_JSON_VERSION);
-
- Map<String, GUIComponent> components = new HashMap<>(model.getComponentsByName());
- components.remove(SubmodelComponent.SUBMODEL_INTERFACE_NAME);
- Set<ComponentParams> componentsParams = new HashSet<>();
- for (GUIComponent component : components.values())
- {
- ComponentParams compParams = new ComponentParams();
- componentsParams.add(compParams);
- compParams.pos = new Point(component.getPosX(), component.getPosY());
- DeserializedSubmodelComponent innerCompCasted;
- if (component instanceof DeserializedSubmodelComponent
- && (innerCompCasted = (DeserializedSubmodelComponent) component).idForSerializingOverride != null)
- {
- compParams.id = innerCompCasted.idForSerializingOverride;
- compParams.params = innerCompCasted.paramsForSerializingOverride;
- } else
- {
- compParams.id = idGetter.componentIDs.apply(component);
- compParams.params = component.getParamsForSerializingJSON(idGetter);
- }
- compParams.name = component.name;
- }
- modelParams.components = componentsParams.toArray(ComponentParams[]::new);
- Arrays.sort(modelParams.components, Comparator.comparing(c -> c.name));
-
- Collection<GUIWire> wires = model.getWiresByName().values();
- Set<WireParams> wiresParams = new HashSet<>();
- for (GUIWire innerWire : wires)
- {
- WireParams innerWireParams = new WireParams();
- wiresParams.add(innerWireParams);
- PinParams pin1Params = new PinParams(), pin2Params = new PinParams();
-
- pin1Params.pinName = innerWire.getPin1().name;
- pin1Params.compName = innerWire.getPin1().component.name;
- pin2Params.pinName = innerWire.getPin2().name;
- pin2Params.compName = innerWire.getPin2().component.name;
- innerWireParams.name = innerWire.name;
- innerWireParams.pin1 = pin1Params;
- innerWireParams.pin2 = pin2Params;
- innerWireParams.path = innerWire.getPath();
- }
- modelParams.wires = wiresParams.toArray(WireParams[]::new);
- Arrays.sort(modelParams.wires, Comparator.comparing(c -> c.name));
-
- return modelParams;
- }
-}
\ No newline at end of file
mograsim version: 0.1.3
{
- "GUIManualSwitch": "class:net.mograsim.logic.model.model.components.atomic.GUIManualSwitch",
- "GUIBitDisplay": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
- "GUIAndGate": "class:net.mograsim.logic.model.model.components.atomic.GUIAndGate",
- "GUIMerger": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
- "GUINandGate": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
- "GUIOrGate": "class:net.mograsim.logic.model.model.components.atomic.GUIOrGate",
- "GUISplitter": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
- "GUITriStateBuffer": "class:net.mograsim.logic.model.model.components.atomic.GUITriStateBuffer",
- "GUIClock": "class:net.mograsim.logic.model.model.components.atomic.GUIClock",
- "TextComponent": "class:net.mograsim.logic.model.model.components.atomic.TextComponent",
- "WireCrossPoint": "class:net.mograsim.logic.model.model.wires.WireCrossPoint"
+ "AndGate": "class:net.mograsim.logic.model.model.components.atomic.ModelAndGate",
+ "BitDisplay": "class:net.mograsim.logic.model.model.components.atomic.ModelBitDisplay",
+ "Clock": "class:net.mograsim.logic.model.model.components.atomic.ModelClock",
+ "FixedOutput": "class:net.mograsim.logic.model.model.components.atomic.ModelFixedOutput",
+ "ManualSwitch": "class:net.mograsim.logic.model.model.components.atomic.ModelManualSwitch",
+ "Merger": "class:net.mograsim.logic.model.model.components.atomic.ModelMerger",
+ "NandGate": "class:net.mograsim.logic.model.model.components.atomic.ModelNandGate",
+ "OrGate": "class:net.mograsim.logic.model.model.components.atomic.ModelOrGate",
+ "Splitter": "class:net.mograsim.logic.model.model.components.atomic.ModelSplitter",
+ "TriStateBuffer": "class:net.mograsim.logic.model.model.components.atomic.ModelTriStateBuffer",
+ "TextComponent": "class:net.mograsim.logic.model.model.components.atomic.ModelTextComponent",
+ "WireCrossPoint": "class:net.mograsim.logic.model.model.wires.ModelWireCrossPoint"
}
\ No newline at end of file
package net.mograsim.logic.model.snippets;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.serializing.JSONSerializable;
/**
* See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
*
* @see #setHighLevelState(String, Object)
- * @see GUIComponent#getHighLevelState(String)
+ * @see ModelComponent#getHighLevelState(String)
*
* @author Daniel Kirschten
*/
* See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
*
* @see #getHighLevelState(String)
- * @see GUIComponent#setHighLevelState(String, Object)
+ * @see ModelComponent#setHighLevelState(String, Object)
*
* @author Daniel Kirschten
*/
import java.io.InputStream;
import java.util.Map;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler;
import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
public class SubmodelComponentSnippetSuppliers
{
- public static final CodeSnippetSupplier<GUIComponent, Renderer> symbolRendererSupplier;
- public static final CodeSnippetSupplier<GUIComponent, Renderer> outlineRendererSupplier;
+ public static final CodeSnippetSupplier<ModelComponent, Renderer> symbolRendererSupplier;
+ public static final CodeSnippetSupplier<ModelComponent, Renderer> outlineRendererSupplier;
public static final CodeSnippetSupplier<SubmodelComponent, HighLevelStateHandler> highLevelStateHandlerSupplier;
static
package net.mograsim.logic.model.snippets.highlevelstatehandlers;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.HighLevelStateHandler;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
}
@Override
- public Void getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "default";
+ }
+
+ @Override
+ public Void getParamsForSerializing(IdentifyParams idParams)
{
return null;
}
import java.util.function.Function;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.HighLevelStateHandler;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
}
@Override
- public StandardHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "standard";
+ }
+
+ @Override
+ public StandardHighLevelStateHandlerParams getParamsForSerializing(IdentifyParams idParams)
{
StandardHighLevelStateHandlerParams params = new StandardHighLevelStateHandlerParams();
params.subcomponentHighLevelStates = new HashMap<>();
String stateID = e.getKey();
SubcomponentHighLevelStateHandler handler = e.getValue();
SubcomponentHighLevelStateHandlerParams handlerParams = new SubcomponentHighLevelStateHandlerParams();
- handlerParams.id = idGetter.subcomponentHighLevelStateHandlerIDs.apply(handler);
- handlerParams.params = handler.getParamsForSerializingJSON(idGetter);
+ handlerParams.id = handler.getIDForSerializing(idParams);
+ handlerParams.params = handler.getParamsForSerializingJSON(idParams);
params.subcomponentHighLevelStates.put(stateID, handlerParams);
}
for (Entry<String, AtomicHighLevelStateHandler> e : atomicHighLevelStateHandlers.entrySet())
String stateID = e.getKey();
AtomicHighLevelStateHandler handler = e.getValue();
AtomicHighLevelStateHandlerParams handlerParams = new AtomicHighLevelStateHandlerParams();
- handlerParams.id = idGetter.atomicHighLevelStateHandlerIDs.apply(handler);
- handlerParams.params = handler.getParamsForSerializingJSON(idGetter);
+ handlerParams.id = handler.getIDForSerializing(idParams);
+ handlerParams.params = handler.getParamsForSerializingJSON(idParams);
params.atomicHighLevelStates.put(stateID, handlerParams);
}
return params;
import net.mograsim.logic.core.types.Bit;
import net.mograsim.logic.core.types.BitVector;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
}
@Override
- public BitVectorSplittingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "bitVectorSplitting";
+ }
+
+ @Override
+ public BitVectorSplittingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifyParams idParams)
{
BitVectorSplittingAtomicHighLevelStateHandlerParams params = new BitVectorSplittingAtomicHighLevelStateHandlerParams();
params.vectorPartTargets = new ArrayList<>(vectorPartTargets);
package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
public class DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
{
private final SubmodelComponent parentComponent;
- private GUIComponent delegateTarget;
+ private ModelComponent delegateTarget;
private String subStateID;
public DelegatingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
}
}
- public void set(GUIComponent delegateTarget, String subStateID)
+ public void set(ModelComponent delegateTarget, String subStateID)
{
setDelegateTarget(delegateTarget);
setSubStateID(subStateID);
}
- public void setDelegateTarget(GUIComponent delegateTarget)
+ public void setDelegateTarget(ModelComponent delegateTarget)
{
if (delegateTarget == null)
this.delegateTarget = parentComponent;
}
@Override
- public DelegatingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "delegating";
+ }
+
+ @Override
+ public DelegatingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifyParams idParams)
{
DelegatingAtomicHighLevelStateHandlerParams params = new DelegatingAtomicHighLevelStateHandlerParams();
params.delegateTarget = delegateTarget.name;
import net.mograsim.logic.core.types.Bit;
import net.mograsim.logic.core.types.BitVector;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
{
private SubmodelComponent component;
private int logicWidth;
- private final List<GUIWire> wiresToForce;
- private final List<GUIWire> wiresToForceInverted;
+ private final List<ModelWire> wiresToForce;
+ private final List<ModelWire> wiresToForceInverted;
public WireForcingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
{
this.wiresToForceInverted = new ArrayList<>();
if (params != null)
{
- Map<String, GUIWire> wiresByName = component.submodel.getWiresByName();
- setWiresToForce(params.wiresToForce.stream().map((Function<String, GUIWire>) wiresByName::get).collect(Collectors.toList()),
- params.wiresToForceInverted.stream().map((Function<String, GUIWire>) wiresByName::get).collect(Collectors.toList()));
+ Map<String, ModelWire> wiresByName = component.submodel.getWiresByName();
+ setWiresToForce(params.wiresToForce.stream().map((Function<String, ModelWire>) wiresByName::get).collect(Collectors.toList()),
+ params.wiresToForceInverted.stream().map((Function<String, ModelWire>) wiresByName::get).collect(Collectors.toList()));
}
}
- public void set(List<GUIWire> wiresToForce, List<GUIWire> wiresToForceInverted)
+ public void set(List<ModelWire> wiresToForce, List<ModelWire> wiresToForceInverted)
{
setWiresToForce(wiresToForce, wiresToForceInverted);
}
- public void setWiresToForce(List<GUIWire> wiresToForce, List<GUIWire> wiresToForceInverted)
+ public void setWiresToForce(List<ModelWire> wiresToForce, List<ModelWire> wiresToForceInverted)
{
clearWiresToForce();
- for (GUIWire wire : wiresToForce)
+ for (ModelWire wire : wiresToForce)
addWireToForce(wire, false);
- for (GUIWire wire : wiresToForceInverted)
+ for (ModelWire wire : wiresToForceInverted)
addWireToForce(wire, true);
}
- public void addWireToForce(GUIWire wire, boolean inverted)
+ public void addWireToForce(ModelWire wire, boolean inverted)
{
if (component.submodel.getWiresByName().get(wire.name) != wire)
throw new IllegalArgumentException("Can only force wires belonging to the parent component of this handler");
public Object getHighLevelState()
{
BitVector result = BitVector.of(Bit.ZERO, logicWidth);
- for (GUIWire wire : wiresToForceInverted)
- if (wire.hasLogicModelBinding())
+ for (ModelWire wire : wiresToForceInverted)
+ if (wire.hasCoreModelBinding())
result = result.or(wire.getWireValues());
result = result.not();
- for (GUIWire wire : wiresToForce)
- if (wire.hasLogicModelBinding())
+ for (ModelWire wire : wiresToForce)
+ if (wire.hasCoreModelBinding())
result = result.and(wire.getWireValues());
return result;
}
vector = BitVector.of((Bit) newState);
else
vector = (BitVector) newState;
- for (GUIWire wire : wiresToForce)
- if (wire.hasLogicModelBinding())
+ for (ModelWire wire : wiresToForce)
+ if (wire.hasCoreModelBinding())
wire.forceWireValues(vector);
vector = vector.not();
- for (GUIWire wire : wiresToForceInverted)
- if (wire.hasLogicModelBinding())
+ for (ModelWire wire : wiresToForceInverted)
+ if (wire.hasCoreModelBinding())
wire.forceWireValues(vector);
}
@Override
- public WireForcingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "wireForcing";
+ }
+
+ @Override
+ public WireForcingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifyParams idParams)
{
WireForcingAtomicHighLevelStateHandlerParams params = new WireForcingAtomicHighLevelStateHandlerParams();
params.wiresToForce = wiresToForce.stream().map(w -> w.name).collect(Collectors.toList());
package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
public class DelegatingSubcomponentHighLevelStateHandler implements SubcomponentHighLevelStateHandler
{
private final SubmodelComponent parentComponent;
- private GUIComponent delegateTarget;
+ private ModelComponent delegateTarget;
private String prefix;
public DelegatingSubcomponentHighLevelStateHandler(HighLevelStateHandlerContext context)
}
}
- public void set(GUIComponent delegateTarget, String prefix)
+ public void set(ModelComponent delegateTarget, String prefix)
{
setDelegateTarget(delegateTarget);
setPrefix(prefix);
}
- public void setDelegateTarget(GUIComponent delegateTarget)
+ public void setDelegateTarget(ModelComponent delegateTarget)
{
if (delegateTarget == null)
this.delegateTarget = parentComponent;
}
@Override
- public DelegatingSubcomponentHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "delegating";
+ }
+
+ @Override
+ public DelegatingSubcomponentHighLevelStateHandlerParams getParamsForSerializing(IdentifyParams idParams)
{
DelegatingSubcomponentHighLevelStateHandlerParams params = new DelegatingSubcomponentHighLevelStateHandlerParams();
params.delegateTarget = delegateTarget.name;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.Renderer;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
public class DefaultOutlineRenderer implements Renderer
{
- private final GUIComponent component;
+ private final ModelComponent component;
- public DefaultOutlineRenderer(GUIComponent component)
+ public DefaultOutlineRenderer(ModelComponent component)
{
this(component, null);
}
- public DefaultOutlineRenderer(GUIComponent component, @SuppressWarnings("unused") Void params)
+ public DefaultOutlineRenderer(ModelComponent component, @SuppressWarnings("unused") Void params)
{
this.component = component;
}
}
@Override
- public Void getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "default";
+ }
+
+ @Override
+ public Void getParamsForSerializing(IdentifyParams idParams)
{
return null;
}
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.Renderer;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
*/
public class CenteredTextSymbolRenderer implements Renderer
{
- private final GUIComponent component;
+ private final ModelComponent component;
private final String text;
private final double fontHeight;
- public CenteredTextSymbolRenderer(GUIComponent component, CenteredTextParams params)
+ public CenteredTextSymbolRenderer(ModelComponent component, CenteredTextParams params)
{
this.component = component;
this.text = params.text;
}
@Override
- public CenteredTextParams getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "centeredText";
+ }
+
+ @Override
+ public CenteredTextParams getParamsForSerializing(IdentifyParams idParams)
{
CenteredTextParams params = new CenteredTextParams();
params.text = text;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.Renderer;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
{
private static final String id = "<Symbol\nunknown>";
- private final GUIComponent component;
+ private final ModelComponent component;
- public DefaultSymbolRenderer(GUIComponent component)
+ public DefaultSymbolRenderer(ModelComponent component)
{
this(component, null);
}
- public DefaultSymbolRenderer(GUIComponent component, @SuppressWarnings("unused") Void params)
+ public DefaultSymbolRenderer(ModelComponent component, @SuppressWarnings("unused") Void params)
{
this.component = component;
}
}
@Override
- public Void getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "default";
+ }
+
+ @Override
+ public Void getParamsForSerializing(IdentifyParams idParams)
{
return null;
}
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.Renderer;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
public class PinNamesSymbolRenderer implements Renderer
{
- private final GUIComponent component;
+ private final ModelComponent component;
private final Map<Pin, Position> pinPositions;
private final double pinLabelHeight;
private final double pinLabelMargin;
- public PinNamesSymbolRenderer(GUIComponent component, PinNamesParams params)
+ public PinNamesSymbolRenderer(ModelComponent component, PinNamesParams params)
{
this.component = component;
this.pinPositions = new HashMap<>();
}
@Override
- public PinNamesParams getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "pinNames";
+ }
+
+ @Override
+ public PinNamesParams getParamsForSerializing(IdentifyParams idParams)
{
PinNamesParams params = new PinNamesParams();
params.pinNamePositions = new HashMap<>();
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.ModelComponent;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.logic.model.snippets.Renderer;
import net.mograsim.logic.model.snippets.SnippetDefinintion;
import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
*/
public class SimpleRectangularLikeSymbolRenderer implements Renderer
{
- private final GUIComponent component;
+ private final ModelComponent component;
private final String centerText;
private final double centerTextHeight;
private final double horizontalComponentCenter;
private final double pinLabelHeight;
private final double pinLabelMargin;
- public SimpleRectangularLikeSymbolRenderer(GUIComponent component, SimpleRectangularLikeParams params)
+ public SimpleRectangularLikeSymbolRenderer(ModelComponent component, SimpleRectangularLikeParams params)
{
this.component = component;
this.centerText = params.centerText;
}
@Override
- public SimpleRectangularLikeParams getParamsForSerializing(IdentifierGetter idGetter)
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "simpleRectangularLike";
+ }
+
+ @Override
+ public SimpleRectangularLikeParams getParamsForSerializing(IdentifyParams idParams)
{
SimpleRectangularLikeParams params = new SimpleRectangularLikeParams();
params.centerText = centerText;
package net.mograsim.logic.model.util;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.ModelWire;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.WireCrossPoint;
+import net.mograsim.logic.model.model.wires.ModelWireCrossPoint;
public class ModellingTool
{
- private ViewModelModifiable model;
+ private LogicModelModifiable model;
- ModellingTool(ViewModelModifiable model)
+ ModellingTool(LogicModelModifiable model)
{
this.model = model;
}
- public GUIWire connect(GUIComponent a, GUIComponent b, String pinA, String pinB)
+ public ModelWire connect(ModelComponent a, ModelComponent b, String pinA, String pinB)
{
return connect(null, a, b, pinA, pinB);
}
- public GUIWire connect(WireCrossPoint a, GUIComponent b, String pinB)
+ public ModelWire connect(ModelWireCrossPoint a, ModelComponent b, String pinB)
{
return connect(null, a, b, pinB);
}
- public GUIWire connect(Pin a, GUIComponent b, String pinB)
+ public ModelWire connect(Pin a, ModelComponent b, String pinB)
{
return connect(null, a, b, pinB);
}
- public GUIWire connect(GUIComponent a, WireCrossPoint b, String pinA)
+ public ModelWire connect(ModelComponent a, ModelWireCrossPoint b, String pinA)
{
return connect(null, a, b, pinA);
}
- public GUIWire connect(WireCrossPoint a, WireCrossPoint b)
+ public ModelWire connect(ModelWireCrossPoint a, ModelWireCrossPoint b)
{
return connect(null, a, b);
}
- public GUIWire connect(Pin a, WireCrossPoint b)
+ public ModelWire connect(Pin a, ModelWireCrossPoint b)
{
return connect(null, a, b);
}
- public GUIWire connect(GUIComponent a, Pin b, String pinA)
+ public ModelWire connect(ModelComponent a, Pin b, String pinA)
{
return connect(null, a, b, pinA);
}
- public GUIWire connect(WireCrossPoint a, Pin b)
+ public ModelWire connect(ModelWireCrossPoint a, Pin b)
{
return connect(null, a, b);
}
- public GUIWire connect(Pin a, Pin b)
+ public ModelWire connect(Pin a, Pin b)
{
return connect(null, a, b);
}
- public GUIWire connect(String name, GUIComponent a, GUIComponent b, String pinA, String pinB)
+ public ModelWire connect(String name, ModelComponent a, ModelComponent b, String pinA, String pinB)
{
return connect(name, a.getPin(pinA), b.getPin(pinB));
}
- public GUIWire connect(String name, WireCrossPoint a, GUIComponent b, String pinB)
+ public ModelWire connect(String name, ModelWireCrossPoint a, ModelComponent b, String pinB)
{
return connect(name, a.getPin(), b.getPin(pinB));
}
- public GUIWire connect(String name, Pin a, GUIComponent b, String pinB)
+ public ModelWire connect(String name, Pin a, ModelComponent b, String pinB)
{
return connect(name, a, b.getPin(pinB));
}
- public GUIWire connect(String name, GUIComponent a, WireCrossPoint b, String pinA)
+ public ModelWire connect(String name, ModelComponent a, ModelWireCrossPoint b, String pinA)
{
return connect(name, a.getPin(pinA), b.getPin());
}
- public GUIWire connect(String name, WireCrossPoint a, WireCrossPoint b)
+ public ModelWire connect(String name, ModelWireCrossPoint a, ModelWireCrossPoint b)
{
return connect(name, a.getPin(), b.getPin());
}
- public GUIWire connect(String name, Pin a, WireCrossPoint b)
+ public ModelWire connect(String name, Pin a, ModelWireCrossPoint b)
{
return connect(name, a, b.getPin());
}
- public GUIWire connect(String name, GUIComponent a, Pin b, String pinA)
+ public ModelWire connect(String name, ModelComponent a, Pin b, String pinA)
{
return connect(name, a.getPin(pinA), b);
}
- public GUIWire connect(String name, WireCrossPoint a, Pin b)
+ public ModelWire connect(String name, ModelWireCrossPoint a, Pin b)
{
return connect(name, a.getPin(), b);
}
- public GUIWire connect(String name, Pin a, Pin b)
+ public ModelWire connect(String name, Pin a, Pin b)
{
- return new GUIWire(model, name, a, b);
+ return new ModelWire(model, name, a, b);
}
- public static ModellingTool createFor(ViewModelModifiable model)
+ public static ModellingTool createFor(LogicModelModifiable model)
{
return new ModellingTool(model);
}
package net.mograsim.machine;
-import net.mograsim.logic.core.components.Clock;
+import net.mograsim.logic.core.components.CoreClock;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.model.model.ViewModel;
import net.mograsim.machine.mi.MicroInstructionMemory;
+import net.mograsim.logic.model.model.LogicModel;
public interface Machine {
MachineDefinition getDefinition();
void reset();
- ViewModel getModel();
+ LogicModel getModel();
- Clock getClock();
+ CoreClock getClock();
BitVector getRegister(Register r);
+++ /dev/null
-package net.mograsim.machine.standard.memory;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.atomic.GUIAndGate;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
-import net.mograsim.logic.model.snippets.Renderer;
-import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
-import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer;
-import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer.CenteredTextParams;
-import net.mograsim.logic.model.util.JsonHandler;
-import net.mograsim.machine.MainMemoryDefinition;
-
-public class GUIMemoryWA extends GUIComponent
-{
- private final MainMemoryDefinition definition;
- private final Pin addrPin, dataPin, rWPin;
- private WordAddressableMemoryComponent memory;
- private final static int width = 100, height = 300;
- private Renderer symbolRenderer;
- private Renderer outlineRenderer;
-
- public GUIMemoryWA(ViewModelModifiable model, MainMemoryDefinition definition, String name)
- {
- super(model, name);
- this.definition = definition;
-
- CenteredTextParams renderer1Params = new CenteredTextParams();
- renderer1Params.text = "RAM";
- renderer1Params.fontHeight = 24;
- this.symbolRenderer = new CenteredTextSymbolRenderer(this, renderer1Params);
- this.outlineRenderer = new DefaultOutlineRenderer(this);
-
- setSize(width, height);
- //TODO check the usages
- addPin(addrPin = new Pin(this, "A", definition.getMemoryAddressBits(), PinUsage.INPUT, 0, 10));
- addPin(dataPin = new Pin(this, "D", definition.getCellWidth(), PinUsage.TRISTATE, 0, 30));
- addPin(rWPin = new Pin(this, "RW", 1, PinUsage.INPUT, 0, 50));
- }
-
- public Pin getAddressPin()
- {
- return addrPin;
- }
-
- public Pin getDataPin()
- {
- return dataPin;
- }
-
- public Pin getReadWritePin()
- {
- return rWPin;
- }
-
- public void setLogicModelBinding(WordAddressableMemoryComponent memory)
- {
- this.memory = memory;
- }
-
- public MainMemoryDefinition getDefinition()
- {
- return definition;
- }
-
- public WordAddressableMemoryComponent getMemory()
- {
- return memory;
- }
-
- @Override
- public void render(GeneralGC gc, Rectangle visibleRegion)
- {
- symbolRenderer.render(gc, visibleRegion);
- outlineRenderer.render(gc, visibleRegion);
- }
-
- @Override
- public GUIMemoryWAParams getParamsForSerializing(IdentifierGetter idGetter)
- {
- GUIMemoryWAParams params = new GUIMemoryWAParams();
- params.addrBits = definition.getMemoryAddressBits();
- params.cellWidth = definition.getCellWidth();
- params.minAddr = definition.getMinimalAddress();
- params.maxAddr = definition.getMaximalAddress();
- return params;
- }
-
- static
- {
- ViewLogicModelAdapter.addComponentAdapter(new WordAddressableMemoryAdapter());
- IndirectGUIComponentCreator.setComponentSupplier(GUIAndGate.class.getCanonicalName(), (m, p, n) ->
- {
- GUIMemoryWAParams params = JsonHandler.fromJsonTree(p, GUIMemoryWAParams.class);
- return new GUIMemoryWA(m, MainMemoryDefinition.create(params.addrBits, params.cellWidth, params.minAddr, params.maxAddr), n);
- });
- }
-
- public static class GUIMemoryWAParams
- {
- public int addrBits;
- public int cellWidth;
- public long minAddr;
- public long maxAddr;
- }
-}
--- /dev/null
+package net.mograsim.machine.standard.memory;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.atomic.ModelAndGate;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.Renderer;
+import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
+import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer;
+import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer.CenteredTextParams;
+import net.mograsim.logic.model.util.JsonHandler;
+import net.mograsim.machine.MainMemoryDefinition;
+
+public class ModelMemoryWA extends ModelComponent
+{
+ private final MainMemoryDefinition definition;
+ private final Pin addrPin, dataPin, rWPin;
+ private WordAddressableMemoryComponent memory;
+ private final static int width = 100, height = 300;
+ private Renderer symbolRenderer;
+ private Renderer outlineRenderer;
+
+ public ModelMemoryWA(LogicModelModifiable model, MainMemoryDefinition definition, String name)
+ {
+ super(model, name,false);
+ this.definition = definition;
+
+ CenteredTextParams renderer1Params = new CenteredTextParams();
+ renderer1Params.text = "RAM";
+ renderer1Params.fontHeight = 24;
+ this.symbolRenderer = new CenteredTextSymbolRenderer(this, renderer1Params);
+ this.outlineRenderer = new DefaultOutlineRenderer(this);
+
+ setSize(width, height);
+ //TODO check the usages
+ addPin(addrPin = new Pin(model, this, "A", definition.getMemoryAddressBits(), PinUsage.INPUT, 0, 10));
+ addPin(dataPin = new Pin(model, this, "D", definition.getCellWidth(), PinUsage.TRISTATE, 0, 30));
+ addPin(rWPin = new Pin(model, this, "RW", 1, PinUsage.INPUT, 0, 50));
+
+ init();
+ }
+
+ public Pin getAddressPin()
+ {
+ return addrPin;
+ }
+
+ public Pin getDataPin()
+ {
+ return dataPin;
+ }
+
+ public Pin getReadWritePin()
+ {
+ return rWPin;
+ }
+
+ public void setCoreModelBinding(WordAddressableMemoryComponent memory)
+ {
+ this.memory = memory;
+ }
+
+ public MainMemoryDefinition getDefinition()
+ {
+ return definition;
+ }
+
+ public WordAddressableMemoryComponent getMemory()
+ {
+ return memory;
+ }
+
+ @Override
+ public void render(GeneralGC gc, Rectangle visibleRegion)
+ {
+ symbolRenderer.render(gc, visibleRegion);
+ outlineRenderer.render(gc, visibleRegion);
+ }
+
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return "MemoryWA";
+ }
+
+ @Override
+ public ModelMemoryWAParams getParamsForSerializing(IdentifyParams idParams)
+ {
+ ModelMemoryWAParams params = new ModelMemoryWAParams();
+ params.addrBits = definition.getMemoryAddressBits();
+ params.cellWidth = definition.getCellWidth();
+ params.minAddr = definition.getMinimalAddress();
+ params.maxAddr = definition.getMaximalAddress();
+ return params;
+ }
+
+ static
+ {
+ LogicCoreAdapter.addComponentAdapter(new WordAddressableMemoryAdapter());
+ IndirectModelComponentCreator.setComponentSupplier(ModelAndGate.class.getCanonicalName(), (m, p, n) ->
+ {
+ ModelMemoryWAParams params = JsonHandler.fromJsonTree(p, ModelMemoryWAParams.class);
+ return new ModelMemoryWA(m, MainMemoryDefinition.create(params.addrBits, params.cellWidth, params.minAddr, params.maxAddr), n);
+ });
+ }
+
+ public static class ModelMemoryWAParams
+ {
+ public int addrBits;
+ public int cellWidth;
+ public long minAddr;
+ public long maxAddr;
+ }
+}
import java.util.Map;
import net.mograsim.logic.core.timeline.Timeline;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
import net.mograsim.logic.model.modeladapter.componentadapters.ComponentAdapter;
-public class WordAddressableMemoryAdapter implements ComponentAdapter<GUIMemoryWA>
+public class WordAddressableMemoryAdapter implements ComponentAdapter<ModelMemoryWA>
{
@Override
- public Class<GUIMemoryWA> getSupportedClass()
+ public Class<ModelMemoryWA> getSupportedClass()
{
- return GUIMemoryWA.class;
+ return ModelMemoryWA.class;
}
@SuppressWarnings("unused")
@Override
- public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIMemoryWA guiComponent,
- Map<Pin, Wire> logicWiresPerPin)
+ public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, ModelMemoryWA modelComponent,
+ Map<Pin, CoreWire> logicWiresPerPin)
{
- ReadWriteEnd data = logicWiresPerPin.get(guiComponent.getDataPin()).createReadWriteEnd();
- ReadEnd address = logicWiresPerPin.get(guiComponent.getAddressPin()).createReadOnlyEnd();
- ReadEnd mode = logicWiresPerPin.get(guiComponent.getReadWritePin()).createReadOnlyEnd();
- new WordAddressableMemoryComponent(timeline, 2, guiComponent.getDefinition(), data, mode, address);
+ ReadWriteEnd data = logicWiresPerPin.get(modelComponent.getDataPin()).createReadWriteEnd();
+ ReadEnd address = logicWiresPerPin.get(modelComponent.getAddressPin()).createReadOnlyEnd();
+ ReadEnd mode = logicWiresPerPin.get(modelComponent.getReadWritePin()).createReadOnlyEnd();
+ WordAddressableMemoryComponent mem = new WordAddressableMemoryComponent(timeline, 2, modelComponent.getDefinition(), data, mode, address);
+ modelComponent.setCoreModelBinding(mem);
}
}
import java.util.List;
-import net.mograsim.logic.core.components.BasicComponent;
+import net.mograsim.logic.core.components.BasicCoreComponent;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
import net.mograsim.machine.MainMemoryDefinition;
/**
* A memory component that only allows access to words of a specific width
*/
-public class WordAddressableMemoryComponent extends BasicComponent
+public class WordAddressableMemoryComponent extends BasicCoreComponent
{
private final WordAddressableMemory memory;
private final static Bit read = Bit.ONE;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.core.types.Bit;
import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.Wire;
-import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
+import net.mograsim.logic.core.wires.CoreWire;
+import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
import net.mograsim.machine.MainMemoryDefinition;
class WordAddressableMemoryTest {
@Test
public void wordAddressableMemoryLargeTest()
{
- Wire rW = new Wire(t, 1, 2);
- Wire data = new Wire(t, 16, 2);
- Wire address = new Wire(t, 64, 2);
+ CoreWire rW = new CoreWire(t, 1, 2);
+ CoreWire data = new CoreWire(t, 16, 2);
+ CoreWire address = new CoreWire(t, 64, 2);
ReadWriteEnd rWI = rW.createReadWriteEnd();
ReadWriteEnd dataI = data.createReadWriteEnd();
ReadWriteEnd addressI = address.createReadWriteEnd();
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.model.LogicExecuter;
import net.mograsim.logic.model.LogicUICanvas;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
-import net.mograsim.logic.model.model.components.atomic.GUINotGate;
-import net.mograsim.logic.model.model.components.atomic.GUIOrGate;
-import net.mograsim.logic.model.model.wires.GUIWire;
-import net.mograsim.logic.model.model.wires.WireCrossPoint;
-import net.mograsim.logic.model.modeladapter.LogicModelParameters;
-import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
+import net.mograsim.logic.model.model.components.atomic.ModelNotGate;
+import net.mograsim.logic.model.model.components.atomic.ModelOrGate;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.model.wires.ModelWireCrossPoint;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
+import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
import net.mograsim.preferences.Preferences;
public class SimulationPreview implements IThemePreview
// TODO this will change the global preferences; so if another LogicUICanvas redraws, it will use the "new" colors too.
Preferences.setPreferences(currentThemePreferences);
- ViewModelModifiable model = new ViewModelModifiable();
- LogicModelParameters params = new LogicModelParameters();
+ LogicModelModifiable model = new LogicModelModifiable();
+ CoreModelParameters params = new CoreModelParameters();
params.gateProcessTime = 50;
params.wireTravelTime = 10;
- GUIManualSwitch rIn = new GUIManualSwitch(model, 1);
+ ModelManualSwitch rIn = new ModelManualSwitch(model, 1);
rIn.moveTo(10, 10);
- GUIManualSwitch sIn = new GUIManualSwitch(model, 1);
+ ModelManualSwitch sIn = new ModelManualSwitch(model, 1);
sIn.moveTo(10, 70);
- GUIOrGate or1 = new GUIOrGate(model, 1);
+ ModelOrGate or1 = new ModelOrGate(model, 1);
or1.moveTo(70, 12.5);
- new GUIWire(model, rIn.getOutputPin(), or1.getPin("A"));
+ new ModelWire(model, rIn.getOutputPin(), or1.getPin("A"));
- GUIOrGate or2 = new GUIOrGate(model, 1);
+ ModelOrGate or2 = new ModelOrGate(model, 1);
or2.moveTo(70, 62.5);
- new GUIWire(model, sIn.getOutputPin(), or2.getPin("B"));
+ new ModelWire(model, sIn.getOutputPin(), or2.getPin("B"));
- GUINotGate not1 = new GUINotGate(model, 1);
+ ModelNotGate not1 = new ModelNotGate(model, 1);
not1.moveTo(110, 17.5);
- new GUIWire(model, or1.getPin("Y"), not1.getPin("A"));
+ new ModelWire(model, or1.getPin("Y"), not1.getPin("A"));
- GUINotGate not2 = new GUINotGate(model, 1);
+ ModelNotGate not2 = new ModelNotGate(model, 1);
not2.moveTo(110, 67.5);
- new GUIWire(model, or2.getPin("Y"), not2.getPin("A"));
+ new ModelWire(model, or2.getPin("Y"), not2.getPin("A"));
- WireCrossPoint p1 = new WireCrossPoint(model, 1);
+ ModelWireCrossPoint p1 = new ModelWireCrossPoint(model, 1);
p1.moveCenterTo(140, 22.5);
- new GUIWire(model, not1.getPin("Y"), p1);
- new GUIWire(model, p1, or2.getPin("A"), new Point(140, 35), new Point(50, 60), new Point(50, 67.5));
+ new ModelWire(model, not1.getPin("Y"), p1);
+ new ModelWire(model, p1, or2.getPin("A"), new Point(140, 35), new Point(50, 60), new Point(50, 67.5));
- WireCrossPoint p2 = new WireCrossPoint(model, 1);
+ ModelWireCrossPoint p2 = new ModelWireCrossPoint(model, 1);
p2.moveCenterTo(140, 72.5);
- new GUIWire(model, not2.getPin("Y"), p2);
- new GUIWire(model, p2, or1.getPin("B"), new Point(140, 60), new Point(50, 35), new Point(50, 27.5));
+ new ModelWire(model, not2.getPin("Y"), p2);
+ new ModelWire(model, p2, or1.getPin("B"), new Point(140, 60), new Point(50, 35), new Point(50, 27.5));
- WireCrossPoint o1 = new WireCrossPoint(model, 1);
+ ModelWireCrossPoint o1 = new ModelWireCrossPoint(model, 1);
o1.moveCenterTo(150, 22.5);
- new GUIWire(model, p1, o1);
+ new ModelWire(model, p1, o1);
- WireCrossPoint o2 = new WireCrossPoint(model, 1);
+ ModelWireCrossPoint o2 = new ModelWireCrossPoint(model, 1);
o2.moveCenterTo(150, 72.5);
- new GUIWire(model, p2, o2);
+ new ModelWire(model, p2, o2);
- Timeline t = ViewLogicModelAdapter.convert(model, params);
+ Timeline t = LogicCoreAdapter.convert(model, params);
exec = new LogicExecuter(t);
rIn.clicked(0, 0);