-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocedure_tb.vhdl
81 lines (64 loc) · 1.47 KB
/
procedure_tb.vhdl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
library std;
use std.textio.all;
entity procedure_tb is
end procedure_tb;
architecture behav of procedure_tb is
signal s0 : integer;
procedure print_integer (
i : in integer
) is
variable my_line : line;
begin
write(my_line, i);
writeline(output, my_line);
end print_integer;
-- Modify a signal.
procedure add_to_s0 (
i1 : in integer;
i2 : in integer;
signal s0 : out integer
) is
begin
s0 <= i1 + i2;
wait for 1 ns;
end add_to_s0;
-- Procedures can be overloaded.
procedure overload (
i1 : in bit;
signal s0 : out integer
) is
begin
s0 <= 0;
wait for 1 ns;
end overload;
procedure overload (
i1 : in integer;
signal s0 : out integer
) is
begin
s0 <= 1;
wait for 1 ns;
end overload;
-- No args.
-- Possible to define, but can it do anything useful?
procedure no_args
is
begin
--s0 <= 1;
wait for 1 ns;
end no_args;
begin
process is
begin
print_integer(1);
print_integer(2);
add_to_s0(1, 2, s0);
assert s0 = 3;
-- Overloading
overload(bit'('1'), s0);
assert s0 = 0;
overload(integer'(1), s0);
assert s0 = 1;
wait;
end process;
end behav;