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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 416|回复: 3

[讨论] tessent sram分组

[复制链接]
发表于 2025-3-18 14:42:18 | 显示全部楼层 |阅读模式

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

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

x
最近在尝试给sram分组,看到了工具里提到可以通过读入def对sram进行分组
read_def ./input/chip.def
set_memory_instance_option -physical_cluster_size_ratio 20

我的def有边界信息,sram的位置信息,但实际做下来并没有分组的效果,sram仍然集中在一个controller的同一个step下,虽然尝试了改变ratio,但结果没有任何变化,如果大佬知道原因,烦请告知,十分感谢。

阅读Tessent Mbist user manual 后看到了Re-Creating the DftSpecification小节,这里似乎讲述了一种可以手动分组的方法,即手动将sram放到自己创建的cluster中,步骤如下:
report_memory_instances -limit 20 //将sram的层次信息、cluster信息以及时钟域信息报告出来
set_memory_instance_options {u_core/sram1 u_core/sram2 u_core/sram3 ... ...} -physical_cluster_override CoreSram //将core下的sram全部放到我新建的cluster中,并将该cluster命名为“CoreCluster”
set spec [create_dft_spcecification -replace]    //替代旧的spec
如上即完成了sram的手动分组,用report_config_data $spec即可发现变更分组后core域下的sram所在的controller发生了变化。

留几个问题慢慢自己慢慢回答,或者大佬解答:
  • 这样做能行得通吗?需要仿真验证
  • 分了组后,怎么分步(step)?


 楼主| 发表于 2025-3-18 18:05:11 | 显示全部楼层
1. 行得通,仿真pass了
 楼主| 发表于 2025-3-20 13:57:26 | 显示全部楼层
https://blog.csdn.net/po_poo/art ... sharefrom=from_link

这里的链接有讲分组的多种方法和各种rules,其中提到了set_memory_instance_options -partitioning_group group_label命令,工具中提到使用该命令可以给单个或多个sram打标签,不同标签的sram无法使用同一个controller,并且同一个group标签下的srams,基于MemoryBIST Partitioning Rules也可能会被分配到不同的controller下。链接里已经对rule有了解释,我就拾人牙慧,翻译为自己的理解吧。

CCR:controller compatibility rules;SCR:step compatibility rules
CCR1:不同类型的memory用不同的controller,每个controller控制的mem的类型都是唯一的
CCR2:一个controller下的所有的DRAMs的行、列和bank dimensions必须相同
CCR3:MemoryBist将memory分组以保证同一组的sram的【时钟域】、【电源域】和【memory cluster】属性是完全相通的。当多时钟域驱动了一个multi-port mem,这个mem会使用该时钟域的最快时钟。详情请参考“Share Bus Interface MemoryBIST Implementation Flow”。
CCR4:被定义不同的group标签的memories,会被分配到不同的controller下。

分完组后,肯能就要分step了,如果同一个组里如果存在size不一致的mem,可能会导致测试时间变长,举一个极端的例子,一个group里有一个【2k行*1列】的men和【1行*2k列】的men,如果它俩并行测试,会比单独进行serial测试消耗的时间更长。一下是SCR的介绍:
SCR1:同step下的mem必须使用相同的算法。
SCR2:同step下的mem必须使用相同的操作集(operation set)。详情可参考memory库中Core/Memory wrapper的OperationSet特性。
SCR3:同step下的mem必须是同类型的mem,如全是SRAM或者全都是ROM
SCR4:所有的DRAMs的行、列和bank dimensions必须相同
SCR5:同step下的所有mem的列和行的低位值都要相同。(个人理解)

SCR7:同step下的mems的bit grouping必须全部是even或odd,除非【是有1的bit块的men】(没太懂啥意思)。从ug看,bit grouping应该主要影响bist的算法选择,尤其是checkboard相关算法。
SCR8:同step下所有mem必须有相同的bist_data_pilelining选项设置(用report_memory_instances命令查看)。对于一个chained-memory配置,其只应用于chain上的最后一个mem。
SCR9:所有的DataOutStage选项设置必须一致。可在Core/Memory wrapper中查看。
SCR10:为了保证max_power_per_step和max_memories_per_step的值不被超出,memory groups被拆分为更多steps。该参数设计可以在lvlib或者其他描述memory的文件中查看,而且该参数所依据的功耗就是core wrapper中所描述的MilliWattsPerMegaHertz*BistCLK_freq,与controller等逻辑的功耗无关。
SCR11:由此产生的mem groups随后被分配到controller step中,以确保约束、max_test_time_per_controller的值和max_steps_per_controller值特性不溢出。这些参数可以通过命令report_config_syntax DefaultsSpecification/DftSpecification/MemoryBist查看。

讲了这么多,怎么给memory分步呢?
way1:在gui中修改step
  • 在生成好dftspec后,在命令行输入display_spec;
  • 打开gui后,展开 MemoryBist,展开Controller(c1)(或其他controller)
  • 选中当前Controller(c1),鼠标右键->Add->Step,这时会看到该controller下多了一个step(这里就叫它step2吧)
  • 将想要分开的sram在step<1>中选中,并右键cut,随后作为子项粘贴到step<3>下即可。
  • 如果没问题的话视图中的层次信息文字是正常颜色,否则会出现红色警告

详情可参考Tessent MemoryBIST User's Manual, Editing the DftSpecification With the Config Data Browser in Tessent Visualizer.

way2:使用命令创建step,移动mem
  • 在生成好spec后,在命令行输入report_config_data $spec/MemoryBist/Controller(c1),查看其中需要挪动的mem;
  • 确认之后,添加step:set step [add_config_element $spec/MemoryBist/Controller(c1)/Step]
  • 获取所需挪动的mem信息,然后转移:move_config_element [get_config_elements $spec/MemoryBist/Controller(c1)/Step/MemoruInterface(m2)] -in $step
  • report_config_data $spec/MemoryBist/Controller(c1),确认已经移动了

可参考add_config_element命令。

发表于 2025-3-21 14:03:49 | 显示全部楼层
刚开始学bist,感觉以后用得到,感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-4-28 22:01 , Processed in 0.016978 second(s), 7 queries , Gzip On, MemCached On.

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