Skip to content

ABKGroup/NanGate45-Synopsys-Enablement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NanGate45-Synopsys-Enablement

This work was conducted by students at UCSD, POSTECH, and Drexel to help enable fundamental research in EDA using the NanGate45 open-source PDK and the NanGate Open Cell Library. When the NanGate45 research enablement was first released (e.g., https://eda.ncsu.edu/downloads), only Cadence enablement was provided. As a result, researchers have not been able to perform post-route extraction and timing, or timing-driven P&R, using Synopsys tools. Our work develops and makes public .tluplus and other necessary design enablement so that post-route extraction and timing, as well as timing-driven P&R, are possible for Synopsys tool users. We provide testcases and example scripts showing “reasonable” correlation of our new Synopsys enablement to the previously-existing Cadence enablement. Importantly, please note that indicators of correlation that we present are not, and should not be construed as, "benchmarking" of any kind. We make no value judgments regarding the respective merits of commercial EDA tools. We welcome suggestions for improvement or improved materials to be included in this repository; please communicate these by email or use GitHub issues, pull requests, etc. Our contact information is provided below. Last, please note and read carefully the headers of all TCL files in this repository that invoke commercial EDA tools. We thank both Cadence and Synopsys for allowing their copyrighted IP to be made publicly available for use by researchers in this manner.

Contacts

Contents

Design Enablement

The files required for design implementation are as follows.

Cadence Synopsys
Physical library LEF LEF
Technology library LEF TF
Liberty library LIB DB
Interconnect File ICT ITF
RC Lookup Table CAPTABLE TLU+
Parasitic Extraction QRC NXTGRD

All enablements, except for Synopsys enablement, are taken from [1]. Additionally, this repository includes .tf files (modified from [2]), as well as .db, .itf, .ict, .tluplus, and .nxtgrd files.

Validation of Design Enablement

To validate the Synopsys enablement that we provide, we conduct experiments comparing the results from the flows of two EDA companies (i.e., Synopsys and Cadence) under various conditions. The evaluation metrics we use are as follows:

  • Number of Matching Timing Paths. This metric is based on the endpoint timing information output by both tools. It measures the consistency of PEX and STA engines between the two tools.
  • Net Capacitance. The capacitance of all nets in the design. This metric can be further categorized based on whether coupling capacitance is present.
  • Timing Details for Each Endpoint. The characteristics of all timing endpoints in the design, based on setup analysis. These values can be further categorized based on whether the options for coupling capacitance extraction and signal integrity analysis are enabled.
    • Actual Arrival Time
    • Worst Slack
    • Each Cell Delay
    • Each Wire Delay
    • Each Cell Output Slew
    • Each Wire Output Slew

Experimental Flows

Timing details vary depending on the design stage and the tools we use.

  • Flow 1: Embedded PEX in P&R tool, and embedded STA in P&R tool
Figure
  • Flow 2: Embedded PEX in P&R tool, and Standalone STA
Figure
  • Flow 3: Standalone PEX, and Standalone STA
Figure
  • Flow 1: This flow uses the embedded PEX and STA engines in each P&R tool as-is, juxtaposing the results from Cadence Innovus and Synopsys Fusion Compiler.

  • Flow 2: In this flow, the embedded PEX engine of each P&R tool is used as-is, while the STA analysis is performed with the same tool (Synopsys PrimeTime). By fixing the STA engine, only the differences between the PEX engines are analyzed. In this flow, we use the SPEF files generated by Cadence Innovus and Synopsys Fusion Compiler as input for Synopsys PrimeTime. (Note that we have also implemented a symmetric flow that uses Cadence Tempus. The fact that we discuss Synopsys PrimeTime here in no way implies any preference or value judgment. For the Cadence Tempus-based flow, please refer to the instructions below.)

  • Flow 3: This flow independently utilizes both the PEX and STA engines for analysis, employing Cadence Quantus and Tempus alongside Synopsys StarRC and PrimeTime.

Types of Timing Path Matching

We must note that when extracting timing paths from different tools, the timing paths reported for given endpoints and/or for given analysis requests do not always exactly match. Therefore, for the purpose of comparing the characteristics of the timing paths in our experiment, we define ‘matching timing path types’ as follows:

  • Case 1: The timing paths from both tools have the same cells and transition types (i.e., rise, fall).
  • Case 2: The timing paths from both tools consist of the same cells but have different transition types.
  • Case 3: At least one cell in the timing paths differs between the two tools.

In this repository, we use only Cases 1 and 2 for comparison and evaluation.

The figure below shows the path matching types in our repository:

Figure

Experimental Results

We summarize the experimental results using tables and plots. The plots presented here have been selected as representative examples for validation scenarios of interest. Data and plots can be directly examined, either by following usage instructions below to extract the data yourself, or by checking the files that have been uploaded in the "benchmark" directory.

We use “absolute difference” for evaluation because the scale of the data we handle is very small, and use of relative difference would lead to data distortion. However, since absolute difference is expressed in absolute terms, its value varies depending on the range of the data. Therefore, when reporting our results here, we use “Normalized Absolute difference.” This is simply the mean or the maximum absolute difference, divided by the data range. Here, data range is defined as the difference between the maximum and minimum values across all data points from both groups being compared.

The formula is as follows:

Normalized Absolute Difference = Absolute Difference / (Maximum - Minimum)

The abbreviations used in the experimental report have the following meanings:

  • DESIGN: The name of the top module in the benchmark.
  • CC: Whether or not to include and extract the “Coupling Capacitance” (CC) during parasitic extraction.
  • SI: Whether or not to enable “Signal Integrity” (SI) analysis during static timing analysis.
  • INVS: Innovus
  • FC: Fusion Compiler
  • QTS: Quantus
  • TPS: Tempus
  • STRC: StarRC
  • PT: PrimeTime
  • PEX: Parasitic Extraction Engine
  • STA: Static Timing Analysis Engine

Summary

  • Number of Matching Timing Paths
    Statistics for paths that match both Case 1 and Case 2.

    • Flow 1:

      • When coupling capacitance extraction and signal integrity analysis are disabled:

        • Lowest matching rate: 64 % (IBEX)
        • Average matching rate: 88.41 %
        • Highest matching rate: 98.68 % (LDPC)
      • When coupling capacitance extraction and signal integrity analysis are enabled:

        • Lowest matching rate: 59.07 % (IBEX)
        • Average matching rate: 77.69 %
        • Highest matching rate: 97.08 % (JPEG)
    • Flow 2:

      • When coupling capacitance extraction and signal integrity analysis are disabled:

        • Lowest matching rate: 78.21 % (IBEX)
        • Average matching rate: 92.70 %
        • Highest matching rate: 98.83 % (LDPC)
      • When coupling capacitance extraction and signal integrity analysis are enabled:

        • Lowest matching rate: 68.85 % (LDPC)
        • Average matching rate: 81.11 %
        • Highest matching rate: 98.56 % (JPEG)
    • Flow 3:

      • When coupling capacitance extraction and signal integrity analysis are enabled:
        • Lowest matching rate: 58.31 % (IBEX)
        • Average matching rate: 79.72 %
        • Highest matching rate: 96.79 % (JPEG)
    • Summary: Consolidating the results from the three flows, we observe that the average matching rates range from approximately 77.7% to 92.7%. Overall, our implemented Synopsys enablement achieves an average timing path matching rate of about 83.93% compared to Cadence enablement.

  • Net Capacitance
    The average net capacitance comparison results across all designs are as follows:

    • R2 score: 0.9957
    • mean normalized absolute difference: 0.09 %
    • maximum normalized absolute difference: 7.71 %
  • Timing Details for Each Endpoint
    The table in the Appendix Section summarizes the comparison results for Actual Arrival Time (AAT) and Slack in Timing Path Matching Case 1. Overall, across all designs:

    • AAT:

      • R2 score: 0.9993
      • Mean normalized absolute difference: 0.37 %
      • Maximum normalized absolute difference: 3.92 %
    • Slack:

      • R2 score: 0.9991
      • Mean normalized absolute difference: 0.37 %
      • Maximum normalized absolute difference: 6.82 %

Usage and Running Instructions

How to use

If you want to run the predefined studies, please use:

Usage) ./run.sh

If you want to run with a custom combination:

Example) make DESIGN=ldpc_decoder_mod PEX_TOOL1=innovus STA_TOOL1=innovus CC1=true SI1=true PEX_TOOL2=fusion_compiler STA_TOOL2=fusion_compiler CC2=true SI2=true CASE=1

The execution results are stored in the "benchmark/(your_design_name)" directory.

Directory and File Descriptions

Our repository is composed of the following files and directories:

  • NanGate45: Directory containing design enablement for Cadence and Synopsys.
  • benchmark: The design directory that we used for evaluation:
    • Input files for Extracting Design Data
      • DEF file with routing
      • Flattened netlist file after routing stage
      • SDC file with all input/output port constraints
    • Output files
      • SPEF files
      • CSV files of net capacitance
      • CSV files of timing details
      • summary files
      • plot
      • done: A directory that collects files used to verify the completion of a particular step in the Makefile. In particular, it deals with generating data tables and plots.
  • scripts: This directory contains EDA tool scripts that allow users to run PEX and STA according to their preferences.
  • Makefile: Users can process data from various tools they wish to compare using the make command. This Makefile performs the following functions:
    • It executes the user-selected PEX tool and STA tool to generate CSV files containing net capacitance and timing details. Since two types of data are required for comparison, users must define two flow types (please refer to the example parameters below).
    • It reads the generated CSV files and produces evaluation metrics such as plots, R2 scores, and absolute differences.
    • Parameters
      • DESIGN: The top-level block name defined in the DEF and netlist.
      • PEX_TOOL1 / PEX_TOOL2: The PEX Engine for extracting the SPEF file. The allowed values are "innovus", "quantus", "fusion_compiler", and "starRC". Innovus utilizes TQuantus which is the built-in PEX engine.
      • STA_TOOL1 / STA_TOOL2: The STA engine for extracting timing details. The allowed values are "innovus", "tempus", "fusion_compiler", and "PrimeTime".
      • CC1 / CC2: Whether to extract coupling capacitance along with the SPEF when using the PEX Engine. The allowed values are "true", "false".
      • SI1 / SI2: Whether to extract timing details with signal integrity analysis in the STA engine. The allowed values are "true", "false".
      • NWORST: The maximum number of worst paths to extract at each endpoint. This is typically set to 1. The allowed values are the number over one.
      • CASE: Which matched path type to assume when extracting timing details (please refer to the aforementioned "path matching type"). The allowed values are "1", "2".
  • run.sh: The file that defines the presets used in the experiment.

Additional Design Constraints

To extract as many timing paths as possible, we add the following constraints to the SDC. These constraints intentionally apply timing constraints to the primary input/output ports so that they are considered as timing paths during STA.

  • set_input_delay -clock [get_clocks $clock_name] 0.0 [all_inputs]
  • set_output_delay -clock [get_clocks $clock_name] 0.0 [all_outputs]

Additionally, since Fusion Compiler allows timing borrowing in latch timing analysis by default while Innovus does not, we recommend adding the following constraint to facilitate comparison under identical analysis conditions. (Optional)

  • set_max_time_borrow 0 [all_registers]

The figure below shows the types of timing paths that we extract.

Figure

Environment

For commercial EDA tools, we used the versions below.
[Cadence]

  • Innovus: 21.1
  • Quantus: 21.1
  • Tempus: 21.1

[Synopsys]

  • Fusion Compiler: 22.3
  • PrimeTime: 18.6
  • StarRC: 18.6

References

[1] NanGate45 from TILOS-AI-Institute/MacroPlacement's github
[2] Synopsys tech file (.tf) from mflowgen/freepdk-45nm

Appendix

Experimental Tables and Plots

Number of Matching Timing Paths

  • Flow 1
DESIGN CC & SI # of timing paths # of matched timing paths [Case 1 + Case 2]
AES OFF 1444 1368 (94.74 %)
ON 1241 (85.94 %)
IBEX OFF 4925 3152 (64.00 %)
ON 2909 (59.07 %)
JPEG OFF 12131 11771 (97.03 %)
ON 11777 (97.08 %)
LDPC OFF 6145 6064 (98.68 %)
ON 4123 (67.10 %)
Ariane133 OFF 62086 50845 (81.89 %)
ON 50039 (80.60 %)
NVDLA
part c
OFF 122999 115792 (94.14 %)
ON 93906 (76.35 %)
  • Flow 2
DESIGN CC & SI # of timing paths # of matched timing paths [Case 1 + Case 2]
AES OFF 1444 1394 (96.54 %)
ON 1232 (85.32 %)
IBEX OFF 4925 3852 (78.21 %)
ON 3406 (69.16 %)
JPEG OFF 12131 11942 (98.44 %)
ON 11956 (98.56 %)
LDPC OFF 6145 6073 (98.83 %)
ON 4231 (68.85 %)
Ariane133 OFF 62086 54195 (87.29 %)
ON 54237 (87.36 %)
NVDLA
part c
OFF 122999 119180 (96.90 %)
ON 95179 (77.38 %)
  • Flow 3
DESIGN CC & SI # of timing paths # of matched timing paths [Case 1 + Case 2]
AES ON 1444 1209 (83.73 %)
IBEX ON 4925 2872 (58.31 %)
JPEG ON 12131 11741 (96.79 %)
LDPC ON 6145 4144 (67.44 %)
Ariane133 ON 62086 46865 (75.48 %)
NVDLA
part c
ON 122999 118787 (96.58 %)

Net Capacitance

DESIGN Cadence's PEX ↔ Synopsys's PEX CC R2 Normalized Absolute Difference
Mean Std Max
AES INVS ↔ FC OFF 0.9966 0.13% 0.22% 5.53%
ON 0.9968 0.13% 0.22% 5.54%
QTS ↔ STRC ON 0.9965 0.15% 0.22% 5.81%
IBEX INVS ↔ FC OFF 0.9955 0.13% 0.42% 13.81%
ON 0.9955 0.12% 0.42% 14.36%
QTS ↔ STRC ON 0.9952 0.22% 0.46% 6.46%
JPEG INVS ↔ FC OFF 0.9929 0.05% 0.23% 10.11%
ON 0.9925 0.05% 0.24% 10.45%
QTS ↔ STRC ON 0.9956 0.07% 0.16% 5.52%
LDPC INVS ↔ FC OFF 0.9961 0.11% 0.25% 5.69%
ON 0.9963 0.10% 0.24% 5.53%
QTS ↔ STRC ON 0.9962 0.12% 0.26% 5.26%
Ariane133 INVS ↔ FC OFF 0.9947 0.07% 0.34% 13.00%
ON 0.9945 0.07% 0.34% 13.28%
QTS ↔ STRC ON 0.9961 0.12% 0.31% 5.78%
NVDLA part c INVS ↔ FC OFF 0.9988 0.00% 0.01% 0.84%
ON 0.9980 0.00% 0.01% 3.47%
QTS ↔ STRC ON 0.9948 0.00% 0.02% 8.30%

The plot below shows the "worst-case" (i.e., in the sense of exhibiting largest deviations between analysis scenarios) comparisons for mean normalized absolute difference and for maximum normalized absolute difference.

Figure

Timing Details for Each Endpoint

DESIGN FLOW CC & SI Actual Arrival Time Slack
R2 Normalized Absolute Difference R2 Normalized Absolute Difference
Mean Max Mean Max
AES 1 OFF 0.9999 0.25% 1.22% 0.9999 0.25% 1.17%
ON 0.9991 0.51% 5.31% 0.9991 0.53% 5.47%
2 OFF 0.9999 0.24% 1.04% 0.9999 0.25% 1.13%
ON 0.9993 0.38% 6.13% 0.9993 0.40% 6.19%
3 ON 0.9984 0.66% 7.05% 0.9984 0.68% 7.16%
IBEX 1 OFF 0.9999 0.15% 0.81% 0.9976 0.20% 44.04%
ON 0.9996 0.24% 3.26% 0.9962 0.29% 46.82%
2 OFF 0.9999 0.19% 0.73% 0.9999 0.20% 0.76%
ON 0.9996 0.35% 3.40% 0.9995 0.36% 3.50%
3 ON 0.9997 0.23% 2.44% 0.9997 0.23% 2.54%
JPEG 1 OFF 0.9999 0.23% 1.34% 0.9999 0.23% 1.35%
ON 0.9999 0.24% 2.65% 0.9999 0.23% 2.81%
2 OFF 0.9999 0.18% 0.94% 0.9999 0.19% 0.98%
ON 0.9999 0.16% 2.26% 0.9999 0.16% 2.34%
3 ON 0.9992 0.65% 2.61% 0.9992 0.63% 2.67%
LDPC 1 OFF 0.9991 0.79% 2.57% 0.9991 0.80% 2.59%
ON 0.9984 0.40% 9.61% 0.9985 0.40% 9.34%
2 OFF 0.9990 0.82% 2.40% 0.9991 0.80% 2.35%
ON 0.9989 0.47% 6.89% 0.9990 0.47% 6.68%
3 ON 0.9981 0.59% 6.82% 0.9984 0.57% 6.65%
Ariane133 1 OFF 0.9999 0.06% 0.44% 0.9999 0.07% 0.45%
ON 0.9995 0.11% 2.52% 0.9995 0.11% 2.55%
2 OFF 0.9999 0.06% 0.39% 0.9999 0.06% 0.39%
ON 0.9998 0.07% 1.11% 0.9998 0.07% 1.12%
3 ON 0.9989 0.21% 1.62% 0.9989 0.21% 1.63%
NVDLA
part c
1 OFF 0.9997 0.33% 4.20% 0.9997 0.34% 4.33%
ON 0.9960 0.88% 14.90% 0.9960 0.86% 14.97%
2 OFF 0.9998 0.26% 4.11% 0.9998 0.26% 4.31%
ON 0.9997 0.23% 6.05% 0.9997 0.23% 6.03%
3 ON 0.9972 1.08% 12.63% 0.9973 1.05% 12.41%

For IBEX in Flow 1, the Slack comparison shows outliers—with the maximum normalized absolute difference reaching a very high value (44–47%). With Flow 2, this phenomenon is not observed. Such a difference may be due to differences between STA engine algorithms or implementations. This said, our focus in this work is solely to provide wire parasitic component modeling files for use of Synopsys tools with NanGate45.

The plot below shows the Slack results for IBEX in Flow 1 and Flow 2, with outliers highlighted by red dotted lines.

Figure

The following plot shows the "worst-case" comparisons for mean normalized absolute difference and for maximum normalized absolute difference, excluding outlier cases.

Figure

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •