xPDK techfile to OptoDesigner techfile

The XML can be used with xsltproc to quickly convert the data to other formats.

An example is writing a OptoDesigner "02" file or self-contained example. Download: xPDK_toOptoDesigner02.xsl
and run:
xsltproc --xinclude -stringparam standalone true -stringparam example drc00 xPDK_toOptoDesigner02.xsl xPDK_Layout.xml | tee /tmp/xpdk.spt 
or
xmlstarlet tr xPDK_toOptoDesigner02.xsl -s standalone=true -s example=drdc00 xPDK_Layout.xml | tee /tmp/xpdk.spt
This XSLT is fairly complex as it contains XSLT variables, loops, conditionals and so on. The command line arguments -stringparam are used inside to trigger some modified behavior.
You can use it as starting point for your own processor also.

Note

This XSLT file is in progress.

Basic documentation on OptoDesigner

The examples need the "xmlpdk = <path to>/PDKLIB.xml" in the PDAConfig.ini and should work in OptoDesigner 2021.09 and later.

Start versus update

The generated file can be created as stand-alone file and can then run as "main" tab in the GUI. When using the "update" button (or ctrl-u), the design will appear, but DRC and derived layer operations are not executed.
You can use the start-button (or alt-a) to do more processing including output file generation. This often takes much longer then the "update" mode and is typically needed in the later stages of the design. With "start" all derived layers are generated.

DRC

In start-mode the DRC is normally not enabled as this is more CPU intensive then just derived layers. You can enable "DRC on start" by checking the "PDK menu / Use DRC with 'Start'". Then each time you press "start", the DRC will also run.
Another option is to use the "PDK menu / Design Rule Check" item (shift-control-d) or the red-checkmark at the end of the toolbar. Then the DRC is just run once on the design.

Logical/design view versus GDS view

The design is normally shown using the "logical/design" view, which removes a lot of clutter in case many map/grid's are used or other complex operations exist. In the logical view, you only see "xsection/mcs" data, which is the design intent.
In some cases it is handy to display the design in "GDS mode" and look at all detailed GDS layers. To enable this mode you can check the "Topview menu / Use GDS view". Both start & update mode now show the GDS layers and not the design intent. Un-check the item to switch back to normal view.

Keep zoom

The die-template uses a 2*2 mm design - which is a bit small compared to most chip sizes that are available via MPW or dedicated runs. However many of the examples just have data in a small area.
To keep the viewer show the same part after each start/update, you can check the "Viewer menu / Keep Zoom" or the pop-up menu in the viewer, "Keep Zoom" item.

Die template

Many of the stand-alone examples use the:

class myDie() extends DieBBxt(...) {
  ...
  ...
  }
...
// ------------------------------------------
// DIE instance

class myDesignArea() extends myDie() {
  ...
  }
myDesignArea() chip;
setup. This setup is using the Die/Package template structure, which supports the "Design for Test and Packaging" methodology. For the OptoDesigner 02-tech-file, this part is not needed. The "class myDie" is normally implemented in the 04-file as often there is complex content on it, for example using the SSCs or FCs in some areas with optical routing attached to it.
The DemoPDK does not do so, it has a very simple die-template.