180 likes | 294 Views
NoBug Consulting. Formal Verification Services The OCP PSL Assertions Library. NoBug Consulting 2004 - Confidential Information – Do Not Forward. Company Background. Started activity in 1998 Established a design center in Romania in 1999 Focus on advanced digital design and verification
E N D
NoBug Consulting Formal Verification Services The OCP PSL Assertions Library NoBug Consulting 2004 - Confidential Information – Do Not Forward
Company Background • Started activity in 1998 • Established a design center in Romania in 1999 • Focus on advanced digital design and verification Key customers NoBug Consulting 2004 - Confidential Information – Do Not Forward
NoBug Profile Skilled design and verification teams delivering complete solutions: • Functional Verification Services • Formal Verification Services - quality FV that is reusable in the verification flow • IP development (Specman e, PSL, HDL) NoBug Consulting 2004 - Confidential Information – Do Not Forward
Proposal: The OCP PSL Assertions Library The PSL Assertions Library enables one to quickly verify:- Compliance of cores to the OCP standard- Compatibility of master and slave peersThe library currently supports the following:- standard versions: OCP 1.0, OCP 2.0- implementation languages: PSL/EDL, PSL/Verilog- EDA tools: IBM’s FoCs, Cadence’s Incisive NoBug Consulting 2004 - Confidential Information – Do Not Forward
NoBug OCP PSL Assertions Library - Contents • Source code: • - PSL Assertions • - Verilog checkers • Complete documentation: • - User Guide • - Examples • - Well commented source code • Configuration management files and scripts: • - Configuration files • - Checking and preprocessing scripts NoBug Consulting 2004 - Confidential Information – Do Not Forward
NoBug OCP PSL Assertions Library - Benefits • Ready to use set of verification components • Complete coverage of signal behaviors which are specified by the standard • Proven, reliable verification logic • Open architecture, easy to extend and customize NoBug Consulting 2004 - Confidential Information – Do Not Forward
NoBug OCP PSL Assertions Library - Challenges • The library has been used and tested internally, and has also been tried by a couple of NoBug clients and partners • However, it still needs: • - more usability inputs from users • - broader tool support • The library may benefit from: • - configuration management GUI NoBug Consulting 2004 - Confidential Information – Do Not Forward
NoBug OCP Assertions Library – Description • Assertion Based Verification (AVB) • Architecture • Configuration files • Rules files • Support scripts - Check configuration - Extract relevant rules for specific device NoBug Consulting 2004 - Confidential Information – Do Not Forward
NoBug OCP PSL Assertions Library - Functional Coverage Supported signals: - All Data Flow signals - Basic Signals - Simple Extension Signals - Burst Extension Signals - Thread Extension Signals All the signal behavior which is required in the standard is covered. NoBug Consulting 2004 - Confidential Information – Do Not Forward
…define ($[mdatahandshake]$, $[1]$)… ifelse( eval(mdatahandshake==1), 1, $[vunit datahandshake_group_MDataValid_hold {…} ]$, $[ ]$)ifelse( eval(mdatahandshake==0), 1, $[vunit write_request_group_MData_hold {…} ]$, $[ ]$) preprocessing vunit datahandshake_group_MDataValid_hold {…} NoBug OCP PSL Assertions Library - Customization Uses preprocessing Configuration files Automated selection of rules using the preprocessing filter NoBug Consulting 2004 - Confidential Information – Do Not Forward
CONFIGURATION FILESmaster.conf, slave.conf, protocol.conf, slave_tieoff.conf, master_tieoff.conf USER ocp.sh ERRORREPORT vunit… vunit… NOT VALID ConfigurationCheckcheck.conf preprocessing vunit… VALID RULES FILES- Master rules- Slave rules FINAL LIBRARY INTEGRATION NoBug OCP PSL Assertions Library - General Flow NoBug Consulting 2004 - Confidential Information – Do Not Forward
NoBug OCP PSL Assertions Library – Code Organization RULES MASTER ocp.rules basic.rules simple.rules threads.rules transaction.rules SLAVE ocp.rules basic.rules simple.rules threads.rules transaction.rules basic_lib.rules ocp.rules SCRIPTS ocp.sh spp tieoff_replace.sh CONF Master.conf Slave.conf Protocol.conf Master_tieoff.conf Slave_tieoff.conf Check.conf OCP_def.conf NoBug Consulting 2004 - Confidential Information – Do Not Forward
NoBug OCP PSL Assertions Library - PSL Assertions LOGIC STRUCTURE - mapped to OCP defined hierarchy: TRANSACTION transaction_request_response_begin_order TRANSFER TRANSFER … TRANSFER burst_request_MBurstSeq_notillegal PHASE PHASE … PHASE request_PHASE_MCmd_notillegal GROUP TIMING INFORMATION read_request_group_MCmd_hold SIGNAL SIGNAL … SIGNAL - group rules, phase rule, transfer rules, transaction rules NoBug Consulting 2004 - Confidential Information – Do Not Forward
NoBug OCP PSL Assertions Library – Naming Conventions - follows the OCP hierarchy GRAMMAR: rule_name ::= Transaction Transfer Phase Signal PropertyTransaction ::= ‘transaction_’ | ’burst_’Transfer ::= | ‘read_’ | ’write_’ | ‘writenoutpost_’ | ‘readex_’ | ‘writeconditional_’ | ‘readlinked_’ | ‘broadcast_’ |Phase ::= | ‘request_’ | ‘response_’ | ‘datahandshake_’ |Group ::= ‘group_’Signal ::= <OCP_signalname>’_’Property ::= ‘hold’ | ‘hold_notice’ | ‘timing’ | ‘notillegal ‘ | etc. E.g. vunitread_request_group_Maddr_hold { …} refers to a read transfer, the request phase, Maddr signal and expresses a hold property NoBug Consulting 2004 - Confidential Information – Do Not Forward
Rule Example (Assertion Example) Before preprocessing define ($[formula_bus_hold]$, $[always {rose(start_evnt && !end_evnt)} |=> {{sign[eval(bus_wdth-1):0]==prev(sign[eval(bus_wdth-1):0]) && !end_evnt}[*]; sign[eval(bus_wdth-1):0]==prev(sign[eval(bus_wdth-1):0]) && end_evnt}]$) … ifelse (eval(mdatahandshake==1),1, $[define($[bus_wdth]$,$[mdata_wdth]$) define($[sign]$,$[MData]$) vunit datahandshake_group_MData_hold { default clock = CLK; endpoint start_evnt = {write_datahandshake_begin}; endpoint end_evnt = {write_datahandshake_end}; property datahandshake_group_MData_hold = formula_bus_hold; assert datahandshake_group_MData_hold; } ]$,$[ ]$) preprocessing NoBug Consulting 2004 - Confidential Information – Do Not Forward
Rule Example (Assertion Example) After preprocessing (final vunit) vunit datahandshake_group_MData_hold { default clock = CLK; endpoint start_evnt = {(rose(MDataValid) || (MDataValid && prev((MDataValid && SDataAccept))))}; endpoint end_evnt = {(MDataValid && SDataAccept)}; property datahandshake_group_MData_hold = always {rose(start_evnt && !end_evnt)} |=> {{MData[31:0]==prev(MData[31:0]) && !end_evnt}[*]; MData[31:0]==prev(MData[31:0]) && end_evnt}; assert datahandshake_group_MData_hold; } preprocessing NoBug Consulting 2004 - Confidential Information – Do Not Forward
Supported subset of PSL • Flavor EDL – IBM Tools / Translated in Verilog (VHDL) • Flavor Verilog – 2 versions more general (we have) • customized (we did) • Support for future extensions of PSL (supported) subset • basic_lib.rules • PREPROCESSING NAMED PROPERTIES NoBug Consulting 2004 - Confidential Information – Do Not Forward
Summary NoBug offers to donate the OCP PSL Assertions Library, an open source, easy to extend and customize resource for validating OCP cores through the ABV approach. NoBug Consulting 2004 - Confidential Information – Do Not Forward