Logic Design for Array-Based Circuits

by Donnamaie E. White

Copyright © 1996, 2001, 2002 Donnamaie E. White


Design Optimization

Last Edit July 22, 2001

Basic Design For Circuit Testability

There are several formal methods for design-for-test. These include scan-path and level sensitive scan design. In addition to these, and a part of the design for test requirements, are the follow suggestions for improved circuit testability.

  • Become familiar with the macro library BEFORE beginning the macro conversion or design.
  • Use synchronous rather than asynchronous circuits whenever possible - functional tests are synchronous.
  • Partition the design (use structured design techniques) into smaller, testable sections, usually along a functional boundary.
    In partitioning:
    • Use degating logic to isolate modules for test.
    • Use modular architecture, bus structures.
    • Break up long counters (>8).
  • Don't bury states.
  • Use transparent latches instead of flip/flops where possible.
  • Use macros, especially flips/flops and latches, with RESET or SET controls where possible to simplify initialization.
  • Avoid feedback loops.
  • If unavoidable, provide a means to break up feedback loops during test (degating, enables).
  • Avoid redundant logic - minimize! - or add test points to unmask masked faults.
  • Avoid derived clocks - they complicate testing.
  • Design in test points, especially in sequential logic. Add test points to improve controllability and observability. Perform testability analysis.
  • If I/O pins are limited, use demultiplexors to control and multiplexors to observe internal nodes with otherwise poor observability (buried states).
  • Any 3-state enable control signal that is internally generated must be externally observable, and should be externally controllable during test.
  • Add parity trees for error detection.
  • Use Scan Path Design to simplify test sequence generation.
  • Use Level Sensitive Scan Design to simplify test sequence generation.
  • Use some variation of the Scan Path or LSSD DFT procedures.
  • Keep test generation in mind while designing the circuit.

Figure 4-6 Optimization - Circuit Testability

Optimization Issues - Testability

Basic Design For Circuit Reliability

Some specific design suggestions for improved circuit reliability are:

  • Become familiar with the macro library BEFORE beginning the macro conversion or design.
  • Be aware of "glitch" circuits. Do not use potential glitch circuits to drive clock inputs.
  • Avoid one-shot pulse generators.
  • Avoid gated and derived clocks.
  • Avoid race and hazard conditions. (print on change files can help identify these.) These are generated by having a signal follow two or more paths to a common circuit element (a.k.a. reconvergent fan-out.)
  • Avoid feedback loops. If unavoidable, provide a means to break up feedback loops during test (using degating, enables).
  • Avoid feedback paths between registers. If present, compute the worst-case set-up and hold times and verify operation. (Feedback from the ECL output macros must be handled with care if used to input to internal latches and flip/flops.)
  • Add sufficient GROUND for the number of simultaneously switching outputs and distribute among these outputs (similar to distributed ground in a ribbon cable). Add additional extra ground if there are extra I/O pins available.
  • Add extra VCC as needed for the number of simultaneously switching outputs.
  • Properly derate fan-out on all distortion-sensitive paths and all clock paths. Keep clock path loading balanced.
  • Avoid floating nodes on internal 3-state busses or external bidirectional busses.
  • Use Johnson (a.k.a. Mobius, Ring or Twisted-tail) counters or separate flip/flops to decode terminal counts. The loading on the Q outputs is identical, eliminating the loading skew (not the metal skew), and the outputs are a Gray code - only one output changes state per clock cycle. (Binary counter decoding can cause glitches.)
  • Compensate for rising and falling edge loading skews and the reversed TTL input translator rising and falling edge skews by inversion as needed to reduce pulse stretch and pulse shrink phenomena.
  • Reduce heavy loading on high-speed paths by creating parallel paths with identical macros.
  • Use ECL differential inputs and outputs when the frequency exceeds 200-300MHz. The actual frequency boundary will be series-specific.

Figure 4-7 Optimization - Circuit Reliability

Optimization Issues - Reliability

Copyright @ 2001, 2002 Donnamaie E. White, White Enterprises
For problems or questions on these pages, contact dew@Donnamaie.com