VCSEL, known as Vertical Cavity Surface Emitting Laser, is a semiconductor laser structure that forms an optically resonant cavity in the perpendicular direction to the semiconductor epitaxial wafer and emits a laser beam that is perpendicular to the substrate surface. Since Apple's iPhone X adopted VCSEL as 3D sensing technology and used in Proximity Sensor and Face ID module in 2017, it completely set off the VCSEL craze. Researchers have since found that VCSEL will have a large market for applications such as LiDAR and gas detection, which is expected to expand more than 10 times after 2023. Meanwhile, the use of VCSEL lasers as short wavelength lasers such as 980 nm will also surge with the construction of optical communication data centers. As can be seen from the table below, VCSELs are superior to LEDs and EELs in various aspects such as accuracy, miniaturization, low power consumption, and reliability.
Not only that, in terms of integration, since VCSELs are emitting laser light from the face of a vertical substrate, it is easy to achieve a large-scale light-emitting array through a planar process, and VCSELs can easily achieve a two-dimensional array, which is better than the one-dimensional array of EELs; in terms of process, the VCSEL process is compatible with the LED process, which is conducive to large-scale manufacturing and cost reduction. As shown in the figure below, the VCSEL array method is often changed according to different design requirements, and designers need to model the VCSEL at the theoretical level for simulation testing and optimization.
After the designer has designed the VCSEL parameters through simulation, he will face the "problem" of establishing the VCSEL large array process layout. In the face of such "problems", the domestic EDA software PhotoCAD is "a good hand"!
Nowadays, with the booming development of VCSEL technology, VCSEL devices have different shapes and structures, so we will focus on how to "play" with the diversified array layout through PhotoCAD. We will show you the "flexibility" and "power" of PhotoCAD in six cases.
As shown in the figure below, we set several key parameters such as radius_cicle, width_ring, distance, radius_ring, etc., and then create a .py file that generates a single cell using PhotoCAD's "easy to use, modular" operation for to be called.
First, by calling the Elliptical Ring function in the fnpcell module, specify the parameters of the circle OD and ID geometry, and place the graphic structure in the predefined M2_DRW layer (different layers can be specified to meet different process layer conditions).
For the surrounding array of green circular structures, we can use the powerful and flexible Python 3 syntax to achieve this. Here we use the simplest for loop, call the instantiated CIRCLE, and control the angle of the graph with the .rotated() function to easily create the entire VCSEL cell.
For a standardized Rectangular array, we only need to confirm four key parameters, namely, the number of rows, the number of columns, the cell column spacing period_x and the cell row spacing period_y; and then add VCSEL cells with different center positions to the "device container" instSet through a double for loop.
Rectangular Randomly Generated Array-1
Observe the above layout, there is a fixed position offset between the odd and even rows as a whole. We determine the number of rows in the current cycle is odd or even based on the double for loop by n = i % 2, and then set the conditions according to the if-else statement, set the starting position of the first column of cells according to the odd and even rows (to produce the offset effect). The layout between cells and units through the appropriate period and distance and other parameters, so that some green circles between the cells overlap, so as to achieve the specific needs of the array placement.
Rectangular Randomly Generated Array-2
Unlike conventional arrays, the VCSEL cells appear randomly at each grid location, like a black and white "two-dimensional code" structure, and the specific implementation is of course a "binarization" problem.
We first use the first line of code to generate a two-dimensional array, the elements of which are randomly generated "0 or 1", and then add an if statement to the double for loop traversal to discern whether the value of the element at the grid point is "1", only when the value is "1" will add a cell structure to the instSet, so that the effect of random generation is achieved.
Rectangular Random Floating Array
As shown above, the center of each cell has more random floating characteristics compared to the conventional array. For the implementation of this effect, it is only necessary to add a random floating parameter value to the .translated() function that controls the position parameter.
Rectangular Random Floating and Randomly Generated Arrays（*Advanced）
As in the previous section, the random.randint function is used to generate random 0s and 1s to form a grid layout with rows rows and columns, and then a double for loop is used to generate a fixed spacing array of cells. When traversing the grid, a device is added when the number in the grid is 1, and not added when it is 0. Next, a random offset is generated for the x and y coordinates of each device, and the fluctuation range is limited by (random.random() - 0.5) * 5, resulting in a randomly generated and randomly floating layout.
All in all, Photocard is a powerful layout tool that designers can use to solve all their problems with a variety of "martial arts" (third-party libraries) based on the Python 3 language. can be solved! Don't believe me? Try it?