https://open-source-silicon.dev logo
t

tnt

08/05/2020, 8:53 AM
I'm not even sure what tool you're supposed to use for that ... magic doesn't seem to know anything about SPEF. The pic above suggests "DEF2SPEF" but I can find nothing like that.
n

Nickson Jose

08/05/2020, 9:07 AM
I think this is one of the limitation as of now..just remembered this mention from Prof. @mshalan’s openlane introductory video.
t

tnt

08/05/2020, 9:12 AM
Yeah, but I would assume there is already tools to do that and they're just not plugged into the flow yet. Pretty sure I saw a talk about the raven and they were talking abot post-route STA and SPEFs ...
n

Nickson Jose

08/05/2020, 9:48 AM
Thanks for the info @tnt..I could generate spef outside openLane using def2spef utility..
t

tnt

08/05/2020, 10:02 AM
There is a def2spef ? Where did you find that ?
n

Nickson Jose

08/05/2020, 10:05 AM
t

tnt

08/05/2020, 10:06 AM
Mmm, yeah, looking at it, it's not particularely inspiring tbh, seems a lot of hand parsing/generation rather than rely on good/known LEF/DEF parsers is not a great first sign.
n

Nickson Jose

08/05/2020, 10:07 AM
True @tnt
m

mshalan

08/05/2020, 10:08 AM
@Nickson Jose Consider this instead https://github.com/Cloud-V/SPEF_EXTRACTOR. This is the one used by OpenLane. Both developed by my students.
n

Nickson Jose

08/05/2020, 10:09 AM
Thanks @mshalan
Hi @mshalan..which .lef file would be the input to this extractor? tech lef or merged.lef. While using the .tlef file I'm getting the attached error.
a

Ahmed Ghazy

08/05/2020, 5:38 PM
@Nickson Jose: It is complaining that it can't find the cell, so use the
merged.lef
which contains both tech information and the cells.
n

Nickson Jose

08/05/2020, 6:02 PM
@Ahmed Ghazy..It worked..thanks!
Hi @Ahmed Ghazy @mshalan..i'm running post routing STA in openSTA using the SPEF generated from above extractor..im getting below 2 warnings while executing "read_spef" command..also there's no effect of parasitics showing up in the slack calculation (i.e., with or w/o SPEF the slack value is same)
m

mshalan

08/05/2020, 9:28 PM
@Nickson Jose Can you share the SPEF file?
n

Nickson Jose

08/06/2020, 3:44 AM
Hi @mshalan..I have compressed the main file..(it was around 30 MB)
Hi @mshalan..could you make anything out of the SPEF file?
m

mshalan

08/06/2020, 12:35 PM
Hi @Nickson Jose, changes have been committed to fix the extractor. Please try again.
n

Nickson Jose

08/06/2020, 12:58 PM
Ok..will try and let you know
Hi @mshalan..im caught in a situation here..
My objective is to compare the slack values pre and post layout..
For pre-layout STA, im using synthesized netlist for analysis and for post Im using pre_route netlist + the generated SPEF file..but my post layout setup slack is greater than pre layout one..which doesn't make sense..am I missing something here?
t

tnt

08/07/2020, 5:57 AM
The openlane pre-layout STA uses estimates for the load capacitance, so those can be overestimated.
n

Nickson Jose

08/07/2020, 6:04 AM
@tnt ok so that justifies it.
@tnt so if i need to do a fruitful pre and post STA analysis..what modifications do I need to do?
t

tnt

08/07/2020, 7:38 AM
Not sure what you mean by fruitful. First my above statement is just a theory / possible explanation, but still there could be other issues in the pre/post route STA causing them to not be accurate. Second, you need an estimate of the driving slew rate and load capacitance to make timing estimates that have any basis in reality. The liberty file contain infos/delays for different data point of drive slew and load capacitance so you need to provide that. For pre-layout STA you need to come up with "something" to plug in there ... (AFAIU)
👍 1
m

mshalan

08/07/2020, 9:21 AM
@tnt @Nickson Jose pre-routing STA is based on RC estimates for the interconnects. OpenROAD app creates virtual routes and uses only one metal layer parameters to calculate the delays. If you are using the OpenROAD App you may influence this by using the command:
Copy code
set_wire_rc -layer metal_layer_name
@tnt .lib file contains wire load models (WLM) which can be used to estimate the interconnect RC values even before PnR (Plave and ROute)
t

tnt

08/07/2020, 9:27 AM
it does ? I couldn't see anything from a quick glance at it.
m

mshalan

08/07/2020, 9:28 AM
There is a default WLM which is used by OpenSTA. You may pick a specific wire model based on the design size
t

tnt

08/07/2020, 9:30 AM
I thought that was coming from the techlef not the cell library .lib
m

mshalan

08/07/2020, 9:31 AM
To instruct OpenROAD App to use the tech LEF info, use the command I posted above
n

Nickson Jose

08/07/2020, 9:57 AM
@mshalan..as per my understanding openlane is wrapper around openroad..so where do I make the definition for "set_wire_rc " in openlane?
m

mshalan

08/07/2020, 4:27 PM
Hi @Nickson Jose OpenLANE is a flow/methodology that uses open source EDA tools including OpenROAD. Check OpenLANE base.sdc
👍 1
n

Nickson Jose

08/09/2020, 8:33 AM
HI Prof. @mshalan..I couldn't find the WLM in the .lib file..can you specify where does openlane fetch that info from?
im only using sky130_fd_sc_hd pdk
Hi @mshalan.I'm facing below error while generating spef file from the above SPEF_EXTRACTOR..I'm attaching the lef and def file for reference too..
Start parsing LEF file... Parsing LEF file done. Start parsing DEF file... Parsing DEF file done. Parameters Used: Edge Capacitance Factor: 1 Wire model: PI Traceback (most recent call last): File "main.py", line 482, in <module> firstLayer = lef_parser.via_dict[myVia].layers[0] KeyError: 'via2_FR'
lef_def.tar.gz