在下面的 Verilog 代码中,我想将输出分配给两个模块,即two_input_checker 和 Three_input_checker。但是当我如下所示直接分配它们时,它给出了错误。
module logical_function_check (
IN1, IN2, IN3, IN4, IN5, IN6,
IN8, IN9, IN10, IN11, IN12, IN13,
OP1, OP2, OP3, OP4, OP5, OP6,
OP8, OP9, OP10, OP11, OP12, OP13,
pass1, pass2, pass3, pass4, pass5, pass6,
fail1, fail2, fail3, fail4, fail5, fail6,
pass, fail,
clk
);
input OP1, OP2, OP3, OP4, OP5, OP6, OP8, OP9, OP10, OP11, OP12, OP13;
output IN1, IN2, IN3, IN4, IN5, IN6, IN8, IN9, IN10, IN11, IN12, IN13;
output pass1, pass2, pass3, pass4, pass5, pass6, fail1, fail2, fail3, fail4, fail5, fail6;
output pass, fail;
input clk;
two_input_checker two_input_checker_inst(
.A1(IN1),
.A2(IN4),
.A3(IN10),
.A4(IN13),
.B1(IN2),
.B2(IN5),
.B3(IN9),
.B4(IN12),
.op1(OP3),
.op2(OP6),
.op3(OP8),
.op4(OP11),
.pass1(pass1),
.pass2(pass2),
.pass3(pass3),
.pass4(pass4),
.fail1(fail1),
.fail2(fail2),
.fail3(fail3),
.fail4(fail4),
.pass(pass),
.fail(fail),
.clk(clk),
.enable(1'b1)
);
three_input_checker three_input_checker_inst (
.A1(IN1),
.A2(IN3),
.A3(IN11),
.B1(IN2),
.B2(IN4),
.B3(IN10),
.C1(IN13),
.C2(IN5),
.C3(IN9),
.op1(OP12),
.op2(OP6),
.op3(OP8),
.pass1(pass1),
.pass2(pass2),
.pass3(pass3),
.fail1(fail1),
.fail2(fail2),
.fail3(fail3),
.pass(pass),
.fail(fail),
.clk(clk),
.enable(1'b0)
);
endmodule
错误如下所示。
如何修复该错误并分配输出?或者还有其他方法可以实现吗?
我在这里假设您将一个信号分配给两个输出端口。您需要对两个模块的输出使用不同的信号,然后对这些信号进行“或”操作。信号不能由多个驱动器驱动。信号传递 1 的示例:
pass1 = two_input_checker_inst_pass1 | three_input_checker_inst _pass1;