Vlsi inchip
Where you learn easy about VLSI
synthesis fixing techniques
Advanced DFT: Real-Time Debugging, Challenges & Scan Compression Techniques
Advanced DFT: Real-Time Debugging, Challenges & Scan Compression Techniques
🔹 Real-Time Debugging Scenarios in DFT
1️⃣ Scan Chain Debugging (Shift Errors & Scan Integrity Issues)
Problem: Incorrect data shifting in the scan chain leads to test failures.
Possible Causes:
- Misconnected or broken scan chains.
- Hold timing violations in scan paths.
- Incorrect scan enable (SE) control.
Debugging Approach:
- Run scan shift test with simple patterns (101010... or 11110000...).
- Verify scan input-to-output connectivity.
- Check hold timing during shift operation.
Command (Check Scan Chain Integrity in Synopsys DFT Compiler)
report_scan_chains
report_dft -scan_connectivity
2️⃣ ATPG Failures & Low Fault Coverage
Problem: ATPG reports low fault coverage (< 98%).
Possible Causes:
- Uncontrolled/unobservable logic.
- X-values in scan chains due to floating signals.
- Incorrect scan chain connection.
Debugging Approach:
- Identify uncontrollable/unobservable points.
- Enable test points (testable registers) for scan observability.
- Use X-masking to avoid unknown states.
Command (Generate Fault Report in Synopsys TetraMAX)
report_faults -summary
3️⃣ JTAG TAP Controller Fails in Board Testing
Problem: Boundary scan chain does not respond in IEEE 1149.1 (JTAG) testing.
Possible Causes:
- TAP (Test Access Port) controller misconfigured.
- Incorrect TDI-TDO connections.
- Power issues in JTAG pins.
Debugging Approach:
- Run JTAG IDCODE test (
Instruction 0001
). - Check TAP state transitions using an oscilloscope.
- Verify JTAG control signals TMS, TCK, TDI, TDO.
Command (Verify JTAG TAP in Synopsys)
report_jtag -summary
🔹 Challenges in DFT & How to Overcome Them
DFT Challenge | Cause | Solution |
---|---|---|
Scan chain routing congestion | Too many scan paths | Use scan chain reordering & grouping |
High shift power consumption | Simultaneous switching of many FFs | Use power-aware scan stitching |
X-values in scan patterns | Floating values, uninitialized memories | Use X-masking & ATPG constraints |
Low test coverage | Uncontrollable logic, unscanned FFs | Insert test points & better pattern generation |
Scan compression inefficiency | Poor compaction ratio | Optimize compaction logic & balancing |
🔹 Advanced Scan Compression Techniques
1️⃣ X-Masking (Handling Unknown Values in Scan Chains)
Problem: X-values reduce ATPG efficiency & coverage.
Solution: X-mask registers block Xs during scan capture.
Command (X-Masking in Synopsys DFT Compiler)
set_dft_configuration -x_handling xmask
insert_dft
2️⃣ Adaptive Scan Compression (Dynamic Test Data Reduction)
Problem: Traditional scan compression reduces test time but not dynamically.
Solution: Adaptive compression selects only needed patterns.
Command (Enable Scan Compression in Synopsys)
set_scan_compression -enable
insert_dft
3️⃣ Test Points Insertion (Improve Observability & Controllability)
Problem: ATPG detects unobservable faults.
Solution: Add test points (TPs) to improve controllability.
Command (Enable Test Point Insertion in Synopsys DFT)
set_dft_configuration -test_point_insertion enable
🔹 Summary: How to Optimize DFT for Real-World Use?
Debug scan failures using scan shift tests.
Improve ATPG fault coverage with test points & X-masking.
Fix JTAG issues by verifying TAP controller states.
Reduce test cost & power with adaptive scan compression.
Use DFT tools like TetraMAX, Tessent, and Modus for testing.
Design for Testability (DFT)
Design for Testability (DFT) in VLSI
🔹 What is DFT?
Design for Testability (DFT) refers to techniques used to make an integrated circuit (IC) testable after fabrication. It ensures fault detection and diagnosis using structured testing methods, reducing manufacturing defects and improving yield.
🔹 Why is DFT Important?
Without DFT, testing an IC with millions to billions of transistors is impractical. DFT helps:
Detect manufacturing defects (stuck-at faults, shorts, opens).
Improve fault coverage using structured test techniques.
Reduce test time and cost with scan-based approaches.
Enable in-system testing using Built-In Self-Test (BIST).
1️⃣ Key Techniques in DFT
1. Scan Chain (Full Scan & Partial Scan)
🔹 Why? Converts sequential circuits into easily testable structures.
🔹 How? Replaces flip-flops (FFs) with scan flip-flops (SFFs) that shift test patterns.
Example (Full Scan Insertion in Synopsys DC)
set_scan_configuration -style multiplexed_flip_flop
insert_dft
Full Scan: Converts all FFs into scan FFs (high test coverage).
Partial Scan: Converts selected FFs to reduce area overhead.
2. ATPG (Automatic Test Pattern Generation)
🔹 Why? Generates test patterns to detect faults automatically.
🔹 How? Uses tools like TetraMAX (Synopsys), FastScan (Mentor).
Example (ATPG Command for Stuck-at Faults in TetraMAX)
set_faults -stuck
run_atpg
report_faults
Stuck-at Faults: Models logic gates stuck at 0 or 1.
Transition Faults: Detects delay faults in the circuit.
3. Built-In Self-Test (BIST)
🔹 Why? Allows self-testing inside the chip without external testers.
🔹 How? Uses Linear Feedback Shift Registers (LFSRs) for test pattern generation.
Example (BIST Implementation for Memory Using MBIST)
create_bist_controller -type MBIST -instance MBIST_CTRL
add_bist_structure -controller MBIST_CTRL -instance RAM_BLOCK
Logic BIST (LBIST): Tests combinational logic.
Memory BIST (MBIST): Tests embedded memories.
4. JTAG (IEEE 1149.1 - Boundary Scan)
🔹 Why? Enables board-level testing without physical probing.
🔹 How? Adds a Test Access Port (TAP) for scan-based testing.
Example (Enabling JTAG in Synopsys)
set_dft_configuration -jtag_enable true
insert_dft
Used in board-level debugging and in-system programming.
5. Test Compression (Scan Compression & X-Handling)
🔹 Why? Reduces test data volume and test time.
🔹 How? Uses compactors to merge test responses.
Example (Scan Compression in Synopsys DFT Compiler)
set_scan_compression -enable
insert_dft
X-Masking: Handles unknown values (X
) during scan testing.
Compaction: Reduces scan chain length for faster testing.
2️⃣ Fault Models in DFT
Fault Model | Description | Detection Method |
---|---|---|
Stuck-at Fault (SAF) | A node is permanently 0 or 1 | ATPG with stuck-at test patterns |
Transition Fault (TF) | A slow-to-rise/fall delay defect | Launch-on-capture (LOC) or Launch-on-shift (LOS) |
Bridging Fault (BF) | Two wires are accidentally connected | IDDX Testing, Pattern-based ATPG |
Open Fault (OF) | A break in a wire or via | Voltage-based and delay tests |
Small Delay Defect (SDD) | Minor timing variations causing failures | Path delay ATPG, Speed binning |
3️⃣ DFT Implementation Flow
Step 1: RTL Design with DFT Guidelines
- Use DFT-friendly coding (avoid latches, asynchronous resets).
- Partition design into scan-friendly blocks.
Step 2: Scan Chain Insertion
- Convert FFs into scan FFs.
- Connect them into scan chains.
Step 3: ATPG & Fault Coverage Analysis
- Generate test patterns for stuck-at, transition faults.
- Run fault simulation to measure coverage.
Step 4: JTAG & BIST Integration (Optional)
- Enable JTAG (IEEE 1149.1) for boundary scan.
- Add BIST for self-testing memory & logic.
Step 5: Test Compression for High-Volume Production
- Reduce scan test data & time using compaction.
Step 6: Physical Design & Post-Silicon Testing
- Ensure scan routing is optimized to avoid congestion.
- Perform wafer & final chip testing using ATE (Automatic Test Equipment).
4️⃣ Key DFT Tools
Tool | Function |
---|---|
Synopsys DFT Compiler | Scan insertion, ATPG |
Mentor Tessent | ATPG, scan compression |
Cadence Modus | Scan & test pattern compression |
Synopsys TetraMAX | ATPG & fault simulation |
JTAG ProVision | JTAG boundary scan |
5️⃣ Advantages of DFT in VLSI
Increases fault coverage (detects hidden defects).
Reduces test cost (fewer tester resources required).
Enables in-system testing (JTAG, BIST).
Improves yield & reliability (early fault detection).
Ensures better manufacturability (scan-friendly design).
Conclusion
DFT simplifies post-silicon testing and increases production yield.
Techniques like Scan Chains, ATPG, BIST, and JTAG enable effective testing.
Fault models (Stuck-at, Transition, Bridging) ensure defect detection.
DFT tools like DFT Compiler, Tessent, and TetraMAX automate test generation.
Synthesis Fixes & Optimization Techniques
Synthesis Fixes & Optimization Techniques in Physical Design
🔹 What is Synthesis?
Synthesis converts RTL (Verilog/VHDL) into gate-level netlist, optimizing for timing, area, and power. Key techniques help fix common issues like timing violations, high area, and power consumption.
Fixes & Optimization Techniques in Synthesis
1️⃣ Timing Optimization Techniques
Timing closure requires fixing setup and hold violations.
Setup Violation Fixes (Reduce Path Delay)
- Logic Restructuring: Reduce logic depth.
- Pipelining: Add registers to break long combinational paths.
- Cell Upsizing: Replace slower cells with faster ones.
- Retiming: Move registers across logic to balance delay.
Example (Synopsys DC Command for Timing Optimization)
set_max_delay 2.0 -from REG1 -to REG2
compile -timing
Hold Violation Fixes (Increase Data Path Delay)
- Buffer Insertion: Add delay buffers.
- Cell Downsizing: Use slower cells to delay signal propagation.
- Routing Detour: Increase path length artificially.
Example (Fix Hold Timing in Synopsys DC)
set_fix_hold [all_clocks] -max_delay 0.1
2️⃣ Area Optimization Techniques
Reducing gate count helps minimize area without affecting performance.
Techniques to Reduce Area
- Logic Sharing: Merge duplicate logic.
- Resource Sharing: Use multiplexers instead of separate units.
- Reduce Fanout: Limit the number of loads per cell.
- Use Multi-bit Flip-Flops (MBFFs): Reduces cell count.
Example (Minimize Area in Synopsys DC)
set_max_area 50000
compile -area
3️⃣ Power Optimization Techniques
Reducing dynamic and leakage power is crucial for low-power design.
Dynamic Power Optimization (Reduces Switching Activity)
- Clock Gating: Turns off clocks when not needed.
- Data Gating: Blocks unnecessary data transitions.
Example (Clock Gating in Synopsys DC)
set_clock_gating_style -sequential_cell DFF -control_signal EN
compile -power
Leakage Power Optimization (Reduces Static Power Consumption)
- Use Low-Vt Cells: Lower leakage transistors.
- Power Gating: Turn off power to unused blocks.
Example (Power Gating with UPF in DC)
create_power_domain PD_BLOCK -elements {u_block}
set_retention PD_BLOCK -retention_signal RET_EN -retention_supply VDD_RET
4️⃣ Clock Tree Optimization Techniques
A well-balanced Clock Tree Synthesis (CTS) reduces skew and latency.
Clock Skew Reduction
- Use Clock Buffers: Distribute clock uniformly.
- Balancing Clock Paths: Equalize delays across flops.
Example (Max Skew Constraint in DC)
set_clock_uncertainty 0.2 [get_clocks clk]
Clock Latency Reduction
- Place Clock Sources Close to Sinks.
- Reduce Number of Buffers in the path.
5️⃣ Latch & FSM Optimization Techniques
Avoid unwanted latches and improve FSM efficiency.
Latch Removal
- Ensure every variable has a default assignment.
- Use synchronous always blocks for sequential logic.
Example (Avoid Latches in Verilog)
always @(*) begin
if (en)
out = data;
else
out = 0; // Ensure default assignment
end
FSM Optimization
- One-Hot Encoding for speed.
- Binary Encoding for area.
- Gray Encoding for low power.
Example (FSM Optimization in DC)
set_fsm_encoding style onehot
compile
Summary of Key Synthesis Fixes
Issue | Fixes & Techniques |
---|---|
Setup Violations | Pipelining, cell upsizing, retiming |
Hold Violations | Buffer insertion, cell downsizing |
High Area | Logic sharing, multi-bit flip-flops (MBFF) |
High Power | Clock gating, power gating, low-Vt cells |
Clock Skew | Balanced CTS, clock buffer insertion |
Unintended Latches | Use proper sensitivity list in RTL |
FSM Optimization | One-hot encoding for speed, Gray for low power |
Key Commands for Synthesis in Synopsys Design Compiler
Optimization | Command |
---|---|
Timing Optimization | compile -timing |
Area Optimization | compile -area |
Power Optimization | compile -power |
Clock Gating | set_clock_gating_style |
FSM Encoding | set_fsm_encoding |
Fix Hold Violations | set_fix_hold |
UPF Commands
Common UPF Commands Used in Real-Time Projects
Unified Power Format (UPF) is essential for low-power design, allowing power intent specification separately from RTL. Below are key UPF commands used in real-world VLSI projects:
1️⃣ Power Domains Definition
🔹 Why? Defines separate power regions in the design.
🔹 Example: Two power domains: PD_CORE
and PD_IO
.
UPF Command Example:
create_power_domain PD_CORE -elements {u_core}
create_power_domain PD_IO -elements {u_io}
2️⃣ Power Supply Network
🔹 Why? Defines voltage sources and connections to power domains.
🔹 Example: VDD_CORE
at 0.9V, VDD_IO
at 1.8V.
UPF Command Example:
create_supply_net VDD_CORE
create_supply_port -direction in VDD_CORE
set_voltage VDD_CORE 0.9
create_supply_net VDD_IO
create_supply_port -direction in VDD_IO
set_voltage VDD_IO 1.8
3️⃣ Power Switch Definition
🔹 Why? Used for power gating to control power to a domain.
🔹 Example: Switch SW_CORE
controls PD_CORE
using VDD_CORE
.
UPF Command Example:
create_power_switch SW_CORE -domain PD_CORE \
-input_supply VDD_CORE -output_supply VSW_CORE \
-control_port EN_SW
4️⃣ Isolation Strategy
🔹 Why? Prevents floating signals when one domain is OFF.
🔹 Example: PD_CORE
needs isolation when PD_IO
is ON.
UPF Command Example:
set_isolation ISOL_CORE \
-domain PD_CORE \
-clamp_value 0 \
-isolation_signal ISO_EN -isolation_high
5️⃣ Level Shifter Definition
🔹 Why? Handles voltage mismatches between power domains.
🔹 Example: Connecting PD_CORE
(0.9V) and PD_IO
(1.8V).
UPF Command Example:
set_level_shifter LS_CORE_IO \
-from PD_CORE -to PD_IO \
-level_shifter_type down
6️⃣ Retention Strategy
🔹 Why? Saves state when power is OFF.
🔹 Example: Retains REG_CORE
in PD_CORE
using SAVE_EN
.
UPF Command Example:
set_retention RET_CORE \
-domain PD_CORE \
-retention_signal SAVE_EN \
-retention_supply VDD_CORE_RET
7️⃣ Power Intent Verification
🔹 Why? Validates UPF integrity in the design.
🔹 Example: Reports all power domains and connections.
UPF Command Example:
report_power_domains
report_isolation
report_level_shifters
report_retention
8️⃣ Binding UPF to RTL
🔹 Why? Connects UPF with the RTL for synthesis & verification.
UPF Command Example:
read_upf top_design.upf
read_verilog top_design.v
link_design
Conclusion
🔹 UPF commands ensure power-aware design implementation by defining:
Power domains (create_power_domain
)
Voltage sources (create_supply_net
)
Power switches (create_power_switch
)
Isolation and level shifters (set_isolation
, set_level_shifter
)
State retention (set_retention
)
False Path, Disable Timing Path, and Case Analysis
False Path, Disable Timing Path, and Case Analysis
In Static Timing Analysis (STA), we use timing exceptions to relax unnecessary paths, making timing closure easier. The three key timing exceptions are False Paths, Disable Timing Paths, and Case Analysis.
1. False Path (FP)
Definition:
A false path is a timing path that will never be activated during normal operation. Even though tools report violations on this path, it should be ignored.
🔹 Real-World Example:
In a design with two asynchronous clock domains (clk1
and clk2
), a data path exists but is not functionally used. Since the clocks are not related, timing closure on this path is unnecessary.
Fix: Ignore the path using a False Path constraint
Command Example (Synopsys PrimeTime, Cadence Tempus, Synopsys ICC2)
set_false_path -from [get_clocks clk1] -to [get_clocks clk2]
(This tells STA tools to ignore timing violations between clk1 and clk2.)
🛠Debugging a False Path
✔ Check Clocks: Verify if clocks are truly asynchronous using report_clocks
.
✔ Analyze Paths: Run report_timing
before and after applying set_false_path
.
✔ Confirm Functional Validity: Ensure no real data transfer occurs between these registers.
2. Disable Timing Path (DTP)
Definition:
A disable timing path removes a specific timing arc inside a combinational cell from analysis.
🔹 Real-World Example:
A multiplexer (MUX) has two inputs (A
and B
), but due to a control condition, the A → Y
path will never be active. The STA tool still analyzes it, causing unnecessary timing violations.
Fix: Disable the specific timing arc
Command Example (Synopsys PrimeTime, Cadence Tempus)
set_disable_timing U1 -from A -to Y
(Disables timing checks for path A → Y
inside instance U1
.)
🛠Debugging a Disabled Timing Path
✔ Check the cell: Use report_timing -from A -to Y
to confirm the arc exists.
✔ Confirm logic condition: Ensure the A → Y
transition is never functionally possible.
✔ Analyze tool impact: Verify the change in timing reports after applying set_disable_timing
.
3. Case Analysis (CA)
Definition:
Case analysis is used when a signal is statically fixed (0
or 1
) in a specific operation mode. This helps eliminate unnecessary timing paths.
🔹 Real-World Example:
A mode selection signal (MODE_SEL
) determines whether a circuit operates in Test Mode or Functional Mode. In Functional Mode, MODE_SEL = 1
, meaning all paths related to MODE_SEL = 0
should be ignored.
Fix: Apply Case Analysis to simplify timing
Command Example (Synopsys PrimeTime, Cadence Tempus)
set_case_analysis 1 [get_ports MODE_SEL]
(Forces MODE_SEL = 1
, ignoring timing paths associated with MODE_SEL = 0
.)
🛠Debugging Case Analysis
✔ Check the logic: Use report_timing
to see if paths related to MODE_SEL = 0
are removed.
✔ Confirm fixed behavior: Ensure MODE_SEL
is not dynamically changing.
✔ Use RTL Constraints: If the condition is permanent, fix it in the RTL instead of STA constraints.
4. Key Differences & Summary
Feature | False Path | Disable Timing Path | Case Analysis |
---|---|---|---|
What it Ignores | Entire timing path | A specific timing arc | Paths related to fixed conditions |
Used For | Async clock paths, functionally inactive paths | Unused logic within a cell | Statically fixed signals |
Example | Path between clk1 and clk2 |
A → Y transition in a MUX |
MODE_SEL = 1 removes MODE_SEL = 0 paths |
Command | set_false_path |
set_disable_timing |
set_case_analysis |
Debugging Tip | Ensure real async clocks | Verify timing arcs | Confirm fixed values |
5. Conclusion
- False Path: Used for entire paths that will never be active.
- Disable Timing: Used to remove specific arcs in combinational cells.
- Case Analysis: Used to fix signal values and simplify timing.
LATENCY AND SKEW REDUCTION TECHNIQUES IN CTS
Latency and Skew Reduction Techniques in Physical Design
1. Introduction
In Clock Tree Synthesis (CTS), latency and skew directly impact timing closure and overall chip performance.
- Clock Latency: The total delay from the clock source to the registers.
- Clock Skew: The difference in clock arrival times between registers.
Goal: Reduce latency and skew while ensuring balanced and optimized clock distribution.
2. Techniques to Reduce Latency and Skew
1️⃣ Use Balanced Clock Tree Topologies
🔹 Why? Unbalanced clock trees cause high skew and timing violations.
🔹 Fix:
✔ Use H-Tree or X-Tree structures for uniform distribution.
✔ Avoid asymmetrical buffering, which causes delays.
Command Example (Cadence Innovus - Enable H-Tree CTS):
setCTSMode -clockTopology H-tree
createClockTree
(Forces an H-tree structure for balanced clock distribution.)
2️⃣ Clock Buffer Sizing and Placement Optimization
🔹 Why? Incorrect buffer placement increases clock latency.
🔹 Fix:
✔ Use high-drive strength buffers in long paths to reduce delay.
✔ Place clock buffers symmetrically to balance delays.
Command Example (Synopsys ICC2 - Use Strong Buffers for Clock Paths):
setOptMode -bufferSize large
clock_opt
(Uses large buffers for better clock distribution and lower skew.)
3️⃣ Clock Shielding to Reduce Crosstalk Noise
🔹 Why? Clock nets are sensitive to noise and delay variations due to crosstalk.
🔹 Fix:
✔ Use ground shielding on critical clock nets.
✔ Route clock signals away from high-switching nets.
Command Example (Cadence Innovus - Add Clock Shields):
createShield -nets {clk} -layer M4 -type ground
routeClockTree
(Adds ground shields around the clock network to prevent noise coupling.)
4️⃣ Skew Balancing Using Buffer Insertion
🔹 Why? Uneven buffer distribution creates skew.
🔹 Fix:
✔ Insert buffers at proper locations to balance delay.
✔ Perform skew-aware clock tree synthesis.
Command Example (Synopsys ICC2 - Skew Optimization in CTS):
setCTSMode -skewTarget 50ps
clock_opt -postCTS
(Optimizes clock skew to target 50ps post-CTS.)
5️⃣ Adding Useful Clock Gating to Reduce Power and Delay
🔹 Why? Large clock trees consume excessive power and increase latency.
🔹 Fix:
✔ Insert clock gating cells to turn off idle sections of the clock tree.
✔ Use integrated clock gating (ICG) to save power.
Command Example (Cadence Innovus - Enable Clock Gating):
set_clock_gating -enable
clock_opt
(Enables automatic clock gating insertion to reduce power and latency.)
6️⃣ Metal Layer Selection for Lower RC Delay
🔹 Why? Lower metal layers (M1-M3) have higher resistance, increasing clock latency.
🔹 Fix:
✔ Route clock nets on higher metal layers (M6-M9) for lower resistance.
Command Example (Synopsys ICC2 - Force High Metal Routing for Clock):
setCTSMode -clockRoutingLayer M6
routeClockTree
(Forces clock routing on M6 to reduce latency.)
7️⃣ Post-CTS Clock Tree Optimization (ECO Mode)
🔹 Why? Even after CTS, timing may not be ideal.
🔹 Fix:
✔ Perform ECO adjustments to fix skew and timing violations.
✔ Use local buffering and wire tuning for fine adjustments.
Command Example (Cadence Innovus - ECO Clock Fixes):
fix_clock_eco -targetSkew 30ps
(Performs an ECO to further reduce clock skew to 30ps.)
3. CTS Optimization Flow
Step 1: Choose balanced clock tree topology (H-Tree, X-Tree, Mesh).
Step 2: Use proper buffer sizing to avoid excessive delays.
Step 3: Shield clock nets from noisy signals.
Step 4: Perform clock skew balancing using buffers.
Step 5: Use high metal layers for routing to minimize resistance.
Step 6: Apply ECO-based fine-tuning after CTS.