Skip to content

Instantly share code, notes, and snippets.

@de1o
Created November 19, 2012 04:44
Show Gist options
  • Save de1o/4109024 to your computer and use it in GitHub Desktop.
Save de1o/4109024 to your computer and use it in GitHub Desktop.
input
#for changing the initial number by adjusting the votalge
import argparse
import re
import sys
parser = argparse.ArgumentParser()
parser.add_argument('-VB', dest='vb')
parser.add_argument('-IN', dest='initNum')
parser.add_argument('-DT', dest='delta')
parser.add_argument('-A', dest='a', default='1001011010111101') # pattern for input a, 1101 e.g.
parser.add_argument('-B', dest='b', default='1001010110111101') # pattern for input b, 1011 e.g.
parser.add_argument('-VC', dest='vc', default='11111111111111111111111111111111') # clock 11111111
parser.add_argument('-IT', dest='it') # calcultating intervak
parser.add_argument('-i', dest='input', default='result.inp')
args = parser.parse_args(sys.argv[1:])
f = open(args.input)
c = f.readlines()
f.close()
VB = r'^Vb.*'
VC1 = r'^Vclk1.*'
VC2 = r'^Vclk2.*'
VC3 = r'^Vclk3.*'
VC4 = r'^Vclk4.*'
A1 = r'^Vindina1.*'
A2 = r'^Vindina2.*'
A3 = r'^Vindina3.*'
A4 = r'^Vindina4.*'
B1 = r'^Vindinb1.*'
B2 = r'^Vindinb2.*'
IT = r'^.tran.*'
def genAddOn(initNum, delta, switch):
initNum = int(initNum)
delta = int(delta)
s1 = '0ps 0mv '
s2 = '0ps 0mv '
s3 = '0ps 0mv '
s4 = '0ps 0mv '
for index, ch in enumerate(switch):
if ch=='0':
continue
if index < 8:
s1 += (str(initNum + 1000/delta*index) + 'ps 0mv ')
s1 += (str(initNum + 1000/delta*index + 1) + 'ps 1.035mv ')
s1 += (str(initNum + 1000/delta*index + 2) + 'ps 1.035mv ')
s1 += (str(initNum + 1000/delta*index + 3) + 'ps 0mv ')
elif index < 16:
s2 += (str(initNum + 1000/delta*index) + 'ps 0mv ')
s2 += (str(initNum + 1000/delta*index + 1) + 'ps 1.035mv ')
s2 += (str(initNum + 1000/delta*index + 2) + 'ps 1.035mv ')
s2 += (str(initNum + 1000/delta*index + 3) + 'ps 0mv ')
elif index < 24:
s3 += (str(initNum + 1000/delta*index) + 'ps 0mv ')
s3 += (str(initNum + 1000/delta*index + 1) + 'ps 1.035mv ')
s3 += (str(initNum + 1000/delta*index + 2) + 'ps 1.035mv ')
s3 += (str(initNum + 1000/delta*index + 3) + 'ps 0mv ')
else:
s4 += (str(initNum + 1000/delta*index) + 'ps 0mv ')
s4 += (str(initNum + 1000/delta*index + 1) + 'ps 1.035mv ')
s4 += (str(initNum + 1000/delta*index + 2) + 'ps 1.035mv ')
s4 += (str(initNum + 1000/delta*index + 3) + 'ps 0mv ')
return s1, s2, s3, s4
def chit(lines, it):
for index, line in enumerate(lines):
if re.search(IT, line):
li = line.split()
li[2] = it + 'ps'
if len(li) == 4:
lines[index] = "%s%18s%11s%11s\n" % tuple(li)
elif len(li) == 5:
lines[index] = "%s%18s%11s%11s%10s\n" % tuple(li)
def chVB(lines, vb):
for index, line in enumerate(lines):
if re.search(VB, line):
lines[index] = line.rstrip('\n') + '(0ps 0mv 20ps ' + vb + 'mv)' + '\n'
def chVC(lines, v):
for index, line in enumerate(lines):
if re.search(VC1, line):
print 'find vc1'
lines[index] = line.rstrip('\n') + '(' + v[0] + ')' + '\n'
if re.search(VC2, line):
print 'find vc2'
print v[1]
lines[index] = line.rstrip('\n') + '(' + v[1] + ')' + '\n'
if re.search(VC3, line):
print 'find vc3'
print v[2]
lines[index] = line.rstrip('\n') + '(' + v[2] + ')' + '\n'
if re.search(VC4, line):
print 'find vc4'
print v[3]
lines[index] = line.rstrip('\n') + '(' + v[3] + ')' + '\n'
def chA(lines, v):
for index, line in enumerate(lines):
if re.search(A1, line):
lines[index] = line.rstrip('\n') + '(' + v[0] + ')' + '\n'
if re.search(A2, line):
lines[index] = line.replace(r'(0ps 0mv)', '('+ v[1] + ')')
if re.search(A3, line):
lines[index] = line.replace(r'(0ps 0mv)', '('+ v[2] + ')')
if re.search(A4, line):
lines[index] = line.replace(r'(0ps 0mv)', '('+ v[3] + ')')
def chB(lines, v):
for index, line in enumerate(lines):
if re.search(B1, line):
#print 'find b1'
lines[index] = line.rstrip('\n') + '(' + v[0] + ')' + '\n'
if re.search(B2, line):
#print 'find b2'
lines[index] = line.replace(r'(0ps 0mv)', '('+ v[1] + ')')
if args.vb:
chVB(c, args.vb)
if args.vc:
chVC(c, genAddOn(args.initNum, args.delta, args.vc))
if args.a:
chA(c, genAddOn(args.initNum, args.delta, args.a))
if args.b:
chB(c, genAddOn(args.initNum, args.delta, args.b))
if args.it:
chit(c, args.it)
Wcontent = ''.join(c)
f = open('test.inp', 'w')
f.write(Wcontent)
f.close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment