메뉴 건너뛰기




Volumn , Issue , 2006, Pages 1-411

Writing Testbenches using Systemverilog

Author keywords

[No Author keywords available]

Indexed keywords


EID: 84892320497     PISSN: None     EISSN: None     Source Type: Book    
DOI: 10.1007/0-387-31275-7     Document Type: Book
Times cited : (88)

References (48)
  • 1
    • 84892212022 scopus 로고    scopus 로고
    • Cohen, Venkataramanan and Kumari, VhdlCohen Publishing
    • Cohen, Venkataramanan and Kumari, "SystemVerilog Assertion Handbook", VhdlCohen Publishing, 2005
    • (2005) SystemVerilog Assertion Handbook
  • 3
    • 84892333784 scopus 로고    scopus 로고
    • Before anyone paints me as a Verilog bigot, I wish to inform my readers that I learned VHDL first and have always had a slight preference toward VHDL over Verilog
    • Before anyone paints me as a Verilog bigot, I wish to inform my readers that I learned VHDL first and have always had a slight preference toward VHDL over Verilog.
  • 4
    • 84892224321 scopus 로고    scopus 로고
    • If you know of a verification-related resource or an error in this book that is not mentioned in the Web site, please let me know via email at janick@bergeron. com. I thank you in advance
    • If you know of a verification-related resource or an error in this book that is not mentioned in the Web site, please let me know via email at janick@bergeron. com. I thank you in advance.
  • 5
    • 84892228522 scopus 로고    scopus 로고
    • To my wife's chagrin who likes shaking any box bearing her name
    • To my wife's chagrin who likes shaking any box bearing her name.
  • 6
    • 84892227480 scopus 로고    scopus 로고
    • See Appendix A for a set of coding guidelines
    • See Appendix A for a set of coding guidelines.
  • 7
    • 84892321250 scopus 로고    scopus 로고
    • And it is. By a long shot
    • And it is. By a long shot.
  • 8
    • 84892305547 scopus 로고    scopus 로고
    • But not necessarily achievable. For example, the default clause in a fully specified case statement should never be executed
    • But not necessarily achievable. For example, the default clause in a fully specified case statement should never be executed.
  • 9
    • 84892262631 scopus 로고    scopus 로고
    • C++ still lacks a native concept of time, concurrency and instantiation
    • C++ still lacks a native concept of time, concurrency and instantiation.
  • 11
    • 84892213861 scopus 로고    scopus 로고
    • See http://www.eda.org/ovl.
  • 12
    • 84892333613 scopus 로고    scopus 로고
    • The formal verification community calls these input assertions "constraints." I used the term "assumptions" to differentiate them from randomgeneration constraints, which are randomization concepts
    • The formal verification community calls these input assertions "constraints." I used the term "assumptions" to differentiate them from randomgeneration constraints, which are randomization concepts.
  • 13
    • 84892233799 scopus 로고    scopus 로고
    • However, many financial and sports pundits make a good living predicting an essentially random process. With enough pundits, you can always find one that has made the correct "prediction"
    • However, many financial and sports pundits make a good living predicting an essentially random process. With enough pundits, you can always find one that has made the correct "prediction".
  • 15
    • 84892289671 scopus 로고    scopus 로고
    • As specified in the architecture specification document, not in the implementation
    • As specified in the architecture specification document, not in the implementation.
  • 16
    • 84892317640 scopus 로고    scopus 로고
    • It is used to produce consonant sounds, such as the sh sound. It is then mixed with a shaped base frequency used to produce vowel sounds, such as the a sound, which hopefully creates intelligible speech
    • It is used to produce consonant sounds, such as the sh sound. It is then mixed with a shaped base frequency used to produce vowel sounds, such as the a sound, which hopefully creates intelligible speech.
  • 17
    • 84892243984 scopus 로고    scopus 로고
    • You want to verify that, when the datapath is put into normal operation mode, the multiplexer is functionally correct and the input value is indeed coming from the random number generator
    • You want to verify that, when the datapath is put into normal operation mode, the multiplexer is functionally correct and the input value is indeed coming from the random number generator.
  • 19
    • 84892284168 scopus 로고    scopus 로고
    • Do not think, You may very well be that person and you may not be able to understand your own code weeks later
    • Do not think, "It won't be my problem." You may very well be that person and you may not be able to understand your own code weeks later.
    • It Won't Be My Problem
  • 20
    • 84892348112 scopus 로고    scopus 로고
    • 93% cheaper in the 3 years since the first edition of this book!
    • 93% cheaper in the 3 years since the first edition of this book!
  • 21
    • 84892340647 scopus 로고    scopus 로고
    • That, however, is pretty much the same..
    • That, however, is pretty much the same⋯
  • 22
    • 84892337382 scopus 로고    scopus 로고
    • There are restrictions on the types that can be used within a packed struct. See the SystemVerilog LRM for more details
    • There are restrictions on the types that can be used within a packed struct. See the SystemVerilog LRM for more details.
  • 23
    • 84892338290 scopus 로고    scopus 로고
    • A reference is similar to a pointer
    • A reference is similar to a pointer.
  • 24
    • 78650342428 scopus 로고    scopus 로고
    • Inheritance will be discussed in more detail in "Inheritance" on page 153.
    • Inheritance , pp. 153
  • 25
    • 84892201969 scopus 로고    scopus 로고
    • Why not make this derived class always a bad frame? Because generating a stream containing a mix of good and bad frames would require instantiating a mix of different classes. This way, only one class needs to be instantiated. The class will decide on its own whether the frame is good. And this approach is easier to constrain
    • Why not make this derived class always a bad frame? Because generating a stream containing a mix of good and bad frames would require instantiating a mix of different classes. This way, only one class needs to be instantiated. The class will decide on its own whether the frame is good. And this approach is easier to constrain.
  • 26
    • 84892344098 scopus 로고    scopus 로고
    • Simulators would be free to execute initial blocks first
    • Simulators would be free to execute initial blocks first.
  • 27
    • 84892306314 scopus 로고    scopus 로고
    • That is not strictly true but that is what happens in practice
    • That is not strictly true but that is what happens in practice.
  • 28
    • 84892340417 scopus 로고    scopus 로고
    • Some timing control statements can be inactive if the condition they are supposed to wait for is already true
    • Some timing control statements can be inactive if the condition they are supposed to wait for is already true.
  • 29
    • 84892267953 scopus 로고    scopus 로고
    • The execution of class methods as module or program threads is not clearly defined in the SystemVerilog standard and is being clarified by the P1800 Working Group. Verify with your simulator which exact interpretation is being used
    • The execution of class methods as module or program threads is not clearly defined in the SystemVerilog standard and is being clarified by the P1800 Working Group. Verify with your simulator which exact interpretation is being used.
  • 30
    • 84892264094 scopus 로고    scopus 로고
    • I borrowed this term from VHDL. SystemVerilog does not explicitly defines a term for zero-delay cycles
    • I borrowed this term from VHDL. SystemVerilog does not explicitly defines a term for zero-delay cycles.
  • 31
    • 84892350472 scopus 로고    scopus 로고
    • Because wires are driven, not assigned. The value from each parallel construct would contribute to the final logic value on the wire, without overwriting the other
    • Because wires are driven, not assigned. The value from each parallel construct would contribute to the final logic value on the wire, without overwriting the other.
  • 32
    • 84892318855 scopus 로고    scopus 로고
    • You should avoid depending on this behavior
    • You should avoid depending on this behavior.
  • 33
    • 84892331300 scopus 로고    scopus 로고
    • Computer scientists have a very narrow definition of a semaphore that is probably not met by this implementation. However, it is good enough for now
    • Computer scientists have a very narrow definition of a semaphore that is probably not met by this implementation. However, it is good enough for now.
  • 34
    • 84892310782 scopus 로고    scopus 로고
    • This specific execution order is only an example. The initial blocks could execute in reverse order with equally catastrophic results
    • This specific execution order is only an example. The initial blocks could execute in reverse order with equally catastrophic results.
  • 35
    • 84892293696 scopus 로고    scopus 로고
    • The task should contain a semaphore to detect concurrent activation. You can read more about this issue in
    • The task hw-reset contains delay control statements
    • The task hw-reset contains delay control statements. The task should contain a semaphore to detect concurrent activation. You can read more about this issue in "Non-Re-Entrant Tasks" on page 188.
    • Non-Re-Entrant Tasks , pp. 188
  • 36
    • 84892348805 scopus 로고    scopus 로고
    • SystemVerilog has a standard waveform database called the VCD file. Although all waveform viewers can display simulation results from a VCD file, all of the more advanced viewers use their own proprietary database to store additional signal information
    • SystemVerilog has a standard waveform database called the VCD file. Although all waveform viewers can display simulation results from a VCD file, all of the more advanced viewers use their own proprietary database to store additional signal information.
  • 37
    • 84892298539 scopus 로고    scopus 로고
    • The logic value on input d0 is ignored and a 1 is always loaded
    • The logic value on input d0 is ignored and a 1 is always loaded.
  • 38
    • 84892355187 scopus 로고    scopus 로고
    • They all include timing control statements. They should have a semaphore to detect concurrent activation. See "Non-Re-Entrant Tasks" on page 188.
    • Non-Re-Entrant Tasks , pp. 188
  • 39
    • 84892329734 scopus 로고    scopus 로고
    • Exponential growth follows a Kn curve. Factorial growth follows a n! curve, where n! = 1 x 2 x 3 x 4 x⋯ x n-2 x n-1 x n
    • Exponential growth follows a Kn curve. Factorial growth follows a n! curve, where n! = 1 x 2 x 3 x 4 x⋯ x (n-2) x (n-1) x n.
  • 40
    • 84892290439 scopus 로고    scopus 로고
    • The entire bus-functional model should be protected using a semaphore to prevent concurrent access to the interface signals. See "From Bus-Functional Tasks to Bus-Functional Model" on page 236.
    • From Bus-Functional Tasks to Bus-Functional Model , pp. 236
  • 41
    • 84892210108 scopus 로고    scopus 로고
    • Make sure the task is declared as automatic or these concurrent invocations will clobber each other! See section titled "Non-Re-Entrant Tasks" on page 188
    • Make sure the task is declared as automatic or these concurrent invocations will clobber each other! See section titled "Non-Re-Entrant Tasks" on page 188.
  • 42
    • 84892202280 scopus 로고    scopus 로고
    • fact, one was cut and pasted from the other!
    • In fact, one was cut and pasted from the other!
  • 43
    • 84892299910 scopus 로고    scopus 로고
    • Because methods are usually invoked without arguments and usually make use of random variables in the class being randomized, the solver would not know which variables to solve before calling the method. Thus the method may be called with unsolved-for variable values
    • Because methods are usually invoked without arguments and usually make use of random variables in the class being randomized, the solver would not know which variables to solve before calling the method. Thus the method may be called with unsolved-for variable values.
  • 44
    • 84892282106 scopus 로고    scopus 로고
    • But if it is relevant, then it should be modeled
    • But if it is relevant, then it should be modeled.
  • 45
    • 84892302107 scopus 로고    scopus 로고
    • Actually, since the latter is easier to design, its latency is made to match that of the input formatter, whatever it may be
    • Actually, since the latter is easier to design, its latency is made to match that of the input formatter, whatever it may be.
  • 46
    • 84892254267 scopus 로고    scopus 로고
    • Unless of course a specific latency is required, in which case it should be specified in the specification document. And if something is specified, it should be modeled and verified
    • Unless of course a specific latency is required, in which case it should be specified in the specification document. And if something is specified, it should be modeled and verified.
  • 48
    • 84892359220 scopus 로고    scopus 로고
    • Unless the intellectual property is in the function itself, such as a DSP algorithm
    • Unless the intellectual property is in the function itself, such as a DSP algorithm.


* 이 정보는 Elsevier사의 SCOPUS DB에서 KISTI가 분석하여 추출한 것입니다.