Design Project Planning

3 minute read

Published:

  1. Intro
  2. Inverter
  3. Project Plan
  4. Adder and Shifter
  5. SRAM
  6. PLA, Control, Data, Overall

Architecture

Before even starting the project, read through the requirements so you know what you should be doing.

Bus

Our microprocessor consists of:

  • Bus: one writer, multiple readers
  • Computation: adder, shifter
  • Accumulator (Acc): A flip-flop holding temporary values (think of it as a register)
  • SRAM

Building Blocks

Here is the suggested floorplan from PS9

  • The accumulator is split into two D-latches
  • One additional latch is used to latch the memory output from the bus
  • Three bus drivers are needed
    • Acc → Internal bus
    • External bus → Internal bus
    • Internal bus → External bus

ISA

Try to derive what to do, combining with the data path above:

When holding, the value in Acc must not change. The MUX should select the shifter path, but bypass it, effectively feeding Acc back to itself

OpcodeAssemblyDescriptionInternal bus driven byMUXOther Actions
000NOPHold AccHoldNo change
001LOADMem[i] ← External busexternal busHoldMemory write
010STOREExternal bus ← Mem[i]SRAMHoldMemory read; Drive external bus
011GETAcc ← Mem[i]SRAMMemoryMemory read
100PUTMem[i] ← AccAccHoldMemory write
101ADDAcc ← Acc + Mem[i]SRAMAdderMemory read; Bypass shifter
110SUBAcc ← Acc - Mem[i]SRAMAdderMemory read; Bypass shifter
111SHIFTLeft logical shift of AccShifterDon’t bypass

Yes, this ISA is terrible for logic simplification.
And yes, there are obvious optimizations.


Floorplan

Floorplan! Floorplan! Floorplan! Many layouts don’t suck at the end, they suck at the beginning! A bad initial decision will make you either REDO from scratch, or make WORSE and WORSE compromises to accommodate that

We’ve laid out an inverter. The processor is basically many inverter-like gates neatly coordinated.

There are always 3 things to plan:

  • Data
  • Control
  • Power

Metal Routing

This is Shepard’s suggested floorplan, rotated 90 degrees. I will stick with this orientation from now on

Adapt a consistent Metal routing rules.

Since the Polys and their Diffusion contact M1s are horizontal, make

  • Odd Metal layers horizontal
  • Even Metal layers vertical.
  • There can be local violations, especially at lower levels

This is an 8-bit processor built from identical 1-bit slices placed side by side. Since we use near-minimum device widths, each slice has the identical widths, enabling a clean, regular layout.

  • Larger transistors will be made of multiple fingers

This creates an organized vertical grid, reference for all other wires. Keep the M2 widths and spacings uniform to maintain this regularity

  • Reserve these long, continuous rails for VDD and GND
  • Alternate N-type and P-type diffusions
  • Place power straps (body Vias) at the center

You may also want to keep all blocks with the same height, so the horizontal grid is also organized.

Each block will have input/output data, primarily in M2; this is the data path.

Blocks also need control signals, such as subtraction and MUX select, which are typically identical across all bits and can be shared through a horizontal M3 wire; this is the control path