1 package net.mograsim.logic.model.am2900.am2901;
3 import net.mograsim.logic.core.components.CoreBitDisplay;
4 import net.mograsim.logic.core.components.CoreManualSwitch;
5 import net.mograsim.logic.core.types.Bit;
6 import net.mograsim.logic.core.types.BitVector;
7 import net.mograsim.logic.model.am2900.util.SwitchWithDisplay;
8 import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper;
9 import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper.DebugState;
10 import net.mograsim.logic.model.am2900.util.TestUtil;
11 import net.mograsim.logic.model.model.components.ModelComponent;
13 public class TestableAm2901Impl implements TestableAm2901
15 private ModelComponent am2901;
16 private CoreManualSwitch I;
17 private CoreManualSwitch C;
18 private CoreManualSwitch Cn;
19 private CoreManualSwitch D;
20 private CoreManualSwitch A;
21 private CoreManualSwitch B;
22 private CoreBitDisplay Y;
23 private CoreBitDisplay F_0, Cn_4, OVR, F3;
24 private SwitchWithDisplay RAMn, RAMn_3, Qn, Qn_3;
26 private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "Am2901");
31 return testHelper.run();
37 testHelper.setup(DebugState.NO_DEBUG);
41 public void setDest(Am2901_Dest dest)
43 BitVector oldI = I.getValues();
44 I.setState(TestUtil.of(dest.ordinal(), 3).concat(oldI.subVector(3)));
48 public void setFunc(Am2901_Func func)
50 BitVector oldI = I.getValues();
51 I.setState(oldI.subVector(0, 3).concat(TestUtil.of(func.ordinal(), 3)).concat(oldI.subVector(6)));
55 public void setSrc(Am2901_Src src)
57 BitVector oldI = I.getValues();
58 I.setState(oldI.subVector(0, 6).concat(TestUtil.of(src.ordinal(), 3)));
62 public void setReg_A(String val_4_bit)
64 A.setState(BitVector.parse(val_4_bit));
68 public void setReg_B(String val_4_bit)
70 B.setState(BitVector.parse(val_4_bit));
74 public void setCarryIn(String val_1_bit)
76 Cn.setState(Bit.parse(val_1_bit));
80 public void setNotOutEnable(String val_1_bit)
82 throw new UnsupportedOperationException(); // TODO
86 public void setD(String val_4_bit)
88 D.setState(BitVector.parse(val_4_bit));
92 public void setQ_0(String val_1_bit)
94 Qn.setState(Bit.parse(val_1_bit).toVector());
98 public void setQ_3(String val_1_bit)
100 Qn_3.setState(Bit.parse(val_1_bit).toVector());
104 public void setRAM_0(String val_1_bit)
106 RAMn.setState(Bit.parse(val_1_bit).toVector());
110 public void setRAM_3(String val_1_bit)
112 RAMn_3.setState(Bit.parse(val_1_bit).toVector());
116 public void clockOn(boolean isClockOn)
118 C.setState(isClockOn ? Bit.ONE : Bit.ZERO);
122 public String getQ_0()
124 return Qn.getDisplayedValue().toString();
128 public String getQ_3()
130 return Qn_3.getDisplayedValue().toString();
134 public String getRAM_0()
136 return RAMn.getDisplayedValue().toString();
140 public String getRAM_3()
142 return RAMn_3.getDisplayedValue().toString();
146 public String getNotP()
148 throw new UnsupportedOperationException(); // TODO
152 public String getNotG()
154 throw new UnsupportedOperationException(); // TODO
158 public String getCarryOut()
160 return Cn_4.getDisplayedValue().toString();
164 public String getSign()
166 return F3.getDisplayedValue().toString();
170 public String getZero()
172 return F_0.getDisplayedValue().toString();
176 public String getOverflow()
178 return OVR.getDisplayedValue().toString();
184 return Y.getDisplayedValue().toString();
188 public void setDirectly(Register r, String val_4_bit)
190 am2901.setHighLevelState(regToStateID(r), BitVector.parse(val_4_bit));
194 public String getDirectly(Register r)
196 return ((BitVector) am2901.getHighLevelState(regToStateID(r))).toString();
199 private static String regToStateID(Register r)
203 return "regs.c" + r.toBitString() + ".q";
207 public TestEnvironmentHelper getTestEnvironmentHelper()