LEC: Common Causes of Conformal LEC (Logic Equivalence Check) Failures during ASIC Physical Design

LEC: Common Causes of Conformal LEC (Logic Equivalence Check) Failures during ASIC Physical Design

This is how golden DFF vs. revised DFF looks after power optimization.

Common Causes of Conformal LEC (Logic Equivalence Check) Failures in ASIC Physical Design

Conformal LEC compares RTL vs. Netlist or Pre-Post P&R Netlists to ensure functional equivalence.


Causes:

  • Optimization Aggressiveness: Synthesis/P&R tools merge/remove redundant logic.
  • Clock Gating/Power Gating: Missing constraints cause gating logic mismatches.
  • Constant Propagation: Unintended optimization of tied-high/low signals.

Debug Steps:

# Check if constants are propagated differently:
report_constant -pre_synth vs. report_constant -post_phys

Causes:

  • Clock Buffers/Inverters Inserted: CTS alters clock paths (e.g., balancing skew).
  • Clock Gating Cells: Added post-synthesis but not modeled in reference design.

Fix:

# Exclude clock cells from LEC:
set_ignore -type cell {CLK_BUF* CLK_INV*}

Causes:

  • DFT Insertion: Scan flops reordered for routing efficiency.
  • Test Mode Signals: Missing constraints for scan-enable (SE)/test clocks.

Debug:

# Compare scan chains pre/post-P&R:
report_scan_chain -pre_synth
report_scan_chain -post_phys

Causes:

  • Level Shifters/Isolation Cells: Added for UPF/CPF power domains.
  • Retention Registers: Power-gating changes flop behavior.

Fix:

# Map power-aware cells correctly:
set_mapping -match_by_name -type level_shifter

Causes:

  • Manual ECOs: Logic fixes in P&R not reflected in reference netlist.
  • Metal-Only ECOs: Functional changes missed in LEC.

Debug:

# Check ECO log files:
compare_eco -pre_eco netlist.v -post_eco netlist_eco.v

Causes:

  • Third-Party IPs: Missing/outdated behavioral models.
  • Analog Blocks: Treated as black boxes in RTL but instantiated in netlist.

Fix:

# Define black boxes explicitly:
set_blackbox -module {ADC_CORE PLL_CORE}

Causes:

  • Gate Sizing: Changes cell drive strength but not functionality.
  • Buffer Insertion: Adds delay buffers on critical paths.

Debug:

# Ignore non-functional buffers:
set_ignore -cell_type {BUF*}

Causes:

  • Asynchronous vs. Sync Resets: Synthesis converts one to the other.
  • Reset Tree Buffering: Physical design adds buffers to reset nets.

Fix:

# Align reset policies:
set_reset -sync -all

Causes:

  • Hierarchical Flattening: Physical design removes hierarchies.
  • Renaming for DRC: Tools rename cells/nets to avoid violations.

Debug:

# Use signature-based matching:
set_compare -signature

Causes:

  • Undefined Don’t-Cares: Unconstrained signals optimized differently.
  • False Paths/Multicycle Paths: Not synchronized between RTL and P&R.

Fix:

# Reapply constraints in Conformal:
read_sdc -both pre_synth.sdc post_phys.sdc

Debug Flow for LEC Failures

  1. Isolate Failure Points:
   report_failing_points -summary
  1. Compare Hierarchies:
   report_design -compare
  1. Check Mapped/Unmapped Logic:
   report_unmapped -verbose
  1. Verify Clock/Reset Domains:
   report_clock -all
   report_reset -all

Key Takeaways

Issue CategoryTool CommandSolution
Clock Tree Changesset_ignore -cell CLK_*Exclude CTS buffers.
Scan Chain Reorderreport_scan_chainAlign DFT constraints.
Power-Aware Cellsset_mapping -type level_shifterMap UPF/CPF cells.
ECO Mismatchescompare_ecoBack-annotate ECOs.

Facebook
Twitter
LinkedIn
Email