【DFT】Scan?reorder導(dǎo)致的形式驗證失敗
時間:2021-12-07 14:37:29
手機看文章
掃描二維碼
隨時隨地手機看文章
[導(dǎo)讀]我們可以在做布局之前通過讀入scandef或者其他方式來告訴工具掃描鏈的起止信息,然后在Place的時候啟動scanreorder,讓工具對掃描鏈進行重排序以節(jié)省繞線資源。?關(guān)于scanreorder的設(shè)置/命令:Innovus:在布局之前設(shè)置:setPlaceMode-plac...
我們可以在做布局之前通過讀入scandef或者其他方式來告訴工具掃描鏈的起止信息,然后在Place的時候啟動scan reorder,讓工具對掃描鏈進行重排序以節(jié)省繞線資源。?關(guān)于scan reorder的設(shè)置/命令:Innovus:在布局之前設(shè)置:setPlaceMode -place_global_reorder_scan true|false默認該選項就處于true狀態(tài),也就是工具會自動做reorder。?ICC:place_opt -optimize_dft?下面兩幅圖為同一條掃描鏈在做scan reorder和不做reorder的局部放大圖的對比,能清楚的看到差異:從圖中能看出做了reorder之后,掃描鏈的連接效果挺好的,沒有出現(xiàn)掃描鏈多次交叉的情況,因此節(jié)省了很多繞線資源,否則的話掃描鏈隨意交叉將浪費大量的繞線資源。?按照上述在DFT Compiler中做完Scan chain導(dǎo)入ICC中做PR,然后在做形式驗證的時候發(fā)現(xiàn)形式驗證是失敗的,如下圖所示:做形式驗證和DFT設(shè)計的流程也完全沒用問題。正如上面顯示的Port Failing一樣,經(jīng)過Debug發(fā)現(xiàn)問題發(fā)生在輸出端口處:??在做PR之前的網(wǎng)表中,IO fsk_out_block的輸入Pin I上接的是…_count_reg_2的Q Pin,可是在做完布局布線后的網(wǎng)表中,它接的卻是…_count_reg_1的Q Pin,這顯然是不對的。大家可以思考下這個問題的原因以及解決方案。??下面公布答案:原因:這是一個帶有IO的full chip design,scan def中通過制定scan chain的起止IO來定義scan chain的order。導(dǎo)入ICC中后,工具對中間的部分做了reorder,因此將…_count_reg_1接到了輸出IO也是scan output的IO上因此產(chǎn)生了這個問題。Scan def before scan reorder:Scan def after scan reorder:?有看過Place階段scan reorder推文以及里面里面的scan def語法的話你應(yīng)該就知道這個問題的解決方案了(推文和scan def的介紹在?自己的網(wǎng)易云課堂課程:《Innovus Flow系列教程(圖文教程)》中)。我們只需要對DFT Compiler導(dǎo)出的scan def文件進行小的修改即可,將…_count_reg_2到fsk_out_block的那部分設(shè)置成ORDER即可,工具便不會對該部分進行重組。其實如果你做了Innovus的Lab的話可以看到在scan def中做了類似的處理。修改后的scan def文件:VERSION 5.5 ;NAMESCASESENSITIVE ON ;DIVIDERCHAR "/" ;BUSBITCHARS "[]" ;DESIGN top_pad ;?SCANCHAINS 1 ;?- C1 START data_in_block C FLOATING fsk_modulator_count_reg_0_ ( IN SI ) ( OUT QN )?????????? fsk_modulator_count_reg_1_ ( IN SI ) ( OUT Q ) ORDERED?????????? fsk_modulator_count_reg_2_ ( IN SI ) ( OUT Q )?????????? fsk_out_block ( IN I ) ( OUT PAD ) STOP fsk_out_block I ;?END SCANCHAINS?END DESIGN?做完P(guān)R以及scan reorder之后,ICC吐出的scan def:可以看到工具并未修改輸出IO上的連接關(guān)系,后邊做形式驗證的結(jié)果:
是通過的。?