Looking Through My WINDOW...
Monday, February 1, 2016
Wednesday, June 15, 2011
Register verification in ASIC
The Register space in any ASIC is very important part for design as it provides the only means to configure and monitor the status of various processes that happen inside the ASIC The numbers of such register has been increase in step with the increase in the complexity of the ASICs to the tune that you could have millions of registers in some ASICs.. There are individual set of register & containers (array of same register). Each register have their own type (write-read, read-only), Reset values, fields etc these registers are replicated in ASIC no of times with unique address depending upon module instantiates.
Functioning of an ASIC highly depends on this registers. They are the nuts and bolts communication with firmware. Ensuring that the register work exactly as intended is one most important and challenging tasks in ASIC Verification.
In order to verify this registers efficiently one of the techniques employed is to create accurate Register Database in spirit format. Spirit Register Database is commonly used in industry because of the ease it extends to parse and convert to any language code for verification. We are using this to parse into system verilog language (OVM/UVM Register package) for our ASIC verification and same package is used to generate different language code bases (C++, Verilog, Etc).
Challenges for Register Verification:
- The Register space in any ASIC is very important block.
- ASIC’s contain lot of registers.
- Different type of Register (Status, Control Etc) & Array of registers.
- Replication of same set of Register space.
- All the aspects of Registers RTL Implementation should be verified properly.
- Functional coverage of all the fields of each register can be used as one of the parameter for verification closer.
OVM/UVM Register package help us to overcome all above mentioned challenges and have a below mentioned benefits.
- Use this Register package (Register Database SV class) as Reference Model, Stimulus generator or scoreboard in Verification environment.
- Single point modification will reflects in whole verification environment.
- Verify all aspects of registers(type, reset, fields, reserve area).
- Verifies Register using backdoor operations.
- Get the functional coverage of all registers and their fields.
- Use full to generate other language code for same register database.
Wednesday, January 6, 2010
Module Level Verification of Subsystem
Let me First talk about System Level Verification Environment,
SOC (system on chip) functionality is controlled by subsystem (DSP, ARM etc).Some Complex SOC has more then one subsystem inside the chip & different IP (peripherals) which executes functionality(Serial port, Audio video coded, Camera Etc) . These subsystems control peripherals inside the chip & execute functionality of peripherals. So, here we need to verify every IP (peripherals) individually and their integration with subsystems and other peripherals.
There are two type of verification we are using to verify entire SOC (System of chip).
(A) Module Level verification
This Type of Verification used to verify module or IP individually.
IPs (peripherals) mostly controlled through input pins. We provide set of input and checking the functionality & expect desired results on output pins according to IPs specifications. In this process we are checking DUT (Design under test) behaviour by providing different type of Test scenarios using Constraint - Randomization and make sure that Module or IP is fully verified by checking Coverage (Functional & Code) Coverage.
We mostly use System Verilog, e, OVA, and VHDL/verilog languages for this type of verification.
(B) System (Chip) Level verification
We mostly use C, Assembly language for this type of verification.
we write Test case in C language to execute various functionality from Processor and assembler converts C language into Assembly language. So, The Assembler reads functions & macros from C Test case and selects set of Assembly instructions and prepare entire test case in Assembly instructions. Now these instructions get converted into binary language because we can load these binary data into program memory.
Once we load data into program memory we run entire design & this verification also has a test bench which has BFM (Bus function module),
Above is normal verification methodology which we are using to verify system on chip. This covers all the functionality of design.
So, why we need Standalone module level verification for Processor Subsystem?
Processors has own set of instructions & how to make sure all instruction get executed in System Level Verification?
In System level verification environment we are using Assembler which converts C Program into Assembly. So, we highly rely on assembler which has hard coded set of instructions for any functions. It uses Limited instructions or Set of instructions.
Assemblers designed only once by vendor and normally it has same set of instructions for C functions & macros.
There are other instructions also though which we can check functionality. Those instructions are not used by assembler. That way we can verify all the functionality of the design but still not verified all the instructions of Processor.
To test every instruction we have to modify the Assembler which is time consuming & also it’s difficult because by modifying it still we cant be sure of using all the instructions in assembler and again not much relevant to system level verification.
We provide Clock & Reset from Test bench and once Processor come out from Reset it start executing functionality according to given instructions & write test case in Assembly language by using all different kind of instructions & check All functionality again. So, here we don’t require assembler and we make sure that 100% coverage achieved by processor.
To execute any functionality through this module level environment, take less time & resource compare to system level.
Above mentioned figure shows the environment of Processors module Level verification. We write test case in Assembly language using all possible functionality related instructions & Assembly language is getting converted into binary format.
This verification environment does have its own linker file, test macros & Test bench.
Linker file which specifies the program memory location where Processor read instruction & execute also take care of jump kind of instruction where user want their program should execute from different memory locations.
Test bench at top-level which has memory pre-loading, BFM & loop back kind of functionality to verify Processors.
Conclusion:
We always close our verification process once we verify all functionality but still in System like DSP/ARM remain unverified as we haven’t tested all instructions yet
Instructions are very crucial for any Processor & it’s like blood in a vein. We can’t afford to ignore it in any SOC Projects as Verification Engineer.
Saturday, July 18, 2009
The Leadership
Tuesday, June 23, 2009
Perfectus Announces Industry’s First SystemVerilog-based OVM Tested ONFi Verification IP for ONFi 2.1 Specification
SANTA CLARA, Calif., Jun 22, 2009 (BUSINESS WIRE) -- Santa Clara-based Perfectus Technology, the leading provider of Verification IPs, today announced the availability of ONFi (Open NAND Flash Interface) Verification IP (VIP) product based on the ONFi 2.1 specification. This is the industry's first SystemVerilog-based, OVM-based ONFi VIP with a very sophisticated Verification Engine that will help in accelerating the ONFi-based IP/FPGA/ASIC/SOC/Silicon verification cycle with higher reliability and greater assurance for verification of device. The ONFi VIP is tested to work in the Mentor Graphics(R) Questa(R) Verification Platform.
The ONFi VIP comprises a complete verification environment including test generation, assertion checking and monitoring, and functional coverage. The VIP has a rich set of constrainable parameters, sequence library, powerful error injection capabilities, APIs and Callbacks for user configurability. The VIP is configurable and extensible to satisfy each specific verification environment's requirements. The VIP complies with OVM 2.0.
"Perfectus ONFi Verification IP improves productivity of the verification engineer by using a readily available sequence library to create the verification scenarios," said Sheetal Kammaje, marketing manager of Perfectus.
"Perfectus VIP also helps with the tracking of verification progress with the use of functional coverage." The ONFi VIP verifies Open NAND Flash Interface-based devices. ONFi 2.1 offers simplified flash controller design, but pushes performance levels to a new range--166 megabytes per second (MB/s) to 200 MB/s. Using ONFi strengthens compatibility and interoperability of NAND devices from different vendors.
(http://onfi.org/) The ONFi VIP supports asynchronous and source synchronous modes with all timing modes. It supports up to 4 Target NAND Flash devices with unlimited LOGICAL UNIT, BLOCK & PAGE. For more information visit www.perfectus.com/products-onfi.html The special feature of this product is the reports generated by the Genie-Interface-Inspector. Reports include a Functional Coverage report which helps to identify what functionality has been tested; an Error Inspection report which specifies the errors that were tested and errors that were not tested; a Protocol Inspection report which shows the percentage of ONFi 2.1 specification compliance; and a Features Coverage report which shows the percentage of features covered.
About Perfectus Perfectus is a leading provider of very high quality and completely-configurable Verification IPs. Perfectus offers several Verification IP products which include AMBA: AHB, APB & AXI, Ethernet, Fibre Channel, I2C, ONFi, PCIe, SAS, SATA, SMBus, SPI 4.2, OCP, USB3.0 and USB 2.0.
For more information about Perfectus Corp, please email us at sales@Perfectus.com or visit our website at www.Perfectus.com.
Thursday, April 23, 2009
Generic Interface Inspector in System Verilog
So the Re usability is a need of an hour to achieve this goal.
How we can resolve this issue and what exactly we re-use to achieve our goal ?
In Design cycle there are two different type of functional verification we target.Module level verification & Chip Level Verification. Almost all the peripherals inside SOC we use to verify first at module level and then we test the same peripheral inside the system. We target similar behaviour of the peripherals in both type of verification. But we use to verify same peripherals separately in both the level with same scenario & checks. we build different components to verify the same thing in different environment which takes lot of time to code components and to verify it.
During Verification process of standard protocols we use to verify design against all the Rules at pin level & block levels.Most of the protocols have Host & Device (Master or slave) blocks which communicate through the common bus for data transfer.
if you compare checker rule list of all standard protocols you will find that most of the checks are common at pin level and at block level.we need some mechanism which allow us to to re-use this common set of checks across different standard protocols and different kind of verification environment(Module & SOC).
if somehow we can reduce this gap by using same components in both type of verification & different protocols then it will save most of time of coding and we can beat TTM with Quality deliverable.
This protocol interface inspector provide library of common checks at block level,pin level & timing level which user can access from library & implement their own set of check rules by directly using or enhancing the task or function from libraries.
This Generic Protocol Interface Inspector probe to this common bus to access the data on the interface and validate against all the rules should be followed by standard protocol from Both Host & Device level by using common library developed implement protocol related checks. it will inspect transaction from host & validate it and expect some transaction from Device and validate transaction from device.
This Protocol Interface inspector will also verify the timing related rules on bus using assertion & also provide hook for enhancement to verify more rules by user.
This Protocol Interface Inspector will also verify Pin level activity on the Bus for example during certain mode of operation behaviour of pins changes & this protocol inspector validates pin level activity against all protocols pin related rules.
These Protocol Interface inspectors have Host Level & Device Level Blocks to verify all the Rules of given transaction from Host & Device.
This Protocol Interface inspector will do coverage analysis on the Bus and generate report of functionality coverage of interface. it also give report of all scenario & Errors.
This Protocol Interface will check all the rules, pin level assertions & coverage data to early verification closer.
We can use this Protocol Interface to Verify most of the standard protocols by using common library & also to verify any standards protocols Host Module, Device module at module level & Inside SOC as independent component. We need to connect all interface ports to this protocol inspector and all rules related to protocol will be verified.
so, this Generic Protocol Inspector reusable which can save lot of coding time of verification process.