mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-25 14:08:27 -04:00
removed not working backtrack loop detection
This commit is contained in:
parent
553cba9d25
commit
6c5ff1cd92
@ -7,8 +7,6 @@ import de.neemann.digital.lang.Lang;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static de.neemann.digital.core.Model.MAX_LOOP_COUNTER;
|
||||
|
||||
/**
|
||||
* Used to analyse on which inputs a given output depends.
|
||||
* So you only have to take into account the inputs, a given outputs
|
||||
@ -30,7 +28,7 @@ public class DependencyAnalyser {
|
||||
dependencyMap = new HashMap<>();
|
||||
for (Signal s : modelAnalyser.getInputs()) {
|
||||
Set<ObservableValue> effected = new HashSet<>();
|
||||
backtracking(s.getValue(), effected, MAX_LOOP_COUNTER);
|
||||
backtracking(s.getValue(), effected);
|
||||
dependencyMap.put(s, effected);
|
||||
}
|
||||
}
|
||||
@ -50,19 +48,18 @@ public class DependencyAnalyser {
|
||||
return list;
|
||||
}
|
||||
|
||||
private void backtracking(ObservableValue value, Set<ObservableValue> effected, int depth) throws PinException, BacktrackException {
|
||||
effected.add(value);
|
||||
private void backtracking(ObservableValue value, Set<ObservableValue> effected) throws PinException, BacktrackException {
|
||||
if (!effected.contains(value)) {
|
||||
effected.add(value);
|
||||
|
||||
if (depth < 0)
|
||||
throw new BacktrackException(Lang.get("err_backtrackLoopFound"));
|
||||
|
||||
for (Observer o : value) {
|
||||
if ((o instanceof NodeInterface)) {
|
||||
ObservableValues outputs = ((NodeInterface) o).getOutputs();
|
||||
for (ObservableValue co : outputs)
|
||||
backtracking(co, effected, depth - 1);
|
||||
} else
|
||||
throw new BacktrackException(Lang.get("err_backtrackOf_N_isImpossible", o.getClass().getSimpleName()));
|
||||
for (Observer o : value) {
|
||||
if ((o instanceof NodeInterface)) {
|
||||
ObservableValues outputs = ((NodeInterface) o).getOutputs();
|
||||
for (ObservableValue co : outputs)
|
||||
backtracking(co, effected);
|
||||
} else
|
||||
throw new BacktrackException(Lang.get("err_backtrackOf_N_isImpossible", o.getClass().getSimpleName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -284,9 +284,6 @@ public class ModelAnalyser {
|
||||
tt.addResult(s.getName(), e);
|
||||
}
|
||||
|
||||
// for now only checks for circular dependencies
|
||||
new DependencyAnalyser(this);
|
||||
|
||||
model.init();
|
||||
for (int row = 0; row < rows; row++) {
|
||||
bitsetter.fill(row);
|
||||
|
@ -1,14 +1,16 @@
|
||||
package de.neemann.digital.core.wiring.bus;
|
||||
|
||||
import de.neemann.digital.core.NodeInterface;
|
||||
import de.neemann.digital.core.ObservableValue;
|
||||
import de.neemann.digital.core.Observer;
|
||||
import de.neemann.digital.core.ObservableValues;
|
||||
import de.neemann.digital.draw.elements.PinException;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* This observer is added to all outputs connected together
|
||||
*/
|
||||
public final class CommonBusValue extends ObservableValue implements Observer {
|
||||
public final class CommonBusValue extends ObservableValue implements NodeInterface {
|
||||
private final BusModelStateObserver obs;
|
||||
private final PullResistor resistor;
|
||||
private final ObservableValue[] inputs;
|
||||
@ -76,4 +78,9 @@ public final class CommonBusValue extends ObservableValue implements Observer {
|
||||
+ "inputs=" + Arrays.toString(inputs)
|
||||
+ "', -->" + super.toString() + " }";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ObservableValues getOutputs() throws PinException {
|
||||
return new ObservableValues(this);
|
||||
}
|
||||
}
|
||||
|
@ -539,7 +539,6 @@ Sind evtl. die Namen der Variablen nicht eindeutig?</string>
|
||||
<string name="err_invalidTransmissionGateState">Die Steuereingänge eines Transmission-Gates müssen invertiert beschaltet werden!</string>
|
||||
<string name="err_nameUsedTwice_N">Signal {0} wurde mehrfach verwendet!</string>
|
||||
<string name="err_errorParsingTestdata">Fehler beim Einlesen der Testdaten.</string>
|
||||
<string name="err_backtrackLoopFound">Die Schaltung enthält ungepufferte zirkuläre Abhängigkeiten.</string>
|
||||
<string name="err_backtrackOf_N_isImpossible">Die Modelkomponente {0} kann nicht analysiert werden.</string>
|
||||
|
||||
<string name="key_AddrBits">Adress-Bits</string>
|
||||
|
@ -529,7 +529,6 @@ The names of the variables may not be unique.</string>
|
||||
<string name="err_invalidTransmissionGateState">The two control inputs of a transmission gate must be inverted!</string>
|
||||
<string name="err_nameUsedTwice_N">Signal {0} is used twice!</string>
|
||||
<string name="err_errorParsingTestdata">Error parsing the test data.</string>
|
||||
<string name="err_backtrackLoopFound">The circuit contains unbuffered circular dependencies.</string>
|
||||
<string name="err_backtrackOf_N_isImpossible">The model component {0} can not be analysed.</string>
|
||||
|
||||
<string name="key_AddrBits">Address Bits</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user