Application module: Printed physical layout template | ISO/TS 10303-1737:2021(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N10998 - ISO/TS 10303-1737 Printed physical layout template - EXPRESS ARM
Supersedes
ISO/TC 184/SC 4/WG 12 N9467
*)
SCHEMA Printed_physical_layout_template_arm;
USE FROM
Functional_usage_view_arm;
-- ISO/TS 10303-1705
USE FROM
Layered_interconnect_complex_template_arm;
-- ISO/TS 10303-1716
REFERENCE FROM
Support_resource_arm -- ISO/TS 10303-1800
(bag_to_set);
TYPE pplt_usage_concept =
SELECT
BASED_ON
usage_concept
WITH
(Printed_part_template_terminal);
END_TYPE;
TYPE printed_part_template_terminal_class =
ENUMERATION
OF
(curve_edge_segment,
surface_point,
area_edge_segment,
surface_area);
END_TYPE;
ENTITY Basic_multi_stratum_printed_part_template
SUBTYPE OF (Printed_part_template);
material_stack : Library_stack_model;
reference_template : Stratum_feature_template;
END_ENTITY;
ENTITY Functional_usage_view_to_printed_part_template_terminal_assignment;
physical_usage_view_terminal : Printed_part_template_terminal;
functional_usage_view_terminal : Scalar_terminal_definition;
UNIQUE
UR1: functional_usage_view_terminal, physical_usage_view_terminal;
END_ENTITY;
ENTITY Multi_stratum_printed_part_template
SUBTYPE OF (Structured_printed_part_template, Multi_stratum_structured_template);
END_ENTITY;
ENTITY Non_conductive_cross_section_template
SUBTYPE OF (Template_definition);
template_technology :
OPTIONAL
SET[1:?] OF Stratum_technology;
nominal_width : Length_data_element;
WHERE
WR1: NOT EXISTS(SELF\Product_view_definition.name);
END_ENTITY;
ENTITY Printed_connector_template
SUBTYPE OF (Printed_part_template);
INVERSE
characterized_connector_terminal_relationship : SET[1:?] OF Printed_connector_template_terminal_relationship FOR connector;
END_ENTITY;
ENTITY Printed_connector_template_terminal_relationship;
join_terminal : Printed_part_template_join_terminal;
interface_terminal : Printed_part_template_interface_terminal;
connector : Printed_connector_template;
UNIQUE
UR1: join_terminal;
WHERE
WR1: join_terminal\Shape_element.associated_definition :=: connector;
WR2: interface_terminal\Printed_part_template_interface_terminal.associated_definition :=: connector;
END_ENTITY;
ENTITY Printed_part_cross_section_template
SUBTYPE OF (Printed_part_template);
horizontal_material_link :
OPTIONAL
SET[1:?] OF Printed_part_template_material_link;
vertical_material_link :
OPTIONAL
SET[1:?] OF Printed_part_template_material_link;
transmission_line_model : Analytical_model_definition;
maximum_transmission_line_characteristic :
OPTIONAL
SET[1:?] OF Analytical_model_application;
minimum_transmission_line_characteristic :
OPTIONAL
SET[1:?] OF Analytical_model_application;
width : Length_tolerance_characteristic;
unit_length : Length_data_element;
INVERSE
SELF\Printed_part_template.access_mechanisms : SET[1:?] OF Printed_part_cross_section_template_terminal FOR associated_definition;
WHERE
WR1: SIZEOF(QUERY(hml <* horizontal_material_link | NOT (hml.precedent_material\Shape_element.element_name IN ['right'])))
= 0;
WR2: SIZEOF(QUERY(hml <* horizontal_material_link | NOT (hml.subsequent_material\Shape_element.element_name IN ['left'])))
= 0;
WR3: SIZEOF(QUERY(hml <* vertical_material_link | NOT (hml.precedent_material\Shape_element.element_name IN ['bottom'])))
= 0;
WR4: SIZEOF(QUERY(hml <* vertical_material_link | NOT (hml.precedent_material\Shape_element.element_name IN ['top']))) = 0;
WR5: SIZEOF(QUERY(hml <* horizontal_material_link |
(SIZEOF(QUERY(vml <* vertical_material_link |
(vml :=: hml)
)) > 0)
)) = 0;
WR6: NOT EXISTS(SELF\Product_view_definition.name);
WR7: EXISTS(horizontal_material_link) OR EXISTS(vertical_material_link);
WR8: NOT ('PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.PRINTED_CONNECTOR_TEMPLATE' IN TYPEOF(SELF));
END_ENTITY;
ENTITY Printed_part_cross_section_template_terminal
SUBTYPE OF (Printed_part_template_terminal);
SELF\Shape_element.associated_definition : Printed_part_cross_section_template;
material_to_left_of_terminal :
OPTIONAL
Printed_part_template_material_link;
material_to_right_of_terminal :
OPTIONAL
Printed_part_template_material_link;
material_to_top_of_terminal :
OPTIONAL
Printed_part_template_material_link;
material_to_bottom_of_terminal :
OPTIONAL
Printed_part_template_material_link;
UNIQUE
UR1: associated_definition, material_to_left_of_terminal, material_to_right_of_terminal, material_to_top_of_terminal, material_to_bottom_of_terminal;
WHERE
WR1: (SELF\Printed_part_template_terminal.connection_zone_category = curve_edge_segment) OR (SELF\Printed_part_template_terminal.connection_zone_category
= area_edge_segment);
WR2: NOT (EXISTS(material_to_left_of_terminal) AND EXISTS(material_to_right_of_terminal)) OR (material_to_left_of_terminal
:<>: material_to_right_of_terminal);
WR3: NOT (EXISTS(material_to_left_of_terminal) AND EXISTS(material_to_top_of_terminal)) OR (material_to_left_of_terminal :<>:
material_to_top_of_terminal);
WR4: NOT (EXISTS(material_to_left_of_terminal) AND EXISTS(material_to_bottom_of_terminal)) OR (material_to_left_of_terminal
:<>: material_to_bottom_of_terminal);
WR5: NOT (EXISTS(material_to_right_of_terminal) AND EXISTS(material_to_top_of_terminal)) OR (material_to_right_of_terminal
:<>: material_to_top_of_terminal);
WR6: NOT (EXISTS(material_to_right_of_terminal) AND EXISTS(material_to_bottom_of_terminal)) OR (material_to_right_of_terminal
:<>: material_to_bottom_of_terminal);
WR7: NOT (EXISTS(material_to_top_of_terminal) AND EXISTS(material_to_bottom_of_terminal)) OR (material_to_top_of_terminal
:<>: material_to_bottom_of_terminal);
WR8: NOT EXISTS(material_to_left_of_terminal) OR
(material_to_left_of_terminal\Printed_part_template_material_link.precedent_material\Shape_element.element_name = 'right');
WR9: NOT EXISTS(material_to_right_of_terminal) OR
(material_to_right_of_terminal\Printed_part_template_material_link.subsequent_material\Shape_element.element_name = 'left');
WR10: NOT EXISTS(material_to_bottom_of_terminal) OR
(material_to_bottom_of_terminal\Printed_part_template_material_link.subsequent_material\Shape_element.element_name = 'top');
WR11: NOT EXISTS(material_to_top_of_terminal) OR
(material_to_top_of_terminal\Printed_part_template_material_link.precedent_material\Shape_element.element_name = 'bottom');
END_ENTITY;
ENTITY Printed_part_template
ABSTRACT SUPERTYPE
OF (ONEOF (Basic_multi_stratum_printed_part_template,
Structured_printed_part_template,
Printed_part_cross_section_template)
ANDOR Printed_connector_template)
SUBTYPE OF (Template_definition);
implemented_function :
OPTIONAL
Functional_unit_usage_view;
INVERSE
access_mechanisms : SET[1:?] OF Printed_part_template_terminal FOR associated_definition;
WHERE
WR1: NOT EXISTS(SELF\Product_view_definition.name);
END_ENTITY;
ENTITY Printed_part_template_connected_terminals_definition;
name : STRING;
connected_terminals : SET[2:?] OF Printed_part_template_terminal;
DERIVE
scope : Printed_part_template := connected_terminals[1].associated_definition;
UNIQUE
UR1: name, scope;
WHERE
WR1: SIZEOF(QUERY(t <* connected_terminals | t.associated_definition :<>: scope)) = 0;
END_ENTITY;
ENTITY Printed_part_template_interface_terminal
SUBTYPE OF (Printed_part_template_terminal);
SELF\Shape_element.associated_definition : Printed_connector_template;
INVERSE
external_connector_function : SET[1:?] OF Printed_connector_template_terminal_relationship FOR interface_terminal;
END_ENTITY;
ENTITY Printed_part_template_join_terminal
SUBTYPE OF (Printed_part_template_terminal);
INVERSE
internal_connector_function : SET[0:1] OF Printed_connector_template_terminal_relationship FOR join_terminal;
END_ENTITY;
ENTITY Printed_part_template_material;
width : Length_tolerance_characteristic;
required_material : Stratum_technology;
INVERSE
boundary : SET[0:4] OF Template_material_cross_section_boundary FOR associated_definition2;
WHERE
WR1: SIZEOF(QUERY(temp <* (USEDIN(SELF,
'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY.' + 'ASSOCIATED_DEFINITION2')) | temp\Shape_element.element_name
= 'top')) <= 1;
WR2: SIZEOF(QUERY(temp <* (USEDIN(SELF,
'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY.' + 'ASSOCIATED_DEFINITION2')) | temp\Shape_element.element_name
= 'bottom')) <= 1;
WR3: SIZEOF(QUERY(temp <* (USEDIN(SELF,
'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY.' + 'ASSOCIATED_DEFINITION2')) | temp\Shape_element.element_name
= 'left')) <= 1;
WR4: SIZEOF(QUERY(temp <* (USEDIN(SELF,
'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY.' + 'ASSOCIATED_DEFINITION2')) | temp\Shape_element.element_name
= 'right')) <= 1;
END_ENTITY;
ENTITY Printed_part_template_material_link;
precedent_material : Template_material_cross_section_boundary;
subsequent_material : Template_material_cross_section_boundary;
UNIQUE
UR1: precedent_material, subsequent_material;
WHERE
WR1: precedent_material :<>: subsequent_material;
WR2: precedent_material\Shape_element.element_name IN ['bottom', 'right'];
WR3: subsequent_material\Shape_element.element_name IN ['top', 'left'];
WR4: NOT((precedent_material\Shape_element.element_name IN ['bottom']) XOR (subsequent_material\Shape_element.element_name
IN ['top']));
WR5: NOT((precedent_material\Shape_element.element_name IN ['right']) XOR (subsequent_material\Shape_element.element_name
IN ['left']));
WR6: acyclic_printed_part_template_material_link(SELF,
[subsequent_material],
'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.PRINTED_PART_TEMPLATE_MATERIAL_LINK');
END_ENTITY;
ENTITY Printed_part_template_terminal
ABSTRACT SUPERTYPE
OF ((ONEOF (Printed_part_template_join_terminal,
Printed_part_template_interface_terminal)
ANDOR Printed_part_cross_section_template_terminal)
ANDOR Structured_printed_part_template_terminal)
SUBTYPE OF (General_part_feature);
SELF\Shape_element.associated_definition : Printed_part_template;
connection_zone_category : printed_part_template_terminal_class;
connection_area :
OPTIONAL
SET[1:?] OF Connection_zone_in_layout_template;
INVERSE
connection_requirement : SET[0:1] OF Printed_part_template_connected_terminals_definition FOR connected_terminals;
functional_usage_view_terminal : SET[0:1] OF Functional_usage_view_to_printed_part_template_terminal_assignment FOR physical_usage_view_terminal;
UNIQUE
UR1: SELF\Shape_element.element_name, associated_definition;
WHERE
WR1: NOT EXISTS(SELF\Shape_element.description);
END_ENTITY;
ENTITY Printed_tiebar_template
SUBTYPE OF (Structured_printed_part_template);
DERIVE
terminal_location : SET[0:?] OF Axis_placement_2d := pplt_get_tl_ap2d(SELF);
passage_component_location : SET[0:?] OF Axis_placement_2d := pplt_get_pcl_ap2d(SELF);
tiebar_shape_model : SET[0:?] OF Geometric_model := pplt_get_gm(SELF);
WHERE
WR1: SIZEOF(['PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.PRINTED_CONNECTOR_TEMPLATE',
'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.NON_CONDUCTIVE_CROSS_SECTION_TEMPLATE',
'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.PRINTED_PART_CROSS_SECTION_TEMPLATE'] * TYPEOF(SELF)) = 0;
WR2: SIZEOF(QUERY(am <* SELF\Printed_part_template.access_mechanisms |
NOT('PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.PRINTED_PART_TEMPLATE_JOIN_TERMINAL' IN TYPEOF(am))
)) = 0;
WR3: (SIZEOF(passage_component_location) = 0) OR
(SIZEOF(QUERY(pcl <* passage_component_location |
(SIZEOF(QUERY(tsm <* tiebar_shape_model |
(ap2d_geometrically_in_tiebar(pcl,tsm)))) > 0)
)) = SIZEOF(passage_component_location));
WR4: SIZEOF(QUERY(t <* SELF\Structured_template.templates | 'LAYERED_INTERCONNECT_SIMPLE_TEMPLATE_ARM.STRATUM_FEATURE_TEMPLATE'
IN TYPEOF(t\Template_location_in_structured_template.template))) > 0;
WR5: SIZEOF(QUERY(spptt <* SELF\Printed_part_template.access_mechanisms |
NOT(SIZEOF(USEDIN(spptt,'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.' + 'PRINTED_PART_TEMPLATE_CONNECTED_TERMINALS_DEFINITION.CONNECTED_TERMINALS'))
= 1)
)) = 0;
WR6: SIZEOF(QUERY(spptt1 <* SELF\Printed_part_template.access_mechanisms |
NOT(SIZEOF(QUERY(spptt2 <* SELF\Printed_part_template.access_mechanisms |
(bag_to_set(USEDIN(spptt1,'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.' + 'PRINTED_PART_TEMPLATE_CONNECTED_TERMINALS_DEFINITION.CONNECTED_TERMINALS'))
=
bag_to_set(USEDIN(spptt2,'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.' + 'PRINTED_PART_TEMPLATE_CONNECTED_TERMINALS_DEFINITION.CONNECTED_TERMINALS')))))
= SIZEOF(SELF\Printed_part_template.access_mechanisms)))) = 0;
WR7: SIZEOF(QUERY(tl <* terminal_location |
(SIZEOF(QUERY(pcl <* passage_component_location |
((tl :=: pcl) OR
(SIZEOF(QUERY(tsm <* tiebar_shape_model |
(ap2d_geometrically_in_tiebar(tl,tsm)))) > 0)))) > 0)
)) = SIZEOF(terminal_location);
END_ENTITY;
ENTITY Single_stratum_printed_part_template
SUBTYPE OF (Structured_printed_part_template, Single_stratum_structured_template);
END_ENTITY;
ENTITY Structured_printed_part_template
ABSTRACT SUPERTYPE
OF (ONEOF (Single_stratum_printed_part_template,
Multi_stratum_printed_part_template))
SUBTYPE OF (Printed_part_template, Structured_template);
WHERE
WR1: SIZEOF(QUERY(t <* access_mechanisms |
NOT ('PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.STRUCTURED_PRINTED_PART_TEMPLATE_TERMINAL'
IN TYPEOF(t)))) = 0;
WR2: SIZEOF(QUERY(t <* SELF\Structured_template.templates |
'LAYERED_INTERCONNECT_COMPLEX_TEMPLATE_ARM.STRUCTURED_TEMPLATE' IN TYPEOF(t.template))) = 0;
END_ENTITY;
ENTITY Structured_printed_part_template_terminal
SUBTYPE OF (Printed_part_template_terminal);
SELF\Shape_element.associated_definition : Structured_printed_part_template;
associated_composition_relationship : Template_location_in_structured_template;
WHERE
WR1: associated_composition_relationship\Template_location_in_structured_template.assembly :=: associated_definition;
WR2: TYPEOF(SELF) <> ['PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.STRUCTURED_PRINTED_PART_TEMPLATE_TERMINAL',
'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.PRINTED_PART_TEMPLATE_TERMINAL',
'FEATURE_AND_CONNECTION_ZONE_ARM.DEFINITIONAL_SHAPE_ELEMENT',
'SHAPE_PROPERTY_ASSIGNMENT_ARM.SHAPE_ELEMENT'];
END_ENTITY;
ENTITY Template_material_cross_section_boundary
SUBTYPE OF (Non_feature_shape_element);
associated_definition2 : Printed_part_template_material;
UNIQUE
UR1: associated_definition2, SELF\Shape_element.element_name;
WHERE
WR1: SELF\Shape_element.element_name IN ['top', 'bottom', 'left', 'right'];
END_ENTITY;
SUBTYPE_CONSTRAINT pplt_template_definition_subtypes FOR Template_definition;
ONEOF (Printed_part_template,
Non_conductive_cross_section_template);
END_SUBTYPE_CONSTRAINT;
FUNCTION acyclic_printed_part_template_material_link
(relation : Printed_part_template_material_link; relatives : SET[1:?] OF Template_material_cross_section_boundary; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF Printed_part_template_material_link := []; END_LOCAL; IF relation.precedent_material IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.precedent_material, 'PRINTED_PHYSICAL_LAYOUT_TEMPLATE_ARM.' + 'PRINTED_PART_TEMPLATE_MATERIAL_LINK.' + 'SUBSEQUENT_MATERIAL')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_printed_part_template_material_link(x[i], relatives + relation.precedent_material, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
FUNCTION ap2d_geometrically_in_tiebar
(input_1 : Axis_placement_2d; input_2 : Geometric_model) : LOGICAL;
RETURN(TRUE);
END_FUNCTION;
FUNCTION pplt_get_gm
(input : Printed_tiebar_template) : SET[0:?] OF Geometric_model;
LOCAL gm : SET OF Geometric_model := []; --this gives us access to the information base END_LOCAL; RETURN(gm);
END_FUNCTION;
FUNCTION pplt_get_pcl_ap2d
(input : Printed_tiebar_template) : SET[0:?] OF Axis_placement_2d;
LOCAL ap2d : SET OF Axis_placement_2d := []; --this gives us access to the information base END_LOCAL; RETURN(ap2d);
END_FUNCTION;
FUNCTION pplt_get_tl_ap2d
(input : Printed_tiebar_template) : SET[0:?] OF Axis_placement_2d;
LOCAL ap2d : SET OF Axis_placement_2d := []; --this gives us access to the information base END_LOCAL; RETURN(ap2d);
END_FUNCTION;
END_SCHEMA; -- Printed_physical_layout_template_arm
© ISO 2021 — All rights reserved