Skip to content

Parametric Cells

Here are the parametric components available in the PDK.

add_pads_top

.. autofunction:: ihp.cells.add_pads_top :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.add_pads_top(component='straight', cross_section='metal_routing', pad_port_name='e1', bend='wire_corner', straight_separation=15.0, pad_pitch=100.0, port_type='electrical', allow_width_mismatch=True, fanout_length=80, route_width=0).copy()
c.draw_ports()
c.plot()

.. raw:: html

bend_euler

.. autofunction:: ihp.cells.bend_euler :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.bend_euler(angle=90, p=0.5, cross_section='strip', allow_min_radius_violation=False).copy()
c.draw_ports()
c.plot()

.. raw:: html

bend_metal

.. autofunction:: ihp.cells.bend_metal :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.bend_metal(angle=90, cross_section='metal_routing').copy()
c.draw_ports()
c.plot()

.. raw:: html

bend_s

.. autofunction:: ihp.cells.bend_s :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.bend_s(size=(11, 1.8), cross_section='strip', allow_min_radius_violation=False).copy()
c.draw_ports()
c.plot()

.. raw:: html

bend_s_metal

.. autofunction:: ihp.cells.bend_s_metal :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.bend_s_metal(size=(11, 1.8), cross_section='metal_routing', allow_min_radius_violation=True).copy()
c.draw_ports()
c.plot()

.. raw:: html

bondpad

.. autofunction:: ihp.cells.bondpad :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.bondpad(shape='octagon', diameter=80.0, layer_top_metal='TopMetal2drawing', layer_top_metal_pin='TopMetal2pin', layer_passiv='Passivpillar', layer_dfpad='dfpaddrawing', bbox_offsets=(-2.1, 0), flip_chip=False).copy()
c.draw_ports()
c.plot()

.. raw:: html

bondpad_array

.. autofunction:: ihp.cells.bondpad_array :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.bondpad_array(n_pads=4, pad_pitch=100.0, pad_diameter=80.0, shape='octagon', layer_top_metal='TopMetal2drawing', layer_top_metal_pin='TopMetal2pin', layer_passiv='Passivpillar', layer_dfpad='dfpaddrawing', bbox_offsets=(-2.1, 0)).copy()
c.draw_ports()
c.plot()

.. raw:: html

cmim

.. autofunction:: ihp.cells.cmim :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.cmim(width=6.0, length=6.0, layer_metal5='Metal5drawing', layer_mim='MIMdrawing', layer_vmim='Vmimdrawing', layer_topmetal1='TopMetal1drawing', layer_cap_mark='MemCapdrawing', layer_m4nofill='Metal4nofill', layer_m5nofill='Metal5nofill', layer_tm1nofill='TopMetal1nofill', layer_tm2nofill='TopMetal2nofill', layer_text='TEXTdrawing', layer_metal5label='Metal5label', layer_topmetal1label='TopMetal1label', layer_metal5pin='Metal5pin', layer_topmetal1pin='TopMetal1pin', model='cmim').copy()
c.draw_ports()
c.plot()

.. raw:: html

cmom

.. autofunction:: ihp.cells.cmom :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.cmom(nfingers=1, length=4.0, spacing=0.26, botmetal='Metal1', topmetal='Metal3', layer_metal1='Metal1drawing', layer_metal2='Metal2drawing', layer_metal3='Metal3drawing', layer_metal4='Metal4drawing', layer_metal5='Metal5drawing', layer_metal1pin='Metal1pin', layer_metal2pin='Metal2pin', layer_metal3pin='Metal3pin', layer_metal4pin='Metal4pin', layer_metal5pin='Metal5pin', layer_metal1label='Metal1label', layer_metal2label='Metal2label', layer_metal3label='Metal3label', layer_metal4label='Metal4label', layer_metal5label='Metal5label', layer_metal1nofill='Metal1nofill', layer_metal2nofill='Metal2nofill', layer_metal3nofill='Metal3nofill', layer_metal4nofill='Metal4nofill', layer_metal5nofill='Metal5nofill', layer_cap_mark='MemCapdrawing', layer_text='TEXTdrawing', model='cmom').copy()
c.draw_ports()
c.plot()

.. raw:: html

dantenna

.. autofunction:: ihp.cells.dantenna :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.dantenna(width=0.78, length=0.78, addRecLayer='t', guardRingType='none', guardRingDistance=1.0).copy()
c.draw_ports()
c.plot()

.. raw:: html

dpantenna

.. autofunction:: ihp.cells.dpantenna :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.dpantenna(width=0.78, length=0.78, addRecLayer='t', guardRingType='none', guardRingDistance=1.0).copy()
c.draw_ports()
c.plot()

.. raw:: html

esd_nmos

.. autofunction:: ihp.cells.esd_nmos :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.esd_nmos(width=50.0, length=0.5, nf=10, model='nmoscl_2', layer_pwell='PWelldrawing', layer_activ='Activdrawing', layer_gatpoly='GatPolydrawing', layer_nsd='nSDdrawing', layer_cont='Contdrawing', layer_metal1='Metal1drawing', layer_metal1_pin='Metal1pin', layer_metal2='Metal2drawing', layer_metal2_pin='Metal2pin', layer_esd='Recogesd').copy()
c.draw_ports()
c.plot()

.. raw:: html

guard_ring

.. autofunction:: ihp.cells.guard_ring :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.guard_ring(width=0.5, guardRingSpacing=0.14, guardRingType='psub', bbox=((-5, -5), (5, 5)), layer_activ='Activdrawing', layer_cont='Contdrawing', layer_metal1='Metal1drawing', layer_psd='pSDdrawing', layer_nwell='NWelldrawing', layer_nsd='nSDdrawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

inductor2

.. autofunction:: ihp.cells.inductor2 :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.inductor2(width=2.0, space=2.1, diameter=25.35, vias_width=0.9, resistance=0.5777, inductance=3.3303e-11, terminal_1_length=30.0, turns=1, layer_metal_1='TopMetal1drawing', layer_metal_2='TopMetal2drawing', layer_inductor='INDdrawing', layer_metal_1_pin='TopMetal1pin', layer_metal_2_pin='TopMetal2pin', layer_ind_pin='INDpin', layer_via='TopVia2drawing', layers_no_fill=('Activnofill', 'GatPolynofill', 'Metal1nofill', 'Metal2nofill', 'Metal3nofill', 'Metal4nofill', 'Metal5nofill', 'TopMetal1nofill', 'TopMetal2nofill', 'PWellblock', 'NoRCXdrawing')).copy()
c.draw_ports()
c.plot()

.. raw:: html

inductor3

.. autofunction:: ihp.cells.inductor3 :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.inductor3(width=2.0, space=2.1, diameter=25.84, vias_width=0.9, resistance=1.386, inductance=2.215e-10, terminal_1_length=30.0, turns=2, layer_metal_1='TopMetal1drawing', layer_metal_2='TopMetal2drawing', layer_inductor='INDdrawing', layer_metal_1_pin='TopMetal1pin', layer_metal_2_pin='TopMetal2pin', layer_ind_pin='INDpin', layer_via='TopVia2drawing', layers_no_fill=('Activnofill', 'GatPolynofill', 'Metal1nofill', 'Metal2nofill', 'Metal3nofill', 'Metal4nofill', 'Metal5nofill', 'TopMetal1nofill', 'TopMetal2nofill', 'PWellblock', 'NoRCXdrawing')).copy()
c.draw_ports()
c.plot()

.. raw:: html

nmos

.. autofunction:: ihp.cells.nmos :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.nmos(width=0.15, length=0.13, nf=1, m=1, model='sg13_lv_nmos').copy()
c.draw_ports()
c.plot()

.. raw:: html

nmos_hv

.. autofunction:: ihp.cells.nmos_hv :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.nmos_hv(width=0.6, length=0.45, nf=1, m=1, model='sg13_hv_nmos').copy()
c.draw_ports()
c.plot()

.. raw:: html

npn13G2

.. autofunction:: ihp.cells.npn13G2 :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.npn13G2(baspolyx=0.3, bipwinx=0.07, bipwiny=0.1, empolyx=0.15, empolyy=0.18, STI=0.44, emitter_length=0.9, emitter_width=0.7, Nx=1, Ny=1, text='npn13G2', CMetY1=0, CMetY2=0).copy()
c.draw_ports()
c.plot()

.. raw:: html

npn13G2L

.. autofunction:: ihp.cells.npn13G2L :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.npn13G2L(emitter_length=1, emitter_width=0.07, Nx=1).copy()
c.draw_ports()
c.plot()

.. raw:: html

npn13G2V

.. autofunction:: ihp.cells.npn13G2V :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.npn13G2V(emitter_length=1, emitter_width=0.12, Nx=1).copy()
c.draw_ports()
c.plot()

.. raw:: html

ntap1

.. autofunction:: ihp.cells.ntap1 :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.ntap1(width=1.0, length=1.0, rows=1, cols=1, layer_nwell='NWelldrawing', layer_activ='Activdrawing', layer_nsd='nSDdrawing', layer_cont='Contdrawing', layer_metal1='Metal1drawing', layer_metal1_pin='Metal1pin').copy()
c.draw_ports()
c.plot()

.. raw:: html

pack_doe

.. autofunction:: ihp.cells.pack_doe :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.pack_doe(do_permutations=False).copy()
c.draw_ports()
c.plot()

pack_doe_grid

.. autofunction:: ihp.cells.pack_doe_grid :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.pack_doe_grid(do_permutations=False, with_text=False).copy()
c.draw_ports()
c.plot()

pmos

.. autofunction:: ihp.cells.pmos :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.pmos(width=0.15, length=0.13, nf=1, m=1, model='sg13_lv_pmos').copy()
c.draw_ports()
c.plot()

.. raw:: html

pmos_hv

.. autofunction:: ihp.cells.pmos_hv :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.pmos_hv(width=0.3, length=0.4, nf=1, m=1, model='sg13_hv_pmos').copy()
c.draw_ports()
c.plot()

.. raw:: html

pnpMPA

.. autofunction:: ihp.cells.pnpMPA :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.pnpMPA(length=2, width=0.7).copy()
c.draw_ports()
c.plot()

.. raw:: html

ptap1

.. autofunction:: ihp.cells.ptap1 :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.ptap1(width=1.0, length=1.0, rows=1, cols=1, layer_activ='Activdrawing', layer_psd='pSDdrawing', layer_cont='Contdrawing', layer_metal1='Metal1drawing', layer_metal1_pin='Metal1pin').copy()
c.draw_ports()
c.plot()

.. raw:: html

rfcmim

.. autofunction:: ihp.cells.rfcmim :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.rfcmim(width=7.0, length=7.0, layer_pwellblock='PWellblock', layer_metal5='Metal5drawing', layer_mim='MIMdrawing', layer_vmim='Vmimdrawing', layer_topmetal1='TopMetal1drawing', layer_cap_mark='MemCapdrawing', layer_m4nofill='Metal4nofill', layer_m5nofill='Metal5nofill', layer_tm1nofill='TopMetal1nofill', layer_tm2nofill='TopMetal2nofill', layer_activ='Activdrawing', layer_cont='Contdrawing', layer_metal1='Metal1drawing', layer_psd='pSDdrawing', layer_activnoqrc='Activnoqrc', layer_metal1noqrc='Metal1noqrc', layer_metal2noqrc='Metal2noqrc', layer_metal3noqrc='Metal3noqrc', layer_metal4noqrc='Metal4noqrc', layer_metal5noqrc='Metal5noqrc', layer_topmetal1noqrc='TopMetal1noqrc', layer_text='TEXTdrawing', layer_metal1pin='Metal1pin', layer_metal5pin='Metal5pin', layer_topmetal1pin='TopMetal1pin', layer_metal5label='Metal5label', layer_topmetal1label='TopMetal1label', layer_metal1label='Metal1label', model='rfcmim').copy()
c.draw_ports()
c.plot()

.. raw:: html

rfnmos

.. autofunction:: ihp.cells.rfnmos :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.rfnmos(width=1.0, length=0.13, nf=1, m=1, cnt_rows=1, met2_cont=True, gat_ring=True, guard_ring='Yes', model='sg13_lv_nmos').copy()
c.draw_ports()
c.plot()

.. raw:: html

rfnmos_hv

.. autofunction:: ihp.cells.rfnmos_hv :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.rfnmos_hv(width=1.0, length=0.45, nf=1, m=1, cnt_rows=1, met2_cont=True, gat_ring=True, guard_ring='Yes', model='sg13_hv_nmos').copy()
c.draw_ports()
c.plot()

.. raw:: html

rfpmos

.. autofunction:: ihp.cells.rfpmos :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.rfpmos(width=1.0, length=0.13, nf=1, m=1, cnt_rows=1, met2_cont=True, gat_ring=True, guard_ring='Yes', model='sg13_lv_pmos').copy()
c.draw_ports()
c.plot()

.. raw:: html

rfpmos_hv

.. autofunction:: ihp.cells.rfpmos_hv :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.rfpmos_hv(width=1.0, length=0.4, nf=1, m=1, cnt_rows=1, met2_cont=True, gat_ring=True, guard_ring='Yes', model='sg13_hv_pmos').copy()
c.draw_ports()
c.plot()

.. raw:: html

rhigh

.. autofunction:: ihp.cells.rhigh :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.rhigh(dy=0.96, dx=0.5, model='rhigh', layer_poly='PolyResdrawing', layer_heat='HeatResdrawing', layer_gate='GatPolydrawing', layer_contact='Contdrawing', layer_metal1='Metal1drawing', layer_metal1_pin='Metal1pin', layer_pSD='pSDdrawing', layer_nSD='nSDdrawing', layer_block='EXTBlockdrawing', layer_sal_block='SalBlockdrawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

rppd

.. autofunction:: ihp.cells.rppd :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.rppd(dy=0.5, dx=0.5, model='rppd', layer_poly='PolyResdrawing', layer_heat='HeatResdrawing', layer_gate='GatPolydrawing', layer_contact='Contdrawing', layer_metal1='Metal1drawing', layer_metal1_pin='Metal1pin', layer_pSD='pSDdrawing', layer_block='EXTBlockdrawing', layer_sal_block='SalBlockdrawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

rsil

.. autofunction:: ihp.cells.rsil :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.rsil(dy=0.5, dx=0.5, model='rsil', layer_poly='PolyResdrawing', layer_heat='HeatResdrawing', layer_gate='GatPolydrawing', layer_contact='Contdrawing', layer_metal1='Metal1drawing', layer_metal1_pin='Metal1pin', layer_res_mark='RESdrawing', layer_block='EXTBlockdrawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

sealring

.. autofunction:: ihp.cells.sealring :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.sealring(width=200.0, height=200.0, ring_width=5.0, layer_metal1='Metal1drawing', layer_metal2='Metal2drawing', layer_metal3='Metal3drawing', layer_metal4='Metal4drawing', layer_metal5='Metal5drawing', layer_topmetal1='TopMetal1drawing', layer_topmetal2='TopMetal2drawing', layer_via1='Via1drawing', layer_via2='Via2drawing', layer_via3='Via3drawing', layer_via4='Via4drawing', layer_topvia1='TopVia1drawing', layer_topvia2='TopVia2drawing', layer_sealring='EdgeSealdrawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

straight

.. autofunction:: ihp.cells.straight :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.straight(length=10, cross_section='strip', npoints=2).copy()
c.draw_ports()
c.plot()

.. raw:: html

straight_metal

.. autofunction:: ihp.cells.straight_metal :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.straight_metal(length=10, cross_section='metal_routing').copy()
c.draw_ports()
c.plot()

.. raw:: html

svaricap

.. autofunction:: ihp.cells.svaricap :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.svaricap(width=1.0, length=1.0, nf=1, model='sg13_hv_svaricap', layer_nwell='NWelldrawing', layer_activ='Activdrawing', layer_gatpoly='GatPolydrawing', layer_nsd='nSDdrawing', layer_cont='Contdrawing', layer_metal1='Metal1drawing', layer_metal1_pin='Metal1pin', layer_varicap='Varicapdrawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

text_rectangular

.. autofunction:: ihp.cells.text_rectangular :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.text_rectangular(text='abc', size=3, justify='left', layer='TopMetal2drawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

text_rectangular_multi_layer

.. autofunction:: ihp.cells.text_rectangular_multi_layer :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.text_rectangular_multi_layer(text='abc', layers=('TopMetal2drawing',), text_factory='text_rectangular').copy()
c.draw_ports()
c.plot()

.. raw:: html

via_array

.. autofunction:: ihp.cells.via_array :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.via_array(via_type='Via1', columns=2, rows=2, layer_cont='Contdrawing', layer_via1='Via1drawing', layer_via2='Via2drawing', layer_via3='Via3drawing', layer_via4='Via4drawing', layer_vmim='Vmimdrawing', layer_topvia1='TopVia1drawing', layer_topvia2='TopVia2drawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

via_stack

.. autofunction:: ihp.cells.via_stack :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.via_stack(bottom_layer='Metal1', top_layer='Metal2', size=(10.0, 10.0), vn_columns=2, vn_rows=2, vt1_columns=1, vt1_rows=1, vt2_columns=1, vt2_rows=1, layer_activ='Activdrawing', layer_gatpoly='GatPolydrawing', layer_metal1='Metal1drawing', layer_metal2='Metal2drawing', layer_metal3='Metal3drawing', layer_metal4='Metal4drawing', layer_metal5='Metal5drawing', layer_topmetal1='TopMetal1drawing', layer_topmetal2='TopMetal2drawing', layer_activ_pin='Activpin', layer_gatpoly_pin='GatPolypin', layer_metal1_pin='Metal1pin', layer_metal2_pin='Metal2pin', layer_metal3_pin='Metal3pin', layer_metal4_pin='Metal4pin', layer_metal5_pin='Metal5pin', layer_topmetal1_pin='TopMetal1pin', layer_topmetal2_pin='TopMetal2pin', layer_cont='Contdrawing', layer_via1='Via1drawing', layer_via2='Via2drawing', layer_via3='Via3drawing', layer_via4='Via4drawing', layer_topvia1='TopVia1drawing', layer_topvia2='TopVia2drawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

via_stack_with_pads

.. autofunction:: ihp.cells.via_stack_with_pads :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.via_stack_with_pads(bottom_layer='Metal1', top_layer='TopMetal2', size=(10.0, 10.0), pad_size=(20.0, 20.0), pad_spacing=50.0, layer_activ='Activdrawing', layer_gatpoly='GatPolydrawing', layer_metal1='Metal1drawing', layer_metal2='Metal2drawing', layer_metal3='Metal3drawing', layer_metal4='Metal4drawing', layer_metal5='Metal5drawing', layer_topmetal1='TopMetal1drawing', layer_topmetal2='TopMetal2drawing', layer_activ_pin='Activpin', layer_gatpoly_pin='GatPolypin', layer_metal1_pin='Metal1pin', layer_metal2_pin='Metal2pin', layer_metal3_pin='Metal3pin', layer_metal4_pin='Metal4pin', layer_metal5_pin='Metal5pin', layer_topmetal1_pin='TopMetal1pin', layer_topmetal2_pin='TopMetal2pin', layer_cont='Contdrawing', layer_via1='Via1drawing', layer_via2='Via2drawing', layer_via3='Via3drawing', layer_via4='Via4drawing', layer_topvia1='TopVia1drawing', layer_topvia2='TopVia2drawing').copy()
c.draw_ports()
c.plot()

.. raw:: html

wire_corner

.. autofunction:: ihp.cells.wire_corner :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.wire_corner(cross_section='metal_routing').copy()
c.draw_ports()
c.plot()

.. raw:: html

wire_corner45

.. autofunction:: ihp.cells.wire_corner45 :noindex:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

from ihp import PDK
from ihp import cells

PDK.activate()

c = cells.wire_corner45(cross_section='metal_routing', radius=10, with_corner90_ports=True).copy()
c.draw_ports()
c.plot()

.. raw:: html