From: Florent Kermarrec Date: Sun, 26 Aug 2012 13:15:44 +0000 (+0200) Subject: add truth table generator X-Git-Tag: 24jan2021_ls180~2575^2~167 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=68750445cd5d0178796b01d0cd8731132d02f270;p=litex.git add truth table generator --- diff --git a/migScope/tools/__init__.py b/migScope/tools/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/migScope/tools/truthtable.py b/migScope/tools/truthtable.py new file mode 100644 index 00000000..6f091080 --- /dev/null +++ b/migScope/tools/truthtable.py @@ -0,0 +1,29 @@ +import os +import re +import sys + +def get_operands(s): + return sorted(re.findall("[A-z0-9_]+",s)) + +def gen_truth_table(s): + operands = get_operands(s) + width = len(operands) + stim = [] + for i in range(width): + stim_op = [] + for j in range(2**width): + stim_op.append((int(j/(2**i)))%2) + stim.append(stim_op) + + truth_table = [] + for i in range(2**width): + for j in range(width): + exec("%s = stim[j][i]" %operands[j]) + truth_table.append(eval(s)) + return truth_table + +def main(): + print(gen_truth_table("(A&B&C)|D")) + +if __name__ == '__main__': + main() diff --git a/top.py b/top.py index 57b22cd9..d731a958 100644 --- a/top.py +++ b/top.py @@ -8,6 +8,8 @@ from migen.bus import csr import migScope import spi2Csr +from migScope.tools.truthtable import * + # #Test Term # @@ -91,4 +93,6 @@ print(v) #v = verilog.convert(spi2csr0.get_fragment()) #print(v) +print(gen_truth_table("A&B&C")) +