blob: f65d35198639349ec39e5cd0fdb74485fb090f74 [file] [log] [blame]
//
// -------------------------------------------------------------
// Copyright 2011 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 reg_IntSrc extends uvm_reg;
uvm_reg_field TxEmpty;
uvm_reg_field TxLow;
uvm_reg_field TxFull;
uvm_reg_field RxEmpty;
uvm_reg_field RxHigh;
uvm_reg_field RxFull;
uvm_reg_field SA;
function new(string name = "IntSrc");
super.new(name,9,UVM_NO_COVERAGE);
endfunction
virtual function void build();
TxEmpty = uvm_reg_field::type_id::create("TxEmpty",,get_full_name());
TxLow = uvm_reg_field::type_id::create("TxLow",,get_full_name());
TxFull = uvm_reg_field::type_id::create("TxFull",,get_full_name());
RxEmpty = uvm_reg_field::type_id::create("RxEmpty",,get_full_name());
RxHigh = uvm_reg_field::type_id::create("RxHigh",,get_full_name());
RxFull = uvm_reg_field::type_id::create("RxFull",,get_full_name());
SA = uvm_reg_field::type_id::create("OOSA",,get_full_name());
TxEmpty.configure(this, 1, 0, "RO", 1, 1'b1, 1, 0, 0);
TxLow.configure(this, 1, 1, "RO", 1, 1'b1, 1, 0, 0);
TxFull.configure(this, 1, 2, "RO", 1, 1'b0, 1, 0, 0);
RxEmpty.configure(this, 1, 4, "RO", 1, 1'b1, 1, 0, 0);
RxHigh.configure(this, 1, 5, "RO", 1, 1'b0, 1, 0, 0);
RxFull.configure(this, 1, 6, "RO", 1, 1'b0, 1, 0, 0);
SA.configure(this, 1, 8, "W1C", 1, 1'b0, 1, 0, 0);
endfunction
`uvm_object_utils(reg_IntSrc)
endclass
class reg_IntMask extends uvm_reg;
uvm_reg_field TxEmpty;
uvm_reg_field TxLow;
uvm_reg_field TxFull;
uvm_reg_field RxEmpty;
uvm_reg_field RxHigh;
uvm_reg_field RxFull;
uvm_reg_field SA;
function new(string name = "IntMask");
super.new(name,9,UVM_NO_COVERAGE);
endfunction
virtual function void build();
TxEmpty = uvm_reg_field::type_id::create("TxEmpty",,get_full_name());
TxLow = uvm_reg_field::type_id::create("TxLow",,get_full_name());
TxFull = uvm_reg_field::type_id::create("TxFull",,get_full_name());
RxEmpty = uvm_reg_field::type_id::create("RxEmpty",,get_full_name());
RxHigh = uvm_reg_field::type_id::create("RxHigh",,get_full_name());
RxFull = uvm_reg_field::type_id::create("RxFull",,get_full_name());
SA = uvm_reg_field::type_id::create("OOSA",,get_full_name());
TxEmpty.configure(this, 1, 0, "RW", 0, 1'b0, 1, 0, 0);
TxLow.configure(this, 1, 1, "RW", 0, 1'b0, 1, 0, 0);
TxFull.configure(this, 1, 2, "RW", 0, 1'b0, 1, 0, 0);
RxEmpty.configure(this, 1, 4, "RW", 0, 1'b0, 1, 0, 0);
RxHigh.configure(this, 1, 5, "RW", 0, 1'b0, 1, 0, 0);
RxFull.configure(this, 1, 6, "RW", 0, 1'b0, 1, 0, 0);
SA.configure(this, 1, 8, "RW", 0, 1'b0, 1, 0, 0);
endfunction
`uvm_object_utils(reg_IntMask)
endclass
class reg_TxStatus extends uvm_reg;
uvm_reg_field TxEn;
function new(string name = "TxStatus");
super.new(name,1,UVM_NO_COVERAGE);
endfunction
virtual function void build();
TxEn = uvm_reg_field::type_id::create("TxEn",,get_full_name());
TxEn.configure(this, 1, 0, "RW", 0, 1'b0, 1, 0, 0);
endfunction
`uvm_object_utils(reg_TxStatus)
endclass
class reg_TxLWM extends uvm_reg;
uvm_reg_field TxLWM;
function new(string name = "TxLWM");
super.new(name,5,UVM_NO_COVERAGE);
endfunction
virtual function void build();
TxLWM = uvm_reg_field::type_id::create("TxLWM",,get_full_name());
TxLWM.configure(this, 5, 0, "RW", 0, 5'd8, 1, 0, 0);
endfunction
`uvm_object_utils(reg_TxLWM)
endclass
class reg_RxStatus extends uvm_reg;
uvm_reg_field RxEn;
uvm_reg_field Align;
function new(string name = "RxStatus");
super.new(name,2,UVM_NO_COVERAGE);
endfunction
virtual function void build();
RxEn = uvm_reg_field::type_id::create("RxEn",,get_full_name());
RxEn.configure(this, 1, 0, "RW", 0, 1'b0, 1, 0, 0);
Align = uvm_reg_field::type_id::create("Align",,get_full_name());
Align.configure(this, 1, 1, "RO", 0, 1'b0, 1, 0, 0);
endfunction
`uvm_object_utils(reg_RxStatus)
endclass
class reg_RxHWM extends uvm_reg;
uvm_reg_field RxHWM;
function new(string name = "RxHWM");
super.new(name,5,UVM_NO_COVERAGE);
endfunction
virtual function void build();
RxHWM = uvm_reg_field::type_id::create("RxHWM",,get_full_name());
RxHWM.configure(this, 5, 0, "RW", 0, 5'd16, 1, 0, 0);
endfunction
`uvm_object_utils(reg_RxHWM)
endclass
class reg_TxRx extends uvm_reg;
uvm_reg_field TxRx;
function new(string name = "TxRx");
super.new(name,8,UVM_NO_COVERAGE);
endfunction
virtual function void build();
TxRx = uvm_reg_field::type_id::create("TxRx",,get_full_name());
TxRx.configure(this, 8, 0, "RW", 1, 8'h00, 1, 0, 0);
endfunction
`uvm_object_utils(reg_TxRx)
endclass
class reg_dut extends uvm_reg_block;
reg_IntSrc IntSrc;
reg_IntMask IntMask;
reg_TxStatus TxStatus;
reg_TxLWM TxLWM;
reg_RxStatus RxStatus;
reg_RxHWM RxHWM;
reg_TxRx TxRx;
function new(string name = "dut");
super.new(name,UVM_NO_COVERAGE);
endfunction
virtual function void build();
IntSrc = reg_IntSrc::type_id::create("IntSrc",,get_full_name());
IntMask = reg_IntMask::type_id::create("IntMask",,get_full_name());
TxStatus = reg_TxStatus::type_id::create("TxStatus",,get_full_name());
TxLWM = reg_TxLWM::type_id::create("TxLWM",,get_full_name());
RxStatus = reg_RxStatus::type_id::create("RxStatus",,get_full_name());
RxHWM = reg_RxHWM::type_id::create("RxHWM",,get_full_name());
TxRx = reg_TxRx::type_id::create("TxRx",,get_full_name());
IntSrc.configure(this);
IntMask.configure(this);
TxStatus.configure(this);
TxLWM.configure(this);
RxStatus.configure(this);
RxHWM.configure(this);
TxRx.configure(this);
IntSrc.build();
IntMask.build();
TxStatus.build();
TxLWM.build();
RxStatus.build();
RxHWM.build();
TxRx.build();
// define default map
default_map = create_map("default_map", 'h0, 4, UVM_LITTLE_ENDIAN, 1);
default_map.add_reg(IntSrc, 'h0000, "RW");
default_map.add_reg(IntMask, 'h0004, "RW");
default_map.add_reg(TxStatus,'h0010, "RW");
default_map.add_reg(TxLWM, 'h0014, "RW");
default_map.add_reg(RxStatus,'h0020, "RW");
default_map.add_reg(RxHWM, 'h0024, "RW");
default_map.add_reg(TxRx, 'h0100, "RW");
endfunction
`uvm_object_utils(reg_dut)
endclass : reg_dut