Initial commit.

This commit is contained in:
Matt Harlum 2023-02-09 14:20:20 +01:00
commit 12f0d58f16
12 changed files with 337 additions and 0 deletions

28
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,28 @@
name: Generate release files
on:
push:
tags:
- "Release_**"
- "Rev**"
- "Proto**"
- "proto**"
workflow_dispatch:
jobs:
draft_release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Zip Gerbers
run: zip -r Gerbers.zip Gerbers
- name: release
uses: softprops/action-gh-release@v1
with:
draft: true
files: |
Docs/Schematic.pdf
Docs/*-ibom.html
Gerbers.zip
Binary/*.jed

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
**/.DS_Store

0
Binary/.gitkeep Normal file
View File

0
Docs/.gitkeep Normal file
View File

0
Gerbers/.gitkeep Normal file
View File

9
Kicad/.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
**/.DS_Store
*.zip
*.xml
Gerbers
*-backups/*
*-bak
*-erc.txt
*-drc.txt
kibot_errors.*

30
Kicad/Makefile Normal file
View File

@ -0,0 +1,30 @@
PROJECT=
KIBOT_CONF=./kibot/release.kibot.yaml
GERBER_OUTPUT=../Gerbers
DRILLS=$(GERBER_OUTPUT)/$(PROJECT)-NPTH.drl $(GERBER_OUTPUT)/$(PROJECT)-PTH.drl
GERBERS=$(GERBER_OUTPUT)/$(PROJECT)-B_Cu.gbl $(GERBER_OUTPUT)/$(PROJECT)-B_Mask.gbs $(GERBER_OUTPUT)/$(PROJECT)-B_Silkscreen.gbo $(GERBER_OUTPUT)/$(PROJECT)-Edge_Cuts.gm1 $(GERBER_OUTPUT)/$(PROJECT)-F_Cu.gtl $(GERBER_OUTPUT)/$(PROJECT)-F_Mask.gts $(GERBER_OUTPUT)/$(PROJECT)-F_Silkscreen.gto $(GERBER_OUTPUT)/$(PROJECT)-F_Paste.gtp $(GERBER_OUTPUT)/$(PROJECT)-B_Paste.gbp $(DRILLS)
JLCPCB=$(GERBER_OUTPUT)/$(PROJECT)_bom_jlc.csv $(GERBER_OUTPUT)/$(PROJECT)_cpl_jlc.csv
.PHONY: release
all: $(GERBERS) $(JLCPCB) ../Docs/Schematic.pdf ../Docs/$(PROJECT)-ibom.html
schematic: ../Docs/Schematic.pdf
gerbers: $(GERBERS)
jlcpcb: $(JLCPCB)
ibom: ../Docs/$(PROJECT)-ibom.html
$(GERBERS) ../Docs/PCB.png: $(PROJECT).kicad_pcb
kibot -c $(KIBOT_CONF) Gerbers Drills Image
$(JLCPCB): $(PROJECT).kicad_pcb $(PROJECT).kicad_sch
kibot -c $(KIBOT_CONF) JLCPCB_position JLCPCB_bom
../Docs/Schematic.pdf: $(PROJECT).kicad_sch
kibot -s all -c $(KIBOT_CONF) Schematic
../Docs/$(PROJECT)-ibom.html: $(PROJECT).kicad_pcb
kibot -s all -c $(KIBOT_CONF) IBOM

View File

@ -0,0 +1,175 @@
kibot:
version: 1
filters:
- name: 'exclude_tht'
type: 'generic'
comment: 'Exclude thru-hole parts'
exclude_tht: true
- name: 'fix_rotation'
comment: 'Adjust rotation for JLC'
type: rot_footprint
rotations:
- ["^TSOP-II", 270.0]
- ["^SOT-89", 180.0]
variants:
- name: rotated
comment: 'Just a place holder for the rotation filter'
type: kibom
variant: rotated
pre_transform: 'fix_rotation'
preflight:
check_zone_fills: true
fill_zones: false
run_drc: true
run_erc: true
update_xml: true
ignore_unconnected: true
filters:
- error: 'pin_not_connected'
filter: 'Pin not connected'
- error: 'silk_overlap'
filter: 'Silkscreen overlap'
- error: 'pin_not_driven'
filter: 'Input pin not driven by output'
regex: 'Input pin not driven by any Output pins'
outputs:
- name: Gerbers
comment: "Generate gerber files"
type: gerber
dir: '../Gerbers'
options:
exclude_edge_layer: true
exclude_pads_from_silkscreen: true
plot_sheet_reference: false
plot_footprint_refs: true
plot_footprint_values: false
force_plot_invisible_refs_vals: false
tent_vias: true
use_protel_extensions: true
create_gerber_job_file: false
disable_aperture_macros: true
gerber_precision: 4.6
use_gerber_x2_attributes: false
use_gerber_net_attributes: false
line_width: 0.1
subtract_mask_from_silk: true
inner_extension_pattern: '.g%Nl'
use_aux_axis_as_origin: true
layers:
- F.Cu
- B.Cu
- In1.Cu
- In2.Cu
- F.SilkS
- B.SilkS
- F.Paste
- B.Paste
- F.Mask
- B.Mask
- Edge.Cuts
- name: Drills
comment: Drill files
type: excellon
dir: '../Gerbers'
options:
pth_id: '-PTH'
npth_id: '-NPTH'
metric_units: true
route_mode_for_oval_holes: false
pth_and_npth_single_file: false
use_aux_axis_as_origin: true
output: "%f%i.%x"
- name: Schematic
comment: "Output PDF Schematic"
type: pdf_sch_print
options:
frame: true
output: "../Docs/Schematic.pdf"
- name: IBOM
type: ibom
comment: "Generate HTML Interactive BOM"
dir: ../Docs
options:
include_tracks: true
layer_view: FB
blacklist: 'CN1,J1'
highlight_pin1: true
include_nets: true
dark_mode: true
- name: 3dImage
type: render_3d
comment: "3D Render"
run_by_default: true
options:
ray_tracing: false
output: ../Docs/PCB.png
zoom: 8
view: top
no_tht: true
orthographic: true
download: false
width: 1300
height: 530
- name: Image
type: pcbdraw
comment: "Draw PCB"
options:
output: ../Docs/PCB.png
format: png
show_components: none
- name: 'JLCPCB_position'
comment: "Pick and place file, JLCPCB style"
type: position
options:
variant: rotated
output: '../Gerbers/%f_cpl_jlc.%x'
format: CSV
units: millimeters
separate_files_for_front_and_back: false
use_aux_axis_as_origin: true
only_smd: true
columns:
- id: Ref
name: Designator
- Val
- Package
- id: PosX
name: "Mid X"
- id: PosY
name: "Mid Y"
- id: Rot
name: Rotation
- id: Side
name: Layer
- name: 'JLCPCB_bom'
comment: "BoM for JLCPCB"
type: bom
options:
output: '../Gerbers/%f_%i_jlc.%x'
exclude_filter: 'exclude_tht'
ref_separator: ','
columns:
- field: Value
name: Comment
- field: References
name: Designator
- Footprint
- field: 'LCSC #'
name: 'LCSC Part #'
csv:
hide_pcb_info: true
hide_stats_info: true
quote_all: true

7
README.md Normal file
View File

@ -0,0 +1,7 @@
# PROJECT NAME
Skeleton repo for Hardware projects
Make sure to set project name in all makefiles and in template.xst
![PCB](Docs/PCB.png?raw=True)

7
RTL/.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
_xmsgs
tmp/
*.log
*.err
*.jed
*.prj
local.mk

50
RTL/Makefile Normal file
View File

@ -0,0 +1,50 @@
PROJECT=
PART=XC95144XL-10-TQ100
WORKDIR=tmp
SERIAL=$(shell git rev-parse --short=8 HEAD)
PRODID=69
DEFINES=makedefines autoconfig SERIAL=32'h${SERIAL} PRODID=${PRODID}
CABLE=usb21
CPLDFITFLAGS=-loc on -slew slow -init low -terminate keeper -optimize speed -keepio
.PHONY: all clean
all: $(PROJECT).jed
$(PROJECT).prj: *.v
-$(shell rm -f $@)
-$(foreach source,$^,$(shell echo verilog work $(source) >> $@))
$(WORKDIR)/$(PROJECT).ngc: *.v $(PROJECT).prj
-@mkdir $(WORKDIR)
@sed -r "s#^(-ofn).*#\1 ..\/$@#g;s#^(-ifn).*#\1 ../$(PROJECT).prj#g;s#^(-define).*#\1 {$(DEFINES)}#g" template.xst > $@.xst
cd $(WORKDIR) && xst -ifn ../$@.xst -ofn $(PROJECT)-xst.log
$(WORKDIR)/%.ngd: $(WORKDIR)/%.ngc $(PROJECT).ucf
cd $(WORKDIR) && ngdbuild -p $(PART) -uc ../$(PROJECT).ucf ../$< ../$@
$(WORKDIR)/%.vm6: $(WORKDIR)/%.ngd $(PROJECT).ucf
cd $(WORKDIR) && cpldfit $(CPLDFITFLAGS) -p $(PART) ../$< | egrep -v "^CS: block|^$$"
%.jed: $(WORKDIR)/%.vm6
hprep6 -i $<
cp $@ ../Binary/
fit: $(WORKDIR)/$(PROJECT).vm6
clean:
-rm -rvf tmp
-rm *.jed
-rm *.prj
flash: $(PROJECT).jed
@echo "setMode -bs\n"\
"setCable -p $(CABLE)\n"\
"identify\n"\
"assignfile -p 1 -file $<\n"\
"erase -p 1\n"\
"program -p 1\n"\
"verify -p 1" | LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so impact -batch

30
RTL/template.xst Normal file
View File

@ -0,0 +1,30 @@
set -tmpdir "."
set -xsthdpdir "."
run
-ifn IFN
-ifmt mixed
-ofn OFN
-ofmt NGC
-p xc9500xl
-top SETME
-opt_mode Speed
-opt_level 2
-iuc NO
-keep_hierarchy Yes
-netlist_hierarchy As_Optimized
-rtlview No
-hierarchy_separator /
-bus_delimiter <>
-case Maintain
-verilog2001 YES
-fsm_extract YES -fsm_encoding Auto
-safe_implementation No
-mux_extract Yes
-resource_sharing YES
-iobuf YES
-pld_mp YES
-pld_xp YES
-pld_ce YES
-wysiwyg NO
-equivalent_register_removal YES
-define {}