blob: 58273c736ca9d0766208b04d893770e502455957 [file] [log] [blame]
//##############################################################################
// CADENCE COPYRIGHT NOTICE
// © 2008-2009 Cadence Design Systems, Inc. All rights reserved.
//------------------------------------------------------------------------------
//
// This Foundation Flow is provided as an example of how to perform specialized
// tasks within Innovus System.
//
// This work may not be copied, re-published, uploaded, or distributed in any way,
// in any medium, whether in whole or in part, without prior written permission
// from Cadence. Notwithstanding any restrictions herein, subject to compliance
// with the terms and conditions of the Cadence software license agreement under
// which this material was provided, this material may be copied and internally
// distributed solely for internal purposes for use with Cadence tools.
//
// This work is Cadence intellectual property and may under no circumstances be
// given to third parties, neither in original nor in modified versions, without
// explicit written permission from Cadence. The information contained herein is
// the proprietary and confidential information of Cadence or its licensors, and
// is supplied subject to, and may be used only by Cadence's current customers
// in accordance with, a previously executed license agreement between Cadence
// and its customer.
//
//------------------------------------------------------------------------------
// THIS MATERIAL IS PROVIDED BY CADENCE "AS IS" AND ANY EXPRESS OR IMPLIED
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL CADENCE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL
// OR CONSEQUENTIAL DAMAGES HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS MATERIAL, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//##############################################################################
vpxmode
set dofile abort exit
set undefined cell black_box -noascend -both
tclmode
// setup variables
global vars
proc Puts {args} {
puts $args
}
//##############################################################################
// Source script to define design specific variables
//##############################################################################
if {[info exists env(FF_SETUP_PATH)]} {
if {[file exists $env(FF_SETUP_PATH)]} {
Puts "<FF> LOADING $env(FF_SETUP_PATH)/setup.tcl ..."
catch {source $env(FF_SETUP_PATH)/setup.tcl}
} else {
Puts "<FF> ERROR: $env(FF_SETUP_PATH)/setup.tcl does not exist"
exit
}
} else {
if {[file exists setup.tcl]} {
catch {source setup.tcl}
} else {
Puts "<FF> ERROR: setup.tcl does not exist"
exit
}
}
//Define the netlist to be verify
if {[info exists env(STEP)] && [file exists DBS/$env(STEP).enc.dat/$vars(design).v.gz]} {
set revisedNetlist DBS/$env(STEP).enc.dat/$vars(design).v.gz
} else {
Puts "<FF> Failed to find netlist DBS/$env(STEP).enc.dat/$vars(design).v.gz"
}
set rc [catch {source $vars(script_root)/ETC/utils.tcl}]
if {[info exists vars(threads)]} {
vpx set compare option -threads $vars(threads)
}
// read Liberty cell definitions
set libSet $vars($vars($vars(default_setup_view),delay_corner),library_set)
vpx read library -statetable -both -liberty $vars(${libSet},timing)
// read reference netlist
vpx read design -verilog -sensitive -golden $vars(netlist)
// read post-implementation netlist
vpx read design -verilog -sensitive -revised $revisedNetlist
//set top level
vpx set root module $vars(design) -both
ff_source_plug pre_lec_check_tcl
vpxmode
report design data
report black box
set mapping method -name first
set flatten model -seq_constant -seq_constant_x_to 0
set flatten model -nodff_to_dlat_zero -nodff_to_dlat_feedback
set flatten model -gated_clock
set system mode lec
add compare point -all
compare -gate_to_gate
usage
// vpx report compare data
report compare data -class nonequivalent -class abort -class notcompared
report verification -verbose
report statistics
tclmode
set points_count [get_compare_points -count]
set diff_count [get_compare_points -diff -count]
set abort_count [get_compare_points -abort -count]
set unknown_count [get_compare_points -unknown -count]
if {$points_count == 0} {
puts "---------------------------------"
puts "ERROR: No compare points detected"
puts "---------------------------------"
}
if {$diff_count > 0} {
puts "------------------------------------"
puts "ERROR: Different Key Points detected"
puts "------------------------------------"
}
if {$abort_count > 0} {
puts "-----------------------------"
puts "ERROR: Abort Points detected "
puts "-----------------------------"
}
if {$unknown_count > 0} {
puts "----------------------------------"
puts "ERROR: Unknown Key Points detected"
puts "----------------------------------"
}
puts "No of compare points = $points_count"
puts "No of diff points = $diff_count"
puts "No of abort points = $abort_count"
puts "No of unknown points = $unknown_count"
exit 0