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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
SystemC Simulation
INTEGER SIZE = 4 bytes
SHORT INTEGER SIZE = 2 bytes
LONG INTEGER SIZE = 8 bytes
UNSIGNED LONG SIZE = 8 bytes
SIGNED LONG SIZE = 8 bytes
std_ulogic_vector <= C++ string
-------------------------------------------
A = 01XZXXXXX "01XZUWLH-"
B = XX0XX1XXX "ZZ1XX0UU1WWW"
BIG = 11110000111100001111000011110000111100001111000011110000111100001111
"11110000111100001111000011110000111100001111000011110000111100001111"
HUGE = 1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111000011110000111100001111000011110000111100001111000011110000
1111
std_ulogic_vector <= std_ulogic_vector
--------------------------------------------------
C = XX0XX1XXX ZZ1XX0XX1XXX
BIG2 = 11110000111100001111000011110000111100001111000011110000111100001111
"11110000111100001111000011110000111100001111000011110000111100001111"
std_ulogic_vector <= C++ array of bool
--------------------------------------------------
D = XXXXZX10X -, L, H, W, Z, X, 1, 0, U
E = 10011XXXX X, X, 1, 1, 0, 0, 1, 1, X, X, U, U
BIG3 = 11110000111100001111000011110000111100001111000011110000111100001111
"11110000111100001111000011110000111100001111000011110000111100001111
000011110000"
std_ulogic_vector <= bool_vector
--------------------------------------------
F = 1010 "1010"
std_ulogic_vector <= unsigned long
----------------------------------------------
H = 1001 ...10001001 (137)
I = 00000000000000000000000010001001 ...10001001 (137)
J = 0000000000000000000000000000000010001001 ...10001001 (137)
std_ulogic_vector <= sc_unsigned
--------------------------------------------
K = 0011 11 (3)
L = 1101 1101 (13)
M = 1001 10001001 (137)
std_ulogic_vector <= signed long
--------------------------------------------
N = 01001 ...010001001 (137)
O = 00000000000000000000000010001001 ...010001001 (137)
P = 0000000000000000000000000000000010001001 ...010001001 (137)
Q = 10111 ...101110111 (-137)
R = 11111111111111111111111101110111 ...101110111 (-137)
S = 1111111111111111111111111111111101110111 ...101110111 (-137)
std_ulogic_vector <= sc_signed
------------------------------------------
T = 00011 011 (3)
U = 01101 01101 (13)
V = 01001 010001001 (137)
W = 11101 101 (-3)
X = 10011 10011 (-13)
Y = 10111 101110111 (-137)
std_ulogic_vector <= to_uint()
-----------------------------------------------------------------
TU1 = 1001 9
TU2 = 10000000000000000000000000000001 2147483649
TU3 = 0000000110000000000000000000000000000001 2147483649
TU4 = 1101 1 (01)
TU4 = 1101 13 (1101)
TU4 = 1101 13 (00001101)
std_ulogic_vector <= to_int()
-----------------------------------------------------------------
TS1 = 1001 -7
TS2 = 11111111111111111111101111111001 -1031
TS3 = 0000000111111111111111111111101111111001 -1031
TS4 = 11001 1 (001)
TS4 = 11001 -7 (11001)
TS4 = 11001 -7 (111111001)
std_ulogic_vector <= Typecast sc_unsigned
-----------------------------------------------------------------
TCU1 = 1101 1 (01)
TCU1 = 1101 13 (1101)
TCU1 = 1101 13 (00001101)
std_ulogic_vector <= Typecast sc_signed
-----------------------------------------------------------------
TCS1 = 11001 1 (001)
TCS1 = 11001 -7 (11001)
TCS1 = 11001 25 (000011001)
std_ulogic_vector <= to_string()
--------------------------------------------
TSTR = XXZ01XXXX XXZ01XXXX
range() tests
-----------------------------------------------------------------
INITIAL 4-BIT 1000
INITIAL 9-BIT XXZ01XXXX
LVALUE RISE 1 0 0 0
LVALUE FALL 0 0 0 1
LVALUE SUB RISE 0 1 0 0
LVALUE SUB FALL X X X X 1 0 Z X X
LVALUE BIT 1 1 0 1
RVALUE RISE 1 0 0 0
RVALUE FALL 0 0 0 1
RVALUE SUB FALL X X X X 1 0 Z X X
RVALUE SUB RISE 1 0 0 0
RVALUE BIT [] 1 0 1 1
RVALUE BIT 0 0 1 0
op1 operator op2 result [All operands are std_ulogic_vector]
----------------------------------------------------------------
1010 &= 1000 = 1000
1010 ^= 1000 = 0010
1010 |= 1000 = 1010
~(1010) = 0101
1010 & 1000 = 1000
1010 ^ 1000 = 0010
1010 | 1000 = 1010
1010 &= 111011 = 1010
1010 ^= 111011 = 0001
1010 |= 111011 = 1011
1010 & 111011 = 1010
1010 ^ 111011 = 0001
1010 | 111011 = 1011
1010 and_reduce() = 0
1010 or_reduce() = 1
1010 xor_reduce() = 0
1010 == 1000 -> false
1010 != 1000 -> true
1111 = 1111
+-------------------------+
| AND (&) | X | 0 | 1 | Z |
+-------------------------+
| X | X | 0 | X | X |
+-------------------------+
| 0 | 0 | 0 | 0 | 0 |
+-------------------------+
| 1 | X | 0 | 1 | X |
+-------------------------+
| Z | X | 0 | X | X |
+-------------------------+
+-------------------------+
| OR (|) | X | 0 | 1 | Z |
+-------------------------+
| X | X | X | 1 | X |
+-------------------------+
| 0 | X | 0 | 1 | X |
+-------------------------+
| 1 | 1 | 1 | 1 | 1 |
+-------------------------+
| Z | X | X | 1 | X |
+-------------------------+
+-------------------------+
| XOR (^) | X | 0 | 1 | Z |
+-------------------------+
| X | X | X | X | X |
+-------------------------+
| 0 | X | 0 | 1 | X |
+-------------------------+
| 1 | X | 1 | 0 | X |
+-------------------------+
| Z | X | X | X | X |
+-------------------------+
+-------------------------+
| NOT (~) | X | 0 | 1 | Z |
+-------------------------+
| | X | 1 | 0 | X |
+-------------------------+
|