diff options
Diffstat (limited to 'icebox/tc_logic_xpr.py')
-rw-r--r-- | icebox/tc_logic_xpr.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/icebox/tc_logic_xpr.py b/icebox/tc_logic_xpr.py new file mode 100644 index 0000000..10f031c --- /dev/null +++ b/icebox/tc_logic_xpr.py @@ -0,0 +1,44 @@ +# Test case for `icebox_asc2hlc' and `icebox_hlc2asc': Does conversion +# from LUT strings to logic expressions and back work correctly? +# Copyright (C) 2017 Roland Lutz +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +import sys +import icebox +from icebox_asc2hlc import lut_to_logic_expression +from icebox_hlc2asc import logic_expression_to_lut + +def main(): + sys.stderr.write("testing conversion from LUT strings " + "to logic expressions and back") + + for i in range(65536): + if i % 4096 == 0: + sys.stderr.write(".") + sys.stderr.flush() + + lut = bin(i)[2:].zfill(16) + s = lut_to_logic_expression(lut, ('a', 'b', 'c', 'd')) + l = logic_expression_to_lut(s, ('a', 'b', 'c', 'd')) + + if l != lut: + sys.stderr.write("\nERROR at LUT = %s\n" % lut) + sys.stderr.write("stringified = %s\n" % s) + sys.stderr.write("resulting LUT = %s\n" % l) + sys.exit(1) + + sys.stderr.write("\n") + +if __name__ == '__main__': + main() |