diff --git a/python/pcb.py b/python/pcb.py
index 51324334c2ab7dbaeedbc5e6293745aea3e48bf1..6b8a760c6c3d6ab55f91c012380338be97948a7c 100755
--- a/python/pcb.py
+++ b/python/pcb.py
@@ -6772,6 +6772,106 @@ class SAMD11D(part):
       self.pad.append(point(d,.225,0))
       self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'A04'))
 
+class ATtiny1624_TSSOP(part):
+   #
+   # ATtiny1624-XUR
+   #
+   def __init__(self,value=''):
+      self.value = value
+      self.pad = [point(0,0,0)]
+      self.labels = []
+      p = 0.65/25.4
+      d = (6.4/2+4.4/2)/2/25.4
+      w = 0.0099/2
+      h = (6.4-4.4)/2/25.4
+      pad = cube(-h,h,-w,w,0,0)
+      l = 0.004
+      #
+      # pin 1
+      #
+      self.shape = translate(pad,-d,3*p,0)
+      self.shape = add(self.shape,cylinder(-d-h,3*p,0,0,w))
+      self.pad.append(point(-d,3*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'.VCC',line=l))
+      #
+      # pin 2
+      #
+      self.shape = add(self.shape,translate(pad,-d,2*p,0))
+      self.pad.append(point(-d,2*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA4',line=l))
+      #
+      # pin 3
+      #
+      self.shape = add(self.shape,translate(pad,-d,1*p,0))
+      self.pad.append(point(-d,1*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA5',line=l))
+      #
+      # pin 4
+      #
+      self.shape = add(self.shape,translate(pad,-d,0*p,0))
+      self.pad.append(point(-d,0*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA6',line=l))
+      #
+      # pin 5
+      #
+      self.shape = add(self.shape,translate(pad,-d,-1*p,0))
+      self.pad.append(point(-d,-1*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA7',line=l))
+      #
+      # pin 6
+      #
+      self.shape = add(self.shape,translate(pad,-d,-2*p,0))
+      self.pad.append(point(-d,-2*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB3',line=l))
+      #
+      # pin 7
+      #
+      self.shape = add(self.shape,translate(pad,-d,-3*p,0))
+      self.pad.append(point(-d,-3*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB2',line=l))
+      #
+      # pin 8
+      #
+      self.shape = add(self.shape,translate(pad,d,-3*p,0))
+      self.pad.append(point(d,-3*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB1',line=l))
+      #
+      # pin 9
+      #
+      self.shape = add(self.shape,translate(pad,d,-2*p,0))
+      self.pad.append(point(d,-2*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PB0',line=l))
+      #
+      # pin 10
+      #
+      self.shape = add(self.shape,translate(pad,d,-1*p,0))
+      self.pad.append(point(d,-1*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'UPDI',line=l))
+      #
+      # pin 11
+      #
+      self.shape = add(self.shape,translate(pad,d,0*p,0))
+      self.pad.append(point(d,0*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA1',line=l))
+      #
+      # pin 12
+      #
+      self.shape = add(self.shape,translate(pad,d,1*p,0))
+      self.pad.append(point(d,1*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA2',line=l))
+      #
+      # pin 13
+      #
+      self.shape = add(self.shape,translate(pad,d,2*p,0))
+      self.pad.append(point(d,2*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PA3',line=l))
+      #
+      # pin 14
+      self.shape = add(self.shape,translate(pad,d,3*p,0))
+      self.pad.append(point(d,3*p,0))
+      self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=l))
+
+
 class ATtiny1614(part):
    #
    # SOIC