How do you force a specific library cell for an isolation or level-shifter strategy?
From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide
Short Answer
Use use_interface_cell (UPF) to tie an isolation strategy, a level-shifter strategy, or one of each to the library cells you list. It is the only mapping command that can map a combined cell such as an enable level shifter, and in ICC2 it wins over map_isolation_cell (UPF) and map_level_shifter_cell (UPF) on the same strategy. Then check with report_mv_lib_cells (ICC2) that the forced cell really has the attributes the strategy needs.
Technical Explanation
- Default mapping: with no mapping command, ICC2 picks any suitable isolation or level-shifter cell in the library for each strategy.
- Why force a cell: a combined enable level shifter for a crossing that needs both functions, a preferred drive strength, or a cell qualified for that voltage pair.
- Scope:
use_interface_cell(UPF) takes at most one isolation and one level-shifter strategy, and can map combined cells the older map commands cannot. - Priority: when both
use_interface_cell(UPF) and an older map command target the same strategy,use_interface_cell(UPF) wins. - Existing cells: instantiated isolation cells tied to the strategy are remapped unless dont_touch; level-shifter mapping restricts the choice but never forces insertion.
- Validity: each listed cell must model the strategy function in Liberty or a define command; if none does, it is an error unless
-force_functionis used. - What breaks: if every listed cell is invalid, the default policy drops the strategy with UPF-108, and that crossing gets no cells.
# [UPF] design.upf
set_isolation ISO_GPU -domain PD_GPU -applies_to outputs -isolation_supply SS_AON -clamp_value 0 -isolation_signal U_PMU/iso_gpu -isolation_sense high -location parent
set_level_shifter LS_GPU -domain PD_GPU -applies_to outputs -rule low_to_high -location parent
use_interface_cell ELS_GPU -strategy {ISO_GPU LS_GPU} -domain PD_GPU -lib_cells {ELS_LH_AND_X2}
# older isolation-only form, still accepted by ICC2; loses to use_interface_cell here
map_isolation_cell ISO_GPU -domain PD_GPU -lib_cells {ISO_AND_X1}
# [ICC2] icc2_shell
report_mv_lib_cells -verbose
create_mv_cells
check_mv_designWhat To Check
report_mv_lib_cells -verbose(ICC2) shows the forced cell with the PG pins and pin functions the strategies need.- The load log shows no UPF-108 for any mapped strategy.
- Inserted cells on PD_GPU outputs are the forced ELS, not a fallback pair.
- No dont_touch isolation cell still uses a cell you meant to replace.
Command Checks & Actions
use_interface_cell ELS_GPU -strategy {ISO_GPU LS_GPU} -domain PD_GPU -lib_cells {ELS_LH_AND_X2}Map one isolation and one level-shifter strategy to a combined cell
map_isolation_cell ISO_GPU -domain PD_GPU -lib_cells {ISO_AND_X1}Older isolation-only mapping; loses to use_interface_cell on the same strategy
report_mv_lib_cells -verboseShow PG pins, pin functions and MV type of library cells
check_mv_designCheck inserted cells against the strategies and supplies
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): All 256 PD_GPU outputs get ELS_LH_AND_X2, one cell per crossing instead of an isolation cell plus a shifter.
- Suspicious (illustrative): Some outputs still get ISO_AND_X1 plus a separate shifter: the mapping did not reach every element, so check the element lists.
- Hard stop: UPF-108 reports the strategy dropped because the listed cell is invalid: those outputs have no isolation at all.
Common Mistake
The Trap: Listing a library cell whose Liberty model lacks the isolation or level-shifter attributes the strategy needs.
- The mapping is rejected and, under the default policy, the strategy is dropped with UPF-108, so the crossing ships unprotected unless someone reads the log.
What The Interviewer Is Testing
- Do you know which mapping command wins when two target the same strategy?
- Can you explain why a combined enable level shifter needs use_interface_cell?
Follow-up Question & Model Response
"Why not just set dont_use on every other isolation cell instead of mapping?"
Candidate Model Response: A dont_use setting is global, so it removes those cells from every strategy and domain that could have used them. Mapping is per strategy, so PD_GPU gets the enable level shifter while other domains keep their normal choices. It also records the choice in the UPF, where a reviewer looks for it. Use dont_use for cells nobody should ever get, and mapping for a local preference.
Practical Example
Design Scenario: (illustrative) PD_GPU at 0.75 V drives PD_AON at 0.9 V through 256 outputs that need both isolation and low-to-high shifting. Default mapping inserts ISO_AND_X1 plus LS_LH_X1 on each, 512 cells in all. use_interface_cell ELS_GPU -strategy {ISO_GPU LS_GPU} -domain PD_GPU -lib_cells {ELS_LH_AND_X2} (UPF) replaces each pair with one enable level shifter, saving about 30 ps per crossing and a quarter of the area. Cell names and savings are illustrative.
Low-Power & UPF Handbook
Master Low-Power VLSI & Multivoltage Design
Read the complete low-power guide library covering power domains, level shifters, isolation clamps, state retention, and UPF signoff verification.

Continue practising