Can someone help me with fixing the klayout FEOL c...
# openlane
j
Can someone help me with fixing the klayout FEOL check fail in the precheck? I have an SRAM macro connected with my design inside the user_project_wrapper here. @Mitch Bailey
m
@Jazoolee Ahamed seems that you might have to wait for a new release of the pdk with updated sram macros if you want to get rid of the drc errors. @David Lindley?
j
@Tim Edwards I got this macro files from the 2024 released volare files in the efabless/ repo. Am I missing something here?
@Mitch Bailey Instead of the SRAM gds files found inside the volare prebuilds, I directly used the SRAM gds files from the sky130_sram_macros repo from efabless. It passed the prechecks now !
But for the LVS we need to provide a gl of the SRAM right? Otherwise it fails. What can I do in this situation?
m
For sram macros, use the spice files in the sky130_sram_macros/spice directory. Actually, to get the sram macros to extract correctly, add the following lines to the lvs_config.json file , substituting your macro name. “SRAM_MACRO_NAME”: “sky130_sram_…”, “INCLUDE_FILES”: [ “$LVS_ROOT/tech/$PDK/lvs_config.json” ]
d
Hi @Mitch Bailey yeah, there was some miscommunication between Tim and I regarding the PR I made when I updated the SRAM layouts. We've got it taken care of now and Tim merged the changes in. Jazoolee did the right thing pulling the data straight from the repo. The updated SRAM layouts will be in the next PDK release.
j
@Mitch Bailey When you say use the spice file, you mean add the spice files into the lvs config? I am mainly trying to pass the efabless lvs check.
m
precheck LVS, right? I suggest something like this for the
lvs_config.json
file. The
$LVS_ROOT/tech/$PDK/lvs_config.sram.json
file contains the necessary spice files.
Copy code
"STD_CELL_LIBRARY": "sky130_fd_sc_hd",
        "SRAM_MACRO": "sky130_sram_2kbyte_1rw1r_32x512_8",
        "INCLUDE_CONFIGS": [
                "$LVS_ROOT/tech/$PDK/lvs_config.base.json",
                "$LVS_ROOT/tech/$PDK/lvs_config.sram.json"
        ],
j
Inside user_caravel_project/lvs/ I have added this following code for lvs_config.json, is this what you mean? BTW what is $LVS_ROOT here?
Copy code
{
	"TOP_SOURCE": "user_project_wrapper",
	"TOP_LAYOUT": "$TOP_SOURCE",
	"EXTRACT_FLATGLOB": [
		""
	],
	"EXTRACT_ABSTRACT": [
		"*__fill_*",
		"*__fakediode_*",
		"*__tapvpwrvgnd_*"
	],
	"LVS_FLATTEN": [
		""
	],
	"LVS_NOFLATTEN": [
		""
	],
	"LVS_IGNORE": [
		""
	],
	"LVS_SPICE_FILES": [
		"$PDK_ROOT/$PDK/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__decap_12.spice",
		"$PDK_ROOT/$PDK/libs.ref/sky130_fd_sc_hd/spice/sky130_fd_sc_hd.spice"
	],
	"LVS_VERILOG_FILES": [
		"$UPRJ_ROOT/verilog/gl/SLRV.v",
		"$UPRJ_ROOT/verilog/gl/$TOP_SOURCE.v"
	],
	"LAYOUT_FILE": "$UPRJ_ROOT/gds/$TOP_LAYOUT.gds",
	"STD_CELL_LIBRARY": "sky130_fd_sc_hd",
        "SRAM_MACRO": "sky130_sram_2kbyte_1rw1r_32x512_8",
        "INCLUDE_CONFIGS": [
                "$LVS_ROOT/tech/$PDK/lvs_config.base.json",
                "$LVS_ROOT/tech/$PDK/lvs_config.sram.json"
        ],
}
m
@Jazoolee Ahamed Can you put the hierarchy files at the beginning?
Copy code
{
  "STD_CELL_LIBRARY": "sky130_fd_sc_hd",
  "SRAM_MACRO": "sky130_sram_2kbyte_1rw1r_32x512_8",
  "INCLUDE_CONFIGS": [
    "$LVS_ROOT/tech/$PDK/lvs_config.base.json",
    "$LVS_ROOT/tech/$PDK/lvs_config.sram.json"
  ],
  "TOP_SOURCE": "user_project_wrapper",
  "TOP_LAYOUT": "$TOP_SOURCE",
  "EXTRACT_FLATGLOB": [
    ""
  ],
  "EXTRACT_ABSTRACT": [
    "*__fill_*",
    "*__fakediode_*",
    "*__tapvpwrvgnd_*"
  ],
  "LVS_FLATTEN": [
    ""
  ],
  "LVS_NOFLATTEN": [
    ""
  ],
  "LVS_IGNORE": [
    ""
  ],
  "LVS_SPICE_FILES": [
    "$PDK_ROOT/$PDK/libs.ref/sky130_fd_sc_hd/spice/sky130_ef_sc_hd__decap_12.spice",
    "$PDK_ROOT/$PDK/libs.ref/sky130_fd_sc_hd/spice/sky130_fd_sc_hd.spice"
  ],
  "LVS_VERILOG_FILES": [
    "$UPRJ_ROOT/verilog/gl/SLRV.v",
    "$UPRJ_ROOT/verilog/gl/$TOP_SOURCE.v"
  ],
  "LAYOUT_FILE": "$UPRJ_ROOT/gds/$TOP_LAYOUT.gds"
}
LVS_ROOT
is the directory in mpw_precheck that contains the programs and configuration files. Usually,
$PRECHECK_ROOT/checks/be_checks
. It is set in the precheck program so you should not set it.
j
This worked, thank you so much.
👍 1
m
Actually, this should work too.
Copy code
{
  "STD_CELL_LIBRARY": "sky130_fd_sc_hd",
  "SRAM_MACRO": "sky130_sram_2kbyte_1rw1r_32x512_8",
  "INCLUDE_CONFIGS": [
    "$LVS_ROOT/tech/$PDK/lvs_config.base.json",
    "$LVS_ROOT/tech/$PDK/lvs_config.sram.json"
  ],
  "TOP_SOURCE": "user_project_wrapper",
  "TOP_LAYOUT": "$TOP_SOURCE",
  "EXTRACT_FLATGLOB": [
    ""
  ],
  "EXTRACT_ABSTRACT": [
    ""
  ],
  "LVS_FLATTEN": [
    ""
  ],
  "LVS_NOFLATTEN": [
    ""
  ],
  "LVS_IGNORE": [
    ""
  ],
  "LVS_SPICE_FILES": [
    ""
  ],
  "LVS_VERILOG_FILES": [
    "$UPRJ_ROOT/verilog/gl/SLRV.v",
    "$UPRJ_ROOT/verilog/gl/$TOP_SOURCE.v"
  ],
  "LAYOUT_FILE": "$UPRJ_ROOT/gds/$TOP_LAYOUT.gds"
}
The deleted lines are already in the included files.
👍🏻 1