Skip to content

Commit c1a34ab

Browse files
committed
Added integer representations for checkers, loggers, and actors.
1 parent 8da7ebe commit c1a34ab

File tree

8 files changed

+54
-0
lines changed

8 files changed

+54
-0
lines changed

vunit/vhdl/check/src/checker_pkg-body.vhd

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,4 +312,14 @@ package body checker_pkg is
312312
")");
313313
end function;
314314

315+
impure function to_integer(checker : checker_t) return integer is
316+
begin
317+
return to_integer(checker.p_data);
318+
end;
319+
320+
impure function to_checker(value : integer) return checker_t is
321+
begin
322+
return (p_data => to_integer_vector_ptr(value));
323+
end;
324+
315325
end package body;

vunit/vhdl/check/src/checker_pkg.vhd

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ package checker_pkg is
106106
procedure get_checker_stat(checker : checker_t;
107107
variable stat : out checker_stat_t);
108108

109+
impure function to_integer(checker : checker_t) return integer;
110+
impure function to_checker(value : integer) return checker_t;
111+
109112
-- Private
110113
impure function p_has_unhandled_checks return boolean;
111114
impure function p_register_unhandled_check(checker : checker_t) return unhandled_check_id_t;

vunit/vhdl/check/test/tb_checker.vhd

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ begin
9494
assert_true(stat1 + stat2 = (31, 16, 15), "Expected sum = (31, 16, 15)");
9595
passed := to_string(stat1) = "checker_stat'(n_checks => 20, n_failed => 13, n_passed => 7)";
9696
assert_true(passed, "Format error of checker_stat_t. Got:" & to_string(stat1));
97+
98+
elsif run("Test checker to/from integer conversion") then
99+
assert_true(to_checker(to_integer(my_checker)) = my_checker);
100+
assert_true(to_checker(to_integer(null_checker)) = null_checker);
101+
97102
end if;
98103
end loop;
99104

vunit/vhdl/com/src/com_types.vhd

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,9 @@ package com_types_pkg is
400400
alias push_dict_t_ref is push_ref[msg_t, dict_t];
401401
alias pop_dict_t_ref is pop_ref[msg_t return dict_t];
402402

403+
-- Misc
404+
impure function to_integer(actor : actor_t) return integer;
405+
impure function to_actor(value : integer) return actor_t;
403406
end package;
404407

405408
package body com_types_pkg is
@@ -870,5 +873,17 @@ package body com_types_pkg is
870873
return pop_ref(msg.data);
871874
end;
872875

876+
-----------------------------------------------------------------------------
877+
-- Misc
878+
-----------------------------------------------------------------------------
879+
impure function to_integer(actor : actor_t) return integer is
880+
begin
881+
return actor.p_id_number;
882+
end;
883+
884+
impure function to_actor(value : integer) return actor_t is
885+
begin
886+
return (p_id_number => value);
887+
end;
873888

874889
end package body com_types_pkg;

vunit/vhdl/com/test/tb_com.vhd

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1384,6 +1384,11 @@ begin
13841384

13851385
unmock(com_logger);
13861386

1387+
elsif run("Test actor to/from integer conversion") then
1388+
actor := new_actor;
1389+
check(to_actor(to_integer(actor)) = actor);
1390+
check(to_actor(to_integer(null_actor)) = null_actor);
1391+
13871392
-- Deprecated APIs
13881393
elsif run("Test that use of deprecated API leads to an error") then
13891394
mock(com_logger);

vunit/vhdl/logging/src/logger_pkg-body.vhd

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ package body logger_pkg is
3636
return to_integer(logger.p_data);
3737
end;
3838

39+
impure function to_logger(value : integer) return logger_t is
40+
begin
41+
return (p_data => to_integer_vector_ptr(value));
42+
end;
43+
3944
procedure add_child(logger : logger_t; child : logger_t) is
4045
constant children : integer_vector_ptr_t := to_integer_vector_ptr(get(logger.p_data, children_idx));
4146
begin

vunit/vhdl/logging/src/logger_pkg.vhd

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,4 +427,11 @@ package logger_pkg is
427427
-- Return the number of unchecked messages in the mock queue
428428
impure function mock_queue_length return natural;
429429

430+
-----------------------------------------------------------------------------
431+
-- Misc
432+
-----------------------------------------------------------------------------
433+
impure function to_integer(logger : logger_t) return integer;
434+
impure function to_logger(value : integer) return logger_t;
435+
436+
430437
end package;

vunit/vhdl/logging/test/tb_log.vhd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -944,6 +944,10 @@ begin
944944
check_log_file(file_handlers(i), log_file_name & integer'image(i), entries);
945945
end loop;
946946

947+
elsif run("Test logger to/from integer conversion") then
948+
assert_true(to_logger(to_integer(logger)) = logger);
949+
assert_true(to_logger(to_integer(null_logger)) = null_logger);
950+
947951
end if;
948952

949953
test_runner_cleanup(runner);

0 commit comments

Comments
 (0)