Application module: Assembly component ISO/TS 10303-1802:2018-11(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 function definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM entity definitions

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 Assembly component 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 Assembly_component_arm schema and identifies the necessary external references.

EXPRESS specification:

*)
SCHEMA Assembly_component_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 Component_grouping_arm;    --  ISO/TS 10303-1656

USE FROM Assembly_shape_arm;    --  ISO/TS 10303-1808
(*

NOTE 1   The schemas referenced above are specified in the following part of ISO 10303:

Component_grouping_arm ISO/TS 10303-1656
Assembly_shape_arm ISO/TS 10303-1808

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 Assembly_component   EXPRESS-GMapping table

An Assembly_component is a type of Definition_based_product_occurrence. An Assembly_component is the occurrence of a Part_view_definition or Template_definition in an assembly or in an interconnect. An Assembly_component may include additional product data over that defined in Part_view_definition or Template_definition. An Assembly_component that is no other type is intended to be an instance of a Part_view_definition and not of a Template_definition. Requirements and parameters may be assigned directly to an Assembly_component in which case the interpretation shall be that the assignment is valid for all design views related to the Assembly_component. Requirements and parameters may be assigned through a member of Assembly_component_relationship in which case the interpretation shall be that the assignment is valid for only that design view.

EXPRESS specification:

*)
ENTITY Assembly_component
  SUBTYPE OF (Definition_based_product_occurrence);
DERIVE
  assemblies : SET[0:?] OF Product_view_definition := ac_get_assemblies(SELF);
  groups : SET[0:?] OF Assembly_group_component := ac_get_groups(SELF);
  versions : SET[0:?] OF Product_version := ac_get_versions(assemblies);
  product : SET[0:?] OF Product := ac_get_products(versions);
INVERSE
  SELF\Product_occurrence.occurrence_contexts : SET[1:?] OF Assembly_component_relationship FOR related_view;
WHERE
  WR1: NOT(('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.FOOTPRINT_OCCURRENCE' IN TYPEOF(SELF)) XOR ('FOOTPRINT_DEFINITION_ARM.FOOTPRINT_DEFINITION' IN TYPEOF(derived_from))) OR NOT(('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.PADSTACK_OCCURRENCE' IN TYPEOF(SELF)) XOR ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.PADSTACK_DEFINITION' IN TYPEOF(SELF\Definition_based_product_occurrence.derived_from)));
  WR2: SELF\Product_view_definition.defined_version :=: SELF\Definition_based_product_occurrence.derived_from.defined_version;
  WR3: SIZEOF(assemblies) = SIZEOF(versions);
  WR4: SIZEOF(product) = 1;
  WR5: (('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRUCTURED_LAYOUT_COMPONENT_SUB_ASSEMBLY_RELATIONSHIP' IN TYPEOF(SELF\Assembly_component.occurrence_contexts[1])) OR (SIZEOF(groups) = 0) OR (ac_get_group_assemblies(groups) = assemblies));
END_ENTITY;
(*

Attribute definitions:

assemblies: the set of assemblies the Assembly_component helps to directly compose. The value of this attribute need not be specified.

groups: the set of component groupings the Assembly_component helps to directly compose. The value of this attribute need not be specified.

versions: the set of versions of the product which the Assembly_component helps to define. The value of this attribute need not be specified.

product: the set of products, versions of which the Assembly_component helps to define. The value of this attribute need not be specified.

occurrence_contexts: an inverse relationship that specifies that the existence of the Assembly_component is dependent on the existence of the Assembly_component_relationship that specifies the Assembly_component as its related_view. There shall be one or more Assembly_component_relationship for an Assembly_component.

NOTE    This cardinality supports multiple versions of the design, with the same member of Assembly_component.

Formal propositions:

WR1: Only a Footprint_occurrence shall reference a Footprint_definition and only a Padstack_occurrence shall reference a Padstack_definition.

WR2: The member referenced by the inherited attribute defined_version shall be the same member as that referenced by defined_version referenced by the Product_view_definition referenced by the inherited attribute derived_from.

WR3: Each member of versions shall be reference by one member of assemblies.

WR4: An Assembly_component shall help to compose definitions and versions for one product.

WR5: If an Assembly_component is not used by one or more Structured_layout_component_sub_assembly_relationship, and if an Assembly_component is used in one or more groups, then each group shall be used in an assembly that is in the set of assemblies which the Assembly_component is directly helping to compose.

NOTE    Some types of Assembly_component may have both a direct relationship to an assembly and an indirect relationship to that assembly through a grouping mechanism.

4.2.2 Component_make_from_relationship   EXPRESS-GMapping table

A Component_make_from_relationship is a type of View_definition_relationship. A Component_make_from_relationship is the association between one Assembly_component and another Assembly_component, where one Assembly_component results from full or partial reuse of the other.

NOTE    The main use of this concept is design reuse where the modification consists of the fact that the Assembly_component is in a different assembly from the original design, or where the original design is a reference design.

EXPRESS specification:

*)
ENTITY Component_make_from_relationship
  SUBTYPE OF (View_definition_relationship);
  SELF\View_definition_relationship.relating_view RENAMED reusable_component : Assembly_component;
  SELF\View_definition_relationship.related_view RENAMED resultant_component : Assembly_component;
WHERE
  WR1: resultant_component <> reusable_component;
END_ENTITY;
(*

Attribute definitions:

reusable_component: specifies the Assembly_component that is reused to create the resultant_component in the Component_make_from_relationship.

resultant_component: specifies the Assembly_component that results from the reuse of the reusable_component in the Component_make_from_relationship.

Formal propositions:

WR1: The reusable_component shall not be the resultant_component.

4.2.3 Physical_component   EXPRESS-GMapping table

A Physical_component is a type of Definition_based_product_occurrence. A Physical_component shall be used when the Assembly_component is derived from a Part_view_definition.

EXPRESS specification:

*)
ENTITY Physical_component
  SUBTYPE OF (Assembly_component);
END_ENTITY;
(*

4.2.4 Thermal_component   EXPRESS-GMapping table

A Thermal_component is a type of Assembly_component that is included in the design in order to satisfy a heat flow requirement.

NOTE    An Assembly_component utilized as a Thermal_component may be another type of Assembly_component as well.

EXAMPLE    A heatsink, thermal grease, a thermal via, an active thermal cooler (such as a fan), or a thermoelectric cooler.

EXPRESS specification:

*)
ENTITY Thermal_component
  SUBTYPE OF (Assembly_component);
END_ENTITY;
(*

4.3 ARM function definitions

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

4.3.1 ac_get_assemblies

The ac_get_assemblies function returns the set of Product_view_definition that are in the role of assemblies either directly or indirectly through an Assembly_group_component.

EXPRESS specification:

*)
FUNCTION ac_get_assemblies (input : Assembly_component) : SET[0:?] OF Product_view_definition;
LOCAL
      acr : SET OF Assembly_component_relationship := input\Assembly_component.occurrence_contexts;
      pvd : SET OF Product_view_definition := [];
    END_LOCAL;
    REPEAT i := 1 TO HIINDEX(acr) BY 1;
      IF NOT('COMPONENT_GROUPING_ARM.' + 'ASSEMBLY_GROUP_COMPONENT' IN TYPEOF(acr[i]\Product_occurrence_definition_relationship.relating_view))
      THEN
        pvd := pvd + acr[i]\Product_occurrence_definition_relationship.relating_view; 
      ELSE
        pvd := pvd + get_assemblies(acr[i]\Product_occurrence_definition_relationship.relating_view);
      END_IF;
    END_REPEAT;
    RETURN (pvd);
END_FUNCTION;
(*

Argument definitions:

input: the set of Assembly_components.

4.3.2 ac_get_group_assemblies

The ac_get_group_assemblies function returns the set of Product_view_definition that are in the role of assemblies either directly or indirectly through an Assembly_group_component for each member of input.

EXPRESS specification:

*)
FUNCTION ac_get_group_assemblies (input : SET[0:?] OF Assembly_group_component) : SET[0:?] OF Product_view_definition;
LOCAL
      acr : SET OF Assembly_component_relationship := [];
      pvd : SET OF Product_view_definition := [];
    END_LOCAL;
    REPEAT i := 1 TO HIINDEX(input) BY 1;
      acr := input[i]\Assembly_component.occurrence_contexts;
    END_REPEAT;
    REPEAT i := 1 TO HIINDEX(acr) BY 1;
      IF NOT('COMPONENT_GROUPING_ARM.' + 'ASSEMBLY_GROUP_COMPONENT' IN TYPEOF(acr[i]\Product_occurrence_definition_relationship.relating_view))
      THEN
        pvd := pvd + acr[i]\Product_occurrence_definition_relationship.relating_view; 
      ELSE
        pvd := pvd + get_assemblies(acr[i]\Product_occurrence_definition_relationship.relating_view);
      END_IF;
    END_REPEAT;
    RETURN (pvd);
END_FUNCTION;
(*

Argument definitions:

input: the set of Assembly_group_components.

4.3.3 ac_get_groups

The ac_get_groups function returns the set of Assembly_components that are in the role of assemblies for the input item.

EXPRESS specification:

*)
FUNCTION ac_get_groups (input : Assembly_component) : SET[0:?] OF Assembly_group_component;
LOCAL
      acr : SET OF Assembly_component_relationship := input\Assembly_component.occurrence_contexts;
      agc : SET OF Assembly_group_component := [];
    END_LOCAL;
    REPEAT i := 1 TO HIINDEX(acr) BY 1;
      IF ('COMPONENT_GROUPING_ARM.' + 'ASSEMBLY_GROUP_COMPONENT' IN TYPEOF(acr[i]\Product_occurrence_definition_relationship.relating_view))
      THEN
        agc := agc + acr[i]\Product_occurrence_definition_relationship.relating_view; 
      END_IF;
    END_REPEAT;
    RETURN (agc);
END_FUNCTION;
(*

Argument definitions:

input: the set of Assembly_components.

4.3.4 ac_get_products

The ac_get_products function returns the set of Products referenced by members of input in the role of of_product.

EXPRESS specification:

*)
FUNCTION ac_get_products (input : SET[0:?] OF Product_version) : SET[0:?] OF Product;
LOCAL
      p : SET OF Product := [];
    END_LOCAL;
    REPEAT i := 1 TO HIINDEX(input) BY 1;
      p := p + input[i]\Product_version.of_product; 
    END_REPEAT;
    RETURN (p);
END_FUNCTION;
(*

Argument definitions:

input: the set of Product_versions.

4.3.5 ac_get_versions

The ac_get_versions function returns the set of Product_versions referred to by members of input in the role of defined_version.

EXPRESS specification:

*)
FUNCTION ac_get_versions (input : SET[0:?] OF Product_view_definition) : SET[0:?] OF Product_version;
LOCAL
      pv : SET OF Product_version := [];
    END_LOCAL;
    REPEAT i := 1 TO HIINDEX(input) BY 1;
      pv := pv + input[i]\Product_view_definition.defined_version; 
    END_REPEAT;
    RETURN (pv);
END_FUNCTION;
(*

Argument definitions:

input: the set of Product_view_definitions.

4.3.6 get_assemblies

The get_assemblies function returns the set of Product_view_definition that are the assemblies for the Assembly_component input to the function.

EXPRESS specification:

*)
FUNCTION get_assemblies (input : Assembly_component) : SET[0:?] OF Product_view_definition;
LOCAL
      acr : SET OF Assembly_component_relationship := input\Assembly_component.occurrence_contexts;
      pvd : SET OF Product_view_definition := [];
    END_LOCAL;

    REPEAT i := 1 TO HIINDEX(acr) BY 1;
      IF NOT('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.' +
        'STRUCTURED_LAYOUT_COMPONENT' IN
        TYPEOF(acr[i]\Product_occurrence_definition_relationship.relating_view))
      THEN
        pvd := pvd + acr[i]\Product_occurrence_definition_relationship.relating_view; 
      ELSE
        pvd := pvd + get_assemblies(acr[i]\Product_occurrence_definition_relationship.relating_view);
      END_IF;
    END_REPEAT;

    RETURN (pvd);
END_FUNCTION;
(*

Argument definitions:

input: the specified Assembly_component.



*)
END_SCHEMA;  -- Assembly_component_arm
(*


© ISO 2018 — All rights reserved