fixmaster_uniq.il #1

  • //
  • guest/
  • robert_yu/
  • perforce/
  • cdsp4/
  • release/
  • 2.2/
  • Skill/
  • Toolbox/
  • fixmaster_uniq.il
  • View
  • Commits
  • Open Download .zip Download (3 KB)
procedure(fixm_uniq(lib)				  ;_Sep  7 01 sikand 1146
  prog((dbad xim libid x y yim legallibs ydbad copysrc status utable ulibid
       cvid matchname obj)

    libid=ddGetObj(lib)
    ;; get all the headers
    uniqlib= "locked"

    when( lib == uniqlib
       println("Duh!")
       return(t)
    )
    

    ;; check instances for references that should come from the
    ;; unique reference library
    ;; create a table of cell names in the uniq library
    utable = makeTable("uniq" nil)
    deltable = makeTable("deltable" nil)

    ulibid = ddGetObj(uniqlib)
    
    foreach( libcell ulibid~>cells
        foreach(viewcell libcell~>views
	   cvid=dbOpenCellView(uniqlib libcell~>name viewcell~>name nil "r" nil)
	   utable[strcat(lib " " libcell~>name " " viewcell~>name)] = cvid
	)
    ) ; ** foreach libcell **

    
    foreach( libcell libid~>cells
       foreach(viewcell libcell~>views
	  printf("Check %s %s\n" libcell~>name viewcell~>name)
	  x=dbOpenCellView(lib libcell~>name viewcell~>name nil "r" nil)
	  xim=x~>instHeaders
	  ddd = xim
	  dbad=setof(xx xim utable[strcat(xx~>libName " " xx~>cellName " " xx~>viewName)])
	  when(dbad
	     printf("Modify %s %s\n" libcell~>name viewcell~>name)
	     y=dbOpenCellView(lib libcell~>name viewcell~>name nil "a" nil)
	     yim=y~>instHeaders
	     ydbad=setof(yy yim utable[strcat(yy~>libName " " yy~>cellName " " yy~>viewName)])
	     foreach( thing ydbad
		if( viewcell~>name == "schematic" then
		   foreach( inst thing~>instances
		      println("Unsupported for no real reason")
		   ;;schReplaceProperty( list(inst) "libName" to_lib )
		   )		   
		else
		foreach( inst thing~>instances
		   printf("Fix %s [%s->%s] %s %s\n" inst~>name thing~>libName uniqlib thing~>cellName thing~>viewName)
		   leReplaceAnyInstMaster(inst uniqlib thing~>cellName thing~>viewName)
		   ;; now delete the cell name so it exists only
		   ;; in the uniq
		   ;; but put it in a table for post-proc so
		   ;; you don't damage the DB
		   obj = ddGetObj(lib thing~>cellName thing~>viewName "*")
		   unless( obj 
		      warn("Obj trap!")
		   )
		   deltable[obj] = t
		) ; ** foreach inst **
		) ; ** if viewcell **
	     ) ; ** foreach thing **
	     dbSave(y)
	     dbClose(y)
	  ) ; ** when dbad **
       ) ; ** foreach viewcell **
    ) ; ** foreach libcell **

    xxx = deltable
    delfile = outfile(sprintf(nil "%s.deleteme" lib))
    unless( delfile
       error("Couldn't write\n")
    )
    
    printf("Begin delete loop\n")
    foreach( entry deltable~>?
       println(entry~>writePath)
       ;;fprintf(delfile entry~>writePath)
       ;;ddDeleteObj(entry)
    )
    close(delfile)
       

    
  ) ; ** let **
  t
) ; ** procedure fixm **
# Change User Description Committed
#1 4529 robert_yu p4 integrate from public/perforce/cdsp4/release/2.2/...
//guest/perforce_software/cdsp4/release/2.2/Skill/Toolbox/fixmaster_uniq.il
#1 1675 Shiv Sikand New 2.2 tree