Application module: Land ISO/TS 10303-1692: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 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

(*
ISO/TC 184/SC 4/WG 12 N9850 - ISO/TS 10303-1692 Land - EXPRESS ARM
Supersedes ISO/TC 184/SC 4/WG 12 N9438
*)



SCHEMA Land_arm;

USE FROM Layered_interconnect_module_design_arm;    -- ISO/TS 10303-1698

REFERENCE FROM Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);


ENTITY Contact_size_dependent_land
  SUBTYPE OF (Land);
  SELF\Definition_based_product_occurrence.derived_from : Default_attachment_size_based_land_physical_template;
INVERSE
  external_access_mechanism : SET[1:2] OF Land_interface_terminal FOR associated_definition;
END_ENTITY;

ENTITY Dependent_electrical_isolation_removal_component
  SUBTYPE OF (Electrical_isolation_laminate_component);
  SELF\Electrical_isolation_laminate_component.derived_from : Dependent_electrical_isolation_removal_template;
DERIVE
  SELF\Material_removal_laminate_component.causal_item RENAMED associated_land : Land := land_get_associated_land_for_electrical_removal(SELF);
WHERE
  WR1: associated_land\Definition_based_product_occurrence.derived_from :=: SELF\Definition_based_product_occurrence.derived_from\Dependent_electrical_isolation_removal_template.associated_item;
  WR2: NOT('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.MULTI_LAYER_MATERIAL_REMOVAL_LAMINATE_COMPONENT' IN TYPEOF(SELF));
  WR3: associated_land\Land.functional = FALSE;
END_ENTITY;

ENTITY Dependent_thermal_isolation_removal_component
  SUBTYPE OF (Thermal_isolation_removal_component);
  SELF\Thermal_isolation_removal_component.derived_from : Dependent_thermal_isolation_removal_template;
DERIVE
  associated_land : Land := land_get_associated_land_for_thermal_removal(SELF);
WHERE
  WR1: associated_land\Definition_based_product_occurrence.derived_from :=: SELF\Thermal_isolation_removal_component.derived_from\Dependent_thermal_isolation_removal_template.associated_item;
  WR2: associated_land\Land.functional = TRUE;
END_ENTITY;

ENTITY Inter_stratum_feature_dependent_land
  ABSTRACT SUPERTYPE OF (ONEOF (Plated_passage_dependent_land,
                                Unsupported_passage_dependent_land))
  SUBTYPE OF (Land);
  SELF\Definition_based_product_occurrence.derived_from : Default_passage_based_land_physical_template;
END_ENTITY;

ENTITY Land
  SUPERTYPE OF (ONEOF (Contact_size_dependent_land,
                       Inter_stratum_feature_dependent_land))
  SUBTYPE OF (Stratum_feature_template_component);
  alternate_land_definition : OPTIONAL Land_physical_template;
  SELF\Definition_based_product_occurrence.derived_from : Land_physical_template;
DERIVE
  functional : BOOLEAN := (SIZEOF(['LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.CONDUCTOR', 'LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.CONNECTED_FILLED_AREA'] * TYPEOF(SELF\Stratum_feature_template_component.implementation_or_resident_stratum)) = 1);
INVERSE
  access_mechanism : SET[0:?] OF Land_join_terminal FOR associated_definition;
WHERE
  WR1: NOT(functional) OR (SIZEOF(access_mechanism) > 0);
END_ENTITY;

ENTITY Land_interface_terminal
  SUBTYPE OF (Laminate_component_interface_terminal);
  SELF\Component_feature.definition : Land_template_interface_terminal;
  SELF\Component_feature.associated_definition : Contact_size_dependent_land;
WHERE
  WR1: NOT EXISTS(SELF\Shape_element.description);
END_ENTITY;

ENTITY Land_join_terminal
  SUBTYPE OF (Laminate_component_join_terminal);
  SELF\Component_feature.definition : Land_template_join_terminal;
  SELF\Component_feature.associated_definition : Land;
WHERE
  WR1: NOT EXISTS(SELF\Shape_element.description);
END_ENTITY;

ENTITY Land_with_join_terminal
  SUBTYPE OF (Land, Land_join_terminal);
DERIVE
  SELF\Component_feature.associated_definition : Land_with_join_terminal := SELF;
END_ENTITY;

ENTITY Plated_passage_dependent_land
  SUBTYPE OF (Inter_stratum_feature_dependent_land);
  reference_plated_passage : Plated_passage;
  SELF\Definition_based_product_occurrence.derived_from : Default_plated_passage_based_land_physical_template;
END_ENTITY;

ENTITY Thermal_isolation_removal_component
  SUBTYPE OF (Material_removal_structured_component);
  SELF\Definition_based_product_occurrence.derived_from : Thermal_isolation_removal_template;
WHERE
  WR1: NOT('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.MULTI_LAYER_MATERIAL_REMOVAL_LAMINATE_COMPONENT' IN TYPEOF(SELF));
END_ENTITY;

ENTITY Unsupported_passage_dependent_land
  SUBTYPE OF (Inter_stratum_feature_dependent_land);
  reference_passage : Unsupported_passage;
  SELF\Definition_based_product_occurrence.derived_from : Default_unsupported_passage_based_land_physical_template;
END_ENTITY;

SUBTYPE_CONSTRAINT l_laminate_component_interface_terminal_subtypes FOR Laminate_component_interface_terminal;
  ONEOF (Component_termination_passage_interface_terminal,
         Land_interface_terminal);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT l_laminate_component_join_terminal_subtypes FOR Laminate_component_join_terminal;
  ONEOF (Component_termination_passage_join_terminal,
         Land_join_terminal,
         Embedded_physical_component_terminal);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT stratum_feature_template_component_subtypes FOR Stratum_feature_template_component;
  ONEOF (Area_component,
         Conductive_interconnect_element,
         Land);
END_SUBTYPE_CONSTRAINT;

FUNCTION land_get_associated_land_for_electrical_removal
 (input : Dependent_electrical_isolation_removal_component) : Land;
LOCAL
   assembly_relationships_for_associated_structure : SET OF Structured_layout_component_sub_assembly_relationship := [];
   assembly_relationship : SET OF Structured_layout_component_sub_assembly_relationship :=
           bag_to_set(USEDIN(input, 'LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRUCTURED_LAYOUT_COMPONENT_SUB_ASSEMBLY_RELATIONSHIP.RELATED_VIEW'));
   associated_structure : Structured_layout_component;
   first_location : Template_location_in_structured_template := assembly_relationship[1]\Structured_layout_component_sub_assembly_relationship.first_location;
   resident_stratum : stratum;
   resident_sftc : Stratum_feature_template_component;
  END_LOCAL;
  --determine resident_stratum;
  --critical to just use resident stratum as the individual design intents might be against different stratum features (different power areas).
  --address the multiple design intents here
  --use the last stratum found
   REPEAT i := 1 TO SIZEOF(input\Material_removal_laminate_component.design_intent) BY 1;
  CASE TRUE OF
    ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRATUM' IN TYPEOF(input\Material_removal_laminate_component.design_intent[i])) : 
     resident_stratum := input\Material_removal_laminate_component.design_intent[i];
  
    ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRATUM_FEATURE_TEMPLATE_COMPONENT' IN TYPEOF(input\Material_removal_laminate_component.design_intent[i])) :
    BEGIN
     resident_sftc := input\Material_removal_laminate_component.design_intent[i];
     CASE TRUE OF
       ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRATUM_FEATURE' IN TYPEOF(resident_sftc\Stratum_feature_template_component.implementation_or_resident_stratum)) :
       resident_stratum := resident_sftc\Stratum_feature_template_component.implementation_or_resident_stratum\Stratum_feature.resident_stratum;
       ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRATUM' IN TYPEOF(resident_sftc\Stratum_feature_template_component.implementation_or_resident_stratum)) :
       resident_stratum := resident_sftc\Stratum_feature_template_component.implementation_or_resident_stratum;
       OTHERWISE :
        RETURN(?);
     END_CASE;
    END;
    OTHERWISE :
     RETURN(?);
  END_CASE;
   END_REPEAT;
  --determine first_location;
  --if there is more than one assembly_relationship return UNKNOWN;
   IF SIZEOF(assembly_relationship) <> 1 THEN RETURN(?);
   END_IF;
   
  --determine associated_land;
  --associated land is on same stratum;
  
     associated_structure := assembly_relationship[1]\Structured_layout_component_sub_assembly_relationship.relating_view;
     assembly_relationships_for_associated_structure := 
                     bag_to_set(USEDIN(associated_structure, 'LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRUCTURED_LAYOUT_COMPONENT_SUB_ASSEMBLY_RELATIONSHIP.RELATING_VIEW')) - assembly_relationship;
  --this assembly relationship is excluded since we are querying for other relationships
  
  CASE TRUE OF
    ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.FOOTPRINT_OCCURRENCE' IN TYPEOF(associated_structure)) :
  --if part of footprint then associated_land has same first_location;
    BEGIN   
     REPEAT i := 1 TO SIZEOF(assembly_relationships_for_associated_structure) BY 1;
      IF ((first_location :=: assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.first_location) AND
         ('LAND_ARM.LAND' IN TYPEOF(assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view)) AND
         (assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view\Stratum_feature_template_component.resident_stratum
              :=: resident_stratum))
      THEN
          RETURN(assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view);
      END_IF;
     END_REPEAT;
    --if no land is found return UNKNOWN.
     RETURN(?);
    END;
    
       ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.PADSTACK_OCCURRENCE' IN TYPEOF(associated_structure)) :
    BEGIN
     REPEAT i := 1 TO SIZEOF(assembly_relationships_for_associated_structure) BY 1;
      IF (('LAND_ARM.LAND' IN TYPEOF(assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view)) AND
          (assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view\Stratum_feature_template_component.resident_stratum
               :=: resident_stratum))
      THEN
          RETURN(assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view);
       END_IF;
     END_REPEAT;
    --if no land is found return UNKNOWN.
     RETURN(?);
    END;
    
    OTHERWISE :
    --if no land is found return UNKNOWN.
     RETURN(?);
  END_CASE;
END_FUNCTION;

FUNCTION land_get_associated_land_for_thermal_removal
 (input : Dependent_thermal_isolation_removal_component) : Land;
LOCAL
   assembly_relationships_for_associated_structure : SET OF Structured_layout_component_sub_assembly_relationship := [];
   assembly_relationship : SET OF Structured_layout_component_sub_assembly_relationship :=
           bag_to_set(USEDIN(input, 'LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRUCTURED_LAYOUT_COMPONENT_SUB_ASSEMBLY_RELATIONSHIP.RELATED_VIEW'));
   associated_structure : Structured_layout_component;
   component_mrlc : SET OF Material_removal_laminate_component := [];
   component_relationship : SET OF Structured_layout_component_sub_assembly_relationship :=
           bag_to_set(USEDIN(input, 'LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRUCTURED_LAYOUT_COMPONENT_SUB_ASSEMBLY_RELATIONSHIP.RELATING_VIEW'));
   first_location : Template_location_in_structured_template := assembly_relationship[1]\Structured_layout_component_sub_assembly_relationship.first_location;
   resident_stratum : stratum;
   resident_sftc : Stratum_feature_template_component;
  END_LOCAL;
  --determine resident_stratum;
  --critical to just use resident stratum as the individual isolation features might be against different stratum features (different power areas).
   REPEAT i := 1 TO SIZEOF(component_relationship) BY 1;
     component_mrlc := component_mrlc + component_relationship[i]\Structured_layout_component_sub_assembly_relationship.related_view;
   END_REPEAT;
  CASE TRUE OF
    ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRATUM' IN TYPEOF(component_mrlc[1]\Material_removal_laminate_component.design_intent[1])) : 
     resident_stratum := component_mrlc[1]\Material_removal_laminate_component.design_intent[1];
  
    ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRATUM_FEATURE_TEMPLATE_COMPONENT' IN TYPEOF(component_mrlc[1]\Material_removal_laminate_component.design_intent[1])) :
    BEGIN
     resident_sftc := component_mrlc[1]\Material_removal_laminate_component.design_intent[1];
     CASE TRUE OF
       ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRATUM_FEATURE' IN TYPEOF(resident_sftc\Stratum_feature_template_component.implementation_or_resident_stratum)) :
       resident_stratum := resident_sftc\Stratum_feature_template_component.implementation_or_resident_stratum\Stratum_feature.resident_stratum;
       ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRATUM' IN TYPEOF(resident_sftc\Stratum_feature_template_component.implementation_or_resident_stratum)) :
       resident_stratum := resident_sftc\Stratum_feature_template_component.implementation_or_resident_stratum;
       OTHERWISE :
        RETURN(?);
     END_CASE;
    END;
    OTHERWISE :
     RETURN(?);
  END_CASE;
  --determine first_location;
  --if there is more than one assembly_relationship return UNKNOWN;
   IF SIZEOF(assembly_relationship) <> 1 THEN RETURN(?);
   END_IF;
   
  --determine associated_land;
  --associated land is on same stratum;
  
     associated_structure := assembly_relationship[1]\Structured_layout_component_sub_assembly_relationship.relating_view;
     assembly_relationships_for_associated_structure := 
                     bag_to_set(USEDIN(associated_structure, 'LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRUCTURED_LAYOUT_COMPONENT_SUB_ASSEMBLY_RELATIONSHIP.RELATING_VIEW')) - assembly_relationship;
  --this assembly relationship is excluded since we are querying for other relationships
  
  CASE TRUE OF
    ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.FOOTPRINT_OCCURRENCE' IN TYPEOF(associated_structure)) :
  --if part of footprint then associated_land has same first_location;
    BEGIN   
     REPEAT i := 1 TO SIZEOF(assembly_relationships_for_associated_structure) BY 1;
      IF ((first_location :=: assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.first_location) AND
         ('LAND_ARM.LAND' IN TYPEOF(assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view)) AND
         (assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view\Stratum_feature_template_component.resident_stratum
              :=: resident_stratum))
      THEN
          RETURN(assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view);
      END_IF;
     END_REPEAT;
    --if no land is found return UNKNOWN.
     RETURN(?);
    END;
    
       ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.PADSTACK_OCCURRENCE' IN TYPEOF(associated_structure)) :
    BEGIN
     REPEAT i := 1 TO SIZEOF(assembly_relationships_for_associated_structure) BY 1;
      IF (('LAND_ARM.LAND' IN TYPEOF(assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view)) AND
          (assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view\Stratum_feature_template_component.resident_stratum
               :=: resident_stratum))
      THEN
          RETURN(assembly_relationships_for_associated_structure[i]\Structured_layout_component_sub_assembly_relationship.related_view);
       END_IF;
     END_REPEAT;
    --if no land is found return UNKNOWN.
     RETURN(?);
    END;
    
    OTHERWISE :
    --if no land is found return UNKNOWN.
     RETURN(?);
  END_CASE;
END_FUNCTION;

END_SCHEMA;  -- Land_arm


© ISO 2018 — All rights reserved