keysight.ads.subst

Substrate module.

Automate substrate creation and editing using the keysight.ads.subst package. This is typically imported as:

from keysight.ads import subst

Classes

class keysight.ads.subst.BoundingAreaLayerType

Specifies whether an object has a bounding area layer.

INHERIT = <BoundingAreaLayerType.INHERIT: 1>

This object does inherits the bounding area layer (if defined) from the substrate.

NONE = <BoundingAreaLayerType.NONE: 0>

This object does not have a bounding area layer.

SPECIFIED = <BoundingAreaLayerType.SPECIFIED: 2>

This object does have a bounding area layer.

class keysight.ads.subst.HorizontalItem

Base class for MaterialItem and InterfaceItem.

property bounding_area_layer: int

Specifies the bounding area layer of this object if the type is specified.

property bounding_area_layer_type: BoundingAreaLayerType
property effective_bound_layer: int
get_thickness_mks() float
get_thickness_mks_expr() str
property is_bound: bool
property material_name: str
property substrate: Substrate
property thickness: float | None
property thickness_expr: str
property thickness_is_number: bool
property thickness_unit: Unit
class keysight.ads.subst.InterfaceItem

Represents an infinitely thin interface sandwiched between two materials.

class Purpose

Specifies how this interface is used.

COVER = <Purpose.COVER: 2>
SLOT = <Purpose.SLOT: 1>
STRIP = <Purpose.STRIP: 0>
convert_to_cover() None
property is_cover: bool
property is_non_cover_placeholder: bool

Is this interface a placeholder for a cover?

property is_termination: bool

Is this cover a 377 Ohm termination?

property purpose: Purpose
remove_cover() None
class keysight.ads.subst.LayerItem

Represents a layer of metal defined on an interface.

property bottom_roughness: str
property expand: bool

Does this expand the material above or below?

property interface: InterfaceItem
property interface_index: int
interface_is_forbidden(interface: InterfaceItem) bool

Is this layer allowed not allowed on the interface?

property is_above: bool

Is this layer item above the interface?

property negative: bool

Is this a slot layer item?

property pins_only: bool
property sheet: bool

Is this a sheet that does not expand or intrude into the material above or below?

property thermal_layer_name: str
property top_roughness: str
class keysight.ads.subst.MaterialItem

Represents a slab of material (typically a dielectric) separated from the next slab by an interface.

property is_bottom_infinite_material: bool

Is this material the bottom material and is it covered?

property is_infinite_material: bool

Is this material the bottom or top material and is it covered?

property is_top_infinite_material: bool

Is this material the top material and is it covered?

class keysight.ads.subst.Materials
__init__() None
property conductors: NamedMutableCollectionAbc[SubstrateConductor]
property dielectrics: NamedMutableCollectionAbc[SubstrateDielectric]
property roughness: NamedMutableCollectionAbc[Roughness]
property semiconductors: NamedMutableCollectionAbc[SubstrateSemiconductor]
property superconductors: NamedMutableCollectionAbc[SubstrateSuperconductor]
class keysight.ads.subst.Roughness
__init__(name: str) None
property bbase: str
property dpeaks: str
property huray_a_flat: str
property huray_n: str
property huray_r: str
property huray_ratio_of_a: str
property is_encrypted: bool
property is_foreign: bool
property l2bbase: str
property l2dpeaks: str
property l2rough: str
property l3bbase: str
property l3dpeaks: str
property l3rough: str
property model_type: RoughnessModelType
property name: str
property rough: str
class keysight.ads.subst.Substrate

The main class for substrate data.

property all_layer_numbers: list[int]
property all_material_names: list[str]
property bottom_of_board_interface_index: int
property bounding_area_layer: int

Specifies the bounding area layer of this substrate if the type is specified.

property bounding_area_layer_type: BoundingAreaLayerType
delete_layer_indexed(index: int) None
delete_material_and_interface_indexed(material_index: int, interface_index: int) None
delete_substrate_indexed(index: int) None
delete_via_indexed(index: int) None
find_layer_name_from_number(number: int) str
find_layer_number_from_name(name: str) int
get_interface(index: int) InterfaceItem
get_interface_above(material: MaterialItem) InterfaceItem
get_interface_below(material: MaterialItem) InterfaceItem
get_interface_index(interface: InterfaceItem) int
get_layer_index(layer: LayerItem) int
get_layers_on_interface(interface: InterfaceItem) list[LayerItem]
get_layers_on_interface_matching_role(interface: InterfaceItem, role: ProcessRole) list[LayerItem]
get_material(index: int) MaterialItem
get_material_above(interface: InterfaceItem) MaterialItem
get_material_below(interface: InterfaceItem) MaterialItem
get_material_index(material: MaterialItem) int
get_substrates_on_interface(interface: InterfaceItem) list[SubstrateItem]
get_via_index(via: ViaItem) int
get_vias_intersecting_material(material: MaterialItem) list[ViaItem]
property has_bottom_cover: bool
property has_top_cover: bool
insert_conductor_via(index_or_interface_1: int | InterfaceItem, index_or_interface_2: int | InterfaceItem) ViaItem
insert_dielectric_via(index_or_interface_1: int | InterfaceItem, index_or_interface_2: int | InterfaceItem) ViaItem
insert_layer(index_or_interface: int | InterfaceItem, process_role: ProcessRole, model_type: ModelType = ModelType.USE_DEFAULT) LayerItem
insert_material_and_interface_above(material_index: int) None
insert_material_and_interface_below(material_index: int) None
insert_semiconductor_via(index_or_interface_1: int | InterfaceItem, index_or_interface_2: int | InterfaceItem) ViaItem
insert_substrate(index_or_interface: int | InterfaceItem) SubstrateItem
insert_through_silicon_via(index_or_interface_1: int | InterfaceItem, index_or_interface_2: int | InterfaceItem) ViaItem
insert_via(index_or_interface_1: int | InterfaceItem, index_or_interface_2: int | InterfaceItem, process_role: ProcessRole, model_type: ModelType = ModelType.USE_DEFAULT) ViaItem
interface_index_in_use(index: int) bool
property interfaces: list[InterfaceItem]
is_bottom_interface(interface: InterfaceItem) bool
property is_modified: bool
property is_read_only: bool
is_top_interface(interface: InterfaceItem) bool
property is_writable: bool

Is the library file for this substrate writable?

property layers: list[LayerItem]
property library: Library
property materials: list[MaterialItem]
merge_vias_on_same_layer() None
property name: str

Name of the substrate (must be unique in the library).

property purposes_to_exclude: list[str] | None

Shapes using these purposes will be excluded by EM simulations.

property purposes_to_include: list[str] | None

Shapes using only these purposes will be included by EM simulations.

property roughness_models: list[str]
save_substrate() None
save_substrate_as(new_library: Library, new_subst_name: str) None
property substrates: list[SubstrateItem]
property top_interface: InterfaceItem
property top_interface_index: int
property top_material: MaterialItem
property top_material_index: int
property top_of_board_interface_index: int
property unit: Unit

Unit for this substrate.

property vias: list[ViaItem]
class keysight.ads.subst.SubstrateConductor
__init__(name: str) None
property imag: str
property mur_imag: str
property mur_real: str
property parameter_type: ConductorParamType
property real: str
property tc1: str
property tc2: str
property tnom: str
class keysight.ads.subst.SubstrateDielectric
__init__(name: str) None
property er_imag: str
property er_loss_tangent: str
property er_real: str
property high_freq: str
property loss_type: DielectricLossType
property low_freq: str
property mur_imag: str
property mur_real: str
property value_freq: str
class keysight.ads.subst.SubstrateItem

Represents a nested substrate defined on an interface.

class AlignPosition

When aligning by layer, specifies what part of the layer on the nested substrate item aligns with the parent substrate interface.

BOTTOM_OF_LAYER = <AlignPosition.BOTTOM_OF_LAYER: 1>
TOP_OF_LAYER = <AlignPosition.TOP_OF_LAYER: 0>
class AlignType

Specifies how the nested substrate item aligns with the interface on which it lives.

BOTTOM = <AlignType.BOTTOM: 0>

The bottom interface of the nested substrate item aligns with the parent substrate interface.

LAYER = <AlignType.LAYER: 2>

A layer on the nested substrate item aligns with the parent substrate interface.

TOP = <AlignType.TOP: 1>

The top interface of the nested substrate item aligns with the parent substrate interface.

property align_layer_name: str

Name of the layer to use for alignment if this item aligns by layer.

property align_type: AlignType
property alignment_position: AlignPosition

Specifies whether this substrate item is above or below the layer when aligning by layer.

property interface: InterfaceItem
property interface_index: int
property is_flipped: bool
property is_nested_tech_enabled: bool

Can this substrate item use nested technology?

property layer_map: str
property layer_map_lib_name: str
property library_name: str

Name of the nested technology library for this substrate item.

property offset: float
property offset_unit: Unit
property precedence: int

Specifies the increase in precedence for the items on this substrate item.

set_library_and_substrate_names(library_name: str, substrate_name: str) None
property substrate_name: str

Name of the nested technology substrate for this substrate item.

class keysight.ads.subst.SubstrateMaterial

Base class for materials.

property is_encrypted: bool
property is_foreign: bool
property material_type: Material
property mean_free_electron_path: str
property name: str
property thermal_conductivity: str
property thermal_conductivity_in_z: str
property volumetric_heat_capacity: str
class keysight.ads.subst.SubstrateSemiconductor
__init__(name: str) None
property doping: SemiconductorDoping
property er_real: str
property mur_imag: str
property mur_real: str
property resistivity: str
class keysight.ads.subst.SubstrateSuperconductor
__init__(name: str) None
property critical_temp: str
property london_depth_at_0_k: str
property mur_imag: str
property mur_real: str
property parameter_type: ConductorParamType
property real: str
class keysight.ads.subst.VerticalItem

Base class for LayerItem, ViaItem and SubstrateItem.

class ModelType

Specifies different ways that Vias can be modeled.

CONDUCTOR_VIA_AS_THROUGH_SILICON_VIA = <ModelType.CONDUCTOR_VIA_AS_THROUGH_SILICON_VIA: 1>
THICK_CONDUCTOR = <ModelType.THICK_CONDUCTOR: 2>
USE_DEFAULT = <ModelType.USE_DEFAULT: 0>
property angle_expr: str
property angle_is_number: bool
get_thickness_mks() float
get_thickness_mks_expr() str
property layer_number: int
property material_name: str
property model_type: ModelType
property precedence: int
property process_role: ProcessRole
property substrate: Substrate
property thickness: float | None
property thickness_expr: str
property thickness_is_number: bool
property thickness_unit: Unit
property used_for_em_simulation: bool
class keysight.ads.subst.ViaItem

Represents a via connecting two interfaces.

class DepletionMode

Specifies how the depletion mode is modeled for through silicon vias.

DEEP = <DepletionMode.DEEP: 3>
HF = <DepletionMode.HF: 1>
LF = <DepletionMode.LF: 2>
NONE = <DepletionMode.NONE: 0>
class PinSide

Specifies the pin side for thick conductors.

BOTTOM = <PinSide.BOTTOM: 1>
TOP = <PinSide.TOP: 0>
property bias_voltage: float | None

Bias voltage if this is a through silicon via.

property bias_voltage_expr: str | None
property bias_voltage_is_number: bool
property depletion_mode: DepletionMode | None

Depletion mode if this is a through silicon via.

property fixed_charge: float | None

Fixed charge if this is a through silicon via.

property fixed_charge_expr: str | None
property fixed_charge_is_number: bool
get_liner_thickness_mks() float
get_liner_thickness_mks_expr() str
get_plating_thickness_mks() float
get_plating_thickness_mks_expr() str
property is_conductor_via: bool
property is_plating_enabled: bool

Is this a plated via?

property is_thick_conductor: bool
property is_through_silicon_via: bool

Is this a through silicon via?

property liner_material_name: str | None

Name of the liner material if this is a plated via.

property liner_thickness: float | None
property liner_thickness_expr: str | None
property liner_thickness_is_number: bool

Thickness of the liner if this is a through silicon via.

property liner_thickness_unit: Unit | None

Unit for liner thickness if this is a through silicon via.

property lower_interface: InterfaceItem
property lower_interface_index: int
property pin_side: PinSide | None

Pin side if this is a thick conductor.

property plating_dielectric_material_name: str | None

Name of the plating dielectric material if this is a plated via.

property plating_thickness: float | None

Thickness of the plating if this is a plated via.

property plating_thickness_expr: str | None
property plating_thickness_is_number: bool
property plating_thickness_unit: Unit | None

Unit for plating thickness if this is a plated via.

property roughness: str
swap_interfaces() None
property upper_interface: InterfaceItem
property upper_interface_index: int

Enumerated Types

class keysight.ads.subst.ConductorParamType
RESISTANCE = <ConductorParamType.RESISTANCE: 0>
CONDUCTANCE = <ConductorParamType.CONDUCTANCE: 1>
RESISTIVITY = <ConductorParamType.RESISTIVITY: 2>
class keysight.ads.subst.DielectricLossType
FREQUENCY_INDEPENDENT = <DielectricLossType.FREQUENCY_INDEPENDENT: 0>
SVENSSON_DJORDJEVIC = <DielectricLossType.SVENSSON_DJORDJEVIC: 1>
class keysight.ads.subst.Material

Specifies the type of material.

CONDUCTOR = <Material.CONDUCTOR: 0>
SEMICONDUCTOR = <Material.SEMICONDUCTOR: 1>
SUPERCONDUCTOR = <Material.SUPERCONDUCTOR: 2>
DIELECTRIC = <Material.DIELECTRIC: 3>
class keysight.ads.subst.RoughnessModelType
SMOOTH = <RoughnessModelType.SMOOTH: 0>
HAMMERSTAD = <RoughnessModelType.HAMMERSTAD: 1>
HEMISPHERICAL = <RoughnessModelType.HEMISPHERICAL: 2>
HURAY = <RoughnessModelType.HURAY: 3>
class keysight.ads.subst.SemiconductorDoping
N_TYPE = <SemiconductorDoping.N_TYPE: 0>
P_TYPE = <SemiconductorDoping.P_TYPE: 1>
class keysight.ads.subst.Unit
BAD = <Unit.BAD: 0>
MICRON = <Unit.MICRON: 1>
MILLIMETER = <Unit.MILLIMETER: 2>
CENTIMETER = <Unit.CENTIMETER: 3>
METER = <Unit.METER: 4>
MIL = <Unit.MIL: 5>
INCH = <Unit.INCH: 6>
FOOT = <Unit.FOOT: 7>
NANOMETER = <Unit.NANOMETER: 8>

Functions

keysight.ads.subst.close_substrate(library: Library, subst_name: str) None
keysight.ads.subst.copy_predefined_materials() Materials

Return a copy of the predefined materials database.

keysight.ads.subst.create_substrate_from_template(library: Library, subst_name: str, template_name: str | None = None) Substrate
keysight.ads.subst.create_substrate(library: Library, subst_name: str) Substrate
keysight.ads.subst.delete_substrate(library: Library, subst_name: str) None
keysight.ads.subst.save_substrate(library: Library, subst_name: str) None
keysight.ads.subst.get_conductor_names(library: Library, this_lib_only: bool = True) list[str]
keysight.ads.subst.get_dielectric_names(library: Library, this_lib_only: bool = True) list[str]
keysight.ads.subst.get_roughness_names(library: Library, this_lib_only: bool = True) list[str]
keysight.ads.subst.get_semiconductor_names(library: Library, this_lib_only: bool = True) list[str]
keysight.ads.subst.get_superconductor_names(library: Library, this_lib_only: bool = True) list[str]
keysight.ads.subst.get_unit(unit_name: str) Unit
keysight.ads.subst.load_materials(filename: str) Materials

Return a copy of the materials database.

keysight.ads.subst.open_substrate(library: Library, subst_name: str, mode: str = 'r') Substrate
keysight.ads.subst.save_materials(filename: str, materials: Materials) None

Save the materials database.

keysight.ads.subst.substrate_exists(library: Library, subst_name: str) bool
keysight.ads.subst.ui_unit_name(unit: Unit) str
keysight.ads.subst.unit_conversion_factor(unit: Unit) float
keysight.ads.subst.unit_name(unit: Unit) str
On this page