Code Monkey home page Code Monkey logo

skill's Introduction

Ananth's SKILL helper compilation - Welcome!

The 5-10 minutes you spend on this README is well worth it. YouTube video here : https://www.youtube.com/watch?v=raTVgloGCFg

What is the SKILL repository?

It is a collection of utilities and settings that boost productivity when using Cadence tools like the Virtuoso schematic editor. Mostly, the code has been created using the command logs that show up in the CIW (if not filtered) or the CDS.log. The gems - the difficult ones - depended heavily on help from Cadence AEs - thanks Sameer G, Praveena V, Vikas, Bhupendra, Lalit, Amit Sanadhya, Parul, Sudip, Pragati, Subrata, Ankush, Likesh and others I missed.. The utilities are accessed through keyboard shortcuts (bindkeys in Cadence parlance). The settings are mostly the key-bindings (utilities to key-combo) and other useful things like disabling the blinding (IC6) default grid (i.e., make it similar to IC5) and (MUST) disabling the Menu-Access restrictions on the ALT and CTRL key (else, you couldn't use ALT-x for what you want but for what Cadence thinks you should want :) (ui enableMenuShortcuts boolean nil)

What does it contain?

  • CCS/ # code obtained from Cadence AEs through support requests
  • dotfiles/ # the .cdsenv and .cdsinit files with the important settings. View and comment out the ones you don't plan on using. The comments in the files should help. The load bindkeys.il in the .cdsinit is what loads the bindkey utilities
  • guide.PDF # cheat sheet (WIP)
  • guide.xlsx # source for the cheat-sheet so you can customize
  • demos/ # some demos captured using Justin Frankel's LICEcap (WIP)
  • utils/ # the various utilities (.il files)
  • bindkeys.il the loader

How do I use it?

  1. Find out how your in-house setup loads the user's custom settings. Usually it's through a .cdsinit file in the user's home directory. Sometimes, it's the .cdsinit-user. Sometimes, it's neither of those, but a certain file in the launch directory (in which case, you put a load "~/.cdsinit" in that file :)
  2. Download the repo (extract if necessary) and move it to your unix home directory
  3. Replace /home/USERNAME with /home/<YOUR USERNAME> in the bindkeys.il and .cdsinit and .cdsenv
  4. "Install" the utilities by using the .cdsinit and .cdsenv as is (or the useful lines from them) -- importantly, loading the bindkeys.il file in the SKILL directory
  5. Look at the "Value" column in the cheat-sheet for the high-value bindkeys that can boost your productivity immediately :)

Demos of the high-value shortcuts (TBD)

  • wire thickness on-the-fly editing with ALT+scrollwheel
  • label bussing with ALT+scrollwheel
  • bus transposing with ALT+SHIFT+scrollwheel
  • pin spacing with CTRL+NumKeyPad+/-
  • pin name size with CTRL+Arrow
  • text size with SHIFT+Arrow
  • view name capture with CTRL+SHIFT+s
  • path capture with CTRL+ALT+D (unless text selected, in which case you go-to-path indicated by text)
  • grid toggle with CTRL+F10
  • edit multiple with ALT+SHIFT+Q very useful

skill's People

Contributors

ananthchellappa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

skill's Issues

Code Organization

I've started reorganizing the repo into a more standard organization with the following initial folders,

Folders

  • docs: Documentation
  • src: Source code
  • dotfiles: Example Cadence initialization dot files (.cdsinit, .cdsenv, etc)

I propose organizing the source code in src/ according to function. Here is what I have to start, we'll add more as necessary.

Functions

  • schematic
  • layout
  • navigation
  • viva
  • cliosoft

Code will be migrated from the existing folders and files and placed into one of the functions above.

Items Migrated

  • CCS/
  • abeckett/
  • clio/
  • utils/
  • Hals_customizations
  • bindkeys.il

Add high-value Bind keys:

  • wire thickness on-the-fly editing with ALT+scrollwheel

  • Deep descend

  • Plotting directly from schematic CTRL+4

  • Locate cell in the library manager CTRL+ALT+S

  • grid toggle with CTRL+F10

  • Instantiate NoConn CTRL+N

  • Instantiate from lib manager CTRL-ALT-N

  • pin spacing with CTRL+NumKeyPad+/-

  • pin name size with CTRL+Arrow

  • text size with SHIFT+Arrow

  • Open read-only CTRL+SHIFT+N

  • edit multiple with ALT+SHIFT+Q very useful

Not quite High Value:

  • label bussing with ALT+scrollwheel
  • bus transposing with ALT+SHIFT+scrollwheel
  • path capture with CTRL+ALT+D (unless text selected, in which case you go-to-path indicated by text)

Initialization

Here's how I've done my initialization in the past.

  • All initialization scripts should end in *.init.il (SKILL) or *.init.ils (SKILL++)
  • An initialization script, SKILL.init.il at the root of the repo will be called to initialize the library.
    • Loads each of the source function scripts
  • Each source function folder will have its own initialization script which loads all the files for that function.

Here's an example of the root initialization script:

/*****************************************************************
 *                                                               *
 *                  SKILL library initialization                 *
 *                                                               *
 *****************************************************************/

printf("Loading SKILL library\n")

let((file_path dir_path files)
	; file and directory paths of this file
	file_path = simplifyFilename(get_filename(piport))
	dir_path = strcat("/" buildString(reverse(cdr(reverse(parseString(file_path "/")))) "/"))

	files = list(
	"cliosoft/Clio.init.il"
	"navigation/Nav.init.il"
	"schematic/Sch.init.il"
	)

	foreach(file files
		loadi(strcat(dir_path "/src/" file))
	)
)

printf("Done loading SKILL library\n")

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.