MMMC means Multi Mode Multi corner. This file is used to analyze the design in different Modes and corners.Because the chip after manufacture have to work properly for different temperatures, voltage, and while manufacturing there might be some process variations which leads to variation in delays (expected delays will not come).This MMMC file usually develop using TCL script to execute all the commands into the tool.
Let’s take a real time example, a chip is manufactured and implanted in a mobile. So, you that mobile, in you home room temperature will be like 27 degrees and mobile is working properly. But you planed a tour to Leh Ladakh and Desert in Rajasthan, Leh Ladakhwill have negative temperature in winter and Desert will have 50 degrees temperature in summer. Your mobile should work for both the temperatures accordingly right. Now a days, where ever we go we are experiencing those temperatures all over in India depending on the seasons. So, make the chips to work properly for all temperatures we have to analyze the chip in different temperatures and voltages.
The above variations we represent as PVT (Process, Voltage and Temperature). As I said these PVTs impact the delay of the design which leads to not meet the timing constraints.So, to create analysis view (MMMC we can say) we need some files they are:
- Timing Libraries (.libs)
- Timing constraints (.sdc)
- Cap tables or RC co-efficient files (Represents capacitance and resistances of nets)
What is Corner?
A corner is set of parameters which describes the process, supply voltage and temperature for the standard cells for the specific technology node. This information can be carried by the timing libraries.
What is Mode?
The design will have multiple modes like Functional mode, test mode, etc. Each mode will have separate SDC files (Timing Constraints) like func_mode.sdc (functional mode), scan_mode.sdc (scan mode).
So, in MMMC by using those files multiple modes and corners have to create. Different set of libraries are available for each technology nodes which are ss (Slow-Slow), ff (Fast-Fast) and Typical.
- Slow-Slow will have worst delays (Max delays). Both PMOS and NMOS works slow.
- Fast-Fast will have best delays (Min delays). Both PMOS and NMOS works fast.
- Typical will have moderate delays. Both PMOS and NMOS works normally.
Likewise, for RC values also available, RC min, RC max, RC typical, C min, and C max.
MMMC file flow
Define Library sets
⇓
Define RC Corners
⇓
Delay corners (Lib sets + RC corner)
⇓
Define SDC mode
⇓
Create Analysis views (delay corners + SDC modes)
⇓
Set analysis views for setup and hold
Note: Here, worst analysis view for setup and best analysis view for hold.
The following sample files gives you exact format of MMMC file:
create_library_set -name fast-timing[list fast.lib]
create_library_set -name slow-timing[list slow.lib]
create_rc_corner -name rc_best-cap_table extended.CapTbl-preRoute_res 1-postRoute_res 1 -preRoute_cap 1-postRoute_cap 1 -postRoute_xcap 1 -preRoute_clkres 0 -preRoute_clkcap 0-T -40
create_rc_corner -name rc_worst-cap_table extended.CapTbl-preRoute_res 1-postRoute_res 1 -preRoute_cap 1-postRoute_cap 1 -postRoute_xcap 1 -preRoute_clkres 0 -preRoute_clkcap 0-T 125
create_delay_corner -name slow_max-library_set slow -rc_corner rc_worst
create_delay_corner -name fast_min -library_set fast -rc_corner rc_best
create_constraint_mode -name func_mode -sdc_files [list func.sdc]
create_constraint_mode -name scan_mode -sdc_files [list scan.sdc]
create_analysis_view -name func_slow_max -constraint_mode func_mode -delay_corner slow_max
create_analysis_view -name func_fast_min -constraint_mode func_mode -delay_corner fast_min
create_analysis_view -name scan_slow_max -constraint_mode scan_mode -delay_corner slow_max
create_analysis_view -name scan_fast_min -constraint_mode scan_mode -delay_corner fast_min
set_analysis_view -setup [list func_slow_maxscan_slow_max] -hold [list func_fast_minscan_fast_min]