in GAM16v8 synthesis a combinatorial which is a simple variable is ignored!

This commit is contained in:
hneemann 2016-06-01 14:16:56 +02:00
parent f8b42d95cf
commit c0cfc0d941
2 changed files with 16 additions and 3 deletions

View File

@ -143,6 +143,9 @@ public class Gal16v8CuplExporter implements ExpressionExporter<Gal16v8CuplExport
@Override
public BuilderCollector addCombinatorial(String name, Expression expression) throws BuilderException {
if (expression instanceof Variable)
return this; // ignore simple variables!
expression.traverse(notAllowedVariablesVisitor);
notAllowedVariablesVisitor.check(name);
return super.addCombinatorial(name, expression);

View File

@ -1,7 +1,9 @@
package de.neemann.digital.builder.Gal16v8;
import de.neemann.digital.analyse.expression.Expression;
import de.neemann.digital.analyse.expression.Variable;
import de.neemann.digital.builder.BuilderCollector;
import de.neemann.digital.builder.BuilderException;
import de.neemann.digital.builder.ExpressionExporter;
import de.neemann.digital.builder.PinMap;
import de.neemann.digital.builder.jedec.FuseMap;
@ -41,7 +43,15 @@ public class Gal16v8JEDECExporter implements ExpressionExporter<Gal16v8JEDECExpo
map.setFuse(i, true);
filler = new FuseMapFiller(map, 16);
builder = new BuilderCollector();
builder = new BuilderCollector() {
@Override
public BuilderCollector addCombinatorial(String name, Expression expression) throws BuilderException {
if (expression instanceof Variable)
return this; // a simple variable is ignored!
else
return super.addCombinatorial(name, expression);
}
};
pinMap = new PinMap()
.setAvailInputs(2, 3, 4, 5, 6, 7, 8, 9)
.setAvailOutputs(12, 13, 14, 15, 16, 17, 18, 19);
@ -119,7 +129,7 @@ public class Gal16v8JEDECExporter implements ExpressionExporter<Gal16v8JEDECExpo
if (!registered) {
// turn on unused AC1(n) bits
for (int i : pinMap.getUnusedOutputs())
map.setFuse(AC1+(19-i));
map.setFuse(AC1 + (19 - i));
}