Hardware Design Tools

Python Scripting Language

I recommend all Hardware Designers learn how to use a scripting language (Python, Pearl, TCL, etc..). I prefer Python but they will all do the job. It's an invaluable tool to have, I use it to automate testing, process files, automate simulators, etc...

TNT (MMTL)

A free, Open-Source 2.5D BEM EM Modeling Tool, highly recommended.

LTSPICE (SwitcherCAD)

My favorite free SPICE implementation for Windows (provided by Linear Tech.)

Spice Opus

Another free text based Berkeley Spice Simulator for Windows.

Scite Text Editor for Windows

A free high-quality Text Editor for Windows (Linux, OS X versions are also available).

Tera Term Pro

A free replacement to the horrendous Windows tool, HyperTerm. Useful for establishing serial and Telnet sessions with test cards.

Simple Thermal Analysis Tool

This is a useful tool that can be used to run a quick thermal analysis during the initial system design stage of a PCB design process.

Design File Version Control

This can be used for either Hardware or Software design files, though it was initially intended for Source Code. It's a simple to use Windows based design file repository, based on the Subversion project.

Signal Integrity Mailing List

The archives are a treasure trove of information related to hardware design. I recommend subscribing as well as browsing the archive. All the cool SI kids are on it (like most of the guys that wrote the SI text books).

Specs / Manuals

I/O Buffer Information Specification

LVDS Owner's Manual: by National Semiconductor

Spice 3 User's Manual: by University of Exeter

USB 2.0 Specification

DDR2 Specification

DVI Specification

Ethernet Specification

JTAG Specification

Articles on Hardware Design

A Collection of Interesting Articles: by Istvan Novak

An incredible collection of articles describing ideas and analysis on the cutting edge of High Speed Design. My personal favorites are the articles on using lossy bypass caps -- the basic idea is that if using big-V decoupling you don't really need an ESR as low as it is, i.e. the bottom of the V is really way lower than required, so why not have a higher ESR which will lower the anti-resonance peaks where your big-V network crosses with the power plane resonance, and the mid frequency decoupling -- I don't know of any capacitors that are lossy like that but maybe one day...

A Black-Box Frequency Dependent Model of Capacitors for Frequency Domain Simulations: by Istvan Novak

The most comprehensive article on Bypass Capacitor Modeling that I've ever read.

Effective Power / Ground Plane Decoupling for PCB: by Dr. Bruce Archambeault

This is one of my favorite articles (actually slides from a presentation) on bypass capacitors and Power Distribution System Design.

Minimize EMI Emissions with Optimum Termination Strategy: by Bruce Archambeault

This is my all-time favorite hardware design related article. On most designs these days have stringent EMI requirements, and this article presents some very interesting ideas on the subject.

Power Supply Design for PowerPC Processors: by Gary Milliorn

A very good app note from Freescale. It is applicable to all power supply design for digital systems, not just for PowerPCs.

Decoupling: by Henry Ott

Explores some of the realistic limitations of bypass capacitors, but unfortunately fails to discuss on-die capacitance. Do we really need PCB level decoupling at 1GHz when we have > 50pF on die capacitance and 1nH lead inductance?

Parasitic Inductance of Bypass Capacitor II: by Howard Johnson

One of the first articles I read on bypass capacitors, motivated me to buy Dr. Johnson's book; High Speed Digital Design.

Modeling and Simulation of Planes in Electronic Packages: by Nanju Na

This is an excellent PH.d. Thesis. The introduction has a some great info on what PCB level decoupling capacitors do.

(For Your) Protection: by Howard Johnson

A great article on what happens when ESD protection diodes conduct current, yet another reason why over-shoot and under-shoot are bad.

PCB Stack-Up; Parts 1, 2, 3, 4, 5, and 6: by Henry Ott

A very good article on the trade-offs when designing a stack-up. Note the absence of a 20 layer example (or anything greater that 12). Only wimps use more than 12 layers.

Everything You Know is Wrong - Part XIX: by Tony Kordyban

This is a great article on how to perform a quick and dirty thermal analysis in the preliminary stages of a design.

Articles on Software Design

Object-Oriented Programming in C: by Paul Field

Some interesting ideas here.

Writing Bug Free Code

A very well written multi-part article on techniques that can be used to reduce the number of bugs in code.

Optimizing Embedded Linux

Some interesting ideas on how to optimize Linux to run on an embedded system.

Embedded Software Related

uclibc

The world's greatest C library, design specifically for space contained embedded systems.

buildroot

An almost complete automated package for building an embedded Linux system based on uclibc. This is very cool. Just add a kernel and stir. My Reisa Script is loosely based on buildroot, i.e. just the toolchain section.