-resource_sharing的目的是对算术运算实现资源共享,它有三个值auto、off和on。默认值为auto,此时会根据设计时序需求确定是否资源共享。这里需要强调的是它只对算术运算即加法(减法可认为是加法运算)和乘法运算有效。
一个典型案例如下图所示代码(VHDL和Verilog代码等效,选择自己喜欢的阅读即可)。这是一个通过控制信号实现加减法运算的电路。当op为1时,执行opa+opb;否则,执行opa-opc。
-resource_sharing为off和on时对应的电路如下图所示。很明显,-resource_sharing为on时少用了一个加法器,也就是减少了LUT和Carry Chain等资源。这可进一步在资源利用率中得以验证。
-resource_sharing也可应用于乘法运算,如下图所示代码。
当-resource_sharing为auto时,意味着Vivado会根据时序要求决定是否采取资源共享。
结论:
-默认情形下,将-resource_sharing设置为auto即可。