aboutsummaryrefslogtreecommitdiffstats
path: root/ice40
diff options
context:
space:
mode:
authorZipCPU <dgisselq@ieee.org>2018-06-06 14:44:54 -0400
committerZipCPU <dgisselq@ieee.org>2018-06-06 14:44:54 -0400
commit16b9a2f1b5ad10aa0b426183b4e071d3afb09e88 (patch)
treed38578150224f95b8ce539ad2db7e32c92d397ac /ice40
parent5e463b8543585e4e1d2d3f80a2e32142015a73dd (diff)
downloadnextpnr-16b9a2f1b5ad10aa0b426183b4e071d3afb09e88.tar.gz
nextpnr-16b9a2f1b5ad10aa0b426183b4e071d3afb09e88.tar.bz2
nextpnr-16b9a2f1b5ad10aa0b426183b4e071d3afb09e88.zip
Attempt to add JSON parser--not working yet w/ build system
Diffstat (limited to 'ice40')
-rw-r--r--ice40/main.cc38
1 files changed, 26 insertions, 12 deletions
diff --git a/ice40/main.cc b/ice40/main.cc
index 185c7f53..9295bde4 100644
--- a/ice40/main.cc
+++ b/ice40/main.cc
@@ -20,9 +20,11 @@
#include "mainwindow.h"
#include <QApplication>
#include <iostream>
+#include <fstream>
#include "version.h"
#include <boost/program_options.hpp>
#include "pybindings.h"
+#include "jsonparse.h"
void svg_dump_el(const GraphicElement &el)
{
@@ -52,6 +54,7 @@ int main(int argc, char *argv[])
options.add_options()("gui","start gui");
options.add_options()("svg","dump SVG file");
options.add_options()("file", po::value<std::string>(), "python file to execute");
+ options.add_options()("json", po::value<std::string>(), "JSON design file to ingest");
options.add_options()("version,v","show version");
options.add_options()("lp384","set device type to iCE40LP384");
options.add_options()("lp1k","set device type to iCE40LP1K");
@@ -66,19 +69,20 @@ int main(int argc, char *argv[])
po::variables_map vm;
try {
po::parsed_options parsed = po::command_line_parser(argc, argv).
- options(options).
- positional(pos).
- run();
+ options(options).
+ positional(pos).
+ run();
- po::store(parsed, vm);
+ po::store(parsed, vm);
- po::notify(vm);
+ po::notify(vm);
+ }
+
+ catch(std::exception& e)
+ {
+ std::cout << e.what() << "\n";
+ return 1;
}
- catch(std::exception& e)
- {
- std::cout << e.what() << "\n";
- return 1;
- }
if (vm.count("help") || argc == 1)
{
@@ -90,7 +94,9 @@ int main(int argc, char *argv[])
if (vm.count("version"))
{
- std::cout << basename(argv[0]) << " -- Next Generation Place and Route (git sha1 " GIT_COMMIT_HASH_STR ")\n";
+ std::cout << basename(argv[0])
+ << " -- Next Generation Place and Route (git sha1 "
+ GIT_COMMIT_HASH_STR ")\n";
return 1;
}
@@ -199,11 +205,19 @@ int main(int argc, char *argv[])
std::cout << "</svg>\n";
}
+ if (vm.count("json"))
+ {
+ std::string filename = vm["json"].as<std::string>();
+ std::istream *f = new std::ifstream(filename);
+
+ parse_json_file(f, filename, &design);
+ }
+
if (vm.count("file"))
{
std::string filename = vm["file"].as<std::string>();
execute_python_file(argv[0],filename.c_str());
- }
+ }
return 0;
}