[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: HELP with Icarus Verilog, 0.7!
It could matter.
A reset is a well behaved logic function like AND or OR, so you could say it as a assignment of a math
function when you ant behavioral code. In your example, you assign reset directly to a wire, so
the only math that wires do, is what you get.
Verilog wires give 0, 1, or X usually, and sometimes they can deal in drive strengths to yield a
weak 1 or weak 0... and I've forgotten if Z state is a built in, and can't help you with the
High Z tristate bus driver example.
If there is no Z state primitive for verilog wires/registers/busses, you could make a
not-intended-to-be-synthesized test module that models the tristate driver and yet drives more than
one wire to encode the state of the real tristate wire. All such tristate non-synthesizable
driver and receiver models would have to be stripped out and replaced with ports that
go to "analog-modeling" zone. I bet there's a way to make calls to a module in icarus verilog
that contains a new kind of verilog primitive written in c. You could make a tristate
driver, receiver, and wire to extend verilog if there is no primitive for that.
When you write verilog, you need to go into
a non-procedural-programming mode. Whenever something is mutually exclusive like the
states a bus/register/wire can be in, you need to be certain you are telling it only one
state to be in at a time, and the best way to do this is to put all the choices in a case
statement, or if that's not possible, create some kind of assertion checker that goes
through that same logical list of mutually exclusive conditions so it will find that if you
made that mistake. Otherwise that kind of mistake can be hard to locate later.
Sure, you'll see X's, but the source of them will be upstream...maybe far upstream...
John
On Tue, 2004-04-06 at 13:57, Samuel A. Falvo II wrote:
> I re-read this four times, and I can't make out what you are saying.
What do you mean by "same destination register?" And why would it
matter if they appeared in multiple always-blocks? I have one always
block for the reset, and one for the register writes. Is this what
you're referring to, possible contention of writing to the registers
while reseting?
--
John Griessen Cibolo Design Austin Texas, linux counter #249315