>> how are functions supposed to behave ?
Functions synthesize to combinational logic.
And yes, you could potentially get a functional mismatch between the RTL
model and the synthesized netlist as shown from your simulation results.
- bhasker
----- Begin Included Message -----
Reply-To: <muzok@pacbell.net>
From: "Muzaffer Kal" <muzok@pacbell.net>
Date: Tue, 24 Nov 1998 10:26:35 -0800
MIME-Version: 1.0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2377.0
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4
Sender: owner-vlog-synth@eda.org
Precedence: bulk
hi,
how are functions supposed to behave ? The specific question is what is the
value of a function when the function name is not assigned for a certain
invocation ? My simulator remembers the previous value (as a latch) but DC
creates a fully combinational implementation. An example is the following
module
module foo(in, out);
input in;
output out;
assign out = bar(in);
function bar;
input barin;
if (barin)
bar = 1;
endfunction
endmodule
what happens when in changes 0->1->0 ? I get 1'bx->1'b1->1'b1 so function
bar remembers the last value when bar is not assigned. I have been told that
other simulators do the same but this requires a latch, doesn't it ? I have
seen this problem with an 1'bX input which propogated to the output with DC
but not with simulation. I think the best way to solve this is to require
that the function internal register should get initialized to unknown for
every invocation. 1364 doesn't say how functions are supposed to behave.
thanks
----- End Included Message -----