Coverage for pyVHDLModel/IEEE.py: 86%

264 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-09-11 23:50 +0000

1# ==================================================================================================================== # 

2# __ ___ _ ____ _ __ __ _ _ # 

3# _ __ _ \ \ / / | | | _ \| | | \/ | ___ __| | ___| | # 

4# | '_ \| | | \ \ / /| |_| | | | | | | |\/| |/ _ \ / _` |/ _ \ | # 

5# | |_) | |_| |\ V / | _ | |_| | |___| | | | (_) | (_| | __/ | # 

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| |_|\___/ \__,_|\___|_| # 

7# |_| |___/ # 

8# ==================================================================================================================== # 

9# Authors: # 

10# Patrick Lehmann # 

11# # 

12# License: # 

13# ==================================================================================================================== # 

14# Copyright 2017-2026 Patrick Lehmann - Boetzingen, Germany # 

15# Copyright 2016-2017 Patrick Lehmann - Dresden, Germany # 

16# # 

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

18# you may not use this file except in compliance with the License. # 

19# You may obtain a copy of the License at # 

20# # 

21# http://www.apache.org/licenses/LICENSE-2.0 # 

22# # 

23# Unless required by applicable law or agreed to in writing, software # 

24# distributed under the License is distributed on an "AS IS" BASIS, # 

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

26# See the License for the specific language governing permissions and # 

27# limitations under the License. # 

28# # 

29# SPDX-License-Identifier: Apache-2.0 # 

30# ==================================================================================================================== # 

31# 

32"""This module contains library and package declarations for VHDL library ``IEEE``.""" 

33 

34from typing import Optional as Nullable 

35 

36from pyTooling.Decorators import export, readonly 

37 

38from pyVHDLModel import IEEEFlavor 

39from pyVHDLModel.Exception import VHDLModelException 

40from pyVHDLModel.Expression import EnumerationLiteral 

41from pyVHDLModel.Name import SimpleName 

42from pyVHDLModel.Predefined import PredefinedLibrary, PredefinedPackage, PredefinedPackageBody 

43from pyVHDLModel.Symbol import SimpleSubtypeSymbol 

44from pyVHDLModel.Type import EnumeratedType, ArrayType, Subtype 

45 

46 

47@export 

48class Ieee(PredefinedLibrary): 

49 """ 

50 Predefined VHDL library ``ieee``. 

51 

52 The following predefined packages are in this library: 

53 

54 * Math 

55 

56 * :class:`~pyVHDLModel.IEEE.Math_Real` 

57 * :class:`~pyVHDLModel.IEEE.Math_Complex` 

58 

59 * Std_logic 

60 

61 * :class:`~pyVHDLModel.IEEE.Std_Logic_1164` 

62 * :class:`~pyVHDLModel.IEEE.Std_Logic_TextIO` 

63 

64 * Numeric 

65 

66 * :class:`~pyVHDLModel.IEEE.Numeric_Bit` 

67 * :class:`~pyVHDLModel.IEEE.Numeric_Bit_Unsigned` 

68 * :class:`~pyVHDLModel.IEEE.Numeric_Std` 

69 * :class:`~pyVHDLModel.IEEE.Numeric_Std_Unsigned` 

70 

71 * Fixed/floating point 

72 

73 * :class:`~pyVHDLModel.IEEE.Fixed_Float_Types` 

74 * :class:`~pyVHDLModel.IEEE.Fixed_Generic_Pkg` 

75 * :class:`~pyVHDLModel.IEEE.Fixed_Pkg` 

76 * :class:`~pyVHDLModel.IEEE.Float_Generic_Pkg` 

77 * :class:`~pyVHDLModel.IEEE.Float_Pkg` 

78 

79 * Synopsys packages 

80 

81 * :class:`~pyVHDLModel.IEEE.Std_Logic_Arith` 

82 * :class:`~pyVHDLModel.IEEE.Std_Logic_Misc` 

83 * :class:`~pyVHDLModel.IEEE.Std_Logic_Signed` 

84 * :class:`~pyVHDLModel.IEEE.Std_Logic_TextIO` 

85 * :class:`~pyVHDLModel.IEEE.Std_Logic_Unsigned` 

86 

87 * Mentor Graphics packages 

88 

89 * :class:`~pyVHDLModel.IEEE.Std_Logic_Arith` 

90 

91 * VITAL packages 

92 

93 * :class:`~pyVHDLModel.IEEE.VITAL_Timing` 

94 * :class:`~pyVHDLModel.IEEE.VITAL_Primitives` 

95 * :class:`~pyVHDLModel.IEEE.VITAL_Memory` 

96 

97 .. seealso:: 

98 

99 Other predefined libraries: 

100 * Library :class:`~pyVHDLModel.STD.Std` 

101 """ 

102 

103 _flavor: IEEEFlavor #: The flavor of the ``ieee`` library this instance provides. 

104 

105 def __init__(self, flavor: Nullable[IEEEFlavor] = None) -> None: 

106 """ 

107 Initializes the ``ieee`` library. 

108 

109 :param flavor: The flavor of the ``ieee`` library this instance provides. 

110 :raises VHDLModelException: If the given IEEE library flavor is unknown. 

111 """ 

112 super().__init__(PACKAGES) 

113 

114 self._flavor = IEEEFlavor.IEEE 

115 if flavor is None: 

116 return 

117 elif IEEEFlavor.IEEE in flavor: 

118 pass 

119 elif IEEEFlavor.Synopsys in flavor: 

120 self.LoadSynopsysPackages() 

121 elif IEEEFlavor.MentorGraphics in flavor: 121 ↛ 124line 121 didn't jump to line 124 because the condition on line 121 was always true

122 self.LoadMentorGraphicsPackages() 

123 else: 

124 raise VHDLModelException(f"Unknown IEEE library flavor '{flavor}'.") 

125 

126 if IEEEFlavor.WithVITAL in flavor: 126 ↛ 127line 126 didn't jump to line 127 because the condition on line 126 was never true

127 self.LoadVITALPackages() 

128 

129 @readonly 

130 def Flavor(self) -> IEEEFlavor: 

131 """ 

132 Read-only property to access the flavor (:attr:`_flavor`). 

133 

134 :returns: The flavor. 

135 """ 

136 return self._flavor 

137 

138 def LoadSynopsysPackages(self) -> None: 

139 if IEEEFlavor.IEEE not in self._flavor: 139 ↛ 140line 139 didn't jump to line 140 because the condition on line 139 was never true

140 raise VHDLModelException(f"IEEE library flavor is '{self._flavor}' and can't be changed to '{IEEEFlavor.Synopsys}'.") 

141 

142 self._flavor = (self._flavor & ~IEEEFlavor.IEEE) | IEEEFlavor.Synopsys 

143 self.AddPackages(SYNOPSYS_PACKAGES) 

144 

145 def LoadMentorGraphicsPackages(self) -> None: 

146 if IEEEFlavor.IEEE not in self._flavor: 146 ↛ 147line 146 didn't jump to line 147 because the condition on line 146 was never true

147 raise VHDLModelException(f"IEEE library flavor is '{self._flavor}' and can't be changed to '{IEEEFlavor.MentorGraphics}'.") 

148 

149 self._flavor = (self._flavor & ~IEEEFlavor.IEEE) | IEEEFlavor.MentorGraphics 

150 self.AddPackages(MENTOR_GRAPHICS_PACKAGES) 

151 

152 def LoadVITALPackages(self) -> None: 

153 self._flavor |= IEEEFlavor.WithVITAL 

154 self.AddPackages(VITAL_PACKAGES) 

155 

156 

157@export 

158class Math_Real(PredefinedPackage): 

159 """ 

160 Predefined package ``ieee.math_real``. 

161 """ 

162 

163 

164@export 

165class Math_Real_Body(PredefinedPackageBody): 

166 """ 

167 Predefined package body of package ``ieee.math_real``. 

168 """ 

169 

170 

171@export 

172class Math_Complex(PredefinedPackage): 

173 """ 

174 Predefined package ``ieee.math_complex``. 

175 """ 

176 

177 def __init__(self) -> None: 

178 """ 

179 Initializes the ``math_complex`` package. 

180 """ 

181 super().__init__() 

182 

183 self._AddPackageClause(("work.math_real.all",)) 

184 

185 

186@export 

187class Math_Complex_Body(PredefinedPackageBody): 

188 """ 

189 Predefined package body of package ``ieee.math_complex``. 

190 """ 

191 

192 def __init__(self) -> None: 

193 """ 

194 Initializes the ``math_complex`` package body. 

195 """ 

196 super().__init__() 

197 

198 self._AddPackageClause(("work.math_real.all",)) 

199 

200 

201@export 

202class Std_Logic_1164(PredefinedPackage): 

203 """ 

204 Predefined package ``ieee.std_logic_1164``. 

205 

206 Predefined types: 

207 

208 * ``std_ulogic``, ``std_ulogic_vector`` 

209 * ``std_logic``, ``std_logic_vector`` 

210 """ 

211 

212 def __init__(self) -> None: 

213 """ 

214 Initializes the ``std_logic_1164`` package. 

215 """ 

216 super().__init__() 

217 

218 self._AddPackageClause(("STD.TEXTIO.all", )) 

219 

220 stdULogic = EnumeratedType("std_ulogic", ( 

221 EnumerationLiteral("U"), 

222 EnumerationLiteral("X"), 

223 EnumerationLiteral("0"), 

224 EnumerationLiteral("1"), 

225 EnumerationLiteral("Z"), 

226 EnumerationLiteral("W"), 

227 EnumerationLiteral("L"), 

228 EnumerationLiteral("H"), 

229 EnumerationLiteral("-"), 

230 ), None) 

231 self._types[stdULogic._normalizedIdentifier] = stdULogic 

232 self._declaredItems.append(stdULogic) 

233 

234 stdULogicVector = ArrayType("std_ulogic_vector", (SimpleSubtypeSymbol(SimpleName("natural")),), SimpleSubtypeSymbol(SimpleName("std_ulogic")), None) 

235 self._types[stdULogicVector._normalizedIdentifier] = stdULogicVector 

236 self._declaredItems.append(stdULogicVector) 

237 

238 stdLogic = Subtype("std_logic", SimpleSubtypeSymbol(SimpleName("std_ulogic")), None) 

239 stdLogic._baseType = stdULogic 

240 self._subtypes[stdLogic._normalizedIdentifier] = stdLogic 

241 self._declaredItems.append(stdLogic) 

242 

243 stdLogicVector = Subtype("std_logic_vector", SimpleSubtypeSymbol(SimpleName("std_ulogic_vector")), None) 

244 stdLogicVector._baseType = stdULogicVector 

245 self._subtypes[stdLogicVector._normalizedIdentifier] = stdLogicVector 

246 self._declaredItems.append(stdLogicVector) 

247 

248 

249@export 

250class Std_Logic_1164_Body(PredefinedPackageBody): 

251 """ 

252 Predefined package body of package ``ieee.std_logic_1164``. 

253 """ 

254 

255 

256@export 

257class Std_Logic_TextIO(PredefinedPackage): 

258 """ 

259 Predefined package ``ieee.std_logic_textio``. 

260 """ 

261 

262 def __init__(self) -> None: 

263 """ 

264 Initializes the ``std_logic_textio`` package. 

265 """ 

266 super().__init__() 

267 

268 self._AddPackageClause(("STD.TEXTIO.all", )) 

269 self._AddLibraryClause(("IEEE", )) 

270 self._AddPackageClause(("IEEE.std_logic_1164.all", )) 

271 

272 

273@export 

274class Numeric_Bit(PredefinedPackage): 

275 """ 

276 Predefined package ``ieee.numeric_bit``. 

277 """ 

278 

279 def __init__(self) -> None: 

280 """ 

281 Initializes the ``numeric_bit`` package. 

282 """ 

283 super().__init__() 

284 

285 self._AddPackageClause(("STD.TEXTIO.all", )) 

286 

287 

288@export 

289class Numeric_Bit_Body(PredefinedPackageBody): 

290 """ 

291 Predefined package body of package ``ieee.numeric_bit``. 

292 """ 

293 

294 

295@export 

296class Numeric_Bit_Unsigned(PredefinedPackage): 

297 """ 

298 Predefined package ``ieee.numeric_bit_unsigned``. 

299 """ 

300 

301 

302@export 

303class Numeric_Bit_Unsigned_Body(PredefinedPackageBody): 

304 """ 

305 Predefined package body of package ``ieee.numeric_bit_unsigned``. 

306 """ 

307 

308 def __init__(self) -> None: 

309 """ 

310 Initializes the ``numeric_bit_unsigned`` package body. 

311 """ 

312 super().__init__() 

313 

314 self._AddLibraryClause(("IEEE", )) 

315 self._AddPackageClause(("IEEE.numeric_bit.all", )) 

316 

317 

318@export 

319class Numeric_Std(PredefinedPackage): 

320 """ 

321 Predefined package ``ieee.numeric_std``. 

322 

323 Predefined types: 

324 

325 * ``unresolved_unsigned``, ``unsigned`` 

326 * ``unresolved_signed``, ``signed`` 

327 """ 

328 

329 def __init__(self) -> None: 

330 """ 

331 Initializes the ``numeric_std`` package. 

332 """ 

333 super().__init__() 

334 

335 self._AddPackageClause(("STD.TEXTIO.all", )) 

336 self._AddLibraryClause(("IEEE", )) 

337 self._AddPackageClause(("IEEE.std_logic_1164.all", )) 

338 

339 unresolvedUnsigned = ArrayType("unresolved_unsigned", (SimpleSubtypeSymbol(SimpleName("natural")),), SimpleSubtypeSymbol(SimpleName("std_ulogic")), None) 

340 self._types[unresolvedUnsigned._normalizedIdentifier] = unresolvedUnsigned 

341 self._declaredItems.append(unresolvedUnsigned) 

342 

343 unsigned = Subtype("unsigned", SimpleSubtypeSymbol(SimpleName("unresolved_unsigned")), None) 

344 unsigned._baseType = unresolvedUnsigned 

345 self._subtypes[unsigned._normalizedIdentifier] = unsigned 

346 self._declaredItems.append(unsigned) 

347 

348 unresolvedSigned = ArrayType("unresolved_signed", (SimpleSubtypeSymbol(SimpleName("natural")),), SimpleSubtypeSymbol(SimpleName("std_ulogic")), None) 

349 self._types[unresolvedSigned._normalizedIdentifier] = unresolvedSigned 

350 self._declaredItems.append(unresolvedSigned) 

351 

352 signed = Subtype("signed", SimpleSubtypeSymbol(SimpleName("unresolved_signed")), None) 

353 signed._baseType = unresolvedSigned 

354 self._subtypes[signed._normalizedIdentifier] = signed 

355 self._declaredItems.append(signed) 

356 

357 

358@export 

359class Numeric_Std_Body(PredefinedPackageBody): 

360 """ 

361 Predefined package body of package ``ieee.numeric_std``. 

362 """ 

363 

364 

365@export 

366class Numeric_Std_Unsigned(PredefinedPackage): 

367 """ 

368 Predefined package ``ieee.numeric_std_unsigned``. 

369 """ 

370 

371 def __init__(self) -> None: 

372 """ 

373 Initializes the ``numeric_std_unsigned`` package. 

374 """ 

375 super().__init__() 

376 

377 self._AddLibraryClause(("IEEE", )) 

378 self._AddPackageClause(("IEEE.std_logic_1164.all", )) 

379 

380 

381@export 

382class Numeric_Std_Unsigned_Body(PredefinedPackageBody): 

383 """ 

384 Predefined package body of package ``ieee.numeric_std_unsigned``. 

385 """ 

386 

387 def __init__(self) -> None: 

388 """ 

389 Initializes the ``numeric_std_unsigned`` package body. 

390 """ 

391 super().__init__() 

392 

393 self._AddLibraryClause(("IEEE", )) 

394 self._AddPackageClause(("IEEE.numeric_std.all", )) 

395 

396 

397@export 

398class Fixed_Float_Types(PredefinedPackage): 

399 """ 

400 Predefined package ``ieee.fixed_float_types``. 

401 """ 

402 

403 

404@export 

405class Fixed_Generic_Pkg(PredefinedPackage): 

406 """ 

407 Predefined package ``ieee.fixed_generic_pkg``. 

408 """ 

409 

410 def __init__(self) -> None: 

411 """ 

412 Initializes the ``fixed_generic_pkg`` package. 

413 """ 

414 super().__init__() 

415 

416 self._AddPackageClause(("STD.TEXTIO.all", )) 

417 self._AddLibraryClause(("IEEE", )) 

418 self._AddPackageClause(("IEEE.STD_LOGIC_1164.all", )) 

419 self._AddPackageClause(("IEEE.NUMERIC_STD.all", )) 

420 self._AddPackageClause(("IEEE.fixed_float_types.all", )) 

421 

422 

423@export 

424class Fixed_Generic_Pkg_Body(PredefinedPackageBody): 

425 """ 

426 Predefined package body of package ``ieee.fixed_generic_pkg``. 

427 """ 

428 

429 def __init__(self) -> None: 

430 """ 

431 Initializes the ``fixed_generic_pkg`` package body. 

432 """ 

433 super().__init__() 

434 

435 self._AddLibraryClause(("IEEE", )) 

436 self._AddPackageClause(("IEEE.MATH_REAL.all", )) 

437 

438 

439@export 

440class Fixed_Pkg(PredefinedPackage): 

441 """ 

442 Predefined package ``ieee.fixed_pkg``. 

443 """ 

444 def __init__(self) -> None: 

445 """ 

446 Initializes the ``fixed_pkg`` package. 

447 """ 

448 super().__init__() 

449 

450 self._AddLibraryClause(("IEEE", )) 

451 

452 

453@export 

454class Float_Generic_Pkg(PredefinedPackage): 

455 """ 

456 Predefined package ``ieee.float_generic_pkg``. 

457 """ 

458 

459 def __init__(self) -> None: 

460 """ 

461 Initializes the ``float_generic_pkg`` package. 

462 """ 

463 super().__init__() 

464 

465 self._AddPackageClause(("STD.TEXTIO.all", )) 

466 self._AddLibraryClause(("IEEE", )) 

467 self._AddPackageClause(("IEEE.STD_LOGIC_1164.all", )) 

468 self._AddPackageClause(("IEEE.NUMERIC_STD.all", )) 

469 self._AddPackageClause(("IEEE.fixed_float_types.all", )) 

470 

471 

472@export 

473class Float_Generic_Pkg_Body(PredefinedPackageBody): 

474 """ 

475 Predefined package body of package ``ieee.float_generic_pkg``. 

476 """ 

477 

478 

479@export 

480class Float_Pkg(PredefinedPackage): 

481 """ 

482 Predefined package ``ieee.float_pkg``. 

483 """ 

484 

485 def __init__(self) -> None: 

486 """ 

487 Initializes the ``float_pkg`` package. 

488 """ 

489 super().__init__() 

490 

491 self._AddLibraryClause(("IEEE", )) 

492 

493 

494PACKAGES = ( 

495 (Math_Real, Math_Real_Body), 

496 (Math_Complex, Math_Complex_Body), 

497 (Std_Logic_1164, Std_Logic_1164_Body), 

498 (Std_Logic_TextIO, None), 

499 (Numeric_Bit, Numeric_Bit_Body), 

500 (Numeric_Bit_Unsigned, Numeric_Bit_Unsigned_Body), 

501 (Numeric_Std, Numeric_Std_Body), 

502 (Numeric_Std_Unsigned, Numeric_Std_Unsigned_Body), 

503 (Fixed_Float_Types, None), 

504 (Fixed_Generic_Pkg, Fixed_Generic_Pkg_Body), 

505 (Fixed_Pkg, None), 

506 (Float_Generic_Pkg, Float_Generic_Pkg_Body), 

507 (Float_Pkg, None), 

508) 

509 

510 

511@export 

512class Std_Logic_Arith_MentorGraphics(PredefinedPackage): 

513 """ 

514 Predefined Mentor Graphics package ``ieee.std_logic_arith``. 

515 """ 

516 

517 def __init__(self) -> None: 

518 """ 

519 Initializes the ``std_logic_arith`` package. 

520 """ 

521 super().__init__("Std_Logic_Arith") 

522 

523 self._AddLibraryClause(("IEEE", )) 

524 

525 # used inside of package 

526 # self._AddPackageClause(("IEEE.std_logic_1164.all", )) 

527 

528 

529@export 

530class Std_Logic_Arith_Body_MentorGraphics(PredefinedPackageBody): 

531 """ 

532 Predefined package body of Mentor Graphics package ``ieee.std_logic_arith``. 

533 """ 

534 

535 def __init__(self) -> None: 

536 """ 

537 Initializes the ``std_logic_arith`` package body. 

538 """ 

539 super().__init__("Std_Logic_Arith") 

540 

541 

542MENTOR_GRAPHICS_PACKAGES = ( 

543 (Std_Logic_Arith_MentorGraphics, Std_Logic_Arith_Body_MentorGraphics), 

544) 

545 

546 

547@export 

548class VITAL_Timing(PredefinedPackage): 

549 """ 

550 Predefined package ``ieee.VITAL_Timing``. 

551 """ 

552 

553 def __init__(self) -> None: 

554 """ 

555 Initializes the ``VITAL_Timing`` package. 

556 """ 

557 super().__init__() 

558 

559 self._AddLibraryClause(("IEEE", )) 

560 self._AddPackageClause(("IEEE.STD_LOGIC_1164.all", )) 

561 

562 

563@export 

564class VITAL_Timing_Body(PredefinedPackageBody): 

565 """ 

566 Predefined package body of package ``ieee.VITAL_Timing``. 

567 """ 

568 

569 def __init__(self) -> None: 

570 """ 

571 Initializes the ``VITAL_Timing`` package body. 

572 """ 

573 super().__init__() 

574 

575 self._AddLibraryClause(("STD", )) 

576 self._AddPackageClause(("STD.TEXTIO.all", )) 

577 

578 

579@export 

580class VITAL_Primitives(PredefinedPackage): 

581 """ 

582 Predefined package ``ieee.VITAL_Primitives``. 

583 """ 

584 

585 def __init__(self) -> None: 

586 """ 

587 Initializes the ``VITAL_Primitives`` package. 

588 """ 

589 super().__init__() 

590 

591 self._AddLibraryClause(("IEEE", )) 

592 self._AddPackageClause(("IEEE.STD_LOGIC_1164.all", )) 

593 self._AddPackageClause(("IEEE.VITAL_Timing.all", )) 

594 

595 

596@export 

597class VITAL_Primitives_Body(PredefinedPackageBody): 

598 """ 

599 Predefined package body of package ``ieee.VITAL_Primitives``. 

600 """ 

601 

602 def __init__(self) -> None: 

603 """ 

604 Initializes the ``VITAL_Primitives`` package body. 

605 """ 

606 super().__init__() 

607 

608 self._AddLibraryClause(("STD", )) 

609 self._AddPackageClause(("STD.TEXTIO.all", )) 

610 

611 

612@export 

613class VITAL_Memory(PredefinedPackage): 

614 """ 

615 Predefined package ``ieee.VITAL_Memory``. 

616 """ 

617 

618 def __init__(self) -> None: 

619 """ 

620 Initializes the ``VITAL_Memory`` package. 

621 """ 

622 super().__init__() 

623 

624 self._AddLibraryClause(("IEEE", )) 

625 self._AddPackageClause(("IEEE.STD_LOGIC_1164.all", )) 

626 self._AddPackageClause(("IEEE.VITAL_Timing.all", )) 

627 self._AddPackageClause(("IEEE.VITAL_Primitives.all", )) 

628 

629 self._AddLibraryClause(("STD", )) 

630 self._AddPackageClause(("STD.TEXTIO.all", )) 

631 

632 

633@export 

634class VITAL_Memory_Body(PredefinedPackageBody): 

635 """ 

636 Predefined package body of package ``ieee.VITAL_Memory``. 

637 """ 

638 

639 def __init__(self) -> None: 

640 """ 

641 Initializes the ``VITAL_Memory`` package body. 

642 """ 

643 super().__init__() 

644 

645 self._AddLibraryClause(("IEEE", )) 

646 self._AddPackageClause(("IEEE.STD_LOGIC_1164.all", )) 

647 self._AddPackageClause(("IEEE.VITAL_Timing.all", )) 

648 self._AddPackageClause(("IEEE.VITAL_Primitives.all", )) 

649 

650 self._AddLibraryClause(("STD", )) 

651 self._AddPackageClause(("STD.TEXTIO.all", )) 

652 

653 

654VITAL_PACKAGES = ( 

655 (VITAL_Timing, VITAL_Timing_Body), 

656 (VITAL_Primitives, VITAL_Primitives_Body), 

657 (VITAL_Memory, VITAL_Memory_Body) 

658) 

659 

660 

661@export 

662class Std_Logic_Arith_Synopsys(PredefinedPackage): 

663 """ 

664 Predefined Synopsys package ``ieee.std_logic_arith``. 

665 """ 

666 

667 def __init__(self) -> None: 

668 """ 

669 Initializes the ``std_logic_arith`` package. 

670 """ 

671 super().__init__("Std_Logic_Arith") 

672 

673 self._AddLibraryClause(("IEEE", )) 

674 self._AddPackageClause(("IEEE.std_logic_1164.all", )) 

675 

676 

677@export 

678class Std_Logic_Misc(PredefinedPackage): 

679 """ 

680 Predefined Synopsys package ``ieee.std_logic_misc``. 

681 """ 

682 

683 def __init__(self) -> None: 

684 """ 

685 Initializes the ``std_logic_misc`` package. 

686 """ 

687 super().__init__() 

688 

689 self._AddLibraryClause(("IEEE", )) 

690 self._AddPackageClause(("IEEE.std_logic_1164.all", )) 

691 

692 

693@export 

694class Std_Logic_Misc_Body(PredefinedPackageBody): 

695 """ 

696 Predefined package body of Synopsys package ``ieee.std_logic_misc``. 

697 """ 

698 

699 

700@export 

701class Std_Logic_Signed(PredefinedPackage): 

702 """ 

703 Predefined Synopsys package ``ieee.std_logic_signed``. 

704 """ 

705 

706 def __init__(self) -> None: 

707 """ 

708 Initializes the ``std_logic_signed`` package. 

709 """ 

710 super().__init__() 

711 

712 self._AddLibraryClause(("IEEE", )) 

713 self._AddPackageClause(("IEEE.std_logic_1164.all", )) 

714 self._AddPackageClause(("IEEE.std_logic_arith.all", )) 

715 

716 

717@export 

718class Std_Logic_TextIO_Synopsys(PredefinedPackage): 

719 """ 

720 Predefined Synopsys package ``ieee.std_logic_textio``. 

721 """ 

722 

723 def __init__(self) -> None: 

724 """ 

725 Initializes the ``std_logic_textio`` package. 

726 """ 

727 super().__init__("Std_Logic_TextIO") 

728 

729 self._AddPackageClause(("STD.textio.all", )) 

730 

731 self._AddLibraryClause(("IEEE", )) 

732 self._AddPackageClause(("IEEE.std_logic_1164.all", )) 

733 

734 

735@export 

736class Std_Logic_Unsigned(PredefinedPackage): 

737 """ 

738 Predefined Synopsys package ``ieee.std_logic_unsigned``. 

739 """ 

740 

741 def __init__(self) -> None: 

742 """ 

743 Initializes the ``std_logic_unsigned`` package. 

744 """ 

745 super().__init__() 

746 

747 self._AddLibraryClause(("IEEE", )) 

748 self._AddPackageClause(("IEEE.std_logic_1164.all", )) 

749 self._AddPackageClause(("IEEE.std_logic_arith.all", )) 

750 

751 

752SYNOPSYS_PACKAGES = ( 

753 (Std_Logic_Arith_Synopsys, None), 

754 (Std_Logic_Misc, Std_Logic_Misc_Body), 

755 (Std_Logic_Signed, None), 

756 (Std_Logic_TextIO_Synopsys, None), 

757 (Std_Logic_Unsigned, None), 

758)