Application module: Fabrication technology | ISO/TS 10303-1670:2018-11(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N9424 - ISO/TS 10303-1670 Fabrication technology - EXPRESS ARM
Supersedes
ISO/TC 184/SC 4/WG 12 N8137
*)
SCHEMA Fabrication_technology_arm;
USE FROM
Constructive_solid_geometry_2d_arm;
-- ISO/TS 10303-1731
USE FROM
Geometric_tolerance_arm;
-- ISO/TS 10303-1051
USE FROM
Requirement_decomposition_arm;
-- ISO/TS 10303-1740
USE FROM
Part_template_arm;
-- ISO/TS 10303-1722
REFERENCE FROM
Specification_document_arm -- ISO/TS 10303-1747
(get_document_definition);
REFERENCE FROM
Support_resource_arm -- ISO/TS 10303-1800
(bag_to_set);
TYPE ft_classification_item =
EXTENSIBLE
GENERIC_ENTITY
SELECT
BASED_ON
classification_item
WITH
(Stratum_technology_occurrence_relationship);
END_TYPE;
TYPE ft_documented_element_select =
EXTENSIBLE
GENERIC_ENTITY
SELECT
BASED_ON
documented_element_select
WITH
(Passage_technology,
Stratum_technology,
Stratum_surface_technology);
END_TYPE;
TYPE ft_external_identification_item =
EXTENSIBLE
GENERIC_ENTITY
SELECT
BASED_ON
external_identification_item
WITH
(Design_layer_technology,
Documentation_layer_technology);
END_TYPE;
TYPE ft_material_item_select =
EXTENSIBLE
GENERIC_ENTITY
SELECT
BASED_ON
material_item_select
WITH
(Passage_technology,
Stratum_technology);
END_TYPE;
TYPE ft_property_assignment_select =
SELECT
BASED_ON
property_assignment_select
WITH
(Stratum_technology,
Passage_technology);
END_TYPE;
TYPE ft_requirement_assignment_item =
EXTENSIBLE
GENERIC_ENTITY
SELECT
BASED_ON
requirement_assignment_item
WITH
(Passage_technology,
Stratum_technology,
Stratum_technology_occurrence,
Stratum_technology_occurrence_relationship);
END_TYPE;
TYPE ft_terminus_condition =
EXTENSIBLE
ENUMERATION
OF
(bilateral_bond,
bilateral_complete_removal,
unilateral_bond);
END_TYPE;
TYPE ft_value_select =
SELECT
(Value_limit,
Value_range,
Numerical_item_with_unit);
END_TYPE;
TYPE layer_position_type =
ENUMERATION
OF
(secondary,
all,
external,
primary,
internal);
END_TYPE;
TYPE predefined_design_layer_purpose =
ENUMERATION
OF
(other_signal,
lands_only,
power_or_ground,
embedded_passive_capacitor_dielectric,
embedded_passive_resistor);
END_TYPE;
TYPE predefined_documentation_layer_purpose =
ENUMERATION
OF
(solderdam,
soldermask,
solderpaste,
silkscreen,
generic_layer,
glue,
gluemask,
pastemask,
finish_coating,
coverlay);
END_TYPE;
TYPE stiffness_class =
ENUMERATION
OF
(fluid_like_with_constant_thickness,
fluid_like_with_varying_thickness,
stiff_laminate);
END_TYPE;
TYPE up_or_down =
ENUMERATION
OF
(independent,
precedent,
subsequent);
END_TYPE;
ENTITY Allocated_passage_minimum_annular_ring
SUBTYPE OF (Characterizable_object);
supported_external_minimum_annular_ring :
OPTIONAL
Length_data_element;
supported_internal_minimum_annular_ring :
OPTIONAL
Length_data_element;
unsupported_minimum_annular_ring :
OPTIONAL
Length_data_element;
minimum_fabrication_allowance :
OPTIONAL
Length_data_element;
associated_passage_allocation : SET[1:?] OF Passage_technology_allocation_to_stack_model;
associated_stratum_technology_occurrence :
OPTIONAL
Stratum_technology_occurrence;
DERIVE
associated_model : Stratum_stack_model := associated_passage_allocation[1]\Stratum_sub_stack.associated_stackup;
WHERE
WR1: EXISTS(supported_external_minimum_annular_ring) OR
EXISTS(supported_internal_minimum_annular_ring) OR
EXISTS(unsupported_minimum_annular_ring) OR
EXISTS(minimum_fabrication_allowance);
WR2: NOT EXISTS(associated_stratum_technology_occurrence) OR
(associated_stratum_technology_occurrence IN associated_model\Stratum_stack_model.composing_occurrence);
WR3: NOT EXISTS(supported_external_minimum_annular_ring) OR
(SIZEOF(QUERY(ptatsm <* associated_passage_allocation |
NOT(ptatsm\Passage_technology_allocation_to_stack_model.allocated_technology\Passage_technology.plated_passage)
)) = 0);
WR4: NOT EXISTS(supported_internal_minimum_annular_ring) OR
(SIZEOF(QUERY(ptatsm <* associated_passage_allocation |
NOT(ptatsm\Passage_technology_allocation_to_stack_model.allocated_technology\Passage_technology.plated_passage)
)) = 0);
WR5: NOT (EXISTS(unsupported_minimum_annular_ring) AND
(SIZEOF(QUERY(ptatsm <* associated_passage_allocation |
NOT(ptatsm\Passage_technology_allocation_to_stack_model.allocated_technology\Passage_technology.plated_passage)
)) = 0));
WR6: SIZEOF(QUERY(ptatsm <* associated_passage_allocation |
NOT(associated_model = ptatsm\Stratum_sub_stack.associated_stackup)
)) =0;
WR7: NOT (EXISTS(associated_stratum_technology_occurrence) AND
EXISTS(supported_internal_minimum_annular_ring));
END_ENTITY;
ENTITY Copy_stratum_technology_occurrence_relationship
SUBTYPE OF (Derived_stratum_technology_occurrence_relationship);
END_ENTITY;
ENTITY Default_component_termination_passage_definition
SUBTYPE OF (Passage_technology);
allowed_component_terminal_extent : Length_tolerance_characteristic;
SELF\Passage_technology.as_finished_deposition_thickness : Length_tolerance_characteristic;
SELF\Passage_technology.as_finished_passage_extent : ft_value_select;
INVERSE
SELF\Passage_technology.deposition_material : SET[1:1] OF Passage_deposition_material_identification FOR items;
WHERE
WR1: 'CONDUCTIVITY_MATERIAL_ASPECTS_ARM.'+ 'MATERIAL_IDENTIFICATION_WITH_CONDUCTIVITY_CLASSIFICATION' IN TYPEOF (deposition_material[1]);
END_ENTITY;
ENTITY Default_tapered_blind_via_definition
SUBTYPE OF (Default_via_definition);
as_finished_interior_passage_extent : Length_tolerance_characteristic;
WHERE
WR1: less(as_finished_interior_passage_extent, SELF\default_via_definition.as_finished_passage_extent);
END_ENTITY;
ENTITY Default_unsupported_passage_definition
SUBTYPE OF (Passage_technology);
SELF\Passage_technology.as_finished_passage_extent : ft_value_select;
END_ENTITY;
ENTITY Default_via_definition
SUBTYPE OF (Passage_technology);
SELF\Passage_technology.as_finished_deposition_thickness : Length_tolerance_characteristic;
SELF\Passage_technology.as_finished_passage_extent : ft_value_select;
INVERSE
SELF\Passage_technology.deposition_material : SET[1:1] OF Passage_deposition_material_identification FOR items;
WHERE
WR1: 'CONDUCTIVITY_MATERIAL_ASPECTS_ARM.'+ 'MATERIAL_IDENTIFICATION_WITH_CONDUCTIVITY_CLASSIFICATION' IN TYPEOF (deposition_material[1]);
END_ENTITY;
ENTITY Derived_stratum_technology_occurrence_relationship
ABSTRACT SUPERTYPE
OF (ONEOF (Copy_stratum_technology_occurrence_relationship,
Inverse_copy_stratum_technology_occurrence_relationship))
SUBTYPE OF (Stratum_technology_occurrence_relationship);
END_ENTITY;
ENTITY Design_layer_technology
SUBTYPE OF (Stratum_technology);
design_layer_purpose :
OPTIONAL
predefined_design_layer_purpose;
INVERSE
externally_defined_design_layer_purpose : SET[0:1] OF External_source_identification FOR item;
WHERE
WR1: (SIZEOF([SELF\Stratum_technology.stratum_material[1]\Material_identification_with_conductivity_classification.electrical_conductivity_classification,
SELF\Stratum_technology.stratum_material[1]\Material_identification_with_conductivity_classification.thermal_conductivity_classification]
*
['conductive']) >= 1) OR
(SELF\Stratum_technology.stratum_material[1]\Material_identification_with_conductivity_classification.magnetic_permeability_classification
IN ['highly permeable']) OR
(SELF\Stratum_technology.stratum_material[1]\Material_identification_with_conductivity_classification.optical_insertion_loss_classification
IN ['vacuum', 'very low loss', 'low loss']);
WR2: (EXISTS (design_layer_purpose)) XOR ((SIZEOF(externally_defined_design_layer_purpose)) = 1);
END_ENTITY;
ENTITY Design_stack_model
SUBTYPE OF (Stratum_stack_model);
model_thickness :
OPTIONAL
Length_tolerance_characteristic;
INVERSE
sub_stack : SET[1:?] OF Stratum_sub_stack FOR associated_stackup;
END_ENTITY;
ENTITY Documentation_layer_technology
SUBTYPE OF (Stratum_technology);
pre_defined_documentation_layer_purpose :
OPTIONAL
predefined_documentation_layer_purpose;
INVERSE
externally_defined_documentation_layer_purpose : SET[0:1] OF External_source_identification FOR item;
WHERE
WR1: (EXISTS (pre_defined_documentation_layer_purpose)) XOR ((SIZEOF(externally_defined_documentation_layer_purpose)) = 1);
END_ENTITY;
ENTITY Equivalent_stackup_model_definition
SUBTYPE OF (Product_view_definition, View_definition_relationship);
SELF\View_definition_relationship.relating_view RENAMED primary_stackup_model : Stratum_stack_model;
SELF\View_definition_relationship.related_view RENAMED equivalent_stackup_model : Stratum_stack_model;
equivalent_sub_stacks : SET[1:?] OF Equivalent_sub_stack_definition;
WHERE
WR1: primary_stackup_model :<>: equivalent_stackup_model;
WR2: SIZEOF(QUERY( ess <* equivalent_sub_stacks |
NOT (ess\Equivalent_sub_stack_definition.equivalent_stack\Stratum_sub_stack.associated_stackup :=: equivalent_stackup_model)
)) = 0;
WR3: acyclic_equivalent_stackup_model_definition(SELF,
[equivalent_stackup_model],
'FABRICATION_TECHNOLOGY_ARM.EQUIVALENT_STACKUP_MODEL_DEFINITION');
END_ENTITY;
ENTITY Equivalent_sub_stack_definition
SUBTYPE OF (Product_view_definition);
equivalent_stack : Local_linear_stack;
primary_sto : Stratum_technology_occurrence;
primary_sto_link : Stratum_technology_occurrence_link;
WHERE
WR1: primary_sto IN [primary_sto_link\Stratum_technology_occurrence_relationship.sto_1,
primary_sto_link\Stratum_technology_occurrence_relationship.sto_2];
WR2: equivalent_stack\Stratum_sub_stack.associated_stackup :<>: primary_sto_link\Stratum_technology_occurrence_relationship.scope;
END_ENTITY;
ENTITY Footprint_library_stratum_technology
SUBTYPE OF (Stratum_technology);
WHERE
WR1: NOT EXISTS(stratum_thickness);
END_ENTITY;
ENTITY Impedance_measurement_setup_requirement
SUBTYPE OF (Predefined_requirement_view_definition);
characterized_stackup : Stratum_sub_stack;
measurement_stratum_1 : Stratum_technology_occurrence;
measurement_stratum_2 : Stratum_technology_occurrence;
reference_stratum : SET[1:2] OF Stratum_technology_occurrence;
WHERE
WR1: SELF\Product_view_definition.initial_context.life_cycle_stage = 'test';
WR2: NOT EXISTS(SELF\Product_view_definition.id);
WR3: SIZEOF([measurement_stratum_1, measurement_stratum_2] * reference_stratum) = 0;
END_ENTITY;
ENTITY Impedance_requirement
SUBTYPE OF (Predefined_requirement_view_definition);
frequency_range : Value_range;
impedance_value : Tolerance_characteristic;
test_bench : Impedance_measurement_setup_requirement;
test_method : Test_specification;
WHERE
WR1: SELF\Product_view_definition.initial_context.life_cycle_stage = 'test';
WR2: NOT EXISTS(SELF\Product_view_definition.id);
END_ENTITY;
ENTITY Inverse_copy_stratum_technology_occurrence_relationship
SUBTYPE OF (Derived_stratum_technology_occurrence_relationship);
END_ENTITY;
ENTITY Local_linear_stack
SUBTYPE OF (Stratum_sub_stack);
SELF\Stratum_sub_stack.stratum_technology_sequence : SET[1:?] OF Stratum_technology_occurrence_link;
WHERE
WR1: SIZEOF(get_stack(stratum_technology_sequence)) = (SIZEOF(stratum_technology_sequence) + 1);
WR2: sts_vertex_degree_check(stratum_technology_sequence, 2);
END_ENTITY;
ENTITY Passage_deposition_material_identification
SUBTYPE OF (Material_identification);
SELF\Material_identification.items : SET[1:?] OF Passage_technology;
END_ENTITY;
ENTITY Passage_filling_material_identification
SUBTYPE OF (Material_identification);
SELF\Material_identification.items : SET[1:?] OF Passage_technology;
END_ENTITY;
ENTITY Passage_technology
SUPERTYPE OF
(ONEOF (Default_via_definition,
Default_component_termination_passage_definition,
Default_unsupported_passage_definition))
SUBTYPE OF (Characterizable_object);
as_finished_deposition_thickness :
OPTIONAL
Length_tolerance_characteristic;
as_finished_passage_extent :
OPTIONAL
ft_value_select;
maximum_aspect_ratio :
OPTIONAL
REAL;
minimum_finished_size :
OPTIONAL
Length_data_element;
plated_passage : BOOLEAN;
passage_terminus_condition :
OPTIONAL
ft_terminus_condition;
minimum_fabrication_allowance :
OPTIONAL
Length_data_element;
minimum_finished_feature_size :
OPTIONAL
Length_data_element;
supported_external_minimum_annular_ring :
OPTIONAL
Length_data_element;
supported_internal_minimum_annular_ring :
OPTIONAL
Length_data_element;
unsupported_minimum_annular_ring :
OPTIONAL
Length_data_element;
DERIVE
specification : SET[0:1] OF Document_definition := get_document_definition(SELF, 'specification',
'SPECIFICATION_DOCUMENT_ARM.PROCESS_SPECIFICATION');
INVERSE
deposition_material : SET[0:1] OF Passage_deposition_material_identification FOR items;
fill_material : SET[0:1] OF Passage_filling_material_identification FOR items;
UNIQUE
UR1: SELF\Characterizable_object.name;
WHERE
WR1: NOT (SIZEOF(deposition_material) = 1) OR
('CONDUCTIVITY_MATERIAL_ASPECTS_ARM.'+ 'MATERIAL_IDENTIFICATION_WITH_CONDUCTIVITY_CLASSIFICATION' IN TYPEOF (deposition_material[1]));
WR2: NOT plated_passage OR (SIZEOF(deposition_material) = 1);
WR3: NOT EXISTS(as_finished_deposition_thickness) OR (SIZEOF(deposition_material) = 1);
WR4: NOT plated_passage OR
(SIZEOF([deposition_material[1]\Material_identification_with_conductivity_classification.electrical_conductivity_classification,
deposition_material[1]\Material_identification_with_conductivity_classification.thermal_conductivity_classification] *
['conductive']) >= 1);
WR5: NOT ((passage_terminus_condition = ft_terminus_condition.bilateral_bond) OR
(passage_terminus_condition = ft_terminus_condition.unilateral_bond)) OR
plated_passage;
WR6: NOT (EXISTS(as_finished_passage_extent) AND EXISTS(minimum_finished_feature_size));
WR7: NOT EXISTS(supported_external_minimum_annular_ring) OR plated_passage;
WR8: NOT EXISTS(supported_internal_minimum_annular_ring) OR plated_passage;
WR9: NOT EXISTS(unsupported_minimum_annular_ring) AND plated_passage;
END_ENTITY;
ENTITY Passage_technology_allocation_to_stack_model
SUBTYPE OF (Stratum_sub_stack);
allocated_technology : Passage_technology;
single_stratum_passage_location :
OPTIONAL
Stratum_technology_occurrence;
target_stratum :
OPTIONAL
Stratum_technology_occurrence;
DERIVE
terminus_stratum : SET[0:?] OF Stratum_technology_occurrence := ft_get_terminus(SELF\Stratum_sub_stack.stratum_technology_sequence);
INVERSE
minimum_annular_ring : SET[0:?] OF Allocated_passage_minimum_annular_ring FOR associated_passage_allocation;
WHERE
WR1: (NOT EXISTS(single_stratum_passage_location) OR
(single_stratum_passage_location IN
SELF\Stratum_sub_stack.associated_stackup.composing_occurrence));
WR2: EXISTS(SELF\Stratum_sub_stack.stratum_technology_sequence) XOR
EXISTS(single_stratum_passage_location);
WR3: SIZEOF(get_stack(SELF\Stratum_sub_stack.stratum_technology_sequence)) =
(SIZEOF(SELF\Stratum_sub_stack.stratum_technology_sequence) + 1);
WR4: sts_vertex_degree_check(SELF\Stratum_sub_stack.stratum_technology_sequence, 2);
WR5: NOT EXISTS(single_stratum_passage_location) OR NOT EXISTS(target_stratum);
WR6: NOT EXISTS(target_stratum) OR
((target_stratum IN SELF\Stratum_sub_stack.associated_stackup.composing_occurrence) AND
(target_stratum IN terminus_stratum));
WR7: ft_count_unspecified_asto(minimum_annular_ring) < 2;
END_ENTITY;
ENTITY Stratum_stack_model
ABSTRACT SUPERTYPE
OF (Design_stack_model)
SUBTYPE OF (Template_definition);
DERIVE
composing_occurrence : SET[1:?] OF Stratum_technology_occurrence := get_stack(composing_link);
INVERSE
composing_link : SET[1:?] OF Stratum_technology_occurrence_relationship FOR scope;
WHERE
WR1: SIZEOF(QUERY( cl <* composing_link |
NOT('FABRICATION_TECHNOLOGY_ARM.STRATUM_TECHNOLOGY_OCCURRENCE_LINK' IN TYPEOF(cl))
)) = 0;
END_ENTITY;
ENTITY Stratum_sub_stack
ABSTRACT SUPERTYPE
OF (ONEOF (Local_linear_stack,
Passage_technology_allocation_to_stack_model))
SUBTYPE OF (Template_definition);
stratum_technology_sequence :
OPTIONAL
SET[1:?] OF Stratum_technology_occurrence_link;
stack_thickness :
OPTIONAL
Length_tolerance_characteristic;
associated_stackup : Design_stack_model;
WHERE
WR1: SIZEOF(QUERY(sts <* stratum_technology_sequence |
NOT(associated_stackup :=: sts\Stratum_technology_occurrence_relationship.scope)) ) = 0;
END_ENTITY;
ENTITY Stratum_surface_technology
SUBTYPE OF (Shape_element);
SELF\Shape_element.associated_definition : Stratum_technology;
DERIVE
surface_specification : SET[0:1] OF Document_definition := get_document_definition(SELF, 'surface specification',
'SPECIFICATION_DOCUMENT_ARM.SURFACE_FINISH_SPECIFICATION');
WHERE
WR1: (SIZEOF(QUERY(se <* bag_to_set(USEDIN(SELF,'PROPERTY_ASSIGNMENT_ARM.ASSIGNED_PROPERTY.DESCRIBED_ELEMENT'))
| 'SURFACE_CONDITIONS_ARM.SURFACE_CONDITION' IN TYPEOF(se) )) > 0) OR
(SIZEOF(get_document_definition(SELF, 'surface specification', 'SPECIFICATION_DOCUMENT_ARM.SURFACE_FINISH_SPECIFICATION'))
= 1);
END_ENTITY;
ENTITY Stratum_technology
SUPERTYPE OF
(ONEOF (Design_layer_technology,
Documentation_layer_technology))
SUBTYPE OF (Characterizable_object);
layer_position : layer_position_type;
stratum_thickness :
OPTIONAL
Length_tolerance_characteristic;
minimum_finished_feature_size :
OPTIONAL
Length_data_element;
laminate_stiffness_class :
OPTIONAL
stiffness_class;
minimum_finished_feature_spacing :
OPTIONAL
Length_data_element;
maximum_feature_size_requirement :
OPTIONAL
Length_data_element;
minimum_aspect_ratio :
OPTIONAL
REAL;
DERIVE
specification : SET[0:1] OF Document_definition := get_document_definition(SELF, 'specification',
'SPECIFICATION_DOCUMENT_ARM.PROCESS_SPECIFICATION');
surface_specification : SET[0:1] OF Document_definition := get_document_definition(SELF, 'surface specification',
'SPECIFICATION_DOCUMENT_ARM.SURFACE_FINISH_SPECIFICATION');
INVERSE
stratum_material : SET[1:1] OF Material_identification FOR items;
surface_technology : SET[0:2] OF Stratum_surface_technology FOR associated_definition;
UNIQUE
UR1: SELF\Characterizable_object.name;
WHERE
WR1: NOT (layer_position = layer_position_type.primary) OR ('FABRICATION_TECHNOLOGY_ARM.DESIGN_LAYER_TECHNOLOGY' IN TYPEOF(SELF));
WR2: NOT (layer_position = layer_position_type.secondary) OR ('FABRICATION_TECHNOLOGY_ARM.DESIGN_LAYER_TECHNOLOGY' IN TYPEOF(SELF));
WR3: 'CONDUCTIVITY_MATERIAL_ASPECTS_ARM.'+ 'MATERIAL_IDENTIFICATION_WITH_CONDUCTIVITY_CLASSIFICATION' IN TYPEOF (stratum_material);
WR4: NOT((SIZEOF(surface_technology) > 0 ) AND (SIZEOF(surface_specification) = 1));
END_ENTITY;
ENTITY Stratum_technology_mapping_relationship;
source_stratum_technology : Footprint_library_stratum_technology;
target_stratum_technology : Stratum_technology;
WHERE
WR1: NOT ('FABRICATION_TECHNOLOGY_ARM.FOOTPRINT_LIBRARY_STRATUM_TECHNOLOGY' IN TYPEOF(target_stratum_technology));
WR2: acyclic_stratum_technology_mapping_relationship(SELF,
[target_stratum_technology],
'FABRICATION_TECHNOLOGY_ARM.STRATUM_TECHNOLOGY_MAPPING_RELATIONSHIP');
END_ENTITY;
ENTITY Stratum_technology_occurrence;
name : STRING;
definition : Stratum_technology;
primary :
OPTIONAL
Stratum_surface_technology;
rotation :
OPTIONAL
Angle_data_element;
UNIQUE
UR1: name;
END_ENTITY;
ENTITY Stratum_technology_occurrence_feature_constraint
SUBTYPE OF (Stratum_technology_occurrence_relationship);
difference_distance :
OPTIONAL
length_measure;
intersection_distance :
OPTIONAL
length_measure;
WHERE
WR1: EXISTS (difference_distance) XOR EXISTS(intersection_distance);
END_ENTITY;
ENTITY Stratum_technology_occurrence_link
SUBTYPE OF (Stratum_technology_occurrence_relationship);
base_stratum_technology_occurrence :
OPTIONAL
up_or_down;
WHERE
WR1: NOT (SELF\Stratum_technology_occurrence_relationship.sto_1 :=: SELF\Stratum_technology_occurrence_relationship.sto_2)
OR
(SIZEOF(SELF\Stratum_technology_occurrence_relationship.scope\Stratum_stack_model.composing_link) = 1);
END_ENTITY;
ENTITY Stratum_technology_occurrence_relationship
ABSTRACT SUPERTYPE
OF (ONEOF (Derived_stratum_technology_occurrence_relationship,
Stratum_technology_occurrence_link,
Stratum_technology_occurrence_swap_relationship,
Stratum_technology_occurrence_feature_constraint));
sto_1 : Stratum_technology_occurrence;
sto_2 : Stratum_technology_occurrence;
scope : Stratum_stack_model;
WHERE
WR1: acyclic_stratum_technology_occurrence_relationship(SELF, [sto_2],
'FABRICATION_TECHNOLOGY_ARM.STRATUM_TECHNOLOGY_OCCURRENCE_RELATIONSHIP');
END_ENTITY;
ENTITY Stratum_technology_occurrence_swap_relationship
SUBTYPE OF (Stratum_technology_occurrence_relationship);
UNIQUE
UR1: SELF\Stratum_technology_occurrence_relationship.sto_1, SELF\Stratum_technology_occurrence_relationship.scope;
UR2: SELF\Stratum_technology_occurrence_relationship.sto_2, SELF\Stratum_technology_occurrence_relationship.scope;
WHERE
WR1: SELF\Stratum_technology_occurrence_relationship.sto_1 <> SELF\Stratum_technology_occurrence_relationship.sto_2;
WR2: (SELF\Stratum_technology_occurrence_relationship.sto_1 IN SELF\Stratum_technology_occurrence_relationship.scope\Stratum_stack_model.composing_occurrence)
AND
(SELF\Stratum_technology_occurrence_relationship.sto_2 IN SELF\Stratum_technology_occurrence_relationship.scope\Stratum_stack_model.composing_occurrence);
END_ENTITY;
ENTITY Stratum_technology_swap_relationship;
primary_stratum_technology : Stratum_technology;
secondary_stratum_technology : Stratum_technology;
UNIQUE
UR1: primary_stratum_technology;
UR2: secondary_stratum_technology;
WHERE
WR1: NOT (('FABRICATION_TECHNOLOGY_ARM.DOCUMENTATION_LAYER_TECHNOLOGY' IN TYPEOF(primary_stratum_technology)) AND
EXISTS(primary_stratum_technology\Documentation_layer_technology.pre_defined_documentation_layer_purpose))
OR
(primary_stratum_technology\Documentation_layer_technology.pre_defined_documentation_layer_purpose =
secondary_stratum_technology\Documentation_layer_technology.pre_defined_documentation_layer_purpose);
WR2: TYPEOF(primary_stratum_technology) = TYPEOF(secondary_stratum_technology);
WR3: primary_stratum_technology\Stratum_technology.layer_position = layer_position_type.primary;
WR4: secondary_stratum_technology\Stratum_technology.layer_position = layer_position_type.secondary;
WR5: primary_stratum_technology <> secondary_stratum_technology;
WR6: acyclic_stratum_technology_swap_relationship(SELF,
[secondary_stratum_technology],
'FABRICATION_TECHNOLOGY_ARM.STRATUM_TECHNOLOGY_SWAP_RELATIONSHIP');
END_ENTITY;
FUNCTION acyclic_equivalent_stackup_model_definition
(relation : Equivalent_stackup_model_definition; relatives : SET[1:?] OF Stratum_stack_model; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF Equivalent_stackup_model_definition := []; END_LOCAL; IF relation.primary_stackup_model IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.primary_stackup_model, 'FABRICATION_TECHNOLOGY_ARM.' + 'EQUIVALENT_STACKUP_MODEL_DEFINITION.' + 'EQUIVALENT_STACKUP_MODEL')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_equivalent_stackup_model_definition(x[i], relatives + relation.primary_stackup_model, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
FUNCTION acyclic_stratum_technology_mapping_relationship
(relation : Stratum_technology_mapping_relationship; relatives : SET[1:?] OF Stratum_technology; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF Stratum_technology_mapping_relationship := []; END_LOCAL; IF relation.source_stratum_technology IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.source_stratum_technology, 'FABRICATION_TECHNOLOGY_ARM.' + 'STRATUM_TECHNOLOGY_MAPPING_RELATIONSHIP.' + 'TARGET_STRATUM_TECHNOLOGY')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_stratum_technology_mapping_relationship(x[i], relatives + relation.source_stratum_technology, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
FUNCTION acyclic_stratum_technology_occurrence_relationship
(relation : Stratum_technology_occurrence_relationship; relatives : SET[1:?] OF Stratum_technology_occurrence; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF Stratum_technology_occurrence_relationship := []; END_LOCAL; IF relation.sto_1 IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.sto_1, 'FABRICATION_TECHNOLOGY_ARM.' + 'STRATUM_TECHNOLOGY_OCCURRENCE_RELATIONSHIP.' + 'STO_2')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_Stratum_technology_occurrence_relationship(x[i], relatives + relation.sto_1, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
FUNCTION acyclic_stratum_technology_swap_relationship
(relation : Stratum_technology_swap_relationship; relatives : SET[1:?] OF Stratum_technology; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF Stratum_technology_swap_relationship := []; END_LOCAL; IF relation.primary_stratum_technology IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.primary_stratum_technology, 'FABRICATION_TECHNOLOGY_ARM.' + 'STRATUM_TECHNOLOGY_SWAP_RELATIONSHIP.' + 'SECONDARY_STRATUM_TECHNOLOGY')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_stratum_technology_swap_relationship(x[i], relatives + relation.primary_stratum_technology, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
FUNCTION ft_count_unspecified_asto
(input : SET[0:?] OF Allocated_passage_minimum_annular_ring) : INTEGER;
LOCAL count : INTEGER := 0; END_LOCAL; REPEAT i := 1 to SIZEOF(input) BY 1; IF NOT EXISTS(input[i]\Allocated_passage_minimum_annular_ring.associated_stratum_technology_occurrence) THEN count := count + 1; END_IF; END_REPEAT; RETURN(count);
END_FUNCTION;
FUNCTION ft_get_terminus
(input : SET[0:?] OF Stratum_technology_occurrence_link) : SET[0:?] OF Stratum_technology_occurrence;
LOCAL sto : SET OF Stratum_technology_occurrence := get_stack(input); i : INTEGER := 0; j : INTEGER := 0; pstoo : SET OF Stratum_technology_occurrence := []; sstoo : SET OF Stratum_technology_occurrence := []; END_LOCAL; pstoo := sto; sstoo := sto; REPEAT i := 1 TO SIZEOF(sto) BY 1; REPEAT j := 1 TO SIZEOF(input) BY 1; IF (input[j]\Stratum_technology_occurrence_relationship.sto_1 :=: sto[i]) THEN pstoo := pstoo - sto[i]; END_IF; IF (input[j]\Stratum_technology_occurrence_relationship.sto_2 :=: sto[i]) THEN sstoo := sstoo - sto[i]; END_IF; END_REPEAT; END_REPEAT; RETURN(pstoo + sstoo);
END_FUNCTION;
FUNCTION get_stack
(input : SET[0:?] OF Stratum_technology_occurrence_link) : SET[0:?] OF Stratum_technology_occurrence;
LOCAL sto : SET OF Stratum_technology_occurrence := []; i : INTEGER := 0; END_LOCAL; REPEAT i := 1 TO SIZEOF(input) BY 1; sto := sto + input[i]\Stratum_technology_occurrence_relationship.sto_1 + input[i]\Stratum_technology_occurrence_relationship.sto_2; END_REPEAT; RETURN(sto);
END_FUNCTION;
FUNCTION less
(input1 : Length_tolerance_characteristic; input2 : ft_value_select) : BOOLEAN;
RETURN(TRUE);
END_FUNCTION;
FUNCTION sts_vertex_degree_check
(input : SET[0:?] OF Stratum_technology_occurrence_link; n : INTEGER) : BOOLEAN;
LOCAL psto : INTEGER := 0; ssto : INTEGER := 0; sto : SET OF Stratum_technology_occurrence := get_stack(input); i : INTEGER := 0; j : INTEGER := 0; pass : BOOLEAN := TRUE; END_LOCAL; REPEAT i := 1 TO SIZEOF(sto) BY 1; REPEAT j := 1 TO SIZEOF(input) BY 1; IF (input[j]\Stratum_technology_occurrence_relationship.sto_1 :=: sto[i]) THEN psto := psto + 1; IF (psto = n) THEN pass := FALSE; ESCAPE; END_IF; END_IF; IF (input[j]\Stratum_technology_occurrence_relationship.sto_2 :=: sto[i]) THEN ssto := ssto + 1; IF (ssto = n) THEN pass := FALSE; ESCAPE; END_IF; END_IF; END_REPEAT; END_REPEAT; RETURN(pass);
END_FUNCTION;
END_SCHEMA; -- Fabrication_technology_arm
© ISO 2018 — All rights reserved