RE: [sv-ac] P1800-2009: checker body ; $display/$monitor commands?

From: Brad Pierce <Brad.Pierce_at_.....>
Date: Thu May 14 2009 - 12:24:52 PDT
Yes, the BNF syntax description should not try to express every semantic restriction imposed by the text.

For example, see slides 5-7 in

   http://www.eda-stds.org/sv/F2F_14_Nov_2003/BNF_status.pdf

-- Brad

________________________________
From: owner-sv-ac@eda.org [owner-sv-ac@eda.org] On Behalf Of Korchemny, Dmitry [dmitry.korchemny@intel.com]
Sent: Thursday, May 14, 2009 12:13 PM
To: ben@systemverilog.us
Cc: Abhishek Muchandikar; sv-ac@eda.org
Subject: RE: [sv-ac] P1800-2009: checker body ; $display/$monitor commands?

I don’t think this is an error, at least it is consistent with the rest of the LRM. For example, in 9.2.2.4 Sequential logic always_ff procedure it is written:

The always_ff procedure imposes the restriction that it contains one and only one event control and no
blocking timing controls.

But it is not reflected in the BNF.

Regards,
Dmitry

From: ben cohen [mailto:hdlcohen@gmail.com]
Sent: Thursday, May 14, 2009 10:00 PM
To: Korchemny, Dmitry
Cc: Abhishek Muchandikar; sv-ac@eda.org
Subject: Re: [sv-ac] P1800-2009: checker body ; $display/$monitor commands?

Dmitry,
Since procedure calls are illegal in checkers, then there is an error in A.1.8 Checker item.
Specifically, the defintiopn of a checker_always_construct.
checker_always_construct ::= always statement // <----
statement ::= [ block_identifier : ] { attribute_instance } statement_item statement_item ::= ... | subroutine_call_statement <--- ....
subroutine_call ::=  ... tf_call | system_tf_call <--
system_tf_call ::= system_tf_identifier [ ( list_of_arguments ) ] | system_tf_identifier ( data_type [ , expression ] )

system_tf_identifier46 ::= $[ a-zA-Z0-9_$ ]{ [ a-zA-Z0-9_$ ] } <---

 Ben Cohen

On Thu, May 14, 2009 at 11:51 AM, Korchemny, Dmitry <dmitry.korchemny@intel.com<mailto:dmitry.korchemny@intel.com>> wrote:

Hi Ben, Abhishek,



Procedure calls are indeed forbidden in checkers except for assertion action blocks and final procedures. I can file an enhancement request on your behalf.



Regards,

Dmitry



From: ben cohen [mailto:hdlcohen@gmail.com<mailto:hdlcohen@gmail.com>]
Sent: Thursday, May 14, 2009 9:44 PM
To: Abhishek Muchandikar
Cc: Korchemny, Dmitry; sv-ac@eda.org<mailto:sv-ac@eda.org>

Subject: Re: [sv-ac] P1800-2009: checker body ; $display/$monitor commands?



Per Abhishek conversations (see below), there is an error in the following statement in LRM 17.5. Note that the syntax is OK.

Dmitry could you write a Mantis for Abhishek or I for the following:



P1800-2009 17.5 states:

"An always procedure in a checker body may contain deferred and concurrent assertions, nonblocking variable assignments (see 17.7.1) and a procedural timing control statement using an event control. All other statements shall not appear inside an always procedure."



This seems to exclude the  subroutine_call_statement. Actually, the "all other" is ambiguous to a reader. It needs to be clarified. Perhaps we should explicitly specify what shall not appear inside and always procedure.

Ben Cohen

-----



On Thu, May 14, 2009 at 8:12 AM, Abhishek Muchandikar <Abhishek.Muchandikar@synopsys.com<mailto:Abhishek.Muchandikar@synopsys.com>> wrote:

Hi Ben,



Yup, this part I missed.



I was referring to the below LRM statement 17.5 :



“An always procedure in a checker body may contain deferred and concurrent assertions, nonblocking variable

assignments (see 17.7.1) and a procedural timing control statement using an event control. All other

statements shall not appear inside an always procedure.”



Thanks

Abhishek





From: ben cohen [mailto:hdlcohen@gmail.com<mailto:hdlcohen@gmail.com>]
Sent: Thursday, May 14, 2009 7:12 PM

To: Abhishek Muchandikar
Cc: Korchemny, Dmitry
Subject: Re: [sv-ac] P1800-2009: checker body ; $display/$monitor commands?



Abhishek,

I fail to understand why you say that a $display is not allowed on a checker variable. Where do you see that in the LRM?

I see the following though:



checker_or_generate_item ::= checker_or_generate_item_declaration | initial_construct | checker_always_construct // <----

...

checker_always_construct ::= always statement // <----



statement ::= [ block_identifier : ] { attribute_instance } statement_item statement_item ::= ... | subroutine_call_statement <--- ....



system_tf_call ::= system_tf_identifier [ ( list_of_arguments ) ] | system_tf_identifier ( data_type [ , expression ] ) subroutine_call ::= tf_call | system_tf_call <--

...

system_tf_identifier46 ::= $[ a-zA-Z0-9_$ ]{ [ a-zA-Z0-9_$ ] } <---



Thus, the following should be legal:

checker X;

   logic clk, a;

 always @ (posedge clk) $display("a= %b", a);

endchecker;



Ben Cohen



On Thu, May 14, 2009 at 5:39 AM, Abhishek Muchandikar <Abhishek.Muchandikar@synopsys.com<mailto:Abhishek.Muchandikar@synopsys.com>> wrote:

Hi Ben,



Thanks for the reply.

 As pointed out by you, we can always use action blocks  to make sue of $display but that would be sort of a WA.

Would it not be a value add to have a $monitor on a checker var  as such. In this way we could actually track  checker data types.

As of now there is no direct way to do this.



Thanks

Abhishek







From: ben cohen [mailto:hdlcohen@gmail.com<mailto:hdlcohen@gmail.com>]
Sent: Wednesday, May 13, 2009 8:25 PM
To: Abhishek Muchandikar
Cc: Korchemny, Dmitry
Subject: Re: [sv-ac] P1800-2009: checker body ; $display/$monitor commands?



Hi Abhishek,

$display/$monitor are system functions, and are not disallowed.  In fact, on Page 428 17.9 Complex checker example, you can see the application of $display.

generate if (coverage_level != cover_none) begin : cover_b

cover_window_open: cover property (start_flag && !window)

$display("win_open_covered”);

cover_window: cover property (

start_flag && !window

##1 (!end_flag && window) [*0:$]

##1 end_flag && window

) $display("window covered");

end : cover_b

endgenerat



On Wed, May 13, 2009 at 4:05 AM, Abhishek Muchandikar <Abhishek.Muchandikar@synopsys.com<mailto:Abhishek.Muchandikar@synopsys.com>> wrote:

Hi Ben,Dmitry



A generic question :



In regards to checkers  , LRM 17.2 does not  mention use of display/monitor  statements in checker body.

Do we plan to allow these commands in the checker body?



Without the use of these command the debugging of checker variable would be tedious in my opinion.

Add to the fact that use of checker vars  outside the checker body is illegal.



Please comment.



Thanks

Abhishek









---------------------------------------------------------------------

Intel Israel (74) Limited



This e-mail and any attachments may contain confidential material for

the sole use of the intended recipient(s). Any review or distribution

by others is strictly prohibited. If you are not the intended

recipient, please contact the sender and delete all copies.


---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.


--
This message has been scanned for viruses and
dangerous content by MailScanner<http://www.mailscanner.info/>, and is
believed to be clean.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Thu May 14 12:30:08 2009

This archive was generated by hypermail 2.1.8 : Thu May 14 2009 - 12:30:31 PDT