From f4654e73e623a0b9436fe9c54fcbe0622c5e565b Mon Sep 17 00:00:00 2001 From: Andrew Greenberg Date: Tue, 27 Aug 2024 18:35:24 -0700 Subject: [PATCH] Cleaned up 4 layer osh park design rules, including default netclass and some minor changes to solder masks. --- .../drc-template-osh-park-4-layer.kicad_pcb | 234 +++++++++++------- .../drc-template-osh-park-4-layer.kicad_pro | 154 ++++++++++-- 2 files changed, 277 insertions(+), 111 deletions(-) diff --git a/drc-template-osh-park-4-layer/drc-template-osh-park-4-layer.kicad_pcb b/drc-template-osh-park-4-layer/drc-template-osh-park-4-layer.kicad_pcb index 48bcd53..01faa9b 100644 --- a/drc-template-osh-park-4-layer/drc-template-osh-park-4-layer.kicad_pcb +++ b/drc-template-osh-park-4-layer/drc-template-osh-park-4-layer.kicad_pcb @@ -1,86 +1,150 @@ -(kicad_pcb (version 20211014) (generator pcbnew) - - (general - (thickness 1.7702) - ) - - (paper "A4") - (layers - (0 "F.Cu" jumper) - (1 "In1.Cu" signal) - (2 "In2.Cu" signal) - (31 "B.Cu" signal) - (34 "B.Paste" user) - (35 "F.Paste" user) - (36 "B.SilkS" user "B.Silkscreen") - (37 "F.SilkS" user "F.Silkscreen") - (38 "B.Mask" user) - (39 "F.Mask" user) - (40 "Dwgs.User" user "User.Drawings") - (41 "Cmts.User" user "User.Comments") - (44 "Edge.Cuts" user) - (45 "Margin" user) - (46 "B.CrtYd" user "B.Courtyard") - (47 "F.CrtYd" user "F.Courtyard") - (48 "B.Fab" user) - (49 "F.Fab" user) - ) - - (setup - (stackup - (layer "F.SilkS" (type "Top Silk Screen") (color "White") (material "Liquid Photo")) - (layer "F.Paste" (type "Top Solder Paste")) - (layer "F.Mask" (type "Top Solder Mask") (color "Purple") (thickness 0.0254) (material "Liquid Ink") (epsilon_r 3.3) (loss_tangent 0)) - (layer "F.Cu" (type "copper") (thickness 0.0432)) - (layer "dielectric 1" (type "prepreg") (thickness 0.2021) (material "FR408-HR") (epsilon_r 3.69) (loss_tangent 0.0091)) - (layer "In1.Cu" (type "copper") (thickness 0.0175)) - (layer "dielectric 2" (type "core") (thickness 1.1938) (material "FR408-HR") (epsilon_r 3.69) (loss_tangent 0.0091)) - (layer "In2.Cu" (type "copper") (thickness 0.0175)) - (layer "dielectric 3" (type "prepreg") (thickness 0.2021) (material "FR408-HR") (epsilon_r 3.69) (loss_tangent 0.0091)) - (layer "B.Cu" (type "copper") (thickness 0.0432)) - (layer "B.Mask" (type "Bottom Solder Mask") (color "Purple") (thickness 0.0254) (material "Liquid Ink") (epsilon_r 3.3) (loss_tangent 0)) - (layer "B.Paste" (type "Bottom Solder Paste")) - (layer "B.SilkS" (type "Bottom Silk Screen") (color "White") (material "Liquid Photo")) - (copper_finish "ENIG") - (dielectric_constraints no) - ) - (pad_to_mask_clearance 0) - (solder_mask_min_width 0.1016) - (pcbplotparams - (layerselection 0x00010fc_ffffffff) - (disableapertmacros false) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (svguseinch false) - (svgprecision 6) - (excludeedgelayer true) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (dxfpolygonmode true) - (dxfimperialunits true) - (dxfusepcbnewfont true) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (sketchpadsonfab false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "") - ) - ) - - (net 0 "") - +(kicad_pcb + (version 20240108) + (generator "pcbnew") + (generator_version "8.0") + (general + (thickness 1.7702) + (legacy_teardrops no) + ) + (paper "USLedger") + (title_block + (title "Schematic Title!") + (date "2024-08-26") + (rev "1.0") + ) + (layers + (0 "F.Cu" signal) + (1 "In1.Cu" signal) + (2 "In2.Cu" signal) + (31 "B.Cu" signal) + (34 "B.Paste" user) + (35 "F.Paste" user) + (36 "B.SilkS" user "B.Silkscreen") + (37 "F.SilkS" user "F.Silkscreen") + (38 "B.Mask" user) + (39 "F.Mask" user) + (40 "Dwgs.User" user "User.Drawings") + (41 "Cmts.User" user "User.Comments") + (44 "Edge.Cuts" user) + (45 "Margin" user) + (46 "B.CrtYd" user "B.Courtyard") + (47 "F.CrtYd" user "F.Courtyard") + (48 "B.Fab" user) + (49 "F.Fab" user) + ) + (setup + (stackup + (layer "F.SilkS" + (type "Top Silk Screen") + (color "White") + (material "Liquid Photo") + ) + (layer "F.Paste" + (type "Top Solder Paste") + ) + (layer "F.Mask" + (type "Top Solder Mask") + (color "Purple") + (thickness 0.0254) + (material "Liquid Ink") + (epsilon_r 3.3) + (loss_tangent 0) + ) + (layer "F.Cu" + (type "copper") + (thickness 0.0432) + ) + (layer "dielectric 1" + (type "prepreg") + (thickness 0.2021) + (material "FR408-HR") + (epsilon_r 3.69) + (loss_tangent 0.0091) + ) + (layer "In1.Cu" + (type "copper") + (thickness 0.0175) + ) + (layer "dielectric 2" + (type "core") + (thickness 1.1938) + (material "FR408-HR") + (epsilon_r 3.69) + (loss_tangent 0.0091) + ) + (layer "In2.Cu" + (type "copper") + (thickness 0.0175) + ) + (layer "dielectric 3" + (type "prepreg") + (thickness 0.2021) + (material "FR408-HR") + (epsilon_r 3.69) + (loss_tangent 0.0091) + ) + (layer "B.Cu" + (type "copper") + (thickness 0.0432) + ) + (layer "B.Mask" + (type "Bottom Solder Mask") + (color "Purple") + (thickness 0.0254) + (material "Liquid Ink") + (epsilon_r 3.3) + (loss_tangent 0) + ) + (layer "B.Paste" + (type "Bottom Solder Paste") + ) + (layer "B.SilkS" + (type "Bottom Silk Screen") + (color "White") + (material "Liquid Photo") + ) + (copper_finish "ENIG") + (dielectric_constraints no) + ) + (pad_to_mask_clearance 0) + (allow_soldermask_bridges_in_footprints no) + (pcbplotparams + (layerselection 0x00010fc_ffffffff) + (plot_on_all_layers_selection 0x0000000_00000000) + (disableapertmacros no) + (usegerberextensions no) + (usegerberattributes yes) + (usegerberadvancedattributes yes) + (creategerberjobfile yes) + (dashed_line_dash_ratio 12.000000) + (dashed_line_gap_ratio 3.000000) + (svgprecision 6) + (plotframeref no) + (viasonmask no) + (mode 1) + (useauxorigin no) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15.000000) + (pdf_front_fp_property_popups yes) + (pdf_back_fp_property_popups yes) + (dxfpolygonmode yes) + (dxfimperialunits yes) + (dxfusepcbnewfont yes) + (psnegative no) + (psa4output no) + (plotreference yes) + (plotvalue yes) + (plotfptext yes) + (plotinvisibletext no) + (sketchpadsonfab no) + (subtractmaskfromsilk no) + (outputformat 1) + (mirror no) + (drillshape 1) + (scaleselection 1) + (outputdirectory "") + ) + ) + (net 0 "") ) diff --git a/drc-template-osh-park-4-layer/drc-template-osh-park-4-layer.kicad_pro b/drc-template-osh-park-4-layer/drc-template-osh-park-4-layer.kicad_pro index 154a63b..5049924 100644 --- a/drc-template-osh-park-4-layer/drc-template-osh-park-4-layer.kicad_pro +++ b/drc-template-osh-park-4-layer/drc-template-osh-park-4-layer.kicad_pro @@ -1,15 +1,19 @@ { "board": { + "3dviewports": [], "design_settings": { "defaults": { - "board_outline_line_width": 0.09999999999999999, - "copper_line_width": 0.19999999999999998, + "apply_defaults_to_fp_fields": false, + "apply_defaults_to_fp_shapes": false, + "apply_defaults_to_fp_text": false, + "board_outline_line_width": 0.1, + "copper_line_width": 0.2, "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, + "courtyard_line_width": 0.05, "dimension_precision": 4, "dimension_units": 3, "dimensions": { @@ -20,7 +24,7 @@ "text_position": 0, "units_format": 1 }, - "fab_line_width": 0.09999999999999999, + "fab_line_width": 0.1, "fab_text_italic": false, "fab_text_size_h": 1.0, "fab_text_size_v": 1.0, @@ -37,11 +41,11 @@ "height": 1.524, "width": 1.524 }, - "silk_line_width": 0.15, + "silk_line_width": 0.125, "silk_text_italic": false, - "silk_text_size_h": 1.0, - "silk_text_size_v": 1.0, - "silk_text_thickness": 0.127, + "silk_text_size_h": 0.5, + "silk_text_size_v": 0.5, + "silk_text_thickness": 0.125, "silk_text_upright": false, "zones": { "45_degree_only": false, @@ -62,21 +66,29 @@ "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": "error", "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", - "malformed_courtyard": "error", + "lib_footprint_issues": "warning", + "lib_footprint_mismatch": "warning", + "malformed_courtyard": "ignore", "microvia_drill_out_of_range": "error", "missing_courtyard": "ignore", "missing_footprint": "warning", @@ -85,9 +97,14 @@ "padstack": "error", "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", + "text_height": "warning", + "text_thickness": "warning", "through_hole_pad_without_hole": "error", "too_many_vias": "error", "track_dangling": "warning", @@ -104,20 +121,68 @@ "allow_microvias": false, "max_error": 0.005, "min_clearance": 0.127, + "min_connection": 0.0, "min_copper_edge_clearance": 0.381, "min_hole_clearance": 0.127, "min_hole_to_hole": 0.127, - "min_microvia_diameter": 0.19999999999999998, - "min_microvia_drill": 0.09999999999999999, + "min_microvia_diameter": 0.2, + "min_microvia_drill": 0.1, + "min_resolved_spokes": 2, "min_silk_clearance": 0.0, + "min_text_height": 0.5, + "min_text_thickness": 0.125, "min_through_hole_diameter": 0.254, "min_track_width": 0.127, "min_via_annular_width": 0.1016, "min_via_diameter": 0.4572, "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": [ 0.0, 0.127, @@ -133,6 +198,32 @@ 1.0, 2.0 ], + "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": [ { "diameter": 0.0, @@ -143,10 +234,18 @@ "drill": 0.254 } ], - "zones_allow_external_fillets": false, + "zones_allow_external_fillets": true, "zones_use_no_outline": true }, - "layer_presets": [] + "ipc2581": { + "dist": "", + "distpn": "", + "internal_id": "", + "mfg": "", + "mpn": "" + }, + "layer_presets": [], + "viewports": [] }, "boards": [], "cvpcb": { @@ -163,8 +262,8 @@ "net_settings": { "classes": [ { - "bus_width": 12.0, - "clearance": 0.2, + "bus_width": 12, + "clearance": 0.127, "diff_pair_gap": 0.25, "diff_pair_via_gap": 0.25, "diff_pair_width": 0.2, @@ -174,13 +273,13 @@ "name": "Default", "pcb_color": "rgba(0, 0, 0, 0.000)", "schematic_color": "rgba(0, 0, 0, 0.000)", - "track_width": 0.2, + "track_width": 0.127, "via_diameter": 0.4572, "via_drill": 0.254, - "wire_width": 6.0 + "wire_width": 6 }, { - "bus_width": 12.0, + "bus_width": 12, "clearance": 1.0105, "diff_pair_gap": 0.25, "diff_pair_via_gap": 0.25, @@ -189,16 +288,15 @@ "microvia_diameter": 0.3, "microvia_drill": 0.1, "name": "RF-50-max", - "nets": [], "pcb_color": "rgba(0, 0, 0, 0.000)", "schematic_color": "rgba(0, 0, 0, 0.000)", "track_width": 0.38, "via_diameter": 0.4572, "via_drill": 0.254, - "wire_width": 6.0 + "wire_width": 6 }, { - "bus_width": 12.0, + "bus_width": 12, "clearance": 0.6063, "diff_pair_gap": 0.25, "diff_pair_via_gap": 0.25, @@ -207,30 +305,34 @@ "microvia_diameter": 0.3, "microvia_drill": 0.1, "name": "RF-50-min", - "nets": [], "pcb_color": "rgba(0, 0, 0, 0.000)", "schematic_color": "rgba(0, 0, 0, 0.000)", "track_width": 0.38, "via_diameter": 0.4572, "via_drill": 0.254, - "wire_width": 6.0 + "wire_width": 6 } ], "meta": { - "version": 2 + "version": 3 }, - "net_colors": null + "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": "" + "page_layout_descr_file": "${ORESAT_LIBRARIES}/title-blocks/oresat-layout-title-block.kicad_wks" }, "schematic": { "legacy_lib_dir": "",