1. Tessent Shell入门设计加载与基础配置第一次接触Tessent Shell时最让人头疼的就是如何正确加载设计文件。记得我刚入行时因为没搞懂read_vhdl和read_verilog的区别浪费了整整一天时间。现在回头看其实掌握几个核心命令就能轻松搞定设计加载。set_logfile_handling是我每次必用的第一个命令。它就像个尽职的秘书把工具运行的所有信息都记录到指定文件。我习惯用这个命令创建带时间戳的日志文件方便后续排查问题set_logfile_handling -log_file ./logs/run_$(date %Y%m%d).log -replace接着要用set_tsdb_output_directory设置TSDB数据库路径。这个数据库相当于Tessent的工作记忆存储着设计加载、DFT插入等各个阶段的数据。建议单独创建目录存放set_tsdb_output_directory ./tsdb open_tsdb加载设计文件时VHDL和Verilog的处理方式略有不同。对于VHDL设计特别是用了2008新特性的必须加上-format参数read_vhdl -format 2008 -f file_list.f而Verilog设计则更灵活如果遇到Synopsys的特殊语法可以加-vcs_compatibility选项忽略兼容性问题read_verilog -vcs_compatibility -f verilog_files.listset_current_design是另一个关键命令。它相当于给工具指认当前要操作的顶层模块。我遇到过新手忘记设置这个参数结果后续命令全跑在了错误模块上。正确用法是set_current_design top_module对于设计中不需要做DFT的模块可以用add_black_boxes标记为黑盒。这个命令有个很实用的-auto选项能自动识别网表中缺少定义的模块add_black_boxes -auto2. DFT插入前的关键设置设计加载完成后就该准备DFT插入了。这个阶段最容易踩坑的就是设计层次和系统模式的设置。有次项目因为没设对design_level导致TAP控制器插错位置不得不返工。set_design_level命令决定了工具对设计的理解方式。chip级别会自动插入TAP端口而physical_block和sub_block则适用于层次化设计set_design_level chip # 适用于完整芯片 set_design_level physical_block # 用于物理模块set_system_mode控制工具的工作状态相当于汽车的档位。新手常犯的错误是在insertion模式下尝试修改设计结果触发各种错误。正确的流程应该是set_system_mode setup # 初始设置 # 进行各种配置... set_system_mode insertion # 开始插入DFT宏定义在大型项目中特别有用。set_design_macros可以定义全局参数比如不同工艺节点的阈值电压set_design_macros -define {PVT_FAST 1}环境变量设置也很关键。setenv命令可以临时修改工具环境变量比如增加内存限制setenv MEM_LIMIT 16G3. 层次化设计与DFT插入实战处理复杂SoC设计时层次化方法能大幅提高效率。最近一个汽车芯片项目通过合理使用read_core_descriptions和read_icl命令DFT插入时间缩短了40%。对于包含多个IP核的设计TCD文件是连接不同层次的关键。加载方法如下read_core_descriptions cores.tcdICL文件则描述了核的接口特性。加载时要注意版本匹配read_icl ip_interface.iclintercept_connection是我最喜欢的命令之一它能在不修改RTL的情况下插入测试逻辑。比如要监控某个关键信号可以这样操作intercept_connection clk_out \ -cell_function_name clock_mux \ -select test_mode创建端口也是常见需求。create_port命令可以添加测试专用接口create_port test_en -direction in处理层次化设计时get_instances命令能快速定位特定模块。比如找出所有ADC实例get_instances -of_modules ADC_12BIT -hier4. 仿真与模式生成技巧DFT插入完成后仿真验证是确保质量的关键步骤。set_simulation_options命令的配置直接影响测试覆盖率这里面的门道我花了三年才摸透。时钟与复位竞争是最常见的问题之一。set_reset_dominate_clock选项可以控制复位信号的优先级set_simulation_options -set_reset_dominate_clock on对于高速设计C6违例需要特别处理。开启悲观仿真可以避免时序竞争导致的不匹配set_simulation_options -c6_mask_races onMUX的X态传播设置也很关键。默认的consensus模式更乐观但有时需要切换到non-consensusset_simulation_options -mux_select_x_sim_x onread_design命令在迭代验证时特别有用。它允许重复加载修改后的设计而不用重新解析原始RTLread_design -design_identifier mbist_inserted最后提醒一个容易忽略的细节set_tool_options的-reapply_setting_after_reelaboration选项。设为on可以保留之前的DFT设置set_tool_options -reapply_setting_after_reelaboration on