- 博客(37)
- 收藏
- 关注
原创 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
432
原创 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
754
原创 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
607
原创 dc_shell (六)
write_milkyway命令将网表和物理数据从内存写入 Milkyway 设计库格式,重新创建层次结构保留信息,并将当前设计的设计数据保存到一个设计文件中。- 如果设计文件已经存在(即,在相同输出目录的设计上运行过 write_milkyway 命令),write_milkyway 命令会创建一个额外的设计文件,并增加版本号。Milkyway 数据库将设计数据存储在 Milkyway 设计库中,将物理库数据存储在 Milkyway 参考库中。不能使用Milkyway格式存储未映射设计的设计数据。
2025-08-18 14:37:31
673
原创 dc_shell (五)
例如,在一个多电压或多工艺设计中,工具通常会从 `link_library` 中与单元的电压、温度和工艺相匹配的库中确定单元的时序和功耗。然而,当您使用 `set_link_library_subset` 命令时,设计编译器会限制库单元的选择,这可以解决具有相同电压、温度和工艺的库之间的歧义问题。要指定属于 `link_library` 变量的库子集,请使用带有 `library_list` 参数的 `set_link_library_subset` 命令。链接库子集为要考虑的库提供了额外的筛选条件。
2025-08-18 11:54:18
660
原创 dc_shell (四)
为获得最佳效果,请将每个Verilog的always块或VHDL进程限制为单一类型的寄存器推断:锁存器、带异步置位或复位的锁存器、触发器、带异步置位或复位的触发器,或者带同步置位或复位的触发器。如果某个模块同时推断出上升沿触发和下降沿触发的触发器,而目标逻辑库中不包含下降沿触发的触发器,那么设计编译器会在时钟树中为下降沿时钟生成一个反相器。如果将块设置得太小,可能会形成人为的边界,从而限制有效的优化过程。人为划分的不合理的边界,会影响工具的优化:图3-4没有人为划分的边界,工具有更佳的灵活性。
2025-08-15 10:15:05
742
原创 dc_shell (三)
如果再执行一个命令或脚本,该命令会等待之前的一个重定向命令完成后再开始新的任务。您还可以在“redirect -bg”命令内部运行“parallel_execute”命令,以并行执行一系列检查和报告命令。如果指定的是不支持的命令,该工具将跳过该命令,并发出类似于以下内容的警告消息。如下所示,把y.tcl的命令交给后台执行,工具继续执行下一条命令。若要报告您通过 “redirect -bg” 命令提交以便在后台运行的所有任务,请使用 “report_background_jobs” 命令。
2025-08-14 15:50:42
250
原创 dc_shell (二)
创建规则,设置单元的命名格式,限制以某些字符开头,对某些名字进行映射。综合后,防止未与net 相连接的pin 被忽略。综合时,移除未连接的端口。
2025-08-12 15:52:25
185
原创 dc_shell (一)
DC中,改变环境变量的方法:通过下面的命令可以将未连接的net,按照自己需要的方式命名。get_attribute能够获取库中的值,如面积、默认max_transition。remove_attribute能够删除库中的值。通常以//或者/*开始,后面接上关键字synopsys。如果以//synopsys开始的注释,后面接的需要是编译器指令,有其他内容工具会报错。举例如下,第一个图中代码是不可综合的。
2025-08-11 11:32:41
559
原创 share bus (一)
本章节描述了为使用Shared Bus interfaces的内存生成、插入及验证BIST硬件所需的概念、流程、架构和配置文件。Shared Bus interface为多个内存提供了通用访问端口,该架构在模块内部添加内存时具备可扩展性,同时为memory BIST访问保留了模块边界的固定接口尺寸。Shared Bus interfaces的典型应用场景是测试处理器核心模块内部的内存。
2025-07-30 14:33:58
1006
原创 Memory Repair (八)
本文介绍了一种快速BISR加载技术及其实现方案,该技术通过硬件修改优化存储器修复流程。主要内容包括: 快速BISR加载架构通过并行总线直接连接BISR寄存器与fusebox接口,相比传统串行加载显著提升上电速度。该方案要求fusebox具备足够存储容量且支持并行修复接口。 实现方法包含多路复用器设计,支持并行/串行修复模式切换。系统在DFT插入阶段自动进行连接验证,并保留两种修复路径:并行总线用于快速初始化,串行接口用于常规测试。 文章详细说明了子模块集成方案、fusebox接口配置要求,以及模式控制属性设
2025-06-20 10:40:41
886
原创 Memory Repair (七)
摘要:RepairSharing技术通过在多个内存块间共享BIRA和BISR硬件,有效降低了内存修复对芯片面积和上电时间的影响。该技术适用于行/列/混合修复类型的内存,实现条件包括:修复类型一致、冗余资源尺寸相同、物理地址映射兼容等。应用时需权衡面积优化与潜在良率损失(组内任一内存故障将消耗整个组的备用资源)。实施流程包括设计细化后启用修复共享、创建DFT规范、配置修复组等步骤。BISR寄存器位置由修复组内存储器的公共祖先模块决定,组内共享的BISR寄存器长度在注释文件中统一标注。该技术特别适用于含大量内存
2025-06-18 17:43:15
1060
原创 Memory Repair (六)
可以采用增量修复(incremental repair)来提高制造良率或避免昂贵的现场系统维修。增量修复分为两种形式:软增量修复(soft incremental repair)和硬增量修复(hard incremental repair)。由于允许将BISR寄存器内容传输至BIRA寄存器的连接始终存在并支持增量修复,因此无需特别指定启用软增量修复的选项。
2025-06-18 11:03:20
808
原创 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
234
原创 Memory Repair (五)
摘要:BISR控制器采用基于零计数和修复数据的压缩算法存储修复信息,通过Opcode标识字类型。fusebox组织方式包括单链和多电源域组处理,支持硬增量修复和指针复用优化。CompressBisrChain脚本可用于外部编程场景,通过复用指针减少fuse用量,但会增加制造流程复杂度。该脚本读取仿真日志和配置文件,生成测试步骤文件用于fusebox编程、读取和BISR链操作。制造流程包含预修复测试、修复判断、BISR链访问和fusebox编程等步骤,需配合TAP访问模式实现自动化操作。
2025-06-12 17:24:30
614
原创 Memory Repair (四)
摘要:本文介绍了Tessent Shell Memory BIST中BISR链的完整测试方法。标准BISR实现仅测试修复连接的必需部分,但高可靠性系统需要全面测试所有连接,包括BIRA寄存器间的数据和控制信号连接。通过设置include_repair_chain_test属性可启用测试,算法采用棋盘格模式检测固定和短路故障。测试分为通用步骤(适用于所有存储器)和附加步骤(针对串行接口和共享总线存储器),涵盖移位路径、复位、使能信号及数据传输验证。层次化验证方法优化了signoff阶段的效率,未知值会被自动屏
2025-06-11 11:59:45
830
原创 Memory Repair (二)
本节介绍如何在 circuit 中插入 repair logic。重点是插入 BISR 逻辑。只要内存库文件中存在 RepairAnalysis 包装器,并且该实例的 repair_analysis_present 属性未设置为 “Off”,就会在内存 BIST 逻辑(控制器和接口)的其余部分同时为内存实例生成 BIRA 逻辑。
2025-05-29 17:59:34
1283
原创 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
425
原创 DftSpecification--EDT
一个包装器,它指定了 process_dft_specification 命令用于构建 EDT IP(设计套件)以及(可选地)将该 IP 插入到设计中的所使用的信息。
2025-04-16 17:52:50
724
原创 create_dft_specification
创建 DftSpecification(设计名称,ID)配置包装器,并返回新创建的包装器对象,以便将其存储在变量中并用于自定义所创建的规格。此命令会在设计中查找需要连接至 IjtagNetwork 的 IJTAG 实例,并自动创建 IjtagNetwork 包装器以实现连接。该命令支持在任何给定模块中进行多次 DFT 插入操作。该工具会排除当前规范中已知已连接至网络的元素。如果在综合期间加载了 ICL 文件并且将 ICL 模块与设计模块进行了匹配,则该命令会自动识别 IJTAG 实例。
2025-04-14 17:30:21
1103
原创 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
208
原创 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
1234
原创 PT——Object Attributes
get_attribute、report_attribute、set_user_attribute 和 remove_user_attribute 命令接受对象规范,该规范可以是集合或集合列表。get_attribute 命令的对象规范仅限于包含一个对象的集合。属性是与设计中的对象关联的字符串或值,其中包含有关该对象的一些信息。例如,附加到 cell 的 number_of_pins 属性表示 cell 中的引脚数。如下例所示:通过get_attribute可以抓出自己想要的参数。
2024-11-12 17:15:53
490
原创 PrimeTime 图形化界面
通过View > Properties可以所选择对象的属性,如下图所示,通过basic后面的三个横杠,可以控制显示的属性。单元格是彩色的,以直观地显示时钟之间的关系。使用clock analyzer 可以分析时钟域以及时钟和时钟之间的关系。上表显示了背景单元格模式和颜色,它们表示发射和捕获之间的同步或异步关系。使用get_timing_path可以产生一组时钟路径的集合。通过show path可以查看集合中的路径和直方图。通过电路选项,可以查看对应时序路径的电路。P字母意味着部分约束的路径。
2024-11-01 14:16:06
942
原创 python学习记录--列表2
破解方案如下:每位数字都要加上3再除以9的余数代替该位数字,然后将第1位和第3位数字交换,第2位和第4位数字交换。牛牛和牛妹一起玩密码游戏,牛牛作为发送方会发送一个4位数的整数给牛妹,牛妹接收后将对密码进行破解。关于sort与sorted的区别,即sort会改变原本列表,而sorted不会改变原本的列表。使用insert()可以向任何位置插入字符,但是需注意insert()无返回值。可以通过remove()或者append()像列表中添加元素,需要注意的是。二维列表:列表里面还嵌套了列表。
2024-10-30 09:30:41
551
原创 python学习记录--列表1
对列表中元素进行删除可以采用del命令,也可以使用pop命令删除元素。使用del删除的元素会永久消失,而使用pop弹出的元素可以接着使用。通过remove()可以根据值来删除元素,不需要知道索引,remove()默认删除匹配的第一个值,如果需要删除多个,可以使用循环。通过split()来转化为列表,但此时列表中的元素为str类型,通过int()能够直接将列表中的str转化为int。可以通过append()向结尾增加元素,也可以通过insert()先指定索引位置增加元素。通过索引能够访问列表中的元素。
2024-08-31 20:35:58
1023
原创 python学习记录--字符串
函数lower()可以将所有字母变为小写,upper()可以将所有字母进行大写,title()会将每个单词的首字母进行大写,capitalize()可以只大写一句话中的首字母。step:指的是从 start 索引处的字符开始,每 step 个距离获取一个字符,直至 end 索引出的字符。start:表示要截取的第一个字符所在的索引(截取时包含该字符)。通过rstrip()、lstrip()、strip()可以分别剔除最后、最前和两端的空白。end:表示要截取的最后一个字符所在的索引(截取时不包含该字符)。
2024-08-28 21:32:59
626
原创 python学习记录--类型转换
开始尝试直接对input的值进行int(),但是发现会有语法错误。回想起来input的输出值为string类型的,因此需要先转化为float类型,转化为float之后便能够使用int。由于python不能直接将包含小数点的字符串转化为整数,而原始数据的格式经常是不一致的,故类型转化时造成ValueError异常。通过float可以将整数转换为小数,通过调整冒号后面的.2f可以得到想要保留的小数位数。以下答案来自牛客网讨论区,通过int函数实现进制的转换。需要注意的是,这样的结果并不是四舍五入的。
2024-08-26 21:03:19
448
原创 python学习记录---输入与输出2
需要注意的是,input返回的类型为string,因此需要转换为float。可以采用%,f_string,和format来格式化输出。采用round函数也可以保留小数。关于保留小数可以参考以下文章。将输入的浮点数保留两位输出。
2024-08-21 21:55:54
751
原创 python 学习记录--输入与输出1
input的使用方法,以及输出变量类型。使用int可以将str类型转化为int类型。linux下的压缩和解压命令tar -zcvf。bzip2的使用方法。
2024-08-20 22:17:15
281
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人