Completed tests for genfasm.
Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
diff --git a/utils/fasm/test/make_blif.py b/utils/fasm/test/make_blif.py
new file mode 100755
index 0000000..a75d338
--- /dev/null
+++ b/utils/fasm/test/make_blif.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+"""
+This is an utility script that generates a BLIF file with arbitrary number of
+5 and 6 input LUTs. Along with LUTs their initialization content is placed
+in a comment just before the '.names' directive.
+"""
+import random
+
+def main():
+
+ lut_count = 35
+
+ print('.model top')
+ print('.inputs ' + ' '.join(['di{}'.format(i) for i in range(6)]))
+ print('.outputs ' + ' '.join(['do{}'.format(i) for i in range(lut_count)]))
+
+ for i in range(lut_count):
+ n = random.choice((5, 6))
+ ones = set([''.join([random.choice('01') for i in range(n)]) for j in range(2**n)])
+
+ init = 0
+ for one in ones:
+ idx = 0
+ for j, c in enumerate(one):
+ if c == '1':
+ idx |= (1 << (len(one)-1-j))
+ init |= 1 << idx
+
+ init_str = ''.join(['1' if init & (1<<j) else '0' for j in reversed(range(2**n))])
+
+ print('# {}\'b{}'.format(2**n, init_str))
+ print('.names ' + ' '.join(['di{}'.format(j) for j in range(n)]) + ' do{} '.format(i))
+ for one in ones:
+ print('{} 1'.format(one))
+
+if __name__ == "__main__":
+ main()
diff --git a/utils/fasm/test/test_fasm.cpp b/utils/fasm/test/test_fasm.cpp
index af7b1c8..8faf630 100644
--- a/utils/fasm/test/test_fasm.cpp
+++ b/utils/fasm/test/test_fasm.cpp
@@ -9,6 +9,9 @@
#include "rr_graph_writer.h"
#include <sstream>
#include <fstream>
+#include <regex>
+#include <cmath>
+#include <algorithm>
static constexpr const char kArchFile[] = "test_fasm_arch.xml";
static constexpr const char kRrGraphFile[] = "test_fasm_rrgraph.xml";
@@ -20,7 +23,35 @@
namespace {
+// ============================================================================
+
using Catch::Matchers::Equals;
+using Catch::Matchers::StartsWith;
+using Catch::Matchers::Contains;
+
+class RegexMatcher : public Catch::MatcherBase<std::string> {
+
+ std::string m_RegexStr;
+ std::regex m_Regex;
+
+public:
+
+ RegexMatcher (const std::string& a_Regex) :
+ m_RegexStr(a_Regex), m_Regex(a_Regex) {}
+
+ bool match(const std::string& str) const override {
+ std::smatch match;
+ return std::regex_match(str, match, m_Regex);
+ }
+
+ virtual std::string describe() const override {
+ return "does not match the regex '" + m_RegexStr + "'";
+ }
+};
+
+inline RegexMatcher MatchesRegex (const std::string& a_Regex) {
+ return RegexMatcher(a_Regex);
+}
// ============================================================================
@@ -61,6 +92,86 @@
// ============================================================================
+/*
+VPR may rearrange LUT inputs and modify its content accordingly. This function
+compares two LUT contents through applying every possible bit permutation. If
+one matches then those two LUT contents are considered to define the same LUT
+*/
+bool match_lut_init(const std::string& a_BlifInit, const std::string& a_FasmInit) {
+
+ // Strings differ in length, no match possible
+ if (a_BlifInit.length() != a_FasmInit.length()) {
+ return false;
+ }
+
+ // Skip "nn'b" at the beginning
+ const std::string blifInit = a_BlifInit.substr(4);
+ const std::string fasmInit = a_FasmInit.substr(4);
+
+ // LUT bits
+ size_t N = (size_t)log2f(blifInit.length());
+
+ // Decode indices of individual ones.
+ std::vector<int> blifOnes;
+ std::vector<int> fasmOnes;
+ for (size_t i=0; i<blifInit.length(); ++i) {
+ size_t bit = blifInit.length() - 1 - i;
+ if (blifInit[bit] == '1') {
+ blifOnes.push_back(i);
+ }
+ if (fasmInit[bit] == '1') {
+ fasmOnes.push_back(i);
+ }
+ }
+
+ // Must have the same number of ones. If not the no match possible.
+ if (blifOnes.size() != fasmOnes.size()) {
+ return false;
+ }
+
+ // Initialize bit indices for permutations
+ std::vector<int> indices(N);
+ for (size_t i=0; i<N; ++i) {
+ indices[i] = i;
+ }
+
+ // Check every possible permutation of LUT address bits
+ do {
+
+ // Compare ones positions
+ bool match = true;
+ for (size_t i=0; i<blifOnes.size(); ++i) {
+
+ // Remap position according to current index permutation
+ size_t fasmOne = 0;
+ for (size_t k=0; k<indices.size(); ++k) {
+ if (blifOnes[i] & (1<<k)) {
+ fasmOne |= (1<<indices[k]);
+ }
+ }
+
+ // If doesn't match then no need to check further.
+ if (std::find(fasmOnes.begin(), fasmOnes.end(), fasmOne) == fasmOnes.end())
+ {
+ match = false;
+ break;
+ }
+ }
+
+ // Got a match
+ if (match) {
+ return true;
+ }
+
+ } while (std::next_permutation(indices.begin(), indices.end()));
+
+ return false;
+}
+
+TEST_CASE("match_lut_init", "[fasm]") {
+ CHECK(match_lut_init("16'b0000000011111111", "16'b0000111100001111"));
+}
+
TEST_CASE("fasm_integration_test", "[fasm]") {
{
t_vpr_setup vpr_setup;
@@ -122,8 +233,8 @@
NetlistWalker nl_walker(visitor);
nl_walker.walk();
+ // Write fasm to file
fasm_string.seekg(0);
-
std::ofstream fasm_file("output.fasm", std::ios_base::out);
while(fasm_string) {
std::string line;
@@ -131,10 +242,39 @@
fasm_file << line << std::endl;
}
+ // Load LUTs from the BLIF (comments)
+ std::vector<std::string> lut_defs;
+ std::string lut_def;
+ std::ifstream blif_file("wire.eblif", std::ios_base::in);
+ while (blif_file) {
+ std::string line;
+ std::getline(blif_file, line);
+
+ if (!line.length()) {
+ continue;
+ }
+
+ if (line.find("#") != std::string::npos) {
+ auto init_pos = line.find("#");
+ lut_def = line.substr(init_pos+2);
+ continue;
+ }
+
+ if (line.find(".names") != std::string::npos) {
+ REQUIRE(lut_def.length() > 0);
+ lut_defs.push_back(lut_def);
+ //fprintf(stderr, "'%s'\n", lut_def.c_str());
+ lut_def = "";
+ continue;
+ }
+ }
+
+ // Verify fasm
fasm_string.clear();
fasm_string.seekg(0);
std::set<std::tuple<int, int, short>> routing_edges;
+ std::set<std::tuple<int, int>> occupied_locs;
bool found_lut5 = false;
bool found_lut6 = false;
bool found_mux1 = false;
@@ -142,11 +282,11 @@
bool found_mux3 = false;
while(fasm_string) {
// Should see something like:
- // CLB.FLE0.N2_LUT5
- // CLB.FLE8.LUT5_1.LUT[31:0]=32'b00000000000000010000000000000000
- // CLB.FLE9.OUT_MUX.LUT
- // CLB.FLE9.DISABLE_FF
- // CLB.FLE9.LUT6[63:0]=64'b0000000000000000000000000000000100000000000000000000000000000000
+ // CLB.FLE0_X1Y1.N2_LUT5
+ // PLB.FLE1_X2Y1.LUT5_1.LUT[31:0]=32'b00000000000000010000000000000000
+ // FLE0_X3Y1.OUT_MUX.LUT
+ // SLICE.FLE1_X4Y1.DISABLE_FF
+ // CLB.FLE0_X1Y3.LUT6[63:0]=64'b0000000000000000000000000000000100000000000000000000000000000000
// 3634_3690_0
std::string line;
std::getline(fasm_string, line);
@@ -155,29 +295,114 @@
continue;
}
- if(!found_mux1 && line.find(".OUT_MUX.LUT") != std::string::npos) {
- found_mux1 = true;
- }
- if(!found_mux2 && line.find(".DISABLE_FF") != std::string::npos) {
- found_mux2 = true;
- }
- if(!found_mux3 && line.find(".IN0") != std::string::npos) {
- found_mux3 = true;
+ // Look for muxes
+ {
+ std::smatch m;
+ if (std::regex_match(line, m, std::regex(".*FLE\\d?_X\\d+Y\\d+.OUT_MUX.LUT$"))) {
+ found_mux1 = true;
+ }
+ if (std::regex_match(line, m, std::regex(".*FLE\\d?_X\\d+Y\\d+.DISABLE_FF$"))) {
+ found_mux2 = true;
+ }
+ if (std::regex_match(line, m, std::regex(".*FLE\\d?_X\\d+Y\\d+.IN\\d{1}$"))) {
+ found_mux3 = true;
+ }
}
- if(line.find("CLB") != std::string::npos || line.find("FLE") != std::string::npos) {
+ if(line.find("FLE") != std::string::npos) {
+
+ // Check correlation with top-level prefixes with X coordinates
+ // as defined in the architecture
+ if(line.find("_X1") != std::string::npos) {
+ CHECK_THAT(line, StartsWith("CLB"));
+ }
+ if(line.find("_X2") != std::string::npos) {
+ CHECK_THAT(line, StartsWith("PLB"));
+ }
+ if(line.find("_X3") != std::string::npos) {
+ // X3 has no top-level prefix, so the intermediate one is the
+ // first
+ CHECK_THAT(line, StartsWith("FLE"));
+ }
+ if(line.find("_X4") != std::string::npos) {
+ CHECK_THAT(line, StartsWith("SLICE"));
+ }
+
+ // Check presence of LOC prefix substitutions
+ CHECK_THAT(line, MatchesRegex(".*X\\d+Y\\d+.*"));
+
+ // Extract loc from tag
+ std::smatch locMatch;
+ REQUIRE(std::regex_match(line, locMatch, std::regex(".*X(\\d+)Y(\\d+).*")));
+ REQUIRE(locMatch.size() == 3);
+ int loc_x = vtr::atoi(locMatch[1].str());
+ int loc_y = vtr::atoi(locMatch[2].str());
+ occupied_locs.insert(std::make_tuple(loc_x, loc_y));
+
+ // Check presence of ALUT_{LR} with substituted L/R
+ if(line.find("ALUT") != std::string::npos) {
+ CHECK_THAT(line, MatchesRegex(".*ALUT_[LR]{1}.*"));
+ }
+
+ // Check that all tags were substituted
+ CHECK_THAT(line, !Contains("{") && !Contains("}"));
+
+ // Check LUT
auto pos = line.find("LUT[");
if(pos != std::string::npos) {
- CHECK_THAT(line.substr(pos), Equals(
- "LUT[31:0]=32'b00000000000000010000000000000000"));
- found_lut5 = true;
+ auto str = line.substr(pos);
+ std::regex regex("LUT\\[31:0\\]=(32'b[01]{32})$");
+ std::smatch match;
+
+ if (std::regex_match(str, match, regex)) {
+ bool found = false;
+ for (auto itr=lut_defs.begin(); itr!=lut_defs.end(); itr++) {
+ if (match_lut_init(*itr, match[1].str())) {
+ found = true;
+ lut_defs.erase(itr);
+ break;
+ }
+ }
+
+ if (!found) {
+ FAIL_CHECK("LUT definition '" << match[1] << "' not found in the BLIF file!");
+ } else {
+ found_lut5 = true;
+ }
+ }
+ else {
+ FAIL_CHECK("LUT definition '" << line << "' is malformed!");
+ }
}
+ // Check LUT6
pos = line.find("LUT6[");
if(pos != std::string::npos) {
- CHECK_THAT(line.substr(pos), Equals("LUT6[63:0]=64'b0000000000000000000000000000000100000000000000000000000000000000"));
- found_lut6 = true;
+ auto str = line.substr(pos);
+ std::regex regex("LUT6\\[63:0\\]=(64'b[01]{64})$");
+ std::smatch match;
+
+ if (std::regex_match(str, match, regex)) {
+ bool found = false;
+ for (auto itr=lut_defs.begin(); itr!=lut_defs.end(); itr++) {
+ if (match_lut_init(*itr, match[1].str())) {
+ found = true;
+ lut_defs.erase(itr);
+ break;
+ }
+ }
+
+ if (!found) {
+ FAIL_CHECK("LUT definition '" << match[1] << "' not found in the BLIF file!");
+ } else {
+ found_lut6 = true;
+ }
+ }
+ else {
+ FAIL_CHECK("LUT definition '" << line << "' is malformed!");
+ }
}
+
} else {
auto parts = vtr::split(line, "_");
REQUIRE(parts.size() == 3);
@@ -190,22 +415,45 @@
}
}
+ // Verify occupied grid LOCs
+ const auto & place_ctx = g_vpr_ctx.placement();
+ for (const auto& loc: place_ctx.block_locs) {
+
+ // Do not consider "IOB" tiles. They do not have fasm features
+ // defined in the arch.
+ if (loc.loc.x < 1 || loc.loc.x > 4)
+ continue;
+ if (loc.loc.y < 1 || loc.loc.y > 4)
+ continue;
+
+ auto iter = occupied_locs.find(std::make_tuple(loc.loc.x, loc.loc.y));
+ if (iter == occupied_locs.end()) {
+ FAIL_CHECK("X" << loc.loc.x << "Y" << loc.loc.y << " not emitted!");
+ }
+ }
+
+ // Verify routes
const auto & route_ctx = g_vpr_ctx.routing();
for(const auto &trace : route_ctx.trace) {
const t_trace *head = trace.head;
while(head != nullptr) {
const t_trace *next = head->next;
- if(next != nullptr) {
+ if(next != nullptr && head->iswitch != OPEN) {
const auto next_inode = next->index;
auto iter = routing_edges.find(std::make_tuple(head->index, next_inode, head->iswitch));
- CHECK(iter != routing_edges.end());
+ if (iter == routing_edges.end()) {
+ FAIL_CHECK("source: " << head->index << " sink: " << next_inode << " switch:" << head->iswitch);
+ }
}
head = next;
}
}
+ // Verify that all LUTs defined in the BLIF file ended up in fasm
+ CHECK(lut_defs.size() == 0);
+
CHECK(found_lut5);
CHECK(found_lut6);
CHECK(found_mux1);
diff --git a/utils/fasm/test/test_fasm_arch.xml b/utils/fasm/test/test_fasm_arch.xml
index de302c6..d95321b 100644
--- a/utils/fasm/test/test_fasm_arch.xml
+++ b/utils/fasm/test/test_fasm_arch.xml
@@ -39,84 +39,100 @@
<single type="clb" priority="10" x="1" y="1">
<metadata> <meta name="fasm_placeholders">
LOC=X1Y1
+ LR=L
</meta> <meta name="fasm_prefix">CLB</meta> </metadata>
</single>
<single type="clb" priority="10" x="1" y="2">
<metadata> <meta name="fasm_placeholders">
LOC=X1Y2
+ LR=R
</meta> <meta name="fasm_prefix">CLB</meta> </metadata>
</single>
<single type="clb" priority="10" x="1" y="3">
<metadata> <meta name="fasm_placeholders">
LOC=X1Y3
+ LR=L
</meta> <meta name="fasm_prefix">CLB</meta> </metadata>
</single>
<single type="clb" priority="10" x="1" y="4">
<metadata> <meta name="fasm_placeholders">
LOC=X1Y4
+ LR=R
</meta> <meta name="fasm_prefix">CLB</meta> </metadata>
</single>
<single type="clb" priority="10" x="2" y="1">
<metadata> <meta name="fasm_placeholders">
LOC=X2Y1
+ LR=L
</meta> <meta name="fasm_prefix">PLB</meta> </metadata>
</single>
<single type="clb" priority="10" x="2" y="2">
<metadata> <meta name="fasm_placeholders">
LOC=X2Y2
+ LR=R
</meta> <meta name="fasm_prefix">PLB</meta> </metadata>
</single>
<single type="clb" priority="10" x="2" y="3">
<metadata> <meta name="fasm_placeholders">
LOC=X2Y3
+ LR=L
</meta> <meta name="fasm_prefix">PLB</meta> </metadata>
</single>
<single type="clb" priority="10" x="2" y="4">
<metadata> <meta name="fasm_placeholders">
LOC=X2Y4
+ LR=R
</meta> <meta name="fasm_prefix">PLB</meta> </metadata>
</single>
<single type="clb" priority="10" x="3" y="1">
<metadata> <meta name="fasm_placeholders">
LOC=X3Y1
+ LR=L
</meta> </metadata>
</single>
<single type="clb" priority="10" x="3" y="2">
<metadata> <meta name="fasm_placeholders">
LOC=X3Y2
+ LR=R
</meta> </metadata>
</single>
<single type="clb" priority="10" x="3" y="3">
<metadata> <meta name="fasm_placeholders">
LOC=X3Y3
+ LR=L
</meta> </metadata>
</single>
<single type="clb" priority="10" x="3" y="4">
<metadata> <meta name="fasm_placeholders">
LOC=X3Y4
+ LR=R
</meta> </metadata>
</single>
<single type="clb" priority="10" x="4" y="1">
<metadata> <meta name="fasm_placeholders">
LOC=X4Y1
+ LR=L
</meta> <meta name="fasm_prefix">SLICE</meta> </metadata>
</single>
<single type="clb" priority="10" x="4" y="2">
<metadata> <meta name="fasm_placeholders">
LOC=X4Y2
+ LR=R
</meta> <meta name="fasm_prefix">SLICE</meta> </metadata>
</single>
<single type="clb" priority="10" x="4" y="3">
<metadata> <meta name="fasm_placeholders">
LOC=X4Y3
+ LR=L
</meta> <meta name="fasm_prefix">SLICE</meta> </metadata>
</single>
<single type="clb" priority="10" x="4" y="4">
<metadata> <meta name="fasm_placeholders">
LOC=X4Y4
+ LR=R
</meta> <meta name="fasm_prefix">SLICE</meta> </metadata>
</single>
@@ -280,7 +296,7 @@
<T_clock_to_Q max="124e-12" port="ff.Q" clock="clk"/>
<metadata>
<meta name="fasm_prefix">
- ALUT
+ ALUT_{LR}
</meta>
</metadata>
</pb_type>
@@ -301,7 +317,7 @@
LUT6[63:0]
</meta>
<meta name="fasm_prefix">
- ALUT
+ ALUT_{LR}
</meta>
</metadata>
</pb_type>
diff --git a/utils/fasm/test/wire.eblif b/utils/fasm/test/wire.eblif
index c244e04..52ff88b 100644
--- a/utils/fasm/test/wire.eblif
+++ b/utils/fasm/test/wire.eblif
@@ -1,2028 +1,1193 @@
.model top
.inputs di0 di1 di2 di3 di4 di5
-.outputs do0 do1 do2 do3 do4 do5 do6 do7 do8 do9 do10 do11 do12 do13 do14 do15 do16 do17 do18 do19 do20 do21 do22 do23 do24 do25 do26 do27 do28 do29 do30 do31 do32 do33 do34 do35 do36 do37 do38 do39 do40
-.names di0 di1 di2 di3 di4 do0
-01001 1
-11010 1
-11101 1
-11011 1
-11000 1
-11001 1
-00001 1
-00100 1
-01100 1
-10100 1
-01011 1
-01011 1
-10000 1
-11110 1
-00101 1
-10101 1
-01010 1
-11011 1
-00010 1
-00110 1
-00101 1
-10000 1
-10000 1
-01010 1
-01111 1
-01001 1
-10100 1
-11010 1
-10100 1
-00111 1
-00101 1
-00100 1
-.names di0 di1 di2 di3 di4 do1
-10110 1
-11000 1
-00001 1
-00000 1
-10100 1
-00010 1
-11110 1
-11111 1
-00000 1
-11010 1
-00010 1
-00000 1
-10110 1
-11111 1
-01100 1
-00011 1
-10011 1
-01011 1
-10010 1
-10011 1
-11111 1
-01001 1
-00010 1
-01001 1
-10001 1
-00100 1
-10010 1
-10111 1
-00011 1
-00111 1
-01000 1
-01100 1
-.names di0 di1 di2 di3 di4 di5 do2
-010100 1
-001011 1
-110000 1
-111011 1
-001101 1
-000001 1
-110100 1
-100101 1
-100010 1
-100001 1
-011100 1
-111010 1
-010000 1
-010111 1
-101011 1
-001110 1
-011011 1
-001110 1
-010000 1
+.outputs do0 do1 do2 do3 do4 do5 do6 do7 do8 do9 do10 do11 do12 do13 do14 do15 do16 do17 do18 do19 do20 do21 do22 do23 do24 do25 do26 do27 do28 do29 do30 do31 do32 do33 do34
+# 64'b0111101000110011011110110011111010011011011011111101110011111101
+.names di0 di1 di2 di3 di4 di5 do0
010110 1
-000101 1
-000101 1
-001100 1
-110001 1
-110000 1
-101000 1
010010 1
-000000 1
-110010 1
-100101 1
-010011 1
-100010 1
-100100 1
-011000 1
101100 1
-101001 1
-010000 1
-101111 1
-001011 1
-111100 1
-010001 1
-011010 1
-001001 1
-101101 1
-000111 1
-100100 1
-011011 1
+111110 1
+111101 1
+010011 1
+010101 1
111001 1
-000110 1
+111011 1
+011111 1
101101 1
-011010 1
-010110 1
-011001 1
-010001 1
-011101 1
-100011 1
-010100 1
-000101 1
-110011 1
-010110 1
-101000 1
-010110 1
-110110 1
-110101 1
-.names di0 di1 di2 di3 di4 do3
-11011 1
-01110 1
-00000 1
-01010 1
-01010 1
-10111 1
-01110 1
-11011 1
-01111 1
-10011 1
-00111 1
-10110 1
-11101 1
-10011 1
-10100 1
-11100 1
-01111 1
-10110 1
-00011 1
-10010 1
-10110 1
-10011 1
-10011 1
-01101 1
-11001 1
-01011 1
-00010 1
-10001 1
-10111 1
-11110 1
-10111 1
-10001 1
-.names di0 di1 di2 di3 di4 di5 do4
-001000 1
-000100 1
-101000 1
-110110 1
-100001 1
-100010 1
+010000 1
+001110 1
+101001 1
+011011 1
+000011 1
001011 1
+100001 1
+011000 1
+100010 1
+001010 1
+000110 1
+001111 1
+011100 1
+110001 1
+001100 1
+000000 1
+100011 1
+100100 1
+010001 1
+011001 1
+100101 1
+111100 1
+000101 1
+110100 1
+000010 1
+101110 1
+000111 1
+110000 1
+110101 1
+101000 1
+101011 1
+000100 1
+# 64'b1110111100101111011111111011011100100000011010001101000111100001
+.names di0 di1 di2 di3 di4 di5 do1
+010110 1
+101100 1
+111110 1
+111101 1
+010011 1
+010101 1
+111001 1
+111011 1
+101101 1
111111 1
-010111 1
-001101 1
-110001 1
-011010 1
-101110 1
-101010 1
-110100 1
-010101 1
-001011 1
-001100 1
-010101 1
-100101 1
-100110 1
-010101 1
-100010 1
-010000 1
-100011 1
-101100 1
-101111 1
-110101 1
-101101 1
-011001 1
-011111 1
-011111 1
-011000 1
-011101 1
-010110 1
-011011 1
-001001 1
-100111 1
-101110 1
-001111 1
-011111 1
-111001 1
-101110 1
-001010 1
-000100 1
-100101 1
-010001 1
-110100 1
-101101 1
-110000 1
-011101 1
-111001 1
-101010 1
-110110 1
-110101 1
-001111 1
-101101 1
-000111 1
-011101 1
+001110 1
+101001 1
+100001 1
111010 1
-010010 1
-000101 1
-001010 1
-100111 1
-.names di0 di1 di2 di3 di4 do5
-11010 1
-00101 1
-00111 1
-01000 1
-11000 1
-11000 1
-01010 1
-00001 1
-01001 1
-10001 1
-11110 1
-10101 1
-11011 1
-01110 1
-00000 1
-11111 1
-10101 1
-01010 1
-00111 1
-11111 1
-01001 1
-01010 1
-10101 1
-11111 1
-11101 1
-01110 1
-11100 1
-11011 1
-11110 1
-00101 1
-11010 1
-00110 1
-.names di0 di1 di2 di3 di4 di5 do6
-111001 1
-000110 1
-100110 1
-001000 1
-001001 1
-101100 1
-011011 1
-001110 1
-011010 1
-101101 1
-011110 1
-100101 1
-010011 1
-001000 1
-111110 1
-010101 1
-110011 1
-101101 1
-111100 1
-100000 1
-101000 1
-111100 1
-010110 1
-000111 1
-010010 1
-101111 1
-111011 1
-101111 1
-010011 1
-100010 1
-111000 1
-111000 1
-111001 1
-101001 1
-111110 1
-000110 1
-101011 1
-101100 1
-011001 1
-101100 1
-100110 1
-010111 1
-101111 1
-010001 1
-110100 1
-011100 1
-100101 1
-010011 1
-001010 1
-000001 1
-000001 1
-001101 1
-110110 1
-101010 1
-101000 1
-001111 1
-111101 1
-110011 1
-101000 1
-110000 1
-010010 1
-101010 1
-001011 1
-001110 1
-.names di0 di1 di2 di3 di4 do7
-00001 1
-11011 1
-00001 1
-00111 1
-01010 1
-00100 1
-11111 1
-11000 1
-00000 1
-00000 1
-10101 1
-01010 1
-00111 1
-10110 1
-10000 1
-11111 1
-10110 1
-00110 1
-11100 1
-11101 1
-10010 1
-11011 1
-00100 1
-10101 1
-01001 1
-00110 1
-10110 1
-11010 1
-00110 1
-01101 1
-00110 1
-00110 1
-.names di0 di1 di2 di3 di4 di5 do8
-101110 1
-001101 1
-011100 1
-001011 1
-001001 1
-111001 1
-100001 1
-101110 1
-010100 1
-000101 1
-011111 1
-100100 1
-011101 1
-110001 1
-111001 1
-100101 1
-011110 1
110010 1
-100011 1
+100010 1
110011 1
-000001 1
-101110 1
+101010 1
+000110 1
+001111 1
+001000 1
110001 1
-010010 1
-001010 1
-001110 1
-101101 1
-100001 1
-010011 1
-101001 1
-111001 1
-000010 1
-011100 1
-111110 1
+001100 1
+000000 1
+100100 1
+100111 1
+100101 1
+100000 1
+011101 1
000101 1
+111000 1
+110000 1
+000111 1
+101110 1
+110101 1
+101000 1
+101011 1
+# 64'b0011000111100111111101101101110011110110111011111011101000011111
+.names di0 di1 di2 di3 di4 di5 do2
+011010 1
+010110 1
010010 1
+101100 1
+111101 1
+010011 1
+010101 1
+011111 1
+101101 1
+010000 1
+101001 1
+000011 1
+110110 1
+001011 1
+110010 1
+101111 1
+100010 1
+101010 1
+001101 1
+001111 1
+011100 1
+110001 1
+001100 1
+000000 1
+010001 1
+100011 1
+011001 1
+100111 1
+100100 1
+010111 1
+100110 1
+001001 1
+011110 1
+111100 1
+011101 1
+000010 1
+111000 1
+101110 1
+110000 1
+000001 1
+110101 1
+110111 1
+000100 1
+# 32'b00110101101101111100000111011011
+.names di0 di1 di2 di3 di4 do3
+10000 1
+11101 1
+00011 1
+10101 1
+01000 1
+11100 1
+01111 1
+01110 1
+10010 1
+10001 1
+11000 1
+11010 1
+00110 1
+10100 1
+00111 1
+00001 1
+00100 1
+00000 1
+10111 1
+# 32'b11011011101110011011101110000111
+.names di0 di1 di2 di3 di4 do4
+01111 1
+10100 1
+01011 1
+01101 1
+10101 1
+11111 1
+11000 1
+11011 1
+10111 1
+01100 1
+01001 1
+01000 1
+11100 1
+00111 1
+11001 1
+00001 1
+11110 1
+10000 1
+10011 1
+00010 1
+00000 1
+# 64'b1010100011111110101111011010111110010111111110111001001111111110
+.names di0 di1 di2 di3 di4 di5 do5
+011010 1
+010110 1
+101100 1
+111101 1
+010011 1
+010101 1
+111011 1
+101101 1
+011111 1
+010000 1
+111111 1
+000011 1
+110110 1
+100001 1
+011000 1
+110010 1
+100010 1
+101111 1
+101010 1
+000110 1
+110011 1
+001111 1
+011100 1
+001000 1
+110001 1
+001100 1
+010100 1
+011001 1
+010001 1
+100011 1
+100111 1
+100101 1
+010111 1
+001001 1
+100000 1
+000101 1
+110111 1
+110100 1
+000010 1
+000111 1
+000001 1
+110101 1
+101000 1
+101011 1
+000100 1
+# 64'b1101111100111100110000111000001011111101111111000111100110111111
+.names di0 di1 di2 di3 di4 di5 do6
+011010 1
+010110 1
+010010 1
+111110 1
+010011 1
+111001 1
+010101 1
+111011 1
+011111 1
+001110 1
+111111 1
+101001 1
+011011 1
+000011 1
+001011 1
+100001 1
+011000 1
+111010 1
+110010 1
+101111 1
+110011 1
+001101 1
+011100 1
+001000 1
+001100 1
+000000 1
+010100 1
+100111 1
+010111 1
+011110 1
+111100 1
+011101 1
+000101 1
+000010 1
+110100 1
+111000 1
+101110 1
+000111 1
+000001 1
+110101 1
+101000 1
+000100 1
+# 32'b10111011111010111111101100101110
+.names di0 di1 di2 di3 di4 do7
+01111 1
+01110 1
+10001 1
+01011 1
+00101 1
+01101 1
+10101 1
+10110 1
+11111 1
+11000 1
+11011 1
+10111 1
+01100 1
+01000 1
+01001 1
+11100 1
+11001 1
+00001 1
+00011 1
+11101 1
+10000 1
+10011 1
+00010 1
+# 32'b11111100110011111111101001010111
+.names di0 di1 di2 di3 di4 do8
+01111 1
+01110 1
+10001 1
+01011 1
+01101 1
+10110 1
+11111 1
+11011 1
+10111 1
+01100 1
+01001 1
+11100 1
+00110 1
+00001 1
+11110 1
+10000 1
+11101 1
+10011 1
+00010 1
+10010 1
+11010 1
+00100 1
+00000 1
+# 64'b1101100011001011000101011011111011001110110110111100110111101011
+.names di0 di1 di2 di3 di4 di5 do9
+011010 1
+010110 1
+101100 1
+111110 1
+010011 1
+111011 1
+011111 1
010000 1
001110 1
-111110 1
+111111 1
+011011 1
+000011 1
+110110 1
+001011 1
+100001 1
+100010 1
+001010 1
+110011 1
000110 1
-100011 1
-110101 1
+101010 1
+001111 1
001000 1
-010010 1
-010001 1
-010001 1
-011111 1
-100100 1
-010110 1
-001001 1
-010111 1
-011111 1
-100100 1
-110010 1
-100101 1
-011101 1
+110001 1
+000000 1
+010100 1
011001 1
-110101 1
-101001 1
-100110 1
-110101 1
-001000 1
+100100 1
+100011 1
+010001 1
+100111 1
+100101 1
+010111 1
+011110 1
111100 1
+000101 1
+110000 1
+000111 1
+000001 1
+101000 1
+110111 1
+# 64'b1100110011111110001110100101110001111010101101111110111100011110
+.names di0 di1 di2 di3 di4 di5 do10
+010010 1
+101100 1
+111110 1
+010101 1
+111011 1
101101 1
-.names di0 di1 di2 di3 di4 do9
-01001 1
-00001 1
+010000 1
+111111 1
+001110 1
+101001 1
+011011 1
+000011 1
+110110 1
+001011 1
+110010 1
+111010 1
+100010 1
+001010 1
+110011 1
+001101 1
+001111 1
+011100 1
+001000 1
+110001 1
+010100 1
+011001 1
+100100 1
+100011 1
+010001 1
+010111 1
+100110 1
+001001 1
+011110 1
+011101 1
+110111 1
+110100 1
+000010 1
+000001 1
+110101 1
+101011 1
+000100 1
+# 32'b11010111110011110011010000101011
+.names di0 di1 di2 di3 di4 do11
10000 1
-00000 1
-10111 1
-00111 1
-00010 1
-11100 1
-11100 1
-11011 1
-00001 1
-11110 1
-00100 1
-01101 1
-10001 1
-10100 1
-00101 1
-11000 1
-10011 1
-00001 1
-10010 1
-00110 1
-01101 1
-10001 1
-11111 1
-00011 1
-11100 1
-10111 1
-00001 1
-11101 1
-01011 1
-01111 1
-.names di0 di1 di2 di3 di4 do10
-11111 1
-11110 1
-01101 1
-01001 1
-01101 1
-00000 1
-11110 1
-01101 1
-10101 1
-11101 1
-11010 1
-10001 1
-00100 1
-10100 1
-00010 1
-00110 1
-11111 1
-10010 1
-10100 1
-00111 1
-00101 1
-00101 1
-01100 1
-01111 1
-01100 1
-11111 1
-01010 1
-11110 1
-01111 1
-01000 1
-11011 1
-11011 1
-.names di0 di1 di2 di3 di4 do11
-00001 1
-10000 1
-00101 1
00011 1
10110 1
-00111 1
-10011 1
-01001 1
-00110 1
-01110 1
-11111 1
-00111 1
-10000 1
-01000 1
-01110 1
-01100 1
-00001 1
-11011 1
-01001 1
-10100 1
-01001 1
-10010 1
-10100 1
-01000 1
-00101 1
-11010 1
-11001 1
-10111 1
-10111 1
-01000 1
-01111 1
-11010 1
-.names di0 di1 di2 di3 di4 do12
-10000 1
-01110 1
-10101 1
-00101 1
-00101 1
-01001 1
-10001 1
-11000 1
-01101 1
-11110 1
-01110 1
-10011 1
-00111 1
-01111 1
-01111 1
-11101 1
-01001 1
-10101 1
-01011 1
-11001 1
-00101 1
-10011 1
-00100 1
-01001 1
-11110 1
-00010 1
-10000 1
-10111 1
-00110 1
-10011 1
-00110 1
-01000 1
-.names di0 di1 di2 di3 di4 di5 do13
-010101 1
-100000 1
-010011 1
-000000 1
-111000 1
-101011 1
-011111 1
-011010 1
-110011 1
-010110 1
-110101 1
-010100 1
-010010 1
-100010 1
-110100 1
-000011 1
-110110 1
-110010 1
-101101 1
-011101 1
-000000 1
-100110 1
-111101 1
-100010 1
-110111 1
-011100 1
-001111 1
-001101 1
-100010 1
-101110 1
-101110 1
-100100 1
-110011 1
-011111 1
-011010 1
-001101 1
-001011 1
-010110 1
-101100 1
-000100 1
-010100 1
-110111 1
-010101 1
-110001 1
-100011 1
-101111 1
-110000 1
-100001 1
-110010 1
-101111 1
-101011 1
-011000 1
-001000 1
-000010 1
-101100 1
-111011 1
-010101 1
-101011 1
-011100 1
-001010 1
-110010 1
-010110 1
-101010 1
-011010 1
-.names di0 di1 di2 di3 di4 di5 do14
-110101 1
-111101 1
-000001 1
-010111 1
-011101 1
-110010 1
-001000 1
-100010 1
-111001 1
-101001 1
-010011 1
-011101 1
-001010 1
-011110 1
-100101 1
-110011 1
-011011 1
-101010 1
-000011 1
-011001 1
-010000 1
-011111 1
-001000 1
-010000 1
-110010 1
-000001 1
-110010 1
-101000 1
-101011 1
-110001 1
-001011 1
-001010 1
-111100 1
-000100 1
-000011 1
-011101 1
-110010 1
-010010 1
-110001 1
-011011 1
-101101 1
-100011 1
-111110 1
-010111 1
-010010 1
-111011 1
-000010 1
-111100 1
-001100 1
-011110 1
-001101 1
-011001 1
-011110 1
-111101 1
-011001 1
-000000 1
-101010 1
-000010 1
-100001 1
-011110 1
-100100 1
-111100 1
-001110 1
-111010 1
-.names di0 di1 di2 di3 di4 di5 do15
-000011 1
-000010 1
-010111 1
-111001 1
-011010 1
-100010 1
-111010 1
-101111 1
-111100 1
-011101 1
-011100 1
-000010 1
-011001 1
-010100 1
-111001 1
-010011 1
-111000 1
-010101 1
-101111 1
-011000 1
-110011 1
-010011 1
-111100 1
-011101 1
-110000 1
-100001 1
-001010 1
-000100 1
-010010 1
-010000 1
-010110 1
-001000 1
-000010 1
-101101 1
-101110 1
-111011 1
-000111 1
-011000 1
-000100 1
-000111 1
-001111 1
-101010 1
-011101 1
-011011 1
-001000 1
-110101 1
-001110 1
-010001 1
-111010 1
-101111 1
-011110 1
-001111 1
-101100 1
-001011 1
-111011 1
-000100 1
-100000 1
-111001 1
-001110 1
-100000 1
-010010 1
-011000 1
-010011 1
-010101 1
-.names di0 di1 di2 di3 di4 di5 do16
-110011 1
-011111 1
-111011 1
-110101 1
-000101 1
-000001 1
-010000 1
-101000 1
-011011 1
-110111 1
-110111 1
-010000 1
-011011 1
-011111 1
-100101 1
-100011 1
-010111 1
-000100 1
-110001 1
-101100 1
-100100 1
-000101 1
-110101 1
-100000 1
-100101 1
-111101 1
-010011 1
-101111 1
-000100 1
-111101 1
-100001 1
-111110 1
-011101 1
-011000 1
-110100 1
-111101 1
-100000 1
-011101 1
-011010 1
-000101 1
-000110 1
-111001 1
-111101 1
-111011 1
-111101 1
-111111 1
-100011 1
-001010 1
-100111 1
-000111 1
-101001 1
-001000 1
-100110 1
-111010 1
-110111 1
-100011 1
-100111 1
-110010 1
-110011 1
-001000 1
-111101 1
-101110 1
-011111 1
-111001 1
-.names di0 di1 di2 di3 di4 di5 do17
-011010 1
-101011 1
-010110 1
-000101 1
-100100 1
-000101 1
-010011 1
-101111 1
-101001 1
-111011 1
-101111 1
-111110 1
-101011 1
-010011 1
-010001 1
-110001 1
-001110 1
-101110 1
-110101 1
-001001 1
-011011 1
-010001 1
-111010 1
-010011 1
-101101 1
-010011 1
-100110 1
-100111 1
-010101 1
-111010 1
-000010 1
-100001 1
-110000 1
-011000 1
-100100 1
-010011 1
-101111 1
-001010 1
-101001 1
-011010 1
-001100 1
-000000 1
-111001 1
-110111 1
-110001 1
-110110 1
-011100 1
-100101 1
-000111 1
-110111 1
-000101 1
-101111 1
-110101 1
-011001 1
-010100 1
-110001 1
-101101 1
-101111 1
-011000 1
-101011 1
-101001 1
-100011 1
-010100 1
-010110 1
-.names di0 di1 di2 di3 di4 do18
-11001 1
-01011 1
-10000 1
-11101 1
-00101 1
-01011 1
-10100 1
-11111 1
-11010 1
-10011 1
-10100 1
-10011 1
-11011 1
-00010 1
-01011 1
-01101 1
-01011 1
-11110 1
-11000 1
-10100 1
-11110 1
-10011 1
-00000 1
-11001 1
-10011 1
-11000 1
-11000 1
-00110 1
-01000 1
-10101 1
-10011 1
-11101 1
-.names di0 di1 di2 di3 di4 di5 do19
-011001 1
-000101 1
-100010 1
-001001 1
-001101 1
-110011 1
-000010 1
-110000 1
-011101 1
-101100 1
-001011 1
-100011 1
-010110 1
-101010 1
-101111 1
-000111 1
-000100 1
-101010 1
-111110 1
-001000 1
-100011 1
-000011 1
-111001 1
-000101 1
-011111 1
-011001 1
-010011 1
-101000 1
-010011 1
-011010 1
-010110 1
-011010 1
-010000 1
-100100 1
-100111 1
-100011 1
-110000 1
-000111 1
-000110 1
-111111 1
-111010 1
-101101 1
-111011 1
-010100 1
-001001 1
-000011 1
-000010 1
-100000 1
-110111 1
-010011 1
-100111 1
-111101 1
-100100 1
-011111 1
-110011 1
-111100 1
-110010 1
-110100 1
-001101 1
-001100 1
-110001 1
-010110 1
-110000 1
-000010 1
-.names di0 di1 di2 di3 di4 do20
-11110 1
-00000 1
-10111 1
11001 1
11100 1
-10101 1
-11111 1
-11001 1
-10101 1
-01011 1
-11011 1
-00000 1
-00000 1
+10011 1
10010 1
-01000 1
-00001 1
-11011 1
-11001 1
+11111 1
+10001 1
+11000 1
+11010 1
01010 1
+00101 1
+00001 1
+00000 1
+01101 1
+10111 1
01100 1
+11110 1
+# 32'b01111110010010111101011110001110
+.names di0 di1 di2 di3 di4 do12
+10000 1
+11101 1
+01001 1
+01000 1
00011 1
-10111 1
-11011 1
-01000 1
-00110 1
-11100 1
-00100 1
-11101 1
-11010 1
-00001 1
-10111 1
10110 1
-.names di0 di1 di2 di3 di4 di5 do21
-001100 1
-111100 1
-001001 1
-011001 1
-011110 1
-101000 1
-100001 1
-011011 1
-001111 1
-111100 1
-001001 1
-110110 1
-100111 1
-100111 1
-111110 1
-001100 1
-001100 1
-000001 1
-111000 1
-011011 1
-000110 1
-101001 1
-110011 1
-011101 1
-110100 1
-100000 1
-011010 1
-011011 1
-110000 1
-111111 1
-011000 1
-100011 1
-010000 1
-100001 1
-010011 1
-010001 1
-110011 1
-001110 1
-000100 1
-011111 1
-011010 1
-000011 1
-010100 1
-101100 1
-111101 1
-100010 1
-101100 1
-111001 1
-100011 1
-010101 1
-100100 1
-110100 1
-010110 1
-010111 1
-101110 1
-101001 1
-011100 1
-111001 1
-110011 1
-011100 1
-010001 1
-110000 1
-110010 1
-010101 1
-.names di0 di1 di2 di3 di4 do22
-11000 1
-00000 1
-00000 1
+11011 1
+11100 1
+10011 1
+01111 1
+00010 1
+01110 1
+10001 1
+11010 1
+00111 1
+01010 1
+11001 1
00001 1
01100 1
-01010 1
+11110 1
+# 32'b11101011101011100111011000101111
+.names di0 di1 di2 di3 di4 do13
+01110 1
10001 1
00101 1
-00010 1
-10000 1
01101 1
10101 1
11111 1
-11001 1
+11000 1
11011 1
-01111 1
+10111 1
+01100 1
+01001 1
+01010 1
+11001 1
+00001 1
+11110 1
+00011 1
+11101 1
10011 1
00010 1
-01100 1
-00101 1
-00100 1
-11001 1
-01010 1
-01101 1
-01001 1
-00010 1
-10100 1
-01010 1
-11101 1
-01111 1
-10101 1
-10110 1
-.names di0 di1 di2 di3 di4 di5 do23
-101111 1
-000100 1
-000000 1
-101110 1
-011101 1
-110110 1
-010111 1
-100000 1
-000010 1
-101111 1
-001010 1
-001000 1
-111100 1
-110011 1
-101101 1
-110010 1
-010011 1
-101111 1
-011111 1
-001100 1
-101010 1
-100011 1
-110100 1
-101000 1
-011001 1
-101000 1
-100100 1
-011011 1
-111110 1
-101101 1
-001001 1
-100100 1
-011101 1
-011011 1
-110001 1
-110000 1
-000011 1
-001001 1
-100011 1
-100110 1
-101110 1
-011000 1
-110101 1
-011100 1
-001101 1
-001010 1
-110111 1
-011111 1
-101000 1
-111001 1
+10010 1
+00000 1
+# 64'b0111011101111010011101111000010111110000011011111110111111101111
+.names di0 di1 di2 di3 di4 di5 do14
010110 1
-011010 1
-000101 1
-001000 1
-001011 1
-001101 1
-100101 1
-000011 1
-110001 1
-111110 1
-010001 1
-000011 1
-101101 1
+010010 1
101100 1
-.names di0 di1 di2 di3 di4 di5 do24
-011011 1
+111110 1
+111101 1
+010011 1
+010101 1
+111001 1
+011111 1
+101101 1
+010000 1
+001110 1
+101001 1
000011 1
-100000 1
-000111 1
+110110 1
+001011 1
111010 1
-110111 1
+100010 1
+001010 1
+110011 1
+000110 1
+101010 1
+001111 1
+001101 1
+011100 1
+001000 1
+110001 1
+000000 1
+010001 1
+100111 1
+001001 1
+011110 1
100000 1
+111100 1
+000101 1
+011101 1
+110100 1
+000010 1
+111000 1
+101110 1
+000111 1
000001 1
+110101 1
+101000 1
+# 32'b10111100001111001010001110011011
+.names di0 di1 di2 di3 di4 do15
+00011 1
+10101 1
+01000 1
+01001 1
+11101 1
+11100 1
+10011 1
+01111 1
+10010 1
+11111 1
+11010 1
+00111 1
+10100 1
+11011 1
+00001 1
+00100 1
+00000 1
+01101 1
+# 64'b0011111101010111111111110010111010110001001010011101111011101001
+.names di0 di1 di2 di3 di4 di5 do16
+101100 1
+111101 1
+010011 1
+111001 1
+010101 1
+111011 1
+101101 1
+011111 1
+010000 1
+001110 1
+101001 1
+000011 1
+110110 1
+001011 1
+100001 1
+011000 1
+111010 1
+110010 1
+101111 1
+100010 1
+001010 1
+101010 1
+000110 1
+001111 1
+011100 1
+110001 1
+001100 1
+000000 1
+100011 1
+100101 1
+001001 1
+111100 1
+011101 1
+000101 1
+110100 1
+111000 1
+110000 1
+000111 1
+101110 1
+101000 1
+101011 1
+# 32'b01110111011101100110001111010010
+.names di0 di1 di2 di3 di4 do17
+10101 1
+01000 1
+11101 1
+01001 1
+10110 1
+11100 1
+01110 1
+10010 1
+11000 1
+10001 1
+00111 1
+00110 1
+10100 1
+11010 1
+11001 1
+00001 1
+00100 1
+01101 1
+11110 1
+# 64'b0010110111111110101111001010001001110000111111011110011100010001
+.names di0 di1 di2 di3 di4 di5 do18
+010110 1
+010010 1
+101100 1
+111101 1
+010011 1
+010101 1
+111011 1
+101101 1
+010000 1
+001110 1
+110110 1
+100001 1
+110010 1
+111010 1
+101111 1
+001010 1
+101010 1
+001101 1
+110011 1
+001111 1
+011100 1
+001000 1
+110001 1
+000000 1
+010100 1
+100111 1
+100101 1
+001001 1
+010111 1
+011110 1
+011101 1
+110111 1
+110100 1
111000 1
110101 1
-011001 1
-010001 1
-111101 1
-100101 1
-010000 1
-011011 1
-000000 1
-100110 1
-111010 1
-110010 1
-011100 1
-000001 1
-101101 1
-110111 1
-010111 1
-001001 1
-111010 1
-110011 1
-110000 1
-000000 1
-010111 1
-000000 1
-010001 1
-011110 1
-110000 1
-100100 1
-010100 1
-011100 1
-011000 1
-101111 1
-100011 1
-101000 1
-110101 1
-101000 1
-001110 1
-110110 1
-101110 1
-010101 1
-110110 1
-110111 1
-100000 1
-010010 1
-011111 1
-101100 1
-100000 1
-010001 1
-111011 1
-010000 1
-000110 1
-100110 1
-101010 1
-110101 1
-011010 1
-111000 1
-.names di0 di1 di2 di3 di4 do25
-11010 1
-10110 1
-01111 1
-11100 1
-10100 1
-11111 1
-10101 1
-01100 1
-10010 1
-11110 1
-10111 1
-01001 1
-10001 1
-10000 1
-00110 1
-01110 1
-01100 1
-10110 1
-01111 1
-00011 1
-00101 1
-01011 1
-10001 1
-10011 1
-10110 1
-10110 1
-11100 1
-01101 1
-11101 1
-01110 1
-00000 1
-10110 1
-.names di0 di1 di2 di3 di4 di5 do26
-111011 1
-001111 1
-111100 1
-100110 1
-101010 1
-101110 1
-111010 1
-100100 1
-011111 1
-001110 1
-111011 1
-111111 1
-101101 1
-100100 1
-000110 1
-110111 1
101011 1
-011111 1
-101010 1
-101101 1
-110100 1
-110110 1
-001110 1
-110111 1
-100101 1
-100010 1
-000010 1
-000111 1
-011001 1
-101001 1
-101110 1
-000011 1
-111111 1
-111010 1
-100000 1
+000100 1
+# 64'b1000100111011011100001110110001010101011111101111110101100111111
+.names di0 di1 di2 di3 di4 di5 do19
+010110 1
010010 1
-110011 1
-011010 1
+010101 1
+111011 1
+011111 1
+010000 1
+001110 1
+111111 1
+101001 1
+011011 1
+000011 1
+110110 1
+001011 1
+011000 1
100001 1
-000010 1
-010010 1
-010001 1
-100101 1
-111101 1
-000111 1
-100111 1
-101110 1
101111 1
-011010 1
+110011 1
+001101 1
+101010 1
+001111 1
+001000 1
+110001 1
+000000 1
+010100 1
+010001 1
+011001 1
+100101 1
+010111 1
100110 1
+001001 1
+011101 1
+000101 1
+000010 1
+110100 1
+111000 1
+110000 1
+000001 1
101000 1
+110111 1
+000100 1
+# 32'b00101101010111110010100101101000
+.names di0 di1 di2 di3 di4 do20
+10000 1
+00011 1
+11101 1
+01000 1
+10110 1
+10011 1
+10010 1
+11000 1
+10001 1
+11010 1
+00110 1
+00101 1
+01011 1
+11011 1
+10100 1
+01101 1
+# 64'b1011110101111111110100101101110101101111011011101010011111110111
+.names di0 di1 di2 di3 di4 di5 do21
+011010 1
+010110 1
+010010 1
+101100 1
+111101 1
+010011 1
+010101 1
+111011 1
+111111 1
+101001 1
+011011 1
+110110 1
+011000 1
+110010 1
+111010 1
+101111 1
+100010 1
+001010 1
+110011 1
+001101 1
+000110 1
+001111 1
+001000 1
+110001 1
+000000 1
+011001 1
+100011 1
+100100 1
+100111 1
+010001 1
+001001 1
+100110 1
+111100 1
+100000 1
+011101 1
+000101 1
+011110 1
+110100 1
+000010 1
+111000 1
+101110 1
+110000 1
+000111 1
+000001 1
+110101 1
+000100 1
+# 64'b1110111111111101101010101110100111111110011110101101100000110000
+.names di0 di1 di2 di3 di4 di5 do22
+011010 1
+010110 1
+111110 1
+111101 1
+010011 1
+111001 1
+010101 1
+111011 1
101101 1
+011111 1
+001110 1
+111111 1
+101001 1
+011011 1
+101011 1
+110110 1
+001011 1
+111010 1
+110010 1
+101111 1
110011 1
001111 1
-101101 1
-000000 1
-000010 1
-110001 1
-111010 1
-111010 1
-110101 1
-110000 1
-110011 1
-000101 1
-.names di0 di1 di2 di3 di4 do27
-10001 1
-01010 1
-11100 1
-00000 1
-11010 1
-00001 1
-10110 1
-00010 1
-01011 1
-00010 1
-01101 1
-01011 1
-00110 1
-00100 1
-00111 1
-10010 1
-10100 1
-01011 1
-10011 1
-00000 1
-10110 1
-11111 1
-11001 1
-01100 1
-00101 1
-00011 1
-11110 1
-11111 1
-11001 1
-11001 1
-11011 1
-11000 1
-.names di0 di1 di2 di3 di4 di5 do28
-101110 1
-001001 1
-100000 1
-101111 1
-000010 1
-111111 1
-110000 1
-100100 1
-000100 1
-000101 1
-011001 1
-110101 1
-010101 1
-111100 1
-000011 1
-101110 1
-000011 1
-001000 1
-101011 1
+011100 1
+001100 1
+010100 1
100011 1
+011001 1
+010001 1
+100111 1
+100101 1
+100110 1
100000 1
+011110 1
+011101 1
+000101 1
+110100 1
+111000 1
+110000 1
+110101 1
+110111 1
+000100 1
+# 32'b10001000011010011111001110011111
+.names di0 di1 di2 di3 di4 do23
+10000 1
+10101 1
+01000 1
+01001 1
+00011 1
+10110 1
+10011 1
+01111 1
+00010 1
+01110 1
+11111 1
+00111 1
+11011 1
+00001 1
+00100 1
+00000 1
+01101 1
+01100 1
+# 64'b0011110001010001110001001111011111111111110111000111111010011010
+.names di0 di1 di2 di3 di4 di5 do24
+011010 1
+010110 1
+010010 1
+111101 1
+010011 1
+111011 1
+011111 1
+001110 1
+011011 1
+000011 1
+110110 1
+001011 1
100001 1
-011101 1
-010011 1
-001001 1
-111001 1
-000011 1
-101001 1
-010000 1
-011010 1
-001111 1
-110011 1
-110010 1
-110010 1
-000110 1
-011101 1
-110011 1
-110100 1
-010101 1
-101000 1
-111111 1
-010100 1
-010100 1
-000011 1
-111110 1
-100101 1
-111111 1
-111010 1
-000011 1
-111100 1
-100000 1
-010101 1
-101000 1
-111101 1
-100010 1
-011110 1
-010111 1
-111110 1
-011110 1
-011001 1
-100011 1
-000001 1
-001011 1
-111000 1
-.names di0 di1 di2 di3 di4 di5 do29
-000111 1
-100011 1
-111001 1
-001011 1
-100110 1
-000100 1
-101010 1
-000001 1
-010010 1
-100111 1
-000111 1
-000001 1
-110001 1
-100110 1
-000011 1
-011001 1
-010100 1
-000101 1
-001111 1
-000100 1
-111000 1
-110101 1
-101001 1
-100101 1
-100000 1
-000101 1
-001010 1
-000110 1
-000101 1
-000100 1
-010111 1
-011011 1
-001000 1
-101101 1
-011101 1
-110111 1
-101010 1
-000111 1
011000 1
-001010 1
-110001 1
-001000 1
-001000 1
-111001 1
-001011 1
-001011 1
-000010 1
-110001 1
-010000 1
-011101 1
-110111 1
-001010 1
-100011 1
-010100 1
-011001 1
-001111 1
-110101 1
-011110 1
-110011 1
-000100 1
-101011 1
-000101 1
-000000 1
-000011 1
-.names di0 di1 di2 di3 di4 di5 do30
-010101 1
-101100 1
-001101 1
-001101 1
-000101 1
-101000 1
-100110 1
-111011 1
-001010 1
-111000 1
-110100 1
+111010 1
+100010 1
101111 1
-100110 1
-111110 1
-110100 1
-100011 1
-110000 1
-000110 1
-001000 1
-000011 1
001010 1
-000101 1
-001011 1
-010000 1
-011111 1
-011101 1
-100000 1
-101101 1
-111011 1
-011011 1
-110001 1
-100000 1
-100111 1
-100100 1
-110001 1
-111010 1
-011100 1
-111111 1
-000011 1
-011010 1
-001011 1
-010110 1
-000001 1
-101101 1
-110101 1
-101011 1
-101000 1
-000000 1
-100101 1
-110101 1
-011010 1
-000010 1
-010011 1
-010100 1
-111001 1
101010 1
-110111 1
-111010 1
-100111 1
-000111 1
-011001 1
-100010 1
-101101 1
-011010 1
-.names di0 di1 di2 di3 di4 do31
-01000 1
-01111 1
-10101 1
-01111 1
-11111 1
-11010 1
-10111 1
-10110 1
-01111 1
-01001 1
-00011 1
-01100 1
-00110 1
-01010 1
-11101 1
-00110 1
-01000 1
-11100 1
-00001 1
-11110 1
-10011 1
-11001 1
-10100 1
-10001 1
-00001 1
-01110 1
-11011 1
-10111 1
-00101 1
-11111 1
-01000 1
-10001 1
-.names di0 di1 di2 di3 di4 do32
-00001 1
-01000 1
-10111 1
-10111 1
-00010 1
-00010 1
-00111 1
-00110 1
-00001 1
-11001 1
-00000 1
-00001 1
-00000 1
-01101 1
-10010 1
-11111 1
-00101 1
-00000 1
-01110 1
-10011 1
-10111 1
-10000 1
-00101 1
-01011 1
-01000 1
-10111 1
-01100 1
-10100 1
-00100 1
-11010 1
-10100 1
-01011 1
-.names di0 di1 di2 di3 di4 do33
-11111 1
-11100 1
-01110 1
-01111 1
-10001 1
-11111 1
-11010 1
-00000 1
-11111 1
-01010 1
-10101 1
-11011 1
-01101 1
-10001 1
-01101 1
-10110 1
-00110 1
-10010 1
-11100 1
-00111 1
-00011 1
-11101 1
-10110 1
-10110 1
-10010 1
-00000 1
-00101 1
-01011 1
-11100 1
-01010 1
-00010 1
-10110 1
-.names di0 di1 di2 di3 di4 do34
-01001 1
-11011 1
-01111 1
-11100 1
-01000 1
-10110 1
-00001 1
-01010 1
-00100 1
-00011 1
-10110 1
-10001 1
-01001 1
-10101 1
-01000 1
-01001 1
-01000 1
-10010 1
-00110 1
-11001 1
-00011 1
-11110 1
-00001 1
-10111 1
-00011 1
-00111 1
-10011 1
-00101 1
-00010 1
-11001 1
-11100 1
-00010 1
-.names di0 di1 di2 di3 di4 di5 do35
-100000 1
-001000 1
-111011 1
-101100 1
-000011 1
-111100 1
-010101 1
001101 1
-100000 1
-101101 1
-011101 1
-001010 1
-111000 1
-000010 1
-111101 1
-110101 1
-110000 1
-000011 1
-000010 1
-110111 1
-101101 1
-000110 1
-011111 1
-001001 1
-001000 1
-010011 1
+011100 1
001100 1
-100111 1
-000101 1
-000111 1
-101001 1
-000001 1
-011000 1
-010000 1
-011001 1
-011010 1
-110001 1
-000111 1
-101100 1
-100110 1
-101000 1
-000101 1
-011001 1
-010011 1
-010000 1
-110111 1
-000001 1
-001010 1
-000011 1
-110100 1
-110101 1
-001101 1
-000001 1
-101001 1
-100101 1
-101001 1
-010000 1
-101000 1
-010000 1
-100111 1
-110110 1
-101000 1
010100 1
011001 1
-.names di0 di1 di2 di3 di4 di5 do36
-100110 1
-110110 1
-001110 1
-101101 1
-010000 1
-101001 1
-111111 1
-100110 1
-001100 1
-111110 1
-111011 1
-110110 1
-000100 1
-011101 1
-001001 1
-111011 1
-101100 1
-111001 1
-001100 1
-111011 1
-010011 1
-010011 1
-111101 1
+100100 1
+100111 1
100101 1
-101011 1
-011010 1
-101100 1
+001001 1
+100110 1
+010111 1
+100000 1
+011110 1
011101 1
-110011 1
-010101 1
-111001 1
-010010 1
-101001 1
-000001 1
-011101 1
-111101 1
-000001 1
-111001 1
-000011 1
-010010 1
+111100 1
+110100 1
101110 1
-001111 1
-010010 1
-111111 1
000111 1
-111001 1
-101110 1
-101011 1
-000011 1
+110000 1
+000001 1
+000100 1
+# 64'b1110100111010111100100000010010011111001101110001111111101001111
+.names di0 di1 di2 di3 di4 di5 do25
+101100 1
+111110 1
+111101 1
+010011 1
+010101 1
+111011 1
+011111 1
+111111 1
001110 1
011011 1
-101101 1
-110010 1
-000000 1
-101111 1
-100100 1
-101011 1
-011111 1
-010110 1
-110001 1
-011101 1
-110001 1
-010000 1
-010111 1
-.names di0 di1 di2 di3 di4 di5 do37
-010101 1
-101100 1
-101101 1
-011110 1
-000100 1
-110000 1
-101111 1
-011110 1
-100111 1
-100000 1
-000111 1
-111011 1
000011 1
+110110 1
+001011 1
011000 1
110010 1
-001100 1
-011110 1
-110110 1
-111011 1
-101110 1
-110011 1
-100000 1
-010110 1
-111100 1
-100101 1
-100000 1
-111100 1
-001001 1
-000011 1
-110000 1
-111010 1
-100111 1
-101001 1
-111010 1
-001111 1
-111010 1
-010001 1
-011010 1
-111110 1
-000100 1
+101111 1
+100010 1
+001010 1
+001101 1
000110 1
-111001 1
+001111 1
+011100 1
001000 1
-111111 1
110001 1
-010001 1
-100110 1
-110010 1
-111110 1
-010000 1
-111001 1
+001100 1
+000000 1
+010100 1
+100101 1
+010111 1
+001001 1
+011110 1
011101 1
-101011 1
-011101 1
-110011 1
-010000 1
+110100 1
+000010 1
+111000 1
110000 1
-001111 1
-110010 1
-011101 1
-111101 1
-110110 1
-101000 1
-000110 1
-.names di0 di1 di2 di3 di4 do38
-01010 1
-01110 1
-10000 1
-11111 1
-10110 1
-00011 1
-11101 1
-10111 1
-10011 1
-00001 1
-00001 1
-01110 1
+000001 1
+110111 1
+# 32'b00110110110001111111101011111111
+.names di0 di1 di2 di3 di4 do26
01111 1
-00001 1
-11011 1
+01110 1
+10001 1
+01011 1
+00101 1
+01101 1
+10110 1
10111 1
01100 1
+01001 1
+11100 1
+00111 1
+00110 1
11001 1
00001 1
-11111 1
00011 1
-00010 1
-01010 1
-10101 1
-01000 1
-11000 1
-01011 1
-10011 1
-11100 1
11101 1
-10100 1
-01000 1
-.names di0 di1 di2 di3 di4 do39
-00110 1
-01001 1
10000 1
-10011 1
-00110 1
-11010 1
-11011 1
-01000 1
-11101 1
-10011 1
+10010 1
00010 1
-00011 1
+11010 1
00100 1
-11000 1
+00000 1
+# 32'b10110011110010111111111001100011
+.names di0 di1 di2 di3 di4 do27
+01111 1
+01110 1
10001 1
-10101 1
-10011 1
-01100 1
+01011 1
+00101 1
+01101 1
+10110 1
+11111 1
11000 1
+10111 1
+01100 1
+01001 1
+11100 1
+00110 1
+01010 1
+11001 1
00001 1
10000 1
-11000 1
-01000 1
-00000 1
-11100 1
-01001 1
-11000 1
-10101 1
-10011 1
-01010 1
-11110 1
11101 1
-.names di0 di1 di2 di3 di4 di5 do40
-000101 1
-111110 1
-001100 1
-001111 1
-111010 1
-000101 1
-100111 1
-111100 1
-000111 1
-111110 1
+10011 1
+00000 1
+# 64'b1011101010111110101100110001011110011000111010011010011111010111
+.names di0 di1 di2 di3 di4 di5 do28
+010110 1
+101100 1
+111101 1
+010011 1
+111001 1
+010101 1
111011 1
-101001 1
-011001 1
-001000 1
-100111 1
-100000 1
-011001 1
-011100 1
-000000 1
-001111 1
-000000 1
-100101 1
-011000 1
-101100 1
-100100 1
-100110 1
-001101 1
-111000 1
-001001 1
-011011 1
-100111 1
-011010 1
-110011 1
-111111 1
-110001 1
-010110 1
-101100 1
-101100 1
-011000 1
-011101 1
+101101 1
011111 1
+010000 1
+111111 1
+101001 1
+011011 1
+100001 1
+110010 1
100010 1
-101000 1
-010110 1
-100100 1
-100101 1
-001111 1
-101000 1
-111110 1
101111 1
-100110 1
-000000 1
+001010 1
+110011 1
000110 1
+001101 1
+001111 1
+011100 1
+001000 1
+110001 1
+000000 1
+100100 1
+010111 1
+001001 1
+111100 1
+100000 1
+000010 1
+110100 1
000111 1
000001 1
-000000 1
-101011 1
-110000 1
+110101 1
+101000 1
+110111 1
+000100 1
+# 32'b11110000111001101111011111011000
+.names di0 di1 di2 di3 di4 do29
+00011 1
+10101 1
+01001 1
+01000 1
+11101 1
+10110 1
+11100 1
+01111 1
+01110 1
+10010 1
+11111 1
+10001 1
+00111 1
+00110 1
+01010 1
+00100 1
+01101 1
+10111 1
+01100 1
+11110 1
+# 32'b01110101110110011101111011110101
+.names di0 di1 di2 di3 di4 do30
+01111 1
+01110 1
+10100 1
+01011 1
+00101 1
+10110 1
+11000 1
+10111 1
+01100 1
+01001 1
+11100 1
+00111 1
+00110 1
+01010 1
+11110 1
+10000 1
+11101 1
+10011 1
+00010 1
+11010 1
+00100 1
+00000 1
+# 64'b1010111000000110001111111101001110110111100001111101110001101101
+.names di0 di1 di2 di3 di4 di5 do31
+011010 1
+010010 1
+101100 1
+111101 1
+111001 1
+111011 1
+011111 1
+101101 1
+010000 1
+001110 1
+111111 1
+101001 1
+000011 1
+001011 1
+011000 1
+100001 1
+111010 1
+110010 1
+001010 1
+101010 1
+000110 1
001111 1
-111100 1
-101011 1
-110011 1
+011100 1
+110001 1
+001100 1
+000000 1
+011001 1
+010001 1
100100 1
+100111 1
+010111 1
+100110 1
+100000 1
+011101 1
+000101 1
+000010 1
+101000 1
+101011 1
+# 64'b0111101110001011010011110111010010100010000111101111010111101111
+.names di0 di1 di2 di3 di4 di5 do32
+010010 1
+111110 1
+111101 1
+010011 1
+111001 1
+111011 1
+011111 1
+001110 1
+101001 1
+101011 1
+000011 1
+100010 1
+001010 1
+101010 1
+001101 1
+000110 1
+001111 1
110011 1
+001000 1
+110001 1
+001100 1
+000000 1
+010100 1
+010001 1
+011001 1
+100100 1
+100101 1
+100110 1
+111100 1
+011101 1
+000101 1
+000010 1
+111000 1
+101110 1
+000111 1
+110000 1
+000001 1
+101000 1
+110111 1
+# 64'b1111111100011111101011010000111100011001001101111111100000110111
+.names di0 di1 di2 di3 di4 di5 do33
+010010 1
+111110 1
+111101 1
+111001 1
+010101 1
+111011 1
+101101 1
+010000 1
+111111 1
+001110 1
+011011 1
+001011 1
+011000 1
+100001 1
+111010 1
+110010 1
+101111 1
+100010 1
+110011 1
+001101 1
+101010 1
+001111 1
+011100 1
+110001 1
+001100 1
+000000 1
+010100 1
+100011 1
+010001 1
+111100 1
+100000 1
+000101 1
+110100 1
+000010 1
+111000 1
+110000 1
+000001 1
+101000 1
+101011 1
+000100 1
+# 64'b1010011101000111111001111111111111001101001101010111100001111111
+.names di0 di1 di2 di3 di4 di5 do34
+011010 1
+010010 1
+111101 1
+111001 1
+010101 1
+101101 1
+011111 1
+010000 1
+111111 1
+001110 1
+101001 1
+011011 1
+000011 1
+110110 1
+001011 1
+100001 1
+011000 1
+111010 1
+110010 1
+100010 1
+101111 1
+101010 1
+001101 1
+000110 1
+110001 1
+001100 1
+000000 1
+010100 1
+100011 1
+100100 1
+100111 1
+100101 1
+100110 1
+011110 1
+100000 1
+000101 1
+000010 1
+111000 1
+110000 1
+101110 1
+000001 1
+101000 1
+000100 1