mnflow.mfda.cad.dld.theme.block.DLD

class mnflow.mfda.cad.dld.theme.block.DLD(core_shape=None, core_shape_rot_angle=None, num_points_per_circle=None, num_unit=None, sidewall_width=None, opt_mirror=None, spacing_between_mirrors_within_single_unit=None, dot_offset=None, target_ll=None, opt_smoothen_dep_sidewall=None, opt_reverse_tone=None, opt_multi_inlet=None, opt_filter=None, opt_preload=None, opt_collection=None, opt_collection_sideway_right_side=None, opt_collection_sideway_left_side=None, opt_mirror_x=None, opt_mirror_y=None, rotation_angle_deg_before_array=None, array_counts=None, array_spacing=None, opt_mirror_before_array=None, spacing_between_mirrors_before_array=None, mirror_before_array_around_negative_edge=None, opt_cover_acc=None, acc_cover_half_width_min=None, acc_cover_excess_width_over_gap_w=None, opt_cap_top_row=None, cap_top_row_block_width_acc_side=None, cap_top_row_block_width_dep_side=None, config_multi_inlet=None, filter_shape=None, filter_preload_spacing=None, filter_len_nondim=None, filter_half_pitch_nondim=None, filter_margin_top=None, filter_margin_top_nondim=None, filter_offset_w=None, filter_block_width_acc_side=None, filter_block_width_dep_side=None, preload_offset_w=None, preload_offset_a=None, preload_bar_pitch=None, preload_bar_dims=None, preload_margin_top=None, preload_margin_top_nondim=None, preload_block_width_acc_side=None, preload_block_width_dep_side=None, collection_margin_top_nondim=None, opt_collection_with_via=None, collection_bar_pitch_nondim=None, collection_bar_dims=None, collection_offset_w=None, collection_offset_a=None, collection_sideway_width=None, via_dia=None, via_dia_outer_ring=None, via_dia_outer_ring_over_via_dia=None, vias_spacing_min=None, zz_width_to_width_tot=None, zz_len_downstream_init_extension=None, zz_len_downstream_bottom=None, zz_len_upstream=None, zz_len_downstream=None, zz_bar_pitch_nondim=None, zz_bar_gap_over_gap_w=None, zz_bar_offset_w=None, zz_ds_top_win__topright_tip_width_large=None, zz_ds_top_win__topright_tip_width_small=None, bmp_bar_pitch_nondim=None, bmp_bar_gap_over_gap_w=None, bmp_bar_offset_w=None, opt_report_collection=None, collection_entity_dim=None, collection_entity_pitch_out=None, collection_entity_pitch_in=None, height_deep=None, bus_width=None, bus_length=None, opt_padding_features=None, layer_padding=None, padding_width=None, padding_entity_dim=None, padding_entity_pitch=None, opt_padding_reverse_tone=None, core_entity_func=None, kwargs_entity_gen=None, single_unit_extra_shapes=None, dep_sidewall_theme=None, acc_sidewall_theme=None, top_cell_name=None, layer_1=None, layer_2=None, beam_thickness=None, verbose=None, opt_process_upon_init=None, opt_write_upon_init=None, opt_save_image=None, use_top_cell_if_exists=None, num_unit_extra=None, num_unit_extra_nondim=None, get_geom_config_auto_use_auto_num_unit=None, range_Np=None, range_Nw=None, range_width=None, range_length=None, min_vfr_per_bar=None, min_vfr_ul_per_min_per_bar=None, min_vfr_ml_per_hr_per_bar=None, fluid_mu=None, max_die_area_mmsq=None, min_gap_over_dc=None, turn_off_constraints=None, *args, **kwargs)

A standard uniform DLD system with optional components, e.g., multi-inlet, filter, preload, sideway collections, and full width collection channels. It can be configured flexibly with numerous parameters. The class inherits from core.DLD and aims at configuring how to array the DLD core to make a more complex DLD design and/or a full DLD device. It can be used as a component (Element) in other classes to build other architectures, e.g., multi-stage, condenser-and-sorter, etc.

Note

Similar to core.DLD, herein, the parameters are attempted to be assigned automatically for a reference design so that user can conveniently produce a CAD file for a target DLD system by providing as few args as possible (at least, that is the goal!). Regardless, user should be able to pass valid args to adjust details of design as needed. For example, if no value is passed for num_unit, an appropriate value is set based on the number of fluidic lanes Nw and additional number of units configured from num_unit_extra and/or num_unit_extra_nondim as a safety margin for full-width injection schemes. As another example, the standardized design, hererin, does not mirror the features wrt. a line along the channel axis next to the accumulation sidewall. However, a mirrored design can be produced by passing opt_mirror=True.

Note

Order of processes and pertinent parameters:

  • Standard DLD structure & mirrored design if opt_mirror is True.

  • Add any up-/down-stream component as needed, e.g., opt_multi_inlet=True, opt_filter=True, opt_preload=True, opt_collection=True, opt_collection_sideway_right_side=True, opt_collection_sideway_left_side=True, etc.

  • Mirror.x for the case that opt_mirror_x=True

  • Mirror.y for the case that opt_mirror_y=True

  • Rotation for the case that a valid value is provided for rotation_angle_deg_before_array.

  • Arraying (and Mirroring) if sum(array_counts)>2:
    • Check if mirroring is needed from opt_mirror_before_array.

    • Configure spacing between mirrors from spacing_between_mirrors_before_array.

    • Configure spacing between copies from array_spacing.

  • Apply padding if opt_padding_features=True (mainly for nanoimprint lithography (NIL)).

  • Set lower left coordinates if a valid target_ll is given.

Note

  • Some parameters are None by default, which means the program attempts to infer appropriate values based on the other configurations.

  • Some parameters are dimensionless as described in Parameters Section.

  • The length unit for dimensional parameters is micron unless otherwise stated.

Important

When optimizing params by applying constraints, remove any component that can be potentially added to system, e.g., up-/downstream components of preload, filter, collection, etc., because:

  • The current implementation of constraints considers solely the areas with DLD pillars when calculating dimensions, area, flow rate, etc.

  • It probably makes sense to do so!

Caution

The current implementation of constraints is relatively slow; it may take up to several seconds depending on system config. The underlying reason is that it attempts to scan the whole parameter space sequentially. More efficient algorithms, e.g., bisection, etc., can be applied in the future to improve the performance.

Important

(For developers) Some of the long list of params may be grouped into several dictionaries. For example, currently, filter component can get several args including filter_len_nondim, filter_half_pitch_nondim, filter_margin_top, filter_margin_top_nondim, filter_offset_w, etc. They can be grouped into a single config param similar to that for multi-inlet component, i.e., config_multi_inlet. However, the current version, i.e., passing each single param separately may be more user-friendly.

Constructor

Parameters

Config shape of core entities

core_shapestr, optional

Shape of DLD entities (pillars), e.g. ‘circle’, ‘triangle’, ‘rectangle’, etc., by default None, i.e., ‘circle’

core_shape_rot_anglefloat, optional

Rotational angle (deg.) to be applied to DLD entities counter-clockwise, by default 0.

num_points_per_circleint, optional

Number of points/vertices in a polygon representing circular entities, by default 32

General

num_unitint, optional

Number of DLD units (core.DLD) arrayed along the channel, by default None

sidewall_widthfloat, optional

Width of sidewalls, by default None

opt_mirrorbool, optional

Whether to have a mirrored design, by default False

spacing_between_mirrors_within_single_unitfloat, optional

Spacing between mirrors within a single unit when opt_mirror is true, by default 0.

dot_offsetlist, optional

Offset of core DLD entities in each direction, by default [0, 0]

target_lllist, optional

Desired lower left coordinates of bounding box of entire system at the end, by default None

opt_smoothen_dep_sidewallbool, optional

Whether to smooth out the dep. sidewall downstream of system, by default False

opt_reverse_tonebool, optional

Whether to reverse the tone of layout, which may be desirable for some manufacturing techniques and/or photoresist tones, by default False

Optional components

opt_multi_inletbool, optional

Whether to include a multi-inlet upstream of system, can be configured to serve as a single-inlet as well, by default False

opt_filterbool, optional

Whether to include a filter upstream of system, by default False

opt_preloadbool, optional

Whether to include a preload upstream of system, by default False

opt_collectionbool, optional

Whether to include a collection component downstream of system, by default False

opt_collection_sideway_right_sidebool, optional

Whether to include a sideway collection component with opening on right side downstream of system, byt default False

opt_collection_sideway_left_sidebool, optional

Whether to include a sideway collection component with opening on left side downstream of system, byt default False

Potential transformations before mirror/array

opt_mirror_xbool, optional

Whether to mirror the DLD unit around x axis before mirror/array, by default False

opt_mirror_ybool, optional

Whether to mirror the DLD unit around y axis before mirror/array, by default False

rotation_angle_deg_before_arrayfloat, optional

Rotational angle (deg) for rotatoin of DLD unit before mirror/array, by default None

Mirror/Array

array_countslist, optional

Count of DLD units in each direction in case an array of DLD units is needed, by default [1, 1]

array_spacinglist, optional

Spacing between neighboring DLD units when the original DLD unit is arrayed, by default [0, 0]

opt_mirror_before_arraylist, optional

Whether to mirror DLD unit around each of x and y axes before arraying the unit, by default [False, False]

spacing_between_mirrors_before_arraylist, optional

Spacing between mirrors of DLD unit in each direction before arraying them, by default [0, 0]

mirror_before_array_around_negative_edgelist, optional

Whether to cosider lower edge of bounding box in each direction if mirroring is needed, otherwise the higher edge to be used, by default [False, False]

Cover on acc side

opt_cover_accbool, optional

Whether the accumulation side to be covered with a polygon potentially for a smooth profile, by default None

acc_cover_half_width_minfloat, optional

Length of smaller side of a trapezoidal cover that can potentially cover the accumulation sidewall, by default None

acc_cover_excess_width_over_gap_wfloat, optional

Distance to extend the accumulation side’s cover laterally without changing the slope of its sides, by default 0.

Optional addtional row capping the topmost DLD unit

opt_cap_top_rowbool, optional

Whether adding a row of entities before the most upstream row of DLD entities, by default False

cap_top_row_block_width_acc_sideint, optional

Width of additional block covering the acc. sidewall on top row, by default 0

cap_top_row_block_width_dep_sideint, optional

Width of additional block covering the dep. sidewall on top row, by default 0

Multi_inlet

config_multi_inletdict, optional

Config of multi-inlet component, by default None

Filter

filter_shapestr, optional

Shape of entities within filter, by default ‘square’

filter_preload_spacingfloat, optional

Spacing between preload and filter, by default None

filter_len_nondimint, optional

Filter length nondimensionalized by pitch of entities, by default 39

filter_half_pitch_nondimint, optional

Half-pitch of serpentine filter non-dimensionalized by pitch of entities, by default 3

filter_margin_topfloat, optional

Minimum distance between filter inlet and its entities, by default None.

filter_margin_top_nondimfloat, optional

Similar to filter_margin_top but nondimensionalized by pitch_a, by default None.

filter_offset_wfloat, optional

A parameter enabling the displacement of filter laterally for a potentially better configuration, by default 0.

filter_block_width_acc_sidefloat, optional

Width of an additional block used to cover the acc. sidewall of filter, by default 0.

filter_block_width_dep_sidefloat, optional

Width of an additional block used to cover the dep. sidewall of filter, by default 0.

Preload

preload_offset_wfloat, optional

A parameter enabling the displacement of preload laterally for a potentially better configuration, by default 0.

preload_offset_afloat, optional

A parameter enabling the displacement of preload axially for a potentially better configuration, by default 0.

preload_bar_pitchfloat, optional

Pitch of bar array in preload, by default None

preload_bar_dimslist, optional

Dimensions of bars in preload, by default None

preload_margin_topfloat, optional

Minimum distance between preload inlet and its entities, by default 0.

preload_margin_top_nondimfloat, optional

Similar to preload_margin_top but nondimensionalized by pitch_a, by default None.

preload_block_width_acc_sidefloat, optional

Width of an additional block used to cover the acc. sidewall of preload, by default 0.

preload_block_width_dep_sidefloat, optional

Width of an additional block used to cover the dep. sidewall of preload, by default 0.

Collection

collection_margin_top_nondimfloat, optional

Spacing between collection entities and DLD post array in downstream of system non-dimensionalized by pitch of entities, by default 2.

opt_collection_with_viabool, optional

Whether to use the collection-with-via scheme, by default False

Simple collection

collection_bar_pitch_nondimfloat, optional

Pitch of bars in simple collection component non-dimensionalized by pitch of entities, by default None

collection_bar_dimslist, optional

Dimensions of bars in simple collection component in x and y directions, by default None

collection_offset_wfloat, optional

A parameter enabling the displacement of collection channels laterally for a potentially better configuration, by default None

collection_offset_afloat, optional

A parameter enabling the displacement of collection channels axially for a potentially better configuration, by default None

Sideway collection

collection_sideway_widthfloat, optional

Width of sideway collection, by default None

Collection with via

via_diafloat, optional

Diameter of through-wafer via, by default None

via_dia_outer_ringfloat, optional

Diameter of a ring equal to or larger than that of through-wafer via centered on via, by default None

via_dia_outer_ring_over_via_diafloat, optional

Ratio of diameter of outer ring of via to that of via, by default 1.2

vias_spacing_minfloat, optional

Minimum allowed distance between vias, by default 60.

zz_width_to_width_totfloat, optional

Ratio of width of zig-zag (zz) collection section to the total width of DLD unit; this parameter dictates the concentration enhancement ratio, by default 0.9

zz_len_downstream_init_extensionfloat, optional

Distance between the inlet of collection component and the tip of its bars, by default 20.

zz_len_downstream_bottomint, optional

Minimum distance between outer ring of via and end of collection component downstream of system, by default 50.

zz_len_upstreamfloat, optional

Length of zig-zag collection channels, by default 300.

zz_len_downstreamfloat, optional

Minimum distance between zig-zag collection channels and end of collection component downstream of system, by default 400.

zz_bar_pitch_nondimfloat, optional

Pitch of zig-zag collection bars (channels) non-dimensionalized by pitch of DLD entities, by default 3.

zz_bar_gap_over_gap_wfloat, optional

Ratio of opening of zz collection channels to lateral gap between DLD entities, by default 1.75

zz_bar_offset_wfloat, optional

A parameter enabling the displacement of zz collection channels laterally for a potentially better configuration, by default 0.

zz_ds_top_win__topright_tip_width_largefloat, optional

Width of larger upper right tip of zz sidewall, by default None

zz_ds_top_win__topright_tip_width_smallfloat, optional

Width of smaller upper right tip of zz sidewall, by default None

bmp_bar_pitch_nondimfloat, optional

Pitch of bars (channels) within bump collection section non-dimensionalized by pitch of DLD entities, by default 2.

bmp_bar_gap_over_gap_wfloat, optional

Ratio of opening of bump collection channels to lateral gap between DLD entities, by default 2.

bmp_bar_offset_wfloat, optional

A parameter enabling the displacement of bump collection channels laterally for a potentially better configuration, by default 0.

opt_report_collectionbool, optional

Whether to report the modeling/evaluation results regarding the design of collection channels to have a better insight on how the design would perform and to readjust the configs as needed, by default True

Decorative entities inside collection component for NIL

collection_entity_dimlist, optional

(Mainly for NIL) Dimensions of decorative unit to be arrayed within collection component, by default None

collection_entity_pitch_outlist, optional

(Mainly for NIL) Pitch of decorative unit in each direction to be arrayed within collection sidewall, by default None

collection_entity_pitch_inlist, optional

(Mainly for NIL) Pitch of decorative unit in each direction to be arrayed within zz collection channels in fluid connection with via, by default None

Geom config for 1D model

height_deepfloat, optional

Height/Depth of channel in deep region, e.g., inlet/outlet fluidic buses, required to evaluate the hydraulic resistance of system and performance of design, by default None. Note that core.DLD has a height parameter that is used as Height/Depth of channel in shallow region.

bus_widthfloat, optional

Width of fluidic buses, required to evaluate the hydraulic resistance of system and performance of design, by default None

bus_lengthfloat, optional

Total length of fluidic buses, required to evaluate the hydraulic resistance of system and performance of design, by default None

Padding for NIL

opt_padding_featuresbool, optional

(NIL) Whether to add decorative features, by default False

layer_paddingtuple or list, optional

(NIL) Layer info for padding features, optional.

padding_widthdict, optional

(NIL) Padding width of decorative stripes around the design, by default {‘low’: 30, ‘right’: 30, ‘top’: 30, ‘left’: 30, }

padding_entity_dimlist or tuple, optional

(NIL) Dimensions of decorative entity, by default None

padding_entity_pitchlist or tuple, optional

(NIL) Pitch of decorative entities array in each direction, by default None

opt_padding_reverse_tonebool, optional

(NIL) Whether to reverse tone of padding features.

Relatively detailed config params

Callback function to generate entities with arbitrary profile

core_entity_funcfunction, optional

A callback function to generate and return an arbitrary region as profile of DLD entities, by default None

kwargs_entity_gendict, optional

Keyword arguments to pass to arbitrary core_entity_func, by default None

Callback function for additional regions to be inserted

single_unit_extra_shapesfunction, optional

A callback function to generate and return a list of arbitrary regions to be inserted inside the DLD unit structure before arraying, by default None

Misc.

dep_sidewall_themeint, optional

An identifier denoting a given design of dep. sidewall, by default 0

acc_sidewall_themeint, optional

An identifier denoting a given design of acc. sidewall, by default 0

top_cell_namestr

Name of top cell to be created as needed.

layer_1tuple, optional

Specs of Layer 1 in layout, by default (1, 0)

layer_2tuple, optional

Specs of Layer 1 in layout, by default (2, 0)

beam_thicknessfloat, optional

Thickness of beam profile, by default None

verbosebool, optional

verbose, by default True

opt_process_upon_initbool, optional

Whether to invoke the process method from inside the constructor to design the system, by default True

opt_write_upon_initbool, optional

Whether to invoke the write method from inside the constructor to write the GDS/DXF layout file, by default True

opt_save_imagebool, optional

Whether to invoke the save_image method from inside the constructor to save layout as png file(s), by default False

use_top_cell_if_existsbool, optional

Whether to use top cell of layout in the case that layout is not empty; if False, a top_cell to be created, by default None.

Considerations for design automation

num_unit_extraint, optional

Number of additional DLD units (core.DLD) to be considered to be conservative; only relevant if num_unit is not provided explicitly, by default None

num_unit_extra_nondimint, optional

Nondimensional form of num_unit_extra_nondim – nondimensionalized by the theoretical number of units required to displace all large particles and collect them next to the accumulation sidewall, only relevant if num_unit and num_unit_extra are not provided explicitly, by default None

get_geom_config_auto_use_auto_num_unitbool, optional

Whether to consider a full DLD system when evaluating the constraints regardless of any explicitly provided num_unit; if False, constraints will be applied by considering the explicitly provided num_unit; setting this param to True can be useful when constraints should be evaluated for a full system, but the mask should be prepared for a partial system, e.g., for computational modeling where one to a few units would suffice, by default False.

Constraints for design automation

range_Nplist, optional

Min and Max allowed Np for the structure, by default None.

range_Nwlist, optional

Min and Max allowed Nw for the structure, by default None.

range_widthlist, optional

Min and Max allowed width of structure, by default None.

range_lengthlist, optional

Min and Max allowed length of overall DLD system in the case that a full DLD is to be constructed, by default None.

Volumetric flow rate constraint

min_vfr_per_barfloat, optional

Min allowed throughput, i.e., volumetric flow rate, in unit of \(m^3/sec/bar\), by default None

min_vfr_ul_per_min_per_barfloat, optional

Min allowed throughput, i.e., volumetric flow rate, in unit of \(\mu L/min/bar\), by default None

min_vfr_ml_per_hr_per_barfloat, optional

Min allowed throughput, i.e., volumetric flow rate, in unit of \(m L/hr/bar\), by default None

fluid_mufloat, optional

Fluid dynamic viscosity with a unit of \(Pa.sec\), relevant if throughput constraint is applied, by default 1e-3

Die area (mm square)

max_die_area_mmsqfloat, optional

Max allowed die area; Note that only the area occupied by DLD pillars is considered; sidewalls and additional up-/downstream components are not taken into account. by default None

Gap over critical diameter

min_gap_over_dcfloat, optional

Min allowed lateral gap over critical diameter, by default None

Constraints OFF mode

turn_off_constraintsbool, optional

Whether to turn off the constraints, by default False

__init__(core_shape=None, core_shape_rot_angle=None, num_points_per_circle=None, num_unit=None, sidewall_width=None, opt_mirror=None, spacing_between_mirrors_within_single_unit=None, dot_offset=None, target_ll=None, opt_smoothen_dep_sidewall=None, opt_reverse_tone=None, opt_multi_inlet=None, opt_filter=None, opt_preload=None, opt_collection=None, opt_collection_sideway_right_side=None, opt_collection_sideway_left_side=None, opt_mirror_x=None, opt_mirror_y=None, rotation_angle_deg_before_array=None, array_counts=None, array_spacing=None, opt_mirror_before_array=None, spacing_between_mirrors_before_array=None, mirror_before_array_around_negative_edge=None, opt_cover_acc=None, acc_cover_half_width_min=None, acc_cover_excess_width_over_gap_w=None, opt_cap_top_row=None, cap_top_row_block_width_acc_side=None, cap_top_row_block_width_dep_side=None, config_multi_inlet=None, filter_shape=None, filter_preload_spacing=None, filter_len_nondim=None, filter_half_pitch_nondim=None, filter_margin_top=None, filter_margin_top_nondim=None, filter_offset_w=None, filter_block_width_acc_side=None, filter_block_width_dep_side=None, preload_offset_w=None, preload_offset_a=None, preload_bar_pitch=None, preload_bar_dims=None, preload_margin_top=None, preload_margin_top_nondim=None, preload_block_width_acc_side=None, preload_block_width_dep_side=None, collection_margin_top_nondim=None, opt_collection_with_via=None, collection_bar_pitch_nondim=None, collection_bar_dims=None, collection_offset_w=None, collection_offset_a=None, collection_sideway_width=None, via_dia=None, via_dia_outer_ring=None, via_dia_outer_ring_over_via_dia=None, vias_spacing_min=None, zz_width_to_width_tot=None, zz_len_downstream_init_extension=None, zz_len_downstream_bottom=None, zz_len_upstream=None, zz_len_downstream=None, zz_bar_pitch_nondim=None, zz_bar_gap_over_gap_w=None, zz_bar_offset_w=None, zz_ds_top_win__topright_tip_width_large=None, zz_ds_top_win__topright_tip_width_small=None, bmp_bar_pitch_nondim=None, bmp_bar_gap_over_gap_w=None, bmp_bar_offset_w=None, opt_report_collection=None, collection_entity_dim=None, collection_entity_pitch_out=None, collection_entity_pitch_in=None, height_deep=None, bus_width=None, bus_length=None, opt_padding_features=None, layer_padding=None, padding_width=None, padding_entity_dim=None, padding_entity_pitch=None, opt_padding_reverse_tone=None, core_entity_func=None, kwargs_entity_gen=None, single_unit_extra_shapes=None, dep_sidewall_theme=None, acc_sidewall_theme=None, top_cell_name=None, layer_1=None, layer_2=None, beam_thickness=None, verbose=None, opt_process_upon_init=None, opt_write_upon_init=None, opt_save_image=None, use_top_cell_if_exists=None, num_unit_extra=None, num_unit_extra_nondim=None, get_geom_config_auto_use_auto_num_unit=None, range_Np=None, range_Nw=None, range_width=None, range_length=None, min_vfr_per_bar=None, min_vfr_ul_per_min_per_bar=None, min_vfr_ml_per_hr_per_bar=None, fluid_mu=None, max_die_area_mmsq=None, min_gap_over_dc=None, turn_off_constraints=None, *args, **kwargs)

Constructor

Parameters

Config shape of core entities

core_shapestr, optional

Shape of DLD entities (pillars), e.g. ‘circle’, ‘triangle’, ‘rectangle’, etc., by default None, i.e., ‘circle’

core_shape_rot_anglefloat, optional

Rotational angle (deg.) to be applied to DLD entities counter-clockwise, by default 0.

num_points_per_circleint, optional

Number of points/vertices in a polygon representing circular entities, by default 32

General

num_unitint, optional

Number of DLD units (core.DLD) arrayed along the channel, by default None

sidewall_widthfloat, optional

Width of sidewalls, by default None

opt_mirrorbool, optional

Whether to have a mirrored design, by default False

spacing_between_mirrors_within_single_unitfloat, optional

Spacing between mirrors within a single unit when opt_mirror is true, by default 0.

dot_offsetlist, optional

Offset of core DLD entities in each direction, by default [0, 0]

target_lllist, optional

Desired lower left coordinates of bounding box of entire system at the end, by default None

opt_smoothen_dep_sidewallbool, optional

Whether to smooth out the dep. sidewall downstream of system, by default False

opt_reverse_tonebool, optional

Whether to reverse the tone of layout, which may be desirable for some manufacturing techniques and/or photoresist tones, by default False

Optional components

opt_multi_inletbool, optional

Whether to include a multi-inlet upstream of system, can be configured to serve as a single-inlet as well, by default False

opt_filterbool, optional

Whether to include a filter upstream of system, by default False

opt_preloadbool, optional

Whether to include a preload upstream of system, by default False

opt_collectionbool, optional

Whether to include a collection component downstream of system, by default False

opt_collection_sideway_right_sidebool, optional

Whether to include a sideway collection component with opening on right side downstream of system, byt default False

opt_collection_sideway_left_sidebool, optional

Whether to include a sideway collection component with opening on left side downstream of system, byt default False

Potential transformations before mirror/array

opt_mirror_xbool, optional

Whether to mirror the DLD unit around x axis before mirror/array, by default False

opt_mirror_ybool, optional

Whether to mirror the DLD unit around y axis before mirror/array, by default False

rotation_angle_deg_before_arrayfloat, optional

Rotational angle (deg) for rotatoin of DLD unit before mirror/array, by default None

Mirror/Array

array_countslist, optional

Count of DLD units in each direction in case an array of DLD units is needed, by default [1, 1]

array_spacinglist, optional

Spacing between neighboring DLD units when the original DLD unit is arrayed, by default [0, 0]

opt_mirror_before_arraylist, optional

Whether to mirror DLD unit around each of x and y axes before arraying the unit, by default [False, False]

spacing_between_mirrors_before_arraylist, optional

Spacing between mirrors of DLD unit in each direction before arraying them, by default [0, 0]

mirror_before_array_around_negative_edgelist, optional

Whether to cosider lower edge of bounding box in each direction if mirroring is needed, otherwise the higher edge to be used, by default [False, False]

Cover on acc side

opt_cover_accbool, optional

Whether the accumulation side to be covered with a polygon potentially for a smooth profile, by default None

acc_cover_half_width_minfloat, optional

Length of smaller side of a trapezoidal cover that can potentially cover the accumulation sidewall, by default None

acc_cover_excess_width_over_gap_wfloat, optional

Distance to extend the accumulation side’s cover laterally without changing the slope of its sides, by default 0.

Optional addtional row capping the topmost DLD unit

opt_cap_top_rowbool, optional

Whether adding a row of entities before the most upstream row of DLD entities, by default False

cap_top_row_block_width_acc_sideint, optional

Width of additional block covering the acc. sidewall on top row, by default 0

cap_top_row_block_width_dep_sideint, optional

Width of additional block covering the dep. sidewall on top row, by default 0

Multi_inlet

config_multi_inletdict, optional

Config of multi-inlet component, by default None

Filter

filter_shapestr, optional

Shape of entities within filter, by default ‘square’

filter_preload_spacingfloat, optional

Spacing between preload and filter, by default None

filter_len_nondimint, optional

Filter length nondimensionalized by pitch of entities, by default 39

filter_half_pitch_nondimint, optional

Half-pitch of serpentine filter non-dimensionalized by pitch of entities, by default 3

filter_margin_topfloat, optional

Minimum distance between filter inlet and its entities, by default None.

filter_margin_top_nondimfloat, optional

Similar to filter_margin_top but nondimensionalized by pitch_a, by default None.

filter_offset_wfloat, optional

A parameter enabling the displacement of filter laterally for a potentially better configuration, by default 0.

filter_block_width_acc_sidefloat, optional

Width of an additional block used to cover the acc. sidewall of filter, by default 0.

filter_block_width_dep_sidefloat, optional

Width of an additional block used to cover the dep. sidewall of filter, by default 0.

Preload

preload_offset_wfloat, optional

A parameter enabling the displacement of preload laterally for a potentially better configuration, by default 0.

preload_offset_afloat, optional

A parameter enabling the displacement of preload axially for a potentially better configuration, by default 0.

preload_bar_pitchfloat, optional

Pitch of bar array in preload, by default None

preload_bar_dimslist, optional

Dimensions of bars in preload, by default None

preload_margin_topfloat, optional

Minimum distance between preload inlet and its entities, by default 0.

preload_margin_top_nondimfloat, optional

Similar to preload_margin_top but nondimensionalized by pitch_a, by default None.

preload_block_width_acc_sidefloat, optional

Width of an additional block used to cover the acc. sidewall of preload, by default 0.

preload_block_width_dep_sidefloat, optional

Width of an additional block used to cover the dep. sidewall of preload, by default 0.

Collection

collection_margin_top_nondimfloat, optional

Spacing between collection entities and DLD post array in downstream of system non-dimensionalized by pitch of entities, by default 2.

opt_collection_with_viabool, optional

Whether to use the collection-with-via scheme, by default False

Simple collection

collection_bar_pitch_nondimfloat, optional

Pitch of bars in simple collection component non-dimensionalized by pitch of entities, by default None

collection_bar_dimslist, optional

Dimensions of bars in simple collection component in x and y directions, by default None

collection_offset_wfloat, optional

A parameter enabling the displacement of collection channels laterally for a potentially better configuration, by default None

collection_offset_afloat, optional

A parameter enabling the displacement of collection channels axially for a potentially better configuration, by default None

Sideway collection

collection_sideway_widthfloat, optional

Width of sideway collection, by default None

Collection with via

via_diafloat, optional

Diameter of through-wafer via, by default None

via_dia_outer_ringfloat, optional

Diameter of a ring equal to or larger than that of through-wafer via centered on via, by default None

via_dia_outer_ring_over_via_diafloat, optional

Ratio of diameter of outer ring of via to that of via, by default 1.2

vias_spacing_minfloat, optional

Minimum allowed distance between vias, by default 60.

zz_width_to_width_totfloat, optional

Ratio of width of zig-zag (zz) collection section to the total width of DLD unit; this parameter dictates the concentration enhancement ratio, by default 0.9

zz_len_downstream_init_extensionfloat, optional

Distance between the inlet of collection component and the tip of its bars, by default 20.

zz_len_downstream_bottomint, optional

Minimum distance between outer ring of via and end of collection component downstream of system, by default 50.

zz_len_upstreamfloat, optional

Length of zig-zag collection channels, by default 300.

zz_len_downstreamfloat, optional

Minimum distance between zig-zag collection channels and end of collection component downstream of system, by default 400.

zz_bar_pitch_nondimfloat, optional

Pitch of zig-zag collection bars (channels) non-dimensionalized by pitch of DLD entities, by default 3.

zz_bar_gap_over_gap_wfloat, optional

Ratio of opening of zz collection channels to lateral gap between DLD entities, by default 1.75

zz_bar_offset_wfloat, optional

A parameter enabling the displacement of zz collection channels laterally for a potentially better configuration, by default 0.

zz_ds_top_win__topright_tip_width_largefloat, optional

Width of larger upper right tip of zz sidewall, by default None

zz_ds_top_win__topright_tip_width_smallfloat, optional

Width of smaller upper right tip of zz sidewall, by default None

bmp_bar_pitch_nondimfloat, optional

Pitch of bars (channels) within bump collection section non-dimensionalized by pitch of DLD entities, by default 2.

bmp_bar_gap_over_gap_wfloat, optional

Ratio of opening of bump collection channels to lateral gap between DLD entities, by default 2.

bmp_bar_offset_wfloat, optional

A parameter enabling the displacement of bump collection channels laterally for a potentially better configuration, by default 0.

opt_report_collectionbool, optional

Whether to report the modeling/evaluation results regarding the design of collection channels to have a better insight on how the design would perform and to readjust the configs as needed, by default True

Decorative entities inside collection component for NIL

collection_entity_dimlist, optional

(Mainly for NIL) Dimensions of decorative unit to be arrayed within collection component, by default None

collection_entity_pitch_outlist, optional

(Mainly for NIL) Pitch of decorative unit in each direction to be arrayed within collection sidewall, by default None

collection_entity_pitch_inlist, optional

(Mainly for NIL) Pitch of decorative unit in each direction to be arrayed within zz collection channels in fluid connection with via, by default None

Geom config for 1D model

height_deepfloat, optional

Height/Depth of channel in deep region, e.g., inlet/outlet fluidic buses, required to evaluate the hydraulic resistance of system and performance of design, by default None. Note that core.DLD has a height parameter that is used as Height/Depth of channel in shallow region.

bus_widthfloat, optional

Width of fluidic buses, required to evaluate the hydraulic resistance of system and performance of design, by default None

bus_lengthfloat, optional

Total length of fluidic buses, required to evaluate the hydraulic resistance of system and performance of design, by default None

Padding for NIL

opt_padding_featuresbool, optional

(NIL) Whether to add decorative features, by default False

layer_paddingtuple or list, optional

(NIL) Layer info for padding features, optional.

padding_widthdict, optional

(NIL) Padding width of decorative stripes around the design, by default {‘low’: 30, ‘right’: 30, ‘top’: 30, ‘left’: 30, }

padding_entity_dimlist or tuple, optional

(NIL) Dimensions of decorative entity, by default None

padding_entity_pitchlist or tuple, optional

(NIL) Pitch of decorative entities array in each direction, by default None

opt_padding_reverse_tonebool, optional

(NIL) Whether to reverse tone of padding features.

Relatively detailed config params

Callback function to generate entities with arbitrary profile

core_entity_funcfunction, optional

A callback function to generate and return an arbitrary region as profile of DLD entities, by default None

kwargs_entity_gendict, optional

Keyword arguments to pass to arbitrary core_entity_func, by default None

Callback function for additional regions to be inserted

single_unit_extra_shapesfunction, optional

A callback function to generate and return a list of arbitrary regions to be inserted inside the DLD unit structure before arraying, by default None

Misc.

dep_sidewall_themeint, optional

An identifier denoting a given design of dep. sidewall, by default 0

acc_sidewall_themeint, optional

An identifier denoting a given design of acc. sidewall, by default 0

top_cell_namestr

Name of top cell to be created as needed.

layer_1tuple, optional

Specs of Layer 1 in layout, by default (1, 0)

layer_2tuple, optional

Specs of Layer 1 in layout, by default (2, 0)

beam_thicknessfloat, optional

Thickness of beam profile, by default None

verbosebool, optional

verbose, by default True

opt_process_upon_initbool, optional

Whether to invoke the process method from inside the constructor to design the system, by default True

opt_write_upon_initbool, optional

Whether to invoke the write method from inside the constructor to write the GDS/DXF layout file, by default True

opt_save_imagebool, optional

Whether to invoke the save_image method from inside the constructor to save layout as png file(s), by default False

use_top_cell_if_existsbool, optional

Whether to use top cell of layout in the case that layout is not empty; if False, a top_cell to be created, by default None.

Considerations for design automation

num_unit_extraint, optional

Number of additional DLD units (core.DLD) to be considered to be conservative; only relevant if num_unit is not provided explicitly, by default None

num_unit_extra_nondimint, optional

Nondimensional form of num_unit_extra_nondim – nondimensionalized by the theoretical number of units required to displace all large particles and collect them next to the accumulation sidewall, only relevant if num_unit and num_unit_extra are not provided explicitly, by default None

get_geom_config_auto_use_auto_num_unitbool, optional

Whether to consider a full DLD system when evaluating the constraints regardless of any explicitly provided num_unit; if False, constraints will be applied by considering the explicitly provided num_unit; setting this param to True can be useful when constraints should be evaluated for a full system, but the mask should be prepared for a partial system, e.g., for computational modeling where one to a few units would suffice, by default False.

Constraints for design automation

range_Nplist, optional

Min and Max allowed Np for the structure, by default None.

range_Nwlist, optional

Min and Max allowed Nw for the structure, by default None.

range_widthlist, optional

Min and Max allowed width of structure, by default None.

range_lengthlist, optional

Min and Max allowed length of overall DLD system in the case that a full DLD is to be constructed, by default None.

Volumetric flow rate constraint

min_vfr_per_barfloat, optional

Min allowed throughput, i.e., volumetric flow rate, in unit of \(m^3/sec/bar\), by default None

min_vfr_ul_per_min_per_barfloat, optional

Min allowed throughput, i.e., volumetric flow rate, in unit of \(\mu L/min/bar\), by default None

min_vfr_ml_per_hr_per_barfloat, optional

Min allowed throughput, i.e., volumetric flow rate, in unit of \(m L/hr/bar\), by default None

fluid_mufloat, optional

Fluid dynamic viscosity with a unit of \(Pa.sec\), relevant if throughput constraint is applied, by default 1e-3

Die area (mm square)

max_die_area_mmsqfloat, optional

Max allowed die area; Note that only the area occupied by DLD pillars is considered; sidewalls and additional up-/downstream components are not taken into account. by default None

Gap over critical diameter

min_gap_over_dcfloat, optional

Min allowed lateral gap over critical diameter, by default None

Constraints OFF mode

turn_off_constraintsbool, optional

Whether to turn off the constraints, by default False

Methods

__init__([core_shape, core_shape_rot_angle, ...])

Constructor

add([element, snap_direction, p1, p2, ...])

Add/Snap an element or a cell from another layout to a cell of layout of this element.

add_pad(width, snap_direction[, layer])

Add a pad to layout.

clip([cell, clip_nondim, clip_dim, layer, ...])

Clipping a cell.

convert_vfr_to_SI_unit([SI, ul_per_min, ...])

dots_core_row(row)

Returns the coordinates of entities in row number row of the core of DLD core, i.e., excluding those related to the depletion and accumulation lanes.

estimate_die_area(Nw, pitch_w, sys_length[, ...])

Returns an estimate of die area.

get_Nw(Np, pitch_a, pitch_w, range_Nw, ...)

Returns a (minimized) Nw for a given configuration subject to a set of constraints.

get_acc_gaps()

Get the acc.

get_acc_theta()

get_boundary_gaps()

Get the dep.

get_dc(Np, gap_w[, pitch_w, pitch_a])

Returning the critical diameter.

get_dep_gaps()

Get the dep.

get_die_info()

Returning the die information.

get_flow_rate(fluid_mu, Nw, length, height, ...)

Returns volumetric flow rate of a DLD system consisting of a 1D array of core.DLD.

get_full_length(Np, Nw, pitch_a[, num_unit, ...])

Returns length and num_unit as a tuple of (length, num_unit) for a full 1D DLD array.

get_geom_config_auto([Np, d_c, width, Nw, ...])

Returns a set of geometrical configurations for a DLD system subject to a set of constraints.

get_length()

Returns the length of one full 1D array of core.DLD

get_multi_io_element(config, bb[, ...])

Make a Multi-IO element.

get_num_parallel_core_dld_1D_array([...])

Returns the number of 1D arrays of core.DLD (count of full functional DLD units).

load(fname)

Load and return object from a pickle file.

mirror(dots[, x_mirror, tol])

Mirroring a set of entities wrt.

mirror_x()

Mirror layout around x axis.

mirror_y()

Mirror layout around y axis.

plot([fname, opt_mirror])

Plotting the entities.

process([use_top_cell_if_exists])

The main method for building the system.

prune([cell_name, cell_index, cell])

Prune cells.

report(fname)

Prepare a report file from dictionary of attributes.

rotate(angle_deg)

Rotate layout

save(fname)

Pickle the object.

save_image([fname_cad, ...])

Save image (png) files from layout.

set_ll([target_ll])

Setting the lower left coordinates of system.

transform(t)

A generic transformation.

write([fname])

Write the layout file in gds/dxf format.

Attributes

CORE_SHAPE

LIST_TYPE_UNPICKLABLE

available_boundary_treatments

lst_param_auto_block

lst_param_auto_core