From 7beff35302efa023ab1b84dbede5b09031fa3665 Mon Sep 17 00:00:00 2001 From: marwaneltoukhy Date: Thu, 1 Jun 2023 17:29:34 +0000 Subject: [PATCH 001/109] Apply automatic changes to Manifest and README.rst --- manifest | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/manifest b/manifest index c0dfd50d..76524268 100644 --- a/manifest +++ b/manifest @@ -5,8 +5,10 @@ 5f8e2d6670ce912bc209201d23430f62730e2627 verilog/rtl/__user_project_la_example.v cc82a78753f5f5d0a1519bd81adbcff8a4296d91 verilog/rtl/__user_project_wrapper.v 3c8c04f53b2848dc46132cda82c614e06e56571b verilog/rtl/buff_flash_clkrst.v -8a23782a7870d50eb281d72bebf13320cd009813 verilog/rtl/caravan.v +14064261ec18d633a5d72b45b2347c388f2f446f verilog/rtl/caravan.v 120661aaee20d83948e5e419a88ca9b63531ec95 verilog/rtl/caravan_core.v +e68fd2e085679d0f61040115fdd1d50651705d3a verilog/rtl/caravan_logo.v +d265ea6bf861e3f5c1b1b984ae057dbaed995008 verilog/rtl/caravan_motto.v d36e539fad7563a03974cb7d18489e6a0ccfe80d verilog/rtl/caravan_netlists.v a3d12a2d2d3596800bec47d1266dce2399a2fcc6 verilog/rtl/caravan_openframe.v b532b4c6315c29fd19fe38ac221b6fc41e6f5ecb verilog/rtl/caravan_power_routing.v @@ -22,6 +24,7 @@ f2242e1f295ee5efeacea51698f706a2cfd97c28 verilog/rtl/chip_io_alt.v 126aff02aa229dc346301c552d785dec76a4d68e verilog/rtl/clock_div.v 941bd7636e7558b045faa3d8c6ba2d91b4c4b798 verilog/rtl/constant_block.v 58fd210a64e502fb231d843eada4052f923d788d verilog/rtl/copyright_block.v +c254b1c442ca54e018d548d96d2ad0bb122a1203 verilog/rtl/copyright_block_a.v 653b230c7cbf092a6210ba7820bc942f312e53f3 verilog/rtl/debug_regs.v 2a7b5d508735fd485f8adcb3f8766ea3830091c2 verilog/rtl/digital_pll.v ce49f9af199b5f16d2c39c417d58e5890bc7bab2 verilog/rtl/digital_pll_controller.v From 1b93c22966298683c136a8a3f0ab7ef76e3240fe Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:25:05 -0700 Subject: [PATCH 002/109] Makefile add openframe target --- Makefile | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/Makefile b/Makefile index 03c90d20..84d3b5a3 100644 --- a/Makefile +++ b/Makefile @@ -194,6 +194,47 @@ __truck: @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_truck.out ### @rm $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl +.PHONY: ship +openframe: check-env uncompress uncompress-caravel +ifeq ($(FOREGROUND),1) + @echo "Running make openframe in the foreground..." + $(MAKE) -f $(CARAVEL_ROOT)/Makefile __openframe + @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out +else + @echo "Running make openframe in the background..." + nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __ship >/dev/null 2>&1 & + tail -f signoff/build/make_openframe.out + @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out +endif + +__openframe: + @echo "###############################################" + @echo "Generating Caravel GDS (sources are in the 'gds' directory)" + @sleep 1 +#### Runs from the CARAVEL_ROOT mag directory + @echo "\ + drc off; \ + crashbackups stop; \ + addpath hexdigits; \ + addpath $(UPRJ_ROOT)/mag; \ + load openframe_project_wrapper; \ + property LEFview true; \ + property GDS_FILE $(UPRJ_ROOT)/gds/openframe_project_wrapper.gds; \ + property GDS_START 0; \ + load $(CARAVEL_ROOT)/maglef/simple_por; \ + load caravel -dereference; \ + select top cell; \ + expand; \ + cif *hier write disable; \ + cif *array write disable; \ + gds write $(UPRJ_ROOT)/gds/caravel.gds; \ + quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl +### Runs from CARAVEL_ROOT + @mkdir -p ./signoff/build + #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out + @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out +### @rm $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl + .PHONY: clean clean: cd $(CARAVEL_ROOT)/verilog/dv/caravel/mgmt_soc/ && \ From bf4325dc16e4e93c46625e4b5edf72d69a1f68c9 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:29:04 -0700 Subject: [PATCH 003/109] Makefile add openframe target --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 84d3b5a3..02a750a5 100644 --- a/Makefile +++ b/Makefile @@ -194,7 +194,7 @@ __truck: @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_truck.out ### @rm $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl -.PHONY: ship +.PHONY: openframe openframe: check-env uncompress uncompress-caravel ifeq ($(FOREGROUND),1) @echo "Running make openframe in the foreground..." @@ -202,7 +202,7 @@ ifeq ($(FOREGROUND),1) @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out else @echo "Running make openframe in the background..." - nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __ship >/dev/null 2>&1 & + nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __openframe >/dev/null 2>&1 & tail -f signoff/build/make_openframe.out @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out endif From ecad21b327d5d3298f69125a21d2143de27f4fb5 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:31:14 -0700 Subject: [PATCH 004/109] Makefile add openframe target --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 02a750a5..20472cf0 100644 --- a/Makefile +++ b/Makefile @@ -222,7 +222,7 @@ __openframe: property GDS_FILE $(UPRJ_ROOT)/gds/openframe_project_wrapper.gds; \ property GDS_START 0; \ load $(CARAVEL_ROOT)/maglef/simple_por; \ - load caravel -dereference; \ + load caravel_openframe -dereference; \ select top cell; \ expand; \ cif *hier write disable; \ From c8beae7fe7b19308fd0a9290ccc25c49d2779a0b Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:45:03 -0700 Subject: [PATCH 005/109] disable dist for fill gen --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 20472cf0..8076e835 100644 --- a/Makefile +++ b/Makefile @@ -1145,8 +1145,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From 28c9ef91c44635d6be3d63844ffc012125d60e15 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 15:32:29 -0700 Subject: [PATCH 006/109] change .magicrc to use from pdk --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 8076e835..1efb3bb5 100644 --- a/Makefile +++ b/Makefile @@ -231,8 +231,8 @@ __openframe: quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl ### Runs from CARAVEL_ROOT @mkdir -p ./signoff/build - #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out - @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out + @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out + #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out ### @rm $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl .PHONY: clean @@ -1145,8 +1145,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From eb4edd3db35a946d42b422ae3c696ddf8d5e4c8a Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 16:58:08 -0700 Subject: [PATCH 007/109] change .magicrc to use from pdk --- scripts/compositor.py | 6 +++--- scripts/generate_fill.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/compositor.py b/scripts/compositor.py index 999038f7..df05b215 100755 --- a/scripts/compositor.py +++ b/scripts/compositor.py @@ -147,9 +147,9 @@ def usage(): keepmode = True magpath = mag_dir_path - rcfile = magpath + '/.magicrc' - # pdk_root = os.getenv("PDK_ROOT") - # rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' + # rcfile = magpath + '/.magicrc' + pdk_root = os.getenv("PDK_ROOT") + rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' gdspath = gds_dir_path diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 2b0db8ef..964a6a87 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -153,9 +153,9 @@ def makegds(file): distmode = True magpath = user_project_path + '/mag' - rcfile = magpath + '/.magicrc' - # pdk_root = os.getenv("PDK_ROOT") - # rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' + # rcfile = magpath + '/.magicrc' + pdk_root = os.getenv("PDK_ROOT") + rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' if not os.path.isfile(rcfile): rcfile = None From da285b949e521e4e170a15ba9c815c293fe59d42 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:08:10 -0700 Subject: [PATCH 008/109] add user_id back --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 1efb3bb5..7b678c9a 100644 --- a/Makefile +++ b/Makefile @@ -221,6 +221,8 @@ __openframe: property LEFview true; \ property GDS_FILE $(UPRJ_ROOT)/gds/openframe_project_wrapper.gds; \ property GDS_START 0; \ + load $(UPRJ_ROOT)/mag/user_id_programming; \ + load $(UPRJ_ROOT)/mag/user_id_textblock; \ load $(CARAVEL_ROOT)/maglef/simple_por; \ load caravel_openframe -dereference; \ select top cell; \ From 475368a304621d4645606127f64bed810e7dbfc4 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 00:21:17 +0000 Subject: [PATCH 009/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index 96d619cf..d22992e7 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py -9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py +50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From d71763f6c3ac2f1ed50eaa26c8ccad57ee79e130 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:25:50 -0700 Subject: [PATCH 010/109] add user_id back --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7b678c9a..d7b7964e 100644 --- a/Makefile +++ b/Makefile @@ -1147,7 +1147,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From d265ffa318052cb6b6e1b436c5013765ccd9cd5a Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:30:10 -0700 Subject: [PATCH 011/109] rename top to caravel --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index d7b7964e..1ad411e6 100644 --- a/Makefile +++ b/Makefile @@ -229,6 +229,7 @@ __openframe: expand; \ cif *hier write disable; \ cif *array write disable; \ + save caravel; \ gds write $(UPRJ_ROOT)/gds/caravel.gds; \ quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl ### Runs from CARAVEL_ROOT From a2fb17282c287f222b14b75f02653a52be6c7dd4 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:25:22 -0700 Subject: [PATCH 012/109] change bbox for gen fill --- Makefile | 4 ++-- scripts/generate_fill.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1ad411e6..8ee1240e 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 964a6a87..098a590a 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -192,7 +192,8 @@ def makegds(file): if not distmode: print('cif ostyle wafflefill(tiled)', file=ofile) print('', file=ofile) - print('set fullbox [box values]', file=ofile) + # print('set fullbox [box values]', file=ofile) + print('set fullbox { 0 0 3588um 5188um }', file=ofile) print('set xmax [lindex $fullbox 2]', file=ofile) print('set xmin [lindex $fullbox 0]', file=ofile) print('set fullwidth [expr {$xmax - $xmin}]', file=ofile) From 6f7ac1fcfb051d10f3e32775df3760af7f0fce45 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:28:54 -0700 Subject: [PATCH 013/109] change bbox for gen fill --- scripts/generate_fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 098a590a..5a0646f8 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -193,7 +193,7 @@ def makegds(file): print('cif ostyle wafflefill(tiled)', file=ofile) print('', file=ofile) # print('set fullbox [box values]', file=ofile) - print('set fullbox { 0 0 3588um 5188um }', file=ofile) + print('set fullbox { 0 0 717600 1037600 }', file=ofile) print('set xmax [lindex $fullbox 2]', file=ofile) print('set xmin [lindex $fullbox 0]', file=ofile) print('set fullwidth [expr {$xmax - $xmin}]', file=ofile) From 83d06e23e9ef75ce14806c3f8d3e613c7f7b5162 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:37:32 -0700 Subject: [PATCH 014/109] change bbox for gen fill --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 8ee1240e..1ad411e6 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From 2852f5de6fe70663dffa0891e934410e975f04ac Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 14:58:47 +0000 Subject: [PATCH 015/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index d22992e7..e11ff1a5 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From ec5a034274f90a81a47b9807ac02dda264bf4514 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 09:48:04 -0700 Subject: [PATCH 016/109] remove -keep for gen fill --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1ad411e6..2d5607bb 100644 --- a/Makefile +++ b/Makefile @@ -1148,7 +1148,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 05a7fe0024f7a7190c1d9a4d0d94fdc173c65637 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 10:37:10 -0700 Subject: [PATCH 017/109] add -keep --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2d5607bb..1a48ec3e 100644 --- a/Makefile +++ b/Makefile @@ -1148,7 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 361e51f3d0fbc53903aece2774a884be094c72ca Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 12:40:54 -0700 Subject: [PATCH 018/109] correct load issue with gen fill --- scripts/generate_fill.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 5a0646f8..9d9a90ca 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -187,6 +187,7 @@ def makegds(file): print('gds readonly true', file=ofile) print('gds rescale false', file=ofile) print('gds read ../gds/' + project, file=ofile) + print('load ' + project, file=ofile) print('select top cell', file=ofile) print('expand', file=ofile) if not distmode: From 60f4b17dccfa7c9b352e3bb9b5a14d64a1b0fd9e Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 19:54:30 +0000 Subject: [PATCH 019/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index e11ff1a5..be1adde3 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py +c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 436066bafc925ba4f4d17bdff000682fcefdd32f Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 23:25:59 -0700 Subject: [PATCH 020/109] remove -keep --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 1a48ec3e..ae7181db 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 1e6dc8992b169b309f10c7ee1fa50617cec78d6e Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 00:21:17 +0000 Subject: [PATCH 021/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index 96d619cf..d22992e7 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py -9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py +50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From f3cd9e09eb8502ef3fe56472c3a9bfc39723fb15 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:30:10 -0700 Subject: [PATCH 022/109] rename top to caravel --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index d7b7964e..1ad411e6 100644 --- a/Makefile +++ b/Makefile @@ -229,6 +229,7 @@ __openframe: expand; \ cif *hier write disable; \ cif *array write disable; \ + save caravel; \ gds write $(UPRJ_ROOT)/gds/caravel.gds; \ quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl ### Runs from CARAVEL_ROOT From 6d06bd9fa46cfb53c85fb4301fe40bfb71dd408f Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:25:22 -0700 Subject: [PATCH 023/109] change bbox for gen fill --- Makefile | 4 ++-- scripts/generate_fill.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1ad411e6..8ee1240e 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 964a6a87..098a590a 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -192,7 +192,8 @@ def makegds(file): if not distmode: print('cif ostyle wafflefill(tiled)', file=ofile) print('', file=ofile) - print('set fullbox [box values]', file=ofile) + # print('set fullbox [box values]', file=ofile) + print('set fullbox { 0 0 3588um 5188um }', file=ofile) print('set xmax [lindex $fullbox 2]', file=ofile) print('set xmin [lindex $fullbox 0]', file=ofile) print('set fullwidth [expr {$xmax - $xmin}]', file=ofile) From f3250ea8eebfe3e0ceeb56574f5639b100d7f65e Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:28:54 -0700 Subject: [PATCH 024/109] change bbox for gen fill --- scripts/generate_fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 098a590a..5a0646f8 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -193,7 +193,7 @@ def makegds(file): print('cif ostyle wafflefill(tiled)', file=ofile) print('', file=ofile) # print('set fullbox [box values]', file=ofile) - print('set fullbox { 0 0 3588um 5188um }', file=ofile) + print('set fullbox { 0 0 717600 1037600 }', file=ofile) print('set xmax [lindex $fullbox 2]', file=ofile) print('set xmin [lindex $fullbox 0]', file=ofile) print('set fullwidth [expr {$xmax - $xmin}]', file=ofile) From 485ecd03e691fb075bfc31709a337703a4713dcc Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:37:32 -0700 Subject: [PATCH 025/109] change bbox for gen fill --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 8ee1240e..1ad411e6 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From 8b7f4a42988d239901fb8f4b9f23137d4759de99 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 09:48:04 -0700 Subject: [PATCH 026/109] remove -keep for gen fill --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1ad411e6..2d5607bb 100644 --- a/Makefile +++ b/Makefile @@ -1148,7 +1148,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 63c229190bcd8e00f2eb1209b0bd9cfedd5ff548 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 14:58:47 +0000 Subject: [PATCH 027/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index d22992e7..e11ff1a5 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 6a67c25d122fb2560443bb162c1689427e1fb167 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 10:37:10 -0700 Subject: [PATCH 028/109] add -keep --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2d5607bb..1a48ec3e 100644 --- a/Makefile +++ b/Makefile @@ -1148,7 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 547e09de776efe632754e8bfedfe57694699969a Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 12:40:54 -0700 Subject: [PATCH 029/109] correct load issue with gen fill --- scripts/generate_fill.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 5a0646f8..9d9a90ca 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -187,6 +187,7 @@ def makegds(file): print('gds readonly true', file=ofile) print('gds rescale false', file=ofile) print('gds read ../gds/' + project, file=ofile) + print('load ' + project, file=ofile) print('select top cell', file=ofile) print('expand', file=ofile) if not distmode: From 7a66e0910d36b3e73ee4a32b416275bc9e011e47 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 23:25:59 -0700 Subject: [PATCH 030/109] remove -keep --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 1a48ec3e..ae7181db 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 34cdf348d514a31de9d45171e132286fc4ca9b60 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 19:54:30 +0000 Subject: [PATCH 031/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index e11ff1a5..be1adde3 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py +c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From f7202896d2c29d28b9c763026c47d2075513b13d Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:25:05 -0700 Subject: [PATCH 032/109] Makefile add openframe target --- Makefile | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/Makefile b/Makefile index 03c90d20..84d3b5a3 100644 --- a/Makefile +++ b/Makefile @@ -194,6 +194,47 @@ __truck: @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_truck.out ### @rm $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl +.PHONY: ship +openframe: check-env uncompress uncompress-caravel +ifeq ($(FOREGROUND),1) + @echo "Running make openframe in the foreground..." + $(MAKE) -f $(CARAVEL_ROOT)/Makefile __openframe + @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out +else + @echo "Running make openframe in the background..." + nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __ship >/dev/null 2>&1 & + tail -f signoff/build/make_openframe.out + @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out +endif + +__openframe: + @echo "###############################################" + @echo "Generating Caravel GDS (sources are in the 'gds' directory)" + @sleep 1 +#### Runs from the CARAVEL_ROOT mag directory + @echo "\ + drc off; \ + crashbackups stop; \ + addpath hexdigits; \ + addpath $(UPRJ_ROOT)/mag; \ + load openframe_project_wrapper; \ + property LEFview true; \ + property GDS_FILE $(UPRJ_ROOT)/gds/openframe_project_wrapper.gds; \ + property GDS_START 0; \ + load $(CARAVEL_ROOT)/maglef/simple_por; \ + load caravel -dereference; \ + select top cell; \ + expand; \ + cif *hier write disable; \ + cif *array write disable; \ + gds write $(UPRJ_ROOT)/gds/caravel.gds; \ + quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl +### Runs from CARAVEL_ROOT + @mkdir -p ./signoff/build + #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out + @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out +### @rm $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl + .PHONY: clean clean: cd $(CARAVEL_ROOT)/verilog/dv/caravel/mgmt_soc/ && \ From d2e5396e4290d1c03367e9c6c2b393dd1465f509 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:29:04 -0700 Subject: [PATCH 033/109] Makefile add openframe target --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 84d3b5a3..02a750a5 100644 --- a/Makefile +++ b/Makefile @@ -194,7 +194,7 @@ __truck: @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_truck.out ### @rm $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl -.PHONY: ship +.PHONY: openframe openframe: check-env uncompress uncompress-caravel ifeq ($(FOREGROUND),1) @echo "Running make openframe in the foreground..." @@ -202,7 +202,7 @@ ifeq ($(FOREGROUND),1) @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out else @echo "Running make openframe in the background..." - nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __ship >/dev/null 2>&1 & + nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __openframe >/dev/null 2>&1 & tail -f signoff/build/make_openframe.out @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out endif From 8fcb1bcc1d5e60709e83eb0a34e150108db95fd9 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:31:14 -0700 Subject: [PATCH 034/109] Makefile add openframe target --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 02a750a5..20472cf0 100644 --- a/Makefile +++ b/Makefile @@ -222,7 +222,7 @@ __openframe: property GDS_FILE $(UPRJ_ROOT)/gds/openframe_project_wrapper.gds; \ property GDS_START 0; \ load $(CARAVEL_ROOT)/maglef/simple_por; \ - load caravel -dereference; \ + load caravel_openframe -dereference; \ select top cell; \ expand; \ cif *hier write disable; \ From 91317e6de13be0ef9581d395df7aac061f02bc04 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:45:03 -0700 Subject: [PATCH 035/109] disable dist for fill gen --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 20472cf0..8076e835 100644 --- a/Makefile +++ b/Makefile @@ -1145,8 +1145,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From 950d74d4ee4175264e8509c626b099061813fed9 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 15:32:29 -0700 Subject: [PATCH 036/109] change .magicrc to use from pdk --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 8076e835..1efb3bb5 100644 --- a/Makefile +++ b/Makefile @@ -231,8 +231,8 @@ __openframe: quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl ### Runs from CARAVEL_ROOT @mkdir -p ./signoff/build - #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out - @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out + @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out + #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out ### @rm $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl .PHONY: clean @@ -1145,8 +1145,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From b022bdf8b951f5b47972d45be39eb6c6855f8822 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 16:58:08 -0700 Subject: [PATCH 037/109] change .magicrc to use from pdk --- scripts/compositor.py | 6 +++--- scripts/generate_fill.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/compositor.py b/scripts/compositor.py index 999038f7..df05b215 100755 --- a/scripts/compositor.py +++ b/scripts/compositor.py @@ -147,9 +147,9 @@ def usage(): keepmode = True magpath = mag_dir_path - rcfile = magpath + '/.magicrc' - # pdk_root = os.getenv("PDK_ROOT") - # rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' + # rcfile = magpath + '/.magicrc' + pdk_root = os.getenv("PDK_ROOT") + rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' gdspath = gds_dir_path diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 2b0db8ef..964a6a87 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -153,9 +153,9 @@ def makegds(file): distmode = True magpath = user_project_path + '/mag' - rcfile = magpath + '/.magicrc' - # pdk_root = os.getenv("PDK_ROOT") - # rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' + # rcfile = magpath + '/.magicrc' + pdk_root = os.getenv("PDK_ROOT") + rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' if not os.path.isfile(rcfile): rcfile = None From e64f948e7d07677241ae5921a87bd366a83ec2c8 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:08:10 -0700 Subject: [PATCH 038/109] add user_id back --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 1efb3bb5..7b678c9a 100644 --- a/Makefile +++ b/Makefile @@ -221,6 +221,8 @@ __openframe: property LEFview true; \ property GDS_FILE $(UPRJ_ROOT)/gds/openframe_project_wrapper.gds; \ property GDS_START 0; \ + load $(UPRJ_ROOT)/mag/user_id_programming; \ + load $(UPRJ_ROOT)/mag/user_id_textblock; \ load $(CARAVEL_ROOT)/maglef/simple_por; \ load caravel_openframe -dereference; \ select top cell; \ From 8c9b8c231e3751a6aa08d153dcba850a6f1398eb Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:25:50 -0700 Subject: [PATCH 039/109] add user_id back --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7b678c9a..d7b7964e 100644 --- a/Makefile +++ b/Makefile @@ -1147,7 +1147,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 45f92fd7f3b457557714e01fb627754ea64e8ecf Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 00:21:17 +0000 Subject: [PATCH 040/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index 96d619cf..d22992e7 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py -9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py +50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 43d3652d55d0faeb47bb7b3e01d2814c68145df0 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:30:10 -0700 Subject: [PATCH 041/109] rename top to caravel --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index d7b7964e..1ad411e6 100644 --- a/Makefile +++ b/Makefile @@ -229,6 +229,7 @@ __openframe: expand; \ cif *hier write disable; \ cif *array write disable; \ + save caravel; \ gds write $(UPRJ_ROOT)/gds/caravel.gds; \ quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl ### Runs from CARAVEL_ROOT From 52b946ac90620502e9cfdb9de6c7190e9387c933 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:25:22 -0700 Subject: [PATCH 042/109] change bbox for gen fill --- Makefile | 4 ++-- scripts/generate_fill.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1ad411e6..8ee1240e 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 964a6a87..098a590a 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -192,7 +192,8 @@ def makegds(file): if not distmode: print('cif ostyle wafflefill(tiled)', file=ofile) print('', file=ofile) - print('set fullbox [box values]', file=ofile) + # print('set fullbox [box values]', file=ofile) + print('set fullbox { 0 0 3588um 5188um }', file=ofile) print('set xmax [lindex $fullbox 2]', file=ofile) print('set xmin [lindex $fullbox 0]', file=ofile) print('set fullwidth [expr {$xmax - $xmin}]', file=ofile) From f6acdbaa64cae510a4925778b657505adbb16d81 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:28:54 -0700 Subject: [PATCH 043/109] change bbox for gen fill --- scripts/generate_fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 098a590a..5a0646f8 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -193,7 +193,7 @@ def makegds(file): print('cif ostyle wafflefill(tiled)', file=ofile) print('', file=ofile) # print('set fullbox [box values]', file=ofile) - print('set fullbox { 0 0 3588um 5188um }', file=ofile) + print('set fullbox { 0 0 717600 1037600 }', file=ofile) print('set xmax [lindex $fullbox 2]', file=ofile) print('set xmin [lindex $fullbox 0]', file=ofile) print('set fullwidth [expr {$xmax - $xmin}]', file=ofile) From c95ac23ba29d3623d8eb2d7cf99908a4e3d71b0a Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:37:32 -0700 Subject: [PATCH 044/109] change bbox for gen fill --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 8ee1240e..1ad411e6 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From 195a607f93035fa14713669d0d8b1e3fc74b59b1 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 09:48:04 -0700 Subject: [PATCH 045/109] remove -keep for gen fill --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1ad411e6..2d5607bb 100644 --- a/Makefile +++ b/Makefile @@ -1148,7 +1148,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 774d22c93ac89ad19ce79f13e5109718a0cc1bbf Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 14:58:47 +0000 Subject: [PATCH 046/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index d22992e7..e11ff1a5 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 310183148bf013ee75d7e639e408d3fca4758966 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 10:37:10 -0700 Subject: [PATCH 047/109] add -keep --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2d5607bb..1a48ec3e 100644 --- a/Makefile +++ b/Makefile @@ -1148,7 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From a98115f9d9a76cbaa1ec3e95de970416e59a002c Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 12:40:54 -0700 Subject: [PATCH 048/109] correct load issue with gen fill --- scripts/generate_fill.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 5a0646f8..9d9a90ca 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -187,6 +187,7 @@ def makegds(file): print('gds readonly true', file=ofile) print('gds rescale false', file=ofile) print('gds read ../gds/' + project, file=ofile) + print('load ' + project, file=ofile) print('select top cell', file=ofile) print('expand', file=ofile) if not distmode: From 8678cd0b9bc32130fa0e983156bc9ee7925f5d1c Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 23:25:59 -0700 Subject: [PATCH 049/109] remove -keep --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 1a48ec3e..ae7181db 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 441c0b71d7ad2a8a260fd90e856df09d1566acc5 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 19:54:30 +0000 Subject: [PATCH 050/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index e11ff1a5..be1adde3 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py +c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 5dad9098876b8874ccbdf183b6a78fc5029b29c1 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 00:21:17 +0000 Subject: [PATCH 051/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index be1adde3..96d619cf 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py -844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py +98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py +9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py From 52ada8c3bc1648203087b55655e92a2428d0ffc1 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:25:22 -0700 Subject: [PATCH 052/109] change bbox for gen fill --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index ae7181db..1ad411e6 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 6b41297db70b1797d0053de7c25eb86468ddfce5 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 09:48:04 -0700 Subject: [PATCH 053/109] remove -keep for gen fill --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1ad411e6..2d5607bb 100644 --- a/Makefile +++ b/Makefile @@ -1148,7 +1148,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From b971154e68afe8932c9d635b7d85b615f512b3db Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 14:58:47 +0000 Subject: [PATCH 054/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index 96d619cf..d22992e7 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py -9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py +50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 0d8fa516379d004ecf5a3fa0fd6a80a45e586388 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 10:37:10 -0700 Subject: [PATCH 055/109] add -keep --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2d5607bb..1a48ec3e 100644 --- a/Makefile +++ b/Makefile @@ -1148,7 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 1d61ee627195b88a7fbdc0fc57a739aa20e797da Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 23:25:59 -0700 Subject: [PATCH 056/109] remove -keep --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 1a48ec3e..ae7181db 100644 --- a/Makefile +++ b/Makefile @@ -1148,8 +1148,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 4543161cfe1bb95b594b56ad02cbd542fc4a2eab Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 19:54:30 +0000 Subject: [PATCH 057/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index d22992e7..e11ff1a5 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From ec9242ff7be15a9acb1d36feb667d83cd01c0f85 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Fri, 9 Jun 2023 17:20:02 +0000 Subject: [PATCH 058/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index 96d619cf..be1adde3 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py -9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py +c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py +844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 58a568c4fe95ae3d437a7552778f272c62a765df Mon Sep 17 00:00:00 2001 From: M0stafaRady <107422726+M0stafaRady@users.noreply.github.com> Date: Wed, 23 Aug 2023 11:35:05 +0300 Subject: [PATCH 059/109] remove duplicate declaration from caravan_core.v --- verilog/rtl/caravan_core.v | 50 +++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/verilog/rtl/caravan_core.v b/verilog/rtl/caravan_core.v index c3a2714d..6dc303f6 100644 --- a/verilog/rtl/caravan_core.v +++ b/verilog/rtl/caravan_core.v @@ -180,28 +180,28 @@ module caravan_core ( */ // One-bit GPIO dedicated to management SoC (outside of user control) - wire gpio_out_core; - wire gpio_in_core; - wire gpio_mode0_core; - wire gpio_mode1_core; - wire gpio_outenb_core; - wire gpio_inenb_core; + // wire gpio_out_core; + // wire gpio_in_core; + // wire gpio_mode0_core; + // wire gpio_mode1_core; + // wire gpio_outenb_core; + // wire gpio_inenb_core; // 27 GPIO pads with full controls - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_inp_dis; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_oeb; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_ib_mode_sel; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_vtrip_sel; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_slow_sel; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_holdover; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_analog_en; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_analog_sel; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_analog_pol; - wire [(`MPRJ_IO_PADS-`ANALOG_PADS)*3-1:0] mprj_io_dm; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_in; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_in_3v3; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_out; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_one; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_inp_dis; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_oeb; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_ib_mode_sel; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_vtrip_sel; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_slow_sel; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_holdover; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_analog_en; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_analog_sel; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_analog_pol; + // wire [(`MPRJ_IO_PADS-`ANALOG_PADS)*3-1:0] mprj_io_dm; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_in; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_in_3v3; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_out; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] mprj_io_one; wire [7:0] mprj_io_zero; // User Project Control (user-facing) @@ -212,15 +212,15 @@ module caravan_core ( wire [`MPRJ_IO_PADS-`ANALOG_PADS-1:0] user_io_in_3v3; // 18 direct connections to GPIO for low-frequency, low-voltage analog - wire [`MPRJ_IO_PADS-`ANALOG_PADS-10:0] user_gpio_analog; - wire [`MPRJ_IO_PADS-`ANALOG_PADS-10:0] user_gpio_noesd; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-10:0] user_gpio_analog; + // wire [`MPRJ_IO_PADS-`ANALOG_PADS-10:0] user_gpio_noesd; // 3 power supply ESD clamps for user applications - wire [2:0] user_clamp_high; - wire [2:0] user_clamp_low; + // wire [2:0] user_clamp_high; + // wire [2:0] user_clamp_low; // 11 core connections to the analog pads - wire [`ANALOG_PADS-1:0] user_analog; + // wire [`ANALOG_PADS-1:0] user_analog; /* Padframe control signals */ wire [`MPRJ_IO_PADS_1-`ANALOG_PADS_1-1:0] gpio_serial_link_1; From acda91ac91c9a58d52bb53be39e2fe765b226198 Mon Sep 17 00:00:00 2001 From: M0stafaRady Date: Wed, 23 Aug 2023 08:51:02 +0000 Subject: [PATCH 060/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index d8669400..fafdee99 100644 --- a/manifest +++ b/manifest @@ -7,7 +7,7 @@ cc82a78753f5f5d0a1519bd81adbcff8a4296d91 verilog/rtl/__user_project_wrapper.v 3c8c04f53b2848dc46132cda82c614e06e56571b verilog/rtl/buff_flash_clkrst.v 14064261ec18d633a5d72b45b2347c388f2f446f verilog/rtl/caravan.v -502219ed86a5c1707bd0cf636f3b61de78f159d8 verilog/rtl/caravan_core.v +864365067a3fbb8fe3354d94d94c7b8469999850 verilog/rtl/caravan_core.v e68fd2e085679d0f61040115fdd1d50651705d3a verilog/rtl/caravan_logo.v d265ea6bf861e3f5c1b1b984ae057dbaed995008 verilog/rtl/caravan_motto.v baf7cf0e8a8a712621aed75aff98198a663db43b verilog/rtl/caravan_netlists.v From a1eb03bd33af181a1e76c854a1cf9226afbd35e7 Mon Sep 17 00:00:00 2001 From: Jeff DiCorpo <42048757+jeffdi@users.noreply.github.com> Date: Wed, 6 Sep 2023 09:31:29 -0700 Subject: [PATCH 061/109] Update tag to mpw-9e --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5f25b862..e83e78dd 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,7 @@ LARGE_FILES_GZ_SPLIT += $(addsuffix .00.split, $(ARCHIVES)) MCW_ROOT?=$(PWD)/mgmt_core_wrapper MCW ?=LITEX_VEXRISCV -MPW_TAG ?= mpw-9c +MPW_TAG ?= mpw-9e PYTHON_BIN ?= python3 From 11533adefec98b1159704e24d18d95d196d8c983 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:25:05 -0700 Subject: [PATCH 062/109] Makefile add openframe target --- Makefile | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/Makefile b/Makefile index e83e78dd..b76f38c9 100644 --- a/Makefile +++ b/Makefile @@ -200,6 +200,47 @@ __truck: @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_truck.out ### @rm $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl +.PHONY: ship +openframe: check-env uncompress uncompress-caravel +ifeq ($(FOREGROUND),1) + @echo "Running make openframe in the foreground..." + $(MAKE) -f $(CARAVEL_ROOT)/Makefile __openframe + @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out +else + @echo "Running make openframe in the background..." + nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __ship >/dev/null 2>&1 & + tail -f signoff/build/make_openframe.out + @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out +endif + +__openframe: + @echo "###############################################" + @echo "Generating Caravel GDS (sources are in the 'gds' directory)" + @sleep 1 +#### Runs from the CARAVEL_ROOT mag directory + @echo "\ + drc off; \ + crashbackups stop; \ + addpath hexdigits; \ + addpath $(UPRJ_ROOT)/mag; \ + load openframe_project_wrapper; \ + property LEFview true; \ + property GDS_FILE $(UPRJ_ROOT)/gds/openframe_project_wrapper.gds; \ + property GDS_START 0; \ + load $(CARAVEL_ROOT)/maglef/simple_por; \ + load caravel -dereference; \ + select top cell; \ + expand; \ + cif *hier write disable; \ + cif *array write disable; \ + gds write $(UPRJ_ROOT)/gds/caravel.gds; \ + quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl +### Runs from CARAVEL_ROOT + @mkdir -p ./signoff/build + #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out + @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out +### @rm $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl + .PHONY: clean clean: cd $(CARAVEL_ROOT)/verilog/dv/caravel/mgmt_soc/ && \ From ae229a537f09553f704b2cc9532a29188e43b2e6 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:29:04 -0700 Subject: [PATCH 063/109] Makefile add openframe target --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b76f38c9..b0309f88 100644 --- a/Makefile +++ b/Makefile @@ -200,7 +200,7 @@ __truck: @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_truck.out ### @rm $(UPRJ_ROOT)/mag/mag2gds_caravan.tcl -.PHONY: ship +.PHONY: openframe openframe: check-env uncompress uncompress-caravel ifeq ($(FOREGROUND),1) @echo "Running make openframe in the foreground..." @@ -208,7 +208,7 @@ ifeq ($(FOREGROUND),1) @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out else @echo "Running make openframe in the background..." - nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __ship >/dev/null 2>&1 & + nohup $(MAKE) -f $(CARAVEL_ROOT)/Makefile __openframe >/dev/null 2>&1 & tail -f signoff/build/make_openframe.out @echo "Make openframe completed." 2>&1 | tee -a ./signoff/build/make_openframe.out endif From 6de354519ae564bfec8ecc2c07f247a8f97d9c8e Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:31:14 -0700 Subject: [PATCH 064/109] Makefile add openframe target --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b0309f88..bdf27825 100644 --- a/Makefile +++ b/Makefile @@ -228,7 +228,7 @@ __openframe: property GDS_FILE $(UPRJ_ROOT)/gds/openframe_project_wrapper.gds; \ property GDS_START 0; \ load $(CARAVEL_ROOT)/maglef/simple_por; \ - load caravel -dereference; \ + load caravel_openframe -dereference; \ select top cell; \ expand; \ cif *hier write disable; \ From 1e07b854684547bf87fe895f9510b5b5413c4334 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:45:03 -0700 Subject: [PATCH 065/109] disable dist for fill gen --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index bdf27825..ab29c649 100644 --- a/Makefile +++ b/Makefile @@ -1151,8 +1151,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From e52732df01ab29afccfe5cb7c267a67a5e4203de Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 15:32:29 -0700 Subject: [PATCH 066/109] change .magicrc to use from pdk --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index ab29c649..060af0a0 100644 --- a/Makefile +++ b/Makefile @@ -237,8 +237,8 @@ __openframe: quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl ### Runs from CARAVEL_ROOT @mkdir -p ./signoff/build - #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out - @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out + @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out + #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out ### @rm $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl .PHONY: clean @@ -1151,8 +1151,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From 556277b8475d2c8001ff6fd1c341ea7fbf318432 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 16:58:08 -0700 Subject: [PATCH 067/109] change .magicrc to use from pdk --- scripts/compositor.py | 6 +++--- scripts/generate_fill.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/compositor.py b/scripts/compositor.py index 999038f7..df05b215 100755 --- a/scripts/compositor.py +++ b/scripts/compositor.py @@ -147,9 +147,9 @@ def usage(): keepmode = True magpath = mag_dir_path - rcfile = magpath + '/.magicrc' - # pdk_root = os.getenv("PDK_ROOT") - # rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' + # rcfile = magpath + '/.magicrc' + pdk_root = os.getenv("PDK_ROOT") + rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' gdspath = gds_dir_path diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 2b0db8ef..964a6a87 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -153,9 +153,9 @@ def makegds(file): distmode = True magpath = user_project_path + '/mag' - rcfile = magpath + '/.magicrc' - # pdk_root = os.getenv("PDK_ROOT") - # rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' + # rcfile = magpath + '/.magicrc' + pdk_root = os.getenv("PDK_ROOT") + rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' if not os.path.isfile(rcfile): rcfile = None From b08bb5a1ec48493d24899dee976237eb541847a8 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:08:10 -0700 Subject: [PATCH 068/109] add user_id back --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 060af0a0..57a4fcbf 100644 --- a/Makefile +++ b/Makefile @@ -227,6 +227,8 @@ __openframe: property LEFview true; \ property GDS_FILE $(UPRJ_ROOT)/gds/openframe_project_wrapper.gds; \ property GDS_START 0; \ + load $(UPRJ_ROOT)/mag/user_id_programming; \ + load $(UPRJ_ROOT)/mag/user_id_textblock; \ load $(CARAVEL_ROOT)/maglef/simple_por; \ load caravel_openframe -dereference; \ select top cell; \ From 0d5c5191ff6ca27ea78c4dab8cd768204b7abd51 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:25:50 -0700 Subject: [PATCH 069/109] add user_id back --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 57a4fcbf..4181de11 100644 --- a/Makefile +++ b/Makefile @@ -1153,7 +1153,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From b21a7a26f114b21b6dc15cf7fbf60620e40dec81 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 00:21:17 +0000 Subject: [PATCH 070/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index d8669400..4b7b6aef 100644 --- a/manifest +++ b/manifest @@ -55,5 +55,5 @@ b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py -9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py +50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 4c6cc4ff64afd18996ab8ed495a7d1dc59c8fd31 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:30:10 -0700 Subject: [PATCH 071/109] rename top to caravel --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 4181de11..7558b799 100644 --- a/Makefile +++ b/Makefile @@ -235,6 +235,7 @@ __openframe: expand; \ cif *hier write disable; \ cif *array write disable; \ + save caravel; \ gds write $(UPRJ_ROOT)/gds/caravel.gds; \ quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl ### Runs from CARAVEL_ROOT From 9c8611ac33feb2d8404cf9e7d330f9406f066601 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:25:22 -0700 Subject: [PATCH 072/109] change bbox for gen fill --- Makefile | 4 ++-- scripts/generate_fill.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 7558b799..e10ae5b4 100644 --- a/Makefile +++ b/Makefile @@ -1154,8 +1154,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 964a6a87..098a590a 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -192,7 +192,8 @@ def makegds(file): if not distmode: print('cif ostyle wafflefill(tiled)', file=ofile) print('', file=ofile) - print('set fullbox [box values]', file=ofile) + # print('set fullbox [box values]', file=ofile) + print('set fullbox { 0 0 3588um 5188um }', file=ofile) print('set xmax [lindex $fullbox 2]', file=ofile) print('set xmin [lindex $fullbox 0]', file=ofile) print('set fullwidth [expr {$xmax - $xmin}]', file=ofile) From b5faa21e1eca0ad18ccfa7ff12d0c19114ee6fc4 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:28:54 -0700 Subject: [PATCH 073/109] change bbox for gen fill --- scripts/generate_fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 098a590a..5a0646f8 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -193,7 +193,7 @@ def makegds(file): print('cif ostyle wafflefill(tiled)', file=ofile) print('', file=ofile) # print('set fullbox [box values]', file=ofile) - print('set fullbox { 0 0 3588um 5188um }', file=ofile) + print('set fullbox { 0 0 717600 1037600 }', file=ofile) print('set xmax [lindex $fullbox 2]', file=ofile) print('set xmin [lindex $fullbox 0]', file=ofile) print('set fullwidth [expr {$xmax - $xmin}]', file=ofile) From d335ed562c1afdf23a6df6636718be664446c28d Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:37:32 -0700 Subject: [PATCH 074/109] change bbox for gen fill --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e10ae5b4..7558b799 100644 --- a/Makefile +++ b/Makefile @@ -1154,8 +1154,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From f92ef031ce3b3cfb573f74fc3a2d25e350569606 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 09:48:04 -0700 Subject: [PATCH 075/109] remove -keep for gen fill --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7558b799..877f3f0c 100644 --- a/Makefile +++ b/Makefile @@ -1154,7 +1154,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 2d0183c33d1f4b0e17deaca99d5b4e0af1e2b727 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 14:58:47 +0000 Subject: [PATCH 076/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index 4b7b6aef..5edfdbb8 100644 --- a/manifest +++ b/manifest @@ -55,5 +55,5 @@ b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 4b2d7af1884bf5da5c7b9e7cbc319620e63d521d Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 10:37:10 -0700 Subject: [PATCH 077/109] add -keep --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 877f3f0c..0596da09 100644 --- a/Makefile +++ b/Makefile @@ -1154,7 +1154,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 0f9e9309d8872b74926db2fd59f07ca10a993d5a Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 12:40:54 -0700 Subject: [PATCH 078/109] correct load issue with gen fill --- scripts/generate_fill.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 5a0646f8..9d9a90ca 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -187,6 +187,7 @@ def makegds(file): print('gds readonly true', file=ofile) print('gds rescale false', file=ofile) print('gds read ../gds/' + project, file=ofile) + print('load ' + project, file=ofile) print('select top cell', file=ofile) print('expand', file=ofile) if not distmode: From 68e2b87ea52c3afdacba9a696b03ba4c034d818e Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 23:25:59 -0700 Subject: [PATCH 079/109] remove -keep --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0596da09..9c9202a4 100644 --- a/Makefile +++ b/Makefile @@ -1154,8 +1154,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From a8c0cf902760bb5e9c70f6fad3b1907cebfc2458 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 19:54:30 +0000 Subject: [PATCH 080/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index 5edfdbb8..49d6ce3a 100644 --- a/manifest +++ b/manifest @@ -55,5 +55,5 @@ b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py +c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From a14a4fa563874c067f065eb3c14d53ce66772c0e Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 00:21:17 +0000 Subject: [PATCH 081/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index 49d6ce3a..d8669400 100644 --- a/manifest +++ b/manifest @@ -55,5 +55,5 @@ b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py -844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py +98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py +9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py From 40f5d9476c5e238bd70cd137bf5fc67dad4b678c Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:25:22 -0700 Subject: [PATCH 082/109] change bbox for gen fill --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 9c9202a4..7558b799 100644 --- a/Makefile +++ b/Makefile @@ -1154,8 +1154,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 42d186015ceb1596ee2f2060c46d0a9624f8a250 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 09:48:04 -0700 Subject: [PATCH 083/109] remove -keep for gen fill --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7558b799..877f3f0c 100644 --- a/Makefile +++ b/Makefile @@ -1154,7 +1154,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 238982d1ee7e4f3999a32d13715ca111812a4a4f Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 14:58:47 +0000 Subject: [PATCH 084/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index d8669400..4b7b6aef 100644 --- a/manifest +++ b/manifest @@ -55,5 +55,5 @@ b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py -9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py +50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From ed2b6ad39eb15a5894f614727646a987cb1d65df Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 10:37:10 -0700 Subject: [PATCH 085/109] add -keep --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 877f3f0c..0596da09 100644 --- a/Makefile +++ b/Makefile @@ -1154,7 +1154,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 0e65bfabea66f561691594de80ccb13eec2c0464 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 23:25:59 -0700 Subject: [PATCH 086/109] remove -keep --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0596da09..9c9202a4 100644 --- a/Makefile +++ b/Makefile @@ -1154,8 +1154,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 1562d1af3032f2c37f10802eb8cea36d9528b469 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 19:54:30 +0000 Subject: [PATCH 087/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index 4b7b6aef..5edfdbb8 100644 --- a/manifest +++ b/manifest @@ -55,5 +55,5 @@ b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -50837d9dc036802fd2b3d2ad07275e3a0e6ca522 scripts/generate_fill.py +548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From c95834d22eccb351c8c1149e55f72a207b9a927b Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:25:05 -0700 Subject: [PATCH 088/109] Makefile add openframe target --- Makefile | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 9c9202a4..037b1c7a 100644 --- a/Makefile +++ b/Makefile @@ -235,8 +235,7 @@ __openframe: expand; \ cif *hier write disable; \ cif *array write disable; \ - save caravel; \ - gds write $(UPRJ_ROOT)/gds/caravel.gds; \ + gds write $(UPRJ_ROOT)/gds/caravel_openframe.gds; \ quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl ### Runs from CARAVEL_ROOT @mkdir -p ./signoff/build @@ -1155,7 +1154,6 @@ __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out @@ -1224,7 +1222,7 @@ update_caravel: .PHONY: install_mcw install_mcw: if [ -d "$(MCW_ROOT)" ]; then \ - echo "Deleting existing $(MCW_ROOT)" && \ + echo "Deleting exisiting $(MCW_ROOT)" && \ rm -rf $(MCW_ROOT) && sleep 2;\ fi ifeq ($(SUBMODULE),1) @@ -1301,7 +1299,7 @@ clean-pdk: .PHONY: skywater-pdk skywater-pdk: if [ -d "$(PDK_ROOT)/skywater-pdk" ]; then\ - echo "Deleting existing $(PDK_ROOT)/skywater-pdk" && \ + echo "Deleting exisiting $(PDK_ROOT)/skywater-pdk" && \ rm -rf $(PDK_ROOT)/skywater-pdk && sleep 2;\ fi git clone https://github.com/google/skywater-pdk.git $(PDK_ROOT)/skywater-pdk @@ -1318,7 +1316,7 @@ skywater-pdk: .PHONY: open-pdks open-pdks: if [ -d "$(PDK_ROOT)/open_pdks" ]; then \ - echo "Deleting existing $(PDK_ROOT)/open_pdks" && \ + echo "Deleting exisiting $(PDK_ROOT)/open_pdks" && \ rm -rf $(PDK_ROOT)/open_pdks && sleep 2; \ fi git clone git://opencircuitdesign.com/open_pdks $(PDK_ROOT)/open_pdks @@ -1329,7 +1327,7 @@ open-pdks: .PHONY: sky130 sky130: if [ -d "$(PDK_ROOT)/$(PDK)" ]; then \ - echo "Deleting existing $(PDK_ROOT)/$(PDK)" && \ + echo "Deleting exisiting $(PDK_ROOT)/$(PDK)" && \ rm -rf $(PDK_ROOT)/$(PDK) && sleep 2;\ fi docker run --rm\ From 39846c84a1d602c5e3f2d827e30f69b7cb8fedcf Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 12:45:03 -0700 Subject: [PATCH 089/109] disable dist for fill gen --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 037b1c7a..806b6e03 100644 --- a/Makefile +++ b/Makefile @@ -1153,8 +1153,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From 921e4e21156951fa681ff43862fa0e18c7e9a7cd Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 15:32:29 -0700 Subject: [PATCH 090/109] change .magicrc to use from pdk --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 806b6e03..037b1c7a 100644 --- a/Makefile +++ b/Makefile @@ -1153,8 +1153,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From df3eca2eb574bf51b22d3390f471b4dab3210115 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:25:50 -0700 Subject: [PATCH 091/109] add user_id back --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 037b1c7a..315abb9b 100644 --- a/Makefile +++ b/Makefile @@ -1153,7 +1153,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 4691b2c32dad4089e4c0672266aafcb267c9fbe5 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:25:22 -0700 Subject: [PATCH 092/109] change bbox for gen fill --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 315abb9b..e53bb51a 100644 --- a/Makefile +++ b/Makefile @@ -1153,8 +1153,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From 3985e19a80f7cdc1647c75d89c391c96d616b15b Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 07:37:32 -0700 Subject: [PATCH 093/109] change bbox for gen fill --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e53bb51a..315abb9b 100644 --- a/Makefile +++ b/Makefile @@ -1153,8 +1153,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out .PHONY: final From 144e9b21924de9a0daa8345f3dce2b6e8672008a Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 09:48:04 -0700 Subject: [PATCH 094/109] remove -keep for gen fill --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 315abb9b..037b1c7a 100644 --- a/Makefile +++ b/Makefile @@ -1153,7 +1153,7 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From b709ac0bfe7577c84ed2dccd3839352041e2b795 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 10:37:10 -0700 Subject: [PATCH 095/109] add -keep --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 037b1c7a..427cef26 100644 --- a/Makefile +++ b/Makefile @@ -1153,7 +1153,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 40b141bb5ad4743eb3f4fc8b8b9decb04fb71803 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 23:25:59 -0700 Subject: [PATCH 096/109] remove -keep --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 427cef26..00b4567f 100644 --- a/Makefile +++ b/Makefile @@ -1153,8 +1153,8 @@ endif __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out + python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out + #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From d2c500fa0fd615432a3aedac660802cdbacc6237 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 19:54:30 +0000 Subject: [PATCH 097/109] Apply automatic changes to Manifest and README.rst --- manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest b/manifest index 5edfdbb8..49d6ce3a 100644 --- a/manifest +++ b/manifest @@ -55,5 +55,5 @@ b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -548bcf2c67867cd6bb0107352409710d64ee1350 scripts/generate_fill.py +c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py 844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From 8c0f2f58aae01508b9458495a6fcbf70394ff68d Mon Sep 17 00:00:00 2001 From: jeffdi Date: Thu, 8 Jun 2023 00:21:17 +0000 Subject: [PATCH 098/109] Apply automatic changes to Manifest and README.rst --- manifest | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/manifest b/manifest index 49d6ce3a..0819f51a 100644 --- a/manifest +++ b/manifest @@ -52,8 +52,7 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v 669d16642d5dd5f6824812754db20db98c9fe17b verilog/rtl/ring_osc2x13.v 739ca5ed63a513d2e4c9bf3ecfad32d9fa527518 verilog/rtl/simple_por.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v -036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py -844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py +98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py +9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py From e2f41e2c7914cd40876272b32bcd2e14cb2001ec Mon Sep 17 00:00:00 2001 From: jeffdi Date: Wed, 7 Jun 2023 17:30:10 -0700 Subject: [PATCH 099/109] rename top to caravel --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 00b4567f..8ef77c9f 100644 --- a/Makefile +++ b/Makefile @@ -62,12 +62,12 @@ MCW_LITE?=1 ifeq ($(MCW),LITEX_VEXRISCV) MCW_NAME := mcw-litex-vexriscv - MCW_REPO ?= https://github.com/efabless/caravel_mgmt_soc_litex - MCW_TAG ?= $(MPW_TAG) + MCW_REPO := https://github.com/efabless/caravel_mgmt_soc_litex + MCW_TAG := $(MPW_TAG) else MCW_NAME := mcw-pico - MCW_REPO ?= https://github.com/efabless/caravel_pico - MCW_TAG ?= $(MPW_TAG) + MCW_REPO := https://github.com/efabless/caravel_pico + MCW_TAG := $(MPW_TAG) endif # Install caravel as submodule, (1): submodule, (0): clone From 2103b5951706bdafab18f49b62a026f4e3ce678f Mon Sep 17 00:00:00 2001 From: jeffdi Date: Fri, 9 Jun 2023 17:20:02 +0000 Subject: [PATCH 100/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index 0819f51a..2c943feb 100644 --- a/manifest +++ b/manifest @@ -54,5 +54,5 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -98168b1fb6f80b196f9a05e725ec6ad99bc57ac6 scripts/generate_fill.py -9e31b1bbbb03024d02d54f9da8d42b3837abc5e5 scripts/compositor.py +c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py +844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py From c55d4f640a9edf0f8a175bb0bdd1dd40d2830998 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Mon, 11 Sep 2023 10:46:18 -0700 Subject: [PATCH 101/109] update openframe make target --- Makefile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 8ef77c9f..d9f306cf 100644 --- a/Makefile +++ b/Makefile @@ -236,12 +236,10 @@ __openframe: cif *hier write disable; \ cif *array write disable; \ gds write $(UPRJ_ROOT)/gds/caravel_openframe.gds; \ - quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl + quit -noprompt;" > $(UPRJ_ROOT)/mag/mag2gds_caravel_openframe.tcl ### Runs from CARAVEL_ROOT @mkdir -p ./signoff/build - @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out - #@cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ./.magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_ship.out -### @rm $(UPRJ_ROOT)/mag/mag2gds_caravel.tcl + @cd $(CARAVEL_ROOT)/mag && PDKPATH=${PDK_ROOT}/$(PDK) MAGTYPE=mag magic -noc -dnull -rcfile ${PDK_ROOT}/$(PDK)/libs.tech/magic/$(PDK).magicrc $(UPRJ_ROOT)/mag/mag2gds_caravel_openframe.tcl 2>&1 | tee $(UPRJ_ROOT)/signoff/build/make_openframe.out .PHONY: clean clean: From 8bdf48732253f9fe882595c1774a9a1e511238e8 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Mon, 11 Sep 2023 18:00:47 +0000 Subject: [PATCH 102/109] Apply automatic changes to Manifest and README.rst --- manifest | 1 + 1 file changed, 1 insertion(+) diff --git a/manifest b/manifest index 2c943feb..49d6ce3a 100644 --- a/manifest +++ b/manifest @@ -52,6 +52,7 @@ e0c6ead5e35c1ba01d923c482e953c2af9691524 verilog/rtl/mprj_io_buffer.v 669d16642d5dd5f6824812754db20db98c9fe17b verilog/rtl/ring_osc2x13.v 739ca5ed63a513d2e4c9bf3ecfad32d9fa527518 verilog/rtl/simple_por.v b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v +036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py From 78a5f2a4a217fa719b05cfe610098a80d08c8dfc Mon Sep 17 00:00:00 2001 From: jeffdi Date: Mon, 11 Sep 2023 11:01:40 -0700 Subject: [PATCH 103/109] correct typos --- Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index d9f306cf..640740ac 100644 --- a/Makefile +++ b/Makefile @@ -62,12 +62,12 @@ MCW_LITE?=1 ifeq ($(MCW),LITEX_VEXRISCV) MCW_NAME := mcw-litex-vexriscv - MCW_REPO := https://github.com/efabless/caravel_mgmt_soc_litex - MCW_TAG := $(MPW_TAG) + MCW_REPO ?= https://github.com/efabless/caravel_mgmt_soc_litex + MCW_TAG ?= $(MPW_TAG) else MCW_NAME := mcw-pico - MCW_REPO := https://github.com/efabless/caravel_pico - MCW_TAG := $(MPW_TAG) + MCW_REPO ?= https://github.com/efabless/caravel_pico + MCW_TAG ?= $(MPW_TAG) endif # Install caravel as submodule, (1): submodule, (0): clone @@ -1221,7 +1221,7 @@ update_caravel: .PHONY: install_mcw install_mcw: if [ -d "$(MCW_ROOT)" ]; then \ - echo "Deleting exisiting $(MCW_ROOT)" && \ + echo "Deleting existing $(MCW_ROOT)" && \ rm -rf $(MCW_ROOT) && sleep 2;\ fi ifeq ($(SUBMODULE),1) @@ -1298,7 +1298,7 @@ clean-pdk: .PHONY: skywater-pdk skywater-pdk: if [ -d "$(PDK_ROOT)/skywater-pdk" ]; then\ - echo "Deleting exisiting $(PDK_ROOT)/skywater-pdk" && \ + echo "Deleting existing $(PDK_ROOT)/skywater-pdk" && \ rm -rf $(PDK_ROOT)/skywater-pdk && sleep 2;\ fi git clone https://github.com/google/skywater-pdk.git $(PDK_ROOT)/skywater-pdk @@ -1315,7 +1315,7 @@ skywater-pdk: .PHONY: open-pdks open-pdks: if [ -d "$(PDK_ROOT)/open_pdks" ]; then \ - echo "Deleting exisiting $(PDK_ROOT)/open_pdks" && \ + echo "Deleting existing $(PDK_ROOT)/open_pdks" && \ rm -rf $(PDK_ROOT)/open_pdks && sleep 2; \ fi git clone git://opencircuitdesign.com/open_pdks $(PDK_ROOT)/open_pdks @@ -1326,7 +1326,7 @@ open-pdks: .PHONY: sky130 sky130: if [ -d "$(PDK_ROOT)/$(PDK)" ]; then \ - echo "Deleting exisiting $(PDK_ROOT)/$(PDK)" && \ + echo "Deleting existing $(PDK_ROOT)/$(PDK)" && \ rm -rf $(PDK_ROOT)/$(PDK) && sleep 2;\ fi docker run --rm\ From 909998bb9d4d2f75c962c94262dfd23191295d4f Mon Sep 17 00:00:00 2001 From: jeffdi Date: Mon, 11 Sep 2023 11:02:57 -0700 Subject: [PATCH 104/109] correct typos --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 640740ac..6042efd5 100644 --- a/Makefile +++ b/Makefile @@ -1152,7 +1152,6 @@ __generate_fill: @mkdir -p ./signoff/build @cp -r $(CARAVEL_ROOT)/mag/.magicrc $(shell pwd)/mag python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist 2>&1 | tee ./signoff/build/generate_fill.out - #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -dist -keep 2>&1 | tee ./signoff/build/generate_fill.out #python3 $(CARAVEL_ROOT)/scripts/generate_fill.py $(USER_ID) $(PROJECT) $(shell pwd) -keep 2>&1 | tee ./signoff/build/generate_fill.out From 19ce6de3cccd23cbfe70bb94c76b3f95d462677b Mon Sep 17 00:00:00 2001 From: jeffdi Date: Tue, 12 Sep 2023 07:23:34 -0700 Subject: [PATCH 105/109] remove hard-coded sky130A in rcfile path from scripts --- scripts/compositor.py | 3 ++- scripts/generate_fill.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/compositor.py b/scripts/compositor.py index df05b215..a17d962c 100755 --- a/scripts/compositor.py +++ b/scripts/compositor.py @@ -149,7 +149,8 @@ def usage(): magpath = mag_dir_path # rcfile = magpath + '/.magicrc' pdk_root = os.getenv("PDK_ROOT") - rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' + pdk = os.getenv("PDK") + rcfile = pdk_root + '/' + pdk + '/libs.tech/magic/' + pdk + '.magicrc' gdspath = gds_dir_path diff --git a/scripts/generate_fill.py b/scripts/generate_fill.py index 9d9a90ca..eb25814f 100755 --- a/scripts/generate_fill.py +++ b/scripts/generate_fill.py @@ -155,7 +155,8 @@ def makegds(file): magpath = user_project_path + '/mag' # rcfile = magpath + '/.magicrc' pdk_root = os.getenv("PDK_ROOT") - rcfile = pdk_root + '/sky130A/libs.tech/magic/sky130A.magicrc' + pdk = os.getenv("PDK") + rcfile = pdk_root + '/' + pdk + '/libs.tech/magic/' + pdk + '.magicrc' if not os.path.isfile(rcfile): rcfile = None From a4ff88b778709702e0fa672024b45db423faf985 Mon Sep 17 00:00:00 2001 From: jeffdi Date: Tue, 12 Sep 2023 14:38:18 +0000 Subject: [PATCH 106/109] Apply automatic changes to Manifest and README.rst --- manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest b/manifest index 49d6ce3a..63ad1ed6 100644 --- a/manifest +++ b/manifest @@ -55,5 +55,5 @@ b9d6114a5067a04dd59cdd46fb988591c16743ce verilog/rtl/spare_logic_block.v 036dc8e9066082b2e133dc7b72fd3ad5a52f254b verilog/rtl/toplevel_cocotb.v 8f0bec01c914efe790a09ffe62bbfe0781069e35 verilog/rtl/xres_buf.v 256190717faa72005cf7656d8443c4c0693b3f78 scripts/set_user_id.py -c19309aec5f7aad1ae1a90f8453218223a189dea scripts/generate_fill.py -844f897f586a5cdcf95be3dbfdd04201c9ed14ca scripts/compositor.py +731116709a44d13225170acc83cd34ff9e00fa39 scripts/generate_fill.py +dff8adfb05bedf96f86e16a18ce3cd5818d6fb78 scripts/compositor.py From cee0f31d9135cc626c18fb889a47b1c6c1e9536e Mon Sep 17 00:00:00 2001 From: mo-hosni Date: Mon, 18 Sep 2023 16:59:55 +0300 Subject: [PATCH 107/109] add gate-level netlist for `caravel_openframe` --- verilog/gl/caravel_openframe-example.v | 1021 +++++++++++++++++++++++ verilog/gl/caravel_openframe.v | 1031 ++++++++++++++++++++++++ 2 files changed, 2052 insertions(+) create mode 100644 verilog/gl/caravel_openframe-example.v create mode 100644 verilog/gl/caravel_openframe.v diff --git a/verilog/gl/caravel_openframe-example.v b/verilog/gl/caravel_openframe-example.v new file mode 100644 index 00000000..ee3fc728 --- /dev/null +++ b/verilog/gl/caravel_openframe-example.v @@ -0,0 +1,1021 @@ +/* Generated by Yosys 0.30+48 (git sha1 14d50a176d5, gcc 8.3.1 -fPIC -Os) */ + +module caravel_openframe(vddio, vddio_2, vssio, vssio_2, vdda, vssa, vccd, vssd, vdda1, vdda1_2, vdda2, vssa1, vssa1_2, vssa2, vccd1, vccd2, vssd1, vssd2, gpio, resetb); + wire \analog_io[0] ; + wire \analog_io[10] ; + wire \analog_io[11] ; + wire \analog_io[12] ; + wire \analog_io[13] ; + wire \analog_io[14] ; + wire \analog_io[15] ; + wire \analog_io[16] ; + wire \analog_io[17] ; + wire \analog_io[18] ; + wire \analog_io[19] ; + wire \analog_io[1] ; + wire \analog_io[20] ; + wire \analog_io[21] ; + wire \analog_io[22] ; + wire \analog_io[23] ; + wire \analog_io[24] ; + wire \analog_io[25] ; + wire \analog_io[26] ; + wire \analog_io[27] ; + wire \analog_io[28] ; + wire \analog_io[29] ; + wire \analog_io[2] ; + wire \analog_io[30] ; + wire \analog_io[31] ; + wire \analog_io[32] ; + wire \analog_io[33] ; + wire \analog_io[34] ; + wire \analog_io[35] ; + wire \analog_io[36] ; + wire \analog_io[37] ; + wire \analog_io[38] ; + wire \analog_io[39] ; + wire \analog_io[3] ; + wire \analog_io[40] ; + wire \analog_io[41] ; + wire \analog_io[42] ; + wire \analog_io[43] ; + wire \analog_io[4] ; + wire \analog_io[5] ; + wire \analog_io[6] ; + wire \analog_io[7] ; + wire \analog_io[8] ; + wire \analog_io[9] ; + wire \analog_noesd_io[0] ; + wire \analog_noesd_io[10] ; + wire \analog_noesd_io[11] ; + wire \analog_noesd_io[12] ; + wire \analog_noesd_io[13] ; + wire \analog_noesd_io[14] ; + wire \analog_noesd_io[15] ; + wire \analog_noesd_io[16] ; + wire \analog_noesd_io[17] ; + wire \analog_noesd_io[18] ; + wire \analog_noesd_io[19] ; + wire \analog_noesd_io[1] ; + wire \analog_noesd_io[20] ; + wire \analog_noesd_io[21] ; + wire \analog_noesd_io[22] ; + wire \analog_noesd_io[23] ; + wire \analog_noesd_io[24] ; + wire \analog_noesd_io[25] ; + wire \analog_noesd_io[26] ; + wire \analog_noesd_io[27] ; + wire \analog_noesd_io[28] ; + wire \analog_noesd_io[29] ; + wire \analog_noesd_io[2] ; + wire \analog_noesd_io[30] ; + wire \analog_noesd_io[31] ; + wire \analog_noesd_io[32] ; + wire \analog_noesd_io[33] ; + wire \analog_noesd_io[34] ; + wire \analog_noesd_io[35] ; + wire \analog_noesd_io[36] ; + wire \analog_noesd_io[37] ; + wire \analog_noesd_io[38] ; + wire \analog_noesd_io[39] ; + wire \analog_noesd_io[3] ; + wire \analog_noesd_io[40] ; + wire \analog_noesd_io[41] ; + wire \analog_noesd_io[42] ; + wire \analog_noesd_io[43] ; + wire \analog_noesd_io[4] ; + wire \analog_noesd_io[5] ; + wire \analog_noesd_io[6] ; + wire \analog_noesd_io[7] ; + wire \analog_noesd_io[8] ; + wire \analog_noesd_io[9] ; + inout [43:0] gpio; + wire [43:0] gpio; + wire \gpio_analog_en[0] ; + wire \gpio_analog_en[10] ; + wire \gpio_analog_en[11] ; + wire \gpio_analog_en[12] ; + wire \gpio_analog_en[13] ; + wire \gpio_analog_en[14] ; + wire \gpio_analog_en[15] ; + wire \gpio_analog_en[16] ; + wire \gpio_analog_en[17] ; + wire \gpio_analog_en[18] ; + wire \gpio_analog_en[19] ; + wire \gpio_analog_en[1] ; + wire \gpio_analog_en[20] ; + wire \gpio_analog_en[21] ; + wire \gpio_analog_en[22] ; + wire \gpio_analog_en[23] ; + wire \gpio_analog_en[24] ; + wire \gpio_analog_en[25] ; + wire \gpio_analog_en[26] ; + wire \gpio_analog_en[27] ; + wire \gpio_analog_en[28] ; + wire \gpio_analog_en[29] ; + wire \gpio_analog_en[2] ; + wire \gpio_analog_en[30] ; + wire \gpio_analog_en[31] ; + wire \gpio_analog_en[32] ; + wire \gpio_analog_en[33] ; + wire \gpio_analog_en[34] ; + wire \gpio_analog_en[35] ; + wire \gpio_analog_en[36] ; + wire \gpio_analog_en[37] ; + wire \gpio_analog_en[38] ; + wire \gpio_analog_en[39] ; + wire \gpio_analog_en[3] ; + wire \gpio_analog_en[40] ; + wire \gpio_analog_en[41] ; + wire \gpio_analog_en[42] ; + wire \gpio_analog_en[43] ; + wire \gpio_analog_en[4] ; + wire \gpio_analog_en[5] ; + wire \gpio_analog_en[6] ; + wire \gpio_analog_en[7] ; + wire \gpio_analog_en[8] ; + wire \gpio_analog_en[9] ; + wire \gpio_analog_pol[0] ; + wire \gpio_analog_pol[10] ; + wire \gpio_analog_pol[11] ; + wire \gpio_analog_pol[12] ; + wire \gpio_analog_pol[13] ; + wire \gpio_analog_pol[14] ; + wire \gpio_analog_pol[15] ; + wire \gpio_analog_pol[16] ; + wire \gpio_analog_pol[17] ; + wire \gpio_analog_pol[18] ; + wire \gpio_analog_pol[19] ; + wire \gpio_analog_pol[1] ; + wire \gpio_analog_pol[20] ; + wire \gpio_analog_pol[21] ; + wire \gpio_analog_pol[22] ; + wire \gpio_analog_pol[23] ; + wire \gpio_analog_pol[24] ; + wire \gpio_analog_pol[25] ; + wire \gpio_analog_pol[26] ; + wire \gpio_analog_pol[27] ; + wire \gpio_analog_pol[28] ; + wire \gpio_analog_pol[29] ; + wire \gpio_analog_pol[2] ; + wire \gpio_analog_pol[30] ; + wire \gpio_analog_pol[31] ; + wire \gpio_analog_pol[32] ; + wire \gpio_analog_pol[33] ; + wire \gpio_analog_pol[34] ; + wire \gpio_analog_pol[35] ; + wire \gpio_analog_pol[36] ; + wire \gpio_analog_pol[37] ; + wire \gpio_analog_pol[38] ; + wire \gpio_analog_pol[39] ; + wire \gpio_analog_pol[3] ; + wire \gpio_analog_pol[40] ; + wire \gpio_analog_pol[41] ; + wire \gpio_analog_pol[42] ; + wire \gpio_analog_pol[43] ; + wire \gpio_analog_pol[4] ; + wire \gpio_analog_pol[5] ; + wire \gpio_analog_pol[6] ; + wire \gpio_analog_pol[7] ; + wire \gpio_analog_pol[8] ; + wire \gpio_analog_pol[9] ; + wire \gpio_analog_sel[0] ; + wire \gpio_analog_sel[10] ; + wire \gpio_analog_sel[11] ; + wire \gpio_analog_sel[12] ; + wire \gpio_analog_sel[13] ; + wire \gpio_analog_sel[14] ; + wire \gpio_analog_sel[15] ; + wire \gpio_analog_sel[16] ; + wire \gpio_analog_sel[17] ; + wire \gpio_analog_sel[18] ; + wire \gpio_analog_sel[19] ; + wire \gpio_analog_sel[1] ; + wire \gpio_analog_sel[20] ; + wire \gpio_analog_sel[21] ; + wire \gpio_analog_sel[22] ; + wire \gpio_analog_sel[23] ; + wire \gpio_analog_sel[24] ; + wire \gpio_analog_sel[25] ; + wire \gpio_analog_sel[26] ; + wire \gpio_analog_sel[27] ; + wire \gpio_analog_sel[28] ; + wire \gpio_analog_sel[29] ; + wire \gpio_analog_sel[2] ; + wire \gpio_analog_sel[30] ; + wire \gpio_analog_sel[31] ; + wire \gpio_analog_sel[32] ; + wire \gpio_analog_sel[33] ; + wire \gpio_analog_sel[34] ; + wire \gpio_analog_sel[35] ; + wire \gpio_analog_sel[36] ; + wire \gpio_analog_sel[37] ; + wire \gpio_analog_sel[38] ; + wire \gpio_analog_sel[39] ; + wire \gpio_analog_sel[3] ; + wire \gpio_analog_sel[40] ; + wire \gpio_analog_sel[41] ; + wire \gpio_analog_sel[42] ; + wire \gpio_analog_sel[43] ; + wire \gpio_analog_sel[4] ; + wire \gpio_analog_sel[5] ; + wire \gpio_analog_sel[6] ; + wire \gpio_analog_sel[7] ; + wire \gpio_analog_sel[8] ; + wire \gpio_analog_sel[9] ; + wire \gpio_dm0[0] ; + wire \gpio_dm0[10] ; + wire \gpio_dm0[11] ; + wire \gpio_dm0[12] ; + wire \gpio_dm0[13] ; + wire \gpio_dm0[14] ; + wire \gpio_dm0[15] ; + wire \gpio_dm0[16] ; + wire \gpio_dm0[17] ; + wire \gpio_dm0[18] ; + wire \gpio_dm0[19] ; + wire \gpio_dm0[1] ; + wire \gpio_dm0[20] ; + wire \gpio_dm0[21] ; + wire \gpio_dm0[22] ; + wire \gpio_dm0[23] ; + wire \gpio_dm0[24] ; + wire \gpio_dm0[25] ; + wire \gpio_dm0[26] ; + wire \gpio_dm0[27] ; + wire \gpio_dm0[28] ; + wire \gpio_dm0[29] ; + wire \gpio_dm0[2] ; + wire \gpio_dm0[30] ; + wire \gpio_dm0[31] ; + wire \gpio_dm0[32] ; + wire \gpio_dm0[33] ; + wire \gpio_dm0[34] ; + wire \gpio_dm0[35] ; + wire \gpio_dm0[36] ; + wire \gpio_dm0[37] ; + wire \gpio_dm0[38] ; + wire \gpio_dm0[39] ; + wire \gpio_dm0[3] ; + wire \gpio_dm0[40] ; + wire \gpio_dm0[41] ; + wire \gpio_dm0[42] ; + wire \gpio_dm0[43] ; + wire \gpio_dm0[4] ; + wire \gpio_dm0[5] ; + wire \gpio_dm0[6] ; + wire \gpio_dm0[7] ; + wire \gpio_dm0[8] ; + wire \gpio_dm0[9] ; + wire \gpio_dm1[0] ; + wire \gpio_dm1[10] ; + wire \gpio_dm1[11] ; + wire \gpio_dm1[12] ; + wire \gpio_dm1[13] ; + wire \gpio_dm1[14] ; + wire \gpio_dm1[15] ; + wire \gpio_dm1[16] ; + wire \gpio_dm1[17] ; + wire \gpio_dm1[18] ; + wire \gpio_dm1[19] ; + wire \gpio_dm1[1] ; + wire \gpio_dm1[20] ; + wire \gpio_dm1[21] ; + wire \gpio_dm1[22] ; + wire \gpio_dm1[23] ; + wire \gpio_dm1[24] ; + wire \gpio_dm1[25] ; + wire \gpio_dm1[26] ; + wire \gpio_dm1[27] ; + wire \gpio_dm1[28] ; + wire \gpio_dm1[29] ; + wire \gpio_dm1[2] ; + wire \gpio_dm1[30] ; + wire \gpio_dm1[31] ; + wire \gpio_dm1[32] ; + wire \gpio_dm1[33] ; + wire \gpio_dm1[34] ; + wire \gpio_dm1[35] ; + wire \gpio_dm1[36] ; + wire \gpio_dm1[37] ; + wire \gpio_dm1[38] ; + wire \gpio_dm1[39] ; + wire \gpio_dm1[3] ; + wire \gpio_dm1[40] ; + wire \gpio_dm1[41] ; + wire \gpio_dm1[42] ; + wire \gpio_dm1[43] ; + wire \gpio_dm1[4] ; + wire \gpio_dm1[5] ; + wire \gpio_dm1[6] ; + wire \gpio_dm1[7] ; + wire \gpio_dm1[8] ; + wire \gpio_dm1[9] ; + wire \gpio_dm2[0] ; + wire \gpio_dm2[10] ; + wire \gpio_dm2[11] ; + wire \gpio_dm2[12] ; + wire \gpio_dm2[13] ; + wire \gpio_dm2[14] ; + wire \gpio_dm2[15] ; + wire \gpio_dm2[16] ; + wire \gpio_dm2[17] ; + wire \gpio_dm2[18] ; + wire \gpio_dm2[19] ; + wire \gpio_dm2[1] ; + wire \gpio_dm2[20] ; + wire \gpio_dm2[21] ; + wire \gpio_dm2[22] ; + wire \gpio_dm2[23] ; + wire \gpio_dm2[24] ; + wire \gpio_dm2[25] ; + wire \gpio_dm2[26] ; + wire \gpio_dm2[27] ; + wire \gpio_dm2[28] ; + wire \gpio_dm2[29] ; + wire \gpio_dm2[2] ; + wire \gpio_dm2[30] ; + wire \gpio_dm2[31] ; + wire \gpio_dm2[32] ; + wire \gpio_dm2[33] ; + wire \gpio_dm2[34] ; + wire \gpio_dm2[35] ; + wire \gpio_dm2[36] ; + wire \gpio_dm2[37] ; + wire \gpio_dm2[38] ; + wire \gpio_dm2[39] ; + wire \gpio_dm2[3] ; + wire \gpio_dm2[40] ; + wire \gpio_dm2[41] ; + wire \gpio_dm2[42] ; + wire \gpio_dm2[43] ; + wire \gpio_dm2[4] ; + wire \gpio_dm2[5] ; + wire \gpio_dm2[6] ; + wire \gpio_dm2[7] ; + wire \gpio_dm2[8] ; + wire \gpio_dm2[9] ; + wire \gpio_holdover[0] ; + wire \gpio_holdover[10] ; + wire \gpio_holdover[11] ; + wire \gpio_holdover[12] ; + wire \gpio_holdover[13] ; + wire \gpio_holdover[14] ; + wire \gpio_holdover[15] ; + wire \gpio_holdover[16] ; + wire \gpio_holdover[17] ; + wire \gpio_holdover[18] ; + wire \gpio_holdover[19] ; + wire \gpio_holdover[1] ; + wire \gpio_holdover[20] ; + wire \gpio_holdover[21] ; + wire \gpio_holdover[22] ; + wire \gpio_holdover[23] ; + wire \gpio_holdover[24] ; + wire \gpio_holdover[25] ; + wire \gpio_holdover[26] ; + wire \gpio_holdover[27] ; + wire \gpio_holdover[28] ; + wire \gpio_holdover[29] ; + wire \gpio_holdover[2] ; + wire \gpio_holdover[30] ; + wire \gpio_holdover[31] ; + wire \gpio_holdover[32] ; + wire \gpio_holdover[33] ; + wire \gpio_holdover[34] ; + wire \gpio_holdover[35] ; + wire \gpio_holdover[36] ; + wire \gpio_holdover[37] ; + wire \gpio_holdover[38] ; + wire \gpio_holdover[39] ; + wire \gpio_holdover[3] ; + wire \gpio_holdover[40] ; + wire \gpio_holdover[41] ; + wire \gpio_holdover[42] ; + wire \gpio_holdover[43] ; + wire \gpio_holdover[4] ; + wire \gpio_holdover[5] ; + wire \gpio_holdover[6] ; + wire \gpio_holdover[7] ; + wire \gpio_holdover[8] ; + wire \gpio_holdover[9] ; + wire \gpio_ib_mode_sel[0] ; + wire \gpio_ib_mode_sel[10] ; + wire \gpio_ib_mode_sel[11] ; + wire \gpio_ib_mode_sel[12] ; + wire \gpio_ib_mode_sel[13] ; + wire \gpio_ib_mode_sel[14] ; + wire \gpio_ib_mode_sel[15] ; + wire \gpio_ib_mode_sel[16] ; + wire \gpio_ib_mode_sel[17] ; + wire \gpio_ib_mode_sel[18] ; + wire \gpio_ib_mode_sel[19] ; + wire \gpio_ib_mode_sel[1] ; + wire \gpio_ib_mode_sel[20] ; + wire \gpio_ib_mode_sel[21] ; + wire \gpio_ib_mode_sel[22] ; + wire \gpio_ib_mode_sel[23] ; + wire \gpio_ib_mode_sel[24] ; + wire \gpio_ib_mode_sel[25] ; + wire \gpio_ib_mode_sel[26] ; + wire \gpio_ib_mode_sel[27] ; + wire \gpio_ib_mode_sel[28] ; + wire \gpio_ib_mode_sel[29] ; + wire \gpio_ib_mode_sel[2] ; + wire \gpio_ib_mode_sel[30] ; + wire \gpio_ib_mode_sel[31] ; + wire \gpio_ib_mode_sel[32] ; + wire \gpio_ib_mode_sel[33] ; + wire \gpio_ib_mode_sel[34] ; + wire \gpio_ib_mode_sel[35] ; + wire \gpio_ib_mode_sel[36] ; + wire \gpio_ib_mode_sel[37] ; + wire \gpio_ib_mode_sel[38] ; + wire \gpio_ib_mode_sel[39] ; + wire \gpio_ib_mode_sel[3] ; + wire \gpio_ib_mode_sel[40] ; + wire \gpio_ib_mode_sel[41] ; + wire \gpio_ib_mode_sel[42] ; + wire \gpio_ib_mode_sel[43] ; + wire \gpio_ib_mode_sel[4] ; + wire \gpio_ib_mode_sel[5] ; + wire \gpio_ib_mode_sel[6] ; + wire \gpio_ib_mode_sel[7] ; + wire \gpio_ib_mode_sel[8] ; + wire \gpio_ib_mode_sel[9] ; + wire \gpio_in[0] ; + wire \gpio_in[10] ; + wire \gpio_in[11] ; + wire \gpio_in[12] ; + wire \gpio_in[13] ; + wire \gpio_in[14] ; + wire \gpio_in[15] ; + wire \gpio_in[16] ; + wire \gpio_in[17] ; + wire \gpio_in[18] ; + wire \gpio_in[19] ; + wire \gpio_in[1] ; + wire \gpio_in[20] ; + wire \gpio_in[21] ; + wire \gpio_in[22] ; + wire \gpio_in[23] ; + wire \gpio_in[24] ; + wire \gpio_in[25] ; + wire \gpio_in[26] ; + wire \gpio_in[27] ; + wire \gpio_in[28] ; + wire \gpio_in[29] ; + wire \gpio_in[2] ; + wire \gpio_in[30] ; + wire \gpio_in[31] ; + wire \gpio_in[32] ; + wire \gpio_in[33] ; + wire \gpio_in[34] ; + wire \gpio_in[35] ; + wire \gpio_in[36] ; + wire \gpio_in[37] ; + wire \gpio_in[38] ; + wire \gpio_in[39] ; + wire \gpio_in[3] ; + wire \gpio_in[40] ; + wire \gpio_in[41] ; + wire \gpio_in[42] ; + wire \gpio_in[43] ; + wire \gpio_in[4] ; + wire \gpio_in[5] ; + wire \gpio_in[6] ; + wire \gpio_in[7] ; + wire \gpio_in[8] ; + wire \gpio_in[9] ; + wire \gpio_in_h[0] ; + wire \gpio_in_h[10] ; + wire \gpio_in_h[11] ; + wire \gpio_in_h[12] ; + wire \gpio_in_h[13] ; + wire \gpio_in_h[14] ; + wire \gpio_in_h[15] ; + wire \gpio_in_h[16] ; + wire \gpio_in_h[17] ; + wire \gpio_in_h[18] ; + wire \gpio_in_h[19] ; + wire \gpio_in_h[1] ; + wire \gpio_in_h[20] ; + wire \gpio_in_h[21] ; + wire \gpio_in_h[22] ; + wire \gpio_in_h[23] ; + wire \gpio_in_h[24] ; + wire \gpio_in_h[25] ; + wire \gpio_in_h[26] ; + wire \gpio_in_h[27] ; + wire \gpio_in_h[28] ; + wire \gpio_in_h[29] ; + wire \gpio_in_h[2] ; + wire \gpio_in_h[30] ; + wire \gpio_in_h[31] ; + wire \gpio_in_h[32] ; + wire \gpio_in_h[33] ; + wire \gpio_in_h[34] ; + wire \gpio_in_h[35] ; + wire \gpio_in_h[36] ; + wire \gpio_in_h[37] ; + wire \gpio_in_h[38] ; + wire \gpio_in_h[39] ; + wire \gpio_in_h[3] ; + wire \gpio_in_h[40] ; + wire \gpio_in_h[41] ; + wire \gpio_in_h[42] ; + wire \gpio_in_h[43] ; + wire \gpio_in_h[4] ; + wire \gpio_in_h[5] ; + wire \gpio_in_h[6] ; + wire \gpio_in_h[7] ; + wire \gpio_in_h[8] ; + wire \gpio_in_h[9] ; + wire \gpio_inp_dis[0] ; + wire \gpio_inp_dis[10] ; + wire \gpio_inp_dis[11] ; + wire \gpio_inp_dis[12] ; + wire \gpio_inp_dis[13] ; + wire \gpio_inp_dis[14] ; + wire \gpio_inp_dis[15] ; + wire \gpio_inp_dis[16] ; + wire \gpio_inp_dis[17] ; + wire \gpio_inp_dis[18] ; + wire \gpio_inp_dis[19] ; + wire \gpio_inp_dis[1] ; + wire \gpio_inp_dis[20] ; + wire \gpio_inp_dis[21] ; + wire \gpio_inp_dis[22] ; + wire \gpio_inp_dis[23] ; + wire \gpio_inp_dis[24] ; + wire \gpio_inp_dis[25] ; + wire \gpio_inp_dis[26] ; + wire \gpio_inp_dis[27] ; + wire \gpio_inp_dis[28] ; + wire \gpio_inp_dis[29] ; + wire \gpio_inp_dis[2] ; + wire \gpio_inp_dis[30] ; + wire \gpio_inp_dis[31] ; + wire \gpio_inp_dis[32] ; + wire \gpio_inp_dis[33] ; + wire \gpio_inp_dis[34] ; + wire \gpio_inp_dis[35] ; + wire \gpio_inp_dis[36] ; + wire \gpio_inp_dis[37] ; + wire \gpio_inp_dis[38] ; + wire \gpio_inp_dis[39] ; + wire \gpio_inp_dis[3] ; + wire \gpio_inp_dis[40] ; + wire \gpio_inp_dis[41] ; + wire \gpio_inp_dis[42] ; + wire \gpio_inp_dis[43] ; + wire \gpio_inp_dis[4] ; + wire \gpio_inp_dis[5] ; + wire \gpio_inp_dis[6] ; + wire \gpio_inp_dis[7] ; + wire \gpio_inp_dis[8] ; + wire \gpio_inp_dis[9] ; + wire \gpio_loopback_one[0] ; + wire \gpio_loopback_one[10] ; + wire \gpio_loopback_one[11] ; + wire \gpio_loopback_one[12] ; + wire \gpio_loopback_one[13] ; + wire \gpio_loopback_one[14] ; + wire \gpio_loopback_one[15] ; + wire \gpio_loopback_one[16] ; + wire \gpio_loopback_one[17] ; + wire \gpio_loopback_one[18] ; + wire \gpio_loopback_one[19] ; + wire \gpio_loopback_one[1] ; + wire \gpio_loopback_one[20] ; + wire \gpio_loopback_one[21] ; + wire \gpio_loopback_one[22] ; + wire \gpio_loopback_one[23] ; + wire \gpio_loopback_one[24] ; + wire \gpio_loopback_one[25] ; + wire \gpio_loopback_one[26] ; + wire \gpio_loopback_one[27] ; + wire \gpio_loopback_one[28] ; + wire \gpio_loopback_one[29] ; + wire \gpio_loopback_one[2] ; + wire \gpio_loopback_one[30] ; + wire \gpio_loopback_one[31] ; + wire \gpio_loopback_one[32] ; + wire \gpio_loopback_one[33] ; + wire \gpio_loopback_one[34] ; + wire \gpio_loopback_one[35] ; + wire \gpio_loopback_one[36] ; + wire \gpio_loopback_one[37] ; + wire \gpio_loopback_one[38] ; + wire \gpio_loopback_one[39] ; + wire \gpio_loopback_one[3] ; + wire \gpio_loopback_one[40] ; + wire \gpio_loopback_one[41] ; + wire \gpio_loopback_one[42] ; + wire \gpio_loopback_one[43] ; + wire \gpio_loopback_one[4] ; + wire \gpio_loopback_one[5] ; + wire \gpio_loopback_one[6] ; + wire \gpio_loopback_one[7] ; + wire \gpio_loopback_one[8] ; + wire \gpio_loopback_one[9] ; + wire \gpio_loopback_zero[0] ; + wire \gpio_loopback_zero[10] ; + wire \gpio_loopback_zero[11] ; + wire \gpio_loopback_zero[12] ; + wire \gpio_loopback_zero[13] ; + wire \gpio_loopback_zero[14] ; + wire \gpio_loopback_zero[15] ; + wire \gpio_loopback_zero[16] ; + wire \gpio_loopback_zero[17] ; + wire \gpio_loopback_zero[18] ; + wire \gpio_loopback_zero[19] ; + wire \gpio_loopback_zero[1] ; + wire \gpio_loopback_zero[20] ; + wire \gpio_loopback_zero[21] ; + wire \gpio_loopback_zero[22] ; + wire \gpio_loopback_zero[23] ; + wire \gpio_loopback_zero[24] ; + wire \gpio_loopback_zero[25] ; + wire \gpio_loopback_zero[26] ; + wire \gpio_loopback_zero[27] ; + wire \gpio_loopback_zero[28] ; + wire \gpio_loopback_zero[29] ; + wire \gpio_loopback_zero[2] ; + wire \gpio_loopback_zero[30] ; + wire \gpio_loopback_zero[31] ; + wire \gpio_loopback_zero[32] ; + wire \gpio_loopback_zero[33] ; + wire \gpio_loopback_zero[34] ; + wire \gpio_loopback_zero[35] ; + wire \gpio_loopback_zero[36] ; + wire \gpio_loopback_zero[37] ; + wire \gpio_loopback_zero[38] ; + wire \gpio_loopback_zero[39] ; + wire \gpio_loopback_zero[3] ; + wire \gpio_loopback_zero[40] ; + wire \gpio_loopback_zero[41] ; + wire \gpio_loopback_zero[42] ; + wire \gpio_loopback_zero[43] ; + wire \gpio_loopback_zero[4] ; + wire \gpio_loopback_zero[5] ; + wire \gpio_loopback_zero[6] ; + wire \gpio_loopback_zero[7] ; + wire \gpio_loopback_zero[8] ; + wire \gpio_loopback_zero[9] ; + wire \gpio_oeb[0] ; + wire \gpio_oeb[10] ; + wire \gpio_oeb[11] ; + wire \gpio_oeb[12] ; + wire \gpio_oeb[13] ; + wire \gpio_oeb[14] ; + wire \gpio_oeb[15] ; + wire \gpio_oeb[16] ; + wire \gpio_oeb[17] ; + wire \gpio_oeb[18] ; + wire \gpio_oeb[19] ; + wire \gpio_oeb[1] ; + wire \gpio_oeb[20] ; + wire \gpio_oeb[21] ; + wire \gpio_oeb[22] ; + wire \gpio_oeb[23] ; + wire \gpio_oeb[24] ; + wire \gpio_oeb[25] ; + wire \gpio_oeb[26] ; + wire \gpio_oeb[27] ; + wire \gpio_oeb[28] ; + wire \gpio_oeb[29] ; + wire \gpio_oeb[2] ; + wire \gpio_oeb[30] ; + wire \gpio_oeb[31] ; + wire \gpio_oeb[32] ; + wire \gpio_oeb[33] ; + wire \gpio_oeb[34] ; + wire \gpio_oeb[35] ; + wire \gpio_oeb[36] ; + wire \gpio_oeb[37] ; + wire \gpio_oeb[38] ; + wire \gpio_oeb[39] ; + wire \gpio_oeb[3] ; + wire \gpio_oeb[40] ; + wire \gpio_oeb[41] ; + wire \gpio_oeb[42] ; + wire \gpio_oeb[43] ; + wire \gpio_oeb[4] ; + wire \gpio_oeb[5] ; + wire \gpio_oeb[6] ; + wire \gpio_oeb[7] ; + wire \gpio_oeb[8] ; + wire \gpio_oeb[9] ; + wire \gpio_out[0] ; + wire \gpio_out[10] ; + wire \gpio_out[11] ; + wire \gpio_out[12] ; + wire \gpio_out[13] ; + wire \gpio_out[14] ; + wire \gpio_out[15] ; + wire \gpio_out[16] ; + wire \gpio_out[17] ; + wire \gpio_out[18] ; + wire \gpio_out[19] ; + wire \gpio_out[1] ; + wire \gpio_out[20] ; + wire \gpio_out[21] ; + wire \gpio_out[22] ; + wire \gpio_out[23] ; + wire \gpio_out[24] ; + wire \gpio_out[25] ; + wire \gpio_out[26] ; + wire \gpio_out[27] ; + wire \gpio_out[28] ; + wire \gpio_out[29] ; + wire \gpio_out[2] ; + wire \gpio_out[30] ; + wire \gpio_out[31] ; + wire \gpio_out[32] ; + wire \gpio_out[33] ; + wire \gpio_out[34] ; + wire \gpio_out[35] ; + wire \gpio_out[36] ; + wire \gpio_out[37] ; + wire \gpio_out[38] ; + wire \gpio_out[39] ; + wire \gpio_out[3] ; + wire \gpio_out[40] ; + wire \gpio_out[41] ; + wire \gpio_out[42] ; + wire \gpio_out[43] ; + wire \gpio_out[4] ; + wire \gpio_out[5] ; + wire \gpio_out[6] ; + wire \gpio_out[7] ; + wire \gpio_out[8] ; + wire \gpio_out[9] ; + wire \gpio_slow_sel[0] ; + wire \gpio_slow_sel[10] ; + wire \gpio_slow_sel[11] ; + wire \gpio_slow_sel[12] ; + wire \gpio_slow_sel[13] ; + wire \gpio_slow_sel[14] ; + wire \gpio_slow_sel[15] ; + wire \gpio_slow_sel[16] ; + wire \gpio_slow_sel[17] ; + wire \gpio_slow_sel[18] ; + wire \gpio_slow_sel[19] ; + wire \gpio_slow_sel[1] ; + wire \gpio_slow_sel[20] ; + wire \gpio_slow_sel[21] ; + wire \gpio_slow_sel[22] ; + wire \gpio_slow_sel[23] ; + wire \gpio_slow_sel[24] ; + wire \gpio_slow_sel[25] ; + wire \gpio_slow_sel[26] ; + wire \gpio_slow_sel[27] ; + wire \gpio_slow_sel[28] ; + wire \gpio_slow_sel[29] ; + wire \gpio_slow_sel[2] ; + wire \gpio_slow_sel[30] ; + wire \gpio_slow_sel[31] ; + wire \gpio_slow_sel[32] ; + wire \gpio_slow_sel[33] ; + wire \gpio_slow_sel[34] ; + wire \gpio_slow_sel[35] ; + wire \gpio_slow_sel[36] ; + wire \gpio_slow_sel[37] ; + wire \gpio_slow_sel[38] ; + wire \gpio_slow_sel[39] ; + wire \gpio_slow_sel[3] ; + wire \gpio_slow_sel[40] ; + wire \gpio_slow_sel[41] ; + wire \gpio_slow_sel[42] ; + wire \gpio_slow_sel[43] ; + wire \gpio_slow_sel[4] ; + wire \gpio_slow_sel[5] ; + wire \gpio_slow_sel[6] ; + wire \gpio_slow_sel[7] ; + wire \gpio_slow_sel[8] ; + wire \gpio_slow_sel[9] ; + wire \gpio_vtrip_sel[0] ; + wire \gpio_vtrip_sel[10] ; + wire \gpio_vtrip_sel[11] ; + wire \gpio_vtrip_sel[12] ; + wire \gpio_vtrip_sel[13] ; + wire \gpio_vtrip_sel[14] ; + wire \gpio_vtrip_sel[15] ; + wire \gpio_vtrip_sel[16] ; + wire \gpio_vtrip_sel[17] ; + wire \gpio_vtrip_sel[18] ; + wire \gpio_vtrip_sel[19] ; + wire \gpio_vtrip_sel[1] ; + wire \gpio_vtrip_sel[20] ; + wire \gpio_vtrip_sel[21] ; + wire \gpio_vtrip_sel[22] ; + wire \gpio_vtrip_sel[23] ; + wire \gpio_vtrip_sel[24] ; + wire \gpio_vtrip_sel[25] ; + wire \gpio_vtrip_sel[26] ; + wire \gpio_vtrip_sel[27] ; + wire \gpio_vtrip_sel[28] ; + wire \gpio_vtrip_sel[29] ; + wire \gpio_vtrip_sel[2] ; + wire \gpio_vtrip_sel[30] ; + wire \gpio_vtrip_sel[31] ; + wire \gpio_vtrip_sel[32] ; + wire \gpio_vtrip_sel[33] ; + wire \gpio_vtrip_sel[34] ; + wire \gpio_vtrip_sel[35] ; + wire \gpio_vtrip_sel[36] ; + wire \gpio_vtrip_sel[37] ; + wire \gpio_vtrip_sel[38] ; + wire \gpio_vtrip_sel[39] ; + wire \gpio_vtrip_sel[3] ; + wire \gpio_vtrip_sel[40] ; + wire \gpio_vtrip_sel[41] ; + wire \gpio_vtrip_sel[42] ; + wire \gpio_vtrip_sel[43] ; + wire \gpio_vtrip_sel[4] ; + wire \gpio_vtrip_sel[5] ; + wire \gpio_vtrip_sel[6] ; + wire \gpio_vtrip_sel[7] ; + wire \gpio_vtrip_sel[8] ; + wire \gpio_vtrip_sel[9] ; + wire \mask_rev[0] ; + wire \mask_rev[10] ; + wire \mask_rev[11] ; + wire \mask_rev[12] ; + wire \mask_rev[13] ; + wire \mask_rev[14] ; + wire \mask_rev[15] ; + wire \mask_rev[16] ; + wire \mask_rev[17] ; + wire \mask_rev[18] ; + wire \mask_rev[19] ; + wire \mask_rev[1] ; + wire \mask_rev[20] ; + wire \mask_rev[21] ; + wire \mask_rev[22] ; + wire \mask_rev[23] ; + wire \mask_rev[24] ; + wire \mask_rev[25] ; + wire \mask_rev[26] ; + wire \mask_rev[27] ; + wire \mask_rev[28] ; + wire \mask_rev[29] ; + wire \mask_rev[2] ; + wire \mask_rev[30] ; + wire \mask_rev[31] ; + wire \mask_rev[3] ; + wire \mask_rev[4] ; + wire \mask_rev[5] ; + wire \mask_rev[6] ; + wire \mask_rev[7] ; + wire \mask_rev[8] ; + wire \mask_rev[9] ; + wire por_l; + wire porb_h; + wire porb_l; + input resetb; + wire resetb; + wire rstb_h; + wire rstb_l; + inout vccd; + wire vccd; + inout vccd1; + wire vccd1; + wire vccd1_core; + inout vccd2; + wire vccd2; + wire vccd2_core; + wire vccd_core; + inout vdda; + wire vdda; + inout vdda1; + wire vdda1; + inout vdda1_2; + wire vdda1_2; + wire vdda1_core; + inout vdda2; + wire vdda2; + wire vdda2_core; + wire vdda_core; + inout vddio; + wire vddio; + inout vddio_2; + wire vddio_2; + wire vddio_core; + inout vssa; + wire vssa; + inout vssa1; + wire vssa1; + inout vssa1_2; + wire vssa1_2; + wire vssa1_core; + inout vssa2; + wire vssa2; + wire vssa2_core; + wire vssa_core; + inout vssd; + wire vssd; + inout vssd1; + wire vssd1; + wire vssd1_core; + inout vssd2; + wire vssd2; + wire vssd2_core; + wire vssd_core; + inout vssio; + wire vssio; + inout vssio_2; + wire vssio_2; + wire vssio_core; + chip_io_openframe padframe ( + .analog_io({ \analog_io[43] , \analog_io[42] , \analog_io[41] , \analog_io[40] , \analog_io[39] , \analog_io[38] , \analog_io[37] , \analog_io[36] , \analog_io[35] , \analog_io[34] , \analog_io[33] , \analog_io[32] , \analog_io[31] , \analog_io[30] , \analog_io[29] , \analog_io[28] , \analog_io[27] , \analog_io[26] , \analog_io[25] , \analog_io[24] , \analog_io[23] , \analog_io[22] , \analog_io[21] , \analog_io[20] , \analog_io[19] , \analog_io[18] , \analog_io[17] , \analog_io[16] , \analog_io[15] , \analog_io[14] , \analog_io[13] , \analog_io[12] , \analog_io[11] , \analog_io[10] , \analog_io[9] , \analog_io[8] , \analog_io[7] , \analog_io[6] , \analog_io[5] , \analog_io[4] , \analog_io[3] , \analog_io[2] , \analog_io[1] , \analog_io[0] }), + .analog_noesd_io({ \analog_noesd_io[43] , \analog_noesd_io[42] , \analog_noesd_io[41] , \analog_noesd_io[40] , \analog_noesd_io[39] , \analog_noesd_io[38] , \analog_noesd_io[37] , \analog_noesd_io[36] , \analog_noesd_io[35] , \analog_noesd_io[34] , \analog_noesd_io[33] , \analog_noesd_io[32] , \analog_noesd_io[31] , \analog_noesd_io[30] , \analog_noesd_io[29] , \analog_noesd_io[28] , \analog_noesd_io[27] , \analog_noesd_io[26] , \analog_noesd_io[25] , \analog_noesd_io[24] , \analog_noesd_io[23] , \analog_noesd_io[22] , \analog_noesd_io[21] , \analog_noesd_io[20] , \analog_noesd_io[19] , \analog_noesd_io[18] , \analog_noesd_io[17] , \analog_noesd_io[16] , \analog_noesd_io[15] , \analog_noesd_io[14] , \analog_noesd_io[13] , \analog_noesd_io[12] , \analog_noesd_io[11] , \analog_noesd_io[10] , \analog_noesd_io[9] , \analog_noesd_io[8] , \analog_noesd_io[7] , \analog_noesd_io[6] , \analog_noesd_io[5] , \analog_noesd_io[4] , \analog_noesd_io[3] , \analog_noesd_io[2] , \analog_noesd_io[1] , \analog_noesd_io[0] }), + .gpio(gpio), + .gpio_analog_en({ \gpio_analog_en[43] , \gpio_analog_en[42] , \gpio_analog_en[41] , \gpio_analog_en[40] , \gpio_analog_en[39] , \gpio_analog_en[38] , \gpio_analog_en[37] , \gpio_analog_en[36] , \gpio_analog_en[35] , \gpio_analog_en[34] , \gpio_analog_en[33] , \gpio_analog_en[32] , \gpio_analog_en[31] , \gpio_analog_en[30] , \gpio_analog_en[29] , \gpio_analog_en[28] , \gpio_analog_en[27] , \gpio_analog_en[26] , \gpio_analog_en[25] , \gpio_analog_en[24] , \gpio_analog_en[23] , \gpio_analog_en[22] , \gpio_analog_en[21] , \gpio_analog_en[20] , \gpio_analog_en[19] , \gpio_analog_en[18] , \gpio_analog_en[17] , \gpio_analog_en[16] , \gpio_analog_en[15] , \gpio_analog_en[14] , \gpio_analog_en[13] , \gpio_analog_en[12] , \gpio_analog_en[11] , \gpio_analog_en[10] , \gpio_analog_en[9] , \gpio_analog_en[8] , \gpio_analog_en[7] , \gpio_analog_en[6] , \gpio_analog_en[5] , \gpio_analog_en[4] , \gpio_analog_en[3] , \gpio_analog_en[2] , \gpio_analog_en[1] , \gpio_analog_en[0] }), + .gpio_analog_pol({ \gpio_analog_pol[43] , \gpio_analog_pol[42] , \gpio_analog_pol[41] , \gpio_analog_pol[40] , \gpio_analog_pol[39] , \gpio_analog_pol[38] , \gpio_analog_pol[37] , \gpio_analog_pol[36] , \gpio_analog_pol[35] , \gpio_analog_pol[34] , \gpio_analog_pol[33] , \gpio_analog_pol[32] , \gpio_analog_pol[31] , \gpio_analog_pol[30] , \gpio_analog_pol[29] , \gpio_analog_pol[28] , \gpio_analog_pol[27] , \gpio_analog_pol[26] , \gpio_analog_pol[25] , \gpio_analog_pol[24] , \gpio_analog_pol[23] , \gpio_analog_pol[22] , \gpio_analog_pol[21] , \gpio_analog_pol[20] , \gpio_analog_pol[19] , \gpio_analog_pol[18] , \gpio_analog_pol[17] , \gpio_analog_pol[16] , \gpio_analog_pol[15] , \gpio_analog_pol[14] , \gpio_analog_pol[13] , \gpio_analog_pol[12] , \gpio_analog_pol[11] , \gpio_analog_pol[10] , \gpio_analog_pol[9] , \gpio_analog_pol[8] , \gpio_analog_pol[7] , \gpio_analog_pol[6] , \gpio_analog_pol[5] , \gpio_analog_pol[4] , \gpio_analog_pol[3] , \gpio_analog_pol[2] , \gpio_analog_pol[1] , \gpio_analog_pol[0] }), + .gpio_analog_sel({ \gpio_analog_sel[43] , \gpio_analog_sel[42] , \gpio_analog_sel[41] , \gpio_analog_sel[40] , \gpio_analog_sel[39] , \gpio_analog_sel[38] , \gpio_analog_sel[37] , \gpio_analog_sel[36] , \gpio_analog_sel[35] , \gpio_analog_sel[34] , \gpio_analog_sel[33] , \gpio_analog_sel[32] , \gpio_analog_sel[31] , \gpio_analog_sel[30] , \gpio_analog_sel[29] , \gpio_analog_sel[28] , \gpio_analog_sel[27] , \gpio_analog_sel[26] , \gpio_analog_sel[25] , \gpio_analog_sel[24] , \gpio_analog_sel[23] , \gpio_analog_sel[22] , \gpio_analog_sel[21] , \gpio_analog_sel[20] , \gpio_analog_sel[19] , \gpio_analog_sel[18] , \gpio_analog_sel[17] , \gpio_analog_sel[16] , \gpio_analog_sel[15] , \gpio_analog_sel[14] , \gpio_analog_sel[13] , \gpio_analog_sel[12] , \gpio_analog_sel[11] , \gpio_analog_sel[10] , \gpio_analog_sel[9] , \gpio_analog_sel[8] , \gpio_analog_sel[7] , \gpio_analog_sel[6] , \gpio_analog_sel[5] , \gpio_analog_sel[4] , \gpio_analog_sel[3] , \gpio_analog_sel[2] , \gpio_analog_sel[1] , \gpio_analog_sel[0] }), + .gpio_dm0({ \gpio_dm0[43] , \gpio_dm0[42] , \gpio_dm0[41] , \gpio_dm0[40] , \gpio_dm0[39] , \gpio_dm0[38] , \gpio_dm0[37] , \gpio_dm0[36] , \gpio_dm0[35] , \gpio_dm0[34] , \gpio_dm0[33] , \gpio_dm0[32] , \gpio_dm0[31] , \gpio_dm0[30] , \gpio_dm0[29] , \gpio_dm0[28] , \gpio_dm0[27] , \gpio_dm0[26] , \gpio_dm0[25] , \gpio_dm0[24] , \gpio_dm0[23] , \gpio_dm0[22] , \gpio_dm0[21] , \gpio_dm0[20] , \gpio_dm0[19] , \gpio_dm0[18] , \gpio_dm0[17] , \gpio_dm0[16] , \gpio_dm0[15] , \gpio_dm0[14] , \gpio_dm0[13] , \gpio_dm0[12] , \gpio_dm0[11] , \gpio_dm0[10] , \gpio_dm0[9] , \gpio_dm0[8] , \gpio_dm0[7] , \gpio_dm0[6] , \gpio_dm0[5] , \gpio_dm0[4] , \gpio_dm0[3] , \gpio_dm0[2] , \gpio_dm0[1] , \gpio_dm0[0] }), + .gpio_dm1({ \gpio_dm1[43] , \gpio_dm1[42] , \gpio_dm1[41] , \gpio_dm1[40] , \gpio_dm1[39] , \gpio_dm1[38] , \gpio_dm1[37] , \gpio_dm1[36] , \gpio_dm1[35] , \gpio_dm1[34] , \gpio_dm1[33] , \gpio_dm1[32] , \gpio_dm1[31] , \gpio_dm1[30] , \gpio_dm1[29] , \gpio_dm1[28] , \gpio_dm1[27] , \gpio_dm1[26] , \gpio_dm1[25] , \gpio_dm1[24] , \gpio_dm1[23] , \gpio_dm1[22] , \gpio_dm1[21] , \gpio_dm1[20] , \gpio_dm1[19] , \gpio_dm1[18] , \gpio_dm1[17] , \gpio_dm1[16] , \gpio_dm1[15] , \gpio_dm1[14] , \gpio_dm1[13] , \gpio_dm1[12] , \gpio_dm1[11] , \gpio_dm1[10] , \gpio_dm1[9] , \gpio_dm1[8] , \gpio_dm1[7] , \gpio_dm1[6] , \gpio_dm1[5] , \gpio_dm1[4] , \gpio_dm1[3] , \gpio_dm1[2] , \gpio_dm1[1] , \gpio_dm1[0] }), + .gpio_dm2({ \gpio_dm2[43] , \gpio_dm2[42] , \gpio_dm2[41] , \gpio_dm2[40] , \gpio_dm2[39] , \gpio_dm2[38] , \gpio_dm2[37] , \gpio_dm2[36] , \gpio_dm2[35] , \gpio_dm2[34] , \gpio_dm2[33] , \gpio_dm2[32] , \gpio_dm2[31] , \gpio_dm2[30] , \gpio_dm2[29] , \gpio_dm2[28] , \gpio_dm2[27] , \gpio_dm2[26] , \gpio_dm2[25] , \gpio_dm2[24] , \gpio_dm2[23] , \gpio_dm2[22] , \gpio_dm2[21] , \gpio_dm2[20] , \gpio_dm2[19] , \gpio_dm2[18] , \gpio_dm2[17] , \gpio_dm2[16] , \gpio_dm2[15] , \gpio_dm2[14] , \gpio_dm2[13] , \gpio_dm2[12] , \gpio_dm2[11] , \gpio_dm2[10] , \gpio_dm2[9] , \gpio_dm2[8] , \gpio_dm2[7] , \gpio_dm2[6] , \gpio_dm2[5] , \gpio_dm2[4] , \gpio_dm2[3] , \gpio_dm2[2] , \gpio_dm2[1] , \gpio_dm2[0] }), + .gpio_holdover({ \gpio_holdover[43] , \gpio_holdover[42] , \gpio_holdover[41] , \gpio_holdover[40] , \gpio_holdover[39] , \gpio_holdover[38] , \gpio_holdover[37] , \gpio_holdover[36] , \gpio_holdover[35] , \gpio_holdover[34] , \gpio_holdover[33] , \gpio_holdover[32] , \gpio_holdover[31] , \gpio_holdover[30] , \gpio_holdover[29] , \gpio_holdover[28] , \gpio_holdover[27] , \gpio_holdover[26] , \gpio_holdover[25] , \gpio_holdover[24] , \gpio_holdover[23] , \gpio_holdover[22] , \gpio_holdover[21] , \gpio_holdover[20] , \gpio_holdover[19] , \gpio_holdover[18] , \gpio_holdover[17] , \gpio_holdover[16] , \gpio_holdover[15] , \gpio_holdover[14] , \gpio_holdover[13] , \gpio_holdover[12] , \gpio_holdover[11] , \gpio_holdover[10] , \gpio_holdover[9] , \gpio_holdover[8] , \gpio_holdover[7] , \gpio_holdover[6] , \gpio_holdover[5] , \gpio_holdover[4] , \gpio_holdover[3] , \gpio_holdover[2] , \gpio_holdover[1] , \gpio_holdover[0] }), + .gpio_ib_mode_sel({ \gpio_ib_mode_sel[43] , \gpio_ib_mode_sel[42] , \gpio_ib_mode_sel[41] , \gpio_ib_mode_sel[40] , \gpio_ib_mode_sel[39] , \gpio_ib_mode_sel[38] , \gpio_ib_mode_sel[37] , \gpio_ib_mode_sel[36] , \gpio_ib_mode_sel[35] , \gpio_ib_mode_sel[34] , \gpio_ib_mode_sel[33] , \gpio_ib_mode_sel[32] , \gpio_ib_mode_sel[31] , \gpio_ib_mode_sel[30] , \gpio_ib_mode_sel[29] , \gpio_ib_mode_sel[28] , \gpio_ib_mode_sel[27] , \gpio_ib_mode_sel[26] , \gpio_ib_mode_sel[25] , \gpio_ib_mode_sel[24] , \gpio_ib_mode_sel[23] , \gpio_ib_mode_sel[22] , \gpio_ib_mode_sel[21] , \gpio_ib_mode_sel[20] , \gpio_ib_mode_sel[19] , \gpio_ib_mode_sel[18] , \gpio_ib_mode_sel[17] , \gpio_ib_mode_sel[16] , \gpio_ib_mode_sel[15] , \gpio_ib_mode_sel[14] , \gpio_ib_mode_sel[13] , \gpio_ib_mode_sel[12] , \gpio_ib_mode_sel[11] , \gpio_ib_mode_sel[10] , \gpio_ib_mode_sel[9] , \gpio_ib_mode_sel[8] , \gpio_ib_mode_sel[7] , \gpio_ib_mode_sel[6] , \gpio_ib_mode_sel[5] , \gpio_ib_mode_sel[4] , \gpio_ib_mode_sel[3] , \gpio_ib_mode_sel[2] , \gpio_ib_mode_sel[1] , \gpio_ib_mode_sel[0] }), + .gpio_in({ \gpio_in[43] , \gpio_in[42] , \gpio_in[41] , \gpio_in[40] , \gpio_in[39] , \gpio_in[38] , \gpio_in[37] , \gpio_in[36] , \gpio_in[35] , \gpio_in[34] , \gpio_in[33] , \gpio_in[32] , \gpio_in[31] , \gpio_in[30] , \gpio_in[29] , \gpio_in[28] , \gpio_in[27] , \gpio_in[26] , \gpio_in[25] , \gpio_in[24] , \gpio_in[23] , \gpio_in[22] , \gpio_in[21] , \gpio_in[20] , \gpio_in[19] , \gpio_in[18] , \gpio_in[17] , \gpio_in[16] , \gpio_in[15] , \gpio_in[14] , \gpio_in[13] , \gpio_in[12] , \gpio_in[11] , \gpio_in[10] , \gpio_in[9] , \gpio_in[8] , \gpio_in[7] , \gpio_in[6] , \gpio_in[5] , \gpio_in[4] , \gpio_in[3] , \gpio_in[2] , \gpio_in[1] , \gpio_in[0] }), + .gpio_in_h({ \gpio_in_h[43] , \gpio_in_h[42] , \gpio_in_h[41] , \gpio_in_h[40] , \gpio_in_h[39] , \gpio_in_h[38] , \gpio_in_h[37] , \gpio_in_h[36] , \gpio_in_h[35] , \gpio_in_h[34] , \gpio_in_h[33] , \gpio_in_h[32] , \gpio_in_h[31] , \gpio_in_h[30] , \gpio_in_h[29] , \gpio_in_h[28] , \gpio_in_h[27] , \gpio_in_h[26] , \gpio_in_h[25] , \gpio_in_h[24] , \gpio_in_h[23] , \gpio_in_h[22] , \gpio_in_h[21] , \gpio_in_h[20] , \gpio_in_h[19] , \gpio_in_h[18] , \gpio_in_h[17] , \gpio_in_h[16] , \gpio_in_h[15] , \gpio_in_h[14] , \gpio_in_h[13] , \gpio_in_h[12] , \gpio_in_h[11] , \gpio_in_h[10] , \gpio_in_h[9] , \gpio_in_h[8] , \gpio_in_h[7] , \gpio_in_h[6] , \gpio_in_h[5] , \gpio_in_h[4] , \gpio_in_h[3] , \gpio_in_h[2] , \gpio_in_h[1] , \gpio_in_h[0] }), + .gpio_inp_dis({ \gpio_inp_dis[43] , \gpio_inp_dis[42] , \gpio_inp_dis[41] , \gpio_inp_dis[40] , \gpio_inp_dis[39] , \gpio_inp_dis[38] , \gpio_inp_dis[37] , \gpio_inp_dis[36] , \gpio_inp_dis[35] , \gpio_inp_dis[34] , \gpio_inp_dis[33] , \gpio_inp_dis[32] , \gpio_inp_dis[31] , \gpio_inp_dis[30] , \gpio_inp_dis[29] , \gpio_inp_dis[28] , \gpio_inp_dis[27] , \gpio_inp_dis[26] , \gpio_inp_dis[25] , \gpio_inp_dis[24] , \gpio_inp_dis[23] , \gpio_inp_dis[22] , \gpio_inp_dis[21] , \gpio_inp_dis[20] , \gpio_inp_dis[19] , \gpio_inp_dis[18] , \gpio_inp_dis[17] , \gpio_inp_dis[16] , \gpio_inp_dis[15] , \gpio_inp_dis[14] , \gpio_inp_dis[13] , \gpio_inp_dis[12] , \gpio_inp_dis[11] , \gpio_inp_dis[10] , \gpio_inp_dis[9] , \gpio_inp_dis[8] , \gpio_inp_dis[7] , \gpio_inp_dis[6] , \gpio_inp_dis[5] , \gpio_inp_dis[4] , \gpio_inp_dis[3] , \gpio_inp_dis[2] , \gpio_inp_dis[1] , \gpio_inp_dis[0] }), + .gpio_loopback_one({ \gpio_loopback_one[43] , \gpio_loopback_one[42] , \gpio_loopback_one[41] , \gpio_loopback_one[40] , \gpio_loopback_one[39] , \gpio_loopback_one[38] , \gpio_loopback_one[37] , \gpio_loopback_one[36] , \gpio_loopback_one[35] , \gpio_loopback_one[34] , \gpio_loopback_one[33] , \gpio_loopback_one[32] , \gpio_loopback_one[31] , \gpio_loopback_one[30] , \gpio_loopback_one[29] , \gpio_loopback_one[28] , \gpio_loopback_one[27] , \gpio_loopback_one[26] , \gpio_loopback_one[25] , \gpio_loopback_one[24] , \gpio_loopback_one[23] , \gpio_loopback_one[22] , \gpio_loopback_one[21] , \gpio_loopback_one[20] , \gpio_loopback_one[19] , \gpio_loopback_one[18] , \gpio_loopback_one[17] , \gpio_loopback_one[16] , \gpio_loopback_one[15] , \gpio_loopback_one[14] , \gpio_loopback_one[13] , \gpio_loopback_one[12] , \gpio_loopback_one[11] , \gpio_loopback_one[10] , \gpio_loopback_one[9] , \gpio_loopback_one[8] , \gpio_loopback_one[7] , \gpio_loopback_one[6] , \gpio_loopback_one[5] , \gpio_loopback_one[4] , \gpio_loopback_one[3] , \gpio_loopback_one[2] , \gpio_loopback_one[1] , \gpio_loopback_one[0] }), + .gpio_loopback_zero({ \gpio_loopback_zero[43] , \gpio_loopback_zero[42] , \gpio_loopback_zero[41] , \gpio_loopback_zero[40] , \gpio_loopback_zero[39] , \gpio_loopback_zero[38] , \gpio_loopback_zero[37] , \gpio_loopback_zero[36] , \gpio_loopback_zero[35] , \gpio_loopback_zero[34] , \gpio_loopback_zero[33] , \gpio_loopback_zero[32] , \gpio_loopback_zero[31] , \gpio_loopback_zero[30] , \gpio_loopback_zero[29] , \gpio_loopback_zero[28] , \gpio_loopback_zero[27] , \gpio_loopback_zero[26] , \gpio_loopback_zero[25] , \gpio_loopback_zero[24] , \gpio_loopback_zero[23] , \gpio_loopback_zero[22] , \gpio_loopback_zero[21] , \gpio_loopback_zero[20] , \gpio_loopback_zero[19] , \gpio_loopback_zero[18] , \gpio_loopback_zero[17] , \gpio_loopback_zero[16] , \gpio_loopback_zero[15] , \gpio_loopback_zero[14] , \gpio_loopback_zero[13] , \gpio_loopback_zero[12] , \gpio_loopback_zero[11] , \gpio_loopback_zero[10] , \gpio_loopback_zero[9] , \gpio_loopback_zero[8] , \gpio_loopback_zero[7] , \gpio_loopback_zero[6] , \gpio_loopback_zero[5] , \gpio_loopback_zero[4] , \gpio_loopback_zero[3] , \gpio_loopback_zero[2] , \gpio_loopback_zero[1] , \gpio_loopback_zero[0] }), + .gpio_oeb({ \gpio_oeb[43] , \gpio_oeb[42] , \gpio_oeb[41] , \gpio_oeb[40] , \gpio_oeb[39] , \gpio_oeb[38] , \gpio_oeb[37] , \gpio_oeb[36] , \gpio_oeb[35] , \gpio_oeb[34] , \gpio_oeb[33] , \gpio_oeb[32] , \gpio_oeb[31] , \gpio_oeb[30] , \gpio_oeb[29] , \gpio_oeb[28] , \gpio_oeb[27] , \gpio_oeb[26] , \gpio_oeb[25] , \gpio_oeb[24] , \gpio_oeb[23] , \gpio_oeb[22] , \gpio_oeb[21] , \gpio_oeb[20] , \gpio_oeb[19] , \gpio_oeb[18] , \gpio_oeb[17] , \gpio_oeb[16] , \gpio_oeb[15] , \gpio_oeb[14] , \gpio_oeb[13] , \gpio_oeb[12] , \gpio_oeb[11] , \gpio_oeb[10] , \gpio_oeb[9] , \gpio_oeb[8] , \gpio_oeb[7] , \gpio_oeb[6] , \gpio_oeb[5] , \gpio_oeb[4] , \gpio_oeb[3] , \gpio_oeb[2] , \gpio_oeb[1] , \gpio_oeb[0] }), + .gpio_out({ \gpio_out[43] , \gpio_out[42] , \gpio_out[41] , \gpio_out[40] , \gpio_out[39] , \gpio_out[38] , \gpio_out[37] , \gpio_out[36] , \gpio_out[35] , \gpio_out[34] , \gpio_out[33] , \gpio_out[32] , \gpio_out[31] , \gpio_out[30] , \gpio_out[29] , \gpio_out[28] , \gpio_out[27] , \gpio_out[26] , \gpio_out[25] , \gpio_out[24] , \gpio_out[23] , \gpio_out[22] , \gpio_out[21] , \gpio_out[20] , \gpio_out[19] , \gpio_out[18] , \gpio_out[17] , \gpio_out[16] , \gpio_out[15] , \gpio_out[14] , \gpio_out[13] , \gpio_out[12] , \gpio_out[11] , \gpio_out[10] , \gpio_out[9] , \gpio_out[8] , \gpio_out[7] , \gpio_out[6] , \gpio_out[5] , \gpio_out[4] , \gpio_out[3] , \gpio_out[2] , \gpio_out[1] , \gpio_out[0] }), + .gpio_slow_sel({ \gpio_slow_sel[43] , \gpio_slow_sel[42] , \gpio_slow_sel[41] , \gpio_slow_sel[40] , \gpio_slow_sel[39] , \gpio_slow_sel[38] , \gpio_slow_sel[37] , \gpio_slow_sel[36] , \gpio_slow_sel[35] , \gpio_slow_sel[34] , \gpio_slow_sel[33] , \gpio_slow_sel[32] , \gpio_slow_sel[31] , \gpio_slow_sel[30] , \gpio_slow_sel[29] , \gpio_slow_sel[28] , \gpio_slow_sel[27] , \gpio_slow_sel[26] , \gpio_slow_sel[25] , \gpio_slow_sel[24] , \gpio_slow_sel[23] , \gpio_slow_sel[22] , \gpio_slow_sel[21] , \gpio_slow_sel[20] , \gpio_slow_sel[19] , \gpio_slow_sel[18] , \gpio_slow_sel[17] , \gpio_slow_sel[16] , \gpio_slow_sel[15] , \gpio_slow_sel[14] , \gpio_slow_sel[13] , \gpio_slow_sel[12] , \gpio_slow_sel[11] , \gpio_slow_sel[10] , \gpio_slow_sel[9] , \gpio_slow_sel[8] , \gpio_slow_sel[7] , \gpio_slow_sel[6] , \gpio_slow_sel[5] , \gpio_slow_sel[4] , \gpio_slow_sel[3] , \gpio_slow_sel[2] , \gpio_slow_sel[1] , \gpio_slow_sel[0] }), + .gpio_vtrip_sel({ \gpio_vtrip_sel[43] , \gpio_vtrip_sel[42] , \gpio_vtrip_sel[41] , \gpio_vtrip_sel[40] , \gpio_vtrip_sel[39] , \gpio_vtrip_sel[38] , \gpio_vtrip_sel[37] , \gpio_vtrip_sel[36] , \gpio_vtrip_sel[35] , \gpio_vtrip_sel[34] , \gpio_vtrip_sel[33] , \gpio_vtrip_sel[32] , \gpio_vtrip_sel[31] , \gpio_vtrip_sel[30] , \gpio_vtrip_sel[29] , \gpio_vtrip_sel[28] , \gpio_vtrip_sel[27] , \gpio_vtrip_sel[26] , \gpio_vtrip_sel[25] , \gpio_vtrip_sel[24] , \gpio_vtrip_sel[23] , \gpio_vtrip_sel[22] , \gpio_vtrip_sel[21] , \gpio_vtrip_sel[20] , \gpio_vtrip_sel[19] , \gpio_vtrip_sel[18] , \gpio_vtrip_sel[17] , \gpio_vtrip_sel[16] , \gpio_vtrip_sel[15] , \gpio_vtrip_sel[14] , \gpio_vtrip_sel[13] , \gpio_vtrip_sel[12] , \gpio_vtrip_sel[11] , \gpio_vtrip_sel[10] , \gpio_vtrip_sel[9] , \gpio_vtrip_sel[8] , \gpio_vtrip_sel[7] , \gpio_vtrip_sel[6] , \gpio_vtrip_sel[5] , \gpio_vtrip_sel[4] , \gpio_vtrip_sel[3] , \gpio_vtrip_sel[2] , \gpio_vtrip_sel[1] , \gpio_vtrip_sel[0] }), + .mask_rev({ \mask_rev[31] , \mask_rev[30] , \mask_rev[29] , \mask_rev[28] , \mask_rev[27] , \mask_rev[26] , \mask_rev[25] , \mask_rev[24] , \mask_rev[23] , \mask_rev[22] , \mask_rev[21] , \mask_rev[20] , \mask_rev[19] , \mask_rev[18] , \mask_rev[17] , \mask_rev[16] , \mask_rev[15] , \mask_rev[14] , \mask_rev[13] , \mask_rev[12] , \mask_rev[11] , \mask_rev[10] , \mask_rev[9] , \mask_rev[8] , \mask_rev[7] , \mask_rev[6] , \mask_rev[5] , \mask_rev[4] , \mask_rev[3] , \mask_rev[2] , \mask_rev[1] , \mask_rev[0] }), + .por_l(por_l), + .porb_h(porb_h), + .porb_l(porb_l), + .resetb_h(rstb_h), + .resetb_l(rstb_l), + .resetb_pad(resetb), + .vccd(vccd_core), + .vccd1(vccd1_core), + .vccd1_pad(vccd1), + .vccd2(vccd2_core), + .vccd2_pad(vccd2), + .vccd_pad(vccd), + .vdda(vdda_core), + .vdda1(vdda1_core), + .vdda1_pad(vdda1), + .vdda1_pad2(vdda1_2), + .vdda2(vdda2_core), + .vdda2_pad(vdda2), + .vdda_pad(vdda), + .vddio(vddio_core), + .vddio_pad(vddio), + .vddio_pad2(vddio_2), + .vssa(vssa_core), + .vssa1(vssa1_core), + .vssa1_pad(vssa1), + .vssa1_pad2(vssa1_2), + .vssa2(vssa2_core), + .vssa2_pad(vssa2), + .vssa_pad(vssa), + .vssd(vssd_core), + .vssd1(vssd1_core), + .vssd1_pad(vssd1), + .vssd2(vssd2_core), + .vssd2_pad(vssd2), + .vssd_pad(vssd), + .vssio(vssio_core), + .vssio_pad(vssio), + .vssio_pad2(vssio_2) + ); + openframe_project_wrapper user_project ( + .analog_io({ \analog_io[43] , \analog_io[42] , \analog_io[41] , \analog_io[40] , \analog_io[39] , \analog_io[38] , \analog_io[37] , \analog_io[36] , \analog_io[35] , \analog_io[34] , \analog_io[33] , \analog_io[32] , \analog_io[31] , \analog_io[30] , \analog_io[29] , \analog_io[28] , \analog_io[27] , \analog_io[26] , \analog_io[25] , \analog_io[24] , \analog_io[23] , \analog_io[22] , \analog_io[21] , \analog_io[20] , \analog_io[19] , \analog_io[18] , \analog_io[17] , \analog_io[16] , \analog_io[15] , \analog_io[14] , \analog_io[13] , \analog_io[12] , \analog_io[11] , \analog_io[10] , \analog_io[9] , \analog_io[8] , \analog_io[7] , \analog_io[6] , \analog_io[5] , \analog_io[4] , \analog_io[3] , \analog_io[2] , \analog_io[1] , \analog_io[0] }), + .analog_noesd_io({ \analog_noesd_io[43] , \analog_noesd_io[42] , \analog_noesd_io[41] , \analog_noesd_io[40] , \analog_noesd_io[39] , \analog_noesd_io[38] , \analog_noesd_io[37] , \analog_noesd_io[36] , \analog_noesd_io[35] , \analog_noesd_io[34] , \analog_noesd_io[33] , \analog_noesd_io[32] , \analog_noesd_io[31] , \analog_noesd_io[30] , \analog_noesd_io[29] , \analog_noesd_io[28] , \analog_noesd_io[27] , \analog_noesd_io[26] , \analog_noesd_io[25] , \analog_noesd_io[24] , \analog_noesd_io[23] , \analog_noesd_io[22] , \analog_noesd_io[21] , \analog_noesd_io[20] , \analog_noesd_io[19] , \analog_noesd_io[18] , \analog_noesd_io[17] , \analog_noesd_io[16] , \analog_noesd_io[15] , \analog_noesd_io[14] , \analog_noesd_io[13] , \analog_noesd_io[12] , \analog_noesd_io[11] , \analog_noesd_io[10] , \analog_noesd_io[9] , \analog_noesd_io[8] , \analog_noesd_io[7] , \analog_noesd_io[6] , \analog_noesd_io[5] , \analog_noesd_io[4] , \analog_noesd_io[3] , \analog_noesd_io[2] , \analog_noesd_io[1] , \analog_noesd_io[0] }), + .gpio_analog_en({ \gpio_analog_en[43] , \gpio_analog_en[42] , \gpio_analog_en[41] , \gpio_analog_en[40] , \gpio_analog_en[39] , \gpio_analog_en[38] , \gpio_analog_en[37] , \gpio_analog_en[36] , \gpio_analog_en[35] , \gpio_analog_en[34] , \gpio_analog_en[33] , \gpio_analog_en[32] , \gpio_analog_en[31] , \gpio_analog_en[30] , \gpio_analog_en[29] , \gpio_analog_en[28] , \gpio_analog_en[27] , \gpio_analog_en[26] , \gpio_analog_en[25] , \gpio_analog_en[24] , \gpio_analog_en[23] , \gpio_analog_en[22] , \gpio_analog_en[21] , \gpio_analog_en[20] , \gpio_analog_en[19] , \gpio_analog_en[18] , \gpio_analog_en[17] , \gpio_analog_en[16] , \gpio_analog_en[15] , \gpio_analog_en[14] , \gpio_analog_en[13] , \gpio_analog_en[12] , \gpio_analog_en[11] , \gpio_analog_en[10] , \gpio_analog_en[9] , \gpio_analog_en[8] , \gpio_analog_en[7] , \gpio_analog_en[6] , \gpio_analog_en[5] , \gpio_analog_en[4] , \gpio_analog_en[3] , \gpio_analog_en[2] , \gpio_analog_en[1] , \gpio_analog_en[0] }), + .gpio_analog_pol({ \gpio_analog_pol[43] , \gpio_analog_pol[42] , \gpio_analog_pol[41] , \gpio_analog_pol[40] , \gpio_analog_pol[39] , \gpio_analog_pol[38] , \gpio_analog_pol[37] , \gpio_analog_pol[36] , \gpio_analog_pol[35] , \gpio_analog_pol[34] , \gpio_analog_pol[33] , \gpio_analog_pol[32] , \gpio_analog_pol[31] , \gpio_analog_pol[30] , \gpio_analog_pol[29] , \gpio_analog_pol[28] , \gpio_analog_pol[27] , \gpio_analog_pol[26] , \gpio_analog_pol[25] , \gpio_analog_pol[24] , \gpio_analog_pol[23] , \gpio_analog_pol[22] , \gpio_analog_pol[21] , \gpio_analog_pol[20] , \gpio_analog_pol[19] , \gpio_analog_pol[18] , \gpio_analog_pol[17] , \gpio_analog_pol[16] , \gpio_analog_pol[15] , \gpio_analog_pol[14] , \gpio_analog_pol[13] , \gpio_analog_pol[12] , \gpio_analog_pol[11] , \gpio_analog_pol[10] , \gpio_analog_pol[9] , \gpio_analog_pol[8] , \gpio_analog_pol[7] , \gpio_analog_pol[6] , \gpio_analog_pol[5] , \gpio_analog_pol[4] , \gpio_analog_pol[3] , \gpio_analog_pol[2] , \gpio_analog_pol[1] , \gpio_analog_pol[0] }), + .gpio_analog_sel({ \gpio_analog_sel[43] , \gpio_analog_sel[42] , \gpio_analog_sel[41] , \gpio_analog_sel[40] , \gpio_analog_sel[39] , \gpio_analog_sel[38] , \gpio_analog_sel[37] , \gpio_analog_sel[36] , \gpio_analog_sel[35] , \gpio_analog_sel[34] , \gpio_analog_sel[33] , \gpio_analog_sel[32] , \gpio_analog_sel[31] , \gpio_analog_sel[30] , \gpio_analog_sel[29] , \gpio_analog_sel[28] , \gpio_analog_sel[27] , \gpio_analog_sel[26] , \gpio_analog_sel[25] , \gpio_analog_sel[24] , \gpio_analog_sel[23] , \gpio_analog_sel[22] , \gpio_analog_sel[21] , \gpio_analog_sel[20] , \gpio_analog_sel[19] , \gpio_analog_sel[18] , \gpio_analog_sel[17] , \gpio_analog_sel[16] , \gpio_analog_sel[15] , \gpio_analog_sel[14] , \gpio_analog_sel[13] , \gpio_analog_sel[12] , \gpio_analog_sel[11] , \gpio_analog_sel[10] , \gpio_analog_sel[9] , \gpio_analog_sel[8] , \gpio_analog_sel[7] , \gpio_analog_sel[6] , \gpio_analog_sel[5] , \gpio_analog_sel[4] , \gpio_analog_sel[3] , \gpio_analog_sel[2] , \gpio_analog_sel[1] , \gpio_analog_sel[0] }), + .gpio_dm0({ \gpio_dm0[43] , \gpio_dm0[42] , \gpio_dm0[41] , \gpio_dm0[40] , \gpio_dm0[39] , \gpio_dm0[38] , \gpio_dm0[37] , \gpio_dm0[36] , \gpio_dm0[35] , \gpio_dm0[34] , \gpio_dm0[33] , \gpio_dm0[32] , \gpio_dm0[31] , \gpio_dm0[30] , \gpio_dm0[29] , \gpio_dm0[28] , \gpio_dm0[27] , \gpio_dm0[26] , \gpio_dm0[25] , \gpio_dm0[24] , \gpio_dm0[23] , \gpio_dm0[22] , \gpio_dm0[21] , \gpio_dm0[20] , \gpio_dm0[19] , \gpio_dm0[18] , \gpio_dm0[17] , \gpio_dm0[16] , \gpio_dm0[15] , \gpio_dm0[14] , \gpio_dm0[13] , \gpio_dm0[12] , \gpio_dm0[11] , \gpio_dm0[10] , \gpio_dm0[9] , \gpio_dm0[8] , \gpio_dm0[7] , \gpio_dm0[6] , \gpio_dm0[5] , \gpio_dm0[4] , \gpio_dm0[3] , \gpio_dm0[2] , \gpio_dm0[1] , \gpio_dm0[0] }), + .gpio_dm1({ \gpio_dm1[43] , \gpio_dm1[42] , \gpio_dm1[41] , \gpio_dm1[40] , \gpio_dm1[39] , \gpio_dm1[38] , \gpio_dm1[37] , \gpio_dm1[36] , \gpio_dm1[35] , \gpio_dm1[34] , \gpio_dm1[33] , \gpio_dm1[32] , \gpio_dm1[31] , \gpio_dm1[30] , \gpio_dm1[29] , \gpio_dm1[28] , \gpio_dm1[27] , \gpio_dm1[26] , \gpio_dm1[25] , \gpio_dm1[24] , \gpio_dm1[23] , \gpio_dm1[22] , \gpio_dm1[21] , \gpio_dm1[20] , \gpio_dm1[19] , \gpio_dm1[18] , \gpio_dm1[17] , \gpio_dm1[16] , \gpio_dm1[15] , \gpio_dm1[14] , \gpio_dm1[13] , \gpio_dm1[12] , \gpio_dm1[11] , \gpio_dm1[10] , \gpio_dm1[9] , \gpio_dm1[8] , \gpio_dm1[7] , \gpio_dm1[6] , \gpio_dm1[5] , \gpio_dm1[4] , \gpio_dm1[3] , \gpio_dm1[2] , \gpio_dm1[1] , \gpio_dm1[0] }), + .gpio_dm2({ \gpio_dm2[43] , \gpio_dm2[42] , \gpio_dm2[41] , \gpio_dm2[40] , \gpio_dm2[39] , \gpio_dm2[38] , \gpio_dm2[37] , \gpio_dm2[36] , \gpio_dm2[35] , \gpio_dm2[34] , \gpio_dm2[33] , \gpio_dm2[32] , \gpio_dm2[31] , \gpio_dm2[30] , \gpio_dm2[29] , \gpio_dm2[28] , \gpio_dm2[27] , \gpio_dm2[26] , \gpio_dm2[25] , \gpio_dm2[24] , \gpio_dm2[23] , \gpio_dm2[22] , \gpio_dm2[21] , \gpio_dm2[20] , \gpio_dm2[19] , \gpio_dm2[18] , \gpio_dm2[17] , \gpio_dm2[16] , \gpio_dm2[15] , \gpio_dm2[14] , \gpio_dm2[13] , \gpio_dm2[12] , \gpio_dm2[11] , \gpio_dm2[10] , \gpio_dm2[9] , \gpio_dm2[8] , \gpio_dm2[7] , \gpio_dm2[6] , \gpio_dm2[5] , \gpio_dm2[4] , \gpio_dm2[3] , \gpio_dm2[2] , \gpio_dm2[1] , \gpio_dm2[0] }), + .gpio_holdover({ \gpio_holdover[43] , \gpio_holdover[42] , \gpio_holdover[41] , \gpio_holdover[40] , \gpio_holdover[39] , \gpio_holdover[38] , \gpio_holdover[37] , \gpio_holdover[36] , \gpio_holdover[35] , \gpio_holdover[34] , \gpio_holdover[33] , \gpio_holdover[32] , \gpio_holdover[31] , \gpio_holdover[30] , \gpio_holdover[29] , \gpio_holdover[28] , \gpio_holdover[27] , \gpio_holdover[26] , \gpio_holdover[25] , \gpio_holdover[24] , \gpio_holdover[23] , \gpio_holdover[22] , \gpio_holdover[21] , \gpio_holdover[20] , \gpio_holdover[19] , \gpio_holdover[18] , \gpio_holdover[17] , \gpio_holdover[16] , \gpio_holdover[15] , \gpio_holdover[14] , \gpio_holdover[13] , \gpio_holdover[12] , \gpio_holdover[11] , \gpio_holdover[10] , \gpio_holdover[9] , \gpio_holdover[8] , \gpio_holdover[7] , \gpio_holdover[6] , \gpio_holdover[5] , \gpio_holdover[4] , \gpio_holdover[3] , \gpio_holdover[2] , \gpio_holdover[1] , \gpio_holdover[0] }), + .gpio_ib_mode_sel({ \gpio_ib_mode_sel[43] , \gpio_ib_mode_sel[42] , \gpio_ib_mode_sel[41] , \gpio_ib_mode_sel[40] , \gpio_ib_mode_sel[39] , \gpio_ib_mode_sel[38] , \gpio_ib_mode_sel[37] , \gpio_ib_mode_sel[36] , \gpio_ib_mode_sel[35] , \gpio_ib_mode_sel[34] , \gpio_ib_mode_sel[33] , \gpio_ib_mode_sel[32] , \gpio_ib_mode_sel[31] , \gpio_ib_mode_sel[30] , \gpio_ib_mode_sel[29] , \gpio_ib_mode_sel[28] , \gpio_ib_mode_sel[27] , \gpio_ib_mode_sel[26] , \gpio_ib_mode_sel[25] , \gpio_ib_mode_sel[24] , \gpio_ib_mode_sel[23] , \gpio_ib_mode_sel[22] , \gpio_ib_mode_sel[21] , \gpio_ib_mode_sel[20] , \gpio_ib_mode_sel[19] , \gpio_ib_mode_sel[18] , \gpio_ib_mode_sel[17] , \gpio_ib_mode_sel[16] , \gpio_ib_mode_sel[15] , \gpio_ib_mode_sel[14] , \gpio_ib_mode_sel[13] , \gpio_ib_mode_sel[12] , \gpio_ib_mode_sel[11] , \gpio_ib_mode_sel[10] , \gpio_ib_mode_sel[9] , \gpio_ib_mode_sel[8] , \gpio_ib_mode_sel[7] , \gpio_ib_mode_sel[6] , \gpio_ib_mode_sel[5] , \gpio_ib_mode_sel[4] , \gpio_ib_mode_sel[3] , \gpio_ib_mode_sel[2] , \gpio_ib_mode_sel[1] , \gpio_ib_mode_sel[0] }), + .gpio_in({ \gpio_in[43] , \gpio_in[42] , \gpio_in[41] , \gpio_in[40] , \gpio_in[39] , \gpio_in[38] , \gpio_in[37] , \gpio_in[36] , \gpio_in[35] , \gpio_in[34] , \gpio_in[33] , \gpio_in[32] , \gpio_in[31] , \gpio_in[30] , \gpio_in[29] , \gpio_in[28] , \gpio_in[27] , \gpio_in[26] , \gpio_in[25] , \gpio_in[24] , \gpio_in[23] , \gpio_in[22] , \gpio_in[21] , \gpio_in[20] , \gpio_in[19] , \gpio_in[18] , \gpio_in[17] , \gpio_in[16] , \gpio_in[15] , \gpio_in[14] , \gpio_in[13] , \gpio_in[12] , \gpio_in[11] , \gpio_in[10] , \gpio_in[9] , \gpio_in[8] , \gpio_in[7] , \gpio_in[6] , \gpio_in[5] , \gpio_in[4] , \gpio_in[3] , \gpio_in[2] , \gpio_in[1] , \gpio_in[0] }), + .gpio_in_h({ \gpio_in_h[43] , \gpio_in_h[42] , \gpio_in_h[41] , \gpio_in_h[40] , \gpio_in_h[39] , \gpio_in_h[38] , \gpio_in_h[37] , \gpio_in_h[36] , \gpio_in_h[35] , \gpio_in_h[34] , \gpio_in_h[33] , \gpio_in_h[32] , \gpio_in_h[31] , \gpio_in_h[30] , \gpio_in_h[29] , \gpio_in_h[28] , \gpio_in_h[27] , \gpio_in_h[26] , \gpio_in_h[25] , \gpio_in_h[24] , \gpio_in_h[23] , \gpio_in_h[22] , \gpio_in_h[21] , \gpio_in_h[20] , \gpio_in_h[19] , \gpio_in_h[18] , \gpio_in_h[17] , \gpio_in_h[16] , \gpio_in_h[15] , \gpio_in_h[14] , \gpio_in_h[13] , \gpio_in_h[12] , \gpio_in_h[11] , \gpio_in_h[10] , \gpio_in_h[9] , \gpio_in_h[8] , \gpio_in_h[7] , \gpio_in_h[6] , \gpio_in_h[5] , \gpio_in_h[4] , \gpio_in_h[3] , \gpio_in_h[2] , \gpio_in_h[1] , \gpio_in_h[0] }), + .gpio_inp_dis({ \gpio_inp_dis[43] , \gpio_inp_dis[42] , \gpio_inp_dis[41] , \gpio_inp_dis[40] , \gpio_inp_dis[39] , \gpio_inp_dis[38] , \gpio_inp_dis[37] , \gpio_inp_dis[36] , \gpio_inp_dis[35] , \gpio_inp_dis[34] , \gpio_inp_dis[33] , \gpio_inp_dis[32] , \gpio_inp_dis[31] , \gpio_inp_dis[30] , \gpio_inp_dis[29] , \gpio_inp_dis[28] , \gpio_inp_dis[27] , \gpio_inp_dis[26] , \gpio_inp_dis[25] , \gpio_inp_dis[24] , \gpio_inp_dis[23] , \gpio_inp_dis[22] , \gpio_inp_dis[21] , \gpio_inp_dis[20] , \gpio_inp_dis[19] , \gpio_inp_dis[18] , \gpio_inp_dis[17] , \gpio_inp_dis[16] , \gpio_inp_dis[15] , \gpio_inp_dis[14] , \gpio_inp_dis[13] , \gpio_inp_dis[12] , \gpio_inp_dis[11] , \gpio_inp_dis[10] , \gpio_inp_dis[9] , \gpio_inp_dis[8] , \gpio_inp_dis[7] , \gpio_inp_dis[6] , \gpio_inp_dis[5] , \gpio_inp_dis[4] , \gpio_inp_dis[3] , \gpio_inp_dis[2] , \gpio_inp_dis[1] , \gpio_inp_dis[0] }), + .gpio_loopback_one({ \gpio_loopback_one[43] , \gpio_loopback_one[42] , \gpio_loopback_one[41] , \gpio_loopback_one[40] , \gpio_loopback_one[39] , \gpio_loopback_one[38] , \gpio_loopback_one[37] , \gpio_loopback_one[36] , \gpio_loopback_one[35] , \gpio_loopback_one[34] , \gpio_loopback_one[33] , \gpio_loopback_one[32] , \gpio_loopback_one[31] , \gpio_loopback_one[30] , \gpio_loopback_one[29] , \gpio_loopback_one[28] , \gpio_loopback_one[27] , \gpio_loopback_one[26] , \gpio_loopback_one[25] , \gpio_loopback_one[24] , \gpio_loopback_one[23] , \gpio_loopback_one[22] , \gpio_loopback_one[21] , \gpio_loopback_one[20] , \gpio_loopback_one[19] , \gpio_loopback_one[18] , \gpio_loopback_one[17] , \gpio_loopback_one[16] , \gpio_loopback_one[15] , \gpio_loopback_one[14] , \gpio_loopback_one[13] , \gpio_loopback_one[12] , \gpio_loopback_one[11] , \gpio_loopback_one[10] , \gpio_loopback_one[9] , \gpio_loopback_one[8] , \gpio_loopback_one[7] , \gpio_loopback_one[6] , \gpio_loopback_one[5] , \gpio_loopback_one[4] , \gpio_loopback_one[3] , \gpio_loopback_one[2] , \gpio_loopback_one[1] , \gpio_loopback_one[0] }), + .gpio_loopback_zero({ \gpio_loopback_zero[43] , \gpio_loopback_zero[42] , \gpio_loopback_zero[41] , \gpio_loopback_zero[40] , \gpio_loopback_zero[39] , \gpio_loopback_zero[38] , \gpio_loopback_zero[37] , \gpio_loopback_zero[36] , \gpio_loopback_zero[35] , \gpio_loopback_zero[34] , \gpio_loopback_zero[33] , \gpio_loopback_zero[32] , \gpio_loopback_zero[31] , \gpio_loopback_zero[30] , \gpio_loopback_zero[29] , \gpio_loopback_zero[28] , \gpio_loopback_zero[27] , \gpio_loopback_zero[26] , \gpio_loopback_zero[25] , \gpio_loopback_zero[24] , \gpio_loopback_zero[23] , \gpio_loopback_zero[22] , \gpio_loopback_zero[21] , \gpio_loopback_zero[20] , \gpio_loopback_zero[19] , \gpio_loopback_zero[18] , \gpio_loopback_zero[17] , \gpio_loopback_zero[16] , \gpio_loopback_zero[15] , \gpio_loopback_zero[14] , \gpio_loopback_zero[13] , \gpio_loopback_zero[12] , \gpio_loopback_zero[11] , \gpio_loopback_zero[10] , \gpio_loopback_zero[9] , \gpio_loopback_zero[8] , \gpio_loopback_zero[7] , \gpio_loopback_zero[6] , \gpio_loopback_zero[5] , \gpio_loopback_zero[4] , \gpio_loopback_zero[3] , \gpio_loopback_zero[2] , \gpio_loopback_zero[1] , \gpio_loopback_zero[0] }), + .gpio_oeb({ \gpio_oeb[43] , \gpio_oeb[42] , \gpio_oeb[41] , \gpio_oeb[40] , \gpio_oeb[39] , \gpio_oeb[38] , \gpio_oeb[37] , \gpio_oeb[36] , \gpio_oeb[35] , \gpio_oeb[34] , \gpio_oeb[33] , \gpio_oeb[32] , \gpio_oeb[31] , \gpio_oeb[30] , \gpio_oeb[29] , \gpio_oeb[28] , \gpio_oeb[27] , \gpio_oeb[26] , \gpio_oeb[25] , \gpio_oeb[24] , \gpio_oeb[23] , \gpio_oeb[22] , \gpio_oeb[21] , \gpio_oeb[20] , \gpio_oeb[19] , \gpio_oeb[18] , \gpio_oeb[17] , \gpio_oeb[16] , \gpio_oeb[15] , \gpio_oeb[14] , \gpio_oeb[13] , \gpio_oeb[12] , \gpio_oeb[11] , \gpio_oeb[10] , \gpio_oeb[9] , \gpio_oeb[8] , \gpio_oeb[7] , \gpio_oeb[6] , \gpio_oeb[5] , \gpio_oeb[4] , \gpio_oeb[3] , \gpio_oeb[2] , \gpio_oeb[1] , \gpio_oeb[0] }), + .gpio_out({ \gpio_out[43] , \gpio_out[42] , \gpio_out[41] , \gpio_out[40] , \gpio_out[39] , \gpio_out[38] , \gpio_out[37] , \gpio_out[36] , \gpio_out[35] , \gpio_out[34] , \gpio_out[33] , \gpio_out[32] , \gpio_out[31] , \gpio_out[30] , \gpio_out[29] , \gpio_out[28] , \gpio_out[27] , \gpio_out[26] , \gpio_out[25] , \gpio_out[24] , \gpio_out[23] , \gpio_out[22] , \gpio_out[21] , \gpio_out[20] , \gpio_out[19] , \gpio_out[18] , \gpio_out[17] , \gpio_out[16] , \gpio_out[15] , \gpio_out[14] , \gpio_out[13] , \gpio_out[12] , \gpio_out[11] , \gpio_out[10] , \gpio_out[9] , \gpio_out[8] , \gpio_out[7] , \gpio_out[6] , \gpio_out[5] , \gpio_out[4] , \gpio_out[3] , \gpio_out[2] , \gpio_out[1] , \gpio_out[0] }), + .gpio_slow_sel({ \gpio_slow_sel[43] , \gpio_slow_sel[42] , \gpio_slow_sel[41] , \gpio_slow_sel[40] , \gpio_slow_sel[39] , \gpio_slow_sel[38] , \gpio_slow_sel[37] , \gpio_slow_sel[36] , \gpio_slow_sel[35] , \gpio_slow_sel[34] , \gpio_slow_sel[33] , \gpio_slow_sel[32] , \gpio_slow_sel[31] , \gpio_slow_sel[30] , \gpio_slow_sel[29] , \gpio_slow_sel[28] , \gpio_slow_sel[27] , \gpio_slow_sel[26] , \gpio_slow_sel[25] , \gpio_slow_sel[24] , \gpio_slow_sel[23] , \gpio_slow_sel[22] , \gpio_slow_sel[21] , \gpio_slow_sel[20] , \gpio_slow_sel[19] , \gpio_slow_sel[18] , \gpio_slow_sel[17] , \gpio_slow_sel[16] , \gpio_slow_sel[15] , \gpio_slow_sel[14] , \gpio_slow_sel[13] , \gpio_slow_sel[12] , \gpio_slow_sel[11] , \gpio_slow_sel[10] , \gpio_slow_sel[9] , \gpio_slow_sel[8] , \gpio_slow_sel[7] , \gpio_slow_sel[6] , \gpio_slow_sel[5] , \gpio_slow_sel[4] , \gpio_slow_sel[3] , \gpio_slow_sel[2] , \gpio_slow_sel[1] , \gpio_slow_sel[0] }), + .gpio_vtrip_sel({ \gpio_vtrip_sel[43] , \gpio_vtrip_sel[42] , \gpio_vtrip_sel[41] , \gpio_vtrip_sel[40] , \gpio_vtrip_sel[39] , \gpio_vtrip_sel[38] , \gpio_vtrip_sel[37] , \gpio_vtrip_sel[36] , \gpio_vtrip_sel[35] , \gpio_vtrip_sel[34] , \gpio_vtrip_sel[33] , \gpio_vtrip_sel[32] , \gpio_vtrip_sel[31] , \gpio_vtrip_sel[30] , \gpio_vtrip_sel[29] , \gpio_vtrip_sel[28] , \gpio_vtrip_sel[27] , \gpio_vtrip_sel[26] , \gpio_vtrip_sel[25] , \gpio_vtrip_sel[24] , \gpio_vtrip_sel[23] , \gpio_vtrip_sel[22] , \gpio_vtrip_sel[21] , \gpio_vtrip_sel[20] , \gpio_vtrip_sel[19] , \gpio_vtrip_sel[18] , \gpio_vtrip_sel[17] , \gpio_vtrip_sel[16] , \gpio_vtrip_sel[15] , \gpio_vtrip_sel[14] , \gpio_vtrip_sel[13] , \gpio_vtrip_sel[12] , \gpio_vtrip_sel[11] , \gpio_vtrip_sel[10] , \gpio_vtrip_sel[9] , \gpio_vtrip_sel[8] , \gpio_vtrip_sel[7] , \gpio_vtrip_sel[6] , \gpio_vtrip_sel[5] , \gpio_vtrip_sel[4] , \gpio_vtrip_sel[3] , \gpio_vtrip_sel[2] , \gpio_vtrip_sel[1] , \gpio_vtrip_sel[0] }), + .mask_rev({ \mask_rev[31] , \mask_rev[30] , \mask_rev[29] , \mask_rev[28] , \mask_rev[27] , \mask_rev[26] , \mask_rev[25] , \mask_rev[24] , \mask_rev[23] , \mask_rev[22] , \mask_rev[21] , \mask_rev[20] , \mask_rev[19] , \mask_rev[18] , \mask_rev[17] , \mask_rev[16] , \mask_rev[15] , \mask_rev[14] , \mask_rev[13] , \mask_rev[12] , \mask_rev[11] , \mask_rev[10] , \mask_rev[9] , \mask_rev[8] , \mask_rev[7] , \mask_rev[6] , \mask_rev[5] , \mask_rev[4] , \mask_rev[3] , \mask_rev[2] , \mask_rev[1] , \mask_rev[0] }), + .por_l(por_l), + .porb_h(porb_h), + .porb_l(porb_l), + .resetb_h(rstb_h), + .resetb_l(rstb_l), + .vccd1(vccd1_core), + .vssd1(vssd1_core) + ); +endmodule diff --git a/verilog/gl/caravel_openframe.v b/verilog/gl/caravel_openframe.v new file mode 100644 index 00000000..ffbbc634 --- /dev/null +++ b/verilog/gl/caravel_openframe.v @@ -0,0 +1,1031 @@ +/* Generated by Yosys 0.30+48 (git sha1 14d50a176d5, gcc 8.3.1 -fPIC -Os) */ + +module caravel_openframe(vddio, vddio_2, vssio, vssio_2, vdda, vssa, vccd, vssd, vdda1, vdda1_2, vdda2, vssa1, vssa1_2, vssa2, vccd1, vccd2, vssd1, vssd2, gpio, resetb); + wire \analog_io[0] ; + wire \analog_io[10] ; + wire \analog_io[11] ; + wire \analog_io[12] ; + wire \analog_io[13] ; + wire \analog_io[14] ; + wire \analog_io[15] ; + wire \analog_io[16] ; + wire \analog_io[17] ; + wire \analog_io[18] ; + wire \analog_io[19] ; + wire \analog_io[1] ; + wire \analog_io[20] ; + wire \analog_io[21] ; + wire \analog_io[22] ; + wire \analog_io[23] ; + wire \analog_io[24] ; + wire \analog_io[25] ; + wire \analog_io[26] ; + wire \analog_io[27] ; + wire \analog_io[28] ; + wire \analog_io[29] ; + wire \analog_io[2] ; + wire \analog_io[30] ; + wire \analog_io[31] ; + wire \analog_io[32] ; + wire \analog_io[33] ; + wire \analog_io[34] ; + wire \analog_io[35] ; + wire \analog_io[36] ; + wire \analog_io[37] ; + wire \analog_io[38] ; + wire \analog_io[39] ; + wire \analog_io[3] ; + wire \analog_io[40] ; + wire \analog_io[41] ; + wire \analog_io[42] ; + wire \analog_io[43] ; + wire \analog_io[4] ; + wire \analog_io[5] ; + wire \analog_io[6] ; + wire \analog_io[7] ; + wire \analog_io[8] ; + wire \analog_io[9] ; + wire \analog_noesd_io[0] ; + wire \analog_noesd_io[10] ; + wire \analog_noesd_io[11] ; + wire \analog_noesd_io[12] ; + wire \analog_noesd_io[13] ; + wire \analog_noesd_io[14] ; + wire \analog_noesd_io[15] ; + wire \analog_noesd_io[16] ; + wire \analog_noesd_io[17] ; + wire \analog_noesd_io[18] ; + wire \analog_noesd_io[19] ; + wire \analog_noesd_io[1] ; + wire \analog_noesd_io[20] ; + wire \analog_noesd_io[21] ; + wire \analog_noesd_io[22] ; + wire \analog_noesd_io[23] ; + wire \analog_noesd_io[24] ; + wire \analog_noesd_io[25] ; + wire \analog_noesd_io[26] ; + wire \analog_noesd_io[27] ; + wire \analog_noesd_io[28] ; + wire \analog_noesd_io[29] ; + wire \analog_noesd_io[2] ; + wire \analog_noesd_io[30] ; + wire \analog_noesd_io[31] ; + wire \analog_noesd_io[32] ; + wire \analog_noesd_io[33] ; + wire \analog_noesd_io[34] ; + wire \analog_noesd_io[35] ; + wire \analog_noesd_io[36] ; + wire \analog_noesd_io[37] ; + wire \analog_noesd_io[38] ; + wire \analog_noesd_io[39] ; + wire \analog_noesd_io[3] ; + wire \analog_noesd_io[40] ; + wire \analog_noesd_io[41] ; + wire \analog_noesd_io[42] ; + wire \analog_noesd_io[43] ; + wire \analog_noesd_io[4] ; + wire \analog_noesd_io[5] ; + wire \analog_noesd_io[6] ; + wire \analog_noesd_io[7] ; + wire \analog_noesd_io[8] ; + wire \analog_noesd_io[9] ; + inout [43:0] gpio; + wire [43:0] gpio; + wire \gpio_analog_en[0] ; + wire \gpio_analog_en[10] ; + wire \gpio_analog_en[11] ; + wire \gpio_analog_en[12] ; + wire \gpio_analog_en[13] ; + wire \gpio_analog_en[14] ; + wire \gpio_analog_en[15] ; + wire \gpio_analog_en[16] ; + wire \gpio_analog_en[17] ; + wire \gpio_analog_en[18] ; + wire \gpio_analog_en[19] ; + wire \gpio_analog_en[1] ; + wire \gpio_analog_en[20] ; + wire \gpio_analog_en[21] ; + wire \gpio_analog_en[22] ; + wire \gpio_analog_en[23] ; + wire \gpio_analog_en[24] ; + wire \gpio_analog_en[25] ; + wire \gpio_analog_en[26] ; + wire \gpio_analog_en[27] ; + wire \gpio_analog_en[28] ; + wire \gpio_analog_en[29] ; + wire \gpio_analog_en[2] ; + wire \gpio_analog_en[30] ; + wire \gpio_analog_en[31] ; + wire \gpio_analog_en[32] ; + wire \gpio_analog_en[33] ; + wire \gpio_analog_en[34] ; + wire \gpio_analog_en[35] ; + wire \gpio_analog_en[36] ; + wire \gpio_analog_en[37] ; + wire \gpio_analog_en[38] ; + wire \gpio_analog_en[39] ; + wire \gpio_analog_en[3] ; + wire \gpio_analog_en[40] ; + wire \gpio_analog_en[41] ; + wire \gpio_analog_en[42] ; + wire \gpio_analog_en[43] ; + wire \gpio_analog_en[4] ; + wire \gpio_analog_en[5] ; + wire \gpio_analog_en[6] ; + wire \gpio_analog_en[7] ; + wire \gpio_analog_en[8] ; + wire \gpio_analog_en[9] ; + wire \gpio_analog_pol[0] ; + wire \gpio_analog_pol[10] ; + wire \gpio_analog_pol[11] ; + wire \gpio_analog_pol[12] ; + wire \gpio_analog_pol[13] ; + wire \gpio_analog_pol[14] ; + wire \gpio_analog_pol[15] ; + wire \gpio_analog_pol[16] ; + wire \gpio_analog_pol[17] ; + wire \gpio_analog_pol[18] ; + wire \gpio_analog_pol[19] ; + wire \gpio_analog_pol[1] ; + wire \gpio_analog_pol[20] ; + wire \gpio_analog_pol[21] ; + wire \gpio_analog_pol[22] ; + wire \gpio_analog_pol[23] ; + wire \gpio_analog_pol[24] ; + wire \gpio_analog_pol[25] ; + wire \gpio_analog_pol[26] ; + wire \gpio_analog_pol[27] ; + wire \gpio_analog_pol[28] ; + wire \gpio_analog_pol[29] ; + wire \gpio_analog_pol[2] ; + wire \gpio_analog_pol[30] ; + wire \gpio_analog_pol[31] ; + wire \gpio_analog_pol[32] ; + wire \gpio_analog_pol[33] ; + wire \gpio_analog_pol[34] ; + wire \gpio_analog_pol[35] ; + wire \gpio_analog_pol[36] ; + wire \gpio_analog_pol[37] ; + wire \gpio_analog_pol[38] ; + wire \gpio_analog_pol[39] ; + wire \gpio_analog_pol[3] ; + wire \gpio_analog_pol[40] ; + wire \gpio_analog_pol[41] ; + wire \gpio_analog_pol[42] ; + wire \gpio_analog_pol[43] ; + wire \gpio_analog_pol[4] ; + wire \gpio_analog_pol[5] ; + wire \gpio_analog_pol[6] ; + wire \gpio_analog_pol[7] ; + wire \gpio_analog_pol[8] ; + wire \gpio_analog_pol[9] ; + wire \gpio_analog_sel[0] ; + wire \gpio_analog_sel[10] ; + wire \gpio_analog_sel[11] ; + wire \gpio_analog_sel[12] ; + wire \gpio_analog_sel[13] ; + wire \gpio_analog_sel[14] ; + wire \gpio_analog_sel[15] ; + wire \gpio_analog_sel[16] ; + wire \gpio_analog_sel[17] ; + wire \gpio_analog_sel[18] ; + wire \gpio_analog_sel[19] ; + wire \gpio_analog_sel[1] ; + wire \gpio_analog_sel[20] ; + wire \gpio_analog_sel[21] ; + wire \gpio_analog_sel[22] ; + wire \gpio_analog_sel[23] ; + wire \gpio_analog_sel[24] ; + wire \gpio_analog_sel[25] ; + wire \gpio_analog_sel[26] ; + wire \gpio_analog_sel[27] ; + wire \gpio_analog_sel[28] ; + wire \gpio_analog_sel[29] ; + wire \gpio_analog_sel[2] ; + wire \gpio_analog_sel[30] ; + wire \gpio_analog_sel[31] ; + wire \gpio_analog_sel[32] ; + wire \gpio_analog_sel[33] ; + wire \gpio_analog_sel[34] ; + wire \gpio_analog_sel[35] ; + wire \gpio_analog_sel[36] ; + wire \gpio_analog_sel[37] ; + wire \gpio_analog_sel[38] ; + wire \gpio_analog_sel[39] ; + wire \gpio_analog_sel[3] ; + wire \gpio_analog_sel[40] ; + wire \gpio_analog_sel[41] ; + wire \gpio_analog_sel[42] ; + wire \gpio_analog_sel[43] ; + wire \gpio_analog_sel[4] ; + wire \gpio_analog_sel[5] ; + wire \gpio_analog_sel[6] ; + wire \gpio_analog_sel[7] ; + wire \gpio_analog_sel[8] ; + wire \gpio_analog_sel[9] ; + wire \gpio_dm0[0] ; + wire \gpio_dm0[10] ; + wire \gpio_dm0[11] ; + wire \gpio_dm0[12] ; + wire \gpio_dm0[13] ; + wire \gpio_dm0[14] ; + wire \gpio_dm0[15] ; + wire \gpio_dm0[16] ; + wire \gpio_dm0[17] ; + wire \gpio_dm0[18] ; + wire \gpio_dm0[19] ; + wire \gpio_dm0[1] ; + wire \gpio_dm0[20] ; + wire \gpio_dm0[21] ; + wire \gpio_dm0[22] ; + wire \gpio_dm0[23] ; + wire \gpio_dm0[24] ; + wire \gpio_dm0[25] ; + wire \gpio_dm0[26] ; + wire \gpio_dm0[27] ; + wire \gpio_dm0[28] ; + wire \gpio_dm0[29] ; + wire \gpio_dm0[2] ; + wire \gpio_dm0[30] ; + wire \gpio_dm0[31] ; + wire \gpio_dm0[32] ; + wire \gpio_dm0[33] ; + wire \gpio_dm0[34] ; + wire \gpio_dm0[35] ; + wire \gpio_dm0[36] ; + wire \gpio_dm0[37] ; + wire \gpio_dm0[38] ; + wire \gpio_dm0[39] ; + wire \gpio_dm0[3] ; + wire \gpio_dm0[40] ; + wire \gpio_dm0[41] ; + wire \gpio_dm0[42] ; + wire \gpio_dm0[43] ; + wire \gpio_dm0[4] ; + wire \gpio_dm0[5] ; + wire \gpio_dm0[6] ; + wire \gpio_dm0[7] ; + wire \gpio_dm0[8] ; + wire \gpio_dm0[9] ; + wire \gpio_dm1[0] ; + wire \gpio_dm1[10] ; + wire \gpio_dm1[11] ; + wire \gpio_dm1[12] ; + wire \gpio_dm1[13] ; + wire \gpio_dm1[14] ; + wire \gpio_dm1[15] ; + wire \gpio_dm1[16] ; + wire \gpio_dm1[17] ; + wire \gpio_dm1[18] ; + wire \gpio_dm1[19] ; + wire \gpio_dm1[1] ; + wire \gpio_dm1[20] ; + wire \gpio_dm1[21] ; + wire \gpio_dm1[22] ; + wire \gpio_dm1[23] ; + wire \gpio_dm1[24] ; + wire \gpio_dm1[25] ; + wire \gpio_dm1[26] ; + wire \gpio_dm1[27] ; + wire \gpio_dm1[28] ; + wire \gpio_dm1[29] ; + wire \gpio_dm1[2] ; + wire \gpio_dm1[30] ; + wire \gpio_dm1[31] ; + wire \gpio_dm1[32] ; + wire \gpio_dm1[33] ; + wire \gpio_dm1[34] ; + wire \gpio_dm1[35] ; + wire \gpio_dm1[36] ; + wire \gpio_dm1[37] ; + wire \gpio_dm1[38] ; + wire \gpio_dm1[39] ; + wire \gpio_dm1[3] ; + wire \gpio_dm1[40] ; + wire \gpio_dm1[41] ; + wire \gpio_dm1[42] ; + wire \gpio_dm1[43] ; + wire \gpio_dm1[4] ; + wire \gpio_dm1[5] ; + wire \gpio_dm1[6] ; + wire \gpio_dm1[7] ; + wire \gpio_dm1[8] ; + wire \gpio_dm1[9] ; + wire \gpio_dm2[0] ; + wire \gpio_dm2[10] ; + wire \gpio_dm2[11] ; + wire \gpio_dm2[12] ; + wire \gpio_dm2[13] ; + wire \gpio_dm2[14] ; + wire \gpio_dm2[15] ; + wire \gpio_dm2[16] ; + wire \gpio_dm2[17] ; + wire \gpio_dm2[18] ; + wire \gpio_dm2[19] ; + wire \gpio_dm2[1] ; + wire \gpio_dm2[20] ; + wire \gpio_dm2[21] ; + wire \gpio_dm2[22] ; + wire \gpio_dm2[23] ; + wire \gpio_dm2[24] ; + wire \gpio_dm2[25] ; + wire \gpio_dm2[26] ; + wire \gpio_dm2[27] ; + wire \gpio_dm2[28] ; + wire \gpio_dm2[29] ; + wire \gpio_dm2[2] ; + wire \gpio_dm2[30] ; + wire \gpio_dm2[31] ; + wire \gpio_dm2[32] ; + wire \gpio_dm2[33] ; + wire \gpio_dm2[34] ; + wire \gpio_dm2[35] ; + wire \gpio_dm2[36] ; + wire \gpio_dm2[37] ; + wire \gpio_dm2[38] ; + wire \gpio_dm2[39] ; + wire \gpio_dm2[3] ; + wire \gpio_dm2[40] ; + wire \gpio_dm2[41] ; + wire \gpio_dm2[42] ; + wire \gpio_dm2[43] ; + wire \gpio_dm2[4] ; + wire \gpio_dm2[5] ; + wire \gpio_dm2[6] ; + wire \gpio_dm2[7] ; + wire \gpio_dm2[8] ; + wire \gpio_dm2[9] ; + wire \gpio_holdover[0] ; + wire \gpio_holdover[10] ; + wire \gpio_holdover[11] ; + wire \gpio_holdover[12] ; + wire \gpio_holdover[13] ; + wire \gpio_holdover[14] ; + wire \gpio_holdover[15] ; + wire \gpio_holdover[16] ; + wire \gpio_holdover[17] ; + wire \gpio_holdover[18] ; + wire \gpio_holdover[19] ; + wire \gpio_holdover[1] ; + wire \gpio_holdover[20] ; + wire \gpio_holdover[21] ; + wire \gpio_holdover[22] ; + wire \gpio_holdover[23] ; + wire \gpio_holdover[24] ; + wire \gpio_holdover[25] ; + wire \gpio_holdover[26] ; + wire \gpio_holdover[27] ; + wire \gpio_holdover[28] ; + wire \gpio_holdover[29] ; + wire \gpio_holdover[2] ; + wire \gpio_holdover[30] ; + wire \gpio_holdover[31] ; + wire \gpio_holdover[32] ; + wire \gpio_holdover[33] ; + wire \gpio_holdover[34] ; + wire \gpio_holdover[35] ; + wire \gpio_holdover[36] ; + wire \gpio_holdover[37] ; + wire \gpio_holdover[38] ; + wire \gpio_holdover[39] ; + wire \gpio_holdover[3] ; + wire \gpio_holdover[40] ; + wire \gpio_holdover[41] ; + wire \gpio_holdover[42] ; + wire \gpio_holdover[43] ; + wire \gpio_holdover[4] ; + wire \gpio_holdover[5] ; + wire \gpio_holdover[6] ; + wire \gpio_holdover[7] ; + wire \gpio_holdover[8] ; + wire \gpio_holdover[9] ; + wire \gpio_ib_mode_sel[0] ; + wire \gpio_ib_mode_sel[10] ; + wire \gpio_ib_mode_sel[11] ; + wire \gpio_ib_mode_sel[12] ; + wire \gpio_ib_mode_sel[13] ; + wire \gpio_ib_mode_sel[14] ; + wire \gpio_ib_mode_sel[15] ; + wire \gpio_ib_mode_sel[16] ; + wire \gpio_ib_mode_sel[17] ; + wire \gpio_ib_mode_sel[18] ; + wire \gpio_ib_mode_sel[19] ; + wire \gpio_ib_mode_sel[1] ; + wire \gpio_ib_mode_sel[20] ; + wire \gpio_ib_mode_sel[21] ; + wire \gpio_ib_mode_sel[22] ; + wire \gpio_ib_mode_sel[23] ; + wire \gpio_ib_mode_sel[24] ; + wire \gpio_ib_mode_sel[25] ; + wire \gpio_ib_mode_sel[26] ; + wire \gpio_ib_mode_sel[27] ; + wire \gpio_ib_mode_sel[28] ; + wire \gpio_ib_mode_sel[29] ; + wire \gpio_ib_mode_sel[2] ; + wire \gpio_ib_mode_sel[30] ; + wire \gpio_ib_mode_sel[31] ; + wire \gpio_ib_mode_sel[32] ; + wire \gpio_ib_mode_sel[33] ; + wire \gpio_ib_mode_sel[34] ; + wire \gpio_ib_mode_sel[35] ; + wire \gpio_ib_mode_sel[36] ; + wire \gpio_ib_mode_sel[37] ; + wire \gpio_ib_mode_sel[38] ; + wire \gpio_ib_mode_sel[39] ; + wire \gpio_ib_mode_sel[3] ; + wire \gpio_ib_mode_sel[40] ; + wire \gpio_ib_mode_sel[41] ; + wire \gpio_ib_mode_sel[42] ; + wire \gpio_ib_mode_sel[43] ; + wire \gpio_ib_mode_sel[4] ; + wire \gpio_ib_mode_sel[5] ; + wire \gpio_ib_mode_sel[6] ; + wire \gpio_ib_mode_sel[7] ; + wire \gpio_ib_mode_sel[8] ; + wire \gpio_ib_mode_sel[9] ; + wire \gpio_in[0] ; + wire \gpio_in[10] ; + wire \gpio_in[11] ; + wire \gpio_in[12] ; + wire \gpio_in[13] ; + wire \gpio_in[14] ; + wire \gpio_in[15] ; + wire \gpio_in[16] ; + wire \gpio_in[17] ; + wire \gpio_in[18] ; + wire \gpio_in[19] ; + wire \gpio_in[1] ; + wire \gpio_in[20] ; + wire \gpio_in[21] ; + wire \gpio_in[22] ; + wire \gpio_in[23] ; + wire \gpio_in[24] ; + wire \gpio_in[25] ; + wire \gpio_in[26] ; + wire \gpio_in[27] ; + wire \gpio_in[28] ; + wire \gpio_in[29] ; + wire \gpio_in[2] ; + wire \gpio_in[30] ; + wire \gpio_in[31] ; + wire \gpio_in[32] ; + wire \gpio_in[33] ; + wire \gpio_in[34] ; + wire \gpio_in[35] ; + wire \gpio_in[36] ; + wire \gpio_in[37] ; + wire \gpio_in[38] ; + wire \gpio_in[39] ; + wire \gpio_in[3] ; + wire \gpio_in[40] ; + wire \gpio_in[41] ; + wire \gpio_in[42] ; + wire \gpio_in[43] ; + wire \gpio_in[4] ; + wire \gpio_in[5] ; + wire \gpio_in[6] ; + wire \gpio_in[7] ; + wire \gpio_in[8] ; + wire \gpio_in[9] ; + wire \gpio_in_h[0] ; + wire \gpio_in_h[10] ; + wire \gpio_in_h[11] ; + wire \gpio_in_h[12] ; + wire \gpio_in_h[13] ; + wire \gpio_in_h[14] ; + wire \gpio_in_h[15] ; + wire \gpio_in_h[16] ; + wire \gpio_in_h[17] ; + wire \gpio_in_h[18] ; + wire \gpio_in_h[19] ; + wire \gpio_in_h[1] ; + wire \gpio_in_h[20] ; + wire \gpio_in_h[21] ; + wire \gpio_in_h[22] ; + wire \gpio_in_h[23] ; + wire \gpio_in_h[24] ; + wire \gpio_in_h[25] ; + wire \gpio_in_h[26] ; + wire \gpio_in_h[27] ; + wire \gpio_in_h[28] ; + wire \gpio_in_h[29] ; + wire \gpio_in_h[2] ; + wire \gpio_in_h[30] ; + wire \gpio_in_h[31] ; + wire \gpio_in_h[32] ; + wire \gpio_in_h[33] ; + wire \gpio_in_h[34] ; + wire \gpio_in_h[35] ; + wire \gpio_in_h[36] ; + wire \gpio_in_h[37] ; + wire \gpio_in_h[38] ; + wire \gpio_in_h[39] ; + wire \gpio_in_h[3] ; + wire \gpio_in_h[40] ; + wire \gpio_in_h[41] ; + wire \gpio_in_h[42] ; + wire \gpio_in_h[43] ; + wire \gpio_in_h[4] ; + wire \gpio_in_h[5] ; + wire \gpio_in_h[6] ; + wire \gpio_in_h[7] ; + wire \gpio_in_h[8] ; + wire \gpio_in_h[9] ; + wire \gpio_inp_dis[0] ; + wire \gpio_inp_dis[10] ; + wire \gpio_inp_dis[11] ; + wire \gpio_inp_dis[12] ; + wire \gpio_inp_dis[13] ; + wire \gpio_inp_dis[14] ; + wire \gpio_inp_dis[15] ; + wire \gpio_inp_dis[16] ; + wire \gpio_inp_dis[17] ; + wire \gpio_inp_dis[18] ; + wire \gpio_inp_dis[19] ; + wire \gpio_inp_dis[1] ; + wire \gpio_inp_dis[20] ; + wire \gpio_inp_dis[21] ; + wire \gpio_inp_dis[22] ; + wire \gpio_inp_dis[23] ; + wire \gpio_inp_dis[24] ; + wire \gpio_inp_dis[25] ; + wire \gpio_inp_dis[26] ; + wire \gpio_inp_dis[27] ; + wire \gpio_inp_dis[28] ; + wire \gpio_inp_dis[29] ; + wire \gpio_inp_dis[2] ; + wire \gpio_inp_dis[30] ; + wire \gpio_inp_dis[31] ; + wire \gpio_inp_dis[32] ; + wire \gpio_inp_dis[33] ; + wire \gpio_inp_dis[34] ; + wire \gpio_inp_dis[35] ; + wire \gpio_inp_dis[36] ; + wire \gpio_inp_dis[37] ; + wire \gpio_inp_dis[38] ; + wire \gpio_inp_dis[39] ; + wire \gpio_inp_dis[3] ; + wire \gpio_inp_dis[40] ; + wire \gpio_inp_dis[41] ; + wire \gpio_inp_dis[42] ; + wire \gpio_inp_dis[43] ; + wire \gpio_inp_dis[4] ; + wire \gpio_inp_dis[5] ; + wire \gpio_inp_dis[6] ; + wire \gpio_inp_dis[7] ; + wire \gpio_inp_dis[8] ; + wire \gpio_inp_dis[9] ; + wire \gpio_loopback_one[0] ; + wire \gpio_loopback_one[10] ; + wire \gpio_loopback_one[11] ; + wire \gpio_loopback_one[12] ; + wire \gpio_loopback_one[13] ; + wire \gpio_loopback_one[14] ; + wire \gpio_loopback_one[15] ; + wire \gpio_loopback_one[16] ; + wire \gpio_loopback_one[17] ; + wire \gpio_loopback_one[18] ; + wire \gpio_loopback_one[19] ; + wire \gpio_loopback_one[1] ; + wire \gpio_loopback_one[20] ; + wire \gpio_loopback_one[21] ; + wire \gpio_loopback_one[22] ; + wire \gpio_loopback_one[23] ; + wire \gpio_loopback_one[24] ; + wire \gpio_loopback_one[25] ; + wire \gpio_loopback_one[26] ; + wire \gpio_loopback_one[27] ; + wire \gpio_loopback_one[28] ; + wire \gpio_loopback_one[29] ; + wire \gpio_loopback_one[2] ; + wire \gpio_loopback_one[30] ; + wire \gpio_loopback_one[31] ; + wire \gpio_loopback_one[32] ; + wire \gpio_loopback_one[33] ; + wire \gpio_loopback_one[34] ; + wire \gpio_loopback_one[35] ; + wire \gpio_loopback_one[36] ; + wire \gpio_loopback_one[37] ; + wire \gpio_loopback_one[38] ; + wire \gpio_loopback_one[39] ; + wire \gpio_loopback_one[3] ; + wire \gpio_loopback_one[40] ; + wire \gpio_loopback_one[41] ; + wire \gpio_loopback_one[42] ; + wire \gpio_loopback_one[43] ; + wire \gpio_loopback_one[4] ; + wire \gpio_loopback_one[5] ; + wire \gpio_loopback_one[6] ; + wire \gpio_loopback_one[7] ; + wire \gpio_loopback_one[8] ; + wire \gpio_loopback_one[9] ; + wire \gpio_loopback_zero[0] ; + wire \gpio_loopback_zero[10] ; + wire \gpio_loopback_zero[11] ; + wire \gpio_loopback_zero[12] ; + wire \gpio_loopback_zero[13] ; + wire \gpio_loopback_zero[14] ; + wire \gpio_loopback_zero[15] ; + wire \gpio_loopback_zero[16] ; + wire \gpio_loopback_zero[17] ; + wire \gpio_loopback_zero[18] ; + wire \gpio_loopback_zero[19] ; + wire \gpio_loopback_zero[1] ; + wire \gpio_loopback_zero[20] ; + wire \gpio_loopback_zero[21] ; + wire \gpio_loopback_zero[22] ; + wire \gpio_loopback_zero[23] ; + wire \gpio_loopback_zero[24] ; + wire \gpio_loopback_zero[25] ; + wire \gpio_loopback_zero[26] ; + wire \gpio_loopback_zero[27] ; + wire \gpio_loopback_zero[28] ; + wire \gpio_loopback_zero[29] ; + wire \gpio_loopback_zero[2] ; + wire \gpio_loopback_zero[30] ; + wire \gpio_loopback_zero[31] ; + wire \gpio_loopback_zero[32] ; + wire \gpio_loopback_zero[33] ; + wire \gpio_loopback_zero[34] ; + wire \gpio_loopback_zero[35] ; + wire \gpio_loopback_zero[36] ; + wire \gpio_loopback_zero[37] ; + wire \gpio_loopback_zero[38] ; + wire \gpio_loopback_zero[39] ; + wire \gpio_loopback_zero[3] ; + wire \gpio_loopback_zero[40] ; + wire \gpio_loopback_zero[41] ; + wire \gpio_loopback_zero[42] ; + wire \gpio_loopback_zero[43] ; + wire \gpio_loopback_zero[4] ; + wire \gpio_loopback_zero[5] ; + wire \gpio_loopback_zero[6] ; + wire \gpio_loopback_zero[7] ; + wire \gpio_loopback_zero[8] ; + wire \gpio_loopback_zero[9] ; + wire \gpio_oeb[0] ; + wire \gpio_oeb[10] ; + wire \gpio_oeb[11] ; + wire \gpio_oeb[12] ; + wire \gpio_oeb[13] ; + wire \gpio_oeb[14] ; + wire \gpio_oeb[15] ; + wire \gpio_oeb[16] ; + wire \gpio_oeb[17] ; + wire \gpio_oeb[18] ; + wire \gpio_oeb[19] ; + wire \gpio_oeb[1] ; + wire \gpio_oeb[20] ; + wire \gpio_oeb[21] ; + wire \gpio_oeb[22] ; + wire \gpio_oeb[23] ; + wire \gpio_oeb[24] ; + wire \gpio_oeb[25] ; + wire \gpio_oeb[26] ; + wire \gpio_oeb[27] ; + wire \gpio_oeb[28] ; + wire \gpio_oeb[29] ; + wire \gpio_oeb[2] ; + wire \gpio_oeb[30] ; + wire \gpio_oeb[31] ; + wire \gpio_oeb[32] ; + wire \gpio_oeb[33] ; + wire \gpio_oeb[34] ; + wire \gpio_oeb[35] ; + wire \gpio_oeb[36] ; + wire \gpio_oeb[37] ; + wire \gpio_oeb[38] ; + wire \gpio_oeb[39] ; + wire \gpio_oeb[3] ; + wire \gpio_oeb[40] ; + wire \gpio_oeb[41] ; + wire \gpio_oeb[42] ; + wire \gpio_oeb[43] ; + wire \gpio_oeb[4] ; + wire \gpio_oeb[5] ; + wire \gpio_oeb[6] ; + wire \gpio_oeb[7] ; + wire \gpio_oeb[8] ; + wire \gpio_oeb[9] ; + wire \gpio_out[0] ; + wire \gpio_out[10] ; + wire \gpio_out[11] ; + wire \gpio_out[12] ; + wire \gpio_out[13] ; + wire \gpio_out[14] ; + wire \gpio_out[15] ; + wire \gpio_out[16] ; + wire \gpio_out[17] ; + wire \gpio_out[18] ; + wire \gpio_out[19] ; + wire \gpio_out[1] ; + wire \gpio_out[20] ; + wire \gpio_out[21] ; + wire \gpio_out[22] ; + wire \gpio_out[23] ; + wire \gpio_out[24] ; + wire \gpio_out[25] ; + wire \gpio_out[26] ; + wire \gpio_out[27] ; + wire \gpio_out[28] ; + wire \gpio_out[29] ; + wire \gpio_out[2] ; + wire \gpio_out[30] ; + wire \gpio_out[31] ; + wire \gpio_out[32] ; + wire \gpio_out[33] ; + wire \gpio_out[34] ; + wire \gpio_out[35] ; + wire \gpio_out[36] ; + wire \gpio_out[37] ; + wire \gpio_out[38] ; + wire \gpio_out[39] ; + wire \gpio_out[3] ; + wire \gpio_out[40] ; + wire \gpio_out[41] ; + wire \gpio_out[42] ; + wire \gpio_out[43] ; + wire \gpio_out[4] ; + wire \gpio_out[5] ; + wire \gpio_out[6] ; + wire \gpio_out[7] ; + wire \gpio_out[8] ; + wire \gpio_out[9] ; + wire \gpio_slow_sel[0] ; + wire \gpio_slow_sel[10] ; + wire \gpio_slow_sel[11] ; + wire \gpio_slow_sel[12] ; + wire \gpio_slow_sel[13] ; + wire \gpio_slow_sel[14] ; + wire \gpio_slow_sel[15] ; + wire \gpio_slow_sel[16] ; + wire \gpio_slow_sel[17] ; + wire \gpio_slow_sel[18] ; + wire \gpio_slow_sel[19] ; + wire \gpio_slow_sel[1] ; + wire \gpio_slow_sel[20] ; + wire \gpio_slow_sel[21] ; + wire \gpio_slow_sel[22] ; + wire \gpio_slow_sel[23] ; + wire \gpio_slow_sel[24] ; + wire \gpio_slow_sel[25] ; + wire \gpio_slow_sel[26] ; + wire \gpio_slow_sel[27] ; + wire \gpio_slow_sel[28] ; + wire \gpio_slow_sel[29] ; + wire \gpio_slow_sel[2] ; + wire \gpio_slow_sel[30] ; + wire \gpio_slow_sel[31] ; + wire \gpio_slow_sel[32] ; + wire \gpio_slow_sel[33] ; + wire \gpio_slow_sel[34] ; + wire \gpio_slow_sel[35] ; + wire \gpio_slow_sel[36] ; + wire \gpio_slow_sel[37] ; + wire \gpio_slow_sel[38] ; + wire \gpio_slow_sel[39] ; + wire \gpio_slow_sel[3] ; + wire \gpio_slow_sel[40] ; + wire \gpio_slow_sel[41] ; + wire \gpio_slow_sel[42] ; + wire \gpio_slow_sel[43] ; + wire \gpio_slow_sel[4] ; + wire \gpio_slow_sel[5] ; + wire \gpio_slow_sel[6] ; + wire \gpio_slow_sel[7] ; + wire \gpio_slow_sel[8] ; + wire \gpio_slow_sel[9] ; + wire \gpio_vtrip_sel[0] ; + wire \gpio_vtrip_sel[10] ; + wire \gpio_vtrip_sel[11] ; + wire \gpio_vtrip_sel[12] ; + wire \gpio_vtrip_sel[13] ; + wire \gpio_vtrip_sel[14] ; + wire \gpio_vtrip_sel[15] ; + wire \gpio_vtrip_sel[16] ; + wire \gpio_vtrip_sel[17] ; + wire \gpio_vtrip_sel[18] ; + wire \gpio_vtrip_sel[19] ; + wire \gpio_vtrip_sel[1] ; + wire \gpio_vtrip_sel[20] ; + wire \gpio_vtrip_sel[21] ; + wire \gpio_vtrip_sel[22] ; + wire \gpio_vtrip_sel[23] ; + wire \gpio_vtrip_sel[24] ; + wire \gpio_vtrip_sel[25] ; + wire \gpio_vtrip_sel[26] ; + wire \gpio_vtrip_sel[27] ; + wire \gpio_vtrip_sel[28] ; + wire \gpio_vtrip_sel[29] ; + wire \gpio_vtrip_sel[2] ; + wire \gpio_vtrip_sel[30] ; + wire \gpio_vtrip_sel[31] ; + wire \gpio_vtrip_sel[32] ; + wire \gpio_vtrip_sel[33] ; + wire \gpio_vtrip_sel[34] ; + wire \gpio_vtrip_sel[35] ; + wire \gpio_vtrip_sel[36] ; + wire \gpio_vtrip_sel[37] ; + wire \gpio_vtrip_sel[38] ; + wire \gpio_vtrip_sel[39] ; + wire \gpio_vtrip_sel[3] ; + wire \gpio_vtrip_sel[40] ; + wire \gpio_vtrip_sel[41] ; + wire \gpio_vtrip_sel[42] ; + wire \gpio_vtrip_sel[43] ; + wire \gpio_vtrip_sel[4] ; + wire \gpio_vtrip_sel[5] ; + wire \gpio_vtrip_sel[6] ; + wire \gpio_vtrip_sel[7] ; + wire \gpio_vtrip_sel[8] ; + wire \gpio_vtrip_sel[9] ; + wire \mask_rev[0] ; + wire \mask_rev[10] ; + wire \mask_rev[11] ; + wire \mask_rev[12] ; + wire \mask_rev[13] ; + wire \mask_rev[14] ; + wire \mask_rev[15] ; + wire \mask_rev[16] ; + wire \mask_rev[17] ; + wire \mask_rev[18] ; + wire \mask_rev[19] ; + wire \mask_rev[1] ; + wire \mask_rev[20] ; + wire \mask_rev[21] ; + wire \mask_rev[22] ; + wire \mask_rev[23] ; + wire \mask_rev[24] ; + wire \mask_rev[25] ; + wire \mask_rev[26] ; + wire \mask_rev[27] ; + wire \mask_rev[28] ; + wire \mask_rev[29] ; + wire \mask_rev[2] ; + wire \mask_rev[30] ; + wire \mask_rev[31] ; + wire \mask_rev[3] ; + wire \mask_rev[4] ; + wire \mask_rev[5] ; + wire \mask_rev[6] ; + wire \mask_rev[7] ; + wire \mask_rev[8] ; + wire \mask_rev[9] ; + wire por_l; + wire porb_h; + wire porb_l; + input resetb; + wire resetb; + wire rstb_h; + wire rstb_l; + inout vccd; + wire vccd; + inout vccd1; + wire vccd1; + wire vccd1_core; + inout vccd2; + wire vccd2; + wire vccd2_core; + wire vccd_core; + inout vdda; + wire vdda; + inout vdda1; + wire vdda1; + inout vdda1_2; + wire vdda1_2; + wire vdda1_core; + inout vdda2; + wire vdda2; + wire vdda2_core; + wire vdda_core; + inout vddio; + wire vddio; + inout vddio_2; + wire vddio_2; + wire vddio_core; + inout vssa; + wire vssa; + inout vssa1; + wire vssa1; + inout vssa1_2; + wire vssa1_2; + wire vssa1_core; + inout vssa2; + wire vssa2; + wire vssa2_core; + wire vssa_core; + inout vssd; + wire vssd; + inout vssd1; + wire vssd1; + wire vssd1_core; + inout vssd2; + wire vssd2; + wire vssd2_core; + wire vssd_core; + inout vssio; + wire vssio; + inout vssio_2; + wire vssio_2; + wire vssio_core; + chip_io_openframe padframe ( + .analog_io({ \analog_io[43] , \analog_io[42] , \analog_io[41] , \analog_io[40] , \analog_io[39] , \analog_io[38] , \analog_io[37] , \analog_io[36] , \analog_io[35] , \analog_io[34] , \analog_io[33] , \analog_io[32] , \analog_io[31] , \analog_io[30] , \analog_io[29] , \analog_io[28] , \analog_io[27] , \analog_io[26] , \analog_io[25] , \analog_io[24] , \analog_io[23] , \analog_io[22] , \analog_io[21] , \analog_io[20] , \analog_io[19] , \analog_io[18] , \analog_io[17] , \analog_io[16] , \analog_io[15] , \analog_io[14] , \analog_io[13] , \analog_io[12] , \analog_io[11] , \analog_io[10] , \analog_io[9] , \analog_io[8] , \analog_io[7] , \analog_io[6] , \analog_io[5] , \analog_io[4] , \analog_io[3] , \analog_io[2] , \analog_io[1] , \analog_io[0] }), + .analog_noesd_io({ \analog_noesd_io[43] , \analog_noesd_io[42] , \analog_noesd_io[41] , \analog_noesd_io[40] , \analog_noesd_io[39] , \analog_noesd_io[38] , \analog_noesd_io[37] , \analog_noesd_io[36] , \analog_noesd_io[35] , \analog_noesd_io[34] , \analog_noesd_io[33] , \analog_noesd_io[32] , \analog_noesd_io[31] , \analog_noesd_io[30] , \analog_noesd_io[29] , \analog_noesd_io[28] , \analog_noesd_io[27] , \analog_noesd_io[26] , \analog_noesd_io[25] , \analog_noesd_io[24] , \analog_noesd_io[23] , \analog_noesd_io[22] , \analog_noesd_io[21] , \analog_noesd_io[20] , \analog_noesd_io[19] , \analog_noesd_io[18] , \analog_noesd_io[17] , \analog_noesd_io[16] , \analog_noesd_io[15] , \analog_noesd_io[14] , \analog_noesd_io[13] , \analog_noesd_io[12] , \analog_noesd_io[11] , \analog_noesd_io[10] , \analog_noesd_io[9] , \analog_noesd_io[8] , \analog_noesd_io[7] , \analog_noesd_io[6] , \analog_noesd_io[5] , \analog_noesd_io[4] , \analog_noesd_io[3] , \analog_noesd_io[2] , \analog_noesd_io[1] , \analog_noesd_io[0] }), + .gpio(gpio), + .gpio_analog_en({ \gpio_analog_en[43] , \gpio_analog_en[42] , \gpio_analog_en[41] , \gpio_analog_en[40] , \gpio_analog_en[39] , \gpio_analog_en[38] , \gpio_analog_en[37] , \gpio_analog_en[36] , \gpio_analog_en[35] , \gpio_analog_en[34] , \gpio_analog_en[33] , \gpio_analog_en[32] , \gpio_analog_en[31] , \gpio_analog_en[30] , \gpio_analog_en[29] , \gpio_analog_en[28] , \gpio_analog_en[27] , \gpio_analog_en[26] , \gpio_analog_en[25] , \gpio_analog_en[24] , \gpio_analog_en[23] , \gpio_analog_en[22] , \gpio_analog_en[21] , \gpio_analog_en[20] , \gpio_analog_en[19] , \gpio_analog_en[18] , \gpio_analog_en[17] , \gpio_analog_en[16] , \gpio_analog_en[15] , \gpio_analog_en[14] , \gpio_analog_en[13] , \gpio_analog_en[12] , \gpio_analog_en[11] , \gpio_analog_en[10] , \gpio_analog_en[9] , \gpio_analog_en[8] , \gpio_analog_en[7] , \gpio_analog_en[6] , \gpio_analog_en[5] , \gpio_analog_en[4] , \gpio_analog_en[3] , \gpio_analog_en[2] , \gpio_analog_en[1] , \gpio_analog_en[0] }), + .gpio_analog_pol({ \gpio_analog_pol[43] , \gpio_analog_pol[42] , \gpio_analog_pol[41] , \gpio_analog_pol[40] , \gpio_analog_pol[39] , \gpio_analog_pol[38] , \gpio_analog_pol[37] , \gpio_analog_pol[36] , \gpio_analog_pol[35] , \gpio_analog_pol[34] , \gpio_analog_pol[33] , \gpio_analog_pol[32] , \gpio_analog_pol[31] , \gpio_analog_pol[30] , \gpio_analog_pol[29] , \gpio_analog_pol[28] , \gpio_analog_pol[27] , \gpio_analog_pol[26] , \gpio_analog_pol[25] , \gpio_analog_pol[24] , \gpio_analog_pol[23] , \gpio_analog_pol[22] , \gpio_analog_pol[21] , \gpio_analog_pol[20] , \gpio_analog_pol[19] , \gpio_analog_pol[18] , \gpio_analog_pol[17] , \gpio_analog_pol[16] , \gpio_analog_pol[15] , \gpio_analog_pol[14] , \gpio_analog_pol[13] , \gpio_analog_pol[12] , \gpio_analog_pol[11] , \gpio_analog_pol[10] , \gpio_analog_pol[9] , \gpio_analog_pol[8] , \gpio_analog_pol[7] , \gpio_analog_pol[6] , \gpio_analog_pol[5] , \gpio_analog_pol[4] , \gpio_analog_pol[3] , \gpio_analog_pol[2] , \gpio_analog_pol[1] , \gpio_analog_pol[0] }), + .gpio_analog_sel({ \gpio_analog_sel[43] , \gpio_analog_sel[42] , \gpio_analog_sel[41] , \gpio_analog_sel[40] , \gpio_analog_sel[39] , \gpio_analog_sel[38] , \gpio_analog_sel[37] , \gpio_analog_sel[36] , \gpio_analog_sel[35] , \gpio_analog_sel[34] , \gpio_analog_sel[33] , \gpio_analog_sel[32] , \gpio_analog_sel[31] , \gpio_analog_sel[30] , \gpio_analog_sel[29] , \gpio_analog_sel[28] , \gpio_analog_sel[27] , \gpio_analog_sel[26] , \gpio_analog_sel[25] , \gpio_analog_sel[24] , \gpio_analog_sel[23] , \gpio_analog_sel[22] , \gpio_analog_sel[21] , \gpio_analog_sel[20] , \gpio_analog_sel[19] , \gpio_analog_sel[18] , \gpio_analog_sel[17] , \gpio_analog_sel[16] , \gpio_analog_sel[15] , \gpio_analog_sel[14] , \gpio_analog_sel[13] , \gpio_analog_sel[12] , \gpio_analog_sel[11] , \gpio_analog_sel[10] , \gpio_analog_sel[9] , \gpio_analog_sel[8] , \gpio_analog_sel[7] , \gpio_analog_sel[6] , \gpio_analog_sel[5] , \gpio_analog_sel[4] , \gpio_analog_sel[3] , \gpio_analog_sel[2] , \gpio_analog_sel[1] , \gpio_analog_sel[0] }), + .gpio_dm0({ \gpio_dm0[43] , \gpio_dm0[42] , \gpio_dm0[41] , \gpio_dm0[40] , \gpio_dm0[39] , \gpio_dm0[38] , \gpio_dm0[37] , \gpio_dm0[36] , \gpio_dm0[35] , \gpio_dm0[34] , \gpio_dm0[33] , \gpio_dm0[32] , \gpio_dm0[31] , \gpio_dm0[30] , \gpio_dm0[29] , \gpio_dm0[28] , \gpio_dm0[27] , \gpio_dm0[26] , \gpio_dm0[25] , \gpio_dm0[24] , \gpio_dm0[23] , \gpio_dm0[22] , \gpio_dm0[21] , \gpio_dm0[20] , \gpio_dm0[19] , \gpio_dm0[18] , \gpio_dm0[17] , \gpio_dm0[16] , \gpio_dm0[15] , \gpio_dm0[14] , \gpio_dm0[13] , \gpio_dm0[12] , \gpio_dm0[11] , \gpio_dm0[10] , \gpio_dm0[9] , \gpio_dm0[8] , \gpio_dm0[7] , \gpio_dm0[6] , \gpio_dm0[5] , \gpio_dm0[4] , \gpio_dm0[3] , \gpio_dm0[2] , \gpio_dm0[1] , \gpio_dm0[0] }), + .gpio_dm1({ \gpio_dm1[43] , \gpio_dm1[42] , \gpio_dm1[41] , \gpio_dm1[40] , \gpio_dm1[39] , \gpio_dm1[38] , \gpio_dm1[37] , \gpio_dm1[36] , \gpio_dm1[35] , \gpio_dm1[34] , \gpio_dm1[33] , \gpio_dm1[32] , \gpio_dm1[31] , \gpio_dm1[30] , \gpio_dm1[29] , \gpio_dm1[28] , \gpio_dm1[27] , \gpio_dm1[26] , \gpio_dm1[25] , \gpio_dm1[24] , \gpio_dm1[23] , \gpio_dm1[22] , \gpio_dm1[21] , \gpio_dm1[20] , \gpio_dm1[19] , \gpio_dm1[18] , \gpio_dm1[17] , \gpio_dm1[16] , \gpio_dm1[15] , \gpio_dm1[14] , \gpio_dm1[13] , \gpio_dm1[12] , \gpio_dm1[11] , \gpio_dm1[10] , \gpio_dm1[9] , \gpio_dm1[8] , \gpio_dm1[7] , \gpio_dm1[6] , \gpio_dm1[5] , \gpio_dm1[4] , \gpio_dm1[3] , \gpio_dm1[2] , \gpio_dm1[1] , \gpio_dm1[0] }), + .gpio_dm2({ \gpio_dm2[43] , \gpio_dm2[42] , \gpio_dm2[41] , \gpio_dm2[40] , \gpio_dm2[39] , \gpio_dm2[38] , \gpio_dm2[37] , \gpio_dm2[36] , \gpio_dm2[35] , \gpio_dm2[34] , \gpio_dm2[33] , \gpio_dm2[32] , \gpio_dm2[31] , \gpio_dm2[30] , \gpio_dm2[29] , \gpio_dm2[28] , \gpio_dm2[27] , \gpio_dm2[26] , \gpio_dm2[25] , \gpio_dm2[24] , \gpio_dm2[23] , \gpio_dm2[22] , \gpio_dm2[21] , \gpio_dm2[20] , \gpio_dm2[19] , \gpio_dm2[18] , \gpio_dm2[17] , \gpio_dm2[16] , \gpio_dm2[15] , \gpio_dm2[14] , \gpio_dm2[13] , \gpio_dm2[12] , \gpio_dm2[11] , \gpio_dm2[10] , \gpio_dm2[9] , \gpio_dm2[8] , \gpio_dm2[7] , \gpio_dm2[6] , \gpio_dm2[5] , \gpio_dm2[4] , \gpio_dm2[3] , \gpio_dm2[2] , \gpio_dm2[1] , \gpio_dm2[0] }), + .gpio_holdover({ \gpio_holdover[43] , \gpio_holdover[42] , \gpio_holdover[41] , \gpio_holdover[40] , \gpio_holdover[39] , \gpio_holdover[38] , \gpio_holdover[37] , \gpio_holdover[36] , \gpio_holdover[35] , \gpio_holdover[34] , \gpio_holdover[33] , \gpio_holdover[32] , \gpio_holdover[31] , \gpio_holdover[30] , \gpio_holdover[29] , \gpio_holdover[28] , \gpio_holdover[27] , \gpio_holdover[26] , \gpio_holdover[25] , \gpio_holdover[24] , \gpio_holdover[23] , \gpio_holdover[22] , \gpio_holdover[21] , \gpio_holdover[20] , \gpio_holdover[19] , \gpio_holdover[18] , \gpio_holdover[17] , \gpio_holdover[16] , \gpio_holdover[15] , \gpio_holdover[14] , \gpio_holdover[13] , \gpio_holdover[12] , \gpio_holdover[11] , \gpio_holdover[10] , \gpio_holdover[9] , \gpio_holdover[8] , \gpio_holdover[7] , \gpio_holdover[6] , \gpio_holdover[5] , \gpio_holdover[4] , \gpio_holdover[3] , \gpio_holdover[2] , \gpio_holdover[1] , \gpio_holdover[0] }), + .gpio_ib_mode_sel({ \gpio_ib_mode_sel[43] , \gpio_ib_mode_sel[42] , \gpio_ib_mode_sel[41] , \gpio_ib_mode_sel[40] , \gpio_ib_mode_sel[39] , \gpio_ib_mode_sel[38] , \gpio_ib_mode_sel[37] , \gpio_ib_mode_sel[36] , \gpio_ib_mode_sel[35] , \gpio_ib_mode_sel[34] , \gpio_ib_mode_sel[33] , \gpio_ib_mode_sel[32] , \gpio_ib_mode_sel[31] , \gpio_ib_mode_sel[30] , \gpio_ib_mode_sel[29] , \gpio_ib_mode_sel[28] , \gpio_ib_mode_sel[27] , \gpio_ib_mode_sel[26] , \gpio_ib_mode_sel[25] , \gpio_ib_mode_sel[24] , \gpio_ib_mode_sel[23] , \gpio_ib_mode_sel[22] , \gpio_ib_mode_sel[21] , \gpio_ib_mode_sel[20] , \gpio_ib_mode_sel[19] , \gpio_ib_mode_sel[18] , \gpio_ib_mode_sel[17] , \gpio_ib_mode_sel[16] , \gpio_ib_mode_sel[15] , \gpio_ib_mode_sel[14] , \gpio_ib_mode_sel[13] , \gpio_ib_mode_sel[12] , \gpio_ib_mode_sel[11] , \gpio_ib_mode_sel[10] , \gpio_ib_mode_sel[9] , \gpio_ib_mode_sel[8] , \gpio_ib_mode_sel[7] , \gpio_ib_mode_sel[6] , \gpio_ib_mode_sel[5] , \gpio_ib_mode_sel[4] , \gpio_ib_mode_sel[3] , \gpio_ib_mode_sel[2] , \gpio_ib_mode_sel[1] , \gpio_ib_mode_sel[0] }), + .gpio_in({ \gpio_in[43] , \gpio_in[42] , \gpio_in[41] , \gpio_in[40] , \gpio_in[39] , \gpio_in[38] , \gpio_in[37] , \gpio_in[36] , \gpio_in[35] , \gpio_in[34] , \gpio_in[33] , \gpio_in[32] , \gpio_in[31] , \gpio_in[30] , \gpio_in[29] , \gpio_in[28] , \gpio_in[27] , \gpio_in[26] , \gpio_in[25] , \gpio_in[24] , \gpio_in[23] , \gpio_in[22] , \gpio_in[21] , \gpio_in[20] , \gpio_in[19] , \gpio_in[18] , \gpio_in[17] , \gpio_in[16] , \gpio_in[15] , \gpio_in[14] , \gpio_in[13] , \gpio_in[12] , \gpio_in[11] , \gpio_in[10] , \gpio_in[9] , \gpio_in[8] , \gpio_in[7] , \gpio_in[6] , \gpio_in[5] , \gpio_in[4] , \gpio_in[3] , \gpio_in[2] , \gpio_in[1] , \gpio_in[0] }), + .gpio_in_h({ \gpio_in_h[43] , \gpio_in_h[42] , \gpio_in_h[41] , \gpio_in_h[40] , \gpio_in_h[39] , \gpio_in_h[38] , \gpio_in_h[37] , \gpio_in_h[36] , \gpio_in_h[35] , \gpio_in_h[34] , \gpio_in_h[33] , \gpio_in_h[32] , \gpio_in_h[31] , \gpio_in_h[30] , \gpio_in_h[29] , \gpio_in_h[28] , \gpio_in_h[27] , \gpio_in_h[26] , \gpio_in_h[25] , \gpio_in_h[24] , \gpio_in_h[23] , \gpio_in_h[22] , \gpio_in_h[21] , \gpio_in_h[20] , \gpio_in_h[19] , \gpio_in_h[18] , \gpio_in_h[17] , \gpio_in_h[16] , \gpio_in_h[15] , \gpio_in_h[14] , \gpio_in_h[13] , \gpio_in_h[12] , \gpio_in_h[11] , \gpio_in_h[10] , \gpio_in_h[9] , \gpio_in_h[8] , \gpio_in_h[7] , \gpio_in_h[6] , \gpio_in_h[5] , \gpio_in_h[4] , \gpio_in_h[3] , \gpio_in_h[2] , \gpio_in_h[1] , \gpio_in_h[0] }), + .gpio_inp_dis({ \gpio_inp_dis[43] , \gpio_inp_dis[42] , \gpio_inp_dis[41] , \gpio_inp_dis[40] , \gpio_inp_dis[39] , \gpio_inp_dis[38] , \gpio_inp_dis[37] , \gpio_inp_dis[36] , \gpio_inp_dis[35] , \gpio_inp_dis[34] , \gpio_inp_dis[33] , \gpio_inp_dis[32] , \gpio_inp_dis[31] , \gpio_inp_dis[30] , \gpio_inp_dis[29] , \gpio_inp_dis[28] , \gpio_inp_dis[27] , \gpio_inp_dis[26] , \gpio_inp_dis[25] , \gpio_inp_dis[24] , \gpio_inp_dis[23] , \gpio_inp_dis[22] , \gpio_inp_dis[21] , \gpio_inp_dis[20] , \gpio_inp_dis[19] , \gpio_inp_dis[18] , \gpio_inp_dis[17] , \gpio_inp_dis[16] , \gpio_inp_dis[15] , \gpio_inp_dis[14] , \gpio_inp_dis[13] , \gpio_inp_dis[12] , \gpio_inp_dis[11] , \gpio_inp_dis[10] , \gpio_inp_dis[9] , \gpio_inp_dis[8] , \gpio_inp_dis[7] , \gpio_inp_dis[6] , \gpio_inp_dis[5] , \gpio_inp_dis[4] , \gpio_inp_dis[3] , \gpio_inp_dis[2] , \gpio_inp_dis[1] , \gpio_inp_dis[0] }), + .gpio_loopback_one({ \gpio_loopback_one[43] , \gpio_loopback_one[42] , \gpio_loopback_one[41] , \gpio_loopback_one[40] , \gpio_loopback_one[39] , \gpio_loopback_one[38] , \gpio_loopback_one[37] , \gpio_loopback_one[36] , \gpio_loopback_one[35] , \gpio_loopback_one[34] , \gpio_loopback_one[33] , \gpio_loopback_one[32] , \gpio_loopback_one[31] , \gpio_loopback_one[30] , \gpio_loopback_one[29] , \gpio_loopback_one[28] , \gpio_loopback_one[27] , \gpio_loopback_one[26] , \gpio_loopback_one[25] , \gpio_loopback_one[24] , \gpio_loopback_one[23] , \gpio_loopback_one[22] , \gpio_loopback_one[21] , \gpio_loopback_one[20] , \gpio_loopback_one[19] , \gpio_loopback_one[18] , \gpio_loopback_one[17] , \gpio_loopback_one[16] , \gpio_loopback_one[15] , \gpio_loopback_one[14] , \gpio_loopback_one[13] , \gpio_loopback_one[12] , \gpio_loopback_one[11] , \gpio_loopback_one[10] , \gpio_loopback_one[9] , \gpio_loopback_one[8] , \gpio_loopback_one[7] , \gpio_loopback_one[6] , \gpio_loopback_one[5] , \gpio_loopback_one[4] , \gpio_loopback_one[3] , \gpio_loopback_one[2] , \gpio_loopback_one[1] , \gpio_loopback_one[0] }), + .gpio_loopback_zero({ \gpio_loopback_zero[43] , \gpio_loopback_zero[42] , \gpio_loopback_zero[41] , \gpio_loopback_zero[40] , \gpio_loopback_zero[39] , \gpio_loopback_zero[38] , \gpio_loopback_zero[37] , \gpio_loopback_zero[36] , \gpio_loopback_zero[35] , \gpio_loopback_zero[34] , \gpio_loopback_zero[33] , \gpio_loopback_zero[32] , \gpio_loopback_zero[31] , \gpio_loopback_zero[30] , \gpio_loopback_zero[29] , \gpio_loopback_zero[28] , \gpio_loopback_zero[27] , \gpio_loopback_zero[26] , \gpio_loopback_zero[25] , \gpio_loopback_zero[24] , \gpio_loopback_zero[23] , \gpio_loopback_zero[22] , \gpio_loopback_zero[21] , \gpio_loopback_zero[20] , \gpio_loopback_zero[19] , \gpio_loopback_zero[18] , \gpio_loopback_zero[17] , \gpio_loopback_zero[16] , \gpio_loopback_zero[15] , \gpio_loopback_zero[14] , \gpio_loopback_zero[13] , \gpio_loopback_zero[12] , \gpio_loopback_zero[11] , \gpio_loopback_zero[10] , \gpio_loopback_zero[9] , \gpio_loopback_zero[8] , \gpio_loopback_zero[7] , \gpio_loopback_zero[6] , \gpio_loopback_zero[5] , \gpio_loopback_zero[4] , \gpio_loopback_zero[3] , \gpio_loopback_zero[2] , \gpio_loopback_zero[1] , \gpio_loopback_zero[0] }), + .gpio_oeb({ \gpio_oeb[43] , \gpio_oeb[42] , \gpio_oeb[41] , \gpio_oeb[40] , \gpio_oeb[39] , \gpio_oeb[38] , \gpio_oeb[37] , \gpio_oeb[36] , \gpio_oeb[35] , \gpio_oeb[34] , \gpio_oeb[33] , \gpio_oeb[32] , \gpio_oeb[31] , \gpio_oeb[30] , \gpio_oeb[29] , \gpio_oeb[28] , \gpio_oeb[27] , \gpio_oeb[26] , \gpio_oeb[25] , \gpio_oeb[24] , \gpio_oeb[23] , \gpio_oeb[22] , \gpio_oeb[21] , \gpio_oeb[20] , \gpio_oeb[19] , \gpio_oeb[18] , \gpio_oeb[17] , \gpio_oeb[16] , \gpio_oeb[15] , \gpio_oeb[14] , \gpio_oeb[13] , \gpio_oeb[12] , \gpio_oeb[11] , \gpio_oeb[10] , \gpio_oeb[9] , \gpio_oeb[8] , \gpio_oeb[7] , \gpio_oeb[6] , \gpio_oeb[5] , \gpio_oeb[4] , \gpio_oeb[3] , \gpio_oeb[2] , \gpio_oeb[1] , \gpio_oeb[0] }), + .gpio_out({ \gpio_out[43] , \gpio_out[42] , \gpio_out[41] , \gpio_out[40] , \gpio_out[39] , \gpio_out[38] , \gpio_out[37] , \gpio_out[36] , \gpio_out[35] , \gpio_out[34] , \gpio_out[33] , \gpio_out[32] , \gpio_out[31] , \gpio_out[30] , \gpio_out[29] , \gpio_out[28] , \gpio_out[27] , \gpio_out[26] , \gpio_out[25] , \gpio_out[24] , \gpio_out[23] , \gpio_out[22] , \gpio_out[21] , \gpio_out[20] , \gpio_out[19] , \gpio_out[18] , \gpio_out[17] , \gpio_out[16] , \gpio_out[15] , \gpio_out[14] , \gpio_out[13] , \gpio_out[12] , \gpio_out[11] , \gpio_out[10] , \gpio_out[9] , \gpio_out[8] , \gpio_out[7] , \gpio_out[6] , \gpio_out[5] , \gpio_out[4] , \gpio_out[3] , \gpio_out[2] , \gpio_out[1] , \gpio_out[0] }), + .gpio_slow_sel({ \gpio_slow_sel[43] , \gpio_slow_sel[42] , \gpio_slow_sel[41] , \gpio_slow_sel[40] , \gpio_slow_sel[39] , \gpio_slow_sel[38] , \gpio_slow_sel[37] , \gpio_slow_sel[36] , \gpio_slow_sel[35] , \gpio_slow_sel[34] , \gpio_slow_sel[33] , \gpio_slow_sel[32] , \gpio_slow_sel[31] , \gpio_slow_sel[30] , \gpio_slow_sel[29] , \gpio_slow_sel[28] , \gpio_slow_sel[27] , \gpio_slow_sel[26] , \gpio_slow_sel[25] , \gpio_slow_sel[24] , \gpio_slow_sel[23] , \gpio_slow_sel[22] , \gpio_slow_sel[21] , \gpio_slow_sel[20] , \gpio_slow_sel[19] , \gpio_slow_sel[18] , \gpio_slow_sel[17] , \gpio_slow_sel[16] , \gpio_slow_sel[15] , \gpio_slow_sel[14] , \gpio_slow_sel[13] , \gpio_slow_sel[12] , \gpio_slow_sel[11] , \gpio_slow_sel[10] , \gpio_slow_sel[9] , \gpio_slow_sel[8] , \gpio_slow_sel[7] , \gpio_slow_sel[6] , \gpio_slow_sel[5] , \gpio_slow_sel[4] , \gpio_slow_sel[3] , \gpio_slow_sel[2] , \gpio_slow_sel[1] , \gpio_slow_sel[0] }), + .gpio_vtrip_sel({ \gpio_vtrip_sel[43] , \gpio_vtrip_sel[42] , \gpio_vtrip_sel[41] , \gpio_vtrip_sel[40] , \gpio_vtrip_sel[39] , \gpio_vtrip_sel[38] , \gpio_vtrip_sel[37] , \gpio_vtrip_sel[36] , \gpio_vtrip_sel[35] , \gpio_vtrip_sel[34] , \gpio_vtrip_sel[33] , \gpio_vtrip_sel[32] , \gpio_vtrip_sel[31] , \gpio_vtrip_sel[30] , \gpio_vtrip_sel[29] , \gpio_vtrip_sel[28] , \gpio_vtrip_sel[27] , \gpio_vtrip_sel[26] , \gpio_vtrip_sel[25] , \gpio_vtrip_sel[24] , \gpio_vtrip_sel[23] , \gpio_vtrip_sel[22] , \gpio_vtrip_sel[21] , \gpio_vtrip_sel[20] , \gpio_vtrip_sel[19] , \gpio_vtrip_sel[18] , \gpio_vtrip_sel[17] , \gpio_vtrip_sel[16] , \gpio_vtrip_sel[15] , \gpio_vtrip_sel[14] , \gpio_vtrip_sel[13] , \gpio_vtrip_sel[12] , \gpio_vtrip_sel[11] , \gpio_vtrip_sel[10] , \gpio_vtrip_sel[9] , \gpio_vtrip_sel[8] , \gpio_vtrip_sel[7] , \gpio_vtrip_sel[6] , \gpio_vtrip_sel[5] , \gpio_vtrip_sel[4] , \gpio_vtrip_sel[3] , \gpio_vtrip_sel[2] , \gpio_vtrip_sel[1] , \gpio_vtrip_sel[0] }), + .mask_rev({ \mask_rev[31] , \mask_rev[30] , \mask_rev[29] , \mask_rev[28] , \mask_rev[27] , \mask_rev[26] , \mask_rev[25] , \mask_rev[24] , \mask_rev[23] , \mask_rev[22] , \mask_rev[21] , \mask_rev[20] , \mask_rev[19] , \mask_rev[18] , \mask_rev[17] , \mask_rev[16] , \mask_rev[15] , \mask_rev[14] , \mask_rev[13] , \mask_rev[12] , \mask_rev[11] , \mask_rev[10] , \mask_rev[9] , \mask_rev[8] , \mask_rev[7] , \mask_rev[6] , \mask_rev[5] , \mask_rev[4] , \mask_rev[3] , \mask_rev[2] , \mask_rev[1] , \mask_rev[0] }), + .por_l(por_l), + .porb_h(porb_h), + .porb_l(porb_l), + .resetb_h(rstb_h), + .resetb_l(rstb_l), + .resetb_pad(resetb), + .vccd(vccd_core), + .vccd1(vccd1_core), + .vccd1_pad(vccd1), + .vccd2(vccd2_core), + .vccd2_pad(vccd2), + .vccd_pad(vccd), + .vdda(vdda_core), + .vdda1(vdda1_core), + .vdda1_pad(vdda1), + .vdda1_pad2(vdda1_2), + .vdda2(vdda2_core), + .vdda2_pad(vdda2), + .vdda_pad(vdda), + .vddio(vddio_core), + .vddio_pad(vddio), + .vddio_pad2(vddio_2), + .vssa(vssa_core), + .vssa1(vssa1_core), + .vssa1_pad(vssa1), + .vssa1_pad2(vssa1_2), + .vssa2(vssa2_core), + .vssa2_pad(vssa2), + .vssa_pad(vssa), + .vssd(vssd_core), + .vssd1(vssd1_core), + .vssd1_pad(vssd1), + .vssd2(vssd2_core), + .vssd2_pad(vssd2), + .vssd_pad(vssd), + .vssio(vssio_core), + .vssio_pad(vssio), + .vssio_pad2(vssio_2) + ); + openframe_project_wrapper user_project ( + .analog_io({ \analog_io[43] , \analog_io[42] , \analog_io[41] , \analog_io[40] , \analog_io[39] , \analog_io[38] , \analog_io[37] , \analog_io[36] , \analog_io[35] , \analog_io[34] , \analog_io[33] , \analog_io[32] , \analog_io[31] , \analog_io[30] , \analog_io[29] , \analog_io[28] , \analog_io[27] , \analog_io[26] , \analog_io[25] , \analog_io[24] , \analog_io[23] , \analog_io[22] , \analog_io[21] , \analog_io[20] , \analog_io[19] , \analog_io[18] , \analog_io[17] , \analog_io[16] , \analog_io[15] , \analog_io[14] , \analog_io[13] , \analog_io[12] , \analog_io[11] , \analog_io[10] , \analog_io[9] , \analog_io[8] , \analog_io[7] , \analog_io[6] , \analog_io[5] , \analog_io[4] , \analog_io[3] , \analog_io[2] , \analog_io[1] , \analog_io[0] }), + .analog_noesd_io({ \analog_noesd_io[43] , \analog_noesd_io[42] , \analog_noesd_io[41] , \analog_noesd_io[40] , \analog_noesd_io[39] , \analog_noesd_io[38] , \analog_noesd_io[37] , \analog_noesd_io[36] , \analog_noesd_io[35] , \analog_noesd_io[34] , \analog_noesd_io[33] , \analog_noesd_io[32] , \analog_noesd_io[31] , \analog_noesd_io[30] , \analog_noesd_io[29] , \analog_noesd_io[28] , \analog_noesd_io[27] , \analog_noesd_io[26] , \analog_noesd_io[25] , \analog_noesd_io[24] , \analog_noesd_io[23] , \analog_noesd_io[22] , \analog_noesd_io[21] , \analog_noesd_io[20] , \analog_noesd_io[19] , \analog_noesd_io[18] , \analog_noesd_io[17] , \analog_noesd_io[16] , \analog_noesd_io[15] , \analog_noesd_io[14] , \analog_noesd_io[13] , \analog_noesd_io[12] , \analog_noesd_io[11] , \analog_noesd_io[10] , \analog_noesd_io[9] , \analog_noesd_io[8] , \analog_noesd_io[7] , \analog_noesd_io[6] , \analog_noesd_io[5] , \analog_noesd_io[4] , \analog_noesd_io[3] , \analog_noesd_io[2] , \analog_noesd_io[1] , \analog_noesd_io[0] }), + .gpio_analog_en({ \gpio_analog_en[43] , \gpio_analog_en[42] , \gpio_analog_en[41] , \gpio_analog_en[40] , \gpio_analog_en[39] , \gpio_analog_en[38] , \gpio_analog_en[37] , \gpio_analog_en[36] , \gpio_analog_en[35] , \gpio_analog_en[34] , \gpio_analog_en[33] , \gpio_analog_en[32] , \gpio_analog_en[31] , \gpio_analog_en[30] , \gpio_analog_en[29] , \gpio_analog_en[28] , \gpio_analog_en[27] , \gpio_analog_en[26] , \gpio_analog_en[25] , \gpio_analog_en[24] , \gpio_analog_en[23] , \gpio_analog_en[22] , \gpio_analog_en[21] , \gpio_analog_en[20] , \gpio_analog_en[19] , \gpio_analog_en[18] , \gpio_analog_en[17] , \gpio_analog_en[16] , \gpio_analog_en[15] , \gpio_analog_en[14] , \gpio_analog_en[13] , \gpio_analog_en[12] , \gpio_analog_en[11] , \gpio_analog_en[10] , \gpio_analog_en[9] , \gpio_analog_en[8] , \gpio_analog_en[7] , \gpio_analog_en[6] , \gpio_analog_en[5] , \gpio_analog_en[4] , \gpio_analog_en[3] , \gpio_analog_en[2] , \gpio_analog_en[1] , \gpio_analog_en[0] }), + .gpio_analog_pol({ \gpio_analog_pol[43] , \gpio_analog_pol[42] , \gpio_analog_pol[41] , \gpio_analog_pol[40] , \gpio_analog_pol[39] , \gpio_analog_pol[38] , \gpio_analog_pol[37] , \gpio_analog_pol[36] , \gpio_analog_pol[35] , \gpio_analog_pol[34] , \gpio_analog_pol[33] , \gpio_analog_pol[32] , \gpio_analog_pol[31] , \gpio_analog_pol[30] , \gpio_analog_pol[29] , \gpio_analog_pol[28] , \gpio_analog_pol[27] , \gpio_analog_pol[26] , \gpio_analog_pol[25] , \gpio_analog_pol[24] , \gpio_analog_pol[23] , \gpio_analog_pol[22] , \gpio_analog_pol[21] , \gpio_analog_pol[20] , \gpio_analog_pol[19] , \gpio_analog_pol[18] , \gpio_analog_pol[17] , \gpio_analog_pol[16] , \gpio_analog_pol[15] , \gpio_analog_pol[14] , \gpio_analog_pol[13] , \gpio_analog_pol[12] , \gpio_analog_pol[11] , \gpio_analog_pol[10] , \gpio_analog_pol[9] , \gpio_analog_pol[8] , \gpio_analog_pol[7] , \gpio_analog_pol[6] , \gpio_analog_pol[5] , \gpio_analog_pol[4] , \gpio_analog_pol[3] , \gpio_analog_pol[2] , \gpio_analog_pol[1] , \gpio_analog_pol[0] }), + .gpio_analog_sel({ \gpio_analog_sel[43] , \gpio_analog_sel[42] , \gpio_analog_sel[41] , \gpio_analog_sel[40] , \gpio_analog_sel[39] , \gpio_analog_sel[38] , \gpio_analog_sel[37] , \gpio_analog_sel[36] , \gpio_analog_sel[35] , \gpio_analog_sel[34] , \gpio_analog_sel[33] , \gpio_analog_sel[32] , \gpio_analog_sel[31] , \gpio_analog_sel[30] , \gpio_analog_sel[29] , \gpio_analog_sel[28] , \gpio_analog_sel[27] , \gpio_analog_sel[26] , \gpio_analog_sel[25] , \gpio_analog_sel[24] , \gpio_analog_sel[23] , \gpio_analog_sel[22] , \gpio_analog_sel[21] , \gpio_analog_sel[20] , \gpio_analog_sel[19] , \gpio_analog_sel[18] , \gpio_analog_sel[17] , \gpio_analog_sel[16] , \gpio_analog_sel[15] , \gpio_analog_sel[14] , \gpio_analog_sel[13] , \gpio_analog_sel[12] , \gpio_analog_sel[11] , \gpio_analog_sel[10] , \gpio_analog_sel[9] , \gpio_analog_sel[8] , \gpio_analog_sel[7] , \gpio_analog_sel[6] , \gpio_analog_sel[5] , \gpio_analog_sel[4] , \gpio_analog_sel[3] , \gpio_analog_sel[2] , \gpio_analog_sel[1] , \gpio_analog_sel[0] }), + .gpio_dm0({ \gpio_dm0[43] , \gpio_dm0[42] , \gpio_dm0[41] , \gpio_dm0[40] , \gpio_dm0[39] , \gpio_dm0[38] , \gpio_dm0[37] , \gpio_dm0[36] , \gpio_dm0[35] , \gpio_dm0[34] , \gpio_dm0[33] , \gpio_dm0[32] , \gpio_dm0[31] , \gpio_dm0[30] , \gpio_dm0[29] , \gpio_dm0[28] , \gpio_dm0[27] , \gpio_dm0[26] , \gpio_dm0[25] , \gpio_dm0[24] , \gpio_dm0[23] , \gpio_dm0[22] , \gpio_dm0[21] , \gpio_dm0[20] , \gpio_dm0[19] , \gpio_dm0[18] , \gpio_dm0[17] , \gpio_dm0[16] , \gpio_dm0[15] , \gpio_dm0[14] , \gpio_dm0[13] , \gpio_dm0[12] , \gpio_dm0[11] , \gpio_dm0[10] , \gpio_dm0[9] , \gpio_dm0[8] , \gpio_dm0[7] , \gpio_dm0[6] , \gpio_dm0[5] , \gpio_dm0[4] , \gpio_dm0[3] , \gpio_dm0[2] , \gpio_dm0[1] , \gpio_dm0[0] }), + .gpio_dm1({ \gpio_dm1[43] , \gpio_dm1[42] , \gpio_dm1[41] , \gpio_dm1[40] , \gpio_dm1[39] , \gpio_dm1[38] , \gpio_dm1[37] , \gpio_dm1[36] , \gpio_dm1[35] , \gpio_dm1[34] , \gpio_dm1[33] , \gpio_dm1[32] , \gpio_dm1[31] , \gpio_dm1[30] , \gpio_dm1[29] , \gpio_dm1[28] , \gpio_dm1[27] , \gpio_dm1[26] , \gpio_dm1[25] , \gpio_dm1[24] , \gpio_dm1[23] , \gpio_dm1[22] , \gpio_dm1[21] , \gpio_dm1[20] , \gpio_dm1[19] , \gpio_dm1[18] , \gpio_dm1[17] , \gpio_dm1[16] , \gpio_dm1[15] , \gpio_dm1[14] , \gpio_dm1[13] , \gpio_dm1[12] , \gpio_dm1[11] , \gpio_dm1[10] , \gpio_dm1[9] , \gpio_dm1[8] , \gpio_dm1[7] , \gpio_dm1[6] , \gpio_dm1[5] , \gpio_dm1[4] , \gpio_dm1[3] , \gpio_dm1[2] , \gpio_dm1[1] , \gpio_dm1[0] }), + .gpio_dm2({ \gpio_dm2[43] , \gpio_dm2[42] , \gpio_dm2[41] , \gpio_dm2[40] , \gpio_dm2[39] , \gpio_dm2[38] , \gpio_dm2[37] , \gpio_dm2[36] , \gpio_dm2[35] , \gpio_dm2[34] , \gpio_dm2[33] , \gpio_dm2[32] , \gpio_dm2[31] , \gpio_dm2[30] , \gpio_dm2[29] , \gpio_dm2[28] , \gpio_dm2[27] , \gpio_dm2[26] , \gpio_dm2[25] , \gpio_dm2[24] , \gpio_dm2[23] , \gpio_dm2[22] , \gpio_dm2[21] , \gpio_dm2[20] , \gpio_dm2[19] , \gpio_dm2[18] , \gpio_dm2[17] , \gpio_dm2[16] , \gpio_dm2[15] , \gpio_dm2[14] , \gpio_dm2[13] , \gpio_dm2[12] , \gpio_dm2[11] , \gpio_dm2[10] , \gpio_dm2[9] , \gpio_dm2[8] , \gpio_dm2[7] , \gpio_dm2[6] , \gpio_dm2[5] , \gpio_dm2[4] , \gpio_dm2[3] , \gpio_dm2[2] , \gpio_dm2[1] , \gpio_dm2[0] }), + .gpio_holdover({ \gpio_holdover[43] , \gpio_holdover[42] , \gpio_holdover[41] , \gpio_holdover[40] , \gpio_holdover[39] , \gpio_holdover[38] , \gpio_holdover[37] , \gpio_holdover[36] , \gpio_holdover[35] , \gpio_holdover[34] , \gpio_holdover[33] , \gpio_holdover[32] , \gpio_holdover[31] , \gpio_holdover[30] , \gpio_holdover[29] , \gpio_holdover[28] , \gpio_holdover[27] , \gpio_holdover[26] , \gpio_holdover[25] , \gpio_holdover[24] , \gpio_holdover[23] , \gpio_holdover[22] , \gpio_holdover[21] , \gpio_holdover[20] , \gpio_holdover[19] , \gpio_holdover[18] , \gpio_holdover[17] , \gpio_holdover[16] , \gpio_holdover[15] , \gpio_holdover[14] , \gpio_holdover[13] , \gpio_holdover[12] , \gpio_holdover[11] , \gpio_holdover[10] , \gpio_holdover[9] , \gpio_holdover[8] , \gpio_holdover[7] , \gpio_holdover[6] , \gpio_holdover[5] , \gpio_holdover[4] , \gpio_holdover[3] , \gpio_holdover[2] , \gpio_holdover[1] , \gpio_holdover[0] }), + .gpio_ib_mode_sel({ \gpio_ib_mode_sel[43] , \gpio_ib_mode_sel[42] , \gpio_ib_mode_sel[41] , \gpio_ib_mode_sel[40] , \gpio_ib_mode_sel[39] , \gpio_ib_mode_sel[38] , \gpio_ib_mode_sel[37] , \gpio_ib_mode_sel[36] , \gpio_ib_mode_sel[35] , \gpio_ib_mode_sel[34] , \gpio_ib_mode_sel[33] , \gpio_ib_mode_sel[32] , \gpio_ib_mode_sel[31] , \gpio_ib_mode_sel[30] , \gpio_ib_mode_sel[29] , \gpio_ib_mode_sel[28] , \gpio_ib_mode_sel[27] , \gpio_ib_mode_sel[26] , \gpio_ib_mode_sel[25] , \gpio_ib_mode_sel[24] , \gpio_ib_mode_sel[23] , \gpio_ib_mode_sel[22] , \gpio_ib_mode_sel[21] , \gpio_ib_mode_sel[20] , \gpio_ib_mode_sel[19] , \gpio_ib_mode_sel[18] , \gpio_ib_mode_sel[17] , \gpio_ib_mode_sel[16] , \gpio_ib_mode_sel[15] , \gpio_ib_mode_sel[14] , \gpio_ib_mode_sel[13] , \gpio_ib_mode_sel[12] , \gpio_ib_mode_sel[11] , \gpio_ib_mode_sel[10] , \gpio_ib_mode_sel[9] , \gpio_ib_mode_sel[8] , \gpio_ib_mode_sel[7] , \gpio_ib_mode_sel[6] , \gpio_ib_mode_sel[5] , \gpio_ib_mode_sel[4] , \gpio_ib_mode_sel[3] , \gpio_ib_mode_sel[2] , \gpio_ib_mode_sel[1] , \gpio_ib_mode_sel[0] }), + .gpio_in({ \gpio_in[43] , \gpio_in[42] , \gpio_in[41] , \gpio_in[40] , \gpio_in[39] , \gpio_in[38] , \gpio_in[37] , \gpio_in[36] , \gpio_in[35] , \gpio_in[34] , \gpio_in[33] , \gpio_in[32] , \gpio_in[31] , \gpio_in[30] , \gpio_in[29] , \gpio_in[28] , \gpio_in[27] , \gpio_in[26] , \gpio_in[25] , \gpio_in[24] , \gpio_in[23] , \gpio_in[22] , \gpio_in[21] , \gpio_in[20] , \gpio_in[19] , \gpio_in[18] , \gpio_in[17] , \gpio_in[16] , \gpio_in[15] , \gpio_in[14] , \gpio_in[13] , \gpio_in[12] , \gpio_in[11] , \gpio_in[10] , \gpio_in[9] , \gpio_in[8] , \gpio_in[7] , \gpio_in[6] , \gpio_in[5] , \gpio_in[4] , \gpio_in[3] , \gpio_in[2] , \gpio_in[1] , \gpio_in[0] }), + .gpio_in_h({ \gpio_in_h[43] , \gpio_in_h[42] , \gpio_in_h[41] , \gpio_in_h[40] , \gpio_in_h[39] , \gpio_in_h[38] , \gpio_in_h[37] , \gpio_in_h[36] , \gpio_in_h[35] , \gpio_in_h[34] , \gpio_in_h[33] , \gpio_in_h[32] , \gpio_in_h[31] , \gpio_in_h[30] , \gpio_in_h[29] , \gpio_in_h[28] , \gpio_in_h[27] , \gpio_in_h[26] , \gpio_in_h[25] , \gpio_in_h[24] , \gpio_in_h[23] , \gpio_in_h[22] , \gpio_in_h[21] , \gpio_in_h[20] , \gpio_in_h[19] , \gpio_in_h[18] , \gpio_in_h[17] , \gpio_in_h[16] , \gpio_in_h[15] , \gpio_in_h[14] , \gpio_in_h[13] , \gpio_in_h[12] , \gpio_in_h[11] , \gpio_in_h[10] , \gpio_in_h[9] , \gpio_in_h[8] , \gpio_in_h[7] , \gpio_in_h[6] , \gpio_in_h[5] , \gpio_in_h[4] , \gpio_in_h[3] , \gpio_in_h[2] , \gpio_in_h[1] , \gpio_in_h[0] }), + .gpio_inp_dis({ \gpio_inp_dis[43] , \gpio_inp_dis[42] , \gpio_inp_dis[41] , \gpio_inp_dis[40] , \gpio_inp_dis[39] , \gpio_inp_dis[38] , \gpio_inp_dis[37] , \gpio_inp_dis[36] , \gpio_inp_dis[35] , \gpio_inp_dis[34] , \gpio_inp_dis[33] , \gpio_inp_dis[32] , \gpio_inp_dis[31] , \gpio_inp_dis[30] , \gpio_inp_dis[29] , \gpio_inp_dis[28] , \gpio_inp_dis[27] , \gpio_inp_dis[26] , \gpio_inp_dis[25] , \gpio_inp_dis[24] , \gpio_inp_dis[23] , \gpio_inp_dis[22] , \gpio_inp_dis[21] , \gpio_inp_dis[20] , \gpio_inp_dis[19] , \gpio_inp_dis[18] , \gpio_inp_dis[17] , \gpio_inp_dis[16] , \gpio_inp_dis[15] , \gpio_inp_dis[14] , \gpio_inp_dis[13] , \gpio_inp_dis[12] , \gpio_inp_dis[11] , \gpio_inp_dis[10] , \gpio_inp_dis[9] , \gpio_inp_dis[8] , \gpio_inp_dis[7] , \gpio_inp_dis[6] , \gpio_inp_dis[5] , \gpio_inp_dis[4] , \gpio_inp_dis[3] , \gpio_inp_dis[2] , \gpio_inp_dis[1] , \gpio_inp_dis[0] }), + .gpio_loopback_one({ \gpio_loopback_one[43] , \gpio_loopback_one[42] , \gpio_loopback_one[41] , \gpio_loopback_one[40] , \gpio_loopback_one[39] , \gpio_loopback_one[38] , \gpio_loopback_one[37] , \gpio_loopback_one[36] , \gpio_loopback_one[35] , \gpio_loopback_one[34] , \gpio_loopback_one[33] , \gpio_loopback_one[32] , \gpio_loopback_one[31] , \gpio_loopback_one[30] , \gpio_loopback_one[29] , \gpio_loopback_one[28] , \gpio_loopback_one[27] , \gpio_loopback_one[26] , \gpio_loopback_one[25] , \gpio_loopback_one[24] , \gpio_loopback_one[23] , \gpio_loopback_one[22] , \gpio_loopback_one[21] , \gpio_loopback_one[20] , \gpio_loopback_one[19] , \gpio_loopback_one[18] , \gpio_loopback_one[17] , \gpio_loopback_one[16] , \gpio_loopback_one[15] , \gpio_loopback_one[14] , \gpio_loopback_one[13] , \gpio_loopback_one[12] , \gpio_loopback_one[11] , \gpio_loopback_one[10] , \gpio_loopback_one[9] , \gpio_loopback_one[8] , \gpio_loopback_one[7] , \gpio_loopback_one[6] , \gpio_loopback_one[5] , \gpio_loopback_one[4] , \gpio_loopback_one[3] , \gpio_loopback_one[2] , \gpio_loopback_one[1] , \gpio_loopback_one[0] }), + .gpio_loopback_zero({ \gpio_loopback_zero[43] , \gpio_loopback_zero[42] , \gpio_loopback_zero[41] , \gpio_loopback_zero[40] , \gpio_loopback_zero[39] , \gpio_loopback_zero[38] , \gpio_loopback_zero[37] , \gpio_loopback_zero[36] , \gpio_loopback_zero[35] , \gpio_loopback_zero[34] , \gpio_loopback_zero[33] , \gpio_loopback_zero[32] , \gpio_loopback_zero[31] , \gpio_loopback_zero[30] , \gpio_loopback_zero[29] , \gpio_loopback_zero[28] , \gpio_loopback_zero[27] , \gpio_loopback_zero[26] , \gpio_loopback_zero[25] , \gpio_loopback_zero[24] , \gpio_loopback_zero[23] , \gpio_loopback_zero[22] , \gpio_loopback_zero[21] , \gpio_loopback_zero[20] , \gpio_loopback_zero[19] , \gpio_loopback_zero[18] , \gpio_loopback_zero[17] , \gpio_loopback_zero[16] , \gpio_loopback_zero[15] , \gpio_loopback_zero[14] , \gpio_loopback_zero[13] , \gpio_loopback_zero[12] , \gpio_loopback_zero[11] , \gpio_loopback_zero[10] , \gpio_loopback_zero[9] , \gpio_loopback_zero[8] , \gpio_loopback_zero[7] , \gpio_loopback_zero[6] , \gpio_loopback_zero[5] , \gpio_loopback_zero[4] , \gpio_loopback_zero[3] , \gpio_loopback_zero[2] , \gpio_loopback_zero[1] , \gpio_loopback_zero[0] }), + .gpio_oeb({ \gpio_oeb[43] , \gpio_oeb[42] , \gpio_oeb[41] , \gpio_oeb[40] , \gpio_oeb[39] , \gpio_oeb[38] , \gpio_oeb[37] , \gpio_oeb[36] , \gpio_oeb[35] , \gpio_oeb[34] , \gpio_oeb[33] , \gpio_oeb[32] , \gpio_oeb[31] , \gpio_oeb[30] , \gpio_oeb[29] , \gpio_oeb[28] , \gpio_oeb[27] , \gpio_oeb[26] , \gpio_oeb[25] , \gpio_oeb[24] , \gpio_oeb[23] , \gpio_oeb[22] , \gpio_oeb[21] , \gpio_oeb[20] , \gpio_oeb[19] , \gpio_oeb[18] , \gpio_oeb[17] , \gpio_oeb[16] , \gpio_oeb[15] , \gpio_oeb[14] , \gpio_oeb[13] , \gpio_oeb[12] , \gpio_oeb[11] , \gpio_oeb[10] , \gpio_oeb[9] , \gpio_oeb[8] , \gpio_oeb[7] , \gpio_oeb[6] , \gpio_oeb[5] , \gpio_oeb[4] , \gpio_oeb[3] , \gpio_oeb[2] , \gpio_oeb[1] , \gpio_oeb[0] }), + .gpio_out({ \gpio_out[43] , \gpio_out[42] , \gpio_out[41] , \gpio_out[40] , \gpio_out[39] , \gpio_out[38] , \gpio_out[37] , \gpio_out[36] , \gpio_out[35] , \gpio_out[34] , \gpio_out[33] , \gpio_out[32] , \gpio_out[31] , \gpio_out[30] , \gpio_out[29] , \gpio_out[28] , \gpio_out[27] , \gpio_out[26] , \gpio_out[25] , \gpio_out[24] , \gpio_out[23] , \gpio_out[22] , \gpio_out[21] , \gpio_out[20] , \gpio_out[19] , \gpio_out[18] , \gpio_out[17] , \gpio_out[16] , \gpio_out[15] , \gpio_out[14] , \gpio_out[13] , \gpio_out[12] , \gpio_out[11] , \gpio_out[10] , \gpio_out[9] , \gpio_out[8] , \gpio_out[7] , \gpio_out[6] , \gpio_out[5] , \gpio_out[4] , \gpio_out[3] , \gpio_out[2] , \gpio_out[1] , \gpio_out[0] }), + .gpio_slow_sel({ \gpio_slow_sel[43] , \gpio_slow_sel[42] , \gpio_slow_sel[41] , \gpio_slow_sel[40] , \gpio_slow_sel[39] , \gpio_slow_sel[38] , \gpio_slow_sel[37] , \gpio_slow_sel[36] , \gpio_slow_sel[35] , \gpio_slow_sel[34] , \gpio_slow_sel[33] , \gpio_slow_sel[32] , \gpio_slow_sel[31] , \gpio_slow_sel[30] , \gpio_slow_sel[29] , \gpio_slow_sel[28] , \gpio_slow_sel[27] , \gpio_slow_sel[26] , \gpio_slow_sel[25] , \gpio_slow_sel[24] , \gpio_slow_sel[23] , \gpio_slow_sel[22] , \gpio_slow_sel[21] , \gpio_slow_sel[20] , \gpio_slow_sel[19] , \gpio_slow_sel[18] , \gpio_slow_sel[17] , \gpio_slow_sel[16] , \gpio_slow_sel[15] , \gpio_slow_sel[14] , \gpio_slow_sel[13] , \gpio_slow_sel[12] , \gpio_slow_sel[11] , \gpio_slow_sel[10] , \gpio_slow_sel[9] , \gpio_slow_sel[8] , \gpio_slow_sel[7] , \gpio_slow_sel[6] , \gpio_slow_sel[5] , \gpio_slow_sel[4] , \gpio_slow_sel[3] , \gpio_slow_sel[2] , \gpio_slow_sel[1] , \gpio_slow_sel[0] }), + .gpio_vtrip_sel({ \gpio_vtrip_sel[43] , \gpio_vtrip_sel[42] , \gpio_vtrip_sel[41] , \gpio_vtrip_sel[40] , \gpio_vtrip_sel[39] , \gpio_vtrip_sel[38] , \gpio_vtrip_sel[37] , \gpio_vtrip_sel[36] , \gpio_vtrip_sel[35] , \gpio_vtrip_sel[34] , \gpio_vtrip_sel[33] , \gpio_vtrip_sel[32] , \gpio_vtrip_sel[31] , \gpio_vtrip_sel[30] , \gpio_vtrip_sel[29] , \gpio_vtrip_sel[28] , \gpio_vtrip_sel[27] , \gpio_vtrip_sel[26] , \gpio_vtrip_sel[25] , \gpio_vtrip_sel[24] , \gpio_vtrip_sel[23] , \gpio_vtrip_sel[22] , \gpio_vtrip_sel[21] , \gpio_vtrip_sel[20] , \gpio_vtrip_sel[19] , \gpio_vtrip_sel[18] , \gpio_vtrip_sel[17] , \gpio_vtrip_sel[16] , \gpio_vtrip_sel[15] , \gpio_vtrip_sel[14] , \gpio_vtrip_sel[13] , \gpio_vtrip_sel[12] , \gpio_vtrip_sel[11] , \gpio_vtrip_sel[10] , \gpio_vtrip_sel[9] , \gpio_vtrip_sel[8] , \gpio_vtrip_sel[7] , \gpio_vtrip_sel[6] , \gpio_vtrip_sel[5] , \gpio_vtrip_sel[4] , \gpio_vtrip_sel[3] , \gpio_vtrip_sel[2] , \gpio_vtrip_sel[1] , \gpio_vtrip_sel[0] }), + .mask_rev({ \mask_rev[31] , \mask_rev[30] , \mask_rev[29] , \mask_rev[28] , \mask_rev[27] , \mask_rev[26] , \mask_rev[25] , \mask_rev[24] , \mask_rev[23] , \mask_rev[22] , \mask_rev[21] , \mask_rev[20] , \mask_rev[19] , \mask_rev[18] , \mask_rev[17] , \mask_rev[16] , \mask_rev[15] , \mask_rev[14] , \mask_rev[13] , \mask_rev[12] , \mask_rev[11] , \mask_rev[10] , \mask_rev[9] , \mask_rev[8] , \mask_rev[7] , \mask_rev[6] , \mask_rev[5] , \mask_rev[4] , \mask_rev[3] , \mask_rev[2] , \mask_rev[1] , \mask_rev[0] }), + .por_l(por_l), + .porb_h(porb_h), + .porb_l(porb_l), + .resetb_h(rstb_h), + .resetb_l(rstb_l), + .vccd(vccd_core), + .vccd1(vccd1_core), + .vccd2(vccd2_core), + .vdda(vdda_core), + .vdda1(vdda1_core), + .vdda2(vdda2_core), + .vssa(vssa_core), + .vssa1(vssa1_core), + .vssa2(vssa2_core), + .vssd(vssd_core), + .vssd1(vssd1_core), + .vssd2(vssd2_core) + ); +endmodule From f5199a7475858c778b8d148ed7eee2cb663993b2 Mon Sep 17 00:00:00 2001 From: mo-hosni Date: Sun, 24 Sep 2023 17:10:34 +0300 Subject: [PATCH 108/109] add a gate-level for `chip_io_openframe` --- verilog/gl/chip_io_openframe.v | 2896 ++++++++++++++++++++++++++++++++ 1 file changed, 2896 insertions(+) create mode 100644 verilog/gl/chip_io_openframe.v diff --git a/verilog/gl/chip_io_openframe.v b/verilog/gl/chip_io_openframe.v new file mode 100644 index 00000000..4c6baa57 --- /dev/null +++ b/verilog/gl/chip_io_openframe.v @@ -0,0 +1,2896 @@ +/* Generated by Yosys 0.30+48 (git sha1 14d50a176d5, gcc 8.3.1 -fPIC -Os) */ + +module chip_io_openframe(vddio_pad, vddio_pad2, vssio_pad, vssio_pad2, vccd_pad, vssd_pad, vdda_pad, vssa_pad, vdda1_pad, vdda1_pad2, vdda2_pad, vssa1_pad, vssa1_pad2, vssa2_pad, vccd1_pad, vccd2_pad, vssd1_pad, vssd2_pad, vddio, vssio, vccd +, vssd, vdda, vssa, vdda1, vdda2, vssa1, vssa2, vccd1, vccd2, vssd1, vssd2, resetb_pad, porb_h, porb_l, por_l, resetb_h, resetb_l, mask_rev, gpio, gpio_out, gpio_oeb +, gpio_inp_dis, gpio_ib_mode_sel, gpio_vtrip_sel, gpio_slow_sel, gpio_holdover, gpio_analog_en, gpio_analog_sel, gpio_analog_pol, gpio_dm0, gpio_dm1, gpio_dm2, gpio_in, gpio_in_h, gpio_loopback_zero, gpio_loopback_one, analog_io, analog_noesd_io); + wire analog_a; + wire analog_b; + inout [43:0] analog_io; + wire [43:0] analog_io; + inout [43:0] analog_noesd_io; + wire [43:0] analog_noesd_io; + inout [43:0] gpio; + wire [43:0] gpio; + input [43:0] gpio_analog_en; + wire [43:0] gpio_analog_en; + input [43:0] gpio_analog_pol; + wire [43:0] gpio_analog_pol; + input [43:0] gpio_analog_sel; + wire [43:0] gpio_analog_sel; + input [43:0] gpio_dm0; + wire [43:0] gpio_dm0; + input [43:0] gpio_dm1; + wire [43:0] gpio_dm1; + input [43:0] gpio_dm2; + wire [43:0] gpio_dm2; + wire \gpio_dm_all[0] ; + wire \gpio_dm_all[100] ; + wire \gpio_dm_all[101] ; + wire \gpio_dm_all[102] ; + wire \gpio_dm_all[103] ; + wire \gpio_dm_all[104] ; + wire \gpio_dm_all[105] ; + wire \gpio_dm_all[106] ; + wire \gpio_dm_all[107] ; + wire \gpio_dm_all[108] ; + wire \gpio_dm_all[109] ; + wire \gpio_dm_all[10] ; + wire \gpio_dm_all[110] ; + wire \gpio_dm_all[111] ; + wire \gpio_dm_all[112] ; + wire \gpio_dm_all[113] ; + wire \gpio_dm_all[114] ; + wire \gpio_dm_all[115] ; + wire \gpio_dm_all[116] ; + wire \gpio_dm_all[117] ; + wire \gpio_dm_all[118] ; + wire \gpio_dm_all[119] ; + wire \gpio_dm_all[11] ; + wire \gpio_dm_all[120] ; + wire \gpio_dm_all[121] ; + wire \gpio_dm_all[122] ; + wire \gpio_dm_all[123] ; + wire \gpio_dm_all[124] ; + wire \gpio_dm_all[125] ; + wire \gpio_dm_all[126] ; + wire \gpio_dm_all[127] ; + wire \gpio_dm_all[128] ; + wire \gpio_dm_all[129] ; + wire \gpio_dm_all[12] ; + wire \gpio_dm_all[130] ; + wire \gpio_dm_all[131] ; + wire \gpio_dm_all[13] ; + wire \gpio_dm_all[14] ; + wire \gpio_dm_all[15] ; + wire \gpio_dm_all[16] ; + wire \gpio_dm_all[17] ; + wire \gpio_dm_all[18] ; + wire \gpio_dm_all[19] ; + wire \gpio_dm_all[1] ; + wire \gpio_dm_all[20] ; + wire \gpio_dm_all[21] ; + wire \gpio_dm_all[22] ; + wire \gpio_dm_all[23] ; + wire \gpio_dm_all[24] ; + wire \gpio_dm_all[25] ; + wire \gpio_dm_all[26] ; + wire \gpio_dm_all[27] ; + wire \gpio_dm_all[28] ; + wire \gpio_dm_all[29] ; + wire \gpio_dm_all[2] ; + wire \gpio_dm_all[30] ; + wire \gpio_dm_all[31] ; + wire \gpio_dm_all[32] ; + wire \gpio_dm_all[33] ; + wire \gpio_dm_all[34] ; + wire \gpio_dm_all[35] ; + wire \gpio_dm_all[36] ; + wire \gpio_dm_all[37] ; + wire \gpio_dm_all[38] ; + wire \gpio_dm_all[39] ; + wire \gpio_dm_all[3] ; + wire \gpio_dm_all[40] ; + wire \gpio_dm_all[41] ; + wire \gpio_dm_all[42] ; + wire \gpio_dm_all[43] ; + wire \gpio_dm_all[44] ; + wire \gpio_dm_all[45] ; + wire \gpio_dm_all[46] ; + wire \gpio_dm_all[47] ; + wire \gpio_dm_all[48] ; + wire \gpio_dm_all[49] ; + wire \gpio_dm_all[4] ; + wire \gpio_dm_all[50] ; + wire \gpio_dm_all[51] ; + wire \gpio_dm_all[52] ; + wire \gpio_dm_all[53] ; + wire \gpio_dm_all[54] ; + wire \gpio_dm_all[55] ; + wire \gpio_dm_all[56] ; + wire \gpio_dm_all[57] ; + wire \gpio_dm_all[58] ; + wire \gpio_dm_all[59] ; + wire \gpio_dm_all[5] ; + wire \gpio_dm_all[60] ; + wire \gpio_dm_all[61] ; + wire \gpio_dm_all[62] ; + wire \gpio_dm_all[63] ; + wire \gpio_dm_all[64] ; + wire \gpio_dm_all[65] ; + wire \gpio_dm_all[66] ; + wire \gpio_dm_all[67] ; + wire \gpio_dm_all[68] ; + wire \gpio_dm_all[69] ; + wire \gpio_dm_all[6] ; + wire \gpio_dm_all[70] ; + wire \gpio_dm_all[71] ; + wire \gpio_dm_all[72] ; + wire \gpio_dm_all[73] ; + wire \gpio_dm_all[74] ; + wire \gpio_dm_all[75] ; + wire \gpio_dm_all[76] ; + wire \gpio_dm_all[77] ; + wire \gpio_dm_all[78] ; + wire \gpio_dm_all[79] ; + wire \gpio_dm_all[7] ; + wire \gpio_dm_all[80] ; + wire \gpio_dm_all[81] ; + wire \gpio_dm_all[82] ; + wire \gpio_dm_all[83] ; + wire \gpio_dm_all[84] ; + wire \gpio_dm_all[85] ; + wire \gpio_dm_all[86] ; + wire \gpio_dm_all[87] ; + wire \gpio_dm_all[88] ; + wire \gpio_dm_all[89] ; + wire \gpio_dm_all[8] ; + wire \gpio_dm_all[90] ; + wire \gpio_dm_all[91] ; + wire \gpio_dm_all[92] ; + wire \gpio_dm_all[93] ; + wire \gpio_dm_all[94] ; + wire \gpio_dm_all[95] ; + wire \gpio_dm_all[96] ; + wire \gpio_dm_all[97] ; + wire \gpio_dm_all[98] ; + wire \gpio_dm_all[99] ; + wire \gpio_dm_all[9] ; + wire \gpio_enh[0] ; + wire \gpio_enh[10] ; + wire \gpio_enh[11] ; + wire \gpio_enh[12] ; + wire \gpio_enh[13] ; + wire \gpio_enh[14] ; + wire \gpio_enh[15] ; + wire \gpio_enh[16] ; + wire \gpio_enh[17] ; + wire \gpio_enh[18] ; + wire \gpio_enh[19] ; + wire \gpio_enh[1] ; + wire \gpio_enh[20] ; + wire \gpio_enh[21] ; + wire \gpio_enh[22] ; + wire \gpio_enh[23] ; + wire \gpio_enh[24] ; + wire \gpio_enh[25] ; + wire \gpio_enh[26] ; + wire \gpio_enh[27] ; + wire \gpio_enh[28] ; + wire \gpio_enh[29] ; + wire \gpio_enh[2] ; + wire \gpio_enh[30] ; + wire \gpio_enh[31] ; + wire \gpio_enh[32] ; + wire \gpio_enh[33] ; + wire \gpio_enh[34] ; + wire \gpio_enh[35] ; + wire \gpio_enh[36] ; + wire \gpio_enh[37] ; + wire \gpio_enh[38] ; + wire \gpio_enh[39] ; + wire \gpio_enh[3] ; + wire \gpio_enh[40] ; + wire \gpio_enh[41] ; + wire \gpio_enh[42] ; + wire \gpio_enh[43] ; + wire \gpio_enh[4] ; + wire \gpio_enh[5] ; + wire \gpio_enh[6] ; + wire \gpio_enh[7] ; + wire \gpio_enh[8] ; + wire \gpio_enh[9] ; + input [43:0] gpio_holdover; + wire [43:0] gpio_holdover; + input [43:0] gpio_ib_mode_sel; + wire [43:0] gpio_ib_mode_sel; + output [43:0] gpio_in; + wire [43:0] gpio_in; + output [43:0] gpio_in_h; + wire [43:0] gpio_in_h; + input [43:0] gpio_inp_dis; + wire [43:0] gpio_inp_dis; + output [43:0] gpio_loopback_one; + wire [43:0] gpio_loopback_one; + output [43:0] gpio_loopback_zero; + wire [43:0] gpio_loopback_zero; + input [43:0] gpio_oeb; + wire [43:0] gpio_oeb; + input [43:0] gpio_out; + wire [43:0] gpio_out; + input [43:0] gpio_slow_sel; + wire [43:0] gpio_slow_sel; + input [43:0] gpio_vtrip_sel; + wire [43:0] gpio_vtrip_sel; + wire \loop0_gpio[0] ; + wire \loop0_gpio[10] ; + wire \loop0_gpio[11] ; + wire \loop0_gpio[12] ; + wire \loop0_gpio[13] ; + wire \loop0_gpio[14] ; + wire \loop0_gpio[15] ; + wire \loop0_gpio[16] ; + wire \loop0_gpio[17] ; + wire \loop0_gpio[18] ; + wire \loop0_gpio[19] ; + wire \loop0_gpio[1] ; + wire \loop0_gpio[20] ; + wire \loop0_gpio[21] ; + wire \loop0_gpio[22] ; + wire \loop0_gpio[23] ; + wire \loop0_gpio[24] ; + wire \loop0_gpio[25] ; + wire \loop0_gpio[26] ; + wire \loop0_gpio[27] ; + wire \loop0_gpio[28] ; + wire \loop0_gpio[29] ; + wire \loop0_gpio[2] ; + wire \loop0_gpio[30] ; + wire \loop0_gpio[31] ; + wire \loop0_gpio[32] ; + wire \loop0_gpio[33] ; + wire \loop0_gpio[34] ; + wire \loop0_gpio[35] ; + wire \loop0_gpio[36] ; + wire \loop0_gpio[37] ; + wire \loop0_gpio[38] ; + wire \loop0_gpio[39] ; + wire \loop0_gpio[3] ; + wire \loop0_gpio[40] ; + wire \loop0_gpio[41] ; + wire \loop0_gpio[42] ; + wire \loop0_gpio[43] ; + wire \loop0_gpio[4] ; + wire \loop0_gpio[5] ; + wire \loop0_gpio[6] ; + wire \loop0_gpio[7] ; + wire \loop0_gpio[8] ; + wire \loop0_gpio[9] ; + wire \loop1_gpio[0] ; + wire \loop1_gpio[10] ; + wire \loop1_gpio[11] ; + wire \loop1_gpio[12] ; + wire \loop1_gpio[13] ; + wire \loop1_gpio[14] ; + wire \loop1_gpio[15] ; + wire \loop1_gpio[16] ; + wire \loop1_gpio[17] ; + wire \loop1_gpio[18] ; + wire \loop1_gpio[19] ; + wire \loop1_gpio[1] ; + wire \loop1_gpio[20] ; + wire \loop1_gpio[21] ; + wire \loop1_gpio[22] ; + wire \loop1_gpio[23] ; + wire \loop1_gpio[24] ; + wire \loop1_gpio[25] ; + wire \loop1_gpio[26] ; + wire \loop1_gpio[27] ; + wire \loop1_gpio[28] ; + wire \loop1_gpio[29] ; + wire \loop1_gpio[2] ; + wire \loop1_gpio[30] ; + wire \loop1_gpio[31] ; + wire \loop1_gpio[32] ; + wire \loop1_gpio[33] ; + wire \loop1_gpio[34] ; + wire \loop1_gpio[35] ; + wire \loop1_gpio[36] ; + wire \loop1_gpio[37] ; + wire \loop1_gpio[38] ; + wire \loop1_gpio[39] ; + wire \loop1_gpio[3] ; + wire \loop1_gpio[40] ; + wire \loop1_gpio[41] ; + wire \loop1_gpio[42] ; + wire \loop1_gpio[43] ; + wire \loop1_gpio[4] ; + wire \loop1_gpio[5] ; + wire \loop1_gpio[6] ; + wire \loop1_gpio[7] ; + wire \loop1_gpio[8] ; + wire \loop1_gpio[9] ; + output [31:0] mask_rev; + wire [31:0] mask_rev; + output por_l; + wire por_l; + output porb_h; + wire porb_h; + output porb_l; + wire porb_l; + output resetb_h; + wire resetb_h; + output resetb_l; + wire resetb_l; + input resetb_pad; + wire resetb_pad; + inout vccd; + wire vccd; + inout vccd1; + wire vccd1; + inout vccd1_pad; + wire vccd1_pad; + inout vccd2; + wire vccd2; + inout vccd2_pad; + wire vccd2_pad; + inout vccd_pad; + wire vccd_pad; + inout vdda; + wire vdda; + inout vdda1; + wire vdda1; + inout vdda1_pad; + wire vdda1_pad; + inout vdda1_pad2; + wire vdda1_pad2; + inout vdda2; + wire vdda2; + inout vdda2_pad; + wire vdda2_pad; + inout vdda_pad; + wire vdda_pad; + inout vddio; + wire vddio; + inout vddio_pad; + wire vddio_pad; + inout vddio_pad2; + wire vddio_pad2; + wire vddio_q; + inout vssa; + wire vssa; + inout vssa1; + wire vssa1; + inout vssa1_pad; + wire vssa1_pad; + inout vssa1_pad2; + wire vssa1_pad2; + inout vssa2; + wire vssa2; + inout vssa2_pad; + wire vssa2_pad; + inout vssa_pad; + wire vssa_pad; + inout vssd; + wire vssd; + inout vssd1; + wire vssd1; + inout vssd1_pad; + wire vssd1_pad; + inout vssd2; + wire vssd2; + inout vssd2_pad; + wire vssd2_pad; + inout vssd_pad; + wire vssd_pad; + inout vssio; + wire vssio; + inout vssio_pad; + wire vssio_pad; + inout vssio_pad2; + wire vssio_pad2; + wire vssio_q; + wire xres_loopback_one; + wire xres_loopback_zero; + wire xres_vss_loop; + wire xresloop; + sky130_ef_io__gpiov2_pad_wrapped \area0_gpio_pad[0] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[38]), + .ANALOG_POL(gpio_analog_pol[38]), + .ANALOG_SEL(gpio_analog_sel[38]), + .DM({ gpio_dm2[38], gpio_dm1[38], gpio_dm0[38] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[38] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[38]), + .ENABLE_VSWITCH_H(\loop0_gpio[38] ), + .HLD_H_N(\loop1_gpio[38] ), + .HLD_OVR(gpio_holdover[38]), + .IB_MODE_SEL(gpio_ib_mode_sel[38]), + .IN(gpio_in[38]), + .INP_DIS(gpio_inp_dis[38]), + .IN_H(gpio_in_h[38]), + .OE_N(gpio_oeb[38]), + .OUT(gpio_out[38]), + .PAD(gpio[38]), + .PAD_A_ESD_0_H(analog_io[38]), + .PAD_A_NOESD_H(analog_noesd_io[38]), + .SLOW(gpio_slow_sel[38]), + .TIE_HI_ESD(\loop1_gpio[38] ), + .TIE_LO_ESD(\loop0_gpio[38] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[38]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area0_gpio_pad[1] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[39]), + .ANALOG_POL(gpio_analog_pol[39]), + .ANALOG_SEL(gpio_analog_sel[39]), + .DM({ gpio_dm2[39], gpio_dm1[39], gpio_dm0[39] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[39] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[39]), + .ENABLE_VSWITCH_H(\loop0_gpio[39] ), + .HLD_H_N(\loop1_gpio[39] ), + .HLD_OVR(gpio_holdover[39]), + .IB_MODE_SEL(gpio_ib_mode_sel[39]), + .IN(gpio_in[39]), + .INP_DIS(gpio_inp_dis[39]), + .IN_H(gpio_in_h[39]), + .OE_N(gpio_oeb[39]), + .OUT(gpio_out[39]), + .PAD(gpio[39]), + .PAD_A_ESD_0_H(analog_io[39]), + .PAD_A_NOESD_H(analog_noesd_io[39]), + .SLOW(gpio_slow_sel[39]), + .TIE_HI_ESD(\loop1_gpio[39] ), + .TIE_LO_ESD(\loop0_gpio[39] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[39]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area0_gpio_pad[2] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[40]), + .ANALOG_POL(gpio_analog_pol[40]), + .ANALOG_SEL(gpio_analog_sel[40]), + .DM({ gpio_dm2[40], gpio_dm1[40], gpio_dm0[40] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[40] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[40]), + .ENABLE_VSWITCH_H(\loop0_gpio[40] ), + .HLD_H_N(\loop1_gpio[40] ), + .HLD_OVR(gpio_holdover[40]), + .IB_MODE_SEL(gpio_ib_mode_sel[40]), + .IN(gpio_in[40]), + .INP_DIS(gpio_inp_dis[40]), + .IN_H(gpio_in_h[40]), + .OE_N(gpio_oeb[40]), + .OUT(gpio_out[40]), + .PAD(gpio[40]), + .PAD_A_ESD_0_H(analog_io[40]), + .PAD_A_NOESD_H(analog_noesd_io[40]), + .SLOW(gpio_slow_sel[40]), + .TIE_HI_ESD(\loop1_gpio[40] ), + .TIE_LO_ESD(\loop0_gpio[40] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[40]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area0_gpio_pad[3] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[41]), + .ANALOG_POL(gpio_analog_pol[41]), + .ANALOG_SEL(gpio_analog_sel[41]), + .DM({ gpio_dm2[41], gpio_dm1[41], gpio_dm0[41] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[41] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[41]), + .ENABLE_VSWITCH_H(\loop0_gpio[41] ), + .HLD_H_N(\loop1_gpio[41] ), + .HLD_OVR(gpio_holdover[41]), + .IB_MODE_SEL(gpio_ib_mode_sel[41]), + .IN(gpio_in[41]), + .INP_DIS(gpio_inp_dis[41]), + .IN_H(gpio_in_h[41]), + .OE_N(gpio_oeb[41]), + .OUT(gpio_out[41]), + .PAD(gpio[41]), + .PAD_A_ESD_0_H(analog_io[41]), + .PAD_A_NOESD_H(analog_noesd_io[41]), + .SLOW(gpio_slow_sel[41]), + .TIE_HI_ESD(\loop1_gpio[41] ), + .TIE_LO_ESD(\loop0_gpio[41] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[41]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area0_gpio_pad[4] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[42]), + .ANALOG_POL(gpio_analog_pol[42]), + .ANALOG_SEL(gpio_analog_sel[42]), + .DM({ gpio_dm2[42], gpio_dm1[42], gpio_dm0[42] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[42] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[42]), + .ENABLE_VSWITCH_H(\loop0_gpio[42] ), + .HLD_H_N(\loop1_gpio[42] ), + .HLD_OVR(gpio_holdover[42]), + .IB_MODE_SEL(gpio_ib_mode_sel[42]), + .IN(gpio_in[42]), + .INP_DIS(gpio_inp_dis[42]), + .IN_H(gpio_in_h[42]), + .OE_N(gpio_oeb[42]), + .OUT(gpio_out[42]), + .PAD(gpio[42]), + .PAD_A_ESD_0_H(analog_io[42]), + .PAD_A_NOESD_H(analog_noesd_io[42]), + .SLOW(gpio_slow_sel[42]), + .TIE_HI_ESD(\loop1_gpio[42] ), + .TIE_LO_ESD(\loop0_gpio[42] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[42]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area0_gpio_pad[5] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[43]), + .ANALOG_POL(gpio_analog_pol[43]), + .ANALOG_SEL(gpio_analog_sel[43]), + .DM({ gpio_dm2[43], gpio_dm1[43], gpio_dm0[43] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[43] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[43]), + .ENABLE_VSWITCH_H(\loop0_gpio[43] ), + .HLD_H_N(\loop1_gpio[43] ), + .HLD_OVR(gpio_holdover[43]), + .IB_MODE_SEL(gpio_ib_mode_sel[43]), + .IN(gpio_in[43]), + .INP_DIS(gpio_inp_dis[43]), + .IN_H(gpio_in_h[43]), + .OE_N(gpio_oeb[43]), + .OUT(gpio_out[43]), + .PAD(gpio[43]), + .PAD_A_ESD_0_H(analog_io[43]), + .PAD_A_NOESD_H(analog_noesd_io[43]), + .SLOW(gpio_slow_sel[43]), + .TIE_HI_ESD(\loop1_gpio[43] ), + .TIE_LO_ESD(\loop0_gpio[43] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[43]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[0] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[0]), + .ANALOG_POL(gpio_analog_pol[0]), + .ANALOG_SEL(gpio_analog_sel[0]), + .DM({ gpio_dm2[0], gpio_dm1[0], gpio_dm0[0] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[0] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[0]), + .ENABLE_VSWITCH_H(\loop0_gpio[0] ), + .HLD_H_N(\loop1_gpio[0] ), + .HLD_OVR(gpio_holdover[0]), + .IB_MODE_SEL(gpio_ib_mode_sel[0]), + .IN(gpio_in[0]), + .INP_DIS(gpio_inp_dis[0]), + .IN_H(gpio_in_h[0]), + .OE_N(gpio_oeb[0]), + .OUT(gpio_out[0]), + .PAD(gpio[0]), + .PAD_A_ESD_0_H(analog_io[0]), + .PAD_A_NOESD_H(analog_noesd_io[0]), + .SLOW(gpio_slow_sel[0]), + .TIE_HI_ESD(\loop1_gpio[0] ), + .TIE_LO_ESD(\loop0_gpio[0] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[0]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[10] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[10]), + .ANALOG_POL(gpio_analog_pol[10]), + .ANALOG_SEL(gpio_analog_sel[10]), + .DM({ gpio_dm2[10], gpio_dm1[10], gpio_dm0[10] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[10] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[10]), + .ENABLE_VSWITCH_H(\loop0_gpio[10] ), + .HLD_H_N(\loop1_gpio[10] ), + .HLD_OVR(gpio_holdover[10]), + .IB_MODE_SEL(gpio_ib_mode_sel[10]), + .IN(gpio_in[10]), + .INP_DIS(gpio_inp_dis[10]), + .IN_H(gpio_in_h[10]), + .OE_N(gpio_oeb[10]), + .OUT(gpio_out[10]), + .PAD(gpio[10]), + .PAD_A_ESD_0_H(analog_io[10]), + .PAD_A_NOESD_H(analog_noesd_io[10]), + .SLOW(gpio_slow_sel[10]), + .TIE_HI_ESD(\loop1_gpio[10] ), + .TIE_LO_ESD(\loop0_gpio[10] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[10]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[11] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[11]), + .ANALOG_POL(gpio_analog_pol[11]), + .ANALOG_SEL(gpio_analog_sel[11]), + .DM({ gpio_dm2[11], gpio_dm1[11], gpio_dm0[11] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[11] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[11]), + .ENABLE_VSWITCH_H(\loop0_gpio[11] ), + .HLD_H_N(\loop1_gpio[11] ), + .HLD_OVR(gpio_holdover[11]), + .IB_MODE_SEL(gpio_ib_mode_sel[11]), + .IN(gpio_in[11]), + .INP_DIS(gpio_inp_dis[11]), + .IN_H(gpio_in_h[11]), + .OE_N(gpio_oeb[11]), + .OUT(gpio_out[11]), + .PAD(gpio[11]), + .PAD_A_ESD_0_H(analog_io[11]), + .PAD_A_NOESD_H(analog_noesd_io[11]), + .SLOW(gpio_slow_sel[11]), + .TIE_HI_ESD(\loop1_gpio[11] ), + .TIE_LO_ESD(\loop0_gpio[11] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[11]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[12] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[12]), + .ANALOG_POL(gpio_analog_pol[12]), + .ANALOG_SEL(gpio_analog_sel[12]), + .DM({ gpio_dm2[12], gpio_dm1[12], gpio_dm0[12] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[12] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[12]), + .ENABLE_VSWITCH_H(\loop0_gpio[12] ), + .HLD_H_N(\loop1_gpio[12] ), + .HLD_OVR(gpio_holdover[12]), + .IB_MODE_SEL(gpio_ib_mode_sel[12]), + .IN(gpio_in[12]), + .INP_DIS(gpio_inp_dis[12]), + .IN_H(gpio_in_h[12]), + .OE_N(gpio_oeb[12]), + .OUT(gpio_out[12]), + .PAD(gpio[12]), + .PAD_A_ESD_0_H(analog_io[12]), + .PAD_A_NOESD_H(analog_noesd_io[12]), + .SLOW(gpio_slow_sel[12]), + .TIE_HI_ESD(\loop1_gpio[12] ), + .TIE_LO_ESD(\loop0_gpio[12] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[12]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[13] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[13]), + .ANALOG_POL(gpio_analog_pol[13]), + .ANALOG_SEL(gpio_analog_sel[13]), + .DM({ gpio_dm2[13], gpio_dm1[13], gpio_dm0[13] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[13] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[13]), + .ENABLE_VSWITCH_H(\loop0_gpio[13] ), + .HLD_H_N(\loop1_gpio[13] ), + .HLD_OVR(gpio_holdover[13]), + .IB_MODE_SEL(gpio_ib_mode_sel[13]), + .IN(gpio_in[13]), + .INP_DIS(gpio_inp_dis[13]), + .IN_H(gpio_in_h[13]), + .OE_N(gpio_oeb[13]), + .OUT(gpio_out[13]), + .PAD(gpio[13]), + .PAD_A_ESD_0_H(analog_io[13]), + .PAD_A_NOESD_H(analog_noesd_io[13]), + .SLOW(gpio_slow_sel[13]), + .TIE_HI_ESD(\loop1_gpio[13] ), + .TIE_LO_ESD(\loop0_gpio[13] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[13]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[14] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[14]), + .ANALOG_POL(gpio_analog_pol[14]), + .ANALOG_SEL(gpio_analog_sel[14]), + .DM({ gpio_dm2[14], gpio_dm1[14], gpio_dm0[14] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[14] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[14]), + .ENABLE_VSWITCH_H(\loop0_gpio[14] ), + .HLD_H_N(\loop1_gpio[14] ), + .HLD_OVR(gpio_holdover[14]), + .IB_MODE_SEL(gpio_ib_mode_sel[14]), + .IN(gpio_in[14]), + .INP_DIS(gpio_inp_dis[14]), + .IN_H(gpio_in_h[14]), + .OE_N(gpio_oeb[14]), + .OUT(gpio_out[14]), + .PAD(gpio[14]), + .PAD_A_ESD_0_H(analog_io[14]), + .PAD_A_NOESD_H(analog_noesd_io[14]), + .SLOW(gpio_slow_sel[14]), + .TIE_HI_ESD(\loop1_gpio[14] ), + .TIE_LO_ESD(\loop0_gpio[14] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[14]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[15] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[15]), + .ANALOG_POL(gpio_analog_pol[15]), + .ANALOG_SEL(gpio_analog_sel[15]), + .DM({ gpio_dm2[15], gpio_dm1[15], gpio_dm0[15] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[15] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[15]), + .ENABLE_VSWITCH_H(\loop0_gpio[15] ), + .HLD_H_N(\loop1_gpio[15] ), + .HLD_OVR(gpio_holdover[15]), + .IB_MODE_SEL(gpio_ib_mode_sel[15]), + .IN(gpio_in[15]), + .INP_DIS(gpio_inp_dis[15]), + .IN_H(gpio_in_h[15]), + .OE_N(gpio_oeb[15]), + .OUT(gpio_out[15]), + .PAD(gpio[15]), + .PAD_A_ESD_0_H(analog_io[15]), + .PAD_A_NOESD_H(analog_noesd_io[15]), + .SLOW(gpio_slow_sel[15]), + .TIE_HI_ESD(\loop1_gpio[15] ), + .TIE_LO_ESD(\loop0_gpio[15] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[15]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[16] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[16]), + .ANALOG_POL(gpio_analog_pol[16]), + .ANALOG_SEL(gpio_analog_sel[16]), + .DM({ gpio_dm2[16], gpio_dm1[16], gpio_dm0[16] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[16] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[16]), + .ENABLE_VSWITCH_H(\loop0_gpio[16] ), + .HLD_H_N(\loop1_gpio[16] ), + .HLD_OVR(gpio_holdover[16]), + .IB_MODE_SEL(gpio_ib_mode_sel[16]), + .IN(gpio_in[16]), + .INP_DIS(gpio_inp_dis[16]), + .IN_H(gpio_in_h[16]), + .OE_N(gpio_oeb[16]), + .OUT(gpio_out[16]), + .PAD(gpio[16]), + .PAD_A_ESD_0_H(analog_io[16]), + .PAD_A_NOESD_H(analog_noesd_io[16]), + .SLOW(gpio_slow_sel[16]), + .TIE_HI_ESD(\loop1_gpio[16] ), + .TIE_LO_ESD(\loop0_gpio[16] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[16]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[17] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[17]), + .ANALOG_POL(gpio_analog_pol[17]), + .ANALOG_SEL(gpio_analog_sel[17]), + .DM({ gpio_dm2[17], gpio_dm1[17], gpio_dm0[17] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[17] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[17]), + .ENABLE_VSWITCH_H(\loop0_gpio[17] ), + .HLD_H_N(\loop1_gpio[17] ), + .HLD_OVR(gpio_holdover[17]), + .IB_MODE_SEL(gpio_ib_mode_sel[17]), + .IN(gpio_in[17]), + .INP_DIS(gpio_inp_dis[17]), + .IN_H(gpio_in_h[17]), + .OE_N(gpio_oeb[17]), + .OUT(gpio_out[17]), + .PAD(gpio[17]), + .PAD_A_ESD_0_H(analog_io[17]), + .PAD_A_NOESD_H(analog_noesd_io[17]), + .SLOW(gpio_slow_sel[17]), + .TIE_HI_ESD(\loop1_gpio[17] ), + .TIE_LO_ESD(\loop0_gpio[17] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[17]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[18] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[18]), + .ANALOG_POL(gpio_analog_pol[18]), + .ANALOG_SEL(gpio_analog_sel[18]), + .DM({ gpio_dm2[18], gpio_dm1[18], gpio_dm0[18] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[18] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[18]), + .ENABLE_VSWITCH_H(\loop0_gpio[18] ), + .HLD_H_N(\loop1_gpio[18] ), + .HLD_OVR(gpio_holdover[18]), + .IB_MODE_SEL(gpio_ib_mode_sel[18]), + .IN(gpio_in[18]), + .INP_DIS(gpio_inp_dis[18]), + .IN_H(gpio_in_h[18]), + .OE_N(gpio_oeb[18]), + .OUT(gpio_out[18]), + .PAD(gpio[18]), + .PAD_A_ESD_0_H(analog_io[18]), + .PAD_A_NOESD_H(analog_noesd_io[18]), + .SLOW(gpio_slow_sel[18]), + .TIE_HI_ESD(\loop1_gpio[18] ), + .TIE_LO_ESD(\loop0_gpio[18] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[18]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[1] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[1]), + .ANALOG_POL(gpio_analog_pol[1]), + .ANALOG_SEL(gpio_analog_sel[1]), + .DM({ gpio_dm2[1], gpio_dm1[1], gpio_dm0[1] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[1] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[1]), + .ENABLE_VSWITCH_H(\loop0_gpio[1] ), + .HLD_H_N(\loop1_gpio[1] ), + .HLD_OVR(gpio_holdover[1]), + .IB_MODE_SEL(gpio_ib_mode_sel[1]), + .IN(gpio_in[1]), + .INP_DIS(gpio_inp_dis[1]), + .IN_H(gpio_in_h[1]), + .OE_N(gpio_oeb[1]), + .OUT(gpio_out[1]), + .PAD(gpio[1]), + .PAD_A_ESD_0_H(analog_io[1]), + .PAD_A_NOESD_H(analog_noesd_io[1]), + .SLOW(gpio_slow_sel[1]), + .TIE_HI_ESD(\loop1_gpio[1] ), + .TIE_LO_ESD(\loop0_gpio[1] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[1]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[2] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[2]), + .ANALOG_POL(gpio_analog_pol[2]), + .ANALOG_SEL(gpio_analog_sel[2]), + .DM({ gpio_dm2[2], gpio_dm1[2], gpio_dm0[2] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[2] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[2]), + .ENABLE_VSWITCH_H(\loop0_gpio[2] ), + .HLD_H_N(\loop1_gpio[2] ), + .HLD_OVR(gpio_holdover[2]), + .IB_MODE_SEL(gpio_ib_mode_sel[2]), + .IN(gpio_in[2]), + .INP_DIS(gpio_inp_dis[2]), + .IN_H(gpio_in_h[2]), + .OE_N(gpio_oeb[2]), + .OUT(gpio_out[2]), + .PAD(gpio[2]), + .PAD_A_ESD_0_H(analog_io[2]), + .PAD_A_NOESD_H(analog_noesd_io[2]), + .SLOW(gpio_slow_sel[2]), + .TIE_HI_ESD(\loop1_gpio[2] ), + .TIE_LO_ESD(\loop0_gpio[2] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[2]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[3] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[3]), + .ANALOG_POL(gpio_analog_pol[3]), + .ANALOG_SEL(gpio_analog_sel[3]), + .DM({ gpio_dm2[3], gpio_dm1[3], gpio_dm0[3] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[3] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[3]), + .ENABLE_VSWITCH_H(\loop0_gpio[3] ), + .HLD_H_N(\loop1_gpio[3] ), + .HLD_OVR(gpio_holdover[3]), + .IB_MODE_SEL(gpio_ib_mode_sel[3]), + .IN(gpio_in[3]), + .INP_DIS(gpio_inp_dis[3]), + .IN_H(gpio_in_h[3]), + .OE_N(gpio_oeb[3]), + .OUT(gpio_out[3]), + .PAD(gpio[3]), + .PAD_A_ESD_0_H(analog_io[3]), + .PAD_A_NOESD_H(analog_noesd_io[3]), + .SLOW(gpio_slow_sel[3]), + .TIE_HI_ESD(\loop1_gpio[3] ), + .TIE_LO_ESD(\loop0_gpio[3] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[3]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[4] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[4]), + .ANALOG_POL(gpio_analog_pol[4]), + .ANALOG_SEL(gpio_analog_sel[4]), + .DM({ gpio_dm2[4], gpio_dm1[4], gpio_dm0[4] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[4] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[4]), + .ENABLE_VSWITCH_H(\loop0_gpio[4] ), + .HLD_H_N(\loop1_gpio[4] ), + .HLD_OVR(gpio_holdover[4]), + .IB_MODE_SEL(gpio_ib_mode_sel[4]), + .IN(gpio_in[4]), + .INP_DIS(gpio_inp_dis[4]), + .IN_H(gpio_in_h[4]), + .OE_N(gpio_oeb[4]), + .OUT(gpio_out[4]), + .PAD(gpio[4]), + .PAD_A_ESD_0_H(analog_io[4]), + .PAD_A_NOESD_H(analog_noesd_io[4]), + .SLOW(gpio_slow_sel[4]), + .TIE_HI_ESD(\loop1_gpio[4] ), + .TIE_LO_ESD(\loop0_gpio[4] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[4]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[5] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[5]), + .ANALOG_POL(gpio_analog_pol[5]), + .ANALOG_SEL(gpio_analog_sel[5]), + .DM({ gpio_dm2[5], gpio_dm1[5], gpio_dm0[5] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[5] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[5]), + .ENABLE_VSWITCH_H(\loop0_gpio[5] ), + .HLD_H_N(\loop1_gpio[5] ), + .HLD_OVR(gpio_holdover[5]), + .IB_MODE_SEL(gpio_ib_mode_sel[5]), + .IN(gpio_in[5]), + .INP_DIS(gpio_inp_dis[5]), + .IN_H(gpio_in_h[5]), + .OE_N(gpio_oeb[5]), + .OUT(gpio_out[5]), + .PAD(gpio[5]), + .PAD_A_ESD_0_H(analog_io[5]), + .PAD_A_NOESD_H(analog_noesd_io[5]), + .SLOW(gpio_slow_sel[5]), + .TIE_HI_ESD(\loop1_gpio[5] ), + .TIE_LO_ESD(\loop0_gpio[5] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[5]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[6] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[6]), + .ANALOG_POL(gpio_analog_pol[6]), + .ANALOG_SEL(gpio_analog_sel[6]), + .DM({ gpio_dm2[6], gpio_dm1[6], gpio_dm0[6] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[6] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[6]), + .ENABLE_VSWITCH_H(\loop0_gpio[6] ), + .HLD_H_N(\loop1_gpio[6] ), + .HLD_OVR(gpio_holdover[6]), + .IB_MODE_SEL(gpio_ib_mode_sel[6]), + .IN(gpio_in[6]), + .INP_DIS(gpio_inp_dis[6]), + .IN_H(gpio_in_h[6]), + .OE_N(gpio_oeb[6]), + .OUT(gpio_out[6]), + .PAD(gpio[6]), + .PAD_A_ESD_0_H(analog_io[6]), + .PAD_A_NOESD_H(analog_noesd_io[6]), + .SLOW(gpio_slow_sel[6]), + .TIE_HI_ESD(\loop1_gpio[6] ), + .TIE_LO_ESD(\loop0_gpio[6] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[6]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[7] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[7]), + .ANALOG_POL(gpio_analog_pol[7]), + .ANALOG_SEL(gpio_analog_sel[7]), + .DM({ gpio_dm2[7], gpio_dm1[7], gpio_dm0[7] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[7] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[7]), + .ENABLE_VSWITCH_H(\loop0_gpio[7] ), + .HLD_H_N(\loop1_gpio[7] ), + .HLD_OVR(gpio_holdover[7]), + .IB_MODE_SEL(gpio_ib_mode_sel[7]), + .IN(gpio_in[7]), + .INP_DIS(gpio_inp_dis[7]), + .IN_H(gpio_in_h[7]), + .OE_N(gpio_oeb[7]), + .OUT(gpio_out[7]), + .PAD(gpio[7]), + .PAD_A_ESD_0_H(analog_io[7]), + .PAD_A_NOESD_H(analog_noesd_io[7]), + .SLOW(gpio_slow_sel[7]), + .TIE_HI_ESD(\loop1_gpio[7] ), + .TIE_LO_ESD(\loop0_gpio[7] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[7]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[8] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[8]), + .ANALOG_POL(gpio_analog_pol[8]), + .ANALOG_SEL(gpio_analog_sel[8]), + .DM({ gpio_dm2[8], gpio_dm1[8], gpio_dm0[8] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[8] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[8]), + .ENABLE_VSWITCH_H(\loop0_gpio[8] ), + .HLD_H_N(\loop1_gpio[8] ), + .HLD_OVR(gpio_holdover[8]), + .IB_MODE_SEL(gpio_ib_mode_sel[8]), + .IN(gpio_in[8]), + .INP_DIS(gpio_inp_dis[8]), + .IN_H(gpio_in_h[8]), + .OE_N(gpio_oeb[8]), + .OUT(gpio_out[8]), + .PAD(gpio[8]), + .PAD_A_ESD_0_H(analog_io[8]), + .PAD_A_NOESD_H(analog_noesd_io[8]), + .SLOW(gpio_slow_sel[8]), + .TIE_HI_ESD(\loop1_gpio[8] ), + .TIE_LO_ESD(\loop0_gpio[8] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[8]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area1_gpio_pad[9] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[9]), + .ANALOG_POL(gpio_analog_pol[9]), + .ANALOG_SEL(gpio_analog_sel[9]), + .DM({ gpio_dm2[9], gpio_dm1[9], gpio_dm0[9] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[9] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[9]), + .ENABLE_VSWITCH_H(\loop0_gpio[9] ), + .HLD_H_N(\loop1_gpio[9] ), + .HLD_OVR(gpio_holdover[9]), + .IB_MODE_SEL(gpio_ib_mode_sel[9]), + .IN(gpio_in[9]), + .INP_DIS(gpio_inp_dis[9]), + .IN_H(gpio_in_h[9]), + .OE_N(gpio_oeb[9]), + .OUT(gpio_out[9]), + .PAD(gpio[9]), + .PAD_A_ESD_0_H(analog_io[9]), + .PAD_A_NOESD_H(analog_noesd_io[9]), + .SLOW(gpio_slow_sel[9]), + .TIE_HI_ESD(\loop1_gpio[9] ), + .TIE_LO_ESD(\loop0_gpio[9] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[9]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[0] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[19]), + .ANALOG_POL(gpio_analog_pol[19]), + .ANALOG_SEL(gpio_analog_sel[19]), + .DM({ gpio_dm2[19], gpio_dm1[19], gpio_dm0[19] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[19] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[19]), + .ENABLE_VSWITCH_H(\loop0_gpio[19] ), + .HLD_H_N(\loop1_gpio[19] ), + .HLD_OVR(gpio_holdover[19]), + .IB_MODE_SEL(gpio_ib_mode_sel[19]), + .IN(gpio_in[19]), + .INP_DIS(gpio_inp_dis[19]), + .IN_H(gpio_in_h[19]), + .OE_N(gpio_oeb[19]), + .OUT(gpio_out[19]), + .PAD(gpio[19]), + .PAD_A_ESD_0_H(analog_io[19]), + .PAD_A_NOESD_H(analog_noesd_io[19]), + .SLOW(gpio_slow_sel[19]), + .TIE_HI_ESD(\loop1_gpio[19] ), + .TIE_LO_ESD(\loop0_gpio[19] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[19]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[10] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[29]), + .ANALOG_POL(gpio_analog_pol[29]), + .ANALOG_SEL(gpio_analog_sel[29]), + .DM({ gpio_dm2[29], gpio_dm1[29], gpio_dm0[29] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[29] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[29]), + .ENABLE_VSWITCH_H(\loop0_gpio[29] ), + .HLD_H_N(\loop1_gpio[29] ), + .HLD_OVR(gpio_holdover[29]), + .IB_MODE_SEL(gpio_ib_mode_sel[29]), + .IN(gpio_in[29]), + .INP_DIS(gpio_inp_dis[29]), + .IN_H(gpio_in_h[29]), + .OE_N(gpio_oeb[29]), + .OUT(gpio_out[29]), + .PAD(gpio[29]), + .PAD_A_ESD_0_H(analog_io[29]), + .PAD_A_NOESD_H(analog_noesd_io[29]), + .SLOW(gpio_slow_sel[29]), + .TIE_HI_ESD(\loop1_gpio[29] ), + .TIE_LO_ESD(\loop0_gpio[29] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[29]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[11] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[30]), + .ANALOG_POL(gpio_analog_pol[30]), + .ANALOG_SEL(gpio_analog_sel[30]), + .DM({ gpio_dm2[30], gpio_dm1[30], gpio_dm0[30] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[30] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[30]), + .ENABLE_VSWITCH_H(\loop0_gpio[30] ), + .HLD_H_N(\loop1_gpio[30] ), + .HLD_OVR(gpio_holdover[30]), + .IB_MODE_SEL(gpio_ib_mode_sel[30]), + .IN(gpio_in[30]), + .INP_DIS(gpio_inp_dis[30]), + .IN_H(gpio_in_h[30]), + .OE_N(gpio_oeb[30]), + .OUT(gpio_out[30]), + .PAD(gpio[30]), + .PAD_A_ESD_0_H(analog_io[30]), + .PAD_A_NOESD_H(analog_noesd_io[30]), + .SLOW(gpio_slow_sel[30]), + .TIE_HI_ESD(\loop1_gpio[30] ), + .TIE_LO_ESD(\loop0_gpio[30] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[30]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[12] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[31]), + .ANALOG_POL(gpio_analog_pol[31]), + .ANALOG_SEL(gpio_analog_sel[31]), + .DM({ gpio_dm2[31], gpio_dm1[31], gpio_dm0[31] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[31] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[31]), + .ENABLE_VSWITCH_H(\loop0_gpio[31] ), + .HLD_H_N(\loop1_gpio[31] ), + .HLD_OVR(gpio_holdover[31]), + .IB_MODE_SEL(gpio_ib_mode_sel[31]), + .IN(gpio_in[31]), + .INP_DIS(gpio_inp_dis[31]), + .IN_H(gpio_in_h[31]), + .OE_N(gpio_oeb[31]), + .OUT(gpio_out[31]), + .PAD(gpio[31]), + .PAD_A_ESD_0_H(analog_io[31]), + .PAD_A_NOESD_H(analog_noesd_io[31]), + .SLOW(gpio_slow_sel[31]), + .TIE_HI_ESD(\loop1_gpio[31] ), + .TIE_LO_ESD(\loop0_gpio[31] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[31]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[13] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[32]), + .ANALOG_POL(gpio_analog_pol[32]), + .ANALOG_SEL(gpio_analog_sel[32]), + .DM({ gpio_dm2[32], gpio_dm1[32], gpio_dm0[32] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[32] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[32]), + .ENABLE_VSWITCH_H(\loop0_gpio[32] ), + .HLD_H_N(\loop1_gpio[32] ), + .HLD_OVR(gpio_holdover[32]), + .IB_MODE_SEL(gpio_ib_mode_sel[32]), + .IN(gpio_in[32]), + .INP_DIS(gpio_inp_dis[32]), + .IN_H(gpio_in_h[32]), + .OE_N(gpio_oeb[32]), + .OUT(gpio_out[32]), + .PAD(gpio[32]), + .PAD_A_ESD_0_H(analog_io[32]), + .PAD_A_NOESD_H(analog_noesd_io[32]), + .SLOW(gpio_slow_sel[32]), + .TIE_HI_ESD(\loop1_gpio[32] ), + .TIE_LO_ESD(\loop0_gpio[32] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[32]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[14] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[33]), + .ANALOG_POL(gpio_analog_pol[33]), + .ANALOG_SEL(gpio_analog_sel[33]), + .DM({ gpio_dm2[33], gpio_dm1[33], gpio_dm0[33] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[33] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[33]), + .ENABLE_VSWITCH_H(\loop0_gpio[33] ), + .HLD_H_N(\loop1_gpio[33] ), + .HLD_OVR(gpio_holdover[33]), + .IB_MODE_SEL(gpio_ib_mode_sel[33]), + .IN(gpio_in[33]), + .INP_DIS(gpio_inp_dis[33]), + .IN_H(gpio_in_h[33]), + .OE_N(gpio_oeb[33]), + .OUT(gpio_out[33]), + .PAD(gpio[33]), + .PAD_A_ESD_0_H(analog_io[33]), + .PAD_A_NOESD_H(analog_noesd_io[33]), + .SLOW(gpio_slow_sel[33]), + .TIE_HI_ESD(\loop1_gpio[33] ), + .TIE_LO_ESD(\loop0_gpio[33] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[33]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[15] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[34]), + .ANALOG_POL(gpio_analog_pol[34]), + .ANALOG_SEL(gpio_analog_sel[34]), + .DM({ gpio_dm2[34], gpio_dm1[34], gpio_dm0[34] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[34] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[34]), + .ENABLE_VSWITCH_H(\loop0_gpio[34] ), + .HLD_H_N(\loop1_gpio[34] ), + .HLD_OVR(gpio_holdover[34]), + .IB_MODE_SEL(gpio_ib_mode_sel[34]), + .IN(gpio_in[34]), + .INP_DIS(gpio_inp_dis[34]), + .IN_H(gpio_in_h[34]), + .OE_N(gpio_oeb[34]), + .OUT(gpio_out[34]), + .PAD(gpio[34]), + .PAD_A_ESD_0_H(analog_io[34]), + .PAD_A_NOESD_H(analog_noesd_io[34]), + .SLOW(gpio_slow_sel[34]), + .TIE_HI_ESD(\loop1_gpio[34] ), + .TIE_LO_ESD(\loop0_gpio[34] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[34]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[16] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[35]), + .ANALOG_POL(gpio_analog_pol[35]), + .ANALOG_SEL(gpio_analog_sel[35]), + .DM({ gpio_dm2[35], gpio_dm1[35], gpio_dm0[35] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[35] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[35]), + .ENABLE_VSWITCH_H(\loop0_gpio[35] ), + .HLD_H_N(\loop1_gpio[35] ), + .HLD_OVR(gpio_holdover[35]), + .IB_MODE_SEL(gpio_ib_mode_sel[35]), + .IN(gpio_in[35]), + .INP_DIS(gpio_inp_dis[35]), + .IN_H(gpio_in_h[35]), + .OE_N(gpio_oeb[35]), + .OUT(gpio_out[35]), + .PAD(gpio[35]), + .PAD_A_ESD_0_H(analog_io[35]), + .PAD_A_NOESD_H(analog_noesd_io[35]), + .SLOW(gpio_slow_sel[35]), + .TIE_HI_ESD(\loop1_gpio[35] ), + .TIE_LO_ESD(\loop0_gpio[35] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[35]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[17] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[36]), + .ANALOG_POL(gpio_analog_pol[36]), + .ANALOG_SEL(gpio_analog_sel[36]), + .DM({ gpio_dm2[36], gpio_dm1[36], gpio_dm0[36] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[36] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[36]), + .ENABLE_VSWITCH_H(\loop0_gpio[36] ), + .HLD_H_N(\loop1_gpio[36] ), + .HLD_OVR(gpio_holdover[36]), + .IB_MODE_SEL(gpio_ib_mode_sel[36]), + .IN(gpio_in[36]), + .INP_DIS(gpio_inp_dis[36]), + .IN_H(gpio_in_h[36]), + .OE_N(gpio_oeb[36]), + .OUT(gpio_out[36]), + .PAD(gpio[36]), + .PAD_A_ESD_0_H(analog_io[36]), + .PAD_A_NOESD_H(analog_noesd_io[36]), + .SLOW(gpio_slow_sel[36]), + .TIE_HI_ESD(\loop1_gpio[36] ), + .TIE_LO_ESD(\loop0_gpio[36] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[36]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[18] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[37]), + .ANALOG_POL(gpio_analog_pol[37]), + .ANALOG_SEL(gpio_analog_sel[37]), + .DM({ gpio_dm2[37], gpio_dm1[37], gpio_dm0[37] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[37] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[37]), + .ENABLE_VSWITCH_H(\loop0_gpio[37] ), + .HLD_H_N(\loop1_gpio[37] ), + .HLD_OVR(gpio_holdover[37]), + .IB_MODE_SEL(gpio_ib_mode_sel[37]), + .IN(gpio_in[37]), + .INP_DIS(gpio_inp_dis[37]), + .IN_H(gpio_in_h[37]), + .OE_N(gpio_oeb[37]), + .OUT(gpio_out[37]), + .PAD(gpio[37]), + .PAD_A_ESD_0_H(analog_io[37]), + .PAD_A_NOESD_H(analog_noesd_io[37]), + .SLOW(gpio_slow_sel[37]), + .TIE_HI_ESD(\loop1_gpio[37] ), + .TIE_LO_ESD(\loop0_gpio[37] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[37]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[1] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[20]), + .ANALOG_POL(gpio_analog_pol[20]), + .ANALOG_SEL(gpio_analog_sel[20]), + .DM({ gpio_dm2[20], gpio_dm1[20], gpio_dm0[20] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[20] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[20]), + .ENABLE_VSWITCH_H(\loop0_gpio[20] ), + .HLD_H_N(\loop1_gpio[20] ), + .HLD_OVR(gpio_holdover[20]), + .IB_MODE_SEL(gpio_ib_mode_sel[20]), + .IN(gpio_in[20]), + .INP_DIS(gpio_inp_dis[20]), + .IN_H(gpio_in_h[20]), + .OE_N(gpio_oeb[20]), + .OUT(gpio_out[20]), + .PAD(gpio[20]), + .PAD_A_ESD_0_H(analog_io[20]), + .PAD_A_NOESD_H(analog_noesd_io[20]), + .SLOW(gpio_slow_sel[20]), + .TIE_HI_ESD(\loop1_gpio[20] ), + .TIE_LO_ESD(\loop0_gpio[20] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[20]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[2] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[21]), + .ANALOG_POL(gpio_analog_pol[21]), + .ANALOG_SEL(gpio_analog_sel[21]), + .DM({ gpio_dm2[21], gpio_dm1[21], gpio_dm0[21] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[21] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[21]), + .ENABLE_VSWITCH_H(\loop0_gpio[21] ), + .HLD_H_N(\loop1_gpio[21] ), + .HLD_OVR(gpio_holdover[21]), + .IB_MODE_SEL(gpio_ib_mode_sel[21]), + .IN(gpio_in[21]), + .INP_DIS(gpio_inp_dis[21]), + .IN_H(gpio_in_h[21]), + .OE_N(gpio_oeb[21]), + .OUT(gpio_out[21]), + .PAD(gpio[21]), + .PAD_A_ESD_0_H(analog_io[21]), + .PAD_A_NOESD_H(analog_noesd_io[21]), + .SLOW(gpio_slow_sel[21]), + .TIE_HI_ESD(\loop1_gpio[21] ), + .TIE_LO_ESD(\loop0_gpio[21] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[21]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[3] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[22]), + .ANALOG_POL(gpio_analog_pol[22]), + .ANALOG_SEL(gpio_analog_sel[22]), + .DM({ gpio_dm2[22], gpio_dm1[22], gpio_dm0[22] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[22] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[22]), + .ENABLE_VSWITCH_H(\loop0_gpio[22] ), + .HLD_H_N(\loop1_gpio[22] ), + .HLD_OVR(gpio_holdover[22]), + .IB_MODE_SEL(gpio_ib_mode_sel[22]), + .IN(gpio_in[22]), + .INP_DIS(gpio_inp_dis[22]), + .IN_H(gpio_in_h[22]), + .OE_N(gpio_oeb[22]), + .OUT(gpio_out[22]), + .PAD(gpio[22]), + .PAD_A_ESD_0_H(analog_io[22]), + .PAD_A_NOESD_H(analog_noesd_io[22]), + .SLOW(gpio_slow_sel[22]), + .TIE_HI_ESD(\loop1_gpio[22] ), + .TIE_LO_ESD(\loop0_gpio[22] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[22]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[4] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[23]), + .ANALOG_POL(gpio_analog_pol[23]), + .ANALOG_SEL(gpio_analog_sel[23]), + .DM({ gpio_dm2[23], gpio_dm1[23], gpio_dm0[23] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[23] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[23]), + .ENABLE_VSWITCH_H(\loop0_gpio[23] ), + .HLD_H_N(\loop1_gpio[23] ), + .HLD_OVR(gpio_holdover[23]), + .IB_MODE_SEL(gpio_ib_mode_sel[23]), + .IN(gpio_in[23]), + .INP_DIS(gpio_inp_dis[23]), + .IN_H(gpio_in_h[23]), + .OE_N(gpio_oeb[23]), + .OUT(gpio_out[23]), + .PAD(gpio[23]), + .PAD_A_ESD_0_H(analog_io[23]), + .PAD_A_NOESD_H(analog_noesd_io[23]), + .SLOW(gpio_slow_sel[23]), + .TIE_HI_ESD(\loop1_gpio[23] ), + .TIE_LO_ESD(\loop0_gpio[23] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[23]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[5] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[24]), + .ANALOG_POL(gpio_analog_pol[24]), + .ANALOG_SEL(gpio_analog_sel[24]), + .DM({ gpio_dm2[24], gpio_dm1[24], gpio_dm0[24] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[24] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[24]), + .ENABLE_VSWITCH_H(\loop0_gpio[24] ), + .HLD_H_N(\loop1_gpio[24] ), + .HLD_OVR(gpio_holdover[24]), + .IB_MODE_SEL(gpio_ib_mode_sel[24]), + .IN(gpio_in[24]), + .INP_DIS(gpio_inp_dis[24]), + .IN_H(gpio_in_h[24]), + .OE_N(gpio_oeb[24]), + .OUT(gpio_out[24]), + .PAD(gpio[24]), + .PAD_A_ESD_0_H(analog_io[24]), + .PAD_A_NOESD_H(analog_noesd_io[24]), + .SLOW(gpio_slow_sel[24]), + .TIE_HI_ESD(\loop1_gpio[24] ), + .TIE_LO_ESD(\loop0_gpio[24] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[24]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[6] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[25]), + .ANALOG_POL(gpio_analog_pol[25]), + .ANALOG_SEL(gpio_analog_sel[25]), + .DM({ gpio_dm2[25], gpio_dm1[25], gpio_dm0[25] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[25] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[25]), + .ENABLE_VSWITCH_H(\loop0_gpio[25] ), + .HLD_H_N(\loop1_gpio[25] ), + .HLD_OVR(gpio_holdover[25]), + .IB_MODE_SEL(gpio_ib_mode_sel[25]), + .IN(gpio_in[25]), + .INP_DIS(gpio_inp_dis[25]), + .IN_H(gpio_in_h[25]), + .OE_N(gpio_oeb[25]), + .OUT(gpio_out[25]), + .PAD(gpio[25]), + .PAD_A_ESD_0_H(analog_io[25]), + .PAD_A_NOESD_H(analog_noesd_io[25]), + .SLOW(gpio_slow_sel[25]), + .TIE_HI_ESD(\loop1_gpio[25] ), + .TIE_LO_ESD(\loop0_gpio[25] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[25]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[7] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[26]), + .ANALOG_POL(gpio_analog_pol[26]), + .ANALOG_SEL(gpio_analog_sel[26]), + .DM({ gpio_dm2[26], gpio_dm1[26], gpio_dm0[26] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[26] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[26]), + .ENABLE_VSWITCH_H(\loop0_gpio[26] ), + .HLD_H_N(\loop1_gpio[26] ), + .HLD_OVR(gpio_holdover[26]), + .IB_MODE_SEL(gpio_ib_mode_sel[26]), + .IN(gpio_in[26]), + .INP_DIS(gpio_inp_dis[26]), + .IN_H(gpio_in_h[26]), + .OE_N(gpio_oeb[26]), + .OUT(gpio_out[26]), + .PAD(gpio[26]), + .PAD_A_ESD_0_H(analog_io[26]), + .PAD_A_NOESD_H(analog_noesd_io[26]), + .SLOW(gpio_slow_sel[26]), + .TIE_HI_ESD(\loop1_gpio[26] ), + .TIE_LO_ESD(\loop0_gpio[26] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[26]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[8] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[27]), + .ANALOG_POL(gpio_analog_pol[27]), + .ANALOG_SEL(gpio_analog_sel[27]), + .DM({ gpio_dm2[27], gpio_dm1[27], gpio_dm0[27] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[27] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[27]), + .ENABLE_VSWITCH_H(\loop0_gpio[27] ), + .HLD_H_N(\loop1_gpio[27] ), + .HLD_OVR(gpio_holdover[27]), + .IB_MODE_SEL(gpio_ib_mode_sel[27]), + .IN(gpio_in[27]), + .INP_DIS(gpio_inp_dis[27]), + .IN_H(gpio_in_h[27]), + .OE_N(gpio_oeb[27]), + .OUT(gpio_out[27]), + .PAD(gpio[27]), + .PAD_A_ESD_0_H(analog_io[27]), + .PAD_A_NOESD_H(analog_noesd_io[27]), + .SLOW(gpio_slow_sel[27]), + .TIE_HI_ESD(\loop1_gpio[27] ), + .TIE_LO_ESD(\loop0_gpio[27] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[27]) + ); + sky130_ef_io__gpiov2_pad_wrapped \area2_gpio_pad[9] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .ANALOG_EN(gpio_analog_en[28]), + .ANALOG_POL(gpio_analog_pol[28]), + .ANALOG_SEL(gpio_analog_sel[28]), + .DM({ gpio_dm2[28], gpio_dm1[28], gpio_dm0[28] }), + .ENABLE_H(porb_h), + .ENABLE_INP_H(\loop0_gpio[28] ), + .ENABLE_VDDA_H(porb_h), + .ENABLE_VDDIO(gpio_loopback_one[28]), + .ENABLE_VSWITCH_H(\loop0_gpio[28] ), + .HLD_H_N(\loop1_gpio[28] ), + .HLD_OVR(gpio_holdover[28]), + .IB_MODE_SEL(gpio_ib_mode_sel[28]), + .IN(gpio_in[28]), + .INP_DIS(gpio_inp_dis[28]), + .IN_H(gpio_in_h[28]), + .OE_N(gpio_oeb[28]), + .OUT(gpio_out[28]), + .PAD(gpio[28]), + .PAD_A_ESD_0_H(analog_io[28]), + .PAD_A_NOESD_H(analog_noesd_io[28]), + .SLOW(gpio_slow_sel[28]), + .TIE_HI_ESD(\loop1_gpio[28] ), + .TIE_LO_ESD(\loop0_gpio[28] ), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .VTRIP_SEL(gpio_vtrip_sel[28]) + ); + constant_block \constant_value_inst[0] ( + .one(gpio_loopback_one[0]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[0]) + ); + constant_block \constant_value_inst[10] ( + .one(gpio_loopback_one[10]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[10]) + ); + constant_block \constant_value_inst[11] ( + .one(gpio_loopback_one[11]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[11]) + ); + constant_block \constant_value_inst[12] ( + .one(gpio_loopback_one[12]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[12]) + ); + constant_block \constant_value_inst[13] ( + .one(gpio_loopback_one[13]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[13]) + ); + constant_block \constant_value_inst[14] ( + .one(gpio_loopback_one[14]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[14]) + ); + constant_block \constant_value_inst[15] ( + .one(gpio_loopback_one[15]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[15]) + ); + constant_block \constant_value_inst[16] ( + .one(gpio_loopback_one[16]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[16]) + ); + constant_block \constant_value_inst[17] ( + .one(gpio_loopback_one[17]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[17]) + ); + constant_block \constant_value_inst[18] ( + .one(gpio_loopback_one[18]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[18]) + ); + constant_block \constant_value_inst[19] ( + .one(gpio_loopback_one[19]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[19]) + ); + constant_block \constant_value_inst[1] ( + .one(gpio_loopback_one[1]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[1]) + ); + constant_block \constant_value_inst[20] ( + .one(gpio_loopback_one[20]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[20]) + ); + constant_block \constant_value_inst[21] ( + .one(gpio_loopback_one[21]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[21]) + ); + constant_block \constant_value_inst[22] ( + .one(gpio_loopback_one[22]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[22]) + ); + constant_block \constant_value_inst[23] ( + .one(gpio_loopback_one[23]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[23]) + ); + constant_block \constant_value_inst[24] ( + .one(gpio_loopback_one[24]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[24]) + ); + constant_block \constant_value_inst[25] ( + .one(gpio_loopback_one[25]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[25]) + ); + constant_block \constant_value_inst[26] ( + .one(gpio_loopback_one[26]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[26]) + ); + constant_block \constant_value_inst[27] ( + .one(gpio_loopback_one[27]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[27]) + ); + constant_block \constant_value_inst[28] ( + .one(gpio_loopback_one[28]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[28]) + ); + constant_block \constant_value_inst[29] ( + .one(gpio_loopback_one[29]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[29]) + ); + constant_block \constant_value_inst[2] ( + .one(gpio_loopback_one[2]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[2]) + ); + constant_block \constant_value_inst[30] ( + .one(gpio_loopback_one[30]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[30]) + ); + constant_block \constant_value_inst[31] ( + .one(gpio_loopback_one[31]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[31]) + ); + constant_block \constant_value_inst[32] ( + .one(gpio_loopback_one[32]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[32]) + ); + constant_block \constant_value_inst[33] ( + .one(gpio_loopback_one[33]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[33]) + ); + constant_block \constant_value_inst[34] ( + .one(gpio_loopback_one[34]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[34]) + ); + constant_block \constant_value_inst[35] ( + .one(gpio_loopback_one[35]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[35]) + ); + constant_block \constant_value_inst[36] ( + .one(gpio_loopback_one[36]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[36]) + ); + constant_block \constant_value_inst[37] ( + .one(gpio_loopback_one[37]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[37]) + ); + constant_block \constant_value_inst[38] ( + .one(gpio_loopback_one[38]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[38]) + ); + constant_block \constant_value_inst[39] ( + .one(gpio_loopback_one[39]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[39]) + ); + constant_block \constant_value_inst[3] ( + .one(gpio_loopback_one[3]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[3]) + ); + constant_block \constant_value_inst[40] ( + .one(gpio_loopback_one[40]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[40]) + ); + constant_block \constant_value_inst[41] ( + .one(gpio_loopback_one[41]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[41]) + ); + constant_block \constant_value_inst[42] ( + .one(gpio_loopback_one[42]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[42]) + ); + constant_block \constant_value_inst[43] ( + .one(gpio_loopback_one[43]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[43]) + ); + constant_block \constant_value_inst[4] ( + .one(gpio_loopback_one[4]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[4]) + ); + constant_block \constant_value_inst[5] ( + .one(gpio_loopback_one[5]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[5]) + ); + constant_block \constant_value_inst[6] ( + .one(gpio_loopback_one[6]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[6]) + ); + constant_block \constant_value_inst[7] ( + .one(gpio_loopback_one[7]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[7]) + ); + constant_block \constant_value_inst[8] ( + .one(gpio_loopback_one[8]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[8]) + ); + constant_block \constant_value_inst[9] ( + .one(gpio_loopback_one[9]), + .vccd(vccd), + .vssd(vssd), + .zero(gpio_loopback_zero[9]) + ); + constant_block constant_value_xres_inst ( + .one(xres_loopback_one), + .vccd(vccd), + .vssd(vssd), + .zero(xres_loopback_zero) + ); + sky130_fd_io__top_xres4v2 master_resetb_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .DISABLE_PULLUP_H(xres_vss_loop), + .ENABLE_H(porb_h), + .ENABLE_VDDIO(xres_loopback_one), + .EN_VDDIO_SIG_H(xres_vss_loop), + .FILT_IN_H(xres_vss_loop), + .INP_SEL_H(xres_vss_loop), + .PAD(resetb_pad), + .PAD_A_ESD_H(xresloop), + .PULLUP_H(xres_vss_loop), + .TIE_LO_ESD(xres_vss_loop), + .TIE_WEAK_HI_H(xresloop), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio), + .XRES_H_N(resetb_h) + ); + simple_por por ( + .por_l(por_l), + .porb_h(porb_h), + .porb_l(porb_l), + .vdd1v8(vccd), + .vdd3v3(vddio), + .vss1v8(vssd), + .vss3v3(vssio) + ); + xres_buf rstb_level ( + .A(resetb_h), + .LVGND(vssd), + .LVPWR(vccd), + .VGND(vssio), + .VPWR(vddio), + .X(resetb_l) + ); + sky130_ef_io__corner_pad \user0_corner[0] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__corner_pad \user0_corner[1] ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vccd_lvc_clamped_pad user0_vccd_lvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCD_PAD(vccd_pad), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vdda_hvc_clamped_pad user0_vdda_hvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDA_PAD(vdda_pad), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vddio_hvc_clamped_pad user0_vddio_hvclamp_pad_0 ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_PAD(vddio_pad), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vddio_hvc_clamped_pad user0_vddio_hvclamp_pad_1 ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_PAD(vddio_pad2), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vssa_hvc_clamped_pad user0_vssa_hvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSA_PAD(vssa_pad), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vssd_lvc_clamped_pad user0_vssd_lvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSD_PAD(vssd_pad), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vssio_hvc_clamped_pad user0_vssio_hvclamp_pad_0 ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_PAD(vssio_pad), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vssio_hvc_clamped_pad user0_vssio_hvclamp_pad_1 ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_PAD(vssio_pad2), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__corner_pad user1_corner ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vccd_lvc_clamped3_pad user1_vccd_lvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCD1(vccd1), + .VCCD_PAD(vccd1_pad), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSD1(vssd1), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vdda_hvc_clamped_pad user1_vdda_hvclamp_pad_0 ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDA_PAD(vdda1_pad), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vdda_hvc_clamped_pad user1_vdda_hvclamp_pad_1 ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDA_PAD(vdda1_pad2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vssa_hvc_clamped_pad user1_vssa_hvclamp_pad_0 ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSA_PAD(vssa1_pad), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vssa_hvc_clamped_pad user1_vssa_hvclamp_pad_1 ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSA_PAD(vssa1_pad2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vssd_lvc_clamped3_pad user1_vssd_lvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCD1(vccd1), + .VCCHIB(vccd), + .VDDA(vdda1), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa1), + .VSSD(vssd), + .VSSD1(vssd1), + .VSSD_PAD(vssd1_pad), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__corner_pad user2_corner ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vccd_lvc_clamped3_pad user2_vccd_lvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCD1(vccd2), + .VCCD_PAD(vccd2_pad), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSD1(vssd2), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vdda_hvc_clamped_pad user2_vdda_hvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDA_PAD(vdda2_pad), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vssa_hvc_clamped_pad user2_vssa_hvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSA_PAD(vssa2_pad), + .VSSD(vssd), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + sky130_ef_io__vssd_lvc_clamped3_pad user2_vssd_lvclamp_pad ( + .AMUXBUS_A(analog_a), + .AMUXBUS_B(analog_b), + .VCCD(vccd), + .VCCD1(vccd2), + .VCCHIB(vccd), + .VDDA(vdda2), + .VDDIO(vddio), + .VDDIO_Q(vddio_q), + .VSSA(vssa2), + .VSSD(vssd), + .VSSD1(vssd2), + .VSSD_PAD(vssd2_pad), + .VSSIO(vssio), + .VSSIO_Q(vssio_q), + .VSWITCH(vddio) + ); + user_id_programming user_id_value ( + .VGND(vssd), + .VPWR(vccd), + .mask_rev(mask_rev) + ); + assign \gpio_dm_all[131] = gpio_dm2[43]; + assign \gpio_dm_all[130] = gpio_dm1[43]; + assign \gpio_dm_all[129] = gpio_dm0[43]; + assign \gpio_dm_all[128] = gpio_dm2[42]; + assign \gpio_dm_all[127] = gpio_dm1[42]; + assign \gpio_dm_all[126] = gpio_dm0[42]; + assign \gpio_dm_all[125] = gpio_dm2[41]; + assign \gpio_dm_all[124] = gpio_dm1[41]; + assign \gpio_dm_all[123] = gpio_dm0[41]; + assign \gpio_dm_all[122] = gpio_dm2[40]; + assign \gpio_dm_all[121] = gpio_dm1[40]; + assign \gpio_dm_all[120] = gpio_dm0[40]; + assign \gpio_dm_all[119] = gpio_dm2[39]; + assign \gpio_dm_all[118] = gpio_dm1[39]; + assign \gpio_dm_all[117] = gpio_dm0[39]; + assign \gpio_dm_all[116] = gpio_dm2[38]; + assign \gpio_dm_all[115] = gpio_dm1[38]; + assign \gpio_dm_all[114] = gpio_dm0[38]; + assign \gpio_dm_all[113] = gpio_dm2[37]; + assign \gpio_dm_all[112] = gpio_dm1[37]; + assign \gpio_dm_all[111] = gpio_dm0[37]; + assign \gpio_dm_all[110] = gpio_dm2[36]; + assign \gpio_dm_all[109] = gpio_dm1[36]; + assign \gpio_dm_all[108] = gpio_dm0[36]; + assign \gpio_dm_all[107] = gpio_dm2[35]; + assign \gpio_dm_all[106] = gpio_dm1[35]; + assign \gpio_dm_all[105] = gpio_dm0[35]; + assign \gpio_dm_all[104] = gpio_dm2[34]; + assign \gpio_dm_all[103] = gpio_dm1[34]; + assign \gpio_dm_all[102] = gpio_dm0[34]; + assign \gpio_dm_all[101] = gpio_dm2[33]; + assign \gpio_dm_all[100] = gpio_dm1[33]; + assign \gpio_dm_all[99] = gpio_dm0[33]; + assign \gpio_dm_all[98] = gpio_dm2[32]; + assign \gpio_dm_all[97] = gpio_dm1[32]; + assign \gpio_dm_all[96] = gpio_dm0[32]; + assign \gpio_dm_all[95] = gpio_dm2[31]; + assign \gpio_dm_all[94] = gpio_dm1[31]; + assign \gpio_dm_all[93] = gpio_dm0[31]; + assign \gpio_dm_all[92] = gpio_dm2[30]; + assign \gpio_dm_all[91] = gpio_dm1[30]; + assign \gpio_dm_all[90] = gpio_dm0[30]; + assign \gpio_dm_all[89] = gpio_dm2[29]; + assign \gpio_dm_all[88] = gpio_dm1[29]; + assign \gpio_dm_all[87] = gpio_dm0[29]; + assign \gpio_dm_all[86] = gpio_dm2[28]; + assign \gpio_dm_all[85] = gpio_dm1[28]; + assign \gpio_dm_all[84] = gpio_dm0[28]; + assign \gpio_dm_all[83] = gpio_dm2[27]; + assign \gpio_dm_all[82] = gpio_dm1[27]; + assign \gpio_dm_all[81] = gpio_dm0[27]; + assign \gpio_dm_all[80] = gpio_dm2[26]; + assign \gpio_dm_all[79] = gpio_dm1[26]; + assign \gpio_dm_all[78] = gpio_dm0[26]; + assign \gpio_dm_all[77] = gpio_dm2[25]; + assign \gpio_dm_all[76] = gpio_dm1[25]; + assign \gpio_dm_all[75] = gpio_dm0[25]; + assign \gpio_dm_all[74] = gpio_dm2[24]; + assign \gpio_dm_all[73] = gpio_dm1[24]; + assign \gpio_dm_all[72] = gpio_dm0[24]; + assign \gpio_dm_all[71] = gpio_dm2[23]; + assign \gpio_dm_all[70] = gpio_dm1[23]; + assign \gpio_dm_all[69] = gpio_dm0[23]; + assign \gpio_dm_all[68] = gpio_dm2[22]; + assign \gpio_dm_all[67] = gpio_dm1[22]; + assign \gpio_dm_all[66] = gpio_dm0[22]; + assign \gpio_dm_all[65] = gpio_dm2[21]; + assign \gpio_dm_all[64] = gpio_dm1[21]; + assign \gpio_dm_all[63] = gpio_dm0[21]; + assign \gpio_dm_all[62] = gpio_dm2[20]; + assign \gpio_dm_all[61] = gpio_dm1[20]; + assign \gpio_dm_all[60] = gpio_dm0[20]; + assign \gpio_dm_all[59] = gpio_dm2[19]; + assign \gpio_dm_all[58] = gpio_dm1[19]; + assign \gpio_dm_all[57] = gpio_dm0[19]; + assign \gpio_dm_all[56] = gpio_dm2[18]; + assign \gpio_dm_all[55] = gpio_dm1[18]; + assign \gpio_dm_all[54] = gpio_dm0[18]; + assign \gpio_dm_all[53] = gpio_dm2[17]; + assign \gpio_dm_all[52] = gpio_dm1[17]; + assign \gpio_dm_all[51] = gpio_dm0[17]; + assign \gpio_dm_all[50] = gpio_dm2[16]; + assign \gpio_dm_all[49] = gpio_dm1[16]; + assign \gpio_dm_all[48] = gpio_dm0[16]; + assign \gpio_dm_all[47] = gpio_dm2[15]; + assign \gpio_dm_all[46] = gpio_dm1[15]; + assign \gpio_dm_all[45] = gpio_dm0[15]; + assign \gpio_dm_all[44] = gpio_dm2[14]; + assign \gpio_dm_all[43] = gpio_dm1[14]; + assign \gpio_dm_all[42] = gpio_dm0[14]; + assign \gpio_dm_all[41] = gpio_dm2[13]; + assign \gpio_dm_all[40] = gpio_dm1[13]; + assign \gpio_dm_all[39] = gpio_dm0[13]; + assign \gpio_dm_all[38] = gpio_dm2[12]; + assign \gpio_dm_all[37] = gpio_dm1[12]; + assign \gpio_dm_all[36] = gpio_dm0[12]; + assign \gpio_dm_all[35] = gpio_dm2[11]; + assign \gpio_dm_all[34] = gpio_dm1[11]; + assign \gpio_dm_all[33] = gpio_dm0[11]; + assign \gpio_dm_all[32] = gpio_dm2[10]; + assign \gpio_dm_all[31] = gpio_dm1[10]; + assign \gpio_dm_all[30] = gpio_dm0[10]; + assign \gpio_dm_all[29] = gpio_dm2[9]; + assign \gpio_dm_all[28] = gpio_dm1[9]; + assign \gpio_dm_all[27] = gpio_dm0[9]; + assign \gpio_dm_all[26] = gpio_dm2[8]; + assign \gpio_dm_all[25] = gpio_dm1[8]; + assign \gpio_dm_all[24] = gpio_dm0[8]; + assign \gpio_dm_all[23] = gpio_dm2[7]; + assign \gpio_dm_all[22] = gpio_dm1[7]; + assign \gpio_dm_all[21] = gpio_dm0[7]; + assign \gpio_dm_all[20] = gpio_dm2[6]; + assign \gpio_dm_all[19] = gpio_dm1[6]; + assign \gpio_dm_all[18] = gpio_dm0[6]; + assign \gpio_dm_all[17] = gpio_dm2[5]; + assign \gpio_dm_all[16] = gpio_dm1[5]; + assign \gpio_dm_all[15] = gpio_dm0[5]; + assign \gpio_dm_all[14] = gpio_dm2[4]; + assign \gpio_dm_all[13] = gpio_dm1[4]; + assign \gpio_dm_all[12] = gpio_dm0[4]; + assign \gpio_dm_all[11] = gpio_dm2[3]; + assign \gpio_dm_all[10] = gpio_dm1[3]; + assign \gpio_dm_all[9] = gpio_dm0[3]; + assign \gpio_dm_all[8] = gpio_dm2[2]; + assign \gpio_dm_all[7] = gpio_dm1[2]; + assign \gpio_dm_all[6] = gpio_dm0[2]; + assign \gpio_dm_all[5] = gpio_dm2[1]; + assign \gpio_dm_all[4] = gpio_dm1[1]; + assign \gpio_dm_all[3] = gpio_dm0[1]; + assign \gpio_dm_all[2] = gpio_dm2[0]; + assign \gpio_dm_all[1] = gpio_dm1[0]; + assign \gpio_dm_all[0] = gpio_dm0[0]; + assign \gpio_enh[43] = porb_h; + assign \gpio_enh[42] = porb_h; + assign \gpio_enh[41] = porb_h; + assign \gpio_enh[40] = porb_h; + assign \gpio_enh[39] = porb_h; + assign \gpio_enh[38] = porb_h; + assign \gpio_enh[37] = porb_h; + assign \gpio_enh[36] = porb_h; + assign \gpio_enh[35] = porb_h; + assign \gpio_enh[34] = porb_h; + assign \gpio_enh[33] = porb_h; + assign \gpio_enh[32] = porb_h; + assign \gpio_enh[31] = porb_h; + assign \gpio_enh[30] = porb_h; + assign \gpio_enh[29] = porb_h; + assign \gpio_enh[28] = porb_h; + assign \gpio_enh[27] = porb_h; + assign \gpio_enh[26] = porb_h; + assign \gpio_enh[25] = porb_h; + assign \gpio_enh[24] = porb_h; + assign \gpio_enh[23] = porb_h; + assign \gpio_enh[22] = porb_h; + assign \gpio_enh[21] = porb_h; + assign \gpio_enh[20] = porb_h; + assign \gpio_enh[19] = porb_h; + assign \gpio_enh[18] = porb_h; + assign \gpio_enh[17] = porb_h; + assign \gpio_enh[16] = porb_h; + assign \gpio_enh[15] = porb_h; + assign \gpio_enh[14] = porb_h; + assign \gpio_enh[13] = porb_h; + assign \gpio_enh[12] = porb_h; + assign \gpio_enh[11] = porb_h; + assign \gpio_enh[10] = porb_h; + assign \gpio_enh[9] = porb_h; + assign \gpio_enh[8] = porb_h; + assign \gpio_enh[7] = porb_h; + assign \gpio_enh[6] = porb_h; + assign \gpio_enh[5] = porb_h; + assign \gpio_enh[4] = porb_h; + assign \gpio_enh[3] = porb_h; + assign \gpio_enh[2] = porb_h; + assign \gpio_enh[1] = porb_h; + assign \gpio_enh[0] = porb_h; +endmodule From 9a48f4c99829f3bee719b9411b4cc1ca53299997 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Mon, 25 Sep 2023 09:11:24 -0400 Subject: [PATCH 109/109] Swapped the positions of gpio_dm0[38] and gpio_dm1[38], which were swapped in the openframe project wrapper layout, per Mitch Bailey's observation in the #shuttle-development Slack channel. --- mag/openframe_project_wrapper.mag | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mag/openframe_project_wrapper.mag b/mag/openframe_project_wrapper.mag index b7e6a37c..7e7f59e7 100644 --- a/mag/openframe_project_wrapper.mag +++ b/mag/openframe_project_wrapper.mag @@ -3408,9 +3408,9 @@ flabel metal2 145190 -424 145246 56 0 FreeSans 400 270 0 0 gpio_in[38] port 691 nsew flabel metal2 147030 -424 147086 56 0 FreeSans 400 270 0 0 gpio_slow_sel[38] port 339 nsew -flabel metal2 148870 -424 148926 56 0 FreeSans 400 270 0 0 gpio_dm0[38] +flabel metal2 148870 -424 148926 56 0 FreeSans 400 270 0 0 gpio_dm1[38] port 559 nsew -flabel metal2 150710 -424 150766 56 0 FreeSans 400 270 0 0 gpio_dm1[38] +flabel metal2 150710 -424 150766 56 0 FreeSans 400 270 0 0 gpio_dm0[38] port 603 nsew flabel metal2 151354 -424 151410 56 0 FreeSans 400 270 0 0 gpio_analog_pol[38] port 515 nsew