Hardware Design
The physical Hardware (and subsequent firmware) design is the meat of what we do. Our strength is the careful and thorough design of relatively complex systems, utilizing dense FPGAs (Field-Programmable Gate Arrays) and running at high clock speeds. Designs that require multi-layer Printed-Circuit Boards (PCBs), small footprint components and close attention paid to Signal Integrity (SI).
Below we present a list of the steps required, more or less in the sequence they tend to occur. Some steps tend to happen concurrently with others and in an iterative manner as the project dictates.
Block Partitioning
As with the System Level Architectural Design step, the overall conceptual design of a PCB (or module) consists of defining and drawing a block diagram of what exactly the PCB is meant to do. The blocks themselves may correspond to physical components that are incorporated into a design or logical blocks contained within an FPGA, PLD (Programmable Logic Device) or an MCU (Microcontroller). The process involves a survey of candidate components and may result in a small number of potential designs based on the components surveyed.
This process may also reveal additional details regarding system-level interfaces such as connector types, signal definitions, protocols and so on.
Component Selection
Selection of the major components (components that affect the block partitioning step above) in a design is the result of a number of inputs. Sometimes a major component is the centerpiece of a client’s business. Other times, a major component is selected in advance due to any number of reasons – client history, experience and tools for a given vendor to name just a few. Typically however, major components are selected based on tradeoffs made during the Block Partitioning phase based on functionality, cost, availability, power consumption, operating voltages and so on. These major components are generally part of the design review process with the client prior to final selection.
Minor components consist of all the electronics required to support the major components – literally everything but the major components. We select all of the minor components during the detailed design phase once the partitioning of the blocks are nailed down and the physical schematic design step is underway.
Power Distribution
Today’s FPGAs and MCUs often require multiple power supplies (or “rails”) of varying voltages. Analog components and client components (or devices) require additional power sources. One or more of these rails are supplied externally, others are generated on-board from one of these external rails. This process involves determining the split between the externally supplied voltages and the on-board generated voltages and the power requirements of each.
In concert with the power requirements of each module (or PCB), we design the overall system power distribution system and select the appropriate power supplies.
Thermal Analysis
In additional to power distribution, we pay close attention to the amount of heat the active components are likely to dissipate. We include space for required heat-sinks and coordinate the PCB layout with the design of the mechanical packaging to accommodate additional passive or active (fans) cooling as the design dictates.
Detailed Design and Schematic Entry
Once we have selected the major components and identified most of the design constraints, we delve into the detailed hardware design. As the document of choice for electronics is the schematic and it’s required to generate the netlist for the PCB layout step, we combine detail design with schematic entry (our tool of choice is OrCAD). This is where all of the fine details of a module design occur.
In addition to selecting all of the remaining components, we map the blocks within the programmable devices (FPGAs, PLDs and MCUs) to the actual pins, select signalling standards, determine board size and shape, locate positions of critical components (especially those that affect the mechanical packaging) and so on. Basically, we incorporate all the know input from all of the steps taken up to this point. We also begin to analyze the design for Signal Integrity, power requirements and heat dissipation.
We also begin the design of any firmware that may be required for included FPGAs, PLDs or MCUs, at least considering how the architecture of those blocks impacts and interact with the hardware.
In addition to a netlist used to drive the PCB layout process, we also generate a detailed Bill of Materials (BOM) that includes all the information required to order all the parts needed to build the initial batch of PCBs. During this process, we identify all the long-lead components to allow time for purchasing and delivery.
PCB (Printed Circuit Board) Layout
Due to the cost of the PCB layout tools, we outsource the physical layout of the Printed-Circuit Boards to a design firm that staffs a team that specializes in PCB layout, utilizing the Allegro tool-chain from Cadence.
We combine the expertise of a hardware engineer and a signal integrity (SI) engineer with the PCB layout designer to insure that we achieve all of our design goals.
The SI engineer works with the layout designer to direct the placement of important components, the routing of critical signals, ensure the correct board stack-up and impedance control. An important and additional goal is to minimizing Electro Magnetic Emissions (EMI). The SI engineer runs analysis on the post layout design to confirm those targets and iterate as required.
The hardware engineer is responsible for the overall design and works with both the SI engineer and the layout designer to ensure all of the detailed design goals are met. Often, the design allows for the use of bank and pin swapping within the FPGAs and MCUs. In an attempt to aid the layout process and improve SI, the hardware engineer works with the layout designer to accommodate these changes and reflect them back into the schematic.
Signal Integrity
At the clock speeds of today’s FPGAs, MCUs, memory ICs and other peripheral chips, combined with the increasing use of high-speed serial interfaces, the demands placed on the design of system interconnects and Printed Circuit Boards (PCBs) require that close attention is paid to Signal Integrity (SI). The importance of SI cannot be stressed enough, not only to ensure reliable and error-free transmission of data but also to minimize Electro-Magnetic Emissions (EMI).
We provide SI analysis throughout the entire hardware design process, starting with the System Architecture Design and continuing through Integration and Test. We consider Signal Integrity when selecting interfaces, cables and connectors during system design and again when selecting major components and signalling standards. Signal Integrity analysis is employed throughout the hardware design process including pre-layout analysis, PCB layout guidance and post-layout analysis.
PCB Fabrication and Assembly
Once we have a final netlist for the PCB and the post-PCB SI analysis is complete, we coordinate the fabrication of the PCBs. In addition to cost, the selection of fab house includes their capabilities including board materials, number of layers, trace width and spacing and so on.
We also coordinate the assembly of the printed circuit boards through a Contract Manufacturing Service (CMS). This may entail some substitution of components (based on availability) or tracking down components that are longer-lead than anticipated. We edit the BOM to reflect what we learn to aid in subsequent builds.
Testing and Integration
If a module contains any FPGAs, PLDs or MCUs, some level of firmware must be implemented before testing can commence. Depending upon the nature of the design and the division of labor, we might opt to implement a partial design of the firmware to support early module level hardware debug and test. We also may need to write some test software to support the testing process.
Once the module level testing is complete, we integrate the module into the whole system. If a host computer is part of the system, we write test software to test the module
If the client is developing the software in-house, they may get involved during this process. As each design is unique, we handle each design on a case-by-case basis.