Re: tri-state vs muxes
The only situation where I can think of this would really matter is when you have a large databus. See example below:
---------- 64
| |<--/----
64 | mux | 64
<---/---- | |<--/----
| | 64
| |<--/----
| | 64
| |<--/-----
----------
A mux is used to select one of the 4 input data. This would require a large mux. When synthesize, this large mux would probably be synthesize into several levels of smaller muxes, and as a result, increases the delay of the data and make it harder to meet timing.
If you change the above design to use tri-state buffers, like below, then it's easier to meet timing.
64
<-----/---tri-state-----
64
64 <-----/---tri-state-----
<----/----- 64
<-----/---tri-state-----
64
<-----/---tri-state-----
- Hung