551 PVTMonitorSuite

551 : PVTMonitorSuite

Design render
  • Author: Susumu Yamazaki
  • Description: PVTMonitorSuite: A fully digital, modular suite for measuring gate delays, flip-flop timings, and clock skew under varying process, voltage, and temperature conditions.
  • GitHub repository
  • Open in 3D viewer
  • Clock: 50000000 Hz

How it works

PVTMonitorSuite integrates ring oscillators and flip-flop-based measurement circuits to quantify the timing characteristics of digital logic.

The suite supports the following measurements:

  • An inverter-based ring oscillator provides high-resolution estimates of gate propagation delay of an inverter ($t_{pd, INV}$).
  • A NAND2-based ring oscillator provides high-resolution estimates of gate propagation delay of NAND2 ($t_{pd, NAND2}$).
  • Standard, DICE, and LEAP-DICE D flip-flops measure clock-to-Q and setup timing ($t_{clkq} + t_{setup}$).
  • Clock skew timing ($t_{skew}$) is determined using a time digitizer between two clock signals.

High-speed counters driven by the ring oscillators convert these delays into digital values, enabling precise evaluation of process, voltage, and temperature variations on a fully digital, open-access platform.

To meet TinyTapeout’s requirements, no standard cells from the GF180MCU PDK process are used, and the design passes all strict error and warning checks.

How to test

Measure $t_{pd, INV}$

  1. Connect uo_out[0] to your equipment to measure frequency.
  2. Turn on ui_in[0].
  3. Measure the frequency.
  4. Calculate $t_{pd, INV} = \frac{1}{32 \times 51 \times f}$.

Measure $t_{pd, NAND2}$

  1. Connect uo_out[1] to your equipment to measure frequency.
  2. Turn on ui_in[0].
  3. Measure the frequency.
  4. Calculate $t_{pd, NAND2} = \frac{1}{32 \times 41 \times f}$.

Measure $t_{clkq} + t_{setup}$ of standard D-FF

  1. Connect ui_in[1] to a device that generates exactly 50 MHz.
  2. Set ui_in[7:5] to 3'b000, to choose measurement of $t_{clkq} + t_{setup}$.
  3. Turn off ui_in[3].
  4. Turn off ui_in[2] to reset.
  5. Turn on ui_in[2].
  6. Turn on ui_in[3] to start.
  7. Read uio.
  8. Calculate $t_{clkq} + t_{setup} = \frac{uio \times 20}{16} - 2 \times t_{pd, NAND2}$.

Measure $t_{clkq} + t_{setup}$ of DICE D-FF

  1. Connect ui_in[1] to a device that generates exactly 50 MHz.
  2. Set ui_in[7:5] to 3'b001, to choose measurement of $t_{clkq} + t_{setup}$.
  3. Turn off ui_in[3].
  4. Turn off ui_in[2] to reset.
  5. Turn on ui_in[2].
  6. Turn on ui_in[3] to start.
  7. Read uio.
  8. Calculate $t_{clkq} + t_{setup} = \frac{uio \times 20}{16}$.

Measure $t_{clkq} + t_{setup}$ of Leap DICE D-FF

  1. Connect ui_in[1] to a device that generates exactly 50 MHz.
  2. Set ui_in[7:5] to 3'b011, to choose measurement of $t_{clkq} + t_{setup}$.
  3. Turn off ui_in[3].
  4. Turn off ui_in[2] to reset.
  5. Turn on ui_in[2].
  6. Turn on ui_in[3] to start.
  7. Read uio.
  8. Calculate $t_{clkq} + t_{setup} = \frac{uio \times 20}{16}$.

Measure $t_{skew}$

  1. Connect ui_in[1] to a device that generates exactly 50 MHz.
  2. Connect ui_in[4] to a device of the target clock.
  3. Set ui_in[7:5] to 3'b100, to choose measurement of $t_{skew}$.
  4. Turn off ui_in[2] to reset.
  5. Turn on ui_in[2] to start.
  6. Read uio.
  7. Calculate $t_{skew} = uio \times t_{pd, INV}$.

External hardware

  • An equipment to measure frequency.
  • A device that generates a precise 50 MHz signal, such as a ceramic resonator.
  • A device that generates the target clock.

IO

#InputOutputBidirectional
0enable_ring_oscinv_ring_osc_signalcounter_output[0]
1measurement_clocknand2_ring_osc_signalcounter_output[1]
2reset_counter_ncounter_output[2]
3d_inputcounter_output[3]
4target_clockcounter_output[4]
5select[0]counter_output[5]
6select[1]counter_output[6]
7select[2]counter_output[7]

Chip location

Controller Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux tt_um_chip_rom (Chip ROM) tt_um_factory_test (Tiny Tapeout Factory Test) tt_um_htfab_asicle2 (Asicle v2) tt_um_urish_simon (Simon Says memory game) tt_um_dlmiles_ringosc_5inv (Ring Oscillator (5 inverter)) tt_um_rejunity_vga_logo (VGA Tiny Logo) tt_um_rejunity_sn76489 (Classic 8-bit era Programmable Sound Generator SN76489) tt_um_wokwi_392873974467527681 (PILIPINAS_IC) tt_um_wokwi_442081253563458561 (PRISM 8 with TinySnake) tt_um_waferspace_vga_screensaver (Wafer.space Logo VGA Screensaver) tt_um_rejunity_z80 (Zilog Z80) tt_um_MichaelBell_tinyQV (TinyQV Risc-V SoC) tt_um_calonso88_spi_i2c_reg_bank (Register bank accessible through SPI and I2C) tt_um_htfab_caterpillar (Simon's Caterpillar) tt_um_gf0p2_faust_top (Silly-Faust) tt_um_htfab_cells (Cell mux) tt_um_zedtc1_top (Zedulo TestChip1) tt_um_essen (2x2 MAC Systolic array with DFT) tt_um_BLE_RX (SCµM-BLE-RX) tt_um_kianV_rv32ima_uLinux_SoC (KianV uLinux SoC) tt_um_schoeberl_wildcat (Wildcat RISC-V) tt_um_vga_clock (VGA clock) tt_um_digital_clock_example (7-Segment Digital Desk Clock) tt_um_rejunity_vga_test01 (VGA Drop (audio/visual demo)) tt_um_a1k0n_nyancat (VGA Nyan Cat) tt_um_proppy_megabytebeat (megabytebeat) tt_um_javibajocero_top (MarcoPolo) tt_um_kercrafter_leds_racer (LEDs Racer) tt_um_noritsuna_CAN_CTRL (CAN Controller for Rocket) tt_um_algofoogle_raybox_zero (raybox-zero TTGF0p2 edition) tt_um_flummer_ltc (Linear Timecode (LTC) generator) tt_um_dlmiles_bad_synchronizer (Example of Bad Synchronizer) tt_um_multi_bit_puf_wrapper (One Bit PUF) tt_um_algofoogle_vgaringosc (Ring osc on VGA) tt_um_lisa (LISA 8-Bit Microcontroller) tt_um_mmorri22_lockpick_game (Notre Dame - Lockpick Game TT Example) tt_um_simple_riscv (Simple RISC-V) tt_um_mmorri22_cse_30342 (Notre Dame - CSE 30342 - DIC - Advanced FSM Final Project Example) tt_um_zacky1972_PVTMonitorSuite (PVTMonitorSuite) tt_um_SophusAndreassen_dogbattle (Dog Battle Game) tt_um_frequency_counter (Frequency Counter SSD1306 OLED) tt_um_wokwi_445338187869298689 (WokwiPWM) tt_um_kbeckmann_flame (Flame demo) tt_um_2048_vga_game (2048 sliding tile puzzle game (VGA)) tt_um_spi_cpu_top (Super-Simple-SPI-CPU) tt_um_urish_usb_cdc (USB CDC (Serial) Device) tt_um_htfab_vga_tester (Video mode tester) tt_um_dlmiles_ddr_throughput_test (DDR throughput and flop aperature test) tt_um_dlmiles_loopback (GF180MCU loopback tile with input skew measurement) tt_um_thezoq2_quickscope (Quickscope) tt_um_MATTHIAS_M_PAL_TOP_WRAPPER (easy PAL) tt_um_htfab_rotfpga2 (ROTFPGA v2)