I have some trouble understanding the concepts of inheritance in the PCell Designer.
In my example, I have a base cell and a test cell. Now I want to inherit parameters from the base cell in all my other cells.
So what I do now in the test cell is to set in Device -> Edit device type -> Inherits to base
Now I have in the test cell in different cellviews (schematic, symbol, layout). Each a PCell. I want to inherit from one view but this does not seem to be possible. It seems that the schematic cellview always needs a schematic cellview to inherit from and so on.
Is it possible to let the cell test and its schematic, symbol and layout cellview inherit from the same cell with a single cellview?
I don't believe this is possible currently. I'll check, but perhaps you could outline what exactly you want to inherit from the base cell into multiple different view types? Just trying to understand what common information (methods etc) you might share across different view types.
My main use case would be sharing a common data structure or method for instance creation inside my layout and schematic Pcell, to ensure consistency.
Additionally, it makes things easier if I have to change some parameter of instances inside my Pcell.
I would only have to change one "file" rather than keeping two views consistent manually.
There's a way of doing this, as it turns out. Normally when you specify where you inherit from on the Edit Device Type (Edit Class) form, you specify just the cell name. However, you can also specify the class name which would allow you to do exactly what you're wanting.
So find out the class name from the parent pcell by using File->Export to File and saving the SKILL++ code. At the top of this file you'll see something like:
(defclass pcdUser_NmosDemo24_topclass (pcdxPCell) ((libName @initform "NmosDemo24") (cellName @initform "topclass") (viewName @initform "layout") (cellViewType @initform "maskLayout") (_interactive @initform nil)))
The class name I've highlighted in red above. It will be different depending on the view type of the top class.
Then in the pcell you're creating which inherits from this (in my case a schematic view where the top was a layout), enter that class name instead of the cell name:
I already tried it like this. And worked with this solution in the beginning.
The problem with this solution is that the explicit class name will not be changed in the Pcell deploy step resulting in a not working deployed library.
In your example, if I want to deploy NmosDemo24 into another library lets say Nmos24.
This is not the ultimate solution - it's a workaround for now until we make this cleaner, and I recognise that it has limitations as you say.
I filed a change request, CCR 2100834 to provide a way to specify both the cell and view you're inheriting from.
Thank you a lot.