Forum Replies Created
-
AuthorPosts
-
Keith
KeymasterReplying offline..
Keith
KeymasterOK this should be fixed in 4.3.31.
…which is up on the website now for all except Solaris.
Keith
KeymasterThis issue is now fixed (along with another subtle one) in today's (8th Feb) build of version 4.3.30.
Keith
KeymasterHi Jofre,
Could you send the scripts in an email to support@peardrop.co.uk? For some reason they did not seem to upload to the forum.
thanks,
Keith
Keith
KeymasterActually if you look in the docs "Programming Glade in Python" then "cellView", first take a look at the dbCreatePolygon function which gives an example:
Code:numPoints = 3
x = intarray(numPoints)
y = intarray(numPoints)
x[0] = 0
y[0] = 0
x[1] = 2000
y[1] = 0
x[2] = 0
y[2] = 2000
layer = 3
poly = cv.dbCreatePolygon(x, y, numPoints, layer)then a bit further down the page you can find the syntax for the dbCreatePath function:
Code:path *p = cv.dbCreatePath(int *xpts, int *ypts, int numPoints, int layer, int width, int style, int beginExtent, int endExtent)Create a path object in the cellView and returns the path created. The array xpts and ypts are the X and Y coordinates of the path. numPoints specifies the number of points and layer the layer the polygon is created on. width is the width of the path and style the path style (0 = truncate, 1 = extend, 2 = octagonal, 4 = varExtend). If the path style is type 4, varExtend, then beginExtent and endExtent specify the path extension beyond the beginning and ending points.
In your code you can use intarray(num) to create an integer array which you pass to dbCreatePath as the underlying code is expecting this, rather than a Python array.
If you want to give this path connectivity, you need to either find or create the net you want (dbCreateNet will return the net if it already exists, or create it):
Code:n = cv.dbCreateNet("mynet")
p.setNet(n)
n.addShape(p)Then the path's net needs to be set, and furthermore the net needs to be updated with the path shape.
Let me know if this is not clear.
Keith
KeymasterI had a look at the Qrouter docs, it seems to be a basic implementation of Lee's algorithm. It appears to have a hard coded limit of 8K * 8K track * 4 layers, which means its only suitable for small designs.
Most commercial grid-based routers split larger designs into a number of gcells** (global routing cells) i.e. a bin based approach where a gcell is say 10-20 track pitches wide/high, and do an initial global route to assign nets to gcells and do stuff like congestion reduction and layer assignment. Then each gcell is routed using e.g an A* algorithm to assign actual track locations. Finally a rip up and reroute stage is used to remove DRC violations.
** See for example "Efficient Handling of Large Wiring Data in TANGATE" by Tom Kronmiller, IEEE 1988.
Keith
KeymasterHi,
It probably could be done, but I'd suggest a better option would be a perl script or similar to convert from one format to the other. That way if either format changes then you are in control of the translator.
regards
Keith
Keith
KeymasterOK all the Linux builds on the web page have been switched to Python 2.6.8. Please re-download them and try them out. Compile date should be today (20th Jan).
Keith
KeymasterRight, this is the plan:
I am going to link the Linux versions to python version 2.6.8. This should get round the _weakref thing as it was not a builtin in that version.
I will have Linux builds available later today. I won't change the version number but will post here when they are ready for download.
– Keith
Keith
KeymasterStrange, I can't seem to reproduce the problem here with Ubuntu 10.04. As of Python 2.7.1, _weakref became a builtin, so not sure why it's trying to load it.
Did you download the source and run 'configure', 'make', then 'make altinstall'?
What you you get if you type 'python -v'?
What you you get if you type uname -a'?I'll look into setting up 12.04 32/64 bit virtual machines in the meantime.
Keith
KeymasterVersion 4.3.28 is mainly a bugfix release. All versions (except Solaris) are updated to this version as of today. Solaris may follow if I get the time!
Edit: On Linux, 4.3.28 has been rolled back to Python 2.6.8 as the 2.7.3 version was giving python errors on startup.
Keith
KeymasterI can only assume that Ubuntu 12.04 comes with a different variant of Python. Can you try installing the http://www.python.org version 2.7.3 to /usr/local/ and make that one first to be found in $PATH?
Keith
KeymasterIf you just type python at the linux command line and then type 'import os', do you get the same error?
What does 'which python' give, and what version is the one installed?
Keith
KeymasterHi,
Glade is linked to this version of python:
http://www.python.org/download/releases/2.7.3/
I am guessing that the version you have is an earlier version and does not have the _weakref module. If you download and install 2.7.3 from the link above and install it on your machine, it should work OK.
Let me know how you get on,
Keith.
Keith
KeymasterI had a look at the code in more detail. Basically the inst::Flatten() and array::Flatten() does exactly the same as the shape::Flatten() functions, i.e. they take 2 arguments, a cellView to create the (new) shape in and a transform.
The Flatten() commands are only used by the ui().editHierFlatten() gui command, which goes through all selected instances and calls shape::Flatten() on each to effectively flatten the instance(s) into the current cellView.
inst:Flatten() and array::Flatten() were/are never used, so it makes sense to change them to actually flatten them. So I'll be changing them to:
inst::Flatten(cellView *to, dbTransform &trans)
array::Flatten(cellView *to, dbTransform &trans)They will flatten all shapes (not instances – but maybe there should be an extra flag to allow flattening instances hierarchically, or by some level?) and will transform them by 'trans' multiplied by the instance transformation itself. So normally you'd give the function a default transform i.e. an identity matrix.
This should make it into the next release 4.3.28…
-
AuthorPosts