Tools Used: OptoDesigner
Designing a PIC able to be packaged, assembled and integrated with other PICs has gained a lot of attention since it translates into a higher yield, which in turn, is the way to achieve volume production. Therefore, considering a “PIC design flow for manufacture” process is of great importance while designing a PIC. Synopsys PIC Design Suite supports PIC design flow for manufacturing at its core and in this application note we will talk about the new OptoDesigner CAD export function. This new feature enables OptoDesigner to export layouts to the Drawing eXchange Format (DXF). DXF is supported by a variety of Computer Aided Design (CAD) software suites, such as AutoDesk’s AutoCAD, Dassault Systèmes’ SOLIDWORKS, and the freeware LibreCAD. These CAD environments allows the user to test whether their design obeys packaging or assembly requirements.
Key characteristics that make this function very robust for, but not limited to, packaging and assembly purposes are:
1. The implementation of the DXF functionality supports hierarchical structures, which are exported as cells to GDS and will be entered into the BLOCKS table in the DXF file with the same relations.
2. Layers are also exported and can be retrieved from the LAYERS table with the name format GDSLAYER_DATATYPE.
3. Interface ports are also exported into the DXF file.
Below is a simple example of an OptoDesigner script which demonstrates saving a layout to a DXF file. The script generates an arbitrary layout of a 4 output MMI component connected to a directional coupler.
/* Copyright Synopsys, Inc. 2020.*/
//Clear Info Window for each script execution.
var bend1 = ml::BendSine( cin->[0,0] : wfix(1), 100, 50);
var spl1 = ml::MMI1xN( last :
/* Input width channel [um] = */ 1,
/* Output width channel [um] = */ 1,
/* Width channel [um] = */ 100,
/* Length channel [um] = */ 200,
/* Length access [um] = */ 10,
/* Gap [um] = */ 5,
/* Outputs = */ 4);
var bend2 = ml::BendCosine( last : wfix(1), 100, 50);
var dc1 = ml::DirectionalCoupler( last :
/* Width lower channel [um] = */ 1,
/* Width upper channel [um] = */ 1,
/* Separation between input branches [um] = */ 50,
/* Separation between output branches [um] = */ 100,
/* Bend radius [um] = */ 100,
/* Length DC [um] = */ 500,
/* Gap [um] = */ 5);
This results in the following layout being created in OptoDesigner: