Skip to content

Commit

Permalink
Merge pull request #463 from ansys/release/0.1.9_dm_0
Browse files Browse the repository at this point in the history
Publish pyedb-core v0.1.8
  • Loading branch information
drewm102 authored Oct 24, 2024
2 parents 8b89bf6 + 95fa877 commit e86a7d4
Show file tree
Hide file tree
Showing 9 changed files with 106 additions and 45 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/ci_cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: PyAnsys documentation style checks
uses: ansys/actions/doc-style@v5
uses: ansys/actions/doc-style@v8
with:
token: ${{ secrets.GITHUB_TOKEN }}
vale-version: "2.29.6"

smoke-tests:
name: Build and Smoke tests
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ build-backend = "flit_core.buildapi"
[project]
# Check https://flit.readthedocs.io/en/latest/pyproject_toml.html for all available sections
name = "ansys-edb-core"
version = "0.1.8"
version = "0.1.9"
description = "A python wrapper for Ansys Edb service"
readme = "README.rst"
requires-python = ">=3.8"
Expand All @@ -26,7 +26,7 @@ classifiers = [

# FIXME: add ansys-api-edb version
dependencies = [
"ansys-api-edb==1.0.9",
"ansys-api-edb==1.0.10",
"protobuf>=3.19.3,<5",
"grpcio>=1.44.0"
]
Expand Down
11 changes: 6 additions & 5 deletions src/ansys/edb/core/geometry/polygon_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def arc_data(self):
h, incr = 0, 1
p1, p2 = self.points[i], self.points[(i + incr) % n]
if p2.is_arc:
h, incr = p2.arc_height, 2
h, incr = p2.arc_height.double, 2
p2 = self.points[(i + incr) % n]
segments.append(ArcData(p1, p2, height=h))
i += incr
Expand Down Expand Up @@ -225,9 +225,9 @@ def has_self_intersections(self, tol=1e-9):
messages.polygon_data_with_tol_message(self, tol)
).value

@parser.to_polygon_data
@parser.to_polygon_data_list
def remove_self_intersections(self, tol=1e-9):
"""Create a polygon with all self-intersections removed.
"""Remove self-intersections from this polygon.
Parameters
----------
Expand All @@ -236,7 +236,8 @@ def remove_self_intersections(self, tol=1e-9):
Returns
-------
PolygonData
list[.PolygonData]
A list of non self-intersecting polygons.
"""
return self.__stub.RemoveSelfIntersections(
messages.polygon_data_with_tol_message(self, tol)
Expand Down Expand Up @@ -302,7 +303,7 @@ def scale(self, factor, center):
PolygonData
"""
return self.__stub.Transform(
messages.polygon_data_transform_message("scale", factor, center)
messages.polygon_data_transform_message("scale", self, factor, center)
)

@parser.to_polygon_data
Expand Down
2 changes: 1 addition & 1 deletion src/ansys/edb/core/hierarchy/component_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class ComponentGroup(Group):
__stub: ComponentGroupServiceStub = StubAccessor(StubType.component_group)

@classmethod
def create_with_component(cls, layout, name, comp_name):
def create(cls, layout, name, comp_name):
"""Create a component group with a component.
Parameters
Expand Down
41 changes: 18 additions & 23 deletions src/ansys/edb/core/inner/messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ def point_property_message(target, point):
def point_data_rotate_message(point, center, angle):
"""Convert to a ``PointRotateMessage`` object."""
return PointDataRotateMessage(
point=point_message(point), rotation_center=point_message(center), angle=angle
point=point_message(point), rotate_center=point_message(center), rotate_angle=angle
)


Expand Down Expand Up @@ -260,9 +260,9 @@ def polygon_data_pair_with_tolerance_message(pd1, pd2, tol):
)


def _polygon_data_transform_message_point_value(point, value):
def _polygon_data_transform_message_point_value(val, point):
"""Convert to a ``PolygonDataTransformMessage`` object."""
return PolygonDataTransformMessage.PointValueMessage(point=point_message(point), value=value)
return PolygonDataTransformMessage.PointValueMessage(point=point_message(point), value=val)


def polygon_data_transform_message(op, pd, *args):
Expand Down Expand Up @@ -310,7 +310,7 @@ def polygon_data_with_points_message(pd, point=None, polygon=None):
elif polygon is not None:
payload["polygon"] = polygon_data_message(polygon)

return PolygonDataWithPointsMessage(polygon=polygon_data_message(pd), **payload)
return PolygonDataWithPointsMessage(target=polygon_data_message(pd), **payload)


def polygon_data_expand_message(pd, offset, tol, round_corner, max_corner_expansion):
Expand Down Expand Up @@ -481,7 +481,7 @@ def transform_message(transform):
else:
return TransformMessage(
scale=value_message(transform.scale),
angle=value_message(transform.angle),
angle=value_message(transform.rotation),
mirror=transform.mirror,
offset_x=value_message(transform.offset_x),
offset_y=value_message(transform.offset_y),
Expand All @@ -502,9 +502,9 @@ def point3d_message(point3d):
return Point3DMessage(x=value_message(x), y=value_message(y), z=value_message(z))


def point_3d_property_message(target, value):
def point_3d_property_message(target, val):
"""Convert to a ``Point3DPropertyMessage`` object."""
return Point3DPropertyMessage(target=edb_obj_message(target), origin=point3d_message(value))
return Point3DPropertyMessage(target=edb_obj_message(target), value=point3d_message(val))


def layout_get_items_message(layout, item_type):
Expand Down Expand Up @@ -543,14 +543,14 @@ def temperature_settings_message(settings):
)


def hfss_extent_message(val):
def hfss_extent_message(hfss_val):
"""Convert to an ``ExtentMessage`` object."""
if type(val) == float or type(val) == int:
value = val
if type(hfss_val) == float or type(hfss_val) == int:
val = hfss_val
absolute = False
else:
value, absolute = val
return HfssExtentMessage(value=value, absolute=absolute)
val, absolute = hfss_val
return HfssExtentMessage(value=val, absolute=absolute)


def hfss_extent_info_message(hfss_info):
Expand Down Expand Up @@ -722,7 +722,7 @@ def primitive_edge_params_message(primitive, point):
def pad_edge_params_message(padstack_instance, layer, arc):
"""Convert to a ``PadEdgeParamsMessage`` object."""
return PadEdgeParamsMessage(
padstack_instance=padstack_instance.msg,
padstack=padstack_instance.msg,
layer=layer_ref_message(layer),
arc=arc_message(arc),
)
Expand Down Expand Up @@ -932,13 +932,6 @@ def net_ref_message(net):
return NetRefMessage(id=edb_obj_message(net.msg if net is not None else 0))


def adaptive_frequency_message(frequency: str, max_delta_s: float, max_passes: int):
"""Convert to an ``AdaptiveFrequencyDataMessage`` object."""
return AdaptiveFrequencyDataMessage(
adaptive_frequency=frequency, max_delta=str(max_delta_s), max_passes=max_passes
)


def _length_mesh_operation_message(mesh_op):
return LengthMeshOperationMessage(
max_length=mesh_op.max_length,
Expand Down Expand Up @@ -1097,15 +1090,17 @@ def differential_pair_creation_message(layout, name, pos_net, neg_net):
return DifferentialPairCreationMessage(
layout=edb_obj_message(layout),
name=name,
pos_net=net_ref_message(pos_net),
neg_net=net_ref_message(neg_net),
positive_net=net_ref_message(pos_net),
negative_net=net_ref_message(neg_net),
)


def differential_pair_net_refs_message(dp, pos_net, neg_net):
"""Convert to a ``DifferentialPairNetRefsMessage`` object."""
return DifferentialPairNetRefsMessage(
dp=edb_obj_message(dp), pos_net=net_ref_message(pos_net), neg_net=net_ref_message(neg_net)
dp=edb_obj_message(dp),
positive_net=net_ref_message(pos_net),
negative_net=net_ref_message(neg_net),
)


Expand Down
50 changes: 49 additions & 1 deletion src/ansys/edb/core/layout/layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ def zone_primitives(self):
This property is read-only.
"""
return [Primitive(msg) for msg in self.__stub.GetZonePrimitives(self.msg)]
return [Primitive(msg).cast() for msg in self.__stub.GetZonePrimitives(self.msg).items]

@property
def fixed_zone_primitive(self):
Expand Down Expand Up @@ -464,3 +464,51 @@ def snap_primitives(self, layer, tol="0.05um", check_connectivity=True):
self.__stub.SnapPrimitives(
_geometry_simplifications_settings_with_option_msg(self, layer, tol, check_connectivity)
)

def create_mesh_region(
self,
xy_exp,
pos_z_exp,
neg_z_exp,
use_active_nets,
incl_ref,
ext,
num_x_partitions,
num_y_partitions,
):
"""Designate a mesh region in a design and create partitions for simulation.
Parameters
----------
xy_exp: :class:`.Value`
Horizontal padding on both sides of the new mesh.
pos_z_exp: :class:`.Value`
Vertical padding above the new mesh region.
neg_z_exp: :class:`.Value`
Vertical padding below the new mesh region.
use_active_nets: bool
True will create a new mesh region defined by the active nets in the design.
False will create a new mesh region defined by the dielectric extents in the design.
incl_ref: bool
True will include bot positive nets and reference nets in the definition of the new mesh region.
False will not include bot positive nets and reference nets.
ext: :class:`.ExtentType`
Geometry extent type.
num_x_partitions: int
Number of partitions to create on x axis in the new mesh region.
num_y_partitions: int
Number of partitions to create on y axis in the new mesh region.
"""
self.__stub.CreateMeshRegion(
layout_pb2.CreateMeshRegionMessage(
layout=self.msg,
xy_exp=messages.value_message(xy_exp),
pos_z_exp=messages.value_message(pos_z_exp),
neg_z_exp=messages.value_message(neg_z_exp),
use_active_nets=use_active_nets,
incl_ref=incl_ref,
ext=ext.value,
num_x_partitions=num_x_partitions,
num_y_partitions=num_y_partitions,
)
)
27 changes: 15 additions & 12 deletions src/ansys/edb/core/primitive/primitive.py
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,8 @@ def set_parameters(self, center_x, center_y, radius):
)
)

def get_polygon_data(self):
@property
def polygon_data(self):
""":class:`.PolygonData`: \
Polygon data object of the circle."""
return Circle.render(*self.get_parameters(), self.is_void)
Expand Down Expand Up @@ -1220,22 +1221,24 @@ def set_traj(self, x1, y1, x2, y2):
Parameters
----------
x1 : :class:`.Value`
X value of the the start point.
X value of the start point.
y1 : :class:`.Value`
Y value of the the start point.
Y value of the start point.
x2 : :class:`.Value`
X value of the the end point.
X value of the end point.
y2 : :class:`.Value`
Y value of the end point.
"""
self.__stub.SetTraj(
target=self.msg,
traj=bondwire_pb2.BondwireTrajMessage(
x1=messages.value_message(x1),
y1=messages.value_message(y1),
x2=messages.value_message(x2),
y2=messages.value_message(y2),
),
bondwire_pb2.SetBondwireTrajMessage(
target=self.msg,
traj=bondwire_pb2.BondwireTrajMessage(
x1=messages.value_message(x1),
y1=messages.value_message(y1),
x2=messages.value_message(x2),
y2=messages.value_message(y2),
),
)
)

@property
Expand Down Expand Up @@ -1512,7 +1515,7 @@ def solderball_layer(self, solderball_layer):
padstack_instance_pb2.PadstackInstSetSolderBallLayerMessage(
target=self.msg,
layer=solderball_layer.msg,
)(self, solderball_layer)
)
)

@property
Expand Down
9 changes: 9 additions & 0 deletions src/ansys/edb/core/simulation_setup/simulation_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,15 @@ def via_material(self):
def via_material(self, via_material):
self.__stub.SetViaMaterial(messages.string_property_message(self, via_material))

@property
def mesh_for_via_plating(self):
""":obj:`bool`: Flag indicating if meshing for via plating is enabled."""
return self.__stub.GetMeshForViaPlating(self.msg).value

@mesh_for_via_plating.setter
def mesh_for_via_plating(self, mesh_for_via_plating):
self.__stub.SetMeshForViaPlating(messages.bool_property_message(self, mesh_for_via_plating))

@property
def model_type(self):
""":class:`.ModelType`: model type."""
Expand Down
4 changes: 4 additions & 0 deletions tests/e2e/scratch/sim_setup_scratch.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ def do_advanced_test(settings: HFSSAdvancedSettings):
settings.via_material = "new_via_material"
new_via_material = settings.via_material

og_mesh_via_plating = settings.mesh_for_via_plating
settings.mesh_for_via_plating = not og_mesh_via_plating
new_mesh_via_plating = settings.mesh_for_via_plating

og_ic_mode_auto_resolution = settings.ic_mode_auto_resolution
settings.ic_mode_auto_resolution = not og_ic_mode_auto_resolution
new_ic_mode_auto_resolution = settings.ic_mode_auto_resolution
Expand Down

0 comments on commit e86a7d4

Please sign in to comment.