Share this page!

Adding configurability to PySlint using TOML

Ajeetha Kumari Venkatesan,
Anirudh Pradyumnan Srinivasan,
Deepa Palaniappan


Configurability is a key aspect of UI/UX design in software. More so with static lint checkers as – by design – there are no universally adopted coding styles, styles are often choices. In a complex language such as SystemVerilog [1], the most popular language used in ASIC & FPGA design industry, there are often more than ways to achieve the intended design and testbench. Hence often teams use static checkers (linters) to ensure code consistency, adherence to team’s preferred doing styles etc. There are also pitfalls to avoid unintended side effects such as wrong functionality, race conditions etc. While the concept of linting has been around in the industry for long time, recently opensource parsers have become available, leading to innovative solutions around such parsers to build linters. PySlint [2] is one such emerging SystemVerilog testbench linter built on top of opensource Slang/PySlang [3]. It allows users to build succinct rules to check their SystemVerilog testbenches using Python API. As with any lint tool, customization is a much-desired feature for PySlint. Initial development around PySlint focused on adding valuable rules [4]. In this work, we present our efforts in adding TOML based configurability to PySlint. Tom's Obvious Minimal Language (TOML) [5] is a popular, opensource language ideally suited for this purpose. We share our experience in adding TOML support and potential extensions. We conclude with results on value of such configuration feature based on few early customer use cases including an opensource tinyODIN [6] design of a spiking neural network processor and OpenTitan [7] IPs.