jsding的个人空间 https://blog.eetop.cn/1768551 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

电路导出tree结构

已有 14 次阅读| 2024-9-13 13:39 |系统分类:芯片设计

;; Initial the form when loading this file

when( boundp( 'skGenSchTreeForm ) && hiIsFormDisplayed( skGenSchTreeForm )

hiFormCancel( skGenSchTreeForm )

) ; when

skGenSchTreeForm = 'unbound



procedure( skGenSchTree()

unless( boundp( 'skGenSchTreeForm )

skGenSchTreeForm = skGenSchTreeSetupGui()

) ; unless

putpropq( skGenSchTreeForm hiGetCurrentWindow() treeWindow )

hiDisplayForm( skGenSchTreeForm )

) ; end of procedure *skGenSchTree*



procedure( skGenSchTreeSetupGui()

let( ( topOrCurrentField viewListField stopListField displayPinsField )

topOrCurrentField = hiCreateRadioField(

?name 'topOrCurrent

?prompt "From Cell"

?choices '( "Current" "Top" )

?value "Current"

)

viewListField = hiCreateStringField(

?name 'viewList

?prompt "View List"

?value "schematic"

)

stopListField = hiCreateStringField(

?name 'stopList

?prompt "Stop List"

?value "symbol"

)

displayPinsField = hiCreateBooleanButton(

?name 'displayPins

?buttonText "Display Pins"

?value nil

)

hiCreateAppForm(

?name 'skGenSchTreeForm

?formTitle "Generate Schematic Tree"

?callback "skGenSchTreeCB( hiGetCurrentForm() )"

?fields list(

list( topOrCurrentField 15:15 300:30 80 )

list( viewListField 15:55 300:30 80 )

list( stopListField 15:95 300:30 80 )

list( displayPinsField 15:135 300:30 80 )

)

?buttonlayout 'OKCancelApply

?unmapAfterCB nil

)

)) ; end of procedure *skGenSchTreeSetupGui*



procedure( skCompareCellName( ih1 ih2 )

let( ( result )

forall( p '( libName cellName viewName )

progn(

result = strcmp( dbGet( ih1 p ) dbGet( ih2 p ) )

zerop( result )

) ; progn

) ; forall

lessp( result 0 )

)) ; end of procedure *skCompareCellName*



procedure( skGenSchTreeForCv(

@key

( cellView geGetEditCellView() )

( viewList "schematic" )

( stopList "symbol" )

( port poport )

( displayPins nil )

( indent 0 )

)

let( ( stopAtList instHeaders insts switchedView )

stopAtList  = parseString( stopList )

instHeaders = cellView~>instHeaders

unless( displayPins

instHeaders = setof( instHeader instHeaders

car( instHeader~>instances )~>purpose != "pin" )

) ; unless

foreach( instHeader sort( instHeaders 'skCompareCellName )

insts = instHeader~>instances

fprintf( port sprintf( nil "%%%ds %%s %%s %%s (%%d)\n" indent )

" "

instHeader~>libName

instHeader~>cellName

instHeader~>viewName

length( insts )

)

when( switchedView = dbGetAnyInstSwitchMaster( car( insts ) viewList )

unless( member( switchedView~>viewName stopAtList )

skGenSchTreeForCv(

?cellView switchedView

?viewList viewList

?stopList stopList

?port port

?displayPins displayPins

?indent indent + 2

) ; skGenSchTreeForCv

) ; unless

dbClose( switchedView )

) ; when

) ; foreach

t

)) ; end of procedure *skGenSchTreeForCv*



procedure( skGenSchTreeCB( theForm )

let( ( from cvId op fileName )

from = lowerCase( theForm->topOrCurrent->value )

if( from == "top" then

cvId = geGetTopLevelCellView( theForm->treeWindow )

else

cvId = geGetEditCellView( theForm->treeWindow )

) ; if

unless( cvId

error( "You must open a schematic cellview first." )

) ; unless

fileName = makeTempFileName( "/tmp/sch.tree" )

if( op = outfile( fileName ) then

fprintf( op "%40s\n", "Design Hierarchy" )

fprintf( op "**********************************************************\n" )

fprintf( op "Library : %s\n" cvId~>libName  )

fprintf( op "Cell    : %s\n" cvId~>cellName )

fprintf( op "View    : %s\n" cvId~>viewName )

fprintf( op "Option  : %s to bottom\n" from )

fprintf( op "**********************************************************\n" )

fprintf( op "\n" )

skGenSchTreeForCv(

?cellView cvId

?viewList theForm->viewList->value

?stopList theForm->stopList->value

?displayPins theForm->displayPins->value

?port op

) ; skGenSchTreeForCv

close( op )

view( fileName nil "Tree" )

deleteFile( fileName )

else

error( "Can not open temp file %s" fileName )

) ; if

)) ; end of procedure *skGenSchTreeCB*



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 9

    粉丝
  • 31

    好友
  • 9

    获赞
  • 28

    评论
  • 1755

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-23 22:34 , Processed in 0.013834 second(s), 8 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部