Gilda suggested reposting this here for broader discussion. After talking a bit more with Steve, it looks like this is a feature which ought to be in ImmutablePortInst, but simply hasn't been implemented yet. Moreover, it should be possible to reconstruct the necessary data without changing the on-disk format. I will start looking into how that can be done.
- a ______________________________________________________________________________ From: Adam Megacz <[email protected]> Subject: To: [email protected] Date: Mon, 6 Jul 2009 19:24:01 -0700 Hi Dmitry! I don't think we've met. I'm Adam; I'm a student in the VLSI group at Sun Labs. We just finished taping out a test chip (Marina), and now I've got time to work on Electric a bit. In order to familiarize myself with the code, I'm implementing a few simple features we thought of while working on Marina. One thing that caused us some problems was the fact that many of our tools insist that the PortCharacteristics on Exports be set correctly (mostly input/output/bidirectional). Because design and testing are done [mostly] by different people it helps if we can make any mistakes as visually obvious as possible, to minimize the number of "round trips" between QA and design. If it's possible, I would like to modify the visual rendering of the "off page connection" primitive in the schematic technology so that it is drawn with one pointy end and a small mark on the flat side if its PortCharacteristic is OUTPUT, on the pointy side if its PortCharacteristic is INPUT, and with two pointy ends when its PortCharacteristic is BIDIRECTIONAL. Anyways, this was all sort of a long-winded way of explaining my situation: I've implemented all the code necessary to do this, except for one problem. I added a field to Technology.NodeLayer so a NodeLayer can be designated "invisible unless PortCharacteristic=X", and added additional layers with this designation to Schematics.offpageNode. Then I modified AbstractShapeBuilder.genShapeOfNode() so that it would refrain from producing Poly(gons) for certain layers. The problem arose when I tried to add the logic to determine which layers it should refrain from producing Polys for. Unfortunately, genShapeOfNode() is passed an ImmutableNodeInst. From that ImmutableNodeInst I can get an ImmutablePortInst, but unfortunately the ImmutablePortInst doesn't let me get to the ImmutableExport objects -- unlike PortInst, which lets me call getExports(). Also, ImmutableExport doesn't include a field of type PortCharacteristic (although I didn't have much trouble adding one). Can you advise me on how to proceed here? Is there a way to get the ImmutableExports that go with an ImmutablePortInst? I tried modifying the ImmutablePortInst() constructor to take an ImmutableExport[] as an argument (much like ImmutableNodeInst takes an ImmutablePortInst[] as an argument), but then it seems that ImmutablePortInst.read() would have to be changed, including the serialization format -- which is probably not a wise idea. Also, Steve mentioned that my plan might run into trouble with the VectorCache. Is the cache cleared when a node's port's export's PortCharacteristic is changed? If it is not, would clearing the cache under these circumstances cause problems? Hope your vacation was enjoyable, - a _______________________________________________ Bug-gnu-electric mailing list [email protected] http://lists.gnu.org/mailman/listinfo/bug-gnu-electric
