在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6009|回复: 12

[原创] RTL DFT compiler 實例, 分享討論

[复制链接]
发表于 2021-8-16 21:34:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 thjan65 于 2021-8-17 20:36 编辑

最近工作接觸到一個 project. CHIP 內部有二個VDD, 必須對個別power domain 的module 進行 scan synthesis, 最後再把scan chain 串成一條. 以下是簡單說明. 歡迎提出意見討論.
U1使用 VDD1_SW電源. 控制信號為U2.VDD1_PDN
U1之Power On Reset 為POR_1

U2使用VDD2
U2之Power On Reset 為POR_2

VDD2為Always On. 因公司無 Low Power flow. 故使用U3 作為 Isolation cell.
當VDD1 不供電時或 VDD1_PDN為0時, U3 輸出為0.  (除了dft 之 reset)
所有dft 信號均由U1解碼後, 透過U3 供U2使用

使用RTL DFTC  DRC flow, 對 U2 處理
設定如下

set_scan_element false POR2_d0_reg
set_scan_element false POR2_d1_reg

set_dft_signal -view exist -type Constant -hookup_pin POR2_d0_reg/Q -active_state 1
set_dft_signal -view exist -type Constant -hookup_pin POR2_d1_reg/Q -active_state 1
set_dft_signal -view exist -type ScanEnable -port i_dft_se -active_state 1
set_dft_signal -view exist -type Reset -port i_dft_rstn -active_state 0
set_dft_signal -view exist -type ScanClock -port i_dft_clk -timing [list 45 55]
set_dft_signal -view exist -type Constant -port VDD1_flag -active_state 1

set_dft_signal -view exist -type Constant -port POR_2 -active_state 0
set_dft_signal -view exist -type TestMode -port i_dft_tm -active_state 1
set_dft_signal -view spec -type ScanDataIn -port i_scan_in -hookup_pin u2/o_scan_in
set_dft_signal -view spec -type ScanEnable -port i_dft_se -hookup_pin u2/o_dft_se

set_scan_configuration -stype multiplexed_flip_flop -clock_mix mix_clocks -chain_count 1


結果                                          

block diagram

block diagram

compile -scan 之前:  no violaton
compile -scan 之後:  TEST-202 (POR2_d0, POR2_d1 )
insert-dft 之後:  TEST-202 (POR2_d0, POR2_d1)
                       TEST-505 (POR2_d0)
                       S19 (POR2_d1)
                        coverage_estimate: 80 % 以上

TETRAMAX  Coverage: 10 % ~ 20%之間







发表于 2021-8-17 08:22:26 | 显示全部楼层
大侠,以后此区hot还是cold靠你了
 楼主| 发表于 2021-8-17 20:21:33 | 显示全部楼层
當發生 DRC  violation 時, 該怎麼解決?
Violation browser 點進去, 會有每個violation 的說明. 也可以透過 "inspect violation" 查看前因後果.
可以參考 DFT compiler user guide.
http://bbs.eetop.cn/thread-454570-1-1.html

也有 DFT compiler student guide.
https://pdfcoffee.com/dftc1-200712-studentguide-pdf-free.html

不論是DFT  compiler 或是 TetrasMax, Violation 代碼都是相同,
如果想要更深入了解, 可以參考這個.
https://pdfcoffee.com/tmax-rules-pdf-free.html



发表于 2021-8-18 02:42:48 | 显示全部楼层
Tetramax coverage 太低了,不应该
感觉VDD1_PDN不对,在ATPG mode下应该用mux强制设为1 (not power down), 这样才能保证DFT信号通过U3中的isolation cell (AND gate)
 楼主| 发表于 2021-8-18 19:02:20 | 显示全部楼层
本帖最后由 thjan65 于 2021-8-18 19:08 编辑

更換正確的 spf 後, TetraMax coverage 為 75~80%.u2.VDD1_PDN 已經先處理過了.
VDD1_PDN = dft_tm ? 1'b1 : internal_VDD1_PDN;
----------------------------------------------------------------------------

做了以下嘗試
u2.VDD1_flag = dft_tm ? 1'b1 : internal_VDD1_flag;
結果: TetraMax covergae 不受影響




发表于 2021-8-19 10:41:57 | 显示全部楼层


thjan65 发表于 2021-8-18 05:02
更換正確的 spf 後, TetraMax coverage 為 75~80%.u2.VDD1_PDN 已經先處理過了.
VDD1_PDN = dft_tm ? 1'b1  ...


谢谢反馈!
感觉Tetramax coverage还是低了一点。POR2_d0_reg, POR2_d1_reg加到scan chain里应该还能再提高 2%

 楼主| 发表于 2021-8-19 21:11:38 | 显示全部楼层
本帖最后由 thjan65 于 2021-8-19 21:23 编辑

我也覺得coverage 太低. 有空再來分析.

最早設定  POR2_d0, POR2_d1 加入 set_false_element.  
後來改成  POR2_d0, POR2_d1 之 clk 及 reset 都經過 dft mux. 取消false_element

二個case在TetraMax 得到的 coverage 都一樣.  我想是因為Flip-flop 數量很少造成的

发表于 2021-8-20 00:11:58 | 显示全部楼层


thjan65 发表于 2021-8-19 07:11
我也覺得coverage 太低. 有空再來分析.

最早設定  POR2_d0, POR2_d1 加入 set_false_element.  


o_in[1:m]如果没有特别的scan loopback话也会是很大的coverage hole,尤其m大的时候。
scan loopback可以参考我的日志,数字DFT。

 楼主| 发表于 2021-8-30 20:38:49 | 显示全部楼层
本帖最后由 thjan65 于 2021-8-30 21:26 编辑

o_clk[1], o_clk[2] 比較詳細的定義如附圖. 請問這時候STA script 該怎麼下會比較好?

目前只有簡單的設一下
create_clok -name clk_1 [get_ports i_clk[1]] -period 50000 #200KHz
create_clock -name clk_2 [get_ports i_clk[2]]  #period: 大於0.5秒
create_clock -name dft_clk [get_ports i_dft_clk] -period 1000 #1M Hz
set_clock_group -asynchronous -group [get_clocks clk_1] -group [get_clocks dft_clk]
set_clock_group -asynchronous -group [get_clocks clk_2] -group [get_clocks dft_clk]

clk1_dft在工作模式1下頻率為200k. DFT下頻率為1M
clk2_dft在工左模式1下頻率為200k.工作模式2下頻率為0.5秒~幾秒. DFT下頻率為1M
因為200k與低頻不會同時出現, 所以用Asynchronous或physical-exclusive 我覺得都可以.



20210830.PNG
发表于 2021-11-6 12:16:32 | 显示全部楼层
厉害,台湾小伙子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 19:52 , Processed in 0.023322 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表