diff --git a/src/main/dig/sequential/conway/cellLUT.dig b/src/main/dig/sequential/conway/cellLUT.dig
index 26869a921..c5d96885b 100644
--- a/src/main/dig/sequential/conway/cellLUT.dig
+++ b/src/main/dig/sequential/conway/cellLUT.dig
@@ -18,7 +18,7 @@ sehen Sie sich die Datei discrete.dig an.}}
Data
- 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,1,1,1,1,0,0,0,0,0,1,0,1,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,1,1,1,1,0,0,0,0,0,1,0,1,0,
1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,1,1,1,1,0,1,
0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,1,
@@ -117,16 +117,6 @@ Val genutzt um die Zelle zu initialisieren.}}
-
- In
-
-
- Label
- C
-
-
-
-
Out
@@ -142,6 +132,16 @@ Val genutzt um die Zelle zu initialisieren.}}
+
+ Clock
+
+
+ Label
+ C
+
+
+
+
In
diff --git a/src/main/java/de/neemann/digital/builder/circuit/CircuitBuilder.java b/src/main/java/de/neemann/digital/builder/circuit/CircuitBuilder.java
index b6986559f..49df34893 100644
--- a/src/main/java/de/neemann/digital/builder/circuit/CircuitBuilder.java
+++ b/src/main/java/de/neemann/digital/builder/circuit/CircuitBuilder.java
@@ -205,15 +205,25 @@ public class CircuitBuilder implements BuilderInterface {
}
private Fragment createFragment(Expression expression) throws BuilderException {
- boolean lutNeeded = true;
- if (expression instanceof Variable)
- lutNeeded = false;
- else if (expression instanceof Not && ((Not) expression).getExpression() instanceof Variable)
- lutNeeded = false;
+ if (useLUT) {
+ if (expression instanceof Variable)
+ return createBasicFragment(expression);
+
+ if (expression instanceof Not && ((Not) expression).getExpression() instanceof Variable)
+ return createBasicFragment(expression);
+
+ if (expression instanceof Operation) {
+ boolean allVars = true;
+ for (Expression ex : ((Operation) expression).getExpressions()) {
+ if (!(ex instanceof Variable || (ex instanceof Not && ((Not) ex).getExpression() instanceof Variable)))
+ allVars = false;
+ }
+ if (allVars)
+ return createBasicFragment(expression);
+ }
- if (useLUT && lutNeeded)
return createLutFragment(expression);
- else
+ } else
return createBasicFragment(expression);
}