最近在穿soc 顶层boundry scan 链。 简单谈谈一些点吧。
首先,boundry 怎么穿是要好好和顶层架构工程师和封装工程师好好商量的。
-
哪些PORT 需要穿。
-
哪些PORT 不需要穿。 或者不能穿。
-
穿成几条链,哪些链在一条boundry chain上。
-
非case值的, 非模拟的需要穿到boundry scan
-
某些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穿链
最后得到三条链