diff --git a/src/main/java/de/neemann/digital/core/Model.java b/src/main/java/de/neemann/digital/core/Model.java index 63d0a3b2f..2a4574bb0 100644 --- a/src/main/java/de/neemann/digital/core/Model.java +++ b/src/main/java/de/neemann/digital/core/Model.java @@ -75,6 +75,7 @@ public class Model implements Iterable, SyncAccess { private boolean isInvalidSignal = false; private AsyncSeq asyncInfos; private boolean asyncMode = false; + private boolean allowGlobalValues = false; private final ArrayList observers; private ArrayList observersStep; @@ -740,6 +741,27 @@ public class Model implements Iterable, SyncAccess { return null; } + /** + * Registers a global value. + * + * @param name the name + * @param value the value + */ + public void registerGlobalValue(String name, ObservableValue value) { + if (allowGlobalValues) + GlobalValues.getInstance().register(name, value, this); + } + + /** + * Set or denies the creation of global values. + * + * @param allowGlobalValues if true, global values are published + * @return this for chained calls + */ + public Model setAllowGlobalValues(boolean allowGlobalValues) { + this.allowGlobalValues = allowGlobalValues; + return this; + } /** * Sets async execution infos diff --git a/src/main/java/de/neemann/digital/core/io/Probe.java b/src/main/java/de/neemann/digital/core/io/Probe.java index e83b8c9e0..27b9deeb2 100644 --- a/src/main/java/de/neemann/digital/core/io/Probe.java +++ b/src/main/java/de/neemann/digital/core/io/Probe.java @@ -54,7 +54,7 @@ public class Probe implements Element { @Override public void registerNodes(Model model) { model.addSignal(new Signal(label, value).setFormat(format)); - GlobalValues.getInstance().register(label, value, model); + model.registerGlobalValue(label, value); } } diff --git a/src/main/java/de/neemann/digital/draw/model/ModelCreator.java b/src/main/java/de/neemann/digital/draw/model/ModelCreator.java index 9eb182f47..1683350e2 100644 --- a/src/main/java/de/neemann/digital/draw/model/ModelCreator.java +++ b/src/main/java/de/neemann/digital/draw/model/ModelCreator.java @@ -269,7 +269,7 @@ public class ModelCreator implements Iterable { * @throws NodeException NodeException */ public Model createModel(boolean attachWires) throws PinException, NodeException { - Model m = new Model(); + Model m = new Model().setAllowGlobalValues(attachWires); for (Net n : netList) n.interconnect(m, attachWires);