From: Fabian Stemmler Date: Tue, 17 Sep 2019 19:42:21 +0000 (+0200) Subject: Merge branch 'development' of X-Git-Url: https://mograsim.net/gitweb/?p=Mograsim.git;a=commitdiff_plain;h=d094b43f1697af4586f135790919f866cc53a9a5;hp=-c Merge branch 'development' of https://gitlab.lrz.de/lrr-tum/students/eragp-misim-2019.git into development Conflicts: plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java --- d094b43f1697af4586f135790919f866cc53a9a5 diff --combined plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java index bcde112d,5683b8ea..86c60044 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java @@@ -2,11 -2,13 +2,13 @@@ package net.mograsim.logic.model.am2900 import net.mograsim.logic.core.components.CoreClock; import net.mograsim.logic.core.timeline.Timeline; + import net.mograsim.logic.core.types.Bit; import net.mograsim.logic.core.types.BitVector; import net.mograsim.logic.model.am2900.components.ModelAm2900MainMemory; import net.mograsim.logic.model.am2900.components.ModelAm2900MicroInstructionMemory; import net.mograsim.logic.model.model.LogicModel; import net.mograsim.logic.model.model.LogicModelModifiable; + import net.mograsim.logic.model.model.components.ModelComponent; import net.mograsim.logic.model.modeladapter.CoreModelParameters; import net.mograsim.logic.model.modeladapter.LogicCoreAdapter; import net.mograsim.logic.model.serializing.IndirectModelComponentCreator; @@@ -14,31 -16,35 +16,36 @@@ import net.mograsim.machine.Machine import net.mograsim.machine.MachineDefinition; import net.mograsim.machine.MainMemory; import net.mograsim.machine.Register; +import net.mograsim.machine.mi.AssignableMicroInstructionMemory; + import net.mograsim.machine.mi.MicroInstruction; + import net.mograsim.machine.mi.MicroInstructionDefinition; -import net.mograsim.machine.mi.MicroInstructionMemory; import net.mograsim.machine.mi.StandardMicroInstructionMemory; + import net.mograsim.machine.mi.parameters.MicroInstructionParameter; + import net.mograsim.machine.mi.parameters.ParameterClassification; import net.mograsim.machine.standard.memory.WordAddressableMemory; public class Am2900Machine implements Machine { private Am2900MachineDefinition machineDefinition; private LogicModelModifiable logicModel; + private ModelComponent am2900; private Timeline timeline; private MainMemory mainMemory; - private MicroInstructionMemory instMemory; + private AssignableMicroInstructionMemory instMemory; private CoreClock clock; - public Am2900Machine(Am2900MachineDefinition am2900MachineDefinition) + public Am2900Machine(LogicModelModifiable model, Am2900MachineDefinition am2900MachineDefinition) { this.machineDefinition = am2900MachineDefinition; - logicModel = new LogicModelModifiable(); - IndirectModelComponentCreator.createComponent(logicModel, + this.logicModel = model; + this.am2900 = IndirectModelComponentCreator.createComponent(logicModel, "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/Am2900.json", "Am2900"); CoreModelParameters params = new CoreModelParameters(); params.gateProcessTime = 50; params.wireTravelTime = 10; mainMemory = new WordAddressableMemory(am2900MachineDefinition.getMainMemoryDefinition()); - instMemory = new StandardMicroInstructionMemory(am2900MachineDefinition.getMicroInstructionMemoryDefinition()); + instMemory = new AssignableMicroInstructionMemory( + new StandardMicroInstructionMemory(am2900MachineDefinition.getMicroInstructionMemoryDefinition())); logicModel.getComponentBySubmodelPath("Am2900.Am2900MainMemory#0", ModelAm2900MainMemory.class).setMachine(this); logicModel.getComponentBySubmodelPath("Am2900.Am2900MicroInstructionMemory#0", ModelAm2900MicroInstructionMemory.class) .setMachine(this); @@@ -54,8 -60,13 +61,13 @@@ @Override public void reset() { - // TODO Auto-generated method stub - + logicModel.getComponentByName("Am2900").setHighLevelState("c.out", BitVector.of(Bit.ZERO)); + MicroInstructionDefinition muiDef = getDefinition().getMicroInstructionMemoryDefinition().getMicroInstructionDefinition(); + ParameterClassification[] paramClassifications = muiDef.getParameterClassifications(); + MicroInstructionParameter[] defaultParams = muiDef.createDefaultInstruction().getParameters(); + defaultParams[19] = paramClassifications[19].parse("JZ"); + MicroInstruction jzMI = MicroInstruction.create(defaultParams); + logicModel.getComponentByName("Am2900").setHighLevelState("muir_2.q", jzMI.toBitVector()); } @Override @@@ -64,6 -75,11 +76,11 @@@ return logicModel; } + public ModelComponent getAm2900() + { + return am2900; + } + @Override public Timeline getTimeline() { @@@ -97,9 -113,8 +114,8 @@@ } @Override - public MicroInstructionMemory getMicroInstructionMemory() + public AssignableMicroInstructionMemory getMicroInstructionMemory() { return instMemory; } - - } + }