PySlint - a modern approach to "on-demand" linting for Testbenches, SVA, Coverage Models and RTL code

 

Linting is a well-known, popular technique in large code development projects. Software engineers have been using Lint based rule checking to maintain high quality code adhering to a set of predefined coding guidelines. In hardware design field, Lint tools have been very popular in RTL design phase and designers use lint to ensure the design is synthesis friendly, DFT compliant etc.  Several popular coding guidelines have evolved over the last few decades such as Reuse Methodology Manual (RMM), Japan’s STARC standard etc. Often tools group a set of rules and create policies to ensure design code is RMM compliant etc. Verification on the other hand does not enjoy the same level of lint tools.  ensure that SystemVerilog is well established as the design verification language in semiconductor design flow. While rule checking (a la Linting) is well established for synthesizable code well over a decade, the verification counterpart lacked such technology in the past. With software giants such as Google, Meta investing in this domain, many fully featured parsers are now available, many as open source as well. In this paper, authors share their experiences in developing a highly customizable linter for SystemVerilog testbench code based on open source pyslang API.  Verification methodologies such as UVM have evolved over last decade and more and have provided much more than just guidelines including base class libraries, applications, examples etc. While there are no read-made/standard rule policies for coding guidelines available for verification (unlike in design), many customers tend to develop their own rules/policies primarily based on UVM and picking important ones as they deem fit for their projects. However, in the past there was no easy way of adhering to those rules and flagging any potential violations – thereby affecting quality, reusability aspects of codebase.

So, we introduce PySlint - a Python based linter for SystemVerilog TestBenches (TB), Assertions (SVA), Functional Coverage (FCOV) and of-course for RTL. idea is to provide sample code via public, free Python code base and enable end users to innovate from there on! 


We don't intend to sell PySlint as a tool - rather it is a platform to innovate, and all are welcome! 

Comments

Popular posts from this blog

Don't go "wild" with Associative arrays in SystemVerilog - PySlint it!

Porting a complete UVC to Verilator + UVM - an anecdote!

Opensource testbench generator for VHDL designs, OSVVM included!