S. Badel
Guest
|
Posted:
Tue Oct 12, 2004 12:06 pm Post subject:
Re: more control of display.drf |
|
|
1. What if you do it in the libInit.il of the tech. library ?
If you don't mind adding or modifying a PDK file...
It would be loaded only once, of course, not sure this matches your needs.
I saw also there is tcRegPreLoadTrigger() which allows a trigger to
be called each time a technology file is loaded.
2. you can do (didn't try it)
foreach( packet drGetPacketList("display")
drDeletePacket("display" packet)
) ; foreach
or even enclose it in foreach( display drGetDisplayNameList() ... )
to process all displays.
I think however that all PDKs should use different packet names in order
to be able to load several at the same time without conflicts.
3. try drLoadDrf( file nil )
stéphane
Erik Wanta wrote:
| Quote: | We want to be able to support the use of multiple PDKs at one time. I
want to be able to load the appropriate display.drf for the layout
that I am currently opening up. I created a user trigger to do a
drLoadDrf() on the display.drf for the technology that the library is
attached to.
Problems:
1. I get a pop up message when I open that layout asking if I want to
see a list of all the undefined layers. So, it seems that drLoadDrf
is taking place after it checks to see if packets are defined for all
the layers. Any ideas how I can disable this warning or load the
display.drf sooner?
2. How do I clear all the packets ... from virtual memory? I want to
start from a clean slate before loading the display.drf from a
different technology.
3. If I use drLoadDrf it asks If I want to save the display.drf when
I exit icfb. Maybe if I find a way to purge packets in step 2 it
won't ask.
4. Can't have 2 layouts for 2 different technologies open in the same
session.
procedure(dt(argList)
prog((techName libPath)
when(techName=techGetTechLibName(argList->libId)
/*
foreach(packet drGetPacketList(drGetDisplay("display"))
drDeletePacket(drGetDisplay("display") packet)
) ; foreach
*/
libPath=ddGetObjWritePath(ddGetObj(techName))
when((isFile(strcat(libPath "/display.drf")) &&
!isFile("display.drf"))
drLoadDrf(strcat(libPath "/display.drf"))
) ; when
) ; when
return(t)
) ; prog
) ; procedure
when(member('dt deGetAppInfo("maskLayout")->userAppTrigList)
;if registered, unregister
_deUnRegUserTrigger("maskLayout" 'dt nil nil)
) ; when
;register the display.drf load user trigger
deRegUserTriggers("maskLayout" 'dt nil nil)
---
Erik |
|
|