⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ood_shapes.il

📁 ALLEGRO SKILL SAMPLE CODE
💻 IL
字号:

;  DISCLAIMER:
;       The user of this command assumes all responsibility and does not
;       hold Cadence Design Systems nor the author of this code for any
;       unwarranted results or problems due to the use of this code.
;
;       This code is unsupported!

; Date Created: March 1, 2004
; Tested with Allegro Release:  15.1, 15.2, 15.5
; Name of this file: ood_shapes.il
; Written by Ron Guthrie (rong@cadence.com)
;
; Updated:
;	Feb. 07, 2005
;  Included code to report shapes that may be unfilled and are not marked as out of date.
;
;	August 12, 2005
;	Modified to handle shapes not on a net.
;
; Usage:
; To use this file load it from the APD/Allegro command line and then issue the command
;  ood shape
;
/*
Notes:

This code is intended as an example of how to report on shapes that are marked as being
out of date based on the fillOOD attribute attached to the shape.
No attempts have been made for error checking so this code may fail to run on some designs
if an error condition occurs.
This utility will also report what it considers to be suspect shapes. These are shapes that have a
fillOOD attribute of nil as well as no voids and the shapeAuto attribute equal to nil
*/

procedure( RBG_out_of_date()
let( (ood_shape l_all_shapes shape ood_shapexy ood_shape_cnt)
	axlSetFindFilter(?enabled '(noall shapes invisible) ?onButtons '(noall shapes))
	axlClearSelSet()
	axlAddSelectAll()
	ood_shape=list()
	ood_shape_cnt=0
	suspect_shape=list()
	suspect_shape_cnt=0
	l_all_shapes=axlGetSelSet()
	axlClearSelSet()
	ood_log=axlDMOpenLog("ood_shape")
	fprintf(ood_log "\tOut of date Shape log.\n\n")
	foreach(shape l_all_shapes
		if(car(parseString(shape->layer "/"))=="BOUNDARY" then
			if(shape->fillOOD then
				axlHighlightObject(shape)
				ood_shape_cnt++
				ood_shapexy=shape->bBox
				ood_shapenet=shape->net->name
				unless(ood_shapenet
					ood_shapenet="Not on a net"
				);unless ood_shapenet
				if(ood_shapenet=="" then
					ood_shapenet="Dummy net"
				);if ood_shapenet
				ood_shapelayer=shape->layer
				fprintf(ood_log "Layer=%s\tNet: %s Bounding box: %L\n" ood_shapelayer ood_shapenet ood_shapexy)
				ood_shape=cons(shape ood_shape)
			else
				unless(shape->shapeAuto
					unless(shape->voids
						;suspect shape is not out of date but
						;has no voids and shapeAuto attribute is nil
						suspect_shape_cnt++
						suspect_shapexy=shape->bBox
						suspect_shapenet=shape->net->name
						suspect_shapelayer=shape->layer
						fprintf(ood_log "Possible shape problem on net %s at %L\n" suspect_shapenet suspect_shapexy)
						fprintf(ood_log "\tClass/subclass: %s\n\n" suspect_shapelayer)
					);end unless voids
				);end unless shapeAuto
			);endif shape->fillOOD
		);endif car(parseString
	);foreach shape
	unless(ood_shape_cnt>0
		fprintf(ood_log "No out of date shapes.\n")
	);end unless
	fprintf(ood_log "\n\tEnd of report.\n")
	axlDMClose(ood_log)
	if(ood_shape_cnt==1 then
		axlWindowBoxSet(ood_shapexy)
		axlVisibleLayer(ood_shapelayer t)
	);endif
	if(ood_shape_cnt==0&&suspect_shape_cnt==1 then
		axlWindowBoxSet(suspect_shapexy)
		axlVisibleLayer(suspect_shapelayer t)
	);endif

	axlUIViewFileCreate("ood_shape.log" "Out of Date Shapes Log" nil)
);endlet
);endproc


axlCmdRegister("ood shape" 'RBG_out_of_date ?cmdType "interactive")

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -