GithubHelp home page GithubHelp logo

cdsgit / cdsgit Goto Github PK

View Code? Open in Web Editor NEW
140.0 140.0 45.0 1.53 MB

Cadence Virtuoso Git Integration written in SKILL++

Home Page: http://cdsgit.github.io/cdsgit/

License: GNU General Public License v2.0

Shell 100.00%

cdsgit's Introduction

image

Welcome to CdsGit!

Cadence Virtuose Git Integration written in SKILL++

What is CdsGit?

CdsGit is a SKILL++ library written that allows a user to use Git to manage their cadence libraries. Unlike other Git clients, CdsGit is tailored to the cadence DFII infastructure and makes interfacing with Cadence cells easy.

Features

  • Full integration of common Git commands into Library manager
  • Dropdown menus in schematic/layout for version management
  • Schematic Diff tool

Installation

Cdsgit can be installed with the following steps:

  1. Clone this repository

  2. Add to your .cdsinit

cdsgit_path = "/your/path/to/cdsgit"
setShellEnvVar( strcat("CDSGIT_PATH=" cdsgit_path) )
loadi( strcat(cdsgit_path "/load_cdsgit.il") )
  1. Add to your cdsLibMgr.il
load(strcat(getShellEnvVar("CDSGIT_PATH") "/menus/cdsLibMgr.menu"))
  1. Copy in setup/cadence.gitignore to your repository .gitignore to ignore common cadence temporary files (such as lock files).

Example setup files: https://github.com/cdsgit/cdsgit/tree/master/setup

Both the cdsLibMgr.il and .cdsinit can be created in the path where you start Cadence if you do not already have them. There are also copies in the Cadence installation directory if you want to install CdsGit globally.

Contributing

CdsGit is still a work in progress. The framework for the project is fully laid out and most basic git commands used have been implemented. Very little of the code is documented thanks to SKILL's lack of automated documentation generation. If you are serious about contributing and want more info on the inner workings PM me.

If you have a feature you would like to see or find and issue, please create an issue! Pull Requests are welcome!

Roadmap

  • Schematic Merge tool (IN PROGRESS)

    • Schematic merge tool was working with the exception of wires. Cadence implements wires from a db perspective stupidly and I've given up for a bit on trying to figure that puzzle out.
  • Layout Diff + Merge tool (VERY LITTLE PROGRESS)

    • The layout diff is pretty similar to the schematic, there are just a few more object types like vias. I focus very little on layout so there was not much motivation for me to figure out all the things needed to get a true diff. If you know a lot about the layout tool and can write SKILL, your help is welcome!

Contributers

cdsgit's People

Contributors

cookacounty avatar milenamesen 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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  avatar  avatar  avatar  avatar  avatar  avatar

cdsgit's Issues

Fucntionality

To all,

Was looking for a potential SVN for our Virtuoso implementation and came across cdsgit.

Was wondering if still supported with later versions of Cadence products. Have followed installation instructions and all seems to be there upon startup of Virtuoso. Problem is doesn't seem to do anything after that. EX: Create a repo, but seems to never be saved and have bunch of errors/warning that functions are not part of a git repo. Repo is created and init on disk vbut nothing within app functions. Same if I list repo.

Any feedback would be appreciated.

Remove ability to Merge from Diff form GMergeGui

Allow only a diff for now since the merge doesn't work properly. Cadence wire segments change dynamically making the merge have to recalculate whenever a change is made.

Another thought is to only allow parameters to be merged and new instances to be merged.

missing .gitignore file

There is no filter regarding which files should or should not be versioned.
For example cell lock files should not be added to git while adding the entire cell.
The same goes for temporary files ending with %.

CdsGit Enhancements

CdsGit still lives! There are a few upcoming enhancements coming in the near future:

  • Support for submodules when cloning
  • Integration of 3rd party cliosoft diff tool
  • Bindkeys
  • git svn #10
  • git lfs support #12

*Error* eval: undefined function - CGstatusFormDiffCB

Hello,

Upon selecting the button "Diff" from the CdsGit Status window, I get the error:
Error eval: undefined function - CGstatusFormDiffCB

And nothing else happens

Also, how can I then diff between versions of a schematic?

Thank you, and nice work! Unfortunately I won't be able to help much, my lisp knowledge is 0, but I certainly plan on using Cdsgit extensively!

Error after init - CdsGit Status dialog does not show

Hi,

for testing I created an empty directory copied a technology into it. First thing I do is "init" from the CDSGit library Manager window. If I create now a LIB and CELL (layout view) - and I want to add/commit/status I get the following error:

Error fprintf/sprintf: format spec. incompatible with data - "Format is '%s Status --- Branch: %s', argument #2 is nil"
<<< Stack Trace >>>
_sprintf("%s Status --- Branch: %s" cdsGitAppName (gs->branch))
sprintf(nil "%s Status --- Branch: %s" cdsGitAppName (gs->branch))
(formInfo = sprintf(nil "%s Status --- Branch: %s" cdsGitAppName (gs->branch)))
CGstatusForm(gs)
case(_menuName ("CGMgui" Gui(gs)) ("CGMinit" CGPBinitForm()) ("CGMstatusAll" CGstatusAllForm()) ("CGMclone" CGcloneForm()) ... )
CGMlmgrCB("CGMcommit" "TEST" "" "" "" ... )
(... in ddsiLMCEval ...)
(... in ddsLMCMenuItem ...)
ddsLMCMenuItem(5 "CGMcommit" "CGMlmgrCB" ("TEST" "" "" "" ""))

The only way to get the CdsGit Status dialog to popup is to do a add/commit from command line - then the dialog comes up without any error.

git-svn support?

Hi everyone,
A lot of nice work has been done on cdsgit!
I wonder if it is possible to support git-svn to make it directly compatible to SVN repositories? According to the git-svn documentation, instead of
git <cmd>
one uses
git svn <cmd>
Now, obviously SVN does not support all features, so does cdsgit use any features that svn (or svn-git) does not support?
It would be a nice addition, since in many places SVN is still the goto concurrent version system.

Best Regards

inclusion in .cdsinit not working

  • Copied the line from the Project page into .cdsinit, but was required to change single quotes into double quotes.
  • can see the lines:
    CdsGit - Loading SKILL

    CdsGit - Done Loading SKILL
    in the virtuoso log pane.

Can not see the CdsGit horizontal menue entry in library manager as explained in the CdsGitBeginnerGuide.docx.

inconsistent termination of the path

some lines expect the CDSGIT_PATH variable to have a / at the end, some don't.
changes & pull request made.

Also may be better to advise that people edit their .cdsinit_personal or .cdsinit_local file instead of .cdsinit. (personal worked for me, local may be buggy in systems with IC5 and IC6 installed)

Would be nice if you could clarify what is working and not working. Setting a remote doesn't seem to work using the menu options, but i think running the git command in a terminal does. Will running a mixture of cdsgit commands from cadence and terminal commands cause issues?

problems with Commit function

Hi, Aaron.

O started using your CdsGit and followed the example in the documentation but, when I tried to make a commit, I got the following error message:

Error FullPath: too few arguments (2 expected, 1 given) - (stdobj@0x1dea7ef0)
<<< Stack Trace >>>
FullPath(gsp)
(fullPath = (FullPath gsp))
if((gsp->gs) then (fullPath = (FullPath gsp)) let((lib) foreach(lib (&->libList) if(& then &))) else ... )
GetLib(gsp)
foreach(line response_list if((gs->verbose) printf("%s\n" line)) (regexp = "^[ MADRCU?]+[ MADRCUT?]+[ ]+") (matched = rexMatchp(regexp line)) ... )
let((line) foreach(line response_list if((gs->verbose) printf("%s\n" line)) (regexp = "^[ MADRCU?]+[ MADRCUT?]+[ ]+") (matched = rexMatchp(regexp line)) ... ))
if((response == "") then if(showInfo then Info(gs sprintf(nil "Path %s is clean" &))) (gs->clean = t) else ... )
Status(gs)
CGstatusForm(gs)
case(_menuName ("CGMgui" Gui(gs)) ("CGMinit" CGPBinitForm()) ("CGMstatusAll" CGstatusAllForm()) ("CGMclone" CGcloneForm()) ... )
...

could you help me?

thanks,

best regards,

Noel Carneiro

Link Schematic Diff and Status Diff to MergeGui

Currently the merge GUI has to be manually populated. Diffing a schematic view from either the library manager menu or schematic menu should automatically export the last version and pop up the diff form.
The automatically exported view should also be deleted after the diff is complete.

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.