use of de.neemann.digital.analyse.expression.Variable in project Digital by hneemann.
the class SimplifyTest method testSimplify2.
public void testSimplify2() throws Exception, FormatterException {
Variable a = v("a");
Variable b = v("b");
Expression e = and(or(a, b), a);
Expression s = QuineMcCluskey.simplify(e);
assertEquals("a", FormatToExpression.FORMATTER_UNICODE.format(s));
}
use of de.neemann.digital.analyse.expression.Variable in project Digital by hneemann.
the class TableReducerTest method testReduce2.
public void testReduce2() {
List<Variable> vars = new ArrayList<>();
vars.add(a);
vars.add(b);
vars.add(c);
vars.add(d);
Expression ex = and(a, c, d);
ContextFiller cf = new ContextFiller(vars);
BoolTableExpression bte = new BoolTableExpression(ex, cf);
TableReducer tr = new TableReducer(vars, bte);
assertTrue(tr.canReduce());
vars = tr.getVars();
assertEquals(3, vars.size());
assertEquals(a, vars.get(0));
assertEquals(c, vars.get(1));
assertEquals(d, vars.get(2));
}
use of de.neemann.digital.analyse.expression.Variable in project Digital by hneemann.
the class TableReducerTest method testReduce.
public void testReduce() {
List<Variable> vars = new ArrayList<>();
vars.add(a);
vars.add(b);
vars.add(c);
vars.add(d);
Expression ex = and(a, b, c);
ContextFiller cf = new ContextFiller(vars);
BoolTableExpression bte = new BoolTableExpression(ex, cf);
TableReducer tr = new TableReducer(vars, bte);
assertTrue(tr.canReduce());
vars = tr.getVars();
assertEquals(3, vars.size());
assertEquals(a, vars.get(0));
assertEquals(b, vars.get(1));
assertEquals(c, vars.get(2));
}
use of de.neemann.digital.analyse.expression.Variable in project Digital by hneemann.
the class ATF1502CuplExporterTest method testCUPLExporter.
public void testCUPLExporter() throws Exception {
Variable y0 = new Variable("Y_0");
Variable y1 = new Variable("Y_1");
// counter
Expression y0s = not(y0);
Expression y1s = or(and(not(y0), y1), and(y0, not(y1)));
ATF150xCuplExporter ce = ATFDevice.ATF1502PLCC44.getCuplExporter("user", null);
ce.getPinMapping().parseString("Y_0=4;Y_1=5;A=6");
ce.setProjectName("test");
ce.getBuilder().addSequential("Y_0", y0s).addSequential("Y_1", y1s).addCombinatorial("A", and(y0, y1));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ce.writeTo(baos);
assertEquals("Name test ;\r\n" + "PartNo 00 ;\r\n" + "Date unknownDate ;\r\n" + "Revision 01 ;\r\n" + "Designer user ;\r\n" + "Company unknown ;\r\n" + "Assembly None ;\r\n" + "Location unknown ;\r\n" + "Device f1502ispplcc44 ;\r\n" + "\r\n" + "ar = 'b'0 ;\r\n" + "\r\n" + "/* inputs */\r\n" + "PIN 43 = CLK;\r\n" + "\r\n" + "/* outputs */\r\n" + "PIN 4 = Y_0;\r\n" + "PIN 5 = Y_1;\r\n" + "PIN 6 = A;\r\n" + "\r\n" + "/* sequential logic */\r\n" + "Y_0.D = !Y_0;\r\n" + "Y_0.ck = CLK ;\r\n" + "Y_0.ar = ar ;\r\n" + "Y_1.D = (!Y_0 & Y_1) # (Y_0 & !Y_1);\r\n" + "Y_1.ck = CLK ;\r\n" + "Y_1.ar = ar ;\r\n" + "\r\n" + "/* combinatorial logic */\r\n" + "A = Y_0 & Y_1;\r\n", baos.toString());
}
use of de.neemann.digital.analyse.expression.Variable in project Digital by hneemann.
the class Gal16V8CuplExporterTest method testCUPLBuilderInvalidVars.
public void testCUPLBuilderInvalidVars() throws Exception {
// D is not allowed in CUPL
Variable y0 = new Variable("D");
Expression y0s = not(y0);
try {
new CuplExporter("user", new Date(0)).setProjectName("test").getBuilder().addSequential("Y_0", y0s);
fail();
} catch (RuntimeException e) {
assertTrue(true);
}
}
Aggregations