不包含任何延迟分配的函数是可合成的,因此所有合成的函数本质上都是组合的。如果我们使用递归调用,函数还会保持可合成性吗?
以阶乘函数(自动)为例。 此功能存在于状态机中。每次激活状态时,函数都会将值返回到寄存器。
这个函数会合成吗?
是的,递归函数是可以合成的,但前提是递归的深度可以在编译时确定。这通常意味着函数的每个顶级调用的参数都是常量。像任何其他循环一样,合成工具需要有固定数量的迭代,才能确切地知道需要分配多少硬件逻辑。