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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|