Added a new custom cell for fill_12 in the sky130 HD standard cell library that can be used to replace decap_12 cells to reduce the amount of poly in a standard cell layout to conform to the new and tighter poly layer density of 38%.
diff --git a/sky130/custom/sky130_fd_sc_hd/Readme.txt b/sky130/custom/sky130_fd_sc_hd/Readme.txt index 65f8641..c794b92 100644 --- a/sky130/custom/sky130_fd_sc_hd/Readme.txt +++ b/sky130/custom/sky130_fd_sc_hd/Readme.txt
@@ -1,3 +1,5 @@ These decap cells were redesigned to cut back on its use of the LI layer because the corresponding SkyWater cell was covered in something like 70-80% LI, and using enough of the decap in any one design would cause an LI density error. -The fill cells were redesigned to add tap diffusion in the middle because otherwise the spacing of the nwells and the height of the cells prevents FOM fill, resulting in a different density error. \ No newline at end of file +The fill cells were redesigned to add tap diffusion in the middle because otherwise the spacing of the nwells and the height of the cells prevents FOM fill, resulting in a different density error. + +Cell "newfill_12" was added to satisfy the change in the poly density rule to 38%; this cell is effectively the decap_12 cell with the poly removed, rendering it a fill cell. Its use is to replace some percentage of decap_12 cells until the maximum poly density rule is satisfied.
diff --git a/sky130/custom/sky130_fd_sc_hd/gds/sky130_ef_sc_hd__newfill_12.gds b/sky130/custom/sky130_fd_sc_hd/gds/sky130_ef_sc_hd__newfill_12.gds new file mode 100644 index 0000000..afafbee --- /dev/null +++ b/sky130/custom/sky130_fd_sc_hd/gds/sky130_ef_sc_hd__newfill_12.gds Binary files differ
diff --git a/sky130/custom/sky130_fd_sc_hd/lef/sky130_ef_sc_hd__newfill_12.lef b/sky130/custom/sky130_fd_sc_hd/lef/sky130_ef_sc_hd__newfill_12.lef new file mode 100644 index 0000000..e291180 --- /dev/null +++ b/sky130/custom/sky130_fd_sc_hd/lef/sky130_ef_sc_hd__newfill_12.lef
@@ -0,0 +1,79 @@ +VERSION 5.7 ; + NOWIREEXTENSIONATPIN ON ; + DIVIDERCHAR "/" ; + BUSBITCHARS "[]" ; +MACRO sky130_ef_sc_hd__newfill_12 + CLASS CORE SPACER ; + FOREIGN sky130_ef_sc_hd__newfill_12 ; + ORIGIN 0.000 0.000 ; + SIZE 5.520 BY 2.720 ; + SYMMETRY X Y R90 ; + SITE unithd ; + PIN VPWR + USE POWER ; + PORT + LAYER met1 ; + RECT 0.000 2.480 5.520 2.960 ; + END + END VPWR + PIN VGND + USE GROUND ; + PORT + LAYER met1 ; + RECT 0.000 -0.240 5.520 0.240 ; + END + END VGND + PIN VPB + DIRECTION INOUT ; + USE POWER ; + PORT + LAYER nwell ; + RECT -0.190 1.305 5.710 2.910 ; + END + END VPB + PIN VNB + DIRECTION INOUT ; + USE GROUND ; + PORT + LAYER pwell ; + RECT 0.005 0.105 5.515 0.915 ; + RECT 0.145 -0.085 0.315 0.105 ; + END + END VNB + OBS + LAYER li1 ; + RECT 0.000 2.635 5.520 2.805 ; + RECT 0.085 2.200 5.430 2.635 ; + RECT 1.670 0.630 2.010 1.460 ; + RECT 3.490 0.950 3.840 2.200 ; + RECT 0.085 0.085 5.430 0.630 ; + RECT 0.000 -0.085 5.520 0.085 ; + LAYER mcon ; + RECT 0.145 2.635 0.315 2.805 ; + RECT 0.605 2.635 0.775 2.805 ; + RECT 1.065 2.635 1.235 2.805 ; + RECT 1.525 2.635 1.695 2.805 ; + RECT 1.985 2.635 2.155 2.805 ; + RECT 2.445 2.635 2.615 2.805 ; + RECT 2.905 2.635 3.075 2.805 ; + RECT 3.365 2.635 3.535 2.805 ; + RECT 3.825 2.635 3.995 2.805 ; + RECT 4.285 2.635 4.455 2.805 ; + RECT 4.745 2.635 4.915 2.805 ; + RECT 5.205 2.635 5.375 2.805 ; + RECT 0.145 -0.085 0.315 0.085 ; + RECT 0.605 -0.085 0.775 0.085 ; + RECT 1.065 -0.085 1.235 0.085 ; + RECT 1.525 -0.085 1.695 0.085 ; + RECT 1.985 -0.085 2.155 0.085 ; + RECT 2.445 -0.085 2.615 0.085 ; + RECT 2.905 -0.085 3.075 0.085 ; + RECT 3.365 -0.085 3.535 0.085 ; + RECT 3.825 -0.085 3.995 0.085 ; + RECT 4.285 -0.085 4.455 0.085 ; + RECT 4.745 -0.085 4.915 0.085 ; + RECT 5.205 -0.085 5.375 0.085 ; + END +END sky130_ef_sc_hd__newfill_12 +END LIBRARY +
diff --git a/sky130/custom/sky130_fd_sc_hd/verilog/sky130_ef_sc_hd__newfill_12.v b/sky130/custom/sky130_fd_sc_hd/verilog/sky130_ef_sc_hd__newfill_12.v new file mode 100644 index 0000000..b33927a --- /dev/null +++ b/sky130/custom/sky130_fd_sc_hd/verilog/sky130_ef_sc_hd__newfill_12.v
@@ -0,0 +1,71 @@ +/** + * Copyright 2020 The SkyWater PDK Authors + * + * 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 + * + * https://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 + */ + +`ifndef SKY130_EF_SC_HD__NEWFILL_12_V +`define SKY130_EF_SC_HD__NEWFILL_12_V + +/** + * newfill_12: Designed to replace the decap_12 cell while reducing + * the amount of local interconnect and satisfying the more restrictive + * poly density rule of 38%. + */ + +`timescale 1ns / 1ps +`default_nettype none + + +`ifdef USE_POWER_PINS +/*********************************************************/ + +`celldefine +module sky130_ef_sc_hd__newfill_12 ( + VPWR, + VGND, + VPB , + VNB +); + + input VPWR; + input VGND; + input VPB ; + input VNB ; + // No contents. +endmodule +`endcelldefine + +/*********************************************************/ +`else // If not USE_POWER_PINS +/*********************************************************/ + +`celldefine +module sky130_ef_sc_hd__newfill_12 (); + + // Voltage supply signals + supply1 VPWR; + supply0 VGND; + supply1 VPB ; + supply0 VNB ; + // No contents. +endmodule +`endcelldefine + +/*********************************************************/ +`endif // USE_POWER_PINS + +`default_nettype wire +`endif // SKY130_EF_SC_HD__NEWFILL_12_V