diff options
author | David Shah <dave@ds0.me> | 2019-06-24 22:03:51 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-24 22:03:51 +0100 |
commit | 76ff7919132a58971b197a40e7fba119f0b021f5 (patch) | |
tree | 89333f6eb6e55231719b53000d31f1381c1fb4a6 | |
parent | 138d7308dc113134d056aeee4445f93cd5000e62 (diff) | |
parent | d49eb2ba40a4c1eb429d67c811c5a5ebc1c22015 (diff) | |
download | nextpnr-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
-rw-r--r-- | json/jsonparse.cc | 19 |
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; } |