Inital commit
Some checks failed
CI / release (push) Has been cancelled
CI / generate_outputs (push) Has been cancelled

This commit is contained in:
2026-02-17 08:39:27 -05:00
commit 1d094e6a04
81 changed files with 25739 additions and 0 deletions

264
.github/workflows/ci.yaml vendored Normal file
View File

@@ -0,0 +1,264 @@
name: CI
on:
workflow_dispatch:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+' # Match semantic versioning tags
branches:
- main
- dev
paths-ignore:
- '*.md'
env:
kibot_config: kibot_yaml/kibot_main.yaml
# Used variant. We assume:
# DRAFT: only schematic in progress, will only generate schematic PDF, netlist and BoM
# PRELIMINARY: will generate both schematic and PCB documents, but no ERC/DRC
# CHECKED: will generate both schematic and PCB documents, with ERC/DRC
# RELEASED: similar to CHECKED, automatically selected when pushing a tag to main
kibot_variant: DRAFT
# Set the KiCad version to 9
kicad_version: 9
kibot_log: kibot_run.log
permissions:
contents: write
jobs:
release:
needs: generate_outputs
runs-on: ubuntu-latest
if: github.ref_type == 'tag'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- name: Pull latest changes
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "GitHub Actions"
git fetch
git pull origin main
- name: Release
uses: docker://antonyurchenko/git-release:v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: |
Schematic/*.pdf
Manufacturing/Assembly/*
Manufacturing/Fabrication/*.pdf
Manufacturing/Fabrication/*.zip
Manufacturing/Fabrication/*.txt
3D/*.step
Testing/Testpoints/*.csv
generate_outputs:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'Merge pull request') || github.ref_type == 'tag'"
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
# Run these changelog update steps only on tag pushes
- name: Pull latest changes for changelog update
if: ${{ github.ref_type == 'tag' }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "GitHub Actions"
git fetch
git pull origin main
- name: Extract release notes
if: ${{ github.ref_type == 'tag' }}
uses: ffurrer2/extract-release-notes@v2
id: extract-release-notes
with:
prerelease: true
- name: Update changelog
if: ${{ github.ref_type == 'tag' }}
uses: thomaseizinger/keep-a-changelog-new-release@v2
with:
tag: ${{ github.ref_name }}
- name: Commit updated CHANGELOG
if: ${{ github.ref_type == 'tag' }}
uses: stefanzweifel/git-auto-commit-action@v5
with:
branch: main
commit_message: Update CHANGELOG
file_pattern: CHANGELOG.md
push_options: '--force'
- name: Cache 3D models data
id: models-cache
uses: set-soft/cache@main
with:
path: ~/cache_3d
key: cache_3d
- name: Determine VERSION Argument and Override Variant if Tag
id: determine-version-and-args
run: |
last_tag=$(git describe --tags --abbrev=0 || echo "")
if [[ "${{ github.ref_type }}" == "tag" ]]; then
version_arg="-E REVISION='${last_tag}'"
echo "Overriding kibot_variant to 'RELEASED' for tag"
echo "kibot_variant=RELEASED" >> $GITHUB_ENV
else
version_arg="-E REVISION='${last_tag}+ (Unreleased)'"
echo "kibot_variant=${{ env.kibot_variant }}" >> $GITHUB_ENV
fi
# Decide which group to use depending on kicad_version
if [[ "${{ env.kicad_version }}" == "9" ]]; then
group_name="all_group_k9"
else
group_name="all_group"
fi
# Determine additional_args based on the variant
case "$kibot_variant" in
"DRAFT")
additional_args="--skip-pre draw_fancy_stackup,erc,drc ${version_arg} --log ${{ env.kibot_log }} draft_group"
;;
"PRELIMINARY")
additional_args="--skip-pre erc,drc ${version_arg} --log ${{ env.kibot_log }} ${group_name}"
;;
"CHECKED"|"RELEASED")
additional_args="${version_arg} --log ${{ env.kibot_log }} ${group_name}"
;;
*)
echo "Unknown variant: $kibot_variant"
exit 1
;;
esac
echo "version_arg=${version_arg}" >> $GITHUB_ENV
echo "additional_args=${additional_args}" >> $GITHUB_ENV
# Generate notes (skipped for DRAFT variant)
- name: Generate notes (KiCad 8)
if: ${{ env.kicad_version == '8' && env.kibot_variant != 'DRAFT' }}
uses: INTI-CMNB/KiBot@v2_dk8
with:
skip: all
variant: ${{ env.kibot_variant }}
config: ${{ env.kibot_config }}
additional_args: --log kibot_run_notes.log notes
- name: Generate notes (KiCad 9)
if: ${{ env.kicad_version == '9' && env.kibot_variant != 'DRAFT' }}
uses: INTI-CMNB/KiBot@v2_dk9
with:
skip: all
variant: ${{ env.kibot_variant }}
config: ${{ env.kibot_config }}
additional_args: --log kibot_run_notes.log notes
# Generate README only (only for DRAFT variant)
- name: Generate README only (KiCad 8)
if: ${{ env.kicad_version == '8' && env.kibot_variant == 'DRAFT' }}
uses: INTI-CMNB/KiBot@v2_dk8
with:
skip: draw_fancy_stackup,set_text_variables,erc,drc
variant: ${{ env.kibot_variant }}
config: ${{ env.kibot_config }}
additional_args: --log kibot_run_readme.log md_readme
- name: Generate README only (KiCad 9)
if: ${{ env.kicad_version == '9' && env.kibot_variant == 'DRAFT' }}
uses: INTI-CMNB/KiBot@v2_dk9
with:
skip: draw_fancy_stackup,set_text_variables,erc,drc
variant: ${{ env.kibot_variant }}
config: ${{ env.kibot_config }}
additional_args: --log kibot_run_readme.log md_readme
# Generate outputs
- name: Generate outputs (KiCad 8)
if: ${{ env.kicad_version == '8' }}
uses: INTI-CMNB/KiBot@v2_dk8
with:
additional_args: ${{ env.additional_args }}
variant: ${{ env.kibot_variant }}
config: ${{ env.kibot_config }}
cache3D: YES
- name: Generate outputs (KiCad 9)
if: ${{ env.kicad_version == '9' }}
uses: INTI-CMNB/KiBot@v2_dk9
with:
additional_args: ${{ env.additional_args }}
variant: ${{ env.kibot_variant }}
config: ${{ env.kibot_config }}
cache3D: YES
- name: Pull latest changes
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "GitHub Actions"
if [[ "${{ github.ref_type }}" == "tag" ]]; then
echo "Triggered by a tag, committing changes in detached HEAD state"
git add -A
git commit -m "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 "Merge outputs from tag-triggered 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 "*.kicad_pcb"
git clean -f "*.kicad_pro"
git clean -f "*.kicad_dru"
git clean -f "*.kicad_prl"
- name: Update Outputs
uses: stefanzweifel/git-auto-commit-action@v5
with:
branch: ${{ github.ref_name }}
commit_message: Update Outputs
- name: Store log
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: log_file
path: ${{ env.kibot_log }}
- name: Store notes log
if: ${{ always() && env.kibot_variant != 'DRAFT' }}
uses: actions/upload-artifact@v4
with:
name: log_file_notes
path: kibot_run_notes.log
- name: Store README log
if: ${{ always() && env.kibot_variant == 'DRAFT' }}
uses: actions/upload-artifact@v4
with:
name: log_file_readme
path: kibot_run_readme.log

16
.gitignore vendored Normal file
View File

@@ -0,0 +1,16 @@
*-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

1900
Block Diagram.kicad_sch Normal file

File diff suppressed because it is too large Load Diff

19
CHANGELOG.md Normal file
View File

@@ -0,0 +1,19 @@
# Changelog
## [Unreleased]
### Fixed
- Fixes
### Added
- Additions
### Changed
- Changes
### Removed
- Deletions

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Nguyen Vincent
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

BIN
Logos/dummy_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

126
Nixie_Tube_Clock.kicad_dru Normal file
View File

@@ -0,0 +1,126 @@
(version 1)
#PCBWay Custom DRC for Kicad 8
# 6 layers, 2 oz outer and 1 oz inner. Optimized for lowest cost.
# ----------------------------------- Minimum trace width and spacing --------------------
# 2oz copper
(rule "Minimum Trace Width and Spacing (outer layer)"
(constraint track_width (min 0.2mm))
(constraint clearance (min 0.2mm))
(layer outer)
(condition "A.Type == 'track'"))
(rule "Minimum Trace Width and Spacing (innner layer)"
(constraint track_width (min 0.2mm))
(constraint clearance (min 0.2mm))
(layer inner)
(condition "A.Type == 'track'"))
# ------------------------------------------------------------------------------------------------------
# Drill/hole size - listed here to maintain order of rule application. Must not override rule set in Via hole/diameter size below.
(rule "drill hole size (mechanical)"
(constraint hole_size (min 0.15mm) (max 6.3mm)))
# ----------------------------------- Via hole/diameter size -------------------------------------------
(rule "Minimum Via Diameter and Hole Size"
(constraint hole_size (min 0.25mm))
(constraint via_diameter (min 0.55mm))
(condition "A.Type == 'via'"))
# ----------------------------------- Drill/hole size --------------------------------------------------
(rule "PTH Hole Size"
(constraint hole_size (min 0.25mm) (max 6.35mm))
(condition "A.Type != 'Via' && A.isPlated()"))
(rule "Minimum Non-plated Hole Size"
(constraint hole_size (min 0.5mm))
(condition "A.Type == 'pad' && !A.isPlated()"))
(rule "Pad Size"
(constraint hole_size (min 0.25mm))
(constraint annular_width (min 0.15mm))
(condition "A.Type == 'Pad' && A.isPlated()"))
(rule "Minimum Castellated Hole Size"
(constraint hole_size (min 0.6mm))
(condition "A.Type == 'pad' && A.Fabrication_Property == 'Castellated pad'"))
(rule "Min. Plated Slot Width"
(constraint hole_size (min 0.5mm))
(condition "(A.Hole_Size_X != A.Hole_Size_Y) && A.isPlated()"))
(rule "Min. Non-Plated Slot Width"
(constraint hole_size (min 0.8mm))
(condition "(A.Hole_Size_X != A.Hole_Size_Y) && !A.isPlated()"))
# ----------------------------------- Minimum clearance ------------------------------------------------
(rule "hole to hole clearance (different nets)"
(constraint hole_to_hole (min 0.5mm))
(condition "A.Net != B.Net"))
(rule "via to track clearance"
(constraint hole_clearance (min 0.254mm))
(condition "A.Type == 'via' && B.Type == 'track'"))
(rule "via to via clearance (same nets)"
(constraint hole_to_hole (min 0.254mm))
(condition "A.Type == 'via' && B.Type == A.Type && A.Net == B.Net"))
(rule "pad to pad clearance (with hole, different nets)"
(constraint hole_to_hole (min 0.5mm))
(condition "A.Type == 'pad' && B.Type == A.Type && A.Net != B.Net"))
(rule "pad to pad clearance (without hole, different nets)"
(constraint clearance (min 0.2mm))
(condition "A.Type == 'Pad' && B.Type == 'Pad'"))
(rule "NPTH to Track clearance"
(constraint hole_clearance (min 0.254mm))
(condition "A.Pad_Type == 'NPTH, mechanical' && B.Type == 'track'"))
(rule "NPTH with copper around"
(constraint hole_clearance (min 0.20mm))
(condition "A.Pad_Type == 'NPTH, mechanical' && B.Type != 'track'"))
(rule "PTH to Track clearance"
(constraint hole_clearance (min 0.33mm))
(condition "A.isPlated() && A.Type != 'Via' && B.Type == 'track'"))
(rule "Pad to Track clearance"
(constraint clearance (min 0.2mm))
(condition "A.isPlated() && A.Type != 'Via' && B.Type == 'track'"))
# ----------------------------------- Board Outlines (PICK ONE) -------------------------------------
#Default Routed Edge Clearance
(rule "Trace to Outline"
(constraint edge_clearance (min 0.3mm))
(condition "A.Type == 'track'"))
# ----------------------------------- Silkscreen ----------------------------------------------------
(rule "Minimum Text"
(constraint text_thickness (min 0.15mm))
(constraint text_height (min 0.8mm))
(layer "?.Silkscreen"))
(rule "Pad to Silkscreen"
(constraint silk_clearance (min 0.15mm))
(layer outer)
(condition "A.Type == 'pad' && (B.Type == 'text' || B.Type == 'graphic')"))
# ----------------------------------- Test Points Courtyard -----------------------------------------
(rule "Test Point Courtyard Exclusion"
(constraint courtyard_clearance (min -1mm))
(condition "A.Reference =='TP*'"))
# ----------------------------------- Fiducials Courtyard -------------------------------------------
(rule "Test Point Courtyard Exclusion"
(constraint courtyard_clearance (min -1mm))
(condition "A.Reference =='FM*'"))

8320
Nixie_Tube_Clock.kicad_pcb Normal file

File diff suppressed because it is too large Load Diff

1067
Nixie_Tube_Clock.kicad_pro Normal file

File diff suppressed because it is too large Load Diff

1893
Nixie_Tube_Clock.kicad_sch Normal file

File diff suppressed because it is too large Load Diff

2437
Power - Sequencing.kicad_sch Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,332 @@
(kicad_sch
(version 20231120)
(generator "eeschema")
(generator_version "8.0")
(uuid "07236397-3ba4-47af-9809-3faac3a2aa49")
(paper "A3")
(title_block
(title "Project Architecture")
(date "2025-01-12")
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
(polyline
(pts
(xy 185.42 87.63) (xy 185.42 99.06)
)
(stroke
(width 0)
(type default)
)
(uuid "8b678fb1-fee7-4461-95f7-7f383f478fdc")
)
(polyline
(pts
(xy 233.68 125.73) (xy 233.68 134.62)
)
(stroke
(width 0)
(type default)
)
(uuid "8c7de816-3d34-497f-b0c8-22f80559d2d8")
)
(polyline
(pts
(xy 185.42 85.09) (xy 185.42 73.66)
)
(stroke
(width 0)
(type default)
)
(uuid "903e49b2-1b5d-4317-a33b-adfda1594a88")
)
(polyline
(pts
(xy 233.68 114.3) (xy 233.68 123.19)
)
(stroke
(width 0)
(type default)
)
(uuid "9543d363-0f36-4c41-97bc-b97723f48818")
)
(arc
(start 185.42 85.09)
(mid 185.0451 85.9851)
(end 184.15 86.36)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
(uuid 13e3bc56-4a98-40ef-8c39-3b21620a792f)
)
(arc
(start 234.97 124.44)
(mid 234.0749 124.0651)
(end 233.7 123.17)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
(uuid 19c30b2f-1391-4be0-8a5f-17a3226c0876)
)
(arc
(start 233.7 125.71)
(mid 234.0749 124.8149)
(end 234.97 124.44)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
(uuid 5b059745-d833-4f9d-9745-ec7a90904541)
)
(arc
(start 233.7 134.6)
(mid 232.9561 136.3961)
(end 231.16 137.14)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
(uuid 62bb3cd5-23b6-4c8e-a8f2-a293aca5d83b)
)
(arc
(start 184.15 86.36)
(mid 185.0451 86.7349)
(end 185.42 87.63)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
(uuid 787eda22-1bf9-4d1b-96b2-11995bb2af0f)
)
(arc
(start 187.96 101.6)
(mid 186.1698 100.8502)
(end 185.42 99.06)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
(uuid 7c454724-851d-42c5-8823-df570c1fc5eb)
)
(arc
(start 231.16 111.74)
(mid 232.9502 112.4898)
(end 233.7 114.28)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
(uuid 94ad6bc3-4505-4c4a-89fc-83d0c51dd562)
)
(arc
(start 185.42 73.66)
(mid 186.1639 71.8639)
(end 187.96 71.12)
(stroke
(width 0)
(type default)
)
(fill
(type none)
)
(uuid fda911f3-adb3-4abb-981f-a877a93c831b)
)
(text_box "Description"
(exclude_from_sim no)
(at 166.37 83.82 0)
(size 17.145 5.08)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(size 1.905 1.905)
(thickness 0.381)
(bold yes)
(color 0 0 0 1)
)
(justify right top)
)
(uuid "971f0c48-6726-412d-badf-cee82cbffedd")
)
(text_box "Description"
(exclude_from_sim no)
(at 234.95 121.92 0)
(size 26.015 5.1)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(size 1.905 1.905)
(thickness 0.381)
(bold yes)
(color 0 0 0 1)
)
(justify left top)
)
(uuid "97bb5e92-ab26-4907-9b80-08d49465fc86")
)
(text_box "[${#}] ${TITLE}"
(exclude_from_sim no)
(at 144.78 21.59 0)
(size 130.81 12.7)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 8 8)
(thickness 1.2)
(bold yes)
(color 162 22 34 1)
)
)
(uuid "f4789478-c68e-4cee-9edd-5d11b744f94d")
)
(text "Page 5"
(exclude_from_sim no)
(at 226.06 133.35 0)
(effects
(font
(size 2.54 2.54)
(bold yes)
(color 100 70 50 1)
)
(justify right bottom)
(href "#5")
)
(uuid "b60ecde0-2a85-4071-a728-47148cd80779")
)
(text "Page 4"
(exclude_from_sim no)
(at 226.06 95.25 0)
(effects
(font
(size 2.54 2.54)
(bold yes)
(color 20 60 40 1)
)
(justify right bottom)
(href "#4")
)
(uuid "f04f874a-d252-4474-87f2-c34bbb094a4c")
)
(sheet
(at 190.5 114.3)
(size 36.83 20.32)
(fields_autoplaced yes)
(stroke
(width 0.1524)
(type solid)
)
(fill
(color 255 200 0 0.5020)
)
(uuid "e744f3ce-03a6-44a6-8792-1447ef232b9a")
(property "Sheetname" "Section B - Title B"
(at 190.5 113.2709 0)
(effects
(font
(size 1.905 1.905)
(bold yes)
)
(justify left bottom)
)
)
(property "Sheetfile" "Section B - TItle B.kicad_sch"
(at 190.5 135.2046 0)
(effects
(font
(face "Arial")
(size 1.27 1.27)
)
(justify left top)
)
)
(instances
(project "KDT_Hierarchical_KiBot"
(path "/f9e05184-c88b-4a88-ae9c-ab2bdb32be7c/c5103ceb-5325-4a84-a025-9638a412984e"
(page "5")
)
)
)
)
(sheet
(at 190.5 76.2)
(size 36.83 20.32)
(fields_autoplaced yes)
(stroke
(width 0.1524)
(type solid)
)
(fill
(color 128 255 128 0.5000)
)
(uuid "f06537ee-772d-44d3-8c50-e0ba41038c9c")
(property "Sheetname" "Section A - Title A"
(at 190.5 75.1709 0)
(effects
(font
(size 1.905 1.905)
(bold yes)
)
(justify left bottom)
)
)
(property "Sheetfile" "Section A - Title A.kicad_sch"
(at 190.5 97.1046 0)
(effects
(font
(face "Arial")
(size 1.27 1.27)
)
(justify left top)
)
)
(instances
(project "KDT_Hierarchical_KiBot"
(path "/f9e05184-c88b-4a88-ae9c-ab2bdb32be7c/c5103ceb-5325-4a84-a025-9638a412984e"
(page "4")
)
)
)
)
)

693
README.md Normal file
View File

@@ -0,0 +1,693 @@
<h1 align="center">KiCad 8/9 Template for CI/CD with KiBot</h1>
<p align="center">
<a href=https://www.kicad.org/>
<img alt="Light" src="https://gitlab.com/uploads/-/system/group/avatar/6593371/kicadlogo.png" height=200>
</a>
&nbsp; &nbsp; &nbsp; &nbsp;
<a href=https://kibot.readthedocs.io/en/latest/>
<img alt="Dark" src="https://raw.githubusercontent.com/INTI-CMNB/KiBot/dev/docs/images/kibot_740x400_logo.png" height=200>
</a>
</p>
A **KiCad 8/9** template for **automated**, professional documentation generation with **Continuous Integration and Continuous Development** (CI/CD) using [KiBot](https://github.com/INTI-CMNB/KiBot/tree/master).
A video tutorial for setting up this template is available [here](https://www.youtube.com/watch?v=63R6Wnx44uY).
An example project using this template can be found [here](https://github.com/nguyen-v/amulet_controller_kibot/tree/master).
> [!NOTE]
> This file will be overridden by a KiBot run.
## TABLE OF CONTENTS
- [TABLE OF CONTENTS](#table-of-contents)
- [FEATURES](#features)
- [GETTING STARTED](#getting-started)
- [USAGE](#usage)
- [CI/CD Workflow and Semantic Versioning](#cicd-workflow-and-semantic-versioning)
- [Running Locally](#running-locally)
- [Calculating Board Costs (KiCost)](#calculating-board-costs-kicost)
- [Visualizing Outputs in a Webpage](#visualizing-outputs-in-a-webpage)
- [PROJECT CONVERSION GUIDE](#project-conversion-guide)
- [Folders](#folders)
- [Schematic](#schematic)
- [PCB](#pcb)
- [Summary in table format](#summary-in-table-format)
- [DIRECTORY STRUCTURE](#directory-structure)
- [CREDITS](#credits)
- [RESOURCES](#resources)
- [CONTRIBUTING](#contributing)
## FEATURES
- **Automated fabrication document**: [Example](https://github.com/nguyen-v/amulet_controller_kibot/blob/master/Manufacturing/Fabrication/amulet_controller-fabrication.pdf). The stackup table, fabrication notes, drill drawings/tables, testpoint tables/highlighting are all automated.
- **Automated assembly document**: [Example](https://github.com/nguyen-v/amulet_controller_kibot/blob/master/Manufacturing/Assembly/amulet_controller-assembly.pdf). The images, tables, DNP crosses, texts are all automated.
- **Automated table of contents** in schematic
- **Automated 3D images** of the PCB in various documents
- **Synchronised `CHANGELOG.md`** with Revision History page of the schematic
- **Automated README.md**: images and other board information
- **Various outputs** such as gerbers, 3D renders, ERC/DRC reports, BoM, Diff visualizer
- **Modern webpage** for visualizing the generated files and documents
- **Robust workflow** with two branches and semantic versioning
- **Releases with changelog** and assets
- **Can be run locally** with Docker
## GETTING STARTED
1. Go to your KiCad templates folder
**Windows**:
```
cd "C:\Program Files\KiCad\8.0\share\kicad\template"
```
**Linux**:
```
cd ~/.local/share/kicad/8.0/template
```
2. Clone the repository
```
git clone https://github.com/nguyen-v/KDT_Hierarchical_KiBot.git
```
3. Install the fonts inside of [`kibot_resources/fonts`](kibot_resources/fonts) if not already installed on the system.
**Linux**:
```
cp -i KDT_Hierarchical_KiBot/kibot_resources/fonts/*.ttf ~/.fonts/
fc-cache
```
5. A custom color theme ([`Altium_Theme.json`](kibot_resources/colors/Altium_Theme.json)) is also provided in [`kibot_resources/colors`](kibot_resources/colors).
You should move this file to your KiCad Themes folder.
**Windows**:
`xcopy "KDT_Hierarchical_KiBot\kibot_resources\colors\Altium_Theme.json" "C:\Users\%USERNAME%\AppData\Roaming\kicad\8.0\colors\" /-Y`
**Linux**:
`cp -i KDT_Hierarchical_KiBot/kibot_resources/colors/Altium_Theme.json ~/.config/kicad/8.0/colors/`
> [!NOTE]
> In the steps above, replace ```8.0``` with ```9.0``` for KiCad 9
5. Create a new project with:
**File → New Project From Template** and select `KDT_Hierarchical_KiBot`
> [!CAUTION]
> Under Linux, the ```.github``` folder from the template needs to be copied at the root of the project directory, as it is not copied when creating a project from a template in KiCad.
6. Create a new `dev` branch. This will be the working branch.
```
git checkout -b dev
```
7. Modify the following fields in [`kibot_main.yaml`](kibot_yaml/kibot_main.yaml#L556) according to your project:
```
# Metadata ===================================================================
PROJECT_NAME: Project Name
BOARD_NAME: Board Name
COMPANY: Company Name
DESIGNER: Author
LOGO: 'Logos/dummy_logo.png'
GIT_URL: 'https://github.com/nguyen-v/KDT_Hierarchical_KiBot'
# Preflight ==================================================================
CHECK_ZONE_FILLS: false
STACKUP_TABLE_NOTE: external layer thicknesses are specified after plating
# BoM ========================================================================
MPN_FIELD: 'Manufacturer Part Number'
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
# Schematic parameters =======================================================
COLOR_THEME: Altium_Theme
SHEET_WKS: ${KIPRJMOD}/Templates/KDT_Template_PCB_GIT_A4.kicad_wks
FAB_SCALING: 1
ASSEMBLY_SCALING: 1
# References to exclude from testpoint highlighting ==========================
EXCLUDE_REFS: '[MB*]' # for components on the PCB but not on the schematic
# 3D Viewer rotations (in steps) =============================================
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
```
8. The files inside of [`kibot_resources/templates`](kibot_resources/templates) should also be modified according to your project. These include Assembly and Fabrication notes, Impedance table and README file templates.
9. Edit the [`*.kicad_dru`](KDT_Hierarchical_KiBot.kicad_dru) if necessary according to your design rules. Right now, it has been set for PCBWay 6-layer PCBs with 2oz outer 1oz inner, focusing on lowest cost.
10. Edit the [`kibot_out_csv_bom.yaml`](kibot_yaml/kibot_out_csv_bom.yaml), [`kibot_out_html_bom.yaml`](kibot_yaml/kibot_out_html_bom.yaml) and [`kibot_out_xlsx_bom.yaml`](kibot_yaml/kibot_out_xlsx_bom.yaml) files according to the component fields that you use. You can refer to the [KiCost Documentation](https://hildogjr.github.io/KiCost/docs/_build/singlehtml/index.html) for the field names.
## USAGE
### CI/CD Workflow and Semantic Versioning
This template is meant to be used in a CI/CD environment on GitHub. The workflow is as follows:
- Any custom font used in the project must be added to the [`kibot_resources/fonts`](kibot_resources/fonts) folder.
> [!NOTE]
> KiCad 9 allows for fonts to be embedded in the schematic. However, it is still good practice to add the fonts in the folder mentioned.
- There are two branches, a `main` and a `dev` branch. The `dev` branch is the working branch. The `main` should only be used for pull requests and releases.
- Changes should be recorded in the [`CHANGELOG.md`](CHANGELOG.md) file, and should respect [semantic versioning guidelines](https://semver.org/) for [hardware](https://www.maskset.net/blog/2023/02/26/semantic-versioning-for-hardware/). The changes of the current version should be added under the `[Unreleased]` section.
- The `variant` variable in [.github/workflows/ci.yaml](.github/workflows/ci.yaml#L21) should be selected according to the project progress.
```
# Used variant. We assume:
# DRAFT: only schematic in progress, will only generate schematic PDF, netlist and BoM
# PRELIMINARY: will generate both schematic and PCB documents, but no ERC/DRC
# CHECKED: will generate both schematic and PCB documents, with ERC/DRC
# RELEASED: similar to CHECKED, automatically selected when pushing a tag to master
kibot_variant: CHECKED
```
- The `kicad_version` variable in [.github/workflows/ci.yaml](.github/workflows/ci.yaml#L24) should be selected according to the desired KiCad version. Supported versions are 8 and 9.
- You should work locally on the `dev` branch. When a change is made, the changes should be pushed to GitHub which will trigger the KiBot workflow. The generated files will be committed and pushed back to the repository.
- After a successful KiBot run on the remote repository, you should pull back the changes into your local repository.
- To avoid conflicts, you should avoid modifying the `.kicad_pro` file locally before pulling from the remote (after the completion of a KiBot run). Otherwise, you will need to solve merge conflicts when pulling the file.
- To synchronise the Revision History of the schematic with the `CHANGELOG.md` file, you should create new text variables in [kibot_pre_set_text_variables.yaml](kibot_yaml/kibot_pre_set_text_variables.yaml#L39). The text variables should then be added in the text boxes of the Revision History sheet.
```
- variable: '@RELEASE_TITLE_VAR@x.x.x'
command: '@GET_TITLE_CMD@ x.x.x'
- variable: '@RELEASE_BODY_VAR@x.x.x'
command: '@GET_BODY_CMD@ x.x.x'
```
- When ready for a release, you should open a pull request and merge the changes into main. Currently the workflow is set **not to trigger on pull requests**, as we assume the changes coming from `dev` are up-to-date.
- To create a release, push a tag on the `main` branch with the version number (for example `x.x.x = 1.1.1`):
```
git checkout main
git pull
git tag x.x.x
git push origin x.x.x
```
This will start a KiBot run with the variant set as `RELEASED`. When the run completes, it also creates a release with assets and updates the `CHANGELOG.md` file (renames the `[Unreleased]` section with the pushed tag and creates a new `[Unreleased]` section).
- After a release, you will need to update your `main` branch to be up-to-date with the remote:
```
git pull
```
And you will also need to rebase your `dev` branch to the `main` branch:
```
git checkout dev
git rebase main
```
> [!NOTE]
> You are free to modify the [.github/workflows/ci.yaml](.github/workflows/ci.yaml) file to suit your workflow needs.
***
### Running Locally
KiBot can be installed if you want to run some of the scripts locally. If you only plan to use it in a CI/CD workflow, this step can be skipped.
Installation steps can be found on the [official documentation](https://kibot.readthedocs.io/en/master/installation.html).
The easiest way to install KiBot if custom development is not required is with dockers.
1. Install **and run** [Docker Desktop](https://docs.docker.com/desktop/)
2. Run the script `docker_kibot_windows.bat` or `docker_kibot_linux.sh` depending on your platform in [`kibot_resources/scripts`](kibot_resources/scripts). Currently tested on Windows and WSL2. This should pull and start a docker running the `dev` branch of KiBot. You should have access to your local files.
***
**KiCad 8**
Windows:
```
.\docker_kibot_windows.bat
```
Linux:
```
./docker_kibot_linux.sh
```
***
**KiCad 9**
Windows:
```
.\docker_kibot_windows.bat -v 9
```
Linux:
```
./docker_kibot_linux.sh -v 9
```
***
Once in the docker, you can use the [`kibot_launch.sh`](kibot_launch.sh) script to generate and visualize outputs.
```
./kibot_launch.sh
```
You can get more information about the usage with
```
./kibot_launch.sh --help
```
When running the script with no arguments, it will default to the `CHECKED` variant and generate all outputs. A variant can be set with the `-v` flag. If a custom variant is used (i.e. other than the default variants `DRAFT`, `PRELIMINARY`, `CHECKED`, `RELEASED`), the outputs will be generated in the `Variants` folder.
Each default variant will have different KiBot flags, which is useful for different phases of the project:
1. **DRAFT**
Only schematic in progress, will only generate schematic PDF, netlist and BoM
2. **PRELIMINARY**
Will generate both schematic and PCB documents, but no ERC/DRC
3. **CHECKED**
Will generate both schematic and PCB documents, with ERC/DRC
4. **RELEASED**
Similar to CHECKED, automatically selected when pushing a tag to main (CI/CD)
> [!WARNING]
> When generating outputs locally, it could conflict with the outputs generated by the remote CI/CD workflow. In this case, you should decide how to resolve the conflicts.
***
### Calculating Board Costs (KiCost)
[KiCost](https://github.com/hildogjr/KiCost) is used to estimate costs and get a nice XLSX spreadsheet with part specs. In this project, we run KiCost locally to avoid too many API calls. Also, DigiKey's API [doesn't seem to work](https://github.com/set-soft/kicost_ci_test) in a CI/CD environment.
To run KiCost, you will need to create a file `kicost_config_local.yaml` in [`kicost_yaml`](kicost_yaml). You can use the [`kicost_config_local_template.yaml`](kicost_yaml/kicost_config_local.yaml) file as a base. Once you have filled in the API keys for the desired manufacturers, KiCost can be run with:
```
./kibot_launch.sh --costs
```
This will create a spreadsheet in [`Manufacturing/Assembly`](Manufacturing/Assembly/) folder.
You can also specify a variant if desired:
```
./kibot_launch.sh -v <VARIANT> --costs
```
For more information, please have a look at the official [documentation](https://hildogjr.github.io/KiCost/docs/_build/singlehtml/index.html)
> [!CAUTION]
> KiCost expects the **MPN (Manufacturer Part Number)** and **Manufacturer** fields to be named in a certain way. To cater for different naming conventions, we rename user-defined fields to KiCost-compatible fields in the KiBot run. You can set your user-defined field for **MPN** and **Manufacturer** in the [`kibot_yaml/kibot_main.yaml`](kibot_yaml/kibot_main.yaml#L576) by editing the `MPN_FIELD` and `MAN_FIELD` definitions.
<p align="center">
<img alt="XLSX BoM" src="https://github.com/user-attachments/assets/e7683ae3-efcc-4f64-b4b7-c4c39c3c9d48">
</p>
<p align="center">
<img alt="XLSX Costs" src="https://github.com/user-attachments/assets/1136a095-fc2d-4f59-bcbf-24f6e1a69410">
</p>
<p align="center">
<img alt="XLSX Specs" src="https://github.com/user-attachments/assets/77677761-7ab1-4580-b60c-6a0563c59d67">
</p>
***
### Visualizing Outputs in a Webpage
The outputs of KiBot can be visualized in a webpage (excepted for the `DRAFT` variant). This can be done by running:
```
./kibot_launch.sh --server
```
And opening `http://localhost:8000` in your favorite browser. The server can be shut down with:
```
./kibot_launch.sh --stop-server
```
> [!TIP]
> You can also give the port as an argument if you want to use another port.
<p align="center">
<img alt="Web Page" src="https://github.com/user-attachments/assets/9abee686-5245-4850-b00f-b67be02284ee">
</p>
## PROJECT CONVERSION GUIDE
This section will describe the necessary steps to convert an existing project to work with this template. This will also give more insights into how the template works in general. For more information, you should refer to the template.
***
### Folders
You should keep the folder structure as defined in [DIRECTORY STRUCTURE](#directory-structure). The folders marked as optional are not mandatory for the project to work, as long as the relevant file paths are correct (e.g. logos). You should then go through the same steps as in [GETTING STARTED](#getting-started) and [USAGE](#usage).
### Schematic
You should select [`Templates/KDT_Template_GIT.kicad_wks`](Templates/KDT_Template_GIT.kicad_wks) as your Drawing Sheet in:
**File → Page Settings → Drawing Sheet**
On the same page, The `Revision` and `Company` fields should be set to `${REVISION}` and `${COMPANY}` and exported to all sheets.
<p align="center">
<img alt="Drawing Sheet" src="https://github.com/user-attachments/assets/311f4e13-cdb9-45cb-9fcf-1a88f8432416">
</p>
For an automated table of contents, you should copy the root page of the template into your project, or use the `${SHEET_NAME_X}` text variables. These variables will be replaced by the sheet name (page `X`) when running KiBot. Currently the maximum number of pages is set to 40. You are free to add new text variables in [`kibot_yaml/kibot_pre_set_text_variables`](kibot_yaml/kibot_pre_set_text_variables.yaml#L160).
The `${VARIANT}` text variable is replaced by the current variant name (e.g. DRAFT or RELEASED).
The `${RELEASE_DATE}` and `${RELEASE_DATE_NUM}` will be replaced by the tag release date and are just the same date in different formats (for example, `${RELEASE_DATE} = 17-Dec-2024` and `${RELEASE_DATE_NUM} = 2024-12-17`).
To get 3D pictures of the PCB in the schematic, you can create text boxes with the desired size, with the following names: `kibot_image_png_3d_viewer_angled_top` and `kibot_image_png_3d_viewer_angled_bottom`.
<p align="center">
<img alt="kibot_image_png_3d_viewer_angled_top, kibot_image_png_3d_viewer_angled_bottom" src="https://github.com/user-attachments/assets/2f7f23fa-e233-4a54-b656-860f69a33d36">
</p>
> You can add any image generated by a KiBot output using by changing the name to `kibot_image_<output_name>`.
To synchronise the Revision History of the schematic with the `CHANGELOG.md` file, you should create new text variables in [kibot_pre_set_text_variables.yaml](kibot_yaml/kibot_pre_set_text_variables.yaml#L39). The text variables (`${RELEASE_TITLE_VAR<VERSION>}` and `${RELEASE_BODY_VAR<VERSION>`) should then be added in the text boxes of the Revision History sheet.
```
- variable: '@RELEASE_TITLE_VAR@x.x.x'
command: '@GET_TITLE_CMD@ x.x.x'
- variable: '@RELEASE_BODY_VAR@x.x.x'
command: '@GET_BODY_CMD@ x.x.x'
```
***
### PCB
The layer names of the PCB should follow the ones defined in [kibot_main.yaml](kibot_yaml/kibot_main.yaml#L631).
```
LAYER_TITLE_PAGE: TitlePage
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
```
<p align="center">
<img alt="PCB Layer Names" src="https://github.com/user-attachments/assets/9089a324-e170-4cd5-ae4f-396ef3fdd1c9">
</p>
The layer names can be set in
**File → Board Setup → Board Stackup → Board Editor Layers**
Each layer has a specific function, and must be setup in a particular way.
In the following explanation, when a group must be created, this can be done using KiCad's **Draw Rectangle** tool, and then a group can be created with:
**Right-Click → Grouping → Group Items**
Pressing **E** then allows you to rename the group. The size and position of the group usually determines the size and location of the element to be drawn. To change the font inside a group, you can create a textbox with the desired font in the group. You can set the border width to 0.
<p align="center">
<img alt="Textbox Group" src="https://github.com/user-attachments/assets/b7956436-d8df-47e1-a082-ca6bbaeae168">
</p>
***
**TitlePage**
This is used for the first page of the assembly document. Here, you should add **Top View** and **Bottom View** texts and under these text, you can create two named groups with the location and size that you desire. The groups should be named `kibot_image_png_3d_viewer_angled_top` and `kibot_image_png_3d_viewer_angled_bottom`.
> [!TIP]
> You can add any image generated by a KiBot output using by changing the name to `kibot_image_<output_name>`.
<p align="center">
<img alt="TitlePage" src="https://github.com/user-attachments/assets/38470acb-2645-42eb-b38f-222b4a6475b2">
</p>
<p align="center">
<img alt="kibot_image_png_3d_viewer_angled_top" src="https://github.com/user-attachments/assets/8b8d1beb-7f2a-4339-a4be-258da6ff926a" width="45%">
&nbsp; &nbsp; &nbsp; &nbsp;
<img alt="kibot_image_png_3d_viewer_angled_bottom" src="https://github.com/user-attachments/assets/1419a4bd-6247-4eb8-a410-cb4665220ba2" width="45%">
</p>
***
**User.Comments**
Currently not used, you can use it for your project.
***
**F.DNP** and **B.DNP**
These are used to hold the red crosses for components marked as *Do Not Populate*. The layers for those should be kept empty.
***
**DrillMap**
This layer is used to draw drill map drawings and drill tables in the fabrication document. You should create a named group called `kibot_table_csv_drill_table` and place it where the drill tables should be drawn for each drill layer pair. The drill drawing is by default aligned with the PCB.
<p align="center">
<img alt="DrillMap" src="https://github.com/user-attachments/assets/018821a7-890a-45a8-b4b7-07eb7e3e8bcf">
<img alt="kibot_table_csv_drill_table" src="https://github.com/user-attachments/assets/e35f71d1-dbdf-42ec-8f02-b95118e12bdb">
</p>
***
**F.TestPoint** and **B.TestPoint**
These layers are used to highlight testpoint locations in the fabrication document. They should be left as empty.
***
**F.AssemblyText**
This layer is used to hold information about the number of components, assembly notes, assembly drawing and 3D render of the top of the PCB. For the number of components, you should create a group named `kibot_table_csv_comp_count`. Assembly notes should be added using the text variable `${ASSEMBLY_NOTES}`. The 3D render can be added by creating a group named `kibot_image_png_3d_viewer_top`.
<p align="center">
<img alt="F.AssemblyText" src="https://github.com/user-attachments/assets/3ecbb012-ad26-4e94-9fb2-f2743e7ff44e">
<img alt="kibot_image_png_3d_viewer_top" src="https://github.com/user-attachments/assets/823c4d2a-d84a-4096-b277-c7938554fb98">
</p>
<p align="center">
<img alt="kibot_table_csv_comp_count" src="https://github.com/user-attachments/assets/e05bb55f-971e-4b34-9af6-0b44668ae599" width="45%">
&nbsp; &nbsp; &nbsp; &nbsp;
<img alt="${ASSEMBLY_NOTES}" src="https://github.com/user-attachments/assets/954b444f-8db9-4e08-85c1-5c62ee96d5fa" width="45%">
</p>
**B.AssemblyText**
This layer hold the assembly drawing and 3D render for the backside of the PCB. For the 3D render, you should add a group named `kibot_image_png_3d_viewer_bottom`.
***
**F.Dimensions**
This layer holds information about the PCB stackup and dimensions, impedance table and fabrication notes. The PCB stackup can be added by creating a group named `kibot_fancy_stackup`. The impedance table with a group named `kibot_table_csv_impedance_table` and the fabrication notes are included with the text variable `${FABRICATION_NOTES}`.
> [!NOTE]
> The text variable ${FABRICATION_NOTE} is dependent on the [`kibot_resources/templates/fabrication_notes.txt`](kibot_resources/templates/fabrication_notes.txt) file. Modify it to your needs.
<p align="center">
<img alt="F.Dimensions" src="https://github.com/user-attachments/assets/6f47fa22-8bc8-4a65-97d7-891e124f82a2">
<img alt="kibot_fancy_stackup" src="https://github.com/user-attachments/assets/bb45fed2-820a-48a4-b8c7-9473efa5007a">
</p>
<p align="center">
<img alt="kibot_table_csv_impedance_table" src="https://github.com/user-attachments/assets/add357a8-4aee-4d9d-873f-08883d448c07">
<img alt="${FABRICATION_NOTES}" src="https://github.com/user-attachments/assets/82083591-50fe-4381-b643-ba91a7d45452">
</p>
**B.Dimensions**
This layer contains information about the dimensions of the PCB, seen from the backside. Similarly to the front side, you can use KiCad's **Dimensions** tool to add some dimensions.
<p align="center">
<img alt="B.Dimensions" src="https://github.com/user-attachments/assets/cd62501d-b696-49f7-a9a5-9cf350b76d70">
</p>
***
**F.TestPointList**
This layer is used to hold information about the testpoints locations and nets. You can add testpoint tables by creating a group named `kibot_table_csv_testpoints_top`. It is also possible to use python slicing to separate the table into multiple tables, by using slice operators in the name. For example: `kibot_table_csv_testpoints_top[:32]` and `kibot_table_csv_testpoints_top[32:]` in two different groups would create two tables with the first one including the first 32 testpoints and the second one every testpoint after that.
Test point locations are computed from the drill origin, which can be set with:
**Place → Drill/Place File Origin**.
> [!TIP]
> It is usually good practice to set the origin at the bottom left of the board.
<p align="center">
<img alt="F.TestPointList" src="https://github.com/user-attachments/assets/ec1e538e-05f0-4e3b-a5b7-642a60116f10">
</p>
<p align="center">
<img alt="kibot_table_csv_testpoints_top[:32]" src="https://github.com/user-attachments/assets/4c69e9e0-461f-4de7-9528-34ebe5d93b9c" width="45%">
&nbsp; &nbsp; &nbsp; &nbsp;
<img alt="kibot_table_csv_testpoints_top[32:]" src="https://github.com/user-attachments/assets/d77a5d2c-f599-49e7-801b-01bb4950e769" width="45%">
</p>
**B.TestPointList**
Similar to the front testpoint layer. The group should be named `kibot_table_csv_testpoints_bottom`. Note that because PCB is inverted for this layer during print, if the group is placed on the left side it will be printed on the right side.
<p align="center">
<img alt="B.TestPointList" src="https://github.com/user-attachments/assets/e1f6cd3a-5322-4699-9ae8-d9e4d9d16b93">
</p>
<p align="center">
<img alt="kibot_table_csv_testpoints_bottom" src="https://github.com/user-attachments/assets/42e035fa-a4c3-4251-81da-6ff4a5da102e">
</p>
***
### Summary in table format
| **Layer** | **Description** | **Changes/Included Items** |
|-------------------------------|----------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
| **TitlePage** | First page of the assembly document. | Add groups: `kibot_image_png_3d_viewer_angled_top` and `kibot_image_png_3d_viewer_angled_bottom`. |
| **User.Comments** | Reserved for project-specific comments. | Not used by default; customize as needed. |
| **F.DNP / B.DNP** | Holds red crosses for components marked as *Do Not Populate*. | Keep these layers empty. |
| **DrillMap** | Draws drill map drawings and tables in the fabrication document, aligned by default with the PCB. | Add group: `kibot_table_csv_drill_table`. |
| **F.TestPoint / B.TestPoint** | Highlights testpoint locations in the fabrication document. | Keep these layers empty. |
| **F.AssemblyText** | Contains component count, assembly notes, drawings, and 3D renders for the top side of the PCB. | Add group: `kibot_table_csv_comp_count` (table) and `kibot_image_png_3d_viewer_top` (image). Include `${ASSEMBLY_NOTES}` text.|
| **B.AssemblyText** | Holds assembly drawings and 3D render for the bottom side of the PCB. | Add group: `kibot_image_png_3d_viewer_bottom` for the 3D render. |
| **F.Dimensions** | Holds PCB stackup, dimensions, impedance table, and fabrication notes. | Add groups: `kibot_fancy_stackup` (stackup), `kibot_table_csv_impedance_table` (impedance table), and `${FABRICATION_NOTES}`. |
| **B.Dimensions** | Holds dimensions of the PCB, seen from the backside. | Use KiCad **Dimensions** tool to add details. |
| **F.TestPointList** | Lists testpoint locations and nets for the top layer. | Add group: `kibot_table_csv_testpoints_top`. Use slicing (e.g., `[:32]`) for multiple tables. |
| **B.TestPointList** | Lists testpoint locations and nets for the bottom layer. | Add group: `kibot_table_csv_testpoints_bottom`. Adjust left-side placements for inverted print alignment. |
## DIRECTORY STRUCTURE
The following directory structure is used in the template. Folders marked as 'optional' are not crucial for KiBot to work. Other folders will be generated automatically during a KiBot run.
```
├─ Computations # Misc calculations (optional)
├─ HTML # HTML files for generated webpage
├─ Images # Pictures and renders
├─ kibot_resources
│ ├─ colors # Color theme for KiCad
│ ├─ fonts # Fonts used in the project
│ ├─ scripts # External scripts used with KiBot
│ └─ templates # Templates for KiBot generated reports
├─ kibot_yaml # KiBot YAML config files
├─ KiRI # KiRI (PCB diff viewer) files
├─ lib # Footprint and symbol libraries (optional)
│ ├─ 3d_models # Component 3D models
│ ├─ lib_fp # Footprint libraries
│ └─ lib_sym # Symbol libraries
├─ Logos # Logos (optional)
├─ Manufacturing
│ ├─ Assembly # Assembly documents (BoM, pos, notes)
│ │
│ └─ Fabrication # Fabrication documents (ZIP, notes)
│ ├─ Drill Tables # CSV drill tables
│ └─ Gerbers # Gerbers
├─ Report # Reports for ERC/DRC
├─ Schematic # PDF of schematic
├─ Templates # Title block templates
├─ Testing
│ └─ Testpoints # Testpoints tables
└─ Variants # Outputs for assembly variants (optional)
```
## CREDITS
[@set-soft](https://github.com/set-soft) for his amazing work on [KiBot](https://github.com/INTI-CMNB/KiBot/tree/master). Check out the [documentation](https://kibot.readthedocs.io/en/latest/) for more!
## RESOURCES
- [Video Tutorial for this template](https://www.youtube.com/watch?v=63R6Wnx44uY)
- [Example project (from the video tutorial)](https://github.com/nguyen-v/KiBot_Project_Test)
- [Example project (Amulet)](https://github.com/nguyen-v/amulet_controller_kibot/tree/master)
- [(Outdated) Best practices and tips for good schematics](https://www.youtube.com/watch?v=_ZjyeltLMAg)
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
- [KiBot Documentation](https://kibot.readthedocs.io/en/latest/)
- [KiBot Repository](https://github.com/INTI-CMNB/KiBot)
- [KiCost Documentation](https://hildogjr.github.io/KiCost/docs/_build/singlehtml/index.html)
- [KiCost Repository](https://github.com/hildogjr/KiCost)
- [KiRI Repository](https://github.com/leoheck/kiri)
## CONTRIBUTING
Feel free to open a pull request if you have any cool features to add!

252
Revision History.kicad_sch Normal file
View File

@@ -0,0 +1,252 @@
(kicad_sch
(version 20231120)
(generator "eeschema")
(generator_version "8.0")
(uuid "ea8c4f5e-7a49-4faf-a994-dbc85ed86b0a")
(paper "A4")
(title_block
(title "Revision History")
(date "2025-01-12")
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
(polyline
(pts
(xy 85.09 31.75) (xy 85.09 149.86)
)
(stroke
(width 0.635)
(type default)
(color 0 0 0 1)
)
(uuid "5f29c90a-4bd5-401c-a0f6-a99df09914f4")
)
(polyline
(pts
(xy 151.13 31.75) (xy 151.13 149.86)
)
(stroke
(width 0.635)
(type default)
(color 0 0 0 1)
)
(uuid "a6b610d4-f09b-4d6e-ac67-0bb3d0e09fbe")
)
(polyline
(pts
(xy 19.05 31.75) (xy 19.05 190.5)
)
(stroke
(width 0.635)
(type default)
(color 0 0 0 1)
)
(uuid "d98bd22a-837a-4b14-b8b1-ecc667696c58")
)
(polyline
(pts
(xy 217.17 31.75) (xy 217.17 149.86)
)
(stroke
(width 0.635)
(type default)
(color 0 0 0 1)
)
(uuid "fe21cbb6-f53c-41a1-bc1c-520e82f71f78")
)
(text_box "${RELEASE_BODY_1.1.0}"
(exclude_from_sim no)
(at 220.98 35.56 0)
(size 58.42 111.76)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.905 1.905)
(color 0 0 0 1)
)
(justify left top)
)
(uuid "0c062e2b-2be1-4307-b752-045c211787f4")
)
(text_box "[${#}] ${TITLE}"
(exclude_from_sim no)
(at 80.01 16.51 0)
(size 137.16 12.7)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 6 6)
(thickness 1.2)
(bold yes)
(color 162 22 34 1)
)
)
(uuid "20a0a094-ac98-46df-bdac-21d5721f7697")
)
(text_box "${RELEASE_BODY_1.0.0}"
(exclude_from_sim no)
(at 22.86 35.56 0)
(size 58.42 146.05)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.905 1.905)
(color 0 0 0 1)
)
(justify left top)
)
(uuid "212b625e-4169-46f2-a2fc-afc6cbef07cd")
)
(text_box "${RELEASE_TITLE_1.0.2}"
(exclude_from_sim no)
(at 152.4 31.75 0)
(size 57.15 7.62)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.905 1.905)
(thickness 0.254)
(bold yes)
)
(justify left top)
)
(uuid "61447e65-3862-4ca7-a61e-5d8506cb38bb")
)
(text_box "${RELEASE_BODY_1.0.2}"
(exclude_from_sim no)
(at 154.94 35.56 0)
(size 58.42 111.76)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.905 1.905)
(color 0 0 0 1)
)
(justify left top)
)
(uuid "8ad0acb7-8a2e-40a2-87c7-888a93359ccd")
)
(text_box "${RELEASE_BODY_1.0.1}"
(exclude_from_sim no)
(at 88.9 35.56 0)
(size 57.15 105.41)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.905 1.905)
(color 0 0 0 1)
)
(justify left top)
)
(uuid "9af8400a-3034-4071-a364-608020db49d5")
)
(text_box "${RELEASE_TITLE_1.0.0}"
(exclude_from_sim no)
(at 20.32 31.75 0)
(size 57.15 7.62)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.905 1.905)
(thickness 0.254)
(bold yes)
)
(justify left top)
)
(uuid "d183a6b7-e8a2-46ec-8c3c-ec3041423bc1")
)
(text_box "${RELEASE_TITLE_1.0.1}"
(exclude_from_sim no)
(at 86.36 31.75 0)
(size 57.15 7.62)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.905 1.905)
(thickness 0.254)
(bold yes)
)
(justify left top)
)
(uuid "ed7f1ff6-56f6-4427-ab7f-2ffe27717c3d")
)
(text_box "${RELEASE_TITLE_1.1.0}"
(exclude_from_sim no)
(at 218.44 31.75 0)
(size 57.15 7.62)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.905 1.905)
(thickness 0.254)
(bold yes)
)
(justify left top)
)
(uuid "f47af890-f55a-44bf-b54f-b7df3adde008")
)
)

View File

@@ -0,0 +1,184 @@
(kicad_sch
(version 20231120)
(generator "eeschema")
(generator_version "8.0")
(uuid "ea8c4f5e-7a49-4faf-a994-dbc85ed86b0a")
(paper "A4")
(title_block
(title "Sheet Title A")
(date "2025-01-12")
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
(polyline
(pts
(xy 129.54 120.65) (xy 116.84 124.46)
)
(stroke
(width 0)
(type dot)
(color 255 0 0 1)
)
(uuid "dbc0dbb3-ec35-483a-84d2-c330277e1998")
)
(rectangle
(start 129.54 110.49)
(end 137.16 125.73)
(stroke
(width 0)
(type dot)
(color 255 0 0 1)
)
(fill
(type none)
)
(uuid 1d95e40b-2bfb-46ac-aef7-d61406185c71)
)
(rectangle
(start 55.88 30.48)
(end 248.92 149.86)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid bb86d4de-8a6c-49fd-bb3c-0c8f9cc72e55)
)
(text_box "LAYOUT NOTE:\nblablabla"
(exclude_from_sim no)
(at 66.04 97.79 0)
(size 26.67 11.43)
(stroke
(width 1)
(type solid)
(color 0 0 255 1)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(thickness 0.4)
(bold yes)
(color 0 0 255 1)
)
(justify left top)
)
(uuid "59800026-abce-490f-af73-e553b627145c")
)
(text_box "[${#}] ${TITLE}"
(exclude_from_sim no)
(at 115.57 15.24 0)
(size 72.39 12.7)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 6 6)
(thickness 1.2)
(bold yes)
(color 162 22 34 1)
)
)
(uuid "b2c13488-4f2f-433b-bdc6-d210d1646aca")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 57.15 139.7 0)
(size 190.5 7.62)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "b610ad11-6470-4e17-bb6a-df05c5ad2515")
)
(text_box "DESIGN NOTE:\nblablabla"
(exclude_from_sim no)
(at 95.25 124.46 0)
(size 21.59 11.43)
(stroke
(width 0.8)
(type solid)
(color 250 236 0 1)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(color 0 0 0 1)
)
(justify left top)
)
(uuid "e0003229-9448-4893-9fb1-bea9e839bb75")
)
(text "J. Pieper ADC investigation"
(exclude_from_sim no)
(at 142.24 170.18 0)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(color 0 0 0 1)
)
(justify left bottom)
(href "https://jpieper.com/2023/07/24/stm32g4-adc-performance-part-2/")
)
(uuid "9b3ecc35-3df2-428b-a29e-c6c2c744422e")
)
(text "STM32G474 Datasheet p.81"
(exclude_from_sim no)
(at 142.24 166.37 0)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(color 0 0 0 1)
)
(justify left bottom)
(href "https://www.st.com/resource/en/datasheet/stm32g474cb.pdf")
)
(uuid "e6fea1fe-2cf8-4a39-929e-14f4aedafb02")
)
(text "AN5346"
(exclude_from_sim no)
(at 142.24 162.56 0)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(color 0 0 0 1)
)
(justify left bottom)
(href "https://www.st.com/resource/en/application_note/an5346-stm32g4-adc-use-tips-and-recommendations-stmicroelectronics.pdf")
)
(uuid "f25578fd-4ab6-4599-95bc-eaa8a509f479")
)
)

View File

@@ -0,0 +1,507 @@
(kicad_sch
(version 20231120)
(generator "eeschema")
(generator_version "8.0")
(uuid "ea8c4f5e-7a49-4faf-a994-dbc85ed86b0a")
(paper "A3")
(title_block
(title "Sheet Title B")
(date "2025-01-12")
(rev "${REVISION}")
(company "${COMPANY}")
)
(lib_symbols)
(rectangle
(start 139.7 125.73)
(end 224.79 205.74)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid 1d862d27-55c8-43d9-a1e0-027d1852f163)
)
(rectangle
(start 317.5 39.37)
(end 373.38 240.03)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid 1d9edcfe-b949-46c5-adca-40f822b4bd2a)
)
(rectangle
(start 45.72 172.72)
(end 134.62 205.74)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid 5d23fe69-1b57-41a7-86cd-8987bca3e109)
)
(rectangle
(start 45.72 210.82)
(end 134.62 240.03)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid 8b07e48f-2db7-43ad-80d6-e91fd34b7137)
)
(rectangle
(start 229.87 186.69)
(end 312.42 205.74)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid 8fb364d8-7e61-4713-a5cf-4e5bf9a0422c)
)
(rectangle
(start 229.87 125.73)
(end 312.42 181.61)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid 91e86061-3695-4d86-a73e-d25af3bfe9b8)
)
(rectangle
(start 139.7 210.82)
(end 224.79 240.03)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid d99cdb64-d2e4-4f1f-8584-4020073b6248)
)
(rectangle
(start 45.72 39.37)
(end 134.62 167.64)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid ed047b56-79da-45e9-8381-b3465e9473b3)
)
(rectangle
(start 139.7 39.37)
(end 312.42 120.65)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid ed78b7e7-9d87-4eba-bb13-ab88d26954ef)
)
(rectangle
(start 229.87 210.82)
(end 312.42 240.03)
(stroke
(width 1)
(type default)
(color 200 200 200 1)
)
(fill
(type none)
)
(uuid f026768c-915f-4378-b3f2-b0a2f2a348b8)
)
(text_box "Block Description"
(exclude_from_sim no)
(at 46.99 194.31 0)
(size 86.36 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "22f68459-86b0-4160-81dc-9d64d58e4265")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 140.97 228.6 0)
(size 82.55 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "5050590c-bc0b-438f-ac65-a11e5219903d")
)
(text_box "[${#}] ${TITLE}"
(exclude_from_sim no)
(at 161.29 20.32 0)
(size 96.52 12.7)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 8 8)
(thickness 1.2)
(bold yes)
(color 162 22 34 1)
)
)
(uuid "524c500e-48b2-4d74-9c30-5c34bf6c2558")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 46.99 228.6 0)
(size 86.36 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "67a85d80-fe45-4492-a23f-f4ed25b939a9")
)
(text_box "DESIGN NOTE:\nblabla"
(exclude_from_sim no)
(at 77.47 143.51 0)
(size 21.59 15.24)
(stroke
(width 0.8)
(type solid)
(color 255 165 0 1)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(color 0 0 0 1)
)
(justify left top)
)
(uuid "7118d66d-27ed-4a42-9d0f-29873dd1133d")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 231.14 228.6 0)
(size 80.01 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "7283beb6-c696-4e44-ac80-edfae78c644b")
)
(text_box "LAYOUT NOTE:\nblabla"
(exclude_from_sim no)
(at 101.6 143.51 0)
(size 26.67 15.24)
(stroke
(width 1)
(type solid)
(color 0 0 255 1)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(thickness 0.4)
(bold yes)
(color 0 0 255 1)
)
(justify left top)
)
(uuid "789bb8df-08ec-4683-a441-f4ff02e08c1e")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 46.99 156.21 0)
(size 86.36 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "904a8349-50c0-42c2-9fb8-b365e5e4dae5")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 142.24 109.22 0)
(size 167.64 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "96ca24d3-fb87-492b-b46b-2ff8e6f8597a")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 231.775 170.815 0)
(size 78.74 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "9cf3d12e-f9c3-4c34-8081-b16b6bc5d5dd")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 231.14 194.31 0)
(size 80.01 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "a0355043-f06f-4f70-9556-f7b249e99a87")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 318.77 228.6 0)
(size 53.34 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "ac59a6b3-731c-4363-a803-7459ac300c4a")
)
(text_box "DESIGN NOTE:\nblabla"
(exclude_from_sim no)
(at 53.34 143.51 0)
(size 21.59 15.24)
(stroke
(width 0.8)
(type solid)
(color 200 200 200 1)
)
(fill
(type none)
)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(color 0 0 0 1)
)
(justify left top)
)
(uuid "b30fc753-248d-41ea-b0ab-815ff2704544")
)
(text_box "Block Description"
(exclude_from_sim no)
(at 140.97 194.31 0)
(size 82.55 9.525)
(stroke
(width -0.0001)
(type default)
)
(fill
(type none)
)
(effects
(font
(face "Times New Roman")
(size 2.54 2.54)
(thickness 0.508)
(bold yes)
(color 162 22 34 1)
)
(justify bottom)
)
(uuid "d975f102-c262-465d-91fc-7f6c552cfb8d")
)
(text "Flexible I/O worked examples"
(exclude_from_sim no)
(at 265.43 254 0)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(color 0 0 0 1)
)
(justify left bottom)
(href "https://jpieper.com/2022/06/30/flexible-i-o-worked-examples/")
)
(uuid "16842e9f-eef2-418b-80ee-4eca09c5cd4a")
)
(text "References:"
(exclude_from_sim no)
(at 265.43 250.19 0)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(thickness 0.254)
(bold yes)
(color 0 0 0 1)
)
(justify left bottom)
)
(uuid "ca73a951-c39c-4a3c-9e12-06e6bc2f3311")
)
(text "Flexible I/O source configuration"
(exclude_from_sim no)
(at 265.43 256.54 0)
(effects
(font
(face "Arial")
(size 1.27 1.27)
(color 0 0 0 1)
)
(justify left bottom)
(href "https://jpieper.com/2022/06/28/flexible-i-o-source-configuration/")
)
(uuid "ff128f57-01dd-404e-9bb2-8208299d438c")
)
)

View File

@@ -0,0 +1,540 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "8.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 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)
)
(tbtext "${#}"
(name "")
(pos 25.6 6.0002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet:"
(name "")
(pos 25.989 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "of"
(name "")
(pos 17.489 5.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${##}"
(name "")
(pos 14 6)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Size:"
(name "")
(pos 41.989 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${PAPER}"
(name "")
(pos 40.989 6.0022)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 2.0022)
(end 43.489 12.5022)
)
(line
(name "")
(start 43.489 12.5022)
(end 1.989 12.5022)
)
(line
(name "")
(start 27.489 12.5022)
(end 27.489 2.0022)
)
(line
(name "")
(start 43.489 12.5022)
(end 43.489 23.0022)
)
(line
(name "")
(start 43.489 23.0022)
(end 1.989 23.0022)
)
(tbtext "Revision:"
(name "")
(pos 17.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${REVISION}"
(name "")
(pos 17.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 19.489 23.0022)
(end 19.489 12.5022)
)
(tbtext "Date:"
(name "")
(pos 41.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 23.0022)
(end 43.489 33.5022)
)
(line
(name "")
(start 43.489 33.5022)
(end 1.989 33.5022)
)
(tbtext "Project Name:"
(name "")
(pos 41.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 41.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Reviewer:"
(name "")
(pos 68.9892 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT9}"
(name "")
(pos 68.9892 6.0022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 77.989 12.5022)
(end 43.489 12.5022)
)
(line
(name "")
(start 70.4892 2.0022)
(end 70.4892 12.5022)
)
(tbtext "Designer:"
(name "")
(pos 68.9892 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 70.4892 12.5022)
(end 70.4892 23.0022)
)
(line
(name "")
(start 77.989 23.0022)
(end 43.489 23.0022)
)
(tbtext "${DESIGNER}"
(name "")
(pos 68.9892 16.5022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 12.5022)
(end 77.989 12.5022)
)
(line
(name "")
(start 112.489 12.5022)
(end 112.489 23.0022)
)
(line
(name "")
(start 112.489 23.0022)
(end 77.989 23.0022)
)
(tbtext "${FILENAME}"
(name "")
(pos 110.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 33.5022)
(end 43.489 33.5022)
)
(line
(name "")
(start 112.489 23.0022)
(end 112.489 33.5022)
)
(tbtext "Board Name:"
(name "")
(pos 110.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Variant:"
(name "")
(pos 41.989 42.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 44.0022)
(end 1.989 44.0022)
)
(line
(name "")
(start 43.489 33.5022)
(end 43.489 44.0022)
)
(tbtext "${VARIANT}"
(name "")
(pos 41.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 112.489 33.5022)
(end 112.489 44.0022)
)
(tbtext "Company:"
(name "")
(pos 110.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMPANY}"
(name "")
(pos 110.989 37.502)
(font
(face "Times New Roman") bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${PROJECT_NAME}"
(name "")
(pos 41.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${BOARD_NAME}"
(name "")
(pos 110.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 12.5022)
(end 146.989 23.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 112.489 23.0022)
)
(line
(name "")
(start 146.989 12.5022)
(end 112.489 12.5022)
)
(line
(name "")
(start 146.989 2.0022)
(end 146.989 12.5022)
)
(tbtext "File Name:"
(name "")
(pos 110.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Title:"
(name "")
(pos 145.489 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETPATH}"
(name "")
(pos 145.489 6.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Path:"
(name "")
(pos 145.489 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${TITLE}"
(name "")
(pos 145.489 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 44.0022)
(end 112.489 44.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 146.989 44.0022)
)
(tbtext "Comments:"
(name "")
(pos 145.489 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT1}"
(name "")
(pos 145.489 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT2}"
(name "")
(pos 145.489 34.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT3}"
(name "")
(pos 145.489 30.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT4}"
(name "")
(pos 145.489 27.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 146.989 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 188.989 2.0022)
)
)

View File

@@ -0,0 +1,563 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "8.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 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)
)
(tbtext "${#}"
(name "")
(pos 25.6 6.0002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet:"
(name "")
(pos 25.989 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "of"
(name "")
(pos 17.489 5.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${##}"
(name "")
(pos 14 6)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Size:"
(name "")
(pos 41.989 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${PAPER}"
(name "")
(pos 40.989 6.0022)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 2.0022)
(end 43.489 12.5022)
)
(line
(name "")
(start 43.489 12.5022)
(end 1.989 12.5022)
)
(line
(name "")
(start 27.489 12.5022)
(end 27.489 2.0022)
)
(line
(name "")
(start 43.489 12.5022)
(end 43.489 23.0022)
)
(line
(name "")
(start 43.489 23.0022)
(end 1.989 23.0022)
)
(tbtext "Revision:"
(name "")
(pos 25.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${REVISION}"
(name "")
(pos 25.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 27.489 23.002)
(end 27.489 12.502)
)
(tbtext "Date:"
(name "")
(pos 41.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 23.0022)
(end 43.489 33.5022)
)
(line
(name "")
(start 43.489 33.5022)
(end 1.989 33.5022)
)
(tbtext "Project Name:"
(name "")
(pos 41.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 41.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Reviewer:"
(name "")
(pos 68.9892 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT9}"
(name "")
(pos 68.9892 6.0022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 77.989 12.5022)
(end 43.489 12.5022)
)
(line
(name "")
(start 70.4892 2.0022)
(end 70.4892 12.5022)
)
(tbtext "Designer:"
(name "")
(pos 68.9892 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 70.4892 12.5022)
(end 70.4892 23.0022)
)
(line
(name "")
(start 77.989 23.0022)
(end 43.489 23.0022)
)
(tbtext "${DESIGNER}"
(name "")
(pos 68.9892 16.5022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 12.5022)
(end 77.989 12.5022)
)
(line
(name "")
(start 112.489 12.5022)
(end 112.489 23.0022)
)
(line
(name "")
(start 112.489 23.0022)
(end 77.989 23.0022)
)
(tbtext "${FILENAME}"
(name "")
(pos 110.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 33.5022)
(end 43.489 33.5022)
)
(line
(name "")
(start 112.489 23.0022)
(end 112.489 33.5022)
)
(tbtext "Board Name:"
(name "")
(pos 110.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Variant:"
(name "")
(pos 41.989 42.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 44.0022)
(end 1.989 44.0022)
)
(line
(name "")
(start 43.489 33.5022)
(end 43.489 44.0022)
)
(tbtext "${VARIANT}"
(name "")
(pos 41.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 112.489 33.5022)
(end 112.489 44.0022)
)
(tbtext "Company:"
(name "")
(pos 110.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMPANY}"
(name "")
(pos 110.989 37.502)
(font
(face "Times New Roman") bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${PROJECT_NAME}"
(name "")
(pos 41.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${BOARD_NAME}"
(name "")
(pos 110.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 12.5022)
(end 146.989 23.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 112.489 23.0022)
)
(line
(name "")
(start 146.989 12.5022)
(end 112.489 12.5022)
)
(line
(name "")
(start 146.989 2.0022)
(end 146.989 12.5022)
)
(tbtext "File Name:"
(name "")
(pos 110.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Title:"
(name "")
(pos 145.489 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETPATH}"
(name "")
(pos 145.489 6.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Path:"
(name "")
(pos 145.489 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${TITLE}"
(name "")
(pos 145.489 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 44.0022)
(end 112.489 44.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 146.989 44.0022)
)
(tbtext "Comments:"
(name "")
(pos 145.489 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT1}"
(name "")
(pos 145.489 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT2}"
(name "")
(pos 145.489 34.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT3}"
(name "")
(pos 145.489 30.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT4}"
(name "")
(pos 145.489 27.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 146.989 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 188.989 2.0022)
)
(tbtext "Git Hash:"
(name "")
(pos 17.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 19.489 44.002)
(end 19.489 33.502)
)
(tbtext "${GIT_HASH_SCH}"
(name "")
(pos 17.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
)

View File

@@ -0,0 +1,557 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "8.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 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)
)
(tbtext "${#}"
(name "")
(pos 25.6 6.0002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet:"
(name "")
(pos 25.989 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "of"
(name "")
(pos 17.489 5.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${##}"
(name "")
(pos 14 6)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Size:"
(name "")
(pos 41.989 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${PAPER}"
(name "")
(pos 40.989 6.0022)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 2.0022)
(end 43.489 12.5022)
)
(line
(name "")
(start 43.489 12.5022)
(end 1.989 12.5022)
)
(line
(name "")
(start 27.489 12.5022)
(end 27.489 2.0022)
)
(line
(name "")
(start 43.489 12.5022)
(end 43.489 23.0022)
)
(line
(name "")
(start 43.489 23.0022)
(end 1.989 23.0022)
)
(tbtext "Revision:"
(name "")
(pos 17.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${REVISION}"
(name "")
(pos 17.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 19.489 23.0022)
(end 19.489 12.5022)
)
(tbtext "Date:"
(name "")
(pos 41.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 23.0022)
(end 43.489 33.5022)
)
(line
(name "")
(start 43.489 33.5022)
(end 1.989 33.5022)
)
(tbtext "Project Name:"
(name "")
(pos 41.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 41.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Reviewer:"
(name "")
(pos 68.9892 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT9}"
(name "")
(pos 68.9892 6.0022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 77.989 12.5022)
(end 43.489 12.5022)
)
(line
(name "")
(start 70.4892 2.0022)
(end 70.4892 12.5022)
)
(tbtext "Designer:"
(name "")
(pos 68.9892 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 70.4892 12.5022)
(end 70.4892 23.0022)
)
(line
(name "")
(start 77.989 23.0022)
(end 43.489 23.0022)
)
(tbtext "${DESIGNER}"
(name "")
(pos 68.9892 16.5022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 12.5022)
(end 77.989 12.5022)
)
(line
(name "")
(start 112.489 12.5022)
(end 112.489 23.0022)
)
(line
(name "")
(start 112.489 23.0022)
(end 77.989 23.0022)
)
(tbtext "${FILENAME}"
(name "")
(pos 110.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 33.5022)
(end 43.489 33.5022)
)
(line
(name "")
(start 112.489 23.0022)
(end 112.489 33.5022)
)
(tbtext "Board Name:"
(name "")
(pos 110.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Variant:"
(name "")
(pos 41.989 42.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 44.0022)
(end 1.989 44.0022)
)
(line
(name "")
(start 43.489 33.5022)
(end 43.489 44.0022)
)
(tbtext "${VARIANT}"
(name "")
(pos 41.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 112.489 33.5022)
(end 112.489 44.0022)
)
(tbtext "Company:"
(name "")
(pos 110.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMPANY}"
(name "")
(pos 110.989 37.502)
(font
(face "Times New Roman") bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${PROJECT_NAME}"
(name "")
(pos 41.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${BOARD_NAME}"
(name "")
(pos 110.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 12.5022)
(end 146.989 23.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 112.489 23.0022)
)
(line
(name "")
(start 146.989 12.5022)
(end 112.489 12.5022)
)
(line
(name "")
(start 146.989 2.0022)
(end 146.989 12.5022)
)
(tbtext "File Name:"
(name "")
(pos 110.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Title:"
(name "")
(pos 145.489 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETPATH}"
(name "")
(pos 145.489 6.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Path:"
(name "")
(pos 145.489 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETNAME}"
(name "")
(pos 145.489 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 44.0022)
(end 112.489 44.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 146.989 44.0022)
)
(tbtext "Comments:"
(name "")
(pos 145.489 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT1}"
(name "")
(pos 145.489 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT2}"
(name "")
(pos 145.489 34.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT3}"
(name "")
(pos 145.489 30.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT4}"
(name "")
(pos 145.489 27.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 146.989 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 188.989 2.0022)
)
(tbtext "${BOARD_NAME} ${TITLE} Document"
(name "")
(pos 392.989 267.502)
(font
(face "Times New Roman")
(size 4 4) bold)
)
(tbtext "${LAYER}"
(name "")
(pos 200.632 220.607)
(font
(face "Times New Roman")
(size 3.226 3.226) bold
(color 0 0 0 1)
)
(justify center)
)
)

View File

@@ -0,0 +1,557 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "8.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 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)
)
(tbtext "${#}"
(name "")
(pos 25.6 6.0002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet:"
(name "")
(pos 25.989 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "of"
(name "")
(pos 17.489 5.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${##}"
(name "")
(pos 14 6)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Size:"
(name "")
(pos 41.989 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${PAPER}"
(name "")
(pos 40.989 6.0022)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 2.0022)
(end 43.489 12.5022)
)
(line
(name "")
(start 43.489 12.5022)
(end 1.989 12.5022)
)
(line
(name "")
(start 27.489 12.5022)
(end 27.489 2.0022)
)
(line
(name "")
(start 43.489 12.5022)
(end 43.489 23.0022)
)
(line
(name "")
(start 43.489 23.0022)
(end 1.989 23.0022)
)
(tbtext "Revision:"
(name "")
(pos 17.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${REVISION}"
(name "")
(pos 17.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 19.489 23.0022)
(end 19.489 12.5022)
)
(tbtext "Date:"
(name "")
(pos 41.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 23.0022)
(end 43.489 33.5022)
)
(line
(name "")
(start 43.489 33.5022)
(end 1.989 33.5022)
)
(tbtext "Project Name:"
(name "")
(pos 41.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 41.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Reviewer:"
(name "")
(pos 68.9892 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT9}"
(name "")
(pos 68.9892 6.0022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 77.989 12.5022)
(end 43.489 12.5022)
)
(line
(name "")
(start 70.4892 2.0022)
(end 70.4892 12.5022)
)
(tbtext "Designer:"
(name "")
(pos 68.9892 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 70.4892 12.5022)
(end 70.4892 23.0022)
)
(line
(name "")
(start 77.989 23.0022)
(end 43.489 23.0022)
)
(tbtext "${DESIGNER}"
(name "")
(pos 68.9892 16.5022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 12.5022)
(end 77.989 12.5022)
)
(line
(name "")
(start 112.489 12.5022)
(end 112.489 23.0022)
)
(line
(name "")
(start 112.489 23.0022)
(end 77.989 23.0022)
)
(tbtext "${FILENAME}"
(name "")
(pos 110.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 33.5022)
(end 43.489 33.5022)
)
(line
(name "")
(start 112.489 23.0022)
(end 112.489 33.5022)
)
(tbtext "Board Name:"
(name "")
(pos 110.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Variant:"
(name "")
(pos 41.989 42.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 44.0022)
(end 1.989 44.0022)
)
(line
(name "")
(start 43.489 33.5022)
(end 43.489 44.0022)
)
(tbtext "${VARIANT}"
(name "")
(pos 41.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 112.489 33.5022)
(end 112.489 44.0022)
)
(tbtext "Company:"
(name "")
(pos 110.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMPANY}"
(name "")
(pos 110.989 37.502)
(font
(face "Times New Roman") bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${PROJECT_NAME}"
(name "")
(pos 41.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${BOARD_NAME}"
(name "")
(pos 110.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 12.5022)
(end 146.989 23.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 112.489 23.0022)
)
(line
(name "")
(start 146.989 12.5022)
(end 112.489 12.5022)
)
(line
(name "")
(start 146.989 2.0022)
(end 146.989 12.5022)
)
(tbtext "File Name:"
(name "")
(pos 110.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Title:"
(name "")
(pos 145.489 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETPATH}"
(name "")
(pos 145.489 6.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Path:"
(name "")
(pos 145.489 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETNAME}"
(name "")
(pos 145.489 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 44.0022)
(end 112.489 44.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 146.989 44.0022)
)
(tbtext "Comments:"
(name "")
(pos 145.489 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT1}"
(name "")
(pos 145.489 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT2}"
(name "")
(pos 145.489 34.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT3}"
(name "")
(pos 145.489 30.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT4}"
(name "")
(pos 145.489 27.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 146.989 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 188.989 2.0022)
)
(tbtext "${BOARD_NAME} ${TITLE} Document"
(name "")
(pos 269.989 180.502)
(font
(face "Times New Roman")
(size 4 4) bold)
)
(tbtext "${LAYER}"
(name "")
(pos 138.6322 159.1072)
(font
(face "Times New Roman")
(size 3.226 3.226) bold
(color 0 0 0 1)
)
(justify center)
)
)

View File

@@ -0,0 +1,557 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "8.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 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)
)
(tbtext "${#}"
(name "")
(pos 25.6 6.0002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet:"
(name "")
(pos 25.989 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "of"
(name "")
(pos 17.489 5.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${##}"
(name "")
(pos 14 6)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Size:"
(name "")
(pos 41.989 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${PAPER}"
(name "")
(pos 40.989 6.0022)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 2.0022)
(end 43.489 12.5022)
)
(line
(name "")
(start 43.489 12.5022)
(end 1.989 12.5022)
)
(line
(name "")
(start 27.489 12.5022)
(end 27.489 2.0022)
)
(line
(name "")
(start 43.489 12.5022)
(end 43.489 23.0022)
)
(line
(name "")
(start 43.489 23.0022)
(end 1.989 23.0022)
)
(tbtext "Revision:"
(name "")
(pos 17.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${REVISION}"
(name "")
(pos 17.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 19.489 23.0022)
(end 19.489 12.5022)
)
(tbtext "Date:"
(name "")
(pos 41.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 23.0022)
(end 43.489 33.5022)
)
(line
(name "")
(start 43.489 33.5022)
(end 1.989 33.5022)
)
(tbtext "Project Name:"
(name "")
(pos 41.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 41.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Reviewer:"
(name "")
(pos 68.9892 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT9}"
(name "")
(pos 68.9892 6.0022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 77.989 12.5022)
(end 43.489 12.5022)
)
(line
(name "")
(start 70.4892 2.0022)
(end 70.4892 12.5022)
)
(tbtext "Designer:"
(name "")
(pos 68.9892 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 70.4892 12.5022)
(end 70.4892 23.0022)
)
(line
(name "")
(start 77.989 23.0022)
(end 43.489 23.0022)
)
(tbtext "${DESIGNER}"
(name "")
(pos 68.9892 16.5022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 12.5022)
(end 77.989 12.5022)
)
(line
(name "")
(start 112.489 12.5022)
(end 112.489 23.0022)
)
(line
(name "")
(start 112.489 23.0022)
(end 77.989 23.0022)
)
(tbtext "${FILENAME}"
(name "")
(pos 110.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 33.5022)
(end 43.489 33.5022)
)
(line
(name "")
(start 112.489 23.0022)
(end 112.489 33.5022)
)
(tbtext "Board Name:"
(name "")
(pos 110.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Variant:"
(name "")
(pos 41.989 42.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 44.0022)
(end 1.989 44.0022)
)
(line
(name "")
(start 43.489 33.5022)
(end 43.489 44.0022)
)
(tbtext "${VARIANT}"
(name "")
(pos 41.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 112.489 33.5022)
(end 112.489 44.0022)
)
(tbtext "Company:"
(name "")
(pos 110.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMPANY}"
(name "")
(pos 110.989 37.502)
(font
(face "Times New Roman") bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${PROJECT_NAME}"
(name "")
(pos 41.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${BOARD_NAME}"
(name "")
(pos 110.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 12.5022)
(end 146.989 23.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 112.489 23.0022)
)
(line
(name "")
(start 146.989 12.5022)
(end 112.489 12.5022)
)
(line
(name "")
(start 146.989 2.0022)
(end 146.989 12.5022)
)
(tbtext "File Name:"
(name "")
(pos 110.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Title:"
(name "")
(pos 145.489 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETPATH}"
(name "")
(pos 145.489 6.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Path:"
(name "")
(pos 145.489 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETNAME}"
(name "")
(pos 145.489 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 44.0022)
(end 112.489 44.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 146.989 44.0022)
)
(tbtext "Comments:"
(name "")
(pos 145.489 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT1}"
(name "")
(pos 145.489 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT2}"
(name "")
(pos 145.489 34.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT3}"
(name "")
(pos 145.489 30.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT4}"
(name "")
(pos 145.489 27.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 188 44.002)
(end 146.989 44.002)
)
(line
(name "")
(start 188 44.002)
(end 188 2.002)
)
(tbtext "${BOARD_NAME} ${TITLE} Document"
(name "")
(pos 182.989 119.002)
(font
(face "Times New Roman")
(size 4 4) bold)
)
(tbtext "${LAYER}"
(name "")
(pos 7 119.002)
(font
(face "Times New Roman")
(size 3.226 3.226) bold
(color 0 0 0 1)
)
(justify right)
)
)

View File

@@ -0,0 +1,580 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "8.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 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)
)
(tbtext "${#}"
(name "")
(pos 25.6 6.0002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet:"
(name "")
(pos 25.989 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "of"
(name "")
(pos 17.489 5.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${##}"
(name "")
(pos 14 6)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Size:"
(name "")
(pos 41.989 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${PAPER}"
(name "")
(pos 40.989 6.0022)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 2.0022)
(end 43.489 12.5022)
)
(line
(name "")
(start 43.489 12.5022)
(end 1.989 12.5022)
)
(line
(name "")
(start 27.489 12.5022)
(end 27.489 2.0022)
)
(line
(name "")
(start 43.489 12.5022)
(end 43.489 23.0022)
)
(line
(name "")
(start 43.489 23.0022)
(end 1.989 23.0022)
)
(tbtext "Revision:"
(name "")
(pos 25.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${REVISION}"
(name "")
(pos 25.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 27.489 23.002)
(end 27.489 12.502)
)
(tbtext "Date:"
(name "")
(pos 41.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 23.0022)
(end 43.489 33.5022)
)
(line
(name "")
(start 43.489 33.5022)
(end 1.989 33.5022)
)
(tbtext "Project Name:"
(name "")
(pos 41.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 41.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Reviewer:"
(name "")
(pos 68.9892 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT9}"
(name "")
(pos 68.9892 6.0022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 77.989 12.5022)
(end 43.489 12.5022)
)
(line
(name "")
(start 70.4892 2.0022)
(end 70.4892 12.5022)
)
(tbtext "Designer:"
(name "")
(pos 68.9892 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 70.4892 12.5022)
(end 70.4892 23.0022)
)
(line
(name "")
(start 77.989 23.0022)
(end 43.489 23.0022)
)
(tbtext "${DESIGNER}"
(name "")
(pos 68.9892 16.5022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 12.5022)
(end 77.989 12.5022)
)
(line
(name "")
(start 112.489 12.5022)
(end 112.489 23.0022)
)
(line
(name "")
(start 112.489 23.0022)
(end 77.989 23.0022)
)
(tbtext "${FILENAME}"
(name "")
(pos 110.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 33.5022)
(end 43.489 33.5022)
)
(line
(name "")
(start 112.489 23.0022)
(end 112.489 33.5022)
)
(tbtext "Board Name:"
(name "")
(pos 110.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Variant:"
(name "")
(pos 41.989 42.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 44.0022)
(end 1.989 44.0022)
)
(line
(name "")
(start 43.489 33.5022)
(end 43.489 44.0022)
)
(tbtext "${VARIANT}"
(name "")
(pos 41.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 112.489 33.5022)
(end 112.489 44.0022)
)
(tbtext "Company:"
(name "")
(pos 110.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMPANY}"
(name "")
(pos 110.989 37.502)
(font
(face "Times New Roman") bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${PROJECT_NAME}"
(name "")
(pos 41.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${BOARD_NAME}"
(name "")
(pos 110.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 12.5022)
(end 146.989 23.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 112.489 23.0022)
)
(line
(name "")
(start 146.989 12.5022)
(end 112.489 12.5022)
)
(line
(name "")
(start 146.989 2.0022)
(end 146.989 12.5022)
)
(tbtext "File Name:"
(name "")
(pos 110.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Title:"
(name "")
(pos 145.489 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETPATH}"
(name "")
(pos 145.489 6.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Path:"
(name "")
(pos 145.489 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETNAME}"
(name "")
(pos 145.489 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 44.0022)
(end 112.489 44.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 146.989 44.0022)
)
(tbtext "Comments:"
(name "")
(pos 145.489 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT1}"
(name "")
(pos 145.489 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT2}"
(name "")
(pos 145.489 34.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT3}"
(name "")
(pos 145.489 30.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT4}"
(name "")
(pos 145.489 27.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 146.989 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 188.989 2.0022)
)
(tbtext "${BOARD_NAME} ${TITLE} Document"
(name "")
(pos 392.989 267.502)
(font
(face "Times New Roman")
(size 4 4) bold)
)
(tbtext "${LAYER}"
(name "")
(pos 200.632 220.607)
(font
(face "Times New Roman")
(size 3.226 3.226) bold
(color 0 0 0 1)
)
(justify center)
)
(tbtext "${GIT_HASH_PCB}"
(name "")
(pos 17.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 19.489 44.002)
(end 19.489 33.502)
)
(tbtext "Git Hash:"
(name "")
(pos 17.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
)

View File

@@ -0,0 +1,580 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "8.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 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)
)
(tbtext "${#}"
(name "")
(pos 25.6 6.0002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet:"
(name "")
(pos 25.989 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "of"
(name "")
(pos 17.489 5.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${##}"
(name "")
(pos 14 6)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Size:"
(name "")
(pos 41.989 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${PAPER}"
(name "")
(pos 40.989 6.0022)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 2.0022)
(end 43.489 12.5022)
)
(line
(name "")
(start 43.489 12.5022)
(end 1.989 12.5022)
)
(line
(name "")
(start 27.489 12.5022)
(end 27.489 2.0022)
)
(line
(name "")
(start 43.489 12.5022)
(end 43.489 23.0022)
)
(line
(name "")
(start 43.489 23.0022)
(end 1.989 23.0022)
)
(tbtext "Revision:"
(name "")
(pos 25.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${REVISION}"
(name "")
(pos 25.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 27.489 23.002)
(end 27.489 12.502)
)
(tbtext "Date:"
(name "")
(pos 41.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 23.0022)
(end 43.489 33.5022)
)
(line
(name "")
(start 43.489 33.5022)
(end 1.989 33.5022)
)
(tbtext "Project Name:"
(name "")
(pos 41.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 41.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Reviewer:"
(name "")
(pos 68.9892 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT9}"
(name "")
(pos 68.9892 6.0022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 77.989 12.5022)
(end 43.489 12.5022)
)
(line
(name "")
(start 70.4892 2.0022)
(end 70.4892 12.5022)
)
(tbtext "Designer:"
(name "")
(pos 68.9892 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 70.4892 12.5022)
(end 70.4892 23.0022)
)
(line
(name "")
(start 77.989 23.0022)
(end 43.489 23.0022)
)
(tbtext "${DESIGNER}"
(name "")
(pos 68.9892 16.5022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 12.5022)
(end 77.989 12.5022)
)
(line
(name "")
(start 112.489 12.5022)
(end 112.489 23.0022)
)
(line
(name "")
(start 112.489 23.0022)
(end 77.989 23.0022)
)
(tbtext "${FILENAME}"
(name "")
(pos 110.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 33.5022)
(end 43.489 33.5022)
)
(line
(name "")
(start 112.489 23.0022)
(end 112.489 33.5022)
)
(tbtext "Board Name:"
(name "")
(pos 110.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Variant:"
(name "")
(pos 41.989 42.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 44.0022)
(end 1.989 44.0022)
)
(line
(name "")
(start 43.489 33.5022)
(end 43.489 44.0022)
)
(tbtext "${VARIANT}"
(name "")
(pos 41.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 112.489 33.5022)
(end 112.489 44.0022)
)
(tbtext "Company:"
(name "")
(pos 110.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMPANY}"
(name "")
(pos 110.989 37.502)
(font
(face "Times New Roman") bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${PROJECT_NAME}"
(name "")
(pos 41.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${BOARD_NAME}"
(name "")
(pos 110.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 12.5022)
(end 146.989 23.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 112.489 23.0022)
)
(line
(name "")
(start 146.989 12.5022)
(end 112.489 12.5022)
)
(line
(name "")
(start 146.989 2.0022)
(end 146.989 12.5022)
)
(tbtext "File Name:"
(name "")
(pos 110.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Title:"
(name "")
(pos 145.489 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETPATH}"
(name "")
(pos 145.489 6.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Path:"
(name "")
(pos 145.489 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETNAME}"
(name "")
(pos 145.489 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 44.0022)
(end 112.489 44.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 146.989 44.0022)
)
(tbtext "Comments:"
(name "")
(pos 145.489 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT1}"
(name "")
(pos 145.489 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT2}"
(name "")
(pos 145.489 34.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT3}"
(name "")
(pos 145.489 30.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT4}"
(name "")
(pos 145.489 27.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 146.989 44.0022)
)
(line
(name "")
(start 188.989 44.0022)
(end 188.989 2.0022)
)
(tbtext "${BOARD_NAME} ${TITLE} Document"
(name "")
(pos 269.989 180.502)
(font
(face "Times New Roman")
(size 4 4) bold)
)
(tbtext "${LAYER}"
(name "")
(pos 138.6322 159.1072)
(font
(face "Times New Roman")
(size 3.226 3.226) bold
(color 0 0 0 1)
)
(justify center)
)
(tbtext "${GIT_HASH_PCB}"
(name "")
(pos 17.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 19.489 44.002)
(end 19.489 33.502)
)
(tbtext "Git Hash:"
(name "")
(pos 17.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
)

View File

@@ -0,0 +1,580 @@
(kicad_wks
(version 20231118)
(generator "pl_editor")
(generator_version "8.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 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)
)
(tbtext "${#}"
(name "")
(pos 25.6 6.0002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet:"
(name "")
(pos 25.989 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "of"
(name "")
(pos 17.489 5.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${##}"
(name "")
(pos 14 6)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Size:"
(name "")
(pos 41.989 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${PAPER}"
(name "")
(pos 40.989 6.0022)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 2.0022)
(end 43.489 12.5022)
)
(line
(name "")
(start 43.489 12.5022)
(end 1.989 12.5022)
)
(line
(name "")
(start 27.489 12.5022)
(end 27.489 2.0022)
)
(line
(name "")
(start 43.489 12.5022)
(end 43.489 23.0022)
)
(line
(name "")
(start 43.489 23.0022)
(end 1.989 23.0022)
)
(tbtext "Revision:"
(name "")
(pos 25.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${REVISION}"
(name "")
(pos 25.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 27.489 23.002)
(end 27.489 12.502)
)
(tbtext "Date:"
(name "")
(pos 41.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 23.0022)
(end 43.489 33.5022)
)
(line
(name "")
(start 43.489 33.5022)
(end 1.989 33.5022)
)
(tbtext "Project Name:"
(name "")
(pos 41.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${ISSUE_DATE}"
(name "")
(pos 41.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Reviewer:"
(name "")
(pos 68.9892 10.5022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT9}"
(name "")
(pos 68.9892 6.0022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 77.989 12.5022)
(end 43.489 12.5022)
)
(line
(name "")
(start 70.4892 2.0022)
(end 70.4892 12.5022)
)
(tbtext "Designer:"
(name "")
(pos 68.9892 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 70.4892 12.5022)
(end 70.4892 23.0022)
)
(line
(name "")
(start 77.989 23.0022)
(end 43.489 23.0022)
)
(tbtext "${DESIGNER}"
(name "")
(pos 68.9892 16.5022)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 12.5022)
(end 77.989 12.5022)
)
(line
(name "")
(start 112.489 12.5022)
(end 112.489 23.0022)
)
(line
(name "")
(start 112.489 23.0022)
(end 77.989 23.0022)
)
(tbtext "${FILENAME}"
(name "")
(pos 110.989 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 33.5022)
(end 43.489 33.5022)
)
(line
(name "")
(start 112.489 23.0022)
(end 112.489 33.5022)
)
(tbtext "Board Name:"
(name "")
(pos 110.989 31.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Variant:"
(name "")
(pos 41.989 42.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 43.489 44.0022)
(end 1.989 44.0022)
)
(line
(name "")
(start 43.489 33.5022)
(end 43.489 44.0022)
)
(tbtext "${VARIANT}"
(name "")
(pos 41.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 112.489 33.5022)
(end 112.489 44.0022)
)
(tbtext "Company:"
(name "")
(pos 110.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMPANY}"
(name "")
(pos 110.989 37.502)
(font
(face "Times New Roman") bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${PROJECT_NAME}"
(name "")
(pos 41.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${BOARD_NAME}"
(name "")
(pos 110.489 27.002)
(font
(face "Times New Roman")
(size 2.5 2.5) bold
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 12.5022)
(end 146.989 23.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 112.489 23.0022)
)
(line
(name "")
(start 146.989 12.5022)
(end 112.489 12.5022)
)
(line
(name "")
(start 146.989 2.0022)
(end 146.989 12.5022)
)
(tbtext "File Name:"
(name "")
(pos 110.989 21.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Title:"
(name "")
(pos 145.489 21.0022)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETPATH}"
(name "")
(pos 145.489 6.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "Sheet Path:"
(name "")
(pos 145.489 10.502)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${SHEETNAME}"
(name "")
(pos 145.489 16.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 146.989 44.0022)
(end 112.489 44.0022)
)
(line
(name "")
(start 146.989 23.0022)
(end 146.989 44.0022)
)
(tbtext "Comments:"
(name "")
(pos 145.489 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT1}"
(name "")
(pos 145.489 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT2}"
(name "")
(pos 145.489 34.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT3}"
(name "")
(pos 145.489 30.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(tbtext "${COMMENT4}"
(name "")
(pos 145.489 27.002)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 112.489 44.0022)
(end 43.489 44.0022)
)
(line
(name "")
(start 188 44.002)
(end 146.989 44.002)
)
(line
(name "")
(start 188 44.002)
(end 188 2.002)
)
(tbtext "${BOARD_NAME} ${TITLE} Document"
(name "")
(pos 182.989 119.002)
(font
(face "Times New Roman")
(size 4 4) bold)
)
(tbtext "${LAYER}"
(name "")
(pos 7 119.002)
(font
(face "Times New Roman")
(size 3.226 3.226) bold
(color 0 0 0 1)
)
(justify right)
)
(tbtext "${GIT_HASH_PCB}"
(name "")
(pos 17.989 37.502)
(font
(face "Times New Roman")
(color 0 0 127 1)
)
(comment "Sheet id")
)
(line
(name "")
(start 19.489 44.002)
(end 19.489 33.502)
)
(tbtext "Git Hash:"
(name "")
(pos 17.989 42.002)
(font
(face "Arial")
(color 0 0 255 1)
)
(comment "Sheet id")
)
)

187
kibot_launch.sh Executable file
View File

@@ -0,0 +1,187 @@
#!/bin/bash
# ANSI color codes
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Default options
variant="CHECKED"
output_dir="."
kibot_base="kibot"
kibot_config="-c 'kibot_yaml/kibot_main.yaml'"
revision=""
costs_flag=false
server_flag=false
server_port=8000
pid_file="/tmp/kibot_server.pid"
# Display help
function display_help() {
echo -e "USAGE"
echo -e " ./kibot_launch.sh [OPTIONS]"
echo
echo -e "OPTIONS"
echo -e " -v, --variant VARIANT Specify a variant name. Supported variants:"
echo -e " RELEASED, DRAFT, PRELIMINARY, CHECKED, or others."
echo -e " --version VERSION Specify a version to use in the command."
echo -e " --costs Replace draft_group or all_group with xlsx_bom, and enforce specific skip-pre options."
echo -e " --server [PORT] Start an HTTP server on the specified port (default: 8000)."
echo -e " --stop-server Stop the running HTTP server."
echo -e " -h, --help Display this help message."
echo
echo -e "EXAMPLES"
echo -e " ./kibot_launch.sh Run with default options."
echo -e " ./kibot_launch.sh -v RELEASED Run with RELEASED variant."
echo -e " ./kibot_launch.sh --costs Compute XLSX costs spreadsheet. Results in Manufacturing/Assembly folder"
echo -e " ./kibot_launch.sh -v DRAFT Run with DRAFT variant."
echo -e " ./kibot_launch.sh -v PRELIMINARY Run with PRELIMINARY variant."
echo -e " ./kibot_launch.sh -v CUSTOM_VARIANT Run with a custom variant, saved in the Variants folder."
echo -e " ./kibot_launch.sh --server Start an HTTP server on port 8000."
echo -e " ./kibot_launch.sh --server 8080 Start an HTTP server on port 8080."
echo -e " ./kibot_launch.sh --stop-server Stop the running HTTP server."
echo
echo -e "VARIANT DESCRIPTIONS"
echo -e " DRAFT: only schematic in progress, will only generate schematic PDF, netlist and BoM"
echo -e " PRELIMINARY: will generate both schematic and PCB documents, but no ERC/DRC"
echo -e " CHECKED: will generate both schematic and PCB documents, with ERC/DRC"
echo -e " RELEASED: similar to CHECKED but should only be used for releases"
echo -e " Other variants: will be saved in the Variants folder"
exit 0
}
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
--variant|-v)
if [[ -n $2 && $2 != -* ]]; then
variant="$2"
shift
else
echo -e "${YELLOW}Warning: --variant|-v requires a value.${NC}"
exit 1
fi
;;
--version)
if [[ -n $2 && $2 != -* ]]; then
revision="$2"
shift
else
echo -e "${YELLOW}Warning: --version requires a value.${NC}"
exit 1
fi
;;
--costs)
costs_flag=true
;;
--server)
server_flag=true
if [[ -n $2 && $2 != -* ]]; then
server_port="$2"
shift
fi
if [[ -f $pid_file ]]; then
pid=$(cat $pid_file)
if kill -0 $pid 2>/dev/null; then
echo -e "${YELLOW}A server is already running on PID $pid. Please stop it first with --stop-server.${NC}"
exit 1
else
echo -e "${YELLOW}Stale PID file detected. Removing it.${NC}"
rm -f $pid_file
fi
fi
;;
--stop-server)
if [[ -f $pid_file ]]; then
pid=$(cat $pid_file)
if kill -0 $pid 2>/dev/null; then
echo -e "${GREEN}Stopping HTTP server with PID $pid...${NC}"
kill $pid
rm -f $pid_file
echo -e "${GREEN}Server stopped.${NC}"
exit 0
else
echo -e "${YELLOW}No running server found. Removing stale PID file.${NC}"
rm -f $pid_file
exit 1
fi
else
echo -e "${YELLOW}No server is running.${NC}"
exit 1
fi
;;
-h|--help)
display_help
;;
*)
echo -e "${YELLOW}Warning: Unrecognized argument: $1${NC}"
display_help
;;
esac
shift
done
# Get version if not specified
if [[ -z "$revision" ]]; then
revision=$(python3 kibot_resources/scripts/get_changelog_version.py -f CHANGELOG.md)
if [[ $? -ne 0 ]]; then
echo -e "${YELLOW}Warning: Unable to determine version from CHANGELOG.md. Defaulting to empty revision.${NC}"
revision=""
fi
fi
# Check KiCad version and set group command accordingly
kicad_version=$(kicad-cli --version)
if [[ "$kicad_version" =~ ^9\.[0-9]+\.[0-9]+$ ]]; then
all_group="all_group_k9"
else
all_group="all_group"
fi
# Handle server flag
if [[ "$server_flag" == true ]]; then
echo -e "${GREEN}Starting HTTP server on port $server_port...${NC}"
python3 -m http.server "$server_port" &
echo $! > $pid_file
sleep 1
echo -e "${GREEN}Server running. Navigate to: http://localhost:$server_port${NC}"
exit 0
fi
# Determine output directory based on variant
case "$variant" in
DRAFT|PRELIMINARY|CHECKED|RELEASED)
output_dir="."
;;
*)
output_dir="Variants"
;;
esac
# Determine command based on variant
if [[ "$costs_flag" == true ]]; then
kibot_command1="$kibot_base --skip-pre erc,drc,draw_fancy_stackup $kibot_config -d '$output_dir' -g variant=$variant -E REVISION='$revision' -E KICOST_CONFIG='kibot_yaml/kicost_config_local.yaml' xlsx_bom"
else
case "$variant" in
DRAFT)
kibot_command1="$kibot_base --skip-pre set_text_variables,draw_fancy_stackup,erc,drc $kibot_config -d '$output_dir' -g variant=$variant -E REVISION='$revision' md_readme"
kibot_command2="$kibot_base --skip-pre draw_fancy_stackup,erc,drc $kibot_config -d '$output_dir' -g variant=$variant -E REVISION='$revision' draft_group"
;;
PRELIMINARY)
kibot_command1="$kibot_base --skip-pre erc,drc $kibot_config -d '$output_dir' -g variant=$variant -E REVISION='$revision' notes"
kibot_command2="$kibot_base --skip-pre erc,drc $kibot_config -d '$output_dir' -g variant=$variant -E REVISION='$revision' $all_group"
;;
CHECKED|RELEASED|*)
kibot_command1="$kibot_base --skip-pre set_text_variables,draw_fancy_stackup,erc,drc $kibot_config -d '$output_dir' -g variant=$variant -E REVISION='$revision' notes"
kibot_command2="$kibot_base $kibot_config -d '$output_dir' -g variant=$variant -E REVISION='$revision' $all_group"
;;
esac
fi
# Execute the commands
echo -e "${GREEN}Running: $kibot_command1${NC}"
eval $kibot_command1
if [[ "$costs_flag" == false ]]; then
echo -e "${GREEN}Running: $kibot_command2${NC}"
eval $kibot_command2
fi

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)"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,46 @@
#!/bin/sh
# Default image version
IMAGE="ghcr.io/inti-cmnb/kicad8_auto_full:dev"
# Parse the optional -v flag
while getopts "v:" opt; do
case "$opt" in
v)
if [ "$OPTARG" = "9" ]; then
IMAGE="ghcr.io/inti-cmnb/kicad9_auto_full:dev"
else
echo "Unsupported version: $OPTARG" >&2
exit 1
fi
;;
*)
echo "Usage: $0 [-v 9]" >&2
exit 1
;;
esac
done
export USER_ID=$(id -u)
export GROUP_ID=$(id -g)
export USER_NAME=$(whoami)
docker run --rm -it \
--user "$USER_ID:$GROUP_ID" \
--env NO_AT_BRIDGE=1 \
--env DISPLAY="$DISPLAY" \
--workdir="/home/$USER_NAME" \
--volume=/tmp/.X11-unix:/tmp/.X11-unix \
--volume="/etc/group:/etc/group:ro" \
--volume="/etc/passwd:/etc/passwd:ro" \
--volume="/etc/shadow:/etc/shadow:ro" \
--volume="/home/$USER_NAME:/home/$USER_NAME:rw" \
-p 8000:8000 \
--entrypoint /bin/bash \
"$IMAGE" -c "
if ! id $USER_NAME &>/dev/null; then
echo \"Creating user $USER_NAME ($USER_ID:$GROUP_ID)...\"
useradd -u $USER_ID -g $GROUP_ID -d /home/$USER_NAME -m $USER_NAME
chown -R $USER_ID:$GROUP_ID /home/$USER_NAME
fi
exec su - $USER_NAME"

View File

@@ -0,0 +1,28 @@
@echo off
REM Set variables for display and user name
set DISPLAY=host.docker.internal:0.0
set USER_NAME=%USERNAME%
REM Set default image
set "IMAGE=ghcr.io/inti-cmnb/kicad8_auto_full:dev"
REM Check for optional -v flag and version number
if /I "%~1"=="-v" (
if "%~2"=="9" (
set "IMAGE=ghcr.io/inti-cmnb/kicad9_auto_full:dev"
) else (
echo Unsupported version: %~2
goto :eof
)
)
REM Run the Docker container with mounted volumes
docker run --rm -it ^
--env NO_AT_BRIDGE=1 ^
--env DISPLAY=%DISPLAY% ^
--workdir="/home/%USER_NAME%" ^
--volume=C:\Users\%USER_NAME%:/home/%USER_NAME%:rw ^
--volume=/tmp/.X11-unix:/tmp/.X11-unix ^
--entrypoint /bin/bash ^
-p 8000:8000 ^
%IMAGE%

View File

@@ -0,0 +1,49 @@
import argparse
import re
import sys
def parse_changelog(file_path, version, title_only, extra_spaces, separators):
try:
with open(file_path, 'r') as f:
changelog = f.read()
except FileNotFoundError:
print(f"Error: File '{file_path}' not found.")
sys.exit(1)
# Regex to match the version block and stop at the next version or any line with square brackets
version_pattern = re.compile(rf"## \[{version}\] - (\d{{4}}-\d{{2}}-\d{{2}})\n(.*?)(?=## \[|\[Unreleased\]:|\[\d+\.\d+\.\d+\]:|$)", re.DOTALL)
match = version_pattern.search(changelog)
if not match:
print(f"Version {version} not found.")
return
date, content = match.groups()
if title_only:
print(f"Version {version} - {date}")
else:
if separators is not None:
content = re.sub(r'^(###.*?)$', '_' * separators + r'\n\1', content, flags=re.MULTILINE)
cleaned_content = re.sub(r'### ', '', content) # Remove ###
if extra_spaces:
cleaned_content = re.sub(r'(?<!\n)\n(?!\n)', '\n\n', cleaned_content)
print(cleaned_content)
def main():
parser = argparse.ArgumentParser(description="Extract and format a specific version from CHANGELOG.md")
parser.add_argument("-v", "--version", required=True, help="Version to extract (e.g., 1.0.1)")
parser.add_argument("-f", "--file", required=True, help="Path to CHANGELOG.md file")
parser.add_argument("-t", "--title-only", action="store_true", help="Print the title only")
parser.add_argument("-s", "--extra-spaces", action="store_true", help="Add extra spaces between lines")
parser.add_argument("-a", "--separators", type=int, required=False, help="Number of underscores for separators")
args = parser.parse_args()
parse_changelog(args.file, args.version, args.title_only, args.extra_spaces, args.separators)
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,41 @@
import re
import sys
import argparse
def get_last_version(file_path):
try:
with open(file_path, 'r') as file:
content = file.read()
# Regex to match version entries
version_pattern = r"## \[(.*?)\]"
versions = re.findall(version_pattern, content)
if not versions:
return "N/A"
# Check the last entry
last_version = versions[0] # First match is the most recent
if last_version.lower() == "unreleased":
if len(versions) > 1:
second_last_version = versions[1]
return f"{second_last_version}+ (Unreleased)"
else:
return "(Unreleased)"
else:
return last_version
except FileNotFoundError:
return f"File '{file_path}' not found."
except Exception as e:
return f"An error occurred: {e}"
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Get the latest version from a changelog file.")
parser.add_argument("-f", "--file", required=True, help="Path to the changelog file.")
args = parser.parse_args()
version = get_last_version(args.file)
if version:
print(version)

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

@@ -0,0 +1,13 @@
ASSEMBLY NOTES (UNLESS OTHERWISE SPECIFIED)
1) DO NOT POPULATE PARTS ARE MARKED WITH A RED CROSS.
2) DO NOT POPULATE PARTS ARE NOT PRESENT IN THE BOM.
3) IF CONFLICTING INFORMATION IS FOUND BETWEEN THE ASSEMBLY
FILE AND BOM, BOM SHOULD BE USED AS THE MAIN SOURCE.
4) CONFORMAL COATING IS NOT REQUIRED.
5) DOT IDENTIFIES PIN #1 LOCATION AND DEVICE ORIENTATION
WHEN VIEWED FROM THE TOP.

View File

@@ -0,0 +1,58 @@
FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED)
1) FABRICATE PER IPC-6012A CLASS 2.
2) OUTLINE DEFINED IN SEPARATE GERBER FILE WITH
"Edge_Cuts.GBR" SUFFIX.
DIMENSIONS OF CIRCUMSIZED RECTANGLE SHOWN ON THIS
DRAWING FOR REFERENCE ONLY.
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) VENDOR SHOULD FOLLOW ROHS COMPLIANT PROCESS
AND Pb FREE FOR MANUFACTURING
9) PCB MATERIAL REQUIREMENTS:
A. FLAMMABILITY RATING MUST MEET OR EXCEED
UL94V-0 REQUIREMENTS.
B. Tg 170 C OR EQUIVALENT.
C. EQUIVALENT MATERIAL SHALL BE RoHS COMPLIANT,
HALOGEN FREE AND APPROVED BY ${COMPANY_cap}.
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
#?stackup and impedance_controlled
#?stackup and impedance_controlled
11) REFER TO IMPEDANCE TABLE FOR IMPEDANCE CONTROL REQUIREMENTS.
#?stackup and impedance_controlled
#?stackup and impedance_controlled
12) CONFIRM SPACE WIDTHS AND SPACINGS.

View File

@@ -0,0 +1,2 @@
Transmission Line, Impedance [ohms], Tolerance [ohms], Layer, Trace Width [mm], Gap [mm], Ref. Layers
Edge-Coupled Coated Microstrip, 100, ±10 %, L1, 0.2032, 0.28, L2

View File

@@ -0,0 +1,71 @@
<p align="center" width="100%">
<img alt="Logo" width="33%" src="Logos/dummy_logo.svg">
</p>
<h1 align="center">${BOARD_NAME}</h1>
<p align="center" width="100%">
<a href="${GIT_URL}/actions/workflows/ci.yaml">
<img alt="CI Badge" src="${GIT_URL}/actions/workflows/ci.yaml/badge.svg?branch=">
</a>
</p>
<p align="center" width="100%">
<img src="Images/dummy_image.png">
</p>
***
<p align="center">
<img alt="3D Top Angled" src="${png_3d_viewer_angled_top_outpath}" width="45%">
&nbsp; &nbsp; &nbsp; &nbsp;
<img alt="3D Bottom Angled" src="${png_3d_viewer_angled_bottom_outpath}" width="45%">
</p>
***
## SPECIFICATIONS
| Parameter | Value |
| --- | --- |
| Dimensions | ${bb_w_mm} × ${bb_h_mm} mm |
***
## DIRECTORY STRUCTURE
.
├─ Computations # Misc calculations
├─ HTML # HTML files for generated webpage
├─ Images # Pictures and renders
├─ kibot_resources # External resources for KiBot
│ ├─ colors # Color theme for KiCad
│ ├─ fonts # Fonts used in the project
│ ├─ scripts # External scripts used with KiBot
│ └─ templates # Templates for KiBot generated reports
├─ kibot_yaml # KiBot YAML config files
├─ KiRI # KiRI (PCB diff viewer) files
├─ lib # KiCad footprint and symbol libraries
│ ├─ 3d_models # Component 3D models
│ ├─ lib_fp # Footprint libraries
│ └─ lib_sym # Symbol libraries
├─ Logos # Logos
├─ Manufacturing # Assembly and fabrication documents
│ ├─ Assembly # Assembly documents (BoM, pos, notes)
│ │
│ └─ Fabrication # Fabrication documents (ZIP, notes)
│ ├─ Drill Tables # CSV drill tables
│ └─ Gerbers # Gerbers
├─ Report # Reports for ERC/DRC
├─ Schematic # PDF of schematic
├─ Templates # Title block templates
├─ Testing
│ └─ Testpoints # Testpoints tables
└─ Variants # Outputs for assembly variants

1
kibot_yaml/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
kicost_config_local.yaml

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 Part Number'
MAN_FIELD: 'Manufacturer'

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,43 @@
# KiBot Globals
# https://kibot.readthedocs.io/en/latest/configuration/global.html
kibot:
version: 1
global:
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:
# 'KiCad config without environment.vars section'
- number: 9
# 'Unable to find KiCad 3D models'
- number: 10
# 'Malformed value'
- number: 20
# 'More than one SCH file found in ...'
- number: 44
# Invalid column name
- number: 62
# 3D models downloaded or cached
- number: 98
# 'Avoid adding extra information in the component value, use separated fields'
- number: 133
# 'This output depends on KiCad version, use blender_export instead'
- number: 143
# 'Not including component <ref> in filters because it has a malformed reference'
- number: 147
# 'No output to handle <output>'
- number: 168
# 'Please only use simple data types for definitions'
- number: 172
# Can't enable <distributor> without a key
- number: 1008
...
definitions:
OUTPUT_DIR: ./
LAYER_DNP_TOP: F.DNP
LAYER_DNP_BOTTOM: B.DNP

695
kibot_yaml/kibot_main.yaml Normal file
View File

@@ -0,0 +1,695 @@
# KiBot configuration file for KDT_Hierarchical Template
# KiCad 8.0
kibot:
version: 1
variants:
# Project variants
- name: 'DRAFT'
comment: "Very early stage of schematic, ignore details."
type: kibom
variant: DRAFT
exclude_filter: '_null'
- name: 'PRELIMINARY'
comment: "Close to final schematic."
type: kibom
variant: PRELIMINARY
exclude_filter: '_null'
- name: 'CHECKED'
comment: "There shouldn't be any mistakes. Contact the engineer if you find any."
type: kibom
variant: CHECKED
exclude_filter: '_null'
- name: 'RELEASED'
comment: "A board with this schematic has been sent to production."
type: kibom
variant: RELEASED
exclude_filter: '_null'
# Assembly variants (are executed with the same flags as RELEASED)
# - name: 'EXAMPLE'
# comment: 'Example'
# type: kibom
# file_id: _(EXAMPLE)
# variant: EXAMPLE
# exclude_filter: '_null'
# - name: 'NONE'
# comment: 'None'
# type: kibom
# file_id: _(NONE)
# variant: NONE
# exclude_filter: '_null'
groups:
- name: all_group
outputs:
- @NETLIST_OUTPUT@
- bom
- 3d
- fab
- assembly
- @PDF_SCHEMATIC_OUTPUT@
- @MD_README_OUTPUT@
# - @HTML_KICANVAS_OUTPUT@ # Very experimental, we exclude it for now
- @HTML_KIRI_OUTPUT@
- @HTML_NAV_RES_OUTPUT@
- name: all_group_k9
outputs:
- @NETLIST_OUTPUT@
- bom
- 3d
- fab_k9
- assembly
- @PDF_SCHEMATIC_OUTPUT@
- @MD_README_OUTPUT@
# - @HTML_KICANVAS_OUTPUT@ # Very experimental, we exclude it for now
- @HTML_KIRI_OUTPUT@
- @HTML_NAV_RES_OUTPUT@
- name: draft_group
outputs:
- @NETLIST_OUTPUT@
- @PDF_SCHEMATIC_OUTPUT@
- @CSV_BOM_OUTPUT@
- @HTML_BOM_OUTPUT@
- name: fab
outputs:
- tables
- @GERBER_OUTPUT@
- @EXCELLON_DRILL_OUTPUT@
# - @DXF_DRILL_MAP_OUTPUT@
- @PDF_DRILL_MAP_OUTPUT@
- @PDF_FABRICATION_OUTPUT@
- @ZIP_COMPRESS_FAB_OUTPUT@
- name: fab_k9
outputs:
- tables
- @GERBER_OUTPUT@
- @ODB_OUTPUT@
- @EXCELLON_DRILL_OUTPUT@
# - @DXF_DRILL_MAP_OUTPUT@
- @PDF_DRILL_MAP_OUTPUT@
- @PDF_FABRICATION_OUTPUT@
- @ZIP_COMPRESS_FAB_OUTPUT@
- name: assembly
outputs:
- 3d_render
- @CSV_POS_OUTPUT@
- @PDF_ASSEMBLY_OUTPUT@
- name: 3d_render
outputs:
- @PNG_3D_VIEWER_TOP@
- @PNG_3D_VIEWER_BOTTOM@
- @PNG_3D_VIEWER_ANGLED_TOP@
- @PNG_3D_VIEWER_ANGLED_BOTTOM@
- name: bom
outputs:
- @CSV_BOM_OUTPUT@
# - @XLSX_BOM_OUTPUT@
- @HTML_IBOM_OUTPUT@
- @HTML_BOM_OUTPUT@
- name: tables
outputs:
- @CSV_COMP_COUNT_OUPUT@
- @CSV_IMPEDANCE_TABLE_OUTPUT@
- @CSV_DRILL_TABLE_OUTPUT@
- testpoints
- notes
- name: testpoints
outputs:
- @CSV_TP_OUTPUT@
- @CSV_TP_TOP_OUTPUT@
- @CSV_TP_BOTTOM_OUTPUT@
- name: notes
outputs:
- @TXT_FAB_NOTES_OUTPUT@
- @TXT_ASSEMBLY_NOTES_OUTPUT@
- name: 3d
outputs:
- @STEP_OUTPUT@
# - @BLENDER_OUTPUT@ # looks kinda bad
import:
# Global parameters ==========================================================
- file: kibot_globals.yaml
definitions:
OUTPUT_DIR: @OUTPUT_DIR@
LAYER_DNP_TOP: @LAYER_DNP_TOP@
LAYER_DNP_BOTTOM: @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: "@EXCLUDE_REFS@"
- file: kibot_filt_testpoints.yaml
definitions:
NAME: @FILT_TP_BOTTOM_ONLY@
COMMENT: Select only bottom testpoints
EXCLUDE_TOP: true
EXCLUDE_REFS: "@EXCLUDE_REFS@"
# Preflights =================================================================
# Set text variables
- file: kibot_pre_set_text_variables.yaml
definitions:
PROJECT_NAME: @PROJECT_NAME@
BOARD_NAME: @BOARD_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 in PCB for testpoint lists
# - 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_IMPEDANCE_TABLE: @CSV_IMPEDANCE_TABLE_OUTPUT@
# Generated outputs ============================================================
# Schematic variant with split fields ----------------------------------------
# - file: kibot_out_sch_variant.yaml
# definitions:
# NAME: @SCH_VARIANT_OUTPUT@
# COMMENT: Split component Value field of components
# DIR: '@SCHEMATIC_DIR@/value_split'
# Netlist --------------------------------------------------------------------
- file: kibot_out_netlist.yaml
definitions:
NAME: @NETLIST_OUTPUT@
COMMENT: Schematic netlist in KiCad format
# Generic manufacturing outputs ==============================================
# Gerbers --------------------------------------------------------------------
- file: kibot_out_gerber.yaml
definitions:
NAME: @GERBER_OUTPUT@
COMMENT: Gerbers in GBR format
DIR: @GERBERS_DIR@
PLOT_REFS: @PLOT_REFS@
# ODB++ ----------------------------------------------------------------------
- file: kibot_out_odb.yaml
definitions:
NAME: @ODB_OUTPUT@
COMMENT: ODB++ in ZIP format
DIR: @FABRICATION_DIR@
# Drill files
- file: kibot_out_excellon_drill.yaml
definitions:
NAME: @EXCELLON_DRILL_OUTPUT@
COMMENT: Drill in Excellon format
DIR: @GERBERS_DIR@
# Drill Map (PDF)
- file: kibot_out_excellon_drill.yaml
definitions:
NAME: @PDF_DRILL_MAP_OUTPUT@
COMMENT: Drill Map in PDF format
DIR: @GERBERS_DIR@
GENERATE_DRILL: false
PTH_NPTH: @GROUP_PTH_NPTH_DRL@
MAP_FORMAT: pdf
# Drill Map (DXF)
# - file: kibot_out_excellon_drill.yaml
# definitions:
# NAME: @DXF_DRILL_MAP_OUTPUT@
# COMMENT: Drill Map in DXF format
# DIR: @GERBERS_DIR@
# GENERATE_DRILL: false
# PTH_NPTH: @GROUP_PTH_NPTH_DRL@
# MAP_FORMAT: dxf
# Drill Table (CSV)
- 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@
# Position file --------------------------------------------------------------
- file: kibot_out_csv_pos.yaml
definitions:
NAME: @CSV_POS_OUTPUT@
COMMENT: Position file in CSV format
DIR: @ASSEMBLY_DIR@
# Manufacturer-specific manufacturing outputs ================================
# Testpoint lists ------------------------------------------------------------
- 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@
# CSV Bill of Materials (BoM) ------------------------------------------------
- file: kibot_out_csv_bom.yaml
definitions:
NAME: @CSV_BOM_OUTPUT@
COMMENT: Bill of Materials in CSV format
DIR: @ASSEMBLY_DIR@
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@
MPN_FIELD: @MPN_FIELD@
MAN_FIELD: @MAN_FIELD@
# XLSX Bill of Materials (BoM)
- file: kibot_out_xlsx_bom.yaml
definitions:
NAME: @XLSX_BOM_OUTPUT@
COMMENT: Bill of Materials in XLSX format
DIR: @ASSEMBLY_DIR@
FILT_PRE_TRANSFORM: @FILT_FIELD_RENAME@
# Interactive HTML BOM. Needs netlist.
- file: kibot_out_html_ibom.yaml
definitions:
NAME: @HTML_IBOM_OUTPUT@
COMMENT: Interactive BOM in HTML format
DIR: @ASSEMBLY_DIR@
EXCLUDE_FILTER: @FILT_TP_EXCLUDE@
TITLE: @BOARD_NAME@ Assembly
MPN_FIELD: @MPN_FIELD@
# CSV components count report ------------------------------------------------
- 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
# CSV Impedance/Transmission line table
- 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
# TXT fabrication notes ------------------------------------------------------
- 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
# TXT assembly notes
- file: kibot_out_txt_report.yaml
definitions:
NAME: @TXT_ASSEMBLY_NOTES_OUTPUT@
COMMENT: Assembly notes in TXT format
DIR: @ASSEMBLY_DIR@
OUTPUT_ID: assembly_notes
TEMPLATE: @REPORT_TEMPLATE_DIR@/assembly_notes.txt
# PNG 3D Viewer renders ------------------------------------------------------
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_TOP@
COMMENT: Top 3D viewer PCB render in PNG format
DIR: @IMAGES_DIR@
SUFFIX: top
VIEW: top
KEY_COLOR: '@KEY_COLOR@'
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_BOTTOM@
COMMENT: Bottom 3D viewer PCB render in PNG format
DIR: @IMAGES_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: @IMAGES_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_BOTTOM@
COMMENT: Bottom (angled) 3D viewer PCB render in PNG format
DIR: @IMAGES_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@'
# STEP file ------------------------------------------------------------------
- file: kibot_out_step.yaml
definitions:
NAME: @STEP_OUTPUT@
COMMENT: PCB 3D model in STEP format
DIR: @3D_DIR@
# - file: kibot_out_blender.yaml
# definitions:
# NAME: @BLENDER_OUTPUT@
# COMMENT: PCB 3D model in PCB3D Blender format
# DIR: @IMAGES_DIR@
# Schematic 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: 'Times New Roman'
# Fabrication Document in PDF format
- 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@
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@
# Assembly Document in PDF format
- 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@
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@
# Compress fabrication files into ZIP archive --------------------------------
- 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@
# Generate webpage for exploring PCB/SCH files
- file: kibot_out_html_kicanvas.yaml
definitions:
NAME: @HTML_KICANVAS_OUTPUT@
COMMENT: KiCanvas webpage
DIR: KiCanvas
# Generate webpage with diffs between commits
- file: kibot_out_html_kiri.yaml
definitions:
NAME: @HTML_KIRI_OUTPUT@
COMMENT: KiRI webpage
DIR: KiRI
# README.md file generation
- file: kibot_out_md_report.yaml
definitions:
NAME: @MD_README_OUTPUT@
COMMENT: README file in Markdown format
DIR: @OUTPUT_DIR@
CATEGORY: '.'
OUTPUT_NAME: README
TEMPLATE: @REPORT_TEMPLATE_DIR@/readme.txt
- file: kibot_out_navigate_results.yaml
definitions:
NAME: @HTML_NAV_RES_OUTPUT@
COMMENT: Results webpage in HTML format
DIR: HTML
TITLE: @BOARD_NAME@
LOGO: @LOGO@
LOGO_URL: @GIT_URL@
# ==============================================================================
...
definitions:
# Metadata ===================================================================
PROJECT_NAME: Nixie Tube Clock
BOARD_NAME: Nixie Clock Main Board
COMPANY: Company Name
DESIGNER: Aidan Brzezinski
LOGO: 'Logos/dummy_logo.png'
GIT_URL: 'https://github.com/nguyen-v/KDT_Hierarchical_KiBot'
# Preflight ==================================================================
CHECK_ZONE_FILLS: false
STACKUP_TABLE_NOTE: external layer thicknesses are specified after plating
# BoM ========================================================================
MPN_FIELD: 'Manufacturer Part Number'
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
# Schematic parameters =======================================================
COLOR_THEME: Altium_Theme
SHEET_WKS: ${KIPRJMOD}/Templates/KDT_Template_PCB_GIT_A4.kicad_wks
FAB_SCALING: 1
ASSEMBLY_SCALING: 1
# References to exclude from testpoint highlighting ==========================
EXCLUDE_REFS: '[MB*]' # for components on the PCB but not on the schematic
# 3D Viewer rotations (in steps) =============================================
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
# Output directories =========================================================
# Root
OUTPUT_DIR: ./
# Relative to root
REPORT_DIR: Reports
SCHEMATIC_DIR: Schematic
MANUFACTURING_DIR: Manufacturing
ASSEMBLY_DIR: '@MANUFACTURING_DIR@/Assembly'
FABRICATION_DIR: '@MANUFACTURING_DIR@/Fabrication'
GERBERS_DIR: '@FABRICATION_DIR@/Gerbers'
FAB_DRILL_TABLES_DIR: '@FABRICATION_DIR@/Drill Tables'
TESTING_DIR: Testing
TESTPOINTS_DIR: '@TESTING_DIR@/Testpoints'
IMAGES_DIR: Images
3D_DIR: 3D
RESOURCES_DIR: kibot_resources
REPORT_TEMPLATE_DIR: '@RESOURCES_DIR@/templates'
SCRIPTS_DIR: '@RESOURCES_DIR@/scripts'
# Layer names. Should match user-defined names in the PCB. ==================
LAYER_TITLE_PAGE: TitlePage
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
# Filters names ==============================================================
FILT_FIELD_RENAME: field_rename
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 ============================================================
SCH_VARIANT_OUTPUT: value_split
NETLIST_OUTPUT: netlist
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
CSV_BOM_OUTPUT: csv_bom
XLSX_BOM_OUTPUT: xlsx_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
TXT_FAB_NOTES_OUTPUT: txt_fabrication_notes
TXT_ASSEMBLY_NOTES_OUTPUT: txt_assembly_notes
PNG_3D_VIEWER_TOP: png_3d_viewer_top
PNG_3D_VIEWER_BOTTOM: png_3d_viewer_bottom
PNG_3D_VIEWER_ANGLED_TOP: png_3d_viewer_angled_top
PNG_3D_VIEWER_ANGLED_BOTTOM: png_3d_viewer_angled_bottom
STEP_OUTPUT: step
BLENDER_OUTPUT: blender
PDF_SCHEMATIC_OUTPUT: pdf_schematic
PDF_FABRICATION_OUTPUT: pdf_fabrication
PDF_ASSEMBLY_OUTPUT: pdf_assembly
ZIP_COMPRESS_FAB_OUTPUT: zip_compress_fab
HTML_KICANVAS_OUTPUT: html_kicanvas
HTML_KIRI_OUTPUT: html_kiri
MD_README_OUTPUT: md_readme
HTML_NAV_RES_OUTPUT: html_navigate_results

View File

@@ -0,0 +1,105 @@
# 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@
comment: '@COMMENT@'
type: blender_export
category: '@DIR@'
dir: '@DIR@'
options:
light:
- name: "light1"
energy: 2
pos_x: -size*3.33
pos_y: size*3.33
pos_z: size*5
type: "AREA"
- name: "light2"
energy: 1
pos_x: 0
pos_y: size*3.33
pos_z: size*7
type: "AREA"
- name: "light3"
energy: 1
pos_x: 0
pos_y: 0
pos_z: size*12
type: "AREA"
- name: "light4"
energy: 1
pos_x: -size*3.33
pos_y: size*3.33
pos_z: size*10.0
type: "AREA"
- name: "light5"
energy: 2
pos_x: 0.0
pos_y: size/2
pos_z: size*20.0
type: "SUN"
- name: "light6"
energy: 1
pos_x: -size*3.33
pos_y: size*3.33
pos_z: size*10.0
type: "SPOT"
- name: "light7"
energy: 1
pos_x: -size*3.33
pos_y: size*3.33
pos_z: 0.0
type: "AREA"
- name: "light8"
energy: 0.2
pos_x: size
pos_y: -size
pos_z: size
type: "AREA"
- name: "light9"
energy: 0.2
pos_x: -size
pos_y: size/2
pos_z: size
type: "AREA"
- name: "light10"
energy: 0.2
pos_x: -size
pos_y: size
pos_z: size
type: "AREA"
pcb3d:
download: false
download_lcsc: false
render_options:
auto_crop: true
transparent_background: true
samples: 75
resolution_x: 1500
resolution_y: 1500
auto_camera_z_axis_factor: 1
point_of_view:
rotate_x: 15
rotate_y: 25
rotate_z: 0
view: top
outputs:
- type: render
definitions:
NAME: blender
COMMENT: PCB 3D model in PCB3D Blender format
DIR: 3D

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,46 @@
# 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@', 'Value']
columns:
- "Row"
- "Quantity Per PCB"
- "References"
- "Value"
- "Datasheet"
- "Footprint"
- "Description"
- "@MAN_FIELD@"
- "@MPN_FIELD@"
- "Supplier Part Number"
# - "arrow#"
# - "digikey#"
# - "farnell#"
# - "mouser#"
# - "newark#"
# - "rs#"
# - "tme#"
...
definitions:
NAME: csv_bom
COMMENT: Bill of Materials in CSV format
DIR: Manufacturing/Assembly
MPN_FIELD: 'Manufacturer Part Number'
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: Manufacturing/Fabrication/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,25 @@
# 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: Manufacturing
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,25 @@
# 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@
map: '@MAP_FORMAT@'
...
definitions:
NAME: drl_excellon
COMMENT: Drill in Excellon format
DIR: Manufacturing/Fabrication/Gerbers
GENERATE_DRILL: true
PTH_NPTH: false
MAP_FORMAT: None

View File

@@ -0,0 +1,25 @@
# 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: true
plot_footprint_refs: @PLOT_REFS@
plot_footprint_values: false
create_gerber_job_file: false
...
definitions:
NAME: gbr_gerbers
COMMENT: Gerbers in GBR format
DIR: Manufacturing/Fabrication/Gerbers
PLOT_REFS: true

View File

@@ -0,0 +1,49 @@
# 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"
- "@MAN_FIELD@"
- "@MPN_FIELD@"
- "Supplier Part Number"
# - "arrow#"
# - "digikey#"
# - "farnell#"
# - "mouser#"
# - "newark#"
# - "rs#"
# - "tme#"
...
definitions:
NAME: html_bom
COMMENT: BOM in HTML format
DIR: Manufacturing/Assembly
MPN_FIELD: 'Manufacturer Part Number'
MAN_FIELD: 'Manufacturer'

View File

@@ -0,0 +1,32 @@
# 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,@MPN_FIELD@'
group_fields: 'Value,@MPN_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: Manufacturing/Assembly
EXCLUDE_FILTER: exclude_testpoints
TITLE: ""
MPN_FIELD: 'Manufacturer Part Number'

View File

@@ -0,0 +1,21 @@
# KiBot output for exploring PCB/SCH files
# https://kibot.readthedocs.io/en/latest/configuration/outputs/kicanvas.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: kicanvas
category: '@DIR@'
dir: '@DIR@'
options:
dnf_filter: _kibom_dnf_Config
overlay: true
source: ["schematic", "pcb", "project"]
definitions:
NAME: html_kicanvas
COMMENT: KiCanvas webpage
DIR: KiCanvas

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,24 @@
# KiBot output for MD Report (e.g. README.md)
# https://kibot.readthedocs.io/en/latest/configuration/outputs/report.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: report
category: '@CATEGORY@'
dir: '@DIR@'
options:
output: '@OUTPUT_NAME@.md'
template: @TEMPLATE@
...
definitions:
NAME: md_readme
COMMENT: Report
DIR: .
CATEGORY: /
OUTPUT_NAME: README
TEMPLATE: kibot_ressources/template/readme.txt

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,15 @@
# 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
...
definitions:
NAME: netlist
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: Manufacturing/Fabrication

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: Manufacturing/Assembly
DOC_TITLE: Assembly
COLOR_THEME: Altium_Theme
SHEET_WKS: ${KIPRJMOD}/Templates/KDT_Template_PCB_GIT_A4.kicad_wks
SCALING: 1.0
FAB_EXCLUDE_FILTER: exclude_testpoints
LAYER_TITLE_PAGE: TitlePage
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,229 @@
# 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: 'F.Cu'
...
definitions:
NAME: pdf_fabrication
COMMENT: Fabrication document in PDF format
DIR: Manufacturing/Fabrication
DOC_TITLE: Fabrication
COLOR_THEME: Altium_Theme
SHEET_WKS: ${KIPRJMOD}/Templates/KDT_Template_PCB_GIT_A4.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,23 @@
# 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@'
definitions:
NAME: pdf_schematic
COMMENT: Schematic in PDF format
COLOR_THEME: Altium_Theme
DEFAULT_FONT: Times New Roman
DIR: Schematic

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: Images
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,20 @@
# KiBot output for generating Alternate Schematic with split value fields
# https://kibot.readthedocs.io/en/latest/configuration/outputs/sch_variant.html
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: sch_variant
dir: '@DIR@'
options:
pre_transform: _value_split_replace
copy_project: true
...
definitions:
NAME: value_split
COMMENT: Split component Value field of components
DIR: Schematic

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

View File

@@ -0,0 +1,26 @@
# 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: Manufacturing
OUTPUT_ID: _notes
TEMPLATE: kibot_ressources/template/fabrication_notes.txt

View File

@@ -0,0 +1,58 @@
# KiBot output for generating Bill of Materials in XLSX 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: XLSX
pre_transform:
- _value_split
- @FILT_PRE_TRANSFORM@
count_smd_tht: true
distributors:
- Mouser
- Digi-Key
- TME
# - Arrow
# - Farnell
xlsx:
title: 'Bill of Materials'
datasheet_as_link: 'Datasheet'
logo: false
style: modern-blue
kicost: true
kicost_config: '@KICOST_CONFIG@'
specs: true
columns:
- "Row"
- "Quantity Per PCB"
- "References"
- "Value"
- "Datasheet"
- "Footprint"
- "Description"
- "manf"
- "manf#"
- "Supplier Part Number"
# - "arrow#"
# - "digikey#"
# - "farnell#"
# - "mouser#"
# - "newark#"
# - "rs#"
# - "tme#"
...
definitions:
NAME: xlsx_costs_bom
COMMENT: Costs Bill of Materials in XLSX format
DIR: Manufacturing/Assembly
KICOST_CONFIG: ''
FILT_PRE_TRANSFORM: field_rename

View File

@@ -0,0 +1,26 @@
# 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'
- 'gerber'
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,59 @@
# 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_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_IMPEDANCE_TABLE: csv_impedance_table

View File

@@ -0,0 +1,180 @@
# 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'
# command: 'git describe --tags --abbrev=0 || echo ""'
text: '@REVISION@'
- variable: 'RELEASE_DATE'
command: 'git log -1 --format="%ad" --date="format:%d-%b-%Y"'
- variable: 'RELEASE_DATE_NUM'
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_URL'
text: '@GIT_URL@'
# Metadata
- variable: 'PROJECT_NAME'
text: '@PROJECT_NAME@'
- variable: 'BOARD_NAME'
text: '@BOARD_NAME@'
- variable: 'COMPANY'
text: '@COMPANY@'
- variable: 'DESIGNER'
text: '@DESIGNER@'
- variable: 'VARIANT'
text: '%V'
# Changelog
# - variable: '@RELEASE_TITLE_VAR@1.0.0'
# command: '@GET_TITLE_CMD@ 1.0.0'
# - variable: '@RELEASE_BODY_VAR@1.0.0'
# command: '@GET_BODY_CMD@ 1.0.0'
# - variable: '@RELEASE_TITLE_VAR@1.0.1'
# command: '@GET_TITLE_CMD@ 1.0.1'
# - variable: '@RELEASE_BODY_VAR@1.0.1'
# command: '@GET_BODY_CMD@ 1.0.1'
# - variable: '@RELEASE_TITLE_VAR@1.0.2'
# command: '@GET_TITLE_CMD@ 1.0.2'
# - variable: '@RELEASE_BODY_VAR@1.0.2'
# command: '@GET_BODY_CMD@ 1.0.2'
# - variable: '@RELEASE_TITLE_VAR@1.1.0'
# command: '@GET_TITLE_CMD@ 1.1.0'
# - variable: '@RELEASE_BODY_VAR@1.1.0'
# command: '@GET_BODY_CMD@ 1.1.0'
# - variable: '@RELEASE_TITLE_VAR@1.1.1'
# command: '@GET_TITLE_CMD@ 1.1.1'
# - variable: '@RELEASE_BODY_VAR@1.1.1'
# command: '@GET_BODY_CMD@ 1.1.1'
- variable: '@RELEASE_TITLE_VAR@UNRELEASED'
command: '@GET_TITLE_CMD@ Unreleased'
- variable: '@RELEASE_BODY_VAR@UNRELEASED'
command: '@GET_BODY_CMD@ Unreleased'
# 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 ""'
# Fabrication 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@1'
text: 'Cover Page'
- variable: '@SHEET_NAME_VAR@2'
command: '@GET_SHEET_CMD@ 2'
- variable: '@SHEET_NAME_VAR@3'
command: '@GET_SHEET_CMD@ 3'
- variable: '@SHEET_NAME_VAR@4'
command: '@GET_SHEET_CMD@ 4'
- variable: '@SHEET_NAME_VAR@5'
command: '@GET_SHEET_CMD@ 5'
- variable: '@SHEET_NAME_VAR@6'
command: '@GET_SHEET_CMD@ 6'
- variable: '@SHEET_NAME_VAR@7'
command: '@GET_SHEET_CMD@ 7'
- variable: '@SHEET_NAME_VAR@8'
command: '@GET_SHEET_CMD@ 8'
- variable: '@SHEET_NAME_VAR@9'
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'
- variable: '@SHEET_NAME_VAR@21'
command: '@GET_SHEET_CMD@ 21'
- variable: '@SHEET_NAME_VAR@22'
command: '@GET_SHEET_CMD@ 22'
- variable: '@SHEET_NAME_VAR@23'
command: '@GET_SHEET_CMD@ 23'
- variable: '@SHEET_NAME_VAR@24'
command: '@GET_SHEET_CMD@ 24'
- variable: '@SHEET_NAME_VAR@25'
command: '@GET_SHEET_CMD@ 25'
- variable: '@SHEET_NAME_VAR@26'
command: '@GET_SHEET_CMD@ 26'
- variable: '@SHEET_NAME_VAR@27'
command: '@GET_SHEET_CMD@ 27'
- variable: '@SHEET_NAME_VAR@28'
command: '@GET_SHEET_CMD@ 28'
- variable: '@SHEET_NAME_VAR@29'
command: '@GET_SHEET_CMD@ 29'
- variable: '@SHEET_NAME_VAR@30'
command: '@GET_SHEET_CMD@ 30'
- variable: '@SHEET_NAME_VAR@31'
command: '@GET_SHEET_CMD@ 31'
- variable: '@SHEET_NAME_VAR@32'
command: '@GET_SHEET_CMD@ 32'
- variable: '@SHEET_NAME_VAR@33'
command: '@GET_SHEET_CMD@ 33'
- variable: '@SHEET_NAME_VAR@34'
command: '@GET_SHEET_CMD@ 34'
- variable: '@SHEET_NAME_VAR@35'
command: '@GET_SHEET_CMD@ 35'
- variable: '@SHEET_NAME_VAR@36'
command: '@GET_SHEET_CMD@ 36'
- variable: '@SHEET_NAME_VAR@37'
command: '@GET_SHEET_CMD@ 37'
- variable: '@SHEET_NAME_VAR@38'
command: '@GET_SHEET_CMD@ 38'
- variable: '@SHEET_NAME_VAR@39'
command: '@GET_SHEET_CMD@ 39'
- variable: '@SHEET_NAME_VAR@40'
command: '@GET_SHEET_CMD@ 40'
...
definitions:
PROJECT_NAME: ""
BOARD_NAME: ""
COMPANY: ""
DESIGNER: ""
REVISION: ""
RELEASE_DATE: ""
RELEASE_DATE_NUM: ""
GIT_URL: ""
SHEET_NAME_VAR: SHEET_NAME_
RELEASE_TITLE_VAR: RELEASE_TITLE_
RELEASE_BODY_VAR: RELEASE_BODY_
SCRIPTS_DIR: kibot_resources/scripts
GET_SHEET_CMD: python3 @SCRIPTS_DIR@/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p
GET_TITLE_CMD: python3 @SCRIPTS_DIR@/get_changelog.py -f CHANGELOG.md --title-only --version
GET_BODY_CMD: python3 @SCRIPTS_DIR@/get_changelog.py -f CHANGELOG.md --extra-spaces --separators 35 --version
FABRICATION_DIR: Manufacturing/Fabrication
ASSEMBLY_DIR: Manufacturing/Assembly

View File

@@ -0,0 +1,77 @@
# KiCost configuration file
# Create a copy of this file locally, called kibost_config_local.yaml
# kibost_config_local.yaml should NOT be shared as it contains API keys
# By default, kicost_config_local.yaml is in the .gitignore
# To run KiCost, you can run the following:
# ./kibot_launch.sh -v <VARIANT> --costs
kicost:
version: 1
# Prices are valid for a day
cache_ttl: 1
# # We will store the cache here:
cache_path: ~/kicost_cache
# Add any API option here
# Avoid secrets
APIs:
Digi-Key:
# Digi-Key Client ID for a registered APP
client_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# Digi-Key Client Secret for a registered APP
client_secret: xxxxxxxxxxxxxxxx
# Use the sandbox server, doesn't count the usage, but returns old data
# sandbox: false
# Only enabled if the client_id and client_secret are defined
enable: true
# Directory for the APIs caches
cache_path: ~/.cache/kicost/Digi-Key
Mouser:
# Mouser Part API key
key: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# Only enabled if the key is defined
enable: true
# Directory for the APIs caches
cache_path: ~/.cache/kicost/Mouser
# Element14:
# Element14 includes: Farnell, Newark and CPC
# Element14 Product Search API key
# key: XXXXXXXXXXXXXXXXXXXXXXXX
# Only enabled if the key is defined
# enable: false
# Country used for Farnell queries.
# Supported countries: BG,CZ,DK,AT,CH,DE,IE,IL,UK,ES,EE,FI,FR,HU,IT,LT,
# LV,BE,NL,NO,PL,PT,RO,RU,SK,SI,SE,TR,CN,AU,NZ,HK,SG,MY,PH,TH,IN,KR,VN
# farnell_country: UK
# Country used for Newark queries.
# Supported countries: US,CA,MX
# newark_country: US
# Country used for CPC queries.
# Supported countries: UK,IE
# cpc_country: UK
# Directory for the APIs caches
# cache_path: ~/.cache/kicost/Element14
# Nexar:
# Nexar client ID
# client_id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
# Nexar client secret
# client_secret: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
# Only enabled if the client_id and client_secret are defined
# enable: false
# Country where we are buying
# country: US
# Directory for the APIs caches
# cache_path: ./nexar
TME:
# TME token (anonymous or private)
token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# TME application secret
app_secret: xxxxxxxxxxxxxxxxxxxx
# Only enabled if the token and app_secret are defined
enable: true
# Country where we are buying
# country: US
# Language for the texts
# language: EN
# Directory for the APIs caches
cache_path: ~/.cache/kicost/TME