Merge branch 'master' into develop
diff --git a/Makefile b/Makefile
index 0071b95..76a245e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# cannot commit files larger than 100 MB to GitHub 
+# cannot commit files larger than 100 MB to GitHub
 FILE_SIZE_LIMIT_MB = 100
 LARGE_FILES := $(shell find ./gds -type f -name "*.gds")
 LARGE_FILES += $(shell find . -type f -size +$(FILE_SIZE_LIMIT_MB)M -not -path "./.git/*" -not -path "./gds/*" -not -path "./openlane/*")
@@ -8,7 +8,6 @@
 ARCHIVES := $(shell find . -type f -name "*.gz")
 ARCHIVE_SOURCES := $(basename $(ARCHIVES))
 
-
 # PDK setup configs
 THREADS ?= $(shell nproc)
 STD_CELL_LIBRARY ?= sky130_fd_sc_hd
@@ -101,6 +100,7 @@
 .PHONY: skywater-pdk
 skywater-pdk: check-env $(PDK_ROOT)/skywater-pdk
 	cd $(PDK_ROOT)/skywater-pdk && \
+		git checkout master && git pull && \
 		git checkout -qf $(SKYWATER_COMMIT)
 
 .PHONY: skywater-library
@@ -118,6 +118,7 @@
 .PHONY: open_pdks
 open_pdks: check-env $(PDK_ROOT)/open_pdks
 	cd $(PDK_ROOT)/open_pdks && \
+		git checkout master && git pull && \
 		git checkout -qf $(OPEN_PDKS_COMMIT)
 
 .PHONY: build-pdk
@@ -134,6 +135,16 @@
 		$(MAKE) && \
 		$(MAKE) install-local
 
+.RECIPE: manifest
+manifest:
+	cd verilog/rtl/ && \
+	find * -type f ! -name "user_*.v" ! -name "manifest" ! -name "README" ! -name "defines.v" -exec shasum {} \; > manifest && \
+	cd ../../maglef/ && \
+	shasum *.mag > manifest && \
+	cd ../mag/ && \
+	shasum caravel.mag .magicrc > manifest
+
+
 check-env:
 ifndef PDK_ROOT
 	$(error PDK_ROOT is undefined, please export it before running make)
diff --git a/README.md b/README.md
index 2c77d56..5a4ed66 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@
 Then you need to install the open_pdks prerequisite:
  - [Magic VLSI Layout Tool](http://opencircuitdesign.com/magic/index.html) is needed to run open_pdks -- version >= 8.3.60*
 
- > \* Note: You can avoid the need for the magic prerequisite by using the openlane docker to do the installation step in open_pdks. This [file](https://github.com/efabless/openlane/blob/develop/travisCI/travisBuild.sh) shows how.
+ > \* Note: You can avoid the need for the magic prerequisite by using the openlane docker to do the installation step in open_pdks. This could be done by cloning [openlane](https://github.com/efabless/openlane/tree/master) and running this [script](https://github.com/efabless/openlane/blob/master/travisCI/travisBuild.sh) in the openlane root directrory.
 
 Install the required version of the PDK by running the following commands:
 
@@ -42,6 +42,10 @@
 
 If you will use OpenLANE to harden your design, go through the instructions in this [README.md][0].
 
+You must copy your synthesized gate-level-netlist for `user_project_wrapper` to `verilog/gl/` and overwrite `user_project_wrapper.v`. Otherwise, you can point to it in [info.yaml](info.yaml).
+
+> Note: If you're using openlane to harden your design, you should find the synthesized gate-level-netlist here: `openlane/user_project_wrapper/runs/user_project_wrapper/results/synthesis/user_project_wrapper.synthesis.v`.
+
 Then, you will need to put your design aboard the Caravel chip. Make sure you have the following:
 
 - [Magic VLSI Layout Tool](http://opencircuitdesign.com/magic/index.html) installed on your machine. We may provide a Dockerized version later.\*
@@ -56,7 +60,7 @@
 make
 ```
 
-This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect hundred of thousands of magic DRC violations with the current "development" state of caravel.
+This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect ~100 magic DRC violations with the current "development" state of caravel.
 
 ## Running Make using OpenLANE Magic
 
@@ -82,7 +86,7 @@
 exit
 ```
 
-This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect hundred of thousands of magic DRC violations with the current "development" state of caravel.
+This should merge the GDSes using magic and you'll end up with your version of `./gds/caravel.gds`. You should expect ~100 magic DRC violations with the current "development" state of caravel.
 
 ## Required Directory Structure
 
diff --git a/gds/advSeal_6um_gen.gds.gz b/gds/advSeal_6um_gen.gds.gz
index dc88df8..290be1a 100644
--- a/gds/advSeal_6um_gen.gds.gz
+++ b/gds/advSeal_6um_gen.gds.gz
Binary files differ
diff --git a/gds/sram_1rw1r_32_256_8_sky130.gds.gz b/gds/sram_1rw1r_32_256_8_sky130.gds.gz
index bab8b50..ed01511 100644
--- a/gds/sram_1rw1r_32_256_8_sky130.gds.gz
+++ b/gds/sram_1rw1r_32_256_8_sky130.gds.gz
Binary files differ
diff --git a/gds/storage.gds.gz b/gds/storage.gds.gz
index a5ad7ec..f093f63 100644
--- a/gds/storage.gds.gz
+++ b/gds/storage.gds.gz
Binary files differ
diff --git a/mag/advSeal_6um_gen.mag b/mag/advSeal_6um_gen.mag
index 6892cc3..9d77488 100644
--- a/mag/advSeal_6um_gen.mag
+++ b/mag/advSeal_6um_gen.mag
@@ -4,22 +4,22 @@
 use seal_ring_corner_abstract seal_ring_corner_abstract_0
 timestamp 1584566221
 transform 1 0 0 0 1 0
-box 0 0 160716 265712
+box 0 0 180000 260000
 use seal_ring_corner_abstract seal_ring_corner_abstract_3
 timestamp 1584566221
-transform -1 0 321432 0 1 0
-box 0 0 160716 265712
+transform -1 0 360000 0 1 0
+box 0 0 180000 260000
 use seal_ring_corner_abstract seal_ring_corner_abstract_1
 timestamp 1584566221
-transform 1 0 0 0 -1 531424
-box 0 0 160716 265712
+transform 1 0 0 0 -1 520000
+box 0 0 180000 260000
 use seal_ring_corner_abstract seal_ring_corner_abstract_2
 timestamp 1584566221
-transform -1 0 321432 0 -1 531424
-box 0 0 160716 265712
+transform -1 0 360000 0 -1 520000
+box 0 0 180000 260000
 << properties >>
 string LEFview no_prefix
-string GDS_FILE advSeal_6um_gen.gds
+string GDS_FILE ../gds/advSeal_6um_gen.gds
 string GDS_START 0
-string FIXED_BBOX 0 0 321432 531424
+string FIXED_BBOX 0 0 360000 520000
 << end >>
diff --git a/mag/seal_ring_corner_abstract.mag b/mag/seal_ring_corner_abstract.mag
index 6c30cd5..3b795bd 100644
--- a/mag/seal_ring_corner_abstract.mag
+++ b/mag/seal_ring_corner_abstract.mag
@@ -1,25 +1,33 @@
 magic
 tech sky130A
-timestamp 1584566221
-<< psubstratepdiff >>
-rect 145 1110 355 265712
-tri 145 900 355 1110 ne
-tri 355 900 652 1197 sw
-tri 355 652 603 900 ne
-rect 603 652 652 900
-tri 652 652 900 900 sw
-tri 603 355 900 652 ne
-tri 900 355 1197 652 sw
-tri 900 145 1110 355 ne
-rect 1110 145 160716 355
+timestamp 1605459841
+<< psubdiff >>
+rect 145 1334 199 260000
+rect 299 1334 355 260000
+rect 145 1197 355 1334
+rect 145 1037 531 1197
+rect 145 998 652 1037
+rect 253 900 652 998
+rect 355 797 792 900
+rect 453 795 792 797
+rect 453 690 900 795
+rect 565 652 900 690
+rect 565 582 1049 652
+rect 663 523 1049 582
+rect 663 480 1197 523
+rect 775 366 1197 480
+rect 862 355 1197 366
+rect 862 299 180000 355
+rect 862 270 1511 299
+rect 985 199 1511 270
+rect 985 145 180000 199
+<< psubdiffcont >>
+rect 199 1334 299 260000
+rect 1511 199 180000 299
 << locali >>
-tri 100 383 217 500 se
-rect 217 383 383 500
-tri 383 383 500 500 sw
-rect 100 217 500 383
-tri 100 100 217 217 ne
-rect 217 100 383 217
-tri 383 100 500 217 nw
+rect 199 1214 299 1334
+rect 100 100 500 500
+rect 1437 199 1511 299
 << metal1 >>
 rect 275 325 325 420
 rect 180 275 420 325
diff --git a/mpw-one-a.md b/mpw-one-a.md
index 064d08c..78606c9 100644
--- a/mpw-one-a.md
+++ b/mpw-one-a.md
@@ -5,9 +5,9 @@
 Please stick to version `v0.0.0-303-g3d7617a`
 (commit hash: `3d7617a1acb92ea883539bcf22a632d6361a5de4`)
 ```
-git clone https://github.com/google/skywater-pdk.git 
-cd skywater-pdk 
-git checkout v0.0.0-303-g3d7617a 
+git clone https://github.com/google/skywater-pdk.git
+cd skywater-pdk
+git checkout v0.0.0-303-g3d7617a
 git submodule update --init libraries/sky130_fd_sc_hd/latest
 git submodule update --init libraries/sky130_fd_sc_hvl/latest
 git submodule update --init libraries/sky130_fd_sc_hs/latest
@@ -20,14 +20,14 @@
 
 ## open_pdks:
 
-Please stick to the `mpw-one-a` tag.
+Please stick to the [mpw-one-a](https://github.com/RTimothyEdwards/open_pdks/tree/mpw-one-a) tag.
 ```
 git clone https://github.com/RTimothyEdwards/open_pdks.git -b mpw-one-a
 ```
 
 ## OpenLane:
 
-Please stick to the `mpw-one-a` tag.
+Please stick to the [mpw-one-a](https://github.com/efabless/openlane/tree/mpw-one-a) tag.
 ```
 git clone https://github.com/efabless/openlane.git -b mpw-one-a
 ```
@@ -44,13 +44,19 @@
 make
 ```
 
-## Caravel: 
+## Caravel:
 
 Please stick to the `mpw-one-a` tag.
 ```
 git clone https://github.com/efabless/caravel.git -b mpw-one-a
 ```
 
+## Open_mpw_precheck:
+Please run the offline [precheck](https://github.com/efabless/open_mpw_precheck):
+```
+git clone https://github.com/efabless/open_mpw_precheck.git
+```
+
 ## Notes
 
 - If you have already successfully hardened your blocks and have a clean
diff --git a/openlane/user_project_wrapper/interactive.tcl b/openlane/user_project_wrapper/interactive.tcl
index 394f62b..2e34172 100644
--- a/openlane/user_project_wrapper/interactive.tcl
+++ b/openlane/user_project_wrapper/interactive.tcl
@@ -10,7 +10,7 @@
 
 place_io_ol
 
-set ::env(FP_DEF_TEMPATE) $script_dir/../../def/user_project_wrapper_empty.def
+set ::env(FP_DEF_TEMPLATE) $script_dir/../../def/user_project_wrapper_empty.def
 
 apply_def_template
 
diff --git a/scripts/compositor.py b/scripts/compositor.py
new file mode 100755
index 0000000..9e50ab9
--- /dev/null
+++ b/scripts/compositor.py
@@ -0,0 +1,118 @@
+#!/bin/env python3
+#
+# compositor.py ---
+#
+#    Compose the final GDS for caravel from the caravel GDS, seal ring
+#    GDS, and fill GDS.
+#
+
+import sys
+import os
+import re
+import subprocess
+
+def usage():
+    print("compositor.py [layout_name] [-keep]")
+    return 0
+
+if __name__ == '__main__':
+
+    if len(sys.argv) == 1:
+        usage()
+        sys.exit(0)
+
+    optionlist = []
+    arguments = []
+
+    debugmode = False
+    keepmode = False
+
+    for option in sys.argv[1:]:
+        if option.find('-', 0) == 0:
+            optionlist.append(option)
+        else:
+            arguments.append(option)
+
+    if len(arguments) > 1:
+        print("Wrong number of arguments given to compositor.py.")
+        usage()
+        sys.exit(0)
+
+    if len(arguments) == 1:
+        project = arguments[0]
+    else:
+        project = 'caravel'
+
+    if '-debug' in optionlist:
+        debugmode = True
+    if '-keep' in optionlist:
+        keepmode = True
+
+    magdir = '../mag'
+    rcfile = magdir + '/.magicrc'
+
+    with open(magdir + '/compose_final.tcl', 'w') as ofile:
+        print('#!/bin/env wish', file=ofile)
+        print('drc off', file=ofile)
+
+        print('load ' + project + ' -dereference', file=ofile)
+        print('select top cell', file=ofile)
+
+        # Ceate a cell to represent the generated fill.  There are
+        # no magic layers corresponding to the fill shape data, and
+        # it's gigabytes anyway, so we don't want to deal with any
+        # actual data.  So it's just a placeholder.
+
+        print('set bbox [box values]', file=ofile)
+        print('load ' + project + '_fill_pattern', file=ofile)
+        print('snap internal', file=ofile)
+        print('box values {*}$bbox', file=ofile)
+        print('paint comment', file=ofile)
+        print('property GDS_FILE ../gds/' + project + '_fill_pattern.gds', file=ofile)
+        print('property GDS_START 0', file=ofile)
+        print('property FIXED_BBOX "$bbox"', file=ofile)
+
+        # Now go back to the project top level and place the fill cell.
+        print('load ' + project, file=ofile)
+        print('select top cell', file=ofile)	
+        print('getcell ' + project + '_fill_pattern child 0 0', file=ofile)
+
+        # Move existing origin to (6um, 6um) for seal ring placement
+        print('move origin -6um -6um', file=ofile)
+
+        # Read in abstract view of seal ring
+        print('box position 0 0', file=ofile)
+        print('getcell advSeal_6um_gen', file=ofile)
+
+        # Generate final GDS
+        print('puts stdout "Writing final GDS. . . "', file=ofile)
+        print('flush stdout', file=ofile)
+        print('gds write ../gds/' + project + '_final.gds', file=ofile)
+        print('quit -noprompt', file=ofile)
+
+    myenv = os.environ.copy()
+    # Abstract views are appropriate for final composition
+    myenv['MAGTYPE'] = 'maglef'
+
+    mproc = subprocess.run(['magic', '-dnull', '-noconsole',
+		'-rcfile', rcfile, magdir + '/compose_final.tcl'],
+		stdin = subprocess.DEVNULL,
+		stdout = subprocess.PIPE,
+		stderr = subprocess.PIPE,
+		cwd = magdir,
+		env = myenv,
+		universal_newlines = True)
+    if mproc.stdout:
+        for line in mproc.stdout.splitlines():
+            print(line)
+    if mproc.stderr:
+        print('Error message output from magic:')
+        for line in mproc.stderr.splitlines():
+            print(line)
+        if mproc.returncode != 0:
+            print('ERROR:  Magic exited with status ' + str(mproc.returncode))
+
+    if not keepmode:
+        os.remove(magdir + '/compose_final.tcl')
+
+    exit(0)
diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py
new file mode 100755
index 0000000..0a84a48
--- /dev/null
+++ b/scripts/generate_fill.py
@@ -0,0 +1,96 @@
+#!/bin/env python3
+#
+# generate_fill.py ---
+#
+#    Run the fill generation on the caravel top level.
+#
+
+import sys
+import os
+import re
+import subprocess
+
+def usage():
+    print("generate_fill.py [layout_name] [-keep]")
+    return 0
+
+if __name__ == '__main__':
+
+    if len(sys.argv) == 1:
+        usage()
+        sys.exit(0)
+
+    optionlist = []
+    arguments = []
+
+    debugmode = False
+    keepmode = False
+
+    for option in sys.argv[1:]:
+        if option.find('-', 0) == 0:
+            optionlist.append(option)
+        else:
+            arguments.append(option)
+
+    if len(arguments) > 1:
+        print("Wrong number of arguments given to generate_fill.py.")
+        usage()
+        sys.exit(0)
+
+    if len(arguments) == 1:
+        project = arguments[0]
+    else:
+        project = 'caravel'
+
+    if '-debug' in optionlist:
+        debugmode = True
+    if '-keep' in optionlist:
+        keepmode = True
+
+    magdir = '../mag'
+    rcfile = magdir + '/.magicrc'
+
+    with open(magdir + '/generate_fill.tcl', 'w') as ofile:
+        print('#!/bin/env wish', file=ofile)
+        print('drc off', file=ofile)
+        print('load ' + project + ' -dereference', file=ofile)
+        print('select top cell', file=ofile)
+        print('expand', file=ofile)
+
+        # Flatten into a cell with a new name
+        print('puts stdout "Flattening layout. . . "', file=ofile)
+        print('flatten -nolabels ' + project + '_fill_pattern', file=ofile)
+        print('load ' + project + '_fill_pattern', file=ofile)
+
+        # Remove any GDS_FILE reference
+        print('property GDS_FILE ""', file=ofile)
+        print('cif ostyle wafflefill', file=ofile)
+        print('puts stdout "Writing GDS. . . "', file=ofile)
+        print('gds write ../gds/' + project + '_fill_pattern.gds', file=ofile)
+        print('quit -noprompt', file=ofile)
+
+    myenv = os.environ.copy()
+    myenv['MAGTYPE'] = 'mag'
+
+    mproc = subprocess.run(['magic', '-dnull', '-noconsole',
+		'-rcfile', rcfile, magdir + '/generate_fill.tcl'],
+		stdin = subprocess.DEVNULL,
+		stdout = subprocess.PIPE,
+		stderr = subprocess.PIPE,
+		cwd = magdir,
+		env = myenv,
+		universal_newlines = True)
+    if mproc.stdout:
+        for line in mproc.stdout.splitlines():
+            print(line)
+    if mproc.stderr:
+        print('Error message output from magic:')
+        for line in mproc.stderr.splitlines():
+            print(line)
+        if mproc.returncode != 0:
+            print('ERROR:  Magic exited with status ' + str(mproc.returncode))
+
+    if not keepmode:
+        os.remove(magdir + '/generate_fill.tcl')
+
+    exit(0)
diff --git a/verilog/dv/caravel/mgmt_soc/timer/Makefile b/verilog/dv/caravel/mgmt_soc/timer/Makefile
index 641a453..a62f01c 100644
--- a/verilog/dv/caravel/mgmt_soc/timer/Makefile
+++ b/verilog/dv/caravel/mgmt_soc/timer/Makefile
@@ -1,5 +1,6 @@
 FIRMWARE_PATH = ../..
-RTL_PATH = ../../../../rtl
+VERILOG_PATH = ../../../..
+RTL_PATH = $(VERILOG_PATH)/rtl
 IP_PATH = ../../../../ip
 BEHAVIOURAL_MODELS = ../../ 
 
@@ -7,6 +8,8 @@
 GCC_PREFIX?=riscv32-unknown-elf
 PDK_PATH?=/ef/tech/SW/sky130A
 
+SIM?=RTL
+
 .SUFFIXES:
 
 PATTERN = timer
diff --git a/verilog/dv/caravel/mgmt_soc/timer/timer.c b/verilog/dv/caravel/mgmt_soc/timer/timer.c
index c3a8dc4..0ebd8cb 100644
--- a/verilog/dv/caravel/mgmt_soc/timer/timer.c
+++ b/verilog/dv/caravel/mgmt_soc/timer/timer.c
@@ -55,7 +55,7 @@
 	reg_mprj_io_6  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_5  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_4  = GPIO_MODE_MGMT_STD_OUTPUT;
-	reg_mprj_io_3  = GPIO_MODE_MGMT_STD_OUTPUT;
+	// reg_mprj_io_3  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_2  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_1  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_0  = GPIO_MODE_MGMT_STD_OUTPUT;
diff --git a/verilog/dv/caravel/mgmt_soc/timer/timer_tb.v b/verilog/dv/caravel/mgmt_soc/timer/timer_tb.v
index acb6798..64cf850 100644
--- a/verilog/dv/caravel/mgmt_soc/timer/timer_tb.v
+++ b/verilog/dv/caravel/mgmt_soc/timer/timer_tb.v
@@ -62,6 +62,8 @@
 	assign checkbits = mprj_io[37:32];
 	assign countbits = mprj_io[31:0];
 
+	assign mprj_io[3] = 1'b1;  // Force CSB high.
+
 	wire flash_csb;
 	wire flash_clk;
 	wire flash_io0;
@@ -78,32 +80,32 @@
 		`endif
 		/* Add checks here */
 		wait(checkbits == 6'h01);
-		$display("   countbits = 0x%x (should be 0xdcba7cf3)", countbits);
-		if(countbits !== 32'hdcba7cf3) begin
+		$display("   countbits = 0x%x (should be 0xdcba7cfb)", countbits);
+		if(countbits !== 32'hdcba7cfb) begin
 		    $display("Monitor: Test Timer Failed");
 		    $finish;
 		end
 		wait(checkbits == 6'h02);
-		$display("   countbits = 0x%x (should be 0x11)", countbits);
-		if(countbits !== 32'h11) begin
+		$display("   countbits = 0x%x (should be 0x19)", countbits);
+		if(countbits !== 32'h19) begin
 		    $display("Monitor: Test Timer Failed");
 		    $finish;
 		end
 		wait(checkbits == 6'h03);
 		$display("   countbits = %x (should be 0x0f)", countbits);
-		if(countbits !== 32'h0f) begin
+		if(countbits !== ((32'h0f) | (3'b100))) begin
 		    $display("Monitor: Test Timer Failed");
 		    $finish;
 		end
 		wait(checkbits == 6'h04);
 		$display("   countbits = %x (should be 0x0f)", countbits);
-		if(countbits !== 32'h0f) begin
+		if(countbits !== ((32'h0f) | (3'b100))) begin
 		    $display("Monitor: Test Timer Failed");
 		    $finish;
 		end
 		wait(checkbits == 6'h05);
-		$display("   countbits = %x (should be 0x12b4)", countbits);
-		if(countbits !== 32'h12b4) begin
+		$display("   countbits = %x (should be 0x12bc)", countbits);
+		if(countbits !== 32'h12bc) begin
 		    $display("Monitor: Test Timer Failed");
 		    $finish;
 		end
diff --git a/verilog/dv/caravel/mgmt_soc/timer2/timer2.c b/verilog/dv/caravel/mgmt_soc/timer2/timer2.c
index a8c65e0..aa98cce 100644
--- a/verilog/dv/caravel/mgmt_soc/timer2/timer2.c
+++ b/verilog/dv/caravel/mgmt_soc/timer2/timer2.c
@@ -56,7 +56,7 @@
 	reg_mprj_io_6  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_5  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_4  = GPIO_MODE_MGMT_STD_OUTPUT;
-	reg_mprj_io_3  = GPIO_MODE_MGMT_STD_OUTPUT;
+	// reg_mprj_io_3  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_2  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_1  = GPIO_MODE_MGMT_STD_OUTPUT;
 	reg_mprj_io_0  = GPIO_MODE_MGMT_STD_OUTPUT;
diff --git a/verilog/dv/caravel/mgmt_soc/timer2/timer2_tb.v b/verilog/dv/caravel/mgmt_soc/timer2/timer2_tb.v
index 750635d..96aab4e 100644
--- a/verilog/dv/caravel/mgmt_soc/timer2/timer2_tb.v
+++ b/verilog/dv/caravel/mgmt_soc/timer2/timer2_tb.v
@@ -78,14 +78,14 @@
 		`endif
 		/* Add checks here */
 		wait(checkbits == 6'h01);
-		$display("   countbits = 0x%x (should be 0xdcba7cf3)", countbits);
-		if(countbits !== 32'hdcba7cf3) begin
+		$display("   countbits = 0x%x (should be 0xdcba7cfb)", countbits);
+		if(countbits !== 32'hdcba7cfb) begin
 		    $display("Monitor: Test Timer2 (RTL) Failed");
 		    $finish;
 		end
 		wait(checkbits == 6'h02);
-		$display("   countbits = 0x%x (should be 0x11)", countbits);
-		if(countbits !== 32'h11) begin
+		$display("   countbits = 0x%x (should be 0x19)", countbits);
+		if(countbits !== 32'h19) begin
 		    $display("Monitor: Test Timer2 (RTL) Failed");
 		    $finish;
 		end
@@ -102,22 +102,22 @@
 		    $finish;
 		end
 		wait(checkbits == 6'h05);
-		$display("   countbits = %x (should be 0x12b4)", countbits);
-		if(countbits !== 32'h12b4) begin
+		$display("   countbits = %x (should be 0x12bc)", countbits);
+		if(countbits !== 32'h12bc) begin
 		    $display("Monitor: Test Timer2 (RTL) Failed");
 		    $finish;
 		end
 
 		wait(checkbits == 6'h06);
-		$display("   countbits = %x (should be 0x0055)", countbits);
-		if(countbits !== 32'h0055) begin
+		$display("   countbits = %x (should be 0x005d)", countbits);
+		if(countbits !== 32'h005d) begin
 		    $display("Monitor: Test Timer2 (RTL) Failed");
 		    $finish;
 		end
 
 		wait(checkbits == 6'h07);
-		$display("   countbits = %x (should be 0x0000)", countbits);
-		if(countbits !== 32'h0000) begin
+		$display("   countbits = %x (should be 0x0008)", countbits);
+		if(countbits !== 32'h0008) begin
 		    $display("Monitor: Test Timer2 (RTL) Failed");
 		    $finish;
 		end
@@ -130,8 +130,8 @@
 		end
 
 		wait(checkbits == 6'h10);
-		$display("   countbits = %x (should be 0x0002)", countbits);
-		if(countbits !== 32'h0002) begin
+		$display("   countbits = %x (should be 0x000a)", countbits);
+		if(countbits !== 32'h000a) begin
 		    $display("Monitor: Test Timer2 (RTL) Failed");
 		    $finish;
 		end
@@ -170,6 +170,8 @@
 	assign VDD3V3 = power1;
 	assign VDD1V8 = power2;
 	assign VSS = 1'b0;
+	
+	assign mprj_io[3] = 1'b1;  // Force CSB high.
 
 	// These are the mappings of mprj_io GPIO pads that are set to
 	// specific functions on startup:
diff --git a/verilog/gl/chip_io.v b/verilog/gl/chip_io.v
index b6b5e70..9fcb5ac 100644
--- a/verilog/gl/chip_io.v
+++ b/verilog/gl/chip_io.v
@@ -824,6 +824,8 @@
   wire vssio_q;
   wire xresloop;
   sky130_ef_io__gpiov2_pad_wrapped clock_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(vssd),
     .ANALOG_POL(vssd),
     .ANALOG_SEL(vssd),
@@ -841,15 +843,28 @@
     .IN_H(),
     .OE_N(vccd),
     .OUT(vssd),
+    .PAD(clock),
     .PAD_A_ESD_0_H(),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(vssd),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(loop_clock),
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(vssd)
   );
   sky130_ef_io__gpiov2_pad_wrapped flash_clk_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(vssd),
     .ANALOG_POL(vssd),
     .ANALOG_SEL(vssd),
@@ -867,15 +882,28 @@
     .IN_H(),
     .OE_N(flash_clk_oeb_core),
     .OUT(flash_clk_core),
+    .PAD(flash_clk),
     .PAD_A_ESD_0_H(),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(vssd),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(loop_flash_clk),
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(vssd)
   );
   sky130_ef_io__gpiov2_pad_wrapped flash_csb_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(vssd),
     .ANALOG_POL(vssd),
     .ANALOG_SEL(vssd),
@@ -893,15 +921,28 @@
     .IN_H(),
     .OE_N(flash_csb_oeb_core),
     .OUT(flash_csb_core),
+    .PAD(flash_csb),
     .PAD_A_ESD_0_H(),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(vssd),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(loop_flash_csb),
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(vssd)
   );
   sky130_ef_io__gpiov2_pad_wrapped flash_io0_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(vssd),
     .ANALOG_POL(vssd),
     .ANALOG_SEL(vssd),
@@ -919,15 +960,28 @@
     .IN_H(),
     .OE_N(flash_io0_oeb_core),
     .OUT(flash_io0_do_core),
+    .PAD(flash_io0),
     .PAD_A_ESD_0_H(),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(vssd),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(loop_flash_io0),
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(vssd)
   );
   sky130_ef_io__gpiov2_pad_wrapped flash_io1_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(vssd),
     .ANALOG_POL(vssd),
     .ANALOG_SEL(vssd),
@@ -945,15 +999,28 @@
     .IN_H(),
     .OE_N(flash_io1_oeb_core),
     .OUT(flash_io1_do_core),
+    .PAD(flash_io1),
     .PAD_A_ESD_0_H(),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(vssd),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(loop_flash_io1),
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(vssd)
   );
   sky130_ef_io__gpiov2_pad_wrapped gpio_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(vssd),
     .ANALOG_POL(vssd),
     .ANALOG_SEL(vssd),
@@ -971,67 +1038,190 @@
     .IN_H(),
     .OE_N(gpio_outenb_core),
     .OUT(gpio_out_core),
+    .PAD(gpio),
     .PAD_A_ESD_0_H(),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(vssd),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(loop_gpio),
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(vssd)
   );
   sky130_ef_io__corner_pad \mgmt_corner[0]  (
-    .VCCHIB()
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__corner_pad \mgmt_corner[1]  (
-    .VCCHIB()
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vccd_lvc_pad mgmt_vccd_lvclamp_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .BDY2_B2B(vssa),
     .DRN_LVC1(vccd),
     .DRN_LVC2(vccd),
     .SRC_BDY_LVC1(vssio),
     .SRC_BDY_LVC2(vssd),
-    .VCCD(vccd)
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vdda_hvc_pad mgmt_vdda_hvclamp_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vdda),
     .SRC_BDY_HVC(vssa),
-    .VDDA(vdda)
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vddio_hvc_pad \mgmt_vddio_hvclamp_pad[0]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vddio),
     .SRC_BDY_HVC(vssio),
-    .VDDIO(vddio)
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vddio_hvc_pad \mgmt_vddio_hvclamp_pad[1]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vddio),
     .SRC_BDY_HVC(vssio),
-    .VDDIO(vddio)
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vssa_hvc_pad mgmt_vssa_hvclamp_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vdda),
     .SRC_BDY_HVC(vssa),
-    .VSSA(vssa)
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vssd_lvc_pad mgmt_vssd_lvclmap_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .BDY2_B2B(vssa),
     .DRN_LVC1(vccd),
     .DRN_LVC2(vccd),
     .SRC_BDY_LVC1(vssio),
     .SRC_BDY_LVC2(vssd),
-    .VSSD(vssd)
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vssio_hvc_pad \mgmt_vssio_hvclamp_pad[0]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vddio),
     .SRC_BDY_HVC(vssio),
-    .VSSIO(vssio)
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vssio_hvc_pad \mgmt_vssio_hvclamp_pad[1]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vddio),
     .SRC_BDY_HVC(vssio),
-    .VSSIO(vssio)
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[0]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[0]),
     .ANALOG_POL(mprj_io_analog_pol[0]),
     .ANALOG_SEL(mprj_io_analog_sel[0]),
@@ -1049,15 +1239,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[0]),
     .OUT(mprj_io_out[0]),
+    .PAD(mprj_io[0]),
     .PAD_A_ESD_0_H(\mprj_pads.no_connect[0] ),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[0]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[0] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[0])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[10]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[10]),
     .ANALOG_POL(mprj_io_analog_pol[10]),
     .ANALOG_SEL(mprj_io_analog_sel[10]),
@@ -1075,15 +1278,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[10]),
     .OUT(mprj_io_out[10]),
+    .PAD(mprj_io[10]),
     .PAD_A_ESD_0_H(mprj_analog_io[3]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[10]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[10] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[10])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[11]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[11]),
     .ANALOG_POL(mprj_io_analog_pol[11]),
     .ANALOG_SEL(mprj_io_analog_sel[11]),
@@ -1101,15 +1317,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[11]),
     .OUT(mprj_io_out[11]),
+    .PAD(mprj_io[11]),
     .PAD_A_ESD_0_H(mprj_analog_io[4]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[11]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[11] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[11])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[12]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[12]),
     .ANALOG_POL(mprj_io_analog_pol[12]),
     .ANALOG_SEL(mprj_io_analog_sel[12]),
@@ -1127,15 +1356,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[12]),
     .OUT(mprj_io_out[12]),
+    .PAD(mprj_io[12]),
     .PAD_A_ESD_0_H(mprj_analog_io[5]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[12]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[12] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[12])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[13]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[13]),
     .ANALOG_POL(mprj_io_analog_pol[13]),
     .ANALOG_SEL(mprj_io_analog_sel[13]),
@@ -1153,15 +1395,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[13]),
     .OUT(mprj_io_out[13]),
+    .PAD(mprj_io[13]),
     .PAD_A_ESD_0_H(mprj_analog_io[6]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[13]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[13] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[13])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[14]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[14]),
     .ANALOG_POL(mprj_io_analog_pol[14]),
     .ANALOG_SEL(mprj_io_analog_sel[14]),
@@ -1179,15 +1434,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[14]),
     .OUT(mprj_io_out[14]),
+    .PAD(mprj_io[14]),
     .PAD_A_ESD_0_H(mprj_analog_io[7]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[14]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[14] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[14])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[15]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[15]),
     .ANALOG_POL(mprj_io_analog_pol[15]),
     .ANALOG_SEL(mprj_io_analog_sel[15]),
@@ -1205,15 +1473,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[15]),
     .OUT(mprj_io_out[15]),
+    .PAD(mprj_io[15]),
     .PAD_A_ESD_0_H(mprj_analog_io[8]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[15]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[15] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[15])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[16]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[16]),
     .ANALOG_POL(mprj_io_analog_pol[16]),
     .ANALOG_SEL(mprj_io_analog_sel[16]),
@@ -1231,15 +1512,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[16]),
     .OUT(mprj_io_out[16]),
+    .PAD(mprj_io[16]),
     .PAD_A_ESD_0_H(mprj_analog_io[9]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[16]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[16] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[16])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[17]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[17]),
     .ANALOG_POL(mprj_io_analog_pol[17]),
     .ANALOG_SEL(mprj_io_analog_sel[17]),
@@ -1257,15 +1551,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[17]),
     .OUT(mprj_io_out[17]),
+    .PAD(mprj_io[17]),
     .PAD_A_ESD_0_H(mprj_analog_io[10]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[17]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[17] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[17])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[1]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[1]),
     .ANALOG_POL(mprj_io_analog_pol[1]),
     .ANALOG_SEL(mprj_io_analog_sel[1]),
@@ -1283,15 +1590,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[1]),
     .OUT(mprj_io_out[1]),
+    .PAD(mprj_io[1]),
     .PAD_A_ESD_0_H(\mprj_pads.no_connect[1] ),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[1]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[1] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[1])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[2]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[2]),
     .ANALOG_POL(mprj_io_analog_pol[2]),
     .ANALOG_SEL(mprj_io_analog_sel[2]),
@@ -1309,15 +1629,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[2]),
     .OUT(mprj_io_out[2]),
+    .PAD(mprj_io[2]),
     .PAD_A_ESD_0_H(\mprj_pads.no_connect[2] ),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[2]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[2] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[2])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[3]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[3]),
     .ANALOG_POL(mprj_io_analog_pol[3]),
     .ANALOG_SEL(mprj_io_analog_sel[3]),
@@ -1335,15 +1668,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[3]),
     .OUT(mprj_io_out[3]),
+    .PAD(mprj_io[3]),
     .PAD_A_ESD_0_H(\mprj_pads.no_connect[3] ),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[3]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[3] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[3])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[4]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[4]),
     .ANALOG_POL(mprj_io_analog_pol[4]),
     .ANALOG_SEL(mprj_io_analog_sel[4]),
@@ -1361,15 +1707,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[4]),
     .OUT(mprj_io_out[4]),
+    .PAD(mprj_io[4]),
     .PAD_A_ESD_0_H(\mprj_pads.no_connect[4] ),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[4]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[4] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[4])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[5]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[5]),
     .ANALOG_POL(mprj_io_analog_pol[5]),
     .ANALOG_SEL(mprj_io_analog_sel[5]),
@@ -1387,15 +1746,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[5]),
     .OUT(mprj_io_out[5]),
+    .PAD(mprj_io[5]),
     .PAD_A_ESD_0_H(\mprj_pads.no_connect[5] ),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[5]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[5] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[5])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[6]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[6]),
     .ANALOG_POL(mprj_io_analog_pol[6]),
     .ANALOG_SEL(mprj_io_analog_sel[6]),
@@ -1413,15 +1785,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[6]),
     .OUT(mprj_io_out[6]),
+    .PAD(mprj_io[6]),
     .PAD_A_ESD_0_H(\mprj_pads.no_connect[6] ),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[6]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[6] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[6])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[7]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[7]),
     .ANALOG_POL(mprj_io_analog_pol[7]),
     .ANALOG_SEL(mprj_io_analog_sel[7]),
@@ -1439,15 +1824,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[7]),
     .OUT(mprj_io_out[7]),
+    .PAD(mprj_io[7]),
     .PAD_A_ESD_0_H(mprj_analog_io[0]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[7]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[7] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[7])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[8]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[8]),
     .ANALOG_POL(mprj_io_analog_pol[8]),
     .ANALOG_SEL(mprj_io_analog_sel[8]),
@@ -1465,15 +1863,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[8]),
     .OUT(mprj_io_out[8]),
+    .PAD(mprj_io[8]),
     .PAD_A_ESD_0_H(mprj_analog_io[1]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[8]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[8] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[8])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area1_io_pad[9]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[9]),
     .ANALOG_POL(mprj_io_analog_pol[9]),
     .ANALOG_SEL(mprj_io_analog_sel[9]),
@@ -1491,15 +1902,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[9]),
     .OUT(mprj_io_out[9]),
+    .PAD(mprj_io[9]),
     .PAD_A_ESD_0_H(mprj_analog_io[2]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[9]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[9] ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[9])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[0]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[18]),
     .ANALOG_POL(mprj_io_analog_pol[18]),
     .ANALOG_SEL(mprj_io_analog_sel[18]),
@@ -1517,15 +1941,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[18]),
     .OUT(mprj_io_out[18]),
+    .PAD(mprj_io[18]),
     .PAD_A_ESD_0_H(mprj_analog_io[11]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[18]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[18] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[18])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[10]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[28]),
     .ANALOG_POL(mprj_io_analog_pol[28]),
     .ANALOG_SEL(mprj_io_analog_sel[28]),
@@ -1543,15 +1980,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[28]),
     .OUT(mprj_io_out[28]),
+    .PAD(mprj_io[28]),
     .PAD_A_ESD_0_H(mprj_analog_io[21]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[28]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[28] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[28])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[11]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[29]),
     .ANALOG_POL(mprj_io_analog_pol[29]),
     .ANALOG_SEL(mprj_io_analog_sel[29]),
@@ -1569,15 +2019,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[29]),
     .OUT(mprj_io_out[29]),
+    .PAD(mprj_io[29]),
     .PAD_A_ESD_0_H(mprj_analog_io[22]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[29]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[29] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[29])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[12]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[30]),
     .ANALOG_POL(mprj_io_analog_pol[30]),
     .ANALOG_SEL(mprj_io_analog_sel[30]),
@@ -1595,15 +2058,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[30]),
     .OUT(mprj_io_out[30]),
+    .PAD(mprj_io[30]),
     .PAD_A_ESD_0_H(mprj_analog_io[23]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[30]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[30] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[30])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[13]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[31]),
     .ANALOG_POL(mprj_io_analog_pol[31]),
     .ANALOG_SEL(mprj_io_analog_sel[31]),
@@ -1621,15 +2097,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[31]),
     .OUT(mprj_io_out[31]),
+    .PAD(mprj_io[31]),
     .PAD_A_ESD_0_H(mprj_analog_io[24]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[31]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[31] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[31])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[14]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[32]),
     .ANALOG_POL(mprj_io_analog_pol[32]),
     .ANALOG_SEL(mprj_io_analog_sel[32]),
@@ -1647,15 +2136,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[32]),
     .OUT(mprj_io_out[32]),
+    .PAD(mprj_io[32]),
     .PAD_A_ESD_0_H(mprj_analog_io[25]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[32]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[32] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[32])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[15]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[33]),
     .ANALOG_POL(mprj_io_analog_pol[33]),
     .ANALOG_SEL(mprj_io_analog_sel[33]),
@@ -1673,15 +2175,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[33]),
     .OUT(mprj_io_out[33]),
+    .PAD(mprj_io[33]),
     .PAD_A_ESD_0_H(mprj_analog_io[26]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[33]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[33] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[33])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[16]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[34]),
     .ANALOG_POL(mprj_io_analog_pol[34]),
     .ANALOG_SEL(mprj_io_analog_sel[34]),
@@ -1699,15 +2214,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[34]),
     .OUT(mprj_io_out[34]),
+    .PAD(mprj_io[34]),
     .PAD_A_ESD_0_H(mprj_analog_io[27]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[34]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[34] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[34])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[17]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[35]),
     .ANALOG_POL(mprj_io_analog_pol[35]),
     .ANALOG_SEL(mprj_io_analog_sel[35]),
@@ -1725,15 +2253,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[35]),
     .OUT(mprj_io_out[35]),
+    .PAD(mprj_io[35]),
     .PAD_A_ESD_0_H(mprj_analog_io[28]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[35]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[35] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[35])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[18]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[36]),
     .ANALOG_POL(mprj_io_analog_pol[36]),
     .ANALOG_SEL(mprj_io_analog_sel[36]),
@@ -1751,15 +2292,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[36]),
     .OUT(mprj_io_out[36]),
+    .PAD(mprj_io[36]),
     .PAD_A_ESD_0_H(mprj_analog_io[29]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[36]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[36] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[36])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[19]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[37]),
     .ANALOG_POL(mprj_io_analog_pol[37]),
     .ANALOG_SEL(mprj_io_analog_sel[37]),
@@ -1777,15 +2331,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[37]),
     .OUT(mprj_io_out[37]),
+    .PAD(mprj_io[37]),
     .PAD_A_ESD_0_H(mprj_analog_io[30]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[37]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[37] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[37])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[1]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[19]),
     .ANALOG_POL(mprj_io_analog_pol[19]),
     .ANALOG_SEL(mprj_io_analog_sel[19]),
@@ -1803,15 +2370,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[19]),
     .OUT(mprj_io_out[19]),
+    .PAD(mprj_io[19]),
     .PAD_A_ESD_0_H(mprj_analog_io[12]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[19]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[19] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[19])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[2]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[20]),
     .ANALOG_POL(mprj_io_analog_pol[20]),
     .ANALOG_SEL(mprj_io_analog_sel[20]),
@@ -1829,15 +2409,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[20]),
     .OUT(mprj_io_out[20]),
+    .PAD(mprj_io[20]),
     .PAD_A_ESD_0_H(mprj_analog_io[13]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[20]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[20] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[20])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[3]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[21]),
     .ANALOG_POL(mprj_io_analog_pol[21]),
     .ANALOG_SEL(mprj_io_analog_sel[21]),
@@ -1855,15 +2448,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[21]),
     .OUT(mprj_io_out[21]),
+    .PAD(mprj_io[21]),
     .PAD_A_ESD_0_H(mprj_analog_io[14]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[21]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[21] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[21])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[4]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[22]),
     .ANALOG_POL(mprj_io_analog_pol[22]),
     .ANALOG_SEL(mprj_io_analog_sel[22]),
@@ -1881,15 +2487,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[22]),
     .OUT(mprj_io_out[22]),
+    .PAD(mprj_io[22]),
     .PAD_A_ESD_0_H(mprj_analog_io[15]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[22]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[22] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[22])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[5]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[23]),
     .ANALOG_POL(mprj_io_analog_pol[23]),
     .ANALOG_SEL(mprj_io_analog_sel[23]),
@@ -1907,15 +2526,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[23]),
     .OUT(mprj_io_out[23]),
+    .PAD(mprj_io[23]),
     .PAD_A_ESD_0_H(mprj_analog_io[16]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[23]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[23] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[23])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[6]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[24]),
     .ANALOG_POL(mprj_io_analog_pol[24]),
     .ANALOG_SEL(mprj_io_analog_sel[24]),
@@ -1933,15 +2565,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[24]),
     .OUT(mprj_io_out[24]),
+    .PAD(mprj_io[24]),
     .PAD_A_ESD_0_H(mprj_analog_io[17]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[24]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[24] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[24])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[7]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[25]),
     .ANALOG_POL(mprj_io_analog_pol[25]),
     .ANALOG_SEL(mprj_io_analog_sel[25]),
@@ -1959,15 +2604,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[25]),
     .OUT(mprj_io_out[25]),
+    .PAD(mprj_io[25]),
     .PAD_A_ESD_0_H(mprj_analog_io[18]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[25]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[25] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[25])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[8]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[26]),
     .ANALOG_POL(mprj_io_analog_pol[26]),
     .ANALOG_SEL(mprj_io_analog_sel[26]),
@@ -1985,15 +2643,28 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[26]),
     .OUT(mprj_io_out[26]),
+    .PAD(mprj_io[26]),
     .PAD_A_ESD_0_H(mprj_analog_io[19]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[26]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[26] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[26])
   );
   sky130_ef_io__gpiov2_pad_wrapped \mprj_pads.area2_io_pad[9]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .ANALOG_EN(mprj_io_analog_en[27]),
     .ANALOG_POL(mprj_io_analog_pol[27]),
     .ANALOG_SEL(mprj_io_analog_sel[27]),
@@ -2011,219 +2682,252 @@
     .IN_H(),
     .OE_N(mprj_io_oeb[27]),
     .OUT(mprj_io_out[27]),
+    .PAD(mprj_io[27]),
     .PAD_A_ESD_0_H(mprj_analog_io[20]),
     .PAD_A_ESD_1_H(),
     .PAD_A_NOESD_H(),
     .SLOW(mprj_io_slow_sel[27]),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(\mprj_pads.loop1_io[27] ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .VTRIP_SEL(mprj_io_vtrip_sel[27])
   );
   sky130_fd_io__top_xres4v2 resetb_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DISABLE_PULLUP_H(vssio),
     .ENABLE_H(porb_h),
     .ENABLE_VDDIO(vccd),
     .EN_VDDIO_SIG_H(vssio),
     .FILT_IN_H(vssio),
     .INP_SEL_H(vssio),
+    .PAD(resetb),
     .PAD_A_ESD_H(xresloop),
     .PULLUP_H(vssio),
     .TIE_HI_ESD(),
     .TIE_LO_ESD(),
     .TIE_WEAK_HI_H(xresloop),
+    .VCCD(vccd),
+    .VCCHIB(vccd),
+    .VDDA(vdda),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa),
+    .VSSD(vssd),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio),
     .XRES_H_N(resetb_core_h)
   );
   sky130_ef_io__corner_pad user1_corner (
-    .VCCHIB()
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vccd_lvc_pad user1_vccd_lvclamp_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .BDY2_B2B(vssio),
     .DRN_LVC1(vccd1),
     .DRN_LVC2(vccd1),
     .SRC_BDY_LVC1(vssd1),
     .SRC_BDY_LVC2(vssd),
-    .VCCD(vccd1)
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vdda_hvc_pad \user1_vdda_hvclamp_pad[0]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vdda1),
     .SRC_BDY_HVC(vssa1),
-    .VDDA(vdda1)
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vdda_hvc_pad \user1_vdda_hvclamp_pad[1]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vdda1),
     .SRC_BDY_HVC(vssa1),
-    .VDDA(vdda1)
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vssa_hvc_pad \user1_vssa_hvclamp_pad[0]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vdda1),
     .SRC_BDY_HVC(vssa1),
-    .VSSA(vssa1)
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vssa_hvc_pad \user1_vssa_hvclamp_pad[1]  (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vdda1),
     .SRC_BDY_HVC(vssa1),
-    .VSSA(vssa1)
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vssd_lvc_pad user1_vssd_lvclmap_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .BDY2_B2B(vssio),
     .DRN_LVC1(vccd1),
     .DRN_LVC2(vccd1),
     .SRC_BDY_LVC1(vssd1),
     .SRC_BDY_LVC2(vssd),
-    .VSSD(vssd1)
+    .VCCD(vccd1),
+    .VCCHIB(vccd),
+    .VDDA(vdda1),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa1),
+    .VSSD(vssd1),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__corner_pad user2_corner (
-    .VCCHIB()
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vccd_lvc_pad user2_vccd_lvclamp_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .BDY2_B2B(vssio),
     .DRN_LVC1(vccd2),
     .DRN_LVC2(vccd2),
     .SRC_BDY_LVC1(vssd2),
     .SRC_BDY_LVC2(vssd),
-    .VCCD(vccd2)
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vdda_hvc_pad user2_vdda_hvclamp_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vdda2),
     .SRC_BDY_HVC(vssa2),
-    .VDDA(vdda2)
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vssa_hvc_pad user2_vssa_hvclamp_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .DRN_HVC(vdda2),
     .SRC_BDY_HVC(vssa2),
-    .VSSA(vssa2)
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
   sky130_ef_io__vssd_lvc_pad user2_vssd_lvclmap_pad (
+    .AMUXBUS_A(\mprj_pads.analog_a ),
+    .AMUXBUS_B(\mprj_pads.analog_b ),
     .BDY2_B2B(vssio),
     .DRN_LVC1(vccd2),
     .DRN_LVC2(vccd2),
     .SRC_BDY_LVC1(vssd2),
     .SRC_BDY_LVC2(vssd),
-    .VSSD(vssd2)
+    .VCCD(vccd2),
+    .VCCHIB(vccd),
+    .VDDA(vdda2),
+    .VDDIO(vddio),
+    .VDDIO_Q(\mprj_pads.vddio_q ),
+    .VSSA(vssa2),
+    .VSSD(vssd2),
+    .VSSIO(vssio),
+    .VSSIO_Q(\mprj_pads.vssio_q ),
+    .VSWITCH(vddio)
   );
-  assign \mprj_pads.inp_dis[25]  = mprj_io_inp_dis[25];
-  assign \mprj_pads.inp_dis[24]  = mprj_io_inp_dis[24];
-  assign \mprj_pads.inp_dis[23]  = mprj_io_inp_dis[23];
-  assign \mprj_pads.inp_dis[22]  = mprj_io_inp_dis[22];
-  assign \mprj_pads.inp_dis[21]  = mprj_io_inp_dis[21];
-  assign \mprj_pads.inp_dis[20]  = mprj_io_inp_dis[20];
-  assign \mprj_pads.inp_dis[19]  = mprj_io_inp_dis[19];
-  assign \mprj_pads.inp_dis[18]  = mprj_io_inp_dis[18];
-  assign \mprj_pads.inp_dis[17]  = mprj_io_inp_dis[17];
-  assign \mprj_pads.inp_dis[16]  = mprj_io_inp_dis[16];
-  assign \mprj_pads.inp_dis[15]  = mprj_io_inp_dis[15];
-  assign \mprj_pads.inp_dis[14]  = mprj_io_inp_dis[14];
-  assign \mprj_pads.inp_dis[13]  = mprj_io_inp_dis[13];
-  assign \mprj_pads.inp_dis[12]  = mprj_io_inp_dis[12];
-  assign \mprj_pads.inp_dis[11]  = mprj_io_inp_dis[11];
-  assign \mprj_pads.inp_dis[10]  = mprj_io_inp_dis[10];
-  assign \mprj_pads.inp_dis[9]  = mprj_io_inp_dis[9];
-  assign \mprj_pads.inp_dis[8]  = mprj_io_inp_dis[8];
-  assign \mprj_pads.inp_dis[7]  = mprj_io_inp_dis[7];
-  assign \mprj_pads.inp_dis[6]  = mprj_io_inp_dis[6];
-  assign \mprj_pads.inp_dis[5]  = mprj_io_inp_dis[5];
-  assign \mprj_pads.inp_dis[4]  = mprj_io_inp_dis[4];
-  assign \mprj_pads.inp_dis[3]  = mprj_io_inp_dis[3];
-  assign \mprj_pads.inp_dis[2]  = mprj_io_inp_dis[2];
-  assign \mprj_pads.inp_dis[1]  = mprj_io_inp_dis[1];
-  assign \mprj_pads.inp_dis[0]  = mprj_io_inp_dis[0];
-  assign \mprj_pads.analog_sel[37]  = mprj_io_analog_sel[37];
-  assign \mprj_pads.analog_sel[36]  = mprj_io_analog_sel[36];
-  assign \mprj_pads.analog_sel[35]  = mprj_io_analog_sel[35];
-  assign \mprj_pads.analog_sel[34]  = mprj_io_analog_sel[34];
-  assign \mprj_pads.analog_sel[33]  = mprj_io_analog_sel[33];
-  assign \mprj_pads.analog_sel[32]  = mprj_io_analog_sel[32];
-  assign \mprj_pads.analog_sel[31]  = mprj_io_analog_sel[31];
-  assign \mprj_pads.analog_sel[30]  = mprj_io_analog_sel[30];
-  assign \mprj_pads.analog_sel[29]  = mprj_io_analog_sel[29];
-  assign \mprj_pads.analog_sel[28]  = mprj_io_analog_sel[28];
-  assign \mprj_pads.analog_sel[27]  = mprj_io_analog_sel[27];
-  assign \mprj_pads.analog_sel[26]  = mprj_io_analog_sel[26];
-  assign \mprj_pads.analog_sel[25]  = mprj_io_analog_sel[25];
-  assign \mprj_pads.analog_sel[24]  = mprj_io_analog_sel[24];
-  assign \mprj_pads.analog_sel[23]  = mprj_io_analog_sel[23];
-  assign \mprj_pads.analog_sel[22]  = mprj_io_analog_sel[22];
-  assign \mprj_pads.analog_sel[21]  = mprj_io_analog_sel[21];
-  assign \mprj_pads.analog_sel[20]  = mprj_io_analog_sel[20];
-  assign \mprj_pads.analog_sel[19]  = mprj_io_analog_sel[19];
-  assign \mprj_pads.analog_sel[18]  = mprj_io_analog_sel[18];
-  assign \mprj_pads.analog_sel[17]  = mprj_io_analog_sel[17];
-  assign \mprj_pads.analog_sel[16]  = mprj_io_analog_sel[16];
-  assign \mprj_pads.analog_sel[15]  = mprj_io_analog_sel[15];
-  assign \mprj_pads.analog_sel[14]  = mprj_io_analog_sel[14];
-  assign \mprj_pads.analog_sel[13]  = mprj_io_analog_sel[13];
-  assign \mprj_pads.analog_sel[12]  = mprj_io_analog_sel[12];
-  assign \mprj_pads.analog_sel[11]  = mprj_io_analog_sel[11];
-  assign \mprj_pads.analog_sel[10]  = mprj_io_analog_sel[10];
-  assign \mprj_pads.analog_sel[9]  = mprj_io_analog_sel[9];
-  assign \mprj_pads.analog_sel[8]  = mprj_io_analog_sel[8];
-  assign \mprj_pads.analog_sel[7]  = mprj_io_analog_sel[7];
-  assign \mprj_pads.analog_sel[6]  = mprj_io_analog_sel[6];
-  assign \mprj_pads.analog_sel[5]  = mprj_io_analog_sel[5];
-  assign \mprj_pads.analog_sel[4]  = mprj_io_analog_sel[4];
-  assign \mprj_pads.analog_sel[3]  = mprj_io_analog_sel[3];
-  assign \mprj_pads.analog_sel[2]  = mprj_io_analog_sel[2];
-  assign \mprj_pads.analog_sel[1]  = mprj_io_analog_sel[1];
-  assign \mprj_pads.analog_sel[0]  = mprj_io_analog_sel[0];
-  assign \mprj_pads.oeb[37]  = mprj_io_oeb[37];
-  assign \mprj_pads.oeb[36]  = mprj_io_oeb[36];
-  assign \mprj_pads.oeb[35]  = mprj_io_oeb[35];
-  assign \mprj_pads.oeb[34]  = mprj_io_oeb[34];
-  assign \mprj_pads.oeb[33]  = mprj_io_oeb[33];
-  assign \mprj_pads.oeb[32]  = mprj_io_oeb[32];
-  assign \mprj_pads.oeb[31]  = mprj_io_oeb[31];
-  assign \mprj_pads.oeb[30]  = mprj_io_oeb[30];
-  assign \mprj_pads.oeb[29]  = mprj_io_oeb[29];
-  assign \mprj_pads.oeb[28]  = mprj_io_oeb[28];
-  assign \mprj_pads.oeb[27]  = mprj_io_oeb[27];
-  assign \mprj_pads.oeb[26]  = mprj_io_oeb[26];
-  assign \mprj_pads.oeb[25]  = mprj_io_oeb[25];
-  assign \mprj_pads.oeb[24]  = mprj_io_oeb[24];
-  assign \mprj_pads.oeb[23]  = mprj_io_oeb[23];
-  assign \mprj_pads.oeb[22]  = mprj_io_oeb[22];
-  assign \mprj_pads.oeb[21]  = mprj_io_oeb[21];
-  assign \mprj_pads.oeb[20]  = mprj_io_oeb[20];
-  assign \mprj_pads.oeb[19]  = mprj_io_oeb[19];
-  assign \mprj_pads.oeb[18]  = mprj_io_oeb[18];
-  assign \mprj_pads.oeb[17]  = mprj_io_oeb[17];
-  assign \mprj_pads.oeb[16]  = mprj_io_oeb[16];
-  assign \mprj_pads.oeb[15]  = mprj_io_oeb[15];
-  assign \mprj_pads.oeb[14]  = mprj_io_oeb[14];
-  assign \mprj_pads.oeb[13]  = mprj_io_oeb[13];
-  assign \mprj_pads.oeb[12]  = mprj_io_oeb[12];
-  assign \mprj_pads.oeb[11]  = mprj_io_oeb[11];
-  assign \mprj_pads.oeb[10]  = mprj_io_oeb[10];
-  assign \mprj_pads.oeb[9]  = mprj_io_oeb[9];
-  assign \mprj_pads.oeb[8]  = mprj_io_oeb[8];
-  assign \mprj_pads.oeb[7]  = mprj_io_oeb[7];
-  assign \mprj_pads.oeb[6]  = mprj_io_oeb[6];
-  assign \mprj_pads.oeb[5]  = mprj_io_oeb[5];
-  assign \mprj_pads.oeb[4]  = mprj_io_oeb[4];
-  assign \mprj_pads.oeb[3]  = mprj_io_oeb[3];
-  assign \mprj_pads.oeb[2]  = mprj_io_oeb[2];
-  assign \mprj_pads.oeb[1]  = mprj_io_oeb[1];
-  assign \mprj_pads.oeb[0]  = mprj_io_oeb[0];
-  assign \mprj_pads.dm[113]  = mprj_io_dm[113];
-  assign \mprj_pads.dm[112]  = mprj_io_dm[112];
-  assign \mprj_pads.dm[111]  = mprj_io_dm[111];
-  assign \mprj_pads.dm[110]  = mprj_io_dm[110];
-  assign \mprj_pads.dm[109]  = mprj_io_dm[109];
-  assign \mprj_pads.dm[108]  = mprj_io_dm[108];
-  assign \mprj_pads.dm[107]  = mprj_io_dm[107];
-  assign \mprj_pads.dm[106]  = mprj_io_dm[106];
-  assign \mprj_pads.dm[105]  = mprj_io_dm[105];
-  assign \mprj_pads.dm[104]  = mprj_io_dm[104];
-  assign \mprj_pads.dm[103]  = mprj_io_dm[103];
-  assign \mprj_pads.dm[102]  = mprj_io_dm[102];
-  assign \mprj_pads.dm[101]  = mprj_io_dm[101];
-  assign \mprj_pads.dm[100]  = mprj_io_dm[100];
-  assign \mprj_pads.dm[99]  = mprj_io_dm[99];
-  assign \mprj_pads.dm[98]  = mprj_io_dm[98];
-  assign \mprj_pads.dm[97]  = mprj_io_dm[97];
-  assign \mprj_pads.dm[96]  = mprj_io_dm[96];
-  assign \mprj_pads.dm[95]  = mprj_io_dm[95];
-  assign \mprj_pads.dm[94]  = mprj_io_dm[94];
-  assign \mprj_pads.dm[93]  = mprj_io_dm[93];
   assign \mprj_pads.dm[92]  = mprj_io_dm[92];
   assign \mprj_pads.dm[91]  = mprj_io_dm[91];
   assign \mprj_pads.dm[90]  = mprj_io_dm[90];
@@ -2317,6 +3021,233 @@
   assign \mprj_pads.dm[2]  = mprj_io_dm[2];
   assign \mprj_pads.dm[1]  = mprj_io_dm[1];
   assign \mprj_pads.dm[0]  = mprj_io_dm[0];
+  assign \mprj_pads.analog_pol[37]  = mprj_io_analog_pol[37];
+  assign \mprj_pads.analog_pol[36]  = mprj_io_analog_pol[36];
+  assign \mprj_pads.analog_pol[35]  = mprj_io_analog_pol[35];
+  assign \mprj_pads.analog_pol[34]  = mprj_io_analog_pol[34];
+  assign \mprj_pads.analog_pol[33]  = mprj_io_analog_pol[33];
+  assign \mprj_pads.analog_pol[32]  = mprj_io_analog_pol[32];
+  assign \mprj_pads.analog_pol[31]  = mprj_io_analog_pol[31];
+  assign \mprj_pads.analog_pol[30]  = mprj_io_analog_pol[30];
+  assign \mprj_pads.analog_pol[29]  = mprj_io_analog_pol[29];
+  assign \mprj_pads.analog_pol[28]  = mprj_io_analog_pol[28];
+  assign \mprj_pads.analog_pol[27]  = mprj_io_analog_pol[27];
+  assign \mprj_pads.analog_pol[26]  = mprj_io_analog_pol[26];
+  assign \mprj_pads.analog_pol[25]  = mprj_io_analog_pol[25];
+  assign \mprj_pads.analog_pol[24]  = mprj_io_analog_pol[24];
+  assign \mprj_pads.analog_pol[23]  = mprj_io_analog_pol[23];
+  assign \mprj_pads.analog_pol[22]  = mprj_io_analog_pol[22];
+  assign \mprj_pads.analog_pol[21]  = mprj_io_analog_pol[21];
+  assign \mprj_pads.analog_pol[20]  = mprj_io_analog_pol[20];
+  assign \mprj_pads.analog_pol[19]  = mprj_io_analog_pol[19];
+  assign \mprj_pads.analog_pol[18]  = mprj_io_analog_pol[18];
+  assign \mprj_pads.analog_pol[17]  = mprj_io_analog_pol[17];
+  assign \mprj_pads.analog_pol[16]  = mprj_io_analog_pol[16];
+  assign \mprj_pads.analog_pol[15]  = mprj_io_analog_pol[15];
+  assign \mprj_pads.analog_pol[14]  = mprj_io_analog_pol[14];
+  assign \mprj_pads.analog_pol[13]  = mprj_io_analog_pol[13];
+  assign \mprj_pads.analog_pol[12]  = mprj_io_analog_pol[12];
+  assign \mprj_pads.analog_pol[11]  = mprj_io_analog_pol[11];
+  assign \mprj_pads.analog_pol[10]  = mprj_io_analog_pol[10];
+  assign \mprj_pads.analog_pol[9]  = mprj_io_analog_pol[9];
+  assign \mprj_pads.analog_pol[8]  = mprj_io_analog_pol[8];
+  assign \mprj_pads.analog_pol[7]  = mprj_io_analog_pol[7];
+  assign \mprj_pads.analog_pol[6]  = mprj_io_analog_pol[6];
+  assign \mprj_pads.analog_pol[5]  = mprj_io_analog_pol[5];
+  assign \mprj_pads.analog_pol[4]  = mprj_io_analog_pol[4];
+  assign \mprj_pads.analog_pol[3]  = mprj_io_analog_pol[3];
+  assign \mprj_pads.analog_pol[2]  = mprj_io_analog_pol[2];
+  assign \mprj_pads.analog_pol[1]  = mprj_io_analog_pol[1];
+  assign \mprj_pads.analog_pol[0]  = mprj_io_analog_pol[0];
+  assign \flash_io1_mode[2]  = flash_io1_ieb_core;
+  assign \flash_io1_mode[1]  = flash_io1_ieb_core;
+  assign \flash_io1_mode[0]  = flash_io1_oeb_core;
+  assign \mprj_pads.hldh_n[37]  = mprj_io_hldh_n[37];
+  assign \mprj_pads.hldh_n[36]  = mprj_io_hldh_n[36];
+  assign \mprj_pads.hldh_n[35]  = mprj_io_hldh_n[35];
+  assign \mprj_pads.hldh_n[34]  = mprj_io_hldh_n[34];
+  assign \mprj_pads.hldh_n[33]  = mprj_io_hldh_n[33];
+  assign \mprj_pads.hldh_n[32]  = mprj_io_hldh_n[32];
+  assign \mprj_pads.hldh_n[31]  = mprj_io_hldh_n[31];
+  assign \mprj_pads.hldh_n[30]  = mprj_io_hldh_n[30];
+  assign \mprj_pads.hldh_n[29]  = mprj_io_hldh_n[29];
+  assign \mprj_pads.hldh_n[28]  = mprj_io_hldh_n[28];
+  assign \mprj_pads.hldh_n[27]  = mprj_io_hldh_n[27];
+  assign \mprj_pads.hldh_n[26]  = mprj_io_hldh_n[26];
+  assign \mprj_pads.hldh_n[25]  = mprj_io_hldh_n[25];
+  assign \mprj_pads.hldh_n[24]  = mprj_io_hldh_n[24];
+  assign \mprj_pads.hldh_n[23]  = mprj_io_hldh_n[23];
+  assign \mprj_pads.hldh_n[22]  = mprj_io_hldh_n[22];
+  assign \mprj_pads.hldh_n[21]  = mprj_io_hldh_n[21];
+  assign \mprj_pads.hldh_n[20]  = mprj_io_hldh_n[20];
+  assign \mprj_pads.hldh_n[19]  = mprj_io_hldh_n[19];
+  assign \mprj_pads.hldh_n[18]  = mprj_io_hldh_n[18];
+  assign \mprj_pads.hldh_n[17]  = mprj_io_hldh_n[17];
+  assign \mprj_pads.hldh_n[16]  = mprj_io_hldh_n[16];
+  assign \mprj_pads.hldh_n[15]  = mprj_io_hldh_n[15];
+  assign \mprj_pads.hldh_n[14]  = mprj_io_hldh_n[14];
+  assign \mprj_pads.hldh_n[13]  = mprj_io_hldh_n[13];
+  assign \mprj_pads.hldh_n[12]  = mprj_io_hldh_n[12];
+  assign \mprj_pads.hldh_n[11]  = mprj_io_hldh_n[11];
+  assign \mprj_pads.hldh_n[10]  = mprj_io_hldh_n[10];
+  assign \mprj_pads.hldh_n[9]  = mprj_io_hldh_n[9];
+  assign \mprj_pads.hldh_n[8]  = mprj_io_hldh_n[8];
+  assign \mprj_pads.hldh_n[7]  = mprj_io_hldh_n[7];
+  assign \mprj_pads.hldh_n[6]  = mprj_io_hldh_n[6];
+  assign \mprj_pads.hldh_n[5]  = mprj_io_hldh_n[5];
+  assign \mprj_pads.hldh_n[4]  = mprj_io_hldh_n[4];
+  assign \mprj_pads.hldh_n[3]  = mprj_io_hldh_n[3];
+  assign \mprj_pads.hldh_n[2]  = mprj_io_hldh_n[2];
+  assign \mprj_pads.hldh_n[1]  = mprj_io_hldh_n[1];
+  assign \mprj_pads.hldh_n[0]  = mprj_io_hldh_n[0];
+  assign \dm_all[2]  = gpio_mode1_core;
+  assign \dm_all[1]  = gpio_mode1_core;
+  assign \dm_all[0]  = gpio_mode0_core;
+  assign \mprj_pads.analog_io[30]  = mprj_analog_io[30];
+  assign \mprj_pads.analog_io[29]  = mprj_analog_io[29];
+  assign \mprj_pads.analog_io[28]  = mprj_analog_io[28];
+  assign \mprj_pads.analog_io[27]  = mprj_analog_io[27];
+  assign \mprj_pads.analog_io[26]  = mprj_analog_io[26];
+  assign \mprj_pads.analog_io[25]  = mprj_analog_io[25];
+  assign \mprj_pads.analog_io[24]  = mprj_analog_io[24];
+  assign \mprj_pads.analog_io[23]  = mprj_analog_io[23];
+  assign \mprj_pads.analog_io[22]  = mprj_analog_io[22];
+  assign \mprj_pads.analog_io[21]  = mprj_analog_io[21];
+  assign \mprj_pads.analog_io[20]  = mprj_analog_io[20];
+  assign \mprj_pads.analog_io[19]  = mprj_analog_io[19];
+  assign \mprj_pads.analog_io[18]  = mprj_analog_io[18];
+  assign \mprj_pads.analog_io[17]  = mprj_analog_io[17];
+  assign \mprj_pads.analog_io[16]  = mprj_analog_io[16];
+  assign \mprj_pads.analog_io[15]  = mprj_analog_io[15];
+  assign \mprj_pads.analog_io[14]  = mprj_analog_io[14];
+  assign \mprj_pads.analog_io[13]  = mprj_analog_io[13];
+  assign \mprj_pads.analog_io[12]  = mprj_analog_io[12];
+  assign \mprj_pads.analog_io[11]  = mprj_analog_io[11];
+  assign \mprj_pads.analog_io[10]  = mprj_analog_io[10];
+  assign \mprj_pads.analog_io[9]  = mprj_analog_io[9];
+  assign \mprj_pads.analog_io[8]  = mprj_analog_io[8];
+  assign \mprj_pads.analog_io[7]  = mprj_analog_io[7];
+  assign \mprj_pads.analog_io[6]  = mprj_analog_io[6];
+  assign \mprj_pads.analog_io[5]  = mprj_analog_io[5];
+  assign \mprj_pads.analog_io[4]  = mprj_analog_io[4];
+  assign \mprj_pads.analog_io[3]  = mprj_analog_io[3];
+  assign \mprj_pads.analog_io[2]  = mprj_analog_io[2];
+  assign \mprj_pads.analog_io[1]  = mprj_analog_io[1];
+  assign \mprj_pads.analog_io[0]  = mprj_analog_io[0];
+  assign \mprj_pads.holdover[37]  = mprj_io_holdover[37];
+  assign \mprj_pads.holdover[36]  = mprj_io_holdover[36];
+  assign \mprj_pads.holdover[35]  = mprj_io_holdover[35];
+  assign \mprj_pads.holdover[34]  = mprj_io_holdover[34];
+  assign \mprj_pads.holdover[33]  = mprj_io_holdover[33];
+  assign \mprj_pads.holdover[32]  = mprj_io_holdover[32];
+  assign \mprj_pads.holdover[31]  = mprj_io_holdover[31];
+  assign \mprj_pads.holdover[30]  = mprj_io_holdover[30];
+  assign \mprj_pads.holdover[29]  = mprj_io_holdover[29];
+  assign \mprj_pads.holdover[28]  = mprj_io_holdover[28];
+  assign \mprj_pads.holdover[27]  = mprj_io_holdover[27];
+  assign \mprj_pads.holdover[26]  = mprj_io_holdover[26];
+  assign \mprj_pads.holdover[25]  = mprj_io_holdover[25];
+  assign \mprj_pads.holdover[24]  = mprj_io_holdover[24];
+  assign \mprj_pads.holdover[23]  = mprj_io_holdover[23];
+  assign \mprj_pads.holdover[22]  = mprj_io_holdover[22];
+  assign \mprj_pads.holdover[21]  = mprj_io_holdover[21];
+  assign \mprj_pads.holdover[20]  = mprj_io_holdover[20];
+  assign \mprj_pads.holdover[19]  = mprj_io_holdover[19];
+  assign \mprj_pads.holdover[18]  = mprj_io_holdover[18];
+  assign \mprj_pads.holdover[17]  = mprj_io_holdover[17];
+  assign \mprj_pads.holdover[16]  = mprj_io_holdover[16];
+  assign \mprj_pads.holdover[15]  = mprj_io_holdover[15];
+  assign \mprj_pads.holdover[14]  = mprj_io_holdover[14];
+  assign \mprj_pads.holdover[13]  = mprj_io_holdover[13];
+  assign \mprj_pads.holdover[12]  = mprj_io_holdover[12];
+  assign \mprj_pads.holdover[11]  = mprj_io_holdover[11];
+  assign \mprj_pads.holdover[10]  = mprj_io_holdover[10];
+  assign \mprj_pads.holdover[9]  = mprj_io_holdover[9];
+  assign \mprj_pads.holdover[8]  = mprj_io_holdover[8];
+  assign \mprj_pads.holdover[7]  = mprj_io_holdover[7];
+  assign \mprj_pads.holdover[6]  = mprj_io_holdover[6];
+  assign \mprj_pads.holdover[5]  = mprj_io_holdover[5];
+  assign \mprj_pads.holdover[4]  = mprj_io_holdover[4];
+  assign \mprj_pads.holdover[3]  = mprj_io_holdover[3];
+  assign \mprj_pads.holdover[2]  = mprj_io_holdover[2];
+  assign \mprj_pads.holdover[1]  = mprj_io_holdover[1];
+  assign \mprj_pads.holdover[0]  = mprj_io_holdover[0];
+  assign \mprj_pads.inp_dis[37]  = mprj_io_inp_dis[37];
+  assign \mprj_pads.inp_dis[36]  = mprj_io_inp_dis[36];
+  assign \mprj_pads.inp_dis[35]  = mprj_io_inp_dis[35];
+  assign \mprj_pads.inp_dis[34]  = mprj_io_inp_dis[34];
+  assign \mprj_pads.inp_dis[33]  = mprj_io_inp_dis[33];
+  assign \mprj_pads.inp_dis[32]  = mprj_io_inp_dis[32];
+  assign \mprj_pads.inp_dis[31]  = mprj_io_inp_dis[31];
+  assign \mprj_pads.inp_dis[30]  = mprj_io_inp_dis[30];
+  assign \mprj_pads.inp_dis[29]  = mprj_io_inp_dis[29];
+  assign \mprj_pads.inp_dis[28]  = mprj_io_inp_dis[28];
+  assign \mprj_pads.inp_dis[27]  = mprj_io_inp_dis[27];
+  assign \mprj_pads.inp_dis[26]  = mprj_io_inp_dis[26];
+  assign \mprj_pads.inp_dis[25]  = mprj_io_inp_dis[25];
+  assign \mprj_pads.inp_dis[24]  = mprj_io_inp_dis[24];
+  assign \mprj_pads.inp_dis[23]  = mprj_io_inp_dis[23];
+  assign \mprj_pads.inp_dis[22]  = mprj_io_inp_dis[22];
+  assign \mprj_pads.inp_dis[21]  = mprj_io_inp_dis[21];
+  assign \mprj_pads.inp_dis[20]  = mprj_io_inp_dis[20];
+  assign \mprj_pads.inp_dis[19]  = mprj_io_inp_dis[19];
+  assign \mprj_pads.inp_dis[18]  = mprj_io_inp_dis[18];
+  assign \mprj_pads.inp_dis[17]  = mprj_io_inp_dis[17];
+  assign \mprj_pads.inp_dis[16]  = mprj_io_inp_dis[16];
+  assign \mprj_pads.inp_dis[15]  = mprj_io_inp_dis[15];
+  assign \mprj_pads.inp_dis[14]  = mprj_io_inp_dis[14];
+  assign \mprj_pads.inp_dis[13]  = mprj_io_inp_dis[13];
+  assign \mprj_pads.inp_dis[12]  = mprj_io_inp_dis[12];
+  assign \mprj_pads.inp_dis[11]  = mprj_io_inp_dis[11];
+  assign \mprj_pads.inp_dis[10]  = mprj_io_inp_dis[10];
+  assign \mprj_pads.inp_dis[9]  = mprj_io_inp_dis[9];
+  assign \mprj_pads.inp_dis[8]  = mprj_io_inp_dis[8];
+  assign \mprj_pads.inp_dis[7]  = mprj_io_inp_dis[7];
+  assign \mprj_pads.inp_dis[6]  = mprj_io_inp_dis[6];
+  assign \mprj_pads.inp_dis[5]  = mprj_io_inp_dis[5];
+  assign \mprj_pads.inp_dis[4]  = mprj_io_inp_dis[4];
+  assign \mprj_pads.inp_dis[3]  = mprj_io_inp_dis[3];
+  assign \mprj_pads.inp_dis[2]  = mprj_io_inp_dis[2];
+  assign \mprj_pads.inp_dis[1]  = mprj_io_inp_dis[1];
+  assign \mprj_pads.inp_dis[0]  = mprj_io_inp_dis[0];
+  assign \mprj_pads.io[37]  = mprj_io[37];
+  assign \mprj_pads.io[36]  = mprj_io[36];
+  assign \mprj_pads.io[35]  = mprj_io[35];
+  assign \mprj_pads.io[34]  = mprj_io[34];
+  assign \mprj_pads.io[33]  = mprj_io[33];
+  assign \mprj_pads.io[32]  = mprj_io[32];
+  assign \mprj_pads.io[31]  = mprj_io[31];
+  assign \mprj_pads.io[30]  = mprj_io[30];
+  assign \mprj_pads.io[29]  = mprj_io[29];
+  assign \mprj_pads.io[28]  = mprj_io[28];
+  assign \mprj_pads.io[27]  = mprj_io[27];
+  assign \mprj_pads.io[26]  = mprj_io[26];
+  assign \mprj_pads.io[25]  = mprj_io[25];
+  assign \mprj_pads.io[24]  = mprj_io[24];
+  assign \mprj_pads.io[23]  = mprj_io[23];
+  assign \mprj_pads.io[22]  = mprj_io[22];
+  assign \mprj_pads.io[21]  = mprj_io[21];
+  assign \mprj_pads.io[20]  = mprj_io[20];
+  assign \mprj_pads.io[19]  = mprj_io[19];
+  assign \mprj_pads.io[18]  = mprj_io[18];
+  assign \mprj_pads.io[17]  = mprj_io[17];
+  assign \mprj_pads.io[16]  = mprj_io[16];
+  assign \mprj_pads.io[15]  = mprj_io[15];
+  assign \mprj_pads.io[14]  = mprj_io[14];
+  assign \mprj_pads.io[13]  = mprj_io[13];
+  assign \mprj_pads.io[12]  = mprj_io[12];
+  assign \mprj_pads.io[11]  = mprj_io[11];
+  assign \mprj_pads.io[10]  = mprj_io[10];
+  assign \mprj_pads.io[9]  = mprj_io[9];
+  assign \mprj_pads.io[8]  = mprj_io[8];
+  assign \mprj_pads.io[7]  = mprj_io[7];
+  assign \mprj_pads.io[6]  = mprj_io[6];
+  assign \mprj_pads.io[5]  = mprj_io[5];
+  assign \mprj_pads.io[4]  = mprj_io[4];
+  assign \mprj_pads.io[3]  = mprj_io[3];
+  assign \mprj_pads.io[2]  = mprj_io[2];
+  assign \mprj_pads.io[1]  = mprj_io[1];
+  assign \mprj_pads.io[0]  = mprj_io[0];
   assign \mprj_pads.vtrip_sel[37]  = mprj_io_vtrip_sel[37];
   assign \mprj_pads.vtrip_sel[36]  = mprj_io_vtrip_sel[36];
   assign \mprj_pads.vtrip_sel[35]  = mprj_io_vtrip_sel[35];
@@ -2393,44 +3324,9 @@
   assign \mprj_pads.ib_mode_sel[2]  = mprj_io_ib_mode_sel[2];
   assign \mprj_pads.ib_mode_sel[1]  = mprj_io_ib_mode_sel[1];
   assign \mprj_pads.ib_mode_sel[0]  = mprj_io_ib_mode_sel[0];
-  assign \mprj_pads.io_out[37]  = mprj_io_out[37];
-  assign \mprj_pads.io_out[36]  = mprj_io_out[36];
-  assign \mprj_pads.io_out[35]  = mprj_io_out[35];
-  assign \mprj_pads.io_out[34]  = mprj_io_out[34];
-  assign \mprj_pads.io_out[33]  = mprj_io_out[33];
-  assign \mprj_pads.io_out[32]  = mprj_io_out[32];
-  assign \mprj_pads.io_out[31]  = mprj_io_out[31];
-  assign \mprj_pads.io_out[30]  = mprj_io_out[30];
-  assign \mprj_pads.io_out[29]  = mprj_io_out[29];
-  assign \mprj_pads.io_out[28]  = mprj_io_out[28];
-  assign \mprj_pads.io_out[27]  = mprj_io_out[27];
-  assign \mprj_pads.io_out[26]  = mprj_io_out[26];
-  assign \mprj_pads.io_out[25]  = mprj_io_out[25];
-  assign \mprj_pads.io_out[24]  = mprj_io_out[24];
-  assign \mprj_pads.io_out[23]  = mprj_io_out[23];
-  assign \mprj_pads.io_out[22]  = mprj_io_out[22];
-  assign \mprj_pads.io_out[21]  = mprj_io_out[21];
-  assign \mprj_pads.io_out[20]  = mprj_io_out[20];
-  assign \mprj_pads.io_out[19]  = mprj_io_out[19];
-  assign \mprj_pads.io_out[18]  = mprj_io_out[18];
-  assign \mprj_pads.io_out[17]  = mprj_io_out[17];
-  assign \mprj_pads.io_out[16]  = mprj_io_out[16];
-  assign \mprj_pads.io_out[15]  = mprj_io_out[15];
-  assign \mprj_pads.io_out[14]  = mprj_io_out[14];
-  assign \mprj_pads.io_out[13]  = mprj_io_out[13];
-  assign \mprj_pads.io_out[12]  = mprj_io_out[12];
-  assign \mprj_pads.io_out[11]  = mprj_io_out[11];
-  assign \mprj_pads.io_out[10]  = mprj_io_out[10];
-  assign \mprj_pads.io_out[9]  = mprj_io_out[9];
-  assign \mprj_pads.io_out[8]  = mprj_io_out[8];
-  assign \mprj_pads.io_out[7]  = mprj_io_out[7];
-  assign \mprj_pads.io_out[6]  = mprj_io_out[6];
-  assign \mprj_pads.io_out[5]  = mprj_io_out[5];
-  assign \mprj_pads.io_out[4]  = mprj_io_out[4];
-  assign \mprj_pads.io_out[3]  = mprj_io_out[3];
-  assign \mprj_pads.io_out[2]  = mprj_io_out[2];
-  assign \mprj_pads.io_out[1]  = mprj_io_out[1];
-  assign \mprj_pads.io_out[0]  = mprj_io_out[0];
+  assign \flash_io0_mode[2]  = flash_io0_ieb_core;
+  assign \flash_io0_mode[1]  = flash_io0_ieb_core;
+  assign \flash_io0_mode[0]  = flash_io0_oeb_core;
   assign \mprj_pads.enh[37]  = mprj_io_enh[37];
   assign \mprj_pads.enh[36]  = mprj_io_enh[36];
   assign \mprj_pads.enh[35]  = mprj_io_enh[35];
@@ -2469,113 +3365,44 @@
   assign \mprj_pads.enh[2]  = mprj_io_enh[2];
   assign \mprj_pads.enh[1]  = mprj_io_enh[1];
   assign \mprj_pads.enh[0]  = mprj_io_enh[0];
-  assign \mprj_pads.hldh_n[37]  = mprj_io_hldh_n[37];
-  assign \mprj_pads.hldh_n[36]  = mprj_io_hldh_n[36];
-  assign \mprj_pads.hldh_n[35]  = mprj_io_hldh_n[35];
-  assign \mprj_pads.hldh_n[34]  = mprj_io_hldh_n[34];
-  assign \mprj_pads.hldh_n[33]  = mprj_io_hldh_n[33];
-  assign \mprj_pads.hldh_n[32]  = mprj_io_hldh_n[32];
-  assign \mprj_pads.hldh_n[31]  = mprj_io_hldh_n[31];
-  assign \mprj_pads.hldh_n[30]  = mprj_io_hldh_n[30];
-  assign \mprj_pads.hldh_n[29]  = mprj_io_hldh_n[29];
-  assign \mprj_pads.hldh_n[28]  = mprj_io_hldh_n[28];
-  assign \mprj_pads.hldh_n[27]  = mprj_io_hldh_n[27];
-  assign \mprj_pads.hldh_n[26]  = mprj_io_hldh_n[26];
-  assign \mprj_pads.hldh_n[25]  = mprj_io_hldh_n[25];
-  assign \mprj_pads.hldh_n[24]  = mprj_io_hldh_n[24];
-  assign \mprj_pads.hldh_n[23]  = mprj_io_hldh_n[23];
-  assign \mprj_pads.hldh_n[22]  = mprj_io_hldh_n[22];
-  assign \mprj_pads.hldh_n[21]  = mprj_io_hldh_n[21];
-  assign \mprj_pads.hldh_n[20]  = mprj_io_hldh_n[20];
-  assign \mprj_pads.hldh_n[19]  = mprj_io_hldh_n[19];
-  assign \mprj_pads.hldh_n[18]  = mprj_io_hldh_n[18];
-  assign \mprj_pads.hldh_n[17]  = mprj_io_hldh_n[17];
-  assign \mprj_pads.hldh_n[16]  = mprj_io_hldh_n[16];
-  assign \mprj_pads.hldh_n[15]  = mprj_io_hldh_n[15];
-  assign \mprj_pads.hldh_n[14]  = mprj_io_hldh_n[14];
-  assign \mprj_pads.hldh_n[13]  = mprj_io_hldh_n[13];
-  assign \mprj_pads.hldh_n[12]  = mprj_io_hldh_n[12];
-  assign \mprj_pads.hldh_n[11]  = mprj_io_hldh_n[11];
-  assign \mprj_pads.hldh_n[10]  = mprj_io_hldh_n[10];
-  assign \mprj_pads.hldh_n[9]  = mprj_io_hldh_n[9];
-  assign \mprj_pads.hldh_n[8]  = mprj_io_hldh_n[8];
-  assign \mprj_pads.hldh_n[7]  = mprj_io_hldh_n[7];
-  assign \mprj_pads.hldh_n[6]  = mprj_io_hldh_n[6];
-  assign \mprj_pads.hldh_n[5]  = mprj_io_hldh_n[5];
-  assign \mprj_pads.hldh_n[4]  = mprj_io_hldh_n[4];
-  assign \mprj_pads.hldh_n[3]  = mprj_io_hldh_n[3];
-  assign \mprj_pads.hldh_n[2]  = mprj_io_hldh_n[2];
-  assign \mprj_pads.hldh_n[1]  = mprj_io_hldh_n[1];
-  assign \mprj_pads.hldh_n[0]  = mprj_io_hldh_n[0];
-  assign \mprj_pads.analog_io[30]  = mprj_analog_io[30];
-  assign \mprj_pads.analog_io[29]  = mprj_analog_io[29];
-  assign \mprj_pads.analog_io[28]  = mprj_analog_io[28];
-  assign \mprj_pads.analog_io[27]  = mprj_analog_io[27];
-  assign \mprj_pads.analog_io[26]  = mprj_analog_io[26];
-  assign \mprj_pads.analog_io[25]  = mprj_analog_io[25];
-  assign \mprj_pads.analog_io[24]  = mprj_analog_io[24];
-  assign \mprj_pads.analog_io[23]  = mprj_analog_io[23];
-  assign \mprj_pads.analog_io[22]  = mprj_analog_io[22];
-  assign \mprj_pads.analog_io[21]  = mprj_analog_io[21];
-  assign \mprj_pads.analog_io[20]  = mprj_analog_io[20];
-  assign \mprj_pads.analog_io[19]  = mprj_analog_io[19];
-  assign \mprj_pads.analog_io[18]  = mprj_analog_io[18];
-  assign \mprj_pads.analog_io[17]  = mprj_analog_io[17];
-  assign \mprj_pads.analog_io[16]  = mprj_analog_io[16];
-  assign \mprj_pads.analog_io[15]  = mprj_analog_io[15];
-  assign \mprj_pads.analog_io[14]  = mprj_analog_io[14];
-  assign \mprj_pads.analog_io[13]  = mprj_analog_io[13];
-  assign \mprj_pads.analog_io[12]  = mprj_analog_io[12];
-  assign \mprj_pads.analog_io[11]  = mprj_analog_io[11];
-  assign \mprj_pads.analog_io[10]  = mprj_analog_io[10];
-  assign \mprj_pads.analog_io[9]  = mprj_analog_io[9];
-  assign \mprj_pads.analog_io[8]  = mprj_analog_io[8];
-  assign \mprj_pads.analog_io[7]  = mprj_analog_io[7];
-  assign \mprj_pads.analog_io[6]  = mprj_analog_io[6];
-  assign \mprj_pads.analog_io[5]  = mprj_analog_io[5];
-  assign \mprj_pads.analog_io[4]  = mprj_analog_io[4];
-  assign \mprj_pads.analog_io[3]  = mprj_analog_io[3];
-  assign \mprj_pads.analog_io[2]  = mprj_analog_io[2];
-  assign \mprj_pads.analog_io[1]  = mprj_analog_io[1];
-  assign \mprj_pads.analog_io[0]  = mprj_analog_io[0];
-  assign \mprj_pads.analog_pol[37]  = mprj_io_analog_pol[37];
-  assign \mprj_pads.analog_pol[36]  = mprj_io_analog_pol[36];
-  assign \mprj_pads.analog_pol[35]  = mprj_io_analog_pol[35];
-  assign \mprj_pads.analog_pol[34]  = mprj_io_analog_pol[34];
-  assign \mprj_pads.analog_pol[33]  = mprj_io_analog_pol[33];
-  assign \mprj_pads.analog_pol[32]  = mprj_io_analog_pol[32];
-  assign \mprj_pads.analog_pol[31]  = mprj_io_analog_pol[31];
-  assign \mprj_pads.analog_pol[30]  = mprj_io_analog_pol[30];
-  assign \mprj_pads.analog_pol[29]  = mprj_io_analog_pol[29];
-  assign \mprj_pads.analog_pol[28]  = mprj_io_analog_pol[28];
-  assign \mprj_pads.analog_pol[27]  = mprj_io_analog_pol[27];
-  assign \mprj_pads.analog_pol[26]  = mprj_io_analog_pol[26];
-  assign \mprj_pads.analog_pol[25]  = mprj_io_analog_pol[25];
-  assign \mprj_pads.analog_pol[24]  = mprj_io_analog_pol[24];
-  assign \mprj_pads.analog_pol[23]  = mprj_io_analog_pol[23];
-  assign \mprj_pads.analog_pol[22]  = mprj_io_analog_pol[22];
-  assign \mprj_pads.analog_pol[21]  = mprj_io_analog_pol[21];
-  assign \mprj_pads.analog_pol[20]  = mprj_io_analog_pol[20];
-  assign \mprj_pads.analog_pol[19]  = mprj_io_analog_pol[19];
-  assign \mprj_pads.analog_pol[18]  = mprj_io_analog_pol[18];
-  assign \mprj_pads.analog_pol[17]  = mprj_io_analog_pol[17];
-  assign \mprj_pads.analog_pol[16]  = mprj_io_analog_pol[16];
-  assign \mprj_pads.analog_pol[15]  = mprj_io_analog_pol[15];
-  assign \mprj_pads.analog_pol[14]  = mprj_io_analog_pol[14];
-  assign \mprj_pads.analog_pol[13]  = mprj_io_analog_pol[13];
-  assign \mprj_pads.analog_pol[12]  = mprj_io_analog_pol[12];
-  assign \mprj_pads.analog_pol[11]  = mprj_io_analog_pol[11];
-  assign \mprj_pads.analog_pol[10]  = mprj_io_analog_pol[10];
-  assign \mprj_pads.analog_pol[9]  = mprj_io_analog_pol[9];
-  assign \mprj_pads.analog_pol[8]  = mprj_io_analog_pol[8];
-  assign \mprj_pads.analog_pol[7]  = mprj_io_analog_pol[7];
-  assign \mprj_pads.analog_pol[6]  = mprj_io_analog_pol[6];
-  assign \mprj_pads.analog_pol[5]  = mprj_io_analog_pol[5];
-  assign \mprj_pads.analog_pol[4]  = mprj_io_analog_pol[4];
-  assign \mprj_pads.analog_pol[3]  = mprj_io_analog_pol[3];
-  assign \mprj_pads.analog_pol[2]  = mprj_io_analog_pol[2];
-  assign \mprj_pads.analog_pol[1]  = mprj_io_analog_pol[1];
-  assign \mprj_pads.analog_pol[0]  = mprj_io_analog_pol[0];
+  assign \mprj_pads.oeb[37]  = mprj_io_oeb[37];
+  assign \mprj_pads.oeb[36]  = mprj_io_oeb[36];
+  assign \mprj_pads.oeb[35]  = mprj_io_oeb[35];
+  assign \mprj_pads.oeb[34]  = mprj_io_oeb[34];
+  assign \mprj_pads.oeb[33]  = mprj_io_oeb[33];
+  assign \mprj_pads.oeb[32]  = mprj_io_oeb[32];
+  assign \mprj_pads.oeb[31]  = mprj_io_oeb[31];
+  assign \mprj_pads.oeb[30]  = mprj_io_oeb[30];
+  assign \mprj_pads.oeb[29]  = mprj_io_oeb[29];
+  assign \mprj_pads.oeb[28]  = mprj_io_oeb[28];
+  assign \mprj_pads.oeb[27]  = mprj_io_oeb[27];
+  assign \mprj_pads.oeb[26]  = mprj_io_oeb[26];
+  assign \mprj_pads.oeb[25]  = mprj_io_oeb[25];
+  assign \mprj_pads.oeb[24]  = mprj_io_oeb[24];
+  assign \mprj_pads.oeb[23]  = mprj_io_oeb[23];
+  assign \mprj_pads.oeb[22]  = mprj_io_oeb[22];
+  assign \mprj_pads.oeb[21]  = mprj_io_oeb[21];
+  assign \mprj_pads.oeb[20]  = mprj_io_oeb[20];
+  assign \mprj_pads.oeb[19]  = mprj_io_oeb[19];
+  assign \mprj_pads.oeb[18]  = mprj_io_oeb[18];
+  assign \mprj_pads.oeb[17]  = mprj_io_oeb[17];
+  assign \mprj_pads.oeb[16]  = mprj_io_oeb[16];
+  assign \mprj_pads.oeb[15]  = mprj_io_oeb[15];
+  assign \mprj_pads.oeb[14]  = mprj_io_oeb[14];
+  assign \mprj_pads.oeb[13]  = mprj_io_oeb[13];
+  assign \mprj_pads.oeb[12]  = mprj_io_oeb[12];
+  assign \mprj_pads.oeb[11]  = mprj_io_oeb[11];
+  assign \mprj_pads.oeb[10]  = mprj_io_oeb[10];
+  assign \mprj_pads.oeb[9]  = mprj_io_oeb[9];
+  assign \mprj_pads.oeb[8]  = mprj_io_oeb[8];
+  assign \mprj_pads.oeb[7]  = mprj_io_oeb[7];
+  assign \mprj_pads.oeb[6]  = mprj_io_oeb[6];
+  assign \mprj_pads.oeb[5]  = mprj_io_oeb[5];
+  assign \mprj_pads.oeb[4]  = mprj_io_oeb[4];
+  assign \mprj_pads.oeb[3]  = mprj_io_oeb[3];
+  assign \mprj_pads.oeb[2]  = mprj_io_oeb[2];
+  assign \mprj_pads.oeb[1]  = mprj_io_oeb[1];
+  assign \mprj_pads.oeb[0]  = mprj_io_oeb[0];
   assign \mprj_pads.slow_sel[37]  = mprj_io_slow_sel[37];
   assign \mprj_pads.slow_sel[36]  = mprj_io_slow_sel[36];
   assign \mprj_pads.slow_sel[35]  = mprj_io_slow_sel[35];
@@ -2614,82 +3441,6 @@
   assign \mprj_pads.slow_sel[2]  = mprj_io_slow_sel[2];
   assign \mprj_pads.slow_sel[1]  = mprj_io_slow_sel[1];
   assign \mprj_pads.slow_sel[0]  = mprj_io_slow_sel[0];
-  assign \mprj_pads.holdover[37]  = mprj_io_holdover[37];
-  assign \mprj_pads.holdover[36]  = mprj_io_holdover[36];
-  assign \mprj_pads.holdover[35]  = mprj_io_holdover[35];
-  assign \mprj_pads.holdover[34]  = mprj_io_holdover[34];
-  assign \mprj_pads.holdover[33]  = mprj_io_holdover[33];
-  assign \mprj_pads.holdover[32]  = mprj_io_holdover[32];
-  assign \mprj_pads.holdover[31]  = mprj_io_holdover[31];
-  assign \mprj_pads.holdover[30]  = mprj_io_holdover[30];
-  assign \mprj_pads.holdover[29]  = mprj_io_holdover[29];
-  assign \mprj_pads.holdover[28]  = mprj_io_holdover[28];
-  assign \mprj_pads.holdover[27]  = mprj_io_holdover[27];
-  assign \mprj_pads.holdover[26]  = mprj_io_holdover[26];
-  assign \mprj_pads.holdover[25]  = mprj_io_holdover[25];
-  assign \mprj_pads.holdover[24]  = mprj_io_holdover[24];
-  assign \mprj_pads.holdover[23]  = mprj_io_holdover[23];
-  assign \mprj_pads.holdover[22]  = mprj_io_holdover[22];
-  assign \mprj_pads.holdover[21]  = mprj_io_holdover[21];
-  assign \mprj_pads.holdover[20]  = mprj_io_holdover[20];
-  assign \mprj_pads.holdover[19]  = mprj_io_holdover[19];
-  assign \mprj_pads.holdover[18]  = mprj_io_holdover[18];
-  assign \mprj_pads.holdover[17]  = mprj_io_holdover[17];
-  assign \mprj_pads.holdover[16]  = mprj_io_holdover[16];
-  assign \mprj_pads.holdover[15]  = mprj_io_holdover[15];
-  assign \mprj_pads.holdover[14]  = mprj_io_holdover[14];
-  assign \mprj_pads.holdover[13]  = mprj_io_holdover[13];
-  assign \mprj_pads.holdover[12]  = mprj_io_holdover[12];
-  assign \mprj_pads.holdover[11]  = mprj_io_holdover[11];
-  assign \mprj_pads.holdover[10]  = mprj_io_holdover[10];
-  assign \mprj_pads.holdover[9]  = mprj_io_holdover[9];
-  assign \mprj_pads.holdover[8]  = mprj_io_holdover[8];
-  assign \mprj_pads.holdover[7]  = mprj_io_holdover[7];
-  assign \mprj_pads.holdover[6]  = mprj_io_holdover[6];
-  assign \mprj_pads.holdover[5]  = mprj_io_holdover[5];
-  assign \mprj_pads.holdover[4]  = mprj_io_holdover[4];
-  assign \mprj_pads.holdover[3]  = mprj_io_holdover[3];
-  assign \mprj_pads.holdover[2]  = mprj_io_holdover[2];
-  assign \mprj_pads.holdover[1]  = mprj_io_holdover[1];
-  assign \mprj_pads.holdover[0]  = mprj_io_holdover[0];
-  assign \mprj_pads.io[37]  = mprj_io[37];
-  assign \mprj_pads.io[36]  = mprj_io[36];
-  assign \mprj_pads.io[35]  = mprj_io[35];
-  assign \mprj_pads.io[34]  = mprj_io[34];
-  assign \mprj_pads.io[33]  = mprj_io[33];
-  assign \mprj_pads.io[32]  = mprj_io[32];
-  assign \mprj_pads.io[31]  = mprj_io[31];
-  assign \mprj_pads.io[30]  = mprj_io[30];
-  assign \mprj_pads.io[29]  = mprj_io[29];
-  assign \mprj_pads.io[28]  = mprj_io[28];
-  assign \mprj_pads.io[27]  = mprj_io[27];
-  assign \mprj_pads.io[26]  = mprj_io[26];
-  assign \mprj_pads.io[25]  = mprj_io[25];
-  assign \mprj_pads.io[24]  = mprj_io[24];
-  assign \mprj_pads.io[23]  = mprj_io[23];
-  assign \mprj_pads.io[22]  = mprj_io[22];
-  assign \mprj_pads.io[21]  = mprj_io[21];
-  assign \mprj_pads.io[20]  = mprj_io[20];
-  assign \mprj_pads.io[19]  = mprj_io[19];
-  assign \mprj_pads.io[18]  = mprj_io[18];
-  assign \mprj_pads.io[17]  = mprj_io[17];
-  assign \mprj_pads.io[16]  = mprj_io[16];
-  assign \mprj_pads.io[15]  = mprj_io[15];
-  assign \mprj_pads.io[14]  = mprj_io[14];
-  assign \mprj_pads.io[13]  = mprj_io[13];
-  assign \mprj_pads.io[12]  = mprj_io[12];
-  assign \mprj_pads.io[11]  = mprj_io[11];
-  assign \mprj_pads.io[10]  = mprj_io[10];
-  assign \mprj_pads.io[9]  = mprj_io[9];
-  assign \mprj_pads.io[8]  = mprj_io[8];
-  assign \mprj_pads.io[7]  = mprj_io[7];
-  assign \mprj_pads.io[6]  = mprj_io[6];
-  assign \mprj_pads.io[5]  = mprj_io[5];
-  assign \mprj_pads.io[4]  = mprj_io[4];
-  assign \mprj_pads.io[3]  = mprj_io[3];
-  assign \mprj_pads.io[2]  = mprj_io[2];
-  assign \mprj_pads.io[1]  = mprj_io[1];
-  assign \mprj_pads.io[0]  = mprj_io[0];
   assign \mprj_pads.analog_en[37]  = mprj_io_analog_en[37];
   assign \mprj_pads.analog_en[36]  = mprj_io_analog_en[36];
   assign \mprj_pads.analog_en[35]  = mprj_io_analog_en[35];
@@ -2728,6 +3479,82 @@
   assign \mprj_pads.analog_en[2]  = mprj_io_analog_en[2];
   assign \mprj_pads.analog_en[1]  = mprj_io_analog_en[1];
   assign \mprj_pads.analog_en[0]  = mprj_io_analog_en[0];
+  assign \mprj_pads.io_out[37]  = mprj_io_out[37];
+  assign \mprj_pads.io_out[36]  = mprj_io_out[36];
+  assign \mprj_pads.io_out[35]  = mprj_io_out[35];
+  assign \mprj_pads.io_out[34]  = mprj_io_out[34];
+  assign \mprj_pads.io_out[33]  = mprj_io_out[33];
+  assign \mprj_pads.io_out[32]  = mprj_io_out[32];
+  assign \mprj_pads.io_out[31]  = mprj_io_out[31];
+  assign \mprj_pads.io_out[30]  = mprj_io_out[30];
+  assign \mprj_pads.io_out[29]  = mprj_io_out[29];
+  assign \mprj_pads.io_out[28]  = mprj_io_out[28];
+  assign \mprj_pads.io_out[27]  = mprj_io_out[27];
+  assign \mprj_pads.io_out[26]  = mprj_io_out[26];
+  assign \mprj_pads.io_out[25]  = mprj_io_out[25];
+  assign \mprj_pads.io_out[24]  = mprj_io_out[24];
+  assign \mprj_pads.io_out[23]  = mprj_io_out[23];
+  assign \mprj_pads.io_out[22]  = mprj_io_out[22];
+  assign \mprj_pads.io_out[21]  = mprj_io_out[21];
+  assign \mprj_pads.io_out[20]  = mprj_io_out[20];
+  assign \mprj_pads.io_out[19]  = mprj_io_out[19];
+  assign \mprj_pads.io_out[18]  = mprj_io_out[18];
+  assign \mprj_pads.io_out[17]  = mprj_io_out[17];
+  assign \mprj_pads.io_out[16]  = mprj_io_out[16];
+  assign \mprj_pads.io_out[15]  = mprj_io_out[15];
+  assign \mprj_pads.io_out[14]  = mprj_io_out[14];
+  assign \mprj_pads.io_out[13]  = mprj_io_out[13];
+  assign \mprj_pads.io_out[12]  = mprj_io_out[12];
+  assign \mprj_pads.io_out[11]  = mprj_io_out[11];
+  assign \mprj_pads.io_out[10]  = mprj_io_out[10];
+  assign \mprj_pads.io_out[9]  = mprj_io_out[9];
+  assign \mprj_pads.io_out[8]  = mprj_io_out[8];
+  assign \mprj_pads.io_out[7]  = mprj_io_out[7];
+  assign \mprj_pads.io_out[6]  = mprj_io_out[6];
+  assign \mprj_pads.io_out[5]  = mprj_io_out[5];
+  assign \mprj_pads.io_out[4]  = mprj_io_out[4];
+  assign \mprj_pads.io_out[3]  = mprj_io_out[3];
+  assign \mprj_pads.io_out[2]  = mprj_io_out[2];
+  assign \mprj_pads.io_out[1]  = mprj_io_out[1];
+  assign \mprj_pads.io_out[0]  = mprj_io_out[0];
+  assign \mprj_pads.analog_sel[37]  = mprj_io_analog_sel[37];
+  assign \mprj_pads.analog_sel[36]  = mprj_io_analog_sel[36];
+  assign \mprj_pads.analog_sel[35]  = mprj_io_analog_sel[35];
+  assign \mprj_pads.analog_sel[34]  = mprj_io_analog_sel[34];
+  assign \mprj_pads.analog_sel[33]  = mprj_io_analog_sel[33];
+  assign \mprj_pads.analog_sel[32]  = mprj_io_analog_sel[32];
+  assign \mprj_pads.analog_sel[31]  = mprj_io_analog_sel[31];
+  assign \mprj_pads.analog_sel[30]  = mprj_io_analog_sel[30];
+  assign \mprj_pads.analog_sel[29]  = mprj_io_analog_sel[29];
+  assign \mprj_pads.analog_sel[28]  = mprj_io_analog_sel[28];
+  assign \mprj_pads.analog_sel[27]  = mprj_io_analog_sel[27];
+  assign \mprj_pads.analog_sel[26]  = mprj_io_analog_sel[26];
+  assign \mprj_pads.analog_sel[25]  = mprj_io_analog_sel[25];
+  assign \mprj_pads.analog_sel[24]  = mprj_io_analog_sel[24];
+  assign \mprj_pads.analog_sel[23]  = mprj_io_analog_sel[23];
+  assign \mprj_pads.analog_sel[22]  = mprj_io_analog_sel[22];
+  assign \mprj_pads.analog_sel[21]  = mprj_io_analog_sel[21];
+  assign \mprj_pads.analog_sel[20]  = mprj_io_analog_sel[20];
+  assign \mprj_pads.analog_sel[19]  = mprj_io_analog_sel[19];
+  assign \mprj_pads.analog_sel[18]  = mprj_io_analog_sel[18];
+  assign \mprj_pads.analog_sel[17]  = mprj_io_analog_sel[17];
+  assign \mprj_pads.analog_sel[16]  = mprj_io_analog_sel[16];
+  assign \mprj_pads.analog_sel[15]  = mprj_io_analog_sel[15];
+  assign \mprj_pads.analog_sel[14]  = mprj_io_analog_sel[14];
+  assign \mprj_pads.analog_sel[13]  = mprj_io_analog_sel[13];
+  assign \mprj_pads.analog_sel[12]  = mprj_io_analog_sel[12];
+  assign \mprj_pads.analog_sel[11]  = mprj_io_analog_sel[11];
+  assign \mprj_pads.analog_sel[10]  = mprj_io_analog_sel[10];
+  assign \mprj_pads.analog_sel[9]  = mprj_io_analog_sel[9];
+  assign \mprj_pads.analog_sel[8]  = mprj_io_analog_sel[8];
+  assign \mprj_pads.analog_sel[7]  = mprj_io_analog_sel[7];
+  assign \mprj_pads.analog_sel[6]  = mprj_io_analog_sel[6];
+  assign \mprj_pads.analog_sel[5]  = mprj_io_analog_sel[5];
+  assign \mprj_pads.analog_sel[4]  = mprj_io_analog_sel[4];
+  assign \mprj_pads.analog_sel[3]  = mprj_io_analog_sel[3];
+  assign \mprj_pads.analog_sel[2]  = mprj_io_analog_sel[2];
+  assign \mprj_pads.analog_sel[1]  = mprj_io_analog_sel[1];
+  assign \mprj_pads.analog_sel[0]  = mprj_io_analog_sel[0];
   assign \mprj_pads.vddio  = vddio;
   assign \mprj_pads.vssio  = vssio;
   assign \mprj_pads.vccd  = vccd;
@@ -2741,27 +3568,27 @@
   assign \mprj_pads.vssd1  = vssd1;
   assign \mprj_pads.vssd2  = vssd2;
   assign \mprj_pads.porb_h  = porb_h;
-  assign \mprj_pads.inp_dis[27]  = mprj_io_inp_dis[27];
-  assign \mprj_pads.inp_dis[35]  = mprj_io_inp_dis[35];
-  assign \dm_all[2]  = gpio_mode1_core;
-  assign \mprj_pads.inp_dis[33]  = mprj_io_inp_dis[33];
-  assign \mprj_pads.inp_dis[34]  = mprj_io_inp_dis[34];
-  assign \flash_io1_mode[2]  = flash_io1_ieb_core;
-  assign \mprj_pads.inp_dis[36]  = mprj_io_inp_dis[36];
-  assign \mprj_pads.inp_dis[37]  = mprj_io_inp_dis[37];
-  assign \mprj_pads.inp_dis[29]  = mprj_io_inp_dis[29];
-  assign \mprj_pads.inp_dis[28]  = mprj_io_inp_dis[28];
-  assign \mprj_pads.inp_dis[26]  = mprj_io_inp_dis[26];
-  assign \flash_io1_mode[0]  = flash_io1_oeb_core;
-  assign \mprj_pads.inp_dis[31]  = mprj_io_inp_dis[31];
-  assign \dm_all[1]  = gpio_mode1_core;
-  assign \mprj_pads.inp_dis[30]  = mprj_io_inp_dis[30];
-  assign \mprj_pads.inp_dis[32]  = mprj_io_inp_dis[32];
-  assign \dm_all[0]  = gpio_mode0_core;
-  assign \flash_io1_mode[1]  = flash_io1_ieb_core;
-  assign \flash_io0_mode[1]  = flash_io0_ieb_core;
-  assign \flash_io0_mode[2]  = flash_io0_ieb_core;
-  assign \flash_io0_mode[0]  = flash_io0_oeb_core;
+  assign \mprj_pads.dm[104]  = mprj_io_dm[104];
+  assign \mprj_pads.dm[94]  = mprj_io_dm[94];
+  assign \mprj_pads.dm[99]  = mprj_io_dm[99];
+  assign \mprj_pads.dm[110]  = mprj_io_dm[110];
+  assign \mprj_pads.dm[100]  = mprj_io_dm[100];
+  assign \mprj_pads.dm[105]  = mprj_io_dm[105];
+  assign \mprj_pads.dm[102]  = mprj_io_dm[102];
+  assign \mprj_pads.dm[103]  = mprj_io_dm[103];
+  assign \mprj_pads.dm[96]  = mprj_io_dm[96];
+  assign \mprj_pads.dm[107]  = mprj_io_dm[107];
+  assign \mprj_pads.dm[95]  = mprj_io_dm[95];
+  assign \mprj_pads.dm[93]  = mprj_io_dm[93];
+  assign \mprj_pads.dm[112]  = mprj_io_dm[112];
+  assign \mprj_pads.dm[113]  = mprj_io_dm[113];
+  assign \mprj_pads.dm[106]  = mprj_io_dm[106];
+  assign \mprj_pads.dm[108]  = mprj_io_dm[108];
+  assign \mprj_pads.dm[98]  = mprj_io_dm[98];
+  assign \mprj_pads.dm[97]  = mprj_io_dm[97];
+  assign \mprj_pads.dm[111]  = mprj_io_dm[111];
+  assign \mprj_pads.dm[101]  = mprj_io_dm[101];
+  assign \mprj_pads.dm[109]  = mprj_io_dm[109];
   assign vssio_q = \mprj_pads.vssio_q ;
   assign vddio_q = \mprj_pads.vddio_q ;
   assign analog_b = \mprj_pads.analog_b ;
diff --git a/verilog/rtl/caravel.v b/verilog/rtl/caravel.v
index 08a6241..2ee50bc 100644
--- a/verilog/rtl/caravel.v
+++ b/verilog/rtl/caravel.v
@@ -35,29 +35,34 @@
 
 `ifdef GL
 	`include "gl/mgmt_core.v"
+	`include "gl/digital_pll.v"
+	`include "gl/DFFRAM.v"
+	`include "gl/storage.v"
+	`include "gl/user_id_programming.v"
+	`include "gl/chip_io.v"
 `else
 	`include "mgmt_soc.v"
 	`include "housekeeping_spi.v"
 	`include "caravel_clocking.v"
 	`include "mgmt_core.v"
+	`include "digital_pll.v"
+	`include "DFFRAM.v"
+	`include "DFFRAMBB.v"
+	`include "storage.v"
+	`include "user_id_programming.v"
+	`include "clock_div.v"
+	`include "storage_bridge_wb.v"
+	`include "mprj_io.v"
+	`include "chip_io.v"
 `endif
 
-`include "digital_pll.v"
+`include "sky130_fd_sc_hvl__lsbufhv2lv_1_wrapped.v"
 `include "mgmt_protect.v"
 `include "mgmt_protect_hv.v"
-`include "mprj_io.v"
-`include "chip_io.v"
-`include "user_id_programming.v"
 `include "user_project_wrapper.v"
 `include "gpio_control_block.v"
-`include "clock_div.v"
 `include "simple_por.v"
-`include "storage_bridge_wb.v"
-`include "DFFRAM.v"
-`include "DFFRAMBB.v"
 `include "sram_1rw1r_32_256_8_sky130.v"
-`include "storage.v"
-`include "sky130_fd_sc_hvl__lsbufhv2lv_1_wrapped.v"
 
 /*------------------------------*/
 /* Include user project here	*/
@@ -638,8 +643,8 @@
 	.USER_PROJECT_ID(USER_PROJECT_ID)
     ) user_id_value (
 `ifdef USE_POWER_PINS
-	.vdd1v8(vccd),
-	.vss(vssd),
+	.VPWR(vccd),
+	.VGND(vssd),
 `endif
 	.mask_rev(mask_rev)
     );
diff --git a/verilog/rtl/manifest b/verilog/rtl/manifest
index c705d95..11c820a 100644
--- a/verilog/rtl/manifest
+++ b/verilog/rtl/manifest
@@ -1,6 +1,6 @@
 5f07b999756cdbae03068f084e8986ba159ba196  DFFRAM.v
 22d6b23a7ddcd2b086c9aa0e9c4839f6ef5e3c25  DFFRAMBB.v
-02343580d406285f83a8893f1d3ce97c8cfd660c  caravel.v
+7f2e64ff567d4a745aaae296db34294f5bbeb7f6  caravel.v
 bcdb8849d0b51e13c5ae7e1319f3f9be3e1b3dfd  caravel_clocking.v
 a8f79a3bcf1267487f31f47372fb0e35ea344510  chip_io.v
 7127595a39b7b17a01f93ca9f3e98c881e32c96f  clock_div.v
diff --git a/verilog/rtl/user_id_programming.v b/verilog/rtl/user_id_programming.v
index 934f9d7..ce1f42b 100644
--- a/verilog/rtl/user_id_programming.v
+++ b/verilog/rtl/user_id_programming.v
@@ -8,8 +8,8 @@
     parameter [ 0:0] USER_PROJECT_ID = 32'h0
 ) (
 `ifdef USE_POWER_PINS
-    inout vdd1v8,
-    inout vss,
+    inout VPWR,
+    inout VGND,
 `endif
     output [31:0] mask_rev
 );
@@ -21,10 +21,10 @@
 
     sky130_fd_sc_hd__conb_1 mask_rev_value [31:0] (
 `ifdef USE_POWER_PINS
-            .VPWR(vdd1v8),
-            .VPB(vdd1v8),
-            .VNB(vss),
-            .VGND(vss),
+            .VPWR(VPWR),
+            .VPB(VPWR),
+            .VNB(VGND),
+            .VGND(VGND),
 `endif
             .HI(user_proj_id_high),
             .LO(user_proj_id_low)