是否可以合成使用:
case
语句中的case
语句case
语句中的if
语句if
语句中的case
语句
我可以毫无错误地编译它,但我仍然不确定它是否会弄乱硬件结构并使其变得复杂。
我这样做的原因:
我有几个状态(状态机),为了让它们遍历所有状态,我使用案例语句。但是我还需要在其中一些状态中设置一些条件(case
s 和if
s),其中一些是相当大的。
是否可以合成使用:
case
语句中的case
语句case
语句中的if
语句if
语句中的case
语句我可以毫无错误地编译它,但我仍然不确定它是否会弄乱硬件结构并使其变得复杂。
我这样做的原因:
我有几个状态(状态机),为了让它们遍历所有状态,我使用案例语句。但是我还需要在其中一些状态中设置一些条件(case
s 和if
s),其中一些是相当大的。
IEEE Std 1076-2008(LRM)的附件 J 参考了 IEEE Std 1076.6-2004,IEEE VHDL 寄存器传输级(RTL)综合标准,其中支持 case 语句和 case 语句替代(实际选择和关联的序列statements) 可以指定顺序语句,包括 case 语句。
所以答案是肯定的,通常情况下,您应该期望在 case 语句替代方案中能够合成 case 语句。特定供应商是否完全支持 1076.6 是一个单独的问题。
合成器没有理由不处理嵌套if
的 s 和case
s。事实上,我过去已经做过很多次了。
我想合成器的算法在涉及逻辑实现时将 aif
视为语句的 2 分支版本case
,因此决策函数的类型不是问题。嵌套它们只会导致它为每个决策创建一组逻辑,在嵌套决策的情况下是级联的。
如果您发现它不起作用,请提交错误报告!
当然,如果您有非常严格的时序约束和许多嵌套条件,您可能会发现合成器产生的逻辑虽然正确,但速度不足以满足您的时钟周期目标。在这种情况下,除了重构您的逻辑以减少决策的深度之外,别无他法。