Forum Discussion
Hi Chee,
The error message indicates that the output ports "outA", "outB", and "outC" of the "ordering1" module must be connected to a "structural net expression", which means that they must be connected to a wire or register signal. But, your current implementation, the "outA", "outB", and "outC" ports are connected directly to the corresponding output ports of the "block1_inst", "block2_inst", and "block3_inst" instances, which are register signals.
To fix this error, you should create new wire or register signals to connect to the "outA", "outB", and "outC" ports of the "ordering1" module. You can do this by declaring new wires or registers using the "wire" or "reg" keywords and connecting these signals to the "outA", "outB", and "outC" ports of the "ordering1" module.
Example:
module ordering1 (clk, inA, outA, outB, outC);
input clk, inA;
output reg outA, outB, outC; // changed from reg to wire or output
wire block1_outA, block1_outB, block1_outC;
wire block2_outA, block2_outB, block2_outC;
wire block3_outA, block3_outB, block3_outC;
block1 block1_inst (.clk(clk), .inA(inA), .outA(block1_outA), .outB(block1_outB), .outC(block1_outC));
block2 block2_inst (.clk(clk), .inA(inA), .outA(block2_outA), .outB(block2_outB), .outC(block2_outC));
block3 block3_inst (.clk(clk), .inA(inA), .outA(block3_outA), .outB(block3_outB), .outC(block3_outC));
assign outA = block1_outA;
assign outB = block2_outB;
assign outC = block3_outC;
endmodule
This should resolve the issue.
p/s: If any answer from the community or Intel Support are helpful, please feel free mark and solution, give kudos and rate 5/5 survey.