mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-13 06:49:36 -04:00
Model analyser ignores signals named "VCC" and "GND".
This commit is contained in:
parent
e56963dc9e
commit
06a3c1fd9d
@ -180,44 +180,50 @@ public class ModelAnalyser {
|
|||||||
private ArrayList<Signal> checkBinaryInputs(ArrayList<Signal> list) throws AnalyseException {
|
private ArrayList<Signal> checkBinaryInputs(ArrayList<Signal> list) throws AnalyseException {
|
||||||
ArrayList<Signal> inputs = new ArrayList<>();
|
ArrayList<Signal> inputs = new ArrayList<>();
|
||||||
for (Signal s : list) {
|
for (Signal s : list) {
|
||||||
final int bits = s.getValue().getBits();
|
if (!ignoreSignal(s)) {
|
||||||
if (bits == 1)
|
final int bits = s.getValue().getBits();
|
||||||
inputs.add(s);
|
if (bits == 1)
|
||||||
else {
|
inputs.add(s);
|
||||||
try {
|
else {
|
||||||
Splitter sp = Splitter.createNToOne(bits);
|
try {
|
||||||
final ObservableValue out = sp.getOutputs().get(0);
|
Splitter sp = Splitter.createNToOne(bits);
|
||||||
out.addObserver(new NodeWithoutDelay(s.getValue()) {
|
final ObservableValue out = sp.getOutputs().get(0);
|
||||||
@Override
|
out.addObserver(new NodeWithoutDelay(s.getValue()) {
|
||||||
public void hasChanged() {
|
@Override
|
||||||
s.getValue().setValue(out.getValue());
|
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)));
|
||||||
}
|
}
|
||||||
});
|
final ObservableValues inputsList = builder.reverse().build();
|
||||||
out.fireHasChanged();
|
sp.setInputs(inputsList);
|
||||||
|
|
||||||
SplitPinString pins = SplitPinString.create(s);
|
modelAnalyzerInfo.addInputBus(s.getName(), inputsList.getNames());
|
||||||
ObservableValues.Builder builder = new ObservableValues.Builder();
|
|
||||||
String name = s.getName();
|
} catch (NodeException e) {
|
||||||
if (!name.contains("_"))
|
throw new AnalyseException(e);
|
||||||
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)));
|
|
||||||
}
|
}
|
||||||
final ObservableValues inputsList = builder.reverse().build();
|
|
||||||
sp.setInputs(inputsList);
|
|
||||||
|
|
||||||
modelAnalyzerInfo.addInputBus(s.getName(), inputsList.getNames());
|
|
||||||
|
|
||||||
} catch (NodeException e) {
|
|
||||||
throw new AnalyseException(e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return inputs;
|
return inputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean ignoreSignal(Signal s) {
|
||||||
|
return s.getName().equals("VCC") || s.getName().equals("GND");
|
||||||
|
}
|
||||||
|
|
||||||
private void checkClock(Node node) throws AnalyseException {
|
private void checkClock(Node node) throws AnalyseException {
|
||||||
if (!getClock().hasObserver(node))
|
if (!getClock().hasObserver(node))
|
||||||
throw new AnalyseException(Lang.get("err_ffNeedsToBeConnectedToClock"));
|
throw new AnalyseException(Lang.get("err_ffNeedsToBeConnectedToClock"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user