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 / am2910 / Am2910Testbench.java
1 package net.mograsim.logic.model.am2900.am2910;
2
3 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
4 import net.mograsim.logic.core.types.Bit;
5 import net.mograsim.logic.core.types.BitVector;
6 import net.mograsim.logic.model.SimpleLogicUIStandalone;
7 import net.mograsim.logic.model.SimpleLogicUIStandalone.VisualisationObjects;
8 import net.mograsim.logic.model.am2900.Am2900Loader;
9 import net.mograsim.logic.model.model.LogicModelModifiable;
10 import net.mograsim.logic.model.model.components.ModelComponent;
11 import net.mograsim.logic.model.model.components.Orientation;
12 import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
13 import net.mograsim.logic.model.model.components.atomic.ModelClock;
14 import net.mograsim.logic.model.model.components.atomic.ModelClock.ModelClockParams;
15 import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
16 import net.mograsim.logic.model.model.wires.ModelWire;
17 import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
18
19 public class Am2910Testbench
20 {
21         public static void main(String[] args)
22         {
23                 Am2900Loader.setup();
24                 SimpleLogicUIStandalone.executeVisualisation(Am2910Testbench::create, Am2910Testbench::beforeRun);
25         }
26
27         @SuppressWarnings("unused") // for ModelWires being created
28         public static void create(LogicModelModifiable model)
29         {
30                 ModelComponent am2910 = IndirectModelComponentCreator.createComponent(model, "Am2910", "Am2910");
31                 ModelClock C = new ModelClock(model, new ModelClockParams(1000, Orientation.RIGHT));
32                 ModelManualSwitch D = new ModelManualSwitch(model, 12, "D");
33                 ModelManualSwitch _RLD = new ModelManualSwitch(model, 1, "_RLD");
34                 ModelManualSwitch _CC = new ModelManualSwitch(model, 1, "_CC");
35                 ModelManualSwitch _CCEN = new ModelManualSwitch(model, 1, "_CCEN");
36                 ModelManualSwitch I = new ModelManualSwitch(model, 4, "I");
37                 ModelManualSwitch CI = new ModelManualSwitch(model, 1, "CI");
38                 ModelManualSwitch _OE = new ModelManualSwitch(model, 1, "_OE");
39                 ModelBitDisplay _FULL = new ModelBitDisplay(model, 1, "_FULL");
40                 ModelBitDisplay _PL = new ModelBitDisplay(model, 1, "_PL");
41                 ModelBitDisplay _MAP = new ModelBitDisplay(model, 1, "_MAP");
42                 ModelBitDisplay _VECT = new ModelBitDisplay(model, 1, "_VECT");
43                 ModelBitDisplay Y = new ModelBitDisplay(model, 12, "Y");
44
45                 C.moveTo(35, -35);
46                 D.moveTo(10, -20);
47                 _RLD.moveTo(-30, -1.5);
48                 _CC.moveTo(-30, 20);
49                 _CCEN.moveTo(-30, 40);
50                 I.moveTo(-30, 60);
51                 CI.moveTo(75, 45);
52                 _FULL.moveTo(80, 6.5);
53                 _PL.moveTo(30, 85);
54                 _MAP.moveTo(30, 105);
55                 _VECT.moveTo(30, 125);
56                 Y.moveTo(40, 65);
57                 _OE.moveTo(60, 85);
58
59                 new ModelWire(model, C.getOutputPin(), am2910.getPin("C"), new Point(60, -27.5));
60                 new ModelWire(model, D.getOutputPin(), am2910.getPin("D"), new Point(36, -12.5));
61                 new ModelWire(model, _RLD.getOutputPin(), am2910.getPin("_RLD"), new Point[0]);
62                 new ModelWire(model, _CC.getOutputPin(), am2910.getPin("_CC"));
63                 new ModelWire(model, _CCEN.getOutputPin(), am2910.getPin("_CCEN"));
64                 new ModelWire(model, I.getOutputPin(), am2910.getPin("I"));
65                 new ModelWire(model, CI.getOutputPin(), am2910.getPin("CI"), new Point(100, 52.5), new Point(100, 40));
66                 new ModelWire(model, am2910.getPin("_FULL"), _FULL.getInputPin(), new Point[0]);
67                 new ModelWire(model, am2910.getPin("_PL"), _PL.getInputPin(), new Point(13, 92.5));
68                 new ModelWire(model, am2910.getPin("_MAP"), _MAP.getInputPin(), new Point(19, 112.5));
69                 new ModelWire(model, am2910.getPin("_VECT"), _VECT.getInputPin(), new Point(25, 132.5));
70                 new ModelWire(model, am2910.getPin("Y"), Y.getInputPin(), new Point(38, 72.5));
71                 new ModelWire(model, am2910.getPin("_OE"), _OE.getOutputPin());
72         }
73
74         public static void beforeRun(VisualisationObjects vis)
75         {
76                 vis.model.getComponentsByName().values().forEach(c ->
77                 {
78                         if (c instanceof ModelManualSwitch)
79                         {
80                                 ModelManualSwitch cCasted = (ModelManualSwitch) c;
81                                 cCasted.setHighLevelState("out", BitVector.of(Bit.ZERO, cCasted.logicWidth));
82                         }
83                 });
84         }
85 }