The final restructured version for automatic build using maven tycho
[Mograsim.git] / tests / net.mograsim.logic.model.am2900.tests / src / net / mograsim / logic / model / am2900 / am2901 / TestableAm2901Impl.java
1 package net.mograsim.logic.model.am2900.am2901;
2
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;
12
13 public class TestableAm2901Impl implements TestableAm2901
14 {
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;
25
26         private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "Am2901");
27
28         @Override
29         public Result run()
30         {
31                 return testHelper.run();
32         }
33
34         @Override
35         public void setup()
36         {
37                 testHelper.setup(DebugState.NO_DEBUG);
38         }
39
40         @Override
41         public void setDest(Am2901_Dest dest)
42         {
43                 BitVector oldI = I.getValues();
44                 I.setState(TestUtil.of(dest.ordinal(), 3).concat(oldI.subVector(3)));
45         }
46
47         @Override
48         public void setFunc(Am2901_Func func)
49         {
50                 BitVector oldI = I.getValues();
51                 I.setState(oldI.subVector(0, 3).concat(TestUtil.of(func.ordinal(), 3)).concat(oldI.subVector(6)));
52         }
53
54         @Override
55         public void setSrc(Am2901_Src src)
56         {
57                 BitVector oldI = I.getValues();
58                 I.setState(oldI.subVector(0, 6).concat(TestUtil.of(src.ordinal(), 3)));
59         }
60
61         @Override
62         public void setReg_A(String val_4_bit)
63         {
64                 A.setState(BitVector.parse(val_4_bit));
65         }
66
67         @Override
68         public void setReg_B(String val_4_bit)
69         {
70                 B.setState(BitVector.parse(val_4_bit));
71         }
72
73         @Override
74         public void setCarryIn(String val_1_bit)
75         {
76                 Cn.setState(Bit.parse(val_1_bit));
77         }
78
79         @Override
80         public void setNotOutEnable(String val_1_bit)
81         {
82                 throw new UnsupportedOperationException(); // TODO
83         }
84
85         @Override
86         public void setD(String val_4_bit)
87         {
88                 D.setState(BitVector.parse(val_4_bit));
89         }
90
91         @Override
92         public void setQ_0(String val_1_bit)
93         {
94                 Qn.setState(Bit.parse(val_1_bit).toVector());
95         }
96
97         @Override
98         public void setQ_3(String val_1_bit)
99         {
100                 Qn_3.setState(Bit.parse(val_1_bit).toVector());
101         }
102
103         @Override
104         public void setRAM_0(String val_1_bit)
105         {
106                 RAMn.setState(Bit.parse(val_1_bit).toVector());
107         }
108
109         @Override
110         public void setRAM_3(String val_1_bit)
111         {
112                 RAMn_3.setState(Bit.parse(val_1_bit).toVector());
113         }
114
115         @Override
116         public void clockOn(boolean isClockOn)
117         {
118                 C.setState(isClockOn ? Bit.ONE : Bit.ZERO);
119         }
120
121         @Override
122         public String getQ_0()
123         {
124                 return Qn.getDisplayedValue().toString();
125         }
126
127         @Override
128         public String getQ_3()
129         {
130                 return Qn_3.getDisplayedValue().toString();
131         }
132
133         @Override
134         public String getRAM_0()
135         {
136                 return RAMn.getDisplayedValue().toString();
137         }
138
139         @Override
140         public String getRAM_3()
141         {
142                 return RAMn_3.getDisplayedValue().toString();
143         }
144
145         @Override
146         public String getNotP()
147         {
148                 throw new UnsupportedOperationException(); // TODO
149         }
150
151         @Override
152         public String getNotG()
153         {
154                 throw new UnsupportedOperationException(); // TODO
155         }
156
157         @Override
158         public String getCarryOut()
159         {
160                 return Cn_4.getDisplayedValue().toString();
161         }
162
163         @Override
164         public String getSign()
165         {
166                 return F3.getDisplayedValue().toString();
167         }
168
169         @Override
170         public String getZero()
171         {
172                 return F_0.getDisplayedValue().toString();
173         }
174
175         @Override
176         public String getOverflow()
177         {
178                 return OVR.getDisplayedValue().toString();
179         }
180
181         @Override
182         public String getY()
183         {
184                 return Y.getDisplayedValue().toString();
185         }
186
187         @Override
188         public void setDirectly(Register r, String val_4_bit)
189         {
190                 am2901.setHighLevelState(regToStateID(r), BitVector.parse(val_4_bit));
191         }
192
193         @Override
194         public String getDirectly(Register r)
195         {
196                 return ((BitVector) am2901.getHighLevelState(regToStateID(r))).toString();
197         }
198
199         private static String regToStateID(Register r)
200         {
201                 if (r == Register.Q)
202                         return "qreg.q";
203                 return "regs.c" + r.toBitString() + ".q";
204         }
205
206         @Override
207         public TestEnvironmentHelper getTestEnvironmentHelper()
208         {
209                 return testHelper;
210         }
211 }