X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fmachine%2FAm2900Machine.java;h=e48134f0aa57daa31ad91d3c3f113616b3b78272;hb=13befb68923c540a13cfe5b5b28bf0f7ddf5c41b;hp=9cd8adcc26928f25ba0bb3d4874bc7d1e627d83d;hpb=254716460f879db0b318294bb66b9c9de52844b7;p=Mograsim.git diff --git 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 index 9cd8adcc..e48134f0 100644 --- 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 @@ -54,6 +54,7 @@ public class Am2900Machine implements Machine CoreModelParameters params = new CoreModelParameters(); params.gateProcessTime = 50; + params.hardcodedComponentProcessTime = params.gateProcessTime * 5; params.wireTravelTime = 10; mainMemory = new AssignableMainMemory(new WordAddressableMemory(am2900MachineDefinition.getMainMemoryDefinition())); instMemory = new AssignableMicroInstructionMemory( @@ -88,27 +89,25 @@ public class Am2900Machine implements Machine defaultParams[19] = paramClassifications[19].parse("JZ"); MicroInstruction jzMI = MicroInstruction.create(defaultParams); am2900.setHighLevelState("muir_2.q", jzMI.toBitVector()); - if (!machineDefinition.strict) - { - setRegistersToZero(machineDefinition.getUnsortedRegisters()); - setRegisterGroupToZero(machineDefinition.getRegisterGroups()); - // TODO reset latches? - } + Bit regsValue = machineDefinition.expert ? Bit.U : Bit.ZERO; + setRegistersTo(machineDefinition.getUnsortedRegisters(), regsValue); + setRegisterGroupTo(machineDefinition.getRegisterGroups(), regsValue); + // TODO reset latches? } - private void setRegistersToZero(List registers) + private void setRegistersTo(List registers, Bit value) { for (Register r : registers) if (r != muInstrRegister.instance)// don't reset; sometimes causes a glitch - setRegister(r, BitVector.of(Bit.ZERO, r.getWidth())); + setRegister(r, BitVector.of(value, r.getWidth())); } - private void setRegisterGroupToZero(List registerGroups) + private void setRegisterGroupTo(List registerGroups, Bit value) { for (RegisterGroup rg : registerGroups) { - setRegistersToZero(rg.getRegisters()); - setRegisterGroupToZero(rg.getSubGroups()); + setRegistersTo(rg.getRegisters(), value); + setRegisterGroupTo(rg.getSubGroups(), value); } }