1 package net.mograsim.logic.model.am2900.am2901;
3 import net.mograsim.logic.core.components.BitDisplay;
4 import net.mograsim.logic.core.components.ManualSwitch;
5 import net.mograsim.logic.core.types.Bit;
6 import net.mograsim.logic.core.types.BitVector;
7 import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper;
8 import net.mograsim.logic.model.am2900.util.TestUtil;
9 import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper.DebugState;
10 import net.mograsim.logic.model.model.components.GUIComponent;
12 public class TestableAm2901Impl implements TestableAm2901
14 private GUIComponent am2901;
15 private ManualSwitch I8, I7, I6, I5, I4, I3, I2, I1, I0;
16 private ManualSwitch C;
17 private ManualSwitch Cn;
18 private ManualSwitch D1, D2, D3, D4;
19 private ManualSwitch A0, A1, A2, A3;
20 private ManualSwitch B0, B1, B2, B3;
21 private ManualSwitch IRAMn, IRAMn_3, IQn, IQn_3;
22 private BitDisplay Y1, Y2, Y3, Y4;
23 private BitDisplay F_0, Cn_4, OVR, F3;
24 private BitDisplay ORAMn, ORAMn_3, OQn, OQn_3;
26 private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "GUIAm2901");
31 return testHelper.run();
37 testHelper.setup(DebugState.NO_DEBUG);
41 public void setDest(Am2901_Dest dest)
43 var bits = TestUtil.of(dest.ordinal(), 3);
44 I8.setState(bits.getLSBit(2));
45 I7.setState(bits.getLSBit(1));
46 I6.setState(bits.getLSBit(0));
50 public void setFunc(Am2901_Func func)
52 var bits = TestUtil.of(func.ordinal(), 3);
53 I5.setState(bits.getLSBit(2));
54 I4.setState(bits.getLSBit(1));
55 I3.setState(bits.getLSBit(0));
59 public void setSrc(Am2901_Src src)
61 var bits = TestUtil.of(src.ordinal(), 3);
62 I2.setState(bits.getLSBit(2));
63 I1.setState(bits.getLSBit(1));
64 I0.setState(bits.getLSBit(0));
68 public void setReg_A(String val_4_bit)
70 var bits = BitVector.parse(val_4_bit);
71 A3.setState(bits.getLSBit(3));
72 A2.setState(bits.getLSBit(2));
73 A1.setState(bits.getLSBit(1));
74 A0.setState(bits.getLSBit(0));
78 public void setReg_B(String val_4_bit)
80 var bits = BitVector.parse(val_4_bit);
81 B3.setState(bits.getLSBit(3));
82 B2.setState(bits.getLSBit(2));
83 B1.setState(bits.getLSBit(1));
84 B0.setState(bits.getLSBit(0));
88 public void setCarryIn(String val_1_bit)
90 Cn.setState(Bit.parse(val_1_bit));
94 public void setNotOutEnable(String val_1_bit)
96 throw new UnsupportedOperationException(); // TODO
100 public void setD(String val_4_bit)
102 var bits = BitVector.parse(val_4_bit);
103 D4.setState(bits.getLSBit(3));
104 D3.setState(bits.getLSBit(2));
105 D2.setState(bits.getLSBit(1));
106 D1.setState(bits.getLSBit(0));
110 public void setQ_0(String val_1_bit)
112 IQn.setState(Bit.parse(val_1_bit));
116 public void setQ_3(String val_1_bit)
118 IQn_3.setState(Bit.parse(val_1_bit));
122 public void setRAM_0(String val_1_bit)
124 IRAMn.setState(Bit.parse(val_1_bit));
128 public void setRAM_3(String val_1_bit)
130 IRAMn_3.setState(Bit.parse(val_1_bit));
134 public void clockOn(boolean isClockOn)
136 C.setState(isClockOn ? Bit.ONE : Bit.ZERO);
140 public String getQ_0()
142 return OQn.getDisplayedValue().toString();
146 public String getQ_3()
148 return OQn_3.getDisplayedValue().toString();
152 public String getRAM_0()
154 return ORAMn.getDisplayedValue().toString();
158 public String getRAM_3()
160 return ORAMn_3.getDisplayedValue().toString();
164 public String getNotP()
166 throw new UnsupportedOperationException(); // TODO
170 public String getNotG()
172 throw new UnsupportedOperationException(); // TODO
176 public String getCarryOut()
178 return Cn_4.getDisplayedValue().toString();
182 public String getSign()
184 return F3.getDisplayedValue().toString();
188 public String getZero()
190 return F_0.getDisplayedValue().toString();
194 public String getOverflow()
196 return OVR.getDisplayedValue().toString();
202 var y3 = Y4.getDisplayedValue();
203 var y2 = Y3.getDisplayedValue();
204 var y1 = Y2.getDisplayedValue();
205 var y0 = Y1.getDisplayedValue();
206 return y3.concat(y2).concat(y1).concat(y0).toString();
210 public void setDirectly(Register r, String val_4_bit)
212 am2901.setHighLevelState(regToStateID(r), BitVector.parse(val_4_bit));
216 public String getDirectly(Register r)
218 return ((BitVector) am2901.getHighLevelState(regToStateID(r))).toString();
221 private static String regToStateID(Register r)
225 return "regs.c" + r.toBitString() + ".q";
229 public TestEnvironmentHelper getTestEnvironmentHelper()