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, padding_width=None, padding_entity_dim=None, padding_entity_pitch=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.DLDand 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 fornum_unit, an appropriate value is set based on the number of fluidic lanesNwand additional number of units configured fromnum_unit_extraand/ornum_unit_extra_nondimas 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 passingopt_mirror=True.Note
Order of processes and pertinent parameters:
Standard DLD structure & mirrored design if
opt_mirroris 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=TrueMirror.y for the case that
opt_mirror_y=TrueRotation 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.
- Arraying (and Mirroring) if
Apply padding if
opt_padding_features=True(mainly for nanoimprint lithography (NIL)).Set lower left coordinates if a valid
target_llis 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_mirroris 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_topbut nondimensionalized bypitch_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_topbut nondimensionalized bypitch_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.DLDhas aheightparameter 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
- 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, optional
(NIL) Dimensions of decorative entity, by default None
- padding_entity_pitch_type_, optional
(NIL) Pitch of decorative entities array in each direction, by default None
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
processmethod from inside the constructor to design the system, by default True- opt_write_upon_initbool, optional
Whether to invoke the
writemethod from inside the constructor to write the GDS/DXF layout file, by default True- opt_save_imagebool, optional
Whether to invoke the
save_imagemethod 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_unitis 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 ifnum_unitandnum_unit_extraare 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 providednum_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, padding_width=None, padding_entity_dim=None, padding_entity_pitch=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_mirroris 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_topbut nondimensionalized bypitch_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_topbut nondimensionalized bypitch_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.DLDhas aheightparameter 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
- 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, optional
(NIL) Dimensions of decorative entity, by default None
- padding_entity_pitch_type_, optional
(NIL) Pitch of decorative entities array in each direction, by default None
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
processmethod from inside the constructor to design the system, by default True- opt_write_upon_initbool, optional
Whether to invoke the
writemethod from inside the constructor to write the GDS/DXF layout file, by default True- opt_save_imagebool, optional
Whether to invoke the
save_imagemethod 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_unitis 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 ifnum_unitandnum_unit_extraare 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 providednum_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
rowof 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_theta()get_dc(Np, gap_w[, pitch_w, pitch_a])Returning the critical diameter.
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
lengthandnum_unitas 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_SHAPELIST_TYPE_UNPICKLABLElst_param_auto_blocklst_param_auto_core