CITATION

Navabi, Zainalabedin. Verilog Digital System Design. McGraw-Hill Professional, 2005.

Verilog Digital System Design

Published:  October 2005

eISBN: 9780071588928 0071588922 | ISBN: 9780071445641
  • Contents
  • Preface
  • Chapter 1. Digital System Design Automation with Verilog
  • 1.1 Digital Design Flow
  • 1.1.1 Design entry
  • 1.1.2 Testbench in Verilog
  • 1.1.3 Design validation
  • 1.1.4 Compilation and synthesis
  • 1.1.5 Postsynthesis simulation
  • 1.1.6 Timing analysis
  • 1.1.7 Hardware generation
  • 1.2 Verilog HDL
  • 1.2.1 Verilog evolution
  • 1.2.2 Verilog attributes
  • 1.2.3 The Verilog language
  • 1.3 Summary
  • Problems
  • Suggested Reading
  • Chapter 2. Register Transfer Level Design with Verilog
  • 2.1 RT Level Design
  • 2.1.1 Control/data partitioning
  • 2.1.2 Data part
  • 2.1.3 Control part
  • 2.2 Elements of Verilog
  • 2.2.1 Hardware modules
  • 2.2.2 Primitive instantiations
  • 2.2.3 Assign statements
  • 2.2.4 Condition expression
  • 2.2.5 Procedural blocks
  • 2.2.6 Module instantiations
  • 2.3 Component Description in Verilog
  • 2.3.1 Data components
  • 2.3.2 Controllers
  • 2.4 Testbenches
  • 2.4.1 A simple tester
  • 2.4.2 Tasks and functions
  • 2.5 Summary
  • Problems
  • Suggested Reading
  • Chapter 3. Verilog Language Concepts
  • 3.1 Characterizing Hardware Languages
  • 3.1.1 Timing
  • 3.1.2 Concurrency
  • 3.1.3 Timing and concurrency example
  • 3.2 Module Basics
  • 3.2.1 Code format
  • 3.2.2 Logic value system
  • 3.2.3 Wires and variables
  • 3.2.4 Modules
  • 3.2.5 Module ports
  • 3.2.6 Names
  • 3.2.7 Numbers
  • 3.2.8 Arrays
  • 3.2.9 Verilog operators
  • 3.2.10 Verilog data types
  • 3.2.11 Array indexing
  • 3.3 Verilog Simulation Model
  • 3.3.1 Continuous assignments
  • 3.3.2 Procedural assignments
  • 3.4 Compiler Directives
  • 3.4.1 ‵timescale
  • 3.4.2 ‵default-nettype
  • 3.4.3 ‵include
  • 3.4.4 ‵define
  • 3.4.5 ‵ifdef, ‵else, ‵endif
  • 3.4.6 ‵unconnected-drive
  • 3.4.7 ‵celldefine, ‵endcelldefine
  • 3.4.8 ‵resetall
  • 3.5 System Tasks and Functions
  • 3.5.1 Display tasks
  • 3.5.2 File I/O tasks
  • 3.5.3 Timescale tasks
  • 3.5.4 Simulation control tasks
  • 3.5.5 Timing check tasks
  • 3.5.6 PLA modeling tasks
  • 3.5.7 Conversion functions for reals
  • 3.5.8 Other tasks and functions
  • 3.6 Summary
  • Problems
  • Suggested Reading
  • Chapter 4. Combinational Circuit Description
  • 4.1 Module Wires
  • 4.1.1 Ports
  • 4.1.2 Interconnections
  • 4.1.3 Wire values and timing
  • 4.1.4 A simple testbench
  • 4.2 Gate Level Logic
  • 4.2.1 Gate primitives
  • 4.2.2 User defined primitives
  • 4.2.3 Delay formats
  • 4.2.4 Module parameters
  • 4.3 Hierarchical Structures
  • 4.3.1 Simple hierarchies
  • 4.3.2 Vector declarations
  • 4.3.3 Iterative structures
  • 4.3.4 Module path delay
  • 4.4 Describing Expressions with Assign Statements
  • 4.4.1 Bitwise operators
  • 4.4.2 Concatenation operators
  • 4.4.3 Vector operations
  • 4.4.4 Conditional operation
  • 4.4.5 Arithmetic expressions in assignments
  • 4.4.6 Functions in expressions
  • 4.4.7 Bus structures
  • 4.4.8 Net declaration assignment
  • 4.5 Behavioral Combinational Descriptions
  • 4.5.1 Simple procedural blocks
  • 4.5.2 Timing control
  • 4.5.3 Intra-assignment delay
  • 4.5.4 Blocking and nonblocking assignments
  • 4.5.5 Procedural if-else
  • 4.5.6 Procedural case statement
  • 4.5.7 Procedural for statement
  • 4.5.8 Procedural while loop
  • 4.5.9 A multilevel description
  • 4.6 Combinational Synthesis
  • 4.6.1 Gate level synthesis
  • 4.6.2 Synthesizing continuous assignments
  • 4.6.3 Behavioral synthesis
  • 4.6.4 Mixed synthesis
  • 4.7 Summary
  • Problems
  • Suggested Reading
  • Chapter 5. Sequential Circuit Description
  • 5.1 Sequential Models
  • 5.1.1 Feedback model
  • 5.1.2 Capacitive model
  • 5.1.3 Implicit model
  • 5.2 Basic Memory Components
  • 5.2.1 Gate level primitives
  • 5.2.2 User defined sequential primitives
  • 5.2.3 Memory elements using assignments
  • 5.2.4 Behavioral memory elements
  • 5.2.5 Flip-Flop timing
  • 5.2.6 Memory vectors and arrays
  • 5.3 Functional Registers
  • 5.3.1 Shift registers
  • 5.3.2 Counters
  • 5.3.3 LFSR and MISR
  • 5.3.4 Stacks and queues
  • 5.4 State Machine Coding
  • 5.4.1 Moore machines
  • 5.4.2 Mealy machines
  • 5.4.3 Huffman coding style
  • 5.4.4 A more modular style
  • 5.4.5 A ROM based controller
  • 5.5 Sequential Synthesis
  • 5.5.1 Latch models
  • 5.5.2 Flip-flop models
  • 5.5.3 Memory initialization
  • 5.5.4 General sequential circuit synthesis
  • 5.6 Summary
  • Problems
  • Suggested Reading
  • Chapter 6. Component Test and Verification
  • 6.1 Testbench
  • 6.1.1 Combinational circuit testing
  • 6.1.2 Sequential circuit testing
  • 6.2 Testbench Techniques
  • 6.2.1 Test data
  • 6.2.2 Simulation control
  • 6.2.3 Limiting data sets
  • 6.2.4 Applying synchronized data
  • 6.2.5 Synchronized display of results
  • 6.2.6 An interactive testbench
  • 6.2.7 Random time intervals
  • 6.2.8 Buffered data application
  • 6.3 Design Verification
  • 6.4 Assertion Verification
  • 6.4.1 Assertion verification benefits
  • 6.4.2 Open verification library
  • 6.4.3 Using assertion monitors
  • 6.4.4 Assertion templates
  • 6.5 Text Based Testbenches
  • 6.6 Summary
  • Problems
  • Suggested Reading
  • Chapter 7. Detailed Modeling
  • 7.1 Switch Level Modeling
  • 7.1.1 Switch level primitives
  • 7.1.2 The basic switch
  • 7.1.3 CMOS gates
  • 7.1.4 Pass gate logic
  • 7.1.5 Switch level memory elements
  • 7.2 Strength Modeling
  • 7.2.1 Strength values
  • 7.2.2 Strength used in resolution
  • 7.2.3 Strength reduction
  • 7.3 Summary
  • Problems
  • Suggested Reading
  • Chapter 8. RT Level Design and Test
  • 8.1 Sequential Multiplier
  • 8.1.1 Shift-and-add multiplication process
  • 8.1.2 Sequential multiplier design
  • 8.1.3 Multiplier testing
  • 8.2 von Neumann Computer Model
  • 8.2.1 Processor and memory model
  • 8.2.2 Processor model specification
  • 8.2.3 Designing the adding CPU
  • 8.2.4 Design of datapath
  • 8.2.5 Control part design
  • 8.2.6 Adding CPU Verilog description
  • 8.2.7 Testing adding CPU
  • 8.3 CPU Design and Test
  • 8.3.1 Details of processor functionality
  • 8.3.2 SAYEH datapath
  • 8.3.3 SAYEH Verilog description
  • 8.3.4 SAYEH top-level testbench
  • 8.3.5 Sorting test program
  • 8.3.6 SAYEH hardware realization
  • 8.4 Summary
  • Problems
  • Suggested Reading
  • Appendix A. List of Keywords
  • Appendix B. Frequently Used System Tasks and Functions
  • Appendix C. Compiler Directives
  • Appendix D. Verilog Formal Syntax Definition
  • Appendix E. Verilog Assertion Monitors
  • Index