This is the prototype repository for Embedded Design Generation, a methodology that automates much of the embedded design process through judicious use of existing constraint solvers like Z3.
Our full appendix for the SCF 2017 paper, including the paper, code and details of experiments, can be found here.
A few major options here:
- Default: Works on Win, Mac, and Linux. Creates a VM that's setup to let you build the paper easily.
- LXC: Works on Linux. Instead of a full VM uses a faster OS virtualisation method. Because the host system is Linux, syscalls in the box can just be forwarded to the host OS with some additional permissions checking.
- Manual: Maybe works on Linux? Harder elsewhere.
Mostly, you just get to read the
Vagrantfile
and make sure you have all the dependencies with their correct versions.
- (Default,LXC) Install Vagrant
- (LXC) Install LXC and LXC-Provider
- Install LXC
- Ubuntu :
sudo apt-get install lxc
- Other : Install Instructions
- Ubuntu :
- Install Tar
- Ubuntu :
sudo apt-get install tar
- Ubuntu :
- Install Redir
- Ubuntu :
sudo apt-get install redir
- Ubuntu :
- Install Bridge-Utils
- Ubuntu :
sudo apt-get install brigde-utils
- Ubuntu :
- Install Vagrant-LXC
vagrant plugin install vagrant-lxc
- Install LXC
- (Default,LXC) Setup a VM/Container
- Open terminal in project directory.
- Tell Vagrant to do all the work:
- (Default)
vagrant up
- (LXC)
vagrant up --provider=lxc
- (Default)
- Enter password if necessary.
- Go do something else for a while, the system is installing TexLive.
- (Manual) Setup the Build Env
- Read the
Vagrantfile
, everything in aconfigure.vm.provision
block is something you have to replicate. Relevant docs for Vagrant are here. - List of Dependencies (May be inaccurate):
- Git : Source control
- TODO : Finish getting full list of dependencies
- Set everything up yourself.
- Good luck, you'll need it.
- You should read the Vagrantfile.
- Read the
- (Default,LXC) Start VM/Container
- (Default)
vagrant up
- (LXC)
vagrant up --provider=LXC
- (Default)
- Opening Terminal into Build Environment
- (Default,LXC)
vagrant ssh
- (Manual) I dunno, you set it up. Figure it out.
- (Default,LXC)
- TODO : Instructions for building withing the dev env.
TODO : Add tool use instructions and command line flags.
w/ fish shell
stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" ; and stack exec edg-prototype -- simon -o output-data.tmp.edg -g output-graph.tmp.png -s +RTS -p -h