Menu

#1288 Event control with implicit event expression (always@(*)) with an event control statement inside causes internal error

closed-accepted
nobody
None
5
2016-10-21
2016-10-17
Henry Wong
No

Using an event control inside an implicit event always@(*) results in "internal error: NetProc::nex_input not implemented". The inputs consumed by the inner event control statement should (i think?) also trigger the outer always block, but doesn't (because of the internal error).

In addition, if the outer always@(*) block contains only the event control statement, it errors: "Unable to elaborate".

It can be worked around by using an explicit event expression on the outer always block instead of implicit.

It seems like the cause is because NetEvWait::nex_input(bool) isn't implemented, so the list of input signals that the inner event control statement consumes can't be calculated. The patch implements this function. Please check if the patch makes sense...

(Patch also applies to v10.1.1)

2 Attachments

Discussion

  • Martin Whitaker

    Martin Whitaker - 2016-10-20
    • status: open --> closed-accepted
     
  • Martin Whitaker

    Martin Whitaker - 2016-10-20

    Yes, inputs to the inner event control statement should also trigger the outer event control - example 4 in section 9.7.5 of 1364-2005 shows this.

    The patch looks good to me (apart from indentation, which I've fixed). I've applied it to both the master and the v10 branches. Thanks for submitting this.

     
  • Henry Wong

    Henry Wong - 2016-10-21

    Excellent, thanks!

     

Log in to post a comment.