\"Electronic and Embedded System Design Series: UVM Practice (Volume 1)\" begins with a complete example, so that readers can have a general idea of how to use UVM to build a verification platform. \"Electronic and Embedded System Design Series: UVM Practice (Volume 1)\" provides a large number of sample codes, which have been actually run. The content of the book strives to be simple and easy to understand, and tries to link the concepts in UVM with the readers\' existing concepts. In Chapter 11, the difference between OVM and UVM is also specifically introduced, which is of great help to those users who migrate from OVM to UVM. \"Electronic and Embedded System Design Series: UVM Practice (Volume 1)\" is mainly aimed at UVM beginners and intermediate users who want to get to the bottom of UVM. For users who have no foundation in object-oriented programming, \"Electronic and Embedded System Design Series: UVM Practice (Volume 1)\" briefly introduces the concept of object-oriented and some special syntax in SystemVerilog that is different from other programming languages in the appendix. Content Introduction \"Electronic and Embedded System Design Series: UVM Practice (Volume 1)\" mainly introduces the use of UVM. The book introduces the use of UVM\'s factory mechanism, sequence mechanism, phase mechanism, objection mechanism and register model in detail. In addition, \"Electronic and Embedded System Design Series: UVM Practice (Volume 1)\" also attempts to guide readers to think about why UVM introduces these mechanisms, so that readers know the facts and the reasons. About the Author Zhang Qiang, a senior verification engineer, graduated from the Institute of Very Large Scale Integrated Circuits of Zhejiang University. His research direction is analog and mixed analog and digital integrated circuits. He is mainly engaged in the research and design of analog power management chips, operational amplifiers and SRAMs used in high-performance CPUs. He holds two patents related to SRAM. After graduation, he has been engaged in the design and verification of digital integrated circuits. He has participated in the research and development of high-speed intelligent train data acquisition and communication systems and high-performance intelligent projector chips. At present, he is mainly engaged in the research of low-power graphics display chips for consumer electronics such as mobile phones. At the end of 2011, after reading the UVM source code, he published \"UVM1.1 Application Guide and Source Code Analysis\" on the Internet, which was well received by readers. PrefaceChapter 1 The first contact with UVM1.1 What is UVM1.1.1 The position of verification in the modern IC process1.1.2 The language of verification1.1.3 What is methodology1.1.4 Why UVM1.1.5 The history of UVM1.2 What can you do after learning UVM1.2.1 Verification engineer1.2.2 Design engineerChapter 2 A simple UVM verification platform2.1 The composition of the verification platform2.2 The verification platform with only driver2.2.1 The simplest verification platform2.2.2 Add factory mechanism2.2.3 Add objection mechanism2.2.4 Add virtualinterface2.3 Add various components to the verification platform2.3.1 Add transaction2.3.2 Add env2.3.3 Add monitor2.3.4 Encapsulate into agent2.3.5 Add referencemodel2.3.6 Add scoreboard2.3.7 Add field_automation mechanism2.4 The ultimate masterpiece of UVM: sequence 2.4.1 Add sequencer to the verification platform 2.4.2 Sequence mechanism 2.4.3 Use of default_sequence 2.5 Build test cases 2.5.1 Add base_test 2.5.2 Start test cases in UVM Chapter 3 UVM Basics 3.1 uvm_component and uvm_object 3.1.1 uvm_component is derived from uvm_object 3.1.2 Common classes derived from uvm_object3.1.3 Common classes derived from uvm_component3.1.4 Macros related to uvm_object3.1.5 Macros related to uvm_component3.1.6 Limitations of uvm_component3.1.7 Binary structure of uvm_component and uvm_object3.2 Tree structure of UVM3.2.1 Parent parameter in uvm_component3.2.2 Root of UVM tree3.2.3 Hierarchy related functions3.3 Fieldautomation mechanism3.3.1 Macros related to fieldautomation mechanism3.3.2 Common functions of fieldautomation mechanism3.3.3 Fieldautomation 3.3.4 The use of flags in the mechanism 3.3.4 The combination of macros and if in fieldautomation 3.4 Control of printed information in UVM 3.4.1 Setting the redundancy threshold of printed information 3.4.2 Overriding the severity of printed information 3.4.3 Ending simulation when UVM_ERROR reaches a certain number 3.4.4 Setting the target of counting 3.4.5 Breakpoint function of UVM 3.4.6 Importing output information into a file 3.4.7 Controlling the behavior of printed information 3.5 config_db mechanism 3.5.1 Paths in UVM 3.5.2 Parameters of set and get functions 3.5.3 Omitting get statements 3.5.4 Multiple settings across levels 3.5.5 Multiple settings at the same level 3.5.6 Non-linear settings and acquisitions 3.5.7 Support of wildcards by config_db mechanism 3.5.8 check_config_usage 3.5.9set_config and get_config 3.5.10Debugging config_dbChapter 4 TLM1.0 Communication in UVM4.1TLM1.04.1.1 Communication within the verification platform4.1.2Definition of TLM4.1.3PORT and EXPORT in UVM4.2Interconnection of various ports in UVM4.2.1Connection between PORT and EXPORT4.2.2IMP in UVM4.2.3Connection between PORT and IMP4.2.4Connection between EXPORT and IMP4.2.5Connection between PORT and PORT4.2.6Connection between EXPORT and EXPORT4.2.7Use of blocking_get port4.2.8Use of blocking_transport port4.2.9Use of nonblocking port4.3Communication methods in UVM4.3.1Analysis port in UVM4.3.2Multiple IMPs in a component 4.3.3 Using FIFO to communicate4.3.4 Ports and debugging on FIFO4.3.5 Using FIFO or IMP Chapter 5 Operation of UVM Verification Platform5.1 Phase Mechanism5.1.1 Task Phase and Function Phase5.1.2 Dynamic Operation Phase5.1.3 Phase Execution Order5.1.4 Traversal of UVM Tree5.1.5 Contents of super.phase5.1.6 Stop Simulation When UVMERROR Appears in Build Phase5.1.7 Phase Jump5.1.8 Necessity of Phase Mechanism5.1.9 Phase Debugging5.1.10 Timeout Exit5.2 Objection Mechanism5.2.1 Objection and Task Phase 5.2.2 Necessity of the phase parameter 5.2.3 Best choice for controlling objection 5.2.4 Use of set_drain_time 5.2.5 Debugging objection 5.3 Application of domain 5.3.1 Introduction to domain 5.3.2 Example of multiple domains 5.3.3 Phase jump in multiple domains Chapter 6 Sequence in UVM 6.1 Sequence basics 6.1.1 Separating the stimulus generation function from the driver 6.1.2 Start and execute sequence 6.2 Sequence arbitration mechanism 6.2.1 Start multiple sequences on the same sequencer 6.2.2 Sequencer lock operation 6.2.3 Sequencer grab operation 6.2.4 Sequence validity 6.3 Sequence-related macros and their implementation 6.3.1uvm_do series macros6.3.2uvm_create and uvm_send 6.3.3uvm_rand_send series macros6.3.4start_item and finish_item 6.3.5pre_do, mid_do and post_do 6.4Sequence advanced applications6.4.1Nested sequences6.4.2Using rand type variables in sequences6.4.3Transaction type matching6.4.4Using p_sequencer6.4.5Sequence derivation and inheritance6.5Using virtualsequence6.5.1DUT with dual input and output ports6.5.2Simple synchronization between sequences6.5.3Complex synchronization between sequences6.5.4Control objection only in virtualsequence6.5.5Use forkjoin_none with caution in sequence6.6Using config_db in sequence 6.6.1 Get parameters in sequence 6.6.2 Set parameters in sequence 6.6.3 Use of wait_modified 6.7 Use of response 6.7.1 put_response and get_response 6.7.2 Quantity of responses 6.7.3 Response handler and alternative responses 6.7.4 RSP and req are different types 6.8 sequence library 6.8.1 Randomly select sequence 6.8.2 Control selection algorithm 6.8.3 Control execution times 6.8.4 Use sequence_library_cfg Chapter 7 Register Model in UVM 7.1 Introduction to register model 7.1.1 DUT with register configuration bus 7.1.2 Things that require a register model7.1.3 Basic concepts in the register model7.2 Simple register model7.2.1 Register model with only one register7.2.2 Integrating the register model into the verification platform7.2.3 Using the register model in the verification platform7.3 Backdoor access and frontdoor access7.3.1 Implementation of frontdoor access in UVM7.3.2 Definition of backdoor access operation7.3.3 Using interface to perform backdoor access operation7.3.4 Implementation of backdoor access operation in UVM: DPI+VPI7.3.5 Backdoor access operation interface in UVM7.4 Complex register model7.4.1 Hierarchical register model7.4.2 The role of reg_file7.4.3 Registers with multiple domains7.4.4 Registers with multiple addresses7.4.5 Adding memory7.5 Simulating DUT with register model7.5.1 Expected value and mirror value7.5.2 Common operations and their impact on expected value and mirror value7.6 Some built-in sequences in the register model 7.6.1 Check the sequence of hdl path in backdoor access 7.6.2 Check the sequence of default value 7.6.3 Check the sequence of read and write functions 7.7 Advanced usage of register model 7.7.1 Use reg_predictor 7.7.2 Use UVM_PREDICTDIRECT function and mirror operation 7.7.3 Randomization and update of register model 7.7.4 Extending bit width 7.8 Other common functions of register model 7.8.1 get_root_blocks 7.8.2 get_reg_by_offset function Chapter 8 Factory mechanism in UVM 8.1 SystemVerilog support for overloading 8.1.1 Overloading of tasks and functions 8.1.2 Overloading of constraints 8.2 Overloading using the factory mechanism 8.2.1 Factory mechanism-style overloading 8.2.2 Methods and types of overloading 8.2.3 Complex overloading 8.2.4 Debugging of the factory mechanism 8.3 Common overloading 8.3.1 Overloading transaction 8.3.2 Overloading sequence 8.3.3 Overloading component 8.3.4 Overloading driver to implement all test cases 8.4 Implementation of the factory mechanism 8.4.1 Methods for creating an instance of a class 8.4.2 Creating a class based on a string 8.4.3 Interfaces for creating instances using the factory mechanism 8.4.4 The essence of the factory mechanism… Chapter 9 Code Reusability in UVM Chapter 10 UVM Advanced Applications Chapter 11 Migration from OVM to UVM Appendix A Introduction to SystemVerilog Appendix BDUT Code Listing Appendix CUVM Command Line Parameters Summary Appendix DUVM Common Macros Summary3 Randomization and update of register model 7.7.4 Extending bit width 7.8 Other common functions of register model 7.8.1 get_root_blocks 7.8.2 get_reg_by_offset function Chapter 8 Factory mechanism in UVM 8.1 SystemVerilog support for overloading 8.1.1 Overloading of tasks and functions 8.1.2 Overloading of constraints 8.2 Overloading using factory mechanism 8.2.1 Factory mechanism overloading 8.2.2 Overloading methods and types 8.2.3 Complex overloading 8.2.4 Debugging of factory mechanism 8.3 Common overloading 8.3.1 Overloading transaction 8.3.2 Overloading sequence 8.3.3 Overloading component 8.3.4 Overloading driver to implement all test cases 8.4 Implementation of factory mechanism 8.4.1 Method to create an instance of a class 8.4.2 Create a class based on a string 8.4.3 Interface for creating instances using factory mechanism 8.4.4 The essence of factory mechanism…… Chapter 9 Code Reusability in UVM Chapter 10 UVM Advanced Applications Chapter 11 Migration from OVM to UVM Appendix A Introduction to SystemVerilog Appendix BDUT Code Listing Appendix CUVM Command Line Parameters Summary Appendix DUVM Common Macros Summary3 Randomization and update of register model 7.7.4 Extending bit width 7.8 Other common functions of register model 7.8.1 get_root_blocks 7.8.2 get_reg_by_offset function Chapter 8 Factory mechanism in UVM 8.1 SystemVerilog support for overloading 8.1.1 Overloading of tasks and functions 8.1.2 Overloading of constraints 8.2 Overloading using factory mechanism 8.2.1 Factory mechanism overloading 8.2.2 Overloading methods and types 8.2.3 Complex overloading 8.2.4 Debugging of factory mechanism 8.3 Common overloading 8.3.1 Overloading transaction 8.3.2 Overloading sequence 8.3.3 Overloading component 8.3.4 Overloading driver to implement all test cases 8.4 Implementation of factory mechanism 8.4.1 Method to create an instance of a class 8.4.2 Create a class based on a string 8.4.3 Interface for creating instances using factory mechanism 8.4.4 The essence of factory mechanism…… Chapter 9 Code Reusability in UVM Chapter 10 UVM Advanced Applications Chapter 11 Migration from OVM to UVM Appendix A Introduction to SystemVerilog Appendix BDUT Code Listing Appendix CUVM Command Line Parameters Summary Appendix DUVM Common Macros Summary
You Might Like
Recommended ContentMore
Open source project More
Popular Components
Searched by Users
Just Take a LookMore
Trending Downloads
Trending ArticlesMore