Created
November 19, 2012 04:44
-
-
Save de1o/4109024 to your computer and use it in GitHub Desktop.
input
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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