• 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. Send a command from Perl to Skill

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 143
  • Views 15215
  • 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

Send a command from Perl to Skill

Khurana
Khurana over 14 years ago

Hi,

I'd to know how to pass a command from Perl to Skill...say I want to pass "Hello from Perl" string to Skill, then how can I do that?  I know that I need to invoke perl.exe and the perl file (.pl) using ipcSkillProcess() wherein I provide the exe and path to the perl file as noted below, I still am not sure how Skill will read the info from the Perl file - any ideas?

cid = ipcSkillProcess("D:/perl/per.exe d:/script/myperl.pl"

Here's a line from myperl.pl:
print "Hello from Perl\n";

Thanks,
Varun

  • Cancel
  • skillUser
    skillUser over 14 years ago

    Hi Varun,

    Unless I am mistaken there are two ways to get data from the Perl program, one is to read from the child_id ('cid' in your example) using ipcReadProcess(cid), and another is to specify the data handler when you first start the process (the third argument to the ipcSkillProcess command):

    
    ipcSkillProcess( 
      t_command 
      [ t_hostName ] 
      [ tsu_dataHandler ] 
      [ tsu_errHandler ] 
      [ tsu_postFunc ] 
      [ t_logFile ] 
      [ x_cmdDesc ] 
      [ x_resDesc ] 
    )
    => o_childId
    

    I hope that this helps.

    Regards,

    Lawrence

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Khurana
    Khurana over 14 years ago

    Hi Lawrence,

    Thanks for your time, but I still don't get it.   Here's what I am struggling with...based on Sourcelink Sol. 11252036 here's what my perl code looks like:

    hello_perl.pl perl code:

    my $fd = 3;
    my $fd2 = 4;
    open(F, ">&=$fd");
    my $cmd_to_send = "SkillCommand()";
    print F $cmd_to_send;
    close F;

    where SkillCommand() is a procedure defined as follows:

    procedure( SkillCommand()
    cnSendCommand(cnhandle "echo hi")
    ); end procedure

    where cnSendCommand is used to send the command named echo hi to Allegro Design Entry HDL's (aka Concept's) command console and "hi" appears in the command console.  This is just a simple example; the object here is to send a command string from the Perl script to ADEHDL's Command Console using this methodology.

    Then, the main Skill code contains the following:

    procedure(from_perl()
    let((cid process)
    process="C:/Perl/bin/perl.exe" D:/ipc/hello_perl.pl"
    cid=ipcSkillProcess(process)

    So, when invoke the from_perl() Skill function, I expect to see "hi" without quotes in ADEHDL's Command Console but doesn't work for me.  If there's something fundamentally wrong, then I appreciate the help.

    Thanks,
    Varun

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Varun,

    I don't support Allegro or Concept, so can't help much with that side, but I tested your code by using:

    procedure( SkillCommand()
      printf("echo hi\n")
    ); end procedure

    procedure(from_perl()
     let((cid process)
       process="perl hello_perl.pl"
       cid=ipcSkillProcess(process)
    ))

    Something appeared to be wrong with your process variable - it had quotes wrong, and also the close parentheses were missing. Anyway, I was running on Linux, and the above worked fine. So you might want to check that the perl script actually launched, and check that the SkillCommand() actually does talk to the concept command console.

    If this doesn't work, I'd suggest you log a service request with Cadence Customer Support. This post is in the Custom IC Design SKILL Forum, which is probably not the best place for Concept/Allegro questions.

    Regards,

    Andrew.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Khurana
    Khurana over 14 years ago

    Andrew,

    Thanks a lot for your time and help. 

    Yes, the two problems you identified were indeed there in my code, however I couldn't get it work even after fixing them.  So, I used ipcBeginProcess() and ipcWriteProcess() as supposed to ipcSkillProces() and was able to get the thing to work.

    Once again, appreciate the help.

    Regards,
    Varun

    • 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