Tuesday, March 13, 2018

Altium Library and Directory Setup

Recently I helped a client that was new to Altium get their libraries set up. They asked "why can't we just put all the parts in one library?" I've found that this presents several issues, mainly as you get larger:

  • hard to for two people to work - you’ll have endless version conflicts
  • slower to compile
  • slower to find things - I have 281 components just in my LCR library - see attached
  • harder to use parameter manager to manage part parameters
  • all your eggs are in one basket
Instead, I recommend that you divide parts into different libraries, mainly separated by manufacturer. For big manufacturers I separate it into a few sub-libraries, like TI-Analog, TI-LPRF, TI-MSP430, etc. I also have a few generic libraries: LCR (resistors, caps, etc), Crystals, and Inductors. If I were setting it up new I’d make one library for resistors, one for capacitors, one for inductors. It makes it faster to find stuff when you have hundreds of parts in the library. I leave these libraries as generic because I don't care as much as to which manufacturer I use for these parts. I select passives mainly based on what is in stock.


Project Directory Structure
When I set up projects, I use the same directory structure for each client:
C:\AltiumDesigns
—Client1
— Project1
— Project2, etc.
— Released (stores tags of all released Altium files)
— ManufacturingPackages (each release to a CM)
When I send files to a CM, I do the following:
a. Check in all the project files (SchDoc, PcbDoc, PrjPcb, OutJob, etc)
b. Verify that nothing is checked in that shouldn’t be there.
c. Tag all the project files into the Released directory
d. Store the manufacturing files into the ManufacturingPackages directory.

Library Directory Structure
For libraries, I use the following directory structure:
C:\AltiumLibraries
— Manufacturer1
— History (created by Altium, SVN ignored)
— Project Outputs for XX (created by Altium, SVN ignored)
— Project Logs for XX (created by Altium, SVN ignored)
— Manufacturer1.LibPkg
— Manufacturer1.SchLib
— Manufacturer1.PcbLib
— STEP (directory, contains STEP files for that manufacturer)
— Manufacturer2, etc.

Version Control
I store all libraries and project files in subversion. This makes it easier to undo changes, and also allows multiple engineers to work on a project. For Subversion, I use a cloud hosting provider, SVNrepository.com, it costs about $72 per year. I have a ton of stuff in subversion - I check in all my hardware, firmware, and software projects. There's also more hardware centric Subversion provider, Assembla, but I don't prefer their approach because they structure the directories like software projects, not hardware projects.