Skip to content

Commit 5aaf471

Browse files
committed
reduce to single generic parameter in apb slave
1 parent a3dd361 commit 5aaf471

2 files changed

Lines changed: 27 additions & 17 deletions

File tree

vunit/vhdl/verification_components/src/apb_slave.vhd

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ use work.logger_pkg.all;
1717

1818
entity apb_slave is
1919
generic (
20-
bus_handle : apb_slave_t;
21-
drive_invalid : boolean := true;
22-
drive_invalid_val : std_logic := 'X'
20+
bus_handle : apb_slave_t
2321
);
2422
port (
2523
clk : in std_logic;
@@ -41,9 +39,9 @@ begin
4139
PROC_MAIN: process
4240
procedure drive_outputs_invalid is
4341
begin
44-
if drive_invalid then
45-
prdata_o <= (prdata_o'range => drive_invalid_val);
46-
pready_o <= drive_invalid_val;
42+
if bus_handle.p_drive_invalid then
43+
prdata_o <= (prdata_o'range => bus_handle.p_drive_invalid_val);
44+
pready_o <= bus_handle.p_drive_invalid_val;
4745
end if;
4846
end procedure;
4947

@@ -60,7 +58,7 @@ begin
6058
wait until psel_i = '1' and rising_edge(clk);
6159
-- ACCESS state
6260

63-
while rnd.Uniform(0.0, 1.0) > bus_handle.ready_high_probability loop
61+
while rnd.Uniform(0.0, 1.0) > bus_handle.p_ready_high_probability loop
6462
pready_o <= '0';
6563
wait until rising_edge(clk);
6664
end loop;

vunit/vhdl/verification_components/src/apb_slave_pkg.vhd

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ library ieee;
88
use ieee.std_logic_1164.all;
99
use ieee.numeric_std.all;
1010

11+
use work.bus_master_pkg.all;
1112
use work.com_pkg.all;
1213
use work.com_types_pkg.all;
1314
use work.logger_pkg.all;
@@ -17,18 +18,23 @@ use work.memory_pkg.to_vc_interface;
1718
package apb_slave_pkg is
1819

1920
type apb_slave_t is record
20-
ready_high_probability : real range 0.0 to 1.0;
2121
-- Private
2222
p_actor : actor_t;
2323
p_memory : memory_t;
2424
p_logger : logger_t;
25+
p_drive_invalid : boolean;
26+
p_drive_invalid_val : std_logic;
27+
p_ready_high_probability : real range 0.0 to 1.0;
2528
end record;
2629

2730
constant apb_slave_logger : logger_t := get_logger("vunit_lib:apb_slave_pkg");
2831
impure function new_apb_slave(
2932
memory : memory_t;
30-
ready_high_probability : real := 1.0;
31-
logger : logger_t := apb_slave_logger)
33+
logger : logger_t := bus_logger;
34+
actor : actor_t := null_actor;
35+
drive_invalid : boolean := true;
36+
drive_invalid_val : std_logic := 'X';
37+
ready_high_probability : real := 1.0)
3238
return apb_slave_t;
3339

3440
constant slave_write_msg : msg_type_t := new_msg_type("apb slave write");
@@ -39,15 +45,21 @@ package body apb_slave_pkg is
3945

4046
impure function new_apb_slave(
4147
memory : memory_t;
42-
ready_high_probability : real := 1.0;
43-
logger : logger_t := apb_slave_logger)
48+
logger : logger_t := bus_logger;
49+
actor : actor_t := null_actor;
50+
drive_invalid : boolean := true;
51+
drive_invalid_val : std_logic := 'X';
52+
ready_high_probability : real := 1.0)
4453
return apb_slave_t is
4554
begin
46-
return (p_actor => new_actor,
47-
p_memory => to_vc_interface(memory, logger),
48-
p_logger => logger,
49-
ready_high_probability => ready_high_probability
50-
);
55+
return (
56+
p_memory => to_vc_interface(memory, logger),
57+
p_logger => logger,
58+
p_actor => new_actor,
59+
p_drive_invalid => drive_invalid,
60+
p_drive_invalid_val => drive_invalid_val,
61+
p_ready_high_probability => ready_high_probability
62+
);
5163
end;
5264

5365
end package body;

0 commit comments

Comments
 (0)