--- nand.py- +++ nand.py @@ -329,12 +329,12 @@ Joint(self, 'jt_j_o') Joint(self, 'jt_k_o') - Pin(self, 'CLK', 'L').conn = self.jt_clk.new_pin() + Pin(self, 'CLK').conn = self.jt_clk.new_pin() self.jt_clk.new_pin().conn = self.and_j.inp_a self.jt_clk.new_pin().conn = self.and_k.inp_b - Pin(self, 'J', 'L').conn = self.nand_j.inp_b - Pin(self, 'K', 'L').conn = self.nand_k.inp_a + Pin(self, 'J').conn = self.nand_j.inp_b + Pin(self, 'K').conn = self.nand_k.inp_a self.nand_j.out.conn = self.buf_j.inp self.buf_j.out.conn = self.rsff_j.R @@ -363,7 +363,7 @@ def __init__(self, parent, name='tff', latency=10): Obj.__init__(self, parent, name) JKFF(self, 'jkff', latency) - Pin(self, 'CLK', 'L').conn = self.jkff.CLK + Pin(self, 'CLK').conn = self.jkff.CLK self.jkff.J.enque_set('H') self.jkff.K.enque_set('H') self.jkff.Q.conn = Pin(self, 'Q') @@ -374,8 +374,8 @@ def __init__(self, parent, name='dff', latency=10): Obj.__init__(self, parent, name) JKFF(self, 'jkff', latency) - Pin(self, 'CLK', 'L').conn = self.jkff.CLK - Pin(self, 'D', 'L').conn = PosiNega(self, 'posi_nega', latency).inp + Pin(self, 'CLK').conn = self.jkff.CLK + Pin(self, 'D').conn = PosiNega(self, 'posi_nega', latency).inp self.posi_nega.Q.conn = self.jkff.J self.posi_nega.nQ.conn = self.jkff.K self.jkff.Q.conn = Pin(self, 'Q') @@ -386,12 +386,12 @@ def __init__(self, parent, n, name='latch', latency=10): Obj.__init__(self, parent, name) self.n = n - Pin(self, 'CLK', 'L').conn = Joint(self, 'jt_clk').new_pin() + Pin(self, 'CLK').conn = Joint(self, 'jt_clk').new_pin() for i in range(n): dff_i = DFF( self, name_i('dff', i), latency ) self.jt_clk.new_pin().conn = dff_i.CLK - Pin( self, name_i('inp', i), 'L' ).conn = dff_i.D - dff_i.Q.conn = Pin( self, name_i('out', i), 'L' ) + Pin( self, name_i('inp', i) ).conn = dff_i.D + dff_i.Q.conn = Pin( self, name_i('out', i) ) class LATCH_N(Obj): # inp_dx, CLK, sel_x, out_x_dx @@ -399,11 +399,11 @@ Obj.__init__(self, parent, name) JointANDSet(self, n, 'jas', latency) - Pin(self, 'CLK', 'L').conn = self.jas.inp - new_pin_n(n, self, 'sel', 0, 'L') + Pin(self, 'CLK').conn = self.jas.inp + new_pin_n(n, self, 'sel') conn2_n( n, (self, 'sel', 0), (self.jas, 'sel', 0) ) - new_pin_n(dbit_n, self, 'inp', 0, 'L') + new_pin_n(dbit_n, self, 'inp') Joint_N(self, dbit_n, 'jt_inp', latency) self.jt_inp.new_pin_conn(self, 'inp', direc='from_targ') @@ -412,7 +412,7 @@ getattr( self.jas, name_i('out', i) ).conn = lt.CLK self.jt_inp.new_pin_conn(lt, 'inp', direc='to_targ') - new_pin_n( dbit_n, self, name_i('out', i), 0, 'L' ) + new_pin_n( dbit_n, self, name_i('out', i) ) conn2_n( dbit_n, (lt, 'out', 0), (self, name_i('out', i), 0) ) class COUNTER(Obj): @@ -420,11 +420,11 @@ def __init__(self, parent, bit_n, name='counter', latency=10): Obj.__init__(self, parent, name) self.n = bit_n - clk = Pin(self, 'CLK', 'L') + clk = Pin(self, 'CLK') for i in range(bit_n): tff = TFF( self, name_i('tff', i), latency ) clk.conn = tff.CLK - tff.Q.conn = Pin( self, name_i('out', i), 'L' ) + tff.Q.conn = Pin( self, name_i('out', i) ) clk = tff.nQ class DECODER(Obj): @@ -433,12 +433,12 @@ Obj.__init__(self, parent, name) self.n = bit_n if bit_n == 1: - Pin(self, 'inp_0', 'L').conn = Joint(self, 'jt_inp').new_pin() + Pin(self, 'inp_0').conn = Joint(self, 'jt_inp').new_pin() self.jt_inp.new_pin().conn = NOT(self, 'not_', latency).inp self.not_.out.conn = AND(self, 'and_0', latency).inp_a self.jt_inp.new_pin().conn = AND(self, 'and_1', latency).inp_a - Pin(self, 'en', 'L').conn = Joint(self, 'jt_en').new_pin() + Pin(self, 'en').conn = Joint(self, 'jt_en').new_pin() self.jt_en.new_pin().conn = self.and_0.inp_b self.jt_en.new_pin().conn = self.and_1.inp_b @@ -446,7 +446,7 @@ self.and_1.out.conn = Pin(self, 'out_1') else: for i in range(bit_n): - Pin( self, name_i('inp', i), 'L' ) + Pin( self, name_i('inp', i) ) bn1 = bit_n - 1 DECODER(self, bn1, 'dec_u', latency) DECODER(self, bn1, 'dec_d', latency) @@ -458,7 +458,7 @@ DECODER(self, 1, 'dec_1', latency) msb = getattr( self, name_i('inp', bn1) ) msb.conn = self.dec_1.inp_0 - Pin(self, 'en', 'L').conn = self.dec_1.en + Pin(self, 'en').conn = self.dec_1.en self.dec_1.out_0.conn = self.dec_d.en self.dec_1.out_1.conn = self.dec_u.en @@ -489,26 +489,26 @@ def __init__(self, parent, n, name='and_set_or', latency=10): Obj.__init__(self, parent, name) ANDSet(self, n, 'and_set', latency) - new_pin_n(n, self, 'inp', 0, 'L') + new_pin_n(n, self, 'inp') conn2_n( n, (self, 'inp', 0), (self.and_set, 'inp', 0) ) - new_pin_n(n, self, 'sel', 0, 'L') + new_pin_n(n, self, 'sel') conn2_n( n, (self, 'sel', 0), (self.and_set, 'sel', 0) ) - OR_N(self, n, 'or_n', latency).out.conn = Pin(self, 'out', 'L') + OR_N(self, n, 'or_n', latency).out.conn = Pin(self, 'out') conn2_n( n, (self.and_set, 'out', 0), (self.or_n, 'inp', 0) ) class JointANDSet(Obj): # inp, sel_x, out_x def __init__(self, parent, n, name='joint_and_set', latency=10): Obj.__init__(self, parent, name) - Pin(self, 'inp', 'L').conn = Joint(self, 'jt').new_pin() + Pin(self, 'inp').conn = Joint(self, 'jt').new_pin() ANDSet(self, n, 'and_set', latency) self.jt.new_pin_conn_n( n, self.and_set, 'inp', 0 ) - new_pin_n(n, self, 'sel', 0, 'L') + new_pin_n(n, self, 'sel') conn2_n( n, (self, 'sel', 0), (self.and_set, 'sel', 0) ) - new_pin_n(n, self, 'out', 0, 'L') + new_pin_n(n, self, 'out') conn2_n( n, (self.and_set, 'out', 0), (self, 'out', 0) ) class GATE(Obj): @@ -519,12 +519,12 @@ ANDSet(self, n, 'and_set', latency) - new_pin_n( n, self, 'inp', 0, 'L' ) + new_pin_n( n, self, 'inp') conn2_n( n, (self, 'inp', 0), (self.and_set, 'inp', 0) ) - new_pin_n( n, self, 'out', 0, 'L' ) + new_pin_n( n, self, 'out') conn2_n( n, (self.and_set, 'out', 0), (self, 'out', 0) ) - Pin(self, 'en', 'L').conn = Joint(self, 'jt').new_pin() + Pin(self, 'en').conn = Joint(self, 'jt').new_pin() self.jt.new_pin_conn_n( n, self.and_set, 'sel', 0 ) class SELECTOR(Obj): @@ -532,31 +532,31 @@ def __init__(self, parent, bit_n, name='selector', latency=10): Obj.__init__(self, parent, name) self.n = bit_n - new_pin_n(bit_n, self, 'A', 0, 'L') + new_pin_n(bit_n, self, 'A') DECODER(self, bit_n, 'deco', latency) conn2_n( bit_n, (self, 'A', 0), (self.deco, 'inp', 0) ) - Pin(self, 'en', 'L').conn = self.deco.en + Pin(self, 'en').conn = self.deco.en dn = 1 << bit_n - new_pin_n(dn, self, 'D', 0, 'L') + new_pin_n(dn, self, 'D') ANDSetOr(self, dn, 'and_set_or', latency) conn2_n( dn, (self, 'D', 0), (self.and_set_or, 'inp', 0) ) conn2_n( dn, (self.deco, 'out', 0), (self.and_set_or, 'sel', 0) ) - self.and_set_or.out.conn = Pin(self, 'out', 'L') + self.and_set_or.out.conn = Pin(self, 'out') class MUX(Obj): # en, A_x, inp_ax_dx, out_dx, deco_out_ax def __init__(self, parent, dbit_n, abit_n, name='mux', latency=10): Obj.__init__(self, parent, name) - new_pin_n(abit_n, self, 'A', 0, 'L') + new_pin_n(abit_n, self, 'A') DECODER(self, abit_n, 'deco', latency) conn2_n( abit_n, (self, 'A', 0), (self.deco, 'inp', 0) ) - Pin(self, 'en', 'L').conn = self.deco.en + Pin(self, 'en').conn = self.deco.en n = 1 << abit_n Joint_N(self, n, 'jt_deco_out').new_pin_conn( self.deco, 'out', direc='from_targ' ) - new_pin_n(n, self, 'deco_out', 0, 'L') + new_pin_n(n, self, 'deco_out') self.jt_deco_out.new_pin_conn( self, 'deco_out', direc='to_targ' ) for di in range(dbit_n): @@ -564,8 +564,8 @@ self.jt_deco_out.new_pin_conn( aso, 'sel', direc='to_targ' ) for i in range(n): nm = name_i( name_i('inp', i), di ) - Pin(self, nm, 'L').conn = getattr( aso, name_i('inp', i) ) - aso.out.conn = Pin( self, name_i('out', di), 'L' ) + Pin(self, nm).conn = getattr( aso, name_i('inp', i) ) + aso.out.conn = Pin( self, name_i('out', di) ) class ROM_D1(Obj): # en, A_x, D_0 @@ -577,10 +577,10 @@ SELECTOR(self, abit_n, 'select', latency) - Pin(self, 'en', 'L').conn = self.select.en - new_pin_n(abit_n, self, 'A', 0, 'L') + Pin(self, 'en').conn = self.select.en + new_pin_n(abit_n, self, 'A') conn2_n( abit_n, (self, 'A', 0), (self.select, 'A', 0) ) - self.select.out.conn = Pin(self, 'D_0', 'L') + self.select.out.conn = Pin(self, 'D_0') # as late as possible, for data enque PinSet(self, dn, dlst, 'pin_set') @@ -592,10 +592,10 @@ Obj.__init__(self, parent, name) MUX(self, dbit_n, abit_n, 'mux', latency) - Pin(self, 'en', 'L').conn = self.mux.en - new_pin_n(abit_n, self, 'A', 0, 'L') + Pin(self, 'en').conn = self.mux.en + new_pin_n(abit_n, self, 'A') conn2_n( abit_n, (self, 'A', 0), (self.mux, 'A', 0) ) - new_pin_n(dbit_n, self, 'D', 0, 'L') + new_pin_n(dbit_n, self, 'D') conn2_n( dbit_n, (self.mux, 'out', 0), (self, 'D', 0) ) f = lambda s, v: s + [ (v >> di) & 1 for di in range(dbit_n) ] @@ -612,14 +612,14 @@ # en, out_x, Q, nQ def __init__(self, parent, dbit_n, abit_n, dlst=(), name='rom_seq', hz=1.0, pos=(0,0), lamp_name=None, latency=10): Obj.__init__(self, parent, name, None, pos) - Pin(self, 'en', 'L').conn = Joint(self, 'jt_en').new_pin() + Pin(self, 'en').conn = Joint(self, 'jt_en').new_pin() CLK(self, hz, 'clk', (0,0), lamp_name, latency) self.jt_en.new_pin().conn = self.clk.en self.clk.Q.conn = Joint(self, 'jt_Q').new_pin() - self.jt_Q.new_pin().conn = Pin(self, 'Q', 'L') + self.jt_Q.new_pin().conn = Pin(self, 'Q') self.clk.nQ.conn = Joint(self, 'jt_nQ').new_pin() - self.jt_nQ.new_pin().conn = Pin(self, 'nQ', 'L') + self.jt_nQ.new_pin().conn = Pin(self, 'nQ') COUNTER(self, abit_n, 'counter', latency) self.jt_Q.new_pin().conn = self.counter.CLK @@ -636,7 +636,7 @@ conn2_n( dbit_n, (self.rom, 'D', 0), (self.latch_d, 'inp', 0) ) self.jt_Q.new_pin().conn = self.latch_d.CLK - new_pin_n(dbit_n, self, 'out', 0, 'L') + new_pin_n(dbit_n, self, 'out') conn2_n( dbit_n, (self.latch_d, 'out', 0), (self, 'out', 0) ) class RAM(Obj): @@ -646,15 +646,15 @@ n = 1 << abit_n LATCH_N(self, n, dbit_n, 'latch_n', latency) - Pin(self, 'CLK', 'L').conn = self.latch_n.CLK - new_pin_n( dbit_n, self, 'inp', 0, 'L' ) + Pin(self, 'CLK').conn = self.latch_n.CLK + new_pin_n( dbit_n, self, 'inp' ) conn2_n( dbit_n, (self, 'inp', 0), (self.latch_n, 'inp', 0) ) MUX(self, dbit_n, abit_n, 'mux', latency) - Pin(self, 'en', 'L').conn = self.mux.en - new_pin_n( abit_n, self, 'A', 0, 'L' ) + Pin(self, 'en').conn = self.mux.en + new_pin_n( abit_n, self, 'A' ) conn2_n( abit_n, (self, 'A', 0), (self.mux, 'A', 0) ) - new_pin_n( dbit_n, self, 'out', 0, 'L' ) + new_pin_n( dbit_n, self, 'out' ) conn2_n( dbit_n, (self.mux, 'out', 0), (self, 'out', 0) ) conn2_n( n, (self.mux, 'deco_out', 0), (self.latch_n, 'sel', 0) ) @@ -666,7 +666,7 @@ def __init__(self, parent, abit_n, dlst=(), name='ram_test_4', hz=1.0, pos=(0,0), latency=10): Obj.__init__(self, parent, name, None, pos) - Pin(self, 'en', 'L').conn = Joint(self, 'jt_en').new_pin() + Pin(self, 'en').conn = Joint(self, 'jt_en').new_pin() (x,y) = (0,0) ROM_SEQ(self, 8, abit_n, dlst, 'rom_seq', hz, (x,y), 'CLK', latency) @@ -714,7 +714,7 @@ Joint(self) PosiNega(self, 'posi_nega', latency) - Pin(self, 'en', 'L').conn = Joint(self, 'jt_en').new_pin() + Pin(self, 'en').conn = Joint(self, 'jt_en').new_pin() self.jt_en.new_pin().conn = self.nand.inp_a self.nand.out.conn = self.jt.new_pin() self.jt.new_pin().conn = self.nand.inp_b @@ -773,7 +773,7 @@ for i in range(n): lamp = Lamp( self, name_i(name, i), latency, pos ) pos = step_pos_slide(pos, slide) - Pin( self, name_i('inp', i), 'L' ).conn = lamp.inp + Pin( self, name_i('inp', i) ).conn = lamp.inp def conn_targ(self, targ, targ_pin_name, n=-1): n = self.n if n < 0 else n @@ -795,7 +795,7 @@ for (i, (x, y, label)) in enumerate(lst): show_info = {'label': label, 'rev':False} lamp = Lamp( self, name_i('lamp', i), latency, (x,y), show_info ) - Pin( self, name_i('inp', i), 'L' ).conn = lamp.inp + Pin( self, name_i('inp', i) ).conn = lamp.inp def conn_targ(self, targ, targ_pin_name): conn2_n( 7, (targ, targ_pin_name, 0), (self, 'inp', 0) ) @@ -809,10 +809,10 @@ 0x7f, 0x6f, 0x3f, 0x7a, 0x53, 0x7c, 0x5b, 0x1b, ] ROM(self, 7, 4, dlst, 'rom', latency) - Pin(self, 'en', 'L').conn = self.rom.en - new_pin_n(4, self, 'inp', 0, 'L') + Pin(self, 'en').conn = self.rom.en + new_pin_n(4, self, 'inp') conn2_n( 4, (self, 'inp', 0), (self.rom, 'A', 0) ) - new_pin_n(7, self, 'out', 0, 'L') + new_pin_n(7, self, 'out') conn2_n( 7, (self.rom, 'D', 0), (self, 'out', 0) ) def conn_targ(self, targ, targ_pin_name): @@ -823,8 +823,8 @@ def __init__(self, parent, name='deco_lamp_7seg', latency=10, pos=(0,0)): Obj.__init__(self, parent, name) DECODER_7seg(self, 'deco', latency) - Pin(self, 'en', 'L').conn = self.deco.en - new_pin_n(4, self, 'inp', 0, 'L') + Pin(self, 'en').conn = self.deco.en + new_pin_n(4, self, 'inp') conn2_n(4, (self, 'inp', 0), (self.deco, 'inp', 0) ) Lamp_7seg(self, 'lamp', latency, pos) @@ -835,14 +835,14 @@ def __init__(self, parent, name='add', latency=10): Obj.__init__(self, parent, name) - Pin(self, 'A', 'L').conn = Joint(self, 'jt_a').new_pin() - Pin(self, 'B', 'L').conn = Joint(self, 'jt_b').new_pin() + Pin(self, 'A').conn = Joint(self, 'jt_a').new_pin() + Pin(self, 'B').conn = Joint(self, 'jt_b').new_pin() - XOR(self, 'xor', latency).out.conn = Pin(self, 'Y', 'L') + XOR(self, 'xor', latency).out.conn = Pin(self, 'Y') self.jt_a.new_pin().conn = self.xor.inp_a self.jt_b.new_pin().conn = self.xor.inp_b - AND(self, 'and_', latency).out.conn = Pin(self, 'C', 'L') + AND(self, 'and_', latency).out.conn = Pin(self, 'C') self.jt_a.new_pin().conn = self.and_.inp_a self.jt_b.new_pin().conn = self.and_.inp_b @@ -852,15 +852,15 @@ Obj.__init__(self, parent, name) ADD(self, 'add_ab', latency) - Pin(self, 'A', 'L').conn = self.add_ab.A - Pin(self, 'B', 'L').conn = self.add_ab.B + Pin(self, 'A').conn = self.add_ab.A + Pin(self, 'B').conn = self.add_ab.B ADD(self, 'add_cy', latency) - Pin(self, 'Cin', 'L').conn = self.add_cy.A + Pin(self, 'Cin').conn = self.add_cy.A self.add_ab.Y.conn = self.add_cy.B - self.add_cy.Y.conn = Pin(self, 'Y', 'L') + self.add_cy.Y.conn = Pin(self, 'Y') - OR(self, 'or_', latency).out.conn = Pin(self, 'C', 'L') + OR(self, 'or_', latency).out.conn = Pin(self, 'C') self.add_cy.C.conn = self.or_.inp_a self.add_ab.C.conn = self.or_.inp_b @@ -873,11 +873,11 @@ for i in range(n): add_c = ADD_C( self, name_i('add_c', i), latency ) c.conn = add_c.Cin - Pin( self, name_i('A', i), 'L' ).conn = add_c.A - Pin( self, name_i('B', i), 'L' ).conn = add_c.B - add_c.Y.conn = Pin( self, name_i('Y', i), 'L' ) + Pin( self, name_i('A', i) ).conn = add_c.A + Pin( self, name_i('B', i) ).conn = add_c.B + add_c.Y.conn = Pin( self, name_i('Y', i) ) c = add_c.C - c.conn = Pin(self, 'C', 'L') + c.conn = Pin(self, 'C') class Sched: def __init__(self):