mbist问题解决报告.docx
《mbist问题解决报告.docx》由会员分享,可在线阅读,更多相关《mbist问题解决报告.docx(15页珍藏版)》请在冰豆网上搜索。
![mbist问题解决报告.docx](https://file1.bdocx.com/fileroot1/2023-2/8/6b691895-0775-42b9-aa9b-38e2e131317a/6b691895-0775-42b9-aa9b-38e2e131317a1.gif)
mbist问题解决报告
1.手工输入选项,更改系统语言为英语,删除中文输入法。
之前就是在英文语言环境下操作的,出现上述手动输入不进去的问题。
2.输入文件:
LibraryModel:
是用Mentor语言描述的,用来产生RTLBISTcollar,并且将memory的RTL设计与BISTcollar映射起来,模型里面通常定义了存储器的读写周期。
MBISTArchitectdofile:
mbistarchitect的可执行文件,通常包含了关于产生BIST电路的命令。
ROMContentFile(optional):
只有在给ROM生成BIST电路时才会用到,它说明了存储在ROM存储器中每一行的十六进制的值,用来为ROM存储器提供压缩信号。
(此次只测试了RAM,所以没有用到)
输出文件:
HDLBISTCircuitry:
包含了生成的controller的RTL代码和memorycollar的RTL代码,其中controller包含了一个有限状态机去控制你选择的存储器测试算法的操作,还包含了地址产生器,写数据生成器,期望的数据生成器和控制信号生成器。
Controller通常还包括一个比较器来判断测试结果的正确与否。
BISTcollar不仅包含测试的多路选择器和扫描的bypass逻辑,还从你原来的设计中实例化了存储器。
当你controller不使用比较器时collar中还会包含一个压缩器。
SynthesisDriverScript:
用来给DC做综合用的,可以在DC中将MBIT进行优化。
HDLBIST/RAMConnectionModel:
实例化了BIST电路,并将所有的端口连接起来。
HDLTestbench:
实例化了connection模型,并提供激励来启动BIST电路的测试算法,在测试结束时会报告测试状态。
TB_mbist_dp4096x16m.vhd
文件层次图:
其中,controller和collar都包含在mbist_dp4096x16m16.vhd文件中,collar还将存储器实例化了。
3.外部pin的输入管脚有20个,输出管脚有5个。
它们分别与controller和collar的对应关系如下:
外部pin:
(in)hold_lcontroller:
(in)hold_l
test_htest_h
bist_clkbist_clk
rst_lrst_l
AA_0collar:
(in)AA
AB_0AB
DA_0DA
DB_0DB
WENA_0WENA
WENB_0WENB
CLKA_0CLKA
CLKB_0CLKB
OENA_0OENA
OENB_0OENB
CENA_0CENA
CENB_0CENB
bp_clk_0bp_clk
Test_mode_0Test_mode
scan_en_0scan_en
scan_in_0scan_in
(out)test_donecontroller:
(out)test_done
fail_hfail_h
QB_0collar:
(out)QB
QA_0QA
scan_out_0scan_out
4.表头呢?
输入输出?
文件名
文件的功能
DP4096×16M16.V
供应商提供给用户的verilog仿真模型,它包括了存储器的实际行为和时序信息,是不可综合的。
mbist_dp4096x16m16.vhd
包含了controller、collar、bypass等entity的模型文件,其中collar还调用了厂商提供的verilog仿真模型和bypass。
mbist_dp4096x16m16_con.vhd
是controller和collar的顶层文件,该文件中只有一个entity,调用了controller和collar并把它们连接起来。
TB_mbist_dp4096x16m.vhd
是mbist的test_bench。
mem_model_new.lib
存储器的模型库文件。
bistgen
脚本文件,用来启来mbistarchitect。
run_bgen.do
脚本文件,用来生成bist电路。
DP4096X16M16.v.bak
工程文件,做modelsim仿真时生成的。
5.Modelsim工程打包(见文件夹)
7.Delay不同时的modelsim图加入
(1)当延迟是0.5时,结果如下:
总结:
当延迟为0.5时,输出没有数据,而且没有数据的地方跟时钟也没有延迟。
(2)当延迟为1时结果如下:
总结:
如上图所示,有数据输出,输出与时钟延迟为1ns。
(3)当延迟为1.5时结果如下:
总结:
如上图所示,有数据输出,但是延迟为1ns。
(4)当延迟为2.5时结果如下:
总结:
如上图所示,有数据输出,但是延迟为2ns。
由此可见,设置的延迟精确到ps的它都取了最大的整数延迟。
8.涉及到的工具:
MentorGraphics公司下的:
ModelSimvertion10.1c(波形仿真)
MBISTArchitectv8.2007_2.10(生成bist电路)
9.CLK/RST的专门描述(包含RAM不使用CLK如何能工作的问题)
CLK信号有两个:
bist_clkbypass_clk
其中bist_clk是在controller里存在,在测试时提供时钟信号。
而bypass_clk是给bypass模块提供时钟的。
RAM其实是有时钟信号的,testbench中给其加了时钟信号,而且它的时钟信号是与bist_clk同步的。
RST信号:
controller上有一个复位信号rst_l,是控制comtroller的。
11.软件安装步骤:
安装步骤:
1,Copy'dft_2007_2_10.ixe’tolinux。
2,Invoketheixe.
Note:
If'uudecode'ismissing,install'sharutils-4.6.1-2.i386.rpm'
3,-DAgree
4,Installationstartsatcurrentdir(itwillalsoinstalldoc,ifitfindsitundercurrentdir).
5,获得网卡地址,在自己电脑生成license.dat
6,将获得的license.dat复制到软件安装目录下
7,修改环境变量
MGC_HOMEother_mentor_install_dir
MGLS_LICENSE_FILE(fastlicensecheckout,forallmentorproducts)
8,启动软件。
12.MarchC算法解释:
(以下测试的都是DA端口)
wBackgroundUp:
写操作,地址从低到高全写入全0,初始化地址空间。
rwrInvBackgroundUp:
读写读操作,从低地址开始,先读,因为此时没有写操作,所以读出来的数据还是之前初始化后的全0,然后将全1写入,再读,此时读出来的就是写入的全1了,然后地址依次升高,重复之前的读写读操作。
rwrBackgroundUp:
读写读操作,由于之前第二步操作后地址已被写入全1。
从低地址开始,先读,此时为全1,再写入全0,再读就是全0,地址依次升高,重复读写读的操作。
rwrInvBackgroundDown:
读写读操作,上一步操作结束后地址全被写为0。
从高地址开始,先读数据,为全0,再写1,再读就是全1,地址依次降低,重复读写读的操作。
rwrBackgroundDown:
读写读操作,上一步操作结束后地址全被写为1。
从高地址开始,先读数据,为全1,再写0,再读就是全0,地址依次降低,重复读写读的操作。
rBackgroundDown:
读操作,上一步操作结束后地址全被写为0。
从低地址开始,读数据,读出来的数据都为全0,地址依次升高,重复此操作。
当A端口测试完毕后接着测试B端口,依照以上的步骤。
13.StepbyStep的生成方法(GUI,TCL),TCL的脚本逐条解释。
TCL:
/home/soc/Mentor_DFT_MBist/_mentor_dft_2007/bin/mbistarchitect-bistgen\//启动mbistarchitect,进入生成阶段
-lib./libs/mem_model_new.lib\//加载模型库,从指定的路径中选择
-logfile./transcripts/bgen.log-replace\//生成日志文件-dofile./run_bgen.do\//可执行文件的加载
-nogui//启动非图形界面
addmemorymodeldp4096x16m16//加载存储器模型dp4096x16m16
reportmemorymodel-modeldp4096x16m16//报告存储器模型
addmbistalgorithms1march2//给1端口添加march2算法
addmbistalgorithms2march2//给2端口添加march2算法
setcomparatortest–on//确定比较器测试状态为开启
setcontrollerhold–on//确定controller有一个保持位,当断言时,controller和compressor的状态就被保持住了。
setcontrollerdelay2//确定controller的延迟为2ns
setscanlogicdp4096x16m16-addr12-data16-cntrl2-scan-control-reset//确定d4096x16m16的扫描逻辑:
地址需要12个XOR门,
(因为每个端口是12位地址,所以需要6个XOR门,而存储器有AA和AB两个地址端口,所以需要12个XOR门),数据需要16个
XOR,控制信号需要2个XOR(OENA,WENA,CENA),因为控制信号一共有6个,如果使用了2个XOR的话还有两根线没有接,那么这剩下的两根直接与输出接到MUX上,这样一来,输出是32位,输入有地址的12根信号,数据的16根信号,控制的2根XOR信号,再加上剩下的单独两根控制信号刚好也是32位;设置扫描信号scan_in,scan_out,scan_enable;在存储器输出端添加MUX,一端接输出的数据,另一个输入接扫描单元的输出;在bypass模块的寄存器中添加reset信号。
Synthesisenvironmentsynopsys//综合环境为synopsys公司的DC
setvhdldescription-configurationon-logic_typestd_ulogic//在controller和connection文件中描述VHDL的配置,并且它的逻辑类型为std_ulogic。
setupcomparatorfailflag–multifail//设置比较器的失败标志,每一次的比较结果不匹配都为失败而输出
setupcontrollerclock-positive//设置控制器的时钟为上升沿有效
setupcontrollerreset–asynchronous//设置控制器的复位为异步
setupfull_speed–off//full_speed是BIST测试的一种模式,将其设置为关闭
setupmemoryaccess–simultaneous//设置存储器的存取方式为同步
run//运行
setupfilenaming-bist_modelmbist_dp4096x16m16.vhd\//设置文件的名称bist模型文件名为mbist_dp4096x16m16.vhd
-connected_modelmbist_dp4096x16m16_con.vhd\//设置连接模型文件名为mbist_dp4096x16m16_con.vhd
-testbenchTB_mbist_dp4096x16m.vhd\//设置测试模块文件名为TB_mbist_dp4096x16m.vhd
-scriptmbist_dp4096x16m16.dcscript\//设置脚本文件名为mbist_dp4096x16m16.dcscript
-ctdlmbist_dp404096x16m16.ctdf\//设置ctdl文件名为mbist_dp404096x16m16.ctdf
-wglmbist_dp4096x16m16.wgl//设置wgl文件名为mbist_dp4096x16m16.wgl
savebist-vhdl-script–replace//保存bist生成的文件,文件以vhdl语言描述,并且生成一个用于插入阶段的脚本,当文件更新时可以取代之前的文件
reportalgorithmsteps//报告算法的操作步骤
exit//退出
GUI模式:
1.在终端上启动图形界面:
2.点击MemoryModels
3.从指定路径中加载存储器模型,路径可以自己指定。
4.点击ReportEnvironment,点击run
5.设置输出文件名称(保存在指定路径下)
6.点击SaveBist,保存生成的文件。
注释:
当你用modelsim仿真时,需要加载的文件时四个,分别是mbist_dp4096X16m16.vhd、mbist_dp4096X16m16_con.vhd、TB_mbist_dp4096X16m.vhd、DP4096X16m16.v。
当你观察波形时只需要查看controller的波形就可以了,而且也可以同时关注一下collar中ram的时钟信号。
原则上ram上加的是系统给的信号,而测试时并没有系统给的信号,所以在testbench中给它加的就是与bist_clk同步的时钟信号。
问题1:
文档格式要求,做成表格或加序号,层次清晰。
如果有并列项尽量用表格。
问题2:
硕士论文格式。
问题3:
信号怎么穿越到顶层?
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)