aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2019-06-21 19:47:25 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2019-06-21 19:47:25 +0200
commit50e72210772f3a1c34f5fe80b19c65f6d304b71a (patch)
tree212cf3f018ae88c7a1b3d288666b9a94d62435c9
parente66481497155edd8af855df268befeabe3e87f7e (diff)
downloadyosys-50e72210772f3a1c34f5fe80b19c65f6d304b71a.tar.gz
yosys-50e72210772f3a1c34f5fe80b19c65f6d304b71a.tar.bz2
yosys-50e72210772f3a1c34f5fe80b19c65f6d304b71a.zip
Add upto and offset to JSON ports
-rw-r--r--backends/json/json.cc4
-rw-r--r--frontends/json/jsonparse.cc12
2 files changed, 16 insertions, 0 deletions
diff --git a/backends/json/json.cc b/backends/json/json.cc
index 1781a28cd..eb59e5eba 100644
--- a/backends/json/json.cc
+++ b/backends/json/json.cc
@@ -127,6 +127,10 @@ struct JsonWriter
f << stringf(" %s: {\n", get_name(n).c_str());
f << stringf(" \"direction\": \"%s\",\n", w->port_input ? w->port_output ? "inout" : "input" : "output");
f << stringf(" \"bits\": %s\n", get_bits(w).c_str());
+ if (w->start_offset)
+ f << stringf(" \"offset\": %d,\n", w->start_offset);
+ if (w->upto)
+ f << stringf(" \"upto\": 1,\n");
f << stringf(" }");
first = false;
}
diff --git a/frontends/json/jsonparse.cc b/frontends/json/jsonparse.cc
index b74d41dd2..f5ae8eb72 100644
--- a/frontends/json/jsonparse.cc
+++ b/frontends/json/jsonparse.cc
@@ -292,6 +292,18 @@ void json_import(Design *design, string &modname, JsonNode *node)
if (port_wire == nullptr)
port_wire = module->addWire(port_name, GetSize(port_bits_node->data_array));
+ if (port_node->data_dict.count("upto") != 0) {
+ JsonNode *val = port_node->data_dict.at("upto");
+ if (val->type == 'N')
+ port_wire->upto = val->data_number != 0;
+ }
+
+ if (port_node->data_dict.count("offset") != 0) {
+ JsonNode *val = port_node->data_dict.at("offset");
+ if (val->type == 'N')
+ port_wire->start_offset = val->data_number;
+ }
+
if (port_direction_node->data_string == "input") {
port_wire->port_input = true;
} else