DC ungroup和set_ungroup
时间: 2023-08-19 17:13:23 浏览: 176
在Design Compiler中,可以使用DC ungroup和set_ungroup命令来控制解分组的设计。通过使用set_ungroup命令,可以显式地为指定的单元或引用设计设置ungroup属性,从而在优化期间解分组。如果为一个设计设置了这个属性,所有引用这个设计的引用都会解分组。例如,要在优化期间解分组单元U1,可以输入以下命令:set_ungroup U1。
此外,Design Compiler还支持时序路径分组,即path groups。默认情况下,每个时钟域对应一个path group。在单时钟情况下,划分为4个path group:InputToReg、RegToReg、RegToOutput、InputToOutput。这些path group可以帮助进行时序约束的管理和优化。
在自动解分组过程中,可以使用report_auto_ungroup命令来获取关于解分组层次的报告。这个报告会给出实例名、单元名和每个解分组层次的实例数量。同时,解分组会影响层次化管脚上的时序约束。具体来说,层次化管脚会在单元被解分组时被移除。根据解分组的时机,Design Compiler会以不同的方式处理层次化管脚上的时序约束。
总结起来,DC ungroup和set_ungroup命令可以用来控制解分组的设计,而时序路径分组可以帮助进行时序约束的管理。解分组会影响层次化管脚上的时序约束,需要根据具体情况来处理。
相关问题
这段代码什么意思:if {[sizeof_collection [get_designs -quiet *dwsms*]] != 0 } { set_boundary_optimization [get_designs -quiet -h *dwsms*] false set_ungroup [get_designs -quiet -h *dwsms*] false }
这段代码是Tcl脚本语言的代码,它的作用是检查名字中包含"dwsms"的设计是否存在,如果存在,则关闭边界优化和取消分组。具体来说,它使用了Tcl内置的命令"get_designs"来获取所有名字中包含"dwsms"的设计,然后使用"sizeof_collection"命令来检查获取到的设计数量是否为0。如果设计数量不为0,则使用"set_boundary_optimization"命令关闭边界优化,并使用"set_ungroup"命令取消分组。
解释以下命令:ungroup -start_level 4 -all set_cost_priority -delay set_critical_range 0.2 $Design remove_unconnected_ports [get_cells -hier * ] -blast group_path -name in2reg -from [all_inputs] -critical_range 1000.0 group_path -name reg2out -to [all_outputs] -critical_range 1000.0 group_path -name in2out -from [all_inputs] -to [all_outputs] -critical_range 1000.0 group_path -name reg2reg -from [all_registers] -to [all_registers] -critical_range 1000.0
这个命令是一个Tcl脚本命令,用于进行物理综合前的设计优化。具体解释如下:
- `ungroup -start_level 4 -all`: 将设计中的组合逻辑和时序逻辑分开,此处 `-start_level 4` 表示从第四层开始分组,`-all` 表示分组所有的单元。
- `set_cost_priority -delay`: 设置优化目标为减小时序路径上的延迟。
- `set_critical_range 0.2 $Design`: 设置时序约束的最小保留时间为0.2ns。
- `remove_unconnected_ports [get_cells -hier * ]`: 删除所有没有连接的端口,`[get_cells -hier * ]` 表示获取所有单元。
- `-blast group_path -name in2reg -from [all_inputs] -critical_range 1000.0`: 将所有输入到寄存器的路径组合在一起,命名为 `in2reg`,并设置时序约束为1000.0ns。
- `-blast group_path -name reg2out -to [all_outputs] -critical_range 1000.0`: 将所有从寄存器到输出的路径组合在一起,命名为 `reg2out`,并设置时序约束为1000.0ns。
- `-blast group_path -name in2out -from [all_inputs] -to [all_outputs] -critical_range 1000.0`: 将所有从输入到输出的路径组合在一起,命名为 `in2out`,并设置时序约束为1000.0ns。
- `-blast group_path -name reg2reg -from [all_registers] -to [all_registers] -critical_range 1000.0`: 将所有寄存器之间的路径组合在一起,命名为 `reg2reg`,并设置时序约束为1000.0ns。
这些命令将通过路径组合和时序约束的设置来优化设计,以满足时序要求并提高设计的性能。