• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. Error constantly pops up after defining a custom dockable...

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 143
  • Views 6956
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Error constantly pops up after defining a custom dockable window

Dario T
Dario T over 1 year ago

Hi, 

i'm trying to convert a form that i made a couple weeks ago into a docking window for ease of use but after executing the script and effectively showing my docking window i get this weird error whenever i select anything on the layout or when i try to execute any kind of command like for example a move or a stretch:

mgc_calibre_realtime_Btn1Down() mouseSingleSelectPt()
*Error* parseString: argument #1 should be either a string or a symbol (type template = "SSg") at line 0 of file "*ciwInPort*" - nil
t

which brings focus to the CIW and it becomes crazy to work with because every time i press anything on a layout the CIW pops up so my input is conveyed to the CIW instead of the layout...

I'm using ICADVM 20.1-64b.500.28.EHF13629

this is the code of my docking form, i hope someone can explain me what i did wrong and how to solve this inconvenient, because the docking window works as i expected but the CIW does not...



defvar(dockFormTest)
procedure(dockForm()
prog((Grid1 Grid2)
Grid1=hiCreateGridLayout(
'Grid1
?items
list(
list(hiCreateLabel(
?name 'funct1_l1
?labelText "function1-set1"
)
'row 0 'col 0
)
list(hiCreateButton(
?name 'btn1
?buttonText "btn1"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"1\")
else
warn(\"Please select instances before clicking the button\"))"
)
'row 1 'col 0
)
list(hiCreateButton(
?name 'btn2
?buttonText "btn2"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"2\")
else
warn(\"Please select instances before clicking the button\"))"

)
'row 2 'col 0
)
list(hiCreateButton(
?name 'btn3
?buttonText "btn3"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"3\")
else
warn(\"Please select instances before clicking the button\"))"
)
'row 3 'col 0
)
list(hiCreateLabel(
?name 'funct1_l2
?labelText "function1-set2"
)
'row 4 'col 0
)
list(hiCreateButton(
?name 'btn4
?buttonText "btn4"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"4\")
else
warn(\"Please select instances before clicking the button\"))"

)
'row 5 'col 0
)
list(hiCreateButton(
?name 'btn5
?buttonText "btn5"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"5\")
else
warn(\"Please select instances before clicking the button\"))"
)
'row 6 'col 0
)
list(hiCreateButton(
?name 'btn6
?buttonText "btn6"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"6\")
else
warn(\"Please select instances before clicking the button\"))"
)
'row 7 'col 0
)
list(hiCreateLabel(
?name 'funct1_l3
?labelText "function1-set3"
)
'row 8 'col 0
)
list(hiCreateButton(
?name 'btn7
?buttonText "btn7"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"7\")
else
warn(\"Please select instances before clicking the button\"))"
)
'row 9 'col 0
)
list(hiCreateButton(
?name 'btn8
?buttonText "btn8"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"8\")
else
warn(\"Please select instances before clicking the button\"))"
)
'row 10 'col 0
)
list(hiCreateButton(
?name 'btn9
?buttonText "btn9"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"9\")
else
warn(\"Please select instances before clicking the button\"))"
)
'row 11 'col 0
)
list(hiCreateLabel(
?name 'funct1_l4
?labelText "function1-set4"
)
'row 12 'col 0
)
list(hiCreateButton(
?name 'btn10
?buttonText "btn10"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"10\")
else
warn(\"Please select instances before clicking the button\"))"
)
'row 13 'col 0
)
list(hiCreateButton(
?name 'btn11
?buttonText "btn11"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function1(dockFormTest~>inst \"11\")
else
warn(\"Please select instances before clicking the button\"))" )
'row 14 'col 0
)
; only the entry fields are stretchable
; the labels do not stretch
list('col_stretch 0 0)
list('col_min_width 0 100)
)
?frame "Frame1"
)

Grid2=hiCreateGridLayout(
'Grid2
?frame "Grid 2"
?enabled nil
?invisible t
?items
list(
list(hiCreateLabel(
?name 'f2_lab1
?labelText "f2_lab1"
)
'row 0 'col 0
)

list(hiCreateButton(
?name 'f2_btn1
?buttonText "btn1"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function2(dockFormTest~>inst \"1\")
else
warn(\"Please select instances to convert before clicking the button\"))"
)
'row 1 'col 0
)

list(hiCreateButton(
?name 'f2_btn2
?buttonText "btn2"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function2(dockFormTest~>inst \"2\")
else
warn(\"Please select instances to convert before clicking the button\"))"
)
'row 2 'col 0
)

list(hiCreateLabel(
?name 'f2_lab2
?labelText "Boundary to:"
)
'row 3 'col 0
)
list(hiCreateButton(
?name 'f2_btn3
?buttonText "btn3"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function2(dockFormTest~>inst \"3\")
else
warn(\"Please select instances to convert before clicking the button\"))"
)
'row 4 'col 0
)
list(hiCreateButton(
?name 'f2_btn4
?buttonText "btn4"
?callback "dockFormTest~>inst = setof(obj geGetSelectedSet(geGetWindowCellView()) obj~>objType == \"inst\")
if(length(dockFormTest~>inst)
then
my_function2(dockFormTest~>inst \"4\")
else
warn(\"Please select instances to convert before clicking the button\"))"
)
'row 5 'col 0
)
)
)
unless(hiIsForm(dockFormTest)
hiCreateLayoutForm(
'dockFormTest
"DockableFormTest"
hiCreateGridLayout(
'topLayout
?spacing list(5 15)
?items
list(
list(hiCreateRadioField(
?name 'gridChoiceField
?value "1"
?choices '("1" "2")
?callback list("dockFormTest~>Grid1~>enabled = t
dockFormTest~>Grid1~>invisible = nil
dockFormTest~>Grid2~>enabled = nil
dockFormTest~>Grid2~>invisible = t
"
"dockFormTest~>Grid1~>enabled = nil
dockFormTest~>Grid1~>invisible = t
dockFormTest~>Grid2~>enabled = t
dockFormTest~>Grid2~>invisible = nil
")
)
'row 0 'col 0 'col_span 2
)
list(Grid1 'row 1 'col 0)
list(Grid2 'row 1 'col 0)
list(hiCreateLabel(
?name 'extraLablel
?labelText "Extra Tools:"
)
'row 2 'col 0
)
list(hiCreateButton(
?name 'extra_btn2
?buttonText "extra 2"
?callback "myfun3()"
?toolTip "Launch extra gui"
)
'row 4 'col 0
)
list(hiCreateButton(
?name 'extra_btn1
?buttonText "extra 1"
?callback "my_function1(dockFormTest~>wId \"extra 1\")"
)
'row 3 'col 0
)
)
)
?callback "printf(\"Test\")"

)
)
;hiDisplayForm(dockFormTest)
dockFormTest~>wId = geGetWindowCellView()
dockFormTest~>inst = list()
unless(dwindowp(dockFormTest~>dckWin)
dockFormTest~>dckWin = hiCreateDockWindow(?appType "form" ?widgetType "form" ?form dockFormTest)
)
hiDockWindow(?window dockFormTest~>dckWin ?session hiGetSessionWindow(hiGetCurrentWindow()) ?side 'left ?index 0)
)
)



Thanks in Advance,

Dario


*EDIT*

I've tried to fix the indentation a bit and hopefully uploaded a text file with the formatting.

sorry for the inconvinient.

Dario

  • Cancel
  • Dario T
    Dario T over 1 year ago

    I forgot to mention that i'm using ICADVM20.1

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 1 year ago

    Hi Dario,

    Your docking window might be the source cause of your issue but this is not certain

    I made a simple search and didn't see the `parseString' call that could be raising your error

    This is not the proper solution but first you can untoggle the following setting : CIW -> Options -> User Preferences -> Raise CIW on Error

    You might want to toggle the debug mode then retry and post here the full error message.

    Below is the list of calls you can make in the CIW Shell to see more clearly what is happening: 

    (sstatus debugMode         t  ) ; use debug mode
    (sstatus traceArgs         t  ) ; display functions arguments in stack trace
    (sstatus stacktrace        15 ) ; stack trace 15 levels
    (sstatus stacktraceDump    t  ) ; print environment (local variables) in stack trace
    (setq    tracelength       50 ) ; otherwise trace displays reduced lists (using ...)
    (setq    _stacktrace       50 )
    (sstatus sourceTracing     t  ) ; Try to point errors to the file and line they happen (for files loaded in debugMode)
    (sstatus profCount         t  ) ; Count the number of calls per function when profiling
    (sstatus verboseLoad       t  ) ; Print full path of loaded files in CIW
    (sstatus verboseNamespace  t  ) ; Enable printing of warnings related to SKILL namespaces
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to AurelBuche

    Given the mention of a Siemens EDA SKILL function related to Calibre just before the message, I'm not sure it's anything to do with your dock window (it's hard to tell because the formatting, although I tried just coping the code as-is with its terrible formatting and it worked without the issue you described). Maybe something was objecting to your use of Comic Sans in the post (that's why it was marked as Spam and went to moderation Wink - only kidding).

    You didn't mention the IC subversion you're using, but I tried with IC6.1.8 ISR33 and don't see any issue. I reformatted the code to make it more readable, and still see nothing in your code which could cause this.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Dario T
    Dario T over 1 year ago in reply to Andrew Beckett

    Hi Aurel and Andrew,

    thanks to both of you for your replies.

    I'm aware that the code formatting is terrible, but that's due to the fact that i made a direct copy from SKILL IDE and pasted it here, I'm still looking for how to paste in a code formatting but i can't figure out how to add the grey code window like Aurel did and be able to  paste with the indents...

    Anyway I'm using ICADVM 20.1-64b.500.28.EHF13629

    Aurel, I'm pretty convinced that my docking window is the source of the problem as only after displaying it for the first time i get this weird behavior, but i can't figure out what is it interfering with.

    This is the full log that i get after applying these settings on the CIW

    AurelBuche said:
    (sstatus debugMode t ) ; use debug mode (sstatus traceArgs t ) ; display functions arguments in stack trace (sstatus stacktrace 15 ) ; stack trace 15 levels (sstatus stacktraceDump t ) ; print environment (local variables) in stack trace (setq tracelength 50 ) ; otherwise trace displays reduced lists (using ...) (setq _stacktrace 50 ) (sstatus sourceTracing t ) ; Try to point errors to the file and line they happen (for files loaded in debugMode) (sstatus profCount t ) ; Count the number of calls per function when profiling (sstatus verboseLoad t ) ; Print full path of loaded files in CIW (sstatus verboseNamespace t ) ; Enable printing of warnings related to SKILL namespaces

    *Error* parseString: argument #1 should be either a string or a symbol (type template = "SSg") at line 28 of file "*ciwInPort*" - nil
    <<< Stack Trace >>>
    (... in _vreGetVREAssistants ...)
    dwList = (dwindow:11)
    dws = (dwindow:1 dwindow:2 dwindow:3 dwindow:4 dwindow:5 dwindow:6 dwindow:7 dwindow:8 dwindow:9 dwindow:10 dwindow:11 dwindow:12 dwindow:13 dwindow:14 dwindow:15 dwindow:16 dwindow:17 dwindow:18 dwindow:19 dwindow:20 dwindow:21 dwindow:22)
    (... in _vreNetSelectionChangeTrig ...)
    asstList = nil
    of = nil
    createdPages = nil
    typeNameKey = nil
    typeNameList = nil
    pageCont = nil
    countValField = nil
    dockWinSW = nil
    swn = nil
    CVpage = nil
    useIndex = nil
    handle = nil
    rMode = nil
    cv = db:0x56e8f29a
    newCount = 0
    _vreNetSelectionChangeTrig(db:0x56e8f29a 0)
    (... in mouseSingleSelectPt ...)
    window = window:2
    mouseSingleSelectPt()
    _hiButtonEvent(1 0 single (0.2445 0.598) "mgc_calibre_realtime_Btn1Down() mouseSingleSelectPt()")
    _insideilparser = t
    *Error* parseString: argument #1 should be either a string or a symbol (type template = "SSg") at line 28 of file "*ciwInPort*" - nil
    <<< Stack Trace >>>
    (... in _vreGetVREAssistants ...)
    dwList = (dwindow:11)
    dws = (dwindow:1 dwindow:2 dwindow:3 dwindow:4 dwindow:5 dwindow:6 dwindow:7 dwindow:8 dwindow:9 dwindow:10 dwindow:11 dwindow:12 dwindow:13 dwindow:14 dwindow:15 dwindow:16 dwindow:17 dwindow:18 dwindow:19 dwindow:20 dwindow:21 dwindow:22)
    (... in _vreNetSelectionChangeTrig ...)
    asstList = nil
    of = nil
    createdPages = nil
    typeNameKey = nil
    typeNameList = nil
    pageCont = nil
    countValField = nil
    dockWinSW = nil
    swn = nil
    CVpage = nil
    useIndex = nil
    handle = nil
    rMode = nil
    cv = db:0x56e8f29a
    newCount = 1
    _vreNetSelectionChangeTrig(db:0x56e8f29a 1)
    (... in mouseSingleSelectPt ...)
    window = window:2
    mouseSingleSelectPt()
    _hiButtonEvent(1 0 single (0.2445 0.598) "mgc_calibre_realtime_Btn1Down() mouseSingleSelectPt()")
    _insideilparser = t

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to Dario T

    Dario,

    That hit a fairly obscure bug in the routing assistant code, in that it is dependent upon having. handle in all docked assistants. I'll file a CCR to get that fixed, but you can workaround it by changing this line in your code:

      dockFormTest~>dckWin = hiCreateDockWindow(?appType "form" ?widgetType "form" ?handle 'dockFormTest ?form dockFormTest)

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to Andrew Beckett

    Dario,

    I filed Cadence Change Request (CCR) 2873369 to get this fixed.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Dario T
    Dario T over 1 year ago in reply to Andrew Beckett

    Hi Andrew,

    Thank you so much for the assistance, just adding the handle fixed the constant error and solved my issue.

    Probably I would have never figured it out on my own and most likely i would've gave up on developing dockable windows or assistants.

    Also thanks for filing a fix, I'll follow for updates.

    Dario

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to Dario T

    Hi Dario,

    The function has already been fixed in IC23.1 and since this is only in early access for ICADVM20.1 and we're close to the final ISR of ICADVM20.1, it won't be fixed in ICADVM20.1 - so for now you can continue with the workaround with the knowledge that it's properly fixed in the production APR flow in IC23.1

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Dario T
    Dario T over 1 year ago in reply to Andrew Beckett

    Hi Andrew,

    I'm impressed by how quickly it got fixed.

    Thanks for your precious help!

    Kind regards,

    Dario

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information