aboutsummaryrefslogtreecommitdiffstats
path: root/json
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-06-24 22:03:51 +0100
committerGitHub <noreply@github.com>2019-06-24 22:03:51 +0100
commit76ff7919132a58971b197a40e7fba119f0b021f5 (patch)
tree89333f6eb6e55231719b53000d31f1381c1fb4a6 /json
parent138d7308dc113134d056aeee4445f93cd5000e62 (diff)
parentd49eb2ba40a4c1eb429d67c811c5a5ebc1c22015 (diff)
downloadnextpnr-76ff7919132a58971b197a40e7fba119f0b021f5.tar.gz
nextpnr-76ff7919132a58971b197a40e7fba119f0b021f5.tar.bz2
nextpnr-76ff7919132a58971b197a40e7fba119f0b021f5.zip
Merge pull request #294 from YosysHQ/eddie/whiteboxes
Changes to cope with YosysHQ/yosys#943
Diffstat (limited to 'json')
-rw-r--r--json/jsonparse.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/json/jsonparse.cc b/json/jsonparse.cc
index 0f229aca..d463d8ce 100644
--- a/json/jsonparse.cc
+++ b/json/jsonparse.cc
@@ -285,7 +285,7 @@ void vcc_net(Context *ctx, NetInfo *net)
// true, false otherwise
bool is_blackbox(JsonNode *node)
{
- JsonNode *attr_node, *bbox_node;
+ JsonNode *attr_node, *bbox_node = nullptr, *wbox_node = nullptr;
if (node->data_dict.count("attributes") == 0)
return false;
@@ -296,14 +296,19 @@ bool is_blackbox(JsonNode *node)
return false;
if (GetSize(attr_node->data_dict) == 0)
return false;
- if (attr_node->data_dict.count("blackbox") == 0)
+ if (attr_node->data_dict.count("blackbox"))
+ bbox_node = attr_node->data_dict.at("blackbox");
+ if (attr_node->data_dict.count("whitebox"))
+ wbox_node = attr_node->data_dict.at("whitebox");
+ if (bbox_node == NULL && wbox_node == NULL)
return false;
- bbox_node = attr_node->data_dict.at("blackbox");
- if (bbox_node == NULL)
+ if (bbox_node && bbox_node->type != 'N')
+ log_error("JSON module blackbox attribute value is not a number\n");
+ if (bbox_node && bbox_node->data_number == 0)
return false;
- if (bbox_node->type != 'N')
- log_error("JSON module blackbox is not a number\n");
- if (bbox_node->data_number == 0)
+ if (wbox_node && wbox_node->type != 'N')
+ log_error("JSON module whitebox attribute value is not a number\n");
+ if (wbox_node && wbox_node->data_number == 0)
return false;
return true;
}