Section 6.3.2.1, page 67  (IEEE Std 1800™-2005)

Change

A parameter to which $ is assigned shall only be used wherever $ can be specified as a literal constant.

To

A parameter to which $ is assigned shall only be used wherever $ can be specified as a literal constant.

This includes the following situations:

- The specification of an array as a queue (Clause 5.14) in which case the parameter selects between a queue data type and a bounded array declaration.

- Upper bounds on delay and repetition ranges in assertions (Clause 17)

- Upper or lower bound on ranges in bin specifications in covergroups (Clause 18.4)

 

Change

To support whether a constant is $, a system function is provided to test whether a constant is a $. The syntax

of the system function is

 

       $isunbounded(const_expression);

 

$isunbounded returns true if const_expression is unbounded. Typically, $isunbounded would be used as

a condition in the generate statement.

 

To

A system function is provided to test whether a constant is a $. The syntax of the system function is

 

       $isunbounded(constant_param_expression);

 

$isunbounded is of type bit and returns the value 1 (true) if constant_param_expression is the symbol $. A parameter can be assigned $ provided that it is not involved in any expression. Such a parameter can be used only wherever the symbol $ is allowed. Typically, $isunbounded(constant_param_expression) would be used as a condition in the generate statement.

 

Section 6.3.2.1, page 68  (IEEE Std 1800™-2005)

Change

interface quiet_time_checker #(parameter min_quiet = 0,

                               parameter max_quiet = 0)

                                  (input logic clk, reset_n, logic [1:0]en);

   generate

      if ( max_quiet == 0) begin

         property quiet_time;

              @(posedge clk) reset_n |-> ($countones(en) == 1);

         endproperty

         a1: assert property (quiet_time);

      end

      else begin

         property quiet_time;

             @(posedge clk)

            (reset_n && ($past(en) != 0) && en == 0)

                |->(en == 0)[*min_quiet:max_quiet]

                    ##1 ($countones(en) == 1);

         endproperty

          a1: assert property (quiet_time);

      end

      if ((min_quiet == 0) && ($isunbounded(max_quiet))

          $display(warning_msg);

   endgenerate

endinterface

To

interface quiet_time_checker #(parameter min_quiet = 0,

                               parameter max_quiet = 0)

                                  (input logic clk, logic [1:0]en);

   generate

      if (!$isunbounded(max_quiet) && (max_quiet == 0)) begin

         property quiet_time;

              @(posedge clk) ($countones(en) == 1);

         endproperty

          a1: assert property (quiet_time);

      end

      else begin

      property quiet_time;

          @(posedge clk)

         (reset_n && ($past(en) != 0) && en == 0)

             |->(en == 0)[*min_quiet:max_quiet]

                 ##1 ($countones(en) == 1);

      endproperty

       a1: assert property (quiet_time);

      initial if ((min_quiet == 0) && ($isunbounded(max_quiet))

            $display(warning_msg);

   endgenerate

endinterface

 

Section Index, page 637  (IEEE Std 1800™-2005)

Change

$isunbounded 380

 

To

$isunbounded 67, 380

 

 

 

 

Section 22.4, page 380  (IEEE Std 1800™-2005)

Change

range_function ::=                                                                                                                    // not in Annex A

                              $isunbounded ( constant_expression )

 

To

range_function ::=                                                                                                                    // not in Annex A

                              $isunbounded ( constant_param_expression )

 

Change

 

then $isunbounded(foo) shall return true. Otherwise, it shall return false. True and false are defined in

22.9.

 

to

 

then $isunbounded(foo) shall return true. Otherwise, it shall return false. True and false are defined in

22.9. If a parameter is assigned $ then it must not be involved in any expression.

Such a parameter can be used only wherever the symbol $ is allowed. Additional description and examples can be found in 6.3.2.1.