Cadence® system design and verification solutions, integrated under our System Development Suite, provide the simulation, acceleration, emulation, and management capabilities.
System Development Suite Related Products A-Z
Cadence® digital design and signoff solutions provide a fast path to design closure and better predictability, helping you meet your power, performance, and area (PPA) targets.
Full-Flow Digital Solution Related Products A-Z
Cadence® custom, analog, and RF design solutions can help you save time by automating many routine tasks, from block-level and mixed-signal simulation to routing and library characterization.
Overview Related Products A-Z
Driving efficiency and accuracy in advanced packaging, system planning, and multi-fabric interoperability, Cadence® package implementation products deliver the automation and accuracy.
Cadence® PCB design solutions enable shorter, more predictable design cycles with greater integration of component design and system-level simulation for a constraint-driven flow.
An open IP platform for you to customize your app-driven SoC design.
Comprehensive solutions and methodologies.
Helping you meet your broader business goals.
A global customer support infrastructure with around-the-clock help.
24/7 Support - Cadence Online Support
Locate the latest software updates, service request, technical documentation, solutions and more in your personalized environment.
Cadence offers various software services for download. This page describes our offerings, including the Allegro FREE Physical Viewer.
Get the most out of your investment in Cadence technologies through a wide range of training offerings.
This course combines our Allegro PCB Editor Basic Techniques, followed by Allegro PCB Editor Intermediate Techniques.
Virtuoso Analog Design Environment Verifier 16.7
Learn learn to perform requirements-driven analog verification using the Virtuoso ADE Verifier tool.
Exchange ideas, news, technical information, and best practices.
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.
It's not all about the technlogy. Here we exchange ideas on the Cadence Academic Network and other subjects of general interest.
Cadence is a leading provider of system design tools, software, IP, and services.
[Join Team Specman in welcoming guest blogger Jason Andrews. Jason is a recognized hardware-software co-verification expert (he's written books on the subject!) and a fellow blogger]
One of the long-time features of Specman is "CVL". It stands for "Co-Verification Link", but is somewhat misnamed. CVL connects a host compiled C program to Specman via a network socket. This feature enables e methods calling C functions and C functions calling e methods over the socket. We have used CVL many times in the context of ISX to provide a connection to a host-compiled program or another type of simulator that cannot be directly linked to Specman.
Debugging a host compiled program is normally done with gdb. Because CVL operates over a socket connection with Specman, one of the following can happen:
• Specman is running and the host-code program is blocked waiting for data• The host-code program is running and Specman is blocked waiting for data
This blocking creates a problem during interactive debugging with gdb, because gdb waits for commands when you stop execution. When you try to activate Specman to inspect the state of the verification environment Specman is frozen because of the blocking operation on the socket.
The good news is this blocking problem is solved using custom gdb commands you can use to transfer control from the gdb prompt to Specman, do some Specman commands, and then return back to the gdb prompt.
The good news is that no modifications to gdb are required because gdb has a feature that allows the user to create custom commands for the debugger. Specman is shipped with a .gdbinit file that implements this capability. The path to the file is $SPECMAN_HOME/sn_lib/vr_gsa_sw_debug/cvl/.gdbinit
For the real curious engineer, here is the code that "wakes up" the Specman prompt from gdb You can include this also as a "code fragment".
To activate the custom gdb commands, do one of the following:
1. Copy the file to the directory where you invoke gdb o gdb automatically reads a .gdbinit file in the current directory2. Copy the file to your home directory o gdb automatically reads a $HOME/.gdbinit file3. Manually source the file from the gdb prompt
gdb does not allow environment variables, so you must provide the full path:(gdb) source <path to SN Home>/sn_lib/vr_gsa_sw_debug/cvl/.gdbinit
To see if gdb now understands your custom commands use:(gdb) help user
Now, how to use it. If you are running a test and sitting at the gdb prompt and you need to do something in Specman use the sn command:(gdb) sn
This transfers control to the Specman prompt. After you are done with Specman stuff you can just hit return at the Specman prompt and you will get back to the gdb prompt. Check out the screenshots below for an example.
If you want to try all this out, there is a simple example that ships with Specman -- use sn_which.sh to find it.
% sn_which.sh ex_gsa_simple
As always, there are more details in the Specman User Guide about the custom gdb commands and running the simple example.
Happy bug hunting!
P.S. You might ask, “What’s the difference between CVL and Incisive Software Extensions (ISX)”? The answer to that is coming in a future post …