许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  什么是Cadence的CDF?用途详解 | Forum for …

什么是Cadence的CDF?用途详解 | Forum for …

阅读数 17
点赞 0
article_banner

参考:CDF cadence

.il, .ile, .cxt都是skill代码,其中.il是源码,可以用文本编辑器查看,.ile是加密过的,.cxt是编译过的,后两者用文本编辑器看不了。

在设置CDF时,经常用到w(Total Width),wf(Finger Width),simW(simulation Width)三项,一般设置w的值为A,wf为B,simW为iPar(“wf”),若nf(Fingers Number)=1,A=B。在调用symbol时,改变nf,w的值就会自动改变为nf*B。

   请问各位达人,这是怎么实现的?在哪儿设计的?

   我自己做的CDF一直没法实现…

这个是CDF的callback 函数起作用的。CDF 的callback函数如果不是单独装载进来的话,就是跟着库一起装载进来的,比如库子目录下有个文件libInit. il  , 很多代工厂的CDF函数就是在那里定义的,不过有可能是加密的方式,打印不出来罢了。

目前可以成功加载libInit.il,但是CDF.cxt也就是CDF 的callback函数加载有问题。


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;  libInit.il
;;
;;  PDK Automation System (PAS)
;;  Cadence Design Systems
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

let( ( ddObj (success t) (libName "1830bd15ba") )

  printf("Loading %s/libInit.il ...\n" libName)

  if( ddGetObj(libName) then
    
     ;; load custom library initialization file
     when( ddObj = ddGetObj(libName nil nil "libInitCustomEnter.il")
        printf("\tLoading %s/%s ... " libName ddObj~>name)
        if( errset(load(ddGetObjReadPath(ddObj))) then
           printf("done!\n")
        else
           success = nil
           printf("failed!\n")
        )
     ) ; ** when ddObj **


     ;; load loadCxt.ile
     unless( fboundp('PasLoadLibContext)
        when( ddObj = ddGetObj(libName nil nil "loadCxt.ile")
           printf("\tLoading %s/%s ... " libName ddObj~>name)
           if( errset(load(ddGetObjReadPath(ddObj))) then
              printf("done!\n")
           else
              success = nil
              printf("failed!\n")
           ) ; ** if errset **
        ) ; ** when ddObj **
     ) ; ** unless fboundp **
     
     ;; load library context files
     if(  fboundp('PasLoadLibContext) then
        unless( PasLoadLibContext(libName libName)
           success = nil
        )
        unless( PasLoadLibContext(libName "pdkUtils")
           success = nil
        )
     else
        success = nil
     ) ; ** if fboundp **
     
     ;; load library .cdsenv file
     when( ddObj = ddGetObj(libName nil nil ".cdsenv")
        printf("\tLoading %s/%s ... " libName ddObj~>name)
        if( errset(PasEnvLoadFile(ddGetObjReadPath(ddObj))) then
           printf("done!\n")
        else
           success = nil
           printf("failed!\n")
        ) 
     ) ; ** when ddObj **
     
     ;; load library display resource file
     when(  fboundp(`drLoadDrf)     
        when( ddObj = ddGetObj(libName nil nil "display.drf")
           printf("\tLoading %s/%s ... " libName ddObj~>name)
           if( errset(drLoadDrf(ddGetObjReadPath(ddObj) nil)) then
              printf("done!\n")
           else
              success = nil
              printf("failed!\n")
           )
        ) ; ** when ddObj **
     ) ; ** when fboundp **
     
     ;; set the number of digits to be displayed to 6
     when( fboundp('aelPushSignifDigits)
        aelPushSignifDigits(6)
     )

     ;; load circuit prospector configuration
     when( ddObj = ddGetObj(libName nil nil "libInitCktPro.il")
        printf("\tLoading %s/%s ... " libName ddObj~>name)
        if( errset(load(ddGetObjReadPath(ddObj))) then
           printf("done!\n")
        else
           success = nil
           printf("failed!\n")
        )
     ) ; ** when ddObj **
     
     ;; load custom library initialization file (exit)
     when( ddObj = ddGetObj(libName nil nil "libInitCustomExit.il")
        printf("\tLoading %s/%s ... " libName ddObj~>name)
        if( errset(load(ddGetObjReadPath(ddObj))) then
           printf("done!\n")
        else
           success = nil
           printf("failed!\n")
        )
     ) ; ** when ddObj **
  else
     success = nil
  ) ; ** if ddGetObj **

  if( success then
     printf("Loaded %s/libInit.il successfully!\n" libName)
  else
     printf("Failed to load %s/libInit.il successfully!" libName)
  )
  
  t
  
) ; ** let **


cadence license server ip
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空