100% found this document useful (10 votes)
52 views

RTL Modeling With Systemverilog For Simulation and Synthesis Using Systemverilog For Asic and Fpga Design First Edition Stuart Sutherland

Stuart

Uploaded by

ahamdiitakpe
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (10 votes)
52 views

RTL Modeling With Systemverilog For Simulation and Synthesis Using Systemverilog For Asic and Fpga Design First Edition Stuart Sutherland

Stuart

Uploaded by

ahamdiitakpe
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Download the full version of the textbook now at textbookfull.

com

RTL Modeling with SystemVerilog for


Simulation and Synthesis using SystemVerilog
for ASIC and FPGA design First Edition Stuart
Sutherland
https://textbookfull.com/product/rtl-modeling-
with-systemverilog-for-simulation-and-synthesis-
using-systemverilog-for-asic-and-fpga-design-
first-edition-stuart-sutherland/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

PLD Based Design with VHDL RTL Design Synthesis and


Implementation 1st Edition Vaibbhav Taraate (Auth.)

https://textbookfull.com/product/pld-based-design-with-vhdl-rtl-
design-synthesis-and-implementation-1st-edition-vaibbhav-taraate-auth/

textbookfull.com

Digital Design With an Introduction to the Verilog HDL


VHDL and SystemVerilog 6th Edition M. Morris R. Mano

https://textbookfull.com/product/digital-design-with-an-introduction-
to-the-verilog-hdl-vhdl-and-systemverilog-6th-edition-m-morris-r-mano/

textbookfull.com

Modeling and Simulation : Challenges and Best Practices


for Industry First Edition Dubois

https://textbookfull.com/product/modeling-and-simulation-challenges-
and-best-practices-for-industry-first-edition-dubois/

textbookfull.com

Spatial agent-based simulation modeling in public health:


design, implementation, and applications for malaria
epidemiology 1st Edition Arifin
https://textbookfull.com/product/spatial-agent-based-simulation-
modeling-in-public-health-design-implementation-and-applications-for-
malaria-epidemiology-1st-edition-arifin/
textbookfull.com
Nordenholt s Million Dover Doomsday Classics First
Edition, Edition Connington

https://textbookfull.com/product/nordenholt-s-million-dover-doomsday-
classics-first-edition-edition-connington/

textbookfull.com

Food Across Cultures: Linguistic Insights in Transcultural


Tastes Giuseppe Balirano

https://textbookfull.com/product/food-across-cultures-linguistic-
insights-in-transcultural-tastes-giuseppe-balirano/

textbookfull.com

The fully raw diet 21 days to better health with meal and
exercise plans tips and 75 recipes 1st Edition Kristina
Carrillo-Bucaram
https://textbookfull.com/product/the-fully-raw-diet-21-days-to-better-
health-with-meal-and-exercise-plans-tips-and-75-recipes-1st-edition-
kristina-carrillo-bucaram/
textbookfull.com

Laboratory Manual for Biology I 2nd Edition Lalitha Jayant

https://textbookfull.com/product/laboratory-manual-for-biology-i-2nd-
edition-lalitha-jayant/

textbookfull.com

Personal finance Gill

https://textbookfull.com/product/personal-finance-gill/

textbookfull.com
C# 7 Quick Syntax Reference: A Pocket Guide to the
Language, APIs, and Library Mikael Olsson

https://textbookfull.com/product/c-7-quick-syntax-reference-a-pocket-
guide-to-the-language-apis-and-library-mikael-olsson/

textbookfull.com
RTL Modeling with

SystemVerilog
for Simulation and Synthesis
using SystemVerilog for ASIC and FPGA design

6/15/17
Other books authored or co-authored by Stuart Sutherland:

Verilog and SystemVerilog Gotchas: 101 Common Coding Error and How to Avoid
Them
Common coding mistakes and guidelines on how to write correct code. Co­
authored with Don Mills.
System Verilog For Design: A Guide to Using System Verilog fo r Hardware Design
and Modeling, Second Edition
Describes what SystemVerilog-2005 added to the Verilog-2001 language for RTL
modeling. Assumes the reader is familiar with Verilog-2001. Written by Stuart
Sutherland, with advice and contributions from Simon Davidmann and Peter
Flake. Includes an appendix with a detailed history of Hardware Description
Languages by Peter Flake.
Verilog-2001: A Guide to the New Features in the Verilog Hardware Description
Language
Describes what Verilog-2001 added to the original Verilog-1995 language.
Assumes the reader is familiar with Verilog-1995.
The Verilog PLI Handbook: A Tutorial and Reference Manual on the Verilog Pro­
gramming Language Interface, Second Edition
A comprehensive reference and tutorial on Verilog-2001 PLI and VPI program­
ming interfaces into Verilog simulation.
Verilog HDL Quick Reference Guide, based on the Verilog-2001 Standard
A concise reference on the syntax of the complete Verilog-2001 language.
Verilog PLI Quick Reference Guide, based on the Verilog-2001 Standard
A concise reference on the Verilog-2001 Programming Language Interface, with
complete object relationship diagrams.
RTL Modeling with

SystemVerilog
for Simulation and Synthesis
using SystemVerilog for ASIC and FPGA design

Stuart Sutherland

published by:
Sutherland HDL, Inc.
Tualatin, Oregon, USA
sutherland-hdl.com
printed by:
CreateSpace, An Amazon.com Company
eStore: www. Create Space, com/7164313
ISBN-13: 978-1-5467-7634-5
ISBN-10: 1-5467-7634-6
Copyright © 2017, Sutherland HDL, Inc.
All rights reserved. This work may not be translated, copied, or reproduced in whole
or in part without the express written permission of the copyright owner, except for
brief excerpts in connection with reviews or scholarly analysis. Use in connection
with any form of information storage and retrieval, electronic adaptation, computer
software, or by similar or dissimilar methodology now known or hereafter developed
is forbidden.
The use in this work of trade names, trademarks, service marks, and similar terms,
even if they are not identified as such, is not to be taken as an expression of opinion as
to whether or not they are subject to proprietary rights.

Sutherland HDL, Inc.


22805 SW 92nd Place
Tualatin, OR 97062-7225
E-mail: [email protected]
Phone: +1-503-692-0898
URL: sutherland-hdl.com
V

Dedication

To my wonderful wife, LeeAnn, and my children, Ammon, Tamara, Hannah, Seth and
Samuel, and each o f their families — Families are forever!
Stuart Sutherland
Portland, Oregon, USA
VII

About the Author

Stuart Sutherland provides expert instruction on using SystemVerilog and Ver-


ilog. He has been involved in defining the Verilog and SystemVerilog languages since
the beginning of IEEE standardization work in 1993, and is a member of the IEEE
SystemVerilog standards committee, where he has served as one of the technical edi­
tors for every version of the IEEE Verilog and SystemVerilog Language Reference
Manuals (LRMs). Stuart has more than 25 years of experience with Verilog and Sys­
temVerilog, and has authored and co-authored numerous papers on these languages
(available at www.sutherland-hdl.com). He has also authored “The Verilog PLIHand­
book”, “Verilog-2001: A Guide to the New Features o f the Verilog HDL, and “System­
Verilog fo r Design: A Guide to Using the SystemVerilog Enhancements to Verilog fo r
Hardware Design” (co-authored with Simon Davidmann and Peter Flake), and " Ver­
ilog and SystemVerilog Gotchas: 101 Common Coding Error and How to Avoid
Them" (co-authored with Don Mills) ”
Stuart is the founder of Sutherland HDL, Inc., which specializes in providing expert
SystemVerilog training and consulting services. He holds a Bachelor’s Degree in
Computer Science with an emphasis in Electronic Engineering Technology (Weber
State University (Ogden, Utah and Franklin Pierce College, Nashua, New Hampshire)
and a Master’s Degree in Education with an emphasis on eLearning course develop­
ment (Northcentral University, Prescott, Arizona).
IX

Table of Contents

Table of Contents........................................................................................................... ix

List of Examples.......................................................................................................... xvii

List of Figures................................................................................................................xxi

Foreword....................................................................................................................... xxv

Preface......................................................................................................................... xxvii
Why this book........................................................................................................................xxvii
Intended audience for this book............................................................................................xxviii
Topics covered in this book..................................................................................................xxviii
Book examples........................................................................................................................ xxix
Obtaining copies of the examples............................................................................................ xxx
Simulators and synthesis compilers used in this book.............................................................xxx
Other sources of information.................................................................................................. xxxi
Acknowledgements................................................................................................................. xxxi

Chapter 1: SystemVerilog Simulation and Synthesis...............................................1


1.1 Verilog and SystemVerilog — a brief history.................................................................. 1
1.1.1 The Original Verilog............................................................................................ 2
1.1.2 Open Verilog and VHDL..................................................................................... 3
1.1.3 IEEE Verilog-95 and Verilog-2001..................................................................... 3
1.1.4 SystemVerilog extensions to Verilog — a separate standard..............................4
1.1.5 SystemVerilog replaces Verilog.......................................................................... 5
1.2 RTL and gate-level modeling........................................................................................... 6
1.2.1 Abstraction........................................................................................................... 6
1.2.2 Gate-level models................................................................................................. 7
1.2.3 RTL models........................................................................................................10
1.2.4 Behavioral and transaction-level models.............................................................11
1.3 Defining an RTL synthesis subset of SystemVerilog .................................................... 12
1.4 Modeling for ASICs and FPGAs.................................................................................... 12
1.4.1 Standard cell ASICs........................................................................................... 12
1.4.2 FPGAs.................................................................................................................15
1.4.3 RTL coding styles for ASICs and FPGAs...........................................................16
1.5 SystemVerilog simulation ...............................................................................................17
1.5.1 SystemVerilog simulators.................................................................................. 21
1.5.2 Compilation and elaboration............................................................................... 21
1.5.3 Simulation time and event scheduling................................................................ 23
X RTL Modeling with SystemVerilog for Simulation and Synthesis

1.6 Digital synthesis ............................................................................................................. 31


1.6.1 SystemVerilog synthesis compilers................................................................... 32
1.6.2 Synthesis Compilation....................................................................................... 33
1.6.3 Constraints......................................................................................................... 34
1.7 SystemVerilog lint checkers........................................................................................... 35
1.8 Logic Equivalence Checkers .......................................................................................... 36
1.9 Summary ........................................................................................................................ 37

Chapter 2: RTL Modeling Fundamentals................................................................39


2.1 Modules and procedural blocks.......................................................................................39
2.2 SystemVerilog language rules........................................................................................40
2.2.1 Comments.......................................................................................................... 40
2.2.2 White space........................................................................................................ 43
2.2.3 Reserved keywords............................................................................................ 44
2.2.4 Keyword backward compatibility — ‘begin_keywords....................................46
2.2.5 Identifiers (user-defined names)........................................................................ 49
2.2.6 Naming conventions and guidelines.................................................................. 50
2.2.7 System tasks and functions................................................................................ 51
2.2.8 Compiler directives............................................................................................ 52
2.3 M odules.......................................................................................................................... 52
2.4 Modules instances and hierarchy ................................................................................... 54
2.4.1 Port order connections....................................................................................... 55
2.4.2 Named port connections.................................................................................... 56
2.4.3 The dot-name inferred named port connection shortcut....................................57
2.4.4 The dot-star inferred named port connection shortcut.......................................58
2.5 Summary ........................................................................................................................ 59

Chapter 3: Net and Variable types........................................................................... 61


3.1 Four-state data values..................................................................................................... 61
3.2 Literal values (numbers)................................................................................................. 62
3.2.1 Literal integer values......................................................................................... 62
3.2.2 Vector fill literal values..................................................................................... 65
3.2.3 Floating-point literal values (real numbers)....................................................... 66
3.3 Types and data types ...................................................................................................... 66
3.3.1 Net types and variable types.............................................................................. 66
3.3.2 Two-state and four-state data types (bit and logic)............................................67
3.4 Variable types................................................................................................................. 67
3.4.1 Synthesizable variable data types.......................................................................67
3.4.2 Variable declaration rules.................................................................................. 70
3.4.3 Variable assignment rules.................................................................................. 74
3.4.4 Uninitialized variables....................................................................................... 74
3.4.5 In-line variable initialization.............................................................................. 75
3.5 Net types......................................................................................................................... 76
3.5.1 Synthesizable net types...................................................................................... 77
3.5.2 Net declaration rules.......................................................................................... 79
Table of Contents XI

3.5.3 Implicit net declarations..................................................................................... 80


3.5.4 Net assignment and connection rules................................................................. 83
3.6 Port declarations ............................................................................................................. 84
3.6.1 Synthesizable port declarations.......................................................................... 84
3.6.2 Non synthesizable port declarations.................................................................. 87
3.6.3 Module port declaration recommendations....................................................... 88
3.7 Unpacked arrays of nets and variables ........................................................................... 89
3.7.1 Accessing array elements................................................................................... 90
3.7.2 Copying arrays................................................................................................... 91
3.7.3 Array list assignments........................................................................................ 91
3.7.4 Bit-select and part-select of array elements.......................................................92
3.8 Parameter constants........................................................................................................ 93
3.8.1 Parameter dec larations....................................................................................... 94
3.8.2 Parameter overrides (parameter redefinition)....................................................97
3.9 Const variables ............................................................................................................... 99
3.10 Summary ........................................................................................................................ 99

Chapter 4: User-defined Types and Packages....................................................... 101


4.1 User-defined types......................................................................................................... 101
4.1.1 Naming conventions for user-defined types.................................................... 102
4.1.2 Local typedef definitions...................................................................................102
4.1.3 Shared typedef definitions............................................................................... 102
4.2 SystemVerilog packages ...............................................................................................102
4.2.1 Package declarations.........................................................................................103
4.2.2 Using package items.........................................................................................104
4.2.3 Importing from multiple packages................................................................... 108
4.2.4 Package chaining..............................................................................................109
4.2.5 Package compilation order............................................................................... 110
4.2.6 Synthesis considerations...................................................................................111
4.3 The $unit declaration space.......................................................................................... 112
4.4 Enumerated types ..........................................................................................................114
4.4.1 Enumerated type declaration syntax................................................................. 114
4.4.2 Importing enumerated types from packages.................................................... 117
4.4.3 Enumerated type assignment rules.................................................................. 118
4.4.4 Enumerated type methods................................................................................ 121
4.4.5 Traditional Verilog coding style without enumerated types............................ 124
4.5 Structures.......................................................................................................................124
4.5.1 Structure declarations...................................................................................... 124
4.5.2 Assigning to structure members...................................................................... 125
4.5.3 Assigning to entire structures...........................................................................125
4.5.4 Typed and anonymous structures.................................................................... 126
4.5.5 Copying structures............................................................................................127
4.5.6 Packed and unpacked structures...................................................................... 127
4.5.7 Passing structuresthrough ports and to tasks and functions............................. 129
4.5.8 Traditional Verilog versus structures............................................................... 130
■■
XII RTL Modeling with SystemVerilog for Simulation and Synthesis

4.5.9 Synthesis considerations..................................................................................130


4.6 Unions ...........................................................................................................................131
4.6.1 Typed and anonymous unions.........................................................................131
4.6.2 Assigning to, and reading from, union variables............................................. 132
4.6.3 Unpacked, packed and tagged unions.............................................................. 132
4.6.4 Passing unions through ports and to tasks and functions................................. 134
4.7 Using arrays with structures and unions........................................................................136
4.8 Summary .......................................................................................................................139

Chapter 5: RTL Expression Operators.................................................................141


5.1 Operator expression ru les..............................................................................................141
5.1.1 4-state and 2-state operations............................................................................142
5.1.2 X-optimism and X-pessimism........................................................................ 142
5.1.3 Expression vector sizes and automatic vector extension................................. 144
5.1.4 Signed and unsigned expressions.................................................................... 145
5.1.5 Integer (vector) and real (floating-point) expressions..................................... 145
5.2 Concatenate and replicate operators..............................................................................146
5.3 Conditional (ternary) operator.......................................................................................150
5.4 Bitwise operators...........................................................................................................153
5.5 Reduction operators.......................................................................................................158
5.6 Logical operators...........................................................................................................160
5.6.1 Difference between negate and invert operations............................................ 161
5.6.2 Short circuiting logical operations................................................................... 163
5.6.3 Non-synthesizable logical operators................................................................ 164
5.7 Comparison operators (equality and relational) ........................................................... 164
5.8 Case equality (identity) operators..................................................................................168
5.9 Set membership (inside) operator................................................................................ 171
5.10 Shift operators ...............................................................................................................173
5.10.1 Synthesizing shift operations............................................................................174
5.10.2 Synthesizing rotate operations........................................................................ 177
5.11 Streaming operators (pack and unpack) ........................................................................181
5.12 Arithmetic operators......................................................................................................184
5.12.1 Integer and floating-point arithmetic............................................................... 186
5.12.2 Unsigned and signed arithmetic might synthesize to the same gates.............. 188
5.13 Increment and decrement operators ..............................................................................189
5.13.1 Proper usage of increment and decrement operators....................................... 190
5.13.2 An example of correct usage of increment and decrement operators.............. 192
5.13.3 Compound operations with increment and decrement operators..................... 194
5.13.4 An anecdotal story on the increment and decrement operators...................... 195
5.14 Assignment operators ....................................................................................................196
5.15 Cast operators and type conversions ............................................................................198
5.15.1 Typecasting..................................................................................................... 200
5.15.2 Size casting...................................................................................................... 202
5.15.3 Signedness casting........................................................................................... 206
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Table of Contents XIII

5.16 Operator precedence..................................................................................................... 209


5.17 Summary ...................................................................................................................... 210

Chapter 6: RTL Programming Statements...........................................................211


6.1 SystemVerilog procedural blocks.................................................................................. 211
6.1.1 Sensitivity lists................................................................................................. 212
6.1.2 Begin-end statement groups.............................................................................. 214
6.1.3 Using variables and nets in procedural blocks..................................................216
6.2 Decision statements...................................................................................................... 216
6.2.1 if-else statements.............................................................................................. 216
6.2.2 Case statements................................................................................................ 222
6.2.3 Unique and priority decision modifiers...........................................................227
6.3 Looping statements....................................................................................................... 228
6.3.1 For loops.......................................................................................................... 228
6.3.2 Repeat loops..................................................................................................... 233
6.3.3 While and do-while loops................................................................................ 235
6.3.4 Foreach loops and looping through arrays.......................................................236
6.4 Jump statements ........................................................................................................... 238
6.4.1 The continue and break jump statements.........................................................239
6.4.2 The disable jump statement............................................................................. 240
6.5 No-op statement ........................................................................................................... 241
6.6 Functions and tasks in RTL modeling.......................................................................... 243
6.6.1 Functions.......................................................................................................... 243
6.6.2 Tasks................................................................................................................ 248
6.7 Summary ...................................................................................................................... 249

Chapter 7: Modeling Combinational Logic...........................................................251


7.1 Continuous assignments (Boolean expressions) .......................................................... 252
7.1.1 Explicit and inferred continuous assignments.................................................254
7.1.2 Multiple continuous assignments...................................................................... 254
7.1.3 Using both continuous assignments and always procedures............................255
7.2 The always and always_comb procedures ................................................................... 256
7.2.1 Synthesizing combinational logic always procedures.....................................257
7.2.2 Modeling with the general purpose always procedure....................................257
7.2.3 Modeling with the RTL-specific always_comb procedure..............................260
7.2.4 Using blocking (combinational logic) assignments.........................................261
7.2.5 Avoiding unintentional latches in combinational logic procedures.................262
7.3 Using functions to represent combinational logic........................................................ 263
7.4 Combinational logic decision priority.......................................................................... 265
7.4.1 Removing unnecessary priority encoding from case decisions........................266
7.4.2 The unique and uniqueO decision modifiers....................................................266
7.4.3 The obsolete parallel_case synthesis pragma..................................................270
7.5 Summary ...................................................................................................................... 271
xiv RTL Modeling with SystemVerilog for Simulation and Synthesis

Chapter 8: Modeling Sequential Logic................................................................... 273


8.1 RTL models of flip-flops and registers ........................................................................ 274
8.1.1 Synthesis requirements for RTL sequential logic............................................274
8.1.2 Always procedures and always_ff procedures.................................................. 275
8.1.3 Sequential logic clock-to-Q propagation and setup/hold times........................276
8.1.4 Using nonblocking (sequential logic) assignments..........................................278
8.1.5 Synchronous and asynchronous resets............................................................. 286
8.1.6 Multiple clocks and clock domain crossing (CDC)..........................................295
8.1.7 Additional RTL sequential logic modeling considerations..............................297
8.2 Modeling Finite State Machines (FSMs) ..................................................................... 299
8.2.1 Mealy and Moore FSM architectures............................................................... 301
8.2.2 State encoding.................................................................................................. 302
8.2.3 One, two and three-procedure FSM coding styles........................................... 305
8.2.4 A complete FSM example............................................................................... 309
8.2.5 Reverse case statement one-hot decoder......................................................... 313
8.2.6 Avoiding latches in state machine decoders.................................................... 317
8.3 Modeling memory devices such as RAM s................................................................... 317
8.3.1 Modeling asynchronous and synchronous memory devices............................319
8.3.2 Loading memory models using Sreadmemb and Sreadmemh.........................320
8.4 Summary ...................................................................................................................... 322

Chapter 9: Modeling Latches and Avoiding Unintentional Latches.................323


9.1 Modeling Latches ......................................................................................................... 323
9.1.1 Modeling latches with the general purpose always procedure........................324
9.1.2 Modeling latches with the always_latch procedure.........................................325
9.2 Unintentional latch inference ....................................................................................... 327
9.3 Avoiding latches in intentionally incomplete decisions............................................... 329
9.3.1 Latch avoidance coding style trade-offs.......................................................... 330
9.3.2 A small example to illustrate avoiding unintentional latches..........................332
9.3.3 Latch avoidance style 1 — Default case item with known values..................335
9.3.4 Latch avoidance style 2—Pre-case assignment, known values.......................338
9.3.5 Latch avoidance style 3 — unique and priority decision modifiers................340
9.3.6 Latch avoidance style 4 — X assignments for unused decision values...........345
9.3.7 Latch avoidance style 5 — the full_case synthesis pragma.............................350
9.3.8 Additional notes about synthesis pragmas....................................................... 351
9.4 Summary ...................................................................................................................... 353

Chapter 10: Modeling Communication Buses — Interface Ports................... 355


10.1 Interface port concepts ................................................................................................. 356
10.1.1 Traditional Verilog bus connections................................................................ 357
10.1.2 SystemVerilog interface definitions................................................................ 361
10.1.3 Referencing signals within an interface........................................................... 365
10.1.4 Differences between modules and interfaces.................................................... 365
10.1.5 Source code declaration order.......................................................................... 366
10.2 Using interfaces as module ports.................................................................................. 366
Table of Contents xv

10.2.1 Generic interface ports..................................................................................... 366


10.2.2 Type-specific interface ports........................................................................... 367
10.3 Interface modports........................................................................................................ 367
10.3.1 Specifying which modport view to use........................................................... 368
10.3.2 Using modports to define different sets of connections..................................371
10.4 Interface methods (tasks and functions)....................................................................... 372
10.4.1 Calling methods defined in an interface.......................................................... 374
10.4.2 Synthesizing interface methods....................................................................... 375
10.4.3 Abstract, non-synthesizable interface methods............................................... 375
10.5 Interface procedural code ............................................................................................. 376
10.6 Parameterized interfaces............................................................................................... 378
10.7 Synthesizing interfaces................................................................................................. 379
10.8 Summary ...................................................................................................................... 382

List of Appendices...................................................................................................... 383

Appendix A: Best Practice Coding Guidelines....................................................385

Appendix B: SystemVerilog Reserved Keywords...............................................391


B.l All SystemVerilog-2012 reserved keywords............................................................... 391
B.2 Verilog-1995 reserved keywords ................................................................................ 393
B.3 Verilog-2001 reserved keywords ................................................................................ 394
B.4 Verilog-2005 reserved keywords ................................................................................ 394
B.5 SystemVerilog-2005 reserved keywords......................................................................395
B.6 SystemVerilog-2009 reserved keywords......................................................................396
B.7 SystemVerilog-2012 reserved keywords......................................................................396
B. 8 SystemVerilog-2017 reserved keywords......................................................................396

Appendix C: X Optimism and X Pessimism in RTL Models............................397


C. 1 Introducing My X .........................................................................................................398
C.2 How did my one (or zero) become my X? ...................................................................399
C.2.1 Uninitialized 4-state variables........................................................................ 399
C.2.2 Uninitialized registers and latches.................................................................. 400
C.2.3 Low power logic shutdown or power-up........................................................ 401
C.2.4 Unconnected module input ports.................................................................... 401
C.2.5 Multi-driver Conflicts (Bus Contention)........................................................ 401
C.2.6 Operations with an unknown result................................................................ 401
C.2.7 Out-of-range bit-selects and array indices...................................................... 401
C.2.8 Logic gates with unknown output values....................................................... 402
C.2.9 Setup or hold timing violations....................................................................... 402
C.2.10 User-assigned X values in hardware models...................................................402
C.2.11 Testbench X injection..................................................................................... 403
xvi RTL Modeling with SystemVerilog for Simulation and Synthesis

C.3 An optimistic X — is that good or bad?......................................................................403


C.3.1 If...else statements........................................................................................... 404
C.3.2 Case statements without a default-X assignment........................................... 407
C.3.3 Casex, casez and case...inside statements....................................................... 408
C.3.4 Bitwise, unary reduction, and logical operators............................................. 411
C.3.5 And, nand, or, nor, logic primitives................................................................ 412
C.3.6 User-defined primitives.................................................................................. 412
C.3.7 Array index with X or Z bits for write operations..........................................412
C.3.8 Net data types.................................................................................................. 413
C.3.9 Posedge and negedge edge sensitivity............................................................ 414
C.4 A pessimistic X — is that any better? .........................................................................415
C.4.1 If...else statements with X assignments.......................................................... 416
C.4.2 Conditional operator....................................................................................... 417
C.4.3 Case statements with X assignments.............................................................. 419
C.4.4 Edge-sensitive X pessimism........................................................................... 420
C.4.5 Bitwise, unary reduction, and logical operators............................................. 420
C.4.6 Equality, relational, and arithmetic operators................................................. 421
C.4.7 User-defined primitives.................................................................................. 422
C.4.8 Bit-select, part-select, array index on right-hand side of assignments...........423
C.4.9 Shift operations............................................................................................... 423
C.4.10 X-pessimism summary................................................................................... 424
C.5 Eliminating my X by using 2-state simulation............................................................424
C.6 Eliminating some of my X with 2-state data types .....................................................426
C.7 Breaking the rules—simulator-specific X-propagation options..................................428
C.8 Changing the rules — A SystemVerilog enhancement wish list ................................429
C.9 Detecting and stopping my X at the door....................................................................430
C. 10 Minimizing problems with my X ................................................................................ 432
C. 10.1 2-state versus 4-state guidelines..................................................................... 432
C.10.2 Register initialization guidelines.................................................................... 433
C.10.3 X-assignment guidelines................................................................................. 433
C.10.4 Trapping X guidelines.................................................................................... 433
C .ll Conclusions ................................................................................................................. 434
C. 11.1 About the author............................................................................................. 435
C.12 Acknowledgments ....................................................................................................... 435
C.13 References ................................................................................................................... 436

Appendix D: Additional Resources........................................................................437

Index 441
XVII

List of Examples

This book contains a number o f examples that illustrate the proper usage o f System-
Verilog constructs. A summary o f the major code examples is listed in this section. In
addition to these examples, each chapter contains many code fragments, referred to as
snippets, that illustrate specific features o f SystemVerilog. The source code for the
full examples can be downloaded from http://www.sutherland-hdl.com. Navigate the
menus to “SystemVerilog Book Examples

The Preface provides more details regarding the code examples in this book.

Chapter 1: SystemVerilog Simulation and Synthesis


Example 1-1: SystemVerilog gate-level model of 1-bit adder with carry............................... 8
Example 1-2: SystemVerilog RTL model of 1-bit adder with carry......................................10
Example 1-3: SystemVerilog RTL model of 32-bit adder/subtractor....................................11
Example 1-4: Design model with input and output ports (a 32-bit adder/subtractor)............18
Example 1-5: Testbench for the 32-bit adder/subtractor model.............................................18
Example 1-6: Top-level module connecting the testbench to the design.............................. 20
Example 1-7: A clock oscillator, stimulus and flip flop to illustrate event scheduling........ 29

Chapter 2: RTL Modeling Fundamentals


Example 2-1: RTL model showing two styles of comments................................................. 41
Example 2-2: SystemVerilog RTL model with minimum white space................................. 44
Example 2-3: SystemVerilog RTL model with good use of white space.............................. 44
Example 2-4: Using 'begin_keywords with a legacy Verilog-2001 model.................. 47
Example 2-5: Using 'begin_keywords with a SystemVerilog-2012 model.................. 48

Chapter 3: Net and Variable types


Example 3-1: Example of undeclared identifiers creating implicit nets................................ 80
Example 3-2: Changing the net type for implicit nets............................................................81
Example 3-3: Module port declaration using recommended coding guidelines.................... 89
Example 3-4: Add module with parameterized port widths.................................................. 94
Example 3-5: Model of a configurable RAM using a module parameter list........................ 96
Example 3-6: Adder with configurable data types................................................................ 97

Chapter 4: User-defined Types and Packages


Example 4-1: A package definition with several package items..........................................103
Example 4-2: Using a package wildcard import...................................................................105
Example 4-3: Importing specific package items into a module............................................106
Example 4-4: Explicit package references using the :: scope resolution operator...............107
Example 4-5: Using enumerated type methods for a state machine sequencer....................123
Example 4-6: Package containing structure and union definitions.......................................134
xviii RTL Modeling with SystemVerilog for Simulation and Synthesis

Example 4-7: Arithmetic Logical Unit (ALU) with structure and union ports................... 135
Example 4-8: Using arrays of structures to model an instruction register........................... 137

Chapter 5: RTL Expression Operators


Example 5-1: Using concatenate operators: multiple input status register............................147
Example 5-2: Using concatenate operators: adder with a carry b it....................................... 149
Example 5-3: Using theconditional operator: multiplexed 4-bit register D input............... 151
Example 5-4: Using theconditional operator: 4-bit adder with tri-state outputs................. 152
Example 5-5: Using bitwise operators: multiplexed N-bit wide AND/XOR operation.....156
Example 5-6: Using reduction operators: parity checker using XOR................................. 159
Example 5-7: Using logical operators: set flag when values are within a range................. 163
Example 5-8: Using comparison operators: a relationship comparator............................... 167
Example 5-9: Using case equality operators: a comparator for high address range............ 170
Example 5-10: Using theset membership operator: a decoder for specific addresses........... 172
Example 5-11: Using theshift operator: divide-by-two by shifting right one b it.................. 175
Example 5-12: Using theshift operator: multiply by a power of two by shifting left............ 176
Example 5-13: Performing a rotate operation using concatenate and shift operators........... 179
Example 5-14: Using the streaming operator: reverse bits of a parameterized vector.......... 183
Example 5-15: Using arithmetic operators with unsigned data types................................... 186
Example 5-16: Using arithmetic operators with signed data types....................................... 187
Example 5-17: Using arithmetic operators with real data types............................................ 187
Example 5-18: Using increment and decrement operators.................................................... 192
Example 5-19: Using assignment operators.......................................................................... 197
Example 5-20: Using size casting..........................................................................................205
Example 5-21: Using sign casting for a mixed signed and unsigned comparator.................207

Chapter 6: RTL Programming Statements


Example 6-1: Using if-else to model multiplexor functionality................................... 219
Example 6-2: Using if without else to model latch functionality................................... 220
Example 6-3: Using an if-else-if series to model a priority encoder.................................... 220
Example 6-4: Using if-else-if series to model a flip-flop with reset and chip-enable........ 221
Example 6-5: Using a case statement to model a 4-to-l MUX.........................................225
Example 6-6: Using an case-inside to model a priority encoder.........................................226
Example 6-7: Using a for loop to operate on bits of vectors...............................................229
Example 6-8: Using a for loop to find the lowest bit that is set in avector........................ 231
Example 6-9: Using a repeat loop to raise a value to the power of an exponent................ 234
Example 6-10: Controlling for loop execution using continue and break..........................239

Chapter 7: Modeling Combinational Logic


Example 7-1: Add, multiply, subtract dataflow processing with registered output........... 255
Example 7-2: Function that defines an algorithmic multiply operation..............................264
Example 7-3: State decoder with inferred priority encoded logic (partial code).................267
Example 7-4: State decoder with unique parallel encoded logic (partial code)..................268
List of Examples xix

Chapter 8: Modeling Sequential Logic


Example 8-1: RTL model of a 4-bit Johnson counter..........................................................279
Example 8-2: 4-bit Johnson counter incorrectly modeled with blocking assignments......282
Example 8-3: RTL model of an 8-bit serial-to-parallel finite state machine.......................310

Chapter 9: Modeling Latches and Avoiding Unintentional Latches


Example 9-1: Using intentional latches for a cycle-stealing pipeline..................................326
Example 9-2: Simple round-robin state machine that will infer latches..............................334

Chapter 10: Modeling Communication Buses — Interface Ports


Example 10-1: Master and slave module connections using separate ports..........................358
Example 10-2: An interface definition for the 8-signal simple AMBA AHB bus............... 362
Example 10-3: Master and slave modules with interface ports.............................................363
Example 10-4: Netlist connecting the master and slave interface ports............................... 364
Example 10-5: Interface with modports for custom views of interface signals....................371
Example 10-6: Interface with internal methods (functions) for parity logic.........................373
Example 10-7: Interface with internal procedural code to generate bus functionality..........376
Example 10-8: Parameterized interface with configurable bus data word size.....................378
xxi

List of Figures

Chapter 1: SystemVerilog Simulation and Synthesis


Figure 1-1: Verilog-95 and Verilog-2001 language features................................................... 4
Figure 1-2: Verilog-2005 with SystemVerilog language extensions....................................... 5
Figure 1-3: SystemVerilog modeling abstraction levels ..........................................................7
Figure 1-4: 1-bit adder with carry, represented with logic gates ............................................. 8
Figure 1-5: Typical RTL-based ASIC design flow ................................................................ 13
Figure 1-6: Typical RTL-based FPGA design flow ............................................................... 16
Figure 1-7: Simulation time line and time slots .....................................................................26
Figure 1-8: Simplified SystemVerilog event scheduling flow .............................................. 28
Figure 1-9: Simulation time line and time slots with some events scheduled ........................30
Figure 1-10: SystemVerilog synthesis tool flow ......................................................................31
Figure 1-11: Diagram of a simple circuit requiring synthesis constraints .............................. 34

Chapter 2: RTL Modeling Fundamentals


Figure 2-1: SystemVerilog module contents ..........................................................................53
Figure 2-2: Design partitioning using sub blocks ..................................................................54

Chapter 3: Net and Variable types


Figure 3-1: Vectors with subfields ........................................................................................73

Chapter 4: User-defined Types and Packages


Figure 4-1: State diagram for a confidence counter state machine ......................................122
Figure 4-2: Packed structures are stored as a vector ............................................................ 128
Figure 4-3: Packed union with two representations of the same storage..............................133
Figure 4-4: Synthesis result for Example 4-7: ALU with structure and union ports ............136
Figure 4-5: Synthesis result for Example 4-8: instruction register with structures ..............138

Chapter 5: RTL Expression Operators


Figure 5-1: Synthesis result for Example 5-1: Concatenate operator (status register) ........148
Figure 5-2: Synthesis result for Example 5-2: Add operator (adder with carry in/out)........149
Figure 5-3: Synthesis result for Example 5-3: Conditional operator (mux’ed register) .......151
Figure 5-4: Synthesis result for Example 5-4: Conditional operator (tri-state output).........152
Figure 5-5: Synthesis result for Example 5-5: Bitwise AND and OR operations ................157
Figure 5-6: Synthesis result for Example 5-6: Reduction XOR (parity checker) ................159
Figure 5-7: Synthesis result for Example 5-7: Logical operators (in-range compare) .........163
Figure 5-8: Synthesis result for Example 5-8: Relational operators (comparator) ..............168
Figure 5-9: Synthesis result for Example 5-9: Case equality, ==? (comparator) ................170
Figure 5-10: Synthesis result for Example 5-10: Inside operator (boundary detector)......... 172
Figure 5-11: Bitwise and arithmetic shift operations ........................................................... 174
Figure 5-12: Synthesis result for Example 5-11: Shift operator, right-shift by 1 b i t ............ 175
Figure 5-13: Synthesis result for Example 5-12: Shift operator, variable left shifts ........... 176
Figure 5-14: Rotate a variable number of times using concatenate and shift operators .......178
Figure 5-15: Synthesis result for Example 5-13: Concatenate and shift (rotate) .................179
xxii RTL Modeling with SystemVerilog for Simulation and Synthesis

Figure 5-16: Synthesis result for Example 5-14: Streaming operator (bit reversal) ............ 183
Figure 5-17: Synthesis result for Example 5-15: Arithmetic operation, unsigned .............. 187
Figure 5-18: Synthesis result for Example 5-16: Arithmetic operation, signed .................. 187
Figure 5-19: Synthesis result for Example 5-18: Increment and decrement operators......... 193
Figure 5-20: Synthesis result after mapping to a Xilinx Virtex®-7 FPG A ........................... 193
Figure 5-21: Synthesis result after mapping to a Xilinx CoolRunner™-II CPLD ............... 194
Figure 5-22: Synthesis result for Example 5-19: Assignment operators .............................. 197
Figure 5-23: Synthesis result for Example 5-20: Size casting ............................................. 205
Figure 5-24: Synthesis result for Example 5-21: Sign casting ............................................. 208

Chapter 6: RTL Programming Statements


Figure 6-1: Synthesis result for Example 6-1: if-else as a M U X ..........................................219
Figure 6-2: Synthesis result for Example 6-2: if-else as a latch ..........................................220
Figure 6-3: Synthesis result for Example 6-3: if-else as a priority encoder ........................221
Figure 6-4: Synthesis result for Example 6-4: if-else as a chip-enable flip-flop .................222
Figure 6-5: Synthesis result for Example 6-5: case statement as a 4-to-l M U X ..................226
Figure 6-6: Synthesis result for Example 6-6: case...inside as a priority encoder ...............227
Figure 6-7: Synthesis result for Example 6-7: for-loop to operate on vector bits ...............230
Figure 6-8: Synthesis result for Example 6-8: for-loop to find lowest bit set .....................232
Figure 6-9: Synthesis result for Example 6-9: repeat loop to raise to an exponent ..............234
Figure 6-10: Synthesis result for Example 6-10 .................................................................. 240

Chapter 7: Modeling Combinational Logic


Figure 7-1: Synthesis result for Example 7-1: Continuous assignment as comb, logic .......255
Figure 7-2: Synthesis result for Example 7-2: Function as combinational logic .................264
Figure 7-3: Synthesis result for Example 7-3: Reverse case statement with priority...........267
Figure 7-4: Synthesis result for Example 7-4: Reverse case statement, using unique .........268

Chapter 8: Modeling Sequential Logic


Figure 8-1: 4-bit Johnson counter diagram ........................................................................ 277
Figure 8-2: Simplified SystemVerilog event scheduling flow ........................................... 279
Figure 8-3: Synthesis result for Example 8-1: Nonblocking assignments, J-Counter..........280
Figure 8-4: Synthesis result for Example 8-2: Blocking assignments, bad J-Counter .........283
Figure 8-5: Blocking assignment to intermediate temporary variable ...............................284
Figure 8-6: Nonblocking assignment to intermediate temporary variable .......................284
Figure 8-7: Synthesis result: Async reset DFF mapped to Xilinx Virtex®-6 FPGA ..........288
Figure 8-8: Synthesis result: Async reset mapped to Xilinx CoolRunner™-II CPLD .......288
Figure 8-9: Waveform showing result of incorrectly modeled asynchronous reset ...........289
Figure 8-10: Synthesis result for a chip-enable flip-flop ..................................................... 290
Figure 8-11: External logic to create the functionality of a chip-enable flip-flop ...............290
Figure 8-12: Synthesis result for an asynchronous set-reset flip-flop .................................293
Figure 8-13: Two flip-flop clock synchronizer for 1-bit control signals .............................296
Figure 8-14: An 8-bit serial value of hex CA, plus a start bit ..............................................299
Figure 8-15: State flow for an 8-bit serial-to-parallel Finite State Machine ........................ 300
Figure 8-16: Primary functional blocks in a Finite State Machine ......................................305
Figure 8-17: Functional block diagram for a serial-to-parallel finite state machine ...........310
Figure 8-18: Synthesis result for Example 8-3: Simple-SPI using a state machine ............312
List of Figures xxiii

Chapter 9: Modeling Latches and Avoiding Unintentional Latches


Figure 9-1: Synthesis result for Example 9-1: Pipeline with intentional latches ...............327
Figure 9-2: Round-robin Finite State Machine state flow .................................................332
Figure 9-3: Synthesis result for Example 9-2: FSM with unintended latches ....................335
Figure 9-4: Synthesis result when using a default case item to prevent latches ................336
Figure 9-5: Synthesis result using a pre-case assignment to prevent latches......................339
Figure 9-6: Synthesis result when using a unique case statement to prevent latches ........343
Figure 9-7: Synthesis result using a default case X assignment to prevent latches ............347
Figure 9-8: Synthesis results when using a pre-case X assignment....................................348

Chapter 10: Modeling Communication Buses — Interface Ports


Figure 10-1: Block diagram connecting a Master and Slave using separate ports ..............357
Figure 10-2: Block diagram connecting a Master and Slave using interface ports .............361

Appendix A: Best Practice Coding Guidelines

Appendix B: SystemVerilog Reserved Keywords

Appendix C: X Optimism and X Pessimism in RTL Models


Figure C-l: Flip-flop with synchronous reset......................................................................404
Figure C-2: 2-to-l selection — MUX gate implementation................................................405
Figure C-3: 2-to-l selection — NAND gate implementation..............................................405
Figure C-4: Clock divider with pessimistic X lock-up........................................................416

Appendix D: Additional Resources


Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
XXV

Foreword

by Phil M oorby
The creator o f the Verilog language

Verilog is now over 30 years old, and has spanned the years of designing with
graphical schematic entry tools of a few thousand gates, to modem RTL design using
tools supporting millions, if not billions, of gates, all following the enduring predic­
tion of Moore's law. Verilog addressed the simulation and verification problems of the
day, but also included capabilities that enabled a new generation of EDA technology
to evolve, namely synthesis from RTL. Verilog thus became the mainstay language of
IC designers.
Behind the scenes, there has been a steady process of inventing and learning what
was needed and what worked (and what did not work!) to improve the language to
keep up with the inevitable growth demands. From the public's point of view, there
were the stepping-stones from one published standard to the next: the first published
standard in 1995, the eagerly awaited update of Verilog in 2001, the final of the older
Verilog standard in 2005, and the matured System Verilog standard in 2012, just to
name some of the main stones.
I have always held the belief that for hardware designers to achieve their best in
inventing new ideas they must think (if not dream) in a self contained, consistent and
concise language. It is often said when learning a new natural language that your
brain doesn't get it until you realize that you are speaking it in your dreams.
Over the last 15 years, Verilog has been extended and matured into the System Ver­
ilog language of today, and includes major new abstract constmcts, test-bench verifi­
cation, formal analysis, and C-based API’s. SystemVerilog also defines new layers in
the Verilog simulation strata. These extensions provide significant new capabilities to
the designer, verification engineer and architect, allowing better teamwork and co­
ordination between different project members. As was the case with the original Ver­
ilog, teams who adopt SystemVerilog based tools will be more productive and pro­
duce better quality designs in shorter periods. Many published textbooks on the
design side of the new SystemVerilog assumed that the reader was familiar with Ver­
ilog, and simply explained the new extensions. It is time to leave behind the stepping-
stones and to teach a single consistent and concise language in a single book, and
maybe not even refer to the old ways at all!
XXVI RTL Modeling with SystemVerilog for Simulation and Synthesis

If you are a designer or architect building digital systems, or a verification engineer


searching for bugs in these designs, then SystemVerilog will provide you with signif­
icant benefits, and this book is a great place to learn the design aspects of SystemVer­
ilog and the future of hardware design.
Happy inventing...

P hil Moorby,
M ontana Systems, Inc.
M assachusetts, 2016
X X V II

Preface

SystemVerilog, officially the IEEE Std 1800™ standard, is a “Hardware Design


and Verification Language”. The language serves a dual purpose: to model digital
design behavior, and to program verification testbenches to stimulate and verify the
design models.
This book is based on the IEEE Std 1800-2012 and proposed IEEE Std 1800-2017
SystemVerilog standards. The 1800-2012 SystemVerilog standard was the version
currently in use at the time this book was written. The 1800-2017 standard was in the
process of being finalized.
SystemVerilog is the latest generation of what was originally called Verilog. Sys­
temVerilog adds powerful language constructs for modeling and verifying the behav­
ior of designs that are ever increasing in size and complexity. These extensions to
Verilog fall into two major groups: design modeling enhancements, and verification
enhancements.
This book, RTL Modeling with SystemVerilog fo r Simulation and Synthesis,
focuses on using SystemVerilog for modeling digital ASIC and FPGA designs at the
RTL level of abstraction. A companion book, SystemVerilog fo r Verification1, covers
verifying correct functionality of large, complex designs.

W hy this book

I (Stuart Sutherland) teach corporate-level SystemVerilog training workshops for


companies throughout the world, and provide SystemVerilog consulting services. As
a course developer and trainer, I have been disappointed with the offering of System­
Verilog books for design and synthesis. There are a few books that offer a primer-like
overview of SystemVerilog, many books that focus on the verification aspects of Sys­
temVerilog, and several books that cover the long-obsolete Verilog-2001 language for
hardware design. A few of these older Verilog based books have been updated to
show some SystemVerilog features, but the traditional Verilog roots are still evident
in the coding styles and examples of those books.
This book addresses these shortcomings. The book was written with SystemVerilog
as its starting point, rather than starting with traditional Verilog and adding System­
Verilog features. The focus is writing RTL models of digital designs, using System­
Verilog constructs that are synthesizable for both ASIC or FPGA devices. Proper
coding styles for simulation and synthesis are emphasized throughout the book.

1. Chris Spear and Greg Tumbush, “SystemVerilog for Verification, Third Edition”, New York, NY:
Springer 2012, 978-1-4614-0715-7.
X X V III RTL Modeling with SystemVerilog for Simulation and Synthesis

Intended audience for this book


This book is for all engineers who are involved with digital IC design. The book is
intended to serve as both a learning guide and a reference manual on the RTL synthe­
sis subset of the SystemVerilog language. The book presents SystemVerilog in the
context of examples, with an emphasis on correct, best-practice coding styles.

NOTE
This book assumes the reader is already familiar with digital logic design.

The text and examples in this book assume and require an understanding of digital
logic. Concepts such as AND, OR and Exclusive-OR gates, multiplexors, flip-flops,
and state machines are not defined in this book. This book can be a useful resource in
conjunction with learning and applying digital design engineering skills.

Topics covered in this book


This book focuses on the portion of SystemVerilog that is intended for representing
digital hardware designs in a manner that is both simulatable and synthesizable.
Chapter 1 presents a brief overview of simulating and synthesizing the SystemVer­
ilog language. The major differences between SystemVerilog and traditional Verilog
are also presented.
Chapter 2 provides an overview of RTL modeling in SystemVerilog. Topics include
SystemVerilog language rules, design partitioning, and netlists.
Chapter 3 goes into detail on the many data types in SystemVerilog, and which data
types are useful in RTL modeling. The appropriate use of 2-state and 4-state types is
discussed. The chapter also presents using data arrays as synthesizable, RTL model­
ing constructs.
Chapter 4 presents user-defined types, including enumerated types, structures, and
unions. The use of packages as a place to declare user-defined types is also covered.
Chapter 5 explains the many programming operators in SystemVerilog, and shows
how to use these operators to code accurate and deterministic RTL models.
Chapter 6 covers the programming statements in SystemVerilog, with an emphasis
on proper RTL coding guidelines in order to ensure the code will synthesize to the
gate-level implementation intended. Several programming statements that System­
Verilog adds to the original Verilog language make it possible to model using fewer
lines of code compared to standard Verilog.
Chapter 7 gives an in-depth look at writing RTL models of combinational logic.
Best-practice coding recommendations are given for writing models that will simulate
and synthesize correctly.
Preface X X IX

Chapter 8 examines the correct way to model RTL sequential logic behavior. Topics
include synchronous and asynchronous resets, set/reset flip-flops, chip-enable flip-
flops, and memory devices, such as RAMs.
Chapter 9 presents the proper way to model latches in RTL models, and how to avoid
unintentional latches.
Chapter 10 discusses the powerful interface construct that SystemVerilog adds to tra­
ditional Verilog. Interfaces greatly simplify the representation of complex buses and
enable the creation of more intelligent, easier to use IP (intellectual property) models.
Appendix A summarizes the best-practice coding guidelines and recommendations
that are made in each chapter of the book.
Appendix B lists the set of reserved keywords for each generation of the Verilog and
SystemVerilog standards.
Appendix C is a reprint of a paper entitled I ’m Still In Love With My X, regarding
how X values propagate in RTL models. The paper recommends ways to minimize or
catch potential problems with X-optimism and X-pessimism in RTL models.
Appendix D lists some additional resources that are closely related to the topics dis­
cussed in this book.

Book examples
The examples in this book illustrate specific SystemVerilog constructs in a realistic,
though small, context. Complete code examples list the code between two horizontal
lines, as shown below. This book use a convention of showing all SystemVerilog key­
words in bold.

SystemVerilog RTL model of 32-bit adder/subtractor (same as Example 1-3, page 11)
module rtl_adder_subtractor
(input logic elk, // 1-bit scalar input
input logic mode, // 1-bit scalar input
input logic [31:0] a, b, // 32-bit vector inputs
output logic [31:0] sum // 32-bit vector output
);
always_ff 0 (posedge elk) begin
if (mode == 0) sum <= a + b;
else sum <= a - b;
end
endmodule: rtl adder subtractor

Each chapter also contains many shorter examples, referred to a code snippets.
These snippets are not complete models, and are not encapsulated between horizontal
lines. The full source code, such as variable declarations, is not included in these code
Random documents with unrelated
content Scribd suggests to you:
coutume, on le sait, de relire, d’abord,
une demi-douzaine de pages du Code
pénal, pour,—disait-il,—se donner le ton.
Pour moi, m’étant mis en tête d’écrire
certaines histoires, j’avais trouvé plus
pratique, après mûre réflexion, de
fréquenter, tout bonnement, le soir, l’un
des cafés du passage de Choiseul où feu
M. X***, l’ancien exécuteur des hautes-
œuvres de Paris, venait, presque
quotidiennement, faire sa petite partie
d’impériale, incognito. C’était, me
semblait-il, un homme aussi bien élevé
que tel autre; il parlait d’une voix fort
basse, mais très distincte, avec un bénin
sourire. Je m’asseyais à une table voisine
et il me divertissait quelque peu
lorsqu’emporté par le démon du jeu, il
s’écriait brusquement:—«Je coupe!» sans
y entendre malice. Ce fut là, je m’en
souviens, que j’écrivis mes plus
poétiques inspirations, pour me servir
d’une expression bourgeoise.—J’étais
donc à l’épreuve de cette grosse
sensation d’horreur convenue que
causent aux passants ces messieurs de
la robe courte.
Il était donc étrange que je me
sentisse, en ce moment, sous
l’impression d’un saisissement aussi
intense, parce que notre convive de
hasard venait de se déclarer l’un d’entre
eux.
C*** qui, pendant les derniers mots,
nous avait rejoints, me frappa
légèrement sur l’épaule.
—Perds-tu la tête? me demanda-t-il.
—Il aura fait quelque gros héritage et
n’exerce plus qu’en attendant un
successeur!... murmurai-je, très énervé
par les fumées du punch.
—Bon! dit C***, ne vas-tu pas
supposer qu’il est, réellement, attaché à
la cérémonie en question?
—Tu as donc saisi le sens de notre
petite causerie, mon cher! lui dis-je tout
bas: courte mais instructive! Ce monsieur
est un simple exécuteur!—Belge,
probablement.—C’est l’exotique dont
parlait Antonie tout à l’heure. Sans sa
présence d’esprit, j’eusse essuyé une
déconvenue en ce qu’il eût effrayé ces
jeunes personnes.
—Allons donc! s’écria C***: un
exécuteur en équipage de trente mille
francs? qui donne des diamants à sa
voisine? qui soupe à la Maison-Dorée la
veille de prodiguer ses soins à un client?
Depuis ton café de Choiseul, tu vois des
bourreaux partout. Bois un verre de
punch! Ton M. Saturne est un assez
mauvais plaisant, tu sais?
A ces mots, il me sembla que la
logique, oui, que la froide raison, était du
côté de ce cher poète.—Fort contrarié, je
pris à la hâte mes gants et mon chapeau
et me dirigeai très vite sur le seuil, en
murmurant:
—Bien.
—Tu as raison, dit C***.
—Ce lourd sarcasme a duré très
longtemps, ajoutai-je en ouvrant la porte
du salon. Si j’atteins ce mystificateur
funèbre, je jure que...
—Un instant: jouons à qui passera le
premier, dit C***.
J’allais répondre le nécessaire et
disparaître lorsque, derrière mon épaule,
une voix allègre et bien connue s’écria
sous la tenture soulevée:
—Inutile! Restez, mon cher ami.
En effet, notre illustre ami, le petit
docteur Florian Les Églisottes, était entré
pendant nos dernières paroles: il était
devant moi, tout sautillant, dans son
witchoûra couvert de neige.
—Mon cher docteur, lui dis-je, dans
l’instant je suis à vous, mais...
Il me retint:
—Lorsque je vous aurai conté
l’histoire de l’homme qui sortait de ce
salon quand je suis arrivé, continua-t-il,
je parie que vous ne vous soucierez plus
de lui demander compte de ses saillies!—
D’ailleurs, il est trop tard: sa voiture l’a
emporté loin d’ici déjà.
Il prononça ces mots sur un ton si
étrange qu’il m’arrêta définitivement.
—Voyons l’histoire, docteur, dis-je en
me rasseyant, après un moment.—Mais,
songez-y, Les Églisottes: vous répondez
de mon inaction et la prenez sous votre
bonnet.
Le prince de la Science posa dans un
coin sa canne à pomme d’or, effleura,
galamment, du bout des lèvres, les
doigts de nos trois belles interdites, se
versa un peu de madère et, au milieu du
silence fantastique dû à l’incident—et à
son entrée personnelle,—commença en
ces termes:
—Je comprends toute l’aventure de
ce soir. Je me sens au fait de tout ce qui
vient de se passer comme si j’avais été
des vôtres!... Ce qui vous est arrivé, sans
être précisément alarmant, est,
néanmoins, une chose qui aurait pu le
devenir.
—Hein? dit C***.
—Ce monsieur est bien, en effet, le
baron de H***, il est d’une haute famille
d’Allemagne; il est riche à millions;
mais...
Le docteur nous regarda:
—Mais le prodigieux cas d’aliénation
mentale dont il est frappé, ayant été
constaté par les Facultés médicales de
Munich et de Berlin, présente la plus
extraordinaire et la plus incurable de
toutes les monomanies enregistrées
jusqu’à ce jour! acheva le docteur du
même ton que s’il se fût trouvé à son
cours de physiologie comparée.
—Un fou!—Qu’est-ce à dire, Florian,
que signifie cela?—murmura C*** en
allant pousser le verrou léger de la
serrure.
Ces dames, elles-mêmes, avaient
changé de sourire à cette révélation.
Quant à moi, je croyais, positivement,
rêver depuis quelques minutes.
—Un fou!... s’écria Antonie;—mais,
on renferme ces personnes, il me
semble?
—Je croyais avoir fait observer que
notre gentilhomme était plusieurs fois
millionnaire, répliqua fort gravement Les
Églisottes. C’est donc lui qui fait
enfermer les autres, ne vous en déplaise.
—Et quel est son genre de manie?
demanda Susannah. Je le trouve très
gentil, moi, ce monsieur, je vous en
préviens!
—Vous ne serez peut-être pas de cet
avis tout à l’heure, madame! continua le
docteur en allumant une cigarette.
Le petit jour livide teintait les vitres,
les bougies jaunissaient, le feu
s’éteignait; ce que nous entendions nous
donnait la sensation d’un cauchemar. Le
docteur n’était pas de ceux auxquels la
mystification est familière: ce qu’il disait
devait être aussi froidement réel que la
machine dressée là-bas sur la place.
—Il paraîtrait, continua-t-il entre deux
gorgées de madère, qu’aussitôt sa
majorité, ce jeune homme taciturne
s’embarqua pour les Indes orientales; il
voyagea beaucoup dans les contrées de
l’Asie. Là commence le mystère épais qui
cache l’origine de son accident. Il assista,
pendant certaines révoltes, dans
l’extrême Orient, à ces supplices
rigoureux que les lois en vigueur dans
ces parages infligent aux rebelles et aux
coupables. Il y assista, d’abord, sans
doute, par une simple curiosité de
voyageur. Mais, à la vue de ces
supplices, il paraîtrait que les instincts
d’une cruauté, qui dépasse les capacités
de conception connues, s’émurent en lui,
troublèrent son cerveau, empoisonnèrent
son sang et finalement le rendirent l’être
singulier qu’il est devenu. Figurez-vous
qu’à force d’or, le baron de H*** pénétra
dans les vieilles prisons des villes
principales de la Perse, de l’Indo-Chine et
du Thibet et qu’il obtint, plusieurs fois,
des gouverneurs, d’exercer les horribles
fonctions de justicier, aux lieu et place
des exécuteurs orientaux.—Vous
connaissez l’épisode des quarante livres
pesant d’yeux crevés qui furent apportés,
sur deux plats d’or, au shah Nasser-
Eddin, le jour où il fit son entrée
solennelle dans une ville révoltée? Le
baron, vêtu en homme du pays, fut l’un
des plus ardents zélateurs de toute cette
atrocité. L’exécution des deux chefs de la
sédition fut d’une plus stricte horreur. Ils
furent condamnés d’abord—à se voir
arracher toutes les dents par des
tenailles, puis à l’enfoncement de ces
mêmes dents en leurs crânes, rasés à cet
effet,—et ceci de manière à y former les
initiales persanes du nom glorieux du
successeur de Feth-Ali-shah.—Ce fut
encore notre amateur qui, moyennant un
lac de roupies, obtint de les exécuter lui-
même et avec la gaucherie compassée
qui le distingue.—(Simple question: quel
est le plus insensé de celui qui ordonne
de tels supplices ou de celui qui les
exécute?—Vous êtes révoltés? Bah! Si le
premier de ces deux hommes daignait
venir à Paris, nous serions trop honorés
de lui tirer des feux d’artifice et
d’ordonner aux drapeaux de nos armées
de s’incliner sur son passage,—le tout,
fût-ce au nom des «immortels principes
de 89.» Donc, passons).—S’il faut en
croire les rapports des capitaines Hobbs
et Egginson, les raffinements que sa
monomanie croissante lui suggéra, dans
ces occasions, ont surpassé, de toute la
hauteur de l’Absurde, celles des Tibère et
des Héliogabale,—et toutes celles qui
sont mentionnées dans les fastes
humains. Car, ajouta le docteur, un fou
ne saurait être égalé en perfection sur le
point où il déraisonne.

É
Le docteur Les Églisottes s’arrêta et
nous regarda, tour à tour, d’un air
goguenard.
A force d’attention, nous avions laissé
nos cigares s’éteindre pendant ce
discours.
—Une fois de retour en Europe,
continua le docteur,—le baron de H***,
blasé jusqu’à faire espérer sa guérison,
fut bientôt ressaisi par sa fièvre chaude.
Il n’avait qu’un rêve, un seul,—plus
morbide, plus glacé que toutes les
abjectes imaginations du marquis de
Sade:—c’était, tout bonnement, de se
faire délivrer le brevet d’Exécuteur des
hautes-œuvres GÉNÉRAL de toutes les
capitales de l’Europe. Il prétendait que
les bonnes traditions et que l’habileté
périclitaient dans cette branche artistique
de la civilisation; qu’il y avait, comme on
dit, péril en la demeure, et, fort des
services qu’il avait rendus en Orient
(écrivait-il dans les placets qu’il a
souvent envoyés), il espérait (si les
souverains daignaient l’honorer de leur
confiance) arracher aux prévaricateurs
les hurlements les plus modulés que
jamais oreilles de magistrat aient
entendus sous la voûte d’un cachot.—
(Tenez! Quand on parle de Louis XVI
devant lui, son œil s’allume et reflète une
haine d’outre-tombe extraordinaire: Louis
XVI est, en effet, le souverain qui a cru
devoir abolir la question préalable, et ce
monarque est le seul homme que M. de
H*** ait probablement jamais haï.)
»Il échoua toujours, dans ces placets,
comme bien vous le pensez, et c’est
grâce aux démarches de ses héritiers
qu’on ne l’a pas enfermé selon ses
mérites. En effet, des clauses du
testament de son père, feu le baron de
H***, forcent la famille à éviter sa mort
civile à cause des énormes préjudices
d’argent que cette mort entraînerait pour
les proches de ce personnage. Il voyage
donc, en liberté. Il est au mieux avec
tous ces messieurs de la Justice-capitale.
Sa première visite est pour eux, dans
toutes les villes où il passe. Il leur a
souvent offert des sommes très fortes
pour le laisser opérer à leur place,—et je
crois, entre nous (ajouta le docteur en
clignant de l’œil), qu’en Europe,—il en a
débauché quelques-uns.
»A part ces équipées, on peut dire
que sa folie est inoffensive, puisqu’elle
ne s’exerce que sur des personnes
désignées par la Loi.—En dehors de son
aliénation mentale, le baron de H*** a la
renommée d’un homme de mœurs
paisibles et, même, engageantes. De
temps à autre, sa mansuétude ambiguë
donne, peut-être, froid dans le dos,
comme on dit, à ceux de ses intimes qui
sont au courant de sa terrible turlutaine,
mais c’est tout.
»Néanmoins, il parle souvent de
l’Orient avec quelque regret et doit
incessamment y retourner. La privation
du diplôme de Tortionnaire-en-chef du
globe l’a plongé dans une mélancolie
noire. Figurez-vous les rêveries de
Torquemada ou d’Arbuez, des ducs
d’Albe ou d’York. Sa monomanie s’empire
de jour en jour. Aussi, toutes les fois qu’il
se présente une exécution, en est-il
averti par des émissaires secrets—avant
les gentilshommes de la hache eux-
mêmes! Il court, il vole, il dévore la
distance, sa place est réservée au pied
de la machine. Il y est, en ce moment où
je vous parle: il ne dormirait pas
tranquille s’il n’avait pas obtenu le
dernier regard du condamné.
»Voilà, messieurs et mesdames, le
gentleman avec lequel vous avez eu
l’heur de frayer cette nuit. J’ajouterai
que, sorti de sa démence et dans ses
rapports avec la société, c’est un homme
du monde vraiment irréprochable et le
causeur le plus entraînant, le plus
enjoué, le plus...
—Assez, docteur!—par grâce!
s’écrièrent Antonie et Clio la Cendrée,
que le badinage strident et sardonique
de Florian avait impressionnées
extraordinairement.
—Mais c’est le sigisbée de la
Guillotine! murmura Susannah: c’est le
dilettante de la Torture!
—Vraiment, si je ne vous connaissais
pas, docteur... balbutia C***.
—Vous ne croiriez pas? interrompit
Les Églisottes. Je ne l’ai pas cru, moi-
même, pendant longtemps; mais, si vous
voulez, nous allons aller là-bas. J’ai
justement ma carte; nous pourrons
parvenir jusqu’à lui, malgré la haie de
cavalerie. Je ne vous demanderai que
d’observer son visage, voilà tout,
pendant l’accomplissement de la
sentence. Après quoi, vous ne douterez
plus.
—Grand merci de l’invitation! s’écria
C***; je préfère vous croire, malgré
l’absurdité vraiment mystérieuse du fait.
—Ah! c’est un type que votre
baron!... continua le docteur en
attaquant un buisson d’écrevisses resté
vierge miraculeusement.
Puis, nous voyant tous devenus
moroses:
—Il ne faut pas vous étonner ni vous
affecter outre mesure de mes
confidences à ce sujet! dit-il. Ce qui
constitue la hideur de la chose, c’est la
particularité de la monomanie. Quant au
reste, un fol est un fol, rien de plus. Lisez
les aliénistes: vous y relèverez des cas
d’une étrangeté presque aussi
surprenante; et ceux qui en sont atteints,
je vous jure que nous les coudoyons en
plein midi, à chaque instant, sans en rien
soupçonner.
—Mes chers amis, conclut C*** après
un moment de saisissement général, je
n’éprouverais pas, je l’avoue,
d’éloignement bien précis à choquer mon
verre contre celui que me tendrait un
bras séculier, comme on disait au temps
où les bras des exécuteurs pouvaient
être religieux. Je n’en chercherais pas
l’occasion, mais si elle s’offrait à moi, je
vous dirais, sans trop déclamer (et Les
Églisottes, surtout, me comprendra), que
l’aspect ou même la compagnie de ceux
qui exercent les fonctions capitales ne
saurait m’impressionner en aucune
façon. Je n’ai jamais très bien compris
les effets des mélodrames à ce sujet.
»Mais la vue d’un homme tombé en
démence, parce qu’il ne peut remplir
légalement cet office, ah! ceci, par
exemple, me cause quelque impression.
Et je n’hésite pas à le déclarer: s’il est,
parmi l’Humanité, des âmes échappées
d’un Enfer, notre convive de ce soir est
une des pires que l’on puisse rencontrer.
Vous aurez beau l’appeler fol, cela
n’explique pas sa nature originelle. Un
bourreau réel me serait indifférent; notre
affreux maniaque me fait frissonner d’un
frisson indéfinissable!
Le silence qui accueillit les paroles de
C*** fut solennel comme si la Mort eût
laissé voir, brusquement, sa tête chauve
entre les candélabres.
—Je me sens un peu indisposée, dit
Clio la Cendrée d’une voix que la
surexcitation nerveuse et le froid de
l’aurore intervenue entrecoupaient. Ne
me laissez point toute seule. Venez à la
villa. Tâchons d’oublier cette aventure,
messieurs et amis; venez: il y a des
bains, des chevaux et des chambres pour
dormir. (Elle savait à peine ce qu’elle
disait.) C’est au milieu du Bois, nous y
serons dans vingt minutes. Comprenez-
moi, je vous en prie. L’idée de ce
monsieur me rend presque malade, et, si
j’étais seule, j’aurais quelque inquiétude
de le voir entrer tout à coup, une lampe
à la main, éclairant son fade sourire qui
fait peur.
—Voilà, certes, une nuit énigmatique!
dit Susannah Jackson.
Les Églisottes s’essuyait les lèvres
d’un air satisfait, ayant terminé son
buisson.
Nous sonnâmes: Joseph parut.
Pendant que nous en finissions avec lui,
l’Écossaise, en se touchant les joues
d’une petite houppe de cygne, murmura,
tranquillement, auprès d’Antonie:
—N’as-tu rien à dire à Joseph, petite
Yseult?
—Si fait, répondit la jolie et toute pâle
créature, et tu m’as devinée, folle!
Puis, se tournant vers l’intendant:
—Joseph, continua-t-elle, prenez
cette bague: le rubis en est un peu foncé
pour moi.—N’est-ce pas, Suzanne? Tous
ces brillants ont l’air de pleurer autour de
cette goutte de sang.—Vous la ferez
vendre aujourd’hui et vous en remettrez
le montant aux mendiants qui passent
devant la maison.
Joseph prit la bague, s’inclina de ce
salut somnambulique dont il eut seul le
secret et sortit pour faire avancer les
voitures pendant que ces dames
achevaient de rajuster leurs toilettes,
s’enveloppaient de leurs longs dominos
de satin noir et remettaient leurs
masques.
Six heures sonnèrent.
—Un instant, dis-je en étendant le
doigt vers la pendule: voici une heure qui
nous rend tous un peu complices de la
folie de cet homme. Donc, ayons plus
d’indulgence pour elle. Ne sommes-nous
pas, en ce moment même,
implicitement, d’une barbarie à peu près
aussi morne que la sienne?
A ces mots, l’on resta debout, en
grand silence.
Susannah me regarda sous son
masque: j’eus la sensation d’une lueur
d’acier. Elle détourna la tête et entr’ouvrit
une fenêtre, très vite.
L’heure sonnait, au loin, à tous les
clochers de Paris.
Au sixième coup, tout le monde
tressaillit profondément,—et je regardai,
pensif, la tête d’un démon de cuivre, aux
traits crispés, qui soutenait, dans une
patère, les flots sanglants des rideaux
rouges.
A S’Y MÉPRENDRE!
A Monsieur Henri de Bornier.

«Dardant on ne sait
où leurs globes
ténébreux.»
C. Baudelaire.

Par une grise matinée de novembre,


je descendais les quais d’un pas hâtif.
Une bruine froide mouillait l’atmosphère.
Des passants noirs, obombrés de
parapluies difformes, s’entrecroisaient.
La Seine jaunie charriait ses bateaux
marchands pareils à des hannetons
démesurés. Sur les ponts, le vent cinglait
brusquement des chapeaux, que leurs
possesseurs disputaient à l’espace avec
ces attitudes et ces contorsions dont le
spectacle est toujours si pénible pour
l’artiste.
Mes idées étaient pâles et
brumeuses; la préoccupation d’un
rendez-vous d’affaires, accepté, depuis la
veille, me harcelait l’imagination. L’heure
me pressait: je résolus de m’abriter sous
l’auvent d’un portail d’où il me serait plus
commode de faire signe à quelque fiacre.
A l’instant même, j’aperçus, tout
justement à côté de moi, l’entrée d’un
bâtiment carré, d’aspect bourgeois.
Il s’était dressé dans la brume comme
une apparition de pierre, et, malgré la
rigidité de son architecture, malgré la
buée morne et fantastique dont il était
enveloppé, je lui reconnus, tout de suite,
un certain air d’hospitalité cordiale qui
me rasséréna l’esprit.
—A coup sûr, me dis-je, les hôtes de
cette demeure sont des gens
sédentaires!—Ce seuil invite à s’y
arrêter: la porte n’est-elle pas ouverte?
Donc, le plus poliment du monde, l’air
satisfait, le chapeau à la main,—méditant
même un madrigal pour la maîtresse de
la maison,—j’entrai, souriant, et me
trouvai, de plain-pied, devant une espèce
de salle à toiture vitrée, d’où le jour
tombait, livide.
A des colonnes étaient appendus des
vêtements, des cache-nez, des
chapeaux.
Des tables de marbre étaient
disposées de toutes parts.
Plusieurs individus, les jambes
allongées, la tête élevée, les yeux fixes,
l’air positif, paraissaient méditer.
Et les regards étaient sans pensée,
les visages couleur du temps.
Il y avait des portefeuilles ouverts,
des papiers dépliés auprès de chacun
d’eux.
Et je reconnus, alors, que la
maîtresse du logis, sur l’accueillante
courtoisie de laquelle j’avais compté,
n’était autre que la Mort.
Je considérai mes hôtes.
Certes, pour échapper aux soucis de
l’existence tracassière, la plupart de ceux
qui occupaient la salle avaient assassiné
leurs corps, espérant, ainsi, un peu plus
de bien-être.
Comme j’écoutais le bruit des
robinets de cuivre scellés à la muraille et
destinés à l’arrosage quotidien de ces
restes mortels, j’entendis le roulement
d’un fiacre. Il s’arrêtait devant
l’établissement. Je fis la réflexion que
mes gens d’affaires attendaient. Je me
retournai pour profiter de la bonne
fortune.
Le fiacre venait, en effet, de
dégorger, au seuil de l’édifice, des
collégiens en goguette qui avaient besoin
de voir la mort pour y croire.
J’avisai la voiture déserte et je dis au
cocher:
—Passage de l’Opéra!
Quelque temps après, aux
boulevards, le temps me sembla plus
couvert, faute d’horizon. Les arbustes,
végétations squelettes, avaient l’air, du
bout de leurs branchettes noires,
d’indiquer vaguement les piétons aux
gens de police ensommeillés encore.
La voiture se hâtait.
Les passants, à travers la vitre, me
donnaient l’idée de l’eau qui coule.
Une fois à destination, je sautai sur le
trottoir et m’engageai dans le passage
encombré de figures soucieuses.
A son extrémité, j’aperçus, tout
justement vis-à-vis de moi, l’entrée d’un
café,—aujourd’hui consumé dans un
incendie célèbre (car la vie est un
songe),—et qui était relégué au fond
d’une sorte de hangar, sous une voûte
carrée, d’aspect morne. Les gouttes de
pluie qui tombaient sur le vitrage
supérieur obscurcissaient encore la pâle
lueur du soleil.
—C’était là que m’attendaient,
pensai-je, la coupe en main, l’œil brillant
et narguant le Destin, mes hommes
d’affaires!
Je tournai donc le bouton de la porte
et me trouvai, de plain-pied, dans une
salle où le jour tombait d’en haut, par le
vitrage, livide.
A des colonnes étaient appendus des
vêtements, des cache-nez, des
chapeaux.
Des tables de marbre étaient
disposées de toutes parts.
Plusieurs individus, les jambes
allongées, la tête levée, les yeux fixes,
l’air positif, paraissaient méditer.
Et les visages étaient couleur du
temps, les regards sans pensée.
Il y avait des portefeuilles ouverts et
des papiers dépliés auprès de chacun
d’eux.
Je considérai ces hommes.
Certes, pour échapper aux obsessions
de l’insupportable conscience, la plupart
de ceux qui occupaient la salle avaient,
depuis longtemps, assassiné leurs
«âmes», espérant, ainsi, un peu plus de
bien-être.
Comme j’écoutais le bruit des
robinets de cuivre, scellés à la muraille,
et destinés à l’arrosage quotidien de ces
restes mortels, le souvenir du roulement
de la voiture me revint à l’esprit.
—A coup sûr, me dis-je, il faut que ce
cocher ait été frappé, à la longue, d’une
sorte d’hébétude, pour m’avoir ramené,
après tant de circonvolutions,
simplement à notre point de départ?—
Toutefois, je l’avoue (s’il y a méprise), LE
SECOND COUP D’ŒIL EST PLUS SINISTRE QUE LE
PREMIER!...
Je refermai donc, en silence, la porte
vitrée et je revins chez moi,—bien
décidé, au mépris de l’exemple,—et quoi
qu’il pût m’en advenir,—à ne jamais faire
d’affaires.
IMPATIENCE DE LA
FOULE
A Monsieur Victor Hugo.

«Passant, va dire à
Lacédémone que nous
sommes ici, morts pour
obéir à ses saintes lois.»
Simonides.

La grande porte de Sparte, au battant


ramené contre la muraille comme un
bouclier d’airain appuyé à la poitrine d’un
guerrier, s’ouvrait devant le Taygète. La
poudreuse pente du mont rougeoyait des
feux froids d’un couchant aux premiers
jours de l’hiver, et l’aride versant
renvoyait aux remparts de la ville
d’Héraklès l’image d’une hécatombe
sacrifiée au fond d’un soir cruel.
Au-dessus du portail civique, le mur
se dressait lourdement. Au sommet
terrassé se tenait une multitude toute
rouge du soir. Les lueurs de fer des
armures, les peplos, les chars, les
pointes des piques, étincelaient du sang
de l’astre. Seuls, les yeux de cette foule
étaient sombres; ils envoyaient,
fixement, des regards aigus comme des
javelots vers la cime du mont, d’où
quelque grande nouvelle était attendue.
La surveille, les Trois-Cents étaient
partis avec le roi. Couronnés de fleurs, ils
s’en étaient allés au festin de la Patrie.
Ceux qui devaient souper dans les enfers
avaient peigné leurs chevelures pour la
dernière fois dans le temple de Lycurgue.
Puis, levant leurs boucliers et les
frappant de leurs épées, les jeunes
hommes, aux applaudissements des
femmes, avaient disparu dans l’aurore en
chantant des vers de Tyrtée. Maintenant,
sans doute, les hautes herbes du Défilé
frôlaient leurs jambes nues, comme si la
terre qu’ils allaient défendre voulait
caresser encore ses enfants avant de les
reprendre en son sein vénérable.
Le matin, des chocs d’armes,
apportés par le vent, et des vociférations
triomphales, avaient confirmé les
rapports des bergers éperdus. Les Perses
avaient reculé deux fois, dans une
immense défaite, laissant les dix mille
Immortels sans sépulture. La Locride
avait vu ces victoires! La Thessalie se
soulevait. Thèbes, elle-même, s’était
réveillée devant l’exemple. Athènes avait
envoyé ses légions et s’armait sous les
ordres de Miltiade; sept mille soldats
renforçaient la phalange laconienne.
Mais voici qu’au milieu des chants de
gloire et des prières dans le temple de
Diane, les cinq Ephores, ayant écouté
des messagers survenus, s’étaient entre-
regardés. Le Sénat avait donné, sur-le-
champ, des ordres pour la défense de la
Ville. De là ces retranchements creusés
en hâte, car Sparte, par orgueil, ne se
fortifiait à l’ordinaire que de ses citoyens.
Une ombre avait dissipé toutes les
joies. On ne croyait plus au discours des
pasteurs; les sublimes nouvelles furent
oubliées, d’un seul coup, comme des
fables! Les prêtres avaient frissonné
gravement. Des bras d’augures, éclairés
par la flamme des trépieds, s’étaient
levés, vouant aux divinités infernales!
Des paroles brèves avaient été
chuchotées, terribles, aussitôt. Et l’on
avait fait sortir les vierges, car on allait
prononcer le nom d’un traître. Et leurs
longs vêtements avaient passé sur les
Ilotes, couchés, ivres de vin noir, en
travers des degrés des portiques,
lorsqu’elles avaient marché sur eux sans
les apercevoir.
Alors retentit la nouvelle désespérée.
Un passage désert dans la Phocide
avait été découvert aux ennemis. Un
pâtre messénien avait vendu la terre
d’Hellas. Ephialtès avait livré à Xerxès la
mère patrie. Et les cavaleries perses, au
front desquelles resplendissaient les
armures d’or des satrapes, envahissaient
déjà le sol des dieux, foulaient aux pieds
la nourrice des héros! Adieu, temples,
demeures des aïeux, plaines sacrées! Ils
allaient venir, avec des chaînes, eux, les
efféminés et les pâles, et se choisir des
esclaves parmi tes filles, Lacédémone!
La consternation s’accrut de l’aspect
de la montagne, lorsque les citoyens se
furent rendus sur la muraille.
Le vent se plaignait dans les
rocheuses ravines, entre les sapins qui se
ployaient et craquaient, confondant leurs
branches nues, pareilles aux cheveux
d’une tête renversée avec horreur. La
Gorgone courait dans les nuées, dont les
voiles semblaient mouler sa face. Et la
foule, couleur d’incendie, s’entassait
dans les embrasures en admirant l’âpre
désolation de la terre sous la menace du
ciel. Cependant, cette multitude aux
bouches sévères se condamnait au
silence à cause des vierges. Il ne fallait
pas agiter leur sein ni troubler leur sang
d’impressions accusatrices envers un
homme d’Hellas. On songeait aux
enfants futurs.
L’impatience, l’attente déçue,
l’incertitude du désastre, alourdissaient
l’angoisse. Chacun cherchait à s’aggraver
encore l’avenir, et la proximité de la
destruction semblait imminente.
Certes, les premiers fronts d’armées
allaient apparaître, dans le crépuscule!
Quelques-uns se figuraient voir, dans les
cieux et coupant l’horizon, le reflet des
cavaleries de Xerxès, son char même.
Les prêtres, tendant l’oreille, discernaient
des clameurs venues du nord, disaient-
ils,—malgré le vent des mers
méridionales qui faisait bruire leurs
manteaux.
Les balistes roulaient, prenant
position; on bandait ses scorpions et les
monceaux de dards tombaient auprès
des roues. Les jeunes filles disposaient
des brasiers pour faire bouillir la poix; les
vétérans, revêtus de leurs armures,
supputaient, les bras croisés, le nombre
d’ennemis qu’ils abattraient avant de
tomber; on allait murer les portes, car
Sparte ne se rendrait pas, même
emportée d’assaut; on calculait les
vivres, on prescrivait aux femmes le
suicide, on consultait des entrailles
abandonnées qui fumaient çà et là.
Comme on devait passer la nuit sur la
muraille en cas de surprise des Perses, le
nommé Nogaklès, le cuisinier des
gardiens, sorte de magistrat, préparait,
sur le rempart même, la nourriture
publique. Debout contre une vaste cuve,
il agitait son lourd pilon de pierre et, tout
en écrasant distraitement le grain dans le
lait salé, il regardait lui aussi, d’un air
soucieux, la montagne.
On attendait. Déjà d’infâmes
suggestions s’élevaient au sujet des
combattants. Le désespoir de la foule est
calomnieux; et les frères de ceux-là qui
devaient bannir Aristide, Thémistocle et
Miltiade, n’enduraient pas, sans fureur,
leur inquiétude. Mais de très vieilles
femmes, alors, secouaient la tête, en
tressant leurs grandes chevelures
blanches. Elles étaient sûres de leurs
enfants et gardaient la farouche
tranquillité des louves qui ont sevré.
Une obscurité brusque envahit le ciel;
ce n’était pas les ombres de la nuit. Un
vol immense de corbeaux apparut, surgi
des profondeurs du sud; cela passa sur
Sparte avec des cris de joie terrible; ils
couvraient l’espace, assombrissant la
lumière. Ils allèrent se percher sur toutes
les branches des bois sacrés qui
entouraient le Taygète. Ils demeurèrent
là, vigilants, immobiles, le bec tourné
vers le nord et les yeux allumés.
Une clameur de malédiction s’éleva,
tonnante, et les poursuivit. Les
catapultes ronflèrent, envoyant des
volées de cailloux dont les chocs
sonnèrent après mille sifflements et
crépitèrent en pénétrant les arbres.
Les poings tendus, les bras levés au
ciel, on voulut les effrayer. Ils
demeurèrent impassibles comme si une
odeur divine de héros étendus les eût
fascinés, et ils ne quittèrent point les
branches noires, ployantes sous leur
fardeau.
Les mères frémirent, en silence,
devant cette apparition.
Maintenant les vierges s’inquiétaient.
On leur avait distribué les lames saintes,
suspendues, depuis des siècles, dans les
temples.—«Pour qui ces épées!»
demandaient-elles. Et leurs regards,
doux encore, allaient du miroitement des
glaives nus aux yeux plus froids de ceux
qui les avaient engendrées. On leur
souriait par respect,—on les laissait dans
l’incertitude des victimes, on leur
apprendrait, au dernier instant, que ces
épées étaient pour elles.
Tout à coup, les enfants poussèrent
un cri. Leurs yeux avaient distingué
quelque chose au loin. Là-bas, à la cime
déjà bleuie du mont désert, un homme,
emporté par le vent d’une fuite
antérieure, descendait vers la Ville.
Tous les regards se fixèrent sur cet
homme.
Il venait, tête baissée, le bras étendu
sur une sorte de bâton rameux,—coupé
au hasard de la détresse, sans doute,—
et qui soutenait sa course vers la porte
spartiate.
Déjà, comme il touchait à la zone où
le soleil jetait ses derniers rayons sur le
centre de la montagne, on distinguait
son grand manteau enroulé autour de
son corps; l’homme était tombé en
route, car son manteau était tout souillé
de fange, ainsi que son bâton. Ce ne
pouvait être un soldat: il n’avait pas de
bouclier.
Un morne silence accueillit cette
vision.
De quel lieu d’horreur s’enfuyait-il
ainsi?—Mauvais présage!
—Cette course n’était pas digne d’un
homme. Que voulait-il?
—Un abri?... On le poursuivait donc?
—L’ennemi, sans doute?—Déjà!—déjà!...
Au moment où l’oblique lumière de
l’astre mourant l’atteignit des pieds à la
tête, on aperçut les cnémides.
Un vent de fureur et de honte
bouleversa les pensées. On oublia la
présence des vierges, qui devinrent
sinistres et plus blanches que de
véritables lis.
Un nom, vomi par l’épouvante et la
stupeur générales, retentit. C’était un
Spartiate! un des Trois-Cents! On le
reconnaissait.—Lui! c’était lui! Un soldat
de la ville avait jeté son bouclier! On
fuyait! Et les autres? Avaient-ils lâché
pied, eux aussi, les intrépides?—Et
l’anxiété crispait les faces.—La vue de cet
homme équivalait à la vue de la défaite.
Ah! pourquoi se voiler plus longtemps le
vaste malheur! Ils avaient fui! Tous!... Ils
le suivaient! Ils allaient apparaître d’un
instant à l’autre!... Poursuivis par les
cavaliers perses!—Et, mettant la main
sur ses yeux, le cuisinier s’écria qu’il les
apercevait dans la brume!...
Un cri domina toutes les rumeurs. Il
venait d’être poussé par un vieillard et
une grande femme. Tous deux, cachant
leurs visages interdits, avaient prononcé
ces paroles horribles: «Mon fils!»
Alors, un ouragan de clameurs
s’éleva. Les poings se tendirent vers le
fuyard.
—Tu te trompes. Ce n’est pas ici le
champ de bataille.
—Ne cours pas si vite. Ménage-toi.
—Les Perses achètent-ils bien les
boucliers et les épées?
—Ephialtès est riche.
—Prends garde à ta droite! Les os de
Pélops, d’Héraklès et de Pollux sont sous
tes pieds.—Imprécations! Tu vas réveiller
les mânes de l’Aïeul,—mais il sera fier de
toi.
—Mercure t’a prêté les ailes de ses
talons! Par le Styx, tu gagneras le prix,
aux Olympiades!
Le soldat semblait ne pas entendre et
courait toujours vers la Ville.
Et, comme il ne répondait ni ne
s’arrêtait, cela exaspéra. Les injures
devinrent effroyables. Les jeunes filles
regardaient avec stupeur.
Et les prêtres:

You might also like