This repository contains some analog/digital IPs implemented using Open-Source PDKs by GF180nm MCU technology for Caravel OpenMPW shuttle.
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.
You need the following set of tools installed to be able to view and test all implemented blocks:
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: |
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: |
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 |
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 |
For digital part: