projects
/
Mograsim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
25b455d
)
Fixed test setup and added support for high level state access
author
Christian Femers
<femers@in.tum.de>
Mon, 2 Sep 2019 01:26:39 +0000
(
03:26
+0200)
committer
Christian Femers
<femers@in.tum.de>
Mon, 2 Sep 2019 01:26:39 +0000
(
03:26
+0200)
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910.java
patch
|
blob
|
history
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910Impl.java
patch
|
blob
|
history
diff --git
a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910.java
b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910.java
index
115f9cb
..
5290c5a
100644
(file)
--- a/
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910.java
+++ b/
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910.java
@@
-1,5
+1,8
@@
package net.mograsim.logic.model.am2900.am2910;
package net.mograsim.logic.model.am2900.am2910;
+import java.util.Arrays;
+import java.util.stream.Stream;
+
import net.mograsim.logic.model.am2900.TestableCircuit;
public interface TestableAm2910 extends TestableCircuit
import net.mograsim.logic.model.am2900.TestableCircuit;
public interface TestableAm2910 extends TestableCircuit
@@
-19,6
+22,8
@@
public interface TestableAm2910 extends TestableCircuit
void set_OE(String val_1_bit);
void set_OE(String val_1_bit);
+ void setDirectly(Register r, String val_X_bit);
+
String getY();
String get_FULL();
String getY();
String get_FULL();
@@
-29,8
+34,27
@@
public interface TestableAm2910 extends TestableCircuit
String get_VECT();
String get_VECT();
+ String getDirectly(Register r);
+
enum Am2910_Inst
{
JZ, CJS, JMAP, CJP, PUSH, JSRP, CJV, JRP, RFCT, RPCT, CRTN, CJPP, LDCT, LOOP, CONT, TWB;
}
enum Am2910_Inst
{
JZ, CJS, JMAP, CJP, PUSH, JSRP, CJV, JRP, RFCT, RPCT, CRTN, CJPP, LDCT, LOOP, CONT, TWB;
}
+
+ enum Register
+ {
+ S_0, S_1, S_2, S_3, S_4, SP, PC, REG_COUNT;
+
+ public static Stream<Register> stream()
+ {
+ return Arrays.stream(values());
+ }
+
+ public int size()
+ {
+ if (this == SP)
+ return 3;
+ return 12;
+ }
+ }
}
}
diff --git
a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910Impl.java
b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910Impl.java
index
f3686aa
..
8b2cddf
100644
(file)
--- a/
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910Impl.java
+++ b/
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2910/TestableAm2910Impl.java
@@
-1,12
+1,9
@@
package net.mograsim.logic.model.am2900.am2910;
package net.mograsim.logic.model.am2900.am2910;
-import org.junit.Test;
-
import net.mograsim.logic.core.components.BitDisplay;
import net.mograsim.logic.core.components.ManualSwitch;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.core.types.BitVector;
import net.mograsim.logic.core.components.BitDisplay;
import net.mograsim.logic.core.components.ManualSwitch;
import net.mograsim.logic.core.timeline.Timeline;
import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.types.BitVectorFormatter;
import net.mograsim.logic.model.am2900.TestEnvironmentHelper;
import net.mograsim.logic.model.am2900.TestEnvironmentHelper.DebugState;
import net.mograsim.logic.model.model.components.GUIComponent;
import net.mograsim.logic.model.am2900.TestEnvironmentHelper;
import net.mograsim.logic.model.am2900.TestEnvironmentHelper.DebugState;
import net.mograsim.logic.model.model.components.GUIComponent;
@@
-22,13
+19,13
@@
public class TestableAm2910Impl implements TestableAm2910
private ManualSwitch D;
private ManualSwitch _CC;
private ManualSwitch _CCEN;
private ManualSwitch D;
private ManualSwitch _CC;
private ManualSwitch _CCEN;
- private ManualSwitch _R
DL
;
+ private ManualSwitch _R
LD
;
private ManualSwitch _OE;
private BitDisplay _FULL;
private BitDisplay Y;
private BitDisplay _PL, _MAP, _VECT;
private ManualSwitch _OE;
private BitDisplay _FULL;
private BitDisplay Y;
private BitDisplay _PL, _MAP, _VECT;
- private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "
GUIAm2910
");
+ private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "
file:components/am2910/GUIAm2910.json
");
@Override
public void setup()
@Override
public void setup()
@@
-84,7
+81,7
@@
public class TestableAm2910Impl implements TestableAm2910
@Override
public void set_RLD(String val_1_bit)
{
@Override
public void set_RLD(String val_1_bit)
{
- _R
DL
.setState(BitVector.parse(val_1_bit));
+ _R
LD
.setState(BitVector.parse(val_1_bit));
}
@Override
}
@Override
@@
-93,6
+90,12
@@
public class TestableAm2910Impl implements TestableAm2910
_OE.setState(BitVector.parse(val_1_bit));
}
_OE.setState(BitVector.parse(val_1_bit));
}
+ @Override
+ public void setDirectly(Register r, String val_X_bit)
+ {
+ am2901.setHighLevelState(regToStateID(r), BitVector.parse(val_X_bit));
+ }
+
@Override
public String getY()
{
@Override
public String getY()
{
@@
-123,4
+126,30
@@
public class TestableAm2910Impl implements TestableAm2910
return _VECT.getDisplayedValue().toString();
}
return _VECT.getDisplayedValue().toString();
}
+ @Override
+ public String getDirectly(Register r)
+ {
+ return am2901.getHighLevelState(regToStateID(r)).toString();
+ }
+
+ private static String regToStateID(Register r)
+ {
+ switch (r)
+ {
+ case S_0:
+ case S_1:
+ case S_2:
+ case S_3:
+ case S_4:
+ return "stack.c" + BitVector.from(r.ordinal(), 3);
+ case SP:
+ return "sp.q";
+ case PC:
+ return "mupc.q";
+ case REG_COUNT:
+ return "r.q";
+ default:
+ throw new IllegalArgumentException("unknown: " + r);
+ }
+ }
}
}