DesignCon Modeling Data and Transactions in SystemVerilog. Janick Bergeron, Synopsys
|
|
- Ross Cole
- 5 years ago
- Views:
Transcription
1 DesignCon 2005 Modeling Data and Transactions in SystemVerilog Janick Bergeron, Synopsys
2 Abstract This paper describes how to properly use the object-oriented features of SystemVerilog to model data and transactions at a high-level of abstraction. Designers, used to a procedural programming model, will learn how to approach a modeling problem using the object-oriented approach. Software engineers, used to a traditional object-oriented programming model, will learn how to adapt their methods to the special requirements of constrained-random verification. This paper will present clear and concise guidelines that can be followed to create effective, easy-to-use and reusable data and transaction models and the transactors that operator on them. Author Biography Since April 2003, he is a Scientist within Synopsys's Verification Group where he helps define the stateof-the-art in functional verification methodology and the tools that support it. He is also the author of the best-selling book "Writing testbenches: functional verification of HDL models" and the moderator of the Verification Guild ( He is also a coauthor of the upcoming "SystemVerilog Verification Methodology Manual". Prior to joining Synopsys, Janick was the CTO of Qualis Inc, where he designed the architecture of their Domain Verification Component technology - which was acquired by Synopsys in April In the eight years he has worked at Qualis, he defined the methodology used by their service consultants and helped create industry-leading training introductory and advanced classes.
3 Introduction SystemVerilog is a language with a rich set of data types. Struct, union, tagged union and class can be used to model data at a high-level of abstraction. But which one is best to use? The Verification Methodology Manual [1] provides a set of clear guidelines for making the right decisions. This paper is based on the section of the manual that focuses on modeling data and transactions. Modeling Data A data item is any atomic amount of data eventually or directly processed by the DUT. Packets, instructions, pixels, picture frames, SDH frames and ATM cells are all examples of data items. A data item can be composed of smaller data items. For example, a data model of a picture frame would be composed of thousands of instances of a data models for individual pixels. When creating a data model, a class should be used instead of a struct or union, as shown in Example 1 Example 1. Ethernet MAC frame data model rand logic [47:0] da; rand logic [47:0] sa; rand logic [15:0] len; rand logic [ 7:0] data[]; rand logic [31:0] fcs; Using the class construct has advantages over using struct or union constructs. The latter would only be able to model the values contained in the data item whereas classes can also model operations and transformations such as calculating a CRC value or comparing two instances on these data items using methods. Class instances are more efficient to process and move around as only a reference to the instance is assigned or copied. Struct and union instances are scalar variables and their entire content is always assigned or copied. A class can also contain constraint declarations to control the randomization of data item values, whereas a struct and union cannot. Finally, it will be possible to modify the default behavior and constraints of a class through inheritance, without actually modifying the original base model. Struct and union do not support inheritance. Data Protection As also shown in Example 1, all class properties corresponding to a protocol element or data field shall have the rand attribute. The rand attribute of a class property can be turned off using the rand_mode() method to make it non-random. However, it cannot be made rand after the fact. As also shown in Example 1, all class properties with a rand attribute shall be public. This approach will make it possible to turn off their rand attribute, constrain them in a derived class, when instantiated in higher-level classes or via the randomize-with statement. This rule breaks one of the most basic rules of object-oriented programming. But, these software rules were designed for a
4 programming language where randomization and constraint solving does not exist. If the class properties are local, it will not be possible to constrain them. All class properties without a rand attribute should be local. Object state information should be accessed via public methods. This approach will ensure that the implementation can be modified while preserving the interface. Also, if class properties are interrelated, using methods to set their value will ensure they remain consistent. However, if you up with a set of indepent properties, each with a pair of set() and get() methods, you might as well make the class property public and do away with the methods. There should not be any need for protected class properties. Protocol-level data protection class properties shall model their validity, not their value. The information in CRC, HEC or parity properties is not in the actual value of the class property but in its correctness. These properties are modeled using a mask, indicating which bit of the class property value is to be valid or corrupted (on transmission) or was valid or not (on reception). A value of 0 indicates that the corresponding bit was valid. A constraint block should keep the value of data protection properties equal to 0 by default. Protection errors can be injected by overriding or turning the constraint block off. The actual value of these data protection properties is computed using methods and inserted or compared in the data object only upon packing and unpacking or physical transmission or reception. Example 2. Frame Check Sequence (FCS) validity class property rand bit [31:0] fcs; constraint fcs_errors { fcs == 0; } extern virtual function bit [31:0] compute_fcs(); virtual function int unsigned byte_pack(); bit [31:0] fcs_val; fcs_val = this.compute_fcs() ^ this.fcs; bytes.push_back(fcs_val); function: byte_pack Methods All methods shall be functions. Methods in data and transaction descriptors should be concerned only with their immediate state. There should not be any need for the simulation time to advance or for the execution thread to be susped within these methods. Data and transaction processing requiring time to advance or the execution thread to be susped should be located in transactors.
5 All methods should be virtual. This structure will allow the functionality of methods to be exted in class derivatives. If a method is not virtual, it will not be possible to modify the behavior of existing code to perform a slightly different task for example, injecting error without modifying the original code. As shown in Example 2, a virtual method shall be provided to compute but not set the correct value of each data protection class property. Because the data protection class property is encoded simply as being valid or not, it must be possible to derive its actual value by other means when necessary. The method must be virtual to allow for the corruption of the protection class property value if necessary. The packing method is responsible for corrupting the value of a data protection class property if it is modeled as invalid, not the computation method. Modeling Transactions The natural tency is to model transactions as illustrated in Example 3. Transactions are implemented using procedure calls, such as read() and write(). Example 3. Transaction procedures typedef enum {OK, ABORT, RETRY} status_e; task read(input logic [31:0] addr, input logic [ 4:0] sel, output logic [31:0] data, output status_e status); task write(input logic [31:0] addr, input logic [ 4:0] sel, input logic [31:0] data, output status_e status) This approach, although suitable for a directed test, makes it more difficult to generate random streams of transactions, constraining transactions and registering transactions with a scoreboard. Transactions are better modeled using a transaction descriptor. A class property is used to define the kind of transaction being described. As shown in Example 4, a transaction descriptor contains all of the necessary input information and result variables to ultimately call the appropriate procedure that implements it. Example 4. Transaction descriptor class cpu_transaction; typedef enum {READ, WRITE} kind_e; typedef enum {OK, ABORT, RETRY} status_e; rand kind_e kind; rand logic [31:0] addr; rand logic [ 4:0] sel; rand logic [31:0] data; statue_e status; class: cpu_transaction
6 Tests never actually call the procedure that implements the transaction. Instead, tests submit a transaction descriptor to a transactor for execution. This approach offers the several advantages: 1. It is easy to create a series of random transactions. Generating random transactions becomes a process identical to generating random data. Notice how all properties in Example 5 have the rand attribute. Example 5. Generating random transactions repeat (1000) begin cpu_transaction tr = new; void'(tr.randomize()); cpu.do(tr); 2. Random transactions can be constrained. Constraints can be defined between class properties. Because the constraints are built on the object-oriented framework, they can be added to, modified or removed later on, without actually modifying the original transaction descriptor. Example 6. Transaction constraints class cpu_transaction; constraint address_space { sel < 2; if (sel == 0) addr < 32'h100; if (sel == 1) addr < 32'h1C0F; } class: cpu_transaction 3. Directed stimulus only need to specify the parameters that need to be directed. Directed stimulus often overconstrain a test by providing hardcoded stimulus for all elements of a transaction. If only a subset of these elements are required to be directed, better verification is achieved by letting the other elements remain random. Example 7. Directed-Random Stimulus for (s = 0; s < 2; s++) begin cpu_transaction rd, wr; rd = new; void'(rd.randomize() with {sel == s; kind == READ}); cpu.do(rd); wr = new; void'(wr.randomize() with {sel == rd.sel; kind == WRITE; addr == rd.addr}); cpu.do(tr); 4. New transactions can be added without modifying interfaces. A new transaction can be added by simply creating a new variant of the transaction object. No new class is created, no class interface is modified and no testcase is changed.
7 5. It allows easier integration with the scoreboard. Since a transaction is fully described as an object, a simple reference to that object instance, passed to the scoreboard, is enough to completely define the stimulus and derive the expected response. Example 8. Scoreboard Integration repeat (1000) begin cpu_transaction tr = new; void'(tr.randomize()); cpu.do(tr); scoreboard.check(tr); Variant Data Data units and transactions often contain information that is optional or is unique to a particular kind of data or transaction. For example, Ethernet frames may or may not have virtual LAN (VLAN), link-layer control (LLC), sub-network access protocol (SNAP) or control information in any combination. Another example is the instruction set of a processor where different types of instructions use different numbers and modes of operands. Transaction descriptors are also variant forms of data: different transactions may usually require a different set or subset of protocol elements. Using traditional object-oriented design practices, inheritance looks like an obvious implementation: As illustrated in Example 9, a base class is used for the common properties then extensions are used for the various differences in format. This approach also seems the natural choice as the SystemVerilog equivalent 1 to Specman s when inheritance. Using inheritance to model data formats creates four problems, two of which are related to randomization and constraints concerns that do not exist in traditional object-oriented languages. Example 9. Using Inheritance to Model Variant Data rand logic [47:0] da; rand logic [47:0] sa; rand logic [15:0] len_typ; rand logic [ 7:0] data[]; rand bit [31:0] fcs; class eth_vlan_frame exts eth_frame; rand logic cfi; rand logic [ 2:0] pri; rand logic [11:0] vlan_id; class: eth_vlan_frame 1 SystemVerilog inheritance is corresponds to Specman's like inheritance. Specman's when inheritance corresponds to SystemVerilog tagged union.
8 The first problem is the difficulty of generating a stream containing a random mix of different data and transactions formats. Because an Ethernet device must be able to accept any mix of various Ethernet frame types on any given port, just like a processor must be able to execute any mix of instructions, it is often necessary to generate a random mix of data items with different formats on a single stream. Using a common base class gets around the type-checking problem. However, in SystemVerilog, objects must first be instantiated before they can be randomized. And because instances must be created based on their ultimate type, not their base type, the particular format of a data item or transaction would be determined before randomization of its content. Thus, it would be impossible to use constraints to control the distribution of the various data and transaction formats or to express constraints on a format as a function of the content of some other class property (e.g., if the destination address is equal to this, then the Ethernet frame must have VLAN but no control information). Example 10. Random Stream of Data Variants Using Inheritance repeat (1000) begin eth_frame fr; eth_vlan_frame vfr; randcase 1: fr = new; 1: begin vfr = new; fr = vfr; case void'(fr.randomize()); mii.tx(fr); The second problem is the difficulty of adding constraints to be applied to all formats of a data item or transaction descriptor. To add constraints to a data model, the most flexible mechanism is to create a derived class. To add a constraint that must apply to all formats of a data model cannot be done by simply exting the base class common to all formats as it simply creates yet another class unrelated to the other derivatives. It would require exting each one of the ultimate class extensions. Example 11. Constraining all Data Variances when Using Inheritance class min_eth_frame exts eth_frame; constraint len == 46; class: min_eth_frame class min_eth_vlan_frame exts eth_vlan_frame; constraint len == 46; class: min_eth_vlan_frame The third problem is that you will not be able to recombine different but orthogonal format variations. For example, the optional VLAN, LLC and control format variations on an Ethernet frame are orthogonal. This aspect creates eight possible variations of the Ethernet frame. Because SystemVerilog does not support multiple inheritance, using inheritance to model this simple case will require eight different classes: one for each combination of the presence or absence of the optional information. This approach creates an exponential number of classes. This problem could be solved if the language supported multiple inheritance an oft-mentioned grievance against the language but it would not help
9 in solving the significantly more serious previous two problems. This problem is better solved using proper modeling methodology than a new language capability. Example 12. Combining Data Variances when Using Inheritance class eth_llc_frame exts eth_frame; class: eth_llc_frame class eth_snap_frame exts eth_llc_frame; class: eth_snap_frame class eth_llc_vlan_frame exts eth_vlan_frame class: eth_llc_vlan_frame class eth_snap_vlan_frame exts eth_llc_vlan_frame; class: eth_snap_vlan_frame The final problem is that additional class properties are apped to the class properties already defined in the base class. The additional properties may be physically located or related to other properties in the middle of the data or transaction. It will be difficult to leverage the existing method to embed the additional properties at the proper or most logical location. It will be only possible to prep or app them. Composition is the use of class instances inside another class to form a more complex data model or transaction descriptor. Optional information from different formats could be modeled by instantiating or not a class containing that optional information in the data model. If the information is not present, the reference would be set to null. If the information is present, the reference would point to an instance containing that information. This technique also suffers from two severe problems with randomization and one minor problem. Example 13. Using Composition to Model Variant Data class eth_vlan; rand logic cfi; rand logic [ 2:0] pri; rand logic [11:0] id; class: eth_vlan rand logic [47:0] da; rand logic [47:0] sa; rand eth_vlan vlan; rand logic [15:0] len_typ; rand logic [ 7:0] data[]; rand bit [31:0] fcs;
10 The first problem is that the randomization process in SystemVerilog does not allocate sub-instances, even if the reference class property has the rand attribute. The randomization process either randomizes a pre-existing instance or does nothing if the reference is null. This requires that all possible sub-instances be allocated before randomization. The second problem is that it complicates the expression of constraints that may involve a null reference. A null reference would cause a runtime error and constraint guards must be used to detect the absence of the optional properties. Furthermore, it is not possible to express constraints to determine the presence or absence or their respective ratio of the sub-instance. It would thus be impossible to define the data format based on some other (possibly random) properties. Example 14. Constraining Variant Data Using Composition class my_eth_frame exts eth_frame; constraint dst_as_vlan { if (da == 48'h && vlan!= null) vlan.pri == 3'b000; } class: my_eth_frame The last problem is the needless introduction of hierarchies of references to access properties that, in all respect, belong to the same data or transaction descriptor. One would have to remember whether a class property is optional or not and under which optional instance it is located to know where to access it. However, a runtime error while attempting to access non-existent information in the current data format would be a nice type-checking mechanism. But that benefit does not outweigh the other disavantages. Unions allow multiple data formats to coexist in the same bits. Tagged unions enforce strong typing in the interpretation of multiple orthogonal data format. This approach is the SystemVerilog almost-equivalent to Specman s when inheritance. Example 15. Using Tagged Unions to Model Variant Data typedef union tagged { void untagged; struct { logic cfi; logic [ 2:0] pri; logic [11:0] id; } valid; } eth_vlan; rand logic [47:0] da; rand logic [47:0] sa; rand eth_vlan vlan; rand logic [15:0] len_typ; rand logic [ 7:0] data[]; rand bit [31:0] fcs;
11 Unfortunately, tags cannot be randomized. It is not possible to have a tagged union randomly select one of the tags, much less constraints the tag based on other class properties. It is also not possible to constrain fields in randomly-tagged unions because the value of the tag is not yet defined until solved. Instead of using inheritance, composition or tagged unions to model different data and transaction formats, the proper approach is to use the value of a discriminant class property. This discriminant class property indicates which, if any, optional properties are present. All optional properties are in-lined. The discriminant class property also has the rand attribute to allow random data format selection. Orthogonal variations are modeled using different discriminant properties allowing all combinations of variations to occur within a single model. It is necessary for methods that deal with the ultimate format of the data or transaction such as byte_pack() and compare() to procedurally check the value of these discriminant properties to determine the format of the data or transaction and decide on a proper course of action. Example 16. Using a discriminant class property to model data format rand logic [47:0] da; rand logic [47:0] sa; rand bit has_vlan; rand logic cfi; rand logic [ 2:0] priority; rand logic [11:0] vlan_id; rand logic [15:0] len_typ; rand logic [ 7:0] data[]; rand bit [31:0] fcs; virtual function string psdisplay(string prefix = "") $sformat(psdisplay, "%sda=48'h%h, SA=48'h%h, len/typ=16'h%h\n", prefix, da, sa, len_typ); if (has_vlan) begin $sformat(psdisplay, "%s%svlan: cfi=%b pri=%0d, id=12'h%h\n", psdisplay, prefix, cfi, priority, vlan_id); $sformat(psdisplay, "%s%sdata=%h %h.. %h (length=%0d)\n", psdisplay, prefix, data[0], data[1], data[data.size()-1], data.size()); $sformat(psdisplay, "%s%sfcs = %s", psdisplay, prefix, (fcs)? "BAD" : "good")); function
12 Because a single class is used to model all formats, constraints can be specified to apply to all variants of a data type. Also, because the format is determined by an explicit class property, constraints can be used to express relationships between the format of the data and the content of other properties. Example 17. Constraining Data Variances when Using Discrimant Property class min_eth_frame exts eth_frame; constraint len == 46; if (da == 48'h) begin has_vlan == 1; pri == 3'b000; class: min_eth_frame This technique may appear verbose but does not require any more lines of code or statements to fully implement. Inheritance provides for better localization of the various differences in formats, but does not reduce the amount of code and may even increase it. Furthermore, this technique does not require that the optional properties be modeled in specific locations amongst the other properties to enable some built-in functionality to operate properly. The data and transaction models are implemented to facilitate usage, not match some obscure language or simulator requirement. This approach has only one disadvantage: There is no type checking to prevent the access of a class property that is not currently valid given the current value of a discriminant class property. If absolute usage safety is required, using a discriminant property to identify the data format and using composition to include only those optional class properties that are valid for that format can be used. This would require that all sub-instances be allocated in pre_randomize() then pruned in post_randomize(). Example 18. Combining Composition and Discriminant Property to Model Variant Data class eth_vlan; rand logic cfi; rand logic [ 2:0] pri; rand logic [11:0] id; class: eth_vlan rand logic [47:0] da; rand logic [47:0] sa; rand bit has_vlan; rand eth_vlan vlan; rand logic [15:0] len_typ; rand logic [ 7:0] data[]; rand bit [31:0] fcs; function void pre_randomize() if (vlan == null) vlan = new; function function void post_randomize() if (!has_vlan) vlan = null;
13 function Constraints The declarative nature of constraints and their implementation as part of the object-oriented framework requires careful considerations. It will be easy to create a model that can be used to generate random stimulus. It will be also simple to add constraints to target a particular corner case. But injecting errors, which requires the controlled relaxation of constraints design to ensure that the generated data is valid, requires careful consideration for the granularity of constraint blocks and the modeling approach used for data protection fields. A constraint block shall be provided to ensure the validity of randomized class property values. Some properties may be modeled using a type that can yield invalid values. For example, a length class property may need to be equal to the number of bytes in a payload array. This constraint would ensure that the value of the class property and the size of the array are consistent. Note that "valid" is not the same thing as "error-free". Validity is a requirement of the descriptor implementation, not of the data or transaction being described. This constraint block must never be turned off nor overridden; hence, it is a good idea to use a unique name, such as class_name_valid. Example 19. Necessary Constraints Based on Implementation class some_packet; typedef enum {DATA, CONTROL} kind_typ; rand kind_typ kind; rand int unsigned length; rand byte data[]; constraint some_packet_valid { data.size() == length; } class: some_packet All array properties with a rand attribute should have a constraint to limit their size. Left unconstrained, an implementation of the solver using a 32-bit unsigned integer to represent the random array size will allocate, on average, over 2 billion elements in the array. A constraint should ensure that the size of any array is reasonable at all times. Should it be necessary to allow the randomization of larger arrays, the constraint can be turned off or replaced. Example 20. Constraining Random Array Properties rand logic [7:0] data[]; constraint reasonable { data.size() <= 1500; }
14 Constraint blocks should be provided to produce better distributions on size or duration properties. Size and duration properties do not have equally interesting values. For example, short or back-to-back and long or drawn-out transactions are more interesting than average transactions. Randomized properties modeling size, length, duration or intervals should have a constraint block that distributes their value equally between limit and average values. A distribution constraint block shall constrain a single class property. Use one constraint block per class property to make it easy to turn off or override without affecting the distribution of other properties. Example 21. Distribution Properties constraint interesting lengths { data.size() dist {0 } :/ 1, // Min [1:45] :/ 1, // Padded 46 :/ 1, // Min no pad [47:1499] :/ 1, // Ordinary 1500 :/ 1}; // Max Discriminant properties should be solved before depent properties. A conditional constraint block does not imply that the properties used in the expression are solved before the properties in the body of the condition. If a class property in the body of the condition is solved with a value that implies that the condition cannot be true, this will further constrain the value of the properties in the condition. If there is a greater probability of falsifying the condition, this makes it less likely to get an even distribution over all discriminant values. In Example 22, if the length class property is solved before the kind class property, it is unlikely to produce CONTROL packets because there is a low probability of the length class property to be solved as 1. Example 22. Poor distribution caused by conditional constraints class some_packet; typedef enum {DATA, CONTROL} kind_typ; rand kind_typ kind; rand int unsigned length; rand byte data[]; constraint control_packet_length { if (kind == CONTROL) length == 1; } class: some_packet This problem can be avoided and a better distribution of discriminant properties can be obtained by forcing the solving of the discriminant class property before any depent class property using the solve before constraint. Example 23. Improving distribution in conditional constraints
15 class some_packet; typedef enum {DATA, CONTROL} kind_typ; rand kind_typ kind; rand int unsigned length; rand byte data[]; constraint control_packet_length { if (kind == CONTROL) length == 1; solve kind before length; } class: some_packet Constraint blocks shall be provided to avoid errors in randomized values. Error can be randomly injected by selecting an invalid value for error protection properties. A constraint block should keep the value of such properties valid by default. See Example 2 for an example. An error-prevention constraint block shall constrain a single class property. Use one constraint block per error injection class property to make it easy to turn off or override without affecting the correctness of other properties. Example 24. Error-Prevention Constraints constraint valid_len { if (len < 16'h0600) len == data.size(); } Transactors Data and transactions models are not useful by themselves. They have to be generated, transmitted, executed, observed or analyzed. Data and transaction processing must be kept separate from their descriptors. Data and transaction descriptors are used to model data items and transactions regardless of the flow of data or their physical implementation. Transactors will be used to process data and transactions. For example, as illustrated in Example 25, three different transactors can exist that deal with Ethernet frames on a MII interface. All three use the same data model, but process them differently. Different sets of transactors processing Ethernet frames for different physical protocols (e.g. RMII, GMII, XGMII, XAUI) would also use the same data model. Example 25. Transactors Using the Same Data Model class mii_mac; protected extern virtual task tx(eth_frame fr); protected extern virtual task rx(ref eth_frame fr); class: mii_mac class mii_phy;
16 protected extern virtual task tx(eth_frame fr); protected extern virtual task rx(ref eth_frame fr); class: mii_phy class mii_mon; protected extern virtual task to_mac(ref eth_frame fr); protected extern virtual task to_phy(ref eth_frame fr); class: mii_mon Generators are also transactor: their processing consists of generating a stream of random or directed transaction or data descriptors. Generators must thus be connected to transactors that will execute the generated transactions. This is typically done by having the generator call the appropriate method in the other transactor, as shown in Example 26. Example 26. Generator Calling Transactor class cpu_tr_gen; cpu_transaction cpu_tr; local cpu_xactor cpu; function new(cpu_xactor cpu); this.cpu_tr = new; this.cpu = cpu; function task main(); while () begin cpu_transaction tr; void'(this.cpu_tr.randomize()); tr = new this.cpu_tr; cpu.execute(tr); task: main But this approach makes the generator specific to the transactor it is connected to. Several different transactors share the data or transaction descriptors. All of them could be connected to the same generator if a generic connection mechanism is used. The fact that transactions and data are described as objects offers an opportunity to create a generic transaction interface. A mailbox can be used to exchange transactions from an upstream transactor (e.g. a generator) and a downstream transactor (e.g. a bus-functional model). By making the mailbox bounded, the flow of data and transactions between the two transactors is automatically regulated by the slowest of the two transactors. Example 27. Connecting Transactors Using a Mailbox typedef mailbox #(cpu_transaction) cpu_tr_mbox; class cpu_tr_gen; cpu_transaction cpu_tr;
17 local cpu_tr_mbox mbox; function new(cpu_tr_mbox mbox); this.cpu_tr = new; this.mbox = mbox; function task main(); while () begin cpu_transaction tr; void'(this.cpu_tr.randomize()); tr = new this.cpu_tr; mbox.put(tr); task: main class cpu_xactor; local cpu_tr_mbox mbox; function new(cpu_tr_mbox mbox); this.mbox = mbox; function task main(); while () begin cpu_transaction tr; mbox.get(tr); task: main class: cpu_xactor class verify_env; cpu_tr_mbox mbox = new(1); cpu_tr_gen gen = new(mbox); cpu_xactor cpu = new(mbox); class: verify_env With an object-based interface, transactors can thus be easily partitioned into sub-transactors according to the layering of the protocol they implement. They can also more easily be reconfigured according to the need of the verification environment. There are more aspects and techniques to writing powerful, useful and reusable transactors that are outside the scope of this paper. For further information, the reader is invited to consult [1] and [2]. Conclusions This paper has presented an approach for modeling data and transactions using SystemVerilog. The various elements and trade-offs of the approach have been justified compared to similar guidelines when
18 using a pure object-oriented programming language such as C++. Constrainability and concurrent connectivity creates requirements not found in traditional programming languages. Data and transaction modeling is but a small part of creating as successful functional verification strategy. Readers interested in more details on that topic or a more comprehensive approach covering the entire functional verification process are invited to consult [2]. References [1] J. Bergeron, E. Cerny, A. Hunter & A. Nightingale, "SystemVerilog Verification Methodology Manual", Kluwer Academic Publishers, 2005 [2] Janick Bergeron, "Modeling Usable & Reusable Transactors in SystemVerilog", 18 th International Conference on VLSI Design, Jan 3-7, 2005
Modeling Usable & Reusable Transactors in SystemVerilog Janick Bergeron, Scientist
Modeling Usable & Reusable Transactors in SystemVerilog Janick Bergeron, Scientist Verification Group, Synopsys Inc janick@synopsys.com Transactors Definition Building blocks of verification environments
More informationVMM PRIMER. Using the Memory Allocation Manager. Author(s): Janick Bergeron. Version 1.1 / May 28, 2006
VMM PRIMER Using the Memory Allocation Manager Author(s): Janick Bergeron Version 1.1 / May 28, 2006 VMM Primer Using the Memory Allocation Manager 1 Introduction The VMM Memory Allocation Manager is an
More informationList of Code Samples. xiii
xiii List of Code Samples Sample 1-1 Driving the APB pins 16 Sample 1-2 A task to drive the APB pins 17 Sample 1-3 Low-level Verilog test 17 Sample 1-4 Basic transactor code 21 Sample 2-1 Using the logic
More informationVMM PRIMER. Composing Environments. Copyright 2007 Synopsys Inc. Author(s): Janick Bergeron. Version 1.2 / March 18, 2008
VMM PRIMER Composing Environments Author(s): Janick Bergeron Version 1.2 / March 18, 2008 VMM Primer Composing Environments 1 Introduction The VMM Environment Composition application package is a set of
More informationList of Examples List of Figures List of Tables. Acknowledgments 1. VERIFICATION GUIDELINES 1
Contents List of Examples List of Figures List of Tables Preface Acknowledgments xiii xxvii xxix xxxi xxxvii 1. VERIFICATION GUIDELINES 1 1.1 The Verification Process 2 1.2 The Verification Methodology
More informationSystemVerilog Essentials Simulation & Synthesis
SystemVerilog Essentials Simulation & Synthesis Course Description This course provides all necessary theoretical and practical know-how to design programmable logic devices using SystemVerilog standard
More informationCSE 591: Advanced Hardware Design Professor: Kyle Gilsdorf
CSE 591: Advanced Hardware Design Professor: Kyle Gilsdorf (Kyle.Gilsdorf@asu.edu) What: System Verilog Verification Environment for Lab #2 Table of Contents 1. Overview 2 1. Verification 3 2. Feature
More informationTable of Contents 1 VLAN Configuration 1-1
Table of Contents 1 VLAN Configuration 1-1 Overview 1-1 Introduction to VLAN 1-1 VLAN Fundamentals 1-2 Types of VLAN 1-3 Introduction to Port-Based VLAN 1-3 Configuring a VLAN 1-4 Configuration Task List
More informationSystem Verilog Tagged Unions and Pattern Matching
System Verilog Tagged Unions and Pattern Matching (An extension to System Verilog 3.1 proposed to Accellera) Bluespec, Inc. Contact: Rishiyur S. Nikhil, CTO, Bluespec, Inc. 200 West Street, 4th Flr., Waltham,
More informationGENERATION OF GRAPH FOR ETHERNET VERIFICATION USING TREK M.Vinodhini* 1, P.D. Rathika 2, J.U.Nambi 2, V.Kanmani 1
ISSN 2277-2685 IJESR/May 2015/ Vol-5/Issue-5/187-193 M. Vinodhini et. al./ International Journal of Engineering & Science Research GENERATION OF GRAPH FOR ETHERNET VERIFICATION USING TREK M.Vinodhini*
More informationDraft Standard for Verilog. Randomization and Constraints. Extensions
Draft Standard for Verilog Randomization and Constraints Extensions Copyright 2003 by Cadence Design Systems, Inc. This document is an unapproved draft of a proposed IEEE Standard. As such, this document
More informationSystem Verilog Tagged Unions and Pattern Matching
System Verilog Tagged Unions and Pattern Matching (An extension to System Verilog 3.1 proposed to Accellera) Bluespec, Inc. Contact: Rishiyur S. Nikhil, CTO, Bluespec, Inc. 200 West Street, 4th Flr., Waltham,
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationSystemVerilog For Design Second Edition
SystemVerilog For Design Second Edition A Guide to Using SystemVerilog for Hardware Design and Modeling by Stuart Sutherland Simon Davidmann Peter Flake Foreword by Phil Moorby 4y Spri ringer Table of
More informationSunburst Design - Advanced SystemVerilog for Design & Verification by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc.
World Class Verilog & SystemVerilog Training Sunburst Design - Advanced SystemVerilog for Design & Verification by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc. Cliff
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationPacket Switching - Asynchronous Transfer Mode. Introduction. Areas for Discussion. 3.3 Cell Switching (ATM) ATM - Introduction
Areas for Discussion Packet Switching - Asynchronous Transfer Mode 3.3 Cell Switching (ATM) Introduction Cells Joseph Spring School of Computer Science BSc - Computer Network Protocols & Arch s Based on
More informationUsing Specman Elite to Verify a 6-Port Switch ASIC
Using Specman Elite to Verify a 6-Port Switch ASIC Timothy J. Holt Paradigm Works tim.holt@paradigm-works.com Robert J. Ionta Paradigm Works bob.ionta@paradigm-works.com Tom Franco Narad Networks francot@naradnetworks.com
More informationLEVERAGING A NEW PORTABLE STIMULUS APPROACH Graph or rule based stimulus descriptions
A New Stimulus Model for CPU Instruction Sets by Staffan Berg, European Applications Engineer, and Mike Andrews, Verification Technologist, Mentor Graphics INTRODUCTION Verifying that a specific implementation
More informationModule- or Class-Based URM? A Pragmatic Guide to Creating Verification Environments in SystemVerilog. Paradigm Works, Inc. Dr.
Module- or Class-Based URM? A Pragmatic Guide to Creating Verification Environments in SystemVerilog Paradigm Works, Inc. Dr. Ambar Sarkar Session # 2.15 Presented at Module- or Class-Based URM? A Pragmatic
More informationI Didn t Know Constraints Could Do That!
I Didn t Know Constraints Could Do That! John Dickol Samsung Austin R&D Center 6 February 2018 DVClub Europe DVClub Europe 6 Feb 2018 1 Agenda Introduction SystemVerilog Constraint Techniques Constraint
More informationDesign and Verification of Slave Block in Ethernet Management Interface using UVM
Indian Journal of Science and Technology, Vol 9(5), DOI: 10.17485/ijst/2016/v9i5/87173, February 2016 ISSN (Print) : 0974-6846 ISSN (Online) : 0974-5645 Design and Verification of Slave Block in Ethernet
More informationSystem Verilog Tagged Unions and Pattern Matching
System Verilog Tagged Unions and Pattern Matching (An extension to System Verilog 3.1 proposed to Accellera) Bluespec, Inc. Contact: Rishiyur S. Nikhil, CTO, Bluespec, Inc. c/o Sandburst Corp., 600 Federal
More informationSystem-On-Chip Architecture Modeling Style Guide
Center for Embedded Computer Systems University of California, Irvine System-On-Chip Architecture Modeling Style Guide Junyu Peng Andreas Gerstlauer Rainer Dömer Daniel D. Gajski Technical Report CECS-TR-04-22
More informationTHE ETHERNET IN THE FIRST MILE CONSORTIUM. Annex 4A MAC Conformance Test Suite Version 1.0 Technical Document
EFM THE ETHERNET IN THE FIRST MILE CONSORTIUM Annex 4A MAC Conformance Test Suite Version 1.0 Technical Document COVER PAGE Last Updated: February 14, 2005 12:30 pm Ethernet in the First Mile Consortium
More informationFormal Verification: Not Just for Control Paths
Formal Verification: Not Just for Control Paths by Rusty Stuber, Mentor, A Siemens Business Formal property verification is sometimes considered a niche methodology ideal for control path applications.
More informationAn Evaluation of the Advantages of Moving from a VHDL to a UVM Testbench by Shaela Rahman, Baker Hughes
An Evaluation of the Advantages of Moving from a VHDL to a UVM Testbench by Shaela Rahman, Baker Hughes FPGA designs are becoming too large to verify by visually checking waveforms, as the functionality
More informationSubject: Scheduling Region Questions and Problems of new SystemVerilog commands
Subject: Scheduling Region Questions and Problems of new SystemVerilog commands I have read and re-read sections 14-17 of the SystemVerilog 3.1 Standard multiple times and am still confused about exactly
More informationDistributed Queue Dual Bus
Distributed Queue Dual Bus IEEE 802.3 to 802.5 protocols are only suited for small LANs. They cannot be used for very large but non-wide area networks. IEEE 802.6 DQDB is designed for MANs It can cover
More informationAP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS
AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this
More informationAugmenting a C++/PLI/VCS Based Verification Environment with SystemC
Augmenting a C++/PLI/VCS Based Verification Environment Dr. Ambar Sarkar Paradigm Works Inc. ambar.sarkar@paradigm-works.com ABSTRACT Due to increased popularity of high-level verification languages (HVLs)
More informationUSING WHEN-SUBTYPING EFFECTIVELY IN SPECMAN ELITE VERIFICATION ENVIRONMENTS
INCISIVE VERIFICATION ARTICLE MAY 2006 USING WHEN-SUBTYPING EFFECTIVELY IN SPECMAN ELITE VERIFICATION ENVIRONMENTS DEAN D MELLO AND DAN ROMAINE, VERIFICATION DIVISION, CADENCE DESIGN SYSTEMS INTRODUCTION
More informationUniversity of New Hampshire InterOperability Laboratory Ethernet in the First Mile Consortium
University of New Hampshire InterOperability Laboratory As of July 26, 2004 the Ethernet in the First Mile Clause 57 OAM Conformance Test Suite version 0.4 has been superseded by the release of the Clause
More informationXDS An Extensible Structure for Trustworthy Document Content Verification Simon Wiseman CTO Deep- Secure 3 rd June 2013
Assured and security Deep-Secure XDS An Extensible Structure for Trustworthy Document Content Verification Simon Wiseman CTO Deep- Secure 3 rd June 2013 This technical note describes the extensible Data
More informationAutomated Generation of Functional Coverage Metrics for Input Stimulus by Mike Andrews, Verification Technologist, Mentor Graphics
Automated Generation of Functional Coverage Metrics for Input Stimulus by Mike Andrews, Verification Technologist, Mentor Graphics Questa infact intelligent testbench automation has allowed many verification
More informationA Fast Review of C Essentials Part I
A Fast Review of C Essentials Part I Structural Programming by Z. Cihan TAYSI Outline Program development C Essentials Functions Variables & constants Names Formatting Comments Preprocessor Data types
More informationMAC Protocol Proposal for Fixed BWA Networks Based on DOCSIS. Re: Medium Access Control Task Group Call for Contributions Session #4
Project Title Date Submitted IEEE 802.16 Broadband Wireless Access Working Group MAC Protocol Proposal for Fixed BWA Networks Based on DOCSIS 1999-10-29 Source Phil Guillemette SpaceBridge Networks Corporation
More informationקורס SystemVerilog Essentials Simulation & Synthesis.. SystemVerilog
קורס SystemVerilog Essentials Simulation & Synthesis תיאור הקורס קורסזהמספקאתכלהידעהתיאורטי והמעשילתכנוןרכיביםמתכנתיםבעזרתשפתהסטנדרט. SystemVerilog הקורס מעמיק מאוד ונוגע בכל אספקט של הסטנדרט במסגרת הנושאים
More informationTHE DEVELOPMENT OF ADVANCED VERIFICATION ENVIRONMENTS USING SYSTEM VERILOG
ISSC 2008, Galway, June 18-19 THE DEVELOPMENT OF ADVANCED VERIFICATION ENVIRONMENTS USING SYSTEM VERILOG Martin Keaveney, Anthony McMahon, Niall O Keeffe *, Kevin Keane, James O Reilly *Department of Electronic
More informationERRATA THROUGHOUT THE BOOK PAGE 59
ERRATA The followings errors and omissions have been identified in the first edition of Verification Methodology Manual for SystemVerilog. They will be corrected in any future editions. THROUGHOUT THE
More informationOVERVIEW: ============================================================ REPLACE
OVERVIEW: With mantis 928, formal arguments to properties and sequences are defined to apply to a list of arguments that follow, much like tasks and function arguments. Previously, the type had to be replicated
More informationConstrained Random Data Generation Using SystemVerilog
Constrained Random Data Generation Using SystemVerilog Tim Pylant, Cadence Design Systems, Inc. 1 Ideal Stimulus Generation Need a way to generate stimulus without long, manual process Data should be random
More informationSet a longer list of transaction attributes as per protocol legality Perform the cache data/state update at end of transaction, as needed
Cache Coherent Interface Verification IP How a Cache Controller and Generic APIs Can Make It Easier to Generate Stimulus. by Amit Kumar Jain, Questa VIP Product Team, Mentor Graphics ABSTRACT In a multi-processor
More informationSpiNNaker Application Programming Interface (API)
SpiNNaker Application Programming Interface (API) Version 2.0.0 10 March 2016 Application programming interface (API) Event-driven programming model The SpiNNaker API programming model is a simple, event-driven
More informationCSE 461: Multiple Access Networks. This Lecture
CSE 461: Multiple Access Networks This Lecture Key Focus: How do multiple parties share a wire? This is the Medium Access Control (MAC) portion of the Link Layer Randomized access protocols: 1. Aloha 2.
More informationAnalysis of Virtual Local Area Networking Technology. Zheng Zhang
6th International Conference on Machinery, Materials, Environment, Biotechnology and Computer (MMEBC 2016) Analysis of Virtual Local Area Networking Technology Zheng Zhang Jiangxi Vocational and Technical
More informationSunburst Design - Comprehensive SystemVerilog Design & Synthesis by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc.
World Class SystemVerilog & UVM Training Sunburst Design - Comprehensive SystemVerilog Design & Synthesis by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc. Cliff Cummings
More informationThree Things You Need to Know to Use the Accellera PSS
Three Things You Need to Know to Use the Accellera PSS Sharon Rosenberg, Senior Solutions Architect, Cadence Three primary considerations for adopting the Accellera Portable Stimulus Standard (PSS) are
More informationExtending SystemVerilog Data Types to Nets
Extending SystemVerilog Data Types to Nets SystemVerilog extended Verilog by adding powerful new data types and operators that can be used to declare and manipulate parameters and variables. Extensions
More informationInternetworking Part 1
CMPE 344 Computer Networks Spring 2012 Internetworking Part 1 Reading: Peterson and Davie, 3.1 22/03/2012 1 Not all networks are directly connected Limit to how many hosts can be attached Point-to-point:
More informationData Types. Every program uses data, either explicitly or implicitly to arrive at a result.
Every program uses data, either explicitly or implicitly to arrive at a result. Data in a program is collected into data structures, and is manipulated by algorithms. Algorithms + Data Structures = Programs
More information1. Overview Ethernet FIT Module Outline of the API API Information... 5
Introduction APPLICATION NOTE R01AN2009EJ0115 Rev.1.15 This application note describes an Ethernet module that uses Firmware Integration Technology (FIT). This module performs Ethernet frame transmission
More informationSending Packets Through Router
2 Sending Packets Through Router Learning Objectives After completing this lab, you should be able to: Extend the SystemVerilog testbench from lab1 to send a packet from an input port through an output
More informationDATA COMMUNICATIONS MANAGEMENT. Gilbert Held INSIDE
51-10-06 DATA COMMUNICATIONS MANAGEMENT VIRTUAL LANS Gilbert Held INSIDE Definition, Rationale, Support for Virtual Networking Requirements, Facilitating Adds, Moves, and Changes, Enhancing Network Performance,
More informationINF5430. SystemVerilog for Verification. Chapter Randomization
INF5430 SystemVerilog for Verification Chapter 6.1-12 Randomization Chapter 6: Randomization Directed testing: Checks only anticipated bugs Scales poorly as requirements change Little upfront work Linear
More informationQUIZ. What is wrong with this code that uses default arguments?
QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code
More informationSystem-Level Verification Platform using SystemVerilog Layered Testbench & SystemC OOP
, pp.221-230 http://dx.doi.org/10.14257/ijca.2014.7.2.21 System-Level Verification Platform using SystemVerilog Layered Testbench & SystemC OOP Young-Jin Oh and Gi-Yong Song * Department of Electronics
More informationCODING GUIDELINES APPENDIX A
APPENDIX A CODING GUIDELINES There have been many sets of coding guidelines published for Verilog, but historically they have focused on the synthesizable subset and the target hardware structures. Writing
More informationSystemVerilog 3.1: It s What The DAVEs In Your Company Asked For
February 24-26, 2003 SystemVerilog 3.1: It s What The DAVEs In Your Company Asked For Stuart HDL, Inc. www.sutherland-hdl.com 2/27/2003 1 This presentation will Define what is SystemVerilog Provide an
More informationSections Describing Standard Software Features
30 CHAPTER This chapter describes how to configure quality of service (QoS) by using automatic-qos (auto-qos) commands or by using standard QoS commands. With QoS, you can give preferential treatment to
More informationUnder the Hood of the MOOS Communications API
Under the Hood of the MOOS Communications API Paul Newman March 17, 2009 Abstract This document will give you all the gory details about the mechanisms and protocols lying at the heart of the MOOS Communications
More informationEmbedded System Design and Modeling EE382N.23, Fall 2017
Embedded System Design and Modeling EE382N.23, Fall 2017 Lab #1 Specification Part (a)+(b) due: September 27, 2017 (11:59pm) Part (c)+(d) due: October 4, 2017 October 11, 2017 (11:59pm) Instructions: Please
More informationThis paper was presented at DVCon-Europe in November It received the conference Best Paper award based on audience voting.
This paper was presented at DVCon-Europe in November 2015. It received the conference Best Paper award based on audience voting. It is a very slightly updated version of a paper that was presented at SNUG
More informationBLM2031 Structured Programming. Zeyneb KURT
BLM2031 Structured Programming Zeyneb KURT 1 Contact Contact info office : D-219 e-mail zeynebkurt@gmail.com, zeyneb@ce.yildiz.edu.tr When to contact e-mail first, take an appointment What to expect help
More informationCHAPTER 8: LAN Standards
CHAPTER 8: LAN Standards DR. BHARGAVI GOSWAMI, ASSOCIATE PROFESSOR HEAD, DEPARTMENT OF COMPUTER SCIENCE, GARDEN CITY COLLEGE BANGALORE. LAN STRUCTURE NETWORK INTERFACE CARD MEDIUM ACCESS CONTROL SUB LAYER
More informationToken Ring VLANs and Related Protocols
Token Ring VLANs and Related Protocols CHAPTER 4 Token Ring VLANs A VLAN is a logical group of LAN segments, independent of physical location, with a common set of requirements. For example, several end
More informationLecture 9: Bridging. CSE 123: Computer Networks Alex C. Snoeren
Lecture 9: Bridging CSE 123: Computer Networks Alex C. Snoeren Lecture 9 Overview Finishing up media access Ethernet Contention-free methods (rings) Moving beyond one wire Link technologies have limits
More informationNon-numeric types, boolean types, arithmetic. operators. Comp Sci 1570 Introduction to C++ Non-numeric types. const. Reserved words.
, ean, arithmetic s s on acters Comp Sci 1570 Introduction to C++ Outline s s on acters 1 2 3 4 s s on acters Outline s s on acters 1 2 3 4 s s on acters ASCII s s on acters ASCII s s on acters Type: acter
More informationToken Ring VLANs and Related Protocols
CHAPTER 4 Token Ring VLANs and Related Protocols A VLAN is a logical group of LAN segments, independent of physical location, with a common set of requirements. For example, several end stations might
More informationwidth: 10, 20 or 40-bit interface maximum number of lanes in any direction
MIPI LLI Verification using Questa Verification IP by Vaibhav Gupta, Lead Member Technical Staff and Yogesh Chaudhary, Consulting Staff, Mentor Graphics This article describes how incorporating LLI Questa
More informationIntegrate Ethernet QVIP in a Few Hours: an A-to-Z Guide by Prashant Dixit, Questa VIP Product Team, Mentor Graphics
Integrate Ethernet QVIP in a Few Hours: an A-to-Z Guide by Prashant Dixit, Questa VIP Product Team, Mentor Graphics ABSTRACT Functional verification is critical in the development of today s complex digital
More information1 Connectionless Routing
UCSD DEPARTMENT OF COMPUTER SCIENCE CS123a Computer Networking, IP Addressing and Neighbor Routing In these we quickly give an overview of IP addressing and Neighbor Routing. Routing consists of: IP addressing
More informationSections Describing Standard Software Features
27 CHAPTER This chapter describes how to configure quality of service (QoS) by using automatic-qos (auto-qos) commands or by using standard QoS commands. With QoS, you can give preferential treatment to
More informationPOS on ONS Ethernet Cards
CHAPTER 23 This chapter describes packet-over-sonet/sdh (POS) and its implementation on ONS Ethernet cards. This chapter contains the following major sections: POS Overview, page 23-1 POS Interoperability,
More informationINTERNATIONAL TELECOMMUNICATION UNION
INTERNATIONAL TELECOMMUNICATION UNION CCITT G.709 THE INTERNATIONAL TELEGRAPH AND TELEPHONE CONSULTATIVE COMMITTEE (11/1988) SERIES G: TRANSMISSION SYSTEMS AND MEDIA, DIGITAL SYSTEMS AND NETWORKS General
More informationLibgdb. Version 0.3 Oct Thomas Lord
Libgdb Version 0.3 Oct 1993 Thomas Lord Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
More informationApplication Note 126. QoS Priority Support KS8993M / KS8995MA / XA. Introduction. Egress Port Priority Mechanism. Strict Priority Queuing
Application Note 126 QoS Priority Support KS8993M / KS8995MA / XA Introduction Latency critical applications such as Voice over IP (VoIP) and video typically need to guarantee a minimum quality of service
More informationIs Power State Table Golden?
Is Power State Table Golden? Harsha Vardhan #1, Ankush Bagotra #2, Neha Bajaj #3 # Synopsys India Pvt. Ltd Bangalore, India 1 dhv@synopsys.com 2 ankushb@synopsys.com 3 nehab@synopsys.com Abstract: Independent
More informationVisual Layout of Graph-Like Models
Visual Layout of Graph-Like Models Tarek Sharbak MhdTarek.Sharbak@uantwerpen.be Abstract The modeling of complex software systems has been growing significantly in the last years, and it is proving to
More informationConsistency. CS 475, Spring 2018 Concurrent & Distributed Systems
Consistency CS 475, Spring 2018 Concurrent & Distributed Systems Review: 2PC, Timeouts when Coordinator crashes What if the bank doesn t hear back from coordinator? If bank voted no, it s OK to abort If
More information5 Developing Acceleratable Universal Verification Components (UVCs)
5 Developing Acceleratable Universal Verification Components (UVCs) This chapter discusses the following topics: Introduction to UVM Acceleration UVC Architecture UVM Acceleration Package Interfaces SCE-MI
More informationProgramming with MPI
Programming with MPI p. 1/?? Programming with MPI Miscellaneous Guidelines Nick Maclaren Computing Service nmm1@cam.ac.uk, ext. 34761 March 2010 Programming with MPI p. 2/?? Summary This is a miscellaneous
More informationWhat, If Anything, In SystemVerilog Will Help Me With FPGA-based Design. Stuart Sutherland, Consultant and Trainer, Sutherland HDL, Inc.
What, If Anything, In SystemVerilog Will Help Me With FPGA-based Design Stuart Sutherland, Consultant and Trainer, Sutherland HDL, Inc. About the Presenter... Stuart Sutherland, SystemVerilog wizard Independent
More informationWhat are the characteristics of Object Oriented programming language?
What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is
More informationSystemVerilog for Verification
SystemVerilog for Verification A Guide to Learning the Testbench Language Features Second Edition Chris Spear SystemVerilog for Verification A Guide to Learning the Testbench Language Features Second Edition
More informationRFC: connectionless Data Link Metalanguage Burkhard Daniel
RFC: connectionless Data Link Metalanguage Burkhard Daniel (burk@stg.com) This RFC details a specification draft for a UDI metalanguage interfacing UDI Network Protocol drivers to UDI Data Link drivers.
More informationTypes. What is a type?
Types What is a type? Type checking Type conversion Aggregates: strings, arrays, structures Enumeration types Subtypes Types, CS314 Fall 01 BGRyder 1 What is a type? A set of values and the valid operations
More informationA FORWARDING CACHE VLAN PROTOCOL (FCVP) IN WIRELESS NETWORKS
A FORWARDING CACHE VLAN PROTOCOL (FCVP) IN WIRELESS NETWORKS Tzu-Chiang Chiang,, Ching-Hung Yeh, Yueh-Min Huang and Fenglien Lee Department of Engineering Science, National Cheng-Kung University, Taiwan,
More informationRedes de Computadores. Medium Access Control
Redes de Computadores Medium Access Control Manuel P. Ricardo Faculdade de Engenharia da Universidade do Porto 1 » How to control the access of computers to a communication medium?» What is the ideal Medium
More informationPOS on ONS Ethernet Cards
20 CHAPTER This chapter describes packet-over-sonet/sdh (POS) and its implementation on ONS Ethernet cards. This chapter contains the following major sections: POS Overview, page 20-1 POS Interoperability,
More informationThe Top Most Common SystemVerilog Constrained Random Gotchas
The Top Most Common SystemVerilog Constrained Random Gotchas Author: Ahmed Yehia Presenter: Gabriel Chidolue Accellera Systems Initiative 1 Motivation More time is taken in debug than any other project
More informationMQC Hierarchical Queuing with 3 Level Scheduler
MQC Hierarchical Queuing with 3 Level Scheduler The MQC Hierarchical Queuing with 3 Level Scheduler feature provides a flexible packet scheduling and queuing system in which you can specify how excess
More informationANSI E Architecture for Control Networks Device Management Protocol Entertainment Services and Technology Association Abstract
ANSI E1.17-2006 Architecture for Control Networks Device Management Protocol This document forms part of ANSI E1.17-2006, Entertainment Technology - Architecture for Control Networks, which was approved
More informationThree Steps to Unified SoC Design and Verification by Shabtay Matalon and Mark Peryer, Mentor Graphics
Three Steps to Unified SoC Design and Verification by Shabtay Matalon and Mark Peryer, Mentor Graphics Developing a SoC is a risky business in terms of getting it right considering the technical complexity
More informationAccess Technologies! Fabio Martignon
Access Technologies! Fabio Martignon 1 LAN Ethernet - IEEE 802.3 Broadcast Bus Capacity=10 Mb/s Xerox-Intel-Digital inventors Standardized at the beginning of the 80s as IEEE 802.3 Big Success and Several
More informationDO-254 Testing of High Speed FPGA Interfaces by Nir Weintroub, CEO, and Sani Jabsheh, Verisense
DO-254 Testing of High Speed FPGA Interfaces by Nir Weintroub, CEO, and Sani Jabsheh, Verisense As the complexity of electronics for airborne applications continues to rise, an increasing number of applications
More informationAvro Specification
Table of contents 1 Introduction...2 2 Schema Declaration... 2 2.1 Primitive Types... 2 2.2 Complex Types...2 2.3 Names... 5 3 Data Serialization...6 3.1 Encodings... 6 3.2 Binary Encoding...6 3.3 JSON
More informationAvro Specification
Table of contents 1 Introduction...2 2 Schema Declaration... 2 2.1 Primitive Types... 2 2.2 Complex Types...2 2.3 Names... 5 2.4 Aliases... 6 3 Data Serialization...6 3.1 Encodings... 7 3.2 Binary Encoding...7
More informationEthernet switch support in the Linux kernel
ELC 2018 Ethernet switch support in the Linux kernel Alexandre Belloni alexandre.belloni@bootlin.com Copyright 2004-2018, Bootlin. Creative Commons BY-SA 3.0 license. Corrections, suggestions, contributions
More informationParameters and OVM Can t They Just Get Along?
Parameters and OVM Can t They Just Get Along? Bryan Ramirez Xilinx, Inc. 3100 Logic Dr. Longmont, CO 80503 720-652-3561 bryan.ramirez@xilinx.com ABSTRACT Verifying a highly parameterized design under test
More information