| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-17 10:13:31 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-17 10:13:31 +0200 |
| commit | 3e019d57fab57afe7aad373385f32a23bd178941 (patch) | |
| tree | c11e3440e4f199c8da54e649f01f9598df87e46b /instr-to-kodkod/src/Main.java | |
Initial commit.
Diffstat (limited to 'instr-to-kodkod/src/Main.java')
| -rw-r--r-- | instr-to-kodkod/src/Main.java | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/instr-to-kodkod/src/Main.java b/instr-to-kodkod/src/Main.java new file mode 100644 index 0000000..d692ecd --- /dev/null +++ b/instr-to-kodkod/src/Main.java @@ -0,0 +1,82 @@ +/* FIXME: Finer imports */ +import kodkod.ast.*; + +import kodkod.engine.*; +import kodkod.engine.config.*; +import kodkod.engine.satlab.*; + +import kodkod.instance.*; +public class Main +{ + private static Formula get_formula (final VHDLModel model) + { + final Variable w; + + w = Variable.unary("w"); + + return + w.join + ( + model.get_predicate_as_relation("is_accessed_by") + ).no().forSome(w.oneOf(model.get_type_as_relation("waveform"))); + } + + public static void main (final String... args) + { + final VHDLModel model; + + final Universe univ; + final TupleFactory tf; + final Bounds bounds; + + final Solver solver; + final Solution sol; + + if (args.length != 1) + { + System.out.println("Use: java Main <instructions_file>"); + + return; + } + + model = new VHDLModel(); + + try + { + VHDLLevel.add_to_model(model, "./structural_level.data"); + } + catch (final Exception e) + { + System.err.println("[E] Could not load structural level:"); + e.printStackTrace(); + + return; + } + + try + { + model.parse_file(args[0]); + } + catch (final Exception e) + { + System.err.println("[E] Could not load instructions:"); + e.printStackTrace(); + + return; + } + + univ = new Universe(model.get_atoms()); + tf = univ.factory(); + bounds = new Bounds(univ); + + model.add_to_bounds(bounds, tf); + + solver = new Solver(); + solver.options().setSolver(SATFactory.DefaultSAT4J); + solver.options().setReporter(new ConsoleReporter()); + + sol = solver.solve(get_formula(model), bounds); + + System.out.println(sol); + } +} |


