Quantcast
Channel: Cadence Custom IC Skill Forum
Viewing all 5091 articles
Browse latest View live

Yellow cursor that shadows mouse pointer in schematic editor

$
0
0

In the Virtuoso schematic editer, there is a yellow cursor that follows the tip of the mouse pointer and stays on the current grid snap spacing.  The yellow cursor is usally a small square, but changes to a representation of a symbol when placing an instance.  Are there skill functions available to be able to manipulate the yellow cursor and be able to change its shape or even its position?  I have looked through every function reference that I can find, and searched through these forums and other places with no luck.  I would also be happy if I could find a way to draw a temporary shape such as the yellow cursor in an arbitrary location in the window that I can move around.

 What I am trying to do is create a specialized instance placement tool that will only allow instances of cells to be placed in specific locations other than on the current grid snap.  I want to be able to calculate the appropriate locations in my skill code, and have my custom yellow box jump to the closest calculated location that mouse pointer is near.  This is just for visual verification of where the actual symbol will be placed when the mouse button is clicked.

 Thanks for any help

 


Netlist to Schematic size problems on IC5141 (Width and Length are 0)

$
0
0

Hello.

I'm trying to generate a Schematic from a Netlist file on IC5141. Although I can successfully import the Netlist file and actually generate the Schematic, there is a problem with the devices' Width and Length.

For example, in my Netlist I have the following: 
MM1 Q QN vdd! vdds! psvtgp w=0.135 l=0.06 nfing=1 sense=0 ngcon=1 m=1
+ accurateFlow=0


However, once imported, the device apparently doesn't reads the W and L values and sets it to 0 in the Schematic.

My device-mapping file looks like this:
devMap := nfet nsvtgp
termMap := D d S s G g B b
propMap := W w L l
devMap := pfet psvtgp
termMap := D d S s G g B b
propMap := W w L l


Any ideads as to why this is happening? I've been looking for a solution for this for the past couple of days and, thus far, haven't been able to find one.

Thanks in advance,
Michel Arendt

IC6 Add Connectivity to Manually Routed Nets

$
0
0

Hi guys,

I am using IC6.1.5.  We are editing the layout with the Layout Suite XL.  Many of the nets in the layout were manually routed and do not have connectivity.  How can I add connectivity to these nets?  Is there a tool that does this or perhaps a SKILL script?  Our connectivity problems are mostly on internal, unpinned nets.

In a specific layout, we are using Join Named Nets to get LVS clean.  This means that there is an open net (vgnd) in the layout and each segment has a pin placed on it to join the nets of this node to get LVS clean.  There are flashing markers in the layout that say "Warning: Illegal weak-connect connection on net vgnd"  How do we get rid of these markers?  If we add connectivity to the vgnd net, will the marker warning be removed?  Does IC6 understand the Join Named Nets concept?  

Thank you,

 Stephanie

Skill function which adds a specific instance in Virtuoso Layout L

$
0
0

Hi all, 


Could anyone please guide me if there exists a function similar to leHiCreateInst in Layout L, which can however accept arguments about library, instance and view?

E.g. in Schematic L editor we have schHiCreateInst which accepts arguments, therefore I can use it to quickly instantiate components with key combinations. I want to be able to do the same but in Layout L, however I have difficulties figuring out how to achieve this. 

I would appreciate very much any comments.

Regards,
Deyan

Automatically modify menu items in schematic editor on startup

$
0
0

I am trying to redefine bind keys and menu items for some functions within the schematic editor as well as add another pulldown menu to the banner menu.  I have working code that does this if I start the schemtic editor first by hand, and it works well.  When I open up an additional schematic window, the bind keys and menu callback function overrides are all there, but the new pulldown menu is gone.  I don't want to have to run the initialization script by hand everytime I open a new shematic window.

The code to re-assign the callback functions and new pulldown menu don't work unless a schematic window is opened first.  I therfore open up a dummy schematic window, run my setup, and then close the dummy schematic window.  I think this is kind of a kludge, and it doesn't keep my pulldown menu anyway.  I also don't want to modify the menu files.  Is there anyway to run a skill script every time a schematic editor starts up?  I am running the IC615 version.  Below is the initialization code snippet that I am using.  I load this and run it within the .cdsinit in my home directory.

svID=deNewCellView("sandbox" "temp1" "schematic" "schematic" nil)
sv1ID=geGetWindowCellView(svID)

adCreateLayoutMenuItem = hiCreateMenuItem(?name 'adCreateLayoutMenuItem ?itemText "Create Layout" ?callback "adCreateLayout")
hiCreateMenu( 'adToolsPulldown "Tools" list( adCreateLayoutMenuItem ) )
hiInsertBannerMenu( hiGetCurrentWindow() 'adToolsPulldown 5 )

hiSetBindKey("Schematics" "None<Key>i" "adHiCreateInst( )")
hiSetBindKey("Schematics" "None<Key>w" "adHiCreateWire( )")
hiSetBindKey("Schematics" "None<Key>p" "adHiCreatePin( )")
hiSetMenuItemCallback(schAddMenu 'InstItem "adHiCreateInst()")
hiSetMenuItemCallback(schAddMenu 'WireItem "adHiCreateWire()")
hiSetMenuItemCallback(schAddMenu 'PinItem "adHiCreatePin()")

dbClose(sv1ID)

triggering the done procedure for enterPoints()

$
0
0
I am using an enterPoints function that does not seem to recognize use of the Enter key, or a double click (typical done trigger for enterPath) as triggers for its done procedure.  How does one trigger the done procedure for enterPoints?  The esc key is recognized as a cancel function.  The form contains a cancel button, but no done button.

How to parallel or to increase the speed of simulation launching with ocean (distributed)

$
0
0

Hi,

I wrote an ocean script which has to do lot of simultations. It is working perfectly well but I would like to increase its speed. Currently I use run( ?jobName jobname ?queue lsf_queue ?mail nil ) to launch the simulations, and the following environnement variables:

envSetVal("asimenv.distributed" "removeJobData" 'boolean t)

envSetVal("asimenv.distributed" "showMessages" 'boolean nil) 

The simulation launching time is about 7s/sim (everything is lauched sequentially) and ocean returns:

Delete psf data in /path/blablabla/HSPICE/schematic/distributed/7703/psf.

submitting job... 

Does anybody know a way to decrease this launching time or to launch several simulation in the same time?

Thanks.

 

Thomas 

sh command with quotations

$
0
0

Hi All,

 In my skill programme, I would like to excute shell command like --> grep -w "Rule No." inputfile.txt > outputfile.txt

so i written programme like-->

--------------------------------------

k1="inputfile.txt"

k2="outputfile.txt" ;k1 & k2 are variables

k=buildString(list("grep" "-w" "Rule No." k1 > k2))

sh(k)

-----------------------------

But it prints like --> grep -w Rule No. inputfile.txt > outputfile.txt.

 but i need to execute this command with word "Rule No." in quotations.

Please help me on this

 

Thanks in Advance,

Narendra 


Comparing two layout views

$
0
0

Hi,

I am trying to compare two layout views of a same cell. For this I am using the design sync function dssCompareViewsP(). But this fuction only reports the differences in the layers, nets, terminals and instances. The function is skipping the vias present in the layout, thereby the fuction is not comparing the whole layouts exactly.

Is there any other method/function to  achieve this?

Regards,

Jay

Procedural interface for Virtuoso schematic navigator

$
0
0

I am trying to get the hierarchical list of instances that a net is connected to. I found two flows and both have issues:

 

  1. Schematic Navigator --> Select Net --> Right-Mouse-click on the net in navigator --> Probe --> Add net and connected instance
    • This works great and it probes all the instances the net is connected to.
    • However the geGetAllProbe() returns the probeId of the net. I can't get the dbId of instances connected to the net procedurally. Is there a better way to get these instance dbIds?
  2. auProbeAddDevsForNet()
    • This auLvs() functionality is broken. Works on certain schematics but fails on many.
    • I also tried setting the graphic env variable probeNetDisplayCheckInstance and this did not work
    • windowId~>probeNetDisplayCheckInstance = t did not work either
    • Is this function supported at all?

 

I heard probing has been enhanced in IC616 and I am yet to try this.

Any help or insight into this is greatly appreicated.

-- PSoorya 

Skill function to remove PWR/GND pins from Verilog-Header file by export from "symbol"

$
0
0

Hello,

I am looking for a solution for the following task: creating 2 Verilog-Header files (with and without power/ground pins) out of the Symbol view.

First one is pretty simple - just create cellView form cellView "symbol" -> "functional". But I don't how to create easier the second one (without power/ground pins, which can be found by name "^vdd*" or "^gnd*"). First option is to modify the already created verilog-header file and to remove the PWR/GND pins. Or second option is to create pinList from Symbol view, modify it and then create cellView "functional" from pinList.

Can you perhaps help me with this?

Best Regards

 

not able to create via in clone

$
0
0

Hi 

  I am trying to create via inside clone using the command dbCreateVia(cell_id obj_id obj_origin obj_orient v_params)

Inside clone, but it is creating in the cellview not inside the clone.

Cant alias this bindkey command

$
0
0

Hi..

Can you please tell me what is wrong with this bindkey setting:

 hiSetBindKey("Layout" "Shift<Key>n"   leSetFormSnapMode("orthogonal"))

at the CIW prompt ,it returns t

But when I tried to use this bindkey, I got the error  p, li { white-space: pre-wrap;*Error* toplevel: undefined variable - orthogonal

 

However, if I change the synctax from orthogonal to anyAngle, it works fine.. (Why??)

Thank you very much for your help

Howard

 

 

How to get coordinates of polygons

$
0
0

Hello

In a view symbol, how can I get all the coordinates of polygon?

I have tried using cv~>shapes~>xy and  cv~>shapes~>bBox but didn't get all the coordinates.

Regards

Varun 

Question on OCEAN standalone evaluation

$
0
0

Hi,

Got a question on OCEAN scripts (same applies to artil as well)

I have an ADE L state, from which I save the OCEAN script, and then run it. It runs fine.

Suppose, there is a calculator function in this OCEAN script, which looks like this:

gain_1 = value(dB20(mag(v("/outp" ?result "ac-ac"))) 1)

plot( gain_1 ?expr '( "gain_1" ) )

Now, suppose I want to run the calculator function again (with possibly some modifications). Since the simulation is already run, I remove the entire top part of the OCEAN script, and replace it with a call to openResults, like below:

openResults( "results.psf" ) ; Replace "results.psf" with the actual path of the PSF directory

I run the OCEAN script, but it fails, with the following error:

> WARNING (OCN-6054): The output '/outp' you selected does not exist. Type outputs() to see the list

Now comes the funny part. I change the calculator expression to the following:

gain_1 = value(dB20(mag(v("outp" ?result "ac-ac"))) 1)

That is, I removed the "/" character in the signal name. The script now runs fine!

Could anyone tell me why this happens? I know the workaround for it, but would like to understand why that workaround is necessary at all.


pCell skill for beginners

$
0
0

Hi,

i'd like some advice for creating my first simple pCell from skill. I have no skill experience so i'm looking for a good place to start.

My ultimate aim (for now) is to create a rectangular via array with X and Y stretch handles. For example you have M1->M4(the top & bottom layers would be parameters) that you can stretch in X or Y and it fills with the max vias allowed by spacing rules. However to begin with i'd be happy to create a parameterised rectangle of M1 that i can stretch in one direction & take it from there.

Pointers to on-line tutorials and very simple examples would be great, right now i am blindly searching around source-link.

Thanks

Stu

how to search for specific devices/models into spectre netlist?

$
0
0

 Hi there,

 I want to know if it is possible with SKILL functions to scan a spectre netlist for specific devices.

We have a spectre netlist file and we want to search for devices of a specific model or devices with specific properties (e.g. w < 0.XX um ).

If such devices/instances are found  to warn the deigner:

            In cell ABC we found device D (model=model_X, w=0.zz )

And based on those info he shoudl decice if really want to run the simulation of not.

 

 Do we have such things in SKILL?

I want to run it from command line, some other scripting is OK if SKILL has no such functionality.

Best Regards,

Marcel

Pipe-sign every time I execute

$
0
0

Hi All, I have a simple function (nothing fancy) whose header definition is as below:

procedure( my_func( cellName netName @optional (arg1 "abc") (arg2 "def")  )

    let(  (inport...etc. ec.

I have two questions:

(a) Everytime I execute the function, I get a "|"<process_name> at the start and end, as shown below:

my_func( "mycell" "mynet")

|my_func("mycell" "mynet")

..................... 

|my_func --> t

(2) How do I pass arg2 without having to pass arg1? Something like my_func( "mycell" "mynet" ?arg2 "myarg")  

SKILL++ private functions

$
0
0

I've read the Skill manual as well as done some poking about but I still am somewhat unclear on how to delare a private function for a class method.

 For instance, I have a class "Example"

 defclass( Example () () )

 Now I give it a method

defmethod( Fun (( obj Example))    .... )

 

How can I define a procedure that only "Fun" can access.

Secondly, how do I define procedures that only methods of "Example" can access?

Regarding Combofield and list of library names as well as list of cells in the library selected

$
0
0

Hi,

I am trying to make a combofield  in which i would like to have list of library names that i can do using ?items ddGetLibList()~>name

but on the same end i also want an option for myself to select a particular cell from the library which i selected above is it possible to do this in the same combofield..or should i be looking at making something else which will give me both the things?

 

Thanks

Vishal 

Viewing all 5091 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>