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.
Get email delivery of the Cadence blog featured here
Linaro has emerged as a great place to find well tested toolchains, Linux kernels, and evaluation builds for Ubuntu and Android. Everything is focused on the ARM Architecture which is great news for me since almost all of the projects I work on also involve ARM processors.
Last year I looked up a presentation by Christian Reis, the Linaro VP of Engineering, titled, The Weird World of Linux on ARM. For me, ARM is the primary architecture I work with. Although I run Linux on multiple x86 machines for software development, I recall only one time I compiled a Linux kernel and tried to debug a broken device driver on the x86 architecture. The diversity of the ARM ecosystem and the popularity among Cadence customers has made the ARM architecture the focus of most of my work. It didn't actually occur to me that Linux on ARM was weird at all since I have very little x86 experience.
One of the challenges of a Virtual Platform developer is access to software to use in testing new models. While I find embedded Linux very interesting, there is not always time to spend on actual software development and creating new software to run on a new model. The good news is there is no shortage of information and open source software available. The challenge is that it all takes time to find, learn, build, and use. Linaro is a great place because it provides easy access to various useful and time saving components.
During testing of the Cadence Virtual Platform for the Xilinx Zynq-7000 EPP I was looking for more software to try and decided to check out some of the Linaro deliverables, I decided to try some of the Ubuntu Oneiric images on the Virtual Platform. As the first step I started with the Linaro Nano image, a small image with basic console and networking.
Today, I'll explain the steps to run the Nano image on the Virtual Platform for the Xilinx Zynq-7000 EPP.
The first step is to get the Nano image from the Linaro Downloads page.
Click the rightmost column on the Nano row to get the image, the filename I downloaded was linaro-o-nano-tar-20120123-1.tar.gz
I extracted the file and changed directory to binary/boot/filesystem.dir
Here I can see the root file system that I want to use.
To start with I made a new image file, 256 Mb, that can be used by the SD Card model present in the Virtual Platform.
$ dd if=/dev/zero of=linaro-nano.img bs=1024k seek=256 count=0
Since this is just a test image there is no need to partion the image, I'll just use a single partion for the entire SD card image.
Next, make a file system on the image, I used an ext2 file system:
$ /sbin/mkfs.ext2 linaro-nano.img
Then mount the image somewhere on the host machine so the file system data can be loaded. I made a temporary directory called t/ in /mnt
$ sudo mount -t ext2 -o loop linaro-nano.img /mnt/t
Copy the data from the downloaded Nano image onto the SD card image that is mounted on the host machine:
$ cp -r ~/Downloads/binary/boot/filesystem.dir/* .
Finally, unmount the image and it's ready to run.
$ sudo umount /mnt/t
I put the image in SD Card slot 1. This is an SD card model, not a real SD card, but in the Virtual Platform configuration file I specify the image to use for SD card 1 in the sd_card1 section:
The last thing is to set SD card 1 as the root file system on the Linux kernel command line. This is done via the Linux Device Tree.
For the Virtual Platform, I edit the default zynq-ep107.dts device tree source file and specify the SD card as the root file system. Since we are attaching it to SD card 1 the device node is /dev/mmcblk1
Here is the device tree source file for the kernel command line
bootargs = "console=ttyPS0,115200 root=/dev/mmcblk1 rootwait rw earlyprintk ip=:::::eth0:dhcp";
Then rebuild the device tree using the device tree compiler, dtc from the scripts/dtc directory of the Linux kernel source tree.
% dtc -I dts -O dtb -o zynq-ep107.dtb zynq-ep107.dts
Make sure the .cfg file for the simulation has in the loader section INITRDFILE "" to make sure no ramdisk image is used as a root file system. Without this a default ramdisk image file could boot.
Run the simulation as normal and the result is a shown below, a running system with the latest Xilinx Zynq Linux kernel and the Linaro Nano image.
If you haven't looked at the Linaro website take some time to see what's there. A lot can be learned from the Wiki.