X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fsnippets%2Fhighlevelstatehandlers%2Fstandard%2Fatomic%2FWireForcingAtomicHighLevelStateHandler.java;h=b800934923c93d9351e0323c1c267ead7442a8ee;hb=3977f16649531ca3ba345c9cd5ec365e0b804783;hp=2a18646b004d1a4d2b0eabf8b2abc193597c9141;hpb=aac2d4e0bee577b743c036953cf2c12c84c03b71;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/WireForcingAtomicHighLevelStateHandler.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/WireForcingAtomicHighLevelStateHandler.java index 2a18646b..b8009349 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/WireForcingAtomicHighLevelStateHandler.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/WireForcingAtomicHighLevelStateHandler.java @@ -10,7 +10,10 @@ import net.mograsim.logic.core.types.Bit; import net.mograsim.logic.core.types.BitVector; import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.serializing.IdentifierGetter; +import net.mograsim.logic.model.snippets.SnippetDefinintion; import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext; +import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers; public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler { @@ -75,7 +78,7 @@ public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelSt @Override public Object getHighLevelState() { - BitVector result = BitVector.of(Bit.U, logicWidth); + BitVector result = BitVector.of(Bit.ZERO, logicWidth); for (GUIWire wire : wiresToForceInverted) if (wire.hasLogicModelBinding()) result = result.or(wire.getWireValues()); @@ -103,9 +106,25 @@ public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelSt wire.forceWireValues(vector); } + @Override + public WireForcingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter) + { + WireForcingAtomicHighLevelStateHandlerParams params = new WireForcingAtomicHighLevelStateHandlerParams(); + params.wiresToForce = wiresToForce.stream().map(w -> w.name).collect(Collectors.toList()); + params.wiresToForceInverted = wiresToForceInverted.stream().map(w -> w.name).collect(Collectors.toList()); + return params; + } + public static class WireForcingAtomicHighLevelStateHandlerParams { public List wiresToForce; public List wiresToForceInverted; } + + static + { + StandardHighLevelStateHandlerSnippetSuppliers.atomicHandlerSupplier.setSnippetSupplier( + WireForcingAtomicHighLevelStateHandler.class.getCanonicalName(), + SnippetDefinintion.create(WireForcingAtomicHighLevelStateHandlerParams.class, WireForcingAtomicHighLevelStateHandler::new)); + } } \ No newline at end of file