Cadence Virtuoso SKILL and Python library
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
virtue-skill-0.4.1.tar.gz
(643.6 kB
view details)
Built Distribution
File details
Details for the file virtue-skill-0.4.1.tar.gz
.
File metadata
- Download URL: virtue-skill-0.4.1.tar.gz
- Upload date:
- Size: 643.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2056bffe00118d39b100ab68d5bf8a3a31a3970308783dc6f11d95e7f5c39066 |
|
MD5 | e8bf2884c828fd10f0689fae8208d5bf |
|
BLAKE2b-256 | 3b7ed8592c88d0af9bf4d91fc8592b47c5f787f8f9dcbb10fae7559853ea86f1 |
File details
Details for the file virtue_skill-0.4.1-py3-none-any.whl
.
File metadata
- Download URL: virtue_skill-0.4.1-py3-none-any.whl
- Upload date:
- Size: 39.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70fad81b7af97fb14fb8f8035825e895bfaf91e980db41808d259b3fbc2c9278 |
|
MD5 | 2b7ac8caada7944df9439468884b55fd |
|
BLAKE2b-256 | ee3326b7d010e64e61ccd25dce7094e6da1eaf948aeab023f61205a314f5dcc0 |