Altera_Forum
Honored Contributor
18 years agoquartus 7.1 SP1 produces WRONG rtl !
Can somebody verify ? This thing is giving me nightmares ....
module wrong ( inout cs,
output selected,
input enable,
input override,
input something );
always_comb begin
if (override) begin // if 'override'
cs = something; // drive the CS with 'something'
selected = 1'b0; // 'selected' is zero
end
else begin // if not 'override' :
cs = 1'bz; // tristate CS
selected = (cs & enable ); // incoming CS signal AND 'enable'
end
end
endmodule
This produces completely wrong RTL. The else clause does not work. It should logically and the INCOMING value on the CS pin with the 'enable' signal. Look at the RTL output. the bidirectional pin has no input path !!!! how do i fix this ? I have a very large block that switches a whole system around using tristating mechanism there are a bunch of these constructions in there. What's worse : Some work some don't... and they are cut copy and pastes of the above mechanism ...