要更新的问题:
( enable & (mode == 2'b00) )
和之间的唯一区别( enable & (mode == 2'b00) ) ? 1'b1 : 1'b0
是后者在综合时推断出多路复用器。综合甚至可以优化多路复用器。
RLT 设计师我想要一个多路复用器的原因:
- 多路复用器可能具有更理想的扇出负载驱动器。
- 故意为毛刺过滤和/或逻辑传播延迟平衡注入延迟。
- 对于 IC 设计,它可以使手动 ECO 更容易,将一个输入与另一个网络交换。
使用适当的工具,上述原因在 98% 的情况下都是毫无意义的。一个好的综合和时序分析工具将处理原因 1 和 2。添加一个好的 ECO 工具,第三点就涵盖了。其他 2% 主要用于您期望执行 ECO 的罕见情况,然后强制多路复用器使最终输出位置和负载更可预测。
对于原始问题:
只有当 b
和c
是单个位时,它才是冗余的。如果它们是多位宽度,则无法简化等式。a
如果b
两者c
在相同的位索引上都有 1 值,则为 1。
例如,假设b
和c
为 2 位宽: ( assign a = (b & c) ? 1'b1 : 1'b0
)
b
=2 c
=3,a
将是 1,因为b & c
=2
b
=2 c
=1,a
将是 0,因为b & c
=0