闲谈:关于穿dft boundry scan

最近在穿soc 顶层boundry scan 链。 简单谈谈一些点吧。

首先,boundry 怎么穿是要好好和顶层架构工程师和封装工程师好好商量的。

  1. 哪些PORT 需要穿。

  2. 哪些PORT 不需要穿。 或者不能穿。

  3. 穿成几条链,哪些链在一条boundry chain上。

  4. 非case值的, 非模拟的需要穿到boundry scan

  5. 某些soc顶层的需要固定到某些值上的PAD 是不需要穿到boundry scan 上的。可以这样理解只有先固定PAD 的某些值让Ijtag 网络工作起来然后 正常配值 寄存器。dft 再正常进行。 所以这些PAD 如果穿到boundry scan这是有问题的。比如
    模式 scan scan mbist hs_bist ls_bist pll efuse模式下某些 port A , B ,C 要固定到一个值上,那么A B C port是不能boundry scan 的

    除此之外某些连接模拟IP 的PORT是不需要穿的,如果穿了那么tessent会Error。说这些直接接IP 没有PAD 的port 不能穿boundry scan
    XIN 晶振port和RESET port , TEST_MODE port 也是不能穿的。

3 由于多封装和一些特殊需求。某个chip需要多条boundry scan chain. 比如ddr 模块需要单纯穿链。
所以需要参照架构工程师给出的pin list 。把port分组
try run boundry scan 时候工具会自动在tsdb dir下产生 pin_order file
当有了def后 吃def 产生的pin_order file 会更合理,有利于pr

然后根据try run 产生的pin _order file 给port分组
原始的pin_order.file例如
/PortName PinName OptionList LogicalGroups
//-------------- ------------ ------------ ---------------
DDR_ADDRX 01
xxxx
FUN_A IO20
xxx
xxx

你需要给pin那一列填上不同的group方便spec调用
例如 pin_order.file
//PortName PinName OptionList LogicalGroups
//-------------- ------------ ------------ ---------------
DDR_ADDRX 01 ddr_group
xxxx
FUN_A IO20 top_group
xxx
xxx

然后
set_boundary_scan_port_option -pin_order_file pin_order.file
set_boundary_scan_port_option {TEST_MODE XXX XXX ANALY_PORT XX XX RESET_N XIN XOUT} -cell_options dont_touch

指定某些口不穿

xxxx

read_config_data -in $spec/BoundaryScan -from_string {
BondingConfiguration {
BondingConfiguration (soc_top) {
}
BondingConfiguration (top) {
enable_signal "inst_dft_top/bscan_top_o;
bypassed_logical_groups : group_ddr;
}
BoundingConfiguration(ddr) {
enable_signal "inst_dft_top/bscan_ddr_o;
bypassed_logical_groups : group_top;
}
}
}

然后去根据这个spec 分别对ddr 和top穿链
最后得到三条链

2 个赞