From 097e521a2898745d6f47567d1b6b3a036250fd66 Mon Sep 17 00:00:00 2001 From: Radek Isa Date: Fri, 31 Jan 2025 16:33:38 +0100 Subject: [PATCH 1/2] chore(mvb-ver): create mvb speed meter for old verification --- comp/mvb_tools/ver/mvb_speed.sv | 97 ++++++++++++++++++++++++++++++++ comp/mvb_tools/ver/sv_mvb_pkg.sv | 1 + 2 files changed, 98 insertions(+) create mode 100644 comp/mvb_tools/ver/mvb_speed.sv diff --git a/comp/mvb_tools/ver/mvb_speed.sv b/comp/mvb_tools/ver/mvb_speed.sv new file mode 100644 index 000000000..8fcb0d429 --- /dev/null +++ b/comp/mvb_tools/ver/mvb_speed.sv @@ -0,0 +1,97 @@ +/* + * mvb_speed.sv : Speed meter of Multi-Value bus + * Author(s): Radek Iša + * Copyright (C) 2025 CESNET z. s. p. o. + * SPDX-License-Identifier: BSD-3-Clause +*/ + + +class mvb_speed_data; + int unsigned data; + + function new (); + this.reset(); + endfunction + + function int unsigned data_get(); + return data; + endfunction + + function void reset(); + data = 0; + endfunction + + function void add(); + data += 1; + endfunction +endclass + +class mvb_speed_cbs_rx #(ITEM_WIDTH) extends sv_common_pkg::DriverCbs; + + mvb_speed_data data; + + function new (mvb_speed_data data); + this.data = data; + endfunction + + virtual task post_tx(sv_common_pkg::Transaction transaction, string inst); + MvbTransaction #(ITEM_WIDTH) tr; + $cast(tr, transaction); + + data.add(); + endtask +endclass + +class mvb_speed_cbs_tx #(ITEM_WIDTH) extends sv_common_pkg::MonitorCbs; + + mvb_speed_data data; + + function new (mvb_speed_data data); + this.data = data; + endfunction + + virtual task post_rx(sv_common_pkg::Transaction transaction, string inst); + MvbTransaction #(ITEM_WIDTH) tr; + $cast(tr, transaction); + + data.add(); + endtask +endclass + +class mvb_speed #(type T_CBS); + + string inst; + bit enabled; + mvb_speed_data data; + real speed = 0; + T_CBS cbs; + time delay = 10000ns; + + function new(string inst = ""); + data = new(); + cbs = new(data); + this.inst = inst; + endfunction + + virtual task setEnabled(); + enabled = 1; + fork + this.run(); + join_none; + endtask + + virtual task setDisabled(); + enabled = 0; + endtask + + virtual task run(); + const int unsigned const_tns_to_mts = (1s/1ns)/1_000_000; //Transactions per ns to M transactions per second + while(enabled) begin + #(delay); + + speed = real'(data.data_get())*const_tns_to_mts/(delay/1ns); + $write("%s speed %4.2f Mts (Mega transaction per seconds)\n", inst, speed); + data.reset(); + end + endtask +endclass diff --git a/comp/mvb_tools/ver/sv_mvb_pkg.sv b/comp/mvb_tools/ver/sv_mvb_pkg.sv index 3276e1f6c..d62c3908d 100644 --- a/comp/mvb_tools/ver/sv_mvb_pkg.sv +++ b/comp/mvb_tools/ver/sv_mvb_pkg.sv @@ -27,5 +27,6 @@ package sv_mvb_pkg; `include "mvb_responder.sv" `include "mvb_driver.sv" `include "mvb_coverage.sv" + `include "mvb_speed.sv" endpackage From c39b78903cc3a36ec96720bf148e30034c7ed603 Mon Sep 17 00:00:00 2001 From: Radek Isa Date: Fri, 31 Jan 2025 16:34:00 +0100 Subject: [PATCH 2/2] fix(pcie-ver): fix return value for display function in ram class --- comp/ver/pcie/ram.sv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/comp/ver/pcie/ram.sv b/comp/ver/pcie/ram.sv index 83b1991b6..4acff4c00 100644 --- a/comp/ver/pcie/ram.sv +++ b/comp/ver/pcie/ram.sv @@ -82,7 +82,7 @@ class ram #(ADDR_WIDTH, MPS, MRRS) extends sv_common_pkg::Driver; end endtask - function data_display(string dir, byte unsigned data[], logic [ADDR_WIDTH-1:0] addr, int unsigned tag); + function void data_display(string dir, byte unsigned data[], logic [ADDR_WIDTH-1:0] addr, int unsigned tag); $timeformat(-9, 3, " ns", 8); $write("Time: %t: ", $time); $write("PCIe %s %s : %6d B <= %x (tag %x)\n", inst, dir, data.size(), addr, tag);