Friday, March 17, 2017

SR_IOV VIP development and Verification

Do Not IGNORE this..!!! It will be Cool Stuff as well..!!!  Here is an another blog in terms of verification..!!! This time we are talking about PCIe SR_IOV VIP design and verification..!!! PCIe SR_IOV design and verification is really important stuff..!!! If you have a Ferrari then drive it on the beach..Do not drive it for grocery..!!! Same way use SR_IOV for servers..Do not use it for Mobile and Desktop System..!!! These VIPs help the companies earn millions of dollars..!!! Goal is to help people understand the logic..!!! Managing human resources lies on same lines as well..!!!

SR_IOV VIP development techniques..!!!

1) Need to develop the SR_IOV configuration space in terms of coming up with all the fields including the first_vf_offset, vf_stride and BAR address range..!!!
2) Build the SR_IOV configuration space in terms of class or module which will help you configuring the complete configuration space..!!!
3) Enable the virtual function in terms of requester and completer which can generate the MWr and MRd transactions..!!!
4) Never generate the IO transactions from virtual functions..!!!
5) Routing ID calculation logic should be done on the basis of first_vf_offset and vf_stride..!!!
6) Base address of all the virtual functions must be created from BAR address ranges..!!!
7) Virtual functions should be created only when vf_enable is set..!!!
8) Routing ID of all the virtual fuctions should be unique and used for configuration transactions..!!!

Test cases which needs to be developed for PCIe SR_IOV device..!!!

1) Need to develop the test cases for enabling virtual functions and doing basic transactions..!!!
2) Make sure virtual functions should not be active when vf_enable and vf_mse bit is not set..!!!
3) Need to check that virtual functions only responds to the BAR configured address range..!!!
4) Need to check that virtual functions must be active when vf_enable and vf_mse bit is set..!!!
5) Make sure that virtual functions does not generate the IO transactions..!!!
6) Make sure that virtual functions only responds to the defined routing ID's..!!!
7) Make sure that virtual functions responds to the configuration transactions..!!!

Thanks to PCI-SIG for providing such a wonderful specification..!!! It's great to be part of PCI-SIG workgroup activity..!!! It's great to be part of PCI-SIG legacy..!!!

Stay Tuned For Next Blog in Series of Blogs..!!!