fixed an issue in creating a fsm with constant functions and D ff

This commit is contained in:
hneemann 2025-05-26 18:15:17 +02:00
parent 1b3bd04e6f
commit ff32d2d5bd
2 changed files with 8 additions and 4 deletions

View File

@ -58,6 +58,7 @@ public class CircuitBuilder implements BuilderInterface<CircuitBuilder> {
private int pos;
private boolean useLUT;
private boolean useJKff;
private boolean useDWithConst;
private ModelAnalyserInfo mai;
private int lutNumber;
private boolean resolveLocalVars;
@ -82,6 +83,7 @@ public class CircuitBuilder implements BuilderInterface<CircuitBuilder> {
public CircuitBuilder(ShapeFactory shapeFactory, ArrayList<Variable> varOrdering) {
this.shapeFactory = shapeFactory;
this.useJKff = false;
this.useDWithConst = false;
this.useLUT = false;
desiredVarOrdering = varOrdering;
variableVisitor = new VariableVisitor();
@ -226,9 +228,11 @@ public class CircuitBuilder implements BuilderInterface<CircuitBuilder> {
if (useDff) {
Fragment fr = createFragment(expression);
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);
else {
if (expression instanceof Constant)
useDWithConst = true;
FragmentVisualElement ff = new FragmentVisualElement(FlipflopD.DESCRIPTION, shapeFactory)
.setAttr(Keys.LABEL, name)
.setAttr(Keys.DEFAULT, initValue);
@ -698,7 +702,7 @@ public class CircuitBuilder implements BuilderInterface<CircuitBuilder> {
if (p.y > yMax) yMax = p.y;
}
x -= SIZE;
if (useJKff) x -= SIZE;
if (useJKff || useDWithConst) x -= SIZE;
int yPos = yMin - SIZE * 3;
if (useJKff) yPos = -SIZE;

View File

@ -184,7 +184,7 @@ public class CircuitBuilderTest extends TestCase {
.createCircuit();
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(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Const.DESCRIPTION)).count());
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Out.DESCRIPTION)).count());
@ -199,7 +199,7 @@ public class CircuitBuilderTest extends TestCase {
.createCircuit();
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(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Const.DESCRIPTION)).count());
assertEquals(2, el.stream().filter(visualElement -> visualElement.equalsDescription(Out.DESCRIPTION)).count());