#!/usr/bin/env python from nand import tm_add def test(klass_name, name, nlst, tm, tm_step): for n in nlst: tm = test_klass( klass_name, n, '{}{}'.format(name, n), tm, tm_step ) return tm def test_klass(klass_name, n, name, tm, tm_step): print "{}(o, {}, '{}')".format(klass_name, n, name) print "Lamp(o, 'lamp_{}')".format(name) print "o.{}.out.conn = o.lamp_{}.inp".format(name, name) tm = test_pin( n, name, tm, tm_step, ('L',) ) tm = test_pin( n, name, tm, tm_step, ('H',) ) tm = test_pin( n, name, tm, tm_step, ('L',) ) return tm def test_pin(n, name, tm, tm_step, v): s = "sched.enque( {}, o.{}.inp_{}.set, {} )" for i in range(n): print s.format(tm, name, i, v) tm = tm_add(tm, tm_step) return tm if __name__ == "__main__": tm_step = (0, 1000000) tm = (1, 100000000) nlst = [ 2, 3, 4, 20, 64 ] (s, ns) = test( 'AND_N', 'and_', nlst, tm, tm_step ) tm = (s+1, 0) (s, ns) = test( 'OR_N', 'or_', nlst, tm, tm_step ) tm = (s+1, 0) (s, ns) = test( 'NAND_N', 'nand_', nlst, tm, tm_step ) tm = (s+1, 0) (s, ns) = test( 'NOR_N', 'nor_', nlst, tm, tm_step ) tm = (s+1, 0) print "sched.enque( {}, sched.quit )".format(tm) # EOF