跨模块引用仅访问输入寄存器的纯函数是否可综合?
跨模块引用纯输入寄存器函数的可综合性问题
结论
这种仅访问输入寄存器的纯函数,通过跨模块实例化后调用的方式,是具备可综合性的。
示例代码(中文注释)
定义函数的模块
// 内含函数的模块 module functions; function fn1; input reg i; fn1 = i; endfunction endmodule
调用函数的消费模块(可综合)
// 具备可综合性的调用模块 vvv module consumer(input i, output o); functions fns(); assign o = fns.fn1(i); endmodule
原因说明
- 该函数属于纯函数:只依赖输入参数生成输出,没有内部状态或额外副作用,完全符合综合工具对组合逻辑的判定标准。
- 跨模块实例化后调用的本质,是把函数的逻辑直接内联到消费模块中,综合工具可以轻松识别并转化为对应的硬件电路(比如这个例子里就是简单的信号直通)。
内容的提问来源于stack exchange,提问作者modanashar
相关产品推荐
相关产品推荐

