Introduced Machine.getCoreModelParameters
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / Machine.java
1 package net.mograsim.machine;
2
3 import java.util.function.Consumer;
4
5 import net.mograsim.logic.core.components.CoreClock;
6 import net.mograsim.logic.core.timeline.Timeline;
7 import net.mograsim.logic.core.types.BitVector;
8 import net.mograsim.logic.model.model.LogicModel;
9 import net.mograsim.logic.model.modeladapter.CoreModelParameters;
10 import net.mograsim.machine.mi.AssignableMPROM;
11 import net.mograsim.machine.mi.AssignableMicroInstructionMemory;
12 import net.mograsim.machine.registers.Register;
13
14 public interface Machine
15 {
16         MachineDefinition getDefinition();
17
18         void reset();
19
20         LogicModel getModel();
21
22         // TODO replace with HLS references
23         CoreClock getClock();
24
25         BitVector getRegister(Register r);
26
27         void setRegister(Register r, BitVector value);
28
29         void addRegisterListener(Register r, Consumer<BitVector> listener);
30
31         void removeRegisterListener(Register r, Consumer<BitVector> listener);
32
33         Timeline getTimeline();
34
35         public CoreModelParameters getCoreModelParameters();
36
37         AssignableMainMemory getMainMemory();
38
39         AssignableMicroInstructionMemory getMicroInstructionMemory();
40
41         AssignableMPROM getMPROM();
42
43         void addActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
44
45         void removeActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
46
47         long getActiveMicroInstructionAddress();
48
49         public interface ActiveMicroInstructionChangedListener
50         {
51                 public void instructionChanged(long oldAddress, long newAddress);
52         }
53 }