本帖最后由 haier822 于 2019-12-17 16:09 编辑
问题解决了,现把解决过程分享给大家,也算是一种总结:
首先根据PR innovas 报告的错误编码IMPDF-279到Cadence的support site查询到如下信息:
//------------------------------------------------------------
IMPDF-279error in Innovus when reading scandef created by RC
Problem
I insert third-party compression logic on an RC netlistwith scan chains already connected. Scandef written out by the RC beforecompression insertion creates the following error when reading into Innovus:
**ERROR IMPDF-279): The I/O pin 'tst_sdi_1' specified in START point of the chain'scan_chains_1_seg1_test_clock3_internalClk_1_falling' does not exist, thechain is discarded.
How can I resolve this?
Solution
When scandef is written out before inserting the compressionlogic, it assumes dummy ports for the compression channels. Dummy ports areremoved after the compression is inserted. Mostly, MUXes are inserted to selecteither the compression path or full-scan path. So, you need to regeneratescandef taking into account the new MUXes inserted in the scan compressionchannels.
Because there are no ORDERED segments in the scan channels, youcan analyze the new connectivity of scan chains with respect to the DECOMPRESSORoutput and COMPACTOR input pins while these are connecting to the scancompression channels.
In RC-DFT, you will do the following:
1.Load the netlist with the compression inserted.
2.Define the DFT setup.
3.Specify the scan chains with respect to the compression logic pins, and thenanalyze the chains:
define_dftscan_chain -analyze -sdi -sdo -chain
Whenthis is done, the first and the last elements of the scan compression channelswill be used as the scandef START and STOP pins. //----------------------------------------------------------------------- 结合我自己的设计flow,edt是用mentor testkompress设计的,最终的netlist中包含edt, 根据上面的步骤借助scan insertion 的环境再run一遍,不过需要修改一下: 1. 把原来的sdi, sdo的指定换成当前的edt 的pins 213 # #scan chain definition, create temporary port, will be removed in edt link phase
214 # for {set i 1} {$i <= $scan_chain_number} {incr i} {
215 # define_dft scan_chain -name chain$i -sdi TEST_SI$i -sdo TEST_SO$i -create_ports
216 # } 233 for {set i 0} {$i <= 59} {incr i} {
234 define_dft scan_chain -analyze -sdi dns_ab9_linx_ic_digtop_edt_i/edt_scan_in[$i] -sdo dns_ab9_linx_ic_digtop_edt_i/edt_scan_out[$i]
235 } 注意上面帮助步骤中define_dft 的命令-chain可能是旧的不用了,我当前的rc中define_dft已经没有这个option了。 2. 因为目前的netlist已经包含scan chain了,所以把原来的connect_scan_chain去掉。 #connect_scan_chain 3. 写出scandef,用write_scandef命令 write_scandef > $_REPORTS_PATH/${DESIGN}_scan_chain.def
完后,就可以得到scandef文件了,可以看到每个scan chain 的第一个scanff 作为START 点,最后一个scanff作为STOP 点。 ...
+ START */i_tpr_tdo_reg Q .... + STOP */ZM_stop_sync_reg_d_reg TI
|