URL
https://opencores.org/ocsvn/lpffir/lpffir/trunk
Subversion Repositories lpffir
Compare Revisions
- This comparison shows the changes necessary to convert path
/lpffir
- from Rev 10 to Rev 11
- ↔ Reverse comparison
Rev 10 → Rev 11
/trunk/uvm/lpffir_uvm/dut/design.sv
0,0 → 1,38
module lpffir_axis ( |
input aclk_i, |
input aresetn_i, |
// AXI-Stream RX interface |
input rx_tlast_i, |
input rx_tvalid_i, |
output logic rx_tready_o, |
input [15:0] rx_tdata_i, |
// AXI-Stream TX interface |
output logic tx_tlast_o, |
output reg tx_tvalid_o, |
input tx_tready_i, |
output logic [15:0] tx_tdata_o |
); |
|
wire lpffir_en; |
assign lpffir_en = rx_tvalid_i && tx_tready_i; |
|
// AXI-Stream interface |
assign rx_tready_o = lpffir_en; |
assign tx_tvalid_o = lpffir_en; |
assign tx_tlast_o = rx_tlast_i; |
|
// DEBUG |
always @(posedge aclk_i or negedge aresetn_i) |
if (aresetn_i) |
$display("DUT: rx_tdata_i %0d, tx_tdata_o %0d", rx_tdata_i, tx_tdata_o); |
|
// LPFFIR |
lpffir_core lpffir_core( |
.clk_i(aclk_i), |
.rstn_i(aresetn_i), |
.en_i(lpffir_en), |
.x_i(rx_tdata_i), |
.y_o(tx_tdata_o) |
); |
|
endmodule |
/trunk/uvm/lpffir_uvm/dut/fa.sv
0,0 → 1,18
// Full Adder: adds three 1-bit numbers |
module fa( |
input a, |
input b, |
input ci, // Carry Input |
|
output logic co, // Carry Output |
output logic s // Sum |
); |
|
logic d,e,f; |
|
xor(s,a,b,ci); |
and(d,a,b); |
and(e,b,ci); |
and(f,a,ci); |
or(co,d,e,f); |
endmodule |
/trunk/uvm/lpffir_uvm/dut/files.f
0,0 → 1,4
fa.sv |
rca.sv |
lpffir_core.sv |
design.sv |
/trunk/uvm/lpffir_uvm/dut/lpffir_core.sv
0,0 → 1,51
module lpffir_core ( |
input clk_i, |
input rstn_i, |
input en_i, |
input [15:0] x_i, |
output logic [15:0] y_o |
); |
|
reg [15:0] x1; |
reg [15:0] x2; |
reg [15:0] x3; |
reg [15:0] x4; |
reg [15:0] x5; |
|
logic [15:0] h0; |
logic [15:0] h1; |
logic [15:0] h2; |
logic [15:0] h01; |
|
logic co0; |
logic co1; |
logic co2; |
logic co3; |
logic co4; |
|
// Linear-phase FIR structure |
rca rca_inst0 (.a(x_i),.b(x5),.ci(1'b0),.co(co0),.s(h0)); |
rca rca_inst1 (.a(x1),.b(x4),.ci(1'b0),.co(co1),.s(h1)); |
rca rca_inst2 (.a(x2),.b(x3),.ci(1'b0),.co(co2),.s(h2)); |
rca rca_inst3 (.a(h0),.b(h1),.ci(1'b0),.co(co3),.s(h01)); |
rca rca_inst4 (.a(h01),.b(h2),.ci(1'b0),.co(co4),.s(y_o)); |
|
always_ff @(posedge clk_i or posedge rstn_i) |
if(!rstn_i) |
begin |
x1 <= 0; |
x2 <= 0; |
x3 <= 0; |
x4 <= 0; |
x5 <= 0; |
end |
else if (en_i) |
begin |
x1 <= x_i; |
x2 <= x1; |
x3 <= x2; |
x4 <= x3; |
x5 <= x4; |
end |
|
endmodule |
/trunk/uvm/lpffir_uvm/dut/rca.sv
0,0 → 1,51
// Ripple Carry Adder: adds two 16-bit numbers |
module rca( |
input [15:0] a, |
input [15:0] b, |
input ci, // Carry Input |
|
output logic co, // Carry Output |
output logic [15:0] s // Sum |
); |
|
logic a0,a1,a2,a3,a4,a5,a6,a7; |
logic a8,a9,a10,a11,a12,a13,a14,a15; |
logic b0,b1,b2,b3,b4,b5,b6,b7; |
logic b8,b9,b10,b11,b12,b13,b14,b15; |
logic c0,c1,c2,c3,c4,c5,c6,c7; |
logic c8,c9,c10,c11,c12,c13,c14; |
logic s0,s1,s2,s3,s4,s5,s6,s7; |
logic s8,s9,s10,s11,s12,s13,s14,s15; |
|
assign a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; |
assign a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7]; |
assign a8 = a[8], a9 = a[9], a10 = a[10]; |
assign a11 = a[11], a12 = a[12], a13 = a[13]; |
assign a14 = a[14], a15 = a[15]; |
assign b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; |
assign b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7]; |
assign b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11]; |
assign b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15]; |
assign s[0] = s0, s[1] = s1, s[2] = s2, s[3] = s3; |
assign s[4] = s4, s[5] = s5,s[6] = s6, s[7] = s7; |
assign s[8] = s8, s[9] = s9, s[10] = s10, s[11] = s11; |
assign s[12] = s12, s[13] = s13, s[14] = s14, s[15] = s15; |
|
fa fa_inst0(.a(a0),.b(b0),.ci(ci),.co(c0),.s(s0)); |
fa fa_inst1(.a(a1),.b(b1),.ci(c0),.co(c1),.s(s1)); |
fa fa_inst2(.a(a2),.b(b2),.ci(c1),.co(c2),.s(s2)); |
fa fa_inst3(.a(a3),.b(b3),.ci(c2),.co(c3),.s(s3)); |
fa fa_inst4(.a(a4),.b(b4),.ci(c3),.co(c4),.s(s4)); |
fa fa_inst5(.a(a5),.b(b5),.ci(c4),.co(c5),.s(s5)); |
fa fa_inst6(.a(a6),.b(b6),.ci(c5),.co(c6),.s(s6)); |
fa fa_inst7(.a(a7),.b(b7),.ci(c6),.co(c7),.s(s7)); |
fa fa_inst8(.a(a8),.b(b8),.ci(c7),.co(c8),.s(s8)); |
fa fa_inst9(.a(a9),.b(b9),.ci(c8),.co(c9),.s(s9)); |
fa fa_inst10(.a(a10),.b(b10),.ci(c9),.co(c10),.s(s10)); |
fa fa_inst11(.a(a11),.b(b11),.ci(c10),.co(c11),.s(s11)); |
fa fa_inst12(.a(a12),.b(b12),.ci(c11),.co(c12),.s(s12)); |
fa fa_inst13(.a(a13),.b(b13),.ci(c12),.co(c13),.s(s13)); |
fa fa_inst14(.a(a14),.b(b14),.ci(c13),.co(c14),.s(s14)); |
fa fa_inst15(.a(a15),.b(b15),.ci(c14),.co(co),.s(s15)); |
|
endmodule |
/trunk/uvm/lpffir_uvm/generated_tb/dut/design.sv
0,0 → 1,38
module lpffir_axis ( |
input aclk_i, |
input aresetn_i, |
// AXI-Stream RX interface |
input rx_tlast_i, |
input rx_tvalid_i, |
output logic rx_tready_o, |
input [15:0] rx_tdata_i, |
// AXI-Stream TX interface |
output logic tx_tlast_o, |
output reg tx_tvalid_o, |
input tx_tready_i, |
output logic [15:0] tx_tdata_o |
); |
|
wire lpffir_en; |
assign lpffir_en = rx_tvalid_i && tx_tready_i; |
|
// AXI-Stream interface |
assign rx_tready_o = lpffir_en; |
assign tx_tvalid_o = lpffir_en; |
assign tx_tlast_o = rx_tlast_i; |
|
// DEBUG |
always @(posedge aclk_i or negedge aresetn_i) |
if (aresetn_i) |
$display("DUT: rx_tdata_i %0d, tx_tdata_o %0d", rx_tdata_i, tx_tdata_o); |
|
// LPFFIR |
lpffir_core lpffir_core( |
.clk_i(aclk_i), |
.rstn_i(aresetn_i), |
.en_i(lpffir_en), |
.x_i(rx_tdata_i), |
.y_o(tx_tdata_o) |
); |
|
endmodule |
/trunk/uvm/lpffir_uvm/generated_tb/dut/fa.sv
0,0 → 1,18
// Full Adder: adds three 1-bit numbers |
module fa( |
input a, |
input b, |
input ci, // Carry Input |
|
output logic co, // Carry Output |
output logic s // Sum |
); |
|
logic d,e,f; |
|
xor(s,a,b,ci); |
and(d,a,b); |
and(e,b,ci); |
and(f,a,ci); |
or(co,d,e,f); |
endmodule |
/trunk/uvm/lpffir_uvm/generated_tb/dut/files.f
0,0 → 1,4
fa.sv |
rca.sv |
lpffir_core.sv |
design.sv |
/trunk/uvm/lpffir_uvm/generated_tb/dut/lpffir_core.sv
0,0 → 1,51
module lpffir_core ( |
input clk_i, |
input rstn_i, |
input en_i, |
input [15:0] x_i, |
output logic [15:0] y_o |
); |
|
reg [15:0] x1; |
reg [15:0] x2; |
reg [15:0] x3; |
reg [15:0] x4; |
reg [15:0] x5; |
|
logic [15:0] h0; |
logic [15:0] h1; |
logic [15:0] h2; |
logic [15:0] h01; |
|
logic co0; |
logic co1; |
logic co2; |
logic co3; |
logic co4; |
|
// Linear-phase FIR structure |
rca rca_inst0 (.a(x_i),.b(x5),.ci(1'b0),.co(co0),.s(h0)); |
rca rca_inst1 (.a(x1),.b(x4),.ci(1'b0),.co(co1),.s(h1)); |
rca rca_inst2 (.a(x2),.b(x3),.ci(1'b0),.co(co2),.s(h2)); |
rca rca_inst3 (.a(h0),.b(h1),.ci(1'b0),.co(co3),.s(h01)); |
rca rca_inst4 (.a(h01),.b(h2),.ci(1'b0),.co(co4),.s(y_o)); |
|
always_ff @(posedge clk_i or posedge rstn_i) |
if(!rstn_i) |
begin |
x1 <= 0; |
x2 <= 0; |
x3 <= 0; |
x4 <= 0; |
x5 <= 0; |
end |
else if (en_i) |
begin |
x1 <= x_i; |
x2 <= x1; |
x3 <= x2; |
x4 <= x3; |
x5 <= x4; |
end |
|
endmodule |
/trunk/uvm/lpffir_uvm/generated_tb/dut/rca.sv
0,0 → 1,51
// Ripple Carry Adder: adds two 16-bit numbers |
module rca( |
input [15:0] a, |
input [15:0] b, |
input ci, // Carry Input |
|
output logic co, // Carry Output |
output logic [15:0] s // Sum |
); |
|
logic a0,a1,a2,a3,a4,a5,a6,a7; |
logic a8,a9,a10,a11,a12,a13,a14,a15; |
logic b0,b1,b2,b3,b4,b5,b6,b7; |
logic b8,b9,b10,b11,b12,b13,b14,b15; |
logic c0,c1,c2,c3,c4,c5,c6,c7; |
logic c8,c9,c10,c11,c12,c13,c14; |
logic s0,s1,s2,s3,s4,s5,s6,s7; |
logic s8,s9,s10,s11,s12,s13,s14,s15; |
|
assign a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; |
assign a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7]; |
assign a8 = a[8], a9 = a[9], a10 = a[10]; |
assign a11 = a[11], a12 = a[12], a13 = a[13]; |
assign a14 = a[14], a15 = a[15]; |
assign b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; |
assign b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7]; |
assign b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11]; |
assign b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15]; |
assign s[0] = s0, s[1] = s1, s[2] = s2, s[3] = s3; |
assign s[4] = s4, s[5] = s5,s[6] = s6, s[7] = s7; |
assign s[8] = s8, s[9] = s9, s[10] = s10, s[11] = s11; |
assign s[12] = s12, s[13] = s13, s[14] = s14, s[15] = s15; |
|
fa fa_inst0(.a(a0),.b(b0),.ci(ci),.co(c0),.s(s0)); |
fa fa_inst1(.a(a1),.b(b1),.ci(c0),.co(c1),.s(s1)); |
fa fa_inst2(.a(a2),.b(b2),.ci(c1),.co(c2),.s(s2)); |
fa fa_inst3(.a(a3),.b(b3),.ci(c2),.co(c3),.s(s3)); |
fa fa_inst4(.a(a4),.b(b4),.ci(c3),.co(c4),.s(s4)); |
fa fa_inst5(.a(a5),.b(b5),.ci(c4),.co(c5),.s(s5)); |
fa fa_inst6(.a(a6),.b(b6),.ci(c5),.co(c6),.s(s6)); |
fa fa_inst7(.a(a7),.b(b7),.ci(c6),.co(c7),.s(s7)); |
fa fa_inst8(.a(a8),.b(b8),.ci(c7),.co(c8),.s(s8)); |
fa fa_inst9(.a(a9),.b(b9),.ci(c8),.co(c9),.s(s9)); |
fa fa_inst10(.a(a10),.b(b10),.ci(c9),.co(c10),.s(s10)); |
fa fa_inst11(.a(a11),.b(b11),.ci(c10),.co(c11),.s(s11)); |
fa fa_inst12(.a(a12),.b(b12),.ci(c11),.co(c12),.s(s12)); |
fa fa_inst13(.a(a13),.b(b13),.ci(c12),.co(c13),.s(s13)); |
fa fa_inst14(.a(a14),.b(b14),.ci(c13),.co(c14),.s(s14)); |
fa fa_inst15(.a(a15),.b(b15),.ci(c14),.co(co),.s(s15)); |
|
endmodule |
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_agent.sv
0,0 → 1,111
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_agent.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Agent for data_input |
//============================================================================= |
|
`ifndef DATA_INPUT_AGENT_SV |
`define DATA_INPUT_AGENT_SV |
|
// You can insert code here by setting agent_inc_before_class in file data_input.tpl |
|
class data_input_agent extends uvm_agent; |
|
`uvm_component_utils(data_input_agent) |
|
uvm_analysis_port #(input_tx) analysis_port; |
|
data_input_config m_config; |
data_input_sequencer_t m_sequencer; |
data_input_driver m_driver; |
data_input_monitor m_monitor; |
|
local int m_is_active = -1; |
|
extern function new(string name, uvm_component parent); |
|
// You can remove build/connect_phase and get_is_active by setting agent_generate_methods_inside_class = no in file data_input.tpl |
|
extern function void build_phase(uvm_phase phase); |
extern function void connect_phase(uvm_phase phase); |
extern function uvm_active_passive_enum get_is_active(); |
|
// You can insert code here by setting agent_inc_inside_class in file data_input.tpl |
|
endclass : data_input_agent |
|
|
function data_input_agent::new(string name, uvm_component parent); |
super.new(name, parent); |
analysis_port = new("analysis_port", this); |
endfunction : new |
|
|
// You can remove build/connect_phase and get_is_active by setting agent_generate_methods_after_class = no in file data_input.tpl |
|
function void data_input_agent::build_phase(uvm_phase phase); |
|
// You can insert code here by setting agent_prepend_to_build_phase in file data_input.tpl |
|
if (!uvm_config_db #(data_input_config)::get(this, "", "config", m_config)) |
`uvm_error(get_type_name(), "data_input config not found") |
|
m_monitor = data_input_monitor ::type_id::create("m_monitor", this); |
|
if (get_is_active() == UVM_ACTIVE) |
begin |
m_driver = data_input_driver ::type_id::create("m_driver", this); |
m_sequencer = data_input_sequencer_t::type_id::create("m_sequencer", this); |
end |
|
// You can insert code here by setting agent_append_to_build_phase in file data_input.tpl |
|
endfunction : build_phase |
|
|
function void data_input_agent::connect_phase(uvm_phase phase); |
if (m_config.vif == null) |
`uvm_warning(get_type_name(), "data_input virtual interface is not set!") |
|
m_monitor.vif = m_config.vif; |
m_monitor.analysis_port.connect(analysis_port); |
|
if (get_is_active() == UVM_ACTIVE) |
begin |
m_driver.seq_item_port.connect(m_sequencer.seq_item_export); |
m_driver.vif = m_config.vif; |
end |
|
// You can insert code here by setting agent_append_to_connect_phase in file data_input.tpl |
|
endfunction : connect_phase |
|
|
function uvm_active_passive_enum data_input_agent::get_is_active(); |
if (m_is_active == -1) |
begin |
if (uvm_config_db#(uvm_bitstream_t)::get(this, "", "is_active", m_is_active)) |
begin |
if (m_is_active != m_config.is_active) |
`uvm_warning(get_type_name(), "is_active field in config_db conflicts with config object") |
end |
else |
m_is_active = m_config.is_active; |
end |
return uvm_active_passive_enum'(m_is_active); |
endfunction : get_is_active |
|
|
// You can insert code here by setting agent_inc_after_class in file data_input.tpl |
|
`endif // DATA_INPUT_AGENT_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_config.sv
0,0 → 1,52
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_config.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Configuration for agent data_input |
//============================================================================= |
|
`ifndef DATA_INPUT_CONFIG_SV |
`define DATA_INPUT_CONFIG_SV |
|
// You can insert code here by setting agent_config_inc_before_class in file data_input.tpl |
|
class data_input_config extends uvm_object; |
|
// Do not register config class with the factory |
|
virtual data_input_if vif; |
|
uvm_active_passive_enum is_active = UVM_ACTIVE; |
bit coverage_enable; |
bit checks_enable; |
|
// You can insert variables here by setting config_var in file data_input.tpl |
|
// You can remove new by setting agent_config_generate_methods_inside_class = no in file data_input.tpl |
|
extern function new(string name = ""); |
|
// You can insert code here by setting agent_config_inc_inside_class in file data_input.tpl |
|
endclass : data_input_config |
|
|
// You can remove new by setting agent_config_generate_methods_after_class = no in file data_input.tpl |
|
function data_input_config::new(string name = ""); |
super.new(name); |
endfunction : new |
|
|
// You can insert code here by setting agent_config_inc_after_class in file data_input.tpl |
|
`endif // DATA_INPUT_CONFIG_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_coverage.sv
0,0 → 1,88
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_coverage.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Coverage for agent data_input |
//============================================================================= |
|
`ifndef DATA_INPUT_COVERAGE_SV |
`define DATA_INPUT_COVERAGE_SV |
|
// You can insert code here by setting agent_cover_inc_before_class in file data_input.tpl |
|
class data_input_coverage extends uvm_subscriber #(input_tx); |
|
`uvm_component_utils(data_input_coverage) |
|
data_input_config m_config; |
bit m_is_covered; |
input_tx m_item; |
|
// Start of inlined include file generated_tb/tb/include/data_input_cover_inc.sv |
covergroup m_cov; |
option.per_instance = 1; |
|
cp_data: coverpoint m_item.data { |
bins data_values[] = {[0:127]}; |
} |
endgroup |
// End of inlined include file |
|
// You can remove new, write, and report_phase by setting agent_cover_generate_methods_inside_class = no in file data_input.tpl |
|
extern function new(string name, uvm_component parent); |
extern function void write(input input_tx t); |
extern function void build_phase(uvm_phase phase); |
extern function void report_phase(uvm_phase phase); |
|
// You can insert code here by setting agent_cover_inc_inside_class in file data_input.tpl |
|
endclass : data_input_coverage |
|
|
// You can remove new, write, and report_phase by setting agent_cover_generate_methods_after_class = no in file data_input.tpl |
|
function data_input_coverage::new(string name, uvm_component parent); |
super.new(name, parent); |
m_is_covered = 0; |
m_cov = new(); |
endfunction : new |
|
|
function void data_input_coverage::write(input input_tx t); |
m_item = t; |
if (m_config.coverage_enable) |
begin |
m_cov.sample(); |
// Check coverage - could use m_cov.option.goal instead of 100 if your simulator supports it |
if (m_cov.get_inst_coverage() >= 100) m_is_covered = 1; |
end |
endfunction : write |
|
|
function void data_input_coverage::build_phase(uvm_phase phase); |
if (!uvm_config_db #(data_input_config)::get(this, "", "config", m_config)) |
`uvm_error(get_type_name(), "data_input config not found") |
endfunction : build_phase |
|
|
function void data_input_coverage::report_phase(uvm_phase phase); |
if (m_config.coverage_enable) |
`uvm_info(get_type_name(), $sformatf("Coverage score = %3.1f%%", m_cov.get_inst_coverage()), UVM_MEDIUM) |
else |
`uvm_info(get_type_name(), "Coverage disabled for this agent", UVM_MEDIUM) |
endfunction : report_phase |
|
|
// You can insert code here by setting agent_cover_inc_after_class in file data_input.tpl |
|
`endif // DATA_INPUT_COVERAGE_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_driver.sv
0,0 → 1,67
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_driver.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Driver for data_input |
//============================================================================= |
|
`ifndef DATA_INPUT_DRIVER_SV |
`define DATA_INPUT_DRIVER_SV |
|
// You can insert code here by setting driver_inc_before_class in file data_input.tpl |
|
class data_input_driver extends uvm_driver #(input_tx); |
|
`uvm_component_utils(data_input_driver) |
|
virtual data_input_if vif; |
|
extern function new(string name, uvm_component parent); |
|
// Start of inlined include file generated_tb/tb/include/data_input_driver_inc_inside_class.sv |
extern task run_phase(uvm_phase phase); |
// End of inlined include file |
|
endclass : data_input_driver |
|
|
function data_input_driver::new(string name, uvm_component parent); |
super.new(name, parent); |
endfunction : new |
|
|
// Start of inlined include file generated_tb/tb/include/data_input_driver_inc_after_class.sv |
task data_input_driver::run_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "run_phase", UVM_HIGH) |
|
forever @(posedge vif.clk) |
begin |
seq_item_port.get_next_item(req); |
phase.raise_objection(this); |
wait (vif.reset == 1); |
vif.data <= req.data; |
vif.valid <= 1; |
vif.last <= 0; |
wait (vif.ready == 1); |
|
fork |
begin |
repeat (10) @(posedge vif.clk); |
phase.drop_objection(this); |
end |
join_none |
seq_item_port.item_done(); |
end |
endtask : run_phase |
// End of inlined include file |
|
`endif // DATA_INPUT_DRIVER_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_if.sv
0,0 → 1,40
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_if.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Signal interface for agent data_input |
//============================================================================= |
|
`ifndef DATA_INPUT_IF_SV |
`define DATA_INPUT_IF_SV |
|
interface data_input_if(); |
|
timeunit 1ns; |
timeprecision 1ps; |
|
import data_input_pkg::*; |
|
logic last; |
logic valid; |
logic ready; |
logic [15:0] data; |
logic clk; |
logic reset; |
|
// You can insert properties and assertions here |
|
// You can insert code here by setting if_inc_inside_interface in file data_input.tpl |
|
endinterface : data_input_if |
|
`endif // DATA_INPUT_IF_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_input_tx.sv
0,0 → 1,116
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_seq_item.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Sequence item for data_input_sequencer |
//============================================================================= |
|
`ifndef DATA_INPUT_SEQ_ITEM_SV |
`define DATA_INPUT_SEQ_ITEM_SV |
|
// You can insert code here by setting trans_inc_before_class in file data_input.tpl |
|
class input_tx extends uvm_sequence_item; |
|
`uvm_object_utils(input_tx) |
|
// To include variables in copy, compare, print, record, pack, unpack, and compare2string, define them using trans_var in file data_input.tpl |
// To exclude variables from compare, pack, and unpack methods, define them using trans_meta in file data_input.tpl |
|
// Transaction variables |
rand logic [15:0] data; |
constraint c_data { 0 <= data; data < 128; } |
|
|
extern function new(string name = ""); |
|
// You can remove do_copy/compare/print/record and convert2string method by setting trans_generate_methods_inside_class = no in file data_input.tpl |
extern function void do_copy(uvm_object rhs); |
extern function bit do_compare(uvm_object rhs, uvm_comparer comparer); |
extern function void do_print(uvm_printer printer); |
extern function void do_record(uvm_recorder recorder); |
extern function void do_pack(uvm_packer packer); |
extern function void do_unpack(uvm_packer packer); |
extern function string convert2string(); |
|
// You can insert code here by setting trans_inc_inside_class in file data_input.tpl |
|
endclass : input_tx |
|
|
function input_tx::new(string name = ""); |
super.new(name); |
endfunction : new |
|
|
// You can remove do_copy/compare/print/record and convert2string method by setting trans_generate_methods_after_class = no in file data_input.tpl |
|
function void input_tx::do_copy(uvm_object rhs); |
input_tx rhs_; |
if (!$cast(rhs_, rhs)) |
`uvm_fatal(get_type_name(), "Cast of rhs object failed") |
super.do_copy(rhs); |
data = rhs_.data; |
endfunction : do_copy |
|
|
function bit input_tx::do_compare(uvm_object rhs, uvm_comparer comparer); |
bit result; |
input_tx rhs_; |
if (!$cast(rhs_, rhs)) |
`uvm_fatal(get_type_name(), "Cast of rhs object failed") |
result = super.do_compare(rhs, comparer); |
result &= comparer.compare_field("data", data, rhs_.data, $bits(data)); |
return result; |
endfunction : do_compare |
|
|
function void input_tx::do_print(uvm_printer printer); |
if (printer.knobs.sprint == 0) |
`uvm_info(get_type_name(), convert2string(), UVM_MEDIUM) |
else |
printer.m_string = convert2string(); |
endfunction : do_print |
|
|
function void input_tx::do_record(uvm_recorder recorder); |
super.do_record(recorder); |
// Use the record macros to record the item fields: |
`uvm_record_field("data", data) |
endfunction : do_record |
|
|
function void input_tx::do_pack(uvm_packer packer); |
super.do_pack(packer); |
`uvm_pack_int(data) |
endfunction : do_pack |
|
|
function void input_tx::do_unpack(uvm_packer packer); |
super.do_unpack(packer); |
`uvm_unpack_int(data) |
endfunction : do_unpack |
|
|
function string input_tx::convert2string(); |
string s; |
$sformat(s, "%s\n", super.convert2string()); |
$sformat(s, {"%s\n", |
"data = 'h%0h 'd%0d\n"}, |
get_full_name(), data, data); |
return s; |
endfunction : convert2string |
|
|
// You can insert code here by setting trans_inc_after_class in file data_input.tpl |
|
`endif // DATA_INPUT_SEQ_ITEM_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_monitor.sv
0,0 → 1,79
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_monitor.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Monitor for data_input |
//============================================================================= |
|
`ifndef DATA_INPUT_MONITOR_SV |
`define DATA_INPUT_MONITOR_SV |
|
// You can insert code here by setting monitor_inc_before_class in file data_input.tpl |
|
class data_input_monitor extends uvm_monitor; |
|
`uvm_component_utils(data_input_monitor) |
|
virtual data_input_if vif; |
|
uvm_analysis_port #(input_tx) analysis_port; |
|
input_tx m_trans; |
|
extern function new(string name, uvm_component parent); |
|
// Methods build_phase, run_phase, and do_mon generated by setting monitor_inc in file data_input.tpl |
extern function void build_phase(uvm_phase phase); |
extern task run_phase(uvm_phase phase); |
extern task do_mon(); |
|
// You can insert code here by setting monitor_inc_inside_class in file data_input.tpl |
|
endclass : data_input_monitor |
|
|
function data_input_monitor::new(string name, uvm_component parent); |
super.new(name, parent); |
analysis_port = new("analysis_port", this); |
endfunction : new |
|
|
function void data_input_monitor::build_phase(uvm_phase phase); |
endfunction : build_phase |
|
|
task data_input_monitor::run_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "run_phase", UVM_HIGH) |
|
m_trans = input_tx::type_id::create("m_trans"); |
do_mon(); |
endtask : run_phase |
|
|
// Start of inlined include file generated_tb/tb/include/data_input_do_mon.sv |
task data_input_monitor::do_mon; |
forever @(posedge vif.clk) |
begin |
wait (vif.reset == 1); |
if (vif.valid && vif.ready) |
begin |
m_trans.data = vif.data; |
analysis_port.write(m_trans); |
`uvm_info(get_type_name(), $sformatf("Input data = %0d", m_trans.data), UVM_HIGH) |
end |
end |
endtask |
// End of inlined include file |
|
// You can insert code here by setting monitor_inc_after_class in file data_input.tpl |
|
`endif // DATA_INPUT_MONITOR_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_pkg.sv
0,0 → 1,32
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_pkg.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Package for agent data_input |
//============================================================================= |
|
package data_input_pkg; |
|
`include "uvm_macros.svh" |
|
import uvm_pkg::*; |
|
|
`include "data_input_input_tx.sv" |
`include "data_input_config.sv" |
`include "data_input_driver.sv" |
`include "data_input_monitor.sv" |
`include "data_input_sequencer.sv" |
`include "data_input_coverage.sv" |
`include "data_input_agent.sv" |
`include "data_input_seq_lib.sv" |
|
endpackage : data_input_pkg |
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_seq_lib.sv
0,0 → 1,68
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_seq_lib.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Sequence for agent data_input |
//============================================================================= |
|
`ifndef DATA_INPUT_SEQ_LIB_SV |
`define DATA_INPUT_SEQ_LIB_SV |
|
class data_input_default_seq extends uvm_sequence #(input_tx); |
|
`uvm_object_utils(data_input_default_seq) |
|
extern function new(string name = ""); |
extern task body(); |
|
`ifndef UVM_POST_VERSION_1_1 |
// Functions to support UVM 1.2 objection API in UVM 1.1 |
extern function uvm_phase get_starting_phase(); |
extern function void set_starting_phase(uvm_phase phase); |
`endif |
|
endclass : data_input_default_seq |
|
|
function data_input_default_seq::new(string name = ""); |
super.new(name); |
endfunction : new |
|
|
task data_input_default_seq::body(); |
`uvm_info(get_type_name(), "Default sequence starting", UVM_HIGH) |
|
req = input_tx::type_id::create("req"); |
start_item(req); |
if ( !req.randomize() ) |
`uvm_error(get_type_name(), "Failed to randomize transaction") |
finish_item(req); |
|
`uvm_info(get_type_name(), "Default sequence completed", UVM_HIGH) |
endtask : body |
|
|
`ifndef UVM_POST_VERSION_1_1 |
function uvm_phase data_input_default_seq::get_starting_phase(); |
return starting_phase; |
endfunction: get_starting_phase |
|
|
function void data_input_default_seq::set_starting_phase(uvm_phase phase); |
starting_phase = phase; |
endfunction: set_starting_phase |
`endif |
|
|
// You can insert code here by setting agent_seq_inc in file data_input.tpl |
|
`endif // DATA_INPUT_SEQ_LIB_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_input/sv/data_input_sequencer.sv
0,0 → 1,24
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_input_sequencer.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Sequencer for data_input |
//============================================================================= |
|
`ifndef DATA_INPUT_SEQUENCER_SV |
`define DATA_INPUT_SEQUENCER_SV |
|
// Sequencer class is specialization of uvm_sequencer |
typedef uvm_sequencer #(input_tx) data_input_sequencer_t; |
|
|
`endif // DATA_INPUT_SEQUENCER_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_agent.sv
0,0 → 1,111
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_agent.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Agent for data_output |
//============================================================================= |
|
`ifndef DATA_OUTPUT_AGENT_SV |
`define DATA_OUTPUT_AGENT_SV |
|
// You can insert code here by setting agent_inc_before_class in file data_output.tpl |
|
class data_output_agent extends uvm_agent; |
|
`uvm_component_utils(data_output_agent) |
|
uvm_analysis_port #(output_tx) analysis_port; |
|
data_output_config m_config; |
data_output_sequencer_t m_sequencer; |
data_output_driver m_driver; |
data_output_monitor m_monitor; |
|
local int m_is_active = -1; |
|
extern function new(string name, uvm_component parent); |
|
// You can remove build/connect_phase and get_is_active by setting agent_generate_methods_inside_class = no in file data_output.tpl |
|
extern function void build_phase(uvm_phase phase); |
extern function void connect_phase(uvm_phase phase); |
extern function uvm_active_passive_enum get_is_active(); |
|
// You can insert code here by setting agent_inc_inside_class in file data_output.tpl |
|
endclass : data_output_agent |
|
|
function data_output_agent::new(string name, uvm_component parent); |
super.new(name, parent); |
analysis_port = new("analysis_port", this); |
endfunction : new |
|
|
// You can remove build/connect_phase and get_is_active by setting agent_generate_methods_after_class = no in file data_output.tpl |
|
function void data_output_agent::build_phase(uvm_phase phase); |
|
// You can insert code here by setting agent_prepend_to_build_phase in file data_output.tpl |
|
if (!uvm_config_db #(data_output_config)::get(this, "", "config", m_config)) |
`uvm_error(get_type_name(), "data_output config not found") |
|
m_monitor = data_output_monitor ::type_id::create("m_monitor", this); |
|
if (get_is_active() == UVM_ACTIVE) |
begin |
m_driver = data_output_driver ::type_id::create("m_driver", this); |
m_sequencer = data_output_sequencer_t::type_id::create("m_sequencer", this); |
end |
|
// You can insert code here by setting agent_append_to_build_phase in file data_output.tpl |
|
endfunction : build_phase |
|
|
function void data_output_agent::connect_phase(uvm_phase phase); |
if (m_config.vif == null) |
`uvm_warning(get_type_name(), "data_output virtual interface is not set!") |
|
m_monitor.vif = m_config.vif; |
m_monitor.analysis_port.connect(analysis_port); |
|
if (get_is_active() == UVM_ACTIVE) |
begin |
m_driver.seq_item_port.connect(m_sequencer.seq_item_export); |
m_driver.vif = m_config.vif; |
end |
|
// You can insert code here by setting agent_append_to_connect_phase in file data_output.tpl |
|
endfunction : connect_phase |
|
|
function uvm_active_passive_enum data_output_agent::get_is_active(); |
if (m_is_active == -1) |
begin |
if (uvm_config_db#(uvm_bitstream_t)::get(this, "", "is_active", m_is_active)) |
begin |
if (m_is_active != m_config.is_active) |
`uvm_warning(get_type_name(), "is_active field in config_db conflicts with config object") |
end |
else |
m_is_active = m_config.is_active; |
end |
return uvm_active_passive_enum'(m_is_active); |
endfunction : get_is_active |
|
|
// You can insert code here by setting agent_inc_after_class in file data_output.tpl |
|
`endif // DATA_OUTPUT_AGENT_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_config.sv
0,0 → 1,52
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_config.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Configuration for agent data_output |
//============================================================================= |
|
`ifndef DATA_OUTPUT_CONFIG_SV |
`define DATA_OUTPUT_CONFIG_SV |
|
// You can insert code here by setting agent_config_inc_before_class in file data_output.tpl |
|
class data_output_config extends uvm_object; |
|
// Do not register config class with the factory |
|
virtual data_output_if vif; |
|
uvm_active_passive_enum is_active = UVM_ACTIVE; |
bit coverage_enable; |
bit checks_enable; |
|
// You can insert variables here by setting config_var in file data_output.tpl |
|
// You can remove new by setting agent_config_generate_methods_inside_class = no in file data_output.tpl |
|
extern function new(string name = ""); |
|
// You can insert code here by setting agent_config_inc_inside_class in file data_output.tpl |
|
endclass : data_output_config |
|
|
// You can remove new by setting agent_config_generate_methods_after_class = no in file data_output.tpl |
|
function data_output_config::new(string name = ""); |
super.new(name); |
endfunction : new |
|
|
// You can insert code here by setting agent_config_inc_after_class in file data_output.tpl |
|
`endif // DATA_OUTPUT_CONFIG_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_coverage.sv
0,0 → 1,90
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_coverage.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Coverage for agent data_output |
//============================================================================= |
|
`ifndef DATA_OUTPUT_COVERAGE_SV |
`define DATA_OUTPUT_COVERAGE_SV |
|
// You can insert code here by setting agent_cover_inc_before_class in file data_output.tpl |
|
class data_output_coverage extends uvm_subscriber #(output_tx); |
|
`uvm_component_utils(data_output_coverage) |
|
data_output_config m_config; |
bit m_is_covered; |
output_tx m_item; |
|
// You can replace covergroup m_cov by setting agent_cover_inc in file data_output.tpl |
// or remove covergroup m_cov by setting agent_cover_generate_methods_inside_class = no in file data_output.tpl |
|
covergroup m_cov; |
option.per_instance = 1; |
// You may insert additional coverpoints here ... |
|
cp_data: coverpoint m_item.data; |
// Add bins here if required |
|
endgroup |
|
// You can remove new, write, and report_phase by setting agent_cover_generate_methods_inside_class = no in file data_output.tpl |
|
extern function new(string name, uvm_component parent); |
extern function void write(input output_tx t); |
extern function void build_phase(uvm_phase phase); |
extern function void report_phase(uvm_phase phase); |
|
// You can insert code here by setting agent_cover_inc_inside_class in file data_output.tpl |
|
endclass : data_output_coverage |
|
|
// You can remove new, write, and report_phase by setting agent_cover_generate_methods_after_class = no in file data_output.tpl |
|
function data_output_coverage::new(string name, uvm_component parent); |
super.new(name, parent); |
m_is_covered = 0; |
m_cov = new(); |
endfunction : new |
|
|
function void data_output_coverage::write(input output_tx t); |
m_item = t; |
if (m_config.coverage_enable) |
begin |
m_cov.sample(); |
// Check coverage - could use m_cov.option.goal instead of 100 if your simulator supports it |
if (m_cov.get_inst_coverage() >= 100) m_is_covered = 1; |
end |
endfunction : write |
|
|
function void data_output_coverage::build_phase(uvm_phase phase); |
if (!uvm_config_db #(data_output_config)::get(this, "", "config", m_config)) |
`uvm_error(get_type_name(), "data_output config not found") |
endfunction : build_phase |
|
|
function void data_output_coverage::report_phase(uvm_phase phase); |
if (m_config.coverage_enable) |
`uvm_info(get_type_name(), $sformatf("Coverage score = %3.1f%%", m_cov.get_inst_coverage()), UVM_MEDIUM) |
else |
`uvm_info(get_type_name(), "Coverage disabled for this agent", UVM_MEDIUM) |
endfunction : report_phase |
|
|
// You can insert code here by setting agent_cover_inc_after_class in file data_output.tpl |
|
`endif // DATA_OUTPUT_COVERAGE_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_driver.sv
0,0 → 1,65
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_driver.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Driver for data_output |
//============================================================================= |
|
`ifndef DATA_OUTPUT_DRIVER_SV |
`define DATA_OUTPUT_DRIVER_SV |
|
// You can insert code here by setting driver_inc_before_class in file data_output.tpl |
|
class data_output_driver extends uvm_driver #(output_tx); |
|
`uvm_component_utils(data_output_driver) |
|
virtual data_output_if vif; |
|
extern function new(string name, uvm_component parent); |
|
// Start of inlined include file generated_tb/tb/include/data_output_driver_inc_inside_class.sv |
extern task run_phase(uvm_phase phase); |
// End of inlined include file |
|
endclass : data_output_driver |
|
|
function data_output_driver::new(string name, uvm_component parent); |
super.new(name, parent); |
endfunction : new |
|
|
// Start of inlined include file generated_tb/tb/include/data_output_driver_inc_after_class.sv |
task data_output_driver::run_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "run_phase", UVM_HIGH) |
|
forever @(posedge vif.clk) |
begin |
seq_item_port.get_next_item(req); |
phase.raise_objection(this); |
|
vif.ready <= 1; |
wait (vif.reset == 1); |
|
fork |
begin |
repeat (10) @(posedge vif.clk); |
phase.drop_objection(this); |
end |
join_none |
seq_item_port.item_done(); |
end |
endtask : run_phase |
// End of inlined include file |
|
`endif // DATA_OUTPUT_DRIVER_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_if.sv
0,0 → 1,40
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_if.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Signal interface for agent data_output |
//============================================================================= |
|
`ifndef DATA_OUTPUT_IF_SV |
`define DATA_OUTPUT_IF_SV |
|
interface data_output_if(); |
|
timeunit 1ns; |
timeprecision 1ps; |
|
import data_output_pkg::*; |
|
logic last; |
logic valid; |
logic ready; |
logic [15:0] data; |
logic clk; |
logic reset; |
|
// You can insert properties and assertions here |
|
// You can insert code here by setting if_inc_inside_interface in file data_output.tpl |
|
endinterface : data_output_if |
|
`endif // DATA_OUTPUT_IF_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_monitor.sv
0,0 → 1,79
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_monitor.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Monitor for data_output |
//============================================================================= |
|
`ifndef DATA_OUTPUT_MONITOR_SV |
`define DATA_OUTPUT_MONITOR_SV |
|
// You can insert code here by setting monitor_inc_before_class in file data_output.tpl |
|
class data_output_monitor extends uvm_monitor; |
|
`uvm_component_utils(data_output_monitor) |
|
virtual data_output_if vif; |
|
uvm_analysis_port #(output_tx) analysis_port; |
|
output_tx m_trans; |
|
extern function new(string name, uvm_component parent); |
|
// Methods build_phase, run_phase, and do_mon generated by setting monitor_inc in file data_output.tpl |
extern function void build_phase(uvm_phase phase); |
extern task run_phase(uvm_phase phase); |
extern task do_mon(); |
|
// You can insert code here by setting monitor_inc_inside_class in file data_output.tpl |
|
endclass : data_output_monitor |
|
|
function data_output_monitor::new(string name, uvm_component parent); |
super.new(name, parent); |
analysis_port = new("analysis_port", this); |
endfunction : new |
|
|
function void data_output_monitor::build_phase(uvm_phase phase); |
endfunction : build_phase |
|
|
task data_output_monitor::run_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "run_phase", UVM_HIGH) |
|
m_trans = output_tx::type_id::create("m_trans"); |
do_mon(); |
endtask : run_phase |
|
|
// Start of inlined include file generated_tb/tb/include/data_output_do_mon.sv |
task data_output_monitor::do_mon; |
forever @(posedge vif.clk) |
begin |
wait (vif.reset == 1); |
if (vif.valid && vif.ready) |
begin |
m_trans.data = vif.data; |
analysis_port.write(m_trans); |
`uvm_info(get_type_name(), $sformatf("Output data = %0d",m_trans.data), UVM_HIGH) |
end |
end |
endtask |
// End of inlined include file |
|
// You can insert code here by setting monitor_inc_after_class in file data_output.tpl |
|
`endif // DATA_OUTPUT_MONITOR_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_output_tx.sv
0,0 → 1,115
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_seq_item.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Sequence item for data_output_sequencer |
//============================================================================= |
|
`ifndef DATA_OUTPUT_SEQ_ITEM_SV |
`define DATA_OUTPUT_SEQ_ITEM_SV |
|
// You can insert code here by setting trans_inc_before_class in file data_output.tpl |
|
class output_tx extends uvm_sequence_item; |
|
`uvm_object_utils(output_tx) |
|
// To include variables in copy, compare, print, record, pack, unpack, and compare2string, define them using trans_var in file data_output.tpl |
// To exclude variables from compare, pack, and unpack methods, define them using trans_meta in file data_output.tpl |
|
// Transaction variables |
rand logic [15:0] data; |
|
|
extern function new(string name = ""); |
|
// You can remove do_copy/compare/print/record and convert2string method by setting trans_generate_methods_inside_class = no in file data_output.tpl |
extern function void do_copy(uvm_object rhs); |
extern function bit do_compare(uvm_object rhs, uvm_comparer comparer); |
extern function void do_print(uvm_printer printer); |
extern function void do_record(uvm_recorder recorder); |
extern function void do_pack(uvm_packer packer); |
extern function void do_unpack(uvm_packer packer); |
extern function string convert2string(); |
|
// You can insert code here by setting trans_inc_inside_class in file data_output.tpl |
|
endclass : output_tx |
|
|
function output_tx::new(string name = ""); |
super.new(name); |
endfunction : new |
|
|
// You can remove do_copy/compare/print/record and convert2string method by setting trans_generate_methods_after_class = no in file data_output.tpl |
|
function void output_tx::do_copy(uvm_object rhs); |
output_tx rhs_; |
if (!$cast(rhs_, rhs)) |
`uvm_fatal(get_type_name(), "Cast of rhs object failed") |
super.do_copy(rhs); |
data = rhs_.data; |
endfunction : do_copy |
|
|
function bit output_tx::do_compare(uvm_object rhs, uvm_comparer comparer); |
bit result; |
output_tx rhs_; |
if (!$cast(rhs_, rhs)) |
`uvm_fatal(get_type_name(), "Cast of rhs object failed") |
result = super.do_compare(rhs, comparer); |
result &= comparer.compare_field("data", data, rhs_.data, $bits(data)); |
return result; |
endfunction : do_compare |
|
|
function void output_tx::do_print(uvm_printer printer); |
if (printer.knobs.sprint == 0) |
`uvm_info(get_type_name(), convert2string(), UVM_MEDIUM) |
else |
printer.m_string = convert2string(); |
endfunction : do_print |
|
|
function void output_tx::do_record(uvm_recorder recorder); |
super.do_record(recorder); |
// Use the record macros to record the item fields: |
`uvm_record_field("data", data) |
endfunction : do_record |
|
|
function void output_tx::do_pack(uvm_packer packer); |
super.do_pack(packer); |
`uvm_pack_int(data) |
endfunction : do_pack |
|
|
function void output_tx::do_unpack(uvm_packer packer); |
super.do_unpack(packer); |
`uvm_unpack_int(data) |
endfunction : do_unpack |
|
|
function string output_tx::convert2string(); |
string s; |
$sformat(s, "%s\n", super.convert2string()); |
$sformat(s, {"%s\n", |
"data = 'h%0h 'd%0d\n"}, |
get_full_name(), data, data); |
return s; |
endfunction : convert2string |
|
|
// You can insert code here by setting trans_inc_after_class in file data_output.tpl |
|
`endif // DATA_OUTPUT_SEQ_ITEM_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_pkg.sv
0,0 → 1,32
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_pkg.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Package for agent data_output |
//============================================================================= |
|
package data_output_pkg; |
|
`include "uvm_macros.svh" |
|
import uvm_pkg::*; |
|
|
`include "data_output_output_tx.sv" |
`include "data_output_config.sv" |
`include "data_output_driver.sv" |
`include "data_output_monitor.sv" |
`include "data_output_sequencer.sv" |
`include "data_output_coverage.sv" |
`include "data_output_agent.sv" |
`include "data_output_seq_lib.sv" |
|
endpackage : data_output_pkg |
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_seq_lib.sv
0,0 → 1,68
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_seq_lib.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Sequence for agent data_output |
//============================================================================= |
|
`ifndef DATA_OUTPUT_SEQ_LIB_SV |
`define DATA_OUTPUT_SEQ_LIB_SV |
|
class data_output_default_seq extends uvm_sequence #(output_tx); |
|
`uvm_object_utils(data_output_default_seq) |
|
extern function new(string name = ""); |
extern task body(); |
|
`ifndef UVM_POST_VERSION_1_1 |
// Functions to support UVM 1.2 objection API in UVM 1.1 |
extern function uvm_phase get_starting_phase(); |
extern function void set_starting_phase(uvm_phase phase); |
`endif |
|
endclass : data_output_default_seq |
|
|
function data_output_default_seq::new(string name = ""); |
super.new(name); |
endfunction : new |
|
|
task data_output_default_seq::body(); |
`uvm_info(get_type_name(), "Default sequence starting", UVM_HIGH) |
|
req = output_tx::type_id::create("req"); |
start_item(req); |
if ( !req.randomize() ) |
`uvm_error(get_type_name(), "Failed to randomize transaction") |
finish_item(req); |
|
`uvm_info(get_type_name(), "Default sequence completed", UVM_HIGH) |
endtask : body |
|
|
`ifndef UVM_POST_VERSION_1_1 |
function uvm_phase data_output_default_seq::get_starting_phase(); |
return starting_phase; |
endfunction: get_starting_phase |
|
|
function void data_output_default_seq::set_starting_phase(uvm_phase phase); |
starting_phase = phase; |
endfunction: set_starting_phase |
`endif |
|
|
// You can insert code here by setting agent_seq_inc in file data_output.tpl |
|
`endif // DATA_OUTPUT_SEQ_LIB_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/data_output/sv/data_output_sequencer.sv
0,0 → 1,24
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: data_output_sequencer.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Sequencer for data_output |
//============================================================================= |
|
`ifndef DATA_OUTPUT_SEQUENCER_SV |
`define DATA_OUTPUT_SEQUENCER_SV |
|
// Sequencer class is specialization of uvm_sequencer |
typedef uvm_sequencer #(output_tx) data_output_sequencer_t; |
|
|
`endif // DATA_OUTPUT_SEQUENCER_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/data_input_cover_inc.sv
0,0 → 1,7
covergroup m_cov; |
option.per_instance = 1; |
|
cp_data: coverpoint m_item.data { |
bins data_values[] = {[0:127]}; |
} |
endgroup |
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/data_input_do_mon.sv
0,0 → 1,12
task data_input_monitor::do_mon; |
forever @(posedge vif.clk) |
begin |
wait (vif.reset == 1); |
if (vif.valid && vif.ready) |
begin |
m_trans.data = vif.data; |
analysis_port.write(m_trans); |
`uvm_info(get_type_name(), $sformatf("Input data = %0d", m_trans.data), UVM_HIGH) |
end |
end |
endtask |
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/data_input_driver_inc_after_class.sv
0,0 → 1,22
task data_input_driver::run_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "run_phase", UVM_HIGH) |
|
forever @(posedge vif.clk) |
begin |
seq_item_port.get_next_item(req); |
phase.raise_objection(this); |
wait (vif.reset == 1); |
vif.data <= req.data; |
vif.valid <= 1; |
vif.last <= 0; |
wait (vif.ready == 1); |
|
fork |
begin |
repeat (10) @(posedge vif.clk); |
phase.drop_objection(this); |
end |
join_none |
seq_item_port.item_done(); |
end |
endtask : run_phase |
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/data_input_driver_inc_inside_class.sv
0,0 → 1,22
extern task run_phase(uvm_phase phase); |
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/data_output_do_mon.sv
0,0 → 1,12
task data_output_monitor::do_mon; |
forever @(posedge vif.clk) |
begin |
wait (vif.reset == 1); |
if (vif.valid && vif.ready) |
begin |
m_trans.data = vif.data; |
analysis_port.write(m_trans); |
`uvm_info(get_type_name(), $sformatf("Output data = %0d",m_trans.data), UVM_HIGH) |
end |
end |
endtask |
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/data_output_driver_inc_after_class.sv
0,0 → 1,20
task data_output_driver::run_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "run_phase", UVM_HIGH) |
|
forever @(posedge vif.clk) |
begin |
seq_item_port.get_next_item(req); |
phase.raise_objection(this); |
|
vif.ready <= 1; |
wait (vif.reset == 1); |
|
fork |
begin |
repeat (10) @(posedge vif.clk); |
phase.drop_objection(this); |
end |
join_none |
seq_item_port.item_done(); |
end |
endtask : run_phase |
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/data_output_driver_inc_inside_class.sv
0,0 → 1,2
extern task run_phase(uvm_phase phase); |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/reference_inc_after_class.sv
0,0 → 1,22
function void reference::write_reference_0(input_tx t); |
send(t); |
endfunction |
|
function void reference::send(input_tx t); |
output_tx tx; |
tx = output_tx::type_id::create("tx"); |
if (init_flag == 1) |
begin |
init_flag = 0; |
foreach(tx_save[j]) |
tx_save[j] = 0; |
end |
if (save_pnt == 5) |
save_pnt = 0; |
else |
save_pnt++; |
tx_save[save_pnt] = t.data; |
tx.data = tx_save[0] + tx_save[1] + tx_save[2] + tx_save[3] + tx_save[4] + tx_save[5]; |
analysis_port_0.write(tx); |
`uvm_info(get_type_name(), $sformatf("Reference Model save_pnt = %0d, data = %0d",save_pnt, tx.data), UVM_HIGH) |
endfunction |
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/reference_inc_inside_class.sv
0,0 → 1,5
extern function void send(input_tx t); |
|
int save_pnt = 5; |
logic [15:0] tx_save [0:5]; |
int init_flag = 1; |
/trunk/uvm/lpffir_uvm/generated_tb/tb/include/vcd_dump.sv
0,0 → 1,2
$dumpfile("dump.vcd"); |
$dumpvars; |
/trunk/uvm/lpffir_uvm/generated_tb/tb/top/sv/port_converter.sv
0,0 → 1,40
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: port_converter.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Analysis port type converter class for use with Syosil scoreboard |
//============================================================================= |
|
`ifndef PORT_CONVERTER_SV |
`define PORT_CONVERTER_SV |
|
|
class port_converter #(type T = uvm_sequence_item) extends uvm_subscriber #(T); |
`uvm_component_param_utils(port_converter#(T)) |
|
// For connecting analysis port of monitor to analysis export of Syosil scoreboard |
|
uvm_analysis_port #(uvm_sequence_item) analysis_port; |
|
function new(string name, uvm_component parent); |
super.new(name, parent); |
analysis_port = new("a_port", this); |
endfunction |
|
function void write(T t); |
analysis_port.write(t); |
endfunction |
|
endclass |
|
|
`endif // PORT_CONVERTER_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/top/sv/reference.sv
0,0 → 1,77
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: reference.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Reference model for use with Syosil scoreboard |
//============================================================================= |
|
`ifndef REFERENCE_SV |
`define REFERENCE_SV |
|
// You can insert code here by setting ref_model_inc_before_class in file common.tpl |
|
|
`uvm_analysis_imp_decl(_reference_0) |
|
class reference extends uvm_component; |
`uvm_component_utils(reference) |
|
uvm_analysis_imp_reference_0 #(input_tx, reference) analysis_export_0; // m_data_input_agent |
|
uvm_analysis_port #(uvm_sequence_item) analysis_port_0; // m_data_output_agent |
|
extern function new(string name, uvm_component parent); |
extern function void write_reference_0(input input_tx t); |
|
// Start of inlined include file generated_tb/tb/include/reference_inc_inside_class.sv |
extern function void send(input_tx t); |
|
int save_pnt = 5; |
logic [15:0] tx_save [0:5]; |
int init_flag = 1; // End of inlined include file |
|
endclass |
|
|
function reference::new(string name, uvm_component parent); |
super.new(name, parent); |
analysis_export_0 = new("analysis_export_0", this); |
analysis_port_0 = new("analysis_port_0", this); |
endfunction : new |
|
|
// Start of inlined include file generated_tb/tb/include/reference_inc_after_class.sv |
function void reference::write_reference_0(input_tx t); |
send(t); |
endfunction |
|
function void reference::send(input_tx t); |
output_tx tx; |
tx = output_tx::type_id::create("tx"); |
if (init_flag == 1) |
begin |
init_flag = 0; |
foreach(tx_save[j]) |
tx_save[j] = 0; |
end |
if (save_pnt == 5) |
save_pnt = 0; |
else |
save_pnt++; |
tx_save[save_pnt] = t.data; |
tx.data = tx_save[0] + tx_save[1] + tx_save[2] + tx_save[3] + tx_save[4] + tx_save[5]; |
analysis_port_0.write(tx); |
`uvm_info(get_type_name(), $sformatf("Reference Model save_pnt = %0d, data = %0d",save_pnt, tx.data), UVM_HIGH) |
endfunction |
// End of inlined include file |
|
`endif // REFERENCE_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/top/sv/top_config.sv
0,0 → 1,62
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: top_config.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Configuration for top |
//============================================================================= |
|
`ifndef TOP_CONFIG_SV |
`define TOP_CONFIG_SV |
|
// You can insert code here by setting top_env_config_inc_before_class in file common.tpl |
|
class top_config extends uvm_object; |
|
// Do not register config class with the factory |
|
rand data_input_config m_data_input_config; |
rand data_output_config m_data_output_config; |
|
// You can insert variables here by setting config_var in file common.tpl |
|
// You can remove new by setting top_env_config_generate_methods_inside_class = no in file common.tpl |
|
extern function new(string name = ""); |
|
// You can insert code here by setting top_env_config_inc_inside_class in file common.tpl |
|
endclass : top_config |
|
|
// You can remove new by setting top_env_config_generate_methods_after_class = no in file common.tpl |
|
function top_config::new(string name = ""); |
super.new(name); |
|
m_data_input_config = new("m_data_input_config"); |
m_data_input_config.is_active = UVM_ACTIVE; |
m_data_input_config.checks_enable = 1; |
m_data_input_config.coverage_enable = 1; |
|
m_data_output_config = new("m_data_output_config"); |
m_data_output_config.is_active = UVM_ACTIVE; |
m_data_output_config.checks_enable = 1; |
m_data_output_config.coverage_enable = 0; |
|
// You can insert code here by setting top_env_config_append_to_new in file common.tpl |
|
endfunction : new |
|
|
// You can insert code here by setting top_env_config_inc_after_class in file common.tpl |
|
`endif // TOP_CONFIG_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/top/sv/top_env.sv
0,0 → 1,190
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: top_env.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Environment for top |
//============================================================================= |
|
`ifndef TOP_ENV_SV |
`define TOP_ENV_SV |
|
// You can insert code here by setting top_env_inc_before_class in file common.tpl |
|
import pk_syoscb::*; |
|
class top_env extends uvm_env; |
|
`uvm_component_utils(top_env) |
|
extern function new(string name, uvm_component parent); |
|
// Reference model and Syosil scoreboard |
typedef port_converter #(output_tx) converter_m_data_output_agent_t; |
|
converter_m_data_output_agent_t m_converter_m_data_output_agent; |
|
reference m_reference; |
cl_syoscb m_reference_scoreboard; |
cl_syoscb_cfg m_reference_config; |
|
// Child agents |
data_input_config m_data_input_config; |
data_input_agent m_data_input_agent; |
data_input_coverage m_data_input_coverage; |
|
data_output_config m_data_output_config; |
data_output_agent m_data_output_agent; |
data_output_coverage m_data_output_coverage; |
|
top_config m_config; |
|
// You can remove build/connect/run_phase by setting top_env_generate_methods_inside_class = no in file common.tpl |
|
extern function void build_phase(uvm_phase phase); |
extern function void connect_phase(uvm_phase phase); |
extern function void end_of_elaboration_phase(uvm_phase phase); |
extern task run_phase(uvm_phase phase); |
|
// You can insert code here by setting top_env_inc_inside_class in file common.tpl |
|
endclass : top_env |
|
|
function top_env::new(string name, uvm_component parent); |
super.new(name, parent); |
endfunction : new |
|
|
// You can remove build/connect/run_phase by setting top_env_generate_methods_after_class = no in file common.tpl |
|
function void top_env::build_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "In build_phase", UVM_HIGH) |
|
// You can insert code here by setting top_env_prepend_to_build_phase in file common.tpl |
|
if (!uvm_config_db #(top_config)::get(this, "", "config", m_config)) |
`uvm_error(get_type_name(), "Unable to get top_config") |
|
m_data_input_config = m_config.m_data_input_config; |
|
// You can insert code here by setting agent_copy_config_vars in file data_input.tpl |
|
uvm_config_db #(data_input_config)::set(this, "m_data_input_agent", "config", m_data_input_config); |
if (m_data_input_config.is_active == UVM_ACTIVE ) |
uvm_config_db #(data_input_config)::set(this, "m_data_input_agent.m_sequencer", "config", m_data_input_config); |
uvm_config_db #(data_input_config)::set(this, "m_data_input_coverage", "config", m_data_input_config); |
|
m_data_output_config = m_config.m_data_output_config; |
|
// You can insert code here by setting agent_copy_config_vars in file data_output.tpl |
|
uvm_config_db #(data_output_config)::set(this, "m_data_output_agent", "config", m_data_output_config); |
if (m_data_output_config.is_active == UVM_ACTIVE ) |
uvm_config_db #(data_output_config)::set(this, "m_data_output_agent.m_sequencer", "config", m_data_output_config); |
uvm_config_db #(data_output_config)::set(this, "m_data_output_coverage", "config", m_data_output_config); |
|
// Default factory overrides for Syosil scoreboard |
cl_syoscb_queue::type_id::set_type_override(cl_syoscb_queue_std::type_id::get()); |
|
begin |
bit ok; |
uvm_factory factory = uvm_factory::get(); |
|
if (factory.find_override_by_type(cl_syoscb_compare_base::type_id::get(), "*") == cl_syoscb_compare_base::type_id::get()) |
cl_syoscb_compare_base::type_id::set_inst_override(cl_syoscb_compare_iop::type_id::get(), "m_reference_scoreboard.*", this); |
|
// Configuration object for Syosil scoreboard |
m_reference_config = cl_syoscb_cfg::type_id::create("m_reference_config"); |
m_reference_config.set_queues( {"DUT", "REF"} ); |
ok = m_reference_config.set_primary_queue("DUT"); |
assert(ok); |
ok = m_reference_config.set_producer("m_data_output_agent", {"DUT", "REF"} ); |
assert(ok); |
|
uvm_config_db#(cl_syoscb_cfg)::set(this, "m_reference_scoreboard", "cfg", m_reference_config); |
|
// Instantiate reference model and Syosil scoreboard |
m_reference = reference ::type_id::create("m_reference", this); |
m_converter_m_data_output_agent = converter_m_data_output_agent_t::type_id::create("m_converter_m_data_output_agent", this); |
m_reference_scoreboard = cl_syoscb ::type_id::create("m_reference_scoreboard", this); |
end |
|
|
m_data_input_agent = data_input_agent ::type_id::create("m_data_input_agent", this); |
m_data_input_coverage = data_input_coverage ::type_id::create("m_data_input_coverage", this); |
|
m_data_output_agent = data_output_agent ::type_id::create("m_data_output_agent", this); |
m_data_output_coverage = data_output_coverage::type_id::create("m_data_output_coverage", this); |
|
// You can insert code here by setting top_env_append_to_build_phase in file common.tpl |
|
endfunction : build_phase |
|
|
function void top_env::connect_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "In connect_phase", UVM_HIGH) |
|
m_data_input_agent.analysis_port.connect(m_data_input_coverage.analysis_export); |
|
m_data_output_agent.analysis_port.connect(m_data_output_coverage.analysis_export); |
|
begin |
// Connect reference model and Syosil scoreboard |
cl_syoscb_subscriber subscriber; |
|
m_data_input_agent.analysis_port.connect(m_reference.analysis_export_0); |
|
subscriber = m_reference_scoreboard.get_subscriber("REF", "m_data_output_agent"); |
m_reference.analysis_port_0.connect(subscriber.analysis_export); |
|
subscriber = m_reference_scoreboard.get_subscriber("DUT", "m_data_output_agent"); |
m_data_output_agent.analysis_port.connect(m_converter_m_data_output_agent.analysis_export); |
m_converter_m_data_output_agent.analysis_port.connect(subscriber.analysis_export); |
end |
|
// You can insert code here by setting top_env_append_to_connect_phase in file common.tpl |
|
endfunction : connect_phase |
|
|
// You can remove end_of_elaboration_phase by setting top_env_generate_end_of_elaboration = no in file common.tpl |
|
function void top_env::end_of_elaboration_phase(uvm_phase phase); |
uvm_factory factory = uvm_factory::get(); |
`uvm_info(get_type_name(), "Information printed from top_env::end_of_elaboration_phase method", UVM_MEDIUM) |
`uvm_info(get_type_name(), $sformatf("Verbosity threshold is %d", get_report_verbosity_level()), UVM_MEDIUM) |
uvm_top.print_topology(); |
factory.print(); |
endfunction : end_of_elaboration_phase |
|
|
// You can remove run_phase by setting top_env_generate_run_phase = no in file common.tpl |
|
task top_env::run_phase(uvm_phase phase); |
top_default_seq vseq; |
vseq = top_default_seq::type_id::create("vseq"); |
vseq.set_item_context(null, null); |
if ( !vseq.randomize() ) |
`uvm_fatal(get_type_name(), "Failed to randomize virtual sequence") |
vseq.m_data_input_agent = m_data_input_agent; |
vseq.m_data_output_agent = m_data_output_agent; |
vseq.set_starting_phase(phase); |
vseq.start(null); |
|
// You can insert code here by setting top_env_append_to_run_phase in file common.tpl |
|
endtask : run_phase |
|
|
// You can insert code here by setting top_env_inc_after_class in file common.tpl |
|
`endif // TOP_ENV_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/top/sv/top_pkg.sv
0,0 → 1,32
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: top_pkg.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Package for top |
//============================================================================= |
|
package top_pkg; |
|
`include "uvm_macros.svh" |
|
import uvm_pkg::*; |
|
import data_input_pkg::*; |
import data_output_pkg::*; |
|
`include "top_config.sv" |
`include "top_seq_lib.sv" |
`include "port_converter.sv" |
`include "reference.sv" |
`include "top_env.sv" |
|
endpackage : top_pkg |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/top/sv/top_seq_lib.sv
0,0 → 1,111
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: top_seq_lib.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Sequence for top |
//============================================================================= |
|
`ifndef TOP_SEQ_LIB_SV |
`define TOP_SEQ_LIB_SV |
|
class top_default_seq extends uvm_sequence #(uvm_sequence_item); |
|
`uvm_object_utils(top_default_seq) |
|
data_input_agent m_data_input_agent; |
data_output_agent m_data_output_agent; |
|
// Number of times to repeat child sequences |
int m_seq_count = 10; |
|
extern function new(string name = ""); |
extern task body(); |
extern task pre_start(); |
extern task post_start(); |
|
`ifndef UVM_POST_VERSION_1_1 |
// Functions to support UVM 1.2 objection API in UVM 1.1 |
extern function uvm_phase get_starting_phase(); |
extern function void set_starting_phase(uvm_phase phase); |
`endif |
|
endclass : top_default_seq |
|
|
function top_default_seq::new(string name = ""); |
super.new(name); |
endfunction : new |
|
|
task top_default_seq::body(); |
`uvm_info(get_type_name(), "Default sequence starting", UVM_HIGH) |
|
|
repeat (m_seq_count) |
begin |
fork |
if (m_data_input_agent.m_config.is_active == UVM_ACTIVE) |
begin |
data_input_default_seq seq; |
seq = data_input_default_seq::type_id::create("seq"); |
seq.set_item_context(this, m_data_input_agent.m_sequencer); |
if ( !seq.randomize() ) |
`uvm_error(get_type_name(), "Failed to randomize sequence") |
seq.set_starting_phase( get_starting_phase() ); |
seq.start(m_data_input_agent.m_sequencer, this); |
end |
if (m_data_output_agent.m_config.is_active == UVM_ACTIVE) |
begin |
data_output_default_seq seq; |
seq = data_output_default_seq::type_id::create("seq"); |
seq.set_item_context(this, m_data_output_agent.m_sequencer); |
if ( !seq.randomize() ) |
`uvm_error(get_type_name(), "Failed to randomize sequence") |
seq.set_starting_phase( get_starting_phase() ); |
seq.start(m_data_output_agent.m_sequencer, this); |
end |
join |
end |
|
`uvm_info(get_type_name(), "Default sequence completed", UVM_HIGH) |
endtask : body |
|
|
task top_default_seq::pre_start(); |
uvm_phase phase = get_starting_phase(); |
if (phase != null) |
phase.raise_objection(this); |
endtask: pre_start |
|
|
task top_default_seq::post_start(); |
uvm_phase phase = get_starting_phase(); |
if (phase != null) |
phase.drop_objection(this); |
endtask: post_start |
|
|
`ifndef UVM_POST_VERSION_1_1 |
function uvm_phase top_default_seq::get_starting_phase(); |
return starting_phase; |
endfunction: get_starting_phase |
|
|
function void top_default_seq::set_starting_phase(uvm_phase phase); |
starting_phase = phase; |
endfunction: set_starting_phase |
`endif |
|
|
// You can insert code here by setting top_seq_inc in file common.tpl |
|
`endif // TOP_SEQ_LIB_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/top_tb/sv/top_tb.sv
0,0 → 1,62
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: top_tb.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Testbench |
//============================================================================= |
|
module top_tb; |
|
timeunit 1ns; |
timeprecision 1ps; |
|
`include "uvm_macros.svh" |
|
import uvm_pkg::*; |
|
import top_test_pkg::*; |
import top_pkg::top_config; |
|
// Configuration object for top-level environment |
top_config top_env_config; |
|
// Test harness |
top_th th(); |
|
// You can insert code here by setting tb_inc_inside_module in file common.tpl |
|
// You can remove the initial block below by setting tb_generate_run_test = no in file common.tpl |
|
initial |
begin |
// Start of inlined include file generated_tb/tb/include/vcd_dump.sv |
$dumpfile("dump.vcd"); |
$dumpvars; |
// End of inlined include file |
|
// Create and populate top-level configuration object |
top_env_config = new("top_env_config"); |
if ( !top_env_config.randomize() ) |
`uvm_error("top_tb", "Failed to randomize top-level configuration object" ) |
|
top_env_config.m_data_input_config.vif = th.data_input_if_0; |
top_env_config.m_data_output_config.vif = th.data_output_if_0; |
|
uvm_config_db #(top_config)::set(null, "uvm_test_top", "config", top_env_config); |
uvm_config_db #(top_config)::set(null, "uvm_test_top.m_env", "config", top_env_config); |
|
// You can insert code here by setting tb_inc_before_run_test in file common.tpl |
|
run_test(); |
end |
|
endmodule |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/top_tb/sv/top_th.sv
0,0 → 1,66
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: top_th.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Test Harness |
//============================================================================= |
|
module top_th; |
|
timeunit 1ns; |
timeprecision 1ps; |
|
|
// You can remove clock and reset below by setting th_generate_clock_and_reset = no in file common.tpl |
|
// Example clock and reset declarations |
logic clock = 0; |
logic reset; |
|
// Example clock generator process |
always #10 clock = ~clock; |
|
// Example reset generator process |
initial |
begin |
reset = 0; // Active low reset in this example |
#75 reset = 1; |
end |
|
assign data_input_if_0.reset = reset; |
assign data_output_if_0.reset = reset; |
|
assign data_input_if_0.clk = clock; |
assign data_output_if_0.clk = clock; |
|
// You can insert code here by setting th_inc_inside_module in file common.tpl |
|
// Pin-level interfaces connected to DUT |
// You can remove interface instances by setting generate_interface_instance = no in the interface template file |
|
data_input_if data_input_if_0 (); |
data_output_if data_output_if_0 (); |
|
lpffir_axis uut ( |
.rx_tlast_i (data_input_if_0.last), |
.rx_tvalid_i(data_input_if_0.valid), |
.rx_tready_o(data_input_if_0.ready), |
.rx_tdata_i (data_input_if_0.data), |
.tx_tlast_o (data_output_if_0.last), |
.tx_tvalid_o(data_output_if_0.valid), |
.tx_tready_i(data_output_if_0.ready), |
.tx_tdata_o (data_output_if_0.data), |
.aclk_i (clock), |
.aresetn_i (reset) |
); |
|
endmodule |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/top_test/sv/top_test.sv
0,0 → 1,63
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: top_test.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Test class for top (included in package top_test_pkg) |
//============================================================================= |
|
`ifndef TOP_TEST_SV |
`define TOP_TEST_SV |
|
// You can insert code here by setting test_inc_before_class in file common.tpl |
|
class top_test extends uvm_test; |
|
`uvm_component_utils(top_test) |
|
top_env m_env; |
|
extern function new(string name, uvm_component parent); |
|
// You can remove build_phase method by setting test_generate_methods_inside_class = no in file common.tpl |
|
extern function void build_phase(uvm_phase phase); |
|
// You can insert code here by setting test_inc_inside_class in file common.tpl |
|
endclass : top_test |
|
|
function top_test::new(string name, uvm_component parent); |
super.new(name, parent); |
endfunction : new |
|
|
// You can remove build_phase method by setting test_generate_methods_after_class = no in file common.tpl |
|
function void top_test::build_phase(uvm_phase phase); |
|
// You can insert code here by setting test_prepend_to_build_phase in file common.tpl |
|
// You could modify any test-specific configuration object variables here |
|
|
|
m_env = top_env::type_id::create("m_env", this); |
|
// You can insert code here by setting test_append_to_build_phase in file common.tpl |
|
endfunction : build_phase |
|
|
// You can insert code here by setting test_inc_after_class in file common.tpl |
|
`endif // TOP_TEST_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/tb/top_test/sv/top_test_pkg.sv
0,0 → 1,34
// You can insert code here by setting file_header_inc in file common.tpl |
|
//============================================================================= |
// Project : generated_tb |
// |
// File Name: top_test_pkg.sv |
// |
// |
// Version: 1.0 |
// |
// Code created by Easier UVM Code Generator version 2016-04-18-EP on Sat Apr 27 13:59:59 2019 |
//============================================================================= |
// Description: Test package for top |
//============================================================================= |
|
`ifndef TOP_TEST_PKG_SV |
`define TOP_TEST_PKG_SV |
|
package top_test_pkg; |
|
`include "uvm_macros.svh" |
|
import uvm_pkg::*; |
|
import data_input_pkg::*; |
import data_output_pkg::*; |
import top_pkg::*; |
|
`include "top_test.sv" |
|
endpackage : top_test_pkg |
|
`endif // TOP_TEST_PKG_SV |
|
/trunk/uvm/lpffir_uvm/generated_tb/sim.log
0,0 → 1,1027
[2019-04-27 10:02:44 EDT] EU_INC_PATH=`perl /playground_lib/easier_uvm_gen/easier_uvm_gen.pl -x inc_path` ; EU_DUT_SOURCE_PATH=`perl /playground_lib/easier_uvm_gen/easier_uvm_gen.pl -x dut_source_path` ; EU_PROJECT=`perl /playground_lib/easier_uvm_gen/easier_uvm_gen.pl -x project` ; EU_REGMODEL_FILE=`perl /playground_lib/easier_uvm_gen/easier_uvm_gen.pl -x regmodel_file` ; mkdir $EU_INC_PATH ; mv data_input_cover_inc.sv data_input_do_mon.sv data_input_driver_inc_after_class.sv data_input_driver_inc_inside_class.sv data_output_do_mon.sv reference_inc_after_class.sv reference_inc_inside_class.sv vcd_dump.sv data_output_driver_inc_inside_class.sv data_output_driver_inc_after_class.sv $EU_INC_PATH ; mkdir $EU_DUT_SOURCE_PATH ; mv design.sv lpffir_core.sv rca.sv fa.sv files.f $EU_DUT_SOURCE_PATH ; if [ -f $EU_INC_PATH/$EU_REGMODEL_FILE ]; then cp $EU_INC_PATH/$EU_REGMODEL_FILE . ; fi; perl /playground_lib/easier_uvm_gen/easier_uvm_gen.pl -s ../../playground_lib/uvm_syoscb/src -c data_input.tpl data_output.tpl ; cd $EU_PROJECT && cd sim ; chmod 755 compile_vcs.sh ; source ./compile_vcs.sh ; cd /home/runner |
Easier UVM Code Generator version 2016-04-18-EP |
Copying dut files to generated_tb/dut |
Copying include files to generated_tb/tb/include |
Generating testbench in generated_tb/tb |
Generating simulator scripts in generated_tb/sim |
Generated hierarchy of envs and agents: |
m_data_input_agent |
m_data_output_agent |
|
Warning-[LNX_OS_VERUN] Unsupported Linux version |
Linux version 'CentOS Linux release 7.1.1503 (Core) ' is not supported on |
'x86_64' officially, assuming linux compatibility by default. Set |
VCS_ARCH_OVERRIDE to linux or suse32 to override. |
Please refer to release notes for information on supported platforms. |
|
|
Warning-[LINX_KRNL] Unsupported Linux kernel |
Linux kernel '3.13.0-71-generic' is not supported. |
Supported versions are 2.4* or 2.6*. |
|
Chronologic VCS (TM) |
Version J-2014.12-SP1-1 -- Sat Apr 27 14:02:46 2019 |
Copyright (c) 1991-2014 by Synopsys Inc. |
ALL RIGHTS RESERVED |
|
This program is proprietary and confidential information of Synopsys Inc. |
and may be used and disclosed only as authorized in a license agreement |
controlling such use and disclosure. |
|
Warning : License for product VCSCompiler_Net(723) will expire within 4 days, on: 30-apr-2019. |
|
If you would like to temporarily disable this message, set |
the VCS_LIC_EXPIRE_WARNING environment variable to the number of days |
before expiration that you want this message to start (the minimum is 0). |
Parsing design file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv' |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_version_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_global_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_message_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_phase_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_object_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_printer_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_tlm_defines.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm_imps.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_tlm_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_sequence_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_callback_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_reg_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/macros/uvm_deprecated_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/dpi/uvm_dpi.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/dpi/uvm_hdl.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/dpi/uvm_dpi.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/dpi/uvm_svcmd_dpi.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/dpi/uvm_dpi.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/dpi/uvm_regex.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/dpi/uvm_dpi.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_coreservice.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_version.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_object_globals.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_misc.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_object.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_pool.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_queue.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_factory.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_registry.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_spell_chkr.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_resource.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_resource_specializations.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_resource_db.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_config_db.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_printer.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_comparer.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_packer.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_links.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_tr_database.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_tr_stream.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_recorder.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_event_callback.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_event.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_barrier.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_callback.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_callback.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_report_message.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_report_catcher.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_report_server.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_report_handler.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_report_object.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_transaction.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_phase.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_domain.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_bottomup_phase.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_topdown_phase.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_task_phase.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_common_phases.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_runtime_phases.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_component.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_root.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_component.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_objection.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_heartbeat.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_globals.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_cmdline_processor.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_traversal.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/base/uvm_base.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/dap/uvm_dap.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/dap/uvm_set_get_dap_base.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/dap/uvm_dap.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/dap/uvm_simple_lock_dap.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/dap/uvm_dap.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/dap/uvm_get_to_lock_dap.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/dap/uvm_dap.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/dap/uvm_set_before_get_dap.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/dap/uvm_dap.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm_ifs.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_sqr_ifs.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/base/uvm_port_base.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm_imps.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_imps.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_ports.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_exports.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_analysis_port.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm_fifo_base.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm_fifos.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm_req_rsp.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_sqr_connections.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm1/uvm_tlm.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_pair.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_policies.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_in_order_comparator.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_algorithmic_comparator.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_random_stimulus.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_subscriber.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_monitor.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_driver.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_push_driver.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_scoreboard.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_agent.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_env.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_test.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/comps/uvm_comps.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_sequence_item.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_sequencer_base.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_sequencer_analysis_fifo.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_sequencer_param_base.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_sequencer.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_push_sequencer.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_sequence_base.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_sequence.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_sequence_library.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_sequence_builtin.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/seq/uvm_seq.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2_defines.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2_time.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2_generic_payload.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2_ifs.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2_imps.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2_ports.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2_exports.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2_sockets_base.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2_sockets.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/tlm2/uvm_tlm2.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_item.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_adapter.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_predictor.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_sequence.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_cbs.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_backdoor.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_field.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_vreg_field.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_indirect.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_fifo.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_file.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_mem_mam.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_vreg.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_mem.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_map.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_block.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/sequences/uvm_reg_hw_reset_seq.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/sequences/uvm_reg_bit_bash_seq.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/sequences/uvm_mem_walk_seq.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/sequences/uvm_mem_access_seq.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/sequences/uvm_reg_access_seq.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/sequences/uvm_reg_mem_shared_access_seq.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/sequences/uvm_reg_mem_built_in_seq.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/sequences/uvm_reg_mem_hdl_paths_seq.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/reg/snps_uvm_reg_bank.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/reg/uvm_reg_model.svh'. |
Back to file '/apps/vcsmx/etc/uvm-1.2/uvm_pkg.sv'. |
Parsing design file '../dut/fa.sv' |
Parsing design file '../dut/rca.sv' |
Parsing design file '../dut/lpffir_core.sv' |
Parsing design file '../dut/design.sv' |
Parsing design file '../tb/data_input/sv/data_input_pkg.sv' |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Back to file '../tb/data_input/sv/data_input_pkg.sv'. |
Parsing included file '../tb/data_input/sv/data_input_input_tx.sv'. |
Back to file '../tb/data_input/sv/data_input_pkg.sv'. |
Parsing included file '../tb/data_input/sv/data_input_config.sv'. |
Back to file '../tb/data_input/sv/data_input_pkg.sv'. |
Parsing included file '../tb/data_input/sv/data_input_driver.sv'. |
Back to file '../tb/data_input/sv/data_input_pkg.sv'. |
Parsing included file '../tb/data_input/sv/data_input_monitor.sv'. |
Back to file '../tb/data_input/sv/data_input_pkg.sv'. |
Parsing included file '../tb/data_input/sv/data_input_sequencer.sv'. |
Back to file '../tb/data_input/sv/data_input_pkg.sv'. |
Parsing included file '../tb/data_input/sv/data_input_coverage.sv'. |
Back to file '../tb/data_input/sv/data_input_pkg.sv'. |
Parsing included file '../tb/data_input/sv/data_input_agent.sv'. |
Back to file '../tb/data_input/sv/data_input_pkg.sv'. |
Parsing included file '../tb/data_input/sv/data_input_seq_lib.sv'. |
Back to file '../tb/data_input/sv/data_input_pkg.sv'. |
Parsing design file '../tb/data_input/sv/data_input_if.sv' |
Parsing design file '../tb/data_output/sv/data_output_pkg.sv' |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Back to file '../tb/data_output/sv/data_output_pkg.sv'. |
Parsing included file '../tb/data_output/sv/data_output_output_tx.sv'. |
Back to file '../tb/data_output/sv/data_output_pkg.sv'. |
Parsing included file '../tb/data_output/sv/data_output_config.sv'. |
Back to file '../tb/data_output/sv/data_output_pkg.sv'. |
Parsing included file '../tb/data_output/sv/data_output_driver.sv'. |
Back to file '../tb/data_output/sv/data_output_pkg.sv'. |
Parsing included file '../tb/data_output/sv/data_output_monitor.sv'. |
Back to file '../tb/data_output/sv/data_output_pkg.sv'. |
Parsing included file '../tb/data_output/sv/data_output_sequencer.sv'. |
Back to file '../tb/data_output/sv/data_output_pkg.sv'. |
Parsing included file '../tb/data_output/sv/data_output_coverage.sv'. |
Back to file '../tb/data_output/sv/data_output_pkg.sv'. |
Parsing included file '../tb/data_output/sv/data_output_agent.sv'. |
Back to file '../tb/data_output/sv/data_output_pkg.sv'. |
Parsing included file '../tb/data_output/sv/data_output_seq_lib.sv'. |
Back to file '../tb/data_output/sv/data_output_pkg.sv'. |
Parsing design file '../tb/data_output/sv/data_output_if.sv' |
Parsing design file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv' |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_cfg_pl.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_cfg.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_item.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_queue_iterator_base.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_queue_iterator_std.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_queue.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_queue_std.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_compare_base.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_compare.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_compare_ooo.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_compare_io.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_compare_iop.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_report_catcher.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb_subscriber.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing included file '../../../../playground_lib/uvm_syoscb/src/cl_syoscb.svh'. |
Back to file '../../../../playground_lib/uvm_syoscb/src/pk_syoscb.sv'. |
Parsing design file '../tb/top/sv/top_pkg.sv' |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Back to file '../tb/top/sv/top_pkg.sv'. |
Parsing included file '../tb/top/sv/top_config.sv'. |
Back to file '../tb/top/sv/top_pkg.sv'. |
Parsing included file '../tb/top/sv/top_seq_lib.sv'. |
Back to file '../tb/top/sv/top_pkg.sv'. |
Parsing included file '../tb/top/sv/port_converter.sv'. |
Back to file '../tb/top/sv/top_pkg.sv'. |
Parsing included file '../tb/top/sv/reference.sv'. |
Back to file '../tb/top/sv/top_pkg.sv'. |
Parsing included file '../tb/top/sv/top_env.sv'. |
Back to file '../tb/top/sv/top_pkg.sv'. |
Parsing design file '../tb/top_test/sv/top_test_pkg.sv' |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Back to file '../tb/top_test/sv/top_test_pkg.sv'. |
Parsing included file '../tb/top_test/sv/top_test.sv'. |
Back to file '../tb/top_test/sv/top_test_pkg.sv'. |
Parsing design file '../tb/top_tb/sv/top_th.sv' |
Parsing design file '../tb/top_tb/sv/top_tb.sv' |
Parsing included file '/apps/vcsmx/etc/uvm-1.2/uvm_macros.svh'. |
Back to file '../tb/top_tb/sv/top_tb.sv'. |
Top Level Modules: |
top_tb |
TimeScale is 1 ns / 1 ps |
Warning : License for product VT_Testbench(772) will expire within 4 days, on: 30-apr-2019. |
|
If you would like to temporarily disable this message, set |
the VCS_LIC_EXPIRE_WARNING environment variable to the number of days |
before expiration that you want this message to start (the minimum is 0). |
Starting vcs inline pass... |
15 modules and 0 UDP read. |
recompiling package vcs_paramclassrepository |
recompiling package _vcs_DPI_package |
recompiling package uvm_pkg |
recompiling module fa |
recompiling module rca |
recompiling module lpffir_axis |
recompiling package data_input_pkg |
recompiling module data_input_if |
recompiling package data_output_pkg |
recompiling module data_output_if |
recompiling package pk_syoscb |
recompiling package top_pkg |
recompiling package top_test_pkg |
recompiling module top_tb |
All of 15 modules done |
Warning : License for product VCSCompiler_Net(723) will expire within 4 days, on: 30-apr-2019. |
|
If you would like to temporarily disable this message, set |
the VCS_LIC_EXPIRE_WARNING environment variable to the number of days |
before expiration that you want this message to start (the minimum is 0). |
rm -f _csrc*.so linux_scvhdl_*.so pre_vcsobj_*.so share_vcsobj_*.so |
g++ -w -pipe -m32 -DVCSMX -O -I/apps/vcsmx/include -c /apps/vcsmx/etc/uvm-1.2/dpi/uvm_dpi.cc |
ld -m elf_i386 -shared -o .//../simv.daidir//_csrc0.so amcQwB.o |
rm -f _csrc0.so |
if [ -x ../simv ]; then chmod -x ../simv; fi |
g++ -o ../simv -m32 -m32 -Wl,-rpath-link=./ -Wl,-rpath='$ORIGIN'/simv.daidir/ -Wl,-rpath='$ORIGIN'/simv.daidir//scsim.db.dir /apps/vcsmx/linux/lib/vpdlogstub.o uvm_dpi.o _729_archive_1.so _csrc0.so SIM_l.o _csrc0.so rmapats_mop.o rmapats.o rmar.o rmar_llvm_0_1.o rmar_llvm_0_0.o /apps/vcsmx/linux/lib/libzerosoft_rt_stubs.so /apps/vcsmx/linux/lib/libvirsim.so /apps/vcsmx/linux/lib/liberrorinf.so /apps/vcsmx/linux/lib/libsnpsmalloc.so /apps/vcsmx/linux/lib/libvcsnew.so /apps/vcsmx/linux/lib/libuclinative.so -Wl,-whole-archive /apps/vcsmx/linux/lib/libvcsucli.so -Wl,-no-whole-archive ./../simv.daidir/vc_hdrs.o /apps/vcsmx/linux/lib/vcs_save_restore_new.o /apps/vcsmx/linux/lib/ctype-stubs_32.a -ldl -lc -lm -lpthread -ldl |
../simv up to date |
Warning : License for product VCSRuntime_Net(725) will expire within 4 days, on: 30-apr-2019. |
|
If you would like to temporarily disable this message, set |
the VCS_LIC_EXPIRE_WARNING environment variable to the number of days |
before expiration that you want this message to start (the minimum is 0). |
Chronologic VCS simulator copyright 1991-2014 |
Contains Synopsys proprietary information. |
Compiler version J-2014.12-SP1-1; Runtime version J-2014.12-SP1-1; Apr 27 14:03 2019 |
Warning : License for product VT_TestbenchRuntime(802) will expire within 4 days, on: 30-apr-2019. |
|
If you would like to temporarily disable this message, set |
the VCS_LIC_EXPIRE_WARNING environment variable to the number of days |
before expiration that you want this message to start (the minimum is 0). |
UVM_INFO /apps/vcsmx/etc/uvm-1.2/base/uvm_root.svh(402) @ 0: reporter [UVM/RELNOTES] |
---------------------------------------------------------------- |
UVM-1.2.Synopsys |
(C) 2007-2014 Mentor Graphics Corporation |
(C) 2007-2014 Cadence Design Systems, Inc. |
(C) 2006-2014 Synopsys, Inc. |
(C) 2011-2013 Cypress Semiconductor Corp. |
(C) 2013-2014 NVIDIA Corporation |
---------------------------------------------------------------- |
|
*********** IMPORTANT RELEASE NOTES ************ |
|
You are using a version of the UVM library that has been compiled |
with `UVM_NO_DEPRECATED undefined. |
See http://www.eda.org/svdb/view.php?id=3313 for more details. |
|
You are using a version of the UVM library that has been compiled |
with `UVM_OBJECT_DO_NOT_NEED_CONSTRUCTOR undefined. |
See http://www.eda.org/svdb/view.php?id=3770 for more details. |
|
(Specify +UVM_NO_RELNOTES to turn off this notice) |
|
UVM_INFO @ 0: reporter [RNTST] Running test top_test... |
UVM_INFO ../tb/top/sv/top_env.sv(69) @ 0: uvm_test_top.m_env [top_env] In build_phase |
|
Note-[FCICIO] Instance coverage is ON |
/home/runner/generated_tb/sim/../tb/data_input/sv/data_input_coverage.sv, 30 |
data_input_pkg, "data_input_pkg::data_input_coverage::m_cov" |
Instance coverage is set (option.per_instance = 1) for covergroup |
'data_input_pkg::data_input_coverage::m_cov' |
|
Covergroup Instance: top_tb.me.obj.m_cov |
Design hierarchy: data_input_pkg |
|
|
Note-[FCICIO] Instance coverage is ON |
/home/runner/generated_tb/sim/../tb/data_output/sv/data_output_coverage.sv, 32 |
data_output_pkg, "data_output_pkg::data_output_coverage::m_cov" |
Instance coverage is set (option.per_instance = 1) for covergroup |
'data_output_pkg::data_output_coverage::m_cov' |
|
Covergroup Instance: top_tb.me.obj.m_cov |
Design hierarchy: data_output_pkg |
|
UVM_INFO ../tb/top/sv/top_env.sv(133) @ 0: uvm_test_top.m_env [top_env] In connect_phase |
UVM_INFO ../tb/top/sv/top_env.sv(162) @ 0: uvm_test_top.m_env [top_env] Information printed from top_env::end_of_elaboration_phase method |
UVM_INFO ../tb/top/sv/top_env.sv(163) @ 0: uvm_test_top.m_env [top_env] Verbosity threshold is 300 |
UVM_INFO /apps/vcsmx/etc/uvm-1.2/base/uvm_root.svh(589) @ 0: reporter [UVMTOP] UVM testbench topology: |
------------------------------------------------------------------------------------------------ |
Name Type Size Value |
------------------------------------------------------------------------------------------------ |
uvm_test_top top_test - @347 |
m_env top_env - @360 |
m_converter_m_data_output_agent uvm_component - @417 |
a_port uvm_analysis_port - @436 |
analysis_imp uvm_analysis_imp - @426 |
m_data_input_agent data_input_agent - @455 |
analysis_port uvm_analysis_port - @464 |
m_driver data_input_driver - @552 |
rsp_port uvm_analysis_port - @571 |
seq_item_port uvm_seq_item_pull_port - @561 |
m_monitor data_input_monitor - @532 |
analysis_port uvm_analysis_port - @541 |
m_sequencer uvm_sequencer - @581 |
rsp_export uvm_analysis_export - @590 |
seq_item_export uvm_seq_item_pull_imp - @708 |
arbitration_queue array 0 - |
lock_queue array 0 - |
num_last_reqs integral 32 'd1 |
num_last_rsps integral 32 'd1 |
m_data_input_coverage data_input_coverage - @474 |
analysis_imp uvm_analysis_imp - @483 |
m_data_output_agent data_output_agent - @493 |
analysis_port uvm_analysis_port - @502 |
m_driver data_output_driver - @745 |
rsp_port uvm_analysis_port - @764 |
seq_item_port uvm_seq_item_pull_port - @754 |
m_monitor data_output_monitor - @725 |
analysis_port uvm_analysis_port - @734 |
m_sequencer uvm_sequencer - @774 |
rsp_export uvm_analysis_export - @783 |
seq_item_export uvm_seq_item_pull_imp - @901 |
arbitration_queue array 0 - |
lock_queue array 0 - |
num_last_reqs integral 32 'd1 |
num_last_rsps integral 32 'd1 |
m_data_output_coverage data_output_coverage - @512 |
analysis_imp uvm_analysis_imp - @521 |
m_reference reference - @388 |
analysis_export_0 uvm_analysis_imp_reference_0 - @397 |
analysis_port_0 uvm_analysis_port - @407 |
m_reference_scoreboard cl_syoscb - @446 |
DUT cl_syoscb_queue_std - @918 |
cfg cl_syoscb_cfg - @382 |
queues aa(object,string) 2 - |
[DUT] cl_syoscb_queue_std - @918 |
[REF] cl_syoscb_queue_std - @929 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
producers aa(object,string) 1 - |
[m_data_output_agent] cl_syoscb_cfg_pl - @383 |
list da(string) 2 - |
[0] string 3 DUT |
[1] string 3 REF |
primary_queue string 3 DUT |
disable_clone integral 1 'h0 |
max_queue_size aa(int,string) 2 - |
[DUT] integral 32 'h0 |
[REF] integral 32 'h0 |
scb_name string 22 m_reference_scoreboard |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
REF cl_syoscb_queue_std - @929 |
cfg cl_syoscb_cfg - @382 |
queues aa(object,string) 2 - |
[DUT] cl_syoscb_queue_std - @918 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
[REF] cl_syoscb_queue_std - @929 |
producers aa(object,string) 1 - |
[m_data_output_agent] cl_syoscb_cfg_pl - @383 |
list da(string) 2 - |
[0] string 3 DUT |
[1] string 3 REF |
primary_queue string 3 DUT |
disable_clone integral 1 'h0 |
max_queue_size aa(int,string) 2 - |
[DUT] integral 32 'h0 |
[REF] integral 32 'h0 |
scb_name string 22 m_reference_scoreboard |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
compare_strategy cl_syoscb_compare - @940 |
cfg cl_syoscb_cfg - @382 |
queues aa(object,string) 2 - |
[DUT] cl_syoscb_queue_std - @918 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
[REF] cl_syoscb_queue_std - @929 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
producers aa(object,string) 1 - |
[m_data_output_agent] cl_syoscb_cfg_pl - @383 |
list da(string) 2 - |
[0] string 3 DUT |
[1] string 3 REF |
primary_queue string 3 DUT |
disable_clone integral 1 'h0 |
max_queue_size aa(int,string) 2 - |
[DUT] integral 32 'h0 |
[REF] integral 32 'h0 |
scb_name string 22 m_reference_scoreboard |
compare_algo cl_syoscb_compare_iop - @991 |
cfg cl_syoscb_cfg - @382 |
queues aa(object,string) 2 - |
[DUT] cl_syoscb_queue_std - @918 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
[REF] cl_syoscb_queue_std - @929 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
producers aa(object,string) 1 - |
[m_data_output_agent] cl_syoscb_cfg_pl - @383 |
list da(string) 2 - |
[0] string 3 DUT |
[1] string 3 REF |
primary_queue string 3 DUT |
disable_clone integral 1 'h0 |
max_queue_size aa(int,string) 2 - |
[DUT] integral 32 'h0 |
[REF] integral 32 'h0 |
scb_name string 22 m_reference_scoreboard |
m_data_output_agent_DUT_subscr cl_syoscb_subscriber - @950 |
analysis_imp uvm_analysis_imp - @959 |
queue_name string 3 DUT |
producer string 19 m_data_output_agent |
m_data_output_agent_REF_subscr cl_syoscb_subscriber - @969 |
analysis_imp uvm_analysis_imp - @978 |
queue_name string 3 REF |
producer string 19 m_data_output_agent |
cfg cl_syoscb_cfg - @382 |
queues aa(object,string) 2 - |
[DUT] cl_syoscb_queue_std - @918 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
[REF] cl_syoscb_queue_std - @929 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
producers aa(object,string) 1 - |
[m_data_output_agent] cl_syoscb_cfg_pl - @383 |
list da(string) 2 - |
[0] string 3 DUT |
[1] string 3 REF |
primary_queue string 3 DUT |
disable_clone integral 1 'h0 |
max_queue_size aa(int,string) 2 - |
[DUT] integral 32 'h0 |
[REF] integral 32 'h0 |
scb_name string 22 m_reference_scoreboard |
queues da(object) 2 - |
[0] cl_syoscb_queue_std - @918 |
cfg cl_syoscb_cfg - @382 |
queues aa(object,string) 2 - |
[DUT] cl_syoscb_queue_std - @918 |
[REF] cl_syoscb_queue_std - @929 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
producers aa(object,string) 1 - |
[m_data_output_agent] cl_syoscb_cfg_pl - @383 |
list da(string) 2 - |
[0] string 3 DUT |
[1] string 3 REF |
primary_queue string 3 DUT |
disable_clone integral 1 'h0 |
max_queue_size aa(int,string) 2 - |
[DUT] integral 32 'h0 |
[REF] integral 32 'h0 |
scb_name string 22 m_reference_scoreboard |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
[1] cl_syoscb_queue_std - @929 |
cfg cl_syoscb_cfg - @382 |
queues aa(object,string) 2 - |
[DUT] cl_syoscb_queue_std - @918 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
[REF] cl_syoscb_queue_std - @929 |
producers aa(object,string) 1 - |
[m_data_output_agent] cl_syoscb_cfg_pl - @383 |
list da(string) 2 - |
[0] string 3 DUT |
[1] string 3 REF |
primary_queue string 3 DUT |
disable_clone integral 1 'h0 |
max_queue_size aa(int,string) 2 - |
[DUT] integral 32 'h0 |
[REF] integral 32 'h0 |
scb_name string 22 m_reference_scoreboard |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
compare_strategy cl_syoscb_compare - @940 |
cfg cl_syoscb_cfg - @382 |
queues aa(object,string) 2 - |
[DUT] cl_syoscb_queue_std - @918 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
[REF] cl_syoscb_queue_std - @929 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
producers aa(object,string) 1 - |
[m_data_output_agent] cl_syoscb_cfg_pl - @383 |
list da(string) 2 - |
[0] string 3 DUT |
[1] string 3 REF |
primary_queue string 3 DUT |
disable_clone integral 1 'h0 |
max_queue_size aa(int,string) 2 - |
[DUT] integral 32 'h0 |
[REF] integral 32 'h0 |
scb_name string 22 m_reference_scoreboard |
compare_algo cl_syoscb_compare_iop - @991 |
cfg cl_syoscb_cfg - @382 |
queues aa(object,string) 2 - |
[DUT] cl_syoscb_queue_std - @918 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
[REF] cl_syoscb_queue_std - @929 |
cfg cl_syoscb_cfg - @382 |
iter_idx integral 32 'h0 |
cnt_add_item integral 32 'h0 |
items da(object) 0 - |
producers aa(object,string) 1 - |
[m_data_output_agent] cl_syoscb_cfg_pl - @383 |
list da(string) 2 - |
[0] string 3 DUT |
[1] string 3 REF |
primary_queue string 3 DUT |
disable_clone integral 1 'h0 |
max_queue_size aa(int,string) 2 - |
[DUT] integral 32 'h0 |
[REF] integral 32 'h0 |
scb_name string 22 m_reference_scoreboard |
subscribers aa(object,string) 2 - |
[DUTm_data_output_agent] cl_syoscb_subscriber - @950 |
analysis_imp uvm_analysis_imp - @959 |
queue_name string 3 DUT |
producer string 19 m_data_output_agent |
[REFm_data_output_agent] cl_syoscb_subscriber - @969 |
analysis_imp uvm_analysis_imp - @978 |
queue_name string 3 REF |
producer string 19 m_data_output_agent |
------------------------------------------------------------------------------------------------ |
|
UVM_INFO /apps/vcsmx/etc/uvm-1.2/base/uvm_factory.svh(1645) @ 0: reporter [UVM/FACTORY/PRINT] |
#### Factory Configuration (*) |
|
Instance Overrides: |
|
Requested Type Override Path Override Type |
---------------------- ------------------------------------------- --------------------- |
cl_syoscb_compare_base uvm_test_top.m_env.m_reference_scoreboard.* cl_syoscb_compare_iop |
|
Type Overrides: |
|
Requested Type Override Type |
---------------------- ------------------------------------------- |
cl_syoscb_queue cl_syoscb_queue_std |
|
All types registered with the factory: 85 total |
Type Name |
--------- |
cl_syoscb |
cl_syoscb_cfg |
cl_syoscb_cfg_pl |
cl_syoscb_compare |
cl_syoscb_compare_base |
cl_syoscb_compare_io |
cl_syoscb_compare_iop |
cl_syoscb_compare_ooo |
cl_syoscb_item |
cl_syoscb_queue |
cl_syoscb_queue_iterator_base |
cl_syoscb_queue_iterator_std |
cl_syoscb_queue_std |
cl_syoscb_subscriber |
data_input_agent |
data_input_coverage |
data_input_default_seq |
data_input_driver |
data_input_monitor |
data_output_agent |
data_output_coverage |
data_output_default_seq |
data_output_driver |
data_output_monitor |
input_tx |
output_tx |
reference |
snps_uvm_reg_bank_group |
snps_uvm_reg_map |
top_default_seq |
top_env |
top_test |
(*) Types with no associated type name will be printed as <unknown> |
|
#### |
|
|
UVM_INFO ../tb/data_input/sv/data_input_driver.sv(43) @ 0: uvm_test_top.m_env.m_data_input_agent.m_driver [data_input_driver] run_phase |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(54) @ 0: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] run_phase |
UVM_INFO ../tb/data_output/sv/data_output_driver.sv(43) @ 0: uvm_test_top.m_env.m_data_output_agent.m_driver [data_output_driver] run_phase |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(54) @ 0: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] run_phase |
UVM_INFO ../tb/top/sv/top_seq_lib.sv(49) @ 0: reporter@@vseq [top_default_seq] Default sequence starting |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 0: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 0: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 75000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 75000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 75000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 75000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
DUT: rx_tdata_i 46, tx_tdata_o 46 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 90000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 46 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 90000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 0, data = 46 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 90000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 46 |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 90000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 90000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 90000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 90000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
DUT: rx_tdata_i 2, tx_tdata_o 48 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 110000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 48 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 110000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 1, data = 48 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 110000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 2 |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 110000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 110000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 110000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 110000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
DUT: rx_tdata_i 82, tx_tdata_o 130 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 130000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 130 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 130000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 2, data = 130 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 130000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 82 |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 130000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 130000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 130000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 130000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
DUT: rx_tdata_i 21, tx_tdata_o 151 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 150000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 151 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 150000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 3, data = 151 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 150000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 21 |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 150000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 150000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 150000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 150000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
DUT: rx_tdata_i 8, tx_tdata_o 159 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 170000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 159 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 170000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 4, data = 159 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 170000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 8 |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 170000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 170000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 170000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 170000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
DUT: rx_tdata_i 21, tx_tdata_o 180 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 190000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 180 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 190000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 5, data = 180 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 190000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 21 |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 190000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 190000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 190000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 190000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
DUT: rx_tdata_i 11, tx_tdata_o 145 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 210000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 145 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 210000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 0, data = 145 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 210000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 11 |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 210000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 210000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 210000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 210000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
DUT: rx_tdata_i 125, tx_tdata_o 268 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 230000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 268 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 230000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 1, data = 268 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 230000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 125 |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 230000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 230000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(41) @ 230000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence starting |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(41) @ 230000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence starting |
DUT: rx_tdata_i 79, tx_tdata_o 265 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 250000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 265 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 250000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 2, data = 265 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 250000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 79 |
UVM_INFO ../tb/data_input/sv/data_input_seq_lib.sv(49) @ 250000: uvm_test_top.m_env.m_data_input_agent.m_sequencer@@vseq.seq [data_input_default_seq] Default sequence completed |
UVM_INFO ../tb/data_output/sv/data_output_seq_lib.sv(49) @ 250000: uvm_test_top.m_env.m_data_output_agent.m_sequencer@@vseq.seq [data_output_default_seq] Default sequence completed |
UVM_INFO ../tb/top/sv/top_seq_lib.sv(78) @ 250000: reporter@@vseq [top_default_seq] Default sequence completed |
DUT: rx_tdata_i 38, tx_tdata_o 282 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 270000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 282 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 270000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 3, data = 282 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 270000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
DUT: rx_tdata_i 38, tx_tdata_o 312 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 290000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 312 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 290000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 4, data = 312 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 290000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
DUT: rx_tdata_i 38, tx_tdata_o 329 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 310000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 329 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 310000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 5, data = 329 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 310000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
DUT: rx_tdata_i 38, tx_tdata_o 356 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 330000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 356 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 330000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 0, data = 356 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 330000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
DUT: rx_tdata_i 38, tx_tdata_o 269 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 350000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 269 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 350000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 1, data = 269 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 350000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
DUT: rx_tdata_i 38, tx_tdata_o 228 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 370000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 228 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 370000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 2, data = 228 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 370000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
DUT: rx_tdata_i 38, tx_tdata_o 228 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 390000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 228 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 390000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 3, data = 228 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 390000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
DUT: rx_tdata_i 38, tx_tdata_o 228 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 410000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 228 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 410000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 4, data = 228 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 410000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
DUT: rx_tdata_i 38, tx_tdata_o 228 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 430000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 228 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 430000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 5, data = 228 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 430000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
DUT: rx_tdata_i 38, tx_tdata_o 228 |
UVM_INFO ../tb/data_output/sv/data_output_monitor.sv(70) @ 450000: uvm_test_top.m_env.m_data_output_agent.m_monitor [data_output_monitor] Output data = 228 |
UVM_INFO ../tb/top/sv/reference.sv(72) @ 450000: uvm_test_top.m_env.m_reference [reference] Reference Model save_pnt = 0, data = 228 |
UVM_INFO ../tb/data_input/sv/data_input_monitor.sv(70) @ 450000: uvm_test_top.m_env.m_data_input_agent.m_monitor [data_input_monitor] Input data = 38 |
UVM_INFO /apps/vcsmx/etc/uvm-1.2/base/uvm_objection.svh(1270) @ 450000: reporter [TEST_DONE] 'run' phase is ready to proceed to the 'extract' phase |
UVM_INFO ../tb/data_input/sv/data_input_coverage.sv(79) @ 450000: uvm_test_top.m_env.m_data_input_coverage [data_input_coverage] Coverage score = 7.0% |
UVM_INFO ../tb/data_output/sv/data_output_coverage.sv(83) @ 450000: uvm_test_top.m_env.m_data_output_coverage [data_output_coverage] Coverage disabled for this agent |
UVM_INFO ../../../../playground_lib/uvm_syoscb/src/cl_syoscb_queue.svh(118) @ 450000: uvm_test_top.m_env.m_reference_scoreboard.DUT [QUEUE] [m_reference_scoreboard]: Statistics for queue: DUT: |
Inserts: 19, Macthed: 19, Orphans: 0 |
UVM_INFO ../../../../playground_lib/uvm_syoscb/src/cl_syoscb_queue.svh(118) @ 450000: uvm_test_top.m_env.m_reference_scoreboard.REF [QUEUE] [m_reference_scoreboard]: Statistics for queue: REF: |
Inserts: 19, Macthed: 19, Orphans: 0 |
UVM_INFO /apps/vcsmx/etc/uvm-1.2/base/uvm_report_catcher.svh(705) @ 450000: reporter [UVM/REPORT/CATCHER] |
--- UVM Report catcher Summary --- |
|
|
Number of demoted UVM_FATAL reports : 0 |
Number of demoted UVM_ERROR reports : 0 |
Number of demoted UVM_WARNING reports: 0 |
Number of caught UVM_FATAL reports : 0 |
Number of caught UVM_ERROR reports : 0 |
Number of caught UVM_WARNING reports : 0 |
|
UVM_INFO /apps/vcsmx/etc/uvm-1.2/base/uvm_report_server.svh(847) @ 450000: reporter [UVM/REPORT/SERVER] |
--- UVM Report Summary --- |
|
** Report counts by severity |
UVM_INFO : 117 |
UVM_WARNING : 0 |
UVM_ERROR : 0 |
UVM_FATAL : 0 |
** Report counts by id |
[QUEUE] 2 |
[RNTST] 1 |
[TEST_DONE] 1 |
[UVM/FACTORY/PRINT] 1 |
[UVM/RELNOTES] 1 |
[UVM/REPORT/CATCHER] 1 |
[UVMTOP] 1 |
[data_input_coverage] 1 |
[data_input_default_seq] 20 |
[data_input_driver] 1 |
[data_input_monitor] 20 |
[data_output_coverage] 1 |
[data_output_default_seq] 20 |
[data_output_driver] 1 |
[data_output_monitor] 20 |
[reference] 19 |
[top_default_seq] 2 |
[top_env] 4 |
|
$finish called from file "/apps/vcsmx/etc/uvm-1.2/base/uvm_root.svh", line 527. |
$finish at simulation time 450000 |
V C S S i m u l a t i o n R e p o r t |
Time: 450000 ps |
CPU Time: 0.560 seconds; Data structure size: 0.3Mb |
Sat Apr 27 14:03:02 2019 |
CPU time: 13.223 seconds to compile + .377 seconds to elab + .860 seconds to link + .697 seconds in simulation |
Done |
/trunk/uvm/lpffir_uvm/generated_tb/tb_tree.txt
0,0 → 1,54
tb |
├── data_input |
│ └── sv |
│ ├── data_input_agent.sv |
│ ├── data_input_config.sv |
│ ├── data_input_coverage.sv |
│ ├── data_input_driver.sv |
│ ├── data_input_if.sv |
│ ├── data_input_input_tx.sv |
│ ├── data_input_monitor.sv |
│ ├── data_input_pkg.sv |
│ ├── data_input_seq_lib.sv |
│ └── data_input_sequencer.sv |
├── data_output |
│ └── sv |
│ ├── data_output_agent.sv |
│ ├── data_output_config.sv |
│ ├── data_output_coverage.sv |
│ ├── data_output_driver.sv |
│ ├── data_output_if.sv |
│ ├── data_output_monitor.sv |
│ ├── data_output_output_tx.sv |
│ ├── data_output_pkg.sv |
│ ├── data_output_seq_lib.sv |
│ └── data_output_sequencer.sv |
├── include |
│ ├── data_input_cover_inc.sv |
│ ├── data_input_do_mon.sv |
│ ├── data_input_driver_inc_after_class.sv |
│ ├── data_input_driver_inc_inside_class.sv |
│ ├── data_output_do_mon.sv |
│ ├── data_output_driver_inc_after_class.sv |
│ ├── data_output_driver_inc_inside_class.sv |
│ ├── reference_inc_after_class.sv |
│ ├── reference_inc_inside_class.sv |
│ └── vcd_dump.sv |
├── top |
│ └── sv |
│ ├── port_converter.sv |
│ ├── reference.sv |
│ ├── top_config.sv |
│ ├── top_env.sv |
│ ├── top_pkg.sv |
│ └── top_seq_lib.sv |
├── top_tb |
│ └── sv |
│ ├── top_tb.sv |
│ └── top_th.sv |
└── top_test |
└── sv |
├── top_test_pkg.sv |
└── top_test.sv |
|
11 directories, 40 files |
/trunk/uvm/lpffir_uvm/include/data_input_cover_inc.sv
0,0 → 1,7
covergroup m_cov; |
option.per_instance = 1; |
|
cp_data: coverpoint m_item.data { |
bins data_values[] = {[0:127]}; |
} |
endgroup |
/trunk/uvm/lpffir_uvm/include/data_input_do_mon.sv
0,0 → 1,12
task data_input_monitor::do_mon; |
forever @(posedge vif.clk) |
begin |
wait (vif.reset == 1); |
if (vif.valid && vif.ready) |
begin |
m_trans.data = vif.data; |
analysis_port.write(m_trans); |
`uvm_info(get_type_name(), $sformatf("Input data = %0d", m_trans.data), UVM_HIGH) |
end |
end |
endtask |
/trunk/uvm/lpffir_uvm/include/data_input_driver_inc_after_class.sv
0,0 → 1,22
task data_input_driver::run_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "run_phase", UVM_HIGH) |
|
forever @(posedge vif.clk) |
begin |
seq_item_port.get_next_item(req); |
phase.raise_objection(this); |
wait (vif.reset == 1); |
vif.data <= req.data; |
vif.valid <= 1; |
vif.last <= 0; |
wait (vif.ready == 1); |
|
fork |
begin |
repeat (10) @(posedge vif.clk); |
phase.drop_objection(this); |
end |
join_none |
seq_item_port.item_done(); |
end |
endtask : run_phase |
/trunk/uvm/lpffir_uvm/include/data_input_driver_inc_inside_class.sv
0,0 → 1,22
extern task run_phase(uvm_phase phase); |
/trunk/uvm/lpffir_uvm/include/data_output_do_mon.sv
0,0 → 1,12
task data_output_monitor::do_mon; |
forever @(posedge vif.clk) |
begin |
wait (vif.reset == 1); |
if (vif.valid && vif.ready) |
begin |
m_trans.data = vif.data; |
analysis_port.write(m_trans); |
`uvm_info(get_type_name(), $sformatf("Output data = %0d",m_trans.data), UVM_HIGH) |
end |
end |
endtask |
/trunk/uvm/lpffir_uvm/include/data_output_driver_inc_after_class.sv
0,0 → 1,20
task data_output_driver::run_phase(uvm_phase phase); |
`uvm_info(get_type_name(), "run_phase", UVM_HIGH) |
|
forever @(posedge vif.clk) |
begin |
seq_item_port.get_next_item(req); |
phase.raise_objection(this); |
|
vif.ready <= 1; |
wait (vif.reset == 1); |
|
fork |
begin |
repeat (10) @(posedge vif.clk); |
phase.drop_objection(this); |
end |
join_none |
seq_item_port.item_done(); |
end |
endtask : run_phase |
/trunk/uvm/lpffir_uvm/include/data_output_driver_inc_inside_class.sv
0,0 → 1,2
extern task run_phase(uvm_phase phase); |
|
/trunk/uvm/lpffir_uvm/include/reference_inc_after_class.sv
0,0 → 1,22
function void reference::write_reference_0(input_tx t); |
send(t); |
endfunction |
|
function void reference::send(input_tx t); |
output_tx tx; |
tx = output_tx::type_id::create("tx"); |
if (init_flag == 1) |
begin |
init_flag = 0; |
foreach(tx_save[j]) |
tx_save[j] = 0; |
end |
if (save_pnt == 5) |
save_pnt = 0; |
else |
save_pnt++; |
tx_save[save_pnt] = t.data; |
tx.data = tx_save[0] + tx_save[1] + tx_save[2] + tx_save[3] + tx_save[4] + tx_save[5]; |
analysis_port_0.write(tx); |
`uvm_info(get_type_name(), $sformatf("Reference Model save_pnt = %0d, data = %0d",save_pnt, tx.data), UVM_HIGH) |
endfunction |
/trunk/uvm/lpffir_uvm/include/reference_inc_inside_class.sv
0,0 → 1,5
extern function void send(input_tx t); |
|
int save_pnt = 5; |
logic [15:0] tx_save [0:5]; |
int init_flag = 1; |
/trunk/uvm/lpffir_uvm/include/vcd_dump.sv
0,0 → 1,2
$dumpfile("dump.vcd"); |
$dumpvars; |
/trunk/uvm/lpffir_uvm/common.tpl
0,0 → 1,20
dut_top = lpffir_axis |
nested_config_objects = yes |
|
tb_prepend_to_initial = vcd_dump.sv inline |
|
#Path ignored on EDA Playground |
#syosil_scoreboard_src_path = ../../syosil/src |
|
ref_model_input = reference m_data_input_agent |
|
ref_model_output = reference m_data_output_agent |
|
ref_model_compare_method = reference iop |
|
ref_model_inc_inside_class = reference reference_inc_inside_class.sv inline |
ref_model_inc_after_class = reference reference_inc_after_class.sv inline |
|
top_default_seq_count = 10 |
|
uvm_cmdline = +UVM_VERBOSITY=UVM_HIGH |
/trunk/uvm/lpffir_uvm/data_input.tpl
0,0 → 1,22
agent_name = data_input |
|
number_of_instances = 1 |
|
trans_item = input_tx |
trans_var = rand logic [15:0] data; |
|
trans_var = constraint c_data { 0 <= data; data < 128; } |
|
driver_inc_inside_class = data_input_driver_inc_inside_class.sv inline |
driver_inc_after_class = data_input_driver_inc_after_class.sv inline |
monitor_inc = data_input_do_mon.sv inline |
agent_cover_inc = data_input_cover_inc.sv inline |
|
if_port = logic last; |
if_port = logic valid; |
if_port = logic ready; |
if_port = logic [15:0] data; |
if_port = logic clk; |
if_port = logic reset; |
if_clock = clk |
if_reset = reset |
/trunk/uvm/lpffir_uvm/data_output.tpl
0,0 → 1,21
agent_name = data_output |
|
number_of_instances = 1 |
|
trans_item = output_tx |
trans_var = rand logic [15:0] data; |
|
agent_coverage_enable = no |
|
driver_inc_inside_class = data_output_driver_inc_inside_class.sv inline |
driver_inc_after_class = data_output_driver_inc_after_class.sv inline |
monitor_inc = data_output_do_mon.sv inline |
|
if_port = logic last; |
if_port = logic valid; |
if_port = logic ready; |
if_port = logic [15:0] data; |
if_port = logic clk; |
if_port = logic reset; |
if_clock = clk |
if_reset = reset |
/trunk/uvm/lpffir_uvm/pinlist
0,0 → 1,15
!data_input_if_0 |
rx_tlast_i last |
rx_tvalid_i valid |
rx_tready_o ready |
rx_tdata_i data |
|
!data_output_if_0 |
tx_tlast_o last |
tx_tvalid_o valid |
tx_tready_i ready |
tx_tdata_o data |
|
! |
aclk_i clock |
aresetn_i reset |
/trunk/uvm/rca_uvm/generated_tb/tb_tree.txt
0,0 → 1,32
tb |
├── include |
│ ├── rca_driver_inc.sv |
│ └── rca_monitor_inc.sv |
├── rca |
│ └── sv |
│ ├── rca_agent.sv |
│ ├── rca_config.sv |
│ ├── rca_coverage.sv |
│ ├── rca_driver.sv |
│ ├── rca_if.sv |
│ ├── rca_monitor.sv |
│ ├── rca_pkg.sv |
│ ├── rca_seq_lib.sv |
│ ├── rca_sequencer.sv |
│ └── rca_trans.sv |
├── top |
│ └── sv |
│ ├── top_config.sv |
│ ├── top_env.sv |
│ ├── top_pkg.sv |
│ └── top_seq_lib.sv |
├── top_tb |
│ └── sv |
│ ├── top_tb.sv |
│ └── top_th.sv |
└── top_test |
└── sv |
├── top_test_pkg.sv |
└── top_test.sv |
|
9 directories, 20 files |