My end goal is to allow a plugin I have written in Simvision to be able
to send skill code to be executed to the icfb. I know I can do this
launching Simvision from the icfb using ipcSkillProcess, but I can't do
that because users are going to be launching simvision with the
simulator (Through Tools>Verilog Integeration>NC-Verilog) and I cannot
seem to find anyway of altering how simvision is launched from there.
I know there must be some kind of communication going on because of
features such as cross-selection, but it appears as though SimVision is
started as a regular process as I cannot open file descriptor 3, unless
it isn't using the default channels.
Has anyone done anything like this before?
Any help is much appreciated!
Doug
If you do some google searching, you'll find a little example application I
posted which showed how to use tcl to control a DFII session. I'm on a plane
at the moment, but probably searching for "skillServer andrewb" on google
(in comp.cad.cadence) will find it. I think there is a deliberate mistake in
the code I posted (a line is missing) - if you have any problems though, let
me know (by posting here) and I'll re-post it complete this time!
I'd then use this by starting the skillServer from the DFII session, and then
in the Tcl in simvision you'd be able to effectively do the same thing as the
skillClient example. So what would be happening is that DFII starts a little
Tcl application which listens for connections on a socket, and then passes
those back to the DFII session that started it. Your simvision tcl would send
requests to the server application started by DFII.
Regards,
Andrew.
For anyone whose interested, at the moment the communication is handled
a deamon (launched with ipcSkillProcess).
For completeness, the posting I was mentioning is at:
http://groups.google.co.uk/group/comp.cad.cadence/browse_thread/thread/3028fde59540881b/bd3587b3f1cb96aa?q=skillServer&rnum=1&hl=en#bd3587b3f1cb96aa
and the very last line of skillServer.il is missing. It should have been:
abSkillServer=ipcBeginProcess("skillServer" "" 'abSkillServerListener)
Without which nothing works...
Andrew.
I guessed it might be me doing something odd, so I tried line by line on
the console, I can open a socket ok and the listener prints the
"Connection Recieved ..." message. But when I use puts $sock "command",
nothing happens.
I tried setting abSkillServerDebug to true, this would show me the
listener line executing, then for the puts ... nothing. How come the
puts isn't getting through!?
Doug
Did you try doing:
flush $sock
after the puts?
An alterative is to do:
fconfigure $sock -buffering line
(see similar code in skillServer) which makes the socket line buffered rather
than a fixed buffer size.
Regards,
Andrew.
Thanks alot for this, much better than the way than I was doing previous!
Doug.