A SKILL and Python Framework for automating IC design in Cadence Virtuoso with the following goals:
- Bring the capabilities of skill to Python so (ideally) you don't have to write skill code to do EDA in Python
- In those cases where you do need to write skill, make it pythonic
Projects Built with Virtue
- Softworks: Software and documentation view types in the Cadence Virtuoso IC design environment.
- Data-panels: Export rich data reports from simulation results to pptx slides and xlsx tables
- Morpheus: Generate Maestro test benches in a standard way compatible with an associated data-panels report
Features
- A SKILL standard library of "batteries included" modules
- A SKILL test framework modeled after pytest
- A SKILL TOML config file reader and writer for the TOML standard
- A SKILL package manager
- Define SKILL++ modules
- Import modules into a SKILL++ lexical scope using the top-level "Import" table
- Create SKILL++ packages
- SKILL environment manager using Conda or Pip Python environments
- Seamless execution of SKILL from Python using SkillBridge
Example SKILL++ Package
let((Str
(module_description "String functions")
(Module Import['Module])
)
Str = let(()
procedure(emptyp(in "g")
"Checks if the input is an empty string
@param Any type of object to be checked
@return A boolean, 't if it is an empty string, otherwise nil"
stringp(in) && strlen(in) == 0)
procedure(str2bool(input_string "t")
"Converts a case-insensitive 'TRUE' or 'FALSE' string to a boolean
('t / nil) If it is not a boolean, the string is returned."
if(stringp(input_string) && (upperCase(input_string) == "TRUE") then
't
else if(stringp(input_string) && (upperCase(input_string) == "FALSE") then
nil
else
error("%s is not a boolean, must be \"TRUE\" or \"FALSE\"
(case insensitive)" input_string)
))
)
list(nil
'emptyp emptyp
'str2bool str2bool
))
Module->New('Str Str
?package Import['Virtue]
?description module_description)
)
Example Test Script
Note the package imports at the top
let(((Str Import['Str])
(Test Import['Test])
(Virtue Import['Virtue])
)
procedure(Test_emptyp()
assert(Str->emptyp(""))
assert(!Str->emptyp("test"))
)
procedure(Test_str2bool()
assert(Str->str2bool("true"))
assert(Str->str2bool("TRUE"))
assert(!Str->str2bool("false"))
)
procedure(Test_str2bool_error()
assert(!errset(Str->str2bool("Nothing")))
)
Test->RunFile(list(nil
'Test_emptyp Test_emptyp
'Test_str2bool Test_str2bool
'Test_str2bool_error Test_str2bool_error
)
?filepath Virtue->GetCurrentFilePath()
)
)
Prints out the following when ran in the CIW:
FILE: /path/to/file/test_Str.ils
passed: Test_emptyp
passed: Test_str2bool
passed: Test_str2bool_error
3 / 3 tests passed
Installation
Virtue requires Python >= 3.7 and can be installed using several methods:
- Conda
- Pip
- From source
See the installation instructions in the documentation for detailed instructions.
Metadata
Release files for virtue-skill 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| virtue-skill-0.4.1.tar.gz | 643.6 kB | Without provenance | Details for virtue-skill-0.4.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| virtue_skill-0.4.1-py3-none-any.whl | Python 3 | none | any | Details for virtue_skill-0.4.1-py3-none-any.whl |
Total release size: 682.8 kB
Release files / virtue-skill-0.4.1.tar.gz
| Download URL | virtue-skill-0.4.1.tar.gz |
|---|---|
| Size | 643.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2056bffe00118d39b100ab68d5bf8a3a31a3970308783dc6f11d95e7f5c39066
|
|
BLAKE2b-256 checksum How to use checksums |
3b7ed8592c88d0af9bf4d91fc8592b47c5f787f8f9dcbb10fae7559853ea86f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.14
|
Release files / virtue_skill-0.4.1-py3-none-any.whl
| Download URL | virtue_skill-0.4.1-py3-none-any.whl |
|---|---|
| Size | 39.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
70fad81b7af97fb14fb8f8035825e895bfaf91e980db41808d259b3fbc2c9278
|
|
BLAKE2b-256 checksum How to use checksums |
ee3326b7d010e64e61ccd25dce7094e6da1eaf948aeab023f61205a314f5dcc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.14
|
Security for virtue-skill 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.