Browse Source
ADDED: New ERC test for mis-match GND pins
ADDED: New ERC test for mis-match GND pins
If you have a pin with a label containing the letters "GND" in it and it is not connected to a net with a label also containing "GND" AND there is another pin on your symbol that _is_ connected to a net containing "GND", then there is a likelihood that you have accidentally mixed up your connections to the GND pinpull/18/head
16 changed files with 6296 additions and 0 deletions
-
70eeschema/erc/erc.cpp
-
6eeschema/erc/erc.h
-
6eeschema/erc/erc_item.cpp
-
1eeschema/erc/erc_item.h
-
1eeschema/erc/erc_settings.cpp
-
1eeschema/erc/erc_settings.h
-
592qa/data/eeschema/ground_pin_test_error.kicad_pro
-
1074qa/data/eeschema/ground_pin_test_error.kicad_sch
-
624qa/data/eeschema/ground_pin_test_mixed.kicad_pro
-
1106qa/data/eeschema/ground_pin_test_mixed.kicad_sch
-
624qa/data/eeschema/ground_pin_test_no_ground_net.kicad_pro
-
492qa/data/eeschema/ground_pin_test_no_ground_net.kicad_sch
-
624qa/data/eeschema/ground_pin_test_ok.kicad_pro
-
636qa/data/eeschema/ground_pin_test_ok.kicad_sch
-
1qa/tests/eeschema/CMakeLists.txt
-
438qa/tests/eeschema/erc/test_erc_ground_pins.cpp
@ -0,0 +1,592 @@ |
|||
{ |
|||
"board": { |
|||
"3dviewports": [], |
|||
"design_settings": { |
|||
"defaults": { |
|||
"apply_defaults_to_fp_fields": false, |
|||
"apply_defaults_to_fp_shapes": false, |
|||
"apply_defaults_to_fp_text": false, |
|||
"board_outline_line_width": 0.09999999999999999, |
|||
"copper_line_width": 0.19999999999999998, |
|||
"copper_text_italic": false, |
|||
"copper_text_size_h": 1.5, |
|||
"copper_text_size_v": 1.5, |
|||
"copper_text_thickness": 0.3, |
|||
"copper_text_upright": false, |
|||
"courtyard_line_width": 0.049999999999999996, |
|||
"dimension_precision": 4, |
|||
"dimension_units": 3, |
|||
"dimensions": { |
|||
"arrow_length": 1270000, |
|||
"extension_offset": 500000, |
|||
"keep_text_aligned": true, |
|||
"suppress_zeroes": false, |
|||
"text_position": 0, |
|||
"units_format": 1 |
|||
}, |
|||
"fab_line_width": 0.09999999999999999, |
|||
"fab_text_italic": false, |
|||
"fab_text_size_h": 1.0, |
|||
"fab_text_size_v": 1.0, |
|||
"fab_text_thickness": 0.15, |
|||
"fab_text_upright": false, |
|||
"other_line_width": 0.15, |
|||
"other_text_italic": false, |
|||
"other_text_size_h": 1.0, |
|||
"other_text_size_v": 1.0, |
|||
"other_text_thickness": 0.15, |
|||
"other_text_upright": false, |
|||
"pads": { |
|||
"drill": 0.762, |
|||
"height": 1.524, |
|||
"width": 1.524 |
|||
}, |
|||
"silk_line_width": 0.15, |
|||
"silk_text_italic": false, |
|||
"silk_text_size_h": 1.0, |
|||
"silk_text_size_v": 1.0, |
|||
"silk_text_thickness": 0.15, |
|||
"silk_text_upright": false, |
|||
"zones": { |
|||
"min_clearance": 0.5 |
|||
} |
|||
}, |
|||
"diff_pair_dimensions": [], |
|||
"drc_exclusions": [], |
|||
"meta": { |
|||
"version": 2 |
|||
}, |
|||
"rule_severities": { |
|||
"annular_width": "error", |
|||
"clearance": "error", |
|||
"connection_width": "warning", |
|||
"copper_edge_clearance": "error", |
|||
"copper_sliver": "warning", |
|||
"courtyards_overlap": "error", |
|||
"diff_pair_gap_out_of_range": "error", |
|||
"diff_pair_uncoupled_length_too_long": "error", |
|||
"drill_out_of_range": "error", |
|||
"duplicate_footprints": "warning", |
|||
"extra_footprint": "warning", |
|||
"footprint": "error", |
|||
"footprint_symbol_mismatch": "warning", |
|||
"footprint_type_mismatch": "ignore", |
|||
"hole_clearance": "error", |
|||
"hole_near_hole": "error", |
|||
"holes_co_located": "warning", |
|||
"invalid_outline": "error", |
|||
"isolated_copper": "warning", |
|||
"item_on_disabled_layer": "error", |
|||
"items_not_allowed": "error", |
|||
"length_out_of_range": "error", |
|||
"lib_footprint_issues": "warning", |
|||
"lib_footprint_mismatch": "warning", |
|||
"malformed_courtyard": "error", |
|||
"microvia_drill_out_of_range": "error", |
|||
"missing_courtyard": "ignore", |
|||
"missing_footprint": "warning", |
|||
"net_conflict": "warning", |
|||
"npth_inside_courtyard": "ignore", |
|||
"padstack": "warning", |
|||
"pth_inside_courtyard": "ignore", |
|||
"shorting_items": "error", |
|||
"silk_edge_clearance": "warning", |
|||
"silk_over_copper": "warning", |
|||
"silk_overlap": "warning", |
|||
"skew_out_of_range": "error", |
|||
"solder_mask_bridge": "error", |
|||
"starved_thermal": "error", |
|||
"thermal_via": "error", |
|||
"through_hole_pad_without_hole": "error", |
|||
"too_many_vias": "error", |
|||
"track_dangling": "warning", |
|||
"track_width": "error", |
|||
"tracks_crossing": "error", |
|||
"unconnected_items": "error", |
|||
"unresolved_variable": "error", |
|||
"via_dangling": "warning", |
|||
"zones_intersect": "error" |
|||
}, |
|||
"rules": { |
|||
"max_error": 0.005, |
|||
"min_clearance": 0.0, |
|||
"min_connection": 0.0, |
|||
"min_copper_edge_clearance": 0.5, |
|||
"min_hole_clearance": 0.25, |
|||
"min_hole_to_hole": 0.25, |
|||
"min_microvia_diameter": 0.19999999999999998, |
|||
"min_microvia_drill": 0.09999999999999999, |
|||
"min_resolved_spokes": 2, |
|||
"min_silk_clearance": 0.0, |
|||
"min_text_height": 0.7999999999999999, |
|||
"min_text_thickness": 0.08, |
|||
"min_through_hole_diameter": 0.3, |
|||
"min_track_width": 0.0, |
|||
"min_via_annular_width": 0.09999999999999999, |
|||
"min_via_diameter": 0.5, |
|||
"solder_mask_clearance": 0.0, |
|||
"solder_mask_min_width": 0.0, |
|||
"solder_mask_to_copper_clearance": 0.0, |
|||
"use_height_for_length_calcs": true |
|||
}, |
|||
"teardrop_options": [ |
|||
{ |
|||
"td_onpadsmd": true, |
|||
"td_onroundshapesonly": false, |
|||
"td_ontrackend": false, |
|||
"td_onviapad": true |
|||
} |
|||
], |
|||
"teardrop_parameters": [ |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_round_shape", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
}, |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_rect_shape", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
}, |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_track_end", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
} |
|||
], |
|||
"track_widths": [], |
|||
"tuning_pattern_settings": { |
|||
"diff_pair_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 1.0 |
|||
}, |
|||
"diff_pair_skew_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 0.6 |
|||
}, |
|||
"single_track_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 0.6 |
|||
} |
|||
}, |
|||
"via_dimensions": [], |
|||
"zones_allow_external_fillets": false |
|||
}, |
|||
"ipc2581": { |
|||
"dist": "", |
|||
"distpn": "", |
|||
"internal_id": "", |
|||
"mfg": "", |
|||
"mpn": "" |
|||
}, |
|||
"layer_presets": [], |
|||
"viewports": [] |
|||
}, |
|||
"boards": [], |
|||
"cvpcb": { |
|||
"equivalence_files": [] |
|||
}, |
|||
"erc": { |
|||
"erc_exclusions": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"pin_map": [ |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
1, |
|||
2, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
0, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
2, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
] |
|||
], |
|||
"rule_severities": { |
|||
"bus_definition_conflict": "error", |
|||
"bus_entry_needed": "error", |
|||
"bus_to_bus_conflict": "error", |
|||
"bus_to_net_conflict": "error", |
|||
"conflicting_netclasses": "error", |
|||
"connections_identical": "warning", |
|||
"different_unit_footprint": "error", |
|||
"different_unit_net": "error", |
|||
"different_unit_value": "error", |
|||
"duplicate_reference": "error", |
|||
"duplicate_sheet_names": "error", |
|||
"endpoint_off_grid": "warning", |
|||
"extra_units": "error", |
|||
"four_way_junction": "warning", |
|||
"global_label_dangling": "warning", |
|||
"ground_pin_not_ground": "error", |
|||
"hier_label_mismatch": "error", |
|||
"label_dangling": "error", |
|||
"label_multiple_wires": "error", |
|||
"label_single_pin": "warning", |
|||
"lib_symbol_issues": "warning", |
|||
"lib_symbol_mismatch": "warning", |
|||
"missing_bidi_pin": "warning", |
|||
"missing_input_pin": "warning", |
|||
"missing_power_pin": "error", |
|||
"missing_unit": "warning", |
|||
"multiple_net_names": "warning", |
|||
"net_not_bus_member": "warning", |
|||
"no_connect_connected": "warning", |
|||
"no_connect_dangling": "warning", |
|||
"pin_not_connected": "error", |
|||
"pin_not_driven": "error", |
|||
"power_pin_not_driven": "error", |
|||
"same_local_global_label": "warning", |
|||
"similar_labels": "warning", |
|||
"simulation_model_issue": "ignore", |
|||
"single_global_label": "warning", |
|||
"unannotated": "error", |
|||
"undefined_netclass": "warning", |
|||
"unresolved_variable": "error", |
|||
"wire_dangling": "error" |
|||
} |
|||
}, |
|||
"libraries": { |
|||
"pinned_footprint_libs": [], |
|||
"pinned_symbol_libs": [] |
|||
}, |
|||
"meta": { |
|||
"filename": "ground_pin_test.kicad_pro", |
|||
"version": 1 |
|||
}, |
|||
"net_settings": { |
|||
"classes": [ |
|||
{ |
|||
"bus_width": 12, |
|||
"clearance": 0.2, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.3, |
|||
"microvia_drill": 0.1, |
|||
"name": "Default", |
|||
"pcb_color": "rgba(0, 0, 0, 0.000)", |
|||
"schematic_color": "rgba(0, 0, 0, 0.000)", |
|||
"track_width": 0.2, |
|||
"via_diameter": 0.6, |
|||
"via_drill": 0.3, |
|||
"wire_width": 6 |
|||
} |
|||
], |
|||
"meta": { |
|||
"version": 3 |
|||
}, |
|||
"net_colors": null, |
|||
"netclass_assignments": null, |
|||
"netclass_patterns": [] |
|||
}, |
|||
"pcbnew": { |
|||
"last_paths": { |
|||
"gencad": "", |
|||
"idf": "", |
|||
"netlist": "", |
|||
"plot": "", |
|||
"pos_files": "", |
|||
"specctra_dsn": "", |
|||
"step": "", |
|||
"svg": "", |
|||
"vrml": "" |
|||
}, |
|||
"page_layout_descr_file": "" |
|||
}, |
|||
"schematic": { |
|||
"annotate_start_num": 0, |
|||
"bom_fmt_presets": [], |
|||
"bom_fmt_settings": { |
|||
"field_delimiter": ",", |
|||
"keep_line_breaks": false, |
|||
"keep_tabs": false, |
|||
"name": "CSV", |
|||
"ref_delimiter": ",", |
|||
"ref_range_delimiter": "", |
|||
"string_delimiter": "\"" |
|||
}, |
|||
"bom_presets": [], |
|||
"bom_settings": { |
|||
"exclude_dnp": false, |
|||
"fields_ordered": [ |
|||
{ |
|||
"group_by": false, |
|||
"label": "Reference", |
|||
"name": "Reference", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": true, |
|||
"label": "Value", |
|||
"name": "Value", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Datasheet", |
|||
"name": "Datasheet", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Footprint", |
|||
"name": "Footprint", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Qty", |
|||
"name": "${QUANTITY}", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": true, |
|||
"label": "DNP", |
|||
"name": "${DNP}", |
|||
"show": true |
|||
} |
|||
], |
|||
"filter_string": "", |
|||
"group_symbols": true, |
|||
"name": "Grouped By Value", |
|||
"sort_asc": true, |
|||
"sort_field": "Reference" |
|||
}, |
|||
"connection_grid_size": 50.0, |
|||
"drawing": { |
|||
"dashed_lines_dash_length_ratio": 12.0, |
|||
"dashed_lines_gap_length_ratio": 3.0, |
|||
"default_line_thickness": 6.0, |
|||
"default_text_size": 50.0, |
|||
"field_names": [], |
|||
"intersheets_ref_own_page": false, |
|||
"intersheets_ref_prefix": "", |
|||
"intersheets_ref_short": false, |
|||
"intersheets_ref_show": false, |
|||
"intersheets_ref_suffix": "", |
|||
"junction_size_choice": 3, |
|||
"label_size_ratio": 0.375, |
|||
"operating_point_overlay_i_precision": 3, |
|||
"operating_point_overlay_i_range": "~A", |
|||
"operating_point_overlay_v_precision": 3, |
|||
"operating_point_overlay_v_range": "~V", |
|||
"overbar_offset_ratio": 1.23, |
|||
"pin_symbol_size": 25.0, |
|||
"text_offset_ratio": 0.15 |
|||
}, |
|||
"legacy_lib_dir": "", |
|||
"legacy_lib_list": [], |
|||
"meta": { |
|||
"version": 1 |
|||
}, |
|||
"net_format_name": "", |
|||
"page_layout_descr_file": "", |
|||
"plot_directory": "", |
|||
"spice_current_sheet_as_root": false, |
|||
"spice_external_command": "spice \"%I\"", |
|||
"spice_model_current_sheet_as_root": true, |
|||
"spice_save_all_currents": false, |
|||
"spice_save_all_dissipations": false, |
|||
"spice_save_all_voltages": false, |
|||
"subpart_first_id": 65, |
|||
"subpart_id_separator": 0 |
|||
}, |
|||
"sheets": [ |
|||
[ |
|||
"12345678-1234-1234-1234-123456789abc", |
|||
"Root" |
|||
] |
|||
], |
|||
"text_variables": {} |
|||
} |
1074
qa/data/eeschema/ground_pin_test_error.kicad_sch
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,624 @@ |
|||
{ |
|||
"board": { |
|||
"3dviewports": [], |
|||
"design_settings": { |
|||
"defaults": { |
|||
"apply_defaults_to_fp_fields": false, |
|||
"apply_defaults_to_fp_shapes": false, |
|||
"apply_defaults_to_fp_text": false, |
|||
"board_outline_line_width": 0.09999999999999999, |
|||
"copper_line_width": 0.19999999999999998, |
|||
"copper_text_italic": false, |
|||
"copper_text_size_h": 1.5, |
|||
"copper_text_size_v": 1.5, |
|||
"copper_text_thickness": 0.3, |
|||
"copper_text_upright": false, |
|||
"courtyard_line_width": 0.049999999999999996, |
|||
"dimension_precision": 4, |
|||
"dimension_units": 3, |
|||
"dimensions": { |
|||
"arrow_length": 1270000, |
|||
"extension_offset": 500000, |
|||
"keep_text_aligned": true, |
|||
"suppress_zeroes": false, |
|||
"text_position": 0, |
|||
"units_format": 1 |
|||
}, |
|||
"fab_line_width": 0.09999999999999999, |
|||
"fab_text_italic": false, |
|||
"fab_text_size_h": 1.0, |
|||
"fab_text_size_v": 1.0, |
|||
"fab_text_thickness": 0.15, |
|||
"fab_text_upright": false, |
|||
"other_line_width": 0.15, |
|||
"other_text_italic": false, |
|||
"other_text_size_h": 1.0, |
|||
"other_text_size_v": 1.0, |
|||
"other_text_thickness": 0.15, |
|||
"other_text_upright": false, |
|||
"pads": { |
|||
"drill": 0.762, |
|||
"height": 1.524, |
|||
"width": 1.524 |
|||
}, |
|||
"silk_line_width": 0.15, |
|||
"silk_text_italic": false, |
|||
"silk_text_size_h": 1.0, |
|||
"silk_text_size_v": 1.0, |
|||
"silk_text_thickness": 0.15, |
|||
"silk_text_upright": false, |
|||
"zones": { |
|||
"min_clearance": 0.5 |
|||
} |
|||
}, |
|||
"diff_pair_dimensions": [], |
|||
"drc_exclusions": [], |
|||
"meta": { |
|||
"version": 2 |
|||
}, |
|||
"rule_severities": { |
|||
"annular_width": "error", |
|||
"clearance": "error", |
|||
"connection_width": "warning", |
|||
"copper_edge_clearance": "error", |
|||
"copper_sliver": "warning", |
|||
"courtyards_overlap": "error", |
|||
"diff_pair_gap_out_of_range": "error", |
|||
"diff_pair_uncoupled_length_too_long": "error", |
|||
"drill_out_of_range": "error", |
|||
"duplicate_footprints": "warning", |
|||
"extra_footprint": "warning", |
|||
"footprint": "error", |
|||
"footprint_symbol_mismatch": "warning", |
|||
"footprint_type_mismatch": "ignore", |
|||
"hole_clearance": "error", |
|||
"hole_near_hole": "error", |
|||
"holes_co_located": "warning", |
|||
"invalid_outline": "error", |
|||
"isolated_copper": "warning", |
|||
"item_on_disabled_layer": "error", |
|||
"items_not_allowed": "error", |
|||
"length_out_of_range": "error", |
|||
"lib_footprint_issues": "warning", |
|||
"lib_footprint_mismatch": "warning", |
|||
"malformed_courtyard": "error", |
|||
"microvia_drill_out_of_range": "error", |
|||
"missing_courtyard": "ignore", |
|||
"missing_footprint": "warning", |
|||
"net_conflict": "warning", |
|||
"npth_inside_courtyard": "ignore", |
|||
"padstack": "warning", |
|||
"pth_inside_courtyard": "ignore", |
|||
"shorting_items": "error", |
|||
"silk_edge_clearance": "warning", |
|||
"silk_over_copper": "warning", |
|||
"silk_overlap": "warning", |
|||
"skew_out_of_range": "error", |
|||
"solder_mask_bridge": "error", |
|||
"starved_thermal": "error", |
|||
"thermal_via": "error", |
|||
"through_hole_pad_without_hole": "error", |
|||
"too_many_vias": "error", |
|||
"track_dangling": "warning", |
|||
"track_width": "error", |
|||
"tracks_crossing": "error", |
|||
"unconnected_items": "error", |
|||
"unresolved_variable": "error", |
|||
"via_dangling": "warning", |
|||
"zones_intersect": "error" |
|||
}, |
|||
"rules": { |
|||
"max_error": 0.005, |
|||
"min_clearance": 0.0, |
|||
"min_connection": 0.0, |
|||
"min_copper_edge_clearance": 0.5, |
|||
"min_hole_clearance": 0.25, |
|||
"min_hole_to_hole": 0.25, |
|||
"min_microvia_diameter": 0.19999999999999998, |
|||
"min_microvia_drill": 0.09999999999999999, |
|||
"min_resolved_spokes": 2, |
|||
"min_silk_clearance": 0.0, |
|||
"min_text_height": 0.7999999999999999, |
|||
"min_text_thickness": 0.08, |
|||
"min_through_hole_diameter": 0.3, |
|||
"min_track_width": 0.0, |
|||
"min_via_annular_width": 0.09999999999999999, |
|||
"min_via_diameter": 0.5, |
|||
"solder_mask_clearance": 0.0, |
|||
"solder_mask_min_width": 0.0, |
|||
"solder_mask_to_copper_clearance": 0.0, |
|||
"use_height_for_length_calcs": true |
|||
}, |
|||
"teardrop_options": [ |
|||
{ |
|||
"td_onpadsmd": true, |
|||
"td_onroundshapesonly": false, |
|||
"td_ontrackend": false, |
|||
"td_onviapad": true |
|||
} |
|||
], |
|||
"teardrop_parameters": [ |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_round_shape", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
}, |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_rect_shape", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
}, |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_track_end", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
} |
|||
], |
|||
"track_widths": [], |
|||
"tuning_pattern_settings": { |
|||
"diff_pair_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 1.0 |
|||
}, |
|||
"diff_pair_skew_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 0.6 |
|||
}, |
|||
"single_track_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 0.6 |
|||
} |
|||
}, |
|||
"via_dimensions": [], |
|||
"zones_allow_external_fillets": false |
|||
}, |
|||
"ipc2581": { |
|||
"dist": "", |
|||
"distpn": "", |
|||
"internal_id": "", |
|||
"mfg": "", |
|||
"mpn": "" |
|||
}, |
|||
"layer_pairs": [], |
|||
"layer_presets": [], |
|||
"viewports": [] |
|||
}, |
|||
"boards": [], |
|||
"component_class_settings": { |
|||
"assignments": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"sheet_component_classes": { |
|||
"enabled": false |
|||
} |
|||
}, |
|||
"cvpcb": { |
|||
"equivalence_files": [] |
|||
}, |
|||
"erc": { |
|||
"erc_exclusions": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"pin_map": [ |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
1, |
|||
2, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
0, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
2, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
] |
|||
], |
|||
"rule_severities": { |
|||
"bus_definition_conflict": "error", |
|||
"bus_entry_needed": "error", |
|||
"bus_to_bus_conflict": "error", |
|||
"bus_to_net_conflict": "error", |
|||
"conflicting_netclasses": "error", |
|||
"connections_identical": "warning", |
|||
"different_unit_footprint": "error", |
|||
"different_unit_net": "error", |
|||
"different_unit_value": "error", |
|||
"duplicate_reference": "error", |
|||
"duplicate_sheet_names": "error", |
|||
"endpoint_off_grid": "warning", |
|||
"extra_units": "error", |
|||
"footprint_filter": "ignore", |
|||
"footprint_link_issues": "warning", |
|||
"four_way_junction": "warning", |
|||
"global_label_dangling": "warning", |
|||
"ground_pin_not_ground": "error", |
|||
"hier_label_mismatch": "error", |
|||
"isolated_pin_label": "warning", |
|||
"label_dangling": "error", |
|||
"label_multiple_wires": "error", |
|||
"label_single_pin": "warning", |
|||
"lib_symbol_issues": "warning", |
|||
"lib_symbol_mismatch": "warning", |
|||
"missing_bidi_pin": "warning", |
|||
"missing_input_pin": "warning", |
|||
"missing_power_pin": "error", |
|||
"missing_unit": "warning", |
|||
"multiple_net_names": "warning", |
|||
"net_not_bus_member": "warning", |
|||
"no_connect_connected": "warning", |
|||
"no_connect_dangling": "warning", |
|||
"pin_not_connected": "error", |
|||
"pin_not_driven": "error", |
|||
"pin_to_pin": "warning", |
|||
"power_pin_not_driven": "error", |
|||
"same_local_global_label": "warning", |
|||
"similar_label_and_power": "warning", |
|||
"similar_labels": "warning", |
|||
"similar_power": "warning", |
|||
"simulation_model_issue": "ignore", |
|||
"single_global_label": "warning", |
|||
"unannotated": "error", |
|||
"unconnected_wire_endpoint": "warning", |
|||
"undefined_netclass": "warning", |
|||
"unit_value_mismatch": "error", |
|||
"unresolved_variable": "error", |
|||
"wire_dangling": "error" |
|||
} |
|||
}, |
|||
"libraries": { |
|||
"pinned_footprint_libs": [], |
|||
"pinned_symbol_libs": [] |
|||
}, |
|||
"meta": { |
|||
"filename": "ground_pin_test_mixed.kicad_pro", |
|||
"version": 3 |
|||
}, |
|||
"net_settings": { |
|||
"classes": [ |
|||
{ |
|||
"bus_width": 12, |
|||
"clearance": 0.2, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.3, |
|||
"microvia_drill": 0.1, |
|||
"name": "Default", |
|||
"pcb_color": "rgba(0, 0, 0, 0.000)", |
|||
"priority": 2147483647, |
|||
"schematic_color": "rgba(0, 0, 0, 0.000)", |
|||
"track_width": 0.2, |
|||
"tuning_profile": "", |
|||
"via_diameter": 0.6, |
|||
"via_drill": 0.3, |
|||
"wire_width": 6 |
|||
} |
|||
], |
|||
"meta": { |
|||
"version": 5 |
|||
}, |
|||
"net_colors": null, |
|||
"netclass_assignments": null, |
|||
"netclass_patterns": [] |
|||
}, |
|||
"pcbnew": { |
|||
"last_paths": { |
|||
"gencad": "", |
|||
"idf": "", |
|||
"netlist": "", |
|||
"plot": "", |
|||
"pos_files": "", |
|||
"specctra_dsn": "", |
|||
"step": "", |
|||
"svg": "", |
|||
"vrml": "" |
|||
}, |
|||
"page_layout_descr_file": "" |
|||
}, |
|||
"schematic": { |
|||
"annotate_start_num": 0, |
|||
"bom_export_filename": "${PROJECTNAME}.csv", |
|||
"bom_fmt_presets": [], |
|||
"bom_fmt_settings": { |
|||
"field_delimiter": ",", |
|||
"keep_line_breaks": false, |
|||
"keep_tabs": false, |
|||
"name": "CSV", |
|||
"ref_delimiter": ",", |
|||
"ref_range_delimiter": "", |
|||
"string_delimiter": "\"" |
|||
}, |
|||
"bom_presets": [], |
|||
"bom_settings": { |
|||
"exclude_dnp": false, |
|||
"fields_ordered": [ |
|||
{ |
|||
"group_by": false, |
|||
"label": "Reference", |
|||
"name": "Reference", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": true, |
|||
"label": "Value", |
|||
"name": "Value", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Datasheet", |
|||
"name": "Datasheet", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Footprint", |
|||
"name": "Footprint", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Qty", |
|||
"name": "${QUANTITY}", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": true, |
|||
"label": "DNP", |
|||
"name": "${DNP}", |
|||
"show": true |
|||
} |
|||
], |
|||
"filter_string": "", |
|||
"group_symbols": true, |
|||
"include_excluded_from_bom": false, |
|||
"name": "Grouped By Value", |
|||
"sort_asc": true, |
|||
"sort_field": "Reference" |
|||
}, |
|||
"connection_grid_size": 50.0, |
|||
"drawing": { |
|||
"dashed_lines_dash_length_ratio": 12.0, |
|||
"dashed_lines_gap_length_ratio": 3.0, |
|||
"default_line_thickness": 6.0, |
|||
"default_text_size": 50.0, |
|||
"field_names": [], |
|||
"hop_over_size_choice": 0, |
|||
"intersheets_ref_own_page": false, |
|||
"intersheets_ref_prefix": "", |
|||
"intersheets_ref_short": false, |
|||
"intersheets_ref_show": false, |
|||
"intersheets_ref_suffix": "", |
|||
"junction_size_choice": 3, |
|||
"label_size_ratio": 0.375, |
|||
"operating_point_overlay_i_precision": 3, |
|||
"operating_point_overlay_i_range": "~A", |
|||
"operating_point_overlay_v_precision": 3, |
|||
"operating_point_overlay_v_range": "~V", |
|||
"overbar_offset_ratio": 1.23, |
|||
"pin_symbol_size": 25.0, |
|||
"text_offset_ratio": 0.15 |
|||
}, |
|||
"legacy_lib_dir": "", |
|||
"legacy_lib_list": [], |
|||
"meta": { |
|||
"version": 1 |
|||
}, |
|||
"net_format_name": "", |
|||
"page_layout_descr_file": "", |
|||
"plot_directory": "", |
|||
"reuse_designators": true, |
|||
"space_save_all_events": true, |
|||
"spice_current_sheet_as_root": false, |
|||
"spice_external_command": "spice \"%I\"", |
|||
"spice_model_current_sheet_as_root": true, |
|||
"spice_save_all_currents": false, |
|||
"spice_save_all_dissipations": false, |
|||
"spice_save_all_voltages": false, |
|||
"subpart_first_id": 65, |
|||
"subpart_id_separator": 0, |
|||
"used_designators": "" |
|||
}, |
|||
"sheets": [ |
|||
[ |
|||
"5e4b0281-93a3-49ab-a5a7-472966b09c07", |
|||
"Root" |
|||
] |
|||
], |
|||
"text_variables": {}, |
|||
"time_domain_parameters": { |
|||
"delay_profiles_user_defined": [], |
|||
"meta": { |
|||
"version": 0 |
|||
} |
|||
} |
|||
} |
1106
qa/data/eeschema/ground_pin_test_mixed.kicad_sch
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,624 @@ |
|||
{ |
|||
"board": { |
|||
"3dviewports": [], |
|||
"design_settings": { |
|||
"defaults": { |
|||
"apply_defaults_to_fp_fields": false, |
|||
"apply_defaults_to_fp_shapes": false, |
|||
"apply_defaults_to_fp_text": false, |
|||
"board_outline_line_width": 0.09999999999999999, |
|||
"copper_line_width": 0.19999999999999998, |
|||
"copper_text_italic": false, |
|||
"copper_text_size_h": 1.5, |
|||
"copper_text_size_v": 1.5, |
|||
"copper_text_thickness": 0.3, |
|||
"copper_text_upright": false, |
|||
"courtyard_line_width": 0.049999999999999996, |
|||
"dimension_precision": 4, |
|||
"dimension_units": 3, |
|||
"dimensions": { |
|||
"arrow_length": 1270000, |
|||
"extension_offset": 500000, |
|||
"keep_text_aligned": true, |
|||
"suppress_zeroes": false, |
|||
"text_position": 0, |
|||
"units_format": 1 |
|||
}, |
|||
"fab_line_width": 0.09999999999999999, |
|||
"fab_text_italic": false, |
|||
"fab_text_size_h": 1.0, |
|||
"fab_text_size_v": 1.0, |
|||
"fab_text_thickness": 0.15, |
|||
"fab_text_upright": false, |
|||
"other_line_width": 0.15, |
|||
"other_text_italic": false, |
|||
"other_text_size_h": 1.0, |
|||
"other_text_size_v": 1.0, |
|||
"other_text_thickness": 0.15, |
|||
"other_text_upright": false, |
|||
"pads": { |
|||
"drill": 0.762, |
|||
"height": 1.524, |
|||
"width": 1.524 |
|||
}, |
|||
"silk_line_width": 0.15, |
|||
"silk_text_italic": false, |
|||
"silk_text_size_h": 1.0, |
|||
"silk_text_size_v": 1.0, |
|||
"silk_text_thickness": 0.15, |
|||
"silk_text_upright": false, |
|||
"zones": { |
|||
"min_clearance": 0.5 |
|||
} |
|||
}, |
|||
"diff_pair_dimensions": [], |
|||
"drc_exclusions": [], |
|||
"meta": { |
|||
"version": 2 |
|||
}, |
|||
"rule_severities": { |
|||
"annular_width": "error", |
|||
"clearance": "error", |
|||
"connection_width": "warning", |
|||
"copper_edge_clearance": "error", |
|||
"copper_sliver": "warning", |
|||
"courtyards_overlap": "error", |
|||
"diff_pair_gap_out_of_range": "error", |
|||
"diff_pair_uncoupled_length_too_long": "error", |
|||
"drill_out_of_range": "error", |
|||
"duplicate_footprints": "warning", |
|||
"extra_footprint": "warning", |
|||
"footprint": "error", |
|||
"footprint_symbol_mismatch": "warning", |
|||
"footprint_type_mismatch": "ignore", |
|||
"hole_clearance": "error", |
|||
"hole_near_hole": "error", |
|||
"holes_co_located": "warning", |
|||
"invalid_outline": "error", |
|||
"isolated_copper": "warning", |
|||
"item_on_disabled_layer": "error", |
|||
"items_not_allowed": "error", |
|||
"length_out_of_range": "error", |
|||
"lib_footprint_issues": "warning", |
|||
"lib_footprint_mismatch": "warning", |
|||
"malformed_courtyard": "error", |
|||
"microvia_drill_out_of_range": "error", |
|||
"missing_courtyard": "ignore", |
|||
"missing_footprint": "warning", |
|||
"net_conflict": "warning", |
|||
"npth_inside_courtyard": "ignore", |
|||
"padstack": "warning", |
|||
"pth_inside_courtyard": "ignore", |
|||
"shorting_items": "error", |
|||
"silk_edge_clearance": "warning", |
|||
"silk_over_copper": "warning", |
|||
"silk_overlap": "warning", |
|||
"skew_out_of_range": "error", |
|||
"solder_mask_bridge": "error", |
|||
"starved_thermal": "error", |
|||
"thermal_via": "error", |
|||
"through_hole_pad_without_hole": "error", |
|||
"too_many_vias": "error", |
|||
"track_dangling": "warning", |
|||
"track_width": "error", |
|||
"tracks_crossing": "error", |
|||
"unconnected_items": "error", |
|||
"unresolved_variable": "error", |
|||
"via_dangling": "warning", |
|||
"zones_intersect": "error" |
|||
}, |
|||
"rules": { |
|||
"max_error": 0.005, |
|||
"min_clearance": 0.0, |
|||
"min_connection": 0.0, |
|||
"min_copper_edge_clearance": 0.5, |
|||
"min_hole_clearance": 0.25, |
|||
"min_hole_to_hole": 0.25, |
|||
"min_microvia_diameter": 0.19999999999999998, |
|||
"min_microvia_drill": 0.09999999999999999, |
|||
"min_resolved_spokes": 2, |
|||
"min_silk_clearance": 0.0, |
|||
"min_text_height": 0.7999999999999999, |
|||
"min_text_thickness": 0.08, |
|||
"min_through_hole_diameter": 0.3, |
|||
"min_track_width": 0.0, |
|||
"min_via_annular_width": 0.09999999999999999, |
|||
"min_via_diameter": 0.5, |
|||
"solder_mask_clearance": 0.0, |
|||
"solder_mask_min_width": 0.0, |
|||
"solder_mask_to_copper_clearance": 0.0, |
|||
"use_height_for_length_calcs": true |
|||
}, |
|||
"teardrop_options": [ |
|||
{ |
|||
"td_onpadsmd": true, |
|||
"td_onroundshapesonly": false, |
|||
"td_ontrackend": false, |
|||
"td_onviapad": true |
|||
} |
|||
], |
|||
"teardrop_parameters": [ |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_round_shape", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
}, |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_rect_shape", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
}, |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_track_end", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
} |
|||
], |
|||
"track_widths": [], |
|||
"tuning_pattern_settings": { |
|||
"diff_pair_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 1.0 |
|||
}, |
|||
"diff_pair_skew_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 0.6 |
|||
}, |
|||
"single_track_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 0.6 |
|||
} |
|||
}, |
|||
"via_dimensions": [], |
|||
"zones_allow_external_fillets": false |
|||
}, |
|||
"ipc2581": { |
|||
"dist": "", |
|||
"distpn": "", |
|||
"internal_id": "", |
|||
"mfg": "", |
|||
"mpn": "" |
|||
}, |
|||
"layer_pairs": [], |
|||
"layer_presets": [], |
|||
"viewports": [] |
|||
}, |
|||
"boards": [], |
|||
"component_class_settings": { |
|||
"assignments": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"sheet_component_classes": { |
|||
"enabled": false |
|||
} |
|||
}, |
|||
"cvpcb": { |
|||
"equivalence_files": [] |
|||
}, |
|||
"erc": { |
|||
"erc_exclusions": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"pin_map": [ |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
1, |
|||
2, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
0, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
2, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
] |
|||
], |
|||
"rule_severities": { |
|||
"bus_definition_conflict": "error", |
|||
"bus_entry_needed": "error", |
|||
"bus_to_bus_conflict": "error", |
|||
"bus_to_net_conflict": "error", |
|||
"conflicting_netclasses": "error", |
|||
"connections_identical": "warning", |
|||
"different_unit_footprint": "error", |
|||
"different_unit_net": "error", |
|||
"different_unit_value": "error", |
|||
"duplicate_reference": "error", |
|||
"duplicate_sheet_names": "error", |
|||
"endpoint_off_grid": "warning", |
|||
"extra_units": "error", |
|||
"footprint_filter": "ignore", |
|||
"footprint_link_issues": "warning", |
|||
"four_way_junction": "warning", |
|||
"global_label_dangling": "warning", |
|||
"ground_pin_not_ground": "error", |
|||
"hier_label_mismatch": "error", |
|||
"isolated_pin_label": "warning", |
|||
"label_dangling": "error", |
|||
"label_multiple_wires": "error", |
|||
"label_single_pin": "warning", |
|||
"lib_symbol_issues": "warning", |
|||
"lib_symbol_mismatch": "warning", |
|||
"missing_bidi_pin": "warning", |
|||
"missing_input_pin": "warning", |
|||
"missing_power_pin": "error", |
|||
"missing_unit": "warning", |
|||
"multiple_net_names": "warning", |
|||
"net_not_bus_member": "warning", |
|||
"no_connect_connected": "warning", |
|||
"no_connect_dangling": "warning", |
|||
"pin_not_connected": "error", |
|||
"pin_not_driven": "error", |
|||
"pin_to_pin": "warning", |
|||
"power_pin_not_driven": "error", |
|||
"same_local_global_label": "warning", |
|||
"similar_label_and_power": "warning", |
|||
"similar_labels": "warning", |
|||
"similar_power": "warning", |
|||
"simulation_model_issue": "ignore", |
|||
"single_global_label": "warning", |
|||
"unannotated": "error", |
|||
"unconnected_wire_endpoint": "warning", |
|||
"undefined_netclass": "warning", |
|||
"unit_value_mismatch": "error", |
|||
"unresolved_variable": "error", |
|||
"wire_dangling": "error" |
|||
} |
|||
}, |
|||
"libraries": { |
|||
"pinned_footprint_libs": [], |
|||
"pinned_symbol_libs": [] |
|||
}, |
|||
"meta": { |
|||
"filename": "ground_pin_test_no_ground_net.kicad_pro", |
|||
"version": 3 |
|||
}, |
|||
"net_settings": { |
|||
"classes": [ |
|||
{ |
|||
"bus_width": 12, |
|||
"clearance": 0.2, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.3, |
|||
"microvia_drill": 0.1, |
|||
"name": "Default", |
|||
"pcb_color": "rgba(0, 0, 0, 0.000)", |
|||
"priority": 2147483647, |
|||
"schematic_color": "rgba(0, 0, 0, 0.000)", |
|||
"track_width": 0.2, |
|||
"tuning_profile": "", |
|||
"via_diameter": 0.6, |
|||
"via_drill": 0.3, |
|||
"wire_width": 6 |
|||
} |
|||
], |
|||
"meta": { |
|||
"version": 5 |
|||
}, |
|||
"net_colors": null, |
|||
"netclass_assignments": null, |
|||
"netclass_patterns": [] |
|||
}, |
|||
"pcbnew": { |
|||
"last_paths": { |
|||
"gencad": "", |
|||
"idf": "", |
|||
"netlist": "", |
|||
"plot": "", |
|||
"pos_files": "", |
|||
"specctra_dsn": "", |
|||
"step": "", |
|||
"svg": "", |
|||
"vrml": "" |
|||
}, |
|||
"page_layout_descr_file": "" |
|||
}, |
|||
"schematic": { |
|||
"annotate_start_num": 0, |
|||
"bom_export_filename": "${PROJECTNAME}.csv", |
|||
"bom_fmt_presets": [], |
|||
"bom_fmt_settings": { |
|||
"field_delimiter": ",", |
|||
"keep_line_breaks": false, |
|||
"keep_tabs": false, |
|||
"name": "CSV", |
|||
"ref_delimiter": ",", |
|||
"ref_range_delimiter": "", |
|||
"string_delimiter": "\"" |
|||
}, |
|||
"bom_presets": [], |
|||
"bom_settings": { |
|||
"exclude_dnp": false, |
|||
"fields_ordered": [ |
|||
{ |
|||
"group_by": false, |
|||
"label": "Reference", |
|||
"name": "Reference", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": true, |
|||
"label": "Value", |
|||
"name": "Value", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Datasheet", |
|||
"name": "Datasheet", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Footprint", |
|||
"name": "Footprint", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Qty", |
|||
"name": "${QUANTITY}", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": true, |
|||
"label": "DNP", |
|||
"name": "${DNP}", |
|||
"show": true |
|||
} |
|||
], |
|||
"filter_string": "", |
|||
"group_symbols": true, |
|||
"include_excluded_from_bom": false, |
|||
"name": "Grouped By Value", |
|||
"sort_asc": true, |
|||
"sort_field": "Reference" |
|||
}, |
|||
"connection_grid_size": 50.0, |
|||
"drawing": { |
|||
"dashed_lines_dash_length_ratio": 12.0, |
|||
"dashed_lines_gap_length_ratio": 3.0, |
|||
"default_line_thickness": 6.0, |
|||
"default_text_size": 50.0, |
|||
"field_names": [], |
|||
"hop_over_size_choice": 0, |
|||
"intersheets_ref_own_page": false, |
|||
"intersheets_ref_prefix": "", |
|||
"intersheets_ref_short": false, |
|||
"intersheets_ref_show": false, |
|||
"intersheets_ref_suffix": "", |
|||
"junction_size_choice": 3, |
|||
"label_size_ratio": 0.375, |
|||
"operating_point_overlay_i_precision": 3, |
|||
"operating_point_overlay_i_range": "~A", |
|||
"operating_point_overlay_v_precision": 3, |
|||
"operating_point_overlay_v_range": "~V", |
|||
"overbar_offset_ratio": 1.23, |
|||
"pin_symbol_size": 25.0, |
|||
"text_offset_ratio": 0.15 |
|||
}, |
|||
"legacy_lib_dir": "", |
|||
"legacy_lib_list": [], |
|||
"meta": { |
|||
"version": 1 |
|||
}, |
|||
"net_format_name": "", |
|||
"page_layout_descr_file": "", |
|||
"plot_directory": "", |
|||
"reuse_designators": true, |
|||
"space_save_all_events": true, |
|||
"spice_current_sheet_as_root": false, |
|||
"spice_external_command": "spice \"%I\"", |
|||
"spice_model_current_sheet_as_root": true, |
|||
"spice_save_all_currents": false, |
|||
"spice_save_all_dissipations": false, |
|||
"spice_save_all_voltages": false, |
|||
"subpart_first_id": 65, |
|||
"subpart_id_separator": 0, |
|||
"used_designators": "" |
|||
}, |
|||
"sheets": [ |
|||
[ |
|||
"4c9d4de9-9305-4dd7-bd4d-a30bf65598a4", |
|||
"Root" |
|||
] |
|||
], |
|||
"text_variables": {}, |
|||
"time_domain_parameters": { |
|||
"delay_profiles_user_defined": [], |
|||
"meta": { |
|||
"version": 0 |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,492 @@ |
|||
(kicad_sch |
|||
(version 20250610) |
|||
(generator "eeschema") |
|||
(generator_version "9.99") |
|||
(uuid "4c9d4de9-9305-4dd7-bd4d-a30bf65598a4") |
|||
(paper "A4") |
|||
(lib_symbols |
|||
(symbol "Test:Test_Symbol_GND" |
|||
(pin_numbers |
|||
(hide yes) |
|||
) |
|||
(pin_names |
|||
(offset 0.254) |
|||
) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(duplicate_pin_numbers_are_jumpers no) |
|||
(property "Reference" "U?" |
|||
(at 0 -2.54 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "Test_Symbol_GND" |
|||
(at 0 2.54 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 0 0 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "" |
|||
(at 0 0 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(symbol "Test_Symbol_GND_0_1" |
|||
(rectangle |
|||
(start -7.62 5.08) |
|||
(end 7.62 -5.08) |
|||
(stroke |
|||
(width 0.254) |
|||
(type default) |
|||
) |
|||
(fill |
|||
(type background) |
|||
) |
|||
) |
|||
) |
|||
(symbol "Test_Symbol_GND_1_1" |
|||
(pin power_in line |
|||
(at -10.16 0 0) |
|||
(length 2.54) |
|||
(name "VCC" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(number "1" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(pin power_in line |
|||
(at 10.16 0 180) |
|||
(length 2.54) |
|||
(name "GND" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(number "2" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(embedded_fonts no) |
|||
) |
|||
(symbol "power:PWR_FLAG" |
|||
(power global) |
|||
(pin_numbers |
|||
(hide yes) |
|||
) |
|||
(pin_names |
|||
(offset 0) |
|||
(hide yes) |
|||
) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(duplicate_pin_numbers_are_jumpers no) |
|||
(property "Reference" "#FLG" |
|||
(at 0 1.905 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "PWR_FLAG" |
|||
(at 0 3.81 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "Special symbol for telling ERC where power comes from" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "ki_keywords" "flag power" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(symbol "PWR_FLAG_0_0" |
|||
(pin power_out line |
|||
(at 0 0 90) |
|||
(length 0) |
|||
(name "" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(number "1" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(symbol "PWR_FLAG_0_1" |
|||
(polyline |
|||
(pts |
|||
(xy 0 0) (xy 0 1.27) (xy -1.016 1.905) (xy 0 2.54) (xy 1.016 1.905) (xy 0 1.27) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(fill |
|||
(type none) |
|||
) |
|||
) |
|||
) |
|||
(embedded_fonts no) |
|||
) |
|||
) |
|||
(junction |
|||
(at 135.89 76.2) |
|||
(diameter 0) |
|||
(color 0 0 0 0) |
|||
(uuid "317e9c16-5487-462e-9d29-ce03c0af82c3") |
|||
) |
|||
(junction |
|||
(at 109.22 76.2) |
|||
(diameter 0) |
|||
(color 0 0 0 0) |
|||
(uuid "ab597d77-1841-44df-8056-99b3968ee147") |
|||
) |
|||
(wire |
|||
(pts |
|||
(xy 135.89 76.2) (xy 142.24 76.2) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(uuid "15f17d30-4479-4bf7-8421-4e4946bdb344") |
|||
) |
|||
(wire |
|||
(pts |
|||
(xy 106.68 76.2) (xy 109.22 76.2) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(uuid "270c84f3-5d4b-43c1-bf80-4b34dbbd97db") |
|||
) |
|||
(wire |
|||
(pts |
|||
(xy 132.08 76.2) (xy 135.89 76.2) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(uuid "6058b4ad-bbdb-4488-95a3-60da75cd23d2") |
|||
) |
|||
(wire |
|||
(pts |
|||
(xy 109.22 76.2) (xy 111.76 76.2) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(uuid "eeb5c417-6225-43ce-9f59-2298b9d08360") |
|||
) |
|||
(label "OTHER" |
|||
(at 142.24 76.2 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
(justify bottom) |
|||
) |
|||
(uuid "81c85b05-2af4-4606-a034-eb51405bed4e") |
|||
) |
|||
(label "VCC" |
|||
(at 106.68 76.2 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
(justify bottom) |
|||
) |
|||
(uuid "e8853bb6-f615-4762-a391-f40fca50a353") |
|||
) |
|||
(symbol |
|||
(lib_id "Test:Test_Symbol_GND") |
|||
(at 121.92 76.2 0) |
|||
(unit 1) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(dnp no) |
|||
(fields_autoplaced yes) |
|||
(uuid "8b3aa65b-4af6-4885-a4ae-c694578b7d31") |
|||
(property "Reference" "U1" |
|||
(at 121.92 66.04 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "Test_Symbol_GND" |
|||
(at 121.92 68.58 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 121.92 76.2 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 121.92 76.2 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "" |
|||
(at 121.92 76.2 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(pin "1" |
|||
(uuid "e709cf6a-88c7-4afe-b393-0ebb1fa90acb") |
|||
) |
|||
(pin "2" |
|||
(uuid "a4b3c6fe-4504-48b4-8607-8244e1068382") |
|||
) |
|||
(instances |
|||
(project "ground_pin_test_no_ground_net" |
|||
(path "/4c9d4de9-9305-4dd7-bd4d-a30bf65598a4" |
|||
(reference "U1") |
|||
(unit 1) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(symbol |
|||
(lib_id "power:PWR_FLAG") |
|||
(at 109.22 76.2 0) |
|||
(unit 1) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(dnp no) |
|||
(fields_autoplaced yes) |
|||
(uuid "f7c06075-a4a8-4cb0-9070-fdd6a50e6500") |
|||
(property "Reference" "#FLG01" |
|||
(at 109.22 74.295 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "PWR_FLAG" |
|||
(at 109.22 71.12 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 109.22 76.2 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 109.22 76.2 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "Special symbol for telling ERC where power comes from" |
|||
(at 109.22 76.2 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(pin "1" |
|||
(uuid "c724064c-74e8-4f54-b9c6-8be1572f57ed") |
|||
) |
|||
(instances |
|||
(project "" |
|||
(path "/4c9d4de9-9305-4dd7-bd4d-a30bf65598a4" |
|||
(reference "#FLG01") |
|||
(unit 1) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(symbol |
|||
(lib_id "power:PWR_FLAG") |
|||
(at 135.89 76.2 0) |
|||
(unit 1) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(dnp no) |
|||
(fields_autoplaced yes) |
|||
(uuid "ff19308d-cc06-44d6-9f6c-727d7a42667f") |
|||
(property "Reference" "#FLG02" |
|||
(at 135.89 74.295 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "PWR_FLAG" |
|||
(at 135.89 71.12 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 135.89 76.2 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 135.89 76.2 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "Special symbol for telling ERC where power comes from" |
|||
(at 135.89 76.2 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(pin "1" |
|||
(uuid "c724064c-74e8-4f54-b9c6-8be1572f57ed") |
|||
) |
|||
(instances |
|||
(project "" |
|||
(path "/4c9d4de9-9305-4dd7-bd4d-a30bf65598a4" |
|||
(reference "#FLG02") |
|||
(unit 1) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(sheet_instances |
|||
(path "/" |
|||
(page "1") |
|||
) |
|||
) |
|||
(embedded_fonts no) |
|||
) |
@ -0,0 +1,624 @@ |
|||
{ |
|||
"board": { |
|||
"3dviewports": [], |
|||
"design_settings": { |
|||
"defaults": { |
|||
"apply_defaults_to_fp_fields": false, |
|||
"apply_defaults_to_fp_shapes": false, |
|||
"apply_defaults_to_fp_text": false, |
|||
"board_outline_line_width": 0.09999999999999999, |
|||
"copper_line_width": 0.19999999999999998, |
|||
"copper_text_italic": false, |
|||
"copper_text_size_h": 1.5, |
|||
"copper_text_size_v": 1.5, |
|||
"copper_text_thickness": 0.3, |
|||
"copper_text_upright": false, |
|||
"courtyard_line_width": 0.049999999999999996, |
|||
"dimension_precision": 4, |
|||
"dimension_units": 3, |
|||
"dimensions": { |
|||
"arrow_length": 1270000, |
|||
"extension_offset": 500000, |
|||
"keep_text_aligned": true, |
|||
"suppress_zeroes": false, |
|||
"text_position": 0, |
|||
"units_format": 1 |
|||
}, |
|||
"fab_line_width": 0.09999999999999999, |
|||
"fab_text_italic": false, |
|||
"fab_text_size_h": 1.0, |
|||
"fab_text_size_v": 1.0, |
|||
"fab_text_thickness": 0.15, |
|||
"fab_text_upright": false, |
|||
"other_line_width": 0.15, |
|||
"other_text_italic": false, |
|||
"other_text_size_h": 1.0, |
|||
"other_text_size_v": 1.0, |
|||
"other_text_thickness": 0.15, |
|||
"other_text_upright": false, |
|||
"pads": { |
|||
"drill": 0.762, |
|||
"height": 1.524, |
|||
"width": 1.524 |
|||
}, |
|||
"silk_line_width": 0.15, |
|||
"silk_text_italic": false, |
|||
"silk_text_size_h": 1.0, |
|||
"silk_text_size_v": 1.0, |
|||
"silk_text_thickness": 0.15, |
|||
"silk_text_upright": false, |
|||
"zones": { |
|||
"min_clearance": 0.5 |
|||
} |
|||
}, |
|||
"diff_pair_dimensions": [], |
|||
"drc_exclusions": [], |
|||
"meta": { |
|||
"version": 2 |
|||
}, |
|||
"rule_severities": { |
|||
"annular_width": "error", |
|||
"clearance": "error", |
|||
"connection_width": "warning", |
|||
"copper_edge_clearance": "error", |
|||
"copper_sliver": "warning", |
|||
"courtyards_overlap": "error", |
|||
"diff_pair_gap_out_of_range": "error", |
|||
"diff_pair_uncoupled_length_too_long": "error", |
|||
"drill_out_of_range": "error", |
|||
"duplicate_footprints": "warning", |
|||
"extra_footprint": "warning", |
|||
"footprint": "error", |
|||
"footprint_symbol_mismatch": "warning", |
|||
"footprint_type_mismatch": "ignore", |
|||
"hole_clearance": "error", |
|||
"hole_near_hole": "error", |
|||
"holes_co_located": "warning", |
|||
"invalid_outline": "error", |
|||
"isolated_copper": "warning", |
|||
"item_on_disabled_layer": "error", |
|||
"items_not_allowed": "error", |
|||
"length_out_of_range": "error", |
|||
"lib_footprint_issues": "warning", |
|||
"lib_footprint_mismatch": "warning", |
|||
"malformed_courtyard": "error", |
|||
"microvia_drill_out_of_range": "error", |
|||
"missing_courtyard": "ignore", |
|||
"missing_footprint": "warning", |
|||
"net_conflict": "warning", |
|||
"npth_inside_courtyard": "ignore", |
|||
"padstack": "warning", |
|||
"pth_inside_courtyard": "ignore", |
|||
"shorting_items": "error", |
|||
"silk_edge_clearance": "warning", |
|||
"silk_over_copper": "warning", |
|||
"silk_overlap": "warning", |
|||
"skew_out_of_range": "error", |
|||
"solder_mask_bridge": "error", |
|||
"starved_thermal": "error", |
|||
"thermal_via": "error", |
|||
"through_hole_pad_without_hole": "error", |
|||
"too_many_vias": "error", |
|||
"track_dangling": "warning", |
|||
"track_width": "error", |
|||
"tracks_crossing": "error", |
|||
"unconnected_items": "error", |
|||
"unresolved_variable": "error", |
|||
"via_dangling": "warning", |
|||
"zones_intersect": "error" |
|||
}, |
|||
"rules": { |
|||
"max_error": 0.005, |
|||
"min_clearance": 0.0, |
|||
"min_connection": 0.0, |
|||
"min_copper_edge_clearance": 0.5, |
|||
"min_hole_clearance": 0.25, |
|||
"min_hole_to_hole": 0.25, |
|||
"min_microvia_diameter": 0.19999999999999998, |
|||
"min_microvia_drill": 0.09999999999999999, |
|||
"min_resolved_spokes": 2, |
|||
"min_silk_clearance": 0.0, |
|||
"min_text_height": 0.7999999999999999, |
|||
"min_text_thickness": 0.08, |
|||
"min_through_hole_diameter": 0.3, |
|||
"min_track_width": 0.0, |
|||
"min_via_annular_width": 0.09999999999999999, |
|||
"min_via_diameter": 0.5, |
|||
"solder_mask_clearance": 0.0, |
|||
"solder_mask_min_width": 0.0, |
|||
"solder_mask_to_copper_clearance": 0.0, |
|||
"use_height_for_length_calcs": true |
|||
}, |
|||
"teardrop_options": [ |
|||
{ |
|||
"td_onpadsmd": true, |
|||
"td_onroundshapesonly": false, |
|||
"td_ontrackend": false, |
|||
"td_onviapad": true |
|||
} |
|||
], |
|||
"teardrop_parameters": [ |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_round_shape", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
}, |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_rect_shape", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
}, |
|||
{ |
|||
"td_allow_use_two_tracks": true, |
|||
"td_curve_segcount": 0, |
|||
"td_height_ratio": 1.0, |
|||
"td_length_ratio": 0.5, |
|||
"td_maxheight": 2.0, |
|||
"td_maxlen": 1.0, |
|||
"td_on_pad_in_zone": false, |
|||
"td_target_name": "td_track_end", |
|||
"td_width_to_size_filter_ratio": 0.9 |
|||
} |
|||
], |
|||
"track_widths": [], |
|||
"tuning_pattern_settings": { |
|||
"diff_pair_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 1.0 |
|||
}, |
|||
"diff_pair_skew_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 0.6 |
|||
}, |
|||
"single_track_defaults": { |
|||
"corner_radius_percentage": 80, |
|||
"corner_style": 1, |
|||
"max_amplitude": 1.0, |
|||
"min_amplitude": 0.2, |
|||
"single_sided": false, |
|||
"spacing": 0.6 |
|||
} |
|||
}, |
|||
"via_dimensions": [], |
|||
"zones_allow_external_fillets": false |
|||
}, |
|||
"ipc2581": { |
|||
"dist": "", |
|||
"distpn": "", |
|||
"internal_id": "", |
|||
"mfg": "", |
|||
"mpn": "" |
|||
}, |
|||
"layer_pairs": [], |
|||
"layer_presets": [], |
|||
"viewports": [] |
|||
}, |
|||
"boards": [], |
|||
"component_class_settings": { |
|||
"assignments": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"sheet_component_classes": { |
|||
"enabled": false |
|||
} |
|||
}, |
|||
"cvpcb": { |
|||
"equivalence_files": [] |
|||
}, |
|||
"erc": { |
|||
"erc_exclusions": [], |
|||
"meta": { |
|||
"version": 0 |
|||
}, |
|||
"pin_map": [ |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
0, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
1, |
|||
2, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
0, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
1, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
2, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
0, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
0, |
|||
2, |
|||
1, |
|||
1, |
|||
0, |
|||
0, |
|||
1, |
|||
0, |
|||
2, |
|||
0, |
|||
0, |
|||
2 |
|||
], |
|||
[ |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2, |
|||
2 |
|||
] |
|||
], |
|||
"rule_severities": { |
|||
"bus_definition_conflict": "error", |
|||
"bus_entry_needed": "error", |
|||
"bus_to_bus_conflict": "error", |
|||
"bus_to_net_conflict": "error", |
|||
"conflicting_netclasses": "error", |
|||
"connections_identical": "warning", |
|||
"different_unit_footprint": "error", |
|||
"different_unit_net": "error", |
|||
"different_unit_value": "error", |
|||
"duplicate_reference": "error", |
|||
"duplicate_sheet_names": "error", |
|||
"endpoint_off_grid": "warning", |
|||
"extra_units": "error", |
|||
"footprint_filter": "ignore", |
|||
"footprint_link_issues": "warning", |
|||
"four_way_junction": "warning", |
|||
"global_label_dangling": "warning", |
|||
"ground_pin_not_ground": "error", |
|||
"hier_label_mismatch": "error", |
|||
"isolated_pin_label": "warning", |
|||
"label_dangling": "error", |
|||
"label_multiple_wires": "error", |
|||
"label_single_pin": "warning", |
|||
"lib_symbol_issues": "warning", |
|||
"lib_symbol_mismatch": "warning", |
|||
"missing_bidi_pin": "warning", |
|||
"missing_input_pin": "warning", |
|||
"missing_power_pin": "error", |
|||
"missing_unit": "warning", |
|||
"multiple_net_names": "warning", |
|||
"net_not_bus_member": "warning", |
|||
"no_connect_connected": "warning", |
|||
"no_connect_dangling": "warning", |
|||
"pin_not_connected": "error", |
|||
"pin_not_driven": "error", |
|||
"pin_to_pin": "warning", |
|||
"power_pin_not_driven": "error", |
|||
"same_local_global_label": "warning", |
|||
"similar_label_and_power": "warning", |
|||
"similar_labels": "warning", |
|||
"similar_power": "warning", |
|||
"simulation_model_issue": "ignore", |
|||
"single_global_label": "warning", |
|||
"unannotated": "error", |
|||
"unconnected_wire_endpoint": "warning", |
|||
"undefined_netclass": "warning", |
|||
"unit_value_mismatch": "error", |
|||
"unresolved_variable": "error", |
|||
"wire_dangling": "error" |
|||
} |
|||
}, |
|||
"libraries": { |
|||
"pinned_footprint_libs": [], |
|||
"pinned_symbol_libs": [] |
|||
}, |
|||
"meta": { |
|||
"filename": "ground_pin_test_ok.kicad_pro", |
|||
"version": 3 |
|||
}, |
|||
"net_settings": { |
|||
"classes": [ |
|||
{ |
|||
"bus_width": 12, |
|||
"clearance": 0.2, |
|||
"diff_pair_gap": 0.25, |
|||
"diff_pair_via_gap": 0.25, |
|||
"diff_pair_width": 0.2, |
|||
"line_style": 0, |
|||
"microvia_diameter": 0.3, |
|||
"microvia_drill": 0.1, |
|||
"name": "Default", |
|||
"pcb_color": "rgba(0, 0, 0, 0.000)", |
|||
"priority": 2147483647, |
|||
"schematic_color": "rgba(0, 0, 0, 0.000)", |
|||
"track_width": 0.2, |
|||
"tuning_profile": "", |
|||
"via_diameter": 0.6, |
|||
"via_drill": 0.3, |
|||
"wire_width": 6 |
|||
} |
|||
], |
|||
"meta": { |
|||
"version": 5 |
|||
}, |
|||
"net_colors": null, |
|||
"netclass_assignments": null, |
|||
"netclass_patterns": [] |
|||
}, |
|||
"pcbnew": { |
|||
"last_paths": { |
|||
"gencad": "", |
|||
"idf": "", |
|||
"netlist": "", |
|||
"plot": "", |
|||
"pos_files": "", |
|||
"specctra_dsn": "", |
|||
"step": "", |
|||
"svg": "", |
|||
"vrml": "" |
|||
}, |
|||
"page_layout_descr_file": "" |
|||
}, |
|||
"schematic": { |
|||
"annotate_start_num": 0, |
|||
"bom_export_filename": "${PROJECTNAME}.csv", |
|||
"bom_fmt_presets": [], |
|||
"bom_fmt_settings": { |
|||
"field_delimiter": ",", |
|||
"keep_line_breaks": false, |
|||
"keep_tabs": false, |
|||
"name": "CSV", |
|||
"ref_delimiter": ",", |
|||
"ref_range_delimiter": "", |
|||
"string_delimiter": "\"" |
|||
}, |
|||
"bom_presets": [], |
|||
"bom_settings": { |
|||
"exclude_dnp": false, |
|||
"fields_ordered": [ |
|||
{ |
|||
"group_by": false, |
|||
"label": "Reference", |
|||
"name": "Reference", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": true, |
|||
"label": "Value", |
|||
"name": "Value", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Datasheet", |
|||
"name": "Datasheet", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Footprint", |
|||
"name": "Footprint", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": false, |
|||
"label": "Qty", |
|||
"name": "${QUANTITY}", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"group_by": true, |
|||
"label": "DNP", |
|||
"name": "${DNP}", |
|||
"show": true |
|||
} |
|||
], |
|||
"filter_string": "", |
|||
"group_symbols": true, |
|||
"include_excluded_from_bom": false, |
|||
"name": "Grouped By Value", |
|||
"sort_asc": true, |
|||
"sort_field": "Reference" |
|||
}, |
|||
"connection_grid_size": 50.0, |
|||
"drawing": { |
|||
"dashed_lines_dash_length_ratio": 12.0, |
|||
"dashed_lines_gap_length_ratio": 3.0, |
|||
"default_line_thickness": 6.0, |
|||
"default_text_size": 50.0, |
|||
"field_names": [], |
|||
"hop_over_size_choice": 0, |
|||
"intersheets_ref_own_page": false, |
|||
"intersheets_ref_prefix": "", |
|||
"intersheets_ref_short": false, |
|||
"intersheets_ref_show": false, |
|||
"intersheets_ref_suffix": "", |
|||
"junction_size_choice": 3, |
|||
"label_size_ratio": 0.375, |
|||
"operating_point_overlay_i_precision": 3, |
|||
"operating_point_overlay_i_range": "~A", |
|||
"operating_point_overlay_v_precision": 3, |
|||
"operating_point_overlay_v_range": "~V", |
|||
"overbar_offset_ratio": 1.23, |
|||
"pin_symbol_size": 25.0, |
|||
"text_offset_ratio": 0.15 |
|||
}, |
|||
"legacy_lib_dir": "", |
|||
"legacy_lib_list": [], |
|||
"meta": { |
|||
"version": 1 |
|||
}, |
|||
"net_format_name": "", |
|||
"page_layout_descr_file": "", |
|||
"plot_directory": "", |
|||
"reuse_designators": true, |
|||
"space_save_all_events": true, |
|||
"spice_current_sheet_as_root": false, |
|||
"spice_external_command": "spice \"%I\"", |
|||
"spice_model_current_sheet_as_root": true, |
|||
"spice_save_all_currents": false, |
|||
"spice_save_all_dissipations": false, |
|||
"spice_save_all_voltages": false, |
|||
"subpart_first_id": 65, |
|||
"subpart_id_separator": 0, |
|||
"used_designators": "#FLG1-3,#PWR1,U1" |
|||
}, |
|||
"sheets": [ |
|||
[ |
|||
"12345678-1234-1234-1234-123456789def", |
|||
"Root" |
|||
] |
|||
], |
|||
"text_variables": {}, |
|||
"time_domain_parameters": { |
|||
"delay_profiles_user_defined": [], |
|||
"meta": { |
|||
"version": 0 |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,636 @@ |
|||
(kicad_sch |
|||
(version 20250610) |
|||
(generator "eeschema") |
|||
(generator_version "9.99") |
|||
(uuid "12345678-1234-1234-1234-123456789def") |
|||
(paper "A4") |
|||
(lib_symbols |
|||
(symbol "Test_Symbol_GND_1" |
|||
(pin_numbers |
|||
(hide yes) |
|||
) |
|||
(pin_names |
|||
(offset 0.254) |
|||
) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(duplicate_pin_numbers_are_jumpers no) |
|||
(property "Reference" "U?" |
|||
(at 0 -2.54 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "Test_Symbol_GND" |
|||
(at 0 2.54 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 0 0 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "" |
|||
(at 0 0 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(symbol "Test_Symbol_GND_1_0_1" |
|||
(rectangle |
|||
(start -7.62 5.08) |
|||
(end 7.62 -5.08) |
|||
(stroke |
|||
(width 0.254) |
|||
(type default) |
|||
) |
|||
(fill |
|||
(type background) |
|||
) |
|||
) |
|||
) |
|||
(symbol "Test_Symbol_GND_1_1_1" |
|||
(pin power_in line |
|||
(at -10.16 0 0) |
|||
(length 2.54) |
|||
(name "VCC" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(number "1" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(pin power_in line |
|||
(at 10.16 0 180) |
|||
(length 2.54) |
|||
(name "GND" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(number "2" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(embedded_fonts no) |
|||
) |
|||
(symbol "power:GND" |
|||
(power global) |
|||
(pin_names |
|||
(offset 0) |
|||
) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(duplicate_pin_numbers_are_jumpers no) |
|||
(property "Reference" "#PWR" |
|||
(at 0 -6.35 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "GND" |
|||
(at 0 -3.81 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(symbol "GND_0_1" |
|||
(polyline |
|||
(pts |
|||
(xy 0 0) (xy 0 -1.27) (xy 1.27 -1.27) (xy 0 -2.54) (xy -1.27 -1.27) (xy 0 -1.27) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(fill |
|||
(type none) |
|||
) |
|||
) |
|||
) |
|||
(symbol "GND_1_1" |
|||
(pin power_in line |
|||
(at 0 0 270) |
|||
(length 0) |
|||
(hide yes) |
|||
(name "" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(number "1" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(embedded_fonts no) |
|||
) |
|||
(symbol "power:PWR_FLAG" |
|||
(power global) |
|||
(pin_numbers |
|||
(hide yes) |
|||
) |
|||
(pin_names |
|||
(offset 0) |
|||
(hide yes) |
|||
) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(duplicate_pin_numbers_are_jumpers no) |
|||
(property "Reference" "#FLG" |
|||
(at 0 1.905 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "PWR_FLAG" |
|||
(at 0 3.81 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "Special symbol for telling ERC where power comes from" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "ki_keywords" "flag power" |
|||
(at 0 0 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(symbol "PWR_FLAG_0_0" |
|||
(pin power_out line |
|||
(at 0 0 90) |
|||
(length 0) |
|||
(name "" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(number "1" |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(symbol "PWR_FLAG_0_1" |
|||
(polyline |
|||
(pts |
|||
(xy 0 0) (xy 0 1.27) (xy -1.016 1.905) (xy 0 2.54) (xy 1.016 1.905) (xy 0 1.27) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(fill |
|||
(type none) |
|||
) |
|||
) |
|||
) |
|||
(embedded_fonts no) |
|||
) |
|||
) |
|||
(junction |
|||
(at 102.87 87.63) |
|||
(diameter 0) |
|||
(color 0 0 0 0) |
|||
(uuid "4608dddc-fc71-4dc4-927f-b2670da83393") |
|||
) |
|||
(junction |
|||
(at 135.89 87.63) |
|||
(diameter 0) |
|||
(color 0 0 0 0) |
|||
(uuid "53617e72-eabc-4faa-b2cb-7de1e5f2b88e") |
|||
) |
|||
(wire |
|||
(pts |
|||
(xy 128.27 87.63) (xy 135.89 87.63) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(uuid "04a51ae9-4ae9-4bed-9fea-7d472d8054d1") |
|||
) |
|||
(wire |
|||
(pts |
|||
(xy 95.25 87.63) (xy 102.87 87.63) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(uuid "1211de1a-b035-4aae-be44-a9f51776303d") |
|||
) |
|||
(wire |
|||
(pts |
|||
(xy 102.87 87.63) (xy 107.95 87.63) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(uuid "44083bcb-4fd6-476f-9c08-ba44b0a069da") |
|||
) |
|||
(wire |
|||
(pts |
|||
(xy 135.89 87.63) (xy 135.89 95.25) |
|||
) |
|||
(stroke |
|||
(width 0) |
|||
(type default) |
|||
) |
|||
(uuid "dd09693f-4a50-4356-8204-a9e82b01c543") |
|||
) |
|||
(label "VCC" |
|||
(at 95.25 87.63 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
(justify bottom) |
|||
) |
|||
(uuid "e28831d2-7598-48e7-a846-5b63c0e95eb9") |
|||
) |
|||
(symbol |
|||
(lib_id "power:GND") |
|||
(at 135.89 95.25 0) |
|||
(unit 1) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(dnp no) |
|||
(uuid "19d8a70f-fdaa-401b-b7db-c26505f6cf90") |
|||
(property "Reference" "#PWR01" |
|||
(at 135.89 101.6 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "GND" |
|||
(at 135.89 99.06 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 135.89 95.25 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 135.89 95.25 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "" |
|||
(at 135.89 95.25 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(pin "1" |
|||
(uuid "28fa0626-4efd-41ee-9e7f-2a5364d0ca32") |
|||
) |
|||
(instances |
|||
(project "ground_pin_test_ok" |
|||
(path "/12345678-1234-1234-1234-123456789def" |
|||
(reference "#PWR01") |
|||
(unit 1) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(symbol |
|||
(lib_id "power:PWR_FLAG") |
|||
(at 135.89 87.63 0) |
|||
(unit 1) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(dnp no) |
|||
(fields_autoplaced yes) |
|||
(uuid "84ab731b-b6b7-45b2-818f-5cd6ff988fec") |
|||
(property "Reference" "#FLG02" |
|||
(at 135.89 85.725 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "PWR_FLAG" |
|||
(at 135.89 82.55 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 135.89 87.63 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 135.89 87.63 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "Special symbol for telling ERC where power comes from" |
|||
(at 135.89 87.63 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(pin "1" |
|||
(uuid "2bbd1dce-c066-4f23-9d19-0bc6ccf742bd") |
|||
) |
|||
(instances |
|||
(project "" |
|||
(path "/12345678-1234-1234-1234-123456789def" |
|||
(reference "#FLG02") |
|||
(unit 1) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(symbol |
|||
(lib_name "Test_Symbol_GND_1") |
|||
(lib_id "Test:Test_Symbol_GND") |
|||
(at 118.11 87.63 0) |
|||
(unit 1) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(dnp no) |
|||
(fields_autoplaced yes) |
|||
(uuid "be7e6f04-02dd-4174-a78c-a4637606f7f0") |
|||
(property "Reference" "U1" |
|||
(at 118.11 77.47 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "Test_Symbol_GND" |
|||
(at 118.11 80.01 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 118.11 87.63 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 118.11 87.63 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "" |
|||
(at 118.11 87.63 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(pin "1" |
|||
(uuid "0487b632-edba-45cc-bd6a-118af1e1071f") |
|||
) |
|||
(pin "2" |
|||
(uuid "c291e90f-20e3-4834-8bc5-d7788ad45e5e") |
|||
) |
|||
(instances |
|||
(project "" |
|||
(path "/12345678-1234-1234-1234-123456789def" |
|||
(reference "U1") |
|||
(unit 1) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(symbol |
|||
(lib_id "power:PWR_FLAG") |
|||
(at 102.87 87.63 0) |
|||
(unit 1) |
|||
(exclude_from_sim no) |
|||
(in_bom yes) |
|||
(on_board yes) |
|||
(dnp no) |
|||
(fields_autoplaced yes) |
|||
(uuid "ea8c0936-cdf4-4926-9f9c-ed93a8989f72") |
|||
(property "Reference" "#FLG01" |
|||
(at 102.87 85.725 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Value" "PWR_FLAG" |
|||
(at 102.87 82.55 0) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Footprint" "" |
|||
(at 102.87 87.63 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Datasheet" "" |
|||
(at 102.87 87.63 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(property "Description" "Special symbol for telling ERC where power comes from" |
|||
(at 102.87 87.63 0) |
|||
(hide yes) |
|||
(effects |
|||
(font |
|||
(size 1.27 1.27) |
|||
) |
|||
) |
|||
) |
|||
(pin "1" |
|||
(uuid "2bbd1dce-c066-4f23-9d19-0bc6ccf742bd") |
|||
) |
|||
(instances |
|||
(project "" |
|||
(path "/12345678-1234-1234-1234-123456789def" |
|||
(reference "#FLG01") |
|||
(unit 1) |
|||
) |
|||
) |
|||
) |
|||
) |
|||
(sheet_instances |
|||
(path "/" |
|||
(page "1") |
|||
) |
|||
) |
|||
(embedded_fonts no) |
|||
) |
@ -0,0 +1,438 @@ |
|||
/*
|
|||
* This program source code file is part of KiCad, a free EDA CAD application. |
|||
* |
|||
* Copyright The KiCad Developers, see AUTHORS.TXT for contributors. |
|||
* |
|||
* This program is free software; you can redistribute it and/or |
|||
* modify it under the terms of the GNU General Public License |
|||
* as published by the Free Software Foundation; either version 3 |
|||
* of the License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program; if not, you may find one at |
|||
* http://www.gnu.org/licenses/
|
|||
*/ |
|||
|
|||
/**
|
|||
* @file test_erc_ground_pins.cpp |
|||
* Test suite for the ERC ground pin checks (ERCE_GROUND_PIN_NOT_GROUND) |
|||
* |
|||
* This test verifies that the ERC correctly detects and reports when pins labeled |
|||
* with "GND" are not connected to a ground net while other pins in the same symbol |
|||
* are connected to ground nets. |
|||
*/ |
|||
|
|||
#include <qa_utils/wx_utils/unit_test_utils.h>
|
|||
#include <schematic_utils/schematic_file_util.h>
|
|||
|
|||
#include <connection_graph.h>
|
|||
#include <schematic.h>
|
|||
#include <erc/erc_settings.h>
|
|||
#include <erc/erc.h>
|
|||
#include <erc/erc_report.h>
|
|||
#include <settings/settings_manager.h>
|
|||
#include <locale_io.h>
|
|||
|
|||
|
|||
struct ERC_GROUND_PIN_TEST_FIXTURE |
|||
{ |
|||
ERC_GROUND_PIN_TEST_FIXTURE() : |
|||
m_settingsManager( true /* headless */ ) |
|||
{ } |
|||
|
|||
SETTINGS_MANAGER m_settingsManager; |
|||
std::unique_ptr<SCHEMATIC> m_schematic; |
|||
}; |
|||
|
|||
|
|||
/**
|
|||
* Test case: Pin with "GND" in its name connected to non-ground net while another pin |
|||
* in the same symbol is connected to a ground net. |
|||
* Expected: 1 ERCE_GROUND_PIN_NOT_GROUND error |
|||
*/ |
|||
BOOST_FIXTURE_TEST_CASE( ERCGroundPinMismatch, ERC_GROUND_PIN_TEST_FIXTURE ) |
|||
{ |
|||
LOCALE_IO dummy; |
|||
|
|||
// Test schematic with a symbol that has:
|
|||
// - One pin (VCC) connected to +5V net
|
|||
// - One pin labeled "GND" connected to non-ground net "OTHER"
|
|||
// - A separate GND symbol connected to "GND" net (establishes ground reference)
|
|||
KI_TEST::LoadSchematic( m_settingsManager, "ground_pin_test_error", m_schematic ); |
|||
|
|||
ERC_SETTINGS& settings = m_schematic->ErcSettings(); |
|||
SHEETLIST_ERC_ITEMS_PROVIDER errors( m_schematic.get() ); |
|||
|
|||
// Skip the symbol library warnings for this test
|
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_ISSUES] = RPT_SEVERITY_IGNORE; |
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_MISMATCH] = RPT_SEVERITY_IGNORE; |
|||
|
|||
// Enable the ground pin test
|
|||
settings.m_ERCSeverities[ERCE_GROUND_PIN_NOT_GROUND] = RPT_SEVERITY_ERROR; |
|||
|
|||
m_schematic->ConnectionGraph()->RunERC(); |
|||
|
|||
ERC_TESTER tester( m_schematic.get() ); |
|||
tester.TestGroundPins(); |
|||
|
|||
errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); |
|||
|
|||
ERC_REPORT reportWriter( m_schematic.get(), EDA_UNITS::MM ); |
|||
|
|||
BOOST_CHECK_MESSAGE( errors.GetCount() == 1, |
|||
"Expected 1 ERCE_GROUND_PIN_NOT_GROUND error but got " |
|||
<< errors.GetCount() << "\n" << reportWriter.GetTextReport() ); |
|||
|
|||
// Verify the error is the correct type
|
|||
bool foundGroundPinError = false; |
|||
for( unsigned i = 0; i < errors.GetCount(); i++ ) |
|||
{ |
|||
if( errors.GetItem( i )->GetErrorCode() == ERCE_GROUND_PIN_NOT_GROUND ) |
|||
{ |
|||
foundGroundPinError = true; |
|||
break; |
|||
} |
|||
} |
|||
|
|||
BOOST_CHECK_MESSAGE( foundGroundPinError, |
|||
"Expected to find ERCE_GROUND_PIN_NOT_GROUND error\n" |
|||
<< reportWriter.GetTextReport() ); |
|||
} |
|||
|
|||
|
|||
/**
|
|||
* Test case: Pin with "GND" in its name correctly connected to ground net. |
|||
* Expected: 0 ERCE_GROUND_PIN_NOT_GROUND errors |
|||
*/ |
|||
BOOST_FIXTURE_TEST_CASE( ERCGroundPinCorrect, ERC_GROUND_PIN_TEST_FIXTURE ) |
|||
{ |
|||
LOCALE_IO dummy; |
|||
|
|||
// Test schematic with a symbol where the GND pin is correctly connected to a ground net
|
|||
KI_TEST::LoadSchematic( m_settingsManager, "ground_pin_test_ok", m_schematic ); |
|||
|
|||
ERC_SETTINGS& settings = m_schematic->ErcSettings(); |
|||
SHEETLIST_ERC_ITEMS_PROVIDER errors( m_schematic.get() ); |
|||
|
|||
// Skip the symbol library warnings
|
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_ISSUES] = RPT_SEVERITY_IGNORE; |
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_MISMATCH] = RPT_SEVERITY_IGNORE; |
|||
|
|||
// Enable the ground pin test
|
|||
settings.m_ERCSeverities[ERCE_GROUND_PIN_NOT_GROUND] = RPT_SEVERITY_ERROR; |
|||
|
|||
m_schematic->ConnectionGraph()->RunERC(); |
|||
|
|||
ERC_TESTER tester( m_schematic.get() ); |
|||
tester.TestGroundPins(); |
|||
|
|||
errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); |
|||
|
|||
ERC_REPORT reportWriter( m_schematic.get(), EDA_UNITS::MM ); |
|||
|
|||
// Should have no ground pin errors since the GND pin is correctly connected
|
|||
int groundPinErrors = 0; |
|||
for( unsigned i = 0; i < errors.GetCount(); i++ ) |
|||
{ |
|||
if( errors.GetItem( i )->GetErrorCode() == ERCE_GROUND_PIN_NOT_GROUND ) |
|||
{ |
|||
groundPinErrors++; |
|||
} |
|||
} |
|||
|
|||
BOOST_CHECK_MESSAGE( groundPinErrors == 0, |
|||
"Expected 0 ERCE_GROUND_PIN_NOT_GROUND errors but got " |
|||
<< groundPinErrors << "\n" << reportWriter.GetTextReport() ); |
|||
} |
|||
|
|||
|
|||
/**
|
|||
* Test case: Symbol with multiple ground pins, some connected correctly, some not. |
|||
* Expected: 1 ERCE_GROUND_PIN_NOT_GROUND error (for the incorrectly connected pin) |
|||
*/ |
|||
BOOST_FIXTURE_TEST_CASE( ERCGroundPinMixed, ERC_GROUND_PIN_TEST_FIXTURE ) |
|||
{ |
|||
LOCALE_IO dummy; |
|||
|
|||
// Test schematic with a symbol that has multiple ground-labeled pins:
|
|||
// - One GND pin correctly connected to ground net
|
|||
// - One GND_ALT pin connected to non-ground net
|
|||
KI_TEST::LoadSchematic( m_settingsManager, "ground_pin_test_mixed", m_schematic ); |
|||
|
|||
ERC_SETTINGS& settings = m_schematic->ErcSettings(); |
|||
SHEETLIST_ERC_ITEMS_PROVIDER errors( m_schematic.get() ); |
|||
|
|||
// Skip the symbol library warnings
|
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_ISSUES] = RPT_SEVERITY_IGNORE; |
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_MISMATCH] = RPT_SEVERITY_IGNORE; |
|||
|
|||
// Enable the ground pin test
|
|||
settings.m_ERCSeverities[ERCE_GROUND_PIN_NOT_GROUND] = RPT_SEVERITY_ERROR; |
|||
|
|||
m_schematic->ConnectionGraph()->RunERC(); |
|||
|
|||
ERC_TESTER tester( m_schematic.get() ); |
|||
tester.TestGroundPins(); |
|||
|
|||
errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); |
|||
|
|||
ERC_REPORT reportWriter( m_schematic.get(), EDA_UNITS::MM ); |
|||
|
|||
// Should have exactly 1 ground pin error for the GND_ALT pin
|
|||
int groundPinErrors = 0; |
|||
for( unsigned i = 0; i < errors.GetCount(); i++ ) |
|||
{ |
|||
if( errors.GetItem( i )->GetErrorCode() == ERCE_GROUND_PIN_NOT_GROUND ) |
|||
{ |
|||
groundPinErrors++; |
|||
} |
|||
} |
|||
|
|||
BOOST_CHECK_MESSAGE( groundPinErrors == 1, |
|||
"Expected 1 ERCE_GROUND_PIN_NOT_GROUND error but got " |
|||
<< groundPinErrors << "\n" << reportWriter.GetTextReport() ); |
|||
} |
|||
|
|||
|
|||
/**
|
|||
* Test case: Symbol with ground-labeled pin but no ground net anywhere in the schematic. |
|||
* Expected: 0 ERCE_GROUND_PIN_NOT_GROUND errors (condition not triggered) |
|||
*/ |
|||
BOOST_FIXTURE_TEST_CASE( ERCGroundPinNoGroundNet, ERC_GROUND_PIN_TEST_FIXTURE ) |
|||
{ |
|||
LOCALE_IO dummy; |
|||
|
|||
// Test schematic with a symbol that has a GND pin but no ground net exists anywhere
|
|||
// The error should only trigger when there IS a ground net somewhere but the GND pin
|
|||
// is not connected to it
|
|||
KI_TEST::LoadSchematic( m_settingsManager, "ground_pin_test_no_ground_net", m_schematic ); |
|||
|
|||
ERC_SETTINGS& settings = m_schematic->ErcSettings(); |
|||
SHEETLIST_ERC_ITEMS_PROVIDER errors( m_schematic.get() ); |
|||
|
|||
// Skip the symbol library warnings
|
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_ISSUES] = RPT_SEVERITY_IGNORE; |
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_MISMATCH] = RPT_SEVERITY_IGNORE; |
|||
|
|||
// Enable the ground pin test
|
|||
settings.m_ERCSeverities[ERCE_GROUND_PIN_NOT_GROUND] = RPT_SEVERITY_ERROR; |
|||
|
|||
m_schematic->ConnectionGraph()->RunERC(); |
|||
|
|||
ERC_TESTER tester( m_schematic.get() ); |
|||
tester.TestGroundPins(); |
|||
|
|||
errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); |
|||
|
|||
ERC_REPORT reportWriter( m_schematic.get(), EDA_UNITS::MM ); |
|||
|
|||
// Should have no ground pin errors since there's no ground net to compare against
|
|||
int groundPinErrors = 0; |
|||
for( unsigned i = 0; i < errors.GetCount(); i++ ) |
|||
{ |
|||
if( errors.GetItem( i )->GetErrorCode() == ERCE_GROUND_PIN_NOT_GROUND ) |
|||
{ |
|||
groundPinErrors++; |
|||
} |
|||
} |
|||
|
|||
BOOST_CHECK_MESSAGE( groundPinErrors == 0, |
|||
"Expected 0 ERCE_GROUND_PIN_NOT_GROUND errors but got " |
|||
<< groundPinErrors << "\n" << reportWriter.GetTextReport() ); |
|||
} |
|||
|
|||
|
|||
/**
|
|||
* Test case: Verify that the ground pin check is properly enabled/disabled. |
|||
* Expected: Errors only when the check is enabled |
|||
*/ |
|||
BOOST_FIXTURE_TEST_CASE( ERCGroundPinToggle, ERC_GROUND_PIN_TEST_FIXTURE ) |
|||
{ |
|||
LOCALE_IO dummy; |
|||
|
|||
KI_TEST::LoadSchematic( m_settingsManager, "ground_pin_test_error", m_schematic ); |
|||
|
|||
ERC_SETTINGS& settings = m_schematic->ErcSettings(); |
|||
SHEETLIST_ERC_ITEMS_PROVIDER errors( m_schematic.get() ); |
|||
|
|||
// Skip the symbol library warnings
|
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_ISSUES] = RPT_SEVERITY_IGNORE; |
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_MISMATCH] = RPT_SEVERITY_IGNORE; |
|||
|
|||
int groundPinErrors = 0; |
|||
// Disable the ground pin test
|
|||
settings.m_ERCSeverities[ERCE_GROUND_PIN_NOT_GROUND] = RPT_SEVERITY_IGNORE; |
|||
|
|||
m_schematic->ConnectionGraph()->RunERC(); |
|||
|
|||
ERC_TESTER tester( m_schematic.get() ); |
|||
tester.TestGroundPins(); |
|||
|
|||
errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); |
|||
|
|||
for( unsigned i = 0; i < errors.GetCount(); i++ ) |
|||
{ |
|||
if( errors.GetItem( i )->GetErrorCode() == ERCE_GROUND_PIN_NOT_GROUND ) |
|||
{ |
|||
groundPinErrors++; |
|||
} |
|||
} |
|||
|
|||
BOOST_CHECK_MESSAGE( groundPinErrors == 0, |
|||
"Expected 0 errors when test is disabled but got " << groundPinErrors ); |
|||
|
|||
// Now re-enable the ground pin test and count again
|
|||
settings.m_ERCSeverities[ERCE_GROUND_PIN_NOT_GROUND] = RPT_SEVERITY_ERROR; |
|||
m_schematic->ConnectionGraph()->RunERC(); |
|||
|
|||
ERC_TESTER tester2( m_schematic.get() ); |
|||
tester2.TestGroundPins(); |
|||
errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); |
|||
|
|||
groundPinErrors = 0; |
|||
|
|||
for( unsigned i = 0; i < errors.GetCount(); i++ ) |
|||
{ |
|||
if( errors.GetItem( i )->GetErrorCode() == ERCE_GROUND_PIN_NOT_GROUND ) |
|||
{ |
|||
groundPinErrors++; |
|||
} |
|||
} |
|||
|
|||
BOOST_CHECK_MESSAGE( groundPinErrors >= 1, |
|||
"Expected at least 1 error when test is enabled but got " << groundPinErrors ); |
|||
} |
|||
|
|||
|
|||
/**
|
|||
* Test case: Verify error message content and pin identification. |
|||
* Expected: Error message contains pin name and proper item identification |
|||
*/ |
|||
BOOST_FIXTURE_TEST_CASE( ERCGroundPinErrorMessage, ERC_GROUND_PIN_TEST_FIXTURE ) |
|||
{ |
|||
LOCALE_IO dummy; |
|||
|
|||
KI_TEST::LoadSchematic( m_settingsManager, "ground_pin_test_error", m_schematic ); |
|||
|
|||
ERC_SETTINGS& settings = m_schematic->ErcSettings(); |
|||
SHEETLIST_ERC_ITEMS_PROVIDER errors( m_schematic.get() ); |
|||
|
|||
// Skip the symbol library warnings
|
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_ISSUES] = RPT_SEVERITY_IGNORE; |
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_MISMATCH] = RPT_SEVERITY_IGNORE; |
|||
|
|||
// Enable the ground pin test
|
|||
settings.m_ERCSeverities[ERCE_GROUND_PIN_NOT_GROUND] = RPT_SEVERITY_ERROR; |
|||
|
|||
m_schematic->ConnectionGraph()->RunERC(); |
|||
|
|||
ERC_TESTER tester( m_schematic.get() ); |
|||
tester.TestGroundPins(); |
|||
|
|||
errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); |
|||
|
|||
// Find the ground pin error and verify its content
|
|||
bool foundGroundPinError = false; |
|||
wxString errorMessage; |
|||
|
|||
for( unsigned i = 0; i < errors.GetCount(); i++ ) |
|||
{ |
|||
if( errors.GetItem( i )->GetErrorCode() == ERCE_GROUND_PIN_NOT_GROUND ) |
|||
{ |
|||
foundGroundPinError = true; |
|||
errorMessage = errors.GetItem( i )->GetErrorMessage(); |
|||
|
|||
// Verify the error message contains expected content
|
|||
BOOST_CHECK_MESSAGE( errorMessage.Contains( "Pin" ), |
|||
"Error message should contain 'Pin': " << errorMessage.ToStdString() ); |
|||
|
|||
BOOST_CHECK_MESSAGE( errorMessage.Contains( "GND" ), |
|||
"Error message should contain 'GND': " << errorMessage.ToStdString() ); |
|||
|
|||
BOOST_CHECK_MESSAGE( errorMessage.Contains( "not connected to ground net" ), |
|||
"Error message should contain expected text: " << errorMessage.ToStdString() ); |
|||
|
|||
// Verify that the error has the pin item associated
|
|||
std::shared_ptr<RC_ITEM> ercItem = errors.GetItem( i ); |
|||
BOOST_CHECK_MESSAGE( ercItem->GetMainItemID() != niluuid, |
|||
"ERC item should have a main item (the pin)" ); |
|||
|
|||
break; |
|||
} |
|||
} |
|||
|
|||
BOOST_CHECK_MESSAGE( foundGroundPinError, |
|||
"Should have found a ground pin error to test message content" ); |
|||
} |
|||
|
|||
|
|||
/**
|
|||
* Comprehensive test with all ground pin related test cases. |
|||
* This demonstrates the expected behavior of the ground pin ERC check. |
|||
*/ |
|||
BOOST_FIXTURE_TEST_CASE( ERCGroundPinComprehensive, ERC_GROUND_PIN_TEST_FIXTURE ) |
|||
{ |
|||
LOCALE_IO dummy; |
|||
|
|||
// Test data: schema name and expected number of ERCE_GROUND_PIN_NOT_GROUND errors
|
|||
std::vector<std::pair<wxString, int>> tests = |
|||
{ |
|||
{ "ground_pin_test_error", 1 }, // GND pin on non-ground net while symbol has ground
|
|||
{ "ground_pin_test_ok", 0 }, // GND pin correctly connected
|
|||
{ "ground_pin_test_mixed", 1 }, // Mixed: one correct, one incorrect
|
|||
{ "ground_pin_test_no_ground_net", 0 } // No ground net anywhere (no error triggered)
|
|||
}; |
|||
|
|||
for( const std::pair<wxString, int>& test : tests ) |
|||
{ |
|||
KI_TEST::LoadSchematic( m_settingsManager, test.first, m_schematic ); |
|||
|
|||
ERC_SETTINGS& settings = m_schematic->ErcSettings(); |
|||
SHEETLIST_ERC_ITEMS_PROVIDER errors( m_schematic.get() ); |
|||
|
|||
// Skip the symbol library warnings
|
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_ISSUES] = RPT_SEVERITY_IGNORE; |
|||
settings.m_ERCSeverities[ERCE_LIB_SYMBOL_MISMATCH] = RPT_SEVERITY_IGNORE; |
|||
|
|||
// Enable the ground pin test
|
|||
settings.m_ERCSeverities[ERCE_GROUND_PIN_NOT_GROUND] = RPT_SEVERITY_ERROR; |
|||
|
|||
m_schematic->ConnectionGraph()->RunERC(); |
|||
|
|||
ERC_TESTER tester( m_schematic.get() ); |
|||
|
|||
// Run all ERC tests to ensure ground pin test integrates properly
|
|||
tester.TestConflictingBusAliases(); |
|||
tester.TestMultUnitPinConflicts(); |
|||
tester.TestMultiunitFootprints(); |
|||
tester.TestMissingUnits(); |
|||
tester.TestNoConnectPins(); |
|||
tester.TestPinToPin(); |
|||
tester.TestGroundPins(); // Our test
|
|||
tester.TestSimilarLabels(); |
|||
|
|||
errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); |
|||
|
|||
// Count only ground pin errors
|
|||
int groundPinErrors = 0; |
|||
for( unsigned i = 0; i < errors.GetCount(); i++ ) |
|||
{ |
|||
if( errors.GetItem( i )->GetErrorCode() == ERCE_GROUND_PIN_NOT_GROUND ) |
|||
{ |
|||
groundPinErrors++; |
|||
} |
|||
} |
|||
|
|||
ERC_REPORT reportWriter( m_schematic.get(), EDA_UNITS::MM ); |
|||
|
|||
BOOST_CHECK_MESSAGE( groundPinErrors == test.second, |
|||
"Expected " << test.second << " ERCE_GROUND_PIN_NOT_GROUND errors in " |
|||
<< test.first.ToStdString() << " but got " << groundPinErrors |
|||
<< "\n" << reportWriter.GetTextReport() ); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue