Design Project Planning

4 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.

Our microprocessor consists of:

  • Internal Bus: single writer, multiple readers
  • Accumulator (Acc): A flip-flop holding temporary values
  • Arithmetic: adder, shifter
  • SRAM

Bus

The block diagram above has two critical nets: the internal bus, and the accumulator.

  • The accumulator (top net) is a flip-flop holding temporary values from the adder and shifter. Think of it as a register
  • The internal bus (bottom net) routes the values to the components.
    • Only one source below can drive the internal bus:
      • Accumulator
      • SRAM
      • External bus (not shown, for testing)
    • All components below may read from the internal bus simultaneously:
      • Adder
      • Accumulator (via MUX)
      • SRAM
      • External bus

Tristate buffers control data routing between SRAM/internal/external bus, preventing contention.


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
111SHIFTAcc ← Acc « shamtShifterDon’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

Here is the suggested floorplan from PS9

We have laid out an inverter already. The processor can be seen as many inverter-like gates neatly coordinated.

These are the 3 main 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. Let’s make

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

Vertical Grid

Our 8-bit processor built from isomorphic 1-bit slices placed side by side. We can create a vertical grid of M2 power rails of alternating VDD and GND

  • Each cell will build VDD (PMOS N-Well) on one side, and GND (NMOS P-Well) on the other
  • The power straps (body Vias) can be placed directly below the M2 rails
  • All transistors will fit horizontally within each stripe. Larger transistors can be made of multiple fingers

See example in our adder

Although not done in our project, you can further design all blocks to have the same height to have an organized horizontal grid

  • This leads to standard cells. You can check out some library examples!