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.
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 ?
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.
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 !
Sam: cid=ipcBeginProcess(your process) ipcWait(cid) Note that you can create netlists from ADE with: asiCreateNetlist(asiGetCurrentSession() "nil")