Releases: amccaugh/phidl
Releases · amccaugh/phidl
PHIDL 1.7.2
1.7.2 (July 3, 2024)
Bugfixes
- Updated to be compatible with Numpy 2.0 (thanks Ashley Anderson @aganders3)
- Removed leftover debugging
print()
statement fromkl_
boolean functions (thanks Bakhrom Oripov @bakhromtjk)
PHIDL 1.7.1
1.7.1 (April 26, 2024)
New features
- Allow
Device.get_ports()
to be used with arrays - Allow setting
num_cpu
in the newpg.kl_boolean()
,pg.kl_offset
,pg.kl_invert()
functions. Global defaults for the number of CPU to be used can be set with e.g.phidl.config["NUM_CPU"] = 8
- Added
pg.flatten()
convenience function. This is identical toDevice.flatten()
but instead of modifying the geometry in-place, returns a flattened copy (thanks Bas Nijholt @basnijholt) - Fixed an issue from
gdspy
where property keys are incorrectly interpreted as signed integers when importing GDS files usingimport_gds()
(thanks Bas Nijholt @basnijholt)
Bugfixes
- Fixed rare problem with mew
pg.kl_invert()
function whentile_size
was too small
PHIDL 1.7.0
1.7.0 (April 9, 2024)
Major optimization update!
New features
- New KLayout-based boolean/offset/outline functions! These are under the name
pg.kl_boolean()
,pg.kl_offset
, etc. They utilize the excellent KLayout tile processor, which allows breaking down & parallelizing these operations--in a nutshell, these operations should be much, much faster. - Added
D.simplify()
, which allows you to significantly reduce memory usage of a geometry by discarding unnecessarily-precise points from all polygons within a Device. Uses the very robust Ramer–Douglas–Peucker algorithm for simplification. - Now
pg.gridsweep()
allowsparam_x
orparam_y
to be integers, which creates copies of the same parameters in the x or y direction.
Bugfixes
- 20x speedup to the internal operation
_merge_nearby_floating_points()
which should significantly speed up large operations (thanks Alex Tait @atait) - New pre-commit using ruff (thanks Bas Nijholt @basnijholt)
- Grammar fix to documentation (thanks Ashish Panigrahi @paniash)
PHIDL 1.6.4
1.6.4 (July 20, 2023)
New features
- Optimized/vectorized point rotation, speeding up the
rotate()
operation by as much as 150x(!) (thanks Bas Nijholt @basnijholt) - Added proper
pg.fill_rectangle()
examples and documentation
Bugfixes
PHIDL 1.6.3
1.6.3 (Feb 9, 2023)
Bugfixes
- Fixed error in
pg.euler()
andpp.smooth()
for edge case of nearly-colinear points - Specify certain numpy arrays as
object
to avoid numpy deprecation (thanks Bas Nijholt @basnijholt and Samuel Gyger @gyger) - Corrected docstring for
pg.union()
as it does not accept lists of Devices (improvement for future, thanks Samuel Gyger @gyger)
PHIDL 1.6.2
1.6.2 (July 25, 2022)
New features
- Addition of
pg.snspd_candelabra()
which creates an optimally-rounded SNSPD with low current crowding and arbtitrarily-high fill factor (thanks Dileep Reddy @dileepvr) - Lazy loading of
matplotlib
, allowing loading the base phidl libraries much faster (thanks Joaquin Matres @joamatab)
Changes
- Modification to
pg.boolean()
s othatOR
/union will merge all shapes within one Device, even if the second Device isNone
(thanks Stijn Balk @sbalk)
Bugfixes
- Modifying the
parent
of aDeviceReference
now correctly updates the reference cell (thanks Joaquin Matres @joamatab) - Fix bug in
pg.outline()
whendistance < 0
(thanks @yoshi74ls181) - GDS path objects now copy over when using
pg.import_gds()
(thanks Bas Nijholt @basnijholt) - Preserve Polygon.properties and DeviceReference.properties when saving and loading (thanks Bas Nijholt @basnijholt)
D.remove_layers()
works also with GDS path objects (thanks Joaquin Matres @joamatab)
PHIDL 1.6.1
1.6.1 (April 7, 2022)
New features
- Re-added
Device.get_info()
that gathers the Device.info dictionaries from every sub-Device and returns them in a list. Useful for collecting information about every Device in a layout - Updated documentation
Changes
- Deprecated Python 2
- Removal of 1023-character limit for labels (will only show warning instead now)
- Deprecated
reflect()
has been fully removed, usemirror()
instead
Bugfixes
- Much code sanitization under the hood (thanks Bas Nijholt @basnijholt)
Device.absorb()
now preserves labels from the parent component (thanks Joaquin Matres @joamatab)- Fixed extrusion error of
pp.spiral()
caused by overlapping points - Bugfix for
pg.optimal_step()
, now works correctly whenstart_width == end_width
- Fixed naming of some previously-unnamed geometries
- Future-proofing for upcoming Numpy changes
- Bugfix for
CrossSection.extrude()
since cross_section parameter renamed towidth
PHIDL 1.6.0
1.6.0 (Sept 28, 2021)
New features
- Huge new routing rewrite for
phidl.routing
, including automatic manhattan routing with custom cross-sections! See the routing documentation for details. Big thanks to Jeffrey Holzgrafe @jolzgrafe for this contribution Path
s can now be used to produce sharp angles, in addition to smooth bends. See the Path documentation
Changes
- The
Path()
constructor no longer forces the path to start at (0,0)
Bugfixes
- Interactive zoom for
quickplot()
is now disabled by default in Jupyter-type notebooks to avoid strange scrolling behavior. This can be manually changed usingset_quickplot_options(interactive_zoom = True)
PHIDL 1.5.2
Hotfix to ensure Python 2 compatibility
PHIDL 1.5.1
1.5.1 (May 19, 2021)
New features
- New
pg.gridsweep()
function, allowing for easy creation of parameter sweeps on a grid. See the documentation for details.
- New tutorial on layers
- Can now define layer to be
None
to prevent creation of polygons - Added
pg.litho_ruler()
for creation of lithographic rulers/measurement