Cloud native EDA tools & pre-optimized hardware platforms
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. 草榴社区 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 草榴社区. 2020.*/
//Clear Info Window for each script execution.
dsp::clearInfoWin();
mask::clearFiles();
int msk_Electrode=mask::AddLayer("elec",1,RGB(255,0,0),true,false);
mask::CScreate("basemask",filter,RGB(127,255,127),true,false);
mask::AddGrid(msk_Electrode,0.1);
mask::CSselect("basemask");
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);
mask::dxf("file.dxf");
This results in the following layout being created in OptoDesigner:
When opening the generated DXF file in SolidWorks, it shows the following design:
The DXF files generated by OptoDesigner have been tested to work in SOLIDWORKS and LibreCAD. Since DXF files are text-based, their size is larger than binary formats such as GDS.
While files in the GDS format easily exceed sizes of hundreds of megabytes, and readers such as kLayout easily handle files of this size, testing has showed that LibreCAD and SOLIDWORKS have significant difficulty reading files with sizes greater than tens of megabytes.
Want to know more?
You can download the OptoDesigner files on our Customer Support Portal (account required). If you have any comments or questions, contact us at photonics_support@synopsys.com
If you’d like to read other useful tips visit our Application Notes gallery and our Product Information page.