Vivado Synth 8-27错误:自定义Primitive不支持及转Module方法
问题原因
Vivado综合工具仅支持其自带的标准Verilog原语(Primitive),用户自定义的Primitive无法被综合器识别,这就是你遇到[Synth 8-27] - primitive not supported错误的核心原因。行为仿真能正常运行是因为仿真工具(如XSim)支持自定义原语,但综合工具不兼容这类非标准定义。
解决方法
将自定义的VIS_mux Primitive转换为等价的Verilog Module即可解决综合报错,Module是综合工具完全兼容的结构,且能实现相同的逻辑功能。
转换后的Module代码
以下是完全匹配原Primitive真值表逻辑的Module实现:
module VIS_mux ( output wire q, input wire d0, d1, s ); // 完全对应原Primitive的真值表逻辑 assign q = (s == 1'b0) ? d0 : // s=0时输出d0,忽略d1 (s == 1'b1) ? d1 : // s=1时输出d1,忽略d0 (d0 == d1) ? d0 : // s=x且d0=d1时,输出该相同值 1'bx; // s=x且d0≠d1时,输出x(原真值表未定义的情况保持一致) endmodule
逻辑匹配说明
- 当
s=0时,无论d1是什么值,输出d0,和原Primitive真值表前两行一致; - 当
s=1时,无论d0是什么值,输出d1,和原Primitive真值表中间两行一致; - 当
s=x时,仅在d0和d1相等时输出该值,否则输出x,完全匹配原Primitive最后两行的定义。
内容的提问来源于stack exchange,提问作者Pressing_Keys_24_7
相关产品推荐
相关产品推荐

