std_ulogic_datatype.cpp revision 12855:588919e0e4aa
1/***************************************************************************** 2 3 Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 4 more contributor license agreements. See the NOTICE file distributed 5 with this work for additional information regarding copyright ownership. 6 Accellera licenses this file to you under the Apache License, Version 2.0 7 (the "License"); you may not use this file except in compliance with the 8 License. You may obtain a copy of the License at 9 10 http://www.apache.org/licenses/LICENSE-2.0 11 12 Unless required by applicable law or agreed to in writing, software 13 distributed under the License is distributed on an "AS IS" BASIS, 14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 15 implied. See the License for the specific language governing 16 permissions and limitations under the License. 17 18 *****************************************************************************/ 19 20/***************************************************************************** 21 22 std_ulogic_datatype.cpp -- 23 24 Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 25 26 *****************************************************************************/ 27 28/***************************************************************************** 29 30 MODIFICATION LOG - modifiers, enter your name, affiliation, date and 31 changes you are making here. 32 33 Name, Affiliation, Date: 34 Description of Modification: 35 36 *****************************************************************************/ 37 38/* Main file for "std_ulogic" data type */ 39 40#include "systemc.h" 41 42typedef sc_logic std_ulogic; 43 44int sc_main(int ac, char *av[]) 45{ 46 47// 1. DECLARATION SYNTAX 48 std_ulogic s1; 49 std_ulogic s2, s3, s4, s5, s6, s7, s8, s9, s10, s11; 50 51 52// 2. TYPE CONVERSION 53 54 // std_ulogic <- std_ulogic 55 s1 = 'U'; 56 s2 = 'X'; 57 s3 = '0'; 58 s4 = '1'; 59 s5 = 'Z'; 60 s6 = 'W'; 61 s7 = 'L'; 62 s8 = 'H'; 63 s9 = '-'; 64 s10 = true; 65 s11 = false; 66 67 cout << "\nstd_ulogic \t<=\t\t std_ulogic" 68 << "\n-------------------------------------------" 69 << "\nUNINITIALIZED \t= " << s1 << "\t\t 'U'" 70 << "\nUNKNOWN \t= " << s2 << "\t\t 'X'" 71 << "\nZERO \t\t= " << s3 << "\t\t '0'" 72 << "\nONE \t\t= " << s4 << "\t\t '1'" 73 << "\nTRISTATE \t= " << s5 << "\t\t 'Z'" 74 << "\nWEAK-UNKNOWN \t= " << s6 << "\t\t 'W'" 75 << "\nWEAK-ZERO \t= " << s7 << "\t\t 'L'" 76 << "\nWEAK-ONE \t= " << s8 << "\t\t 'H'" 77 << "\nDONT-CARE \t= " << s9 << "\t\t '-'" 78 << "\nTRUE \t\t= " << s10 << "\t\t true" 79 << "\nFALSE \t\t= " << s11 << "\t\t false" 80 << "\n" << endl; 81 82 // std_ulogic <- literals 83 std_ulogic a, b, c, d; 84 85 a = true; 86 b = false; 87 c = 1; 88 d = 0; 89 90 cout << "std_ulogic <=\t literals" 91 << "\n-------------------------" 92 << "\nA = " << a << "\t\t true" 93 << "\nB = " << b << "\t\t false" 94 << "\nC = " << c << "\t\t 1" 95 << "\nD = " << d << "\t\t 0" 96 << "\n" << endl; 97 98 // std_ulogic <- bool 99 std_ulogic su1, su2, su3, su4; 100 bool b1, b2, b3, b4; 101 102 b1 = true; 103 b2 = false; 104 b3 = 1; 105 b4 = 0; 106 107 su1 = b1; 108 su2 = b2; 109 su3 = b3; 110 su4 = b4; 111 112 cout << "std_ulogic <=\t bool" 113 << "\n---------------------" 114 << "\nTRUE \t= " << su1 << "\t " << b1 115 << "\nFALSE \t= " << su2 << "\t " << b2 116 << "\n1 \t= " << su3 << "\t " << b3 117 << "\n0 \t= " << su4 << "\t " << b4 118 << "\n" << endl; 119 120 // std_ulogic <- char 121 std_ulogic sc1, sc2, sc3, sc4, sc5, sc6, sc7, sc8, sc9; 122 std_ulogic sc10, sc11, sc12, sc13, sc14, sc15, sc16, sc17, sc18, sc19; 123 char c1, c2, c3, c4, c5, c6, c7, c8, c9; 124 char c10, c11, c12, c13, c14, c15, c16, c17, c18, c19; 125 126 c1 = 'U'; 127 c2 = 'u'; 128 c3 = 'X'; 129 c4 = 'x'; 130 c5 = '0'; 131 c6 = '1'; 132 c7 = 'Z'; 133 c8 = 'z'; 134 c9 = 'W'; 135 c10 = 'w'; 136 c11 = 'L'; 137 c12 = 'l'; 138 c13 = 'H'; 139 c14 = 'h'; 140 c15 = '-'; 141 c16 = 'D'; 142 c17 = 'd'; 143 c18 = 'B'; 144 c19 = 'F'; 145 146 sc1 = c1; 147 sc2 = c2; 148 sc3 = c3; 149 sc4 = c4; 150 sc5 = c5; 151 sc6 = c6; 152 sc7 = c7; 153 sc8 = c8; 154 sc9 = c9; 155 sc10 = c10; 156 sc11 = c11; 157 sc12 = c12; 158 sc13 = c13; 159 sc14 = c14; 160 sc15 = c15; 161 sc16 = c16; 162 sc17 = c17; 163 sc18 = c18; 164 sc19 = c19; 165 166 cout << "std_ulogic <=\t char" 167 << "\n---------------------" 168 << "\nSC1 \t= " << sc1 << "\t '" << c1 << "'" 169 << "\nSC2 \t= " << sc2 << "\t '" << c2 << "'" 170 << "\nSC3 \t= " << sc3 << "\t '" << c3 << "'" 171 << "\nSC4 \t= " << sc4 << "\t '" << c4 << "'" 172 << "\nSC5 \t= " << sc5 << "\t '" << c5 << "'" 173 << "\nSC6 \t= " << sc6 << "\t '" << c6 << "'" 174 << "\nSC7 \t= " << sc7 << "\t '" << c7 << "'" 175 << "\nSC8 \t= " << sc8 << "\t '" << c8 << "'" 176 << "\nSC9 \t= " << sc9 << "\t '" << c9 << "'" 177 << "\nSC10 \t= " << sc10 << "\t '" << c10 << "'" 178 << "\nSC11 \t= " << sc11 << "\t '" << c11 << "'" 179 << "\nSC12 \t= " << sc12 << "\t '" << c12 << "'" 180 << "\nSC13 \t= " << sc13 << "\t '" << c13 << "'" 181 << "\nSC14 \t= " << sc14 << "\t '" << c14 << "'" 182 << "\nSC15 \t= " << sc15 << "\t '" << c15 << "'" 183 << "\nSC16 \t= " << sc16 << "\t '" << c16 << "'" 184 << "\nSC17 \t= " << sc17 << "\t '" << c17 << "'" 185 << "\nSC18 \t= " << sc18 << "\t '" << c18 << "'" 186 << "\nSC19 \t= " << sc19 << "\t '" << c19 << "'" 187 << "\n" << endl; 188 189 190// 3. OPERATORS 191// Supported operators: ~ & ^ | &= ^= |= == != = 192 193#define VAL1 '1' 194#define VAL2 '1' 195 196 std_ulogic op1 = sc_logic(VAL1); 197 std_ulogic op2 = sc_logic(VAL2); 198 std_ulogic r1, r2, r3, r4, r5, r6, r7, r8, r9; 199 std_ulogic r10, r11, r12, r13, r14, r15, r16, r17, r18, r19; 200 std_ulogic r20, r21, r22, r23, r24, r25, r26, r27, r28, r29; 201 std_ulogic r30, r31, r32, r33, r34, r35; 202 203// r1 = op1 * op2; // Multiplication 204 205// r2 = op1 / op2; // Division 206 207// r3 = op1 % op2; // Modulus 208 209// r4 = op1 + op2; // Addition 210 211// r5 = op1 - op2; // Subtraction 212 213// r6 = !op1; // Logical NOT 214 215// r7 = op1 && op2; // Logical AND 216 217// r8 = op1 || op2; // Logical OR 218 219// r9 = op1 < op2; // Less than 220 221// r10 = op1 <= op2; // Less than or equal 222 223// r11 = op1 > op2; // Greater than 224 225// r12 = op1 >= op2; // Greater than or equal 226 227// r13 = op1 += op2; // Compound addition 228// op1 = VAL1; op2 = VAL2; 229 230// r14 = op1 -= op2; // Compound subtraction 231// op1 = VAL1; op2 = VAL2; 232 233// r15 = op1 *= op2; // Compound multiplication 234// op1 = VAL1; op2 = VAL2; 235 236// r16 = op1 /= op2; // Compound division 237// op1 = VAL1; op2 = VAL2; 238 239// r17 = op1 %= op2; // Compound modulus 240// op1 = VAL1; op2 = VAL2; 241 242// r18 = op1 <<= op2; // Compound shift left 243// op1 = VAL1; op2 = VAL2; 244 245// r19 = op1 >>= op2; // Compound shift right 246// op1 = VAL1; op2 = VAL2; 247 248 r20 = op1 &= op2; // Compound bitwise AND 249 op1 = VAL1; op2 = VAL2; 250 251 r21 = op1 ^= op2; // Compound bitwise XOR 252 op1 = VAL1; op2 = VAL2; 253 254 r22 = op1 |= op2; // Compound bitwise OR 255 op1 = VAL1; op2 = VAL2; 256 257// r23 = op2++; // Postfix increment 258// op1 = VAL1; op2 = VAL2; 259 260// r24 = ++op2; // Prefix increment 261// op1 = VAL1; op2 = VAL2; 262 263// r25 = op2--; // Postfix decrement 264// op1 = VAL1; op2 = VAL2; 265 266// r26 = --op2; // Prefix decrement 267// op1 = VAL1; op2 = VAL2; 268 269// r27 = (op1 > op2) ? true : false; // Arithmetic if 270// r28 = (op1 < op2) ? true : false; // Arithmetic if 271 272// r29 = op1, r29 = op2; // Comma 273 274 r30 = ~op1; // Bitwise NOT 275 276// r31 = op1 << op2; // Left shift 277// op1 = VAL1; op2 = VAL2; 278 279// r32 = op1 >> op2; // Right shift 280// op1 = VAL1; op2 = VAL2; 281 282 r33 = op1 & op2; // Bitwise AND 283 284 r34 = op1 ^ op2; // Bitwise XOR 285 286 r35 = op1 | op2; // Bitwise OR 287 288 cout << "op1 \t operator \t op2 \t result [All operands are std_ulogic]" 289 << "\n----------------------------------------------------------------" 290// << "\n" << op1 << "\t * \t\t " << op2 << "\t = " << r1 291// << "\n" << op1 << "\t / \t\t " << op2 << "\t = " << r2 292// << "\n" << op1 << "\t % \t\t " << op2 << "\t = " << r3 293// << "\n" << op1 << "\t + \t\t " << op2 << "\t = " << r4 294// << "\n" << op1 << "\t - \t\t " << op2 << "\t = " << r5 295// << "\n!(" << op1 << ") \t\t\t\t = " << r6 296// << "\n" << op1 << "\t && \t\t " << op2 << "\t = " << r7 297// << "\n" << op1 << "\t || \t\t " << op2 << "\t = " << r8 298// << "\n" << op1 << "\t < \t\t " << op2 << "\t = " << r9 299// << "\n" << op1 << "\t <= \t\t " << op2 << "\t = " << r10 300// << "\n" << op1 << "\t > \t\t " << op2 << "\t = " << r11 301// << "\n" << op1 << "\t >= \t\t " << op2 << "\t = " << r12 302// << "\n" << op1 << "\t += \t\t " << op2 << "\t = " << r13 303// << "\n" << op1 << "\t -= \t\t " << op2 << "\t = " << r14 304// << "\n" << op1 << "\t *= \t\t " << op2 << "\t = " << r15 305// << "\n" << op1 << "\t /= \t\t " << op2 << "\t = " << r16 306// << "\n" << op1 << "\t %= \t\t " << op2 << "\t = " << r17 307// << "\n" << op1 << "\t <<=\t\t " << op2 << "\t = " << r18 308// << "\n" << op1 << "\t >>=\t\t " << op2 << "\t = " << r19 309 << "\n" << op1 << "\t &= \t\t " << op2 << "\t = " << r20 310 << "\n" << op1 << "\t ^= \t\t " << op2 << "\t = " << r21 311 << "\n" << op1 << "\t |= \t\t " << op2 << "\t = " << r22 312// << "\n" << "\t ()++ \t " << op2 << "\t = " << r23 313// << "\n" << "\t ++() \t " << op2 << "\t = " << r24 314// << "\n" << "\t ()-- \t " << op2 << "\t = " << r25 315// << "\n" << "\t --() \t " << op2 << "\t = " << r26 316// << "\n" << op1 << "\t > ?: \t " << op2 << "\t = " << r27 317// << "\n" << op1 << "\t < ?: \t " << op2 << "\t = " << r28 318// << "\n" << op1 << "\t , \t\t " << op2 << "\t = " << r29 319 << "\n~(" << op1 << ") \t\t\t\t = " << r30 320// << "\n" << op1 << "\t << \t\t " << op2 << "\t = " << r31 321// << "\n" << op1 << "\t >> \t\t " << op2 << "\t = " << r32 322 << "\n" << op1 << "\t & \t\t " << op2 << "\t = " << r33 323 << "\n" << op1 << "\t ^ \t\t " << op2 << "\t = " << r34 324 << "\n" << op1 << "\t | \t\t " << op2 << "\t = " << r35 325 << endl; 326 327 if (op1 == op2) // Equality 328 cout << op1 << "\t == \t\t " << op2 << "\t -> true" << endl; 329 else 330 cout << op1 << "\t == \t\t " << op2 << "\t -> false" << endl; 331 332 if (op1 != op2) // Inequality 333 cout << op1 << "\t != \t\t " << op2 << "\t -> true" << endl; 334 else 335 cout << op1 << "\t != \t\t " << op2 << "\t -> false" << endl; 336 337 op1 = op2 = 0; // Assignment operator concatenation 338 cout << op1 << "\t = \t\t " << op2 << endl; 339 340// 4. OPERATOR DEFINITIONS 341// & | ^ ~ 342 std_ulogic v1, v2, v3, v4, v5, v6, v7, v8, v9; 343 std_ulogic uu, ux, u0, u1, uz, uw, ul, uh, ud; 344 std_ulogic xu, xx, x0, x1, xz, xw, xl, xh, xd; 345 std_ulogic _0u, _0x, _00, _01, _0z, _0w, _0l, _0h, _0d; 346 std_ulogic _1u, _1x, _10, _11, _1z, _1w, _1l, _1h, _1d; 347 std_ulogic zu, zx, z0, z1, zz, zw, zl, zh, zd; 348 std_ulogic wu, wx, w0, w1, wz, ww, wl, wh, wd; 349 std_ulogic lu, lx, l0, l1, lz, lw, ll, lh, ld; 350 std_ulogic hu, hx, h0, h1, hz, hw, hl, hh, hd; 351 std_ulogic du, dx, d0, d1, dz, dw, dl, dh, dd; 352 353 v1 = 'U'; 354 v2 = 'X'; 355 v3 = '0'; 356 v4 = '1'; 357 v5 = 'Z'; 358 v6 = 'W'; 359 v7 = 'L'; 360 v8 = 'H'; 361 v9 = '-'; 362 363 uu = v1 & v1; ux = v1 & v2; u0 = v1 & v3; 364 u1 = v1 & v4; uz = v1 & v5; uw = v1 & v6; 365 ul = v1 & v7; uh = v1 & v8; ud = v1 & v9; 366 367 xu = v2 & v1; xx = v2 & v2; x0 = v2 & v3; 368 x1 = v2 & v4; xz = v2 & v5; xw = v2 & v6; 369 xl = v2 & v7; xh = v2 & v8; xd = v2 & v9; 370 371 _0u = v3 & v1; _0x = v3 & v2; _00 = v3 & v3; 372 _01 = v3 & v4; _0z = v3 & v5; _0w = v3 & v6; 373 _0l = v3 & v7; _0h = v3 & v8; _0d = v3 & v9; 374 375 _1u = v4 & v1; _1x = v4 & v2; _10 = v4 & v3; 376 _11 = v4 & v4; _1z = v4 & v5; _1w = v4 & v6; 377 _1l = v4 & v7; _1h = v4 & v8; _1d = v4 & v9; 378 379 zu = v5 & v1; zx = v5 & v2; z0 = v5 & v3; 380 z1 = v5 & v4; zz = v5 & v5; zw = v5 & v6; 381 zl = v5 & v7; zh = v5 & v8; zd = v5 & v9; 382 383 wu = v6 & v1; wx = v6 & v2; w0 = v6 & v3; 384 w1 = v6 & v4; wz = v6 & v5; ww = v6 & v6; 385 wl = v6 & v7; wh = v6 & v8; wd = v6 & v9; 386 387 lu = v7 & v1; lx = v7 & v2; l0 = v7 & v3; 388 l1 = v7 & v4; lz = v7 & v5; lw = v7 & v6; 389 ll = v7 & v7; lh = v7 & v8; ld = v7 & v9; 390 391 hu = v8 & v1; hx = v8 & v2; h0 = v8 & v3; 392 h1 = v8 & v4; hz = v8 & v5; hw = v8 & v6; 393 hl = v8 & v7; hh = v8 & v8; hd = v8 & v9; 394 395 du = v9 & v1; dx = v9 & v2; d0 = v9 & v3; 396 d1 = v9 & v4; dz = v9 & v5; dw = v9 & v6; 397 dl = v9 & v7; dh = v9 & v8; dd = v9 & v9; 398 399 cout << "\n+-------------------------+" 400 << "\n| AND (&) | X | 0 | 1 | Z |" 401 << "\n+-------------------------+" 402 << "\n| X | " << xx << " | " << x0 << " | " 403 << x1 << " | " << xz << " | " 404 << "\n+-------------------------+" 405 << "\n| 0 | " << _0x << " | " << _00 << " | " 406 << _01 << " | " << _0z << " | " 407 << "\n+-------------------------+" 408 << "\n| 1 | " << _1x << " | " << _10 << " | " 409 << _11 << " | " << _1z << " | " 410 << "\n+-------------------------+" 411 << "\n| Z | " << zx << " | " << z0 << " | " 412 << z1 << " | " << zz << " | " 413 << "\n+-------------------------+" 414 << endl; 415 416 uu = v1 | v1; ux = v1 | v2; u0 = v1 | v3; 417 u1 = v1 | v4; uz = v1 | v5; uw = v1 | v6; 418 ul = v1 | v7; uh = v1 | v8; ud = v1 | v9; 419 420 xu = v2 | v1; xx = v2 | v2; x0 = v2 | v3; 421 x1 = v2 | v4; xz = v2 | v5; xw = v2 | v6; 422 xl = v2 | v7; xh = v2 | v8; xd = v2 | v9; 423 424 _0u = v3 | v1; _0x = v3 | v2; _00 = v3 | v3; 425 _01 = v3 | v4; _0z = v3 | v5; _0w = v3 | v6; 426 _0l = v3 | v7; _0h = v3 | v8; _0d = v3 | v9; 427 428 _1u = v4 | v1; _1x = v4 | v2; _10 = v4 | v3; 429 _11 = v4 | v4; _1z = v4 | v5; _1w = v4 | v6; 430 _1l = v4 | v7; _1h = v4 | v8; _1d = v4 | v9; 431 432 zu = v5 | v1; zx = v5 | v2; z0 = v5 | v3; 433 z1 = v5 | v4; zz = v5 | v5; zw = v5 | v6; 434 zl = v5 | v7; zh = v5 | v8; zd = v5 | v9; 435 436 wu = v6 | v1; wx = v6 | v2; w0 = v6 | v3; 437 w1 = v6 | v4; wz = v6 | v5; ww = v6 | v6; 438 wl = v6 | v7; wh = v6 | v8; wd = v6 | v9; 439 440 lu = v7 | v1; lx = v7 | v2; l0 = v7 | v3; 441 l1 = v7 | v4; lz = v7 | v5; lw = v7 | v6; 442 ll = v7 | v7; lh = v7 | v8; ld = v7 | v9; 443 444 hu = v8 | v1; hx = v8 | v2; h0 = v8 | v3; 445 h1 = v8 | v4; hz = v8 | v5; hw = v8 | v6; 446 hl = v8 | v7; hh = v8 | v8; hd = v8 | v9; 447 448 du = v9 | v1; dx = v9 | v2; d0 = v9 | v3; 449 d1 = v9 | v4; dz = v9 | v5; dw = v9 | v6; 450 dl = v9 | v7; dh = v9 | v8; dd = v9 | v9; 451 452 cout << "\n+-------------------------+" 453 << "\n| OR (|) | X | 0 | 1 | Z |" 454 << "\n+-------------------------+" 455 << "\n| X | " << xx << " | " << x0 << " | " 456 << x1 << " | " << xz << " | " 457 << "\n+-------------------------+" 458 << "\n| 0 | " << _0x << " | " << _00 << " | " 459 << _01 << " | " << _0z << " | " 460 << "\n+-------------------------+" 461 << "\n| 1 | " << _1x << " | " << _10 << " | " 462 << _11 << " | " << _1z << " | " 463 << "\n+-------------------------+" 464 << "\n| Z | " << zx << " | " << z0 << " | " 465 << z1 << " | " << zz << " | " 466 << "\n+-------------------------+" 467 << endl; 468 469 uu = v1 ^ v1; ux = v1 ^ v2; u0 = v1 ^ v3; 470 u1 = v1 ^ v4; uz = v1 ^ v5; uw = v1 ^ v6; 471 ul = v1 ^ v7; uh = v1 ^ v8; ud = v1 ^ v9; 472 473 xu = v2 ^ v1; xx = v2 ^ v2; x0 = v2 ^ v3; 474 x1 = v2 ^ v4; xz = v2 ^ v5; xw = v2 ^ v6; 475 xl = v2 ^ v7; xh = v2 ^ v8; xd = v2 ^ v9; 476 477 _0u = v3 ^ v1; _0x = v3 ^ v2; _00 = v3 ^ v3; 478 _01 = v3 ^ v4; _0z = v3 ^ v5; _0w = v3 ^ v6; 479 _0l = v3 ^ v7; _0h = v3 ^ v8; _0d = v3 ^ v9; 480 481 _1u = v4 ^ v1; _1x = v4 ^ v2; _10 = v4 ^ v3; 482 _11 = v4 ^ v4; _1z = v4 ^ v5; _1w = v4 ^ v6; 483 _1l = v4 ^ v7; _1h = v4 ^ v8; _1d = v4 ^ v9; 484 485 zu = v5 ^ v1; zx = v5 ^ v2; z0 = v5 ^ v3; 486 z1 = v5 ^ v4; zz = v5 ^ v5; zw = v5 ^ v6; 487 zl = v5 ^ v7; zh = v5 ^ v8; zd = v5 ^ v9; 488 489 wu = v6 ^ v1; wx = v6 ^ v2; w0 = v6 ^ v3; 490 w1 = v6 ^ v4; wz = v6 ^ v5; ww = v6 ^ v6; 491 wl = v6 ^ v7; wh = v6 ^ v8; wd = v6 ^ v9; 492 493 lu = v7 ^ v1; lx = v7 ^ v2; l0 = v7 ^ v3; 494 l1 = v7 ^ v4; lz = v7 ^ v5; lw = v7 ^ v6; 495 ll = v7 ^ v7; lh = v7 ^ v8; ld = v7 ^ v9; 496 497 hu = v8 ^ v1; hx = v8 ^ v2; h0 = v8 ^ v3; 498 h1 = v8 ^ v4; hz = v8 ^ v5; hw = v8 ^ v6; 499 hl = v8 ^ v7; hh = v8 ^ v8; hd = v8 ^ v9; 500 501 du = v9 ^ v1; dx = v9 ^ v2; d0 = v9 ^ v3; 502 d1 = v9 ^ v4; dz = v9 ^ v5; dw = v9 ^ v6; 503 dl = v9 ^ v7; dh = v9 ^ v8; dd = v9 ^ v9; 504 505 cout << "\n+-------------------------+" 506 << "\n| XOR (^) | X | 0 | 1 | Z |" 507 << "\n+-------------------------+" 508 << "\n| X | " << xx << " | " << x0 << " | " 509 << x1 << " | " << xz << " | " 510 << "\n+-------------------------+" 511 << "\n| 0 | " << _0x << " | " << _00 << " | " 512 << _01 << " | " << _0z << " | " 513 << "\n+-------------------------+" 514 << "\n| 1 | " << _1x << " | " << _10 << " | " 515 << _11 << " | " << _1z << " | " 516 << "\n+-------------------------+" 517 << "\n| Z | " << zx << " | " << z0 << " | " 518 << z1 << " | " << zz << " | " 519 << "\n+-------------------------+" 520 << endl; 521 522 std_ulogic nu, nx, n0, n1, nz, nw, nl, nh, nd; 523 524 nu = ~v1; 525 nx = ~v2; 526 n0 = ~v3; 527 n1 = ~v4; 528 nz = ~v5; 529 nw = ~v6; 530 nl = ~v7; 531 nh = ~v8; 532 nd = ~v9; 533 534 cout << "\n+-------------------------+" 535 << "\n| NOT (~) | X | 0 | 1 | Z |" 536 << "\n+-------------------------+" 537 << "\n| | " << nx << " | " << n0 << " | " 538 << n1 << " | " << nz << " | " 539 << "\n+-------------------------+" 540 << endl; 541 return 0; 542} 543