Re: Metastability?
When you have two different clocks with no phase or frequency relationship, the only way I can think of to avoid some form of metastability hardening is to ensure by design that a control signal generated in one clock domain won't be sampled by the other clock domain until it is guaranteed to be stable.
1) The signal being sampled is basically DC. For example, a configuration bit from one of your software registers that was set at setup of the device and rarely changes. This bit could be sampled by the receiving clock domain directly. Be careful though, as those pesky software designers might decide to change their mind and flip those register bits more frequently!
2) A defined bus protocol where signals are guaranteed to be stable for a time period before another controlling signal is present. For example, a Motorola style processor bus where the address is guaranteed to be present a clock or two before the Data Strobe. Then you would have to synchronize the Data Strobe but may not have to synchronize all the address bits.
Now, for datapaths, Rate Adapt FIFOs can be used to store data in one clock domain and read it out in the other clock domain. The FIFO's handshaking and other control signals would still have to be metastability hardened, but the wider datapath would not.
In general, I'm not aware of a way to do away with synchronizers altogether in a multiple clock domain scenario (unless it is a scenario like banjo described), but you do not necessarily have to synchronize every signal crossing a clock domain if you are careful.
I apologize if this is old news to you!
r.b.