public Connector(Timeline timeline, ReadWriteEnd a, ReadWriteEnd b)
{
super(timeline);
- if (a.length() != b.length())
- throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.length(), b.length()));
+ if (a.width() != b.width())
+ throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.width(), b.width()));
this.a = a;
this.b = b;
a.registerObserver(this);
private int selected = -1;
/**
- * Output {@link Wire}s and in must be of uniform length
+ * Output {@link Wire}s and in must be of uniform width
*
- * @param in Must be of uniform length with all outputs.
+ * @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.length();
+ outputSize = in.width();
this.in = in;
this.outputs = outputs;
for (int i = 0; i < this.outputs.length; i++)
{
- if (outputs[i].length() != outputSize)
- throw new IllegalArgumentException("All DEMUX wire arrays must be of uniform length!");
+ 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.length();
+ 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.length() + " select bits (" + maxInputs + ").");
+ + select.width() + " select bits (" + maxInputs + ").");
in.registerObserver(this);
}
public void switchFullOn()
{
- setState(BitVector.of(Bit.ONE, output.length()));
+ setState(BitVector.of(Bit.ONE, output.width()));
}
public void switchFullOff()
{
- setState(BitVector.of(Bit.ZERO, output.length()));
+ setState(BitVector.of(Bit.ZERO, output.width()));
}
public void toggle()
public void setState(BitVector bits)
{
- if (bits.length() != output.length())
- throw new IllegalArgumentException("Incorrect bit vector length");
+ if (bits.width() != output.width())
+ throw new IllegalArgumentException("Incorrect bit vector width");
if (bits.equals(output.getInputValues()))
return;
output.feedSignals(bits);
public boolean isFullOn()
{
- return BitVector.of(Bit.ONE, output.length()).equals(output.getInputValues());
+ return BitVector.of(Bit.ONE, output.width()).equals(output.getInputValues());
}
public BitVector getValues()
/**
*
- * @param union The output of merging n {@link Wire}s into one. Must have length = a1.length() + a2.length() + ... + an.length().
+ * @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 Merger(Timeline timeline, ReadWriteEnd union, ReadEnd... inputs)
this.out = union;
this.beginningIndex = new int[inputs.length];
- int length = 0;
+ int width = 0;
for (int i = 0; i < inputs.length; i++)
{
- beginningIndex[i] = length;
- length += inputs[i].length();
+ beginningIndex[i] = width;
+ width += inputs[i].width();
inputs[i].registerObserver(this);
}
- if (length != union.length())
+ if (width != union.width())
throw new IllegalArgumentException(
- "The output of merging n WireArrays into one must have length = a1.length() + a2.length() + ... + an.length().");
+ "The output of merging n WireArrays into one must have width = a1.width() + a2.width() + ... + an.width().");
}
public ReadEnd getInput(int index)
private final int outputSize;
/**
- * Input {@link Wire}s and out must be of uniform length
+ * Input {@link Wire}s and out must be of uniform width
*
- * @param out Must be of uniform length with all inputs.
+ * @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.length();
+ outputSize = out.width();
this.inputs = inputs.clone();
for (int i = 0; i < this.inputs.length; i++)
{
- if (inputs[i].length() != outputSize)
- throw new IllegalArgumentException("All MUX wire arrays must be of uniform length!");
+ 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.length();
+ 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.length() + " select bits (" + maxInputs + ").");
+ + select.width() + " select bits (" + maxInputs + ").");
this.out = out;
}
this.input = input;
this.outputs = outputs;
input.registerObserver(this);
- int length = 0;
+ int width = 0;
for (ReadEnd out : outputs)
- length += out.length();
+ width += out.width();
- if (input.length() != length)
+ if (input.width() != width)
throw new IllegalArgumentException(
- "The input of splitting one into n WireArrays must have length = a1.length() + a2.length() + ... + an.length().");
+ "The input of splitting one into n WireArrays must have width = a1.width() + a2.width() + ... + an.width().");
}
protected void compute()
int startIndex = 0;
for (int i = 0; i < outputs.length; i++)
{
- outputs[i].feedSignals(inputBits.subVector(startIndex, startIndex + outputs[i].length()));
- startIndex += outputs[i].length();
+ outputs[i].feedSignals(inputBits.subVector(startIndex, startIndex + outputs[i].width()));
+ startIndex += outputs[i].width();
}
}
public TriStateBuffer(Timeline timeline, int processTime, ReadEnd in, ReadWriteEnd out, ReadEnd enable)
{
super(timeline, processTime);
- if (in.length() != out.length())
+ if (in.width() != out.width())
throw new IllegalArgumentException(
- "Tri-state output must have the same amount of bits as the input. Input: " + in.length() + " Output: " + out.length());
- if (enable.length() != 1)
- throw new IllegalArgumentException("Tri-state enable must have exactly one bit, not " + enable.length() + ".");
+ "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;
{
protected ReadEnd[] in;
protected ReadWriteEnd out;
- protected final int length;
+ protected final int width;
protected MutationOperation op;
protected boolean invert = false;
{
super(timeline, processTime);
this.op = op;
- length = out.length();
+ 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.length() != length)
+ if (w.width() != width)
throw new IllegalArgumentException("All wires connected to the gate must be of uniform length.");
w.registerObserver(this);
}
this.symbol = symbol;
}
+ /**
+ * Returns if the Bit is binary, this is only true for <code>ZERO</code> and <code>ONE</code>.
+ *
+ * @return true if and only if <code>this == ONE || this == ZERO</code>
+ */
public boolean isBinary()
{
return this == ONE || this == ZERO;
return bits;
}
- public BitVector toVector(int length)
+ public BitVector toVector(int width)
{
- return BitVector.of(this, length);
+ return BitVector.of(this, width);
}
@Override
return new BitVector(bits.clone());
}
- public static BitVector of(Bit bit, int length)
+ public static BitVector of(Bit bit, int width)
{
- if (length == 1)
+ if (width == 1)
return SINGLE_BIT_MAPPING[bit.ordinal()];
- return new BitVector(bit.makeArray(length));
+ return new BitVector(bit.makeArray(width));
}
- public BigInteger getUnsignedValue()
+ public static BitVector from(long value, int bits)
{
- if (!isBinary())
- throw new NumberFormatException("BitVector is non binary: " + toString());
- Bit[] bits = getBits();
- int length = length();
- byte[] bytes = new byte[(length / 8) + 1];
- for (int i = 0; i < length; i++)
- {
- if (Bit.ONE.equals(bits[i]))
- {
- bytes[(i / 8) + 1] |= 1 << (i % 8);
- }
- }
- return new BigInteger(bytes);
+ return from(BigInteger.valueOf(value), bits);
}
- public static BitVector from(BigInteger b, int length)
+ public static BitVector from(BigInteger value, int bits)
{
- int bitLength = b.bitLength();
- int actualLength = Integer.min(bitLength, length);
- Bit[] bits = new Bit[length];
- for (int i = 0; i < actualLength; i++)
- bits[i] = b.testBit(i) ? Bit.ONE : Bit.ZERO;
- if (b.signum() < 0)
- for (int i = actualLength; i < length; i++)
- bits[i] = Bit.ONE;
- else
- for (int i = actualLength; i < length; i++)
- bits[i] = Bit.ZERO;
- return BitVector.of(bits);
+ Bit[] values = new Bit[bits];
+ for (int i = 0; i < bits; i++)
+ {
+ values[bits - i - 1] = Bit.of(value.testBit(i));
+ }
+ return new BitVector(values);
}
public BitVectorMutator mutator()
return bits.clone();
}
+ /**
+ * Checks if all bits are {@link Bit#isBinary() binary}.
+ *
+ * @see Bit#isBinary()
+ */
public boolean isBinary()
{
for (int i = 0; i < bits.length; i++)
return new BitVector(unOp(bits.clone(), Bit::not));
}
- public int length()
+ public int width()
{
return bits.length;
}
public BitVector concat(BitVector other)
{
- Bit[] newBits = Arrays.copyOf(bits, length() + other.length());
- System.arraycopy(other.bits, 0, newBits, length(), other.length());
+ Bit[] newBits = Arrays.copyOf(bits, width() + other.width());
+ System.arraycopy(other.bits, 0, newBits, width(), other.width());
return new BitVector(newBits);
}
public BitVector subVector(int start)
{
- return new BitVector(Arrays.copyOfRange(bits, start, length()));
+ return new BitVector(Arrays.copyOfRange(bits, start, width()));
}
public BitVector subVector(int start, int end)
private void checkCompatibility(BitVector bv)
{
- if (length() != bv.length())
- throw new IllegalArgumentException(format("BitVector length does not match: %d and %d", length(), bv.length()));
+ if (width() != bv.width())
+ throw new IllegalArgumentException(format("BitVector width does not match: %d and %d", width(), bv.width()));
}
static Bit[] binOp(Bit[] dest, Bit[] second, BinaryOperator<Bit> op)
}
/**
- * Returns a new mutator of the specified length, <b>with all bits set to <code>null</code></b>. Use with care!
+ * Returns a new mutator of the specified width, <b>with all bits set to <code>null</code></b>. Use with care!
*/
- public static BitVectorMutator ofLength(int length)
+ public static BitVectorMutator ofWidth(int width)
{
- return new BitVectorMutator(new Bit[length]);
+ return new BitVectorMutator(new Bit[width]);
}
/**
* Returns an empty mutator which has no bits set and will simply copy the values from the first binary operation performed.
+ * <p>
+ * An empty BitVectorMutator <b>must not</b> be converted to BitVector or used to manipulate single bits until at least one two
+ * operand logic operation is performed.
*/
public static BitVectorMutator empty()
{
return new BitVectorMutator(null);
}
+ /**
+ * @see #empty()
+ */
+ public boolean isEmpty()
+ {
+ return bits == null;
+ }
+
/**
* Produces the resulting, immutable {@link BitVector}<br>
*
*/
public void setMSBit(int bitIndex, Bit bit)
{
+ if (bits == null)
+ throw new IllegalStateException("cannot set a bit of an empty mutator");
bits[bitIndex] = bit;
}
*/
public void setLSBit(int bitIndex, Bit bit)
{
+ if (bits == null)
+ throw new IllegalStateException("cannot set a bit of an empty mutator");
bits[bits.length - bitIndex - 1] = bit;
}
*/
public Bit getMSBit(int bitIndex)
{
+ if (bits == null)
+ throw new IllegalStateException("cannot get a bit of an empty mutator");
return bits[bitIndex];
}
*/
public Bit getLSBit(int bitIndex)
{
+ if (bits == null)
+ throw new IllegalStateException("cannot get a bit of an empty mutator");
return bits[bits.length - bitIndex - 1];
}
- public int length()
+ public int width()
{
+ if (bits == null)
+ throw new IllegalStateException("cannot obtain a width of an empty mutator");
return bits.length;
}
private void checkCompatibility(BitVector bv)
{
- if (bits != null && bits.length != bv.length())
- throw new IllegalArgumentException(format("BitVector length does not match: %d and %d", bits.length, bv.length()));
+ if (bits != null && bits.length != bv.width())
+ throw new IllegalArgumentException(format("BitVector width does not match: %d and %d", bits.length, bv.width()));
}
}
/**
* Does test for equality of values/content, shifting the other BitVector by <code>offset</code> to the right.<br>
- * Therefore <code>offset + other.length() <= this.length()</code> needs to be true.
+ * Therefore <code>offset + other.width() <= this.wdith()</code> needs to be true.
*
- * @throws ArrayIndexOutOfBoundsException if <code>offset + other.length() > this.length()</code>
+ * @throws ArrayIndexOutOfBoundsException if <code>offset + other.width() > this.width()</code>
*
* @see Object#equals(Object)
*/
{
if (other == null)
return false;
- return Arrays.equals(bits, offset, offset + other.length(), other.bits, 0, other.length());
+ return Arrays.equals(bits, offset, offset + other.width(), other.bits, 0, other.width());
}
/**
return sb.toString();
}
+ /**
+ * Returns the value of the BitVector as BigInteger.
+ *
+ * @throws NumberFormatException if the BitVector is not {@link #isBinary() binary}.
+ */
+ public BigInteger getUnsignedValue()
+ {
+ if (!isBinary())
+ throw new NumberFormatException(this + " is not binary");
+ byte[] bytes = new byte[(bits.length / 8) + 1];
+ for (int i = 0; i < bits.length; i++)
+ {
+ if (Bit.ONE == bits[i])
+ {
+ bytes[i / 8] |= 1 << (i % 8);
+ }
+ }
+ return new BigInteger(bytes);
+ }
+
/**
* Parses a String containing solely {@link Bit} symbols (MSB first)
*
return new BitVector(values);
}
- public static BitVector of(long value, int bits)
- {
- return of(BigInteger.valueOf(value), bits);
- }
-
- public static BitVector of(BigInteger value, int bits)
- {
- Bit[] values = new Bit[bits];
- for (int i = 0; i < bits; i++)
- {
- values[bits - i - 1] = Bit.of(value.testBit(i));
- }
- return new BitVector(values);
- }
-
/**
* Iterate over the {@link Bit}s of the BitVector <b>from MSB to LSB</b> (left to right).
*/
@Override
public boolean hasNext()
{
- return pos != length();
+ return pos != width();
}
};
}
public static ColorDefinition formatAsColor(BitVector bitVector)
{
// TODO maybe find a color assignment for multiple-bit bit vectors?
- if (bitVector == null || bitVector.length() != 1)
+ if (bitVector == null || bitVector.width() != 1)
return new ColorDefinition(BuiltInColor.COLOR_BLACK);
switch (bitVector.getLSBit(0))
{
private BitVector values;
public final int travelTime;
private List<ReadEnd> attached = new ArrayList<>();
- public final int length;
+ public final int width;
List<ReadWriteEnd> inputs = new ArrayList<>();
Timeline timeline;
- public Wire(Timeline timeline, int length, int travelTime)
+ public Wire(Timeline timeline, int width, int travelTime)
{
- this(timeline, length, travelTime, null);
+ this(timeline, width, travelTime, null);
}
- public Wire(Timeline timeline, int length, int travelTime, String name)
+ public Wire(Timeline timeline, int width, int travelTime, String name)
{
- if (length < 1)
+ if (width < 1)
throw new IllegalArgumentException(
- String.format("Tried to create an array of wires with length %d, but a length of less than 1 makes no sense.", length));
+ 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.length = length;
+ this.width = width;
this.travelTime = travelTime;
initValues();
}
private void initValues()
{
- values = U.toVector(length);
+ values = U.toVector(width);
}
private void setNewValues(BitVector newValues)
{
if (values.equals(newValues))
return;
-// BitVector oldValues = values;
values = newValues;
notifyObservers();
}
void recalculate()
{
- if (inputs.size() == 0)
- setNewValues(BitVector.of(Bit.U, length));
+ if (inputs.isEmpty())
+ setNewValues(U.toVector(width));
else
{
BitVectorMutator mutator = BitVectorMutator.empty();
* 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.
+ * 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()
{
- for (Bit b : values)
- {
- if (b != Bit.ZERO && b != Bit.ONE)
- return false;
- }
- return true;
+ return values.isBinary();
}
/**
public long getSignedValue()
{
long val = getUnsignedValue();
- long mask = 1 << (length - 1);
+ long mask = 1 << (width - 1);
if ((mask & val) != 0)
{
- int shifts = 64 - length;
+ int shifts = 64 - width;
return (val << shifts) >> shifts;
}
return val;
*
* @author Fabian Stemmler
*/
- void attachEnd(ReadEnd end)
+ boolean attachEnd(ReadEnd end)
{
- attached.add(end);
+ return attached.add(end);
}
void detachEnd(ReadEnd end)
private void notifyObservers()
{
- attached.forEach(r -> r.update());
+ attached.forEach(ReadEnd::update);
}
/**
}
/**
- * Included for convenient use on {@link Wire}s of length 1.
+ * Included for convenient use on {@link Wire}s of width 1.
*
* @return The value of bit 0.
*
recalculate();
}
- public int length()
+ public int width()
{
- return length;
+ return width;
}
public Wire getWire()
public class ReadWriteEnd extends ReadEnd
{
- private boolean open, isWriting;
+ private boolean open;
+ private boolean isWriting;
private BitVector inputValues;
ReadWriteEnd()
private void initValues()
{
- inputValues = U.toVector(length);
+ inputValues = U.toVector(width);
}
/**
public void feedSignals(BitVector newValues)
{
- if (newValues.length() != length)
+ if (newValues.width() != width)
throw new IllegalArgumentException(
- String.format("Attempted to input %d bits instead of %d bits.", newValues.length(), length));
+ String.format("Attempted to input %d bits instead of %d bits.", newValues.width(), width));
if (!open)
- throw new RuntimeException("Attempted to write to closed WireArrayEnd.");
+ throw new IllegalStateException("Attempted to write to closed WireArrayEnd.");
timeline.addEvent(e -> setValues(newValues), travelTime);
}
public void feedSignals(int startingBit, BitVector bitVector)
{
if (!open)
- throw new RuntimeException("Attempted to write to closed WireArrayEnd.");
+ throw new IllegalStateException("Attempted to write to closed WireArrayEnd.");
timeline.addEvent(e -> setValues(startingBit, bitVector), travelTime);
}
if (!inputValues.equalsWithOffset(newValues, startingBit))
{
Bit[] vals = inputValues.getBits();
- System.arraycopy(newValues.getBits(), 0, vals, startingBit, newValues.length());
+ System.arraycopy(newValues.getBits(), 0, vals, startingBit, newValues.width());
inputValues = BitVector.of(vals);
Wire.this.recalculate();
}
*/
public void clearSignals()
{
- feedSignals(Z.toVector(length));
+ feedSignals(Z.toVector(width));
}
public BitVector wireValuesExcludingMe()
* 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 length The amount of bits to fuse
+ * @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 length)
+ public static void fuse(Wire a, Wire b, int fromA, int fromB, int width)
{
ReadWriteEnd rA = a.createReadWriteEnd(), rB = b.createReadWriteEnd();
rA.setWriting(false);
rB.setWriting(false);
- rA.setValues(BitVector.of(Bit.Z, a.length));
- rB.setValues(BitVector.of(Bit.Z, b.length));
- Fusion aF = new Fusion(rB, fromA, fromB, length), bF = new Fusion(rA, fromB, fromA, length);
+ rA.setValues(BitVector.of(Bit.Z, a.width));
+ rB.setValues(BitVector.of(Bit.Z, b.width));
+ Fusion aF = new Fusion(rB, fromA, fromB, width), bF = new Fusion(rA, fromB, fromA, width);
rA.registerObserver(aF);
rB.registerObserver(bF);
aF.update(rA);
*/
public static void fuse(Wire a, Wire b)
{
- fuse(a, b, 0, 0, a.length);
+ fuse(a, b, 0, 0, a.width);
}
private static class Fusion implements LogicObserver
{
private ReadWriteEnd target;
- int fromSource, fromTarget, length;
+ int fromSource, fromTarget, width;
- public Fusion(ReadWriteEnd target, int fromSource, int fromTarget, int length)
+ public Fusion(ReadWriteEnd target, int fromSource, int fromTarget, int width)
{
this.target = target;
this.fromSource = fromSource;
this.fromTarget = fromTarget;
- this.length = length;
+ this.width = width;
}
@Override
else
{
target.setWriting(true);
- BitVector targetInput = source.wireValuesExcludingMe().subVector(fromSource, fromSource + length);
+ BitVector targetInput = source.wireValuesExcludingMe().subVector(fromSource, fromSource + width);
target.setValues(fromTarget, targetInput);
}
}
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.length);
- Wire.fuse(b, out, 0, a.length, b.length);
- Wire.fuse(c, out, 0, a.length + b.length, c.length);
+ 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();
--- /dev/null
+package net.mograsim.logic.core.types;
+
+import static net.mograsim.logic.core.types.BitVector.*;
+import static net.mograsim.logic.core.types.Bit.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+import java.math.BigInteger;
+import java.util.Iterator;
+
+import org.junit.jupiter.api.Test;
+
+class BitVectorTest
+{
+
+ @Test
+ void testOfBitArray()
+ {
+ BitVector.of(); // should be allowed and work
+
+ assertSame(SINGLE_U, BitVector.of(U));
+ assertSame(SINGLE_X, BitVector.of(X));
+ assertSame(SINGLE_0, BitVector.of(ZERO));
+ assertSame(SINGLE_1, BitVector.of(ONE));
+ assertSame(SINGLE_Z, BitVector.of(Z));
+ }
+
+ @Test
+ void testOfBitInt()
+ {
+ assertEquals(BitVector.of(), BitVector.of(ONE, 0));
+
+ assertSame(SINGLE_U, BitVector.of(U, 1));
+ assertSame(SINGLE_X, BitVector.of(X, 1));
+ assertSame(SINGLE_0, BitVector.of(ZERO, 1));
+ assertSame(SINGLE_1, BitVector.of(ONE, 1));
+ assertSame(SINGLE_Z, BitVector.of(Z, 1));
+
+ assertEquals(BitVector.of(X, X, X), BitVector.of(X, 3));
+ }
+
+ @Test
+ void testGetUnsignedValue()
+ {
+ assertEquals(BigInteger.valueOf(0b101), BitVector.parse("101").getUnsignedValue());
+ assertEquals(BigInteger.valueOf(0b01010), BitVector.parse("01010").getUnsignedValue());
+ assertEquals(BigInteger.valueOf(0), BitVector.parse("0000").getUnsignedValue());
+
+ assertThrows(NumberFormatException.class, () -> BitVector.parse("00X1").getUnsignedValue());
+
+ }
+
+ @Test
+ void testOfLongInt()
+ {
+ assertEquals(BitVector.parse("101"), BitVector.from(0b101L, 3));
+ assertEquals(BitVector.parse("01010"), BitVector.from(0b01010L, 5));
+ assertEquals(BitVector.parse("10101"), BitVector.from(-11L, 5));
+ assertEquals(BitVector.parse("0000"), BitVector.from(0L, 4));
+ }
+
+ @Test
+ void testOfBigIntegerInt()
+ {
+ assertEquals(BitVector.parse("101"), BitVector.from(BigInteger.valueOf(0b101), 3));
+ assertEquals(BitVector.parse("01010"), BitVector.from(BigInteger.valueOf(0b01010), 5));
+ assertEquals(BitVector.parse("10101"), BitVector.from(BigInteger.valueOf(-11), 5));
+ assertEquals(BitVector.parse("0000"), BitVector.from(BigInteger.valueOf(0), 4));
+ }
+
+ @Test
+ void testMutator()
+ {
+ var bv = BitVector.SINGLE_1;
+ var bvm = bv.mutator();
+
+ assertFalse(bvm.isEmpty());
+ assertEquals(ONE, bvm.getLSBit(0));
+ assertEquals(SINGLE_1, bvm.toBitVector());
+ }
+
+ @Test
+ void testGetMSBit()
+ {
+ assertEquals(ONE, SINGLE_1.getMSBit(0));
+ assertEquals(ONE, BitVector.of(ONE, X, X, X).getMSBit(0));
+ assertEquals(ONE, BitVector.of(X, X, X, X, ONE, X).getMSBit(4));
+ }
+
+ @Test
+ void testGetLSBit()
+ {
+ assertEquals(ONE, SINGLE_1.getLSBit(0));
+ assertEquals(ONE, BitVector.of(X, X, X, ONE).getLSBit(0));
+ assertEquals(ONE, BitVector.of(X, X, X, X, ONE, X).getLSBit(1));
+ }
+
+ @Test
+ void testGetBits()
+ {
+ assertArrayEquals(new Bit[] { X, ONE, Z }, BitVector.of(X, ONE, Z).getBits());
+ assertArrayEquals(new Bit[] { X, ONE, Z }, BitVector.parse("X1Z").getBits());
+ }
+
+ @Test
+ void testIsBinary()
+ {
+ assertTrue(SINGLE_0.isBinary());
+ assertTrue(SINGLE_1.isBinary());
+
+ assertFalse(SINGLE_U.isBinary());
+ assertFalse(SINGLE_X.isBinary());
+ assertFalse(SINGLE_Z.isBinary());
+
+ assertTrue(BitVector.of(ONE, ZERO, ONE, ONE, ZERO).isBinary());
+ assertFalse(BitVector.of(ONE, ZERO, ZERO, X).isBinary());
+ }
+
+ @Test
+ void testJoin()
+ {
+ // binary
+ assertEquals(SINGLE_0, SINGLE_0.join(SINGLE_0));
+ assertEquals(SINGLE_X, SINGLE_0.join(SINGLE_1));
+ assertEquals(SINGLE_1, SINGLE_1.join(SINGLE_1));
+
+ // other
+ assertEquals(SINGLE_1, SINGLE_Z.join(SINGLE_1));
+ assertEquals(SINGLE_U, SINGLE_0.join(SINGLE_U));
+ assertEquals(SINGLE_X, SINGLE_X.join(SINGLE_Z));
+
+ // higher width
+ var result = BitVector.of(U, X, ZERO, ONE, Z).join(BitVector.of(ONE, ZERO, ZERO, ONE, Z));
+ assertEquals(BitVector.of(U, X, ZERO, ONE, Z), result);
+ }
+
+ @Test
+ void testAnd()
+ {
+ // binary
+ assertEquals(SINGLE_0, SINGLE_0.and(SINGLE_0));
+ assertEquals(SINGLE_0, SINGLE_0.and(SINGLE_1));
+ assertEquals(SINGLE_1, SINGLE_1.and(SINGLE_1));
+
+ // other
+ assertEquals(SINGLE_X, SINGLE_Z.and(SINGLE_1));
+ assertEquals(SINGLE_0, SINGLE_0.and(SINGLE_U));
+ assertEquals(SINGLE_X, SINGLE_X.and(SINGLE_Z));
+
+ // higher width
+ var result = BitVector.of(U, X, ZERO, ONE, ONE).and(BitVector.of(ONE, ONE, ZERO, ZERO, ONE));
+ assertEquals(BitVector.of(U, X, ZERO, ZERO, ONE), result);
+ }
+
+ @Test
+ void testOr()
+ {
+ // binary
+ assertEquals(SINGLE_0, SINGLE_0.or(SINGLE_0));
+ assertEquals(SINGLE_1, SINGLE_0.or(SINGLE_1));
+ assertEquals(SINGLE_1, SINGLE_1.or(SINGLE_1));
+
+ // other
+ assertEquals(SINGLE_1, SINGLE_Z.or(SINGLE_1));
+ assertEquals(SINGLE_1, SINGLE_1.or(SINGLE_U));
+ assertEquals(SINGLE_X, SINGLE_X.or(SINGLE_Z));
+
+ // higher width
+ var result = BitVector.of(U, X, ZERO, ONE, ZERO).or(BitVector.of(ZERO, ZERO, ZERO, ONE, ONE));
+ assertEquals(BitVector.of(U, X, ZERO, ONE, ONE), result);
+ }
+
+ @Test
+ void testXor()
+ {
+ // binary
+ assertEquals(SINGLE_0, SINGLE_0.xor(SINGLE_0));
+ assertEquals(SINGLE_1, SINGLE_0.xor(SINGLE_1));
+ assertEquals(SINGLE_0, SINGLE_1.xor(SINGLE_1));
+
+ // other
+ assertEquals(SINGLE_X, SINGLE_Z.xor(SINGLE_1));
+ assertEquals(SINGLE_U, SINGLE_0.xor(SINGLE_U));
+ assertEquals(SINGLE_X, SINGLE_X.xor(SINGLE_Z));
+
+ // higher width
+ var result = BitVector.of(U, X, ZERO, ONE, ONE).xor(BitVector.of(ONE, ZERO, ZERO, ZERO, ONE));
+ assertEquals(BitVector.of(U, X, ZERO, ONE, ZERO), result);
+ }
+
+ @Test
+ void testNot()
+ {
+ // binary
+ assertEquals(SINGLE_1, SINGLE_0.not());
+ assertEquals(SINGLE_0, SINGLE_1.not());
+
+ // other
+ assertEquals(SINGLE_U, SINGLE_U.not());
+ assertEquals(SINGLE_X, SINGLE_X.not());
+ assertEquals(SINGLE_X, SINGLE_Z.not());
+
+ // higher width
+ var result = BitVector.of(U, X, ZERO, ONE, Z).not();
+ assertEquals(BitVector.of(U, X, ONE, ZERO, X), result);
+ }
+
+ @Test
+ void testWidth()
+ {
+ assertEquals(0, BitVector.of().width());
+ assertEquals(1, SINGLE_0.width());
+ assertEquals(3, BitVector.of(X, X, Z).width());
+ }
+
+ @Test
+ void testConcat()
+ {
+ assertEquals(BitVector.of(U, X), SINGLE_U.concat(SINGLE_X));
+ assertEquals(BitVector.of(Z, X, U, ONE, X), BitVector.of(Z, X, U).concat(BitVector.of(ONE, X)));
+ }
+
+ @Test
+ void testSubVectorInt()
+ {
+ assertEquals(SINGLE_0, SINGLE_0.subVector(0));
+ assertEquals(BitVector.of(), SINGLE_0.subVector(1));
+ assertEquals(SINGLE_0, BitVector.of(ONE, ZERO).subVector(1));
+ assertEquals(BitVector.of(X, Z), BitVector.of(ZERO, U, ONE, X, Z).subVector(3));
+ }
+
+ @Test
+ void testSubVectorIntInt()
+ {
+ assertEquals(SINGLE_0, SINGLE_0.subVector(0, 1));
+ assertEquals(BitVector.of(), SINGLE_0.subVector(0, 0));
+ assertEquals(SINGLE_0, BitVector.of(ONE, ZERO).subVector(1, 2));
+ assertEquals(BitVector.of(ONE, X), BitVector.of(ZERO, U, ONE, X, Z).subVector(2, 4));
+ }
+
+ @Test
+ void testEqualsObject()
+ {
+ assertEquals(SINGLE_X, SINGLE_X);
+ assertNotEquals(SINGLE_0, SINGLE_1);
+
+ assertEquals(BitVector.of(X, Z, U), BitVector.of(X, Z, U));
+ assertNotEquals(BitVector.of(X, Z, U), BitVector.of(X, X, U));
+ }
+
+ @Test
+ void testEqualsWithOffset()
+ {
+ assertTrue(SINGLE_X.equalsWithOffset(SINGLE_X, 0));
+ assertFalse(SINGLE_0.equalsWithOffset(SINGLE_1, 0));
+
+ assertTrue(BitVector.of(X, Z, U).equalsWithOffset(BitVector.of(Z, U), 1));
+ assertFalse(BitVector.of(X, Z, U).equalsWithOffset(BitVector.of(X, U), 1));
+ assertTrue(BitVector.of(X, Z, U).equalsWithOffset(BitVector.of(U), 2));
+ }
+
+ @Test
+ void testParse()
+ {
+ assertEquals(SINGLE_U, BitVector.parse("U"));
+ assertEquals(SINGLE_X, BitVector.parse("X"));
+ assertEquals(SINGLE_0, BitVector.parse("0"));
+ assertEquals(SINGLE_1, BitVector.parse("1"));
+ assertEquals(SINGLE_Z, BitVector.parse("Z"));
+
+ assertEquals(BitVector.of(X, U, Z, ONE, ZERO), BitVector.parse("XUZ10"));
+
+ assertThrows(RuntimeException.class, () -> BitVector.parse("01BX"));
+ }
+
+ @Test
+ void testIterator()
+ {
+ var bv = BitVector.of(U, Z, ONE, ZERO, X);
+ Iterator<Bit> it = bv.iterator();
+
+ assertEquals(U, it.next());
+ assertEquals(Z, it.next());
+ assertEquals(ONE, it.next());
+ assertEquals(ZERO, it.next());
+ assertEquals(X, it.next());
+ assertFalse(it.hasNext());
+ }
+}
Bundle-SymbolicName: net.mograsim.logic.model.am2900;singleton:=true
Bundle-Version: 0.1.0.qualifier
Export-Package: net.mograsim.logic.model.am2900.components,
+ net.mograsim.logic.model.am2900.components.am2904,
net.mograsim.logic.model.am2900.components.am2910,
net.mograsim.logic.model.examples
Bundle-RequiredExecutionEnvironment: JavaSE-11
"q3",
"q4"
],
- "vectorPartLengthes": [
+ "vectorPartWidths": [
1,
1,
1,
"q3",
"q4"
],
- "vectorPartLengthes": [
+ "vectorPartWidths": [
1,
1,
1,
"q3",
"q4"
],
- "vectorPartLengthes": [
+ "vectorPartWidths": [
1,
1,
1,
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 70.0,
+ "height": 70.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "I00",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I11",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I10",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 70.0,
+ "y": 10.0
+ },
+ "name": "Y",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "I01",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "S0",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "S1",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.4,
+ "subComps": [
+ {
+ "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#0",
+ "pos": {
+ "x": 24.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 54.0,
+ "y": 39.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 24.0,
+ "y": 49.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIsel1",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 60.0,
+ "y": 100.0
+ }
+ },
+ {
+ "id": "GUIsel1",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 60.0,
+ "y": 35.0
+ }
+ },
+ {
+ "id": "GUImux1",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 115.0,
+ "y": 20.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "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": "GUINandGate#0",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 50.0
+ },
+ {
+ "x": 15.0,
+ "y": 10.0
+ },
+ {
+ "x": 85.0,
+ "y": 10.0
+ },
+ {
+ "x": 85.0,
+ "y": 25.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": "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#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "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": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I10"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "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": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "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": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "GUImux2",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default"
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 62.0,
+ "height": 90.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "I00",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I11",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I10",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 62.0,
+ "y": 16.0
+ },
+ "name": "Y",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "I01",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "S0",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "S1",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.4,
+ "subComps": [
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 19.0,
+ "y": 34.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#0",
+ "pos": {
+ "x": 25.0,
+ "y": 45.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUIMerger",
+ "name": "GUIMerger#0",
+ "pos": {
+ "x": 140.0,
+ "y": 25.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#3",
+ "pos": {
+ "x": 25.0,
+ "y": 180.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#2",
+ "pos": {
+ "x": 25.0,
+ "y": 140.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#1",
+ "pos": {
+ "x": 25.0,
+ "y": 85.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 40.0,
+ "y": 125.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 40.0,
+ "y": 30.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 100.0,
+ "y": 20.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#14",
+ "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#0",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "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": "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": "I01"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "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": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#24",
+ "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#2",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "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": "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": "GUISplitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#3",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "GUISplitter#2",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#0",
+ "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": "GUISplitter#3",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "GUISplitter#2",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "GUImux1_4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler"
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 80.0,
+ "height": 120.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "I000",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 70.0
+ },
+ "name": "I011",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 100.0
+ },
+ "name": "I110",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I010",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 90.0
+ },
+ "name": "I101",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 80.0
+ },
+ "name": "I100",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 110.0
+ },
+ "name": "I111",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 80.0,
+ "y": 10.0
+ },
+ "name": "Y",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I001",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "S0",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "S1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "S2",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.4,
+ "subComps": [
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 24.0,
+ "y": 94.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 19.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUImux2",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 35.0,
+ "y": 185.0
+ }
+ },
+ {
+ "id": "GUImux2",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 35.0,
+ "y": 85.0
+ }
+ },
+ {
+ "id": "GUImux1",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 125.0,
+ "y": 20.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "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": "I10"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I110"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 235.0
+ },
+ {
+ "x": 10.0,
+ "y": 250.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#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#2",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 25.0
+ },
+ {
+ "x": 70.0,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I01"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I001"
+ },
+ "name": "unnamedWire#8",
+ "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#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 205.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": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I101"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I01"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "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
+ }
+ ]
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "GUImux3",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler"
+}
\ No newline at end of file
"c01.q",
"c00.q"
],
- "vectorPartLengthes": [
+ "vectorPartWidths": [
4,
4,
4,
"c01.q",
"c00.q"
],
- "vectorPartLengthes": [
+ "vectorPartWidths": [
16,
16,
16,
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 35.0,
+ "height": 40.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "I2",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "S1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "S2",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.4,
+ "subComps": [
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#1",
+ "pos": {
+ "x": 35.0,
+ "y": 30.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#3",
+ "pos": {
+ "x": 60.0,
+ "y": 40.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#2",
+ "pos": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "params": 1
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "GUINandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUINandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#9"
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUINandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#8"
+ },
+ {
+ "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": "_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": "_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": "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": "GUINandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#10"
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "GUIsel1",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default"
+}
\ No newline at end of file
mograsim version: 0.1.3
{
- "width": 72.0,
- "height": 61.0,
+ "width": 120.0,
+ "height": 94.0,
"interfacePins": [
{
"location": {
- "x": -14.600000000000001,
- "y": 24.400000000000002
+ "x": 0.0,
+ "y": 25.0
},
"name": "IOVR",
"logicWidth": 1
},
{
"location": {
- "x": -14.600000000000001,
- "y": 19.400000000000002
+ "x": 0.0,
+ "y": 30.0
},
"name": "_CEM",
"logicWidth": 1
},
{
"location": {
- "x": 0.4,
- "y": 5.4
+ "x": 0.0,
+ "y": 5.0
},
"name": "C",
"logicWidth": 1
},
{
"location": {
- "x": -14.600000000000001,
- "y": 29.400000000000002
- },
- "name": "YN_in",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 0.4,
- "y": 31.400000000000002
+ "x": 0.0,
+ "y": 61.0
},
"name": "I",
"logicWidth": 13
},
{
"location": {
- "x": -14.600000000000001,
- "y": 9.4
+ "x": 0.0,
+ "y": 40.0
},
"name": "_EN",
"logicWidth": 1
},
{
"location": {
- "x": -24.6,
- "y": 14.4
+ "x": 120.0,
+ "y": 17.0
},
- "name": "SIOn_in",
+ "name": "YC",
"logicWidth": 1
},
{
"location": {
"x": -24.6,
- "y": 24.400000000000002
+ "y": 14.4
},
- "name": "C0",
+ "name": "SIOn_in",
"logicWidth": 1
},
{
"location": {
- "x": -14.600000000000001,
- "y": 54.400000000000006
+ "x": -24.6,
+ "y": 24.400000000000002
},
- "name": "YOVR_in",
+ "name": "C0",
"logicWidth": 1
},
{
},
{
"location": {
- "x": -14.600000000000001,
- "y": 34.4
+ "x": 0.0,
+ "y": 36.0
},
- "name": "YZ_in",
+ "name": "_EZ",
"logicWidth": 1
},
{
"location": {
- "x": -24.6,
- "y": 9.4
+ "x": -14.600000000000001,
+ "y": 14.4
},
- "name": "_EZ",
+ "name": "Cx",
"logicWidth": 1
},
{
"location": {
- "x": -14.600000000000001,
- "y": 14.4
+ "x": 120.0,
+ "y": 21.0
},
- "name": "Cx",
+ "name": "YN",
"logicWidth": 1
},
{
},
{
"location": {
- "x": -24.6,
- "y": 29.400000000000002
+ "x": 0.0,
+ "y": 15.0
},
"name": "IC",
"logicWidth": 1
},
{
"location": {
- "x": -14.600000000000001,
- "y": 49.400000000000006
+ "x": 0.0,
+ "y": 42.0
},
"name": "_EOVR",
"logicWidth": 1
},
{
"location": {
- "x": -34.6,
- "y": 14.4
+ "x": 120.0,
+ "y": 11.0
},
- "name": "IN",
+ "name": "YZ",
"logicWidth": 1
},
{
"location": {
- "x": -24.6,
- "y": 39.400000000000006
+ "x": 0.0,
+ "y": 20.0
},
- "name": "YC_out",
+ "name": "IN",
"logicWidth": 1
},
{
"location": {
- "x": -34.6,
- "y": -0.6000000000000001
+ "x": 61.0,
+ "y": 0.0
},
- "name": "YOVR_out",
+ "name": "_OEY",
"logicWidth": 1
},
{
},
{
"location": {
- "x": -34.6,
- "y": 24.400000000000002
- },
- "name": "YZ_out",
- "logicWidth": 1
- },
- {
- "location": {
- "x": -24.6,
- "y": 4.4
+ "x": 0.0,
+ "y": 10.0
},
"name": "IZ",
"logicWidth": 1
},
{
"location": {
- "x": -24.6,
- "y": -0.6000000000000001
+ "x": 120.0,
+ "y": 60.0
},
"name": "CT",
"logicWidth": 1
},
{
"location": {
- "x": -24.6,
- "y": 34.4
+ "x": 0.0,
+ "y": 33.0
},
"name": "_CEmu",
"logicWidth": 1
},
- {
- "location": {
- "x": -34.6,
- "y": 19.400000000000002
- },
- "name": "YN_out",
- "logicWidth": 1
- },
{
"location": {
"x": -24.6,
},
{
"location": {
- "x": -34.6,
- "y": 4.4
+ "x": 120.0,
+ "y": 25.0
},
- "name": "_EC",
+ "name": "YOVR",
"logicWidth": 1
},
{
"location": {
- "x": -14.600000000000001,
- "y": 39.400000000000006
+ "x": 0.0,
+ "y": 38.0
},
- "name": "YC_in",
+ "name": "_EC",
"logicWidth": 1
}
],
"subComps": [
{
"id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
- "name": "WireCrossPoint#0",
+ "name": "WireCrossPoint#14",
"pos": {
- "x": 190.0,
- "y": 10.0
+ "x": 520.0,
+ "y": 190.0
},
- "params": 1
+ "params": 4
},
{
- "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904RegCTInstrDecode",
- "name": "GUIAm2904RegCTInstrDecode#0",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#13",
"pos": {
- "x": 35.0,
- "y": 80.0
- }
+ "x": 330.0,
+ "y": 125.0
+ },
+ "params": 1
},
{
- "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
- "name": "GUISplitter#0",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#16",
"pos": {
- "x": 5.0,
- "y": 90.0
+ "x": 255.0,
+ "y": 255.0
},
- "params": 13
+ "params": 4
},
{
- "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
- "name": "GUIMerger#1",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#15",
"pos": {
- "x": 20.0,
- "y": 150.0
+ "x": 255.0,
+ "y": 265.0
},
- "params": 5
+ "params": 4
},
{
- "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
- "name": "GUIMerger#0",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#1",
"pos": {
- "x": 20.0,
- "y": 90.0
+ "x": 180.0,
+ "y": 135.0
},
- "params": 6
+ "params": 4
},
{
- "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904ShiftInstrDecode",
- "name": "GUIAm2904ShiftInstrDecode#0",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#0",
"pos": {
- "x": 40.0,
- "y": 230.0
- }
+ "x": 165.0,
+ "y": 150.0
+ },
+ "params": 1
},
{
- "id": "class:net.mograsim.logic.model.am2900.components.GUIdff4_finewe",
- "name": "GUIdff4_finewe#0",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#3",
"pos": {
- "x": 195.0,
- "y": 5.0
- }
+ "x": 335.0,
+ "y": 270.0
+ },
+ "params": 4
},
{
- "id": "class:net.mograsim.logic.model.am2900.components.GUIdff4_finewe",
- "name": "GUIdff4_finewe#1",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#2",
"pos": {
- "x": 195.0,
- "y": 110.0
- }
- }
- ],
- "innerWires": [
- {
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O10"
- },
- "pin2": {
- "compName": "GUIMerger#1",
- "pinName": "I4"
+ "x": 295.0,
+ "y": 120.0
},
- "name": "unnamedWire#14",
- "path": []
+ "params": 4
},
{
- "pin1": {
- "compName": "GUIMerger#1",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O9"
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 530.0,
+ "y": 100.0
},
- "name": "unnamedWire#13",
- "path": []
+ "params": 4
},
{
- "pin1": {
- "compName": "GUIAm2904ShiftInstrDecode#0",
- "pinName": "I"
- },
- "pin2": {
- "compName": "GUIMerger#1",
- "pinName": "O"
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 150.0,
+ "y": 160.0
},
- "name": "unnamedWire#16",
- "path": [
- {
- "x": 35.0,
- "y": 265.0
- },
- {
- "x": 35.0,
- "y": 175.0
- }
- ]
+ "params": 1
},
{
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "O"
- },
- "pin2": {
- "compName": "GUIAm2904RegCTInstrDecode#0",
- "pinName": "I"
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 215.0,
+ "y": 180.0
},
- "name": "unnamedWire#15",
- "path": []
+ "params": 1
},
{
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I5"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O5"
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUITriStateBuffer",
+ "name": "GUITriStateBuffer#0",
+ "pos": {
+ "x": 530.0,
+ "y": 170.0
},
- "name": "unnamedWire#9",
- "path": []
+ "params": {
+ "logicWidth": 4,
+ "orientation": "RIGHT"
+ }
},
{
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O4"
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I4"
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 120.0,
+ "y": 15.0
},
- "name": "unnamedWire#8",
- "path": []
+ "params": 1
},
{
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I3"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O3"
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 215.0,
+ "y": 200.0
},
- "name": "unnamedWire#7",
- "path": []
+ "params": 1
},
{
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O2"
- },
- "pin2": {
- "compName": "GUIMerger#0",
- "pinName": "I2"
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 215.0,
+ "y": 160.0
},
- "name": "unnamedWire#6",
- "path": []
+ "params": 1
},
{
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff4_finewe#0",
- "pinName": "C"
- },
- "name": "unnamedWire#1",
- "path": []
+ "id": "GUIAm2904muSR",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 270.0,
+ "y": 250.0
+ }
},
{
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "C"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 195.0,
+ "y": 55.0
},
- "name": "unnamedWire#0",
- "path": [
- {
- "x": 5.0,
- "y": 25.0
- },
- {
- "x": 5.0,
- "y": 10.0
- }
- ]
+ "params": 1
},
{
- "pin1": {
- "compName": "GUIMerger#0",
- "pinName": "I1"
- },
- "pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O1"
- },
- "name": "unnamedWire#5",
- "path": []
+ "id": "GUIAm2904MSR",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 225.0,
+ "y": 95.0
+ }
},
{
- "pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O6"
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 195.0,
+ "y": 35.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 470.0,
+ "y": 160.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 195.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIand",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 370.0,
+ "y": 130.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 415.0,
+ "y": 210.0
+ }
+ },
+ {
+ "id": "GUInot4",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 135.0,
+ "y": 40.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+ "name": "GUIMerger#3",
+ "pos": {
+ "x": 510.0,
+ "y": 165.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUImux3",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 300.0,
+ "y": 310.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+ "name": "GUIMerger#2",
+ "pos": {
+ "x": 15.0,
+ "y": 65.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUIAm2904TestLogic",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 225.0,
+ "y": 340.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+ "name": "GUIMerger#1",
+ "pos": {
+ "x": 25.0,
+ "y": 305.0
+ },
+ "params": 5
+ },
+ {
+ "id": "GUImux1",
+ "name": "DeserializedSubmodelComponent#9",
+ "pos": {
+ "x": 480.0,
+ "y": 305.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+ "name": "GUIMerger#0",
+ "pos": {
+ "x": 25.0,
+ "y": 245.0
+ },
+ "params": 6
+ },
+ {
+ "id": "GUIxor",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 540.0,
+ "y": 295.0
+ }
+ },
+ {
+ "id": "GUIxor",
+ "name": "DeserializedSubmodelComponent#10",
+ "pos": {
+ "x": 485.0,
+ "y": 355.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#10",
+ "pos": {
+ "x": 340.0,
+ "y": 120.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#9",
+ "pos": {
+ "x": 205.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#8",
+ "pos": {
+ "x": 205.0,
+ "y": 30.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#5",
+ "pos": {
+ "x": 225.0,
+ "y": 175.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#4",
+ "pos": {
+ "x": 225.0,
+ "y": 155.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#7",
+ "pos": {
+ "x": 205.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#6",
+ "pos": {
+ "x": 205.0,
+ "y": 70.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#1",
+ "pos": {
+ "x": 130.0,
+ "y": 5.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#0",
+ "pos": {
+ "x": 190.0,
+ "y": 145.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#3",
+ "pos": {
+ "x": 225.0,
+ "y": 215.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#2",
+ "pos": {
+ "x": 225.0,
+ "y": 195.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#4",
+ "pos": {
+ "x": 395.0,
+ "y": 225.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#3",
+ "pos": {
+ "x": 450.0,
+ "y": 175.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#2",
+ "pos": {
+ "x": 395.0,
+ "y": 195.0
+ },
+ "params": 2
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#1",
+ "pos": {
+ "x": 555.0,
+ "y": 80.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#8",
+ "pos": {
+ "x": 445.0,
+ "y": 370.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#7",
+ "pos": {
+ "x": 445.0,
+ "y": 330.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#6",
+ "pos": {
+ "x": 285.0,
+ "y": 320.0
+ },
+ "params": 3
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#5",
+ "pos": {
+ "x": 395.0,
+ "y": 265.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#0",
+ "pos": {
+ "x": 10.0,
+ "y": 245.0
+ },
+ "params": 13
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904RegCTInstrDecode",
+ "name": "GUIAm2904RegCTInstrDecode#0",
+ "pos": {
+ "x": 50.0,
+ "y": 230.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904ShiftInstrDecode",
+ "name": "GUIAm2904ShiftInstrDecode#0",
+ "pos": {
+ "x": 50.0,
+ "y": 360.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "GUINandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_CEmu"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#5",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#5",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#110",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#5",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#111",
+ "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": "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": "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": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y101"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I101"
+ },
+ "name": "unnamedWire#116",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I100"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y100"
+ },
+ "name": "unnamedWire#117",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EOVR"
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#3",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#42",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EC"
+ },
+ "pin2": {
+ "compName": "GUINandGate#5",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#45",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EN"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#4",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEZ"
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EZ"
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "YZ"
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEC"
+ },
+ "pin2": {
+ "compName": "GUINandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#100",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#4",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#103",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#4",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#104",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#101",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#4",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#102",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "YC"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#5",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#107",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#5",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#108",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "YOVR"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#4",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#105",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "YN"
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#4",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#106",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#54",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#1",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#5",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#109",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O10"
+ },
+ "pin2": {
+ "compName": "GUIMerger#1",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#1",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O9"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904ShiftInstrDecode#0",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "GUIMerger#1",
+ "pinName": "O"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 395.0
+ },
+ {
+ "x": 40.0,
+ "y": 325.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "GUIMerger#2",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 100.0
+ },
+ {
+ "x": 5.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IOVR"
+ },
+ "pin2": {
+ "compName": "GUIMerger#2",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 125.0
+ },
+ {
+ "x": 10.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IC"
+ },
+ "pin2": {
+ "compName": "GUIMerger#2",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_CINV"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "CINV"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IZ"
+ },
+ "pin2": {
+ "compName": "GUIMerger#2",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 50.0
+ },
+ {
+ "x": 5.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#2",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "mu"
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904ShiftInstrDecode#0",
+ "pinName": "MC_EN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "COVD_EN"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "MSR_MUX"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "MUX"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUITriStateBuffer#0",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#79",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#10",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#81",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#80",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#10",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#83",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_OEY"
+ },
+ "name": "unnamedWire#82",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#85",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUITriStateBuffer#0",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#84",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#87",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#86",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "GUIMerger#3",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#89",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#88",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O5"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O4"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#3",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#90",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#3",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#92",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "GUIMerger#3",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#91",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_MUX"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "MUX"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "Y_MUX"
+ },
+ "pin2": {
+ "compName": "GUISplitter#2",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#94",
+ "path": []
+ },
+ {
+ "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": "GUIMerger#3",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#93",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#96",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#95",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O6"
+ },
+ "pin2": {
+ "compName": "GUIMerger#1",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "GUISplitter#3",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#98",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#97",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "GUIMerger#1",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#1",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O7"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_OVRRET"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "OVRRET"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#3",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#99",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#2",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEN"
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_CEM"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEOVR"
+ },
+ "pin2": {
+ "compName": "GUINandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#59",
+ "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": "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#16",
+ "pinName": ""
},
"pin2": {
- "compName": "GUIMerger#1",
- "pinName": "I0"
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "M"
},
- "name": "unnamedWire#10",
+ "name": "unnamedWire#136",
"path": []
},
{
"pin1": {
- "compName": "GUISplitter#0",
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUISplitter#8",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#137",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#7",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#134",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#8",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#135",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#7",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#61",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#9",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#63",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "OEN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#138",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#8",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#62",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#64",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EN"
+ },
+ "pin2": {
+ "compName": "GUINandGate#7",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#67",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EOVR"
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EZ"
+ },
+ "name": "unnamedWire#69",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EC"
+ },
+ "name": "unnamedWire#68",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y000"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I000"
+ },
+ "name": "unnamedWire#121",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "CT"
+ },
+ "name": "unnamedWire#122",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I001"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y001"
+ },
+ "name": "unnamedWire#120",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#6",
"pinName": "O0"
},
"pin2": {
- "compName": "GUIMerger#0",
+ "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": "GUINandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#70",
+ "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": "GUINandGate#8",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#72",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
"pinName": "I0"
},
- "name": "unnamedWire#4",
+ "name": "unnamedWire#129",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "GUINandGate#9",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#71",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "GUINandGate#6",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#74",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#6",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#127",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "GUINandGate#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#73",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "CT_EXP"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#128",
"path": []
},
{
"pin1": {
"compName": "_submodelinterface",
- "pinName": "I"
+ "pinName": "_EC"
},
"pin2": {
- "compName": "GUISplitter#0",
- "pinName": "I"
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A2"
},
- "name": "unnamedWire#3",
+ "name": "unnamedWire#76",
"path": []
},
{
"pin1": {
- "compName": "GUISplitter#0",
- "pinName": "O8"
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A1"
},
"pin2": {
- "compName": "GUIMerger#1",
- "pinName": "I2"
+ "compName": "_submodelinterface",
+ "pinName": "_EZ"
},
- "name": "unnamedWire#12",
+ "name": "unnamedWire#75",
"path": []
},
{
"pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
+ "compName": "_submodelinterface",
+ "pinName": "_EOVR"
},
"pin2": {
- "compName": "GUIdff4_finewe#1",
- "pinName": "C"
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A4"
},
- "name": "unnamedWire#2",
- "path": [
- {
- "x": 190.0,
- "y": 115.0
- }
- ]
+ "name": "unnamedWire#78",
+ "path": []
},
{
"pin1": {
- "compName": "GUIMerger#1",
- "pinName": "I1"
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A3"
},
"pin2": {
- "compName": "GUISplitter#0",
- "pinName": "O7"
+ "compName": "_submodelinterface",
+ "pinName": "_EN"
},
- "name": "unnamedWire#11",
+ "name": "unnamedWire#77",
"path": []
}
]
mograsim version: 0.1.3
{
- "width": 29.0,
- "height": 45.0,
+ "width": 60.0,
+ "height": 90.0,
"interfacePins": [
{
"location": {
- "x": 29.0,
- "y": 30.0
+ "x": 60.0,
+ "y": 60.0
},
"name": "Y101",
"logicWidth": 1
},
{
"location": {
- "x": 29.0,
- "y": 10.0
+ "x": 60.0,
+ "y": 20.0
},
"name": "Y001",
"logicWidth": 1
},
{
"location": {
- "x": 29.0,
- "y": 25.0
+ "x": 60.0,
+ "y": 50.0
},
"name": "Y100",
"logicWidth": 1
},
{
"location": {
- "x": 29.0,
- "y": 40.0
+ "x": 60.0,
+ "y": 80.0
},
"name": "Y111",
"logicWidth": 1
{
"location": {
"x": 0.0,
- "y": 22.0
+ "y": 50.0
},
"name": "I",
"logicWidth": 4
},
{
"location": {
- "x": 29.0,
- "y": 20.0
+ "x": 60.0,
+ "y": 40.0
},
"name": "Y011",
"logicWidth": 1
},
{
"location": {
- "x": 29.0,
- "y": 5.0
+ "x": 60.0,
+ "y": 10.0
},
"name": "Y000",
"logicWidth": 1
},
{
"location": {
- "x": 29.0,
- "y": 35.0
+ "x": 60.0,
+ "y": 70.0
},
"name": "Y110",
"logicWidth": 1
},
{
"location": {
- "x": 29.0,
- "y": 15.0
+ "x": 60.0,
+ "y": 30.0
},
"name": "Y010",
"logicWidth": 1
}
],
"submodel": {
- "innerScale": 0.2,
+ "innerScale": 0.4,
"subComps": [
{
- "id": "GUINandGate",
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
"name": "GUINandGate#1",
"pos": {
- "x": 40.0,
+ "x": 45.0,
"y": 50.0
},
"params": 1
},
{
- "id": "GUINandGate",
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
"name": "GUINandGate#0",
"pos": {
- "x": 80.0,
+ "x": 85.0,
"y": 20.0
},
"params": 1
},
{
- "id": "GUINandGate",
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
"name": "GUINandGate#3",
"pos": {
- "x": 40.0,
+ "x": 45.0,
"y": 105.0
},
"params": 1
},
{
- "id": "GUINandGate",
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
"name": "GUINandGate#2",
"pos": {
- "x": 115.0,
+ "x": 120.0,
"y": 15.0
},
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#1",
"pos": {
- "x": 29.0,
+ "x": 34.0,
"y": 99.0
},
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#0",
"pos": {
- "x": 24.0,
- "y": 114.0
+ "x": 29.0,
+ "y": 129.0
},
"params": 1
},
{
- "id": "GUISplitter",
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
"name": "GUISplitter#0",
"pos": {
"x": 5.0,
- "y": 95.0
+ "y": 110.0
},
"params": 4
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#3",
"pos": {
- "x": 74.0,
+ "x": 79.0,
"y": 24.0
},
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#2",
"pos": {
- "x": 74.0,
+ "x": 79.0,
"y": 34.0
},
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#5",
"pos": {
- "x": 19.0,
- "y": 109.0
+ "x": 24.0,
+ "y": 119.0
},
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#4",
"pos": {
"x": 19.0,
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#7",
"pos": {
- "x": 69.0,
+ "x": 74.0,
"y": 59.0
},
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#6",
"pos": {
- "x": 34.0,
+ "x": 39.0,
"y": 64.0
},
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#9",
"pos": {
- "x": 19.0,
+ "x": 24.0,
"y": 149.0
},
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#8",
"pos": {
- "x": 69.0,
+ "x": 74.0,
"y": 119.0
},
"params": 1
},
{
- "id": "GUINandGate",
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
"name": "GUINandGate#5",
"pos": {
- "x": 75.0,
+ "x": 80.0,
"y": 165.0
},
"params": 1
},
{
- "id": "WireCrossPoint",
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
"name": "WireCrossPoint#10",
"pos": {
- "x": 34.0,
+ "x": 39.0,
"y": 109.0
},
"params": 1
"id": "GUIxor",
"name": "DeserializedSubmodelComponent#0",
"pos": {
- "x": 35.0,
+ "x": 40.0,
"y": 20.0
}
},
{
- "id": "GUINandGate",
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
"name": "GUINandGate#4",
"pos": {
- "x": 75.0,
+ "x": 80.0,
"y": 115.0
},
"params": 1
"name": "unnamedWire#14",
"path": [
{
- "x": 70.0,
- "y": 45.0
- },
- {
- "x": 110.0,
- "y": 45.0
+ "x": 115.0,
+ "y": 60.0
},
{
- "x": 110.0,
+ "x": 115.0,
"y": 30.0
}
]
"name": "unnamedWire#15",
"path": [
{
- "x": 75.0,
+ "x": 80.0,
"y": 50.0
}
]
"pinName": ""
},
"name": "unnamedWire#17",
- "path": []
+ "path": [
+ {
+ "x": 25.0,
+ "y": 110.0
+ }
+ ]
},
{
"pin1": {
"pinName": ""
},
"name": "unnamedWire#19",
- "path": [
- {
- "x": 20.0,
- "y": 105.0
- }
- ]
+ "path": []
},
{
"pin1": {
"path": [
{
"x": 20.0,
- "y": 95.0
+ "y": 110.0
}
]
},
"name": "unnamedWire#24",
"path": [
{
- "x": 65.0,
+ "x": 70.0,
"y": 115.0
},
{
- "x": 65.0,
+ "x": 70.0,
"y": 130.0
}
]
"name": "unnamedWire#30",
"path": [
{
- "x": 70.0,
+ "x": 75.0,
"y": 170.0
}
]
"name": "unnamedWire#10",
"path": [
{
- "x": 105.0,
+ "x": 110.0,
"y": 20.0
},
{
- "x": 105.0,
+ "x": 110.0,
"y": 30.0
}
]
"name": "unnamedWire#32",
"path": [
{
- "x": 20.0,
+ "x": 25.0,
"y": 180.0
}
]
"name": "unnamedWire#4",
"path": [
{
- "x": 30.0,
+ "x": 35.0,
"y": 35.0
}
]
"name": "unnamedWire#31",
"path": [
{
- "x": 35.0,
+ "x": 40.0,
"y": 120.0
}
]
"name": "unnamedWire#3",
"path": [
{
- "x": 25.0,
+ "x": 30.0,
"y": 25.0
}
]
"name": "unnamedWire#12",
"path": [
{
- "x": 35.0,
+ "x": 40.0,
"y": 55.0
}
]
"name": "unnamedWire#2",
"path": [
{
- "x": 30.0,
- "y": 125.0
+ "x": 35.0,
+ "y": 140.0
}
]
},
"name": "unnamedWire#33",
"path": [
{
- "x": 25.0,
+ "x": 30.0,
"y": 200.0
}
]
addPin(new Pin(this, "muSR_MUX", 2, 80, 10), Usage.OUTPUT, Position.LEFT);
addPin(new Pin(this, "muSR_OVRRET", 1, 80, 20), Usage.OUTPUT, Position.LEFT);
addPin(new Pin(this, "muSR_CINV", 1, 80, 30), Usage.OUTPUT, Position.LEFT);
- addPin(new Pin(this, "muSR__WEZ", 1, 80, 40), Usage.OUTPUT, Position.LEFT);
- addPin(new Pin(this, "muSR__WEC", 1, 80, 50), Usage.OUTPUT, Position.LEFT);
- addPin(new Pin(this, "muSR__WEN", 1, 80, 60), Usage.OUTPUT, Position.LEFT);
- addPin(new Pin(this, "muSR__WEOVR", 1, 80, 70), Usage.OUTPUT, Position.LEFT);
+ addPin(new Pin(this, "muSR_WEZ", 1, 80, 40), Usage.OUTPUT, Position.LEFT);
+ addPin(new Pin(this, "muSR_WEC", 1, 80, 50), Usage.OUTPUT, Position.LEFT);
+ addPin(new Pin(this, "muSR_WEN", 1, 80, 60), Usage.OUTPUT, Position.LEFT);
+ addPin(new Pin(this, "muSR_WEOVR", 1, 80, 70), Usage.OUTPUT, Position.LEFT);
// MSR MUX:
// 000: 0
// 001: 1
// 101: I, invert C
// 110: Swap OVR and C
// 111: _M
- addPin(new Pin(this, "MSR_MUX", 3, 40, 0), Usage.OUTPUT, Position.BOTTOM);
+ addPin(new Pin(this, "MSR_MUX", 3, 20, 0), Usage.OUTPUT, Position.BOTTOM);
+ // TODO when is this HIGH?
+ addPin(new Pin(this, "OEN", 1, 60, 0), Usage.OUTPUT, Position.BOTTOM);
// CT SRC MUX:
// 00: mu
// 01: mu
// 10: M
// 11: I
- addPin(new Pin(this, "CT_SRC_MUX", 2, 10, 80), Usage.OUTPUT, Position.TOP);
+ addPin(new Pin(this, "Y_MUX", 2, 10, 80), Usage.OUTPUT, Position.TOP);
// CT MUX:
// see Am2900 Family Data Book, Am2904, Table 4 (CT_MUX2-0 = I3-1)
addPin(new Pin(this, "CT_MUX", 3, 30, 80), Usage.OUTPUT, Position.TOP);
break;
case U:
for (ReadWriteEnd e : readWriteEnds.values())
- e.feedSignals(BitVector.of(U, e.length()));
+ e.feedSignals(BitVector.of(U, e.width()));
return null;
case X:
case Z:
for (ReadWriteEnd e : readWriteEnds.values())
- e.feedSignals(BitVector.of(X, e.length()));
+ e.feedSignals(BitVector.of(X, e.width()));
return null;
case ZERO:
break;
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(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(ONE, 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(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(ZERO);
- readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEOVR").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(ZERO);
- readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEOVR").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(ZERO);
- readWriteEnds.get("muSR__WEC").feedSignals(ONE);
- readWriteEnds.get("muSR__WEN").feedSignals(ONE);
- readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+ 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(ONE, 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(ONE);
- readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+ 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(ONE);
- readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEN").feedSignals(ONE);
- readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+ 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(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(ZERO);
- readWriteEnds.get("muSR__WEN").feedSignals(ONE);
- readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+ 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(ONE);
- readWriteEnds.get("muSR__WEC").feedSignals(ONE);
- readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+ 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(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(ZERO);
- readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+ 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(ONE);
- readWriteEnds.get("muSR__WEC").feedSignals(ONE);
- readWriteEnds.get("muSR__WEN").feedSignals(ONE);
- readWriteEnds.get("muSR__WEOVR").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(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(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:
readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
readWriteEnds.get("muSR_CINV").feedSignals(ONE);
- readWriteEnds.get("muSR__WEZ").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEOVR").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;
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(ZERO);
- readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
- readWriteEnds.get("muSR__WEOVR").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)
{
readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ONE);
break;
}
- readWriteEnds.get("CT_SRC_MUX").feedSignals(IBits[0], IBits[1]);
+ readWriteEnds.get("Y_MUX").feedSignals(IBits[0], IBits[1]);
readWriteEnds.get("CT_INV").feedSignals(IBits[5]);
readWriteEnds.get("CT_MUX").feedSignals(IBits[2], IBits[3], IBits[4]);
readWriteEnds.get("CT_EXP").feedSignals((IAsInt & 0b1110) == 0b1110 ? ONE : ZERO);
@SuppressWarnings("unused") // for GUIWires being created
public static void createTestbench(ViewModelModifiable model)
{
- GUIComponent comp = IndirectGUIComponentCreator.createComponent(model, "file:components/am2904/GUIAm2904TestLogic.json");
+ GUIComponent comp = IndirectGUIComponentCreator.createComponent(model, "file:components/am2904/GUIAm2904.json");
// guess which pins are outputs and which are inputs
// TODO this code exists four times... but it seems too "hacky" to put it in a helper class
return sb.reverse().toString();
}
- public static BitVector of(int value, int length)
+ public static BitVector of(int value, int width)
{
- BitVectorMutator mutator = BitVectorMutator.ofLength(length);
+ BitVectorMutator mutator = BitVectorMutator.ofWidth(width);
int val = value;
- for (int i = length - 1; i >= 0; i--)
+ for (int i = width - 1; i >= 0; i--)
{
mutator.setMSBit(i, Bit.lastBitOf(val));
val >>>= 1;
@Override
public void setInstruction(Am2910_Inst inst)
{
- I.setState(BitVector.of(inst.ordinal(), 4));
+ I.setState(BitVector.from(inst.ordinal(), 4));
}
@Override
Export-Package: net.mograsim.logic.model.editor,
net.mograsim.logic.model.editor.handles,
net.mograsim.logic.model.editor.states,
- net.mograsim.logic.model.editor.ui
+ net.mograsim.logic.model.editor.ui,
+ net.mograsim.logic.model.editor.util
Require-Bundle: net.mograsim.logic.model;bundle-version="0.1.0",
net.mograsim.preferences;bundle-version="0.1.0",
net.mograsim.logic.model.am2900;bundle-version="0.1.0"
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 35.0,
+ "height": 60.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "D4",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Q1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Q2",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Q3",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Q4",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "D1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "WE",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "D2",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "D3",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.2,
+ "subComps": [
+ {
+ "id": "GUIdff",
+ "name": "GUIdff#1",
+ "pos": {
+ "x": 115.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "GUIdff",
+ "name": "GUIdff#0",
+ "pos": {
+ "x": 115.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 104.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 104.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 169.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 104.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 159.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 164.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 154.0,
+ "y": 174.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 55.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "GUIdff",
+ "name": "GUIdff#3",
+ "pos": {
+ "x": 115.0,
+ "y": 170.0
+ }
+ },
+ {
+ "id": "GUIdff",
+ "name": "GUIdff#2",
+ "pos": {
+ "x": 115.0,
+ "y": 120.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q1"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff#0",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#1",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff#2",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "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": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q3"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#3",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q4"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "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": "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": "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#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#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "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": "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": "_submodelinterface",
+ "pinName": "WE"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#3",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#2",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "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": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "D1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "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": "_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": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "GUIdff#1",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "D flip flop\n4 bit",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q1": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+ "params": {
+ "delegateTarget": "GUIdff#0",
+ "subStateID": "q"
+ }
+ },
+ "q2": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+ "params": {
+ "delegateTarget": "GUIdff#1",
+ "subStateID": "q"
+ }
+ },
+ "q": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+ "params": {
+ "vectorPartTargets": [
+ "q1",
+ "q2",
+ "q3",
+ "q4"
+ ],
+ "vectorPartWidths": [
+ 1,
+ 1,
+ 1,
+ 1
+ ]
+ }
+ },
+ "q3": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+ "params": {
+ "delegateTarget": "GUIdff#2",
+ "subStateID": "q"
+ }
+ },
+ "q4": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+ "params": {
+ "delegateTarget": "GUIdff#3",
+ "subStateID": "q"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 35.0,
+ "height": 60.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 55.0
+ },
+ "name": "D4",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Q1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 15.0
+ },
+ "name": "Q2",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 25.0
+ },
+ "name": "Q3",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 35.0
+ },
+ "name": "Q4",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "D1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "_WE",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "D2",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 45.0
+ },
+ "name": "D3",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.2,
+ "subComps": [
+ {
+ "id": "GUIdff",
+ "name": "GUIdff#1",
+ "pos": {
+ "x": 115.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "GUIdff",
+ "name": "GUIdff#0",
+ "pos": {
+ "x": 115.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 104.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 104.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 169.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 104.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 159.0,
+ "y": 124.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 164.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 154.0,
+ "y": 174.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 55.0,
+ "y": 70.0
+ }
+ },
+ {
+ "id": "GUIdff",
+ "name": "GUIdff#3",
+ "pos": {
+ "x": 115.0,
+ "y": 170.0
+ }
+ },
+ {
+ "id": "GUIdff",
+ "name": "GUIdff#2",
+ "pos": {
+ "x": 115.0,
+ "y": 120.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q1"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff#0",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#1",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff#2",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "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": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q3"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#3",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q4"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "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": "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": "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#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#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "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": "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": "_submodelinterface",
+ "pinName": "_WE"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#3",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#8",
+ "path": [
+ {
+ "x": 105.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#2",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "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": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "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": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "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": "_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": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "GUIdff#1",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "D flip flop\n4 bit",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {
+ "q1": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+ "params": {
+ "delegateTarget": "GUIdff#0",
+ "subStateID": "q"
+ }
+ },
+ "q2": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+ "params": {
+ "delegateTarget": "GUIdff#1",
+ "subStateID": "q"
+ }
+ },
+ "q": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+ "params": {
+ "vectorPartTargets": [
+ "q1",
+ "q2",
+ "q3",
+ "q4"
+ ],
+ "vectorPartWidths": [
+ 1,
+ 1,
+ 1,
+ 1
+ ]
+ }
+ },
+ "q3": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+ "params": {
+ "delegateTarget": "GUIdff#2",
+ "subStateID": "q"
+ }
+ },
+ "q4": {
+ "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+ "params": {
+ "delegateTarget": "GUIdff#3",
+ "subStateID": "q"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
"q3",
"q4"
],
- "vectorPartLengthes": [
+ "vectorPartWidths": [
1,
1,
1,
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 70.0,
+ "height": 70.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "I00",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I11",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I10",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 70.0,
+ "y": 10.0
+ },
+ "name": "Y",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "I01",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "S0",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "S1",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.4,
+ "subComps": [
+ {
+ "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#0",
+ "pos": {
+ "x": 24.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 54.0,
+ "y": 39.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 24.0,
+ "y": 49.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIsel1",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 60.0,
+ "y": 100.0
+ }
+ },
+ {
+ "id": "GUIsel1",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 60.0,
+ "y": 35.0
+ }
+ },
+ {
+ "id": "GUImux1",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 115.0,
+ "y": 20.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "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": "GUINandGate#0",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 55.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#9",
+ "path": [
+ {
+ "x": 15.0,
+ "y": 50.0
+ },
+ {
+ "x": 15.0,
+ "y": 10.0
+ },
+ {
+ "x": 85.0,
+ "y": 10.0
+ },
+ {
+ "x": 85.0,
+ "y": 25.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": "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#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 20.0
+ }
+ ]
+ },
+ {
+ "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": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I10"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "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": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "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": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "GUImux2",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default"
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 62.0,
+ "height": 90.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "I00",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I11",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I10",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 62.0,
+ "y": 16.0
+ },
+ "name": "Y",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "I01",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "S0",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "S1",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.4,
+ "subComps": [
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 19.0,
+ "y": 34.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#0",
+ "pos": {
+ "x": 25.0,
+ "y": 45.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUIMerger",
+ "name": "GUIMerger#0",
+ "pos": {
+ "x": 140.0,
+ "y": 25.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#3",
+ "pos": {
+ "x": 25.0,
+ "y": 180.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#2",
+ "pos": {
+ "x": 25.0,
+ "y": 140.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#1",
+ "pos": {
+ "x": 25.0,
+ "y": 85.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 40.0,
+ "y": 125.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 40.0,
+ "y": 30.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 100.0,
+ "y": 20.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#14",
+ "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#0",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 130.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "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": "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": "I01"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "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": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#24",
+ "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#2",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "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": "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": "GUISplitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#3",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "GUISplitter#2",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#0",
+ "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": "GUISplitter#3",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y1"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "GUISplitter#2",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_3"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "GUImux1_4",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler"
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 80.0,
+ "height": 120.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "I000",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 70.0
+ },
+ "name": "I011",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 100.0
+ },
+ "name": "I110",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 60.0
+ },
+ "name": "I010",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 90.0
+ },
+ "name": "I101",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 80.0
+ },
+ "name": "I100",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 110.0
+ },
+ "name": "I111",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 80.0,
+ "y": 10.0
+ },
+ "name": "Y",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I001",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "S0",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "S1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "S2",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.4,
+ "subComps": [
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 24.0,
+ "y": 94.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 19.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUImux2",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 35.0,
+ "y": 185.0
+ }
+ },
+ {
+ "id": "GUImux2",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 35.0,
+ "y": 85.0
+ }
+ },
+ {
+ "id": "GUImux1",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 125.0,
+ "y": 20.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "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": "I10"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I110"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 235.0
+ },
+ {
+ "x": 10.0,
+ "y": 250.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#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#2",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 70.0,
+ "y": 25.0
+ },
+ {
+ "x": 70.0,
+ "y": 75.0
+ }
+ ]
+ },
+ {
+ "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
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I01"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "I001"
+ },
+ "name": "unnamedWire#8",
+ "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#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#1",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 25.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#5",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 205.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": "S0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S1"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I101"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I01"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "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
+ }
+ ]
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "GUImux3",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler"
+}
\ No newline at end of file
"c01.q",
"c00.q"
],
- "vectorPartLengthes": [
+ "vectorPartWidths": [
4,
4,
4,
"c01.q",
"c00.q"
],
- "vectorPartLengthes": [
+ "vectorPartWidths": [
16,
16,
16,
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 35.0,
+ "height": 40.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "I1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 35.0
+ },
+ "name": "I2",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.0,
+ "y": 5.0
+ },
+ "name": "Y",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "S1",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "S2",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.4,
+ "subComps": [
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#1",
+ "pos": {
+ "x": 35.0,
+ "y": 30.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#3",
+ "pos": {
+ "x": 60.0,
+ "y": 40.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#2",
+ "pos": {
+ "x": 35.0,
+ "y": 55.0
+ },
+ "params": 1
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "GUINandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUINandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#9"
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUINandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#8"
+ },
+ {
+ "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": "_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": "_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": "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": "GUINandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#10"
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "GUIsel1",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "default"
+}
\ No newline at end of file
"params": 1
},
{
- "id": "GUIAm2901QReg",
- "name": "GUIAm2901QReg#0",
+ "id": "GUIdff4",
+ "name": "GUIdff4#0",
"pos": {
"x": 90.0,
"y": 2490.0
"pinName": ""
},
"pin2": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "C"
},
"name": "unnamedWire#17",
"pinName": "Y2"
},
"pin2": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "D2"
},
"name": "unnamedWire#87",
"pinName": "Y1"
},
"pin2": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "D1"
},
"name": "unnamedWire#86",
"pinName": "Y4"
},
"pin2": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "D4"
},
"name": "unnamedWire#89",
"pinName": "Y3"
},
"pin2": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "D3"
},
"name": "unnamedWire#88",
"pinName": "QWE"
},
"pin2": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "WE"
},
"name": "unnamedWire#147",
},
{
"pin1": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "Q2"
},
"pin2": {
},
{
"pin1": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "Q1"
},
"pin2": {
},
{
"pin1": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "Q4"
},
"pin2": {
},
{
"pin1": {
- "compName": "GUIAm2901QReg#0",
+ "compName": "GUIdff4#0",
"pinName": "Q3"
},
"pin2": {
"qreg": {
"id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
"params": {
- "delegateTarget": "GUIAm2901QReg#0"
+ "delegateTarget": "GUIdff4#0"
}
},
"regs": {
+++ /dev/null
-mograsim version: 0.1.3
-{
- "width": 35.0,
- "height": 60.0,
- "interfacePins": [
- {
- "location": {
- "x": 0.0,
- "y": 55.0
- },
- "name": "D4",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 35.0,
- "y": 5.0
- },
- "name": "Q1",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 35.0,
- "y": 15.0
- },
- "name": "Q2",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 35.0,
- "y": 25.0
- },
- "name": "Q3",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 0.0,
- "y": 5.0
- },
- "name": "C",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 35.0,
- "y": 35.0
- },
- "name": "Q4",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 0.0,
- "y": 25.0
- },
- "name": "D1",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 0.0,
- "y": 15.0
- },
- "name": "WE",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 0.0,
- "y": 35.0
- },
- "name": "D2",
- "logicWidth": 1
- },
- {
- "location": {
- "x": 0.0,
- "y": 45.0
- },
- "name": "D3",
- "logicWidth": 1
- }
- ],
- "submodel": {
- "innerScale": 0.2,
- "subComps": [
- {
- "id": "GUIdff",
- "name": "GUIdff#1",
- "pos": {
- "x": 115.0,
- "y": 70.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#0",
- "pos": {
- "x": 115.0,
- "y": 20.0
- }
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#1",
- "pos": {
- "x": 104.0,
- "y": 74.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#0",
- "pos": {
- "x": 104.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#3",
- "pos": {
- "x": 169.0,
- "y": 24.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#2",
- "pos": {
- "x": 104.0,
- "y": 124.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#5",
- "pos": {
- "x": 159.0,
- "y": 124.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#4",
- "pos": {
- "x": 164.0,
- "y": 74.0
- },
- "params": 1
- },
- {
- "id": "WireCrossPoint",
- "name": "WireCrossPoint#6",
- "pos": {
- "x": 154.0,
- "y": 174.0
- },
- "params": 1
- },
- {
- "id": "GUImux1_4",
- "name": "DeserializedSubmodelComponent#0",
- "pos": {
- "x": 55.0,
- "y": 70.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#3",
- "pos": {
- "x": 115.0,
- "y": 170.0
- }
- },
- {
- "id": "GUIdff",
- "name": "GUIdff#2",
- "pos": {
- "x": 115.0,
- "y": 120.0
- }
- }
- ],
- "innerWires": [
- {
- "pin1": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q1"
- },
- "name": "unnamedWire#14",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff#0",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "WireCrossPoint#3",
- "pinName": ""
- },
- "name": "unnamedWire#13",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#1",
- "pinName": "Q"
- },
- "name": "unnamedWire#16",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "Q2"
- },
- "pin2": {
- "compName": "WireCrossPoint#4",
- "pinName": ""
- },
- "name": "unnamedWire#15",
- "path": []
- },
- {
- "pin1": {
- "compName": "GUIdff#2",
- "pinName": "Q"
- },
- "pin2": {
- "compName": "WireCrossPoint#5",
- "pinName": ""
- },
- "name": "unnamedWire#18",
- "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": "WireCrossPoint#5",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q3"
- },
- "name": "unnamedWire#19",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#3",
- "pinName": "Q"
- },
- "name": "unnamedWire#21",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "_submodelinterface",
- "pinName": "Q4"
- },
- "name": "unnamedWire#20",
- "path": []
- },
- {
- "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": "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": "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#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#6",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#6",
- "pinName": ""
- },
- "name": "unnamedWire#27",
- "path": []
- },
- {
- "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": "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": "_submodelinterface",
- "pinName": "WE"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "S0"
- },
- "name": "unnamedWire#9",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#3",
- "pinName": "C"
- },
- "name": "unnamedWire#8",
- "path": [
- {
- "x": 105.0,
- "y": 175.0
- }
- ]
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#2",
- "pinName": "C"
- },
- "name": "unnamedWire#7",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#2",
- "pinName": ""
- },
- "name": "unnamedWire#6",
- "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": "C"
- },
- "pin2": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "name": "unnamedWire#0",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#1",
- "pinName": "C"
- },
- "name": "unnamedWire#5",
- "path": []
- },
- {
- "pin1": {
- "compName": "_submodelinterface",
- "pinName": "D1"
- },
- "pin2": {
- "compName": "DeserializedSubmodelComponent#0",
- "pinName": "I1_1"
- },
- "name": "unnamedWire#10",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "WireCrossPoint#1",
- "pinName": ""
- },
- "name": "unnamedWire#4",
- "path": []
- },
- {
- "pin1": {
- "compName": "WireCrossPoint#0",
- "pinName": ""
- },
- "pin2": {
- "compName": "GUIdff#0",
- "pinName": "C"
- },
- "name": "unnamedWire#3",
- "path": []
- },
- {
- "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": "_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": "DeserializedSubmodelComponent#0",
- "pinName": "Y2"
- },
- "pin2": {
- "compName": "GUIdff#1",
- "pinName": "D"
- },
- "name": "unnamedWire#2",
- "path": []
- }
- ]
- },
- "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
- "symbolRendererParams": {
- "centerText": "GUIAm2901QReg",
- "centerTextHeight": 5.0,
- "horizontalComponentCenter": 17.5,
- "pinLabelHeight": 3.5,
- "pinLabelMargin": 0.5
- },
- "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
- "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
- "highLevelStateHandlerParams": {
- "subcomponentHighLevelStates": {},
- "atomicHighLevelStates": {
- "q1": {
- "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
- "params": {
- "delegateTarget": "GUIdff#0",
- "subStateID": "q"
- }
- },
- "q2": {
- "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
- "params": {
- "delegateTarget": "GUIdff#1",
- "subStateID": "q"
- }
- },
- "q": {
- "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
- "params": {
- "vectorPartTargets": [
- "q1",
- "q2",
- "q3",
- "q4"
- ],
- "vectorPartLengthes": [
- 1,
- 1,
- 1,
- 1
- ]
- }
- },
- "q3": {
- "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
- "params": {
- "delegateTarget": "GUIdff#2",
- "subStateID": "q"
- }
- },
- "q4": {
- "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
- "params": {
- "delegateTarget": "GUIdff#3",
- "subStateID": "q"
- }
- }
- }
- }
-}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 120.0,
+ "height": 94.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 0.0,
+ "y": 25.0
+ },
+ "name": "IOVR",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 30.0
+ },
+ "name": "_CEM",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "C",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 61.0
+ },
+ "name": "I",
+ "logicWidth": 13
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 40.0
+ },
+ "name": "_EN",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -14.600000000000001,
+ "y": -0.6000000000000001
+ },
+ "name": "QIOn_out",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 17.0
+ },
+ "name": "YC",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -24.6,
+ "y": 14.4
+ },
+ "name": "SIOn_in",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -24.6,
+ "y": 24.400000000000002
+ },
+ "name": "C0",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -34.6,
+ "y": 29.400000000000002
+ },
+ "name": "QIO0_in",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 36.0
+ },
+ "name": "_EZ",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -14.600000000000001,
+ "y": 14.4
+ },
+ "name": "Cx",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 21.0
+ },
+ "name": "YN",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -24.6,
+ "y": 19.400000000000002
+ },
+ "name": "SIOn_out",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 15.0
+ },
+ "name": "IC",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 42.0
+ },
+ "name": "_EOVR",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 11.0
+ },
+ "name": "YZ",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 20.0
+ },
+ "name": "IN",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 61.0,
+ "y": 0.0
+ },
+ "name": "_OEY",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -24.6,
+ "y": 44.400000000000006
+ },
+ "name": "SIO0_in",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -24.6,
+ "y": 49.400000000000006
+ },
+ "name": "SIO0_out",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -14.600000000000001,
+ "y": 44.400000000000006
+ },
+ "name": "QIO0_out",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 10.0
+ },
+ "name": "IZ",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 60.0
+ },
+ "name": "CT",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 33.0
+ },
+ "name": "_CEmu",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": -24.6,
+ "y": 54.400000000000006
+ },
+ "name": "QIOn_in",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 120.0,
+ "y": 25.0
+ },
+ "name": "YOVR",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 38.0
+ },
+ "name": "_EC",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.2,
+ "subComps": [
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 520.0,
+ "y": 190.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 330.0,
+ "y": 125.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 255.0,
+ "y": 255.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 255.0,
+ "y": 265.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 180.0,
+ "y": 135.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 165.0,
+ "y": 150.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 335.0,
+ "y": 270.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 295.0,
+ "y": 120.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 530.0,
+ "y": 100.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 150.0,
+ "y": 160.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 215.0,
+ "y": 180.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUITriStateBuffer",
+ "name": "GUITriStateBuffer#0",
+ "pos": {
+ "x": 530.0,
+ "y": 170.0
+ },
+ "params": {
+ "logicWidth": 4,
+ "orientation": "RIGHT"
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 120.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 215.0,
+ "y": 200.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 215.0,
+ "y": 160.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIAm2904muSR",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 270.0,
+ "y": 250.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 195.0,
+ "y": 55.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIAm2904MSR",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 225.0,
+ "y": 95.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 195.0,
+ "y": 35.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 470.0,
+ "y": 160.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 195.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIand",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 370.0,
+ "y": 130.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 415.0,
+ "y": 210.0
+ }
+ },
+ {
+ "id": "GUInot4",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 135.0,
+ "y": 40.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+ "name": "GUIMerger#3",
+ "pos": {
+ "x": 510.0,
+ "y": 165.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUImux3",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 300.0,
+ "y": 310.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+ "name": "GUIMerger#2",
+ "pos": {
+ "x": 15.0,
+ "y": 65.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUIAm2904TestLogic",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 225.0,
+ "y": 340.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+ "name": "GUIMerger#1",
+ "pos": {
+ "x": 25.0,
+ "y": 305.0
+ },
+ "params": 5
+ },
+ {
+ "id": "GUImux1",
+ "name": "DeserializedSubmodelComponent#9",
+ "pos": {
+ "x": 480.0,
+ "y": 305.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+ "name": "GUIMerger#0",
+ "pos": {
+ "x": 25.0,
+ "y": 245.0
+ },
+ "params": 6
+ },
+ {
+ "id": "GUIxor",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 540.0,
+ "y": 295.0
+ }
+ },
+ {
+ "id": "GUIxor",
+ "name": "DeserializedSubmodelComponent#10",
+ "pos": {
+ "x": 485.0,
+ "y": 355.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#10",
+ "pos": {
+ "x": 340.0,
+ "y": 120.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#9",
+ "pos": {
+ "x": 205.0,
+ "y": 10.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#8",
+ "pos": {
+ "x": 205.0,
+ "y": 30.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#5",
+ "pos": {
+ "x": 225.0,
+ "y": 175.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#4",
+ "pos": {
+ "x": 225.0,
+ "y": 155.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#7",
+ "pos": {
+ "x": 205.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#6",
+ "pos": {
+ "x": 205.0,
+ "y": 70.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#1",
+ "pos": {
+ "x": 130.0,
+ "y": 5.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#0",
+ "pos": {
+ "x": 190.0,
+ "y": 145.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#3",
+ "pos": {
+ "x": 225.0,
+ "y": 215.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#2",
+ "pos": {
+ "x": 225.0,
+ "y": 195.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#4",
+ "pos": {
+ "x": 395.0,
+ "y": 225.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#3",
+ "pos": {
+ "x": 450.0,
+ "y": 175.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#2",
+ "pos": {
+ "x": 395.0,
+ "y": 195.0
+ },
+ "params": 2
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#1",
+ "pos": {
+ "x": 555.0,
+ "y": 80.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#8",
+ "pos": {
+ "x": 445.0,
+ "y": 370.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#7",
+ "pos": {
+ "x": 445.0,
+ "y": 330.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#6",
+ "pos": {
+ "x": 285.0,
+ "y": 320.0
+ },
+ "params": 3
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#5",
+ "pos": {
+ "x": 395.0,
+ "y": 265.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#0",
+ "pos": {
+ "x": 10.0,
+ "y": 245.0
+ },
+ "params": 13
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904RegCTInstrDecode",
+ "name": "GUIAm2904RegCTInstrDecode#0",
+ "pos": {
+ "x": 50.0,
+ "y": 230.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904ShiftInstrDecode",
+ "name": "GUIAm2904ShiftInstrDecode#0",
+ "pos": {
+ "x": 50.0,
+ "y": 360.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "GUINandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_CEmu"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#5",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#5",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#110",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#5",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#111",
+ "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": "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": "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": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y101"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I101"
+ },
+ "name": "unnamedWire#116",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I100"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y100"
+ },
+ "name": "unnamedWire#117",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#3",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EOVR"
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#3",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#42",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EC"
+ },
+ "pin2": {
+ "compName": "GUINandGate#5",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#45",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EN"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#4",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEZ"
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "_EZ"
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "YZ"
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEC"
+ },
+ "pin2": {
+ "compName": "GUINandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#100",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#4",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#103",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#4",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#104",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#101",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#4",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#102",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "YC"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#5",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#107",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#5",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#108",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "YOVR"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#4",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#105",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "YN"
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#4",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#106",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#54",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#1",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#56",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#5",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#109",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O10"
+ },
+ "pin2": {
+ "compName": "GUIMerger#1",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#14",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#1",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O9"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904ShiftInstrDecode#0",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "GUIMerger#1",
+ "pinName": "O"
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 395.0
+ },
+ {
+ "x": 40.0,
+ "y": 325.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#15",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "GUIMerger#2",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 100.0
+ },
+ {
+ "x": 5.0,
+ "y": 85.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IOVR"
+ },
+ "pin2": {
+ "compName": "GUIMerger#2",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 10.0,
+ "y": 125.0
+ },
+ {
+ "x": 10.0,
+ "y": 95.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IC"
+ },
+ "pin2": {
+ "compName": "GUIMerger#2",
+ "pinName": "I1"
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_CINV"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "CINV"
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "IZ"
+ },
+ "pin2": {
+ "compName": "GUIMerger#2",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 50.0
+ },
+ {
+ "x": 5.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#2",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Q"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "mu"
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904ShiftInstrDecode#0",
+ "pinName": "MC_EN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "COVD_EN"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "MSR_MUX"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "MUX"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUITriStateBuffer#0",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#79",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#10",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#81",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#80",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#10",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#83",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_OEY"
+ },
+ "name": "unnamedWire#82",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#85",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUITriStateBuffer#0",
+ "pinName": "EN"
+ },
+ "name": "unnamedWire#84",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#87",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#86",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "GUIMerger#3",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#89",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#88",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I5"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O5"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O4"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I4"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#3",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#90",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#3",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#92",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "GUIMerger#3",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#91",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_MUX"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "MUX"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "Y_MUX"
+ },
+ "pin2": {
+ "compName": "GUISplitter#2",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#94",
+ "path": []
+ },
+ {
+ "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": "GUIMerger#3",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#93",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#96",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#95",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O6"
+ },
+ "pin2": {
+ "compName": "GUIMerger#1",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "GUISplitter#3",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#98",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#97",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O8"
+ },
+ "pin2": {
+ "compName": "GUIMerger#1",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#12",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#1",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O7"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_OVRRET"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "OVRRET"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#3",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#99",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#2",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEN"
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_CEM"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "muSR_WEOVR"
+ },
+ "pin2": {
+ "compName": "GUINandGate#3",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#59",
+ "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": "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#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": "GUISplitter#7",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#134",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#8",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#10",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#135",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#7",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#61",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#6",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#9",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#63",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "OEN"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#138",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#8",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#62",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#64",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EN"
+ },
+ "pin2": {
+ "compName": "GUINandGate#7",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#67",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#6",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EOVR"
+ },
+ "name": "unnamedWire#66",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#9",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EZ"
+ },
+ "name": "unnamedWire#69",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "_EC"
+ },
+ "name": "unnamedWire#68",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y000"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I000"
+ },
+ "name": "unnamedWire#121",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "CT"
+ },
+ "name": "unnamedWire#122",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "I001"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "Y001"
+ },
+ "name": "unnamedWire#120",
+ "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": "GUINandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#70",
+ "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": "GUINandGate#8",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#72",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#129",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "GUINandGate#9",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#71",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "GUINandGate#6",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#74",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#6",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S2"
+ },
+ "name": "unnamedWire#127",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "GUINandGate#7",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#73",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2904RegCTInstrDecode#0",
+ "pinName": "CT_EXP"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#9",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#128",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EC"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A2"
+ },
+ "name": "unnamedWire#76",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A1"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_EZ"
+ },
+ "name": "unnamedWire#75",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_EOVR"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A4"
+ },
+ "name": "unnamedWire#78",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "A3"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_EN"
+ },
+ "name": "unnamedWire#77",
+ "path": []
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "Am2904",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {}
+ }
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 45.0,
+ "height": 46.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 4.0,
+ "y": 46.0
+ },
+ "name": "MUX",
+ "logicWidth": 3
+ },
+ {
+ "location": {
+ "x": 45.0,
+ "y": 19.0
+ },
+ "name": "Q",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 27.5,
+ "y": 46.0
+ },
+ "name": "COVD_EN",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 14.0,
+ "y": 46.0
+ },
+ "name": "C",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 5.5,
+ "y": 0.0
+ },
+ "name": "_EZ",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 37.5,
+ "y": 46.0
+ },
+ "name": "COVD_V",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 5.0
+ },
+ "name": "mu",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 18.0
+ },
+ "name": "Y",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 31.0
+ },
+ "name": "I",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 25.5,
+ "y": 0.0
+ },
+ "name": "_EN",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 15.5,
+ "y": 0.0
+ },
+ "name": "_EC",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 35.5,
+ "y": 0.2
+ },
+ "name": "_EOVR",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.1,
+ "subComps": [
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#14",
+ "pos": {
+ "x": 89.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#13",
+ "pos": {
+ "x": 194.0,
+ "y": 234.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#0",
+ "pos": {
+ "x": 325.0,
+ "y": 90.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#16",
+ "pos": {
+ "x": 319.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#15",
+ "pos": {
+ "x": 319.0,
+ "y": 294.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#3",
+ "pos": {
+ "x": 5.0,
+ "y": 295.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#2",
+ "pos": {
+ "x": 45.0,
+ "y": 425.0
+ },
+ "params": 3
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#1",
+ "pos": {
+ "x": 5.0,
+ "y": 165.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 414.0,
+ "y": 174.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 29.0,
+ "y": 284.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#0",
+ "pos": {
+ "x": 5.0,
+ "y": 35.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 424.0,
+ "y": 194.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 419.0,
+ "y": 184.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 84.0,
+ "y": 344.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 429.0,
+ "y": 204.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 29.0,
+ "y": 254.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 94.0,
+ "y": 364.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 49.0,
+ "y": 114.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 74.0,
+ "y": 314.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIdff4_finewe",
+ "name": "GUIdff4_finewe#0",
+ "pos": {
+ "x": 375.0,
+ "y": 170.0
+ }
+ },
+ {
+ "id": "GUIxor",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 35.0,
+ "y": 250.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 89.0,
+ "y": 84.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 55.0,
+ "y": 110.0
+ }
+ },
+ {
+ "id": "GUInot4",
+ "name": "DeserializedSubmodelComponent#3",
+ "pos": {
+ "x": 100.0,
+ "y": 330.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#12",
+ "pos": {
+ "x": 19.0,
+ "y": 294.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 150.0,
+ "y": 280.0
+ }
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#11",
+ "pos": {
+ "x": 89.0,
+ "y": 94.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#5",
+ "pos": {
+ "x": 200.0,
+ "y": 230.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#4",
+ "pos": {
+ "x": 110.0,
+ "y": 60.0
+ }
+ },
+ {
+ "id": "GUImux1",
+ "name": "DeserializedSubmodelComponent#7",
+ "pos": {
+ "x": 325.0,
+ "y": 290.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#6",
+ "pos": {
+ "x": 250.0,
+ "y": 180.0
+ }
+ },
+ {
+ "id": "GUIMerger",
+ "name": "GUIMerger#0",
+ "pos": {
+ "x": 435.0,
+ "y": 175.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUIand",
+ "name": "DeserializedSubmodelComponent#8",
+ "pos": {
+ "x": 380.0,
+ "y": 85.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "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#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": "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": "GUISplitter#3",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "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": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#39",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 325.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": "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": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#83",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#82",
+ "path": [
+ {
+ "x": 245.0,
+ "y": 445.0
+ },
+ {
+ "x": 245.0,
+ "y": 185.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#7",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#85",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#40",
+ "path": [
+ {
+ "x": 95.0,
+ "y": 305.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "COVD_EN"
+ },
+ "name": "unnamedWire#84",
+ "path": [
+ {
+ "x": 275.0,
+ "y": 295.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#43",
+ "path": []
+ },
+ {
+ "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": "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": "_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": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#45",
+ "path": [
+ {
+ "x": 50.0,
+ "y": 105.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#8",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#89",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#44",
+ "path": []
+ },
+ {
+ "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": "DeserializedSubmodelComponent#0",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "Q2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#15",
+ "pinName": ""
+ },
+ "name": "unnamedWire#90",
+ "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#16",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#91",
+ "path": []
+ },
+ {
+ "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": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#0",
+ "path": [
+ {
+ "x": 140.0,
+ "y": 415.0
+ },
+ {
+ "x": 255.0,
+ "y": 415.0
+ },
+ {
+ "x": 255.0,
+ "y": 280.0
+ },
+ {
+ "x": 340.0,
+ "y": 280.0
+ },
+ {
+ "x": 340.0,
+ "y": 175.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#11",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#14",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "mu"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#10",
+ "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": "_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#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#4",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#53",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 35.0
+ },
+ {
+ "x": 35.0,
+ "y": 125.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#56",
+ "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": "_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": "Y"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#11",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "A4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#55",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O2"
+ },
+ "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#3",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#58",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 135.0
+ },
+ {
+ "x": 30.0,
+ "y": 45.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#57",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_4"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 155.0
+ },
+ {
+ "x": 20.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#12",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_1"
+ },
+ "name": "unnamedWire#59",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 245.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "O1"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#19",
+ "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": "DeserializedSubmodelComponent#5",
+ "pinName": "I0_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#60",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#63",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O3"
+ },
+ "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": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#21",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#65",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "MUX"
+ },
+ "pin2": {
+ "compName": "GUISplitter#2",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#20",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 435.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#64",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "name": "unnamedWire#67",
+ "path": [
+ {
+ "x": 195.0,
+ "y": 435.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#3",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#23",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 305.0
+ },
+ {
+ "x": 25.0,
+ "y": 265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "GUISplitter#3",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#66",
+ "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": "DeserializedSubmodelComponent#1",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "path": [
+ {
+ "x": 60.0,
+ "y": 425.0
+ },
+ {
+ "x": 60.0,
+ "y": 415.0
+ },
+ {
+ "x": 30.0,
+ "y": 415.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#13",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#68",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "Q4"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "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": "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": "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#3",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#74",
+ "path": []
+ },
+ {
+ "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#3",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#32",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#76",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "I1_2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y2"
+ },
+ "name": "unnamedWire#31",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1_3"
+ },
+ "name": "unnamedWire#75",
+ "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": "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#2",
+ "pinName": "I1_4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#3",
+ "pinName": "Y4"
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#5",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#6",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#77",
+ "path": []
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "MSR",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {}
+ }
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 60.0,
+ "height": 90.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 60.0,
+ "y": 60.0
+ },
+ "name": "Y101",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 20.0
+ },
+ "name": "Y001",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 50.0
+ },
+ "name": "Y100",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 80.0
+ },
+ "name": "Y111",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 40.0
+ },
+ "name": "Y011",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 10.0
+ },
+ "name": "Y000",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 70.0
+ },
+ "name": "Y110",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 30.0
+ },
+ "name": "Y010",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.4,
+ "subComps": [
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#1",
+ "pos": {
+ "x": 45.0,
+ "y": 50.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#0",
+ "pos": {
+ "x": 85.0,
+ "y": 20.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#3",
+ "pos": {
+ "x": 45.0,
+ "y": 105.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#2",
+ "pos": {
+ "x": 120.0,
+ "y": 15.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 34.0,
+ "y": 99.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 29.0,
+ "y": 129.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+ "name": "GUISplitter#0",
+ "pos": {
+ "x": 5.0,
+ "y": 110.0
+ },
+ "params": 4
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 79.0,
+ "y": 24.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 79.0,
+ "y": 34.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 24.0,
+ "y": 119.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 19.0,
+ "y": 74.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 74.0,
+ "y": 59.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 39.0,
+ "y": 64.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 24.0,
+ "y": 149.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 74.0,
+ "y": 119.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#5",
+ "pos": {
+ "x": 80.0,
+ "y": 165.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#10",
+ "pos": {
+ "x": 39.0,
+ "y": 109.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIxor",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 40.0,
+ "y": 20.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#4",
+ "pos": {
+ "x": 80.0,
+ "y": 115.0
+ },
+ "params": 1
+ }
+ ],
+ "innerWires": [
+ {
+ "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#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#13",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#2",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y000"
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y001"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 80.0,
+ "y": 50.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#10",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 110.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#19",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#21",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 110.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y011"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#4",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y100"
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y010"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "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#10",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#3",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#4",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Y110"
+ },
+ "pin2": {
+ "compName": "GUINandGate#5",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Y101"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#28",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#1",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#0",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O2"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUINandGate#5",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": [
+ {
+ "x": 75.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "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": "DeserializedSubmodelComponent#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#5",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 180.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#4",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 35.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#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#3",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 25.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#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O3"
+ },
+ "name": "unnamedWire#2",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 65.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "Y111"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 200.0
+ }
+ ]
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "Test\nlogic",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {}
+ }
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 45.0,
+ "height": 46.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 4.0,
+ "y": 46.0
+ },
+ "name": "MUX",
+ "logicWidth": 2
+ },
+ {
+ "location": {
+ "x": 45.0,
+ "y": 19.0
+ },
+ "name": "Q",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 27.5,
+ "y": 46.0
+ },
+ "name": "CINV",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 14.0,
+ "y": 46.0
+ },
+ "name": "C",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 5.5,
+ "y": 0.0
+ },
+ "name": "_EZ",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 37.5,
+ "y": 46.0
+ },
+ "name": "OVRRET",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 31.0
+ },
+ "name": "I",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 25.5,
+ "y": 0.0
+ },
+ "name": "_EN",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 15.5,
+ "y": 0.0
+ },
+ "name": "_EC",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 13.5
+ },
+ "name": "M",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 35.5,
+ "y": 0.0
+ },
+ "name": "_EOVR",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.1,
+ "subComps": [
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#1",
+ "pos": {
+ "x": 215.0,
+ "y": 255.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#0",
+ "pos": {
+ "x": 245.0,
+ "y": 245.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUINandGate",
+ "name": "GUINandGate#2",
+ "pos": {
+ "x": 215.0,
+ "y": 235.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIMerger",
+ "name": "GUIMerger#0",
+ "pos": {
+ "x": 435.0,
+ "y": 175.0
+ },
+ "params": 4
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#2",
+ "pos": {
+ "x": 45.0,
+ "y": 430.0
+ },
+ "params": 2
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#1",
+ "pos": {
+ "x": 5.0,
+ "y": 295.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 89.0,
+ "y": 224.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 89.0,
+ "y": 234.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUISplitter",
+ "name": "GUISplitter#0",
+ "pos": {
+ "x": 5.0,
+ "y": 120.0
+ },
+ "params": 4
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 429.0,
+ "y": 204.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 89.0,
+ "y": 214.0
+ },
+ "params": 1
+ },
+ {
+ "id": "WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 209.0,
+ "y": 244.0
+ },
+ "params": 1
+ },
+ {
+ "id": "GUIdff4_finewe",
+ "name": "GUIdff4_finewe#0",
+ "pos": {
+ "x": 375.0,
+ "y": 170.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#1",
+ "pos": {
+ "x": 100.0,
+ "y": 190.0
+ }
+ },
+ {
+ "id": "GUImux1_4",
+ "name": "DeserializedSubmodelComponent#0",
+ "pos": {
+ "x": 45.0,
+ "y": 240.0
+ }
+ },
+ {
+ "id": "GUIxor",
+ "name": "DeserializedSubmodelComponent#2",
+ "pos": {
+ "x": 215.0,
+ "y": 200.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "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": "DeserializedSubmodelComponent#1",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "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": "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": "_EOVR"
+ },
+ "pin2": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "_WE4"
+ },
+ "name": "unnamedWire#39",
+ "path": [
+ {
+ "x": 355.0,
+ "y": 215.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": "_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": "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": "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": "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": "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": "GUINandGate#2",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#47",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 240.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": "B"
+ },
+ "name": "unnamedWire#48",
+ "path": [
+ {
+ "x": 210.0,
+ "y": 250.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#1",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "I"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "I1"
+ },
+ "pin2": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "Q2"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "Q1"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I0"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "M"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#5",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I1_1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#1",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#10",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIMerger#0",
+ "pinName": "O"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Q"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O2"
+ },
+ "name": "unnamedWire#12",
+ "path": [
+ {
+ "x": 25.0,
+ "y": 275.0
+ },
+ {
+ "x": 25.0,
+ "y": 140.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "Q4"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff4_finewe#0",
+ "pinName": "Q3"
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I2"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#11",
+ "path": [
+ {
+ "x": 20.0,
+ "y": 150.0
+ },
+ {
+ "x": 20.0,
+ "y": 285.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_1"
+ },
+ "pin2": {
+ "compName": "GUISplitter#0",
+ "pinName": "O0"
+ },
+ "name": "unnamedWire#14",
+ "path": [
+ {
+ "x": 35.0,
+ "y": 255.0
+ },
+ {
+ "x": 35.0,
+ "y": 120.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#0",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 30.0,
+ "y": 130.0
+ },
+ {
+ "x": 30.0,
+ "y": 265.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": [
+ {
+ "x": 90.0,
+ "y": 430.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "MUX"
+ },
+ "pin2": {
+ "compName": "GUISplitter#2",
+ "pinName": "I"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 40.0,
+ "y": 435.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_3"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y3"
+ },
+ "name": "unnamedWire#18",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y4"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_4"
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#0",
+ "pinName": "Y2"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_2"
+ },
+ "name": "unnamedWire#19",
+ "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": "DeserializedSubmodelComponent#0",
+ "pinName": "Y1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I1_1"
+ },
+ "name": "unnamedWire#20",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_3"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_2"
+ },
+ "name": "unnamedWire#22",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#25",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#24",
+ "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": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "I0_4"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIMerger#0",
+ "pinName": "I3"
+ },
+ "name": "unnamedWire#29",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUISplitter#2",
+ "pinName": "O1"
+ },
+ "pin2": {
+ "compName": "DeserializedSubmodelComponent#1",
+ "pinName": "S0"
+ },
+ "name": "unnamedWire#28",
+ "path": [
+ {
+ "x": 85.0,
+ "y": 440.0
+ },
+ {
+ "x": 85.0,
+ "y": 195.0
+ }
+ ]
+ },
+ {
+ "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": "_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": "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": "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": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#33",
+ "path": []
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "simpleRectangularLike",
+ "symbolRendererParams": {
+ "centerText": "muSR",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "default",
+ "highLevelStateHandlerSnippetID": "standard",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {}
+ }
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 72.0,
+ "height": 67.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 60.0,
+ "y": 0.0
+ },
+ "name": "C",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 36.0,
+ "y": 0.0
+ },
+ "name": "D",
+ "logicWidth": 12
+ },
+ {
+ "location": {
+ "x": 72.0,
+ "y": 40.0
+ },
+ "name": "CI",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 6.0
+ },
+ "name": "_RLD",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 19.0,
+ "y": 67.0
+ },
+ "name": "_MAP",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 44.0
+ },
+ "name": "_CCEN",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 49.0,
+ "y": 67.0
+ },
+ "name": "_OE",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 72.0,
+ "y": 14.0
+ },
+ "name": "_FULL",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 38.0,
+ "y": 67.0
+ },
+ "name": "Y",
+ "logicWidth": 12
+ },
+ {
+ "location": {
+ "x": 13.0,
+ "y": 67.0
+ },
+ "name": "_PL",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 25.0,
+ "y": 67.0
+ },
+ "name": "_VECT",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 38.0
+ },
+ "name": "_CC",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.2,
+ "subComps": [
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#1",
+ "pos": {
+ "x": 10.0,
+ "y": 210.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUIram5_12",
+ "name": "GUIram5_12#0",
+ "pos": {
+ "x": 305.0,
+ "y": 100.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#0",
+ "pos": {
+ "x": 40.0,
+ "y": 185.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUIdff12",
+ "name": "GUIdff12#0",
+ "pos": {
+ "x": 305.0,
+ "y": 160.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUIinc12",
+ "name": "GUIinc12#0",
+ "pos": {
+ "x": 305.0,
+ "y": 190.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+ "name": "GUIBitDisplay#3",
+ "pos": {
+ "x": 265.0,
+ "y": 150.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 294.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 324.0,
+ "y": 149.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 179.0,
+ "y": 89.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 189.0,
+ "y": 274.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 4.0,
+ "y": 219.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 179.0,
+ "y": 14.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 299.0,
+ "y": 44.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUITriStateBuffer",
+ "name": "GUITriStateBuffer#0",
+ "pos": {
+ "x": 180.0,
+ "y": 290.0
+ },
+ "params": {
+ "logicWidth": 12,
+ "orientation": "DOWN_ALT"
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 299.0,
+ "y": 79.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 299.0,
+ "y": 114.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 299.0,
+ "y": 169.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUInor12",
+ "name": "GUInor12#0",
+ "pos": {
+ "x": 190.0,
+ "y": 80.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+ "name": "GUIBitDisplay#0",
+ "pos": {
+ "x": 160.0,
+ "y": 95.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910InstrPLA",
+ "name": "GUIAm2910InstrPLA#0",
+ "pos": {
+ "x": 80.0,
+ "y": 155.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910SP",
+ "name": "GUIAm2910SP#0",
+ "pos": {
+ "x": 305.0,
+ "y": 55.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+ "name": "GUIBitDisplay#1",
+ "pos": {
+ "x": 260.0,
+ "y": 115.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+ "name": "GUIBitDisplay#2",
+ "pos": {
+ "x": 345.0,
+ "y": 180.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUIsel4_12",
+ "name": "GUIsel4_12#0",
+ "pos": {
+ "x": 150.0,
+ "y": 175.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910RegCntr",
+ "name": "GUIAm2910RegCntr#0",
+ "pos": {
+ "x": 160.0,
+ "y": 25.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff12#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIinc12#0",
+ "pinName": "CI"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "CI"
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910InstrPLA#0",
+ "pinName": "_MAP"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_MAP"
+ },
+ "name": "unnamedWire#43",
+ "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": "_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": "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": "GUIram5_12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIBitDisplay#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIBitDisplay#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIBitDisplay#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIinc12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIBitDisplay#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "GUIram5_12#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "GUIram5_12#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIram5_12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910InstrPLA#0",
+ "pinName": "YR"
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "SB"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIram5_12#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910InstrPLA#0",
+ "pinName": "YD"
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "SA"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUITriStateBuffer#0",
+ "pinName": "OUT"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#52",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "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": "GUIinc12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIdff12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUITriStateBuffer#0",
+ "pinName": "EN"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_OE"
+ },
+ "name": "unnamedWire#53",
+ "path": [
+ {
+ "x": 245.0,
+ "y": 300.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910InstrPLA#0",
+ "pinName": "YmuPC"
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "SD"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "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": "YF"
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "SC"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "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": "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": "GUIAm2910InstrPLA#0",
+ "pinName": "STKI0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 220.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIram5_12#0",
+ "pinName": "WE"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "STKI0"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIinc12#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 325.0,
+ "y": 275.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "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": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#21",
+ "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": "_submodelinterface",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUInor12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#22",
+ "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": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUITriStateBuffer#0",
+ "pinName": "IN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_RLD"
+ },
+ "pin2": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "_RLD"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_CC"
+ },
+ "pin2": {
+ "compName": "GUINandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#29",
+ "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": "_CCEN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 225.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "_FULL"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_FULL"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "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
+ }
+ ]
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "Am2910",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {}
+ }
+}
\ No newline at end of file
--- /dev/null
+mograsim version: 0.1.3
+{
+ "width": 72.0,
+ "height": 61.0,
+ "interfacePins": [
+ {
+ "location": {
+ "x": 19.0,
+ "y": 61.0
+ },
+ "name": "_MAP",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 44.0
+ },
+ "name": "_CCEN",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 60.0,
+ "y": 0.0
+ },
+ "name": "C",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 36.0,
+ "y": 0.0
+ },
+ "name": "D",
+ "logicWidth": 12
+ },
+ {
+ "location": {
+ "x": 72.0,
+ "y": 14.0
+ },
+ "name": "_FULL",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 72.0,
+ "y": 40.0
+ },
+ "name": "CI",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 6.0
+ },
+ "name": "_RLD",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 50.0
+ },
+ "name": "I",
+ "logicWidth": 4
+ },
+ {
+ "location": {
+ "x": 38.0,
+ "y": 61.0
+ },
+ "name": "Y",
+ "logicWidth": 12
+ },
+ {
+ "location": {
+ "x": 13.0,
+ "y": 61.0
+ },
+ "name": "_PL",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 25.0,
+ "y": 61.0
+ },
+ "name": "_VECT",
+ "logicWidth": 1
+ },
+ {
+ "location": {
+ "x": 0.0,
+ "y": 38.0
+ },
+ "name": "_CC",
+ "logicWidth": 1
+ }
+ ],
+ "submodel": {
+ "innerScale": 0.2,
+ "subComps": [
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#1",
+ "pos": {
+ "x": 10.0,
+ "y": 210.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUIram5_12",
+ "name": "GUIram5_12#0",
+ "pos": {
+ "x": 305.0,
+ "y": 100.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+ "name": "GUINandGate#0",
+ "pos": {
+ "x": 40.0,
+ "y": 185.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUIdff12",
+ "name": "GUIdff12#0",
+ "pos": {
+ "x": 305.0,
+ "y": 160.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUIinc12",
+ "name": "GUIinc12#0",
+ "pos": {
+ "x": 305.0,
+ "y": 190.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+ "name": "GUIBitDisplay#3",
+ "pos": {
+ "x": 265.0,
+ "y": 150.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#1",
+ "pos": {
+ "x": 294.0,
+ "y": 104.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#0",
+ "pos": {
+ "x": 324.0,
+ "y": 149.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#3",
+ "pos": {
+ "x": 179.0,
+ "y": 89.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#2",
+ "pos": {
+ "x": 189.0,
+ "y": 274.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#5",
+ "pos": {
+ "x": 4.0,
+ "y": 219.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#4",
+ "pos": {
+ "x": 179.0,
+ "y": 14.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#7",
+ "pos": {
+ "x": 299.0,
+ "y": 44.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#6",
+ "pos": {
+ "x": 299.0,
+ "y": 79.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#9",
+ "pos": {
+ "x": 299.0,
+ "y": 114.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+ "name": "WireCrossPoint#8",
+ "pos": {
+ "x": 299.0,
+ "y": 169.0
+ },
+ "params": 1
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUIsel4_12",
+ "name": "GUIsel4_12#0",
+ "pos": {
+ "x": 150.0,
+ "y": 175.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.GUInor12",
+ "name": "GUInor12#0",
+ "pos": {
+ "x": 190.0,
+ "y": 80.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+ "name": "GUIBitDisplay#0",
+ "pos": {
+ "x": 160.0,
+ "y": 95.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910InstrPLA",
+ "name": "GUIAm2910InstrPLA#0",
+ "pos": {
+ "x": 80.0,
+ "y": 155.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910SP",
+ "name": "GUIAm2910SP#0",
+ "pos": {
+ "x": 305.0,
+ "y": 55.0
+ }
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+ "name": "GUIBitDisplay#1",
+ "pos": {
+ "x": 260.0,
+ "y": 115.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+ "name": "GUIBitDisplay#2",
+ "pos": {
+ "x": 345.0,
+ "y": 180.0
+ },
+ "params": 12
+ },
+ {
+ "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910RegCntr",
+ "name": "GUIAm2910RegCntr#0",
+ "pos": {
+ "x": 160.0,
+ "y": 25.0
+ }
+ }
+ ],
+ "innerWires": [
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "name": "unnamedWire#36",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIdff12#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#35",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "name": "unnamedWire#38",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#6",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#37",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#39",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIinc12#0",
+ "pinName": "CI"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "CI"
+ },
+ "name": "unnamedWire#41",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "C"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#7",
+ "pinName": ""
+ },
+ "name": "unnamedWire#40",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910InstrPLA#0",
+ "pinName": "_MAP"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_MAP"
+ },
+ "name": "unnamedWire#43",
+ "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": "_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": "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": "GUIram5_12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIBitDisplay#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#47",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIBitDisplay#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#46",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIBitDisplay#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#49",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIinc12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIBitDisplay#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#48",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "name": "unnamedWire#9",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "B"
+ },
+ "pin2": {
+ "compName": "GUIram5_12#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#8",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "A"
+ },
+ "pin2": {
+ "compName": "GUIram5_12#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#7",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIram5_12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#6",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910InstrPLA#0",
+ "pinName": "YR"
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "SB"
+ },
+ "name": "unnamedWire#1",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIram5_12#0",
+ "pinName": "C"
+ },
+ "name": "unnamedWire#50",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910InstrPLA#0",
+ "pinName": "YD"
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "SA"
+ },
+ "name": "unnamedWire#0",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#9",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#8",
+ "pinName": ""
+ },
+ "name": "unnamedWire#51",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIdff12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#0",
+ "pinName": ""
+ },
+ "name": "unnamedWire#5",
+ "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": "GUIinc12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "GUIdff12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#4",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910InstrPLA#0",
+ "pinName": "YmuPC"
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "SD"
+ },
+ "name": "unnamedWire#3",
+ "path": []
+ },
+ {
+ "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": "YF"
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "SC"
+ },
+ "name": "unnamedWire#2",
+ "path": []
+ },
+ {
+ "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": "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": "GUIAm2910InstrPLA#0",
+ "pinName": "STKI0"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#13",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 220.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIram5_12#0",
+ "pinName": "WE"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "name": "unnamedWire#16",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#1",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "STKI0"
+ },
+ "name": "unnamedWire#15",
+ "path": [
+ {
+ "x": 295.0,
+ "y": 60.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIinc12#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#18",
+ "path": [
+ {
+ "x": 325.0,
+ "y": 275.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "Y"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "name": "unnamedWire#17",
+ "path": []
+ },
+ {
+ "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": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIsel4_12#0",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#21",
+ "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": "_submodelinterface",
+ "pinName": "D"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "name": "unnamedWire#23",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#3",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUInor12#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#22",
+ "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": "WireCrossPoint#4",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "D"
+ },
+ "name": "unnamedWire#24",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#2",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "Y"
+ },
+ "name": "unnamedWire#27",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_RLD"
+ },
+ "pin2": {
+ "compName": "GUIAm2910RegCntr#0",
+ "pinName": "_RLD"
+ },
+ "name": "unnamedWire#26",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "_submodelinterface",
+ "pinName": "_CC"
+ },
+ "pin2": {
+ "compName": "GUINandGate#0",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#29",
+ "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": "_CCEN"
+ },
+ "pin2": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "name": "unnamedWire#30",
+ "path": []
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#1",
+ "pinName": "B"
+ },
+ "name": "unnamedWire#32",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 225.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "WireCrossPoint#5",
+ "pinName": ""
+ },
+ "pin2": {
+ "compName": "GUINandGate#1",
+ "pinName": "A"
+ },
+ "name": "unnamedWire#31",
+ "path": [
+ {
+ "x": 5.0,
+ "y": 215.0
+ }
+ ]
+ },
+ {
+ "pin1": {
+ "compName": "GUIAm2910SP#0",
+ "pinName": "_FULL"
+ },
+ "pin2": {
+ "compName": "_submodelinterface",
+ "pinName": "_FULL"
+ },
+ "name": "unnamedWire#34",
+ "path": []
+ },
+ {
+ "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
+ }
+ ]
+ }
+ ]
+ },
+ "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+ "symbolRendererParams": {
+ "centerText": "Am2910",
+ "centerTextHeight": 5.0,
+ "horizontalComponentCenter": 17.5,
+ "pinLabelHeight": 3.5,
+ "pinLabelMargin": 0.5
+ },
+ "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+ "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+ "highLevelStateHandlerParams": {
+ "subcomponentHighLevelStates": {},
+ "atomicHighLevelStates": {}
+ }
+}
\ No newline at end of file
this.submodelInterface = new SubmodelInterface(submodelModifiable, SUBMODEL_INTERFACE_NAME);
this.submodelScale = 1;
- this.maxVisibleRegionFillRatioForAlpha0 = 0.4;
- this.minVisibleRegionFillRatioForAlpha1 = 0.8;
+ this.maxVisibleRegionFillRatioForAlpha0 = 0.8;
+ this.minVisibleRegionFillRatioForAlpha1 = 0.9;
this.renderer = new LogicUIRenderer(submodelModifiable);
submodelModifiable.setRedrawHandler(model.getRedrawHandler());
if (externalWireCandidate != null)
if (externalWire == null)
externalWire = externalWireCandidate;
- else if (externalWire.length == externalWireCandidate.length)
+ else if (externalWire.width == externalWireCandidate.width)
Wire.fuse(externalWire, externalWireCandidate);
else
throw new IllegalArgumentException(
"GUIAm2901ALUInclDecode": "file:components/am2901/GUIAm2901ALUInclDecode.json",
"GUIAm2901ALUInclSourceDecodeInclFunctionDecode": "file:components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json",
"GUIAm2901ALUOneBit": "file:components/am2901/GUIAm2901ALUOneBit.json",
+ "GUIAm2904": "file:components/am2904/GUIAm2904.json",
+ "GUIAm2904MSR": "file:components/am2904/GUIAm2904MSR.json",
+ "GUIAm2904muSR": "file:components/am2904/GUIAm2904muSR.json",
"GUIAm2904RegCTInstrDecode": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904RegCTInstrDecode",
"GUIAm2904ShiftInstrDecode": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904ShiftInstrDecode",
+ "GUIAm2904TestLogic": "file:components/am2904/GUIAm2904TestLogic.json",
"GUIAm2901DestDecode": "file:components/am2901/GUIAm2901DestDecode.json",
"GUIAm2901SourceDecode": "file:components/am2901/GUIAm2901SourceDecode.json",
"GUIAm2910InstrPLA": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910InstrPLA",
"GUIinc12": "class:net.mograsim.logic.model.am2900.components.GUIinc12",
"GUImux1": "file:components/GUImux1.json",
"GUImux1_4": "file:components/GUImux1_4.json",
+ "GUImux2": "file:components/GUImux2.json",
+ "GUImux2_4": "file:components/GUImux2_4.json",
+ "GUImux3": "file:components/GUImux3.json",
"GUInand3": "file:components/GUInand3.json",
"GUInor12": "class:net.mograsim.logic.model.am2900.components.GUInor12",
"GUInot4": "file:components/GUInot4.json",
"GUIram2": "file:components/GUIram2.json",
"GUIram4": "file:components/GUIram4.json",
"GUIram5_12": "class:net.mograsim.logic.model.am2900.components.GUIram5_12",
+ "GUIsel1": "file:components/GUIsel1.json",
"GUIsel2_4": "file:components/GUIsel2_4.json",
"GUIsel3_4": "file:components/GUIsel3_4.json",
"GUIsel4_12": "class:net.mograsim.logic.model.am2900.components.GUImux4_12",
{
private SubmodelComponent component;
private final List<String> vectorPartTargets;
- private final List<Integer> vectorPartLengthes;
- private int length;
+ private final List<Integer> vectorPartWidths;
+ private int width;
public BitVectorSplittingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
{
{
this.component = context.component;
this.vectorPartTargets = new ArrayList<>();
- this.vectorPartLengthes = new ArrayList<>();
+ this.vectorPartWidths = new ArrayList<>();
if (params != null)
- setVectorParts(params.vectorPartTargets, params.vectorPartLengthes);
+ setVectorParts(params.vectorPartTargets, params.vectorPartWidths);
}
- public void set(List<String> targets, List<Integer> lengthes)
+ public void set(List<String> targets, List<Integer> widths)
{
- setVectorParts(targets, lengthes);
+ setVectorParts(targets, widths);
}
- public void addVectorPart(String target, int length)
+ public void addVectorPart(String target, int width)
{
vectorPartTargets.add(target);
- vectorPartLengthes.add(length);
- this.length += length;
+ vectorPartWidths.add(width);
+ this.width += width;
}
public void clearVectorParts()
{
vectorPartTargets.clear();
- vectorPartLengthes.clear();
- length = 0;
+ vectorPartWidths.clear();
+ width = 0;
}
- private void setVectorParts(List<String> targets, List<Integer> lengthes)
+ private void setVectorParts(List<String> targets, List<Integer> widths)
{
clearVectorParts();
- if (targets.size() != lengthes.size())
- throw new IllegalArgumentException("Targets list and lenghtes list have different sizes");
+ if (targets.size() != widths.size())
+ throw new IllegalArgumentException("Targets list and widths list have different sizes");
vectorPartTargets.addAll(targets);
- vectorPartLengthes.addAll(lengthes);
- length += lengthes.stream().mapToInt(Integer::intValue).sum();
+ vectorPartWidths.addAll(widths);
+ width += widths.stream().mapToInt(Integer::intValue).sum();
}
@Override
vectorPart = BitVector.of((Bit) subStateUncasted);
else
vectorPart = (BitVector) subStateUncasted;
- if (vectorPart.length() != vectorPartLengthes.get(partIndex))
+ if (vectorPart.width() != vectorPartWidths.get(partIndex))
throw new IllegalArgumentException(
- "Incorrect vector part length: " + vectorPart.length() + "; expected " + vectorPartLengthes.get(partIndex));
+ "Incorrect vector part width: " + vectorPart.width() + "; expected " + vectorPartWidths.get(partIndex));
result = vectorPart.concat(result);
}
return result;
public void setHighLevelState(Object newState)
{
BitVector newStateCasted = (BitVector) newState;
- if (newStateCasted.length() != length)
- throw new IllegalArgumentException("Incorrect vector length: " + newStateCasted.length() + "; expected " + length);
+ if (newStateCasted.width() != width)
+ throw new IllegalArgumentException("Incorrect vector width: " + newStateCasted.width() + "; expected " + width);
for (int partIndex = vectorPartTargets.size() - 1, bitIndex = 0; partIndex >= 0; partIndex--)
{
- int vectorPartLength = vectorPartLengthes.get(partIndex);
- BitVector vectorPart = newStateCasted.subVector(bitIndex, bitIndex + vectorPartLength);
+ int vectorPartWidth = vectorPartWidths.get(partIndex);
+ BitVector vectorPart = newStateCasted.subVector(bitIndex, bitIndex + vectorPartWidth);
component.setHighLevelState(vectorPartTargets.get(partIndex), vectorPart);
- bitIndex += vectorPartLength;
+ bitIndex += vectorPartWidth;
}
}
{
BitVectorSplittingAtomicHighLevelStateHandlerParams params = new BitVectorSplittingAtomicHighLevelStateHandlerParams();
params.vectorPartTargets = new ArrayList<>(vectorPartTargets);
- params.vectorPartLengthes = new ArrayList<>(vectorPartLengthes);
+ params.vectorPartWidths = new ArrayList<>(vectorPartWidths);
return params;
}
public static class BitVectorSplittingAtomicHighLevelStateHandlerParams
{
public List<String> vectorPartTargets;
- public List<Integer> vectorPartLengthes;
+ public List<Integer> vectorPartWidths;
}
static
"pinNames": "net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer"
},
"standardHighLevelStateHandlerSuppliers": {
+ "default": "net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler",
"standard": "net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler"
}
}
\ No newline at end of file
int bitLength = raw.bitLength() - (bi.signum() - 1) / 2;
if (bitLength > size)
throw new AsmNumberFormatException("Error parsing %s: bit count %d exceeds size %d", bi, bitLength, size);
- BitVectorMutator bvm = BitVectorMutator.ofLength(size);
+ BitVectorMutator bvm = BitVectorMutator.ofWidth(size);
for (int i = 0; i < size; i++)
bvm.setLSBit(i, Bit.of(raw.testBit(i)));
return bvm.toBitVector();
int bitLength = bi.bitLength() - (bi.signum() - 1) / 2;
if (bitLength > size)
throw new AsmNumberFormatException("Error parsing %s: bit count %d exceeds size %d", bi, bitLength, size);
- BitVectorMutator bvm = BitVectorMutator.ofLength(size);
+ BitVectorMutator bvm = BitVectorMutator.ofWidth(size);
for (int i = 0; i < size; i++)
bvm.setLSBit(i, Bit.of(bi.testBit(i)));
return bvm.toBitVector();
public void setCell(int index, BitVector bits)
{
- if (bits.length() != cellWidth)
+ if (bits.width() != cellWidth)
throw new IllegalArgumentException(String.format(
- "BitVector to be saved in memory cell has unexpected length. Expected: %d Actual: %d", cellWidth, bits.length()));
+ "BitVector to be saved in memory cell has unexpected width. Expected: %d Actual: %d", cellWidth, bits.width()));
memory[index] = bits;
}
import net.mograsim.logic.core.components.BasicComponent;
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;
import net.mograsim.machine.MainMemoryDefinition;
/**
- * A memory component that only allows access to words of a specific length
+ * A memory component that only allows access to words of a specific width
*/
public class WordAddressableMemoryComponent extends BasicComponent
{
ReadEnd rWBit, ReadEnd address)
{
super(timeline, processTime);
- if(data.length() != definition.getCellWidth())
- throw new IllegalArgumentException(String.format("Bit width of data wire does not match main memory definition. Expected: %d Actual: %d", definition.getCellWidth(), data.length()));
- if(rWBit.length() != 1)
- throw new IllegalArgumentException(String.format("Bit width of read/write mode select wire is unexpected. Expected: 1 Actual: %d", rWBit.length()));
- if(address.length() != definition.getMemoryAddressBits())
- throw new IllegalArgumentException(String.format("Bit width of address wire does not match main memory definition. Expected: %d Actual: %d", definition.getMemoryAddressBits(), address.length()));
+ if(data.width() != definition.getCellWidth())
+ throw new IllegalArgumentException(String.format("Bit width of data wire does not match main memory definition. Expected: %d Actual: %d", definition.getCellWidth(), data.width()));
+ if(rWBit.width() != 1)
+ throw new IllegalArgumentException(String.format("Bit width of read/write mode select wire is unexpected. Expected: 1 Actual: %d", rWBit.width()));
+ if(address.width() != definition.getMemoryAddressBits())
+ throw new IllegalArgumentException(String.format("Bit width of address wire does not match main memory definition. Expected: %d Actual: %d", definition.getMemoryAddressBits(), address.width()));
this.data = data;
this.rWBit = rWBit;
this.address = address;
if (!address.hasNumericValue())
{
if (read.equals(rWBit.getValue()))
- data.feedSignals(BitVector.of(Bit.U, data.length()));
+ data.feedSignals(Bit.U.toVector(data.width()));
else
data.clearSignals();
return;