• 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. Blogs
  2. Analog/Custom Design
  3. Virtuoso Meets Maxwell: Virtuoso and Allegro SKILL for Efficient…
Kirti Sikri
Kirti Sikri

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
CDNS - RequestDemo

Have a question? Need more information?

Contact Us
Virtuoso Studio
Edit-in-Concert
Co-Design
Virtuoso Meets Maxwell
Virtuoso RF Solution
Allegro Package Designer Plus
Virtuoso Multi-Technology Solution
SKILL APIs
SKILL
Allegro
VMM

Virtuoso Meets Maxwell: Virtuoso and Allegro SKILL for Efficient Co-Design

2 Oct 2023 • 7 minute read

'Virtuoso Meets Maxwell' is a blog series aimed at exploring the capabilities and potential of Virtuoso Multi-Technology Solution, Virtuoso Electromagnetic Simulations, and Virtuoso RF Solution. So, how does Virtuoso meet Maxwell? Now, Virtuoso platform supports RF designs, and the RF designers measure the physical and radiation effects by using Maxwell's equations. In addition to providing insights into the useful software enhancements, this series broadcasts the voices of different bloggers and experts about their knowledge and experience of various tools in the Virtuoso IC-Packaging world, along with the nuances of RF, microwave, and high-frequency designs. Watch out for our posts on Mondays.

In today's dynamic landscape of design, collaboration between different design elements is paramount. The Virtuoso Multi-Technology Solution crosses over the Virtuoso Studio and Allegro Platform and has the prowess of the Allegro tools that provide designers with a compelling co-design (Edit-in-Concert) capability. This powerful integration not only expedites the design process but also fosters seamless collaboration across platforms. By bridging the gap between IC and package design, designers can seamlessly exchange data and leverage functions between the Virtuoso and Allegro environments.

Enhancing Edit-in-Concert Capabilities

The integration between the Virtuoso and Allegro SKILL offers a novel approach to Edit-in-Concert. Through this collaboration, designers can edit both IC and package modules simultaneously, streamlining the design process and enhancing collaboration. This approach addresses the challenges of modern design by facilitating the efficient exchange of data and the invocation of functions between these two environments.

A Simple Example

To illustrate the potential of integrating Virtuoso SKILL and Allegro SKILL, let's explore the scenario where an Allegro SKILL function is called from within Virtuoso Studio to exchange the data between the two environments.

Step 1: Defining Allegro SKILL Functions

In the Allegro SKILL script (allegroSKILL.il), two functions are defined as shown below:

(procedure allegroSKILLFunc1()

  printf("In allegroSKILLFunc1\n");

)

 

(procedure allegroSKILLFunc2()

  (let (tmpVirtuosoFile)

    printf("In allegroSKILLFunc2\n");

    tmpVirtuosoFile = infile("forAllegro.txt")

    when(tmpVirtuosoFile

      while(gets(nextLine tmpVirtuosoFile)

        println(nextLine)

      )

    )

    close(tmpVirtuosoFile)

  )

)

Step 2: Writing Allegro Scripts

Write Allegro SKILL scripts (callAllegro.scr, callAllegro_2.scr), where the previously defined Allegro SKILL functions are called:

Step 3: Calling Allegro SKILL from Virtuoso Studio

A menu is created within the Virtuoso Studio to call Allegro SKILL functions. This integration showcases the capability of invoking Allegro SKILL scripts from within Virtuoso, further enhancing the Edit-in-Concert process.

Within Virtuoso Studio, a menu is created to call Allegro SKILL functions. (CIWAllegroMenu) in the file callAllegroSKILL.il In both examples, Allegro SKILL is called from Virtuoso Studio in batch mode using the following command. (It is not necessary to call Allegro SKILL in batch mode)

apd -nograph -s script_name design-name

For details on how to call Allegro SKILL in batch mode, refer to the article How to run SKILL in batch mode.

The menu, Call Allegro Script Directly, calls an Allegro SKILL function in Virtuoso, callAllegroThroughScript, which invokes the file browser asking the user to select the package (.sip/.mcm) file and then passes the name of the selected package to the SKILL function. It also writes a text file, forAllegro.txt , which can be read by the Allegro SKILL. This way you can transfer information from Virtuoso Studio to the Allegro platform. Similarly, by writing to a file, you can transfer information from Virtuoso Studio to the Allegro platform.

(procedure CIWAllegroMenu()
    let((myItem menus ismember alreadyOnBanner numMenus menuPosition)
        ciwMenuInit()

        myItem = hiCreateMenuItem(
            ?name 'myItem
            ?itemText "Call Allegro Script Directly"
            ?callback "system(\"apd -nograph -s callAllegro.scr sample.sip\")"
        )

        myItem1 = hiCreateMenuItem(
            ?name 'myItem1
            ?itemText "Call Function for calling Allegro Script"
            ?callback "callAllegroThroughScript()"
        )

         ; create the pulldown menu
    hiCreateMenu(
            'myMenu
            "CIWAllegroMenu"
            list( myItem myItem1)
            "help"
         )
; if old menu is already on banner, remove it before adding new one
    menus = hiGetBannerMenus( hiGetCIWindow() )
    alreadyOnBanner = nil
    ismember=member('myMenu menus)
    if(length(ismember) > 0 then
      alreadyOnBanner = t
      menuPosition=hiGetNumMenus(hiGetCIWindow())-length(ismember)
    )
    if( alreadyOnBanner == t
     then
        hiDeleteBannerMenu( hiGetCIWindow() menuPosition )
    )
; now put up the new menu
    numMenus = hiGetNumMenus( hiGetCIWindow() )
    hiInsertBannerMenu( hiGetCIWindow() 'myMenu numMenus )
);let
);procedure

The Virtuoso SKILL function (callAllegroThroughScript) invokes Allegro Package Designer Plus in batch mode passing the script as an argument.

procedure(callAllegroThroughScript()
    ; Other code

    selDsgn = hiGetExistingFile(?filter "Packages (*.sip *.mcm)")

    
    (if selDsgn then
        dsgnName = nth(1 seldDsgn)

        fileptr1 = outfile("forAllegro.txt")
        fprintf(fileptr1 "Hello Allegro, from Virtuoso\n")
        fprintf(fileptr1 "Selected Design is %s\n" dsgnName)
        fprintf(fileptr1 "")
        close(fileptr1)

        ; Invoke the Allegro SKILL script
        sprintf(tmpStr, "apd -nograph -s callAllegro_2.scr %s", dsgnName)
        system(tmpStr)
    else
        println("Please select a Package and try again")
    )
)

Conclusion: Unlocking the Potential

The integration of Virtuoso SKILL and Allegro SKILL presents an exciting opportunity to streamline Edit-in-Concert workflows. It highlights the potential for a more holistic and efficient design experience, ultimately contributing to advancements in IC and package design.

The ability to effectively exchange data and invoke functions between these platforms is poised to revolutionize co-design workflows, ushering in a new era of enhanced collaboration and innovation. As we continue to explore the possibilities of integrated design solutions, the potential for more efficient, streamlined, and collaborative design processes becomes increasingly evident.

Related Resources


Cadence
Website

Virtuoso RF Solution

Virtuoso Heterogeneous Integration


Product
Manuals

Virtuoso MultiTech Framework Guide

Virtuoso RF Solution Guide

Virtuoso Electromagnetic Solver Assistant User Guide


Free
Trials

Virtuoso RF Solution - Module Layout with Edit-in-Concert

Virtuoso RF Solution - EM Analysis

Virtuoso RF Solution - Physical Implementation Flows

For more information on Cadence circuit design products and services, visit www.cadence.com.

Contact Us

For any questions, general feedback, or even if you want to suggest a future blog topic, write to custom_ic_blogs@cadence.com.

About Virtuoso Meets Maxwell

The Virtuoso Meets Maxwell series includes posts about the next-generation die, package, and board design flow with a focus on reinventing and optimizing the design process to ensure that the designer remains a designer! Keep watching! Subscribe to receive email notifications about our latest Custom IC Design blog posts.


CDNS - RequestDemo

Try Cadence Software for your next design!

Free Trials

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information