mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-12 06:15:32 -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 {
|
||||
ArrayList<Signal> 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"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user