Skip to content

Commit e86a7d4

Browse files
authored
Merge pull request #463 from ansys/release/0.1.9_dm_0
Publish pyedb-core v0.1.8
2 parents 8b89bf6 + 95fa877 commit e86a7d4

File tree

9 files changed

+106
-45
lines changed

9 files changed

+106
-45
lines changed

.github/workflows/ci_cd.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ jobs:
3333
runs-on: ubuntu-latest
3434
steps:
3535
- name: PyAnsys documentation style checks
36-
uses: ansys/actions/doc-style@v5
36+
uses: ansys/actions/doc-style@v8
3737
with:
3838
token: ${{ secrets.GITHUB_TOKEN }}
39+
vale-version: "2.29.6"
3940

4041
smoke-tests:
4142
name: Build and Smoke tests

pyproject.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ build-backend = "flit_core.buildapi"
55
[project]
66
# Check https://flit.readthedocs.io/en/latest/pyproject_toml.html for all available sections
77
name = "ansys-edb-core"
8-
version = "0.1.8"
8+
version = "0.1.9"
99
description = "A python wrapper for Ansys Edb service"
1010
readme = "README.rst"
1111
requires-python = ">=3.8"
@@ -26,7 +26,7 @@ classifiers = [
2626

2727
# FIXME: add ansys-api-edb version
2828
dependencies = [
29-
"ansys-api-edb==1.0.9",
29+
"ansys-api-edb==1.0.10",
3030
"protobuf>=3.19.3,<5",
3131
"grpcio>=1.44.0"
3232
]

src/ansys/edb/core/geometry/polygon_data.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def arc_data(self):
109109
h, incr = 0, 1
110110
p1, p2 = self.points[i], self.points[(i + incr) % n]
111111
if p2.is_arc:
112-
h, incr = p2.arc_height, 2
112+
h, incr = p2.arc_height.double, 2
113113
p2 = self.points[(i + incr) % n]
114114
segments.append(ArcData(p1, p2, height=h))
115115
i += incr
@@ -225,9 +225,9 @@ def has_self_intersections(self, tol=1e-9):
225225
messages.polygon_data_with_tol_message(self, tol)
226226
).value
227227

228-
@parser.to_polygon_data
228+
@parser.to_polygon_data_list
229229
def remove_self_intersections(self, tol=1e-9):
230-
"""Create a polygon with all self-intersections removed.
230+
"""Remove self-intersections from this polygon.
231231
232232
Parameters
233233
----------
@@ -236,7 +236,8 @@ def remove_self_intersections(self, tol=1e-9):
236236
237237
Returns
238238
-------
239-
PolygonData
239+
list[.PolygonData]
240+
A list of non self-intersecting polygons.
240241
"""
241242
return self.__stub.RemoveSelfIntersections(
242243
messages.polygon_data_with_tol_message(self, tol)
@@ -302,7 +303,7 @@ def scale(self, factor, center):
302303
PolygonData
303304
"""
304305
return self.__stub.Transform(
305-
messages.polygon_data_transform_message("scale", factor, center)
306+
messages.polygon_data_transform_message("scale", self, factor, center)
306307
)
307308

308309
@parser.to_polygon_data

src/ansys/edb/core/hierarchy/component_group.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class ComponentGroup(Group):
2929
__stub: ComponentGroupServiceStub = StubAccessor(StubType.component_group)
3030

3131
@classmethod
32-
def create_with_component(cls, layout, name, comp_name):
32+
def create(cls, layout, name, comp_name):
3333
"""Create a component group with a component.
3434
3535
Parameters

src/ansys/edb/core/inner/messages.py

+18-23
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ def point_property_message(target, point):
202202
def point_data_rotate_message(point, center, angle):
203203
"""Convert to a ``PointRotateMessage`` object."""
204204
return PointDataRotateMessage(
205-
point=point_message(point), rotation_center=point_message(center), angle=angle
205+
point=point_message(point), rotate_center=point_message(center), rotate_angle=angle
206206
)
207207

208208

@@ -260,9 +260,9 @@ def polygon_data_pair_with_tolerance_message(pd1, pd2, tol):
260260
)
261261

262262

263-
def _polygon_data_transform_message_point_value(point, value):
263+
def _polygon_data_transform_message_point_value(val, point):
264264
"""Convert to a ``PolygonDataTransformMessage`` object."""
265-
return PolygonDataTransformMessage.PointValueMessage(point=point_message(point), value=value)
265+
return PolygonDataTransformMessage.PointValueMessage(point=point_message(point), value=val)
266266

267267

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

313-
return PolygonDataWithPointsMessage(polygon=polygon_data_message(pd), **payload)
313+
return PolygonDataWithPointsMessage(target=polygon_data_message(pd), **payload)
314314

315315

316316
def polygon_data_expand_message(pd, offset, tol, round_corner, max_corner_expansion):
@@ -481,7 +481,7 @@ def transform_message(transform):
481481
else:
482482
return TransformMessage(
483483
scale=value_message(transform.scale),
484-
angle=value_message(transform.angle),
484+
angle=value_message(transform.rotation),
485485
mirror=transform.mirror,
486486
offset_x=value_message(transform.offset_x),
487487
offset_y=value_message(transform.offset_y),
@@ -502,9 +502,9 @@ def point3d_message(point3d):
502502
return Point3DMessage(x=value_message(x), y=value_message(y), z=value_message(z))
503503

504504

505-
def point_3d_property_message(target, value):
505+
def point_3d_property_message(target, val):
506506
"""Convert to a ``Point3DPropertyMessage`` object."""
507-
return Point3DPropertyMessage(target=edb_obj_message(target), origin=point3d_message(value))
507+
return Point3DPropertyMessage(target=edb_obj_message(target), value=point3d_message(val))
508508

509509

510510
def layout_get_items_message(layout, item_type):
@@ -543,14 +543,14 @@ def temperature_settings_message(settings):
543543
)
544544

545545

546-
def hfss_extent_message(val):
546+
def hfss_extent_message(hfss_val):
547547
"""Convert to an ``ExtentMessage`` object."""
548-
if type(val) == float or type(val) == int:
549-
value = val
548+
if type(hfss_val) == float or type(hfss_val) == int:
549+
val = hfss_val
550550
absolute = False
551551
else:
552-
value, absolute = val
553-
return HfssExtentMessage(value=value, absolute=absolute)
552+
val, absolute = hfss_val
553+
return HfssExtentMessage(value=val, absolute=absolute)
554554

555555

556556
def hfss_extent_info_message(hfss_info):
@@ -722,7 +722,7 @@ def primitive_edge_params_message(primitive, point):
722722
def pad_edge_params_message(padstack_instance, layer, arc):
723723
"""Convert to a ``PadEdgeParamsMessage`` object."""
724724
return PadEdgeParamsMessage(
725-
padstack_instance=padstack_instance.msg,
725+
padstack=padstack_instance.msg,
726726
layer=layer_ref_message(layer),
727727
arc=arc_message(arc),
728728
)
@@ -932,13 +932,6 @@ def net_ref_message(net):
932932
return NetRefMessage(id=edb_obj_message(net.msg if net is not None else 0))
933933

934934

935-
def adaptive_frequency_message(frequency: str, max_delta_s: float, max_passes: int):
936-
"""Convert to an ``AdaptiveFrequencyDataMessage`` object."""
937-
return AdaptiveFrequencyDataMessage(
938-
adaptive_frequency=frequency, max_delta=str(max_delta_s), max_passes=max_passes
939-
)
940-
941-
942935
def _length_mesh_operation_message(mesh_op):
943936
return LengthMeshOperationMessage(
944937
max_length=mesh_op.max_length,
@@ -1097,15 +1090,17 @@ def differential_pair_creation_message(layout, name, pos_net, neg_net):
10971090
return DifferentialPairCreationMessage(
10981091
layout=edb_obj_message(layout),
10991092
name=name,
1100-
pos_net=net_ref_message(pos_net),
1101-
neg_net=net_ref_message(neg_net),
1093+
positive_net=net_ref_message(pos_net),
1094+
negative_net=net_ref_message(neg_net),
11021095
)
11031096

11041097

11051098
def differential_pair_net_refs_message(dp, pos_net, neg_net):
11061099
"""Convert to a ``DifferentialPairNetRefsMessage`` object."""
11071100
return DifferentialPairNetRefsMessage(
1108-
dp=edb_obj_message(dp), pos_net=net_ref_message(pos_net), neg_net=net_ref_message(neg_net)
1101+
dp=edb_obj_message(dp),
1102+
positive_net=net_ref_message(pos_net),
1103+
negative_net=net_ref_message(neg_net),
11091104
)
11101105

11111106

src/ansys/edb/core/layout/layout.py

+49-1
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ def zone_primitives(self):
273273
274274
This property is read-only.
275275
"""
276-
return [Primitive(msg) for msg in self.__stub.GetZonePrimitives(self.msg)]
276+
return [Primitive(msg).cast() for msg in self.__stub.GetZonePrimitives(self.msg).items]
277277

278278
@property
279279
def fixed_zone_primitive(self):
@@ -464,3 +464,51 @@ def snap_primitives(self, layer, tol="0.05um", check_connectivity=True):
464464
self.__stub.SnapPrimitives(
465465
_geometry_simplifications_settings_with_option_msg(self, layer, tol, check_connectivity)
466466
)
467+
468+
def create_mesh_region(
469+
self,
470+
xy_exp,
471+
pos_z_exp,
472+
neg_z_exp,
473+
use_active_nets,
474+
incl_ref,
475+
ext,
476+
num_x_partitions,
477+
num_y_partitions,
478+
):
479+
"""Designate a mesh region in a design and create partitions for simulation.
480+
481+
Parameters
482+
----------
483+
xy_exp: :class:`.Value`
484+
Horizontal padding on both sides of the new mesh.
485+
pos_z_exp: :class:`.Value`
486+
Vertical padding above the new mesh region.
487+
neg_z_exp: :class:`.Value`
488+
Vertical padding below the new mesh region.
489+
use_active_nets: bool
490+
True will create a new mesh region defined by the active nets in the design.
491+
False will create a new mesh region defined by the dielectric extents in the design.
492+
incl_ref: bool
493+
True will include bot positive nets and reference nets in the definition of the new mesh region.
494+
False will not include bot positive nets and reference nets.
495+
ext: :class:`.ExtentType`
496+
Geometry extent type.
497+
num_x_partitions: int
498+
Number of partitions to create on x axis in the new mesh region.
499+
num_y_partitions: int
500+
Number of partitions to create on y axis in the new mesh region.
501+
"""
502+
self.__stub.CreateMeshRegion(
503+
layout_pb2.CreateMeshRegionMessage(
504+
layout=self.msg,
505+
xy_exp=messages.value_message(xy_exp),
506+
pos_z_exp=messages.value_message(pos_z_exp),
507+
neg_z_exp=messages.value_message(neg_z_exp),
508+
use_active_nets=use_active_nets,
509+
incl_ref=incl_ref,
510+
ext=ext.value,
511+
num_x_partitions=num_x_partitions,
512+
num_y_partitions=num_y_partitions,
513+
)
514+
)

src/ansys/edb/core/primitive/primitive.py

+15-12
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,8 @@ def set_parameters(self, center_x, center_y, radius):
618618
)
619619
)
620620

621-
def get_polygon_data(self):
621+
@property
622+
def polygon_data(self):
622623
""":class:`.PolygonData`: \
623624
Polygon data object of the circle."""
624625
return Circle.render(*self.get_parameters(), self.is_void)
@@ -1220,22 +1221,24 @@ def set_traj(self, x1, y1, x2, y2):
12201221
Parameters
12211222
----------
12221223
x1 : :class:`.Value`
1223-
X value of the the start point.
1224+
X value of the start point.
12241225
y1 : :class:`.Value`
1225-
Y value of the the start point.
1226+
Y value of the start point.
12261227
x2 : :class:`.Value`
1227-
X value of the the end point.
1228+
X value of the end point.
12281229
y2 : :class:`.Value`
12291230
Y value of the end point.
12301231
"""
12311232
self.__stub.SetTraj(
1232-
target=self.msg,
1233-
traj=bondwire_pb2.BondwireTrajMessage(
1234-
x1=messages.value_message(x1),
1235-
y1=messages.value_message(y1),
1236-
x2=messages.value_message(x2),
1237-
y2=messages.value_message(y2),
1238-
),
1233+
bondwire_pb2.SetBondwireTrajMessage(
1234+
target=self.msg,
1235+
traj=bondwire_pb2.BondwireTrajMessage(
1236+
x1=messages.value_message(x1),
1237+
y1=messages.value_message(y1),
1238+
x2=messages.value_message(x2),
1239+
y2=messages.value_message(y2),
1240+
),
1241+
)
12391242
)
12401243

12411244
@property
@@ -1512,7 +1515,7 @@ def solderball_layer(self, solderball_layer):
15121515
padstack_instance_pb2.PadstackInstSetSolderBallLayerMessage(
15131516
target=self.msg,
15141517
layer=solderball_layer.msg,
1515-
)(self, solderball_layer)
1518+
)
15161519
)
15171520

15181521
@property

src/ansys/edb/core/simulation_setup/simulation_settings.py

+9
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,15 @@ def via_material(self):
226226
def via_material(self, via_material):
227227
self.__stub.SetViaMaterial(messages.string_property_message(self, via_material))
228228

229+
@property
230+
def mesh_for_via_plating(self):
231+
""":obj:`bool`: Flag indicating if meshing for via plating is enabled."""
232+
return self.__stub.GetMeshForViaPlating(self.msg).value
233+
234+
@mesh_for_via_plating.setter
235+
def mesh_for_via_plating(self, mesh_for_via_plating):
236+
self.__stub.SetMeshForViaPlating(messages.bool_property_message(self, mesh_for_via_plating))
237+
229238
@property
230239
def model_type(self):
231240
""":class:`.ModelType`: model type."""

tests/e2e/scratch/sim_setup_scratch.py

+4
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,10 @@ def do_advanced_test(settings: HFSSAdvancedSettings):
141141
settings.via_material = "new_via_material"
142142
new_via_material = settings.via_material
143143

144+
og_mesh_via_plating = settings.mesh_for_via_plating
145+
settings.mesh_for_via_plating = not og_mesh_via_plating
146+
new_mesh_via_plating = settings.mesh_for_via_plating
147+
144148
og_ic_mode_auto_resolution = settings.ic_mode_auto_resolution
145149
settings.ic_mode_auto_resolution = not og_ic_mode_auto_resolution
146150
new_ic_mode_auto_resolution = settings.ic_mode_auto_resolution

0 commit comments

Comments
 (0)