在同步设计中,我们必须遵循某些设计规则,使程序经过综合工具的编译后,能够综合出效率、可靠度都较高的电路。再次强调几种不良设计风格。
1、多重驱动 虽然多重驱动有时会在测试平台中出现,不过决不应该在RTL程序中出现。在多重驱动下,Net的电平无法预期,有时会造成信号碰撞。
2、正负沿混合设计 这意味着组合逻辑的时序延迟折半,并且不利于后端做CTS(Clock Tree Synthesis)的工作,且对于ATPG(自动测试向量产生)而言有不利的影响。
3、多重时钟驱动 这种设计在综合时是通不过的。
4、不以if-else作为condition的区分
5、case语句里遗漏default的描述
6、混合同步与异步Reset的语句 触发器的异步输入应该只有Reset信号,不应合并其他同步信号。
7、对组合逻辑Reset 能过被Reset的只有存储元件,组合逻辑不应含Reset描述。
8、不使用完整的敏感列表
9、没有初始状态的程序状态机
10、在模块与模块间使用双向信号 双向信号会使用到三态缓冲器,在Chip内部使用三态缓冲器的缺点如下: a.存在着信号碰撞的风险
b.当其皆不被输入或输出使能时,将导致巨大的功耗
c.增加静态时序分析、DFT与布线的困难度 |