Application module: Footprint definition ISO/TS 10303-1646:2019(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM entity definitions
   4.3 ARM subtype constraint definitions
   4.4 ARM function definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM entity definitions
     5.2.2 MIM subtype constraint definition

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Change history
Bibliography
Index

4 Information requirements

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;
(*

4.1 Required AM ARMs

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.

4.2 ARM entity definitions

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.

4.2.1 Breakout_footprint_definition   EXPRESS-GMapping table

A Breakout_footprint_definition is a type of Generic_footprint_definition provided to support re-use of patterns necessary to adapt a footprint to a design layout. A Breakout_footprint_definition specifies the footprint being adapted as well as the adaptation pattern.

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.

4.2.2 Breakout_footprint_definition_shape_model   EXPRESS-GMapping table

A Breakout_footprint_definition_shape_model is a type of Structured_template_planar_shape_model.

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.

4.2.3 Footprint_definition   EXPRESS-GMapping table

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.



Figure 1 —  Typical integrated circuit footprint definition

Figure 1 —  Typical integrated circuit footprint definition

EXAMPLE 2   Figure 2 illustrates two categories of simple footprints.



Figure 2 —  Typical chip component footprint definition

Figure 2 —  Typical chip component footprint definition

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.

4.2.4 Footprint_definition_shape_model   EXPRESS-GMapping table

A Footprint_definition_shape_model is a type of Structured_template_planar_shape_model. A Footprint_definition_shape_model is the planar shape of a Footprint_definition. A Footprint_definition_shape_model may reference either a shape of a Part_view_definition or a shape of a Printed_part_template as a causal shape with which the Footprint_definition_shape_model is to be compatible.

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.

4.2.5 Generic_footprint_definition   EXPRESS-GMapping table

A Generic_footprint_definition is a type of Multi_stratum_structured_template. A Generic_footprint_definition is either a Footprint_definition or a Breakout_footprint_definition.

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.

4.2.6 Package_footprint_relationship_definition   EXPRESS-GMapping table

A Package_footprint_relationship_definition is a type of Product_view_definition provided to explicitly define the geometric relationship between a planar shape of a Footprint_definition and a planar shape of a Package. The Package_footprint_relationship_definition allows an application to archive and exchange many to many relationships between Package and Footprint_definition models.

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.

4.2.7 Part_feature_based_template_location   EXPRESS-GMapping table

A Part_feature_based_template_location is a type of Template_location_in_structured_template that supports the case that properties of a specific element of a Footprint_definition are dependent on properties of a specific Part_feature.

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.

4.2.8 Stratum_feature_template_location_in_breakout_footprint_definition   EXPRESS-GMapping table

A Stratum_feature_template_location_in_breakout_footprint_definition is a type of Stratum_specific_template_location that also provides an explicit map between a padstack location in a Breakout_footprint_definition and the source requirement padstack location in a Footprint_definition.

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.

4.3 ARM subtype constraint definitions

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.

4.3.1 structured_template_planar_shape_model_subtypes   EXPRESS-GMapping table

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;
(*

4.3.2 multi_stratum_structured_template_subtypes   EXPRESS-GMapping table

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;
(*

4.4 ARM function definitions

This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.

4.4.1 fd_get_components

The fd_get_components function returns the set of Product_view_definitions that are referenced by the relating_view attribute of the input.

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

4.4.2 fd_get_amodel

The fd_get_amodel function returns the set of Geometric_model that are linked to a Product_view_definition.

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.

4.4.3 fd_get_rmodels

The fd_get_rmodels function returns the set of Geometric_models that are related to the Product_view_definitions that are related by the input set.

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.

4.4.4 fd_get_single_stratum_components

The fd_get_single_stratum_components function returns the set of Single_stratum_template that are in the role of template for the input.

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.

4.4.5 get_template_arrangement

The get_template_arrangement function gets the template_arrangement value that is consistent with all Template_location_in_structured_template specified by input.

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.

4.4.6 fd_get_transforms

The fd_get_transforms function returns the set of Geometric_model_relationship_with_transformation that transform the elements of input2 to the domain of input1.

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