Application module: Layered interconnect complex template ISO/TS 10303-1716: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 type definitions
   4.3 ARM entity definitions
   4.4 ARM subtype constraint definitions
   4.5 ARM function definition
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definitions
     5.2.2 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

(*
ISO/TC 184/SC 4/WG 12 N9455 - ISO/TS 10303-1716 Layered interconnect complex template - EXPRESS ARM
Supersedes ISO/TC 184/SC 4/WG 12 N6983
*)



SCHEMA Layered_interconnect_complex_template_arm;

USE FROM Layered_interconnect_simple_template_arm;    -- ISO/TS 10303-1718

USE FROM Physical_unit_2d_shape_arm;    -- ISO/TS 10303-1726

REFERENCE FROM Requirement_decomposition_arm   -- ISO/TS 10303-1740
  (get_rvd);

REFERENCE FROM Fabrication_technology_arm   -- ISO/TS 10303-1670
  (get_stack);

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


TYPE land_physical_template_or_inter_stratum_feature_template = SELECT
   (Land_physical_template,
    Inter_stratum_feature_template);
END_TYPE;

TYPE lict_part_template_or_physical_unit_2d_shape_select = SELECT BASED_ON part_template_or_physical_unit_2d_shape_select WITH
   (Part_template_planar_shape_model);
END_TYPE;

TYPE lict_physical_unit_shape_model_select = SELECT BASED_ON physical_unit_shape_model_select WITH
   (Physical_unit_planar_shape_model);
END_TYPE;

TYPE lict_requirement_assignment_item = SELECT BASED_ON requirement_assignment_item WITH
   (Structured_template,
    Template_location_in_structured_template,
    Part_template_planar_keepout_shape_model);
END_TYPE;

TYPE location_stratum_technology_occurrence_or_stratum_technology = SELECT
   (stratum_technology_occurrence_or_stratum_technology,
    Template_location_in_structured_template);
END_TYPE;

TYPE stratum_technology_occurrence_or_stratum_technology = SELECT
   (Stratum_technology_occurrence,
    Stratum_technology);
END_TYPE;

TYPE template_arrangement = ENUMERATION OF
   (top,
    bottom,
    symmetrical,
    swappable);
END_TYPE;

TYPE template_location_placement_status = ENUMERATION OF
   (is_fixed,
    must_be_moved_in_design,
    may_be_moved_in_design,
    is_unknown);
END_TYPE;

ENTITY Complex_passage_padstack_definition
  SUBTYPE OF (Stratum_stack_dependent_template, Passage_padstack_definition);
END_ENTITY;

ENTITY Dependent_electrical_isolation_removal_template
  SUBTYPE OF (Electrical_isolation_removal_template);
  associated_item : land_physical_template_or_inter_stratum_feature_template;
WHERE
  WR1: SIZEOF(QUERY (dtlipd <* USEDIN(SELF,'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.TEMPLATE_LOCATION_IN_STRUCTURED_TEMPLATE.TEMPLATE') | NOT( (SIZEOF(QUERY (tlist <* USEDIN(associated_item,'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.TEMPLATE_LOCATION_IN_STRUCTURED_TEMPLATE.TEMPLATE') | NOT( (tlist\Template_location_in_structured_template.assembly :=: dtlipd\Template_location_in_structured_template.assembly) AND ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.DEPENDENT_TEMPLATE_LOCATION_IN_PADSTACK_DEFINITION' IN TYPEOF(dtlipd)) AND (tlist :=: dtlipd\Dependent_template_location_in_padstack_definition.reference_location) ) )) = 0) ) )) = 0;
END_ENTITY;

ENTITY Dependent_template_location_in_padstack_definition
  SUBTYPE OF (Stratum_specific_template_location);
  reference_location : location_stratum_technology_occurrence_or_stratum_technology;
  SELF\Template_location_in_structured_template.assembly : Multi_stratum_structured_template;
WHERE
  WR1: SELF\Stratum_specific_template_location.bound_stratum :<>: reference_location;
  WR2: SELF <> reference_location;
  WR3: NOT('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.TEMPLATE_LOCATION_IN_STRUCTURED_TEMPLATE' IN TYPEOF(reference_location)) OR (assembly :=: reference_location\Template_location_in_structured_template.assembly);
  WR4: NOT('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRATUM_STACK_DEPENDENT_TEMPLATE' IN TYPEOF(assembly)) OR (reference_location IN assembly\Stratum_stack_dependent_template.stack\Stratum_stack_model.composing_occurrence);
  WR5: NOT('FABRICATION_TECHNOLOGY_ARM.STRATUM_TECHNOLOGY_OCCURRENCE' IN TYPEOF(reference_location)) OR ('FABRICATION_TECHNOLOGY_ARM.STRATUM_TECHNOLOGY_OCCURRENCE' IN TYPEOF(SELF\Stratum_specific_template_location.bound_stratum));
  WR6: NOT('FABRICATION_TECHNOLOGY_ARM.STRATUM_TECHNOLOGY_OCCURRENCE' IN TYPEOF(reference_location)) OR (SIZEOF (['FABRICATION_TECHNOLOGY_ARM.STRATUM_STACK_DEPENDENT_TEMPLATE', 'FABRICATION_TECHNOLOGY_ARM.PASSAGE_PADSTACK_DEFINITION'] * TYPEOF (assembly)) = 2);
END_ENTITY;

ENTITY Dependent_thermal_isolation_removal_template
  SUBTYPE OF (Thermal_isolation_removal_template);
  associated_item : Land_physical_template;
WHERE
  WR1: SIZEOF(QUERY (dtlipd <* USEDIN(SELF,'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.TEMPLATE_LOCATION_IN_STRUCTURED_TEMPLATE.TEMPLATE') | NOT( (SIZEOF(QUERY (tlist <* USEDIN(associated_item,'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.TEMPLATE_LOCATION_IN_STRUCTURED_TEMPLATE.TEMPLATE') | NOT( (tlist\Template_location_in_structured_template.assembly :=: dtlipd\Template_location_in_structured_template.assembly) AND ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.DEPENDENT_TEMPLATE_LOCATION_IN_PADSTACK_DEFINITION' IN TYPEOF(dtlipd)) AND (tlist :=: dtlipd\Dependent_template_location_in_padstack_definition.reference_location) ) )) = 0) ) )) = 0;
END_ENTITY;

ENTITY Design_specific_stratum_technology_mapping_relationship
  SUBTYPE OF (Stratum_technology_mapping_relationship);
  scope : Library_to_design_stack_model_mapping;
END_ENTITY;

ENTITY Inter_stratum_feature_template_location
  SUBTYPE OF (Template_location_in_structured_template);
  SELF\Template_location_in_structured_template.assembly : Multi_stratum_structured_template;
  SELF\Template_location_in_structured_template.template : Inter_stratum_feature_template;
WHERE
  WR1: SIZEOF(['LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.INTER_STRATUM_FEATURE_EDGE_SEGMENT_TEMPLATE', 'LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.INTER_STRATUM_FEATURE_EDGE_TEMPLATE'] * TYPEOF(template)) = 0;
END_ENTITY;

ENTITY Library_stack_model
  SUBTYPE OF (Stratum_stack_model);
DERIVE
  padstacks : SET[0:?] OF Padstack_definition := bag_to_set(QUERY(p <* USEDIN(SELF, 'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRATUM_STACK_DEPENDENT_TEMPLATE.STACK') | ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.PADSTACK_DEFINITION' IN TYPEOF(p))));
END_ENTITY;

ENTITY Library_to_design_stack_model_mapping
  SUBTYPE OF (View_definition_relationship);
  SELF\View_definition_relationship.relating_view : Library_stack_model;
  SELF\View_definition_relationship.related_view : Design_stack_model;
WHERE
  WR1: ((related_view\Stratum_stack_model.composing_occurrence * relating_view\Stratum_stack_model.composing_occurrence) = related_view\Stratum_stack_model.composing_occurrence);
  WR2: acyclic_library_to_design_stack_model_mapping(SELF, [related_view], 'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.LIBRARY_TO_DESIGN_STACK_MODEL_MAPPING');
END_ENTITY;

ENTITY Material_removal_structured_template
  SUBTYPE OF (Single_stratum_structured_template);
WHERE
  WR1: SIZEOF(QUERY(tlict <* SELF\Structured_template.templates | SIZEOF(['LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.MATERIAL_REMOVAL_FEATURE_TEMPLATE', 'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.MATERIAL_REMOVAL_STRUCTURED_TEMPLATE'] * TYPEOF(tlict.template)) = 0)) = 0;
END_ENTITY;

ENTITY Multi_stratum_special_symbol_template
  SUBTYPE OF (Multi_stratum_structured_template, Special_symbol_template);
END_ENTITY;

ENTITY Multi_stratum_structured_template
  ABSTRACT SUPERTYPE OF (ONEOF (Padstack_definition,
                                Multi_stratum_special_symbol_template)
                        ANDOR Stratum_stack_dependent_template)
  SUBTYPE OF (Structured_template);
  location : template_arrangement;
END_ENTITY;

ENTITY Padstack_definition
  SUPERTYPE OF (Passage_padstack_definition)
  SUBTYPE OF (Multi_stratum_structured_template);
WHERE
  WR1: NOT('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.PASSAGE_PADSTACK_DEFINITION' IN TYPEOF(SELF)) XOR (SIZEOF(QUERY(tlict <* SELF\Structured_template.templates | ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.INTER_STRATUM_FEATURE_TEMPLATE_LOCATION' IN TYPEOF(tlict)))) > 0);
  WR2: SIZEOF(QUERY(tlict <* SELF\Structured_template.templates | (NOT ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.INTER_STRATUM_FEATURE_TEMPLATE_LOCATION' IN TYPEOF(tlict))) AND (NOT ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRATUM_SPECIFIC_TEMPLATE_LOCATION' IN TYPEOF(tlict))))) = 0;
END_ENTITY;

ENTITY Part_template_keepout_shape_allocation_to_stratum_stack;
  keepout_shape : Part_template_keepout_shape_model;
  kept_out_layers : SET[1:?] OF Stratum_technology_occurrence;
DERIVE
  swappable : LOGICAL := (keepout_shape.shape_characterized_definition\Multi_stratum_structured_template.location = template_arrangement.swappable);
  stack_model : Library_stack_model := keepout_shape.shape_characterized_definition\Stratum_stack_dependent_template.stack;
UNIQUE
  UR1: keepout_shape, stack_model;
WHERE
  WR1: keepout_shape.constrained_design_object_category IN [keepout_product_design_object_category.interconnect_module_via, keepout_product_design_object_category.interconnect_module_inter_stratum_feature, keepout_product_design_object_category.interconnect_module_cutout, keepout_product_design_object_category.interconnect_module_fill_area, keepout_product_design_object_category.interconnect_module_stratum_feature];
  WR2: 'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRATUM_STACK_DEPENDENT_TEMPLATE' IN TYPEOF(keepout_shape.shape_characterized_definition);
  WR3: kept_out_layers = kept_out_layers * stack_model\Stratum_stack_model.composing_occurrence;
END_ENTITY;

ENTITY Part_template_planar_keepout_shape_model
  SUBTYPE OF (Planar_shape_model, Non_feature_shape_model, Part_template_keepout_shape_model);
  SELF\Non_feature_shape_model.model_shape : Part_template_planar_shape_model;
DERIVE
  application_technology_constraint : SET[0:?] OF Requirement_view_definition := get_rvd(SELF, 'application technology constraint');
WHERE
  WR1: (SIZEOF(application_technology_constraint) <= 1);
  WR2: NOT EXISTS(SELF\Representation.description);
END_ENTITY;

ENTITY Part_template_planar_shape_model
  SUBTYPE OF (Planar_projected_shape_model, Part_template_shape_model);
WHERE
  WR1: NOT EXISTS(SELF\Representation.description);
END_ENTITY;

ENTITY Passage_padstack_definition
  SUBTYPE OF (Padstack_definition);
INVERSE
  reference_isft : Inter_stratum_feature_template_location FOR assembly;
WHERE
  WR1: NOT(('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRUCTURED_INTER_STRATUM_FEATURE_TEMPLATE' IN TYPEOF(reference_isft.template)) XOR ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.COMPLEX_PASSAGE_PADSTACK_DEFINITION' IN TYPEOF(SELF)));
END_ENTITY;

ENTITY Physical_unit_keepout_shape_allocation_to_stratum_stack;
  keepout_shape : Physical_unit_keepout_shape_model;
  stack_model : Library_stack_model;
  swappable : BOOLEAN;
  kept_out_layers : SET[1:?] OF Stratum_technology_occurrence;
UNIQUE
  UR1: keepout_shape, stack_model;
WHERE
  WR1: keepout_shape\Physical_unit_keepout_shape_model.constrained_design_object_category IN [keepout_product_design_object_category.interconnect_module_via, keepout_product_design_object_category.interconnect_module_inter_stratum_feature, keepout_product_design_object_category.interconnect_module_cutout, keepout_product_design_object_category.interconnect_module_fill_area, keepout_product_design_object_category.interconnect_module_stratum_feature];
END_ENTITY;

ENTITY Physical_unit_keepout_shape_allocation_to_stratum_technology;
  keepout_shape : Physical_unit_keepout_shape_model;
  kept_out_technologies : SET[1:?] OF Stratum_technology;
WHERE
  WR1: keepout_shape\Physical_unit_keepout_shape_model.constrained_design_object_category IN [keepout_product_design_object_category.interconnect_module_via, keepout_product_design_object_category.interconnect_module_inter_stratum_feature, keepout_product_design_object_category.interconnect_module_cutout, keepout_product_design_object_category.interconnect_module_fill_area, keepout_product_design_object_category.interconnect_module_stratum_feature];
END_ENTITY;

ENTITY Single_stratum_special_symbol_template
  SUBTYPE OF (Single_stratum_structured_template, Special_symbol_template);
END_ENTITY;

ENTITY Single_stratum_structured_template
  ABSTRACT SUPERTYPE OF (ONEOF (Material_removal_structured_template,
                                Single_stratum_special_symbol_template))
  SUBTYPE OF (Structured_template, Single_stratum_template);
WHERE
  WR1: SIZEOF (QUERY(tp <* SELF\Structured_template.templates | NOT ('LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.SINGLE_STRATUM_TEMPLATE' IN TYPEOF(tp.template)) )) = 0;
END_ENTITY;

ENTITY Special_symbol_template
  ABSTRACT SUPERTYPE OF (ONEOF (Single_stratum_special_symbol_template,
                                Multi_stratum_special_symbol_template))
  SUBTYPE OF (Template_definition);
END_ENTITY;

ENTITY Stratum_specific_template_location
  SUBTYPE OF (Template_location_in_structured_template);
  bound_stratum : stratum_technology_occurrence_or_stratum_technology;
  SELF\Template_location_in_structured_template.template : Single_stratum_template;
WHERE
  WR1: NOT('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.DOCUMENTATION_LAYER_TECHNOLOGY' IN TYPEOF(bound_stratum)) OR (NOT EXISTS(bound_stratum\Documentation_layer_technology.pre_defined_documentation_layer_purpose) OR (NOT (bound_stratum\Documentation_layer_technology.pre_defined_documentation_layer_purpose = predefined_documentation_layer_purpose.soldermask) OR ('LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.MATERIAL_REMOVAL_FEATURE_TEMPLATE' IN TYPEOF(template))));
  WR2: NOT(('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.STRATUM_TECHNOLOGY_OCCURRENCE' IN TYPEOF(bound_stratum)) AND ('LAYERED_INTERCONNECT_MODULE_DESIGN_ARM.DOCUMENTATION_LAYER_TECHNOLOGY' IN TYPEOF(bound_stratum\Stratum_technology_occurrence.definition))) OR (NOT EXISTS(bound_stratum\Stratum_technology_occurrence.definition\Documentation_layer_technology.pre_defined_documentation_layer_purpose) OR (NOT (bound_stratum\Stratum_technology_occurrence.definition\Documentation_layer_technology.pre_defined_documentation_layer_purpose = predefined_documentation_layer_purpose.soldermask) OR ('LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.MATERIAL_REMOVAL_FEATURE_TEMPLATE' IN TYPEOF(template))));
  WR3: NOT ('FABRICATION_TECHNOLOGY_ARM.STRATUM_TECHNOLOGY_OCCURRENCE' IN TYPEOF(bound_stratum)) OR ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRATUM_STACK_DEPENDENT_TEMPLATE' IN TYPEOF(SELF\Template_location_in_structured_template.assembly));
END_ENTITY;

ENTITY Stratum_stack_dependent_template
  SUPERTYPE OF (ONEOF (Complex_passage_padstack_definition,
                       Structured_inter_stratum_feature_template))
  SUBTYPE OF (Multi_stratum_structured_template);
  stack : Library_stack_model;
WHERE
  WR1: SIZEOF(QUERY(temp <* SELF\Structured_template.templates | ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRATUM_SPECIFIC_TEMPLATE_LOCATION' IN TYPEOF(temp)) AND (NOT ('FABRICATION_TECHNOLOGY_ARM.STRATUM_TECHNOLOGY_OCCURRENCE' IN TYPEOF(temp\Stratum_specific_template_location.bound_stratum)) OR NOT (temp\Stratum_specific_template_location.bound_stratum IN stack\Stratum_stack_model.composing_occurrence) ))) = 0;
  WR2: TYPEOF(SELF) <> ['LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRATUM_STACK_DEPENDENT_TEMPLATE', 'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.MULTI_STRATUM_STRUCTURED_TEMPLATE', 'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRUCTURED_TEMPLATE', 'PART_TEMPLATE_SHAPE_WITH_PARAMETERS_ARM.GEOMETRIC_TEMPLATE', 'PART_TEMPLATE_ARM.TEMPLATE_DEFINITION', 'PRODUCT_VIEW_DEFINITION_ARM.PRODUCT_VIEW_DEFINITION'];
END_ENTITY;

ENTITY Structured_inter_stratum_feature_template
  SUBTYPE OF (Inter_stratum_feature_template, Stratum_stack_dependent_template);
END_ENTITY;

ENTITY Structured_template
  ABSTRACT SUPERTYPE OF (ONEOF (Single_stratum_structured_template,
                                Multi_stratum_structured_template))
  SUBTYPE OF (Geometric_template);
DERIVE
  empty : LOGICAL := (SIZEOF(templates) = 0);
INVERSE
  SELF\Geometric_template.shapes : SET[1:?] OF Structured_template_planar_shape_model FOR shape_characterized_definition;
  templates : SET[0:?] OF Template_location_in_structured_template FOR assembly;
END_ENTITY;

ENTITY Structured_template_planar_shape_model
  SUBTYPE OF (Part_template_planar_shape_model);
  SELF\Part_template_shape_model.shape_characterized_definition : SET[1:1] OF Structured_template;
END_ENTITY;

ENTITY Template_location_in_structured_template
  SUPERTYPE OF (ONEOF (Inter_stratum_feature_template_location,
                       Stratum_specific_template_location));
  assembly : Structured_template;
  template : Template_definition;
  reference_designation : STRING;
  placement_status : template_location_placement_status;
INVERSE
  transform : SET[0:?] OF Template_location_in_structured_template_transform FOR reference_location;
UNIQUE
  UR1: assembly, reference_designation;
WHERE
  WR1: (SIZEOF(transform) > 0) XOR ('LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.TEARDROP_TEMPLATE' IN TYPEOF(template));
  WR2: NOT ('LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.INTER_STRATUM_FEATURE_TEMPLATE' IN TYPEOF(template)) OR ('LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.INTER_STRATUM_FEATURE_TEMPLATE_LOCATION' IN TYPEOF(SELF));
  WR3: SIZEOF(['LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.TEARDROP_TEMPLATE', 'PART_TEMPLATE_SHAPE_WITH_PARAMETERS_ARM.GEOMETRIC_TEMPLATE'] * TYPEOF(template)) > 0;
END_ENTITY;

ENTITY Template_location_in_structured_template_transform
  SUBTYPE OF (Geometric_placement);
  SELF\Geometric_placement_operation.template_definition RENAMED template_shape : Part_template_planar_shape_model;
  reference_location : Template_location_in_structured_template;
  assembly_shape : Structured_template_planar_shape_model;
  SELF\Geometric_placement.target RENAMED transform : Axis_placement_2d;
UNIQUE
  UR1: reference_location, assembly_shape;
WHERE
  WR1: assembly_shape.shape_characterized_definition[1] :=: reference_location.assembly;
END_ENTITY;

ENTITY Thermal_isolation_removal_template
  SUBTYPE OF (Material_removal_structured_template);
DERIVE
  thermal_isolation_spacing_requirement : SET[0:?] OF Requirement_view_definition := get_rvd(SELF, 'thermal requirement');
WHERE
  WR1: SIZEOF(QUERY(tisr <* THERMAL_ISOLATION_SPACING_REQUIREMENT | NOT('INTERCONNECT_PHYSICAL_REQUIREMENT_ALLOCATION_ARM.THERMAL_ISOLATION_REQUIREMENT' IN TYPEOF(tisr)) )) =0;
END_ENTITY;

SUBTYPE_CONSTRAINT lict_geometric_template_subtypes FOR Geometric_template;
  ONEOF (Continuous_template,
         Structured_template);
END_SUBTYPE_CONSTRAINT;

SUBTYPE_CONSTRAINT stratum_stack_model_subtypes FOR Stratum_stack_model;
  ONEOF (Design_stack_model,
         Library_stack_model);
END_SUBTYPE_CONSTRAINT;

FUNCTION acyclic_library_to_design_stack_model_mapping
 (relation : Library_to_design_stack_model_mapping; relatives : SET[1:?] OF Stratum_stack_model; specific_relation : STRING) : BOOLEAN;
LOCAL
      x : SET OF Library_to_design_stack_model_mapping := [];
  END_LOCAL;

      IF relation.relating_view IN relatives THEN
        RETURN (FALSE);
      END_IF;
        x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_view,
          'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.' +
          'LIBRARY_TO_DESIGN_STACK_MODEL_MAPPING.' +
          'RELATED_VIEW')) | specific_relation IN TYPEOF(pd));
      REPEAT i := 1 TO HIINDEX(x);
        IF NOT acyclic_library_to_design_stack_model_mapping(x[i], relatives +
          relation.relating_view, specific_relation) THEN
          RETURN (FALSE);
        END_IF;
      END_REPEAT;
    RETURN (TRUE);
END_FUNCTION;

END_SCHEMA;  -- Layered_interconnect_complex_template_arm


© ISO 2018 — All rights reserved