【Tessent MemoryBIST】【Ch6】Shared Bus Interface MBIST 【1】Basic Flow

Ref:Tessent™ MemoryBIST User’s Manual, v2023.1


基于 Tessent 工具实现的 Shared Bus Memory BIST 的整体结构如下所示。

在这里插入图片描述

本文将介绍使用 Shared Bus Interface 实现 Memory BIST 的基本内容,包括基本概念、架构、流程、配置文件以及 BIST hardware 的生成、插入和验证等。

Shared Bus Interface 提供了一个通用的 access port 用于访问多个 memories。这样的结构具有很好的可拓展性,module 内部 memories 增加的时候,module 边界处用于访问 memooryBIST 的端口可以保持不变。

Shared Bus Interface 的一个典型应用是测试 processor core modules 内部的 memories。

术语 Shared Bus memory cluster 或者 Shared Bus cluster 指的是一个 module ,它能够使用一个通用的 Shared Bus interface 来访问多个 memories。

通过 Shared Bus interface 访问的 memories 称之为 logical memories

logical memories 是由一个或者多个 physical memories 构成的地址空间。


Applying Memory BIST to a MemoryCluster


Shared Bus Memory Cluster Module 的示意图如下所示:

在这里插入图片描述

在该 design 中有一个名称为 SB1 的 Shared Bus interface,用以访问四个 logical memories (LM_0 ~ LM_3) 。

logical memories 指的是可以通过外部的 Shared Bus interface SB1 进行访问的地址空间,它可能是由一个或者多个 physical memories (图中的蓝色方块) 构成。

在该示例中,Shared Bus memory cluster module 只有一个 Shared Bus interface,但是 Shared Bus memory cluster module 是可以由多个 Shared Bus interface 的。

每个 Shared Bus interface 提供对 memory data、control 和 clk 端口的访问,以及对 Shared Bus memory cluster module 内部特定memories 进行寻址(address specific memories)所需的其他控制端口。

在上图给出的示例中,所有的 logical memories 都位于 Shared Bus memory cluster。但是,根据 IP 不同的实现方式,logical memories 可在 Shared Bus memory cluster 外部不同的 design hierarchy 进行实例化。【文章开头的那张图】


每个 logical memories 都可以在任何时间通过 Shared Bus interface 进行访问。通过 Shared Bus interface 的 array select port 来选择需要访问的 logical memories,使其处于 enable 状态。

一旦 Shared Bus interface 的 array select port 上的 array access code 被指定,对应的 logical memories 就可以通过 Shared Bus interface 的 clock、data 和 control ports 进行访问。

类似的, logical memory 可能由一个或者多个 physical memories 构成。选择和实例化设计中的 physical memories 构成 Logical Memory 的过程称之为 physical RAM integration。

在 RAM integration 之后,Tessent libraries 也需要进行调整,使其和 design 中的 physical memory implementation 相匹配。

【physical memories 的分组一般是 func 完成的,Tessent DFT 需要给定与之对应的 TCD 格式的 libraries。】

logical 和 physical memories 的层次化特性具有以下优点:

  • 在设计的早期,可以在 logical memory level 使用 behavioral model 对 Shared Bus interface 进行验证,不需要使用 physical memories;
  • physical memories 的实现方式不会影响整体的 Shared Bus access。用户可以根据设计需求选择 RAMs 和 stacking configuration。只需要在 logical level 进行局部修改。

Logical memory LM_1的构成如下图所示。logical memory 接收和驱动 Shared Bus interface 上的 8bit 数据通道(data channel)。两个 physical memories 以水平堆叠的方式实例化,它们两个的 4bit 数据端口组成了 LM_1 的 8bit data path。

在这里插入图片描述

如下图所示,在规划 memory BIST 的时候,每一个 Shared Bus memory cluster module 都会被分配一个专用的 memory BIST controller。 memory BIST controller 、interface logic 和 Shared Bus memory cluster module 处于相同的 level。

在这里插入图片描述

如果设计中包含 standard memories,会有一个特殊的 memory BIST controller 用于测试这些 memories。

被分配给 Shared Bus memory cluster module 的 memory BIST controller 不能用于测试位于 Shared Bus memory cluster 之外的 memories。

design 中可以有多个 Shared Bus memory clusters。


Why use a shared bus architecture


随着 design 中 memory 的数量越来越多,MBIST 逻辑所需要的额外开销越来越多。MBIST 逻辑和额外的 routing 需求会对芯片上和memory 相关的 func path 的时序造成影响。

Designs today contain many memory arrays, and they consume a substantial portion of the total chip area. This increase in memory size and number implies extra hardware cost for the associated memory built-in self-test (MBIST) logic. As a result, the area of the MBIST logic and the additional routing requirements may negatively impact the chip’s performance in the critical functional paths to and from memories.

A shared bus architecture provides a common access point for several memories, allowing designers to optimize routing and core performance. It also provides the flexibility to route DFT signals along functional paths behind the shared bus interface.

最主要的优点是:可以使 PD 的时序更好收敛。


Shared Bus Support Features


生成 Shared Bus interfaces 所需要的 embedded test hardware 和生成 standard memories 所需要的测试硬件的过程十分相似,并且完全支持 hierarchical flow。

如下图所示,首先会生成最基本的 memory BIST controller 和 memory interfaces。此外还会生成位于 memory BIST interfaces 和 memory cluster module 之间的 memory emulation logic、 multiplexing logic 等模块。

在这里插入图片描述

上图所示的 memory emulation logic blocks 和 Shared Bus memory cluster module 内部的 logical 或 physical memories 相对应,每一个 memory emulation logic module 都对应一个 logical 或 physical memory。

multiplexing logic 用于处理 Shared Bus interface ports、memory BIST controller 和 memory emulation modules 之间的控制逻辑和访问逻辑。

memory emulation modules 和 multiplexing logic 共同实现了对所有的 logical 或 physical memories 进行 virtual access,这使得 memory BIST controller 能够运行 BIST algorithms 并对所有的 logical 或 physical memories 进行一些标准操作。

BIST controller、memory interface modules、memory emulation modules 和 multiplexing logic 会构成一个 Shared Bus assembly module。

这样(Wrapping the BIST logic)使得在综合的过程中可以进行 cross-boundary area optimization ,并且能够减少综合之后设计中出现的 loose logic。


Shared Bus Interface MemoryBIST Implementation Flow


使用 Shared Bus interface 进行 memory test 的实现过程,以及其所需要的三个 memory library files。


Library Requirements


使用 Shared Bus interface 需要三个 memory library files:Memory Cluster Tessent Core Description、Logical Memory Tessent Core Description 和 Physical Memory Tessent Core Description。

Shared Bus memory cluster 和 logical memory TCD 通常是手动创建的。如果 IP 中包含描述通过share bus interface 访问 memory 的信息,也可以自动生成。

使用 memlibGenerate 可以将 MBIST Information File (MBIF) 转换为 Tessent libraries。【MBIF format 一般是由 IP 供应商提供】


Memory TCD 语法的具体内容参考:【Tessent】【Tessent Core Description】TCD — Memory & Memory Cluster


Memory Cluster Tessent Core Description

  • 和每一个 Shared Bus memory cluster module 相关联
  • 描述了 Shared Bus interface pins
  • 列出了 Shared Bus memory cluster module 内部所有的 logical memories
  • 描述了 logical memories 和 Shared Bus interface 之间的引脚映射关系

TCD 文件的基本格式:

在这里插入图片描述

Logical Memory Tessent Core Description

  • 和 Shared Bus memory cluster module 中的每一个 logical memory 相关联
  • 用户基于所使用的 physical memories 创建或者修改
  • References library files of individual physical memories making up the logical memory

logical memory library file 使用的是 memory core library syntax 的超集,主要增加了 MemoryGroupAddressDecoding 和PhysicalToLogicalMapping 两个 wrappers。

【memory core library 就是普通的 memlib,不使用 shared bus interface 的 mbist 会用到这个库文件】

基本格式:
在这里插入图片描述

在 RAM integration 的过程中,用户可以使用任何可用的 memory 构成 logical memory address space。该过程结束之后,logical memory TCD 必须要修改的和 logical memory 的实现方式相匹配。

TCD 的修改包括:

① 添加 MemoryGroupAddressDecoding wrapper 用以说明 physical memories 如何激活;

② 添加 PhysicalToLogicalMapping wrappers 用以说明 physical memories 如何连接到 logical memory 的 ports。


示例:

具有 4 个 physical memories 的 logical memory LM_1 的结构如下图所示。logical memory 的大小是 32 words(每个 word 是 8 bit),它接收和驱动 Shared Bus interface 上的 8bit 数据通道。

在这里插入图片描述

在 logical memory TCD 中, data input、data output、address port 和 address segmentation 的定义如下:

在这里插入图片描述

physical memories 以 2x2 堆叠的方式进行实例化,每组 physical memories 的两个 4bit 数据端口构成了 LM_0 的 8bit data path。

Logical Memoory 的地址 A[4] 用于选择位于上方还是下方的 memories pairs,A[3:0] 则控制 physical memories 的 address inputs。

假定 logical memory 的 clk 和控制信号给到了所有的 physical memories,当 A[4] 为 0 的时候,MSB_lower 和 LSB_lower 两个 (physical) memory 使能,这两个 memory 同时被测试;当 A[4] 为 1 的时候 MSB_upper 和 LSB_upper 同时被选中然后进行测试。

MemoryGroupAddressDecoding Wrapper 用于指定激活 physical memory 的 address signal。

在这里插入图片描述


【这个 wrapper 的名称很直接的说明了它的功能。多个 physical memories 按照一定的方式构成了 logical memroy,从 logical memroy 的外部来看,它有一个很普通的 address port (A[4:0] ) 用于 32 个地址的选择。但是 logical memroy 并不是真实存在的,从它的内部来看,它是由多个真实的 physical memory 拼起来的,那么这个 A[4:0] 中的一部分就要用来选择具体访问哪一个 memory,另一部分用来选择选定 memory 中存储的数据】

【group 可以理解为这些 physical memory 要同时选中。比如上述示例中,4bit 的 physical memory 构成 8bit logical memroy 的时候,logical memroy 每一个地址肯定是要同时选中两个 physical memory 的】


PhysicalToLogicalMapping wrapper 将 physical memory 的 data、address and group write enable port 和 之间的关系。

假定 clock 和 其他控制信号(如读写使能信号等)被连接到所有的 physical memories。

如果 physical memory port 和 logical memory port 的功能相同的时候,工具会隐含的将两者映射。

在这里插入图片描述
在这里插入图片描述

补充:这里 MemoryTemplate 是 memory tcd library file 中的定义。

在这里插入图片描述


Pseudo-Vertical Stacking of Physical Memory

pseudo-vertical stacking 指的是将一个 W x D 的 physical memory 映射成一个 (n*W) x (D/n) 的 logical memory。

在这里插入图片描述

如下图所示,logical memory LM_64x8 中只有一个 32x16 的 physical memory,physical memory 的 lower data bits 用作 logical memory 的 lower bank,higher data bits 则用作 upper bank。

在这里插入图片描述

该 logical memory 对应的 TCD 文件如下所示:

Port(A[5:0]) {
   
	Function : Address;
	Direction : Input;
}
Port(D[7:0]) {
   
	Function : Data;
 	Direction : Input;
}
Port(Q[7:0]) {
   
 	Function : Data;
 	Direction : Output;
}
MemoryGroupAddressDecoding (Address[5]) {
   
	Code(1'b0) : MEM_LSB;
	Code(1'b1) : MEM_MSB;
}
AddressCounter {
   
	Function(ColumnAddress) {
   
		LogicalAddressMap {
   
		 	ColumnAddress[0] : Address[0];
		 	ColumnAddress[1] : Address[1];
		 	ColumnAddress[2] : Address[5];
		}
		CountRange [0:7];
	}
 	Function(RowAddress) {
   
 		LogicalAddressMap {
   
 			RowAddress[0] : Address[2];
 			RowAddress[1] : Address[3];
 			RowAddress[2] : Address[4];
 		}
 		CountRange [0:7];
 	}
}
PhysicalToLogicalMapping(MEM_LSB) {
   
 	MemoryTemplate : SYNC_1RW_32x16_RC_BISR;
 	MemoryInstanceName : PM_32x16;
 	PinMappings {
   
 		PhysicalMemoryDataInput[7:0] : LogicalMemoryDataInput[7:0];
 		PhysicalMemoryDataOutput[7:0] : LogicalMemoryDataOutput[7:0];
 		PhysicalMemoryAddress[4:0] : LogicalMemoryAddress[4:0];
	}
}
PhysicalToLogicalMapping(MEM_MSB) {
   
 	MemoryTemplate : SYNC_1RW_32x16_RC_BISR;
 	MemoryInstanceName : PM_32x16;
 	PinMappings {
   
 		PhysicalMemoryDataInput[15:8] : LogicalMemoryDataInput[7:0];
 		PhysicalMemoryDataOutput[15:8] : LogicalMemoryDataOu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值