L-Edit C语言 代码 绘制 任意函数形状 任意多边形

参考代码下载:
https://download.csdn.net/download/x1131230123/11830648

首先确认好模型里有这些层,可以打开已有的模型直接用,或者使用setup>layers自己添加层。
在这里插入图片描述
新建一个cell
在这里插入图片描述
在这里插入图片描述
处于当前的cell
在这里插入图片描述
选择tools>macro,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
回到cell,按键盘Home,切到主显示。
在这里插入图片描述

代码:

/*
 * *************************************************************************
 * * FILE: text.c
 * * DESCRIPTION: get data from text
 * *************************************************************************
 */

module textGet
{
	
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "ldata.h"     /* Main UPI header. */

#define PI		3.14159265358979323846
#define SIZE		1000
#define NUM_WG_POINTS	5
#define LEN_TEXT_WID	5
#define LEN_TEXT_HEI	40
#define POS_TEXT_X_STA	-1000
#define POS_TEXT_Y_CEN	200


#define base_width	0.46
#define gap	0.15
#define radius	8.5



   //circle   1
  	void drawC_1( LCell Cell, LLayer Layer,  double offsetX, double offsetY )
	{
	   int i=0;
		int	cnt	= 1002;
		float x[1002],y[1002];
		float rad_w=8.5+(base_width/2.0);//外圆环
		float rad_n=8.5-(base_width/2.0);//内圆环
		LPoint	*points;
		
		//装点
		//wai
		for ( i = 0; i < 501 ; i++ )
		{
			x[i]=rad_w/500.0*i;
			y[i]=sqrt(rad_w*rad_w-x[i]*x[i]);  
		}
		//nei
		for ( i = 0; i < 501 ; i++ )
		{
			x[501+i]=rad_n-rad_n/500.0*i;
			y[501+i]=sqrt(rad_n*rad_n-x[501+i]*x[501+i]);  
		}


		points = (LPoint *) malloc( (cnt) * sizeof(LPoint) );//get arm
		for ( i = 0; i < cnt ; i++ )
		{
			points[i] = LPoint_Set( x[i] * SIZE + offsetX, y[i] * SIZE + offsetY );
		}
		LPolygon_New( Cell, Layer, points, cnt  );
		free( points );
		return;
	}
	
	

	void  drawRowland()
	{
		/*
		 * 绘图函数的入参必须指定cell、文件和图层,需先获取
		 * 获取当前cell和文件
		 */
		LCell	Cell_Now	= LCell_GetVisible();
		LFile	File_Now	= LCell_GetFile( Cell_Now );

		/* 获取当前图层 */
		LLayer Layer_Poly = LLayer_Find( File_Now, "Poly" );
		if ( !Layer_Poly )
		{
			LDialog_AlertBox( "There is no Poly layer.\nMake sure Poly is in the layer map!" );
			return;
		}

		LLayer Layer_Active = LLayer_Find( File_Now, "Active" );
		if ( !Layer_Active )
		{
			LDialog_AlertBox( "There is no Active layer.\nMake sure Poly is in the layer map!" );
			return;
		}

		LLayer Layer_Metal1 = LLayer_Find( File_Now, "Metal1" );
		if ( !Layer_Metal1 )
		{
			LDialog_AlertBox( "There is no N Select layer.\nMake sure Metal1 is in the layer map!" );
			return;
		}

		double	offsetX = 0;
		double	offsetY = 0;
		

		//circle
		drawC_1( Cell_Now, Layer_Active, offsetX, offsetY );

	


		return;
	}


	void  drawRowland_main( void )
	{
		LMacro_BindToHotKey( KEY_F1, "drawRowland", "drawRowland" );
	}
} /* end of module textGet */

drawRowland_main();


总结:
1、程序大体过程是获取当前的cell,查看layers是否有必要的层,然后调用绘制函数。
2、绘制函数是使用了很多点包围自己想要的二维图形,调用LPolygon_New方法会按照给点顺序连接这些点形成一个图形。
3、所以自己需要什么图形的时候,给足够多的点包围这个图形,然后使用LPolygon_New方法绘制即可。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
L-edit器件设计是一种用于集成电路设计的软件工具。它是一个基于图形用户界面的、用于创建和修改IC芯片布局的工具。L-edit提供了丰富的设计功能和各种设计规则检查功能,帮助设计者在物理层面上实现他们的设计。 L-edit器件设计主要包括以下几个步骤: 首先,设计者使用L-edit工具创建IC芯片的基本布局。在这个布局中,设计者可以放置和连接各种器件,如晶体管、电容器和电阻器。他们可以调整和优化布局,以满足设计要求。 接下来,设计者可以执行设计规则检查,以确保布局符合制造要求和设计规范。L-edit提供了内置的规则检查器,可以检查布局中各个器件之间的间距、连线宽度和功率网的连接等。 一旦布局通过了规则检查,设计者可以使用L-edit进行电路模拟和验证。他们可以添加各种信号源和测量仪器,以评估电路的性能和行为。这些模拟结果可以帮助设计者进行必要的调整和优化。 最后,设计者可以通过L-edit生成所需的制造文件,如物理图形文件和物理设计规则检查文件。这些文件可以用于制造商进行印刷线路板(PCB)制造和集成电路生产。 总而言之,L-edit器件设计是一种重要的工具,为设计者提供了创建和修改IC芯片布局的能力。它帮助设计者确保布局符合制造要求和设计规范,并支持电路模拟和验证。利用L-edit进行器件设计可以提高设计效率和减少错误,促进集成电路的研发和制造。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值