attached mail follows:
Hi Matt,
please give more detailes
what happen at timestep 0? At timestep 1? At the rest of the timesteps
(if any)
Are there more than one evaluation in a single time step?
BTW doesn't the clk flip between x and z ?
thanks
Doron
Maidment, Matthew R wrote:
>Here's a more interesting example.
>
>module bar();
>
>bit clk;
>bit m,n,o;
>bit ff1,ff2;
>bit i_ff1,i_ff2;
>always_comb begin
> assert(m==ff1);
> case({m,ff1})
> 2'b00: o = 1'b0;
> 2'b11: o = 1'b1;
> endcase
> $display("%t m:%b ff1:%b",$time,m,ff1);
>end
>
>bit tmp;
>always_comb
> tmp = 1;
>always_comb
> n = ff2;
>always_comb
> m = n && tmp;
>always_ff@(posedge clk)
> ff1 <= i_ff1;
>always_ff@(posedge clk)
> ff2 <= i_ff2;
>
>initial
> forever begin
> #1;
> clk = ~clk;
> end
>initial begin
>@(clk) begin
> i_ff1 <=1;
> i_ff2 <=1;
>end
>#1000;
>$finish;
>end
>endmodule
>
>This assertion fires on 2 simulators that I tried.
>The order of evaluation is:
>
>{m,ff1} == 01 //Fire
>{m,ff1} == 11 //Does not fire
>
>This assertion is an explicit form of the implicit unique case
>check. I believe unique and priority checks should also be
>addressed by your work.
>
>
>Matt
>--
>Matt Maidment
>mmaidmen@ichips.intel.com
>
>
>
>
>>-----Original Message-----
>>From: owner-sv-ac@server.eda.org
>>[mailto:owner-sv-ac@server.eda.org] On Behalf Of Doron Bustan
>>Sent: Wednesday, November 08, 2006 11:20 AM
>>Cc: sv-ac@server.eda.org
>>Subject: Re: [sv-ac] blocking assignments
>>
>>Hi Dmitry,
>>
>>I guess that illustrates the problem, but it does not
>>make sens, does it?
>>
>>we need a reasonable example that is deterministic,
>>and in which the assertion is being evaluated at least
>>twice without leaving the active region.
>>
>>Doron
>>
>>Korchemny, Dmitry wrote:
>>
>>
>>
>>>Hi Doron,
>>>
>>>You are right. @(posedge clk) is a typo, should be @(*) (or
>>>
>>>
>>@(b), but it
>>
>>
>>>is not synthesizable).
>>>
>>>always @* begin
>>> if (cond) begin
>>> a = b;
>>> assert (a == c) ;
>>> b = c;
>>> end
>>>end
>>>
>>>Is it correct now?
>>>
>>>I'll try to get a real life example in addition to this
>>>
>>>
>>artificial one.
>>
>>
>>>I think, we should define simulation semantics that would be
>>>
>>>
>>consistent
>>
>>
>>>with FV in the synthesizable case. Two candidates are
>>>- taking the latest signal value from the active region before the
>>>first entry to the observed region, and
>>>- "sampling" the signal values at the first entry to the observed
>>>region. As for non-synthesizable or "difficult" for synthesis example,
>>>it is important only that the algorithm is well defined: for "exotic"
>>>cases it is difficult to invent something better than immediate
>>>assertions.
>>>
>>>Thanks,
>>>Dmitry
>>>
>>>-----Original Message-----
>>>From: owner-sv-ac@server.eda.org
>>>
>>>
>>[mailto:owner-sv-ac@server.eda.org] On
>>
>>
>>>Behalf Of Doron Bustan
>>>Sent: Wednesday, November 08, 2006 12:26 AM
>>>To: sv-ac@server.eda.org
>>>Subject: [sv-ac] blocking assignments
>>>
>>>Just to make sure that I don't miss something important...
>>>
>>>In the example:
>>>
>>>always @(posedge clk) begin
>>> if (cond) begin
>>> a = b;
>>> assert (a == c) ;
>>> b = c;
>>> end
>>>end
>>>
>>>the assertion is being evaluated at most once in every "clk" cycle.
>>>
>>>
>>>I think that we need more than one always block to cause the assertion
>>>to
>>>execute more than once, something like:
>>>
>>>always @(b) begin
>>> if (cond) begin
>>> a = b;
>>> assert (a == c) ;
>>> end
>>>end
>>>
>>>always @(c) begin
>>> b = c;
>>>end
>>>
>>>this will cause the assert to possibly fire twice at the same
>>>
>>>
>>time step
>>
>>
>>>without
>>>exiting the active region. We should also consider the following case:
>>>
>>>
>>>always @(b) begin
>>> if (cond) begin
>>> a = b;
>>> assert (a == c) ;
>>> end
>>>end
>>>
>>>always @(c) begin
>>> b <= c;
>>>end
>>>
>>>Here the assert is being triggered twice, but the simulator
>>>
>>>
>>goes to the
>>
>>
>>>NBA
>>>region between the two triggers.
>>>
>>>
>>>is this right?
>>>
>>>Doron
>>>
>>>
>>>
>>>
Received on Wed Nov 8 13:38:23 2006
This archive was generated by hypermail 2.1.8 : Wed Nov 08 2006 - 13:38:36 PST