i am looking to write a short little script to re-assign the net name for multipart paths. we have several different MPPs defined and what happens is whatever the first net it touches get assigned to the MPP in XL. It is an annoying task to select the MPP and re-assign the subparts for the net you want on the MPP.
I was trying something like:
following error: *Error* setSGq: dbSetq: Can not set attribute - name
You can't set the name attribute on the net. You'll need to set the net attribute on the path.
netId = dbMakeNet(geGetEditCellView() "newname")
The above command will create the net in the cellview if it does not exist. Otherwise it will return the net id for the net named "newname". Then you assign this net to the path:
path~>net = netId
You can get all the rod objects in a cell by using: rodGetNamedShapes rather than looping through all the shapes in the cell. Although this may be a nit-picking detail, cv is the typical convention for the "cellview id" (cv = geGetEditCellView()). You code could be confusing to someone debugging it by using cv for the selected set.
In reply to dmay:
Thank you for the reply Derek. I still seem to be missing something. I did the following after selecting the MPP. which had "VDD" assigned to it.
netId = dbMakeNet(geGetEditCellView() "VSS")
It still hangs on to the VDD name??
In reply to DaveDesigner:
If you're doing this whilst the layout XL extractor is operational, you may be competing with it for assigning net information.
One solution is to set the lxStickyNet boolean property on the shapes (shape~>lxStickyNet=t). You should do this with caution though, because it means that the net information is not then driven by VIrtuoso XL and it is seen as being fixed - but you should then be able to set it to what you want.
I've not tested this with an MPP, but it may well be your problem.
In reply to Andrew Beckett:
Thank you both, this worked! I verified that Derek's method works while NOT in XL.
This isn't doing exactly what I had hoped as it turns out. It changes the connectivity so that the flashes go away when in XL but if I copy this MPP to another location in the cell it reverts back to the original connectivity because it is still assigned to the subparts. The way I permanently fix the problem manually is to select the MPP and then click on the Subpart... button. THis brings up the Edit ROD Subpart form. I have to select the M1 drawing part and type in the name of the new net. I then select the Subrectangle button and select the "CO" drawing part and change the netname there also. Then the MPP is permanently changed. I was hoping to do this somehow with this skill but presently it seems it just changes the connectivity. Once it is copied the connectivity is changed to the netname assigned to these two subparts.
You can access all of the subShapes from the rodObject id:
foreach(rodObj rodGetNamedShapes(geGetEditCellView() foreach(shp rodObj~>subShapes shp~>net = netId ))
Or in your current code:
foreach(path selectedSet() rodObj = rodGetObj(path) foreach(shp rodObj~>subShapes shp~>net = netId ))
Very much appreciated! I think I am good to go now.