Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Control calibre drc via skill

Status
Not open for further replies.

InvokeMeWell

Junior Member level 2
Joined
May 17, 2015
Messages
22
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,473
Hello,
I am trying to run calibre via skill cadence my code:
hiGetCurrentWindow()
cmd = strcat("calibre -drc " "my_runset.runset")
pid = ipcBeginProcess(cmd)
ipcWait(pid)
I have a problem when it opens the gui of the drc the library is correct, but in the cell name in inputs TOP CELL TOP CELL NAME, how I can declare in via skill select cell name, library, etc

thank you in advance
 

Solution
Ok, so you need to prepare cadence for running the things. Calibre is not part of the cadence flow as such.

Steps forward:
* Create library for storing the run files
* Create a streamout cmd /GDS for calibre to operate on (unless you use oa...)
* Create a calibre runfile that it follows while running the drc

To set things up you need also to
* Copy the calibre.drc (or rules.drc) or whatever it might be called from your rundeck provider and do a slight modification to the file (might not be needed dependent on calibre version). Copy this into a directory called "pv".
* Create a skill script/function
* Create a shell script

Skill:

Code:
(defun rundrc ()
(progn
cname = (hiGetCurrentWindow)->cellView->cellName
lname =...
I really don't know about this, but when I don't know how to do
something in SKILL* the first stab is to do it in the GUI, and export
the session. Within that code-pile you should find each and every
command that was executed, including stuffing fill-form entries.
I imagine a couple of them will solve your problem.

* which is pretty much always
 

Hello,
thank you reply you export he session via logfilter on ciw and u check all the check boxes? I dont know to export the sessionm could u explain a bit?
 

How do you run the command? Since calibre is not tightly connected to cadence framwork per se, how would cadence/calibre know which cell you are actively using if you for example execute from the CIW? Speaking of that, what does your my_runset.runset look like?

Export by saving runset. Do some changes in the fields you are looking for and export again and you will see what fields have changed.
 

well it didnt help me, I really dont know how to run a simpel drc via cmd, does any one knows what I must I just want the code not tips.
 

I want to run drc automatically via cmd. Not using the gui and click buttons, I want automatically to run drc in e.g. 20 cells.
My runset includes only the rules. I am puzzled how to incorpare it on the command the cell lib which I want to run drc on a specfic cell. I don;t know this info.
 
Last edited:

Ok, so you need to prepare cadence for running the things. Calibre is not part of the cadence flow as such.

Steps forward:
* Create library for storing the run files
* Create a streamout cmd /GDS for calibre to operate on (unless you use oa...)
* Create a calibre runfile that it follows while running the drc

To set things up you need also to
* Copy the calibre.drc (or rules.drc) or whatever it might be called from your rundeck provider and do a slight modification to the file (might not be needed dependent on calibre version). Copy this into a directory called "pv".
* Create a skill script/function
* Create a shell script

Skill:

Code:
(defun rundrc ()
(progn
cname = (hiGetCurrentWindow)->cellView->cellName
lname = (hiGetCurrentWindow)->cellView->libName
tname = (hiGetCurrentWindow)->cellView->lib->techLibName
cmd = (strcat "./rundrc.sh " lname " " cname " " tname )
(printf "%s\n" cmd)
(sh cmd)
;;pid = (ipcBeginProcess cmd)
;; (ipcWait pid)
))

Tie this to a bindkey in cadence such that you can "ctrl+something" execute. You can also write the skill function to take the cname lname and tname as input arguments.

Shell (save as rundrc.sh and make sure to chmod it for execution: chmod a+x ./rundrc.sh):

Bash:
# See modified code in post below ...

Notice that once you have the shell script in place, you can run all your verifications from terminal rather than from inside cadence. But you need an additional shell script wrapper on top of that.
 
Last edited:
Solution
Had some issues with calibre; but here is a modifed version of rundrc.sh

Bash:
#!/usr/bin/tcsh
setenv TECH $3
setenv CELL $2
setenv LIB  $1
setenv RUNDIR ./pv/drc/${LIB}/${CELL}
mkdir -p ${RUNDIR}
strmout -library ${LIB}  -strmFile ${CELL}.gds \
        -techLib ${TECH} -topCell ${CELL} \
        -view 'layout'  \
        -logFile 'strmOut.log' -runDir $RUNDIR

cd ${RUNDIR}
echo 'LAYOUT PATH "'${CELL}'.gds"' >! ./calibre.drc_
echo 'LAYOUT PRIMARY "'${CELL}'"' >> ./calibre.drc_
echo 'DRC RESULTS DATABASE "'${CELL}'.drc.results" ASCII' >> ./calibre.drc_
echo 'DRC SUMMARY REPORT "'${CELL}'.drc.summary" REPLACE HIER' >> ./calibre.drc_
echo 'DRC CELL NAME YES CELL SPACE XFORM' >> ./calibre.drc_
echo 'VIRTUAL CONNECT COLON NO' >> ./calibre.drc_
echo 'VIRTUAL CONNECT REPORT NO' >> ./calibre.drc_
echo 'INCLUDE "../../calibre_mod.drc"' >> ./calibre.drc_

# Execute calibre
calibre -drc calibre.drc_

And remember that in the copied calibre.drc (or rules.drc) file from your PDK into your pv library, you have to uncomment the following lines:

Code:
//LAYOUT PATH "GDSFILENAME"
//LAYOUT PRIMARY "TOPCELLNAME"
//DRC RESULTS DATABASE "DRC_RES.db"
//DRC SUMMARY REPORT "DRC.rep"
--- Updated ---

it is then easy to run a list of tests on different cells from terminal:

Code:
./rundrc.sh yourLib yourCell1 techLib
./rundrc.sh yourLib yourCell2 techLib
./rundrc.sh yourLib yourCell3 techLib
./rundrc.sh yourLib yourCell4 techLib

Remember that you have to load the drc.results files (from GUI) from the individual libraries or inspect them manually with a simple text editor.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top