Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

initial guidelines #1

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 46 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,46 @@
# pcb_design_guidelines
# PCB best practices
## rationale
in the interest of keeping everyones visual pattern matching algorithms firing on all cylenders as well as avoiding common or hard to diagnose pitfalls we have created these rules and best paractices.

## schemetic
### libraries
Symbol and footprint libraries that ship with KiCad can be expected, all other libraries should be linked with relative paths to local libraries (use git submodules for reuse).
### part numbers
Sometimes a specific part is specified with a specific part number and sometimes a group of possible parts are specified with constraints (for example capacitors and rsistors).
#### specific part numbers
The 'value' field of the component should be used to express the most recognisable property of the component, 1k, 100uF, LM339 as examples. Use the field named ```MPN``` to specify the exact part, RMCP2010FT1K00, CL32A107MQVNNWE, LM339APWR for the above examples. It is also often a good idea to include a ```Digi-Key_PN``` field with the exact part numbers RMCP2010FT1K00CT-ND, 1276-3366-1-ND, 296-18454-1-ND.
#### catagory constraints
Passive components often do not need to be specified down to the exact part number, a resistor from stackpole is functionally equivalent to a resistor from vishay in many use cases and a 0.5% value can always be used where 1% is specified. Use the following field names to constrain the catagory of components which can be used.
- ```voltage``` voltage constraint on capacitors, if no voltage field is specified 6.3V or higher can be assumed
- ```precision``` to constrain the precision of resistors to 0.1% or capacitors to 10% for example. If no value is specified assume 1% for resistors and 20% for capacitors
- ```dielectric``` for dilectric class codes like X5R or C0G. if nothing is specified any class can be used.
- ```power``` for power specification. Assume 100mW for resistors if not otherwise specified.
### unit naming conventions
Values ought to be represented as 1.7k or 2.2uF. Do not use other notations than these. Also use the following unit notations:
- R Ohms
- k kilo ohms
- M megaohms
- mF millifarad
- uF microfarad
- nF nannofarad
- pF picofarad
- H henry
- mH millihenry
- uH microhenry
- W watt
- mW milliwatt
- V volt
- mV millivolt
- uV microvolt
- A amp
- mA milliamp
- uA microamp

### net naming
Net labels serve two purposes: they are used to express a connection in the schemetic between two otherwise unconnected wires and they are used to aid in transparentcy while routing tracks in the layout tool. A track called ```Net-(R2-PAD2)``` is obviously not going to look like it needs special attention, however if we give it a clear name ```feedback``` then it will be immediatly clear to someone routing or inspecting the PCB that this pin is mor eimprotant from a cross talk standpoint than others may be.
Therefore the guideance is the give any net which can have a more expressive name a label reguardless of whether this is needed for physical connection or not.

## layout
### 3d models
It is strongly recommended that all footprints have a 3d model associated with them. Relative paths must be used to reference 3d models.