- 博客(49)
- 收藏
- 关注
原创 NC verilog :force命令
默认释放force后,对象值会立即恢复为无强制时的状态;若包含-keepvalue选项(force -release -keepvalue time_spec),强制值会保持到指定时间后再释放。force命令将指定对象设置为给定值,并强制其保持该值,直到通过release、force -release、deposit -release命令释放,或被新的force覆盖。之前有次仿真中尝试对reg的Q端进行force值,查看波形发现没有force上,以上就是可能的原因。Verilog 存储元件。
2025-12-26 11:15:14
223
原创 scan 下 debug 覆盖率的一些方法
时钟门控的 TE 端使用 scan en 来控制有助于在 capture 时覆盖到 TE 端的 fault。
2025-12-22 17:53:58
257
原创 scan 下的一些DRC
所有时钟关闭时禁止捕获数据,下图第一个reg时钟pin为X,引起C1问题前后级reg时钟有效沿不一致导致的问题工具在默认情况下,会在上升沿进行检查,导致下降沿的reg出问题解决方案:使用set_split_capture_cycle -on,该命令会在上升沿后进行一次检查时钟会影响数据路径,导致竞争问题解决方法:set_clock_off_simulation on ,该命令会在上升沿前进行检查。
2025-12-22 14:04:26
326
原创 Tessent On-Chip Clock Controller(二)
通常,OCC会使用clock_intercept_node拦截驱动节点的快时钟。该工具会自动识别与被拦截节点对应的快时钟,并将其用作快时钟输入。因此,您无需在DftSpecification中指定fast_clock属性。然而,当你明确定义OCC的快速时钟源时,需要同时指定clock_intercept_node和fast_clock。clock_intercept_node的指定用于连接节点和OCC输出。fast_clock的指定用于将OCC快速时钟输入连接到快速时钟源。
2025-12-12 11:56:17
757
原创 Tessent On-Chip Clock Controller(一)
OCC应该靠近时钟源,并位于core的内部。从而实现在core 中控制,并支持pattern retargettessent工具会生成SDC,引导CTS时不要平衡OCC中flop 和latch 的时钟树。SDC中的内容如下所示 :这是从寄存器到时钟门控的路径,这个寄存器控制着捕获刚开始时fast clocks是否能通过时钟门控。有一种OCC带有capture_enable输入,可与自由运行的慢时钟配合使用。
2025-12-09 14:57:37
875
原创 DC综合:check design 出现的一些警告
DC工具在该模块下添加了一些模块,原本的RTL中并无这些模块。添加的这些模块中,有的port就没有连接,有部分port存在连接。综合库中不存在原本RTL中使用的reg,使用了库中有的单元来替换。因此,导致原本RTL的一些连接断了。左图为综合前,右图为综合后的单元。原本的RTL中,该引脚就连接到逻辑0或1,至于综合后还是逻辑0或1,应该是库文件中缺失tie 0 与tie1 的 cell。发现综合后多了一些冗余逻辑,这些冗余逻辑既没有驱动也没有负载。查看发现RTL是没有连接的,RTL电路如下。
2025-11-26 14:00:00
294
原创 OCC : include_clocks_in_icl_model
具有此属性的 ICL 端口从一开始并不作为 ICL 提取的起点。可以发现icl_extraction_port_trigger_list在include_clocks_in_icl_model设置为on时被忽略掉了;若您将该属性设置为 “on”(开启),工具会从fast_clock的 ICL 端口声明中省略icl_extraction_port_trigger_list。在fast_clock的 ICL 端口声明中使用icl_extraction_port_trigger_list属性可确保向后兼容性。
2025-11-17 14:11:40
296
原创 SSN(一)
参考来源 :Tessent™ Shell User’s Manual 2024版文章由AI翻译和个人理解创作,如有错误,欢迎指正。
2025-11-03 16:30:22
1068
原创 linux下tee命令,导致dc_shell中tab键无法补全命令
双引号中可以加入-f 选项,读入dc 的脚本。使用此命令运行,tab 键能正常使用。
2025-10-10 11:23:04
209
1
原创 DC的一些选项
在工具中,该值默认为true,compile_ultra 命令会优化掉常值的reg,从而达到优化面积的目的。DC会将时序元素替换为常值,一些被替换的时序元素如下图,它们的输入引脚或者复位端为常值,都会被工具识别为常值的时序元素、工具会识别 non scan 模式下的常值 reg。如下图,TestMode 和 ScanEnable 为 0 时的常值reg会被识别,但是,进入扫描链的reg不会被优化。
2025-09-22 14:23:07
959
原创 dc_shell (十一)
此外,在第一次重定时之后,无法对驱动g2单元其中一个输入的C1类寄存器进行向前重定时,因为该单元只有一个输入引脚由寄存器驱动。图140展示了,当分解应用于两个同步清零寄存器组成的序列时,左侧寄存器无法进行前移,因为新引入的与门在其第二个端口没有寄存器(右侧寄存器通过反相器进行了前移重定时)。不使用分解(多类重定时)可能会导致寄存器类别冲突,这最终会限制可能的向前或向后重定时移动的数量。因此,如果一组单元包含一个3位寄存器和一个5位寄存器,且这些单元具有相同的功能,那么这组单元就是一个多位组件。
2025-09-10 16:52:52
682
原创 dc_shell (十) --Using Floorplan Physical Constraints
当无法使用extract_physical_constraints命令从DEF文件中,或使用read_floorplan命令从Tcl脚本中获取相关信息时,您需要手动定义物理约束。在 Tcl 脚本文件中手动定义物理约束后,请使用 source 命令应用这些约束。手动定义物理约束时,请记住以下几点:• 在应用用户指定的物理约束之前,必须读入设计。• 你必须在第一个地形模式会话期间应用用户指定的物理约束。
2025-08-25 15:26:10
1117
原创 dc_shell (九) --Defining Design Constraints
如果计算出的电容值大于最大电容值,Design Compiler会报告设计规则违规,并尝试纠正该违规问题。为了评估驱动引脚(如图8-3中的X)的扇出,Design Compiler会计算由引脚X驱动的所有输入的fanout_load属性之和,并将该数值与存储在驱动引脚X处的max_fanout属性数值进行比较。无法移除逻辑库中设置的max_transition、max_fanout、max_capacitance和min_capacitance属性,因为这些属性是必需的,但可以设置更严格的值。
2025-08-21 09:47:58
576
原创 dc_shell (八) --Working With Designs in Memory
转换器使用每个现有单元(组件)的功能描述,在新的逻辑库(目标库)中确定匹配的组件。你可以通过优先选择或禁用特定的库单元(使用 `set_prefer` 和 `set_dont_use` 命令),以及指定寄存器类型(使用 `set_register_type` 命令)来影响替换单元的选择。在设计链接后,顶层设计的 `local_link_library` 属性会设置为 `target_library` 的值。要在设计的输入和输出端口上设置电容负载值,请使用 set_load 命令。
2025-08-20 10:28:06
888
原创 dc_shell (七) --Working With Designs in Memory
您可以在层次化设计的任何层级上使用该命令,而无需使用current_design命令来指定当前设计。仅当您指定的组件或设计具有与原始引用相同数量的端口、相同的大小和方向时,设计编译器才会更改链接。要在原始和新单元引用之间映射引脚名称,请在change_link命令中使用 -pin_map {{old_pin1 new_pin1} {old_pin2 new_pin2}...}选项。您可以在`analyze`或`read_file`命令中使用`-autoread`选项,自动读取带依赖项的设计。
2025-08-19 10:56:39
749
原创 dc_shell (六)
write_milkyway命令将网表和物理数据从内存写入 Milkyway 设计库格式,重新创建层次结构保留信息,并将当前设计的设计数据保存到一个设计文件中。- 如果设计文件已经存在(即,在相同输出目录的设计上运行过 write_milkyway 命令),write_milkyway 命令会创建一个额外的设计文件,并增加版本号。Milkyway 数据库将设计数据存储在 Milkyway 设计库中,将物理库数据存储在 Milkyway 参考库中。不能使用Milkyway格式存储未映射设计的设计数据。
2025-08-18 14:37:31
784
原创 dc_shell (五)
例如,在一个多电压或多工艺设计中,工具通常会从 `link_library` 中与单元的电压、温度和工艺相匹配的库中确定单元的时序和功耗。然而,当您使用 `set_link_library_subset` 命令时,设计编译器会限制库单元的选择,这可以解决具有相同电压、温度和工艺的库之间的歧义问题。要指定属于 `link_library` 变量的库子集,请使用带有 `library_list` 参数的 `set_link_library_subset` 命令。链接库子集为要考虑的库提供了额外的筛选条件。
2025-08-18 11:54:18
762
原创 dc_shell (四)
为获得最佳效果,请将每个Verilog的always块或VHDL进程限制为单一类型的寄存器推断:锁存器、带异步置位或复位的锁存器、触发器、带异步置位或复位的触发器,或者带同步置位或复位的触发器。如果某个模块同时推断出上升沿触发和下降沿触发的触发器,而目标逻辑库中不包含下降沿触发的触发器,那么设计编译器会在时钟树中为下降沿时钟生成一个反相器。如果将块设置得太小,可能会形成人为的边界,从而限制有效的优化过程。人为划分的不合理的边界,会影响工具的优化:图3-4没有人为划分的边界,工具有更佳的灵活性。
2025-08-15 10:15:05
820
原创 dc_shell (三)
如果再执行一个命令或脚本,该命令会等待之前的一个重定向命令完成后再开始新的任务。您还可以在“redirect -bg”命令内部运行“parallel_execute”命令,以并行执行一系列检查和报告命令。如果指定的是不支持的命令,该工具将跳过该命令,并发出类似于以下内容的警告消息。如下所示,把y.tcl的命令交给后台执行,工具继续执行下一条命令。若要报告您通过 “redirect -bg” 命令提交以便在后台运行的所有任务,请使用 “report_background_jobs” 命令。
2025-08-14 15:50:42
376
原创 dc_shell (二)
创建规则,设置单元的命名格式,限制以某些字符开头,对某些名字进行映射。综合后,防止未与net 相连接的pin 被忽略。综合时,移除未连接的端口。
2025-08-12 15:52:25
224
原创 dc_shell (一)
DC中,改变环境变量的方法:通过下面的命令可以将未连接的net,按照自己需要的方式命名。get_attribute能够获取库中的值,如面积、默认max_transition。remove_attribute能够删除库中的值。通常以//或者/*开始,后面接上关键字synopsys。如果以//synopsys开始的注释,后面接的需要是编译器指令,有其他内容工具会报错。举例如下,第一个图中代码是不可综合的。
2025-08-11 11:32:41
739
原创 share bus (一)
本章节描述了为使用Shared Bus interfaces的内存生成、插入及验证BIST硬件所需的概念、流程、架构和配置文件。Shared Bus interface为多个内存提供了通用访问端口,该架构在模块内部添加内存时具备可扩展性,同时为memory BIST访问保留了模块边界的固定接口尺寸。Shared Bus interfaces的典型应用场景是测试处理器核心模块内部的内存。
2025-07-30 14:33:58
1641
1
原创 Memory Repair (八)
本文介绍了一种快速BISR加载技术及其实现方案,该技术通过硬件修改优化存储器修复流程。主要内容包括: 快速BISR加载架构通过并行总线直接连接BISR寄存器与fusebox接口,相比传统串行加载显著提升上电速度。该方案要求fusebox具备足够存储容量且支持并行修复接口。 实现方法包含多路复用器设计,支持并行/串行修复模式切换。系统在DFT插入阶段自动进行连接验证,并保留两种修复路径:并行总线用于快速初始化,串行接口用于常规测试。 文章详细说明了子模块集成方案、fusebox接口配置要求,以及模式控制属性设
2025-06-20 10:40:41
1121
原创 Memory Repair (七)
摘要:RepairSharing技术通过在多个内存块间共享BIRA和BISR硬件,有效降低了内存修复对芯片面积和上电时间的影响。该技术适用于行/列/混合修复类型的内存,实现条件包括:修复类型一致、冗余资源尺寸相同、物理地址映射兼容等。应用时需权衡面积优化与潜在良率损失(组内任一内存故障将消耗整个组的备用资源)。实施流程包括设计细化后启用修复共享、创建DFT规范、配置修复组等步骤。BISR寄存器位置由修复组内存储器的公共祖先模块决定,组内共享的BISR寄存器长度在注释文件中统一标注。该技术特别适用于含大量内存
2025-06-18 17:43:15
1261
原创 Memory Repair (六)
可以采用增量修复(incremental repair)来提高制造良率或避免昂贵的现场系统维修。增量修复分为两种形式:软增量修复(soft incremental repair)和硬增量修复(hard incremental repair)。由于允许将BISR寄存器内容传输至BIRA寄存器的连接始终存在并支持增量修复,因此无需特别指定启用软增量修复的选项。
2025-06-18 11:03:20
1173
原创 sram的读写
摘要:本文介绍了MBISR SRAM中BWE端口与WE端口的区别:BWE支持按位写入控制,而WE只能全局控制写入。文章分析了SRAM初始阶段Q端出现X值的原因,是由于未初始化地址读取所致。通过时序图示例说明地址03、1c、1f的未初始化状态,以及地址00从写入FFFF到读取输出的完整操作流程,展示了SRAM读写操作的基本时序:WE下降沿读取地址内容,一个时钟周期后在Q端输出;WE上升沿执行写入操作。
2025-06-17 11:22:27
444
原创 Memory Repair (五)
摘要:BISR控制器采用基于零计数和修复数据的压缩算法存储修复信息,通过Opcode标识字类型。fusebox组织方式包括单链和多电源域组处理,支持硬增量修复和指针复用优化。CompressBisrChain脚本可用于外部编程场景,通过复用指针减少fuse用量,但会增加制造流程复杂度。该脚本读取仿真日志和配置文件,生成测试步骤文件用于fusebox编程、读取和BISR链操作。制造流程包含预修复测试、修复判断、BISR链访问和fusebox编程等步骤,需配合TAP访问模式实现自动化操作。
2025-06-12 17:24:30
736
原创 Memory Repair (四)
摘要:本文介绍了Tessent Shell Memory BIST中BISR链的完整测试方法。标准BISR实现仅测试修复连接的必需部分,但高可靠性系统需要全面测试所有连接,包括BIRA寄存器间的数据和控制信号连接。通过设置include_repair_chain_test属性可启用测试,算法采用棋盘格模式检测固定和短路故障。测试分为通用步骤(适用于所有存储器)和附加步骤(针对串行接口和共享总线存储器),涵盖移位路径、复位、使能信号及数据传输验证。层次化验证方法优化了signoff阶段的效率,未知值会被自动屏
2025-06-11 11:59:45
1074
原创 Memory Repair (二)
本节介绍如何在 circuit 中插入 repair logic。重点是插入 BISR 逻辑。只要内存库文件中存在 RepairAnalysis 包装器,并且该实例的 repair_analysis_present 属性未设置为 “Off”,就会在内存 BIST 逻辑(控制器和接口)的其余部分同时为内存实例生成 BIRA 逻辑。
2025-05-29 17:59:34
1728
原创 add_dft_clock_enables
您指定的时钟使能信号在 DRC 过程中会用到,具体是在您在 DFT 环境中发出“check_design_rules”命令时,只要在发出该命令时“get_dft_specification_requirements - memory_bist”命令返回“auto”。只有在您已采用逻辑实现时钟门控,且该逻辑未使用诸如时钟门控单元之类的单元的情况下(例如在 RTL 模式下执行内存 BIST 插入时),您才需要使用 add_dft_clock_enables 命令。
2025-05-08 11:37:49
485
原创 DftSpecification--EDT
一个包装器,它指定了 process_dft_specification 命令用于构建 EDT IP(设计套件)以及(可选地)将该 IP 插入到设计中的所使用的信息。
2025-04-16 17:52:50
998
原创 create_dft_specification
创建 DftSpecification(设计名称,ID)配置包装器,并返回新创建的包装器对象,以便将其存储在变量中并用于自定义所创建的规格。此命令会在设计中查找需要连接至 IjtagNetwork 的 IJTAG 实例,并自动创建 IjtagNetwork 包装器以实现连接。该命令支持在任何给定模块中进行多次 DFT 插入操作。该工具会排除当前规范中已知已连接至网络的元素。如果在综合期间加载了 ICL 文件并且将 ICL 模块与设计模块进行了匹配,则该命令会自动识别 IJTAG 实例。
2025-04-14 17:30:21
1420
原创 Signoff:Path Based analysis(PBA)
快速的分析不等于最后的分析,GBA模式运行速度快,但是会采取延迟较大的一条路径,这会使另一条路径变得悲观。Path的nworst和max_paths取决于GBA模式报出最大的违例路径,GBA很快,但不能保证报告的路径是违例最大的真实路径。exhaustive基于path,将重新计算的路径与未重新计算的路径做比较,如果未计算的路径违例更大,则重新计算,直到每个endpoint 计算到25k 数量的路径。PBA会从违例最大的路径开始计算,不同的路径会有不同的提升,PBA的违例不会大于GBA模式产生的违例。
2025-04-11 17:46:22
392
原创 DftSpecification SIB
这个 SIB 通过设置 tessent_dft_function 属性为“scan_tested_instrument_host”来标识,并通常被称为 Sib(sti)。如果您使用 add_dft_signals 命令创建 scan_en、ltest_en、memory_bypass_en、ltest_to_mcp_bounding_en、tck_occ_en 和 shift_capture_clock DFT 信号,那么当这些 DFT 信号可用时,Sib(sti) 上相应的输入端口会自动连接到它们。
2025-03-20 15:35:41
1660
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅