Compare commits

32 Commits
main ... dev

Author SHA1 Message Date
jkrauss
d2c2e72db1 [bot]: Update Outputs 2026-03-11 01:53:06 +00:00
8afb0f11e3 Update Preprocess KiBot script path in CI
All checks were successful
KiBot CI / test (push) Successful in 45s
2026-03-10 18:52:24 -07:00
9e36c93eb6 Move KiBot Preflights to their own folder
Some checks failed
KiBot CI / test (push) Failing after 33s
2026-03-10 18:50:06 -07:00
jkrauss
eb9192b67d [bot]: Update Outputs 2026-03-11 01:48:59 +00:00
1e58530fdb Fix Syntax Error
All checks were successful
KiBot CI / test (push) Successful in 46s
2026-03-10 18:48:15 -07:00
eb41358254 Fix KiBot Syntax Issues
Some checks failed
KiBot CI / test (push) Failing after 26s
2026-03-10 18:46:30 -07:00
74e91a560b Fix Import Paths
Some checks failed
KiBot CI / test (push) Failing after 36s
2026-03-10 18:44:26 -07:00
781a0de536 Fix CSV Drill Table output names
Some checks failed
KiBot CI / test (push) Failing after 36s
2026-03-10 18:43:05 -07:00
50dcde2d53 Fix missing Testpoint CSV output names
Some checks failed
KiBot CI / test (push) Failing after 36s
2026-03-10 18:41:34 -07:00
bd5eff3816 Fix KiBot typo
Some checks failed
KiBot CI / test (push) Failing after 23s
2026-03-10 18:39:45 -07:00
69cbded632 Fix KiBot Syntax
Some checks failed
KiBot CI / test (push) Failing after 39s
2026-03-10 18:34:35 -07:00
1c9f199ca3 Move Notes and Tables to new KiBot Group file
Some checks failed
KiBot CI / test (push) Failing after 23s
2026-03-10 18:33:07 -07:00
jkrauss
01fac39ee6 [bot]: Update Outputs 2026-03-11 01:06:21 +00:00
7c913f5f06 Move KiBot Output Files to separate directory
All checks were successful
KiBot CI / test (push) Successful in 29s
2026-03-10 18:05:48 -07:00
jkrauss
9f8bac09c8 [bot]: Update Outputs 2026-03-11 01:04:13 +00:00
e30ec22dcc Remove Netlist Output
All checks were successful
KiBot CI / test (push) Successful in 47s
2026-03-10 18:03:30 -07:00
jkrauss
8f744ce121 [bot]: Update Outputs 2026-03-11 01:01:09 +00:00
9241a228b7 Remove Old KiBot Files
All checks were successful
KiBot CI / test (push) Successful in 30s
2026-03-10 18:00:40 -07:00
jkrauss
1a389d8398 [bot]: Update Outputs 2026-03-11 00:59:41 +00:00
f060645431 Move BOM Group into separate KiBot file
All checks were successful
KiBot CI / test (push) Successful in 30s
2026-03-10 17:59:12 -07:00
jkrauss
99d7feab4e [bot]: Update Outputs 2026-03-11 00:49:29 +00:00
de1c19795d Fix KiBot Syntax
All checks were successful
KiBot CI / test (push) Successful in 30s
2026-03-10 17:49:00 -07:00
8060c688ef Fix KiBot Syntax
Some checks failed
KiBot CI / test (push) Failing after 24s
2026-03-10 17:45:37 -07:00
684dceec17 Fix KiBot Syntax
Some checks failed
KiBot CI / test (push) Failing after 37s
2026-03-10 17:44:11 -07:00
294edcf797 Move Render Group into its own KiBot file
Some checks failed
KiBot CI / test (push) Failing after 38s
2026-03-10 17:42:18 -07:00
jkrauss
5ccf357fcc [bot]: Update Outputs 2026-03-10 23:38:02 +00:00
974f9a11e3 Remove old STATE text variable
All checks were successful
KiBot CI / test (push) Successful in 46s
2026-03-10 16:37:19 -07:00
jkrauss
86cd82203c [bot]: Update Outputs 2026-03-10 23:36:02 +00:00
cbf7e8e00b Update the Text Variable Preflight
All checks were successful
KiBot CI / test (push) Successful in 50s
2026-03-10 16:35:15 -07:00
jkrauss
3706c4103a [bot]: Update Outputs 2026-03-10 23:29:07 +00:00
68b80701e9 Initialize Project
All checks were successful
KiBot CI / test (push) Successful in 30s
2026-03-10 16:28:31 -07:00
jkrauss
7517d49113 [bot]: Update Outputs 2026-03-10 23:06:04 +00:00
59 changed files with 1436 additions and 672 deletions

7
.gitattributes vendored Normal file
View File

@@ -0,0 +1,7 @@
*.csv filter=bom_csv
*.html filter=bom_html
*.gbr filter=gerber
*.gbrjob filter=gbrjob
*.xml filter=xml
*.kicad_pcb filter=kicad_pcb_f
*.net filter=net_filter

20
.gitconfig Normal file
View File

@@ -0,0 +1,20 @@
[filter "bom_csv"]
clean = sed -E 's/^BoM Date:.*$/BoM Date:Date/'
smudge = sed -E \"s/BoM Date:Date/BoM Date:,`date +\\\"%a %d %b %Y %X %:::z\\\"`/\"
[filter "bom_html"]
clean = sed -E 's/^<tr><td>BoM Date<\\/td><td>.*$/<tr><td>BoM Date<\\/td><td>Date<\\/td><\\/tr>/'
smudge = sed -E \"s/<tr><td>BoM Date<\\/td><td>Date<\\/td><\\/tr>/<tr><td>BoM Date<\\/td><td>`date +\\\"%a %d %b %Y %X %:::z\\\"`<\\/td><\\/tr>/\"
[filter "gerber"]
clean = sed -E -e 's/^%TF.CreationDate,.*$/%TF.CreationDate,Date%/' -e 's/^G04 Created by KiCad.*$/G04 Created by KiCad*/'
smudge = sed -E \"s/%TF.CreationDate,Date%/%TF.CreationDate,`date +%Y-%m-%dT%H:%M:%S%:z`/\"
[filter "gbrjob"]
clean = sed -E 's/\"CreationDate\":.*/\"CreationDate\": \"Date\"/'
smudge = sed -E \"s/\\\"CreationDate\\\": \\\"Date\\\"/\\\"CreationDate\\\": \\\"`date +%Y-%m-%dT%H:%M:%S%:z`\\\"/\"
[filter "xml"]
clean = sed -E -e 's/^ <date>.*<\\/date>/ <date>Date2<\\/date>/' -e 's/^ <date>.*<\\/date>/ <date>Date1<\\/date>/'
smudge = sed -E -e \"s/<date>Date1<\\/date>/<date>`date +\\\"%a %d %b %Y %X %:::z\\\"`<\\/date>/\" -e \"s/<date>Date2<\\/date>/<date>`date +\\\"%Y-%m-%d\\\"`<\\/date>/\"
[filter "kicad_pcb_f"]
clean = sed -E 's/\\(host pcbnew ([[:digit:]]+\\.[[:digit:]]+\\.[[:digit:]]+).*/\\(host pcbnew \\1\\)/'
[filter "net_filter"]
clean = sed -E -e 's/\\(date \\\".*\\\"\\)/\\(date \\\"Date\\\"\\)/'
smudge = sed -E -e \"s/\\(date \\\"Date\\\"\\)/\\(date \\\"`date +\\\"%a %d %b %Y %X %:::z\\\"`\\\"\\)/\"

View File

@@ -125,7 +125,7 @@ jobs:
shell: bash
run: |
/usr/bin/kicad-git-filters.py
kibot -c kibot/yaml/kibot_pre_update_xml.yaml -d . --log kibot_run_xml.log
kibot -c kibot/yaml/preflights/kibot_pre_update_xml.yaml -d . --log kibot_run_xml.log
- name: Run KiBot (Preprocessing)
shell: bash

View File

@@ -649,32 +649,35 @@
]
],
"text_variables": {
"ASSEMBLY_NAME": "",
"ASSEMBLY_NUMBER": "",
"ASSEMBLY_SCALE": "",
"ASSEMBLY_NAME": "nRF52840 Development Board",
"ASSEMBLY_NOTES": "ASSEMBLY NOTES (UNLESS OTHERWISE SPECIFIED)\n\n1)\tDO NOT POPULATE COMPONENTS ARE MARKED WITH A RED CROSS\n\n2)\tDO NOT POPULATE COMPONENTS ARE NOT PRESENT IN THE BOM\n\n3)\tIF CONFLICTING INFORMATION IS FOUND BETWEEN THE ASSEMBLY\n\tFILE AND BOM, BOM SHOULD BE USED AS THE MAIN SOURCE.\n\n4)\tDOT IDENTIFIES PIN #1 LOCATION AND DEVICE ORIENTATION\n\tWHEN VIEWED FROM THE TOP.",
"ASSEMBLY_NUMBER": "A98-1001",
"ASSEMBLY_SCALE": "1",
"COMPANY": "Asymworks, LLC",
"DESIGNER": "JPK",
"DWG_NUMBER_PCB": "",
"DWG_NUMBER_SCH": "",
"DWG_TITLE_ASSY": "",
"DWG_TITLE_PCB": "",
"DWG_TITLE_SCH": "",
"GIT_HASH": "",
"GIT_HASH_PCB": "",
"GIT_HASH_SCH": "",
"GIT_URL": "",
"PROJECT_CODE": "",
"RELEASE_DATE": "",
"RELEASE_STATE": "",
"REVISION": "${REVISION}",
"DWG_NUMBER_PCB": "P98-1001",
"DWG_NUMBER_SCH": "S98-1001",
"DWG_TITLE_ASSY": "Assembly, nRF52840 Development Board",
"DWG_TITLE_PCB": "PCB Fabrication, nRF52840 Development Board",
"DWG_TITLE_SCH": "Schematic, nRF52840 Development Board",
"FABRICATION_NOTES": "FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED)\n\n1)\tFABRICATE PER IPC-6012A CLASS 2.\n\n2)\tOUTLINE DEFINED IN SEPARATE GERBER FILE WITH\n\t\"Edge_Cuts.GBR\" SUFFIX.\n\n3)\tSEE SEPARATE DRILL FILES WITH \".DRL\" SUFFIX \n\tFOR HOLE LOCATIONS.\n\n\tSELECTED HOLE LOCATIONS SHOWN ON THIS DRAWING \n\tFOR REFERENCE ONLY.\n\n4)\tSURFACE FINISH: ENIG\n\n5)\tSOLDERMASK ON BOTH SIDES OF THE BOARD SHALL \n\tBE LPI, COLOR GREEN.\n\n6)\tSILK SCREEN LEGEND TO BE APPLIED PER LAYER \n\tSTACKUP USING WHITE NON-CONDUCTIVE EPOXY INK.\n\n7)\tALL VIAS ARE TENTED ON BOTH SIDES UNLESS \n\tSOLDERMASK OPENED IN GERBER.\n\n8)\tRESERVED\n\n9)\tPCB MATERIAL REQUIREMENTS:\n\n\tA.\tFLAMMABILITY RATING MUST MEET OR EXCEED \n\t\tUL94V-0 REQUIREMENTS.\n\tB.\tTg 135 C OR EQUIVALENT.\n\n10)\tDESIGN GEOMETRY MINIMUM FEATURE SIZES:\n\n\tBOARD SIZE\t\t\t\tN/A \u00d7 N/A mm\n\tBOARD THICKNESS\t\t1.647 mm\n\tTRACE WIDTH\t\t\tN/A mm\n\tTRACE TO TRACE\t\t0.200 mm\n\tMIN. HOLE (PTH)\t\t\tN/A mm\n\tMIN. HOLE (NPTH)\t\tN/A mm\n\tANNULAR RING\t\t\tN/A mm\n\tCOPPER TO HOLE\t\t0.250 mm\n\tCOPPER TO EDGE\t\t0.500 mm\n\tHOLE TO HOLE\t\t\t0.250 mm\n\n11)\tALL DIMENSIONS ARE IN MILLIMETERS UNLESS OTHERWISE\n\tSPECIFIED.\n\n12)\tFOR REFERENCE ONLY THE STACKUP CORRESPONDS TO JLCPCB\n\tSTACKUP JLC04161H-7628.",
"GIT_HASH": "8afb0f1",
"GIT_HASH_PCB": "68b8070",
"GIT_HASH_SCH": "68b8070",
"GIT_URL": "https://git.asymworks.com/jkrauss/Test_7",
"PROJECT_CODE": "P98",
"RELEASE_DATE": "2026-03-10",
"RELEASE_STATE": "DRAFT",
"REVISION": "NO_TAG+ (Unreleased)",
"SCALE": "1:1",
"SCHEMATIC_NOTES": "Unless otherwise specified, components Values are in ohms, \u00b5F, and \u00b5H.",
"SHEET_NAME_01": "Cover Page",
"SHEET_NAME_02": "Block Diagram",
"SHEET_NAME_03": "Project Architecture",
"SHEET_NAME_04": "Circuit 1",
"SHEET_NAME_05": "Circuit 2",
"SHEET_NAME_06": "Circuit 3",
"SHEET_NAME_07": "Parts List",
"SHEET_NAME_07": "......................................",
"SHEET_NAME_08": "......................................",
"SHEET_NAME_09": "......................................",
"SHEET_NAME_10": "......................................",
@@ -688,7 +691,6 @@
"SHEET_NAME_18": "......................................",
"SHEET_NAME_19": "......................................",
"SHEET_NAME_20": "......................................",
"STATE": "TEMPLATE",
"VARIANT": ""
}
}
}

222
A98-1001.xml Normal file
View File

@@ -0,0 +1,222 @@
<?xml version="1.0" encoding="UTF-8"?>
<export version="E">
<design>
<source>/workspace/jkrauss/Test_7/A98-1001.kicad_sch</source>
<date>Date1</date>
<tool>Eeschema 9.0.7+1</tool>
<textvar name="ASSEMBLY_NAME">nRF52840 Development Board</textvar>
<textvar name="ASSEMBLY_NOTES">ASSEMBLY NOTES (UNLESS OTHERWISE SPECIFIED)
1) DO NOT POPULATE COMPONENTS ARE MARKED WITH A RED CROSS
2) DO NOT POPULATE COMPONENTS 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) DOT IDENTIFIES PIN #1 LOCATION AND DEVICE ORIENTATION
WHEN VIEWED FROM THE TOP.</textvar>
<textvar name="ASSEMBLY_NUMBER">A98-1001</textvar>
<textvar name="ASSEMBLY_SCALE">1</textvar>
<textvar name="COMPANY">Asymworks, LLC</textvar>
<textvar name="DESIGNER">JPK</textvar>
<textvar name="DWG_NUMBER_PCB">P98-1001</textvar>
<textvar name="DWG_NUMBER_SCH">S98-1001</textvar>
<textvar name="DWG_TITLE_ASSY">Assembly, nRF52840 Development Board</textvar>
<textvar name="DWG_TITLE_PCB">PCB Fabrication, nRF52840 Development Board</textvar>
<textvar name="DWG_TITLE_SCH">Schematic, nRF52840 Development Board</textvar>
<textvar name="FABRICATION_NOTES">FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED)
1) FABRICATE PER IPC-6012A CLASS 2.
2) OUTLINE DEFINED IN SEPARATE GERBER FILE WITH
"Edge_Cuts.GBR" SUFFIX.
3) SEE SEPARATE DRILL FILES WITH ".DRL" SUFFIX
FOR HOLE LOCATIONS.
SELECTED HOLE LOCATIONS SHOWN ON THIS DRAWING
FOR REFERENCE ONLY.
4) SURFACE FINISH: ENIG
5) SOLDERMASK ON BOTH SIDES OF THE BOARD SHALL
BE LPI, COLOR GREEN.
6) SILK SCREEN LEGEND TO BE APPLIED PER LAYER
STACKUP USING WHITE NON-CONDUCTIVE EPOXY INK.
7) ALL VIAS ARE TENTED ON BOTH SIDES UNLESS
SOLDERMASK OPENED IN GERBER.
8) RESERVED
9) PCB MATERIAL REQUIREMENTS:
A. FLAMMABILITY RATING MUST MEET OR EXCEED
UL94V-0 REQUIREMENTS.
B. Tg 135 C OR EQUIVALENT.
10) DESIGN GEOMETRY MINIMUM FEATURE SIZES:
BOARD SIZE N/A × N/A mm
BOARD THICKNESS 1.647 mm
TRACE WIDTH N/A mm
TRACE TO TRACE 0.200 mm
MIN. HOLE (PTH) N/A mm
MIN. HOLE (NPTH) N/A mm
ANNULAR RING N/A mm
COPPER TO HOLE 0.250 mm
COPPER TO EDGE 0.500 mm
HOLE TO HOLE 0.250 mm
11) ALL DIMENSIONS ARE IN MILLIMETERS UNLESS OTHERWISE
SPECIFIED.
12) FOR REFERENCE ONLY THE STACKUP CORRESPONDS TO JLCPCB
STACKUP JLC04161H-7628.</textvar>
<textvar name="GIT_HASH">8afb0f1</textvar>
<textvar name="GIT_HASH_PCB">68b8070</textvar>
<textvar name="GIT_HASH_SCH">68b8070</textvar>
<textvar name="GIT_URL">https://git.asymworks.com/jkrauss/Test_7</textvar>
<textvar name="PROJECT_CODE">P98</textvar>
<textvar name="RELEASE_DATE">2026-03-10</textvar>
<textvar name="RELEASE_STATE">DRAFT</textvar>
<textvar name="REVISION">NO_TAG+ (Unreleased)</textvar>
<textvar name="SCALE">1:1</textvar>
<textvar name="SCHEMATIC_NOTES">Unless otherwise specified, components Values are in ohms, µF, and µH.</textvar>
<textvar name="SHEET_NAME_01">Cover Page</textvar>
<textvar name="SHEET_NAME_02">Block Diagram</textvar>
<textvar name="SHEET_NAME_03">Project Architecture</textvar>
<textvar name="SHEET_NAME_04">Circuit 1</textvar>
<textvar name="SHEET_NAME_05">Circuit 2</textvar>
<textvar name="SHEET_NAME_06">Circuit 3</textvar>
<textvar name="SHEET_NAME_07">......................................</textvar>
<textvar name="SHEET_NAME_08">......................................</textvar>
<textvar name="SHEET_NAME_09">......................................</textvar>
<textvar name="SHEET_NAME_10">......................................</textvar>
<textvar name="SHEET_NAME_11">......................................</textvar>
<textvar name="SHEET_NAME_12">......................................</textvar>
<textvar name="SHEET_NAME_13">......................................</textvar>
<textvar name="SHEET_NAME_14">......................................</textvar>
<textvar name="SHEET_NAME_15">......................................</textvar>
<textvar name="SHEET_NAME_16">......................................</textvar>
<textvar name="SHEET_NAME_17">......................................</textvar>
<textvar name="SHEET_NAME_18">......................................</textvar>
<textvar name="SHEET_NAME_19">......................................</textvar>
<textvar name="SHEET_NAME_20">......................................</textvar>
<textvar name="VARIANT"/>
<sheet number="1" name="/" tstamps="/">
<title_block>
<title>Title Page</title>
<company>Asymworks, LLC</company>
<rev>NO_TAG+ (Unreleased)</rev>
<date/>
<source>A98-1001.kicad_sch</source>
<comment number="1" value=""/>
<comment number="2" value=""/>
<comment number="3" value=""/>
<comment number="4" value=""/>
<comment number="5" value=""/>
<comment number="6" value=""/>
<comment number="7" value=""/>
<comment number="8" value=""/>
<comment number="9" value=""/>
</title_block>
</sheet>
<sheet number="2" name="/Block Diagram/" tstamps="/28ad8293-baaf-4ee1-8056-ad34096542a0/">
<title_block>
<title>Block Diagram</title>
<company>Asymworks, LLC</company>
<rev>NO_TAG+ (Unreleased)</rev>
<date/>
<source>Block_Diagram.kicad_sch</source>
<comment number="1" value=""/>
<comment number="2" value=""/>
<comment number="3" value=""/>
<comment number="4" value=""/>
<comment number="5" value=""/>
<comment number="6" value=""/>
<comment number="7" value=""/>
<comment number="8" value=""/>
<comment number="9" value=""/>
</title_block>
</sheet>
<sheet number="3" name="/Project Architecture/" tstamps="/f6afef58-d841-4ad6-baf9-746b0a35f011/">
<title_block>
<title>Project Architecture</title>
<company>Asymworks, LLC</company>
<rev>NO_TAG+ (Unreleased)</rev>
<date/>
<source>Architecture.kicad_sch</source>
<comment number="1" value=""/>
<comment number="2" value=""/>
<comment number="3" value=""/>
<comment number="4" value=""/>
<comment number="5" value=""/>
<comment number="6" value=""/>
<comment number="7" value=""/>
<comment number="8" value=""/>
<comment number="9" value=""/>
</title_block>
</sheet>
<sheet number="4" name="/Project Architecture/Circuit 1/" tstamps="/f6afef58-d841-4ad6-baf9-746b0a35f011/a5aa3c11-5084-4ea5-9da5-c9ff4a86f01f/">
<title_block>
<title>Circuit 1</title>
<company>Asymworks, LLC</company>
<rev>NO_TAG+ (Unreleased)</rev>
<date/>
<source>Circuit-1.kicad_sch</source>
<comment number="1" value=""/>
<comment number="2" value=""/>
<comment number="3" value=""/>
<comment number="4" value=""/>
<comment number="5" value=""/>
<comment number="6" value=""/>
<comment number="7" value=""/>
<comment number="8" value=""/>
<comment number="9" value=""/>
</title_block>
</sheet>
<sheet number="5" name="/Project Architecture/Circuit 2/" tstamps="/f6afef58-d841-4ad6-baf9-746b0a35f011/9da43fd7-7a0a-403c-bf2c-ba67cd8fa669/">
<title_block>
<title>Circuit 2</title>
<company>Asymworks, LLC</company>
<rev>NO_TAG+ (Unreleased)</rev>
<date/>
<source>Circuit-2.kicad_sch</source>
<comment number="1" value=""/>
<comment number="2" value=""/>
<comment number="3" value=""/>
<comment number="4" value=""/>
<comment number="5" value=""/>
<comment number="6" value=""/>
<comment number="7" value=""/>
<comment number="8" value=""/>
<comment number="9" value=""/>
</title_block>
</sheet>
<sheet number="6" name="/Project Architecture/Circuit 3/" tstamps="/f6afef58-d841-4ad6-baf9-746b0a35f011/6c8ce547-8e28-496a-9003-0e7dbfd93e8c/">
<title_block>
<title/>
<company>Asymworks, LLC</company>
<rev>NO_TAG+ (Unreleased)</rev>
<date/>
<source>Circuit-3.kicad_sch</source>
<comment number="1" value=""/>
<comment number="2" value=""/>
<comment number="3" value=""/>
<comment number="4" value=""/>
<comment number="5" value=""/>
<comment number="6" value=""/>
<comment number="7" value=""/>
<comment number="8" value=""/>
<comment number="9" value=""/>
</title_block>
</sheet>
</design>
<components/>
<libparts/>
<libraries/>
<nets/>
</export>

39
kibot/scripts/bootstrap.sh Normal file → Executable file
View File

@@ -3,31 +3,48 @@
# KiBot Template Bootstrapping Script
# ============================================================================
set -euo pipefail
# Create the Development Branch
git checkout -qb dev
echo "Created Development Branch"
# Add the Asymworks KiCad Library
git remote add -qf asymworks-kicad-lib https://git.asymworks.com/asymworks/kicad-library
git subtree add -q --prefix lib/asymworks asymworks-kicad-lib main --squash -m "[bootstrap] Add subtree 'Asymworks/KiCad-Library' at 'lib/asymworks'"
git remote --no-verbose add -f asymworks-kicad-lib https://git.asymworks.com/asymworks/kicad-library >/dev/null
git subtree -q add --prefix lib/asymworks asymworks-kicad-lib main --squash -m "[bootstrap] Add subtree 'Asymworks/KiCad-Library' at 'lib/asymworks'"
echo "Added Asymworks KiCad Library"
# Initialize the Project Metadata
python kibot/scripts/metadata.py init
python kibot/scripts/metadata.py update Asymworks_Template.kicad_pro
ASSY_NUMBER=$(python kibot/scripts/metadata.py print AssemblyNumber)
PYTHON=$(which python || echo "")
if [ -z "$PYTHON" ] ; then
PYTHON=$(which python3 || echo "")
if [ -z "$PYTHON" ] ; then
echo "Python interpreter not found as 'python' or 'python3'" >&2
exit 1
fi
fi
echo
echo "Initializing Project Metadata"
echo "-----------------------------"
${PYTHON} kibot/scripts/metadata.py init
${PYTHON} kibot/scripts/metadata.py update Asymworks_Template.kicad_pro
ASSY_NUMBER=$(${PYTHON} kibot/scripts/metadata.py print AssemblyNumber)
echo
echo "Initialized ${ASSY_NUMBER}"
# Rename the KiCad Project based on the directory name
git mv -q Asymworks_Template.kicad_dru "${ASSY_NUMBER}.kicad_dru"
git mv -q Asymworks_Template.kicad_pro "${ASSY_NUMBER}.kicad_pro"
git mv -q Asymworks_Template.kicad_sch "${ASSY_NUMBER}.kicad_sch"
git mv -q Asymworks_Template.kicad_pcb "${ASSY_NUMBER}.kicad_pcb"
git mv --no-verbose Asymworks_Template.kicad_dru "${ASSY_NUMBER}.kicad_dru"
git mv --no-verbose Asymworks_Template.kicad_pro "${ASSY_NUMBER}.kicad_pro"
git mv --no-verbose Asymworks_Template.kicad_sch "${ASSY_NUMBER}.kicad_sch"
git mv --no-verbose Asymworks_Template.kicad_pcb "${ASSY_NUMBER}.kicad_pcb"
echo "Renamed project to \"${ASSY_NUMBER}.kicad_pro\""
# Push the Develpment Branch to Gitea
git add -q project.json
git add --no-verbose project.json
git commit -aq -m 'Initialize Project'
git push -qu origin dev
git push --no-verbose -qu origin dev >/dev/null
echo "Initialized and Committed Project"
# Bootstrap Complete

View File

@@ -0,0 +1,99 @@
# KiBot BOM Output Group
kibot:
version: 1
groups:
- name: bom
outputs:
- @NAME_CSV_BOM_OUTPUT@
- @NAME_HTML_BOM_OUTPUT@
- @NAME_HTML_IBOM_OUTPUT@
outputs:
- name: @NAME_CSV_BOM_OUTPUT@
comment: Bill of Materials in CSV format
type: bom
category: '@DIR@'
dir: '@DIR@'
options:
format: CSV
csv:
hide_pcb_info: true
hide_stats_info: true
group_fields: ['@MPN_FIELD@', '@IPN_FIELD@', 'Value']
columns:
- "Row"
- "Quantity Per PCB"
- "References"
- "Value"
- "Datasheet"
- "Footprint"
- "Description"
- "@IPN_FIELD@"
- "@MFG_FIELD@"
- "@MPN_FIELD@"
- "LCSC"
- name: @NAME_HTML_BOM_OUTPUT@
comment: Bill of Materials in HTML format
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@', '@IPN_FIELD@', 'Value']
columns:
- "Row"
- "Quantity Per PCB"
- "References"
- "Value"
- "Datasheet"
- "Footprint"
- "Description"
- "@IPN_FIELD@"
- "@MFG_FIELD@"
- "@MPN_FIELD@"
- "LCSC"
- name: @NAME_HTML_IBOM_OUTPUT@
comment: Interactive Bill of Materials in HTML Format
type: ibom
dir: '@DIR@'
category: '@DIR@'
options:
# extra_data_file: '%F.net'
dark_mode: true
show_fields: 'Value,Footprint,@IPN_FIELD@,@MPN_FIELD@'
group_fields: 'Value,@IPN_FIELD@,@MPN_FIELD@'
show_fabrication: true
highlight_pin1: "selected"
exclude_filter: '@EXCLUDE_FILTER@'
hide_excluded: true
forced_name: '@IBOM_TITLE@'
mark_when_checked: 'Placed'
...
definitions:
# Output Directory
DIR: +manufacturing/assembly
# Output Names
NAME_CSV_BOM_OUTPUT: csv_bom
NAME_HTML_BOM_OUTPUT: html_bom
NAME_HTML_IBOM_OUTPUT: html_bom_interactive
# BOM Configuration
IPN_FIELD: 'Asymworks IPN'
MFG_FIELD: 'Manufacturer PN'
MPN_FIELD: 'Manufacturer'
IBOM_TITLE: ''
EXCLUDE_FILTER: exclude_testpoints

View File

@@ -0,0 +1,55 @@
# KiBot Drawing Notes Output Group
kibot:
version: 1
groups:
- name: notes
outputs:
- @NAME_TXT_SCH_NOTES_OUTPUT@
- @NAME_TXT_FAB_NOTES_OUTPUT@
- @NAME_TXT_ASSY_NOTES_OUTPUT@
import:
- file: outputs/kibot_out_txt_report.yaml
definitions:
NAME: @NAME_TXT_SCH_NOTES_OUTPUT@
COMMENT: Schematic notes in TXT format
DIR: @SCHEMATIC_DIR@
OUTPUT_ID: schematic_notes
TEMPLATE: @SCHEMATIC_NOTES_TEMPLATE@
- file: outputs/kibot_out_txt_report.yaml
definitions:
NAME: @NAME_TXT_FAB_NOTES_OUTPUT@
COMMENT: Fabrication notes in TXT format
DIR: @FABRICATION_DIR@
OUTPUT_ID: fabrication_notes
TEMPLATE: @FABRICATION_NOTES_TEMPLATE@
- file: outputs/kibot_out_txt_report.yaml
definitions:
NAME: @NAME_TXT_ASSY_NOTES_OUTPUT@
COMMENT: Assembly notes in TXT format
DIR: @ASSEMBLY_DIR@
OUTPUT_ID: assembly_notes
TEMPLATE: @ASSEMBLY_NOTES_TEMPLATE@
...
definitions:
# Directories
SCHEMATIC_DIR: schematic
FABRICATION_DIR: manufacturing/fabrication
ASSEMBLY_DIR: manufacturing/assembly
# Output Names
NAME_TXT_SCH_NOTES_OUTPUT: txt_schematic_notes
NAME_TXT_FAB_NOTES_OUTPUT: txt_fabrication_notes
NAME_TXT_ASSY_NOTES_OUTPUT: txt_assembly_notes
# Drawing Note Configuration
SCHEMATIC_NOTES_TEMPLATE: notes/schematic.txt
FABRICATION_NOTES_TEMPLATE: notes/fabrication.txt
ASSEMBLY_NOTES_TEMPLATE: notes/assembly.txt

View File

@@ -0,0 +1,144 @@
# KiBot Render Output Group
kibot:
version: 1
groups:
- name: renders
outputs:
- @NAME_PCBDRAW_2D_TOP_PCB_OUTPUT@
- @NAME_PCBDRAW_2D_BOT_PCB_OUTPUT@
- @NAME_BLENDER_3D_TOP_OUTPUT@
- @NAME_BLENDER_3D_BOT_OUTPUT@
- @NAME_BLENDER_3D_ANGLED_TOP_OUTPUT@
- @NAME_BLENDER_3D_ANGLED_BOT_OUTPUT@
import:
# PCB 2D Renders (Bare Board) ------------------------------------------
- file: outputs/kibot_out_pcbdraw.yaml
definitions:
NAME: @NAME_PCBDRAW_2D_TOP_PCB_OUTPUT@
COMMENT: PCB 2D Render (Top)
DIR: @DIR@
FORMAT: svg
BOTTOM: false
COMPONENTS: none
- file: outputs/kibot_out_pcbdraw.yaml
definitions:
NAME: @NAME_PCBDRAW_2D_BOT_PCB_OUTPUT@
COMMENT: PCB 2D Render (Bottom)
DIR: @DIR@
FORMAT: svg
BOTTOM: true
COMPONENTS: none
# PCBA 3D Renders (Populated Board; Blender) -------------------------------
- file: outputs/kibot_out_blender.yaml
definitions:
NAME: @NAME_BLENDER_3D_TOP_OUTPUT@
COMMENT: High Quality 3D Render (Top)
DIR: @DIR@
VIEW: top
ROTATE_X: 0
ROTATE_Y: 0
ROTATE_Z: 0
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @BLENDER_DNF_FILTER@
DIFFUSE_RADIUS: @BLENDER_DIFFUSE_RADIUS@
DIFFUSE_HEIGHT: @BLENDER_DIFFUSE_HEIGHT@
DIFFUSE_LIGHT: 0.7
ACCENT_LIGHT: 0.1
SPOT_LIGHT: 0.1
- file: outputs/kibot_out_blender.yaml
definitions:
NAME: @NAME_BLENDER_3D_BOT_OUTPUT@
COMMENT: High Quality 3D Render (Bottom)
DIR: @DIR@
VIEW: bottom
ROTATE_X: 0
ROTATE_Y: 0
ROTATE_Z: 0
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @BLENDER_DNF_FILTER@
DIFFUSE_RADIUS: @BLENDER_DIFFUSE_RADIUS@
DIFFUSE_HEIGHT: @BLENDER_DIFFUSE_HEIGHT@
DIFFUSE_LIGHT: 0.7
ACCENT_LIGHT: 0.1
SPOT_LIGHT: 0.1
- file: outputs/kibot_out_blender.yaml
definitions:
NAME: @NAME_BLENDER_3D_ANGLED_TOP_OUTPUT@
COMMENT: High Quality 3D Render (Angled Top)
DIR: @DIR@
VIEW: top
ROTATE_X: @BLENDER_TOP_ROT_X@
ROTATE_Y: @BLENDER_TOP_ROT_Y@
ROTATE_Z: @BLENDER_TOP_ROT_Z@
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @BLENDER_DNF_FILTER@
DIFFUSE_RADIUS: @BLENDER_DIFFUSE_RADIUS@
DIFFUSE_HEIGHT: @BLENDER_DIFFUSE_HEIGHT@
DIFFUSE_LIGHT: 0.4
ACCENT_LIGHT: 0.1
SPOT_LIGHT: 2.0
- file: outputs/kibot_out_blender.yaml
definitions:
NAME: @NAME_BLENDER_3D_ANGLED_BOT_OUTPUT@
COMMENT: High Quality 3D Render (Angled Bottom)
DIR: @DIR@
VIEW: bottom
ROTATE_X: @BLENDER_BOT_ROT_X@
ROTATE_Y: @BLENDER_BOT_ROT_Y@
ROTATE_Z: @BLENDER_BOT_ROT_Z@
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @BLENDER_DNF_FILTER@
DIFFUSE_RADIUS: @BLENDER_DIFFUSE_RADIUS@
DIFFUSE_HEIGHT: @BLENDER_DIFFUSE_HEIGHT@
DIFFUSE_LIGHT: 0.4
ACCENT_LIGHT: 0.1
SPOT_LIGHT: 2.0
...
definitions:
# Directories
DIR: +renders
# Output Names
NAME_PCBDRAW_2D_TOP_PCB_OUTPUT: pcbdraw_top
NAME_PCBDRAW_2D_BOT_PCB_OUTPUT: pcbdraw_bottom
NAME_BLENDER_3D_TOP_OUTPUT: blender_3d_top
NAME_BLENDER_3D_BOT_OUTPUT: blender_3d_bottom
NAME_BLENDER_3D_ANGLED_TOP_OUTPUT: blender_3d_angled_top
NAME_BLENDER_3D_ANGLED_BOT_OUTPUT: blender_3d_angled_bottom
# Blender Configuration
BLENDER_DNF_FILTER: _kibom_dnf_Config
BLENDER_SAMPLES: 2
BLENDER_TOP_ROT_X: 30
BLENDER_TOP_ROT_Y: 10
BLENDER_TOP_ROT_Z: 10
BLENDER_BOT_ROT_X: -30
BLENDER_BOT_ROT_Y: 10
BLENDER_BOT_ROT_Z: 10
BLENDER_RESOLUTION_X: 1500
BLENDER_RESOLUTION_Y: 1500
BLENDER_TEXTURE_DPI: 1031.0
BLENDER_DIFFUSE_HEIGHT: 10.0
BLENDER_DIFFUSE_RADIUS: 6.0

View File

@@ -0,0 +1,93 @@
# KiBot Drawing Tables Output Group
kibot:
version: 1
groups:
- name: tables
outputs:
- @NAME_CSV_IMPEDANCE_TABLE_OUTPUT@
- @NAME_CSV_COMP_COUNT_OUPUT@
- @NAME_CSV_DRILL_TABLE_OUTPUT@
- @NAME_CSV_TP_OUTPUT@
- @NAME_CSV_TP_TOP_OUTPUT@
- @NAME_CSV_TP_BOTTOM_OUTPUT@
import:
# Impedance and Component Count Reports
- file: outputs/kibot_out_csv_report.yaml
definitions:
NAME: @NAME_CSV_IMPEDANCE_TABLE_OUTPUT@
COMMENT: Impedance Table in CSV format
DIR: @FABRICATION_DIR@
OUTPUT_ID: impedance_table
TEMPLATE: @IMPEDANCE_TABLE_TEMPLATE@
- file: outputs/kibot_out_csv_report.yaml
definitions:
NAME: @NAME_CSV_COMP_COUNT_OUPUT@
COMMENT: Component Report in CSV format
DIR: @ASSEMBLY_DIR@
OUTPUT_ID: components_count
TEMPLATE: total_components
# CSV Test Point Files
- file: outputs/kibot_out_csv_testpoints.yaml
definitions:
NAME: @NAME_CSV_TP_OUTPUT@
COMMENT: Testpoint report in CSV format
DIR: @TESTPOINTS_DIR@
EXCLUDE_FILTER: @FILT_TP_ONLY@
- file: outputs/kibot_out_csv_testpoints_simple.yaml
definitions:
NAME: @NAME_CSV_TP_TOP_OUTPUT@
COMMENT: Top testpoint report in CSV format
DIR: @TESTPOINTS_DIR@
SUFFIX: -top
EXCLUDE_FILTER: @FILT_TP_TOP_ONLY@
- file: outputs/kibot_out_csv_testpoints_simple.yaml
definitions:
NAME: @NAME_CSV_TP_BOTTOM_OUTPUT@
COMMENT: Bottom testpoint report in CSV format
DIR: @TESTPOINTS_DIR@
SUFFIX: -bottom
EXCLUDE_FILTER: @FILT_TP_BOTTOM_ONLY@
outputs:
- name: @NAME_CSV_DRILL_TABLE_OUTPUT@
comment: Drill Table in CSV format
type: excellon
category: '@DRILL_TABLE_DIR@'
dir: '@DRILL_TABLE_DIR@'
options:
generate_drill_files: false
table:
unify_pth_and_npth: '@DRILL_TABLE_UNIFY_PTH_NPTH@'
group_slots_and_round_holes: @DRILL_TABLE_GROUP_ROUND_SLOTS@
...
definitions:
# Directories
FABRICATION_DIR: manufacturing/fabrication
DRILL_TABLE_DIR: manufacturing/fabrication/drill-tables
ASSEMBLY_DIR: manufacturing/assembly
TESTPOINTS_DIR: test/testpoints
# Output Names
NAME_CSV_IMPEDANCE_TABLE_OUTPUT: csv_impedance_table
NAME_CSV_COMP_COUNT_OUPUT: csv_comp_count
NAME_CSV_DRILL_TABLE_OUTPUT: csv_drill_table
NAME_CSV_TP_OUTPUT: csv_testpoints
NAME_CSV_TP_TOP_OUTPUT: csv_testpoints_top
NAME_CSV_TP_BOTTOM_OUTPUT: csv_testpoints_bottom
# Table Configuration
IMPEDANCE_TABLE_TEMPLATE: notes/impedance-table.txt
DRILL_TABLE_UNIFY_PTH_NPTH: 'yes'
DRILL_TABLE_GROUP_ROUND_SLOTS: True
FILT_TP_ONLY: only_testpoints
FILT_TP_TOP_ONLY: only_testpoints_top
FILT_TP_BOTTOM_ONLY: only_testpoints_bottom

View File

@@ -16,16 +16,11 @@ groups:
# Pre-Process Group (generates Notes and Netlist for set_text_variables) ---
- name: preprocess_group
outputs:
- @NETLIST_OUTPUT@
- @TXT_SCH_NOTES_OUTPUT@
- @TXT_FAB_NOTES_OUTPUT@
- @TXT_ASSY_NOTES_OUTPUT@
- tables
- notes
# Draft Outputs Group (used in DRAFT state only) ---------------------------
- name: draft_group
outputs:
- @NETLIST_OUTPUT@
- @TXT_SCH_NOTES_OUTPUT@
- @PDF_SCHEMATIC_OUTPUT@
- @CSV_BOM_OUTPUT@
@@ -42,21 +37,6 @@ groups:
- panels
- assembly
- @PDF_SCHEMATIC_OUTPUT@
- @HTML_NAV_RES_OUTPUT@
# All Outputs Group, including KiRi (not enabled by default) ---------------
- name: all_group_kiri
outputs:
- bom
- renders
- models
- fab
- jlcpcb
- panels
- assembly
- @PDF_SCHEMATIC_OUTPUT@
- @HTML_KIRI_OUTPUT@
- @HTML_NAV_RES_OUTPUT@
# Panel Fabrication Outputs Group (not used in DRAFT state) ----------------
- name: panel_fab_jlcpcb_group
@@ -64,31 +44,6 @@ groups:
# Output Sub-Groups ========================================================
# Bill of Material Outputs -------------------------------------------------
- name: bom
outputs:
- @CSV_BOM_OUTPUT@
- @HTML_BOM_OUTPUT@
- @HTML_IBOM_OUTPUT@
# PCB Render Outputs -------------------------------------------------------
- name: renders
outputs:
- @PCBDRAW_2D_TOP_PCB_OUTPUT@
- @PCBDRAW_2D_BOT_PCB_OUTPUT@
- @BLENDER_3D_TOP@
- @BLENDER_3D_BOT@
- @BLENDER_3D_ANGLED_TOP@
- @BLENDER_3D_ANGLED_BOT@
# KiCad 3D Viewer Renders (render_3d) are currently disabled as they do
# not look very good in KiCad 9 and they cause a warning in the KiBot
# output.
# - @PNG_3D_VIEWER_TOP@
# - @PNG_3D_VIEWER_BOT@
# - @PNG_3D_VIEWER_ANGLED_TOP@
# - @PNG_3D_VIEWER_ANGLED_BOT@
# PCB 3d Model Outputs -----------------------------------------------------
- name: models
outputs:
@@ -98,6 +53,7 @@ groups:
# Fabrication Outputs ------------------------------------------------------
- name: fab
outputs:
- tables
- @GERBER_OUTPUT@
- @EXCELLON_DRILL_OUTPUT@
- @ODB_OUTPUT@
@@ -105,19 +61,6 @@ groups:
- @PDF_FABRICATION_OUTPUT@
- @ZIP_COMPRESS_FAB_OUTPUT@
- name: tables
outputs:
- @CSV_COMP_COUNT_OUPUT@
- @CSV_IMPEDANCE_TABLE_OUTPUT@
- @CSV_DRILL_TABLE_OUTPUT@
- testpoints
- name: testpoints
outputs:
- @CSV_TP_OUTPUT@
- @CSV_TP_TOP_OUTPUT@
- @CSV_TP_BOTTOM_OUTPUT@
# JLCPCB Fabrication and Assembly Outputs ----------------------------------
- name: jlcpcb
outputs:
@@ -150,73 +93,68 @@ import:
# Filters ==================================================================
- file: kibot_filt_field_rename.yaml
- file: filters/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
- file: filters/kibot_filt_testpoints.yaml
definitions:
NAME: @FILT_TP_ONLY@
COMMENT: Include only testpoints
- file: kibot_filt_exclude_testpoints.yaml
- file: filters/kibot_filt_exclude_testpoints.yaml
definitions:
NAME: @FILT_TP_EXCLUDE@
COMMENT: Exclude only testpoints
- file: kibot_filt_testpoints.yaml
- file: filters/kibot_filt_testpoints.yaml
definitions:
NAME: @FILT_TP_TOP_ONLY@
COMMENT: Select only top testpoints
EXCLUDE_BOTTOM: true
EXCLUDE_REFS: "@TP_EXCLUDE_REFS@"
- file: kibot_filt_testpoints.yaml
- file: filters/kibot_filt_testpoints.yaml
definitions:
NAME: @FILT_TP_BOTTOM_ONLY@
COMMENT: Select only bottom testpoints
EXCLUDE_TOP: true
EXCLUDE_REFS: "@TP_EXCLUDE_REFS@"
- file: kibot_filt_lcsc_parts.yaml
- file: filters/kibot_filt_lcsc_parts.yaml
definitions:
NAME: @FILT_LCSC_PARTS@
COMMENT: Only parts with LCSC Part Number
# Preflights ===============================================================
- file: kibot_pre_set_text_variables.yaml
- file: preflights/kibot_pre_set_text_variables.yaml
definitions:
PROJECT_CODE: @PROJECT_CODE@
ASSEMBLY_NUMBER: @ASSEMBLY_NUMBER@
ASSEMBLY_NAME: @ASSEMBLY_NAME@
COMPANY: @COMPANY@
DESIGNER: @DESIGNER@
SCRIPTS_DIR: @SCRIPTS_DIR@
FABRICATION_DIR: @FABRICATION_DIR@
ASSEMBLY_DIR: @ASSEMBLY_DIR@
# Generate ERC Report
- file: kibot_pre_erc_report.yaml
- file: preflights/kibot_pre_erc_report.yaml
definitions:
DIR: @REPORT_DIR@
# Generate DRC Report
- file: kibot_pre_drc_report.yaml
- file: preflights/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
- file: preflights/kibot_pre_draw_stackup.yaml
definitions:
GERBER_OUTPUT: @GERBER_OUTPUT@
NOTE: @STACKUP_TABLE_NOTE@
# Include tables for PCB and Assembly Drawings
- file: kibot_pre_include_table.yaml
- file: preflights/kibot_pre_include_table.yaml
definitions:
NAME_TP_TOP: @CSV_TP_TOP_OUTPUT@
NAME_TP_BOTTOM: @CSV_TP_BOTTOM_OUTPUT@
@@ -224,13 +162,7 @@ import:
NAME_CSV_DRILL_TABLE: @CSV_DRILL_TABLE_OUTPUT@
NAME_IMPEDANCE_TABLE: @CSV_IMPEDANCE_TABLE_OUTPUT@
# Generated Outputs ========================================================
# Schematic Netlist --------------------------------------------------------
- file: kibot_out_netlist.yaml
definitions:
NAME: @NETLIST_OUTPUT@
COMMENT: Schematic netlist in KiCad format
# Individual Outputs =======================================================
# Drawings in PDF format ---------------------------------------------------
- file: kibot_out_pdf_schematic.yaml
@@ -242,200 +174,6 @@ import:
DEFAULT_FONT: 'Arial Narrow'
SHEET_WKS: @SHEET_WKS_SCH@
# Bills of Materials (BOMs) ------------------------------------------------
- file: kibot_out_csv_bom.yaml
definitions:
NAME: @CSV_BOM_OUTPUT@
COMMENT: Bill of Materials in CSV format
DIR: @ASSEMBLY_DIR@
IPN_FIELD: @IPN_FIELD@
MPN_FIELD: @MPN_FIELD@
MAN_FIELD: @MAN_FIELD@
- file: kibot_out_html_bom.yaml
definitions:
NAME: @HTML_BOM_OUTPUT@
COMMENT: Bill of Materials in HTML format
DIR: @ASSEMBLY_DIR@
IPN_FIELD: @IPN_FIELD@
MPN_FIELD: @MPN_FIELD@
MAN_FIELD: @MAN_FIELD@
- file: kibot_out_html_ibom.yaml
definitions:
NAME: @HTML_IBOM_OUTPUT@
COMMENT: Bill of Materials in HTML format
DIR: @ASSEMBLY_DIR@
IPN_FIELD: @IPN_FIELD@
MPN_FIELD: @MPN_FIELD@
MAN_FIELD: @MAN_FIELD@
# Generate Webpage with Diff's ---------------------------------------------
- file: kibot_out_html_kiri.yaml
definitions:
NAME: @HTML_KIRI_OUTPUT@
COMMENT: KiRI webpage
DIR: kiri
# Generate HTML Navigation of Outputs --------------------------------------
- file: kibot_out_navigate_results.yaml
definitions:
NAME: @HTML_NAV_RES_OUTPUT@
COMMENT: Results webpage in HTML format
DIR: html
TITLE: '@ASSEMBLY_NUMBER@ (@ASSEMBLY_NAME@)'
# LOGO: @LOGO@
# LOGO_URL: @GIT_URL@
# PCB 2D Renders (Bare Board) ------------------------------------------
- file: kibot_out_pcbdraw.yaml
definitions:
NAME: @PCBDRAW_2D_TOP_PCB_OUTPUT@
COMMENT: PCB 2D Render (Top)
DIR: @RENDER_DIR@
FORMAT: svg
BOTTOM: false
COMPONENTS: none
- file: kibot_out_pcbdraw.yaml
definitions:
NAME: @PCBDRAW_2D_BOT_PCB_OUTPUT@
COMMENT: PCB 2D Render (Bottom)
DIR: @RENDER_DIR@
FORMAT: svg
BOTTOM: true
COMPONENTS: none
# PCBA 3D Renders (Populated Board; KiCad Viewer) --------------------------
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_TOP@
COMMENT: Top 3D viewer PCB render in PNG format
DIR: @RENDER_DIR@
SUFFIX: top
VIEW: top
KEY_COLOR: '@KEY_COLOR@'
RAYTRACING: false
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_BOT@
COMMENT: Bottom 3D viewer PCB render in PNG format
DIR: @RENDER_DIR@
SUFFIX: bottom
VIEW: bottom
KEY_COLOR: '@KEY_COLOR@'
RAYTRACING: false
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_ANGLED_TOP@
COMMENT: Top (angled) 3D viewer PCB render in PNG format
DIR: @RENDER_DIR@
SUFFIX: angled_top
VIEW: top
ROTATE_X: @3D_VIEWER_ROT_X@
ROTATE_Y: @3D_VIEWER_ROT_Y@
ROTATE_Z: @3D_VIEWER_ROT_Z@
ZOOM: @3D_VIEWER_ZOOM@
KEY_COLOR: '@KEY_COLOR@'
RAYTRACING: false
- file: kibot_out_png_3d_viewer.yaml
definitions:
NAME: @PNG_3D_VIEWER_ANGLED_BOT@
COMMENT: Bottom (angled) 3D viewer PCB render in PNG format
DIR: @RENDER_DIR@
SUFFIX: angled_bottom
VIEW: bottom
ROTATE_X: @3D_VIEWER_ROT_X@
ROTATE_Y: @3D_VIEWER_ROT_Y@
ROTATE_Z: -@3D_VIEWER_ROT_Z@
ZOOM: @3D_VIEWER_ZOOM@
KEY_COLOR: '@KEY_COLOR@'
RAYTRACING: false
# PCBA 3D Renders (Populated Board; Blender) -------------------------------
- file: kibot_out_blender.yaml
definitions:
NAME: @BLENDER_3D_TOP@
COMMENT: High Quality 3D Render (Top)
DIR: @RENDER_DIR@
VIEW: top
ROTATE_X: 0
ROTATE_Y: 0
ROTATE_Z: 0
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @RENDER_DNF_FILTER@
DIFFUSE_RADIUS: @BLENDER_DIFFUSE_RADIUS@
DIFFUSE_HEIGHT: @BLENDER_DIFFUSE_HEIGHT@
DIFFUSE_LIGHT: 0.7
ACCENT_LIGHT: 0.1
SPOT_LIGHT: 0.1
- file: kibot_out_blender.yaml
definitions:
NAME: @BLENDER_3D_BOT@
COMMENT: High Quality 3D Render (Bottom)
DIR: @RENDER_DIR@
VIEW: bottom
ROTATE_X: 0
ROTATE_Y: 0
ROTATE_Z: 0
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @RENDER_DNF_FILTER@
DIFFUSE_RADIUS: @BLENDER_DIFFUSE_RADIUS@
DIFFUSE_HEIGHT: @BLENDER_DIFFUSE_HEIGHT@
DIFFUSE_LIGHT: 0.7
ACCENT_LIGHT: 0.1
SPOT_LIGHT: 0.1
- file: kibot_out_blender.yaml
definitions:
NAME: @BLENDER_3D_ANGLED_TOP@
COMMENT: High Quality 3D Render (Angled Top)
DIR: @RENDER_DIR@
VIEW: top
ROTATE_X: @BLENDER_ROT_X@
ROTATE_Y: @BLENDER_ROT_Y@
ROTATE_Z: @BLENDER_ROT_Z@
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @RENDER_DNF_FILTER@
DIFFUSE_RADIUS: @BLENDER_DIFFUSE_RADIUS@
DIFFUSE_HEIGHT: @BLENDER_DIFFUSE_HEIGHT@
DIFFUSE_LIGHT: 0.4
ACCENT_LIGHT: 0.1
SPOT_LIGHT: 2.0
- file: kibot_out_blender.yaml
definitions:
NAME: @BLENDER_3D_ANGLED_BOT@
COMMENT: High Quality 3D Render (Angled Bottom)
DIR: @RENDER_DIR@
VIEW: bottom
ROTATE_X: -@BLENDER_ROT_X@
ROTATE_Y: @BLENDER_ROT_Y@
ROTATE_Z: @BLENDER_ROT_Z@
SAMPLES: @BLENDER_SAMPLES@
RESOLUTION_X: @BLENDER_RESOLUTION_X@
RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
DNF_FILTER: @RENDER_DNF_FILTER@
DIFFUSE_RADIUS: @BLENDER_DIFFUSE_RADIUS@
DIFFUSE_HEIGHT: @BLENDER_DIFFUSE_HEIGHT@
DIFFUSE_LIGHT: 0.4
ACCENT_LIGHT: 0.1
SPOT_LIGHT: 2.0
# STEP File ----------------------------------------------------------------
- file: kibot_out_3d_model.yaml
definitions:
@@ -493,15 +231,6 @@ import:
PTH_NPTH: @GROUP_PTH_NPTH_DRL@
MAP_FORMAT: pdf
# CSV Drill Table
- file: kibot_out_csv_drill_table.yaml
definitions:
NAME: @CSV_DRILL_TABLE_OUTPUT@
COMMENT: Drill Table in CSV format
DIR: @FAB_DRILL_TABLES_DIR@
PTH_NPTH: '@GROUP_PTH_NPTH@'
GROUP_ROUND_SLOTS: @GROUP_ROUND_SLOTS@
# CSV Component Placement File
- file: kibot_out_csv_position.yaml
definitions:
@@ -509,30 +238,6 @@ import:
COMMENT: Position file in CSV format
DIR: @ASSEMBLY_DIR@
# CSV Test Point Files
- file: kibot_out_csv_testpoints.yaml
definitions:
NAME: @CSV_TP_OUTPUT@
COMMENT: Testpoint report in CSV format
DIR: @TESTPOINTS_DIR@
EXCLUDE_FILTER: @FILT_TP_ONLY@
- file: kibot_out_csv_testpoints_simple.yaml
definitions:
NAME: @CSV_TP_TOP_OUTPUT@
COMMENT: Top testpoint report in CSV format
DIR: @TESTPOINTS_DIR@
SUFFIX: -top
EXCLUDE_FILTER: @FILT_TP_TOP_ONLY@
- file: kibot_out_csv_testpoints_simple.yaml
definitions:
NAME: @CSV_TP_BOTTOM_OUTPUT@
COMMENT: Bottom testpoint report in CSV format
DIR: @TESTPOINTS_DIR@
SUFFIX: -bottom
EXCLUDE_FILTER: @FILT_TP_BOTTOM_ONLY@
# Fabrication and Assembly Drawings
- file: kibot_out_pdf_fabrication.yaml
definitions:
@@ -612,46 +317,6 @@ import:
DIR: @JLCPCB_ASSY_DIR@
EXCLUDE_FILTER: @FILT_LCSC_PARTS@
# Notes and Reports --------------------------------------------------------
- file: kibot_out_csv_report.yaml
definitions:
NAME: @CSV_COMP_COUNT_OUPUT@
COMMENT: Component report (count) in CSV format
DIR: @ASSEMBLY_DIR@
OUTPUT_ID: components_count
TEMPLATE: total_components
- file: kibot_out_csv_report.yaml
definitions:
NAME: @CSV_IMPEDANCE_TABLE_OUTPUT@
COMMENT: Impedance table in CSV format
DIR: @FABRICATION_DIR@
OUTPUT_ID: impedance_table
TEMPLATE: @NOTES_DIR@/impedance_table.txt
- file: kibot_out_txt_report.yaml
definitions:
NAME: @TXT_SCH_NOTES_OUTPUT@
COMMENT: Schematic notes in TXT format
DIR: @SCHEMATIC_DIR@
OUTPUT_ID: schematic_notes
TEMPLATE: @NOTES_DIR@/schematic_notes.txt
- file: kibot_out_txt_report.yaml
definitions:
NAME: @TXT_FAB_NOTES_OUTPUT@
COMMENT: Fabrication notes in TXT format
DIR: @FABRICATION_DIR@
OUTPUT_ID: fabrication_notes
TEMPLATE: @NOTES_DIR@/fabrication_notes.txt
- file: kibot_out_txt_report.yaml
definitions:
NAME: @TXT_ASSY_NOTES_OUTPUT@
COMMENT: Assembly notes in TXT format
DIR: @ASSEMBLY_DIR@
OUTPUT_ID: assembly_notes
TEMPLATE: @NOTES_DIR@/assembly_notes.txt
# Panelization Outputs -----------------------------------------------------
- file: kibot_out_panelize.yaml
@@ -661,27 +326,90 @@ import:
CONFIG: '@PANEL_800_CONFIG@'
TITLE: '@PANEL_800_TITLE@'
# Output Groups ============================================================
# Bills of Materials (BOMs) ------------------------------------------------
- file: kibot_grp_bom.yaml
definitions:
DIR: @ASSEMBLY_DIR@
NAME_CSV_BOM_OUTPUT: @CSV_BOM_OUTPUT@
NAME_HTML_BOM_OUTPUT: @HTML_BOM_OUTPUT@
NAME_HTML_IBOM_OUTPUT: @HTML_IBOM_OUTPUT@
IPN_FIELD: @IPN_FIELD@
MPN_FIELD: @MPN_FIELD@
MAN_FIELD: @MAN_FIELD@
# Drawing Notes ------------------------------------------------------------
- file: kibot_grp_notes.yaml
definitions:
SCHEMATIC_DIR: @SCHEMATIC_DIR@
FABRICATION_DIR: @FABRICATION_DIR@
ASSEMBLY_DIR: @ASSEMBLY_DIR@
NAME_TXT_SCH_NOTES_OUTPUT: @TXT_SCH_NOTES_OUTPUT@
NAME_TXT_FAB_NOTES_OUTPUT: @TXT_FAB_NOTES_OUTPUT@
NAME_TXT_ASSY_NOTES_OUTPUT: @TXT_ASSY_NOTES_OUTPUT@
SCHEMATIC_NOTES_TEMPLATE: notes/schematic_notes.txt
FABRICATION_NOTES_TEMPLATE: notes/fabrication_notes.txt
ASSEMBLY_NOTES_TEMPLATE: notes/assembly_notes.txt
# Drawing Tables -----------------------------------------------------------
- file: kibot_grp_tables.yaml
definitions:
FABRICATION_DIR: @FABRICATION_DIR@
DRILL_TABLE_DIR: @DRILL_TABLE_DIR@
ASSEMBLY_DIR: @ASSEMBLY_DIR@
TESTPOINTS_DIR: @TESTPOINTS_DIR@
NAME_CSV_IMPEDANCE_TABLE_OUTPUT: @CSV_IMPEDANCE_TABLE_OUTPUT@
NAME_CSV_COMP_COUNT_OUPUT: @CSV_COMP_COUNT_OUPUT@
NAME_CSV_DRILL_TABLE_OUTPUT: @CSV_DRILL_TABLE_OUTPUT@
NAME_CSV_TP_OUTPUT: @CSV_TP_OUTPUT@
NAME_CSV_TP_TOP_OUTPUT: @CSV_TP_TOP_OUTPUT@
NAME_CSV_TP_BOTTOM_OUTPUT: @CSV_TP_BOTTOM_OUTPUT@
IMPEDANCE_TABLE_TEMPLATE: notes/impedance_table.txt
DRILL_TABLE_UNIFY_PTH_NPTH: '@GROUP_PTH_NPTH@'
DRILL_TABLE_GROUP_ROUND_SLOTS: @GROUP_ROUND_SLOTS@
FILT_TP_ONLY: @FILT_TP_ONLY@
FILT_TP_TOP_ONLY: @FILT_TP_TOP_ONLY@
FILT_TP_BOTTOM_ONLY: @FILT_TP_BOTTOM_ONLY@
# Renders ------------------------------------------------------------------
- file: kibot_grp_renders.yaml
definitions:
DIR: @RENDER_DIR@
NAME_PCBDRAW_2D_TOP_PCB_OUTPUT: @PCBDRAW_2D_TOP_PCB_OUTPUT@
NAME_PCBDRAW_2D_BOT_PCB_OUTPUT: @PCBDRAW_2D_BOT_PCB_OUTPUT@
NAME_BLENDER_3D_TOP_OUTPUT: @BLENDER_3D_TOP_OUTPUT@
NAME_BLENDER_3D_BOT_OUTPUT: @BLENDER_3D_BOT_OUTPUT@
NAME_BLENDER_3D_ANGLED_TOP_OUTPUT: @BLENDER_3D_ANGLED_TOP_OUTPUT@
NAME_BLENDER_3D_ANGLED_BOT_OUTPUT: @BLENDER_3D_ANGLED_BOT_OUTPUT@
BLENDER_DNF_FILTER: @BLENDER_DNF_FILTER@
BLENDER_SAMPLES: @BLENDER_SAMPLES@
BLENDER_TOP_ROT_X: @BLENDER_ROT_X@
BLENDER_TOP_ROT_Y: @BLENDER_ROT_Y@
BLENDER_TOP_ROT_Z: @BLENDER_ROT_Z@
BLENDER_BOT_ROT_X: -@BLENDER_ROT_X@
BLENDER_BOT_ROT_Y: @BLENDER_ROT_Y@
BLENDER_BOT_ROT_Z: @BLENDER_ROT_Z@
BLENDER_RESOLUTION_X: @BLENDER_RESOLUTION_X@
BLENDER_RESOLUTION_Y: @BLENDER_RESOLUTION_Y@
BLENDER_TEXTURE_DPI: @BLENDER_TEXTURE_DPI@
BLENDER_DIFFUSE_HEIGHT: @BLENDER_DIFFUSE_HEIGHT@
BLENDER_DIFFUSE_RADIUS: @BLENDER_DIFFUSE_RADIUS@
# ============================================================================
# Definitions
...
definitions:
# Project Metadata =========================================================
PROJECT_CODE: P99
ASSEMBLY_NUMBER: A99-9000
ASSEMBLY_NAME: Assembly Name
GIT_URL: /jkrauss/Test_4
COMPANY: Asymworks, LLC
DESIGNER: JPK
DWG_NUMBER_SCH: S99-9000
DWG_TITLE_SCH: Schematic, Assembly Name
DWG_NUMBER_PCB: P99-9000
DWG_TITLE_PCB: PCB, Assembly Name
DWG_TITLE_ASSY: PCB Assembly, Assembly Name
# Panel Configurations -----------------------------------------------------
PANEL_800_OUTPUT: panel_801
PANEL_800_CONFIG: '@PANELS_DIR@/panel-800.json'
@@ -701,7 +429,7 @@ definitions:
# 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: 'yes' # for drill tables (CSV, PCB Print)
GROUP_PTH_NPTH_DRL: false # for .drl files
# Gerber Parameters ========================================================
@@ -726,13 +454,7 @@ definitions:
# 3D Render parameters =====================================================
RENDER_DNF_FILTER: _kibom_dnf_Config
3D_VIEWER_ROT_X: 2
3D_VIEWER_ROT_Y: -1
3D_VIEWER_ROT_Z: 1
3D_VIEWER_ZOOM: -1
KEY_COLOR: '#FF00FF' # Background color to remove. Use a color different from your PCB
BLENDER_DNF_FILTER: _kibom_dnf_Config
BLENDER_SAMPLES: 20 # Overridden to 2 samples for WORKING state by CI Script
BLENDER_ROT_X: 30
@@ -758,7 +480,7 @@ definitions:
ASSEMBLY_DIR: '@MANUFACTURING_DIR@/assembly'
FABRICATION_DIR: '@MANUFACTURING_DIR@/fab'
GERBERS_DIR: '@FABRICATION_DIR@/gerbers'
FAB_DRILL_TABLES_DIR: '@FABRICATION_DIR@/drill-tables'
DRILL_TABLE_DIR: '@FABRICATION_DIR@/drill-tables'
TESTING_DIR: test
TESTPOINTS_DIR: '@TESTING_DIR@/testpoints'
RESOURCES_DIR: kibot
@@ -829,15 +551,10 @@ definitions:
PCBDRAW_2D_TOP_PCB_OUTPUT: pcbdraw_top
PCBDRAW_2D_BOT_PCB_OUTPUT: pcbdraw_bottom
PNG_3D_VIEWER_TOP: png_3d_viewer_top
PNG_3D_VIEWER_BOT: png_3d_viewer_bottom
PNG_3D_VIEWER_ANGLED_TOP: png_3d_viewer_angled_top
PNG_3D_VIEWER_ANGLED_BOT: png_3d_viewer_angled_bottom
BLENDER_3D_TOP: blender_3d_top
BLENDER_3D_BOT: blender_3d_bottom
BLENDER_3D_ANGLED_TOP: blender_3d_angled_top
BLENDER_3D_ANGLED_BOT: blender_3d_angled_bottom
BLENDER_3D_TOP_OUTPUT: blender_3d_top
BLENDER_3D_BOT_OUTPUT: blender_3d_bottom
BLENDER_3D_ANGLED_TOP_OUTPUT: blender_3d_angled_top
BLENDER_3D_ANGLED_BOT_OUTPUT: blender_3d_angled_bottom
TXT_SCH_NOTES_OUTPUT: txt_schematic_notes
TXT_FAB_NOTES_OUTPUT: txt_fabrication_notes

View File

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

View File

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

View File

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

View File

@@ -1,36 +0,0 @@
# KiBot output for generating Interactive HTML BoM
# https://kibot.readthedocs.io/en/latest/configuration/outputs/ibom.html
# This output is currently somewhat buggy, and fails at odd times complaining
# about missing embedded Schematic WKS frame files.
kibot:
version: 1
outputs:
- name: @NAME@
comment: '@COMMENT@'
type: ibom
dir: '@DIR@'
category: '@DIR@'
options:
# extra_data_file: '%F.net'
dark_mode: true
show_fields: 'Value,Footprint,@IPN_FIELD@,@MPN_FIELD@'
group_fields: 'Value,@IPN_FIELD@'
show_fabrication: true
highlight_pin1: "selected"
exclude_filter: '@EXCLUDE_FILTER@'
hide_excluded: true
forced_name: '@TITLE@'
mark_when_checked: 'Placed'
...
definitions:
NAME: html_bom_interactive
COMMENT: Interactive BOM in HTML format
DIR: mfg/assembly
EXCLUDE_FILTER: exclude_testpoints
TITLE: ""
IPN_FIELD: 'Asymworks IPN'
MPN_FIELD: 'Manufacturer PN'

View File

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

View File

@@ -1,43 +0,0 @@
# 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@'
force_stackup_colors: true
orthographic: true
transparent_background: true
transparent_background_color: '@KEY_COLOR@'
transparent_background_fuzz: 40
...
definitions:
NAME: png_3d_viewer
COMMENT: 3D viewer PCB render in PNG format
DIR: renders
SUFFIX: ""
VIEW: top
ROTATE_X: 0
ROTATE_Y: 0
ROTATE_Z: 0
ZOOM: 0
HEIGHT: 2000
WIDTH: 2000
KEY_COLOR: '#FF00FF'

View File

@@ -22,45 +22,21 @@ preflight:
- variable: 'GIT_HASH'
command: 'git log -1 --format="%h"'
- variable: 'GIT_URL'
text: '@GIT_URL@'
command: 'git remote get-url origin | sed -e s"/\\.git$//g"'
# Metadata
- variable: 'PROJECT_CODE'
text: '@PROJECT_CODE@'
- variable: 'ASSEMBLY_NUMBER'
text: '@ASSEMBLY_NUMBER@'
- variable: 'ASSEMBLY_NAME'
text: '@ASSEMBLY_NAME@'
- variable: 'ASSEMBLY_SCALE'
text: '@ASSEMBLY_SCALING@'
- variable: 'DWG_NUMBER_PCB'
text: '@DWG_NUMBER_PCB@'
- variable: 'DWG_NUMBER_SCH'
text: '@DWG_NUMBER_SCH@'
- variable: 'DWG_TITLE_PCB'
text: '@DWG_TITLE_PCB@'
- variable: 'DWG_TITLE_SCH'
text: '@DWG_TITLE_SCH@'
- variable: 'DWG_TITLE_ASSY'
text: '@DWG_TITLE_ASSY@'
- variable: 'COMPANY'
text: '@COMPANY@'
- variable: 'DESIGNER'
text: '@DESIGNER@'
- variable: 'VARIANT'
text: '%V'
# Schematic notes
# Notes
- variable: 'SCHEMATIC_NOTES'
expand_in_command: true
command: '[ -f "@SCHEMATIC_DIR@/%f-schematic_notes%v.txt" ] && cat "@SCHEMATIC_DIR@/%f-schematic_notes%v.txt" || echo ""'
# Fabrication notes
- variable: 'FABRICATION_NOTES'
expand_in_command: true
command: '[ -f "@FABRICATION_DIR@/%f-fabrication_notes%v.txt" ] && cat "@FABRICATION_DIR@/%f-fabrication_notes%v.txt" || echo ""'
# Assembly notes
- variable: 'ASSEMBLY_NOTES'
expand_in_command: true
command: '[ -f "@ASSEMBLY_DIR@/%f-assembly_notes%v.txt" ] && cat "@ASSEMBLY_DIR@/%f-assembly_notes%v.txt" || echo ""'
@@ -109,24 +85,13 @@ preflight:
...
definitions:
PROJECT_CODE: ''
ASSEMBLY_NUMBER: ''
ASSEMBLY_NAME: ''
ASSEMBLY_SCALING: ''
DWG_NUMBER_SCH: ''
DWG_TITLE_SCH: ''
DWG_NUMBER_PCB: ''
DWG_TITLE_PCB: ''
DWG_TITLE_ASSY: ''
COMPANY: ''
DESIGNER: ''
REVISION: ''
RELEASE_STATE: ''
RELEASE_DATE: ''
GIT_URL: ''
SHEET_NAME_VAR: SHEET_NAME_
SCRIPTS_DIR: kibot/scripts
FABRICATION_DIR: mfg/fab
ASSEMBLY_DIR: mfg/assembly
GET_SHEET_CMD: python3 @SCRIPTS_DIR@/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p
GET_GITURL_CMD: git remote get-url origin | sed -e s'/\.git$//g'

View File

@@ -0,0 +1,11 @@
ASSEMBLY NOTES (UNLESS OTHERWISE SPECIFIED)
1) DO NOT POPULATE COMPONENTS ARE MARKED WITH A RED CROSS
2) DO NOT POPULATE COMPONENTS 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) DOT IDENTIFIES PIN #1 LOCATION AND DEVICE ORIENTATION
WHEN VIEWED FROM THE TOP.

View File

@@ -0,0 +1 @@
Row,Quantity Per PCB,References,Value,Datasheet,Footprint,Description,Asymworks IPN,Manufacturer PN,Manufacturer PN,LCSC
1 Row Quantity Per PCB References Value Datasheet Footprint Description Asymworks IPN Manufacturer PN Manufacturer PN LCSC

View File

@@ -0,0 +1,242 @@
<html>
<head>
<meta charset="UTF-8">
<title>Bill of Materials</title>
<style>
.cell-title { vertical-align: bottom; }
.cell-info { vertical-align: top; padding: 1em;}
.cell-extra-info { vertical-align: top; padding: 1em;}
.cell-stats { vertical-align: top; padding: 1em;}
.title { font-size:2.5em; font-weight: bold; }
.subtitle { font-size:1.5em; font-weight: bold; }
.h2 { font-size:1.5em; font-weight: bold; }
.td-empty0 { text-align: center; background-color: #F57676;}
.td-gen0 { text-align: center; background-color: #DCF5E4;}
.td-kicad0 { text-align: center; background-color: #F5DCA9;}
.td-user0 { text-align: center; background-color: #DCEFF5;}
.td-empty1 { text-align: center; background-color: #FF8080;}
.td-gen1 { text-align: center; background-color: #E6FFEE;}
.td-kicad1 { text-align: center; background-color: #FFE6B3;}
.td-user1 { text-align: center; background-color: #E6F9FF;}
.td-nocolor { text-align: center; }
.color-ref { margin: 25px 0; }
.color-ref th { text-align: left }
.color-ref td { padding: 5px 20px; }
.head-table { margin-bottom: 2em; }
.centered-checkmark { font-size: 30vw; text-align: center; color: green; }
.tg-sort-header::-moz-selection{background:0 0}
.tg-sort-header::selection{background:0 0}.tg-sort-header{cursor:pointer}
.tg-sort-header:after{content:'';float:right;border-width:0 5px 5px;border-style:solid;
border-color:#ffffff transparent;visibility:hidden;opacity:.6}
.tg-sort-header:hover:after{visibility:visible}
.tg-sort-asc:after,.tg-sort-asc:hover:after,.tg-sort-desc:after{visibility:visible;opacity:1}
.tg-sort-desc:after{border-bottom:none;border-width:5px 5px 0}
.content-table {
border-collapse:
collapse;
margin-top: 5px;
margin-bottom: 4em;
font-size: 0.9em;
font-family: sans-serif;
min-width: 400px;
border-radius: 5px 5px 0 0;
overflow: hidden;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
}
.content-table thead tr { background-color: #0e4e8e; color: #ffffff; text-align: left; }
.content-table th, .content-table td { padding: 12px 15px; }
.content-table tbody tr { border-bottom: 1px solid #dddddd; }
.content-table tbody tr:nth-of-type(even) { background-color: #f3f3f3; }
.content-table tbody tr:last-of-type { border-bottom: 2px solid #0e4e8e; }
.content-table * tr:hover > td { background-color: @bgl@ !important }
.content-table {
border-collapse:
collapse;
margin-top: 5px;
margin-bottom: 4em;
font-size: 0.9em;
font-family: sans-serif;
min-width: 400px;
border-radius: 5px 5px 0 0;
overflow: hidden;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
}
.content-table thead tr { background-color: @bg@; color: #ffffff; text-align: left; }
.content-table th, .content-table td { padding: 12px 15px; }
.content-table tbody tr { border-bottom: 1px solid #dddddd; }
.content-table tbody tr:nth-of-type(even) { background-color: #f3f3f3; }
.content-table tbody tr:last-of-type { border-bottom: 2px solid @bg@; }
.content-table * tr:hover > td { background-color: #3e7ebe !important }
</style>
</head>
<body>
<table class="head-table">
<tr>
<td rowspan="2">
</td>
<td colspan="2" class="cell-title">
<div class="title">Bill of Materials</div>
</td>
</tr>
<tr>
<td class="cell-info">
<b>Schematic</b>: A98-1001<br>
<b>Variant</b>: default<br>
<b>Revision</b>: NO_TAG+ (Unreleased)<br>
<b>Date</b>: 2026-03-11_01-52-46<br>
<b>KiCad Version</b>: 9.0.7+1<br>
</td>
<td class="cell-stats">
<b>Component Groups</b>: 0<br>
<b>Component Count</b>: 0 (per PCB)<br>
<b>Fitted Components</b>: 0 (per PCB)<br>
<b>Number of PCBs</b>: 1<br>
<b>Total Components</b>: 0 (for 1 PCBs)<br>
</td>
</tr>
</table>
<h2>Component Groups</h2>
<table class="content-table">
<thead>
<tr>
<th class="th-gen">Row</th>
<th class="th-gen">Quantity Per PCB</th>
<th class="th-kicad">References</th>
<th class="th-kicad">Value</th>
<th class="th-kicad">Datasheet</th>
<th class="th-kicad">Footprint</th>
<th class="th-user">Description</th>
<th class="th-user">Asymworks IPN</th>
<th class="th-user">Manufacturer PN</th>
<th class="th-user">Manufacturer PN</th>
<th class="th-user">LCSC</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<table class="color-ref">
<tr><th>Color reference for columns:</th></tr>
<tr><td class="td-kicad0">KiCad Fields (default)</td></tr>
<tr><td class="td-gen0">Generated Fields</td></tr>
<tr><td class="td-user0">User Fields</td></tr>
<tr><td class="td-empty0">Empty Fields</td></tr>
</table>
<script charset="utf-8">
var TGSort = window.TGSort || function(n) {
"use strict";
function r(n) { return n ? n.length : 0 }
function t(n, t, e, o = 0) { for (e = r(n); o < e; ++o) t(n[o], o) }
function e(n) { return n.split("").reverse().join("") }
function o(n) {
var e = n[0];
return t(n, function(n) {
for (; !n.startsWith(e);) e = e.substring(0, r(e) - 1)
}), r(e)
}
function u(n, r, e = []) {
return t(n, function(n) {
r(n) && e.push(n)
}), e
}
var a = parseFloat;
function i(n, r) {
return function(t) {
var e = "";
return t.replace(n, function(n, t, o) {
return e = t.replace(r, "") + "." + (o || "").substring(1)
}), a(e)
}
}
var s = i(/^(?:\s*)([+-]?(?:\d+)(?:,\d{3})*)(\.\d*)?$/g, /,/g),
c = i(/^(?:\s*)([+-]?(?:\d+)(?:\.\d{3})*)(,\d*)?$/g, /\./g);
function f(n) {
var t = a(n);
return !isNaN(t) && r("" + t) + 1 >= r(n) ? t : NaN
}
function d(n) {
var e = [],
o = n;
return t([f, s, c], function(u) {
var a = [],
i = [];
t(n, function(n, r) {
r = u(n), a.push(r), r || i.push(n)
}), r(i) < r(o) && (o = i, e = a)
}), r(u(o, function(n) {
return n == o[0]
})) == r(o) ? e : []
}
function v(n) {
if ("TABLE" == n.nodeName) {
for (var a = function(r) {
var e, o, u = [],
a = [];
return function n(r, e) {
e(r), t(r.childNodes, function(r) {
n(r, e)
})
}(n, function(n) {
"TR" == (o = n.nodeName) ? (e = [], u.push(e), a.push(n)) : "TD" != o && "TH" != o || e.push(n)
}), [u, a]
}(), i = a[0], s = a[1], c = r(i), f = c > 1 && r(i[0]) < r(i[1]) ? 1 : 0, v = f + 1, p = i[f], h = r(p), l = [], g = [], N = [], m = v; m < c; ++m) {
for (var T = 0; T < h; ++T) {
r(g) < h && g.push([]);
var C = i[m][T],
L = C.textContent || C.innerText || "";
g[T].push(L.trim())
}
N.push(m - v)
}
t(p, function(n, t) {
l[t] = 0;
var a = n.classList;
a.add("tg-sort-header"), n.addEventListener("click", function() {
var n = l[t];
! function() {
for (var n = 0; n < h; ++n) {
var r = p[n].classList;
r.remove("tg-sort-asc"), r.remove("tg-sort-desc"), l[n] = 0
}
}(), (n = 1 == n ? -1 : +!n) && a.add(n > 0 ? "tg-sort-asc" : "tg-sort-desc"), l[t] = n;
var i, f = g[t],
m = function(r, t) {
return n * f[r].localeCompare(f[t]) || n * (r - t)
},
T = function(n) {
var t = d(n);
if (!r(t)) {
var u = o(n),
a = o(n.map(e));
t = d(n.map(function(n) {
return n.substring(u, r(n) - a)
}))
}
return t
}(f);
(r(T) || r(T = r(u(i = f.map(Date.parse), isNaN)) ? [] : i)) && (m = function(r, t) {
var e = T[r],
o = T[t],
u = isNaN(e),
a = isNaN(o);
return u && a ? 0 : u ? -n : a ? n : e > o ? n : e < o ? -n : n * (r - t)
});
var C, L = N.slice();
L.sort(m);
for (var E = v; E < c; ++E)(C = s[E].parentNode).removeChild(s[E]);
for (E = v; E < c; ++E) C.appendChild(s[v + L[E - v]])
})
})
}
}
n.addEventListener("DOMContentLoaded", function() {
for (var t = n.getElementsByClassName("content-table"), e = 0; e < r(t); ++e) try {
v(t[e])
} catch (n) {}
})
}(document)
</script>
</body></html>

View File

@@ -0,0 +1,4 @@
Type,Front Side,Back Side,Total
THT,0,0,0
SMD,0,0,0
Total,0,0,0
1 Type Front Side Back Side Total
2 THT 0 0 0
3 SMD 0 0 0
4 Total 0 0 0

View File

@@ -0,0 +1,11 @@
ASSEMBLY NOTES (UNLESS OTHERWISE SPECIFIED)
1) DO NOT POPULATE COMPONENTS ARE MARKED WITH A RED CROSS
2) DO NOT POPULATE COMPONENTS 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) DOT IDENTIFIES PIN #1 LOCATION AND DEVICE ORIENTATION
WHEN VIEWED FROM THE TOP.

View File

@@ -0,0 +1 @@
Row,Quantity Per PCB,References,Value,Datasheet,Footprint,Description,Asymworks IPN,Manufacturer,Manufacturer PN,LCSC
1 Row Quantity Per PCB References Value Datasheet Footprint Description Asymworks IPN Manufacturer Manufacturer PN LCSC

View File

@@ -0,0 +1,242 @@
<html>
<head>
<meta charset="UTF-8">
<title>Bill of Materials</title>
<style>
.cell-title { vertical-align: bottom; }
.cell-info { vertical-align: top; padding: 1em;}
.cell-extra-info { vertical-align: top; padding: 1em;}
.cell-stats { vertical-align: top; padding: 1em;}
.title { font-size:2.5em; font-weight: bold; }
.subtitle { font-size:1.5em; font-weight: bold; }
.h2 { font-size:1.5em; font-weight: bold; }
.td-empty0 { text-align: center; background-color: #F57676;}
.td-gen0 { text-align: center; background-color: #DCF5E4;}
.td-kicad0 { text-align: center; background-color: #F5DCA9;}
.td-user0 { text-align: center; background-color: #DCEFF5;}
.td-empty1 { text-align: center; background-color: #FF8080;}
.td-gen1 { text-align: center; background-color: #E6FFEE;}
.td-kicad1 { text-align: center; background-color: #FFE6B3;}
.td-user1 { text-align: center; background-color: #E6F9FF;}
.td-nocolor { text-align: center; }
.color-ref { margin: 25px 0; }
.color-ref th { text-align: left }
.color-ref td { padding: 5px 20px; }
.head-table { margin-bottom: 2em; }
.centered-checkmark { font-size: 30vw; text-align: center; color: green; }
.tg-sort-header::-moz-selection{background:0 0}
.tg-sort-header::selection{background:0 0}.tg-sort-header{cursor:pointer}
.tg-sort-header:after{content:'';float:right;border-width:0 5px 5px;border-style:solid;
border-color:#ffffff transparent;visibility:hidden;opacity:.6}
.tg-sort-header:hover:after{visibility:visible}
.tg-sort-asc:after,.tg-sort-asc:hover:after,.tg-sort-desc:after{visibility:visible;opacity:1}
.tg-sort-desc:after{border-bottom:none;border-width:5px 5px 0}
.content-table {
border-collapse:
collapse;
margin-top: 5px;
margin-bottom: 4em;
font-size: 0.9em;
font-family: sans-serif;
min-width: 400px;
border-radius: 5px 5px 0 0;
overflow: hidden;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
}
.content-table thead tr { background-color: #0e4e8e; color: #ffffff; text-align: left; }
.content-table th, .content-table td { padding: 12px 15px; }
.content-table tbody tr { border-bottom: 1px solid #dddddd; }
.content-table tbody tr:nth-of-type(even) { background-color: #f3f3f3; }
.content-table tbody tr:last-of-type { border-bottom: 2px solid #0e4e8e; }
.content-table * tr:hover > td { background-color: @bgl@ !important }
.content-table {
border-collapse:
collapse;
margin-top: 5px;
margin-bottom: 4em;
font-size: 0.9em;
font-family: sans-serif;
min-width: 400px;
border-radius: 5px 5px 0 0;
overflow: hidden;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
}
.content-table thead tr { background-color: @bg@; color: #ffffff; text-align: left; }
.content-table th, .content-table td { padding: 12px 15px; }
.content-table tbody tr { border-bottom: 1px solid #dddddd; }
.content-table tbody tr:nth-of-type(even) { background-color: #f3f3f3; }
.content-table tbody tr:last-of-type { border-bottom: 2px solid @bg@; }
.content-table * tr:hover > td { background-color: #3e7ebe !important }
</style>
</head>
<body>
<table class="head-table">
<tr>
<td rowspan="2">
</td>
<td colspan="2" class="cell-title">
<div class="title">Bill of Materials</div>
</td>
</tr>
<tr>
<td class="cell-info">
<b>Schematic</b>: Asymworks_Template<br>
<b>Variant</b>: default<br>
<b>Revision</b>: NO_TAG+ (Unreleased)<br>
<b>Date</b>: 2026-03-10_23-05-42<br>
<b>KiCad Version</b>: 9.0.7+1<br>
</td>
<td class="cell-stats">
<b>Component Groups</b>: 0<br>
<b>Component Count</b>: 0 (per PCB)<br>
<b>Fitted Components</b>: 0 (per PCB)<br>
<b>Number of PCBs</b>: 1<br>
<b>Total Components</b>: 0 (for 1 PCBs)<br>
</td>
</tr>
</table>
<h2>Component Groups</h2>
<table class="content-table">
<thead>
<tr>
<th class="th-gen">Row</th>
<th class="th-gen">Quantity Per PCB</th>
<th class="th-kicad">References</th>
<th class="th-kicad">Value</th>
<th class="th-kicad">Datasheet</th>
<th class="th-kicad">Footprint</th>
<th class="th-user">Description</th>
<th class="th-user">Asymworks IPN</th>
<th class="th-user">Manufacturer</th>
<th class="th-user">Manufacturer PN</th>
<th class="th-user">LCSC</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<table class="color-ref">
<tr><th>Color reference for columns:</th></tr>
<tr><td class="td-kicad0">KiCad Fields (default)</td></tr>
<tr><td class="td-gen0">Generated Fields</td></tr>
<tr><td class="td-user0">User Fields</td></tr>
<tr><td class="td-empty0">Empty Fields</td></tr>
</table>
<script charset="utf-8">
var TGSort = window.TGSort || function(n) {
"use strict";
function r(n) { return n ? n.length : 0 }
function t(n, t, e, o = 0) { for (e = r(n); o < e; ++o) t(n[o], o) }
function e(n) { return n.split("").reverse().join("") }
function o(n) {
var e = n[0];
return t(n, function(n) {
for (; !n.startsWith(e);) e = e.substring(0, r(e) - 1)
}), r(e)
}
function u(n, r, e = []) {
return t(n, function(n) {
r(n) && e.push(n)
}), e
}
var a = parseFloat;
function i(n, r) {
return function(t) {
var e = "";
return t.replace(n, function(n, t, o) {
return e = t.replace(r, "") + "." + (o || "").substring(1)
}), a(e)
}
}
var s = i(/^(?:\s*)([+-]?(?:\d+)(?:,\d{3})*)(\.\d*)?$/g, /,/g),
c = i(/^(?:\s*)([+-]?(?:\d+)(?:\.\d{3})*)(,\d*)?$/g, /\./g);
function f(n) {
var t = a(n);
return !isNaN(t) && r("" + t) + 1 >= r(n) ? t : NaN
}
function d(n) {
var e = [],
o = n;
return t([f, s, c], function(u) {
var a = [],
i = [];
t(n, function(n, r) {
r = u(n), a.push(r), r || i.push(n)
}), r(i) < r(o) && (o = i, e = a)
}), r(u(o, function(n) {
return n == o[0]
})) == r(o) ? e : []
}
function v(n) {
if ("TABLE" == n.nodeName) {
for (var a = function(r) {
var e, o, u = [],
a = [];
return function n(r, e) {
e(r), t(r.childNodes, function(r) {
n(r, e)
})
}(n, function(n) {
"TR" == (o = n.nodeName) ? (e = [], u.push(e), a.push(n)) : "TD" != o && "TH" != o || e.push(n)
}), [u, a]
}(), i = a[0], s = a[1], c = r(i), f = c > 1 && r(i[0]) < r(i[1]) ? 1 : 0, v = f + 1, p = i[f], h = r(p), l = [], g = [], N = [], m = v; m < c; ++m) {
for (var T = 0; T < h; ++T) {
r(g) < h && g.push([]);
var C = i[m][T],
L = C.textContent || C.innerText || "";
g[T].push(L.trim())
}
N.push(m - v)
}
t(p, function(n, t) {
l[t] = 0;
var a = n.classList;
a.add("tg-sort-header"), n.addEventListener("click", function() {
var n = l[t];
! function() {
for (var n = 0; n < h; ++n) {
var r = p[n].classList;
r.remove("tg-sort-asc"), r.remove("tg-sort-desc"), l[n] = 0
}
}(), (n = 1 == n ? -1 : +!n) && a.add(n > 0 ? "tg-sort-asc" : "tg-sort-desc"), l[t] = n;
var i, f = g[t],
m = function(r, t) {
return n * f[r].localeCompare(f[t]) || n * (r - t)
},
T = function(n) {
var t = d(n);
if (!r(t)) {
var u = o(n),
a = o(n.map(e));
t = d(n.map(function(n) {
return n.substring(u, r(n) - a)
}))
}
return t
}(f);
(r(T) || r(T = r(u(i = f.map(Date.parse), isNaN)) ? [] : i)) && (m = function(r, t) {
var e = T[r],
o = T[t],
u = isNaN(e),
a = isNaN(o);
return u && a ? 0 : u ? -n : a ? n : e > o ? n : e < o ? -n : n * (r - t)
});
var C, L = N.slice();
L.sort(m);
for (var E = v; E < c; ++E)(C = s[E].parentNode).removeChild(s[E]);
for (E = v; E < c; ++E) C.appendChild(s[v + L[E - v]])
})
})
}
}
n.addEventListener("DOMContentLoaded", function() {
for (var t = n.getElementsByClassName("content-table"), e = 0; e < r(t); ++e) try {
v(t[e])
} catch (n) {}
})
}(document)
</script>
</body></html>

View File

@@ -0,0 +1,4 @@
Type,Front Side,Back Side,Total
THT,0,0,0
SMD,0,0,0
Total,0,0,0
1 Type Front Side Back Side Total
2 THT 0 0 0
3 SMD 0 0 0
4 Total 0 0 0

View File

@@ -0,0 +1,50 @@
FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED)
1) FABRICATE PER IPC-6012A CLASS 2.
2) OUTLINE DEFINED IN SEPARATE GERBER FILE WITH
"Edge_Cuts.GBR" SUFFIX.
3) SEE SEPARATE DRILL FILES WITH ".DRL" SUFFIX
FOR HOLE LOCATIONS.
SELECTED HOLE LOCATIONS SHOWN ON THIS DRAWING
FOR REFERENCE ONLY.
4) SURFACE FINISH: ENIG
5) SOLDERMASK ON BOTH SIDES OF THE BOARD SHALL
BE LPI, COLOR GREEN.
6) SILK SCREEN LEGEND TO BE APPLIED PER LAYER
STACKUP USING WHITE NON-CONDUCTIVE EPOXY INK.
7) ALL VIAS ARE TENTED ON BOTH SIDES UNLESS
SOLDERMASK OPENED IN GERBER.
8) RESERVED
9) PCB MATERIAL REQUIREMENTS:
A. FLAMMABILITY RATING MUST MEET OR EXCEED
UL94V-0 REQUIREMENTS.
B. Tg 135 C OR EQUIVALENT.
10) DESIGN GEOMETRY MINIMUM FEATURE SIZES:
BOARD SIZE N/A × N/A mm
BOARD THICKNESS 1.647 mm
TRACE WIDTH N/A mm
TRACE TO TRACE 0.200 mm
MIN. HOLE (PTH) N/A mm
MIN. HOLE (NPTH) N/A mm
ANNULAR RING N/A mm
COPPER TO HOLE 0.250 mm
COPPER TO EDGE 0.500 mm
HOLE TO HOLE 0.250 mm
11) ALL DIMENSIONS ARE IN MILLIMETERS UNLESS OTHERWISE
SPECIFIED.
12) FOR REFERENCE ONLY THE STACKUP CORRESPONDS TO JLCPCB
STACKUP JLC04161H-7628.

View File

@@ -0,0 +1,4 @@
Layer,Ref1,Ref2,Type,Impedance,Width,Space,Tolerance
L1,AIR,L2,SE,50,0.349,-----,10%
L1,AIR,L2,DIFF,90,0.286,0.203,10%
L1,AIR,L2,DIFF,100,0.221,0.203,10%
1 Layer Ref1 Ref2 Type Impedance Width Space Tolerance
2 L1 AIR L2 SE 50 0.349 ----- 10%
3 L1 AIR L2 DIFF 90 0.286 0.203 10%
4 L1 AIR L2 DIFF 100 0.221 0.203 10%

View File

@@ -0,0 +1,50 @@
FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED)
1) FABRICATE PER IPC-6012A CLASS 2.
2) OUTLINE DEFINED IN SEPARATE GERBER FILE WITH
"Edge_Cuts.GBR" SUFFIX.
3) SEE SEPARATE DRILL FILES WITH ".DRL" SUFFIX
FOR HOLE LOCATIONS.
SELECTED HOLE LOCATIONS SHOWN ON THIS DRAWING
FOR REFERENCE ONLY.
4) SURFACE FINISH: ENIG
5) SOLDERMASK ON BOTH SIDES OF THE BOARD SHALL
BE LPI, COLOR GREEN.
6) SILK SCREEN LEGEND TO BE APPLIED PER LAYER
STACKUP USING WHITE NON-CONDUCTIVE EPOXY INK.
7) ALL VIAS ARE TENTED ON BOTH SIDES UNLESS
SOLDERMASK OPENED IN GERBER.
8) RESERVED
9) PCB MATERIAL REQUIREMENTS:
A. FLAMMABILITY RATING MUST MEET OR EXCEED
UL94V-0 REQUIREMENTS.
B. Tg 135 C OR EQUIVALENT.
10) DESIGN GEOMETRY MINIMUM FEATURE SIZES:
BOARD SIZE N/A × N/A mm
BOARD THICKNESS 1.647 mm
TRACE WIDTH N/A mm
TRACE TO TRACE 0.200 mm
MIN. HOLE (PTH) N/A mm
MIN. HOLE (NPTH) N/A mm
ANNULAR RING N/A mm
COPPER TO HOLE 0.250 mm
COPPER TO EDGE 0.500 mm
HOLE TO HOLE 0.250 mm
11) ALL DIMENSIONS ARE IN MILLIMETERS UNLESS OTHERWISE
SPECIFIED.
12) FOR REFERENCE ONLY THE STACKUP CORRESPONDS TO JLCPCB
STACKUP JLC04161H-7628.

View File

@@ -0,0 +1,4 @@
Layer,Ref1,Ref2,Type,Impedance,Width,Space,Tolerance
L1,AIR,L2,SE,50,0.349,-----,10%
L1,AIR,L2,DIFF,90,0.286,0.203,10%
L1,AIR,L2,DIFF,100,0.221,0.203,10%
1 Layer Ref1 Ref2 Type Impedance Width Space Tolerance
2 L1 AIR L2 SE 50 0.349 ----- 10%
3 L1 AIR L2 DIFF 90 0.286 0.203 10%
4 L1 AIR L2 DIFF 100 0.221 0.203 10%

12
project.json Normal file
View File

@@ -0,0 +1,12 @@
{
"AssemblyName": "nRF52840 Development Board",
"AssemblyNumber": "A98-1001",
"AssemblyTitle": "Assembly, nRF52840 Development Board",
"Company": "Asymworks, LLC",
"Designer": "JPK",
"FabNumber": "P98-1001",
"FabTitle": "PCB Fabrication, nRF52840 Development Board",
"ProjectNumber": "P98",
"SchematicNumber": "S98-1001",
"SchematicTitle": "Schematic, nRF52840 Development Board"
}

Binary file not shown.

View File

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

Binary file not shown.

View File

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

View File

@@ -0,0 +1 @@
Ref.,Net,X [mm],Y [mm]
1 Ref. Net X [mm] Y [mm]

View File

@@ -0,0 +1 @@
Ref.,Net,X [mm],Y [mm]
1 Ref. Net X [mm] Y [mm]

View File

@@ -0,0 +1 @@
Testpoint Ref.,Net,Net Class,X,Y,Side,Pad Type,Value,Footprint
1 Testpoint Ref. Net Net Class X Y Side Pad Type Value Footprint

View File

@@ -0,0 +1 @@
Ref.,Net,X [mm],Y [mm]
1 Ref. Net X [mm] Y [mm]

View File

@@ -0,0 +1 @@
Ref.,Net,X [mm],Y [mm]
1 Ref. Net X [mm] Y [mm]

View File

@@ -0,0 +1 @@
Testpoint Ref.,Net,Net Class,X,Y,Side,Pad Type,Value,Footprint
1 Testpoint Ref. Net Net Class X Y Side Pad Type Value Footprint