blob: 3c2f03c594671aac3e26417428ed43b4c590e45f [file] [log] [blame]
//
// -------------------------------------------------------------
// Copyright 2004-2008 Synopsys, Inc.
// All Rights Reserved Worldwide
//
// Licensed under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in
// writing, software distributed under the License is
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See
// the License for the specific language governing
// permissions and limitations under the License.
// -------------------------------------------------------------
//
class wb_cfg;
typedef enum {BYTE, WORD, DWORD, QWORD} sizes_e;
rand sizes_e port_size;
rand sizes_e granularity;
typedef enum {CLASSIC, REGISTERED} cycle_types_e;
rand cycle_types_e cycles;
rand integer max_n_wss;
constraint wb_cfg_valid {
granularity <= port_size;
max_n_wss >= 0;
}
constraint reasonable_max_n_wss {
max_n_wss == 10;
}
constraint supported {
port_size == DWORD;
granularity == BYTE;
cycles == CLASSIC;
}
constraint tc1;
constraint tc2;
constraint tc3;
function void display(string prefix = "");
$write("%s\n", this.psdisplay(prefix));
endfunction: display
virtual function string psdisplay(string prefix = "");
$sformat(psdisplay, "%0s%0s %0s size, %0s granularity. Max WSS=%0d",
prefix, this.cycles.name(), this.port_size.name(), this.granularity.name(),
this.max_n_wss);
endfunction: psdisplay
endclass: wb_cfg
class wb_slave_cfg extends wb_cfg;
rand bit [63:0] min_addr;
rand bit [63:0] max_addr;
constraint wb_slave_cfg_valid {
max_addr >= min_addr;
}
virtual function string psdisplay(string prefix = "");
$sformat(psdisplay, "%0s at [%h:%h]",
super.psdisplay(prefix), this.min_addr, this.max_addr);
endfunction: psdisplay
endclass: wb_slave_cfg