IPC vs Ocean script

Discussion in 'Cadence' started by Sam, Oct 28, 2004.

  1. Sam

    Sam Guest

    Hi all,

    I'm currently implementing an IPC handler dealing with Ocean netlist generation.
    I'm facing this issue: If two netlisting requests arrived on the IPC chanel,
    the first netlisting request begins, then the second request starts too as the
    previous one is not terminated; the result is that the execution of first Ocean
    script stops after "simulator()" command, as the latest Ocean script is
    succesfully executed.
    It seems that dfII is leaving my procedure after simulator() command, as soon as
    a event arrived on IPC channel.

    Is there a way to start new requests after execution of previous one when using
    IPC protocol? Or which method should I use to manage simultaneous events?

    Example of procedure to be executed :
    -------------------------------------
    procedure( DoOceanNetlist( simulatorName lib cell view )
    simulator( simulatorName )
    design(lib cell view)
    createNetlist()
    )


    IPC request 1:
    --------------
    DoOceanNetlist( 'spectre "lib1" "cell1" "view1" )

    IPC request 2:
    --------------
    DoOceanNetlist( 'spectre "lib2" "cell2" "view2" )


    Thanks in advance,

    Sam.
     
    Sam, Oct 28, 2004
    #1
  2. Sam

    fogh Guest


    It is not too clear to me. If the child is ocean it will fail on the design
    call. You should interpret this with an icfb -nograph. But then again, why would
    you do that instead of executing in the current session ?
     
    fogh, Oct 28, 2004
    #2
  3. Sam

    Sam Guest

    It is not too clear to me. If the child is ocean it will fail on the
    Well, I wrote an external tool, which is connected to dfII via IPC chanel.
    This tool is able to ask Cadence to generate netlists. Those netlists are
    generated into dfII using ocean commands. The problem is, when my external tool
    sends several netlisting requests via CDS ipc chanel, CDS don't wait for the
    previous job to be finished, before starting a new one. The result is that I
    only get netlist corresponding to lastest request. The previous ones are never done.
    My question:
    Is it possible to tell CDS ipc to execute a job only after completion of the
    previous one? Or which method should I use to manage simultaneous events on IPC
    chanel?

    Thanks,

    Sam.
     
    Sam, Oct 29, 2004
    #3
  4. Sam

    fogh Guest

    I don t think icfb can handle things in parallel just like that. I would not
    even know how to do stg like that. Short of starting multiple icfb processes.

    Your external tool should just wait for dfII. For instance dfII prints a line
    procedure( DoOceanNetlist( simulatorName lib cell view )
    printf("ocean netlisting %L %L %L for %L simulation..." lib cell view
    simulatorName )
    simulator( simulatorName )
    design(lib cell view)
    createNetlist()
    printf("done\n")
    )

    and your external does a gets() before it asks for another.

    But it would really be clearer if you posted your code !
     
    fogh, Oct 29, 2004
    #4
  5. Sam

    Erik Wanta Guest

    Sam:
    cid=ipcBeginProcess(your process)
    ipcWait(cid)

    Note that you can create netlists from ADE with:
    asiCreateNetlist(asiGetCurrentSession() "nil")
     
    Erik Wanta, Oct 29, 2004
    #5
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.