Application module: Footprint definition | ISO/TS 10303-1646:2019(E) © ISO |
This clause specifies the information requirements for the Footprint definition application module. The information requirements are specified as the Application Reference Model (ARM) of this application module.
NOTE 1 A graphical representation of the information requirements is given in Annex C.
NOTE 2 The mapping specification is specified in 5.1. It shows how the information requirements are met by using common resources and constructs defined or imported in the MIM schema of this application module.
This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following begins the Footprint_definition_arm schema and identifies the necessary external references.
EXPRESS specification:
*)
SCHEMA Footprint_definition_arm;
(*
The following EXPRESS interface statements specify the elements imported from the ARMs of other application modules.
EXPRESS specification:
*)
USE FROM
Layered_interconnect_complex_template_arm;
--
ISO/TS 10303-1716
USE FROM
Package_arm;
--
ISO/TS 10303-1707
REFERENCE FROM
Support_resource_arm
--
ISO/TS 10303-1800
(bag_to_set);
(*
NOTE 1 The schemas referenced above are specified in the following part of ISO 10303:
Layered_interconnect_complex_template_arm ISO/TS 10303-1716 Package_arm ISO/TS 10303-1707 Support_resource_arm ISO/TS 10303-1800
NOTE 2 See Annex C, Figures C.1and C.2 for a graphical representation of this schema.
This subclause specifies the ARM entities for this module. Each ARM application entity is an atomic element that embodies a unique application concept and contains attributes specifying the data elements of the entity. The ARM entities and definitions are specified below.
EXPRESS specification:
*)
ENTITY Breakout_footprint_definition
SUBTYPE OF (Generic_footprint_definition);
reference_footprint : Footprint_definition;
INVERSE
breakout_traces : SET[1:?] OF stratum_feature_template_location_in_breakout_footprint_definition FOR assembly;
WHERE
WR1: SELF\Multi_stratum_structured_template.location = reference_footprint\Multi_stratum_structured_template.location;
END_ENTITY;
(*
Attribute definitions:
reference_footprint: specifies the role of the Footprint_definition for the Breakout_footprint_definition. The reference_footprint is the footprint being adapted to a design layout by the Breakout_footprint_definition.
breakout_traces: specifies an inverse relationship that specifies that the existence of the Breakout_footprint_definition is dependent on the existence of the Stratum_feature_template_location_in_breakout_footprint_definition that specifies the Breakout_footprint_definition as its assembly. There shall be one or more Stratum_feature_template_location_in_breakout_footprint_definition for a Breakout_footprint_definition. The breakout_traces are the adaptation pattern components. Each component overlaps with a Land instance in the reference_footprint when the Breakout_footprint_definition is instantiated and the geometry rendered in a design layout.
Formal propositions:
WR1: The location of Breakout_footprint_definition shall be same as location of its reference_footprint.
EXPRESS specification:
*)
ENTITY Breakout_footprint_definition_shape_model
SUBTYPE OF (Structured_template_planar_shape_model);
SELF\structured_template_planar_shape_model.shape_characterized_definition : SET[1:1] OF Breakout_footprint_definition;
reference_shape : Footprint_definition_shape_model;
WHERE
WR1: reference_shape.shape_characterized_definition[1] :=: shape_characterized_definition[1].reference_footprint;
END_ENTITY;
(*
Attribute definitions:
shape_characterized_definition: specifies the role of the Breakout_footprint_definition for the Breakout_footprint_definition_shape_model. There shall exist exactly one Breakout_footprint_definition for the Breakout_footprint_definition_shape_model.
reference_shape: specifies the role of the Footprint_definition_shape_model for the Breakout_footprint_definition_shape_model.
Formal propositions:
WR1: The footprint referenced by shape_characterized_definition of reference_shape shall be the same footprint as that referenced by reference_footprint of shape_characterized_definition of Breakout_footprint_definition_shape_model.
A Footprint_definition is a type of Generic_footprint_definition. A Footprint_definition is an explicit geometric pattern that when realized in a manufactured interconnect substrate provides an interface to a discrete component when the substrate and the component are combined in an assembly. The specific properties required in a manufacturing process for the end product help determine properties of the pattern.
NOTE A Footprint_definition uses generic categories when referencing layers and does not contain design specific layer sequences.
EXAMPLE 1 Figure 1 illustrates two categories of integrated circuit footprints. The parameters shown in the illustration could be conveyed using geometric annotation data supported by ISO 10303-1051, but that annotation is optional since this part of ISO 10303 supports explicit geometry data.
EXAMPLE 2 Figure 2 illustrates two categories of simple footprints.
EXPRESS specification:
*)
ENTITY Footprint_definition
SUBTYPE OF (Generic_footprint_definition);
reference_package :
OPTIONAL
Part_usage_view;
DERIVE
locations_with_reference_feature : SET OF Part_feature_based_template_location := QUERY(trf <* templates | 'FOOTPRINT_DEFINITION_ARM.PART_FEATURE_BASED_TEMPLATE_LOCATION' IN TYPEOF(trf));
WHERE
WR1: SIZEOF(QUERY(shape <* SELF\Structured_template.shapes | NOT ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.FOOTPRINT_DEFINITION_SHAPE_MODEL'
IN TYPEOF(shape)))) = 0;
WR2: SIZEOF(QUERY(tlist <* SELF\Structured_template.templates | ('FOOTPRINT_DEFINITION_ARM.FOOTPRINT_DEFINITION'
IN TYPEOF(tlist.template)))) = 0;
WR3: (SIZEOF(locations_with_reference_feature) = 0) OR NOT EXISTS(reference_package) OR (SIZEOF(QUERY(lwrf
<* locations_with_reference_feature | NOT (reference_package :=: lwrf\Part_feature_based_template_location.reference_feature\Part_feature.associated_definition)))
= 0);
END_ENTITY;
(*
Attribute definitions:
reference_package: specifies the role of the Part_usage_view for the Footprint_definition. The reference_package supports the case where traceability is desired to the originating interface requirement. The existence of this attribute does not limit the application of a Footprint_definition to support other components. A Part_usage_view is specified to support the general case, rather than the typical case of Package. The value of this attribute need not be specified.
locations_with_reference_feature: specifies the set of Part_feature_based_template_locations for the Footprint_definition.
Formal propositions:
WR1: All shapes of Footprint_definition shall be of type Footprint_definition_shape_model.
WR2: The Footprint_definition shall not be composed of other Footprint_definitions.
WR3: If the reference package and the reference features are provided, the reference package shall be referenced by the reference features.
EXPRESS specification:
*)
ENTITY Footprint_definition_shape_model
SUBTYPE OF (Structured_template_planar_shape_model);
SELF\structured_template_planar_shape_model.shape_characterized_definition : SET[1:1] OF Footprint_definition;
reference_shape :
OPTIONAL
physical_unit_shape_model_select;
reference_seating_plane_placement :
OPTIONAL
Usage_concept_usage_relationship;
WHERE
WR1: NOT (SIZEOF(['PHYSICAL_UNIT_3D_SHAPE_ARM.PHYSICAL_UNIT_3D_SHAPE_MODEL', 'PHYSICAL_UNIT_2D_SHAPE_ARM.PHYSICAL_UNIT_PLANAR_SHAPE_MODEL']
* TYPEOF(reference_shape)) = 1) OR NOT ('PHYSICAL_UNIT_USAGE_VIEW_ARM.PART_USAGE_VIEW' IN
TYPEOF(reference_shape\Physical_unit_shape_model.shape_characterized_definition)) OR NOT ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.FOOTPRINT_DEFINITION'
IN TYPEOF(shape_characterized_definition[1])) OR (shape_characterized_definition[1]\Footprint_definition.reference_package
:=: reference_shape\Physical_unit_shape_model.shape_characterized_definition);
WR2: NOT (SIZEOF(['PHYSICAL_UNIT_3D_SHAPE_ARM.PHYSICAL_UNIT_3D_SHAPE_MODEL', 'PHYSICAL_UNIT_2D_SHAPE_ARM.PHYSICAL_UNIT_PLANAR_SHAPE_MODEL']
* TYPEOF(reference_shape)) = 1) OR ('PHYSICAL_UNIT_USAGE_VIEW_ARM.PART_USAGE_VIEW' IN TYPEOF(reference_shape\Physical_unit_shape_model.shape_characterized_definition));
WR3: NOT EXISTS(SELF\Representation.description);
WR4: NOT EXISTS(reference_shape) OR EXISTS(shape_characterized_definition[1]\Footprint_definition.reference_package);
WR5: NOT EXISTS(reference_seating_plane_placement) OR EXISTS(reference_shape);
WR6: NOT EXISTS(reference_seating_plane_placement) OR ('PACKAGE_ARM.PACKAGE' IN TYPEOF(shape_characterized_definition[1]\Footprint_definition.reference_package));
WR7: NOT EXISTS(reference_seating_plane_placement) OR ('NON_FEATURE_SHAPE_ELEMENT_ARM.SEATING_PLANE' IN TYPEOF(reference_seating_plane_placement\Usage_concept_usage_relationship.associated_usage));
WR8: NOT EXISTS(reference_seating_plane_placement) OR ((reference_seating_plane_placement\Usage_concept_usage_relationship.associating_usage_shape\Usage_view_level_non_feature_shape_model.model_shape)
= reference_shape);
WR9: NOT EXISTS(reference_seating_plane_placement) OR ((reference_seating_plane_placement\Usage_concept_usage_relationship.associated_usage\Non_feature_shape_element.associated_definition)
= shape_characterized_definition[1]\Footprint_definition.reference_package);
WR10: NOT EXISTS(reference_seating_plane_placement) OR ('PHYSICAL_UNIT_3D_SHAPE_ARM.PHYSICAL_UNIT_3D_SHAPE_MODEL' IN
TYPEOF(reference_seating_plane_placement\Usage_concept_usage_relationship.associating_usage_shape\Usage_view_level_non_feature_shape_model.model_shape));
WR11: NOT (EXISTS(reference_seating_plane_placement) AND ('PHYSICAL_UNIT_2D_SHAPE_ARM.PHYSICAL_UNIT_PLANAR_SHAPE_MODEL'
IN TYPEOF(reference_shape)));
WR12: NOT ('PHYSICAL_UNIT_2D_SHAPE_ARM.PHYSICAL_UNIT_PLANAR_SHAPE_MODEL' IN TYPEOF(reference_shape)) OR (SELF\Geometric_model.context_of_items
= reference_shape\Geometric_model.context_of_items);
END_ENTITY;
(*
Attribute definitions:
shape_characterized_definition: specifies the role of the Footprint_definition for the Footprint_definition_shape_model.
reference_shape: specifies the physical_unit_shape_model_select for the Footprint_definition_shape_model. The value of this attribute need not be specified.
reference_seating_plane_placement: specifies the role of the Usage_concept_usage_relationship for the Footprint_definition_shape_model. The value of this attribute need not be specified.
Formal propositions:
WR1: If the reference_shape is a Physical_unit_3d_shape_model or is a Physical_unit_planar_shape_model and if the shape_characterized_definition attribute of reference_shape references a Part_usage_view and if shape_characterized_definition is a Footprint_definition, then that Part_usage_view shall also be referenced by the reference_package attribute of the shape_characterized_definition.
WR2: If the reference_shape is a Physical_unit_3d_shape_model or a Physical_unit_planar_shape_model, then only a Part_usage_view shall be referenced by the reference_shape.
WR3: The description shall not be populated.
WR4: If reference_shape is provided then the reference_package shall be provided for the associated Footprint_definition.
WR5: If reference_seating_plane_placement is provided then reference_shape shall be provided.
WR6: If reference_seating_plane_placement is provided then the reference_package for the associated Footprint_definition shall be a Package.
WR7: If reference_seating_plane_placement is provided then the associated_usage for the placement shall be a Seating_plane.
WR8: If reference_seating_plane_placement is provided then the geometric model the Seating_plane shape is placed in shall specify the reference_shape as its model_shape.
WR9: If reference_seating_plane_placement is provided then the scope of the geometric model the Seating_plane shape is placed in shall be the reference_package of the associated Footprint_definition.
WR10: If reference_seating_plane_placement is provided then the relevant model shape shall be a three-dimensional model.
WR11: The reference_seating_plane_placement shall not be provided for a member of Footprint_definition_shape_model when the reference_shape is a two-dimensional model. The reference_shape shall not be a two-dimensional model when the reference_seating_plane_placement is provided.
WR12: If the reference_shape is a two-dimensional model then the context of that model shall be the context of this model.
EXPRESS specification:
*)
ENTITY Generic_footprint_definition
ABSTRACT
SUPERTYPE OF (ONEOF (Footprint_definition,
Breakout_footprint_definition))
SUBTYPE OF (Multi_stratum_structured_template);
DERIVE
padstack_based_location : template_arrangement := get_template_arrangement(padstacks);
padstacks : SET[1:?] OF Template_location_in_structured_template := QUERY(tlict <* SELF\Structured_template.templates | ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.PADSTACK_DEFINITION' IN
TYPEOF(tlict.template)));
single_stratum_components : SET[0:?] OF Single_stratum_template := fd_get_single_stratum_components(SELF\Structured_template.templates);
WHERE
WR1: SIZEOF(QUERY(ps <* SELF\Structured_template.templates | (ps\Template_location_in_structured_template.template\Multi_stratum_structured_template.location
<> SELF\Multi_stratum_structured_template.location) AND (ps\Template_location_in_structured_template.template\Multi_stratum_structured_template.location
<> template_arrangement.symmetrical))) = 0;
WR2: ((SELF\Multi_stratum_structured_template.location = template_arrangement.top) AND (SELF\Product_view_definition.initial_context\View_definition_context.description
= 'top')) OR (NOT (SELF\Multi_stratum_structured_template.location = template_arrangement.top) AND NOT (SELF\Product_view_definition.initial_context\View_definition_context.description
= 'top'));
WR3: ((SELF\Multi_stratum_structured_template.location = template_arrangement.bottom) AND (SELF\Product_view_definition.initial_context\View_definition_context.description
= 'bottom')) OR (NOT (SELF\Multi_stratum_structured_template.location = template_arrangement.bottom) AND NOT (SELF\Product_view_definition.initial_context\View_definition_context.description
= 'bottom'));
WR4: ((SELF\Multi_stratum_structured_template.location = template_arrangement.symmetrical) AND (SELF\Product_view_definition.initial_context\View_definition_context.description
= 'symmetrical')) OR (NOT (SELF\Multi_stratum_structured_template.location = template_arrangement.symmetrical) AND
NOT (SELF\Product_view_definition.initial_context\View_definition_context.description = 'symmetrical'));
WR5: ((SELF\Multi_stratum_structured_template.location = template_arrangement.swappable) AND (SELF\Product_view_definition.initial_context\View_definition_context.description
= 'swappable')) OR (NOT (SELF\Multi_stratum_structured_template.location = template_arrangement.swappable) AND NOT
(SELF\Product_view_definition.initial_context\View_definition_context.description = 'swappable'));
WR6: NOT (SIZEOF(single_stratum_components) = 0) OR (SELF\Multi_stratum_structured_template.location = padstack_based_location);
END_ENTITY;
(*
Attribute definitions:
padstack_based_location: specifies the template_arrangement that is evaluated using function get_template_arrangement with padstacks as an argument.
padstacks: specifies the role of Template_location_in_structured_template for the Generic_footprint_definition. There shall be at least one Template_location_in_structured_template provided.
single_stratum_components: specifies the role of the Single_stratum_template for the Generic_footprint_definition. The Single_stratum_templates are optional and need not be provided for the Generic_footprint_definition.
Formal propositions:
WR1: The location of Multi_stratum_structured_templates composing Generic_footprint_definition shall be either symmetrical or same as one of Generic_footprint_definition.
WR2: The location shall be top if and only if the padstack location is top.
WR3: The location shall be bottom if and only if the padstack location is bottom.
WR4: The location shall be symmetrical if and only if the padstack location is symmetrical.
WR5: The location shall be swappable if and only if the padstack location is swappable.
WR6: If there are no single_stratum_components, then the location inherited from the Multi_stratum_structured_template shall be equal to the calculated padstack_based_location.
EXPRESS specification:
*)
ENTITY Package_footprint_relationship_definition
SUBTYPE OF (Product_view_definition);
DERIVE
associated_model : SET[1:1] OF Geometric_model := fd_get_amodel(SELF);
related_models : SET[2:2] OF Geometric_model := fd_get_rmodels(related_elements);
related_transforms : SET[2:2] OF Geometric_model_relationship_with_transformation := fd_get_transforms(associated_model, related_models);
INVERSE
related_elements : SET[2:2] OF view_definition_relationship FOR related_view;
WHERE
WR1: SIZEOF(QUERY(re <* related_elements | ('PACKAGE_ARM.PACKAGE' IN TYPEOF(re\View_definition_relationship.relating_view))))
= 1;
WR2: SIZEOF(QUERY(re <* related_elements | ('FOOTPRINT_DEFINITION_ARM.FOOTPRINT_DEFINITION'
IN TYPEOF(re\View_definition_relationship.relating_view)))) = 1;
WR3: SIZEOF(related_models) = 2;
WR4: SIZEOF(associated_model) = 1;
WR5: SIZEOF(QUERY(rm <* related_models | ('PHYSICAL_UNIT_2D_SHAPE_ARM.PHYSICAL_UNIT_PLANAR_SHAPE_MODEL'
IN TYPEOF(rm)))) = 1;
WR6: SIZEOF(QUERY(rm <* related_models | ('FOOTPRINT_DEFINITION_ARM.FOOTPRINT_DEFINITION_SHAPE_MODEL' IN TYPEOF(rm)))) = 1;
WR7: 'LAYERED_2D_SHAPE_ARM.PLANAR_SHAPE_MODEL' IN TYPEOF(associated_model[1]);
WR8: SIZEOF(related_transforms) = 2;
END_ENTITY;
(*
Attribute definitions:
associated_model: specifies a Geometric_model that is establishing a common context in which the Package model and the Footprint_definition model are related. Each of the two models is independently transformed into the associated_model, with the role of the transforms being to establish the formal relationship.
related_models: specifies two Geometric_models, one of which is a planar model for a Package, and the other is a planar model for a Footprint_definition. The models are individually associated with the Package and Footprint_definition related to the Package_footprint_relationship_definition by related_elements through a Shape_description_association.
related_transforms: specifies two Geometric_model_relationship_with_transformations that individually specify the transformation matrix that locates a Package model or a Footprint_definition model in the associated_model.
NOTE 1 Taken together, the related_transforms specifies the geometric relationship between geometric elements in a Package model to geometric elements in a Footprint_definition model.
related_elements: is an inverse attribute that specifies that the Package_footprint_relationship_definition is existence dependent on two members of View_definition_relationship. One member of View_definition_relationship references a Package. The other member references a Footprint_definition.
NOTE 2 The direction of the related and relating attributes differs from an assembly relationship since a Package_footprint_relationship_definition is not an assembly.
Formal propositions:
WR1: At least one member of Package shall be included in related_elements.
WR2: At least one member of Footprint_definition shall be included in related_elements.
NOTE 3 WR1 with WR2 and the population constraint on related_elements ensure that there are one Package and one Footprint_definition related to a member of Package_footprint_relationship_definition.
WR3: There shall be exactly two models related to the Package_footprint_relationship_definition model.
WR4: There shall be exactly one associated_model.
WR5: One of the related_models shall be a Physical_unit_planar_shape_model.
WR6: One of the related_models shall be a Footprint_definition_shape_model.
NOTE 4 WR3, WR5, WR6 together ensure that there is the correct type of model in related_models.
WR7: The associated_model shall have a dimensionality of 2.
WR8: There shall exist exactly two related_transforms.
EXPRESS specification:
*)
ENTITY Part_feature_based_template_location
SUBTYPE OF (Template_location_in_structured_template);
reference_feature : Part_feature;
END_ENTITY;
(*
Attribute definitions:
reference_feature: specifies the role of one Part_feature for the Part_feature_based_template_location.
EXPRESS specification:
*)
ENTITY Stratum_feature_template_location_in_breakout_footprint_definition
SUBTYPE OF (Stratum_specific_template_location);
SELF\template_location_in_structured_template.assembly : Breakout_footprint_definition;
SELF\template_location_in_structured_template.template : Stratum_feature_template;
original_padstack : Part_feature_based_template_location;
breakout_padstack : Template_location_in_structured_template;
WHERE
WR1: original_padstack.assembly :=: assembly.reference_footprint;
WR2: breakout_padstack.assembly :=: assembly;
END_ENTITY;
(*
Attribute definitions:
assembly: specifies the role of the Breakout_footprint_definition for the Stratum_feature_template_location_in_breakout_footprint_definition.
template: specifies the role of the Stratum_feature_template for the Stratum_feature_template_location_in_breakout_footprint_definition.
original_padstack: specifies the role of the Part_feature_based_template_location for the Stratum_feature_template_location_in_breakout_footprint_definition.
breakout_padstack: specifies the role of the Template_location_in_structured_template for the Stratum_feature_template_location_in_breakout_footprint_definition.
Formal propositions:
WR1: The original_padstack.assembly shall be the same member as assembly.reference_footprint.
WR2: The breakout_padstack.assembly shall be the same member as assembly.
This subclause specifies the ARM subtype constraints for this module. Each subtype constraint places constraints on the possible super-type / subtype instantiations. The ARM subtype constraints and definitions are specified below.
The structured_template_planar_shape_model_subtypes constraint specifies a constraint that applies to instances of structured_template_planar_shape_model and enforces the rule that its subtypes and Footprint_definition_shape_model are exclusive.
EXPRESS specification:
*)
SUBTYPE_CONSTRAINT structured_template_planar_shape_model_subtypes FOR structured_template_planar_shape_model;
(ONEOF (Breakout_footprint_definition_shape_model,
Footprint_definition_shape_model));
END_SUBTYPE_CONSTRAINT;
(*
The multi_stratum_structured_template_subtypes constraint specifies a constraint that applies to instances of multi_stratum_structured_template and enforces the rule that its subtypes , Generic_footprint_definition and Multi_stratum_special_symbol_template are exclusive.
EXPRESS specification:
*)
SUBTYPE_CONSTRAINT multi_stratum_structured_template_subtypes FOR multi_stratum_structured_template;
(ONEOF (Padstack_definition,
Generic_footprint_definition,
Multi_stratum_special_symbol_template));
END_SUBTYPE_CONSTRAINT;
(*
This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.
EXPRESS specification:
*)
FUNCTION fd_get_components (input : SET[2:2] OF View_definition_relationship) : SET OF Product_view_definition;
LOCAL pvd : SET OF Product_view_definition := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(input); pvd := pvd + input[i]\View_definition_relationship.relating_view; END_REPEAT; RETURN(pvd);
END_FUNCTION;
(*
Argument definitions:
input: the specified set of View_definition_relationships
EXPRESS specification:
*)
FUNCTION fd_get_amodel (input : Product_view_definition) : SET OF Geometric_model;
LOCAL gm : SET OF Geometric_model := []; sda : SET OF Shape_description_association := []; END_LOCAL; -- process input.primary_shape_representation IF 'ELEMENTAL_GEOMETRIC_SHAPE_ARM.GEOMETRIC_MODEL' IN TYPEOF(input.primary_shape_representation) THEN gm := gm + input.primary_shape_representation; END_IF; -- process input.auxiliary_shape_representations IF (SIZEOF(input.auxiliary_shape_representations) >= 0) THEN REPEAT i := 1 TO HIINDEX(input.auxiliary_shape_representations); IF 'ELEMENTAL_GEOMETRIC_SHAPE_ARM.GEOMETRIC_MODEL' IN TYPEOF(input.auxiliary_shape_representations[i]) THEN gm := gm + input.auxiliary_shape_representations[i]; END_IF; END_REPEAT; END_IF; -- process other SHAPE_DESCRIPTION_ASSOCIATIONs that could still hang around sda := bag_to_set(USEDIN(input, 'SHAPE_PROPERTY_ASSIGNMENT_ARM.SHAPE_DESCRIPTION_ASSOCIATION.DEFINITION')); IF (SIZEOF(sda) >= 0) THEN REPEAT i := 1 TO HIINDEX(sda); IF 'ELEMENTAL_GEOMETRIC_SHAPE_ARM.GEOMETRIC_MODEL' IN TYPEOF(input.primary_shape_representation) THEN gm := gm + sda[i]\Property_definition_representation.used_representation; END_IF; END_REPEAT; END_IF; RETURN(gm);
END_FUNCTION;
(*
Argument definitions:
input: the specified Product_view_definition.
EXPRESS specification:
*)
FUNCTION fd_get_rmodels (input : SET[2:2] OF View_definition_relationship) : SET OF Geometric_model;
LOCAL gm : SET OF Geometric_model := []; pvd : SET OF Product_view_definition := []; END_LOCAL; pvd := fd_get_components(input); IF (SIZEOF(pvd) >= 0) THEN REPEAT i := 1 TO HIINDEX(pvd); gm := gm + fd_get_amodel(pvd[i]); END_REPEAT; RETURN(gm); END_IF; RETURN(?);
END_FUNCTION;
(*
Argument definitions:
input: the specified set of View_definition_relationship.
EXPRESS specification:
*)
FUNCTION fd_get_single_stratum_components (input : SET OF Template_location_in_structured_template) : SET OF Single_stratum_template;
LOCAL sst : SET OF Single_stratum_template := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(input); IF ('LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.SINGLE_STRATUM_TEMPLATE' IN TYPEOF(input[i]\Template_location_in_structured_template.template)) THEN sst := sst + input[i]\Template_location_in_structured_template.template; END_IF; END_REPEAT; RETURN(sst);
END_FUNCTION;
(*
Argument definitions:
input: the specified set of Template_location_in_structured_template.
It returns top if there is at least one Template_location_in_structured_template specified in input that has location of Template_location_in_structured_template set to top and there are no Template_location_in_structured_templates specified in input that have location of Template_location_in_structured_template set to bottom.
It returns bottom if there is at least one Template_location_in_structured_template specified in input that has location of Template_location_in_structured_template set to bottom and there are no Template_location_in_structured_templates specified in input that have location of Template_location_in_structured_template set to top.
It returns symmetrical if there is at least one Template_location_in_structured_template specified in input that has location of Template_location_in_structured_template set to symmetrical and there are no Padstack_location_in_footprint_definitions specified in input that have location of Template_location_in_structured_template set to top or bottom.
It returns Undefined otherwise.
EXPRESS specification:
*)
FUNCTION get_template_arrangement (input : SET OF Template_location_in_structured_template) : template_arrangement;
LOCAL tlist : SET OF Template_location_in_structured_template := (QUERY(inx <* input | ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.MULTI_STRATUM_STRUCTURED_TEMPLATE' IN TYPEOF(inx.template)))); pabt : BAG OF STRING := []; pabb : BAG OF STRING := []; pabsymmetrical : BAG OF STRING := []; pabswappable : BAG OF STRING := []; END_LOCAL; REPEAT i := 1 TO SIZEOF(tlist) BY 1; IF (tlist[i].template\Multi_stratum_structured_template.location = template_arrangement.top) THEN pabt := pabt + 'top'; END_IF; IF (tlist[i].template\Multi_stratum_structured_template.location = template_arrangement.bottom) THEN pabb := pabb + 'bottom'; END_IF; IF (tlist[i].template\Multi_stratum_structured_template.location = template_arrangement.symmetrical) THEN pabsymmetrical := pabsymmetrical + 'symmetrical'; END_IF; IF (tlist[i].template\Multi_stratum_structured_template.location = template_arrangement.swappable) THEN pabswappable := pabswappable + 'swappable'; END_IF; END_REPEAT; IF ((SIZEOF(pabt) > 0) AND (SIZEOF(pabb) = 0)) THEN RETURN(template_arrangement.top); END_IF; IF ((SIZEOF(pabb) > 0) AND (SIZEOF(pabt) = 0)) THEN RETURN(template_arrangement.bottom); END_IF; IF ((SIZEOF(pabb) = 0) AND (SIZEOF(pabt) = 0) AND (SIZEOF(pabsymmetrical) > 0)) THEN RETURN(template_arrangement.symmetrical); END_IF; IF ((SIZEOF(pabb) = 0) AND (SIZEOF(pabt) = 0) AND (SIZEOF(pabsymmetrical) = 0) AND (SIZEOF(pabswappable) > 0)) THEN RETURN(template_arrangement.swappable); END_IF; RETURN(?);
END_FUNCTION;
(*
Argument definitions:
input: the specified set of Padstack_location_in_footprint_definitions.
EXPRESS specification:
*)
FUNCTION fd_get_transforms (input1 : SET[1:1] OF Geometric_model; input2 : SET[2:2] OF Geometric_model) : SET OF Geometric_model_relationship_with_transformation;
LOCAL gmrwt : SET OF Geometric_model_relationship_with_transformation := []; END_LOCAL; gmrwt := bag_to_set(USEDIN(input1[1], 'GEOMETRIC_MODEL_RELATIONSHIP_ARM.GEOMETRIC_MODEL_RELATIONSHIP.REP_1')); REPEAT i := 1 TO HIINDEX(gmrwt); IF NOT ((gmrwt[i]\Geometric_model_relationship.rep_2 IN input2) AND ('CONTEXTUAL_SHAPE_POSITIONING_ARM.GEOMETRIC_MODEL_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(gmrwt[i]))) THEN RETURN(?); END_IF; END_REPEAT; RETURN(gmrwt);
END_FUNCTION;
(*
Argument definitions:
input1: the specified set of Geometric_models.
input2: the specified set of Geometric_models.
*)
END_SCHEMA; -- Footprint_definition_arm
(*
© ISO 2019 — All rights reserved