Initial commit

This commit is contained in:
2026-03-06 16:00:59 +00:00
commit 7635a99794
67 changed files with 26825 additions and 0 deletions

199
.gitea/workflows/ci.yaml Normal file
View File

@@ -0,0 +1,199 @@
name: KiBot CI
on:
workflow_dispatch:
push:
tags:
- release/rev-**
branches:
- main
- dev
- review/rev-**
paths-ignore:
- '*.md'
env:
# KiBot Configuration
kibot_config: kibot/yaml/kibot_main.yaml
kibot_draft: false
kibot_log: kibot_run.log
# Update these to correspond to the KiCad version
kibot_group: "all_group"
kibot_tag: "v2_k9"
kicad_image: "kicad9_auto_full"
jobs:
test:
runs-on: ubuntu-latest
container: ghcr.io/inti-cmnb/${{ env.kicad_image }}
if: ${{ github.ref_type == 'tag' || !startsWith(github.event.head_commit.message, 'Merge pull request') }}
steps:
- name: Install NodeJS
run: |
apt-get update && apt -y install --no-install-recommends nodejs
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
sparse-checkout: null
- name: Dump Environment
continue-on-error: true
run: echo "${{ toJSON(env) }}"
- name: Dump Context
continue-on-error: true
shell: bash
run: echo "${{ toJSON(github) }}"
- name: Determine Release Stage
shell: bash
run: |
stage=unknown
if [ "${{ github.ref == 'refs/heads/dev' }}" = "true" ] ; then
if [ "${{ env.kibot_draft }}" = "true" ] ; then
stage=DRAFT
else
stage=WORKING
fi
else
if [ "${{ env.kibot_draft}}" == "true" ] ; then
echo "Error: kibot_draft is set outside of dev branch"
exit 1
fi
if [ "${{ startsWith(github.ref, 'refs/heads/review/rev-') }}" = "true" ] ; then
stage=REVIEW
elif [ "${{ github.ref_type == 'tag' }}" = "true" ] ; then
stage=RELEASE
else
echo "Error: could not determine release stage"
exit 1
fi
fi
echo "Release Stage: $stage"
echo "kibot_stage=$stage" > $GITHUB_ENV
- name: Setup KiBot Arguments
shell: bash
run: |
last_tag=$(git describe --tags --abbrev=0 || echo "NO_TAG")
echo "Last tag: ${last_tag}"
if [ "${{ github.ref_type }}" = "tag" ]; then
version_arg="-E RELEASE_STATE='RELEASE' -E REVISION='${last_tag##release/rev-}'"
echo "Overriding kibot_variant to 'RELEASE' for tag"
echo "kibot_variant=RELEASE" >> $GITHUB_ENV
else
version_arg="-E RELEASE_STATE='${{ env.kibot_stage }}' -E REVISION='${last_tag##release/rev-}+ (Unreleased)'"
echo "kibot_variant=${{ env.kibot_stage }}" >> $GITHUB_ENV
fi
case "$kibot_stage" in
"DRAFT")
additional_args="--skip-pre draw_fancy_stackup,erc,drc ${version_arg} --log ${{ env.kibot_log }} draft_group"
;;
"WORKING")
additional_args="--skip-pre erc,drc ${version_arg} --log ${{ env.kibot_log }} ${{ env.kibot_group }}"
;;
"REVIEW"|"RELEASE")
additional_args="${version_arg} --log ${{ env.kibot_log }} ${{ env.kibot_group }}"
;;
*)
echo "Unknown Stage: $kibot_stage"
exit 1
;;
esac
echo "version_arg=${version_arg}" >> $GITHUB_ENV
echo "additional_args=${additional_args}" >> $GITHUB_ENV
- name: Remove KiRi Files from Prior Revisions
shell: bash
run: '[ -d kiri ] && git rm -rf kiri/* || echo "No KiRi files to delete"'
- name: Retrieve Cached 3d Models
id: cache-models-restore
uses: actions/cache/restore@v4
with:
path: ~/3d_models
key: 3d_models
- name: Run KiBot (Outputs)
uses: inti-cmnb/kibot@${{ env.kibot_tag }}
env:
KIBOT_3D_MODELS: ~/3d_models
with:
additional_args: ${{ env.additional_args }}
config: ${{ env.kibot_config }}
cache3D: YES
- name: Save Cached 3d Models
id: cache-models-save
if: always()
uses: actions/cache/save@v4
with:
path: ~/3d_models
key: ${{ steps.cache-models-restore.outputs.cache-primary-key }}
- name: Pull latest changes
shell: bash
run: |
git config --global user.email "gitea-actions[bot]@users.noreply.git.asymworks.com"
git config --global user.name "Gitea Actions"
if [ "${{ github.ref_type }}" = "tag" ]; then
echo "Triggered by a tag, committing changes in detached HEAD state"
git add -A
git commit -m "[bot]: Update Outputs (release)"
DETACHED_COMMIT=$(git rev-parse HEAD)
echo "Checking out the main branch"
git fetch origin main
git checkout main
echo "Merging detached HEAD commit into main"
git merge --no-ff $DETACHED_COMMIT -m "[bot]: Merge release artifacts from workflow" -X theirs
echo "Pushing to main branch"
git push origin main
else
echo "Triggered by a branch, using the current branch"
git pull origin ${{ github.ref_name }} --tags --force
fi
- name: Discard changes to .kicad_pcb files and remove temp files
run: |
git checkout HEAD -- $(git ls-files "*.kicad_pcb")
git clean -f -e "panels/*" "*.kicad_pcb"
git clean -f -e "panels/*" "*.kicad_pro"
git clean -f -e "panels/*" "*.kicad_dru"
git clean -f -e "panels/*" "*.kicad_prl"
- name: Push Outputs
uses: stefanzweifel/git-auto-commit-action@v5
with:
branch: ${{ github.ref_name }}
commit_message: '[bot]: Update Outputs'
- name: Upload KiBot Log
if: ${{ always() }}
uses: christopherhx/gitea-upload-artifact@v4
with:
name: log_file_kibot
path: ${{ env.kibot_log }}
- name: Upload Drawing Notes Log
if: ${{ always() && env.kibot_stage != 'DRAFT' }}
uses: christopherhx/gitea-upload-artifact@v4
with:
name: log_file_notes
path: kibot_run_notes.log
- name: Upload README Log
if: ${{ always() && env.kibot_stage == 'DRAFT' }}
uses: christopherhx/gitea-upload-artifact@v4
with:
name: log_file_readme
path: kibot_run_readme.log

43
.gitignore vendored Normal file
View File

@@ -0,0 +1,43 @@
# ---> KiBot
*-backups
\#auto_saved_files#
_autosave-*
*.lck
*.bak
*.ini
*.kicad_sch-bak
*.kicad_pro-bak
*.kicad_pcb-bak
*.kicad_prl-bak
fp-info-cache
*Zone.Identifier
kibot_*.kicad_pcb
kibot_*.kicad_dru
kibot_*.kicad_prl
kibot_*.kicad_pro
kibot_run.log
# ---> KiCad
# For PCBs designed using KiCad: https://www.kicad.org/
# Format documentation: https://kicad.org/help/file-formats/
# Temporary files
*.000
*.bak
*.bck
*.kicad_pcb-bak
*.kicad_sch-bak
*-backups
*.kicad_prl
*.sch-bak
*~
_autosave-*
*.tmp
*-save.pro
*-save.kicad_pcb
fp-info-cache
~*.lck
\#auto_saved_files#
# MacOS Cruft
.DS_Store

1212
Asymworks_Template.kicad_pcb Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,698 @@
{
"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.05,
"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.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": true,
"text_position": 0,
"units_format": 0
},
"fab_line_width": 0.1,
"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.1,
"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.8,
"height": 1.27,
"width": 2.54
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"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",
"creepage": "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_filters_mismatch": "ignore",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_to_hole": "warning",
"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",
"mirrored_text_on_front_layer": "warning",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "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",
"text_height": "warning",
"text_on_edge_cuts": "error",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_angle": "error",
"track_dangling": "warning",
"track_segment_length": "error",
"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_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpthpad": true,
"td_onroundshapesonly": false,
"td_onsmdpad": true,
"td_ontrackend": false,
"td_onvia": 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
],
"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,
"drill": 0.0
}
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_pairs": [],
"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",
"different_unit_footprint": "error",
"different_unit_net": "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": "ignore",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"label_multiple_wires": "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": "error",
"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": "ignore",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"undefined_netclass": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "Asymworks_Template.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,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 4
},
"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": "kicad-embed://Asymworks_PCB.kicad_wks"
},
"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": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": true,
"label": "Exclude from BOM",
"name": "${EXCLUDE_FROM_BOM}",
"show": true
},
{
"group_by": true,
"label": "Exclude from Board",
"name": "${EXCLUDE_FROM_BOARD}",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"include_excluded_from_bom": true,
"name": "Default Editing",
"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": true,
"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": "KiCad",
"page_layout_descr_file": "kicad-embed://Asymworks_SCH.kicad_wks",
"plot_directory": "",
"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
},
"sheets": [
[
"8bfb0b6c-9e3a-4761-bc1e-4eb40915aa0b",
"Root"
],
[
"28ad8293-baaf-4ee1-8056-ad34096542a0",
"Block Diagram"
],
[
"f6afef58-d841-4ad6-baf9-746b0a35f011",
"Project Architecture"
],
[
"a5aa3c11-5084-4ea5-9da5-c9ff4a86f01f",
"Circuit 1"
],
[
"9da43fd7-7a0a-403c-bf2c-ba67cd8fa669",
"Circuit 2"
],
[
"6c8ce547-8e28-496a-9003-0e7dbfd93e8c",
"Circuit 3"
],
[
"20edd200-9383-4d87-bd58-f882adb4f112",
"Parts List"
]
],
"text_variables": {
"ASSEMBLY_NAME": "",
"ASSEMBLY_NUMBER": "",
"ASSEMBLY_SCALE": "",
"COMPANY": "Asymworks, LLC",
"DESIGNER": "JPK",
"DWG_NUMBER_PCB": "",
"DWG_NUMBER_SCH": "",
"DWG_TITLE_ASSY": "",
"DWG_TITLE_PCB": "",
"DWG_TITLE_SCH": "",
"GIT_HASH": "",
"GIT_HASH_PCB": "",
"GIT_HASH_SCH": "",
"GIT_URL": "",
"PROJECT_CODE": "",
"RELEASE_DATE": "",
"RELEASE_STATE": "",
"REVISION": "${REVISION}",
"SCALE": "1:1",
"SHEET_NAME_01": "Cover Page",
"SHEET_NAME_02": "Block Diagram",
"SHEET_NAME_03": "Project Architecture",
"SHEET_NAME_04": "Circuit 1",
"SHEET_NAME_05": "Circuit 2",
"SHEET_NAME_06": "Circuit 3",
"SHEET_NAME_07": "Parts List",
"SHEET_NAME_08": "......................................",
"SHEET_NAME_09": "......................................",
"SHEET_NAME_10": "......................................",
"SHEET_NAME_11": "......................................",
"SHEET_NAME_12": "......................................",
"SHEET_NAME_13": "......................................",
"SHEET_NAME_14": "......................................",
"SHEET_NAME_15": "......................................",
"SHEET_NAME_16": "......................................",
"SHEET_NAME_17": "......................................",
"SHEET_NAME_18": "......................................",
"SHEET_NAME_19": "......................................",
"SHEET_NAME_20": "......................................",
"STATE": "TEMPLATE",
"VARIANT": ""
}
}

19914
Asymworks_Template.kicad_sch Normal file

File diff suppressed because it is too large Load Diff

170
LICENSE Normal file
View File

@@ -0,0 +1,170 @@
Creative Commons Attribution-ShareAlike 4.0 International
Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.
Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensors permission is not necessary for any reasonfor example, because of any applicable exception or limitation to copyrightthen that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.
Creative Commons Attribution-ShareAlike 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
Section 1 Definitions.
a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
Section 2 Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
A. reproduce and Share the Licensed Material, in whole or in part; and
B. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
3. Term. The term of this Public License is specified in Section 6(a).
4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
5. Downstream recipients.
A. Offer from the Licensor Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
B. Additional offer from the Licensor Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply.
C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this Public License.
3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.
Section 3 License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified form), You must:
A. retain the following if it is supplied by the Licensor with the Licensed Material:
i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of warranties;
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
1. The Adapters License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.
Section 4 Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database;
b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
Section 5 Disclaimer of Warranties and Limitation of Liability.
a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
Section 6 Term and Termination.
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
2. upon express reinstatement by the Licensor.
c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
Section 7 Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
Section 8 Interpretation.
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
Creative Commons may be contacted at creativecommons.org.

21
README.md Normal file
View File

@@ -0,0 +1,21 @@
# KiBot_Template
Template for a KiCad project using the KiBot Workflow
# Getting Started
1. Create a new repository using the `pdm/KiBot_Template` as the template. Make sure to select the `Git Content (Default Branch)` option to copy the files and default `main` branch into the new repository.
2. Check out the new repository (`pdm/A99-9000` in this example) and run the bootstrapping script to set up the Asymworks KiCad library, add the `dev` working branch, and rename the project based on the current directory.
```shell
$ git clone https://git.asymworks.com/pdm/A99-9000
$ cd A99-9000
$ source kibot/scripts/bootstrap.sh
Created Development Branch
Added Asymworks KiCad Library
Renamed KiCad Project to "A99-9000.kicad_pro"
```
3. Open KiCad and start drafting the schematic. The KiBot script will start in the `DRAFT` state, which generates the Schematic Netlist, PDF, and BOM. After each `git push`, assuming the KiBot script ran successfully, run a `git pull` to download the generated outputs.
4. Once the schematic is done and the PCB has been initialized with parts and a board outline, change the `kibot_draft` parameter in `.gitea/workflows/ci.yaml` to `false`. This will cause the KiBot script to run in `WORKING` mode, which generates all outputs. It will error out if the board outline does not exist.
5. When the board is ready to review, create a release branch named `review/rev-XX` where `XX` is the revision code. The revision code should start at `NC` (or `100`) and from there increment as specified in the Asymworks product management guidelines. KiBot will run in `REVIEW` mode when a release branch exists.
6. When the board is ready to release, create a Pull Request from the review branch into `main`. Merge the PR and create a tag named `release/rev-XX`. KiBot will run on the `main` branch and create the Gitea Release from the release tag.
7. Continue with the next revision by merging `main` back into `dev`.

View File

@@ -0,0 +1,312 @@
{
"3d_viewer": {
"background_bottom": "rgb(102, 102, 128)",
"background_top": "rgb(204, 204, 230)",
"board": "rgba(51, 43, 23, 0.902)",
"copper": "rgb(179, 156, 0)",
"silkscreen_bottom": "rgb(230, 230, 230)",
"silkscreen_top": "rgb(230, 230, 230)",
"soldermask_bottom": "rgba(20, 51, 36, 0.831)",
"soldermask_top": "rgba(20, 51, 36, 0.831)",
"solderpaste": "rgb(128, 128, 128)",
"use_board_stackup_colors": true,
"user_1": "rgb(194, 194, 194)",
"user_10": "rgb(89, 148, 220)",
"user_11": "rgb(180, 219, 210)",
"user_12": "rgb(216, 200, 82)",
"user_13": "rgb(194, 194, 194)",
"user_14": "rgb(89, 148, 220)",
"user_15": "rgb(180, 219, 210)",
"user_16": "rgb(216, 200, 82)",
"user_17": "rgb(194, 194, 194)",
"user_18": "rgb(89, 148, 220)",
"user_19": "rgb(180, 219, 210)",
"user_2": "rgb(89, 148, 220)",
"user_20": "rgb(216, 200, 82)",
"user_21": "rgb(194, 194, 194)",
"user_22": "rgb(89, 148, 220)",
"user_23": "rgb(180, 219, 210)",
"user_24": "rgb(216, 200, 82)",
"user_25": "rgb(194, 194, 194)",
"user_26": "rgb(89, 148, 220)",
"user_27": "rgb(180, 219, 210)",
"user_28": "rgb(216, 200, 82)",
"user_29": "rgb(194, 194, 194)",
"user_3": "rgb(180, 219, 210)",
"user_30": "rgb(89, 148, 220)",
"user_31": "rgb(180, 219, 210)",
"user_32": "rgb(216, 200, 82)",
"user_33": "rgb(194, 194, 194)",
"user_34": "rgb(89, 148, 220)",
"user_35": "rgb(180, 219, 210)",
"user_36": "rgb(216, 200, 82)",
"user_37": "rgb(194, 194, 194)",
"user_38": "rgb(89, 148, 220)",
"user_39": "rgb(180, 219, 210)",
"user_4": "rgb(216, 200, 82)",
"user_40": "rgb(216, 200, 82)",
"user_41": "rgb(194, 194, 194)",
"user_42": "rgb(89, 148, 220)",
"user_43": "rgb(180, 219, 210)",
"user_44": "rgb(216, 200, 82)",
"user_45": "rgb(194, 194, 194)",
"user_5": "rgb(194, 194, 194)",
"user_6": "rgb(89, 148, 220)",
"user_7": "rgb(180, 219, 210)",
"user_8": "rgb(216, 200, 82)",
"user_9": "rgb(232, 178, 167)"
},
"board": {
"anchor": "rgb(255, 38, 226)",
"aux_items": "rgb(255, 255, 255)",
"b_adhes": "rgb(0, 0, 132)",
"b_crtyd": "rgb(38, 233, 255)",
"b_fab": "rgb(88, 93, 132)",
"b_mask": "rgba(2, 255, 238, 0.400)",
"b_paste": "rgba(0, 194, 194, 0.902)",
"b_silks": "rgb(232, 178, 167)",
"background": "rgb(0, 16, 35)",
"cmts_user": "rgb(89, 148, 220)",
"conflicts_shadow": "rgba(255, 0, 5, 0.502)",
"copper": {
"b": "rgb(77, 127, 196)",
"f": "rgb(200, 52, 52)",
"in1": "rgb(127, 200, 127)",
"in10": "rgb(237, 124, 51)",
"in11": "rgb(91, 195, 235)",
"in12": "rgb(247, 111, 142)",
"in13": "rgb(167, 165, 198)",
"in14": "rgb(40, 204, 217)",
"in15": "rgb(232, 178, 167)",
"in16": "rgb(242, 237, 161)",
"in17": "rgb(237, 124, 51)",
"in18": "rgb(91, 195, 235)",
"in19": "rgb(247, 111, 142)",
"in2": "rgb(206, 125, 44)",
"in20": "rgb(167, 165, 198)",
"in21": "rgb(40, 204, 217)",
"in22": "rgb(232, 178, 167)",
"in23": "rgb(242, 237, 161)",
"in24": "rgb(237, 124, 51)",
"in25": "rgb(91, 195, 235)",
"in26": "rgb(247, 111, 142)",
"in27": "rgb(167, 165, 198)",
"in28": "rgb(40, 204, 217)",
"in29": "rgb(232, 178, 167)",
"in3": "rgb(79, 203, 203)",
"in30": "rgb(242, 237, 161)",
"in4": "rgb(219, 98, 139)",
"in5": "rgb(167, 165, 198)",
"in6": "rgb(40, 204, 217)",
"in7": "rgb(232, 178, 167)",
"in8": "rgb(242, 237, 161)",
"in9": "rgb(141, 203, 129)"
},
"cursor": "rgb(255, 255, 255)",
"drc_error": "rgba(215, 91, 107, 0.800)",
"drc_exclusion": "rgba(255, 255, 255, 0.800)",
"drc_warning": "rgba(255, 208, 66, 0.800)",
"dwgs_user": "rgb(194, 194, 194)",
"eco1_user": "rgb(180, 219, 210)",
"eco2_user": "rgb(216, 200, 82)",
"edge_cuts": "rgb(208, 210, 205)",
"f_adhes": "rgb(132, 0, 132)",
"f_crtyd": "rgb(255, 38, 226)",
"f_fab": "rgb(175, 175, 175)",
"f_mask": "rgba(216, 100, 255, 0.400)",
"f_paste": "rgba(180, 160, 154, 0.902)",
"f_silks": "rgb(242, 237, 161)",
"footprint_text_invisible": "rgb(132, 132, 132)",
"grid": "rgb(132, 132, 132)",
"grid_axes": "rgb(194, 194, 194)",
"locked_shadow": "rgba(255, 38, 226, 0.502)",
"margin": "rgb(255, 38, 226)",
"pad_net_names": "rgba(255, 255, 255, 0.902)",
"pad_plated_hole": "rgb(194, 194, 0)",
"pad_through_hole": "rgb(227, 183, 46)",
"page_limits": "rgb(132, 132, 132)",
"plated_hole": "rgb(26, 196, 210)",
"ratsnest": "rgba(0, 248, 255, 0.349)",
"track_net_names": "rgba(255, 255, 255, 0.702)",
"user_1": "rgb(194, 194, 194)",
"user_10": "rgb(89, 148, 220)",
"user_11": "rgb(180, 219, 210)",
"user_12": "rgb(216, 200, 82)",
"user_13": "rgb(194, 194, 194)",
"user_14": "rgb(89, 148, 220)",
"user_15": "rgb(180, 219, 210)",
"user_16": "rgb(216, 200, 82)",
"user_17": "rgb(194, 194, 194)",
"user_18": "rgb(89, 148, 220)",
"user_19": "rgb(180, 219, 210)",
"user_2": "rgb(89, 148, 220)",
"user_20": "rgb(216, 200, 82)",
"user_21": "rgb(194, 194, 194)",
"user_22": "rgb(89, 148, 220)",
"user_23": "rgb(180, 219, 210)",
"user_24": "rgb(216, 200, 82)",
"user_25": "rgb(194, 194, 194)",
"user_26": "rgb(89, 148, 220)",
"user_27": "rgb(180, 219, 210)",
"user_28": "rgb(216, 200, 82)",
"user_29": "rgb(194, 194, 194)",
"user_3": "rgb(180, 219, 210)",
"user_30": "rgb(89, 148, 220)",
"user_31": "rgb(180, 219, 210)",
"user_32": "rgb(216, 200, 82)",
"user_33": "rgb(194, 194, 194)",
"user_34": "rgb(89, 148, 220)",
"user_35": "rgb(180, 219, 210)",
"user_36": "rgb(216, 200, 82)",
"user_37": "rgb(194, 194, 194)",
"user_38": "rgb(89, 148, 220)",
"user_39": "rgb(180, 219, 210)",
"user_4": "rgb(216, 200, 82)",
"user_40": "rgb(216, 200, 82)",
"user_41": "rgb(194, 194, 194)",
"user_42": "rgb(89, 148, 220)",
"user_43": "rgb(180, 219, 210)",
"user_44": "rgb(216, 200, 82)",
"user_45": "rgb(194, 194, 194)",
"user_5": "rgb(194, 194, 194)",
"user_6": "rgb(89, 148, 220)",
"user_7": "rgb(180, 219, 210)",
"user_8": "rgb(216, 200, 82)",
"user_9": "rgb(232, 178, 167)",
"via_blind_buried": "rgb(187, 151, 38)",
"via_hole": "rgb(227, 183, 46)",
"via_hole_walls": "rgb(236, 236, 236)",
"via_micro": "rgb(0, 132, 132)",
"via_net_names": "rgba(50, 50, 50, 0.902)",
"via_through": "rgb(236, 236, 236)",
"worksheet": "rgb(200, 114, 171)"
},
"gerbview": {
"axes": "rgb(0, 0, 132)",
"background": "rgb(0, 0, 0)",
"dcodes": "rgb(255, 255, 255)",
"grid": "rgb(132, 132, 132)",
"layers": [
"rgb(200, 52, 52)",
"rgb(127, 200, 127)",
"rgb(206, 125, 44)",
"rgb(79, 203, 203)",
"rgb(219, 98, 139)",
"rgb(167, 165, 198)",
"rgb(40, 204, 217)",
"rgb(232, 178, 167)",
"rgb(242, 237, 161)",
"rgb(141, 203, 129)",
"rgb(237, 124, 51)",
"rgb(91, 195, 235)",
"rgb(247, 111, 142)",
"rgb(77, 127, 196)",
"rgb(200, 52, 52)",
"rgb(127, 200, 127)",
"rgb(206, 125, 44)",
"rgb(79, 203, 203)",
"rgb(219, 98, 139)",
"rgb(167, 165, 198)",
"rgb(40, 204, 217)",
"rgb(232, 178, 167)",
"rgb(242, 237, 161)",
"rgb(141, 203, 129)",
"rgb(237, 124, 51)",
"rgb(91, 195, 235)",
"rgb(247, 111, 142)",
"rgb(77, 127, 196)",
"rgb(200, 52, 52)",
"rgb(127, 200, 127)",
"rgb(206, 125, 44)",
"rgb(79, 203, 203)",
"rgb(219, 98, 139)",
"rgb(167, 165, 198)",
"rgb(40, 204, 217)",
"rgb(232, 178, 167)",
"rgb(242, 237, 161)",
"rgb(141, 203, 129)",
"rgb(237, 124, 51)",
"rgb(91, 195, 235)",
"rgb(247, 111, 142)",
"rgb(77, 127, 196)",
"rgb(200, 52, 52)",
"rgb(127, 200, 127)",
"rgb(206, 125, 44)",
"rgb(79, 203, 203)",
"rgb(219, 98, 139)",
"rgb(167, 165, 198)",
"rgb(40, 204, 217)",
"rgb(232, 178, 167)",
"rgb(242, 237, 161)",
"rgb(141, 203, 129)",
"rgb(237, 124, 51)",
"rgb(91, 195, 235)",
"rgb(247, 111, 142)",
"rgb(77, 127, 196)",
"rgb(200, 52, 52)",
"rgb(127, 200, 127)",
"rgb(206, 125, 44)",
"rgb(79, 203, 203)",
"rgb(219, 98, 139)",
"rgb(167, 165, 198)",
"rgb(40, 204, 217)",
"rgb(232, 178, 167)"
],
"negative_objects": "rgb(132, 132, 132)",
"page_limits": "rgb(132, 132, 132)",
"worksheet": "rgb(0, 0, 132)"
},
"meta": {
"name": "Altium_Theme",
"version": 5
},
"schematic": {
"anchor": "rgb(0, 0, 255)",
"aux_items": "rgb(0, 0, 0)",
"background": "rgb(245, 244, 239)",
"brightened": "rgb(255, 0, 255)",
"bus": "rgb(0, 0, 132)",
"bus_junction": "rgb(0, 0, 132)",
"component_body": "rgb(255, 255, 194)",
"component_outline": "rgb(132, 0, 0)",
"cursor": "rgb(15, 15, 15)",
"dnp_marker": "rgba(220, 9, 13, 0.851)",
"erc_error": "rgba(230, 9, 13, 0.800)",
"erc_exclusion": "rgba(94, 194, 194, 0.800)",
"erc_warning": "rgba(209, 146, 0, 0.800)",
"excluded_from_sim": "rgba(194, 194, 194, 0.949)",
"fields": "rgb(132, 0, 132)",
"grid": "rgb(181, 181, 181)",
"grid_axes": "rgb(0, 0, 132)",
"hidden": "rgb(94, 194, 194)",
"hovered": "rgb(0, 0, 255)",
"junction": "rgb(0, 0, 0)",
"label_global": "rgb(132, 0, 0)",
"label_hier": "rgb(114, 86, 0)",
"label_local": "rgb(132, 0, 0)",
"netclass_flag": "rgb(72, 72, 72)",
"no_connect": "rgb(0, 0, 132)",
"note": "rgb(0, 0, 194)",
"note_background": "rgba(0, 0, 0, 0.000)",
"op_currents": "rgb(224, 0, 12)",
"op_voltages": "rgb(132, 0, 50)",
"override_item_colors": false,
"page_limits": "rgb(181, 181, 181)",
"pin": "rgb(0, 0, 0)",
"pin_name": "rgb(0, 0, 0)",
"pin_number": "rgb(0, 0, 0)",
"private_note": "rgb(72, 72, 255)",
"reference": "rgb(0, 0, 194)",
"rule_area": "rgb(255, 0, 0)",
"shadow": "rgba(102, 179, 255, 0.800)",
"sheet": "rgb(0, 0, 0)",
"sheet_background": "rgba(255, 255, 255, 0.000)",
"sheet_fields": "rgb(132, 0, 132)",
"sheet_filename": "rgb(0, 0, 132)",
"sheet_label": "rgb(0, 0, 0)",
"sheet_name": "rgb(0, 0, 132)",
"value": "rgb(0, 0, 194)",
"wire": "rgb(0, 0, 0)",
"worksheet": "rgb(0, 0, 0)"
}
}

BIN
kibot/fonts/Arial Bold.ttf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
kibot/fonts/Arial.ttf Normal file

Binary file not shown.

BIN
kibot/fonts/Inconsolata.ttf Normal file

Binary file not shown.

View File

@@ -0,0 +1,27 @@
#!/bin/sh
# ============================================================================
# KiBot Template Bootstrapping Script
# ============================================================================
# Create the Development Branch
git checkout -b dev
echo "Created Development Branch"
# Add the Asymworks KiCad Library
git remote add -f asymworks-kicad-lib https://git.asymworks.com/asymworks/kicad-library
git subtree add --prefix lib/asymworks asymworks-kicad-lib main --squash -m "[bootstrap] Add subtree 'Asymworks/KiCad-Library' at 'lib/asymworks'"
echo "Added Asymworks KiCad Library"
# Rename the KiCad Project based on the directory name
PROJ_NAME=$(basename "$PWD")
git mv Asymworks_Template.kicad_pro "${PROJ_NAME}.kicad_pro"
git mv Asymworks_Template.kicad_sch "${PROJ_NAME}.kicad_sch"
git mv Asymworks_Template.kicad_pcb "${PROJ_NAME}.kicad_pcb"
git commit -a -m 'Rename Project'
echo "Renamed project to \"${PROJ_NAME}.kicad_pro\""
# Push the Develpment Branch to Gitea
git push -u origin dev
# Bootstrap Complete
echo "Bootstrap complete. Please run 'git pull' after the CI action finishes.'"

View File

@@ -0,0 +1,49 @@
import argparse
import xml.etree.ElementTree as ET
import sys
def get_sheet_title(file_path, page_number, dots_number):
try:
tree = ET.parse(file_path)
root = tree.getroot()
page_number = str(page_number)
titles = []
for sheet in root.findall(".//sheet"):
number = sheet.get("number")
if number == page_number:
# Get the last part of the 'name' attribute after '/'
name = sheet.get("name")
title_block = sheet.find("title_block")
title = title_block.find("title").text if title_block is not None else None
if name:
titles.append(name.split("/")[-2 if name.endswith("/") else -1])
if not titles:
print('.'*dots_number)
elif len(set(titles)) > 1:
print("Conflicting page numbers")
else:
print(titles[0])
except ET.ParseError:
print("Error: Invalid XML format")
except FileNotFoundError:
print("Error: XML File not found")
except Exception as e:
print(f"Error: {e}")
def main():
parser = argparse.ArgumentParser(description="Get the sheet title based on page number from a KiCad XML file")
parser.add_argument("-p", "--page-number", type=int, required=True, help="Page number to search")
parser.add_argument("-f", "--file", type=str, required=True, help="Path to the schematic XML file")
parser.add_argument("-d", "--dots-number", type=int, required=True, help="Number of dots for empty lines")
args = parser.parse_args()
get_sheet_title(args.file, args.page_number, args.dots_number)
if __name__ == "__main__":
main()

View File

View File

@@ -0,0 +1,55 @@
FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED)
1) FABRICATE PER IPC-6012A CLASS 2.
2) OUTLINE DEFINED IN SEPARATE GERBER FILE WITH
"Edge_Cuts.GBR" SUFFIX.
3) SEE SEPARATE DRILL FILES WITH ".DRL" SUFFIX
FOR HOLE LOCATIONS.
SELECTED HOLE LOCATIONS SHOWN ON THIS DRAWING
FOR REFERENCE ONLY.
4) SURFACE FINISH: ${pcb_finish_cap}
5) SOLDERMASK ON BOTH SIDES OF THE BOARD SHALL
BE LPI, COLOR ${solder_mask_color_text_cap}.
6) SILK SCREEN LEGEND TO BE APPLIED PER LAYER
STACKUP USING ${silk_screen_color_text_cap} NON-CONDUCTIVE EPOXY INK.
7) ALL VIAS ARE TENTED ON BOTH SIDES UNLESS
SOLDERMASK OPENED IN GERBER.
8) RESERVED
9) PCB MATERIAL REQUIREMENTS:
A. FLAMMABILITY RATING MUST MEET OR EXCEED
UL94V-0 REQUIREMENTS.
B. Tg 135 C OR EQUIVALENT.
10) DESIGN GEOMETRY MINIMUM FEATURE SIZES:
BOARD SIZE ${bb_w_mm} × ${bb_h_mm} mm
BOARD THICKNESS ${thickness_mm} mm
TRACE WIDTH ${track_mm} mm
TRACE TO TRACE ${clearance_mm} mm
MIN. HOLE (PTH) ${drill_pth_real_mm} mm
MIN. HOLE (NPTH) ${drill_npth_real_mm} mm
ANNULAR RING ${oar_mm} mm
COPPER TO HOLE ${c2h_mm} mm
COPPER TO EDGE ${c2e_mm} mm
HOLE TO HOLE ${h2h_mm} mm
11) ALL DIMENSIONS ARE IN MILLIMETERS UNLESS OTHERWISE
SPECIFIED.
#?stackup and impedance_controlled
#?stackup and impedance_controlled
12) REFER TO IMPEDANCE TABLE FOR IMPEDANCE CONTROL REQUIREMENTS.
#?stackup and impedance_controlled
#?stackup and impedance_controlled
13) CONFIRM SPACE WIDTHS AND SPACINGS.

View File

View File

@@ -0,0 +1 @@
Unless otherwise specified, components Values are in ohms, µF, and µH.

View File

@@ -0,0 +1,17 @@
# KiBot Filter for excluding testpoints
kibot:
version: 1
filters:
- name: '@NAME@'
comment: '@COMMENT@'
type: generic
exclude_any:
- column: Reference
regex: "TP"
...
definitions:
COMMENT: Exclude only testpoints
NAME: exclude_testpoints

View File

@@ -0,0 +1,21 @@
# KiBot Filter for renaming Manufacturer Part Number field
kibot:
version: 1
filters:
- name: '@NAME@'
comment: '@COMMENT@'
type: field_rename
rename:
- field: '@MPN_FIELD@'
name: manf#
- field: '@MAN_FIELD@'
name: manf
...
definitions:
COMMENT: Rename fields
NAME: field_rename
MPN_FIELD: 'Manufacturer PN'
MAN_FIELD: 'Manufacturer'

View File

@@ -0,0 +1,17 @@
# KiBot Filter for components with an LCSC Part Number
kibot:
version: 1
filters:
- name: @NAME@
comment: '@COMMENT@'
type: generic
include_only:
- column: _field_lcsc_part
regex: '^C\d+'
...
definitions:
COMMENT: Only parts with LCSC Part Number
NAME: only_lcsc_parts

View File

@@ -0,0 +1,25 @@
# KiBot Filter for testpoints
# These filters are used for multiple outputs to highlight testpoints
# or generate testpoint lists for top and bottom layers
kibot:
version: 1
filters:
- name: '@NAME@'
comment: '@COMMENT@'
type: generic
exclude_top: @EXCLUDE_TOP@
exclude_bottom: @EXCLUDE_BOTTOM@
include_only:
- column: Reference
regex: "TP"
exclude_refs: @EXCLUDE_REFS@
...
definitions:
COMMENT: Select only testpoints
NAME: only_testpoints
EXCLUDE_TOP: false
EXCLUDE_BOTTOM: false
EXCLUDE_REFS: '[MB*]'

View File

@@ -0,0 +1,20 @@
# KiBot Globals
# https://kibot.readthedocs.io/en/latest/configuration/global.html
kibot:
version: 1
global:
resources_dir: 'kibot'
out_dir: '@OUTPUT_DIR@'
dnp_cross_top_layer: '@LAYER_DNP_TOP@'
dnp_cross_bottom_layer: '@LAYER_DNP_BOTTOM@'
disable_kicad_cross_on_fab: true
extra_pth_drill: 0 # for annular ring computation.
filters: []
...
definitions:
OUTPUT_DIR: ./
LAYER_DNP_TOP: F.DNP
LAYER_DNP_BOTTOM: B.DNP

828
kibot/yaml/kibot_main.yaml Normal file
View File

@@ -0,0 +1,828 @@
# KiBot configuration file for Asymworks_KiBot Template
# KiCad 9.0
kibot:
version: 1
variants: []
# ============================================================================
# Output Groups
groups:
# Top-Level Groups =========================================================
# Pre-Process Group (generates Notes and Netlist for set_text_variables) ---
- name: preprocess_group
outputs:
- @NETLIST_OUTPUT@
- @TXT_SCH_NOTES_OUTPUT@
- @TXT_FAB_NOTES_OUTPUT@
- @TXT_ASSY_NOTES_OUTPUT@
# Draft Outputs Group (used in DRAFT state only) ---------------------------
- name: draft_group
outputs:
- @NETLIST_OUTPUT@
- @TXT_SCH_NOTES_OUTPUT@
- @PDF_SCHEMATIC_OUTPUT@
- @CSV_BOM_OUTPUT@
- @HTML_BOM_OUTPUT@
# All Outputs Group (used in all other states) -----------------------------
- name: all_group
outputs:
- bom
- renders
- models
- fab
- jlcpcb
- panels
- assembly
- @PDF_SCHEMATIC_OUTPUT@
- @HTML_NAV_RES_OUTPUT@
# All Outputs Group, including KiRi (not enabled by default) ---------------
- name: all_group_kiri
outputs:
- bom
- renders
- models
- fab
- jlcpcb
- panels
- assembly
- @PDF_SCHEMATIC_OUTPUT@
- @HTML_KIRI_OUTPUT@
- @HTML_NAV_RES_OUTPUT@
# Panel Fabrication Outputs Group (not used in DRAFT state) ----------------
- name: panel_fab_jlcpcb_group
outputs: []
# Output Sub-Groups ========================================================
# Bill of Material Outputs -------------------------------------------------
- name: bom
outputs:
- @CSV_BOM_OUTPUT@
- @HTML_BOM_OUTPUT@
- @HTML_IBOM_OUTPUT@
# PCB Render Outputs -------------------------------------------------------
- name: renders
outputs:
- @PCBDRAW_2D_TOP_PCB_OUTPUT@
- @PCBDRAW_2D_BOT_PCB_OUTPUT@
- @PNG_3D_VIEWER_TOP@
- @PNG_3D_VIEWER_BOT@
- @PNG_3D_VIEWER_ANGLED_TOP@
- @PNG_3D_VIEWER_ANGLED_BOT@
- @BLENDER_3D_TOP@
- @BLENDER_3D_BOT@
- @BLENDER_3D_ANGLED_TOP@
- @BLENDER_3D_ANGLED_BOT@
# PCB 3d Model Outputs -----------------------------------------------------
- name: models
outputs:
- @STEP_OUTPUT@
- @GLB_OUTPUT@
# Fabrication Outputs ------------------------------------------------------
- name: fab
outputs:
- tables
- @GERBER_OUTPUT@
- @EXCELLON_DRILL_OUTPUT@
- @ODB_OUTPUT@
- @PDF_DRILL_MAP_OUTPUT@
- @PDF_FABRICATION_OUTPUT@
- @ZIP_COMPRESS_FAB_OUTPUT@
- name: tables
outputs:
- @CSV_COMP_COUNT_OUPUT@
- @CSV_IMPEDANCE_TABLE_OUTPUT@
- @CSV_DRILL_TABLE_OUTPUT@
- testpoints
- name: testpoints
outputs:
- @CSV_TP_OUTPUT@
- @CSV_TP_TOP_OUTPUT@
- @CSV_TP_BOTTOM_OUTPUT@
# JLCPCB Fabrication and Assembly Outputs ----------------------------------
- name: jlcpcb
outputs:
- @JLCPCB_GERBER_OUTPUT@
- @JLCPCB_FABPACK_OUTPUT@
- @JLCPCB_BOM_OUTPUT@
- @JLCPCB_CPL_OUTPUT@
# Assembly Outputs ---------------------------------------------------------
- name: assembly
outputs:
- @CSV_POS_OUTPUT@
- @PDF_ASSEMBLY_OUTPUT@
# Panelization Outputs -----------------------------------------------------
- name: panels
outputs: [ @PANEL_800_OUTPUT@ ]
# ============================================================================
# Imports
import:
# Global Parameters ========================================================
- file: kibot_globals.yaml
definitions:
OUTPUT_DIR: @OUTPUT_DIR@
LAYER_DNP_TOP: @LAYER_DNP_TOP@
LAYER_DNP_BOT: @LAYER_DNP_BOTTOM@
# Filters ==================================================================
- file: kibot_filt_field_rename.yaml
definitions:
NAME: @FILT_FIELD_RENAME@
COMMENT: Rename fields
MPN_FIELD: @MPN_FIELD@
MAN_FIELD: @MAN_FIELD@
- file: kibot_filt_testpoints.yaml
definitions:
NAME: @FILT_TP_ONLY@
COMMENT: Include only testpoints
- file: kibot_filt_exclude_testpoints.yaml
definitions:
NAME: @FILT_TP_EXCLUDE@
COMMENT: Exclude only testpoints
- file: kibot_filt_testpoints.yaml
definitions:
NAME: @FILT_TP_TOP_ONLY@
COMMENT: Select only top testpoints
EXCLUDE_BOTTOM: true
EXCLUDE_REFS: "@TP_EXCLUDE_REFS@"
- file: kibot_filt_testpoints.yaml
definitions:
NAME: @FILT_TP_BOTTOM_ONLY@
COMMENT: Select only bottom testpoints
EXCLUDE_TOP: true
EXCLUDE_REFS: "@TP_EXCLUDE_REFS@"
- file: kibot_filt_lcsc_parts.yaml
definitions:
NAME: @FILT_LCSC_PARTS@
COMMENT: Only parts with LCSC Part Number
# Preflights ===============================================================
- file: kibot_pre_set_text_variables.yaml
definitions:
PROJECT_CODE: @PROJECT_CODE@
ASSEMBLY_NUMBER: @ASSEMBLY_NUMBER@
ASSEMBLY_NAME: @ASSEMBLY_NAME@
COMPANY: @COMPANY@
DESIGNER: @DESIGNER@
SCRIPTS_DIR: @SCRIPTS_DIR@
FABRICATION_DIR: @FABRICATION_DIR@
ASSEMBLY_DIR: @ASSEMBLY_DIR@
# Generate ERC Report
- file: kibot_pre_erc_report.yaml
definitions:
DIR: @REPORT_DIR@
# Generate DRC Report
- file: kibot_pre_drc_report.yaml
definitions:
CHECK_ZONE_FILLS: @CHECK_ZONE_FILLS@
DIR: @REPORT_DIR@
# Draw stackup table in PCB. Needs gerber output
- file: kibot_pre_draw_stackup.yaml
definitions:
GERBER_OUTPUT: @GERBER_OUTPUT@
NOTE: @STACKUP_TABLE_NOTE@
# Include tables for PCB and Assembly Drawings
- file: kibot_pre_include_table.yaml
definitions:
NAME_TP_TOP: @CSV_TP_TOP_OUTPUT@
NAME_TP_BOTTOM: @CSV_TP_BOTTOM_OUTPUT@
NAME_COMP_COUNT: @CSV_COMP_COUNT_OUPUT@
NAME_CSV_DRILL_TABLE: @CSV_DRILL_TABLE_OUTPUT@
NAME_IMPEDANCE_TABLE: @CSV_IMPEDANCE_TABLE_OUTPUT@
# Generated Outputs ========================================================
# Schematic Netlist --------------------------------------------------------
- file: kibot_out_netlist.yaml
definitions:
NAME: @NETLIST_OUTPUT@
COMMENT: Schematic netlist in KiCad format
# Drawings in PDF format ---------------------------------------------------
- file: kibot_out_pdf_schematic.yaml
definitions:
NAME: @PDF_SCHEMATIC_OUTPUT@
COMMENT: Schematic in PDF format
COLOR_THEME: @COLOR_THEME@
DIR: @SCHEMATIC_DIR@
DEFAULT_FONT: 'Arial Narrow'
SHEET_WKS: @SHEET_WKS_SCH@
# Bills of Materials (BOMs) ------------------------------------------------
- file: kibot_out_csv_bom.yaml
definitions:
NAME: @CSV_BOM_OUTPUT@
COMMENT: Bill of Materials in CSV format
DIR: @ASSEMBLY_DIR@
IPN_FIELD: @IPN_FIELD@
MPN_FIELD: @MPN_FIELD@
MAN_FIELD: @MAN_FIELD@
- file: kibot_out_html_bom.yaml
definitions:
NAME: @HTML_BOM_OUTPUT@
COMMENT: Bill of Materials in HTML format
DIR: @ASSEMBLY_DIR@
IPN_FIELD: @IPN_FIELD@
MPN_FIELD: @MPN_FIELD@
MAN_FIELD: @MAN_FIELD@
- file: kibot_out_html_ibom.yaml
definitions:
NAME: @HTML_IBOM_OUTPUT@
COMMENT: Bill of Materials in HTML format
DIR: @ASSEMBLY_DIR@
IPN_FIELD: @IPN_FIELD@
MPN_FIELD: @MPN_FIELD@
MAN_FIELD: @MAN_FIELD@
# Generate Webpage with Diff's ---------------------------------------------
- file: kibot_out_html_kiri.yaml
definitions:
NAME: @HTML_KIRI_OUTPUT@
COMMENT: KiRI webpage
DIR: kiri
# Generate HTML Navigation of Outputs --------------------------------------
- file: kibot_out_navigate_results.yaml
definitions:
NAME: @HTML_NAV_RES_OUTPUT@
COMMENT: Results webpage in HTML format
DIR: html
TITLE: '@ASSEMBLY_NUMBER@ (@ASSEMBLY_NAME@)'
# LOGO: @LOGO@
# LOGO_URL: @GIT_URL@
# PCB 2D Renders (Bare Board) ------------------------------------------
- file: kibot_out_pcbdraw.yaml
definitions:
NAME: @PCBDRAW_2D_TOP_PCB_OUTPUT@
COMMENT: PCB 2D Render (Top)
DIR: @RENDER_DIR@
FORMAT: svg
BOTTOM: false
COMPONENTS: none
- file: kibot_out_pcbdraw.yaml
definitions:
NAME: @PCBDRAW_2D_BOT_PCB_OUTPUT@
COMMENT: PCB 2D Render (Bottom)
DIR: @RENDER_DIR@
FORMAT: svg
BOTTOM: true
COMPONENTS: none
# PCBA 3D Renders (Populated Board; KiCad Viewer) --------------------------
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_TOP@
COMMENT: Top 3D viewer PCB render in PNG format
DIR: @RENDER_DIR@
SUFFIX: top
VIEW: top
KEY_COLOR: '@KEY_COLOR@'
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_BOT@
COMMENT: Bottom 3D viewer PCB render in PNG format
DIR: @RENDER_DIR@
SUFFIX: bottom
VIEW: bottom
KEY_COLOR: '@KEY_COLOR@'
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_ANGLED_TOP@
COMMENT: Top (angled) 3D viewer PCB render in PNG format
DIR: @RENDER_DIR@
SUFFIX: angled_top
VIEW: top
ROTATE_X: @3D_VIEWER_ROT_X@
ROTATE_Y: @3D_VIEWER_ROT_Y@
ROTATE_Z: @3D_VIEWER_ROT_Z@
ZOOM: @3D_VIEWER_ZOOM@
KEY_COLOR: '@KEY_COLOR@'
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_ANGLED_BOT@
COMMENT: Bottom (angled) 3D viewer PCB render in PNG format
DIR: @RENDER_DIR@
SUFFIX: angled_bottom
VIEW: bottom
ROTATE_X: @3D_VIEWER_ROT_X@
ROTATE_Y: @3D_VIEWER_ROT_Y@
ROTATE_Z: -@3D_VIEWER_ROT_Z@
ZOOM: @3D_VIEWER_ZOOM@
KEY_COLOR: '@KEY_COLOR@'
# PCBA 3D Renders (Populated Board; Blender) -------------------------------
- file: kibot_out_blender.yaml
definitions:
NAME: @BLENDER_3D_TOP@
COMMENT: High Quality 3D Render (Top)
DIR: @RENDER_DIR@
VIEW: top
ROTATE_X: 0
ROTATE_Y: 0
ROTATE_Z: 0
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @RENDER_DNF_FILTER@
BACK_LIGHT: 0
POINT_LIGHT: 0.001
- file: kibot_out_blender.yaml
definitions:
NAME: @BLENDER_3D_BOT@
COMMENT: High Quality 3D Render (Bottom)
DIR: @RENDER_DIR@
VIEW: bottom
ROTATE_X: 0
ROTATE_Y: 0
ROTATE_Z: 0
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @RENDER_DNF_FILTER@
BACK_LIGHT: 0
POINT_LIGHT: 0.001
- file: kibot_out_blender.yaml
definitions:
NAME: @BLENDER_3D_ANGLED_TOP@
COMMENT: High Quality 3D Render (Angled Top)
DIR: @RENDER_DIR@
VIEW: top
ROTATE_X: @BLENDER_ROT_X@
ROTATE_Y: @BLENDER_ROT_Y@
ROTATE_Z: @BLENDER_ROT_Z@
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @RENDER_DNF_FILTER@
BACK_LIGHT: 1
POINT_LIGHT: 0
- file: kibot_out_blender.yaml
definitions:
NAME: @BLENDER_3D_ANGLED_BOT@
COMMENT: High Quality 3D Render (Angled Bottom)
DIR: @RENDER_DIR@
VIEW: bottom
ROTATE_X: -@BLENDER_ROT_X@
ROTATE_Y: @BLENDER_ROT_Y@
ROTATE_Z: @BLENDER_ROT_Z@
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @RENDER_DNF_FILTER@
BACK_LIGHT: 1
POINT_LIGHT: 0
# STEP File ----------------------------------------------------------------
- file: kibot_out_3d_model.yaml
definitions:
NAME: @STEP_OUTPUT@
COMMENT: PCB 3D model in STEP format
FORMAT: step
DIR: @MODELS_DIR@
INCLUDE_SILKSCREEN: false
INCLUDE_SOLDERMASK: false
INCLUDE_TRACKS: false
- file: kibot_out_3d_model.yaml
definitions:
NAME: @GLB_OUTPUT@
COMMENT: PCB 3D model in GLB/gITF format
FORMAT: glb
DIR: @MODELS_DIR@
INCLUDE_SILKSCREEN: true
INCLUDE_SOLDERMASK: false
INCLUDE_TRACKS: false
# Fabrication Files (Non-Vendor Specific) ----------------------------------
- file: kibot_out_gerber.yaml
definitions:
NAME: @GERBER_OUTPUT@
COMMENT: Gerbers in GBR format
DIR: @GERBERS_DIR@
PLOT_REFS: @PLOT_REFS@
PROTEL_EXTENSIONS: @PROTEL_EXTENSIONS@
SUBTRACT_MASK: @SUBTRACT_MASK@
# Excellon Drill
- file: kibot_out_excellon_drill.yaml
definitions:
NAME: @EXCELLON_DRILL_OUTPUT@
COMMENT: Drill in Excellon format
DIR: @GERBERS_DIR@
METRIC_UNITS: @EXCELLON_METRIC_UNITS@
# ODB++
- file: kibot_out_odb.yaml
definitions:
NAME: @ODB_OUTPUT@
COMMENT: ODB++ in ZIP format
DIR: @FABRICATION_DIR@
# PDF Drill Map
- file: kibot_out_excellon_drill.yaml
definitions:
NAME: @PDF_DRILL_MAP_OUTPUT@
COMMENT: Drill Map in PDF format
DIR: @GERBERS_DIR@
METRIC_UNITS: @EXCELLON_METRIC_UNITS@
GENERATE_DRILL: false
PTH_NPTH: @GROUP_PTH_NPTH_DRL@
MAP_FORMAT: pdf
# CSV Drill Table
- file: kibot_out_csv_drill_table.yaml
definitions:
NAME: @CSV_DRILL_TABLE_OUTPUT@
COMMENT: Drill Table in CSV format
DIR: @FAB_DRILL_TABLES_DIR@
PTH_NPTH: '@GROUP_PTH_NPTH@'
GROUP_ROUND_SLOTS: @GROUP_ROUND_SLOTS@
# CSV Component Placement File
- file: kibot_out_csv_position.yaml
definitions:
NAME: @CSV_POS_OUTPUT@
COMMENT: Position file in CSV format
DIR: @ASSEMBLY_DIR@
# CSV Test Point Files
- file: kibot_out_csv_testpoints.yaml
definitions:
NAME: @CSV_TP_OUTPUT@
COMMENT: Testpoint report in CSV format
DIR: @TESTPOINTS_DIR@
EXCLUDE_FILTER: @FILT_TP_ONLY@
- file: kibot_out_csv_testpoints_simple.yaml
definitions:
NAME: @CSV_TP_TOP_OUTPUT@
COMMENT: Top testpoint report in CSV format
DIR: @TESTPOINTS_DIR@
SUFFIX: -top
EXCLUDE_FILTER: @FILT_TP_TOP_ONLY@
- file: kibot_out_csv_testpoints_simple.yaml
definitions:
NAME: @CSV_TP_BOTTOM_OUTPUT@
COMMENT: Bottom testpoint report in CSV format
DIR: @TESTPOINTS_DIR@
SUFFIX: -bottom
EXCLUDE_FILTER: @FILT_TP_BOTTOM_ONLY@
# Fabrication and Assembly Drawings
- file: kibot_out_pdf_fabrication.yaml
definitions:
NAME: @PDF_FABRICATION_OUTPUT@
COMMENT: Fabrication document in PDF format
DIR: @FABRICATION_DIR@
COLOR_THEME: @COLOR_THEME@
SHEET_WKS: @SHEET_WKS_PCB@
SCALING: @FAB_SCALING@
PTH_NPTH: '@GROUP_PTH_NPTH@'
GROUP_ROUND_SLOTS: @GROUP_ROUND_SLOTS@
FAB_EXCLUDE_FILTER: @FILT_TP_ONLY@
LAYER_DRILL_MAP: @LAYER_DRILL_MAP@
LAYER_TP_LIST_TOP: @LAYER_TP_LIST_TOP@
LAYER_TP_LIST_BOTTOM: @LAYER_TP_LIST_BOTTOM@
NAME_TP_TOP: @CSV_TP_TOP_OUTPUT@
NAME_TP_BOTTOM: @CSV_TP_BOTTOM_OUTPUT@
NAME_IMPEDANCE_TABLE: @CSV_IMPEDANCE_TABLE_OUTPUT@
NAME_DRILL_TABLE: @CSV_DRILL_TABLE_OUTPUT@
- file: kibot_out_pdf_assembly.yaml
definitions:
NAME: @PDF_ASSEMBLY_OUTPUT@
COMMENT: Assembly document in PDF format
DIR: @ASSEMBLY_DIR@
COLOR_THEME: @COLOR_THEME@
SHEET_WKS: @SHEET_WKS_ASSY@
SCALING: @ASSEMBLY_SCALING@
FAB_EXCLUDE_FILTER: @FILT_TP_EXCLUDE@
LAYER_TITLE_PAGE: @LAYER_TITLE_PAGE@
LAYER_ASSEMBLY_TEXT_TOP: @LAYER_ASSEMBLY_TEXT_TOP@
LAYER_ASSEMBLY_TEXT_BOTTOM: @LAYER_ASSEMBLY_TEXT_BOTTOM@
LAYER_DNP_CROSS_TOP: @LAYER_DNP_CROSS_TOP@
LAYER_DNP_CROSS_BOTTOM: @LAYER_DNP_CROSS_BOTTOM@
NAME_COMP_COUNT: @CSV_COMP_COUNT_OUPUT@
# Zip File of Fabrication Data
- file: kibot_out_compress_fab.yaml
definitions:
NAME: @ZIP_COMPRESS_FAB_OUTPUT@
COMMENT: Generates a ZIP file with gerbers, drill and fabrication document
DIR: @FABRICATION_DIR@
GERBER_OUTPUT: @GERBER_OUTPUT@
DRILL_MAP_OUTPUT: @PDF_DRILL_MAP_OUTPUT@
DRILL_OUTPUT: @EXCELLON_DRILL_OUTPUT@
FABRICATION_OUTPUT: @PDF_FABRICATION_OUTPUT@
# Fabrication and Assembly Files (JLCPCB) ----------------------------------
- file: kibot_out_gerber.yaml
definitions:
NAME: @JLCPCB_GERBER_OUTPUT@
COMMENT: Gerbers in GBR format for JLCPCB
DIR: @JLCPCB_GERBERS_DIR@
PLOT_REFS: true
PROTEL_EXTENSIONS: true
SUBTRACT_MASK: false
- file: kibot_out_jlcpcb_fabpack.yaml
definitions:
NAME: @JLCPCB_FABPACK_OUTPUT@
COMMENT: Zipped Fabpack for JLCPCB
DIR: @JLCPCB_FAB_DIR@
GERBER_OUTPUT: @JLCPCB_GERBER_OUTPUT@
DRILL_OUTPUT: @EXCELLON_DRILL_OUTPUT@
- file: kibot_out_jlcpcb_bom.yaml
definitions:
NAME: @JLCPCB_BOM_OUTPUT@
COMMENT: Bill of Materials for JLCPCB
DIR: @JLCPCB_ASSY_DIR@
EXCLUDE_FILTER: @FILT_LCSC_PARTS@
- file: kibot_out_jlcpcb_cpl.yaml
definitions:
NAME: @JLCPCB_CPL_OUTPUT@
COMMENT: Component Placement File for JLCPCB
DIR: @JLCPCB_ASSY_DIR@
EXCLUDE_FILTER: @FILT_LCSC_PARTS@
# Notes and Reports --------------------------------------------------------
- file: kibot_out_csv_report.yaml
definitions:
NAME: @CSV_COMP_COUNT_OUPUT@
COMMENT: Component report (count) in CSV format
DIR: @ASSEMBLY_DIR@
OUTPUT_ID: components_count
TEMPLATE: total_components
- file: kibot_out_csv_report.yaml
definitions:
NAME: @CSV_IMPEDANCE_TABLE_OUTPUT@
COMMENT: Impedance table in CSV format
DIR: @FABRICATION_DIR@
OUTPUT_ID: impedance_table
TEMPLATE: @REPORT_TEMPLATE_DIR@/impedance_table.txt
- file: kibot_out_txt_report.yaml
definitions:
NAME: @TXT_SCH_NOTES_OUTPUT@
COMMENT: Schematic notes in TXT format
DIR: @SCHEMATIC_DIR@
OUTPUT_ID: schematic_notes
TEMPLATE: @REPORT_TEMPLATE_DIR@/schematic_notes.txt
- file: kibot_out_txt_report.yaml
definitions:
NAME: @TXT_FAB_NOTES_OUTPUT@
COMMENT: Fabrication notes in TXT format
DIR: @FABRICATION_DIR@
OUTPUT_ID: fabrication_notes
TEMPLATE: @REPORT_TEMPLATE_DIR@/fabrication_notes.txt
- file: kibot_out_txt_report.yaml
definitions:
NAME: @TXT_ASSY_NOTES_OUTPUT@
COMMENT: Assembly notes in TXT format
DIR: @ASSEMBLY_DIR@
OUTPUT_ID: fabrication_notes
TEMPLATE: @REPORT_TEMPLATE_DIR@/assembly_notes.txt
# Panelization Outputs -----------------------------------------------------
- file: kibot_out_panelize.yaml
definitions:
NAME: @PANEL_800_OUTPUT@
DIR: '@PANELS_DIR@/panel-800'
CONFIG: '@PANEL_800_CONFIG@'
TITLE: '@PANEL_800_TITLE@'
# ============================================================================
# Definitions
...
definitions:
# Project Metadata =========================================================
PROJECT_CODE: P99
ASSEMBLY_NUMBER: A99-9000
ASSEMBLY_NAME: Assembly Name
GIT_URL: /jkrauss/Test_4
COMPANY: Asymworks, LLC
DESIGNER: JPK
DWG_NUMBER_SCH: S99-9000
DWG_TITLE_SCH: Schematic, Assembly Name
DWG_NUMBER_PCB: P99-9000
DWG_TITLE_PCB: PCB, Assembly Name
DWG_TITLE_ASSY: PCB Assembly, Assembly Name
# Panel Configurations -----------------------------------------------------
PANEL_800_OUTPUT: panel_801
PANEL_800_CONFIG: '@PANELS_DIR@/panel-800.json'
PANEL_800_TITLE: Panel Fabrication (Panel -800)
# Preflight ================================================================
CHECK_ZONE_FILLS: false
STACKUP_TABLE_NOTE: external layer thicknesses are specified after plating
# BOM ======================================================================
IPN_FIELD: 'Asymworks IPN'
MPN_FIELD: 'Manufacturer PN'
MAN_FIELD: 'Manufacturer'
# Drill Table and Drill Map Parameters =====================================
GROUP_ROUND_SLOTS: true # whether or not to group round holes and slots
GROUP_PTH_NPTH: 'no' # for drill tables (CSV, PCB Print)
GROUP_PTH_NPTH_DRL: false # for .drl files
# Gerber Parameters ========================================================
PLOT_REFS: true # reference designators
PROTEL_EXTENSIONS: false # use Protel extensions
SUBTRACT_MASK: false # subtract Solder Mask from Silkscreen
EXCELLON_METRIC_UNITS: true # use Metric units for Excellon drill file
# References to exclude from testpoint highlighting ========================
TP_EXCLUDE_REFS: '[MB*]' # for components on the PCB but not on the schematic
# Schematic parameters =====================================================
COLOR_THEME: Altium_Theme
SHEET_WKS_SCH: templates/Asymworks_SCH.kicad_wks
SHEET_WKS_PCB: KIPRJMOD/templates/Asymworks_PCB.kicad_wks
SHEET_WKS_ASSY: KIPRJMOD/templates/Asymworks_PCBA.kicad_wks
FAB_SCALING: 1
ASSEMBLY_SCALING: 1
# 3D Render parameters =====================================================
RENDER_DNF_FILTER: _kibom_dnf_Config
3D_VIEWER_ROT_X: 2
3D_VIEWER_ROT_Y: -1
3D_VIEWER_ROT_Z: 1
3D_VIEWER_ZOOM: -1
KEY_COLOR: '#00FF00' # Background color to remove. Use a color different from your PCB
BLENDER_SAMPLES: 20 # Overridden to 2 samples for WORKING state by CI Script
BLENDER_ROT_X: 30
BLENDER_ROT_Y: 10
BLENDER_ROT_Z: 10
BLENDER_RESOLUTION_X: 1500
BLENDER_RESOLUTION_Y: 1500
BLENDER_TEXTURE_DPI: 1031.0
# Directories ==============================================================
# Root
OUTPUT_DIR: ./
# Relative to root
REPORT_DIR: reports
SCHEMATIC_DIR: schematic
MANUFACTURING_DIR: mfg
ASSEMBLY_DIR: '@MANUFACTURING_DIR@/assembly'
FABRICATION_DIR: '@MANUFACTURING_DIR@/fab'
GERBERS_DIR: '@FABRICATION_DIR@/gerbers'
FAB_DRILL_TABLES_DIR: '@FABRICATION_DIR@/drill-tables'
TESTING_DIR: test
TESTPOINTS_DIR: '@TESTING_DIR@/testpoints'
RESOURCES_DIR: kibot
MODELS_DIR: models
RENDER_DIR: renders
REPORT_TEMPLATE_DIR: '@RESOURCES_DIR@/templates'
SCRIPTS_DIR: '@RESOURCES_DIR@/scripts'
PANELS_DIR: panels
PANEL_FAB_DIR: '@FABRICATION_DIR@/panels'
JLCPCB_FAB_DIR: '@MANUFACTURING_DIR@/jlcpcb'
JLCPCB_ASSY_DIR: '@MANUFACTURING_DIR@/jlcpcb'
JLCPCB_GERBERS_DIR: '@MANUFACTURING_DIR@/jlcpcb/gerbers'
# Layer Names - should match user-defined names in the PCB. ===============
LAYER_TITLE_PAGE: AssyTitlePage
LAYER_DNP_TOP: F.DNP
LAYER_DNP_BOTTOM: B.DNP
LAYER_DRILL_MAP: DrillMap
LAYER_TP_LIST_TOP: F.TestPointList
LAYER_TP_LIST_BOTTOM: B.TestPointList
LAYER_ASSEMBLY_TEXT_TOP: F.AssemblyText
LAYER_ASSEMBLY_TEXT_BOTTOM: B.AssemblyText
LAYER_DNP_CROSS_TOP: F.DNP
LAYER_DNP_CROSS_BOTTOM: B.DNP
# Filter Names =============================================================
FILT_FIELD_RENAME: field_rename
FILT_LCSC_PARTS: only_lcsc_parts
FILT_TP_ONLY: only_testpoints
FILT_TP_EXCLUDE: exclude_testpoints
FILT_TP_TOP_ONLY: only_testpoints_top
FILT_TP_BOTTOM_ONLY: only_testpoints_bottom
# Output Names ============================================================
NETLIST_OUTPUT: netlist
PDF_SCHEMATIC_OUTPUT: pdf_schematic
PDF_FABRICATION_OUTPUT: pdf_fabrication
PDF_ASSEMBLY_OUTPUT: pdf_assembly
CSV_BOM_OUTPUT: csv_bom
HTML_IBOM_OUTPUT: html_bom_interactive
HTML_BOM_OUTPUT: html_bom
CSV_COMP_COUNT_OUPUT: csv_comp_count
CSV_IMPEDANCE_TABLE_OUTPUT: csv_impedance_table
GERBER_OUTPUT: gbr_gerbers
ODB_OUTPUT: zip_odb
EXCELLON_DRILL_OUTPUT: drl_excellon
PDF_DRILL_MAP_OUTPUT: pdf_drill_map
DXF_DRILL_MAP_OUTPUT: dxf_drill_map
CSV_DRILL_TABLE_OUTPUT: csv_drill_table
CSV_POS_OUTPUT: csv_position
CSV_TP_OUTPUT: csv_testpoints
CSV_TP_TOP_OUTPUT: csv_testpoints_top
CSV_TP_BOTTOM_OUTPUT: csv_testpoints_bottom
ZIP_COMPRESS_FAB_OUTPUT: zip_compress_fab
STEP_OUTPUT: step
GLB_OUTPUT: glb
PCBDRAW_2D_TOP_PCB_OUTPUT: pcbdraw_top
PCBDRAW_2D_BOT_PCB_OUTPUT: pcbdraw_bottom
PNG_3D_VIEWER_TOP: png_3d_viewer_top
PNG_3D_VIEWER_BOT: png_3d_viewer_bottom
PNG_3D_VIEWER_ANGLED_TOP: png_3d_viewer_angled_top
PNG_3D_VIEWER_ANGLED_BOT: png_3d_viewer_angled_bottom
BLENDER_3D_TOP: blender_3d_top
BLENDER_3D_BOT: blender_3d_bottom
BLENDER_3D_ANGLED_TOP: blender_3d_angled_top
BLENDER_3D_ANGLED_BOT: blender_3d_angled_bottom
TXT_SCH_NOTES_OUTPUT: txt_schematic_notes
TXT_FAB_NOTES_OUTPUT: txt_fabrication_notes
TXT_ASSY_NOTES_OUTPUT: txt_assembly_notes
HTML_KIRI_OUTPUT: html_kiri
HTML_NAV_RES_OUTPUT: html_navigate_results
JLCPCB_GERBER_OUTPUT: jlcpcb_gerbers
JLCPCB_FABPACK_OUTPUT: jlcpcb_fabpack
JLCPCB_BOM_OUTPUT: jlcpcb_bom
JLCPCB_CPL_OUTPUT: jlcpcb_cpl

View File

@@ -0,0 +1,32 @@
# KiBot output for generating PCB 3D models in various formats (Requires KiCad 9+)
# https://kibot.readthedocs.io/en/latest/configuration/outputs/export_3d.html
kibot:
version: 1
outputs:
- name: @NAME@
output_id: @NAME@
comment: '@COMMENT@'
type: export_3d
category: '@DIR@'
dir: '@DIR@'
options:
format: @FORMAT@
origin: drill
output: '%f-%I%v.%x'
# Configurable for higher-fidelity outputs (e.g. gITF)
include_silkscreen: @INCLUDE_SILKSCREEN@
include_soldermask: @INCLUDE_SOLDERMASK@
include_tracks: @INCLUDE_TRACKS@
...
definitions:
NAME: step
COMMENT: PCB 3D model in STEP format
DIR: models
FORMAT: step
INCLUDE_SILKSCREEN: false
INCLUDE_SOLDERMASK: false
INCLUDE_TRACKS: false

View File

@@ -0,0 +1,80 @@
# KiBot output for generating PCB 3D model PCB3D Blender format
# https://kibot.readthedocs.io/en/latest/configuration/outputs/PCB2Blender_ToolsOptions.html
kibot:
version: 1
outputs:
- name: @NAME@
output_id: @NAME@
comment: '@COMMENT@'
type: blender_export
category: '@DIR@'
dir: '@DIR@'
options:
auto_camera_z_axis_factor: 1.1
pcb_import:
enhance_materials: true
texture_dpi: @TEXTURE_DPI@
pcb3d:
download: true
download_lcsc: true
dnf_filter:
- @DNF_FILTER@
render_options:
auto_crop: true
transparent_background: true
samples: @SAMPLES@
resolution_x: @RESOLUTION_X@
resolution_y: @RESOLUTION_Y@
point_of_view:
rotate_x: @ROTATE_X@
rotate_y: @ROTATE_Y@
rotate_z: @ROTATE_Z@
view: @VIEW@
outputs:
- type: render
output: '%f-%I%v.%x'
light:
- name: sun
energy: 0
pos_x: 0
pos_y: 0
pos_z: size*20
type: SUN
- name: kibot_light
energy: @POINT_LIGHT@
pos_x: -size*3.33
pos_y: size*3.33
pos_z: size*5
type: POINT
- name: kibot_back_light
energy: @BACK_LIGHT@
pos_x: 0
pos_y: size*8
pos_z: size*12
type: POINT
...
definitions:
NAME: blender
COMMENT: PCB 3D model in PCB3D Blender format
DIR: renders
DNF_FILTER: _kibom_dnf_Config
SAMPLES: 5
RESOLUTION_X: 1280
RESOLUTION_Y: 1280
TEXTURE_DPI: 1031.0
BACK_LIGHT: 0
POINT_LIGHT: 0.001
ROTATE_X: 0
ROTATE_Y: 0
ROTATE_Z: 0
VIEW: top

View File

@@ -0,0 +1,34 @@
# KiBot output for compressing Fabrication files to a ZIP archive
# https://kibot.readthedocs.io/en/latest/configuration/outputs/compress.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: compress
category: '@DIR@'
dir: '@DIR@'
options:
output: '%f-GERBERS%I%v.%x'
move_files: false
files:
- from_output: @GERBER_OUTPUT@
dest: '/'
- from_output: @DRILL_MAP_OUTPUT@
dest: '/'
- from_output: @DRILL_OUTPUT@
dest: '/'
- from_output: @FABRICATION_OUTPUT@
dest: '/'
...
definitions:
NAME: zip_compress_fab
COMMENT: Generates a ZIP file with gerbers, drill and fabrication document
DIR: Manufacturing/Fabrication
GERBER_OUTPUT: gbr_gerbers
DRILL_MAP_OUTPUT: pdf_drill_map
DRILL_OUTPUT: drl_excellon
FABRICATION_OUTPUT: pdf_fabrication

View File

@@ -0,0 +1,48 @@
# KiBot output for generating Bill of Materials in CSV format
# https://kibot.readthedocs.io/en/latest/configuration/outputs/bom.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: bom
category: '@DIR@'
dir: '@DIR@'
options:
format: CSV
csv:
hide_pcb_info: true
hide_stats_info: true
group_fields: ['@MPN_FIELD@', '@IPN_FIELD@', 'Value']
columns:
- "Row"
- "Quantity Per PCB"
- "References"
- "Value"
- "Datasheet"
- "Footprint"
- "Description"
- "@IPN_FIELD@"
- "@MAN_FIELD@"
- "@MPN_FIELD@"
- "LCSC"
# - "arrow#"
# - "digikey#"
# - "farnell#"
# - "mouser#"
# - "newark#"
# - "rs#"
# - "tme#"
...
definitions:
NAME: csv_bom
COMMENT: Bill of Materials in CSV format
DIR: mfg/assembly
IPN_FIELD: 'Asymworks IPN'
MPN_FIELD: 'Manufacturer PN'
MAN_FIELD: 'Manufacturer'

View File

@@ -0,0 +1,25 @@
# KiBot output for generating Drill Tables
# https://kibot.readthedocs.io/en/latest/configuration/outputs/excellon.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: excellon
category: '@DIR@'
dir: '@DIR@'
options:
generate_drill_files: false
table:
unify_pth_and_npth: '@PTH_NPTH@'
group_slots_and_round_holes: @GROUP_ROUND_SLOTS@
...
definitions:
NAME: csv_drill_table
COMMENT: Drill Table in CSV format
DIR: mfg/fab/tables
PTH_NPTH: 'yes'
GROUP_ROUND_SLOTS: true

View File

@@ -0,0 +1,23 @@
# KiBot output for generating Position file in CSV format
# https://kibot.readthedocs.io/en/latest/configuration/outputs/position.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: position
category: '@DIR@'
dir: '@DIR@'
options:
format: 'CSV'
only_smd: false
include_virtual: false
output: '%f-CPL%I%v.%x'
separate_files_for_front_and_back: false
definitions:
NAME: csv_position
COMMENT: Position file in CSV format
DIR: Manufacturing/Assembly

View File

@@ -0,0 +1,26 @@
# KiBot output for CSV Report
# https://kibot.readthedocs.io/en/latest/configuration/outputs/report.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: report
category: '@DIR@'
dir: '@DIR@'
output_id: @OUTPUT_ID@
options:
output: '%f-%I%v.csv'
template: @TEMPLATE@
exclude_filter: '_mechanical'
csv_remove_leading_spaces: true
...
definitions:
NAME: csv_report
COMMENT: Report in CSV format
DIR: mfg
OUTPUT_ID: ''
TEMPLATE: total_components

View File

@@ -0,0 +1,51 @@
# KiBot output for generating CSV Tespoints
# https://kibot.readthedocs.io/en/latest/configuration/outputs/bom.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: bom
category: '@DIR@'
dir: '@DIR@'
options:
output: '%f-testpoints@SUFFIX@%I%v.%x'
csv:
hide_pcb_info: True
hide_stats_info: True
pre_transform: ['_kicost_rename']
exclude_filter: '@EXCLUDE_FILTER@'
dnf_filter: '_null'
exclude_marked_in_sch: false
group_fields: []
sort_style: ref
use_aux_axis_as_origin: true
ignore_dnf: false
format: CSV
footprint_type_values: 'SMT,THRU,'
columns:
- field: References
name: Testpoint Ref.
- field: Net Name
name: Net
- field: Net Class
- field: Footprint X
name: X
- field: Footprint Y
name: Y
- field: Footprint Side
name: Side
- field: Footprint Type
name: Pad Type
- field: Value
- field: Footprint
...
definitions:
NAME: csv_testpoints
COMMENT: Testpoint report in CSV format
DIR: Testing/Testpoints
SUFFIX: ""
EXCLUDE_FILTER: only_testpoints

View File

@@ -0,0 +1,45 @@
# KiBot output for generating CSV Tespoints
# https://kibot.readthedocs.io/en/latest/configuration/outputs/bom.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: bom
category: '@DIR@'
dir: '@DIR@'
options:
output: '%f-testpoints@SUFFIX@%I%v.%x'
csv:
hide_pcb_info: True
hide_stats_info: True
pre_transform: ['_kicost_rename']
exclude_filter: '@EXCLUDE_FILTER@'
dnf_filter: '_null'
exclude_marked_in_sch: false
group_fields: []
sort_style: ref
use_aux_axis_as_origin: true
ignore_dnf: false
format: CSV
footprint_type_values: 'SMT,THRU,'
right_digits: 2
columns:
- field: References
name: Ref.
- field: Net Label
name: Net
- field: Footprint X
name: X [mm]
- field: Footprint Y
name: Y [mm]
...
definitions:
NAME: csv_testpoints
COMMENT: Testpoint report in CSV format
DIR: Testing/Testpoints
SUFFIX: ""
EXCLUDE_FILTER: only_testpoints

View File

@@ -0,0 +1,30 @@
# KiBot output for generating drill Gerber files
# https://kibot.readthedocs.io/en/latest/configuration/outputs/excellon.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: excellon
category: '@DIR@'
dir: '@DIR@'
options:
generate_drill_files: @GENERATE_DRILL@
pth_and_npth_single_file: @PTH_NPTH@
pth_id: '-pth'
npth_id: '-npth'
map: '@MAP_FORMAT@'
metric_units: @METRIC_UNITS@
use_aux_axis_as_origin: true
...
definitions:
NAME: drl_excellon
COMMENT: Drill in Excellon format
DIR: mfg/fab/gerbers
GENERATE_DRILL: true
PTH_NPTH: false
MAP_FORMAT: None
METRIC_UNITS: true

View File

@@ -0,0 +1,29 @@
# KiBot output for generating Gerber files
# https://kibot.readthedocs.io/en/latest/configuration/outputs/gerber.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: gerber
category: '@DIR@'
dir: '@DIR@'
layers: ['copper', 'Edge.Cuts', 'F.Silkscreen', 'F.Mask', 'F.Paste', 'B.Silkscreen', 'B.Mask', 'B.Paste']
options:
subtract_mask_from_silk: @SUBTRACT_MASK@
plot_footprint_refs: @PLOT_REFS@
plot_footprint_values: false
create_gerber_job_file: false
use_aux_axis_as_origin: true
use_protel_extensions: @PROTEL_EXTENSIONS@
...
definitions:
NAME: gbr_gerbers
COMMENT: Gerbers in GBR format
DIR: mfg/fab/gerbers
PLOT_REFS: true
PROTEL_EXTENSIONS: false
SUBTRACT_MASK: false

View File

@@ -0,0 +1,51 @@
# KiBot output for generating Interactive HTML BoM
# https://kibot.readthedocs.io/en/latest/configuration/outputs/ibom.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: bom
category: '@DIR@'
dir: '@DIR@'
options:
format: HTML
html:
title: 'Bill of Materials'
datasheet_as_link: "Datasheet"
lcsc_link: true
logo: false
style: modern-blue
group_fields: ['@MPN_FIELD@', 'Value']
columns:
- "Row"
- "Quantity Per PCB"
- "References"
- "Value"
- "Datasheet"
- "Footprint"
- "Description"
- "@IPN_FIELD@"
- "@MAN_FIELD@"
- "@MPN_FIELD@"
- "LCSC"
# - "arrow#"
# - "digikey#"
# - "farnell#"
# - "mouser#"
# - "newark#"
# - "rs#"
# - "tme#"
...
definitions:
NAME: html_bom
COMMENT: BOM in HTML format
DIR: mfg/assembly
IPN_FIELD: 'Asymworks IPN'
MPN_FIELD: 'Manufacturer PN'
MAN_FIELD: 'Manufacturer'

View File

@@ -0,0 +1,33 @@
# KiBot output for generating Interactive HTML BoM
# https://kibot.readthedocs.io/en/latest/configuration/outputs/ibom.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: ibom
dir: '@DIR@'
category: '@DIR@'
options:
# extra_data_file: '%F.net'
dark_mode: true
show_fields: 'Value,Footprint,@IPN_FIELD@,@MPN_FIELD@'
group_fields: 'Value,@IPN_FIELD@'
show_fabrication: true
highlight_pin1: "selected"
exclude_filter: '@EXCLUDE_FILTER@'
hide_excluded: true
forced_name: '@TITLE@'
mark_when_checked: 'Placed'
...
definitions:
NAME: html_bom_interactive
COMMENT: Interactive BOM in HTML format
DIR: mfg/assembly
EXCLUDE_FILTER: exclude_testpoints
TITLE: ""
IPN_FIELD: 'Asymworks IPN'
MPN_FIELD: 'Manufacturer PN'

View File

@@ -0,0 +1,23 @@
# KiBot output for diff web page between commits
# https://kibot.readthedocs.io/en/latest/configuration/outputs/kiri.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: kiri
category: '@DIR@'
dir: '@DIR@'
layers: all
options:
keep_generated: true
max_commits: 3
revision: 'HEAD'
zones: 'global'
definitions:
NAME: html_kiri
COMMENT: KiRi webpage
DIR: kiri

View File

@@ -0,0 +1,35 @@
# KiBot output for generating Bill of Materials in CSV format for JLCPCB
# https://kibot.readthedocs.io/en/latest/configuration/outputs/bom.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: bom
category: '@DIR@'
dir: '@DIR@'
options:
exclude_filter: @EXCLUDE_FILTER@
format: CSV
csv:
hide_pcb_info: true
hide_stats_info: true
quote_all: true
columns:
- field: Value
name: Comment
- field: References
name: Designator
- Footprint
- field: _field_lcsc_part
name: 'LCSC Part #'
ref_separator: ','
...
definitions:
NAME: jlcpcb_bom
COMMENT: Bill of Materials for JLCPCB
DIR: mfg/assembly/jlcpcb
EXCLUDE_FILTER: only_lcsc_parts

View File

@@ -0,0 +1,48 @@
# KiBot output for generating Position file in CSV format for JLCPCB
# https://kibot.readthedocs.io/en/latest/configuration/outputs/position.html
kibot:
version: 1
filters:
- name: fix_rotation
comment: Adjust rotation for JLCPCB
type: rot_footprint
negative_bottom: false
mirror_bottom: true
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: position
category: '@DIR@'
dir: '@DIR@'
options:
format: 'CSV'
output: '%f-cpl%I%v.%x'
separate_files_for_front_and_back: false
units: millimeters
only_smd: true
include_virtual: false
exclude_filter: @EXCLUDE_FILTER@
pre_transform: '_rot_footprint_jlcpcb'
columns:
- id: Ref
name: Designator
- Val
- Package
- id: PosX
name: "Mid X"
- id: PosY
name: "Mid Y"
- id: Rot
name: Rotation
- id: Side
name: Layer
...
definitions:
NAME: jlcpcb_cpl
COMMENT: Component Placement for JLCPCB
DIR: mfg/assembly/jlcpcb
EXCLUDE_FILTER: only_lcsc_parts

View File

@@ -0,0 +1,28 @@
# KiBot output for compressing Fabrication files to a ZIP archive for JLCPCB
# https://kibot.readthedocs.io/en/latest/configuration/outputs/compress.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: compress
category: '@DIR@'
dir: '@DIR@'
options:
output: '%f-Fabpack%I%v.%x'
move_files: false
files:
- from_output: @GERBER_OUTPUT@
dest: '/'
- from_output: @DRILL_OUTPUT@
dest: '/'
...
definitions:
NAME: jlcpcb_fabpack
COMMENT: Generates a ZIP file with gerbers and drill for JLCPCB
DIR: mfg/fab
GERBER_OUTPUT: jlcpcb_gerbers
DRILL_OUTPUT: drl_excellon

View File

@@ -0,0 +1,32 @@
# KiBot output for generating an HTML page for navigating the results
# https://kibot.readthedocs.io/en/latest/configuration/outputs/navigate_results_rb.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: navigate_results_rb
# category: '@DIR@'
dir: '@DIR@'
options:
link_from_root: 'index.html'
logo: '@LOGO@'
logo_force_height: 40
logo_url: '@LOGO_URL@'
nav_bar: true
render_markdown: true
display_category_images: false
display_kibot_version: false
title: '@TITLE@'
title_url: '@LOGO_URL@'
...
definitions:
NAME: html_navigate_results
COMMENT: Results webpage in HTML format
DIR: html
TITLE: ''
LOGO: ''
LOGO_URL: ''

View File

@@ -0,0 +1,18 @@
# KiBot output for generating netlist in KiCad format
# https://kibot.readthedocs.io/en/latest/configuration/outputs/netlist.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: netlist
options:
format: '@FORMAT@'
...
definitions:
NAME: netlist
FORMAT: classic
COMMENT: Schematic netlist in KiCad format

View File

@@ -0,0 +1,20 @@
# KiBot output for generating ODB++ files
# https://kibot.readthedocs.io/en/latest/configuration/outputs/odb.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: odb
category: '@DIR@'
dir: '@DIR@'
options:
dnf_filter: _kibom_dnf_Config
...
definitions:
NAME: zip_odb
COMMENT: ODB++ in ZIP format
DIR: mfg/fab

View File

@@ -0,0 +1,26 @@
# KiBot output for generating PCB Panels with KiKit
# https://kibot.readthedocs.io/en/latest/configuration/outputs/panelize.html
kibot:
version: 1
outputs:
- name: @NAME@
output_id: @NAME@
comment: '@COMMENT@'
type: panelize
category: '@DIR@'
dir: '@DIR@'
options:
configs: @CONFIG@
output: '%f-%I%v.%x'
create_preview: true
title: '@TITLE@'
definitions:
NAME: panel
COMMENT: PCB Panelization
CATEGORY: Panels
DIR: fab/panel
CONFIG: ''
TITLE: ''

View File

@@ -0,0 +1,23 @@
# KiBot output for generating PCB 2D renders with PcbDraw
# https://kibot.readthedocs.io/en/latest/configuration/outputs/pcbdraw.html
kibot:
version: 1
outputs:
- name: @NAME@
output_id: @NAME@
comment: '@COMMENT@'
type: pcbdraw
category: '@DIR@'
dir: '@DIR@'
options:
bottom: @BOTTOM@
format: @FORMAT@
output: '%f-%I%v.%x'
definitions:
NAME: pcbdraw_top
COMMENT: PCB 2D Render (Top)
DIR: renders
BOTTOM: false

View File

@@ -0,0 +1,117 @@
# KiBot output for generating Assembly Document in PDF format
# https://kibot.readthedocs.io/en/latest/configuration/outputs/pcb_print.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: pcb_print
category: '@DIR@'
dir: '@DIR@'
options:
colored_vias: false
colored_pads: false
color_theme: '@COLOR_THEME@'
output: '%f-assembly%I%v.%x'
format: 'PDF'
title: '@DOC_TITLE@ Document'
realistic_solder_mask: false
dpi: 1200
dnf_filter: _kibom_dnf_Config
# dnf_filter: '_null'
sheet_reference_layout: '@SHEET_WKS@'
include_table:
outputs:
- name: '@NAME_COMP_COUNT@'
text_alignment: 'left'
invert_columns_order: false
border_width: 0.4
header_rule_width: 0.2
horizontal_rule_width: 0
vertical_rule_width: 0
top_rule_width: 0
bottom_rule_width: 0
row_spacing: 3
column_spacing: 2
pages:
- scaling: @SCALING@
layer_var: ''
title: '@DOC_TITLE@'
sheet: Top/Bottom View
sheet_reference_color: '#000000'
layers:
- layer: '@LAYER_TITLE_PAGE@'
color: '#000000'
- scaling: @SCALING@
layer_var: "Top Assembly (Scale @SCALING@:1)"
title: '@DOC_TITLE@'
sheet: Top Assembly (Scale @SCALING@:1)
sheet_reference_color: '#000000'
colored_holes: true
holes_color: "#FFFFFF"
layers:
- layer: Edge.Cuts
color: '#000000'
- layer: F.Cu
color: '#EEDAB5'
- layer: F.Mask
color: '#B9B9B9'
- layer: F.Paste
color: '#E1A98E'
- layer: F.Silkscreen
color: '#DB9DE1'
- layer: F.Fab
exclude_filter: '@FAB_EXCLUDE_FILTER@'
color: '#744679'
- layer: '@LAYER_ASSEMBLY_TEXT_TOP@'
color: '#000000'
- layer: '@LAYER_DNP_CROSS_TOP@'
color: '#D63034'
- scaling: @SCALING@
layer_var: "Bottom Assembly (Scale @SCALING@:1)"
mirror: true
mirror_pcb_text: false
title: '@DOC_TITLE@'
sheet: Bottom Assembly (Scale @SCALING@:1)
sheet_reference_color: '#000000'
colored_holes: true
holes_color: "#FFFFFF"
layers:
- layer: Edge.Cuts
color: '#000000'
- layer: B.Cu
color: '#D5DBF4'
- layer: B.Mask
color: '#B9B9B9'
- layer: B.Paste
color: '#BCB9DD'
- layer: B.Silkscreen
color: '#DB9DE1'
- layer: B.Fab
exclude_filter: '@FAB_EXCLUDE_FILTER@'
color: '#400080'
- layer: '@LAYER_ASSEMBLY_TEXT_BOTTOM@'
color: '#000000'
- layer: '@LAYER_DNP_CROSS_BOTTOM@'
color: '#D63034'
...
definitions:
NAME: pdf_assembly
COMMENT: Assembly document in PDF format
DIR: mfg/assembly
DOC_TITLE: Assembly
COLOR_THEME: Altium_Theme
SHEET_WKS: ${KIPRJMOD}/templates/Asymworks_PCB.kicad_wks
SCALING: 1.0
FAB_EXCLUDE_FILTER: exclude_testpoints
LAYER_TITLE_PAGE: AssyTitlePage
LAYER_ASSEMBLY_TEXT_TOP: F.AssemblyText
LAYER_ASSEMBLY_TEXT_BOTTOM: B.AssemblyText
LAYER_DNP_CROSS_TOP: F.DNP
LAYER_DNP_CROSS_BOTTOM: B.DNP
NAME_COMP_COUNT: csv_comp_count

View File

@@ -0,0 +1,234 @@
# KiBot output for generating Fabrication Document in PDF format
# https://kibot.readthedocs.io/en/latest/configuration/outputs/pcb_print.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: pcb_print
category: '@DIR@'
dir: '@DIR@'
options:
colored_pads: false
colored_vias: false
color_theme: '@COLOR_THEME@'
output: '%f-fabrication%I%v.%x'
format: 'PDF'
title: '@DOC_TITLE@ Document'
realistic_solder_mask: false
dpi: 1200
dnf_filter: _kibom_dnf_Config
frame_plot_mechanism: 'internal'
sheet_reference_layout: '@SHEET_WKS@'
drill:
unify_pth_and_npth: '@PTH_NPTH@'
group_slots_and_round_holes: @GROUP_ROUND_SLOTS@
include_table:
outputs:
- name: '@NAME_TP_TOP@'
text_alignment: 'left'
invert_columns_order: false
border_width: 0.4
header_rule_width: 0.2
horizontal_rule_width: 0
vertical_rule_width: 0.2
top_rule_width: 0.2
bottom_rule_width: 0.2
column_spacing: 2
force_font_width: 1.27 # mm
- name: '@NAME_TP_BOTTOM@'
text_alignment: 'right'
invert_columns_order: true
border_width: 0.4
header_rule_width: 0.2
horizontal_rule_width: 0
vertical_rule_width: 0.2
top_rule_width: 0.2
bottom_rule_width: 0.2
column_spacing: 2
force_font_width: 1.27 # mm
- name: '@NAME_IMPEDANCE_TABLE@'
text_alignment: 'left'
invert_columns_order: false
border_width: 0.4
header_rule_width: 0.2
horizontal_rule_width: 0
vertical_rule_width: 0.2
top_rule_width: 0.2
bottom_rule_width: 0.2
row_spacing: 3
column_spacing: 2
row_spacing: 3
- name: '@NAME_DRILL_TABLE@'
text_alignment: 'left'
invert_columns_order: false
border_width: 0.4
header_rule_width: 0.2
horizontal_rule_width: 0
vertical_rule_width: 0.2
top_rule_width: 0.2
bottom_rule_width: 0.2
row_spacing: 3
column_spacing: 2
force_font_width: 1 # mm
pages:
- scaling: @SCALING@
title: '@DOC_TITLE@'
sheet: 'Top Fabrication (Scale @SCALING@:1)'
layer_var: 'Top Fabrication (Scale @SCALING@:1)'
sheet_reference_color: '#000000'
colored_holes: true
holes_color: "#FFFFFF"
layers:
- layer: Edge.Cuts
color: '#000000'
- layer: F.Cu
color: '#F2F2F2'
- layer: F.Mask
color: '#E2E2E2'
- layer: F.Paste
color: '#E2E2E2'
- layer: F.Silkscreen
color: '#DBDBDB'
- layer: F.Fab
plot_footprint_refs: false
plot_footprint_values: false
color: '#818181'
- layer: F.Dimensions
color: '#000000'
- scaling: @SCALING@
mirror: true
mirror_pcb_text: false
title: '@DOC_TITLE@'
sheet: 'Bottom Fabrication (Scale @SCALING@:1)'
layer_var: 'Bottom Fabrication (Scale @SCALING@:1)'
sheet_reference_color: '#000000'
colored_holes: true
holes_color: "#FFFFFF"
layers:
- layer: Edge.Cuts
color: '#000000'
- layer: B.Cu
color: '#F2F2F2'
- layer: B.Mask
color: '#E2E2E2'
- layer: B.Paste
color: '#E2E2E2'
- layer: B.Silkscreen
color: '#DBDBDB'
- layer: B.Fab
plot_footprint_refs: false
plot_footprint_values: false
color: '#818181'
- layer: B.Dimensions
color: '#000000'
- scaling: @SCALING@
title: '@DOC_TITLE@'
sheet: 'Drill Drawing (%lp)'
layer_var: 'Drill Drawing %lp (Scale @SCALING@:1)'
sheet_reference_color: '#000000'
colored_holes: true
holes_color: "#FFFFFF"
repeat_for_layer: '@LAYER_DRILL_MAP@'
repeat_layers: 'drill_pairs'
layers:
- layer: '@LAYER_DRILL_MAP@'
color: '#000000'
- layer: 'Edge.Cuts'
color: '#000000'
- scaling: @SCALING@
title: '@DOC_TITLE@'
sheet: 'Top Test Points (Scale @SCALING@:1)'
layer_var: 'Top Test Points (Scale @SCALING@:1)'
sheet_reference_color: '#000000'
colored_holes: true
holes_color: "#FFFFFF"
layers:
- layer: Edge.Cuts
color: '#000000'
- layer: F.Cu
color: '#E5E5E5'
- layer: F.Mask
color: '#CECECE'
- layer: F.Paste
color: '#CECECE'
- layer: F.Silkscreen
color: '#C7C7C7'
- layer: F.Fab
exclude_filter: '@FAB_EXCLUDE_FILTER@'
plot_footprint_values: false
sketch_pads_on_fab_layers: false
color: '#E10000'
- layer: '@LAYER_TP_LIST_TOP@'
color: '#000000'
- scaling: @SCALING@
mirror : true
mirror_pcb_text: true
title: '@DOC_TITLE@'
sheet: 'Bottom Test Points (Scale @SCALING@:1)'
layer_var: 'Bottom Test Points (Scale @SCALING@:1)'
sheet_reference_color: '#000000'
colored_holes: true
holes_color: "#FFFFFF"
layers:
- layer: Edge.Cuts
color: '#000000'
- layer: B.Cu
color: '#E5E5E5'
- layer: B.Mask
color: '#CECECE'
- layer: B.Paste
color: '#CECECE'
- layer: B.Silkscreen
color: '#C7C7C7'
- layer: B.Fab
exclude_filter: '@FAB_EXCLUDE_FILTER@'
plot_footprint_values: false
sketch_pads_on_fab_layers: false
color: '#0B00CC'
- layer: '@LAYER_TP_LIST_BOTTOM@'
color: '#000000'
- scaling: @SCALING@
sheet: '%ln (Scale @SCALING@:1)'
layer_var: '%ln (Scale @SCALING@:1)'
title: '@DOC_TITLE@'
sheet_reference_color: '#000000'
colored_holes: true
holes_color: "#FFFFFF"
repeat_for_layer: 'F.Cu'
repeat_layers: 'copper'
layers:
- layer: Edge.Cuts
color: '#000000'
- layer: 'F.Cu'
...
definitions:
NAME: pdf_fabrication
COMMENT: Fabrication document in PDF format
DIR: mfg/fab
DOC_TITLE: Fabrication
COLOR_THEME: Altium_Theme
SHEET_WKS: ${KIPRJMOD}/templates/Asymworks_PCB.kicad_wks
SCALING: 1.0
FAB_EXCLUDE_FILTER: only_testpoints
LAYER_DRILL_MAP: DrillMap
LAYER_TP_LIST_TOP: F.TestPointList
LAYER_TP_LIST_BOTTOM: B.TestPointList
PTH_NPTH: 'yes'
GROUP_ROUND_SLOTS: true
NAME_TP_TOP: csv_testpoints_top
NAME_TP_BOTTOM: csv_testpoints_bottom
NAME_IMPEDANCE_TABLE: csv_impedance_table
NAME_DRILL_TABLE: csv_drill_table

View File

@@ -0,0 +1,25 @@
# KiBot output for generating schematics in PDF format
# https://kibot.readthedocs.io/en/latest/configuration/outputs/pdf_sch_print.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: pdf_sch_print
dir: '@DIR@'
category: '@DIR@'
options:
background_color: false
color_theme: '@COLOR_THEME@'
default_font: '@DEFAULT_FONT@'
sheet_reference_layout: '@SHEET_WKS@'
definitions:
NAME: pdf_schematic
COMMENT: Schematic in PDF format
COLOR_THEME: Altium_Theme
DEFAULT_FONT: Arial
DIR: schematic
SHEET_WKS: ${KIPRJMOD}/templates/Asymworks_SCH.kicad_wks

View File

@@ -0,0 +1,45 @@
# KiBot output for 3D Viewer renders in PNG format
# https://kibot.readthedocs.io/en/latest/configuration/outputs/render_3d.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: render_3d
category: '@DIR@'
dir: '@DIR@'
options:
output: '%f-@SUFFIX@%I%v.%x'
auto_crop: true
enable_crop_workaround: true
rotate_x: @ROTATE_X@
rotate_y: @ROTATE_Y@
rotate_z: @ROTATE_Z@
zoom: @ZOOM@
height: @HEIGHT@
width: @WIDTH@
view: '@VIEW@'
ray_tracing: @RAYTRACING@
force_stackup_colors: true
orthographic: true
transparent_background: true
transparent_background_color: '@KEY_COLOR@'
transparent_background_fuzz: 40
...
definitions:
NAME: png_3d_viewer
COMMENT: 3D viewer PCB render in PNG format
DIR: renders
SUFFIX: ""
VIEW: top
RAYTRACING: true
ROTATE_X: 0
ROTATE_Y: 0
ROTATE_Z: 0
ZOOM: 0
HEIGHT: 2000
WIDTH: 2000
KEY_COLOR: '#00FF00'

View File

@@ -0,0 +1,19 @@
# KiBot output for generating PCB 3D model in STEP format
# https://kibot.readthedocs.io/en/latest/configuration/outputs/step.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: step
category: '@DIR@'
dir: '@DIR@'
options:
output: '%f%I%v.%x'
definitions:
NAME: step
COMMENT: PCB 3D model in STEP format
DIR: 3d_model

View File

@@ -0,0 +1,27 @@
# KiBot output for TXT Report (e.g. Fabrication/Assembly notes)
# https://kibot.readthedocs.io/en/latest/configuration/outputs/report.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: report
category: '@DIR@'
dir: '@DIR@'
output_id: @OUTPUT_ID@
options:
output: '%f-%I%v.txt'
template: @TEMPLATE@
exclude_filter: '_mechanical'
mm_digits: 3
display_trailing_zeros: True
...
definitions:
NAME: txt_fabrication_notes
COMMENT: Report
DIR: mfg
OUTPUT_ID: _notes
TEMPLATE: kibot/templates/fabrication_notes.txt

View File

@@ -0,0 +1,25 @@
# KiBot preflight for Draw Fancy Stackup feature
# https://kibot.readthedocs.io/en/latest/configuration/preflights/draw_fancy_stackup.html
kibot:
version: 1
preflight:
update_xml: true
draw_fancy_stackup:
gerber: '@GERBER_OUTPUT@'
gerber_extension_only: True
draw_stackup: True
draw_vias: True
columns:
- 'material'
- 'layer'
- 'thickness'
- 'dielectric'
- 'layer_type'
note: '@NOTE@'
...
definitions:
GERBER_OUTPUT: gbr_gerbers
NOTE: external layer thicknesses are specified after plating

View File

@@ -0,0 +1,20 @@
# KiBot preflight for generating DRC reports
# https://kibot.readthedocs.io/en/latest/configuration/preflights/drc.html
kibot:
version: 1
preflight:
check_zone_fills: @CHECK_ZONE_FILLS@
drc:
category: '@DIR@'
dir: '@DIR@'
dont_stop: true
format: 'HTML, RPT'
output: 'report_%f-%i%I%v.%x'
...
definitions:
CHECK_ZONE_FILLS: true
CATEGORY: Schematic
DIR: reports

View File

@@ -0,0 +1,17 @@
# KiBot preflight for generating ERC reports
# https://kibot.readthedocs.io/en/latest/configuration/preflights/erc.html
kibot:
version: 1
preflight:
erc:
category: '@DIR@'
dir: '@DIR@'
format: 'HTML, RPT'
output: 'report_%f-%i%I%v.%x'
...
definitions:
CATEGORY: Schematic
DIR: reports

View File

@@ -0,0 +1,75 @@
# KiBot preflight for Include Table feature
# https://kibot.readthedocs.io/en/latest/configuration/preflights/include_table.html
kibot:
version: 1
preflight:
include_table:
outputs:
- name: '@NAME_TP_TOP@'
text_alignment: 'left'
invert_columns_order: false
border_width: 0.2
header_rule_width: 0.2
horizontal_rule_width: 0
vertical_rule_width: 0
top_rule_width: 0
bottom_rule_width: 0
column_spacing: 1
# force_font_width: 1.27 # mm
- name: '@NAME_TP_BOTTOM@'
text_alignment: 'right'
invert_columns_order: true
border_width: 0.2
header_rule_width: 0.2
horizontal_rule_width: 0
vertical_rule_width: 0
top_rule_width: 0
bottom_rule_width: 0
column_spacing: 1
# force_font_width: 1.27 # mm
- name: '@NAME_COMP_COUNT@'
text_alignment: 'left'
invert_columns_order: false
border_width: 0.2
header_rule_width: 0.2
horizontal_rule_width: 0
vertical_rule_width: 0
top_rule_width: 0
bottom_rule_width: 0
row_spacing: 3
column_spacing: 1
- name: '@NAME_CSV_DRILL_TABLE@'
text_alignment: 'left'
invert_columns_order: false
border_width: 0.2
header_rule_width: 0.2
horizontal_rule_width: 0
vertical_rule_width: 0
top_rule_width: 0
bottom_rule_width: 0
row_spacing: 3
column_spacing: 1
- name: '@NAME_IMPEDANCE_TABLE@'
text_alignment: 'left'
invert_columns_order: false
border_width: 0.2
header_rule_width: 0.2
vertical_rule_width: 0
top_rule_width: 0
bottom_rule_width: 0
row_spacing: 3
column_spacing: 1
...
definitions:
NAME_TP_TOP: csv_testpoints_top
NAME_TP_BOTTOM: csv_testpoints_bottom
NAME_COMP_COUNT: csv_comp_count
NAME_CSV_DRILL_TABLE: csv_drill_table
NAME_IMPEDANCE_TABLE: csv_impedance_table

View File

@@ -0,0 +1,132 @@
# KiBot preflight for setting Text Variables
# https://kibot.readthedocs.io/en/latest/configuration/preflights/set_text_variables.html
kibot:
version: 1
preflight:
update_xml: true
set_text_variables:
# Git-related information
- variable: 'REVISION'
text: '@REVISION@'
- variable: 'RELEASE_STATE'
text: '@RELEASE_STATE@'
- variable: 'RELEASE_DATE'
command: 'git log -1 --format="%ad" --date=short'
- variable: 'GIT_HASH_SCH'
command: 'git log -1 --format="%h" $KIBOT_SCH_NAME'
- variable: 'GIT_HASH_PCB'
command: 'git log -1 --format="%h" $KIBOT_PCB_NAME'
- variable: 'GIT_HASH'
command: 'git log -1 --format="%h"'
- variable: 'GIT_URL'
text: '@GIT_URL@'
# Metadata
- variable: 'PROJECT_CODE'
text: '@PROJECT_CODE@'
- variable: 'ASSEMBLY_NUMBER'
text: '@ASSEMBLY_NUMBER@'
- variable: 'ASSEMBLY_NAME'
text: '@ASSEMBLY_NAME@'
- variable: 'ASSEMBLY_SCALE'
text: '@ASSEMBLY_SCALING@'
- variable: 'DWG_NUMBER_PCB'
text: '@DWG_NUMBER_PCB@'
- variable: 'DWG_NUMBER_SCH'
text: '@DWG_NUMBER_SCH@'
- variable: 'DWG_TITLE_PCB'
text: '@DWG_TITLE_PCB@'
- variable: 'DWG_TITLE_SCH'
text: '@DWG_TITLE_SCH@'
- variable: 'DWG_TITLE_ASSY'
text: '@DWG_TITLE_ASSY@'
- variable: 'COMPANY'
text: '@COMPANY@'
- variable: 'DESIGNER'
text: '@DESIGNER@'
- variable: 'VARIANT'
text: '%V'
# Schematic notes
- variable: 'SCHEMATIC_NOTES'
expand_in_command: true
command: '[ -f "@SCHEMATIC_DIR@/%f-schematic_notes%v.txt" ] && cat "@SCHEMATIC_DIR@/%f-schematic_notes%v.txt" || echo ""'
# Fabrication notes
- variable: 'FABRICATION_NOTES'
expand_in_command: true
command: '[ -f "@FABRICATION_DIR@/%f-fabrication_notes%v.txt" ] && cat "@FABRICATION_DIR@/%f-fabrication_notes%v.txt" || echo ""'
# Assembly notes
- variable: 'ASSEMBLY_NOTES'
expand_in_command: true
command: '[ -f "@ASSEMBLY_DIR@/%f-assembly_notes%v.txt" ] && cat "@ASSEMBLY_DIR@/%f-assembly_notes%v.txt" || echo ""'
# Page titles for automatic ToC
- variable: '@SHEET_NAME_VAR@01'
text: 'Cover Page'
- variable: '@SHEET_NAME_VAR@02'
command: '@GET_SHEET_CMD@ 2'
- variable: '@SHEET_NAME_VAR@03'
command: '@GET_SHEET_CMD@ 3'
- variable: '@SHEET_NAME_VAR@04'
command: '@GET_SHEET_CMD@ 4'
- variable: '@SHEET_NAME_VAR@05'
command: '@GET_SHEET_CMD@ 5'
- variable: '@SHEET_NAME_VAR@06'
command: '@GET_SHEET_CMD@ 6'
- variable: '@SHEET_NAME_VAR@07'
command: '@GET_SHEET_CMD@ 7'
- variable: '@SHEET_NAME_VAR@08'
command: '@GET_SHEET_CMD@ 8'
- variable: '@SHEET_NAME_VAR@09'
command: '@GET_SHEET_CMD@ 9'
- variable: '@SHEET_NAME_VAR@10'
command: '@GET_SHEET_CMD@ 10'
- variable: '@SHEET_NAME_VAR@11'
command: '@GET_SHEET_CMD@ 11'
- variable: '@SHEET_NAME_VAR@12'
command: '@GET_SHEET_CMD@ 12'
- variable: '@SHEET_NAME_VAR@13'
command: '@GET_SHEET_CMD@ 13'
- variable: '@SHEET_NAME_VAR@14'
command: '@GET_SHEET_CMD@ 14'
- variable: '@SHEET_NAME_VAR@15'
command: '@GET_SHEET_CMD@ 15'
- variable: '@SHEET_NAME_VAR@16'
command: '@GET_SHEET_CMD@ 16'
- variable: '@SHEET_NAME_VAR@17'
command: '@GET_SHEET_CMD@ 17'
- variable: '@SHEET_NAME_VAR@18'
command: '@GET_SHEET_CMD@ 18'
- variable: '@SHEET_NAME_VAR@19'
command: '@GET_SHEET_CMD@ 19'
- variable: '@SHEET_NAME_VAR@20'
command: '@GET_SHEET_CMD@ 20'
...
definitions:
PROJECT_CODE: ''
ASSEMBLY_NUMBER: ''
ASSEMBLY_NAME: ''
ASSEMBLY_SCALING: ''
DWG_NUMBER_SCH: ''
DWG_TITLE_SCH: ''
DWG_NUMBER_PCB: ''
DWG_TITLE_PCB: ''
DWG_TITLE_ASSY: ''
COMPANY: ''
DESIGNER: ''
REVISION: ''
RELEASE_STATE: ''
RELEASE_DATE: ''
GIT_URL: ''
SHEET_NAME_VAR: SHEET_NAME_
SCRIPTS_DIR: kibot/scripts
FABRICATION_DIR: mfg/fab
ASSEMBLY_DIR: mfg/assembly
GET_SHEET_CMD: python3 @SCRIPTS_DIR@/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p

View File

@@ -0,0 +1,139 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "012d7bf9-8223-4140-afc5-ecb09d57c558")
(paper "A3")
(title_block
(title "Project Architecture")
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
(sheet
(at 127 152.4)
(size 115.57 26.67)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(stroke
(width 0.1524)
(type solid)
)
(fill
(color 0 0 0 0.0000)
)
(uuid "6c8ce547-8e28-496a-9003-0e7dbfd93e8c")
(property "Sheetname" "Circuit 3"
(at 127 151.6884 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
)
(property "Sheetfile" "Circuit-3.kicad_sch"
(at 127 179.6546 0)
(effects
(font
(size 1.27 1.27)
)
(justify left top)
)
)
(instances
(project "Asymworks_Template"
(path "/8bfb0b6c-9e3a-4761-bc1e-4eb40915aa0b/f6afef58-d841-4ad6-baf9-746b0a35f011"
(page "6")
)
)
)
)
(sheet
(at 190.5 63.5)
(size 52.07 63.5)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(stroke
(width 0.1524)
(type solid)
)
(fill
(color 0 0 0 0.0000)
)
(uuid "9da43fd7-7a0a-403c-bf2c-ba67cd8fa669")
(property "Sheetname" "Circuit 2"
(at 190.5 62.7884 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
)
(property "Sheetfile" "Circuit-2.kicad_sch"
(at 190.5 127.5846 0)
(effects
(font
(size 1.27 1.27)
)
(justify left top)
)
)
(instances
(project "Asymworks_Template"
(path "/8bfb0b6c-9e3a-4761-bc1e-4eb40915aa0b/f6afef58-d841-4ad6-baf9-746b0a35f011"
(page "5")
)
)
)
)
(sheet
(at 127 63.5)
(size 50.8 63.5)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(stroke
(width 0.1524)
(type solid)
)
(fill
(color 0 0 0 0.0000)
)
(uuid "a5aa3c11-5084-4ea5-9da5-c9ff4a86f01f")
(property "Sheetname" "Circuit 1"
(at 127 62.7884 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
)
(property "Sheetfile" "Circuit-1.kicad_sch"
(at 127 127.5846 0)
(effects
(font
(size 1.27 1.27)
)
(justify left top)
)
)
(instances
(project "Asymworks_Template"
(path "/8bfb0b6c-9e3a-4761-bc1e-4eb40915aa0b/f6afef58-d841-4ad6-baf9-746b0a35f011"
(page "4")
)
)
)
)
)

View File

@@ -0,0 +1,13 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "b8d4aec6-3776-46e2-a068-8f537360a721")
(paper "A3")
(title_block
(title "Block Diagram")
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
)

View File

@@ -0,0 +1,13 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "ae274b30-ea86-4fd2-9b53-0688fcc83854")
(paper "A3")
(title_block
(title "Circuit 1")
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
)

View File

@@ -0,0 +1,13 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "9862af89-a2d7-4c8f-b21b-98b3a07ff6c9")
(paper "A3")
(title_block
(title "Circuit 2")
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
)

View File

@@ -0,0 +1,12 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "3e6e4bf0-cb66-44ec-867d-d511c2b5b480")
(paper "A3")
(title_block
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
)

View File

@@ -0,0 +1,13 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "e715656a-7ef9-40bd-b637-b302eb88b008")
(paper "A3")
(title_block
(title "Parts List")
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
)

View File

@@ -0,0 +1,502 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "9.0")
(setup
(textsize 1.5 1.5)
(linewidth 0.15)
(textlinewidth 0.15)
(left_margin 10)
(right_margin 10)
(top_margin 10)
(bottom_margin 10)
)
(rect
(name "")
(start 95.989 42.002)
(end 2 2)
(option page1only)
(comment "rect around the title block")
)
(rect
(name "")
(start 0 0 ltcorner)
(end 0 0)
(repeat 2)
(incrx 2)
(incry 2)
)
(line
(name "")
(start 50 2 ltcorner)
(end 50 0 ltcorner)
(repeat 30)
(incrx 50)
)
(tbtext "1"
(name "")
(pos 25 1 ltcorner)
(font
(size 1.3 1.3)
)
(repeat 100)
(incrx 50)
)
(line
(name "")
(start 50 2 lbcorner)
(end 50 0 lbcorner)
(repeat 30)
(incrx 50)
)
(tbtext "1"
(name "")
(pos 25 1 lbcorner)
(font
(size 1.3 1.3)
)
(repeat 100)
(incrx 50)
)
(line
(name "")
(start 0 50 ltcorner)
(end 2 50 ltcorner)
(repeat 30)
(incry 50)
)
(tbtext "A"
(name "")
(pos 1 25 ltcorner)
(font
(size 1.3 1.3)
)
(justify center)
(repeat 100)
(incry 50)
)
(line
(name "")
(start 0 50 rtcorner)
(end 2 50 rtcorner)
(repeat 30)
(incry 50)
)
(tbtext "A"
(name "")
(pos 1 25 rtcorner)
(font
(size 1.3 1.3)
)
(justify center)
(repeat 100)
(incry 50)
)
(line
(name "")
(start 95.989 5.512)
(end 2 5.512)
)
(line
(name "")
(start 95.989 9.017)
(end 2 9.017)
)
(line
(name "")
(start 95.989 12.522)
(end 2 12.522)
)
(line
(name "")
(start 95.989 19.304)
(end 2 19.304)
)
(line
(name "segm1:Line")
(start 79.9892 2 rtcorner)
(end 80.0022 13 rtcorner)
(option page1only)
)
(line
(name "segm2:Line")
(start 71.0022 6 rtcorner)
(end 71.0022 13 rtcorner)
(option page1only)
)
(line
(name "segm5:Line")
(start 15.4892 6 rtcorner)
(end 15.5022 13 rtcorner)
(option page1only)
)
(line
(name "segm9:Line")
(start 1.9892 9.5 rtcorner)
(end 80.0022 9.5 rtcorner)
(option page1only)
)
(line
(name "segm8:Line")
(start 1.9892 6 rtcorner)
(end 80.0022 6 rtcorner)
(option page1only)
)
(line
(name "segm7:Line")
(start 1.989 2 rtcorner)
(end 141.989 2 rtcorner)
)
(tbtext "REVISION HISTORY"
(name "text1:Text")
(pos 41.021 4.08 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(size 1.905 1.905)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "REV"
(name "text2:Text")
(pos 75.4892 7.906 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "DESCRIPTION"
(name "text4:Text")
(pos 43.2312 7.906 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "ZONE"
(name "text6:Text")
(pos 8.9892 7.906 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "Sheet"
(name "")
(pos 23.987 3.6832)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${#} of ${##}"
(name "")
(pos 3.137 3.734)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify right)
)
(line
(name "")
(start 71.984 9.002)
(end 71.984 2)
)
(tbtext "${KICAD_VERSION}"
(name "")
(pos 48.476 3.683)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify center)
)
(tbtext "Scale"
(name "")
(pos 94.989 3.683)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${SCALE}"
(name "")
(pos 81.989 3.6832)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify center)
)
(tbtext "Release State"
(name "")
(pos 94.989 7.239)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${RELEASE_STATE}"
(name "")
(pos 82.989 7.239)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "Release Date"
(name "")
(pos 70.989 7.239)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 59.489 7.2392)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(line
(name "")
(start 24.987 9.0022)
(end 24.987 2.0002)
)
(tbtext "Git Hash"
(name "")
(pos 23.987 7.239)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${GIT_HASH_PCB}"
(name "")
(pos 3.137 7.239)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify right)
)
(tbtext "${FILENAME}"
(name "")
(pos 85.989 10.668)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "File Name"
(name "")
(pos 94.989 10.668)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Size"
(name "")
(pos 94.989 17.653)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Drawing Number"
(name "")
(pos 76.989 17.653)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Revision"
(name "")
(pos 23.987 17.653)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(line
(name "")
(start 24.989 19.304)
(end 24.989 12.522)
)
(line
(name "")
(start 77.989 19.304)
(end 77.989 12.522)
)
(tbtext "${PAPER}"
(name "")
(pos 94.989 14.8592)
(font
(face "Arial Narrow")
(size 2.032 2.032)
)
)
(tbtext "${DWG_NUMBER_PCB}"
(name "")
(pos 76.989 14.859)
(font
(face "Arial Narrow")
(size 2.159 2.159)
)
)
(tbtext "${REVISION}"
(name "")
(pos 23.989 14.8592)
(font
(face "Arial Narrow")
(size 2.159 2.159)
)
)
(line
(name "")
(start 95.989 26.289)
(end 2 26.289)
)
(tbtext "Drawing Title"
(name "")
(pos 94.989 24.638)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${DWG_TITLE_PCB}"
(name "")
(pos 94.989 21.844)
(font
(face "Arial Narrow")
(size 2.032 2.032)
)
)
(tbtext "Sheet Title"
(name "")
(pos 94.989 28.502)
(option notonpage1)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${TITLE}"
(name "")
(pos 85.489 28.502)
(option notonpage1)
(font
(face "Arial Narrow")
(size 2.032 2.032)
)
)
(rect
(name "")
(start 95.989 30.748)
(end 2 2)
(option notonpage1)
(comment "rect around the title block")
)
(tbtext "Designer"
(name "")
(pos 128.9892 14.1382)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${DESIGNER}"
(name "")
(pos 120.9892 14.0982)
(option page1only)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "${ASSEMBLY_NUMBER}"
(name "")
(pos 120.989 3.683)
(option page1only)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "Used On"
(name "")
(pos 128.989 3.683)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(line
(name "")
(start 129.489 12.522)
(end 95.989 12.522)
(option page1only)
)
(line
(name "")
(start 129.489 9.017)
(end 95.989 9.017)
(option page1only)
)
(line
(name "")
(start 129.489 5.512)
(end 95.989 5.512)
(option page1only)
)
(rect
(name "")
(start 129.4892 16.0072)
(end 96.0022 2.0002)
(option page1only)
(comment "rect around the title block")
)
(line
(name "segm9:Line")
(start 2.0022 13 rtcorner)
(end 80.0152 13 rtcorner)
(option page1only)
)
(tbtext "Used On"
(name "")
(pos 129.002 7.239)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Used On"
(name "")
(pos 129.002 10.668)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
)

View File

@@ -0,0 +1,493 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "9.0")
(setup
(textsize 1.5 1.5)
(linewidth 0.15)
(textlinewidth 0.15)
(left_margin 10)
(right_margin 10)
(top_margin 10)
(bottom_margin 10)
)
(rect
(name "")
(start 95.989 42.002)
(end 2 2)
(option page1only)
(comment "rect around the title block")
)
(rect
(name "")
(start 0 0 ltcorner)
(end 0 0)
(repeat 2)
(incrx 2)
(incry 2)
)
(line
(name "")
(start 50 2 ltcorner)
(end 50 0 ltcorner)
(repeat 30)
(incrx 50)
)
(tbtext "1"
(name "")
(pos 25 1 ltcorner)
(font
(size 1.3 1.3)
)
(repeat 100)
(incrx 50)
)
(line
(name "")
(start 50 2 lbcorner)
(end 50 0 lbcorner)
(repeat 30)
(incrx 50)
)
(tbtext "1"
(name "")
(pos 25 1 lbcorner)
(font
(size 1.3 1.3)
)
(repeat 100)
(incrx 50)
)
(line
(name "")
(start 0 50 ltcorner)
(end 2 50 ltcorner)
(repeat 30)
(incry 50)
)
(tbtext "A"
(name "")
(pos 1 25 ltcorner)
(font
(size 1.3 1.3)
)
(justify center)
(repeat 100)
(incry 50)
)
(line
(name "")
(start 0 50 rtcorner)
(end 2 50 rtcorner)
(repeat 30)
(incry 50)
)
(tbtext "A"
(name "")
(pos 1 25 rtcorner)
(font
(size 1.3 1.3)
)
(justify center)
(repeat 100)
(incry 50)
)
(line
(name "")
(start 95.989 5.512)
(end 2 5.512)
)
(line
(name "")
(start 95.989 9.017)
(end 2 9.017)
)
(line
(name "")
(start 95.989 12.522)
(end 2 12.522)
)
(line
(name "")
(start 95.989 19.304)
(end 2 19.304)
)
(line
(name "segm1:Line")
(start 79.9892 2 rtcorner)
(end 80.0022 13 rtcorner)
(option page1only)
)
(line
(name "segm2:Line")
(start 71.0022 6 rtcorner)
(end 71.0022 13 rtcorner)
(option page1only)
)
(line
(name "segm5:Line")
(start 15.4892 6 rtcorner)
(end 15.5022 13 rtcorner)
(option page1only)
)
(line
(name "segm9:Line")
(start 1.9892 9.5 rtcorner)
(end 80.0022 9.5 rtcorner)
(option page1only)
)
(line
(name "segm8:Line")
(start 1.9892 6 rtcorner)
(end 80.0022 6 rtcorner)
(option page1only)
)
(line
(name "segm7:Line")
(start 1.989 2 rtcorner)
(end 141.989 2 rtcorner)
)
(tbtext "REVISION HISTORY"
(name "text1:Text")
(pos 41.021 4.08 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(size 1.905 1.905)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "REV"
(name "text2:Text")
(pos 75.4892 7.906 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "DESCRIPTION"
(name "text4:Text")
(pos 43.2312 7.906 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "ZONE"
(name "text6:Text")
(pos 8.9892 7.906 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "Sheet"
(name "")
(pos 23.987 3.6832)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${#} of ${##}"
(name "")
(pos 3.137 3.734)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify right)
)
(line
(name "")
(start 71.984 9.002)
(end 71.984 2)
)
(tbtext "${KICAD_VERSION}"
(name "")
(pos 48.476 3.683)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify center)
)
(tbtext "Scale"
(name "")
(pos 94.989 3.683)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${ASSEMBLY_SCALE}:1"
(name "")
(pos 81.989 3.683)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify center)
)
(tbtext "Release State"
(name "")
(pos 94.989 7.239)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${RELEASE_STATE}"
(name "")
(pos 82.989 7.239)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "Release Date"
(name "")
(pos 70.989 7.239)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 59.489 7.2392)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(line
(name "")
(start 24.987 9.0022)
(end 24.987 2.0002)
)
(tbtext "Git Hash"
(name "")
(pos 23.987 7.239)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${GIT_HASH}"
(name "")
(pos 3.137 7.239)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify right)
)
(tbtext "${FILENAME}"
(name "")
(pos 85.989 10.668)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "File Name"
(name "")
(pos 94.989 10.668)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Size"
(name "")
(pos 94.989 17.653)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Drawing Number"
(name "")
(pos 76.989 17.653)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Revision"
(name "")
(pos 23.987 17.653)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(line
(name "")
(start 24.989 19.304)
(end 24.989 12.522)
)
(line
(name "")
(start 77.989 19.304)
(end 77.989 12.522)
)
(tbtext "${PAPER}"
(name "")
(pos 94.989 14.8592)
(font
(face "Arial Narrow")
(size 2.032 2.032)
)
)
(tbtext "${ASSEMBLY_NUMBER}"
(name "")
(pos 76.989 14.859)
(font
(face "Arial Narrow")
(size 2.159 2.159)
)
)
(tbtext "${REVISION}"
(name "")
(pos 23.989 14.8592)
(font
(face "Arial Narrow")
(size 2.159 2.159)
)
)
(line
(name "")
(start 95.989 26.289)
(end 2 26.289)
)
(tbtext "Drawing Title"
(name "")
(pos 94.989 24.638)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${DWG_TITLE_ASSY}"
(name "")
(pos 94.989 21.844)
(font
(face "Arial Narrow")
(size 2.032 2.032)
)
)
(tbtext "Sheet Title"
(name "")
(pos 94.989 28.502)
(option notonpage1)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${TITLE}"
(name "")
(pos 85.489 28.502)
(option notonpage1)
(font
(face "Arial Narrow")
(size 2.032 2.032)
)
)
(rect
(name "")
(start 95.989 30.748)
(end 2 2)
(option notonpage1)
(comment "rect around the title block")
)
(tbtext "Designer"
(name "")
(pos 128.9892 14.1382)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${DESIGNER}"
(name "")
(pos 120.9892 14.0982)
(option page1only)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "Used On"
(name "")
(pos 128.989 3.683)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(line
(name "")
(start 129.489 12.522)
(end 95.989 12.522)
(option page1only)
)
(line
(name "")
(start 129.489 9.017)
(end 95.989 9.017)
(option page1only)
)
(line
(name "")
(start 129.489 5.512)
(end 95.989 5.512)
(option page1only)
)
(rect
(name "")
(start 129.4892 16.0072)
(end 96.0022 2.0002)
(option page1only)
(comment "rect around the title block")
)
(line
(name "segm9:Line")
(start 2.0022 13 rtcorner)
(end 80.0152 13 rtcorner)
(option page1only)
)
(tbtext "Used On"
(name "")
(pos 129.002 7.239)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Used On"
(name "")
(pos 129.002 10.668)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
)

View File

@@ -0,0 +1,502 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "9.0")
(setup
(textsize 1.5 1.5)
(linewidth 0.15)
(textlinewidth 0.15)
(left_margin 10)
(right_margin 10)
(top_margin 10)
(bottom_margin 10)
)
(rect
(name "")
(start 95.989 42.002)
(end 2 2)
(option page1only)
(comment "rect around the title block")
)
(rect
(name "")
(start 0 0 ltcorner)
(end 0 0)
(repeat 2)
(incrx 2)
(incry 2)
)
(line
(name "")
(start 50 2 ltcorner)
(end 50 0 ltcorner)
(repeat 30)
(incrx 50)
)
(tbtext "1"
(name "")
(pos 25 1 ltcorner)
(font
(size 1.3 1.3)
)
(repeat 100)
(incrx 50)
)
(line
(name "")
(start 50 2 lbcorner)
(end 50 0 lbcorner)
(repeat 30)
(incrx 50)
)
(tbtext "1"
(name "")
(pos 25 1 lbcorner)
(font
(size 1.3 1.3)
)
(repeat 100)
(incrx 50)
)
(line
(name "")
(start 0 50 ltcorner)
(end 2 50 ltcorner)
(repeat 30)
(incry 50)
)
(tbtext "A"
(name "")
(pos 1 25 ltcorner)
(font
(size 1.3 1.3)
)
(justify center)
(repeat 100)
(incry 50)
)
(line
(name "")
(start 0 50 rtcorner)
(end 2 50 rtcorner)
(repeat 30)
(incry 50)
)
(tbtext "A"
(name "")
(pos 1 25 rtcorner)
(font
(size 1.3 1.3)
)
(justify center)
(repeat 100)
(incry 50)
)
(line
(name "")
(start 95.989 5.512)
(end 2 5.512)
)
(line
(name "")
(start 95.989 9.017)
(end 2 9.017)
)
(line
(name "")
(start 95.989 12.522)
(end 2 12.522)
)
(line
(name "")
(start 95.989 19.304)
(end 2 19.304)
)
(line
(name "segm1:Line")
(start 79.9892 2 rtcorner)
(end 80.0022 13 rtcorner)
(option page1only)
)
(line
(name "segm2:Line")
(start 71.0022 6 rtcorner)
(end 71.0022 13 rtcorner)
(option page1only)
)
(line
(name "segm5:Line")
(start 15.4892 6 rtcorner)
(end 15.5022 13 rtcorner)
(option page1only)
)
(line
(name "segm9:Line")
(start 1.9892 9.5 rtcorner)
(end 80.0022 9.5 rtcorner)
(option page1only)
)
(line
(name "segm8:Line")
(start 1.9892 6 rtcorner)
(end 80.0022 6 rtcorner)
(option page1only)
)
(line
(name "segm7:Line")
(start 1.989 2 rtcorner)
(end 141.989 2 rtcorner)
)
(tbtext "REVISION HISTORY"
(name "text1:Text")
(pos 41.021 4.08 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(size 1.905 1.905)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "REV"
(name "text2:Text")
(pos 75.4892 7.906 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "DESCRIPTION"
(name "text4:Text")
(pos 43.2312 7.906 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "ZONE"
(name "text6:Text")
(pos 8.9892 7.906 rtcorner)
(option page1only)
(font
(face "Arial Narrow")
(linewidth 0.35)
(color 0 0 224 1)
)
(justify center)
)
(tbtext "Sheet"
(name "")
(pos 23.987 3.6832)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${#} of ${##}"
(name "")
(pos 3.137 3.734)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify right)
)
(line
(name "")
(start 71.984 9.002)
(end 71.984 2)
)
(tbtext "${KICAD_VERSION}"
(name "")
(pos 48.476 3.683)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify center)
)
(tbtext "Scale"
(name "")
(pos 94.989 3.683)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${SCALE}"
(name "")
(pos 81.989 3.6832)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify center)
)
(tbtext "Release State"
(name "")
(pos 94.989 7.239)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${RELEASE_STATE}"
(name "")
(pos 82.989 7.239)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "Release Date"
(name "")
(pos 70.989 7.239)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 59.489 7.2392)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(line
(name "")
(start 24.987 9.0022)
(end 24.987 2.0002)
)
(tbtext "Git Hash"
(name "")
(pos 23.987 7.239)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${GIT_HASH_SCH}"
(name "")
(pos 3.137 7.239)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
(justify right)
)
(tbtext "${FILENAME}"
(name "")
(pos 85.989 10.668)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "File Name"
(name "")
(pos 94.989 10.668)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Size"
(name "")
(pos 94.989 17.653)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Drawing Number"
(name "")
(pos 76.989 17.653)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Revision"
(name "")
(pos 23.987 17.653)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(line
(name "")
(start 24.989 19.304)
(end 24.989 12.522)
)
(line
(name "")
(start 77.989 19.304)
(end 77.989 12.522)
)
(tbtext "${PAPER}"
(name "")
(pos 94.989 14.8592)
(font
(face "Arial Narrow")
(size 2.032 2.032)
)
)
(tbtext "${DWG_NUMBER_SCH}"
(name "")
(pos 76.989 14.859)
(font
(face "Arial Narrow")
(size 2.159 2.159)
)
)
(tbtext "${REVISION}"
(name "")
(pos 23.989 14.8592)
(font
(face "Arial Narrow")
(size 2.159 2.159)
)
)
(line
(name "")
(start 95.989 26.289)
(end 2 26.289)
)
(tbtext "Drawing Title"
(name "")
(pos 94.989 24.638)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${DWG_TITLE_SCH}"
(name "")
(pos 94.989 21.844)
(font
(face "Arial Narrow")
(size 2.032 2.032)
)
)
(tbtext "Sheet Title"
(name "")
(pos 94.989 28.502)
(option notonpage1)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${TITLE}"
(name "")
(pos 85.489 28.502)
(option notonpage1)
(font
(face "Arial Narrow")
(size 2.032 2.032)
)
)
(rect
(name "")
(start 95.989 30.748)
(end 2 2)
(option notonpage1)
(comment "rect around the title block")
)
(tbtext "Designer"
(name "")
(pos 128.9892 14.1382)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "${DESIGNER}"
(name "")
(pos 120.9892 14.0982)
(option page1only)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "${ASSEMBLY_NUMBER}"
(name "")
(pos 120.989 3.683)
(option page1only)
(font
(face "Arial Narrow")
(size 1.778 1.778)
)
)
(tbtext "Used On"
(name "")
(pos 128.989 3.683)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(line
(name "")
(start 129.489 12.522)
(end 95.989 12.522)
(option page1only)
)
(line
(name "")
(start 129.489 9.017)
(end 95.989 9.017)
(option page1only)
)
(line
(name "")
(start 129.489 5.512)
(end 95.989 5.512)
(option page1only)
)
(rect
(name "")
(start 129.4892 16.0072)
(end 96.0022 2.0002)
(option page1only)
(comment "rect around the title block")
)
(line
(name "segm9:Line")
(start 2.0022 13 rtcorner)
(end 80.0152 13 rtcorner)
(option page1only)
)
(tbtext "Used On"
(name "")
(pos 129.002 7.239)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
(tbtext "Used On"
(name "")
(pos 129.002 10.668)
(option page1only)
(font
(face "Arial Narrow")
(color 0 0 224 1)
)
)
)