mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-13 14:56:29 -04:00
fixed an issue in creating a fsm with constant functions and D ff
This commit is contained in:
parent
1b3bd04e6f
commit
ff32d2d5bd
@ -58,6 +58,7 @@ public class CircuitBuilder implements BuilderInterface<CircuitBuilder> {
|
|||||||
private int pos;
|
private int pos;
|
||||||
private boolean useLUT;
|
private boolean useLUT;
|
||||||
private boolean useJKff;
|
private boolean useJKff;
|
||||||
|
private boolean useDWithConst;
|
||||||
private ModelAnalyserInfo mai;
|
private ModelAnalyserInfo mai;
|
||||||
private int lutNumber;
|
private int lutNumber;
|
||||||
private boolean resolveLocalVars;
|
private boolean resolveLocalVars;
|
||||||
@ -82,6 +83,7 @@ public class CircuitBuilder implements BuilderInterface<CircuitBuilder> {
|
|||||||
public CircuitBuilder(ShapeFactory shapeFactory, ArrayList<Variable> varOrdering) {
|
public CircuitBuilder(ShapeFactory shapeFactory, ArrayList<Variable> varOrdering) {
|
||||||
this.shapeFactory = shapeFactory;
|
this.shapeFactory = shapeFactory;
|
||||||
this.useJKff = false;
|
this.useJKff = false;
|
||||||
|
this.useDWithConst = false;
|
||||||
this.useLUT = false;
|
this.useLUT = false;
|
||||||
desiredVarOrdering = varOrdering;
|
desiredVarOrdering = varOrdering;
|
||||||
variableVisitor = new VariableVisitor();
|
variableVisitor = new VariableVisitor();
|
||||||
@ -226,9 +228,11 @@ public class CircuitBuilder implements BuilderInterface<CircuitBuilder> {
|
|||||||
if (useDff) {
|
if (useDff) {
|
||||||
Fragment fr = createFragment(expression);
|
Fragment fr = createFragment(expression);
|
||||||
Fragment fe;
|
Fragment fe;
|
||||||
if (expression instanceof Constant)
|
if (expression instanceof Constant && ((((Constant) expression).getValue() ? 1 : 0) == initValue))
|
||||||
fe = new FragmentVisualElement(Tunnel.DESCRIPTION, shapeFactory).setAttr(Keys.NETNAME, name);
|
fe = new FragmentVisualElement(Tunnel.DESCRIPTION, shapeFactory).setAttr(Keys.NETNAME, name);
|
||||||
else {
|
else {
|
||||||
|
if (expression instanceof Constant)
|
||||||
|
useDWithConst = true;
|
||||||
FragmentVisualElement ff = new FragmentVisualElement(FlipflopD.DESCRIPTION, shapeFactory)
|
FragmentVisualElement ff = new FragmentVisualElement(FlipflopD.DESCRIPTION, shapeFactory)
|
||||||
.setAttr(Keys.LABEL, name)
|
.setAttr(Keys.LABEL, name)
|
||||||
.setAttr(Keys.DEFAULT, initValue);
|
.setAttr(Keys.DEFAULT, initValue);
|
||||||
@ -698,7 +702,7 @@ public class CircuitBuilder implements BuilderInterface<CircuitBuilder> {
|
|||||||
if (p.y > yMax) yMax = p.y;
|
if (p.y > yMax) yMax = p.y;
|
||||||
}
|
}
|
||||||
x -= SIZE;
|
x -= SIZE;
|
||||||
if (useJKff) x -= SIZE;
|
if (useJKff || useDWithConst) x -= SIZE;
|
||||||
|
|
||||||
int yPos = yMin - SIZE * 3;
|
int yPos = yMin - SIZE * 3;
|
||||||
if (useJKff) yPos = -SIZE;
|
if (useJKff) yPos = -SIZE;
|
||||||
|
@ -184,7 +184,7 @@ public class CircuitBuilderTest extends TestCase {
|
|||||||
.createCircuit();
|
.createCircuit();
|
||||||
|
|
||||||
final ArrayList<VisualElement> el = circuit.getElements();
|
final ArrayList<VisualElement> el = circuit.getElements();
|
||||||
assertEquals(8, el.size());
|
assertEquals(10, el.size());
|
||||||
assertEquals(4, el.stream().filter(visualElement -> visualElement.equalsDescription(Tunnel.DESCRIPTION)).count());
|
assertEquals(4, el.stream().filter(visualElement -> visualElement.equalsDescription(Tunnel.DESCRIPTION)).count());
|
||||||
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Const.DESCRIPTION)).count());
|
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Const.DESCRIPTION)).count());
|
||||||
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Out.DESCRIPTION)).count());
|
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Out.DESCRIPTION)).count());
|
||||||
@ -199,7 +199,7 @@ public class CircuitBuilderTest extends TestCase {
|
|||||||
.createCircuit();
|
.createCircuit();
|
||||||
|
|
||||||
final ArrayList<VisualElement> el = circuit.getElements();
|
final ArrayList<VisualElement> el = circuit.getElements();
|
||||||
assertEquals(8, el.size());
|
assertEquals(10, el.size());
|
||||||
assertEquals(4, el.stream().filter(visualElement -> visualElement.equalsDescription(Tunnel.DESCRIPTION)).count());
|
assertEquals(4, el.stream().filter(visualElement -> visualElement.equalsDescription(Tunnel.DESCRIPTION)).count());
|
||||||
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Const.DESCRIPTION)).count());
|
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Const.DESCRIPTION)).count());
|
||||||
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Out.DESCRIPTION)).count());
|
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Out.DESCRIPTION)).count());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user