1. DFT Flow Using Tessent Shell
Tessent BoundaryScan 具有一个基本的高层次流程顺序。下图展示了将 Tessent BoundaryScan 插入设计所需的高层次步骤顺序。图中的每个步骤都链接到有关可测试性设计(DFT)流程的更详细信息,包括示例。
Design Flow Prerequisites
要使用 DFT(可测试性设计)流程,您必须拥有一个插入了 I/O 焊盘的 RTL 或门级网表设计。
-
对于 RTL 网表,您必须拥有 Tessent cell library or the pad library for the pad cells。
-
对于门级网表,您必须拥有用于标准单元的 Tessent cell library or the ATPG library,以及用于 I/O 焊盘单元的 Tessent 单元库。
注意:如果没有用于 I/O pad cells 的 Tessent cell library,Tessent Shell 也原生支持 Tessent BoundaryScan-LV 焊盘库。
Design Flow Example
Pin Order File
使用引脚顺序文件(pin order file)将端口映射到封装引脚,并定义边界扫描链的顺序。
- 您可以手动创建引脚顺序文件,也可以选择从
check_design_rules
命令生成的文件开始。 - 使用
set_boundary_scan_port_options
命令的-pin_order_file
选项加载引脚顺序文件。
注意:如果您使用 -pin_order_file
选项运行 set_boundary_scan_port_options
命令,则 check_design_rules
命令不会生成该文件。
-
引脚顺序文件的第一列列出了与边界扫描链单元关联的端口名称。行的顺序定义了扫描链的顺序。扫描链从引脚顺序文件第一行中列出的端口所创建的单元开始,接着是第二行中列出的端口所创建的单元,依此类推。
-
第二列列出了用于在 BSDL 文件中映射器件封装引脚的引脚 ID()。如果引脚顺序文件是在
check_design_rules
期间自动生成的,您可以使用set_boundary_scan_port_options
命令的-packed_pin_name
选项来定义引脚 ID。 -
第三列定义了端口的选项。请不要使用引脚顺序文件来设置这些选项,而是使用
set_boundary_scan_cell_options
命令的-cell_options
选项,或在 BoundaryScan 或 EmbeddedBoundaryScan 封装中使用BoundaryScanCellOptions
来设置这些选项。 -
第四列指定端口的逻辑组。请不要使用引脚顺序文件来定义这些组,而是使用 BoundaryScan 或 EmbeddedBoundaryScan 封装中的
LogicalGroups
来定义它们。
Notes: Pin name对应top module。port name对应core
2.Load the Design
Loading the design is the first step in Tessent BoundaryScan insertion using Tessent Shell. The process consists of setting the correct context, reading libraries, reading the design, and elaborating the design.
Set the context
在 Tessent Shell 中,设置上下文(context)有两层含义。首先,最重要的是,您必须将上下文设置为 dft,以便创建边界扫描硬件。其次,您必须指定要读取的设计类型是否为 RTL。如果是 RTL 设计,则必须指定 -rtl
选项;如果要读取的是门级 Verilog 网表,则应指定 -no_rtl
选项。
-
在 -no_rtl 模式下,DFT 插入阶段结束时将输出一个拼接的网表。
-
在 rtl 模式下,输入设计的文件结构将保持不变,DFT 插入阶段结束时仅输出修改后的设计文件以及新创建的测试 IP。
-
要读取的网表可以是 Verilog、VHDL 或混合语言。
如果您使用了 Tessent 嵌入式边界扫描流程(Embedded Boundary Scan Flow),并且嵌入式边界扫描在下一层级集成,则必须使用 open_tsdb
命令打开子模块(嵌入式边界扫描的 sub_block
或 physical_block
)的 Tessent Shell 数据库(TSDB)。如果子模块和父模块使用相同的 TSDB,您可以重用 TSDB(默认是 tsdb_outdir
),并且不需要显式打开默认 TSDB,因为 TSDB 输出目录的现有内容会自动对工具可见。有关如何控制 TSDB 输出目录的名称和位置,请参阅 set_tsdb_output_directory
命令的描述。
示例 1 以下示例将上下文设置为 dft,并指定要读取的设计是 RTL 编写的。
set_context dft -rtl
示例 2 以下示例将上下文设置为 dft,并指定要读取的是门级网表。
set_context dft -no_rtl
示例 3 以下示例打开子模块的 TSDB 目录,从而在父模块层级中暴露它。
open_tsdb ../ebscan_tsdb_outdir
Read the Libraries
您可以使用 read_cell_library
命令读取设计中实例化的pad I/O 宏的库文件。如果您正在将 Tessent BoundaryScan 插入到 RTL 网表或设计中,读取pad I/O 宏的库文件就足够了。如果 Tessent 单元库不包含 pad 信息,read_cell_library
命令原生支持传统的 LV 焊盘库格式,并可用于通过焊盘信息扩展 Tessent 单元库。
示例 1 以下示例读取用于pad I/O 宏的 Tessent 单元库文件。
read_cell_library ../library/adk_complete.tcelllib
示例 2 以下示例在 Tessent 单元库不包含焊盘信息时,读取 ATPG.lib 文件和旧的焊盘库描述文件。
read_cell_library ../library/atpg.lib
read_cell_library ../library/pad.library
Read the design
在 Tessent Shell 中,设置上下文并加载所需的库之后,您可以使用 read_verilog
命令读取设计。
示例 1以下示例读取一个网表文件,该文件可以是 RTL 或门级网表。
read_verilog ../netlist/cpu_top.v
示例 2 以下示例读取一个 Verilog 文件和一个包含设计文件的目录。
set_design_sources -format verilog -V ../design/top.v \
-Y ../design -extensions {v gv}
Elaborate the design
加载设计的下一步是使用 set_current_design
命令对设计进行elaborate。set_current_design
命令指定设计的根模块。如果缺少任何模块描述,设计细化过程会识别它们。对于 Tessent BoundaryScan 插入,不需要诸如存储器实例、PLL 实例等模块。您可以使用 add_black_box -module
命令指定这些模块。
示例 以下示例展示了如何使用 set_current_design
命令。
set_current_design cpu_top
(注:set_current_design
命令用于指定设计的顶层模块,以便工具能够正确解析和细化设计。)