Design Examples

In this course, digital design concepts and SystemVerilog features will be introduced through examples of gradually increasing complexity, inspired by real digital systems, as follows:

#

Design

File List

RTL

TB

Sim & GDS

1

Not Gate

link

link

link

link

2

Full Adder

link

link

link

link

3

N-Adder

link

link

link

link

4

ALU

link

link

link

link

5

Encoder

6

Decoder

7

Verilog Functions

8

Flip Flop

link

link

link

link

9

Up counter

link

link

link

link

10

Binary Reduction Tree to find minimum of a vector y = min(X)

link

link

link

link

11

Parallel to Serial Converter

link

link

link

link

12

Down counter

link

link

link

link

13

UART RX

link

link

link

link

14

UART TX

link

link

link

link

15

UART Echo (RX + TX)

link

link

link

link

16

FIR Filter Retimed RTL

link

link

link

link

17

UART RX + TX + FIR Filter

link

link

link

link

Waveforms and ASAP7 GDS

For each design our GitHub Actions flow runs

  1. Simulation using Verilator, generating VCD, converted to SVG,

  2. OpenROAD RTL2GDS2 flow using ASAP7 7nm, a realistic PDK for academic use,

collects their outputs and displays them here.

To reproduce this on your machine, check out our docker setup.

1. Not Gate

Run results

Waveform (0-10 ns)

1_not_gate waveform

Layout Reports

1_not_gate routing 1_not_gate placement 1_not_gate worst path

Routing, Placement, Worst path

2. Full Adder

Run results

Waveform (0-10 ns)

2_full_adder waveform

Layout Reports

2_full_adder routing 2_full_adder placement 2_full_adder worst path

Routing, Placement, Worst path

3. N Adder

Run results

Waveform (0-10 ns)

3_n_adder waveform

Layout Reports

3_n_adder routing 3_n_adder placement 3_n_adder worst path

Routing, Placement, Worst path

4. Alu

Run results

Waveform (0-10 ns)

4_alu waveform

Layout Reports

4_alu routing 4_alu placement 4_alu worst path

Routing, Placement, Worst path

8. Flip Flop

Run results

Waveform (0-10 ns)

8_flip_flop waveform

Layout Reports

8_flip_flop routing 8_flip_flop placement 8_flip_flop worst path

Routing, Placement, Worst path

9. Up Counter

Run results

Waveform (0-10 ns)

9_up_counter waveform

Layout Reports

9_up_counter routing 9_up_counter placement 9_up_counter worst path

Routing, Placement, Worst path

11. Parallel To Serial

Run results

Waveform (0-10 ns)

11_parallel_to_serial waveform

Layout Reports

11_parallel_to_serial routing 11_parallel_to_serial placement 11_parallel_to_serial worst path

Routing, Placement, Worst path

12. Down Counter

Run results

Waveform (0-10 ns)

12_down_counter waveform

Layout Reports

12_down_counter routing 12_down_counter placement 12_down_counter worst path

Routing, Placement, Worst path

13. Uart Rx

Run results

Waveform (0-10 ns)

13_uart_rx waveform

Layout Reports

13_uart_rx routing 13_uart_rx placement 13_uart_rx worst path

Routing, Placement, Worst path

14. Uart Tx

Run results

Waveform (0-10 ns)

14_uart_tx waveform

Layout Reports

14_uart_tx routing 14_uart_tx placement 14_uart_tx worst path

Routing, Placement, Worst path

15. Uart Echo

Run results

Waveform (0-10 ns)

15_uart_echo waveform

Layout Reports

15_uart_echo routing 15_uart_echo placement 15_uart_echo worst path

Routing, Placement, Worst path

16. Fir Filter

Run results

Waveform (0-10 ns)

16_fir_filter waveform

Layout Reports

16_fir_filter routing 16_fir_filter placement 16_fir_filter worst path

Routing, Placement, Worst path

17. Sys Fir Filter

Run results

Waveform (0-10 ns)

17_sys_fir_filter waveform

Layout Reports

17_sys_fir_filter routing 17_sys_fir_filter placement 17_sys_fir_filter worst path

Routing, Placement, Worst path

18. Reduction Tree Min

Run results

Waveform (0-10 ns)

18_reduction_tree_min waveform

Layout Reports

18_reduction_tree_min routing 18_reduction_tree_min placement 18_reduction_tree_min worst path

Routing, Placement, Worst path