hi ,
here SLV_DCR_TIMEOUT_WAIT is the value programmed in the register hence it is not a constant value, how can i use the same in assertion.
error is :
Error-[SVA-INCE] Illegal use of non-constant expression
/lsi/designs/rsd_megatron/team/singhs/megatron/sim/testbench/mss_tb/interfaces/mss_internal_signal_if.sv, 41
mss_internal_signal_if, “DCR_TIMEOUT_WAIT”
The use of a non-constant expression is not allowed in properties, sequences
and assertions for cases such as delay and repetition ranges.
Please replace the offending expression by an elaboration-time constant.
Below are equivalent assertions:
// a |=> ##v b) // v is a module variable
property p_delay_equivalent; // Am producing an equivalent implementation
int local_v; // this is an internal local variable defined by the tool
a |=> (1, local_v = v)
##0 (1, local_v=local_v - 1'b1)[*0:$]
##1 local_v<0
##0 b;
endproperty
ap_delay_equivalent: assert property(@(posedge clk)ap_delay_equivalent);
// a |=> ##[0:v] ##1 b)
property p_range_equivalent; // Am producing an equivalent implementation
int local_v; // this is an internal local variable defined by the tool
a |=> (1, local_v = v)
##0 (local_v<0, local_v=local_v - 1'b1)[*0:$] ##1 b;
endproperty
ap_range_equivalent: assert property(@(posedge clk)ap_range_equivalent);
BTW, you’ll be able to use variables in delays and repeat operators in the next release of 1800 (maybe by end of 2015 or early 2016; that is in the plans.