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.