This project has been archived by its maintainers, and is no longer receiving any updates.
svql: SystemVerilog Module Analysis Tool
A Python tool for parsing and analyzing SystemVerilog modules using SQL queries.
Overview
svql provides a simple interface to extract and query information from SystemVerilog modules. It parses module parameters, ports, and their connections, storing them in SQL-queryable DataFrames.
Installation
Install the required dependencies with:
pip install -r requirements.txt
Usage
Below are some examples demonstrating how to parse a SystemVerilog module, execute queries, and print the outputs.
Example 1: Query Parameters Not Changed from Default
Module parameters typically come with default values. When a parameter has not been explicitly overridden, it retains its default value. Use the following query to extract those parameters:
from module import Module
# Parse a SystemVerilog module
module = Module("path/to/your/module.sv")
print(f"All parameters that have not been changed from default for {module.header}:")
print(module.query("SELECT * FROM params WHERE override_value IS NULL"), "\n")
# Expected Output:
# All parameters that have not been changed from default for pipeline_top:
# name dtype default_value override_value scope typed_param
# 0 DATA_WIDTH int 32 None parameter 0
# 1 FILTER_TAPS int 4 None parameter 0
# 2 BUFFER_DEPTH int 8 None parameter 0
Example 2: Query Input Ports
To retrieve all input ports of a module, filter the ports based on their direction:
from module import Module
# Parse a SystemVerilog module
module = Module("path/to/your/module.sv")
print(f"Ports where direction = 'input' for {module.header}:")
print(module.query("SELECT * FROM ports WHERE direction = 'input'"), "\n")
# Expected Output:
# Ports where direction = 'input' for pipeline_top:
# name dtype direction width connected_to
# 0 clk logic input 1 None
# 1 rst_n logic input 1 None
# 2 data_in logic input [DATA_WIDTH-1:0] None
# 3 valid_in logic input 1 None
# 4 read_en logic input 1 None
Release files for svql-minimal 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| svql_minimal-0.1.0.tar.gz | 5.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| svql_minimal-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.9 kB
Release files / svql_minimal-0.1.0.tar.gz
| Download URL | svql_minimal-0.1.0.tar.gz |
|---|---|
| Size | 5.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4dfdecd930ee5ca39066ba43dd464ccb8924c3a50b4bf758fbcbfbda2acdcd97
|
|
BLAKE2b-256 checksum How to use checksums |
e65e7dfcb1239dedd65626234806b48cbdd7d9b716dd5d3186d426ea82f4ade7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.21
|
Release files / svql_minimal-0.1.0-py3-none-any.whl
| Download URL | svql_minimal-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c5948e5266c2138bd7396a40c4913d0b4a783ae37e520d47d724e9b7a0f4c63b
|
|
BLAKE2b-256 checksum How to use checksums |
acb81e66529bc8173d20b651beb17b0153d07ccf6b36546f972fd18424aa0542
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.21
|