Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rail Analysis (EM/IR drop) #58

Merged
merged 8 commits into from
Jun 9, 2021
Merged

Rail Analysis (EM/IR drop) #58

merged 8 commits into from
Jun 9, 2021

Conversation

harrisonliew
Copy link
Contributor

@harrisonliew harrisonliew commented Mar 17, 2021

Added ability to characterize technology (stdcells) library and macros for EM + IR drop analysis (both static + dynamic).

Some notes:

  • EM/IR requires power grid view libraries to be created. The init_technology step creates these once for the technology (stdcells) and for all macros (given in vlsi.inputs.extra_libraries), unless the list of extra libraries has changed.
  • The rail analysis uses the current information from static/dynamic power analysis, and is implemented as a generic method that can be called by either the static_rail and active_rail steps.
  • Rail analysis comes after static + dynamic power analysis, or else an implicit set_pg_nets from set_rail_analysis_config overrides the supply voltage for subsequent power analysis.
  • The read_spef command was fixed--it was erroring out because the corner/file pairing wasn't done properly.

Fixes needed before this PR can be merged:

  • Need to get the list of cells from extra libraries, perhaps from the name of each Library. Documentation also needs to reflect that for macro PG views, each Library must have a name and each set of files can only contain 1 cell.
  • Fix error caused by reading additional LEFs or reading LEFs over again b/w tech/stdcell PGV generation and macro PGV generation. Seems to require design is dumped (yet reset_design errors out) or init_design to be called first?
  • Separate filler and decap cells in tech's list of special cells. This way, characterization of area decapacitance can be done (if technology has that information)
  • Add corner-specific Spice models (and corner flags) to tech JSON schema, and skip stdcell PG view creation if these aren't specified. Currently this is hardcoded for the ASAP7 case.
  • Need a massive MMMC overhaul to support more corners and things like QRC should be tied to stackups and not MMMC corners
  • Fix read_spef sequence relying on fact that the list of spefs was written in the [setup, hold] order by Innovus plugin

TODOs potentially in other PRs:

  • Automatically populate power.inputs.database from Innovus
  • Make a util to get the actual cell name for macros rather than relying on Library name property
  • Fix generating PG views in the non-MMMC case (can only have 1 QRC file)
  • Need to actually get combinations of all power nets + power domains, not just nets for power data. Alternatively, need to write TCL get all relevant .ptiavg files by parsing the .ptifiles file generated by power analysis.
  • To report_irdrop_regions, the highest run number in the rail analysis output dir needs to be parsed and incremented in order to reference the correct database.
  • Script to open Voltus, read the rail analysis database, generate visualization, and display waveforms.
  • Documentation in main Hammer repo.

power/voltus/__init__.py Outdated Show resolved Hide resolved
power/voltus/__init__.py Outdated Show resolved Hide resolved
…nets from set_rail_analysis_config sets a constant supply voltage for subsequent power analysis regardless of view
@harrisonliew harrisonliew marked this pull request as ready for review June 2, 2021 00:02
@dpgrubb13
Copy link
Contributor

dpgrubb13 commented Jun 3, 2021

Not that it would necessarily need to be included in this PR, but do you think it would be useful to generate an open_chip type script for the rail analysis results like in the Innovus plugin?

Ah, just saw the TODO for future PRs, so that's covered already!

@harrisonliew harrisonliew mentioned this pull request Jun 7, 2021
1 task
Copy link
Contributor

@dpgrubb13 dpgrubb13 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, comments were resolved. We just need to make sure to track the remaining TODOs.

@harrisonliew harrisonliew merged commit 191026e into master Jun 9, 2021
@harrisonliew harrisonliew deleted the rail_analysis branch June 9, 2021 04:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants