README.md

GlobalFoundries 180nm MCU Analog/Digital IPs for Caravel-GFMPW1

License CI Caravel Build

Table of contents

Introduction

This repository contains some analog/digital IPs implemented using Open-Source PDKs by GF180nm MCU technology for Caravel OpenMPW shuttle.

Project Overview

The primary objective of this project was to implement an analog wrapper includes some IPs like Low-dropout regulators (LDO), oscillators, Band-Gap-Refrenece (BGR) and some different amplifiers using 180nm technology, each one of them has its own IOs to be tested separately. On the other hand, we have iplemented some digital periperals like USB, UART, RTC, and so on. All digital IPs have an interface to communicate with the RISCV core of the chip, each one of them has its own address and pins.

Prerequisites

You need the following set of tools installed to be able to view and test all implemented blocks:

  • ngspice 40+
  • Klayout 0.28.12+
  • OpenLane
  • cocotb 1.7.2+
  • Iverilog 11+
  • GTKWave 3.3+

Analog IPs

  • In this shuttle, we demonstrate design of the following analog IPs:-
No. IP Layout-DRC Layout-LVS Layout-PEX
1 1.8v LDO :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
2 Adjustable-LDO (1.8-5)v :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
3 1v-BGR-LDO_1.8v :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
4 1v-BGR-Adj_LDO :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
5 Pass_device-LDO_1.8v :heavy_check_mark: :heavy_check_mark: :x:
6 Pass_device-Adj_LDO :heavy_check_mark: :heavy_check_mark: :x:
7 Error_Amp-LDO_1.8v :heavy_check_mark: :heavy_check_mark: :x:
8 Error_Amp-Adj_LDO :heavy_check_mark: :heavy_check_mark: :x:
9 Comparator-OpAmp :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
10 Ring-Osc-3.3vFETs :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
11 Ring-Osc-5.0vFETs :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
12 XTAL-Osc-16M :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
13 XTAL-Osc-100M :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
14 Folded_OpAmp :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
15 Telescopic-OpAmp :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
16 Miller_2stage-Opamp :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:

Digital IPs

  • In this shuttle, we demonstrate design of the following analog IPs:-
No. IP Layout-DRC Layout-LVS
1 WB-Buttons-LEDs :heavy_check_mark: :heavy_check_mark:
2 Temp-Sensor :heavy_check_mark: :heavy_check_mark:
3 Delta-Sigma-Mod :heavy_check_mark: :heavy_check_mark:
4 I2C :heavy_check_mark: :heavy_check_mark:
5 USB :heavy_check_mark: :heavy_check_mark:
6 SSPIM :heavy_check_mark: :heavy_check_mark:
7 UART0 :heavy_check_mark: :heavy_check_mark:
8 UART1 :heavy_check_mark: :heavy_check_mark:
9 PWM :heavy_check_mark: :heavy_check_mark:
10 Timer :heavy_check_mark: :heavy_check_mark:
11 RTC :heavy_check_mark: :heavy_check_mark:

SOC Memory Map

  • The following table explains the SOC Memory Map
No. IP ADDR-MAP-R ADDR-MAP-W
1 WB-Buttons-LEDs 0x3000_0000 0x3001_0000
2 Temp-Sensor 0x3000_0008 0x3000_0012
3 Delta-Sigma-Mod 0x3001_0016 0x3001_0032
4 I2C 0x3000_0040 0x3001_0040
5 USB 0x3000_0080 0x3001_0080
6 SSPIM 0x3000_00C0 0x3001_00C0
7 UART0 0x3000_0100 0x3001_0100
8 UART1 0x3000_01C0 0x3001_01C0
9 PWM 0x3000_0240 0x3001_0240
10 Timer 0x3000_0260 0x3001_0260
11 RTC 0x3000_0280 0x3001_0280

USER GPIO Pins

  • The following table explains the user GPIO Pins
GPIO Configuration Block Usage
GPIO_5 INPUT_PULLUP WB-Buttons-LEDs button-0
GPIO_6 INPUT_PULLUP WB-Buttons-LEDs button-1
GPIO_7 OUTPUT WB-Buttons-LEDs leds-0
GPIO_8 OUTPUT WB-Buttons-LEDs leds-1
GPIO_9 OUTPUT WB-Buttons-LEDs wb_clk_i
GPIO_10 OUTPUT WB-Buttons-LEDs user_clk_2
GPIO_11 BIDIRECTIONAL - Empty
GPIO_12 BIDIRECTIONAL - Empty
GPIO_13 OUTPUT Temp sensor Display
GPIO_14 OUTPUT Temp sensor Display
GPIO_15 OUTPUT Temp sensor Display
GPIO_16 OUTPUT Temp sensor Display
GPIO_17 OUTPUT Temp sensor Display
GPIO_18 OUTPUT Temp sensor Display
GPIO_19 OUTPUT Temp sensor Display
GPIO_20 OUTPUT Temp sensor Display
GPIO_21 BIDIRECTIONAL Periperals RXD[0]
GPIO_22 BIDIRECTIONAL Periperals TXD[0]
GPIO_23 BIDIRECTIONAL Periperals RXD[1]
GPIO_24 BIDIRECTIONAL Periperals PWM0
GPIO_25 BIDIRECTIONAL Periperals TXD[1]
GPIO_26 BIDIRECTIONAL - Empty
GPIO_27 BIDIRECTIONAL Periperals SS[3]/PWM1
GPIO_28 BIDIRECTIONAL Periperals SS[2]/PWM2
GPIO_29 BIDIRECTIONAL Periperals SS[1]/PWM3
GPIO_30 BIDIRECTIONAL Periperals SS[0]/PWM4
GPIO_31 BIDIRECTIONAL Periperals MOSI/PWM5
GPIO_32 BIDIRECTIONAL Periperals MISO
GPIO_33 BIDIRECTIONAL Periperals SCK
GPIO_34 BIDIRECTIONAL Periperals usb_dp
GPIO_35 BIDIRECTIONAL Periperals usb_dn
GPIO_36 BIDIRECTIONAL Periperals SDA
GPIO_37 BIDIRECTIONAL Periperals SCL

Reference

For digital part: