【发布时间】:2013-12-01 13:48:02
【问题描述】:
SystemVerilog 引入了一些非常有用的结构来改进编码风格。然而,正如我的一位同事经常说的,“你不是在写软件,你是在描述硬件。”考虑到这一点,当最终结果需要合成时,应该避免语言的哪些特征?这个paper 显示了 Synopsys 工具当前可以综合哪些功能,但为了安全起见,我认为应该只使用所有主要供应商都可以综合的功能。此外,哪些结构会在网表中产生奇怪的结果,而在 ECO 中很难遵循?
总而言之:我喜欢紧凑且易于维护的代码,但如果它会导致后端出现问题,则不喜欢。我应该避免什么?
编辑:作为对票数接近的回应,我想尝试更具体一点。这个问题的灵感来自this 答案。我非常喜欢使用 Dave 所说的“糖”来降低代码复杂性,但如果某些合成工具会破坏信号名称并使结果难以处理,我就不会这样做。我正在寻找更多这样的例子。
【问题讨论】: