Hi All,
I have a class which is defined as follows:
class eth_pkt_c;
//all the variables and enum declarations
//constraints
constraint et_frame_size_type_c {
solve et_frame_type before et_frame_size_type;
(et_frame_type == BASIC || et_frame_type == Q_TAGGED) -> et_frame_size_type dist { SHORT := 333, MEDIUM:= 333, LONG:= 331,
UNDERSIZE:= 1, JUMBOSIZE := 1, RESERVED := 1};
(et_frame_type == JUMBO) -> et_frame_size_type == JUMBOSIZE ;
(et_frame_type == PAUSE) -> et_frame_size_type == SHORT_64 ;
}
constraint et_length_type_value_c {
solve et_frame_type before et_length_value;
solve et_frame_type before et_type_value;
solve et_frame_type before et_frame_size_type;
solve et_frame_size_type before et_length_value;
solve et_frame_size_type before et_type_value;
(et_frame_type == PAUSE && et_frame_size_type == SHORT_64) -> et_type_value == 16'h8808 && et_length_value == 46;
(et_frame_type == Q_TAGGED) -> et_type_value == 16'h8100;
(et_frame_type == JUMBO) -> et_type_value == 16'h8870;
(et_frame_size_type == UNDERSIZE) -> et_length_value inside { [ 1 : 45 ] };
(et_frame_size_type == SHORT ) -> et_length_value inside { [ 46 : 256 ] };
(et_frame_size_type == MEDIUM) -> et_length_value inside { [ 257 : 1024 ] };
(et_frame_size_type == LONG) -> et_length_value inside { [ 1025 : 1500 ] } ;
(et_frame_size_type == JUMBOSIZE) -> et_length_value inside { [1537 : 9000] };
(et_frame_size_type == RESERVED) -> et_length_value inside { [1501 : 1536] };
(et_frame_size_type == OVERSIZE) -> et_length_value inside { [ 10203 : 10240 ] };
}
endclass
I have extended the above class and added a new constraint as shown below:
class eth_modified_pkt_c extends eth_pkt_c;
constraint et_frame_size_type_new_c {
solve et_frame_type before et_frame_size_type;
(et_frame_type == BASIC || et_frame_type == Q_TAGGED) -> !(et_frame_size_type inside {RESERVED, JUMBOSIZE, UNDERSIZE, OVERSIZE});
}
endclass : eth_modified_pkt_c
Now I am using this new class “eth_modified_pkt_c” in my sequences. But still frame_size_type = RESERVED appears. I am not able to understand the issue here. Could it be some tool bug.
PS : et_frame_type and et_frame_size_type are enums