From 06a3c1fd9d0326316e4555ab2f10d1a6d41d183d Mon Sep 17 00:00:00 2001 From: hneemann Date: Wed, 1 Jan 2020 11:16:36 +0100 Subject: [PATCH] Model analyser ignores signals named "VCC" and "GND". --- .../digital/analyse/ModelAnalyser.java | 64 ++++++++++--------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java b/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java index 458b2f1cd..376c73c22 100644 --- a/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java +++ b/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java @@ -180,44 +180,50 @@ public class ModelAnalyser { private ArrayList checkBinaryInputs(ArrayList list) throws AnalyseException { ArrayList inputs = new ArrayList<>(); for (Signal s : list) { - final int bits = s.getValue().getBits(); - if (bits == 1) - inputs.add(s); - else { - try { - Splitter sp = Splitter.createNToOne(bits); - final ObservableValue out = sp.getOutputs().get(0); - out.addObserver(new NodeWithoutDelay(s.getValue()) { - @Override - public void hasChanged() { - s.getValue().setValue(out.getValue()); + if (!ignoreSignal(s)) { + final int bits = s.getValue().getBits(); + if (bits == 1) + inputs.add(s); + else { + try { + Splitter sp = Splitter.createNToOne(bits); + final ObservableValue out = sp.getOutputs().get(0); + out.addObserver(new NodeWithoutDelay(s.getValue()) { + @Override + public void hasChanged() { + s.getValue().setValue(out.getValue()); + } + }); + out.fireHasChanged(); + + SplitPinString pins = SplitPinString.create(s); + ObservableValues.Builder builder = new ObservableValues.Builder(); + String name = s.getName(); + if (!name.contains("_")) + name += "_"; + for (int i = bits - 1; i >= 0; i--) { + ObservableValue o = new ObservableValue(name + i, 1); + builder.add(o); + inputs.add(new Signal(name + i, o).setPinNumber(pins.getPin(i))); } - }); - out.fireHasChanged(); + final ObservableValues inputsList = builder.reverse().build(); + sp.setInputs(inputsList); - SplitPinString pins = SplitPinString.create(s); - ObservableValues.Builder builder = new ObservableValues.Builder(); - String name = s.getName(); - if (!name.contains("_")) - name += "_"; - for (int i = bits - 1; i >= 0; i--) { - ObservableValue o = new ObservableValue(name + i, 1); - builder.add(o); - inputs.add(new Signal(name + i, o).setPinNumber(pins.getPin(i))); + modelAnalyzerInfo.addInputBus(s.getName(), inputsList.getNames()); + + } catch (NodeException e) { + throw new AnalyseException(e); } - final ObservableValues inputsList = builder.reverse().build(); - sp.setInputs(inputsList); - - modelAnalyzerInfo.addInputBus(s.getName(), inputsList.getNames()); - - } catch (NodeException e) { - throw new AnalyseException(e); } } } return inputs; } + private boolean ignoreSignal(Signal s) { + return s.getName().equals("VCC") || s.getName().equals("GND"); + } + private void checkClock(Node node) throws AnalyseException { if (!getClock().hasObserver(node)) throw new AnalyseException(Lang.get("err_ffNeedsToBeConnectedToClock"));