From 46540437afd82b68a7d2a12bc7d4d470bc8bf878 Mon Sep 17 00:00:00 2001 From: manarabdelaty Date: Mon, 15 Nov 2021 18:17:32 +0200 Subject: [PATCH] [DATA] Add gds/lef/maglef/gl views for the user_id_programming block --- gds/user_id_programming.gds | Bin 98020 -> 0 bytes gds/user_id_programming.gds.gz | Bin 0 -> 16686 bytes lef/user_id_programming.lef | 300 +++++++++ maglef/user_id_programming.mag | 164 +++++ openlane/user_id_programming/config.tcl | 37 ++ spi/lvs/user_id_programming.spice | 158 +++++ verilog/gl/user_id_programming.v | 786 ++++++++++++++++++++++++ 7 files changed, 1445 insertions(+) delete mode 100644 gds/user_id_programming.gds create mode 100644 gds/user_id_programming.gds.gz create mode 100644 lef/user_id_programming.lef create mode 100644 maglef/user_id_programming.mag create mode 100644 openlane/user_id_programming/config.tcl create mode 100644 spi/lvs/user_id_programming.spice create mode 100644 verilog/gl/user_id_programming.v diff --git a/gds/user_id_programming.gds b/gds/user_id_programming.gds deleted file mode 100644 index 5bfcaa7b38e089d0b1537ce30ad772c062785310..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98020 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 diff --git a/gds/user_id_programming.gds.gz b/gds/user_id_programming.gds.gz new file mode 100644 index 0000000000000000000000000000000000000000..0cf4f9e5188b3bfd406e6a04754a3b61e6cdc0c4 GIT binary patch literal 16686 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≤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 G-~BJhu>1}H literal 0 HcmV?d00001 diff --git a/lef/user_id_programming.lef b/lef/user_id_programming.lef new file mode 100644 index 00000000..e3f30aac --- /dev/null +++ b/lef/user_id_programming.lef @@ -0,0 +1,300 @@ +VERSION 5.7 ; + NOWIREEXTENSIONATPIN ON ; + DIVIDERCHAR "/" ; + BUSBITCHARS "[]" ; +MACRO user_id_programming + CLASS BLOCK ; + FOREIGN user_id_programming ; + ORIGIN 0.000 0.000 ; + SIZE 35.545 BY 35.385 ; + PIN mask_rev[0] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 20.330 31.385 20.610 35.385 ; + END + END mask_rev[0] + PIN mask_rev[10] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 20.330 0.000 20.610 4.000 ; + END + END mask_rev[10] + PIN mask_rev[11] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 5.610 0.000 5.890 4.000 ; + END + END mask_rev[11] + PIN mask_rev[12] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 2.850 0.000 3.130 4.000 ; + END + END mask_rev[12] + PIN mask_rev[13] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 26.770 31.385 27.050 35.385 ; + END + END mask_rev[13] + PIN mask_rev[14] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 29.530 0.000 29.810 4.000 ; + END + END mask_rev[14] + PIN mask_rev[15] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 31.545 8.200 35.545 8.800 ; + END + END mask_rev[15] + PIN mask_rev[16] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 11.130 0.000 11.410 4.000 ; + END + END mask_rev[16] + PIN mask_rev[17] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 8.370 31.385 8.650 35.385 ; + END + END mask_rev[17] + PIN mask_rev[18] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 0.000 25.880 4.000 26.480 ; + END + END mask_rev[18] + PIN mask_rev[19] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 14.810 31.385 15.090 35.385 ; + END + END mask_rev[19] + PIN mask_rev[1] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 0.000 16.360 4.000 16.960 ; + END + END mask_rev[1] + PIN mask_rev[20] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 31.545 12.280 35.545 12.880 ; + END + END mask_rev[20] + PIN mask_rev[21] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 31.545 4.120 35.545 4.720 ; + END + END mask_rev[21] + PIN mask_rev[22] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 0.000 29.960 4.000 30.560 ; + END + END mask_rev[22] + PIN mask_rev[23] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 8.370 0.000 8.650 4.000 ; + END + END mask_rev[23] + PIN mask_rev[24] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 29.530 31.385 29.810 35.385 ; + END + END mask_rev[24] + PIN mask_rev[25] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 0.000 8.200 4.000 8.800 ; + END + END mask_rev[25] + PIN mask_rev[26] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 24.010 31.385 24.290 35.385 ; + END + END mask_rev[26] + PIN mask_rev[27] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 5.610 31.385 5.890 35.385 ; + END + END mask_rev[27] + PIN mask_rev[28] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 32.290 31.385 32.570 35.385 ; + END + END mask_rev[28] + PIN mask_rev[29] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 26.770 0.000 27.050 4.000 ; + END + END mask_rev[29] + PIN mask_rev[2] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 0.000 12.280 4.000 12.880 ; + END + END mask_rev[2] + PIN mask_rev[30] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 31.545 25.880 35.545 26.480 ; + END + END mask_rev[30] + PIN mask_rev[31] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 14.810 0.000 15.090 4.000 ; + END + END mask_rev[31] + PIN mask_rev[3] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 17.570 0.000 17.850 4.000 ; + END + END mask_rev[3] + PIN mask_rev[4] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 31.545 17.720 35.545 18.320 ; + END + END mask_rev[4] + PIN mask_rev[5] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 31.545 21.800 35.545 22.400 ; + END + END mask_rev[5] + PIN mask_rev[6] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met3 ; + RECT 0.000 21.800 4.000 22.400 ; + END + END mask_rev[6] + PIN mask_rev[7] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 17.570 31.385 17.850 35.385 ; + END + END mask_rev[7] + PIN mask_rev[8] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 24.010 0.000 24.290 4.000 ; + END + END mask_rev[8] + PIN mask_rev[9] + DIRECTION OUTPUT TRISTATE ; + PORT + LAYER met2 ; + RECT 11.130 31.385 11.410 35.385 ; + END + END mask_rev[9] + PIN VPWR + DIRECTION INPUT ; + USE POWER ; + PORT + LAYER met5 ; + RECT 5.520 8.480 29.900 10.080 ; + END + END VPWR + PIN VGND + DIRECTION INPUT ; + USE GROUND ; + PORT + LAYER met5 ; + RECT 5.520 12.560 29.900 14.160 ; + END + END VGND + OBS + LAYER li1 ; + RECT 5.520 5.355 29.900 30.005 ; + LAYER met1 ; + RECT 2.830 5.200 32.590 30.160 ; + LAYER met2 ; + RECT 2.860 31.105 5.330 31.385 ; + RECT 6.170 31.105 8.090 31.385 ; + RECT 8.930 31.105 10.850 31.385 ; + RECT 11.690 31.105 14.530 31.385 ; + RECT 15.370 31.105 17.290 31.385 ; + RECT 18.130 31.105 20.050 31.385 ; + RECT 20.890 31.105 23.730 31.385 ; + RECT 24.570 31.105 26.490 31.385 ; + RECT 27.330 31.105 29.250 31.385 ; + RECT 30.090 31.105 32.010 31.385 ; + RECT 2.860 4.280 32.560 31.105 ; + RECT 3.410 4.000 5.330 4.280 ; + RECT 6.170 4.000 8.090 4.280 ; + RECT 8.930 4.000 10.850 4.280 ; + RECT 11.690 4.000 14.530 4.280 ; + RECT 15.370 4.000 17.290 4.280 ; + RECT 18.130 4.000 20.050 4.280 ; + RECT 20.890 4.000 23.730 4.280 ; + RECT 24.570 4.000 26.490 4.280 ; + RECT 27.330 4.000 29.250 4.280 ; + RECT 30.090 4.000 32.560 4.280 ; + LAYER met3 ; + RECT 4.400 29.560 31.545 30.410 ; + RECT 4.000 26.880 31.545 29.560 ; + RECT 4.400 25.480 31.145 26.880 ; + RECT 4.000 22.800 31.545 25.480 ; + RECT 4.400 21.400 31.145 22.800 ; + RECT 4.000 18.720 31.545 21.400 ; + RECT 4.000 17.360 31.145 18.720 ; + RECT 4.400 17.320 31.145 17.360 ; + RECT 4.400 15.960 31.545 17.320 ; + RECT 4.000 13.280 31.545 15.960 ; + RECT 4.400 11.880 31.145 13.280 ; + RECT 4.000 9.200 31.545 11.880 ; + RECT 4.400 7.800 31.145 9.200 ; + RECT 4.000 5.120 31.545 7.800 ; + RECT 4.000 4.255 31.145 5.120 ; + LAYER met4 ; + RECT 8.780 5.200 26.635 30.160 ; + LAYER met5 ; + RECT 5.520 16.640 29.900 26.400 ; + END +END user_id_programming +END LIBRARY + diff --git a/maglef/user_id_programming.mag b/maglef/user_id_programming.mag new file mode 100644 index 00000000..1a5da664 --- /dev/null +++ b/maglef/user_id_programming.mag @@ -0,0 +1,164 @@ +magic +tech sky130A +magscale 1 2 +timestamp 1607107372 +<< obsli1 >> +rect 1104 1071 5980 6001 +<< obsm1 >> +rect 566 1040 6518 6032 +<< metal2 >> +rect 1122 6277 1178 7077 +rect 1674 6277 1730 7077 +rect 2226 6277 2282 7077 +rect 2962 6277 3018 7077 +rect 3514 6277 3570 7077 +rect 4066 6277 4122 7077 +rect 4802 6277 4858 7077 +rect 5354 6277 5410 7077 +rect 5906 6277 5962 7077 +rect 6458 6277 6514 7077 +rect 570 0 626 800 +rect 1122 0 1178 800 +rect 1674 0 1730 800 +rect 2226 0 2282 800 +rect 2962 0 3018 800 +rect 3514 0 3570 800 +rect 4066 0 4122 800 +rect 4802 0 4858 800 +rect 5354 0 5410 800 +rect 5906 0 5962 800 +<< obsm2 >> +rect 572 6221 1066 6277 +rect 1234 6221 1618 6277 +rect 1786 6221 2170 6277 +rect 2338 6221 2906 6277 +rect 3074 6221 3458 6277 +rect 3626 6221 4010 6277 +rect 4178 6221 4746 6277 +rect 4914 6221 5298 6277 +rect 5466 6221 5850 6277 +rect 6018 6221 6402 6277 +rect 572 856 6512 6221 +rect 682 800 1066 856 +rect 1234 800 1618 856 +rect 1786 800 2170 856 +rect 2338 800 2906 856 +rect 3074 800 3458 856 +rect 3626 800 4010 856 +rect 4178 800 4746 856 +rect 4914 800 5298 856 +rect 5466 800 5850 856 +rect 6018 800 6512 856 +<< metal3 >> +rect 0 5992 800 6112 +rect 0 5176 800 5296 +rect 6309 5176 7109 5296 +rect 0 4360 800 4480 +rect 6309 4360 7109 4480 +rect 6309 3544 7109 3664 +rect 0 3272 800 3392 +rect 0 2456 800 2576 +rect 6309 2456 7109 2576 +rect 0 1640 800 1760 +rect 6309 1640 7109 1760 +rect 6309 824 7109 944 +<< obsm3 >> +rect 880 5912 6309 6082 +rect 800 5376 6309 5912 +rect 880 5096 6229 5376 +rect 800 4560 6309 5096 +rect 880 4280 6229 4560 +rect 800 3744 6309 4280 +rect 800 3472 6229 3744 +rect 880 3464 6229 3472 +rect 880 3192 6309 3464 +rect 800 2656 6309 3192 +rect 880 2376 6229 2656 +rect 800 1840 6309 2376 +rect 880 1560 6229 1840 +rect 800 1024 6309 1560 +rect 800 851 6229 1024 +<< obsm4 >> +rect 1756 1040 5327 6032 +<< metal5 >> +rect 1104 2512 5980 2832 +rect 1104 1696 5980 2016 +<< obsm5 >> +rect 1104 3328 5980 5280 +<< labels >> +rlabel metal2 s 4066 6277 4122 7077 6 mask_rev[0] +port 1 nsew +rlabel metal2 s 4066 0 4122 800 6 mask_rev[10] +port 2 nsew +rlabel metal2 s 1122 0 1178 800 6 mask_rev[11] +port 3 nsew +rlabel metal2 s 570 0 626 800 6 mask_rev[12] +port 4 nsew +rlabel metal2 s 5354 6277 5410 7077 6 mask_rev[13] +port 5 nsew +rlabel metal2 s 5906 0 5962 800 6 mask_rev[14] +port 6 nsew +rlabel metal3 s 6309 1640 7109 1760 6 mask_rev[15] +port 7 nsew +rlabel metal2 s 2226 0 2282 800 6 mask_rev[16] +port 8 nsew +rlabel metal2 s 1674 6277 1730 7077 6 mask_rev[17] +port 9 nsew +rlabel metal3 s 0 5176 800 5296 6 mask_rev[18] +port 10 nsew +rlabel metal2 s 2962 6277 3018 7077 6 mask_rev[19] +port 11 nsew +rlabel metal3 s 0 3272 800 3392 6 mask_rev[1] +port 12 nsew +rlabel metal3 s 6309 2456 7109 2576 6 mask_rev[20] +port 13 nsew +rlabel metal3 s 6309 824 7109 944 6 mask_rev[21] +port 14 nsew +rlabel metal3 s 0 5992 800 6112 6 mask_rev[22] +port 15 nsew +rlabel metal2 s 1674 0 1730 800 6 mask_rev[23] +port 16 nsew +rlabel metal2 s 5906 6277 5962 7077 6 mask_rev[24] +port 17 nsew +rlabel metal3 s 0 1640 800 1760 6 mask_rev[25] +port 18 nsew +rlabel metal2 s 4802 6277 4858 7077 6 mask_rev[26] +port 19 nsew +rlabel metal2 s 1122 6277 1178 7077 6 mask_rev[27] +port 20 nsew +rlabel metal2 s 6458 6277 6514 7077 6 mask_rev[28] +port 21 nsew +rlabel metal2 s 5354 0 5410 800 6 mask_rev[29] +port 22 nsew +rlabel metal3 s 0 2456 800 2576 6 mask_rev[2] +port 23 nsew +rlabel metal3 s 6309 5176 7109 5296 6 mask_rev[30] +port 24 nsew +rlabel metal2 s 2962 0 3018 800 6 mask_rev[31] +port 25 nsew +rlabel metal2 s 3514 0 3570 800 6 mask_rev[3] +port 26 nsew +rlabel metal3 s 6309 3544 7109 3664 6 mask_rev[4] +port 27 nsew +rlabel metal3 s 6309 4360 7109 4480 6 mask_rev[5] +port 28 nsew +rlabel metal3 s 0 4360 800 4480 6 mask_rev[6] +port 29 nsew +rlabel metal2 s 3514 6277 3570 7077 6 mask_rev[7] +port 30 nsew +rlabel metal2 s 4802 0 4858 800 6 mask_rev[8] +port 31 nsew +rlabel metal2 s 2226 6277 2282 7077 6 mask_rev[9] +port 32 nsew +rlabel metal5 s 1104 1696 5980 2016 6 VPWR +port 33 nsew power default +rlabel metal5 s 1104 2512 5980 2832 6 VGND +port 34 nsew ground default +<< properties >> +string LEFclass BLOCK +string FIXED_BBOX 0 0 7109 7077 +string LEFview TRUE +string GDS_FILE ../gds/user_id_programming.gds +string GDS_START 0 +<< end >> + diff --git a/openlane/user_id_programming/config.tcl b/openlane/user_id_programming/config.tcl new file mode 100644 index 00000000..38238710 --- /dev/null +++ b/openlane/user_id_programming/config.tcl @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# SPDX-License-Identifier: Apache-2.0 + +set script_dir [file dirname [file normalize [info script]]] +# User config +set ::env(DESIGN_NAME) user_id_programming + +# Change if needed +set ::env(VERILOG_FILES) $script_dir/../../verilog/rtl/user_id_programming.v +set ::env(SYNTH_READ_BLACKBOX_LIB) 1 + +# Fill this +set ::env(CLOCK_TREE_SYNTH) 0 + +set ::env(CELL_PAD) 0 + +set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0 +set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 0 + +set ::env(FP_SIZING) absolute +set ::env(DIE_AREA) "0 0 35 35" +set ::env(PL_RANDOM_GLB_PLACEMENT) 1 + +set ::env(BOTTOM_MARGIN_MULT) 2 +set ::env(TOP_MARGIN_MULT) 2 diff --git a/spi/lvs/user_id_programming.spice b/spi/lvs/user_id_programming.spice new file mode 100644 index 00000000..118fbac3 --- /dev/null +++ b/spi/lvs/user_id_programming.spice @@ -0,0 +1,158 @@ +* NGSPICE file created from user_id_programming.ext - technology: sky130A + +* Black-box entry subcircuit for sky130_fd_sc_hd__conb_1 abstract view +.subckt sky130_fd_sc_hd__conb_1 VGND VNB VPB VPWR HI LO +.ends + +* Black-box entry subcircuit for sky130_fd_sc_hd__decap_8 abstract view +.subckt sky130_fd_sc_hd__decap_8 VGND VNB VPB VPWR +.ends + +* Black-box entry subcircuit for sky130_fd_sc_hd__decap_3 abstract view +.subckt sky130_fd_sc_hd__decap_3 VGND VNB VPB VPWR +.ends + +* Black-box entry subcircuit for sky130_fd_sc_hd__fill_1 abstract view +.subckt sky130_fd_sc_hd__fill_1 VGND VNB VPB VPWR +.ends + +* Black-box entry subcircuit for sky130_fd_sc_hd__fill_2 abstract view +.subckt sky130_fd_sc_hd__fill_2 VGND VNB VPB VPWR +.ends + +* Black-box entry subcircuit for sky130_fd_sc_hd__decap_12 abstract view +.subckt sky130_fd_sc_hd__decap_12 VGND VNB VPB VPWR +.ends + +* Black-box entry subcircuit for sky130_fd_sc_hd__decap_4 abstract view +.subckt sky130_fd_sc_hd__decap_4 VGND VNB VPB VPWR +.ends + +* Black-box entry subcircuit for sky130_fd_sc_hd__decap_6 abstract view +.subckt sky130_fd_sc_hd__decap_6 VGND VNB VPB VPWR +.ends + +* Black-box entry subcircuit for sky130_fd_sc_hd__tapvpwrvgnd_1 abstract view +.subckt sky130_fd_sc_hd__tapvpwrvgnd_1 VGND VPWR +.ends + +.subckt user_id_programming mask_rev[0] mask_rev[10] mask_rev[11] mask_rev[12] mask_rev[13] ++ mask_rev[14] mask_rev[15] mask_rev[16] mask_rev[17] mask_rev[18] mask_rev[19] mask_rev[1] ++ mask_rev[20] mask_rev[21] mask_rev[22] mask_rev[23] mask_rev[24] mask_rev[25] mask_rev[26] ++ mask_rev[27] mask_rev[28] mask_rev[29] mask_rev[2] mask_rev[30] mask_rev[31] mask_rev[3] ++ mask_rev[4] mask_rev[5] mask_rev[6] mask_rev[7] mask_rev[8] mask_rev[9] VPWR VGND +Xmask_rev_value\[1\] VGND VGND VPWR VPWR mask_rev_value\[1\]/HI mask_rev[1] sky130_fd_sc_hd__conb_1 +XFILLER_6_12 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_8 +Xmask_rev_value\[30\] VGND VGND VPWR VPWR mask_rev_value\[30\]/HI mask_rev[30] sky130_fd_sc_hd__conb_1 +XFILLER_0_47 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_6_24 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +Xmask_rev_value\[23\] VGND VGND VPWR VPWR mask_rev_value\[23\]/HI mask_rev[23] sky130_fd_sc_hd__conb_1 +XFILLER_5_6 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_2 +XFILLER_0_15 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_6_36 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +Xmask_rev_value\[16\] VGND VGND VPWR VPWR mask_rev_value\[16\]/HI mask_rev[16] sky130_fd_sc_hd__conb_1 +XFILLER_6_48 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_2 +XFILLER_0_39 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_8 +Xmask_rev_value\[21\] VGND VGND VPWR VPWR mask_rev_value\[21\]/HI mask_rev[21] sky130_fd_sc_hd__conb_1 +XFILLER_0_29 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_2 +XFILLER_3_6 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +XFILLER_6_28 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XPHY_0 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_3_18 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +Xmask_rev_value\[14\] VGND VGND VPWR VPWR mask_rev_value\[14\]/HI mask_rev[14] sky130_fd_sc_hd__conb_1 +XPHY_1 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +Xmask_rev_value\[8\] VGND VGND VPWR VPWR mask_rev_value\[8\]/HI mask_rev[8] sky130_fd_sc_hd__conb_1 +XPHY_2 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_4_30 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +XFILLER_4_41 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_2 +XFILLER_1_6 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_1_20 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +XPHY_3 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +Xmask_rev_value\[12\] VGND VGND VPWR VPWR mask_rev_value\[12\]/HI mask_rev[12] sky130_fd_sc_hd__conb_1 +XFILLER_7_42 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +XPHY_4 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_4_10 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_4 +XFILLER_1_33 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +Xmask_rev_value\[6\] VGND VGND VPWR VPWR mask_rev_value\[6\]/HI mask_rev[6] sky130_fd_sc_hd__conb_1 +XPHY_5 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_1_12 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_2 +XFILLER_1_45 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_2 +XPHY_6 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +Xmask_rev_value\[28\] VGND VGND VPWR VPWR mask_rev_value\[28\]/HI mask_rev[28] sky130_fd_sc_hd__conb_1 +XFILLER_8_3 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +XFILLER_1_24 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_6 +Xmask_rev_value\[10\] VGND VGND VPWR VPWR mask_rev_value\[10\]/HI mask_rev[10] sky130_fd_sc_hd__conb_1 +XPHY_7 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_4_35 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_4_46 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_4 +Xmask_rev_value\[4\] VGND VGND VPWR VPWR mask_rev_value\[4\]/HI mask_rev[4] sky130_fd_sc_hd__conb_1 +XFILLER_7_46 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_4 +XPHY_8 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_4_14 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +XFILLER_7_36 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_6 +XPHY_9 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_4_26 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_4 +Xmask_rev_value\[26\] VGND VGND VPWR VPWR mask_rev_value\[26\]/HI mask_rev[26] sky130_fd_sc_hd__conb_1 +XFILLER_6_3 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_6 +XFILLER_7_15 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +Xmask_rev_value\[19\] VGND VGND VPWR VPWR mask_rev_value\[19\]/HI mask_rev[19] sky130_fd_sc_hd__conb_1 +XFILLER_7_27 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_6 +Xmask_rev_value\[2\] VGND VGND VPWR VPWR mask_rev_value\[2\]/HI mask_rev[2] sky130_fd_sc_hd__conb_1 +Xmask_rev_value\[31\] VGND VGND VPWR VPWR mask_rev_value\[31\]/HI mask_rev[31] sky130_fd_sc_hd__conb_1 +Xmask_rev_value\[24\] VGND VGND VPWR VPWR mask_rev_value\[24\]/HI mask_rev[24] sky130_fd_sc_hd__conb_1 +XFILLER_4_18 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_2 +XFILLER_4_3 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +Xmask_rev_value\[17\] VGND VGND VPWR VPWR mask_rev_value\[17\]/HI mask_rev[17] sky130_fd_sc_hd__conb_1 +XFILLER_5_40 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_6 +Xmask_rev_value\[0\] VGND VGND VPWR VPWR mask_rev_value\[0\]/HI mask_rev[0] sky130_fd_sc_hd__conb_1 +XFILLER_5_31 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_2_32 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_6 +Xmask_rev_value\[22\] VGND VGND VPWR VPWR mask_rev_value\[22\]/HI mask_rev[22] sky130_fd_sc_hd__conb_1 +XFILLER_2_3 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +Xmask_rev_value\[15\] VGND VGND VPWR VPWR mask_rev_value\[15\]/HI mask_rev[15] sky130_fd_sc_hd__conb_1 +XFILLER_2_44 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_6 +XFILLER_8_32 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +XFILLER_5_11 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +Xmask_rev_value\[9\] VGND VGND VPWR VPWR mask_rev_value\[9\]/HI mask_rev[9] sky130_fd_sc_hd__conb_1 +XFILLER_8_44 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_6 +XFILLER_5_23 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_8 +Xmask_rev_value\[20\] VGND VGND VPWR VPWR mask_rev_value\[20\]/HI mask_rev[20] sky130_fd_sc_hd__conb_1 +XPHY_20 VGND VPWR sky130_fd_sc_hd__tapvpwrvgnd_1 +XFILLER_0_3 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +XPHY_10 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XPHY_21 VGND VPWR sky130_fd_sc_hd__tapvpwrvgnd_1 +Xmask_rev_value\[13\] VGND VGND VPWR VPWR mask_rev_value\[13\]/HI mask_rev[13] sky130_fd_sc_hd__conb_1 +XPHY_22 VGND VPWR sky130_fd_sc_hd__tapvpwrvgnd_1 +Xmask_rev_value\[7\] VGND VGND VPWR VPWR mask_rev_value\[7\]/HI mask_rev[7] sky130_fd_sc_hd__conb_1 +XFILLER_2_15 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +XPHY_11 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XPHY_12 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_2_27 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_4 +XFILLER_8_15 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +Xmask_rev_value\[29\] VGND VGND VPWR VPWR mask_rev_value\[29\]/HI mask_rev[29] sky130_fd_sc_hd__conb_1 +XFILLER_5_49 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +XPHY_13 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_8_27 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_4 +XFILLER_0_7 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_8 +Xmask_rev_value\[11\] VGND VGND VPWR VPWR mask_rev_value\[11\]/HI mask_rev[11] sky130_fd_sc_hd__conb_1 +XPHY_14 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +Xmask_rev_value\[5\] VGND VGND VPWR VPWR mask_rev_value\[5\]/HI mask_rev[5] sky130_fd_sc_hd__conb_1 +XPHY_15 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +Xmask_rev_value\[27\] VGND VGND VPWR VPWR mask_rev_value\[27\]/HI mask_rev[27] sky130_fd_sc_hd__conb_1 +XPHY_16 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_6_40 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_8 +XFILLER_7_3 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +XFILLER_3_30 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_12 +XPHY_17 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_3 +XFILLER_3_42 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_8 +Xmask_rev_value\[3\] VGND VGND VPWR VPWR mask_rev_value\[3\]/HI mask_rev[3] sky130_fd_sc_hd__conb_1 +XFILLER_0_21 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_8 +XFILLER_0_32 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_4 +XPHY_18 VGND VPWR sky130_fd_sc_hd__tapvpwrvgnd_1 +XFILLER_6_20 VGND VGND VPWR VPWR sky130_fd_sc_hd__fill_1 +XPHY_19 VGND VPWR sky130_fd_sc_hd__tapvpwrvgnd_1 +XFILLER_6_32 VGND VGND VPWR VPWR sky130_fd_sc_hd__decap_4 +Xmask_rev_value\[25\] VGND VGND VPWR VPWR mask_rev_value\[25\]/HI mask_rev[25] sky130_fd_sc_hd__conb_1 +Xmask_rev_value\[18\] VGND VGND VPWR VPWR mask_rev_value\[18\]/HI mask_rev[18] sky130_fd_sc_hd__conb_1 +.ends + diff --git a/verilog/gl/user_id_programming.v b/verilog/gl/user_id_programming.v new file mode 100644 index 00000000..0282cfa5 --- /dev/null +++ b/verilog/gl/user_id_programming.v @@ -0,0 +1,786 @@ +// SPDX-FileCopyrightText: 2020 Efabless Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// SPDX-License-Identifier: Apache-2.0 + +/* Generated by Yosys 0.9+3621 (git sha1 84e9fa7, gcc 8.3.1 -fPIC -Os) */ + +module user_id_programming(VPWR, VGND, mask_rev); + input VGND; + input VPWR; + output [31:0] mask_rev; + wire \user_proj_id_high[0] ; + wire \user_proj_id_high[10] ; + wire \user_proj_id_high[11] ; + wire \user_proj_id_high[12] ; + wire \user_proj_id_high[13] ; + wire \user_proj_id_high[14] ; + wire \user_proj_id_high[15] ; + wire \user_proj_id_high[16] ; + wire \user_proj_id_high[17] ; + wire \user_proj_id_high[18] ; + wire \user_proj_id_high[19] ; + wire \user_proj_id_high[1] ; + wire \user_proj_id_high[20] ; + wire \user_proj_id_high[21] ; + wire \user_proj_id_high[22] ; + wire \user_proj_id_high[23] ; + wire \user_proj_id_high[24] ; + wire \user_proj_id_high[25] ; + wire \user_proj_id_high[26] ; + wire \user_proj_id_high[27] ; + wire \user_proj_id_high[28] ; + wire \user_proj_id_high[29] ; + wire \user_proj_id_high[2] ; + wire \user_proj_id_high[30] ; + wire \user_proj_id_high[31] ; + wire \user_proj_id_high[3] ; + wire \user_proj_id_high[4] ; + wire \user_proj_id_high[5] ; + wire \user_proj_id_high[6] ; + wire \user_proj_id_high[7] ; + wire \user_proj_id_high[8] ; + wire \user_proj_id_high[9] ; + sky130_fd_sc_hd__decap_3 FILLER_0_15 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_8 FILLER_0_21 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_2 FILLER_0_29 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_0_3 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_4 FILLER_0_32 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_8 FILLER_0_39 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 FILLER_0_47 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_8 FILLER_0_7 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_2 FILLER_1_12 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_1_20 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_6 FILLER_1_24 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_1_33 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_2 FILLER_1_45 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 FILLER_1_6 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_2_15 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_4 FILLER_2_27 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_2_3 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_6 FILLER_2_32 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_6 FILLER_2_44 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_3_18 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_3_30 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_8 FILLER_3_42 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_3_6 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_4 FILLER_4_10 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_4_14 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_2 FILLER_4_18 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_4 FILLER_4_26 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_4_3 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_4_30 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 FILLER_4_35 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_2 FILLER_4_41 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_4 FILLER_4_46 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_5_11 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_8 FILLER_5_23 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 FILLER_5_31 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_6 FILLER_5_40 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_5_49 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_2 FILLER_5_6 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_8 FILLER_6_12 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_6_20 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_6_24 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 FILLER_6_28 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_6 FILLER_6_3 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_4 FILLER_6_32 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_6_36 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_8 FILLER_6_40 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_2 FILLER_6_48 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_7_15 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_6 FILLER_7_27 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_7_3 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_6 FILLER_7_36 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__fill_1 FILLER_7_42 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_4 FILLER_7_46 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_8_15 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_4 FILLER_8_27 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_8_3 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_12 FILLER_8_32 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_6 FILLER_8_44 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_0 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_1 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_10 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_11 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_12 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_13 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_14 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_15 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_16 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_17 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__tapvpwrvgnd_1 PHY_18 ( + .VGND(VGND), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__tapvpwrvgnd_1 PHY_19 ( + .VGND(VGND), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_2 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__tapvpwrvgnd_1 PHY_20 ( + .VGND(VGND), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__tapvpwrvgnd_1 PHY_21 ( + .VGND(VGND), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__tapvpwrvgnd_1 PHY_22 ( + .VGND(VGND), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_3 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_4 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_5 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_6 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_7 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_8 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__decap_3 PHY_9 ( + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[0] ( + .HI(\user_proj_id_high[0] ), + .LO(mask_rev[0]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[10] ( + .HI(\user_proj_id_high[10] ), + .LO(mask_rev[10]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[11] ( + .HI(\user_proj_id_high[11] ), + .LO(mask_rev[11]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[12] ( + .HI(\user_proj_id_high[12] ), + .LO(mask_rev[12]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[13] ( + .HI(\user_proj_id_high[13] ), + .LO(mask_rev[13]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[14] ( + .HI(\user_proj_id_high[14] ), + .LO(mask_rev[14]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[15] ( + .HI(\user_proj_id_high[15] ), + .LO(mask_rev[15]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[16] ( + .HI(\user_proj_id_high[16] ), + .LO(mask_rev[16]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[17] ( + .HI(\user_proj_id_high[17] ), + .LO(mask_rev[17]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[18] ( + .HI(\user_proj_id_high[18] ), + .LO(mask_rev[18]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[19] ( + .HI(\user_proj_id_high[19] ), + .LO(mask_rev[19]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[1] ( + .HI(\user_proj_id_high[1] ), + .LO(mask_rev[1]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[20] ( + .HI(\user_proj_id_high[20] ), + .LO(mask_rev[20]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[21] ( + .HI(\user_proj_id_high[21] ), + .LO(mask_rev[21]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[22] ( + .HI(\user_proj_id_high[22] ), + .LO(mask_rev[22]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[23] ( + .HI(\user_proj_id_high[23] ), + .LO(mask_rev[23]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[24] ( + .HI(\user_proj_id_high[24] ), + .LO(mask_rev[24]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[25] ( + .HI(\user_proj_id_high[25] ), + .LO(mask_rev[25]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[26] ( + .HI(\user_proj_id_high[26] ), + .LO(mask_rev[26]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[27] ( + .HI(\user_proj_id_high[27] ), + .LO(mask_rev[27]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[28] ( + .HI(\user_proj_id_high[28] ), + .LO(mask_rev[28]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[29] ( + .HI(\user_proj_id_high[29] ), + .LO(mask_rev[29]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[2] ( + .HI(\user_proj_id_high[2] ), + .LO(mask_rev[2]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[30] ( + .HI(\user_proj_id_high[30] ), + .LO(mask_rev[30]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[31] ( + .HI(\user_proj_id_high[31] ), + .LO(mask_rev[31]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[3] ( + .HI(\user_proj_id_high[3] ), + .LO(mask_rev[3]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[4] ( + .HI(\user_proj_id_high[4] ), + .LO(mask_rev[4]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[5] ( + .HI(\user_proj_id_high[5] ), + .LO(mask_rev[5]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[6] ( + .HI(\user_proj_id_high[6] ), + .LO(mask_rev[6]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[7] ( + .HI(\user_proj_id_high[7] ), + .LO(mask_rev[7]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[8] ( + .HI(\user_proj_id_high[8] ), + .LO(mask_rev[8]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); + sky130_fd_sc_hd__conb_1 \mask_rev_value[9] ( + .HI(\user_proj_id_high[9] ), + .LO(mask_rev[9]), + .VGND(VGND), + .VNB(VGND), + .VPB(VPWR), + .VPWR(VPWR) + ); +endmodule