X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fspec%2Fifaceprint.py;h=7ac7a26f9d03c56c7edc27806baf0866bb213545;hb=90a67695b62e0a1bf41f3ac905ea311601c28219;hp=808985ce5f4fa884939bbb217e73672508f385dd;hpb=096caad8418250693c93ccf90047750704adcaa7;p=pinmux.git diff --git a/src/spec/ifaceprint.py b/src/spec/ifaceprint.py index 808985c..7ac7a26 100644 --- a/src/spec/ifaceprint.py +++ b/src/spec/ifaceprint.py @@ -2,6 +2,82 @@ from copy import deepcopy from collections import OrderedDict +import svgwrite +from math import pi + + +def create_sv(fname, pins): + """unsophisticated drawer of an SVG + """ + + scale = 15 + width = len(pins['pads.north']) * scale + height = len(pins['pads.east']) * scale + woffs = scale*18#-width/2 + hoffs = scale*18#-height/2 + + dwg = svgwrite.Drawing(fname, profile='full', + size=(width+scale*40, height+scale*40)) + dwg.add(dwg.rect((woffs-scale*2, hoffs-scale*2), + (woffs+width-scale*12, hoffs+height-scale*12), + stroke=svgwrite.rgb(255, 255, 16, '%'), + stroke_width=scale/10.0)) + for i, pin in enumerate(pins['pads.west']): + ht = hoffs + height - (i * scale) + scale*0.5 + dwg.add(dwg.line((woffs-scale*2, ht-scale*0.5), + (woffs-scale*4.5, ht-scale*0.5), + stroke=svgwrite.rgb(255, 255, 16, '%'), + stroke_width=scale/10.0)) + dwg.add(dwg.text(pin.upper(), insert=(woffs-scale*12, ht), + fill='white')) + dwg.add(dwg.text("W%d" % (i+1), insert=(woffs-scale*1.5, ht), + fill='white')) + + for i, pin in enumerate(pins['pads.east']): + ht = hoffs + height - (i * scale) + scale*0.5 + wd = width + woffs + scale*2 + dwg.add(dwg.line((wd+scale*2, ht-scale*0.5), + (wd+scale*4.5, ht-scale*0.5), + stroke=svgwrite.rgb(255, 255, 16, '%'), + stroke_width=scale/10.0)) + dwg.add(dwg.text(pin.upper(), insert=(wd+scale*5, ht-scale*0.25), + fill='white')) + dwg.add(dwg.text("E%d" % (i+1), insert=(wd, ht-scale*0.25), + fill='white')) + + for i, pin in enumerate(pins['pads.north']): + wd = woffs + i * scale + scale*1.5 + dwg.add(dwg.line((wd, hoffs-scale*2), + (wd, hoffs-scale*4.5), + stroke=svgwrite.rgb(255, 255, 16, '%'), + stroke_width=scale/10.0)) + pos=(wd, hoffs-scale*5.0) + txt = dwg.text(pin.upper(), insert=pos, fill='white') + txt.rotate(-90, pos) + dwg.add(txt) + pos=(wd+scale*0.25, hoffs-scale*0.25) + txt = dwg.text("N%d" % (i+1), insert=pos, fill='white') + txt.rotate(-90, pos) + dwg.add(txt) + + for i, pin in enumerate(pins['pads.south']): + wd = woffs + i * scale + scale*1.5 + ht = hoffs + height + scale*2 + dwg.add(dwg.line((wd, ht+scale*2), + (wd, ht+scale*4.5), + stroke=svgwrite.rgb(255, 255, 16, '%'), + stroke_width=scale/10.0)) + pos=(wd-scale*0.25, ht+scale*5.0) + txt = dwg.text(pin.upper(), insert=pos, fill='white') + txt.rotate(90, pos) + dwg.add(txt) + pos=(wd-scale*0.25, ht+scale*0.25) + txt = dwg.text("S%d" % (i+1), insert=pos, fill='white') + txt.rotate(90, pos) + dwg.add(txt) + + dwg.save() + def display(of, pins, banksel=None, muxwidth=4): of.write("""\