DC综合时如何删除冗余逻辑
时间:10-02
整理:3721RD
点击:
请问大侠们, DC综合时如何删除冗余逻辑?
我知道“compile_delete_unloaded_sequential_cells”设为true可以删除冗余寄存器,但是仍然有大块的冗余逻辑,请问大侠们如何解决?
我知道“compile_delete_unloaded_sequential_cells”设为true可以删除冗余寄存器,但是仍然有大块的冗余逻辑,请问大侠们如何解决?
怎么会有冗余逻辑呢?不懂求教
同楼上,同问!
就是有一些寄存器的输出端是悬空,没有用到的,但是DC 却没把这部分寄存器优化掉
那我可否这样理解:既然这些寄存器的输出是没用的,也就是它们的输入是没用的,而这些输入又是来自其他模块的输出,所以这些模块和它的输入也是没用的,这样需要删除的东西很多啊。
或是这样理解:这些寄存器的输出是没用的,但是它们的输入是有用的,这些数据DC默认要用同步逻辑打一拍输出?所以只需要把这部分寄存器优化掉即可。
到底是哪种情况呢?谢谢
std lib有不同的寄存器类型,有只有Q端输出的,也有Q、QN输出均有的类型,照你的意思,你的逻辑只需要有一个输出就行,奇怪为什么综合出带Q/QN的DFF,难道是库的问题?
比较接近第一种情况。例如下面的数据流:... ->A_Reg -> D_Reg
D_Reg 的输出是悬空的,所以 DC 应该将D_REG 以及 A_Reg -> D_Reg之间的组合逻辑删除。
但是 A_Reg不会删除,因为有... ->A_Reg -> B_Reg -> C_Reg -> ..... 这样的有用路径存在。
谢谢指点,那如果没有 A_Reg -> B_Reg这条路径,是不是 A_Reg 也要优化掉?
怎么知道和看到有冗余逻辑的