深入浅出,玩转AI SoC DFT设计

张开发
2026/4/11 19:56:06 15 分钟阅读

分享文章

深入浅出,玩转AI SoC DFT设计
01景芯DFT实战课景芯团队DFT专家老师授课一对一辅导主打文档服务器实战通过3个系列课程依次完成HD6850各个关键子系统的DFT设计实战后再完成全芯片TOP DFT实战让您快速超越同龄人我们不卖视频只提供免费导学视频景芯团队始终坚信实践和服务才是景芯训练营design service的核心。02DFT课程140nm DFT hieraychy实战为了满足不同经验的学员需求景芯团队DFT老师开发了hierarchy与flatten两套环境进行实战flatten用以快速入门而在hierarchy设计流程中DFT工程师的工作需围绕 “模块测试覆盖” 与 “顶层集成效率” 展开40nm实战课程采用上图橙色子系统作为全芯片实战内容。Part.01基础实战目录(flat flow)1、基础课采用橙色子系统作为单独的AI MCU芯片来进行实战采用flatten flow进行实战。橙色域采用低功耗RISC-V自研架构全部自研实现了AXI总线矩阵、AHB总线矩阵、MIPI DPHY软核、ISP-Lite、NPU-lite、SRAM、DMA、UART、I2C、QSPI/SPI等常用IP项目设计验证架构如下Part.02基础实战目录(flat flow)Part.03基础实战目录(hierarchy flow)进阶课采用橙色子系统作为单独的AI MCU芯片来进行实战采用hierarchy flow进行实战。景芯橙色域子系统分为三个subchip子系统包括media_wrapper、amba_wrapper、cpu_wrapper三个subchip完成每个子系统的DFT后然后进行TOP的DFT实战。每个subchip的功能描述如下media wrapper上图青色部分负责MIPI图像输入、DPV图像输入、异步处理、ISP图像处理。amba wrapper浅黄色部分负责接收media wrapper传递过来的经过ISP预处理过的图像通过专用DMA搬运数据到amba wrapper系统主存SRAMDMA搬运完成后CPU配置NPU搬运系统主存SRAM的图像数据去做矩阵运算(卷积)。cpu wrapper负责RISC-V CPU、TCM、自研AXI总线矩阵的译码、仲裁、AXI2AHB总线桥、中断系统、低功耗PMU管理等功能。NPU卷积完成后RISC-V CPU执行WFI指令进入休眠模式。通过isolate信号和retain信号进行时钟门控、电源门控。Part.04进阶实战目录hierarchy flow关键环节包括模块级Block LevelScan Wrapper 实现为每个独立模块设计扫描wrapper电路确保单个模块的测试点可访问、测试逻辑无遗漏为后续集成测试打下基础简化模型应用抽取模块的 Graybox灰盒简化模型替代复杂的全模块模型参与顶层设计显著降低顶层 DFT 工作的运行时间Runtime提升设计效率测试电路集成与规划负责各模块 DFT 电路的顶层整合同时参与模块摆放规划确保测试信号的传输路径合理避免因布局问题影响测试效果。两种设计架构无绝对优劣小型项目选Flatten可追求高效闭环大型项目用 Hierarchy能破解复杂度难题。而DFT工程师在层次化流程中的精细化操作正是保障复杂芯片测试覆盖率与研发效率的关键所在。Part.06课程报名微信扫描咨询我们吧景芯SoC芯片全流程实战附属【知识星球】一个包括设计、验证、DFT、后端全流程技术的交流平台也是景芯学员的答疑平台若您和我一样渴求技术那欢迎扫下面二维码加入星球共同进步02DFT课程212nm DFT CPU hieraychy实战为了完成sharbus memory bist、occ、edt、12nm DC综合、scan、gray_box、ATPG、mbist仿真、dc/ac仿真、formal(rtl2rtl、rtl2netlist、netlist2netlist)等hierarchy DFT flow我们特选取HD6850项目的多核处理器进行12nm DFT flow实战包括12nm综合、12nm Formality等flow全网唯一DFT高级实战课03DFT课程312nm HD6850全芯片DFT实战课程3将会完成景芯HD6850全芯片DFT实战设计难度极大芯片整体结构如下图所示芯片整体结构如下图所示Topriscv_soc_topHarden blockfilter_wrapper/cpu_wrapper/shtd_wrapper/aon_wrapper其中cpu_wrapper下面又包含一个子模块cortexa7_corefilter_wrapper/aon_wrapper是纯数字模块按照正常流程走即可。1.make mbist插入mbist测试逻辑2.make occ_edt插入occ和edt为scan测试做准备make gen_file将tsdb目录下的文件整理成vcs可读的filelist方便综合和vcs仿真make pat_gen生成mbist_pattern无需改动design3.make syn将做完mbist的rtl综合成netlist可以用for_synthesis.tcl也可以用gen_file生成的dft_filelist4.make scan将所有的寄存器按照需求串chainmake graybox抽出graybox网表(包含ijtag逻辑和wrapper逻辑)顶层block可以只带graybox网表做dft或者仿真加速流程。make dc_ext根据graybox网表跑external atpg跑通即可无需关注覆盖率等信息make dcstuck at向量生成需要read dc_ext fault提高覆盖率make actransition向量生成5.make mbist_simmbist仿真make dc_simstuck at仿真make ac_simtransition仿真shtd_wrapper内部包含mipi phy需要特殊处理。1. make mbistphy内部一般不含memory即使有memory也不需要做mbist(phy内部自带电路测试)无需特殊处理2. make occ_edt注意解决phy内部的drc3. make syn吃入phy的db优化时序也可不吃4. make scan/dc/ac/ext需要读入phy的tcd文件一般ip厂商会提供ctl文件(Synopsys专用格式)需要使用工具将ctl文件转译成tcd文件phy内部的register需要单独串chain不允许和shtd_wrapper内的寄存器串在同一条chain上。5. make mbist_sim/dc_sim/ac_sim需要吃phy的netlistcpu_wrapper/cortexa7_core需要做sharebus mbist流程也会有所不同。1. make mbistcortexa7_core中memory的sharebus mbist逻辑已经集成在了cpu_wrapper中无需做mbist直接从occ_edt开始做待cortexa7_core做完之后才可做cpu_wrapper的mbistcpu_wrapper做完mbist后需要将cortexa7_core部分rtl删除只需要将tsdb中的cortexa7core.v删除即可2. make occ_edt3. make syn4. make scan/dc/ac/ext5. make mbist_sim/dc_sim/ac_simriscv_soc_top为芯片的顶层待所有block完成之后才可开始做dft1. make mbist注意bscan相关IO的处理2. make occ_edt无论顶层是否有logic建议都要当作正常模块来做这里要做好retarget准备合理分配io数量和测试模块3. make syn4. make scan/dc/retarget_mode_transition/retarget_mode_stuck顶层没有logic无需做ac5. make mbist_sim/dc_sim/ac_sim/retarget_dc/retarget_acmbist仿真包括bscan和repair仿真不需要仿真的模块可以吃graybox加快仿真进程04DFT招聘景芯DFT学员供不应求职位SoC 中端工程师岗位职责1、负责模块级与芯片级 Synthesis、Formal check 等工作2、负责完成 sdc, upf 等文件3、负责综合 netlist、sdc、upf 等交付工作4、协助后端 signoff5、熟悉 DFT 工具独立进行 DFT 设计与仿真工作包括 BSD、Mbist、Scan。任职要求1、微电子、电子工程等相关专业硕士及以上学历三年以上工作经验2、熟练使用 DC/Formality/PrimeTime 等 EDA 工具3、熟练使用 tcl/perl/shell/python/makefile 等编程语言4、熟练掌握 DFT 工具能独立完成 DFT 设计与仿真者优先考虑5、熟练掌握 Low Power 设计者优先6、具有良好的表达沟通能力及团队合作精神具有较强的独立工作能力和动手能力7、良好的英文阅读、文档编写能力。Part.01学员案列分享1.ram周边的bypass逻辑是怎么做进去的答工具自动做进去通过memory_bypass_en即可启用。set_config_valuescan_bypass_logic sync_mux -in/DftSpecification()/MemoryBist/Controller(c1)/Step0/MemoryInterface(m1)2.如何分配MBIST内的controller的step、memory答通过直接修改spec或者手动编辑命令即可设置。DefaultsSpecification() {DftSpecification{MemoryBist{max_steps_per_controller 4max_memories_per_step6}}}3. 怎么手动对memory进行分组答set_memory_instance_options group_name可以使用该命令对所有memory进行手动分组。4.boundary scan逻辑为什么不上chain答bscan和scan是两种不同的测试mode测试方案和原理都不同bscan会将scan关键信号如scan_en、edt_update的IO纳入测试范围因此不能上chain。5.对于不同功能的IO PADbscan会如何处理IO PAD的IE/OE在scan和bscan过程中如何避免相互影响答不管是高速IO还是普通GPIOboundary scan都是用低速时钟测试测试方案与IO PAD功能无关。Scan和bscan都会控制IO PAD的IE/OE但二者是完全隔离开的测试时不会相互影响scan阶段IE/OE可以通过tdr自行管控bscan阶段IE/OE由工具自行接管控制。6.对于包含多个TAP controller的芯片boundary_scan是如何测试的答一般而言只需要一个top放置在顶层即可底层的bscan可以和顶层串一起测试有多个TAP controller的芯片会将顶层和底层完全分隔开各自独立进行测试。二、EDT/OCC1.Ijtag网络的逻辑都不上chain吗答少部分sti(scan test instrument)逻辑可以上chain其余部分都不上chain。2.occ chain和其余scan chain有什么不同答occ chain是将所有occ内部待测逻辑串成一条chain这条chain不仅有nonscan cell还有组合逻辑其他的scan chain上只有scan cell和移位寄存器不允许有组合逻辑。Occ chain可以与scan chain串一起但由于其特殊结构(负沿采样、有组合逻辑等)会影响到capture pulse(降低压缩效率和覆盖率)因此occ_chain不建议与其他scan chain混在一起Tessent工具会自行将occ单独串chain。(不是独占一个scan channel而是单独占用一条scan chain)3.edt_bypass是怎么实现的答set_core_instance_parameters –instances $edt_instance -parameter_values {edt_bypass on}不需要单独设置edt_bypass mode。4.如何让工具不自动修复rst答set_drc_handling DFT_C9 –auto_fix off。在edt_occ_insertion过程中工具会自动修复rst相关的违例使用该命令可以让工具检测到rst违例后直接报错不自动修复工具往往会将有问题的复位信号bypass到DFT指定的复位上但修复方式太过简单粗暴建议将它关闭。5.edt的压缩比该怎么选择答一般来说不超过200即可。需要提前分配好retarget mode确定每个retarget mode有多少IO可以用作scan_channel_in/out在根据每个retarget mode所有模块的寄存器总数量除以scan_chain_length再除以IO数量再乘以2即可得到压缩比的数值。6.OCC上为什么会有ijtag接口它的作用是什么答在test_setup阶段DFT可以通过ijtag网络配置需要的信号occ内部也有ijtag控制网络配置后使得OCC启用相应的功能。三、SYN1.基于触发器、锁存器的时钟门控有什么区别答时钟门控是用来控制时钟关断的元器件实际项目中会使用大量的门控来控制功耗。厂家提供的库文件中有封装好的门控单元实际项目中可以直接调用很大程度上避免了毛刺的产生。锁存器是高/低电平触发寄存器是上升/下降沿触发他们都可以用来组合成时钟门控单元但基于面积的考虑实际上使用锁存器居多。四、SCAN1.scancapture频率过高会有什么问题scanshift频率过高会有什么问题答scanhscapture频率和function保持一致频率过高会导致功耗过高且时序难以收敛scanlscapture频率和scanshift一致scanshift频率越高DFT测试时间越短DFT测试成本越低对节省芯片成本有很大的好处但频率过高会导致时序难以收敛、测试功耗过高、SE从1到0切换不及时等等。对于DFT而言Scanshift频率越高越好scanhscapture频率由function决定。2.PLL后面接的divider逻辑需要串chain吗答对于普通SOC而言divider不能串chaindivider一旦上chaintransition时divider因为上chain会失去分频功能导致divider不能输出指定频率时钟该时钟域下的寄存器无法测试。对于车规芯片需要追求极致的覆盖率可以让divider在stuck_at下上chain在transition下不上chain。3.如何判断哪些port需要插入wrapper_cell哪些port需要被exclude答插入wrapper_cell后的port在信号传递过程中被改变了原本的值无法正常传递到core_chain内部或者从core_chain内部传递出去在这个前提条件下只有不关心当前状态值的port才能插入wrapper_cell。通常需要exclude的port有dft控制信号(scan_en edt_undate dft_mode 等等)、时钟输入输出信号有些没有被定义的时钟DFT不需要、ijtag信号、没有组合逻辑的信号等等。Tessent工具会自动筛选一部分信号exclude实际项目中会有一些特殊需求经常需要手动调整exclude list。4.什么是scan reorder答后端在布局布线时会发现有一些scan_chain上的寄存器连接顺序不合理导致绕线困难此时需要在不影响function的前提下对这条scan_chain重新排序这个过程叫做scan reorder。DFT做完scan后需要交付scan netlist和scandefscandef里面会包含reorder相关信息后端工具会根据scandef文件自动进行scan reorder。五、ATPG1.chip_top跑ATPG时序如何删除DFT不相关的port答delete_primary_input delete_primary_outputATPG时经常有删除DFT不相关port的需求若不删除工具会对这些IO赋值导致ATE测试fail。2.什么是force_pi和measure_poscanshift阶段有force_pi和measure_po吗答scanshift阶段会将scan_channel_in的数据逐步shift到每一级scan register中(或shift out)此时没有force_pi和measure_po,在scancapture clock pulse到来之前会先进行force_pi和measure_po。对于block而言工具会将输入输出端口视作PI/PO通过对这些端口赋值(force_pi)经过一些列组合逻辑传导之后对输出端口进行观测(measure_po)。实际芯片测试中由于各种条件限制往往会删掉多余的input/output io舍弃这部分coverage。2. retarget的作用是什么retartget mode和top的edt_mode会分时起作用吗答大型SOC所有模块同时测试所需的io数量过多芯片的io数量是有限的不够用因此引入了retarget。Top的intest会带底层block的extest一起测试所以top_only需要单独作为一个测试mode其余block按照层次可以分为retarget1~n不同retarget之间不能同时测试同一个retarget内部的模块可以同时测试Top_only视为一个特殊的retarget_mode。3.对于int_edt和ext_edt架构生成graybox时需要将channal_output设置为ignore_for_graybox吗答不需要工具会自行处理好相关逻辑。Graybox需要保留好int/ext edt、wrapper_chain等相关逻辑后期retarget时需要用到减少atpg和仿真时间。4.tessent atpg有restore_session相似的操作吗答write_flat_model写出flat_model然后set_context pattern –scanread_flat_model即可。5.跑atpg时什么情况下需要吃sdc答在后仿阶段跑atpg需要吃sdc前仿阶段不需要。在signoff过程中往往会有些高速路径是假path或者时序收不下来需要设置mcp或者false_path放掉工具会根据这些sdc自行推到相应的pattern避免出现violation。Dc一般不需要吃sdc慢速路径一般不会出现问题ac需要吃sdc出问题的路径往往都是高速路径。6.为什么atpg覆盖率报告里有一些选项但是脚本中没有例如mask_po答当不想对某些output port进行观测时可以用add_po_mask将其屏蔽掉工具会有很多默认选项不需要用户一个个设置大大简化了atpg流程如果确实影响到了design才需要用户手动调整。六、SIM1.DFT过程中PLL设置成了black_boxvcs仿真过程中PLL怎么震荡出高频时钟答black_box是DFT过程中的概念vcs没有black_box的说法。只要吃入了PLL model并咋向量中配置好了分频系数、参考时钟等参数PLL即可正常工作。七、STA1.scanshift和scanlscapture可以合并为一个mode进行signoff吗答不同芯片有不同的signoff策略。大型SOC时钟频率较高时序复杂不建议合并任何一个mode小芯片时钟慢时序简单可以随意合并。2.tessent_set_ltest_madal_edt_fast_capture为什么约束scan_en为0但slow_capture不约束scan_enfast_capture需要约束fast_capture_mode吗答tessent sdc里面的proc只提供最简单的约束在大型SOC中需要手动补齐其他sdc例如scan_en的值需要自己写sdc来定义(配合公司的signoff策略)。Fast_capture_mode是通过ijtag网络配置的信号在fast_capture_mode不能直接case为了保证occ的输出是fast_clock可以case在occ的clkoutmux的S端。3.STA该分为几个mode进行signoff比较合理答一般有scanhscapture、scanlscapture、scanshift、func、mbist五个sta mode其中mbist mode时钟与function几乎一致可以将mbist和func合并。而repair mode和boundary scan需要用到ijtag_tck和ref_clk(慢速时钟的时序比较宽松)可以合并到func mode。Scanhscapture和scanlscapture时钟来源不一样不建议合并scanhscapture和func路径大部分重合但是时钟同异步关系可能不一样(和signoff策略相关)部分时序路径也不一样(dft路径和func路径不一样)不建议合并scanshift和scanlscapture时钟来源一样但是走的路径不同(SI/D)虽然都是慢速时钟但合并后会有太多虚假路径不建议合并。4.sta中为什么要set_false_path答由于design中包含了function路径和dft路径在signoff阶段很难通过sdc将二者完全区分开来。例如在dft scanhscapture mode下经常能够看到经过memory的时序路径但是scanhscapture是检查寄存器之间的路径不涉及到经过memory的时序路径此时就需要通过sdc来去掉这些虚假的路径可以通过set_false_path的方式让工具不去检查也可以通过set_disbale_timing的方式等等只要达成目的即可。八、DFT plan1.当拿到一颗芯片时如何开展DFT规划答首先针对芯片工艺、面积、用途可以大致规划DFT覆盖率和良率要求之后便可以开始规划应用哪些DFT技术例如mbist、scan、repair、bscan、sharebus、ram_seq、wrapper、test_point等等确认好之后需要知道IO数量和分布以此来规划DFT IO复用。DFT方案确认好之后就是各种细节制定例如mem group、chain_balance、io group等等视项目具体情况而定。2.dft有哪些时钟分别有什么作用答dft总共有ijtag_tck、test_clock(scan_clock)func_clock。其中ijtag_tck是ijtag网络专用时钟test_clock是scanshift和scanlscapture时钟func_clock是复用的function 高速时钟用来测试mbist和scanhscapture。Part.05课程报名微信扫描咨询我们吧景芯SoC芯片全流程实战附属【知识星球】一个包括设计、验证、DFT、后端全流程技术的交流平台也是景芯学员的答疑平台若您和我一样渴求技术那欢迎扫下面二维码加入星球共同进步

更多文章