[...]
It depends on how the code is written. If the appropriate
libraries are used the code can be very portable (just like C).
From my experience with Cypress's Warp and Altera's Quartus, there is no
way to make a design portable.
In Warp X <= 'Z'; makes a tri-state. In Quartus, it makes an error.
This is a legal VHDL statement
Yes I thought it was.
It may be legal, but not real. If you've assigned a 'Z' to a
signal that already has another value, *you're* wrong, and the
compiler is telling you this. Anytime you assign a 'Z' to a
signal, it cannot ever have another state, You've told the
compiler this.
Its that word "should" that causes me so much trouble. It should compile
to a tri-state output since the X in question is a pin of the chip.
As long as you want that pint to be forever a 'Z' there should be
no problem. I doubt that's what you want though.
There's that dang word "should" again.
Look inward with that "should". You're the one causing the
compiler to go nutzo, me thinks.
Not in my case because the tri-state in question was a pin of the chip.
Let me guess, you're a programmer and don't understand
concurrancy. You're defining a port as a 'Z', but something else
is defining it otherwise. Typical programmer mentality.
The VHDL can't reach out and change the micro's data bus into 2 busses
(one for each direction). As a result I really needed the tri-state.
I told you how to do this. Stop thinking like a dumb programmer.
VHDL is *concurrent*, not linear. Dumb programmers think linear.
;-)
Not really. I don't even think the Cypress has the TRI() component in it.
This is Altera's answer to doing a tristate connection.
Exactly. You're dead-set in your programmer mentality. HDLs are
different because hardware is *parallel*, not sequential, as you
seem to think.
[...]
If the logic is described (rather than using
instantiated library elements) then the compiler will fit the
design to the libraries available to it.
I am doing it all in logic. The components I'm using are all defined as
chunks of logic.
Give us an example. My bet is that you aren't doing what you
think you are.
BTW: You should have said "the compiler *should* fit". Altera admits to
the bug involving the tri-state.
Whatever. If Altera has admitted their issue, so be it. I still
think you're thinking too sequentially. Hardware doesn't act
sequentially, so the description languages don't either.
(evidence; assigning 'Z' to a signal will forever make it a 'Z',
though that's likely not what you wanted).