add truth table generator

This commit is contained in:
Florent Kermarrec 2012-08-26 15:15:44 +02:00
parent bf7864104a
commit 68750445cd
3 changed files with 33 additions and 0 deletions

View File

View File

@ -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()

4
top.py
View File

@ -8,6 +8,8 @@ from migen.bus import csr
import migScope import migScope
import spi2Csr import spi2Csr
from migScope.tools.truthtable import *
# #
#Test Term #Test Term
# #
@ -91,4 +93,6 @@ print(v)
#v = verilog.convert(spi2csr0.get_fragment()) #v = verilog.convert(spi2csr0.get_fragment())
#print(v) #print(v)
print(gen_truth_table("A&B&C"))