diff --git a/fuzzers/011-ffconfig/generate.py b/fuzzers/011-ffconfig/generate.py index 04700fa2..91f0dbc7 100644 --- a/fuzzers/011-ffconfig/generate.py +++ b/fuzzers/011-ffconfig/generate.py @@ -45,10 +45,10 @@ with open("design_%s.txt" % sys.argv[1], "r") as f: if site not in data: data[site] = dict() - data[site]["%s.INIT" % bel] = init - data[site]["%s.CINV" % bel] = cinv - data[site]["%s.DINV" % bel] = dinv - data[site]["%s.RINV" % bel] = rinv + data[site]["%s.ZINI" % bel] = 1-init + # data[site]["%s.CINV" % bel] = cinv + # data[site]["%s.DINV" % bel] = dinv + # data[site]["%s.RINV" % bel] = rinv ################################################# diff --git a/htmlgen/htmlgen.py b/htmlgen/htmlgen.py index 412a0226..937c249c 100644 --- a/htmlgen/htmlgen.py +++ b/htmlgen/htmlgen.py @@ -139,6 +139,14 @@ for segtype in segbits.keys(): m = re.search(r"(.)LUT.INIT\[(..)\]", bit_name) label = m.group(1) + m.group(2) + if re.search(r"\.[ABCD]5?FF\.", bit_name): + bgcolor = "#aaffaa" + m = re.search(r"\.([ABCD]5?)FF\.([A-Z]+)", bit_name) + if m.group(2) == "ZINI": + label = m.group(1) + "Z" + else: + label = m.group(1) + "?" + print("%s" % (bgcolor, "\n".join(title), label), file=f) print("", file =f) diff --git a/tools/segmatch.cc b/tools/segmatch.cc index b798bb8d..3ad07382 100644 --- a/tools/segmatch.cc +++ b/tools/segmatch.cc @@ -15,6 +15,8 @@ using std::tuple; using std::vector; using std::string; +bool mode_inv = false; + int num_bits = 0, num_tags = 0; map bit_ids, tag_ids; vector bit_ids_r, tag_ids_r; @@ -84,6 +86,26 @@ void read_input(std::istream &f, std::string filename) tags.resize(tag_idx+1); tags[tag_idx] = true; + + if (mode_inv) + { + auto &inv_tags = token == "1" ? segdata_tags0(*segptr) : segdata_tags1(*segptr); + + token = tag_ids_r.at(tag_idx) + "__INV"; + + if (tag_ids.count(token) == 0) { + tag_ids[token] = num_tags++; + tag_ids_r.push_back(token); + } + + int inv_tag_idx = tag_ids.at(token); + + if (int(inv_tags.size()) <= inv_tag_idx) + inv_tags.resize(inv_tag_idx+1); + + inv_tags[inv_tag_idx] = true; + } + continue; } @@ -120,12 +142,15 @@ int main(int argc, char **argv) const char *outfile = nullptr; int opt; - while ((opt = getopt(argc, argv, "o:")) != -1) + while ((opt = getopt(argc, argv, "io:")) != -1) switch (opt) { case 'o': outfile = optarg; break; + case 'i': + mode_inv = true; + break; default: goto help; } @@ -138,6 +163,9 @@ help: fprintf(stderr, " -o \n"); fprintf(stderr, " set output file\n"); fprintf(stderr, "\n"); + fprintf(stderr, " -i\n"); + fprintf(stderr, " add inverted tags\n"); + fprintf(stderr, "\n"); return 1; }