Automatic Matrix Verification Platform Gary Garo, Junhao Zheng(Spreadtrum) Yanping Sha(Cadence) CDNLive, Beijing August 5, 2014 Outline Why We Need Bus Matrix Verification Automation? Cadence VIP Introduction Verification Environment Automation Summary .2 Why We Need Bus Matrix Verification Automation? Cadence VIP Introduction Verification Environment Automation Summary .3 Why We Need Bus Matrix Verification Automation? The SoC Is Becoming More Complicated – The SoC will integrate more and more different IPs – More CPU/DSP cores and complex functional IPs are integrated to one SoC. .4 Why We Need Bus Matrix Verification Automation? Bus Matrix Is The Core of SoC – All components are connected to matrix and communicate with other components via matrix – The correctness and performance of matrix mandate the correctness and performance of the SoC .5 Why We Need Bus Matrix Verification Automation? How To Verify Bus Matrix In SoC? – The key of the verification is SoCs connection routes, not matrix’s basic functions – We need to make sure that every path between input/output is verified – Bus matrix is internally similar, input routed to output port, the burst remain similar – The automatic flow for matrix verification is feasible .6 Why We Need Bus Matrix Verification Automation? Cadence VIP Introduction Verification Environment Automation Summary .7 Cadence VIP Introduction AMBA VIPs: AHB, AXI, APB, ACE – Active mode: generates all kinds of burst – Passive mode: checks protocol and collects data ICM(Interconnect Monitor) – Scoreboard for bus matrix – Check data integration and matrix connected relation – Support ID translation, address remapping, burst re- construct(upsizing, downsizing) .8 Cadence VIP Introduction IWB(Interconnect Workbench) – Analyze the performance of the matrix – Data collected by ICM – Generated all kinds of analysis data/chart/report – Automatically generate verification environment and test case using matrix specification in xml format – We didn’t deploy this automation flow, the flow don’t fit our existing environment: local bus design, lack of system matrix description based xml .9 Why We Need Bus Matrix Verification Automation? Cadence VIP Introduction Verification Environment Automation Summary . 10 Verification Environment Automation Bus Matrix Excel Based Specification – Matrix name – Number of masters/slaves Name ap_ main_ mat rix Mas t ers 2 Slav es 3 VFile #AXI ap_ main_ mat rix . v Ins t anc e – Protocol type: AHB/AXI/APB `HIER_ AP_ SYS 0x 0FC0_ 0000 ~ GPV Addres s (2MB) 0x 0FCF_ FFFF Arbitration – Verilog file for masters/slaves ID Bitwidth Data Bitwidth Protocol – Instance hierarchical path Clock Function Port Name – Width for id and data – Clock/Reset name NA NA NA NA 32 32 AHB AHB arm_mclk arm_mclk ARMI ARMD armi armd M0 def. NA def. def. 32 4 32 NA 32 M1 St art Addr EndAddr AHB arm_hclk arm_ahb ahb S0 0x0000_0000 0x0000_FFFF AXI arm_xclk arm_axi S1 0x1000_0000 0x1FFF_FFFF APB arm_pclk arm_apb apb S2 0x2000_0000 0x2FFF_FFFF axi – Function: channel name, master and slave with same name will be connected to build up the matrix interconnect – Port name: support simple pattern match – Channel ID: master use M0-Mn, slave using S0-Sn – Active/Passive flag & Memory/Register flag . 11 Verification Environment Automation Configuration Files Generation – Script parser the excel file, analyze the topology – Calculate all possible data path based on the topology and address mapping. Used for test case auto-generation – Configuration files used for RTL generation – Configuration files used for verification environment generation . 12 Verification Environment Automation Verification Environment Configuration Files – VIP configuration files describe the chip bus topology and matrix details information – Project includes one top config file, list all the matrix config files name in the top file . 13 Verification Environment Automation Verification Environment Configuration Files – Matrix configuration files describe the matrix config information and masters/ slaves detail information . 14 Verification Environment Automation Verification Environment Generation – Take the VIP configuration files then generate UVM environment using Cadence VIPs – Instantiation of Cadence VIP • Instantiation active masters/slaves and connect to DUT • Instantiation passive masters/slaves and connect DUT – UVM environment generations • spdMtrxActTopSve: environment for active components • spdMtrxPasTopSve: environment for passive components – Test cases generations . 15 Verification Environment Automation Based Class – Based class for AHB, APB, AXI, ICM, matrix configuration and matrix environment – AHB, APB, AXI, ICM classes are pre-generated and not changed over project – Matrix configuration and matrix environment classes are generated with script . 16 Verification Environment Automation Verification Environment . 17 Verification Environment Automation spdMtrxActTop – Instantiated and config active master VIPs – Connected active master VIPs . 18 Verification Environment Automation spdMtrxPasTop – Instantiated and config passive master/slave VIPs – Connected passive master/slave VIPs – Override cdnIcmUvmInsatnce and cdnIcmUvmMonitor – Instantiated ICM to check the matrix data integration and generate performance analysis statistics . 19 Verification Environment Automation Function Coverage Monitor – Functional coverage monitor generated for passive environment . 20 Verification Environment Automation Test Cases Generates – All masters to slaves address mapping traverse – All size and burst type traverse – Direct cases to fill the function coverage holes: no covered connection route . 21 Why We Need Bus Matrix Verification Automation? Cadence VIP Introduction Verification Environment Automation Summary . 22 Summary An automatic flow for bus matrix verification using Cadence VIPs Quickly build verification environment for matrix Complete verification for matrix connection Statistics analysis for matrix performance Greatly speed up project progress Help Cadence to improve their products and add new features to next version . 23 Thank you!