100% found this document useful (1 vote)
2K views20 pages

FishTail Constraint Verification

The document discusses formal verification of SDC constraints using Constraint Verification. It can flag issues not caught by other tools, eliminate gate-level simulations, and generate assertions for timing exceptions that fail formal proof. Key capabilities include constraint mapping, generated clock verification, false path verification, multi-cycle path verification, glitch verification, RDC verification, and formal CDC verification. Assertions are generated for constraints like false paths and multi-cycle paths that fail formal verification to reduce review effort.

Uploaded by

sureshspsp
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
2K views20 pages

FishTail Constraint Verification

The document discusses formal verification of SDC constraints using Constraint Verification. It can flag issues not caught by other tools, eliminate gate-level simulations, and generate assertions for timing exceptions that fail formal proof. Key capabilities include constraint mapping, generated clock verification, false path verification, multi-cycle path verification, glitch verification, RDC verification, and formal CDC verification. Assertions are generated for constraints like false paths and multi-cycle paths that fail formal verification to reduce review effort.

Uploaded by

sureshspsp
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 20

Constraint Verification

Formal verification of SDC constraints

• Flags constraint/design issues that are not caught by other tools


• Eliminates the need for gate-level sims and the risk of silicon failure from bad constraints
• Assertions generated for timing exceptions that fail formal proof
• Use of RTL simulation to verify generated assertions is recommended– reduces review effort
• RTL input is recommended– RTL is not synthesized by the tool, allowing compact assertions to be generated
for simulation
• Refocus maps gate-level signoff constraints to RTL
Constraint Verification Capabilities

Generated
Clock
• Waveform Glitch
Verification Are timing
Constraint • Alignment endpoints
Mapping Verification glitch safe? CDC

Formal Timing RDC


Constraint Exception
Lint • FP
Verification
• MCP
Verification
Constraint Mapping
 Application of Constraints to RTL
 Tcl is converted to SDC
 Loops are unrolled, filters evaluated, wildcards expanded
 Netlist names are mapped to RTL
 LEC Mapping file can optionally be provided (normally not required)
 Syntax issues are flagged
 Incorrect object references are flagged
set_multicycle_path –setup 2 –from [get_pins u_arbiter_ready_reg_3]
set_false_path –through [get_pins genloop*u_adder/sum]

set_multicycle_path –setup 2 –from u_arbiter/ready_reg[3]


set_false_path –through {genloop[0].u_adder/sum
genloop[1].u_adder/sum genloop[2].u_adder/sum
genloop[3].u_adder/sum}
Back
Formal Constraint Lint
Clock Definitions • Unclocked registers, missing clock definitions

• Missing generated clocks


Generated Clock • Incorrect edge specification
Definitions • No combinational path from master to generated clock

• Clock reconvergence
Clock Propagation • False paths in clock propagation network

Clock Crossing • Missing/incorrect clock groups, clock-to-clock false paths

Case Analysis • Conflicting case analysis

• Setup MCPs with missing hold MCP


Exception Issues • Overlapping timing exceptions
• Timing exceptions that apply to large numbers of paths

Input/Output Delays • Missing I/O constraints


Back
No Combinational Path from Master to Generated
Clock

Unintended path

Intended path

create_clock –name clk {clk} –period 10


create_generated_clock –name genclk1 –source clk –master_clock clk {U1/O}
create_generated_clock –name genclk2 –source clk –master_clock clk {U2/Q}

Back
False Paths in Clock Propagation Network

create_clock –period 10 CLKA


create_clock –period 10 CLKB
create_clock –period 15 TCLK

Back
Incorrect Logically Exclusive Clock Group

set_clock_group –logically_exclusive –group clk –group genclk

Back
Conflicting Case Analysis

set_case_analysis 0 U1/S
set_case_analysis 0 U2/S

Back
Generated Clock Waveform Verification

create_clock clk –period 10


create_generated_clock –source clk –edges {1 3 7} genclk

1 2 3 4 5 6 7 8 9
clk

specified
genclk
actual
genclk Back
Generated Clock Alignment Verification
mclk

mclkby2

mclkby4

4 cycles
mclkby8 of mclk

2 cycles
of mclk

Back
False-Path Verification
 All paths constrained by a false-path are verified
 Clock-to-Clock FPs are verified as part of constraint lint
 Only paths between synchronous clocks are verified
 Path passes verification if any of the following is true:
 Startpoint is static
 Endpoint is synchronizer cell
 Condition required to propagate a transition from startpoint to
endpoint can never be true
 Assertion generated for FP that fails formal verification
 FPs that are specified for “timing don’t care” reasons should
not be verified
Back
False-Path Supported by Design Logic

set_false_path –from FF1_reg –to CLKB


set_false_path –from FF2_reg –to CLKA

Back
False-Path Assertion
module u_top_fp15_1 (input bit clk, input logic from_reg, input logic
to_reg, input bit v1);

wire path_propagation_condition = ( !v1 );

property e_fp15_1;
@(posedge clk) `FT_DISABLE (`FT_TRANSITIONS_AND_NOT_UNKNOWN(from_reg))
|=> (`FT_PPC_IS_FALSE_IN_PREV_CYCLE(path_propagation_condition)
|| (!(`FT_TRANSITIONS_AND_NOT_UNKNOWN(to_reg))));
endproperty

fp15_1: assert property(e_fp15_1) $display("top_fp15_1 checked"); else


$error("top_fp15_1 failed");
endmodule

bind top u_top_fp15_1 sva_u_top_fp15_1(.clk(clk1), .from_reg(r1),


.to_reg(r2),
.v1(i_mux.INT_TXBYTECLK_PORT_GEN[0].\ctech_lib_clk_mux_2to1_txbyteclkhs_int
[txport].s));

Back
Multi-Cycle Path Verification
 All paths constrained by a multi-cycle path are verified
 Only paths between synchronous clocks are verified
 Path passes verification if any of the following is true:
 Startpoint is static
 Endpoint is allowed to go metastable and startpoint value is held
stable for multiple cycles
 Condition required to propagate a transition from startpoint to
endpoint is not true when the startpoint transitions
 Assertion generated for MCP that fails formal verification
 MCPs that are specified for “timing don’t care” reasons
should not be verified

Back
Multi-Cycle Path Supported by Design Logic

set_multicycle_path –setup 2 –from FF1 –to FF2


set_multicycle_path –hold 1 –from FF1 –to FF2

Back
Multi-Cycle Path Assertion
module u_top_mcp9_4 (input bit clk, input logic from_reg, input logic
to_reg_1, input logic to_reg_2, input bit [1:0] v60, input bit [3:0] v62,
input bit [1:0] v66);

wire path_propagation_condition_1 =
( (v60[1:0] == 2'b11) && (v62[3:0] == 4'b0011) );
wire path_propagation_condition_2 =
( (v62[3:0] == 4'b0011) && (v66[1:0] == 2'b00) );

property e_mcp9_4_1;
@(posedge clk) `FT_DISABLE
(`FT_TRANSITIONS_AND_NOT_UNKNOWN(from_reg)) |=> (
((`FT_PPC_IS_FALSE_IN_PREV_CYCLE(path_propagation_condition_2) ||
(!(`FT_TRANSITIONS_AND_NOT_UNKNOWN(to_reg_2)))) &&
(`FT_PPC_IS_FALSE_IN_PREV_CYCLE(path_propagation_condition_1) ||
(!(`FT_TRANSITIONS_AND_NOT_UNKNOWN(to_reg_1))))));
endproperty

mcp9_4_1: assert property(e_mcp9_4_1) $display("top_mcp9_4 checked"); else


$error("top_mcp9_4 failed");
endmodule
bind top u_top_mcp9_4 sva_u_top_mcp9_4(.clk(clk), .from_reg(sp1),
.to_reg_1(q1), .to_reg_2(q2), .v60(dis1), .v62(counter), .v66(dis2)); Back
Glitch Verification

@(posedge clk)
(($rose(poken10_1p8) && `FT_IS_LO(pok10_1p8) && $fell(pok10_out_1p8)) ||
($fell(poken10_1p8) && `FT_IS_LO(pok10_1p8) && $rose(pok10_out_1p8)))
|->
(!(`FT_IS_HI(reset_tamper_extended.q) && `FT_IS_LO(U240.y) &&
`FT_IS_LO(U34.y) && `FT_IS_HI(U244.y) && `FT_IS_HI(u245.y) )); Back
Back
RDC Verification

 Path through async reset to capture flop must be false


 Formal verification, with assertions generated for formal failures
Back
Formal CDC Verification

 Formal proof that async. clock crossings are correctly synchronized


 Verification that either handshake mechanism is in place for correct data
transfer or path ends at synchronizer cell
 No need to specify or recognize CDC structures
Back

You might also like