Home > Community > Forums > Custom IC SKILL > *Error* hiiEfunILInterface: argument #3 should be an integer (type template = "xlxlgggtttttggggtfff") - nil

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 *Error* hiiEfunILInterface: argument #3 should be an integer (type template = "xlxlgggtttttggggtfff") - nil 

Last post Thu, Mar 19 2009 2:14 AM by Abirami. 3 replies.
Started by Manu81 17 Mar 2009 03:01 AM. Topic has 3 replies and 1637 views
Page 1 of 1 (4 items)
Sort Posts:
  • Tue, Mar 17 2009 3:01 AM

    • Manu81
    • Top 500 Contributor
    • Joined on Fri, Mar 6 2009
    • Posts 16
    • Points 260
    *Error* hiiEfunILInterface: argument #3 should be an integer (type template = "xlxlgggtttttggggtfff") - nil Reply

    Hi,

    I am getting the following error message when I try to execute the following code. The form is opening and when I am passing the value, it gives the error: *Error* hiiEfunILInterface: argument #3 should be an integer (type template = "xlxlgggtttttggggtfff") - nil in CIW window. Below is the mendtioned code:

    procedure(line()
    validlayer=techGetLayerFunctions(techGetTechFile(geGetWindowCellView()))
            j=0
            declare(neededlayer[length(validlayer)])
            for(i 0 (length(validlayer)-1)
                    l=nth(i validlayer)
                    if((nth(1 l)=="metal" || nth(1 l)== "poly")
                    then
                    neededlayer[j]=list(nth(0 l) "drawing")
                    j= j+1
                    );if
    );for
    layerlist=vectorToList(neededlayer)

    let((path_width path_space path_number path_point layer width cvId layer purpose list_draw_layer)
    path_Form()
    path_width=pathForm->path_widthID->value                          ;...
    path_space=pathForm->path_spaceID->value                          ;...
    path_number=pathForm->path_numberID->value                        ;...
    path_point=pathForm->path_pointID->value
    layer=pathForm->layerID->value
    width=(path_width+path_space)*path_number-path_space              ;enterpath width

    cvId=geGetEditCellView()
    ;layer = car(leGetEntryLayer())          ; LSW layer
    ;purpose = cadr(leGetEntryLayer())       ; LSW purpose
    ;list_draw_layer=list(layer purpose)     ; ..LSW LAYER

    procedure( pathDone( w done pts )
       if( done then
            printf("Path entered was %L.\n" pts)

     get_draw_path(pts path_width path_space path_number list_draw_layer width);
        else
             println("Path entry aborted.")
         );if
         );procedure
        enterPath( ?prompts                                       ;enterpath
        list( "Enter the first point."
              "Enter the next point." )
        ?doneProc "pathDone"                                      ;enterpath......
        ?wantPoints path_point                                    ;enterpath....
        ?pathWidth width
        ?pathStyle "Truncate"                                     ;enterpath.style
        );enterpath
        );let
        );procedure_line
    procedure(ABchangeLayer()
            setlayer=hiGetLayerCyclicValue(techGetTechFile(geGetWindowCellView()) pathForm)
            leSetEntryLayer(list(setlayer~>name setlayer~>purpose))
            tec=techGetTechFile(geGetWindowCellView())
            layername=setlayer~>name
            space1=techGetSpacingRule(tec "minSpacing" layername)
            width=techGetSpacingRule(tec "minWidth" layername)
           ; ABpathForm~>width~>value=width1
    )

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.PATH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    procedure(get_draw_path(path_list path_width path_space path_number list_draw_layer width)
       let((path_pitch len path_obj plogon_path list1 list2 move_d i)
       path_pitch=path_width+path_space
       move_d=path_space+path_width/2
       len=length(path_list)
       path_obj=leCreatePath( cvId list_draw_layer path_list width);....sample.path
       plogon_path=dbConvertPathToPolygon(path_obj)                ;..polygon(....)
       list1=plogon_path~>points                                   ;...list.path....
       list2=reverse(list1)                                        ;..list....path....
       dbDeleteObject(plogon_path)                                 ;..sample.path
       for(i 1 path_number                                         ;......
       get_new_path_list(list1 list2 path_pitch len)               ;....path...list
       list1=reverse(list_new_get)
    leCreatePath( cvId list_draw_layer list_new_get path_width );......PATH
       );for
       );let
       );procedure
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.....path..(list);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    procedure(get_new_path_list(list11 list22 path_pitch_g len_g)
    let((xnew ynew listxy11 listxy22 x1 y1 x2 y2)
    list_new=list()
    for(i 1 len_g
      listxy11=nth(i-1 list11)
      listxy22=nth(i-1 list22)                        ;....
      x1=car(listxy11)                                ;..x1
      y1=cadr(listxy11)                               ;..y1
      x2=car(listxy22)                                ;..x2
      y2=cadr(listxy22)                               ;..y2
      if( x2==x1 then                                    ;.....
        if(y2 > y1 then
           xnew=x1
           ynew=y1+path_pitch
           else
           xnew=x1
           ynew=y1-path_pitch
          );if
        else
          if(x2 > x1 then                                 ;.pitch
           m=(y2-y1)/(x2-x1)                              ;....
           xnew=x1+path_pitch                             ;..x
           ynew=y1+m*(xnew-x1)                            ;..y
           else                                           ;.pitch
           m=(y2-y1)/(x2-x1)                              ;....
           xnew=x1-path_pitch                             ;..x
           ynew=y1+m*(xnew-x1)                            ;..y
           );if

        );if
        list_new=xcons(list_new list(xnew ynew))   ;...list_new
         );for
      list_new_get=list_new
      println(list_new_get)
      );let
    );procedure
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    (procedure path_Form()
    path_widthID=hiCreateFloatField(
            ?name 'path_widthID
            ?prompt "Signal width"
            ?value 0.16
            ?defValue 0.16
            ?range (range 0 100)
            ;?editable nil
    )

    path_spaceID=hiCreateFloatField(
            ?name 'path_spaceID
            ?prompt "Signal Space"
            ?value 0.16
            ?defValue 0.16
            ?range (range 0 100)
            ;?editable nil
                            )
    path_numberID=hiCreateIntField(
            ?name 'path_numberID
            ?prompt "Signal Tracks"
            ?value 2
            ?defValue 2
            ?range (range 1 100)
            ;?editable nil
                            )
    path_pointID=hiCreateIntField(
            ?name 'path_pointID
            ?prompt "path point :"
            ?value 5
            ?defValue 5
            ?range (range 1 100)
            ;?editable nil
                            )
    layerID=hiCreateLayerCyclicField(
          techGetTechFile(geGetWindowCellView())
          "Layer"
          "ABchangeLayer()"
          layerlist
               )
    pathForm=hiCreateForm(
        'pathForm
        "Bus Route"
        (list "()")
    list(
        (list path_widthID   0:20 200:30 100)
        (list path_spaceID 250:20 200:30 100)
        (list path_numberID 0:50 200:30 100)
        (list layerID 250:50 200:30 100)

      )
       nil nil
    )

    (hiDisplayForm pathForm)

    ;);prog
    );proc_form
              

    • Post Points: 20
  • Tue, Mar 17 2009 3:38 AM

    Re: *Error* hiiEfunILInterface: argument #3 should be an integer (type template = "xlxlgggtttttggggtfff") - nil Reply

    I really had to hold myself back here - this code is pretty bad - the lack of structure makes it hard to read, and hence hard to debug. In addition, there are a lot of things you're doing wrong.

    First of all, the main bug is that in the call to enterPath() you are passing ?wantPoints  path_point, and since the variable path_point is nil, it gives the error. It's expecting an integer for the number of points.

    OK. So what else is wrong?

    1. You should use prefixes for your functions. Calling them line(), path_Form() etc is asking for trouble - you'll clash with other functions
    2. At the top of line() you create an array, and then travere a list with a for loop (should use foreach, otherwise this is inefficient as lists are sequential). Then you convert the array back into a list. Better to use foreach and build the new list as you go along, or better still use foreach(mapcar...).
    3. There's wildly inconsistent indentation in the code - which makes it very hard to read
    4. I suspect you really want to create an options form and pass that to enterPath, rather than creating a form and then collecting all the values.
    5. If you really want to do it the way you've done it, use a callback in the form to call the enterPath - this way you are not relying on the form being blocking. For a start, your code will not work if you hit "Apply" because it relies on the path_Form() function returning.
    6. path_point ends up being nil because the field it is initialized from is not actually included in the form.
    7. You have pathDone() contained within line() - this does not make it local.
    8. The comments in the code are next to useless. You might as well not bother

    I gave up at this point - there was a limit to how much time I could spend on your code. Sorry to be rather critical, but if you write clear, carefully laid out, well commented code, you'll be amazed how much easier it is to program!

    Regards,

    Andrew.

    • Post Points: 20
  • Tue, Mar 17 2009 9:33 PM

    • Manu81
    • Top 500 Contributor
    • Joined on Fri, Mar 6 2009
    • Posts 16
    • Points 260
    Re: *Error* hiiEfunILInterface: argument #3 should be an integer (type template = "xlxlgggtttttggggtfff") - nil Reply
    Hi Andrew, I got it code working. I just included the path_pointID in the form list, so that the interger value is passed. I was trying to perform multiple funtions, therefore the code looks glitter. Thanks for your feedback and will work on it. Regards, Manu
    • Post Points: 20
  • Thu, Mar 19 2009 2:14 AM

    • Abirami
    • Not Ranked
    • Joined on Wed, Mar 18 2009
    • Posts 1
    • Points 5
    Re: *Error* hiiEfunILInterface: argument #3 should be an integer (type template = "xlxlgggtttttggggtfff") - nil Reply

     can u post the error free code?

     

    • Post Points: 5
Page 1 of 1 (4 items)
Sort Posts:
Started by Manu81 at 17 Mar 2009 03:01 AM. Topic has 3 replies.