Thanks. This answers my second part of the question. I still want to
understand what is wrong with illegal I/O port 'data_bus'. I have
reduced my demo to
module CPU (output
[7:0] data_bus);
endmodule
module SIMULATE_CPU;
reg [7:0] data_bus;
CPU cpu (data_bus ); // illegal port connection
endmodule
but still getting the error.