|
|||
Development of Verification Environment for Layered Protocol using SystemVerilogBy Ganesh S Dekate Today, functional verification consumes most of the time in the design of layered protocols like OSI Model, PCI Express, etc. As we think of reuse of design components, the reuse of verification components is also a demand to keep the pace with tight schedules and accelerate time-to-market of designs. The verification efforts spent at the module level should be utilized at the sub-system and system level. In other words, the verification components used for the verification of each individual layers should be capable of being reused when you put all the layers together. The IEEE 1800 SystemVerilog hardware design and verification language has emerged to provide an efficient, industry-standard foundation on which to build reusable and interoperable verification environments using advanced verification methodologies such as coverage-driven, constrained-random test generation, SVA. This paper explains how individual layered specific verification components such as, Transactor, Checker, Monitor which can be developed using SystemVerilog can be reused when you have all the layers connected at the sub-system and system level, and hence maximizes the verification productivity gains. 1. IntroductionThis paper will cover general aspect of verifying layered protocols like OSI Model, PCI Express, etc. This paper is not going to cover the complete verification of OSI Model but instead will concentrate on layered protocol in general and then verification of XAUI. We will first see what each section is going to concentrate on. The 2nd section describes in general the layered protocol structures and its verifications. Initially, the concept of verifying individual layers and then complete RTL protocol stack. The same concept will be used for verification of XAUI (10 Gigabit Attachment Unit Interface) core and same concept can be used for other layered protocols cores as well. 3rd section will describe the XAUI (10 Gigabit Attachment Unit Interface). 4th section will focus on - Why SystemVerilog is chosen as verification language. 5th section will cover the development of verification environment for XAUI core. There are two types of verification strategies described: One with feeding back the data in the RTL stack from Tx path to the Rx path. Other one is verifying RTL stack with 3rd party XAUI IP. 2. Layered Protocol in General This section is dedicated to the layered protocol in general, and not concentrating on OSI Model. Generally a layered protocol has more than one layer. The complete functionality of the protocol is divided into a series of layers. Each layer has the property that it only uses the functions of the layer below, and only exports functionality to the layer above. This section provides an overview on verification of individual layers and then makes use of those components in the system level. 2.1 - Individual protocol layer verification environment Figure 1 depicts the verification environment for protocol layer1. The details on each individual verification components will be discussed in subsequent sections. In figure1, dotted component could be removed if you do not need to have functional coverage. But it is better to have this as you will get more functional coverage. Same strategy would be used for the verification other protocol layers 2 and 3 as shown in figure 1. Figure 1: Protocol Layer1 Verification environment 2.2 – Verification environment for stack of protocol layers Figure 2 depicts the verification environment for stack of all three protocol layers. The transaction is generated by the transactor on the input Tx interface of Layer1. In this configuration the output Tx data from Layer3 is being fed back to the input Rx part of the Layer3. The information is received on the output Rx interface of Layer1 is the input to the Collector. The End2End Monitor/Checker checks the information transferred by the input Tx part of Layer1 with the information received by the output Rx part of Layer1. Functional Coverage logic receives the information whether test is passed or not. Depending on this information Functional Coverage logic will update the functional coverage report if test is passed. If test failed the functional coverage report won’t be updated. Pseudo-random/Directed testcase can be developed depending on Functional coverage report and hence the transaction can be generated. Monitors M1, M2, M3 will monitor the data integrity between input data with the output data for Layer1, Layer2 and Layer3 respectively. Assertion checkers C1, C2, C3 will check the protocol between the interface signals. Figure 2: System level Verification environment for all the layers. 3. OSI model – XAUI interface The OSI (Open System Interconnections) reference model is a hierarchical structure of seven (Application, Presentation, Session, Transport, Network, Data link and Physical) layers that defines the requirements for communications between two computers. XAUI is pronounced as “Zowie” is a 10 Gigabit Attachment Unit Interface. This is a technical innovation that dramatically improves and simplifies the routing of electrical interconnections. The XAUI is designed as an interface extender, and the interface, which it extends, is the XGMII, the 10 Gigabit Media Independent Interface. The XGMII may be used to attach the Ethernet MAC to its PHY. The XAUI may be used in place of XGMII, or to extend, the XGMII in chip-to-chip applications typical of most Ethernet MAC to PHY interconnects. The XGMII provides full duplex operation at a rate of 10 Gb/s between the MAC and PHY. Each direction is independent and contains a 32-bit data path, as well as clock and control signals. In total the interface is 74 bits wide. While XGMII provides a 10 Gb/s pipeline, the separate transmission of clock and data coupled with the timing requirement to latch data on both the rising and falling edges of the clock results in significant challenge in routing the bus more than the recommended short distance of 7 cm. For this reason, chip-to-chip, board-to-board and chip-to-optical module applications are not practical with this interface. Consequently, the XGMII bus puts many limitations on the number of ports that may be implemented on a system line card. To overcome these issues, the IEEE 802.3ae 10 Gb Ethernet Task Force developed the XAUI interface and it delivers 10 Gb/sec (Gigabit/Seconds) of data throughput using four differential signal pairs in each direction. The self-clocked nature eliminates skew concerns between clock and data, and extends the functional reach of the XGMII by approximately another 50 cm. Conversion between the XGMII and XAUI interfaces occurs at the XGXS(XAUI Extender Sub-layer). 4. Why SystemVerilog as verification language? SystemVerilog (IEEE 1800TM) is the industry's first unified Hardware Description and Verification Language (HDVL) standard. It was developed originally by Accellera to dramatically improve productivity in the design of large gate-count, IP-based, bus-intensive chips. SystemVerilog has been adopted by 100's of semiconductor design companies and supported by many EDA, IP and training solutions worldwide. This language is chosen because of following key advantages:
These features improve dramatically the verification process.
5. XAUI Verification Environment This section is dedicated to development of verification environment for XAUI cores. The verification environment for verifying individual XGXS, PCS and PMA would be same as shown in figure 1. Hence verifying individual cores is not covered here, instead would focus on verification when putting all the cores together. First sub-section will focus on verification using looping-back the data from PMA. Second sub-section will focus on verification XAUI RTL stack using 3rd party IP. 5.1 XAUI Verification environment with loop-back of data: Figure 3 shows the verification environment for XAUI along with XGXS, PCS and PMA. In this configuration the Tx data from PMA is being fed back to the Rx part of the PMA. The transaction will be generated by the transactor on the Tx interface of XGXS. The information is received on the Rx interface of XGXS is the input to the Collector. The End2End Monitor/Checker checks the information transferred by the Tx part of XGXS with the information received by the Rx part of XGXS. Functional Coverage logic written in SystemVerilog receives the information whether test is passed or not. Depending on this information if test is passed then Functional Coverage logic will update the functional coverage report. If test is failed then functional coverage report won’t be updated. Pseudo-random/Directed testcase can be developed depending on Functional coverage report and hence the transaction can be generated. Monitors M1, M2, M3 written in SystemVerilog will monitor the data integrity between input data with the output data for XGXS, PCS and PMA respectively. Assertion checkers C1, C2, C3 written in SystemVerilog assertions checks the protocol between the interface signals. Figure 3: Verification environment with loop-back. 5.2 XAUI Verification environment for RTL-3rd party IP Figure 4 shows the verification environment for XAUI along with XGXS, PCS and PMA where RTL stack is being connected to the 3rd party XAUI IP. In this configuration the Tx data from PMA is being fed to the Rx part of the 3rd party IP. The Tx data from 3rd party IP is being fed to the Rx part of the PMA. There are two data paths in this configuration: 1) Data flow from RTL stack to 3rd party IP: The Tx transaction on RTL stack side will be generated by the transactor on the Tx interface of XGXS. This Tx info will be passed to the Tx part of PMA through XGXS, PCS. The Tx data from PMA is the input data to 3rd party IP on the link side. The received info on the 3rd party side from the RTL side will passed to the End2End monitor/checker. End2End monitor/Checker compares this received info on 3rd party side with the transmitted info from the RTL stack side. Depending on this comparison End2End monitor/Checker will convey the pass/fail information to the Functional coverage logic. 2) Data flow from 3rd party IP to RTL stack: Transaction on 3rd party side will be generated by the Tx part of 3rd party model. As on the link side Tx part of 3rd party model is connected to the Rx part of RTL stack, Tx data from 3rd party model will be flown in to Rx part of the RTL stack. A Collector on RTL stack side will collect the data received Rx part of RTL stack. This data will be passed to the End2End Monitor/Checker. The End2End Monitor/Checker will compare the data received from the collector and the data transmitted from 3rd party model. Depending on this comparison End2End monitor/Checker will convey the pass/fail information to the Functional coverage logic. If there are no miss-compares in both of the cases described above, then only coverage report will be updated. The functional coverage report indicates the percent age of covered bins. If all of coverage bins are covered then simulations can be stopped. Pseudo-random/Directed testcase can be developed depending on Functional coverage report and hence the transaction can be generated. Monitors M1, M2, M3 will monitor the data integrity between input data with the output data for XGXS, PCS and PMA respectively. Assertion checkers C1, C2, C3 will check the protocol between the interface signals.
6. Conclusions
7. References
|
Home | Feedback | Register | Site Map |
All material on this site Copyright © 2017 Design And Reuse S.A. All rights reserved. |