Design Compiler
文章平均质量分 78
Design Compiler
最爱干饭了
lulu的学习记录
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
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 阅读 · 0 评论 -
linux下tee命令,导致dc_shell中tab键无法补全命令
双引号中可以加入-f 选项,读入dc 的脚本。使用此命令运行,tab 键能正常使用。原创 2025-10-10 11:23:04 · 209 阅读 · 0 评论 -
DC的一些选项
在工具中,该值默认为true,compile_ultra 命令会优化掉常值的reg,从而达到优化面积的目的。DC会将时序元素替换为常值,一些被替换的时序元素如下图,它们的输入引脚或者复位端为常值,都会被工具识别为常值的时序元素、工具会识别 non scan 模式下的常值 reg。如下图,TestMode 和 ScanEnable 为 0 时的常值reg会被识别,但是,进入扫描链的reg不会被优化。原创 2025-09-22 14:23:07 · 959 阅读 · 0 评论 -
dc_shell (十一)
此外,在第一次重定时之后,无法对驱动g2单元其中一个输入的C1类寄存器进行向前重定时,因为该单元只有一个输入引脚由寄存器驱动。图140展示了,当分解应用于两个同步清零寄存器组成的序列时,左侧寄存器无法进行前移,因为新引入的与门在其第二个端口没有寄存器(右侧寄存器通过反相器进行了前移重定时)。不使用分解(多类重定时)可能会导致寄存器类别冲突,这最终会限制可能的向前或向后重定时移动的数量。因此,如果一组单元包含一个3位寄存器和一个5位寄存器,且这些单元具有相同的功能,那么这组单元就是一个多位组件。原创 2025-09-10 16:52:52 · 682 阅读 · 0 评论 -
dc_shell (十) --Using Floorplan Physical Constraints
当无法使用extract_physical_constraints命令从DEF文件中,或使用read_floorplan命令从Tcl脚本中获取相关信息时,您需要手动定义物理约束。在 Tcl 脚本文件中手动定义物理约束后,请使用 source 命令应用这些约束。手动定义物理约束时,请记住以下几点:• 在应用用户指定的物理约束之前,必须读入设计。• 你必须在第一个地形模式会话期间应用用户指定的物理约束。原创 2025-08-25 15:26:10 · 1117 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
dc_shell (六)
write_milkyway命令将网表和物理数据从内存写入 Milkyway 设计库格式,重新创建层次结构保留信息,并将当前设计的设计数据保存到一个设计文件中。- 如果设计文件已经存在(即,在相同输出目录的设计上运行过 write_milkyway 命令),write_milkyway 命令会创建一个额外的设计文件,并增加版本号。Milkyway 数据库将设计数据存储在 Milkyway 设计库中,将物理库数据存储在 Milkyway 参考库中。不能使用Milkyway格式存储未映射设计的设计数据。原创 2025-08-18 14:37:31 · 784 阅读 · 0 评论 -
dc_shell (五)
例如,在一个多电压或多工艺设计中,工具通常会从 `link_library` 中与单元的电压、温度和工艺相匹配的库中确定单元的时序和功耗。然而,当您使用 `set_link_library_subset` 命令时,设计编译器会限制库单元的选择,这可以解决具有相同电压、温度和工艺的库之间的歧义问题。要指定属于 `link_library` 变量的库子集,请使用带有 `library_list` 参数的 `set_link_library_subset` 命令。链接库子集为要考虑的库提供了额外的筛选条件。原创 2025-08-18 11:54:18 · 762 阅读 · 0 评论 -
dc_shell (四)
为获得最佳效果,请将每个Verilog的always块或VHDL进程限制为单一类型的寄存器推断:锁存器、带异步置位或复位的锁存器、触发器、带异步置位或复位的触发器,或者带同步置位或复位的触发器。如果某个模块同时推断出上升沿触发和下降沿触发的触发器,而目标逻辑库中不包含下降沿触发的触发器,那么设计编译器会在时钟树中为下降沿时钟生成一个反相器。如果将块设置得太小,可能会形成人为的边界,从而限制有效的优化过程。人为划分的不合理的边界,会影响工具的优化:图3-4没有人为划分的边界,工具有更佳的灵活性。原创 2025-08-15 10:15:05 · 820 阅读 · 0 评论 -
dc_shell (三)
如果再执行一个命令或脚本,该命令会等待之前的一个重定向命令完成后再开始新的任务。您还可以在“redirect -bg”命令内部运行“parallel_execute”命令,以并行执行一系列检查和报告命令。如果指定的是不支持的命令,该工具将跳过该命令,并发出类似于以下内容的警告消息。如下所示,把y.tcl的命令交给后台执行,工具继续执行下一条命令。若要报告您通过 “redirect -bg” 命令提交以便在后台运行的所有任务,请使用 “report_background_jobs” 命令。原创 2025-08-14 15:50:42 · 376 阅读 · 0 评论 -
dc_shell (二)
创建规则,设置单元的命名格式,限制以某些字符开头,对某些名字进行映射。综合后,防止未与net 相连接的pin 被忽略。综合时,移除未连接的端口。原创 2025-08-12 15:52:25 · 225 阅读 · 0 评论 -
dc_shell (一)
DC中,改变环境变量的方法:通过下面的命令可以将未连接的net,按照自己需要的方式命名。get_attribute能够获取库中的值,如面积、默认max_transition。remove_attribute能够删除库中的值。通常以//或者/*开始,后面接上关键字synopsys。如果以//synopsys开始的注释,后面接的需要是编译器指令,有其他内容工具会报错。举例如下,第一个图中代码是不可综合的。原创 2025-08-11 11:32:41 · 740 阅读 · 0 评论
分享