def METHOD_NAME(self, tx: Transistor, track_pattern=None):
    assert tx.nf % 2 == 0, 'Odd number of fingers are not allowed'
    assert tx.nfin > 0 and tx.nfin < 9, f'Transistor width not supported {tx.w}'
    self.tx = tx
    if tx.nfin < 7:
        ds_b_idx = (1, -1)
    else:
        ds_b_idx = (0, -1)
    if tx.device_type == 'stack':
        self.addWire(self.m1, 'S', 1,       ds_b_idx, (4, 1))
        self.addWire(self.m1, 'D', 1+tx.nf, ds_b_idx, (4, 1))
        for y in range(1, 4):
            self.addVia(self.vt, None, 1, y)
            self.addVia(self.vt, None, 1+tx.nf, y)
    else:
        for x in range(1, 2+tx.nf):
            p = 'D' if x % 2 == 0 else 'S'
            self.addWire(self.m1, p, x, ds_b_idx, (4, 1))
            for y in range(1, 4):
                self.addVia(self.vt, None, x, y)
    for x in range(2, 1+tx.nf, 2):
        self.addWire(self.m1,  'G', x, (5, -1), (6, 1))
        for y in [5, 6]:
            self.addVia(self.vt, None, x, y)
    if track_pattern is not None:
        if 'G' in track_pattern:
            for y in track_pattern['G']:
                if tx.nf > 2:
                    g_b_idx = (2, -1)
                    g_e_idx = (tx.nf, 1)
                else:
                    g_b_idx = (1, -1)
                    g_e_idx = (1+tx.nf, 1)
                self.addWire(self.m2, 'G', y, g_b_idx, g_e_idx)
        if tx.device_type == 'stack':
            s_b_idx = (1, -1)
            s_e_idx = (2,  1)
            d_b_idx = (tx.nf, -1)
            d_e_idx = (1+tx.nf,  1)
        else:
            s_b_idx = (1, -1)
            s_e_idx = (1+tx.nf,  1)
            d_b_idx = (1, -1)
            d_e_idx = (1+tx.nf,  1)
        if 'S' in track_pattern:
            for y in track_pattern['S']:
                self.addWire(self.m2, 'S', y, s_b_idx, s_e_idx)
        if 'D' in track_pattern:
            for y in track_pattern['D']:
                self.addWire(self.m2, 'D', y, d_b_idx, d_e_idx)
        self.drop_via(self.v1)
    # # DEBUG VISUAL AID
    # for y in range(8):
    #     self.addWire(self.m2, None, None, y, (1, -1), (3, 1))
    # Precomputed bounding box
    x1 = self.pdk['Poly']['Pitch']*(2+self.tx.nf)
    y1 = self.pdk['M2']['Pitch']*(self.height//2)
    return {'bbox': [0, 0, x1, y1], 'instance': {}, 'terminals': self.terminals}