Skip to main content

Virtue

GitHub release (latest by date including pre-releases) Conda PyPI GitHub issues PyPI - License

A SKILL and Python Framework for automating IC design in Cadence Virtuoso with the following goals:

  1. Bring the capabilities of skill to Python so (ideally) you don't have to write skill code to do EDA in Python
  2. 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

YouTube Video Explanation

Features

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)

Source distribution for virtue-skill 0.4.1
File Size Uploaded
virtue-skill-0.4.1.tar.gz 643.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for virtue-skill 0.4.1
File Interpreter ABI Platform
virtue_skill-0.4.1-py3-none-any.whl Python 3 none any Details

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

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page