JB's Guides

Drafted by JB Bahrenburg, last modified on 4/19/2024

Starting Out

Once you have gotten your Cadence account set up and the necessary applications downloaded (refer to the Getting Started page for information on how to do this) it’s time to begin learning how to use the Cadence applications. For a series of short training tutorials, refer to the OrCAD Crash Courses section. However, I would recommend beginning with the Allegro Design Entry Using OrCAD Capture training course as the easiest starting point. Cadence offers learning maps on their site which can be used to determine a path to learning the Cadence software as well as deciding which courses to take. 

OrCAD Crash Courses

Once you have downloaded the software and have successfully launched the OrCAD Capture and Allegro PCB Editor applications, it may be useful to take a quick course on how to use these applications. Cadence offers some crash courses on the OrCAD and EMA Design Automation websites which can be accessed below. Both websites contain the same content and training videos, however I would recommend using the EMA website as it was easier to download the necessary files for the walkthrough: 

It should be noted that these videos are somewhat outdated as they cover the 17.4 edition software. If you plan on using the 22.1 software there may be some differences, however when I completed these walkthroughs not many issues arose from this. These training videos are very short and fast paced so I would only recommend using this resource if you already have experience with circuit and PCB design and only need to familiarize yourself with the software. Some of the Cadence training courses, such as the Allegro Design Entry Using OrCAD Capture course will also cover the basics of using the software and are much easier to follow, therefore that is the starting point I would recommend. 

Allegro Design Entry Using OrCAD Capture

Requirements

Introduction

This course serves as an introductory class into using the Capture software, teaching actions such as opening projects, creating schematics, placing parts, routing etc. Since it is an introduction, this course is fairly straightforward, though some of the later modules become slightly more complex. This course does offer a badge so remember to take notes and pay close attention to the lectures. 

Information

To begin, go to the Database Downloads module and download the zip file shown in the first picture to the right. I would recommend creating a new folder on your desktop to place this zip file in as this will help keep things organized as well as make the files easily accessible once the course has begun. Do not worry about the ‘7Zip’ or ‘Winzip’ softwares as you can simply download the zip file, right click on it, and select Extract All… (on Windows) to unzip the file. The labs and lab manual can be accessed at each module, however I found it easier to simply download the lab manual as a pdf and follow along using the pdf. The lab manual download can be found on the Database Downloads module as well, as pictured to the right.

Once the proper files and documents have been downloaded you can begin with module 1. This program contains 7 learning modules as well as 2 additional informational modules about the course. The learning modules are fairly straightforward, covering basics of the Capture software, and easy to follow. Each of the labs will walk you through the actions taught in the lecture step by step.

Resources

Since this is mainly an introductory course to using the OrCAD Capture application, there are not many additional resources that may be of use outside of the course itself. However for those interested you can check out the OrCAD Capture Datasheet to learn more about the features and capabilities of the OrCAD application.

Allegro Design Entry HDL Front-to-Back Flow

Requirements

Introduction

This course introduces users to a different application using for creating schematics: the Design Entry HDL application. Similarly to the Capture CIS application, this software can be used to create schematics. The unique aspect about the Project Manager is that it can be used to launch both the schematic editor (Design Entry HDL) and the PCB Editor containing the PCB layout for the schematic.

Information

Module 1 and Database Downloads

Module 1 of the course simply contains an overview of what the course will cover. It is still important to read over this and gather an understanding of what you will be learning. Before starting the course you should head to the Database Downloads module of the course. Refer to the Allegro Design Entry Using OrCAD Capture section of this page for instructions on what to do with the database downloads module.

Module 2: Getting Started With Design Entry HDL

The first learning module of this course covers the basics of operating the Design Entry HDL application. When first launching the Project Manager application, it will prompt you to select a product to use. Select the Allegro Venture PCB Designer Suite product, as seen in the image to the right. The lab for module two will also have you launch the PCB Editor application. If you have yet to launch and configure this software then it too will prompt you to select a product. For this choice select the Allegro PCB Venture option if you are using the 22.1 software or the Allegro Venture PCB Designer Suite option if using the 17.4 software, once again as seen in the photos to the right. Be sure to check the Use As Default box, this way the program will not prompt you to choose a product each time it is launched. 

Module 3: Project Setup

This section covers the basic creation and setup of a Design Entry HDL project. The lab is fairly straightforward, however in step 5 of the "setting up a project" section, the lab mentions specifying the path to where the project will be stored. The lab says to simply add "\ram" to the end of the file path, which should be done, but first I would recommend going and creating the ram folder within the ftb folder in your file manager. Some computers may not automatically create the folder when a path which points to a file that does not exist is entered, and will prompt an error instead.

Module 4: Design Entry and Packaging

Module 4 covers part placement as well as other topics such as packaging, page management, and changing modes in the Design Entry HDL application. Each section of this module is very important as processes such as packaging are integral, especially when you start carrying the design over to the PCB Editor. Once again the lab does a great job walking through the material, however one issue that I encountered was that the application would get stuck while packaging at times during the back-annotation step, seen to the left. If it does this, simply restart the computer, re-open the schematic and run the packager again. Another important note is the material in lab 4-9. This lab covers switching to Windows Mode in the Design Entry HDL software. It is very important to keep the application in windows mode for the remainder of the lab as the rest of the lab manual is written assuming the user is still in windows mode. To ensure you are in windows mode, look to to bottom of the screen, below the command console for a section similar to the one seen in the image to the left.

Module 5: Hierarchical and Team Design

This module covers hierarchical design, a little bit of schematic entry and design, netlisting, and creating a BOM. Since module 5 will have you creating some more schematics it is very important to have the reference_schematic pdf open to follow along. This is the schematic the lab wants you to create. This pdf can be found within the pdf folder in the ftb folder.

Module 6: Design Rules

Module 6 covers the constraint manager and all the different property tables which it contains. The lab is very straightforward for this section, but it is very important to pay thorough attention to the lecture section in order to understand what each constraint manager page is used for and what properties they can control.

Module 7: Rules-Driven Layout

Since this section finally covers carrying the design over from Design Entry HDL to the PCB Editor it is important to make sure you have the PCB Editor application up and running. There is one major challenge with the lab section of module 7. Lab 7-3 will have you run the auto router in PCB Editor, however we do not yet have access to the v22.1 auto router license.  If you are using the v22.1 PCB Editor, the work around for this is to run the auto router on the PCB Editor 17.4 application. To begin this process, launch the Cadence Download Manager. Within the Download Manager locate the OrCAD and Allegro product. This should be listed under "Installed Products" if you already have the 22.1 software installed. Toggle version to 17.40.036 and click Install, as seen below.

Once you have done this, a new window should pop up with the agreement page. Click I Accept then Next. On the next page select Anyone who uses this computer (All Users) as well as the OrCAD Products option and the Allegro Products option, then click Next. Finally, on the last page select Connect to Existing License Server and enter "5280@localhost;28070@license8.clemson.edu" into the "Set CDS_LIC_FILE Environment Variable" field, as seen below.

Click Install and the installation process will begin. Once this has completed you can open the PCB Editor 17.4 application, then open your *.brd file within the app. Run the auto router within the program, the steps will be the same as outlined in the lab manual. After the auto router has finished, you can now save the file, close the PCB Editor 17.4 app and reopen the routed file in the Allegro PCB Editor 2022 program. At this point you can complete the rest of the lab using only the Allegro PCB Editor 2022 application.

Module 8: Engineering Changes

The final learning module for this course, this section covers some design synchronization between Design Entry HDL and the PCB Editor. This will allow you to make changes in one program and update the other program. The module will also cover some basic project management, such as copying projects.

Resources

Allegro Design Entry HDL Basics

Requirements

Introduction

This course builds on the schematic design entry concepts touched on in the Design Entry HDL Front-to-Back Flow course and introduces the Library Manager. Using the Library Manager allows users to create new parts to be used in a schematic as well as handle and explore libraries for a project. The modules for this course are very short, but it is still important to be thorough when going through the course as part development is integral to the design process. This course can be completed in its entirety using either the 17.4 or 22.1 software.

Information

Module 1 and Database Downloads

As always it is important to begin by reading the module 1 information (an overview of the course) as well as download all necessary materials before beginning the lectures and labs. Refer to the Allegro Design Entry Using OrCAD Capture guide section to learn how to manage the database downloads page.

Module 2: Using Project Manager Design Flows

Serving as an introductory section, module 2 covers how to operate the project manager. First this module re-covers the Board Design flow and how to launch the Design Entry HDL application. For this part of the lab you will want to use the Allegro Venture PCB Designer Suite product if using the 22.1 software, or the Allegro Venture System Design Authoring product if using the 17.4 software. The second lab will cover something new: the library design flow. Before opening or creating a new project make sure the project manager product is set to Allegro Library Authoring (PCB Librarian) if using the 22.1 software or Allegro PCB Librarian XL for the 17.4 software. All of these options can been seen in the images to the right.

Module 3: Setting Up a Library Project

Module 3 covers the setup process for a new library project as well as the part developer. To perform these tasks you will need to be using one of the library authoring or librarian products mentioned in the module 2 section, depending on which software edition you are using.

Module 4: The Symbol View

This module is incredibly important as it covers the symbol view of a new schematic symbol. The lab will cover the creation of the symbol view, which involves editing the pins, pin placement, labeling, etc. of the schematic symbol. This will also cover some basics of using the part developer, the application used to create new schematic symbols.

Module 5: The Chips View

Similar to module 4, this module is incredibly important as it ties into the part creation process. This time the lab will cover pin mapping and package definition. This step is integral if you plan on bringing your schematic over to the PCB Editor as your part will need a PCB Footprint (package definition) and will need to have pins correlating to the I/O of the package. For more information on IC packages refer to the resources entry of this guide section.

Module 6: The Part Table View

The final step in the part creation process, this module covers assigning properties to your new part. The lab also covers the final necessary information relating to the Part Developer basics.

Module 7: Testing the Part

For the second lab in this module you will need to have access to the PCB Editor software. Either the 22.1 or 17.4 software should work for this so it is up to your discretion which to choose. If the PCB Editor prompts you to select a product, make sure you select the Allegro PCB Venture option. The lab does a good job of walking you through what is needed to complete the task at hand in the PCB Editor, but for more information on operating the PCB Editor application, refer to the OrCAD Crash Courses section of this guide page.

Module 8: More Part Building

The final module covering the use of the Part Developer tool, module 8 covers some semantics of the tool's use such as copying parts and opening multiple parts. Module 8 also covers split and asymmetric parts and how they are handled or created in the Part Developer.

Module 9: Setting Up a Design Project

Module 9 dives back into using the Design Entry HDL application. This means you will need to switch back to the Allegro Venture PCB Designer Suite product if using the 22.1 software, or the Allegro Venture System Design Authoring product on the 17.4 software.

Module 10: Design Entry and Packaging

The labs for this module cover some design entry and creation. This is somewhat redundant as nearly all this material was covered in the Allegro Design Entry Using OrCAD Capture course, however I would highly recommend still thoroughly following along with the lecture and lab as it is good review and practice. This module's lab is also taught using the standard mode, as opposed to windows mode which was covered in the previous course. Remember to always choose a PACK_TYPE option or VALUE option (for a discrete component) when adding parts, even when there is just one option. Before adding a component you should see a screen similar to one below. Failure to make a selection for one of these categories will prompt an error when trying to save the project.

Module 11: Engineering Changes

Once again somewhat redundant, this module covers basic information such as copying projects, editing copied projects as well as repackaging. Yet again this is very good practice to nail down the concepts covered in the previous course.

Resources

OrCAD Capture Constraint Manager PCB Flow

Requirements

Introduction

This course covers bringing a design over from the OrCAD Capture schematic editor to the PCB Editor. This will cover many aspects of the design process and in particular the use of the constraint manager to set parameters for the PCB layout. Please note that at the moment Cadence only offers the 17.4 version of this course, but you can follow along using the 22.1 Capture software just fine. However you will need access to both the 22.1 and 17.4 PCB Editor if you choose to use the 22.1 Capture software. This guide will cover some of the differences between the 22.1 and 17.4 software as they show up in the course.

Information

Modules 1 and 5, and Database Downloads

As always you will need to begin the course by visiting the Database Downloads page and downloading all the necessary materials. Once this has been completed you can begin with module 1 which will cover the course topics and outline. Finally, module 5 simply offers a course summary and gives an overview of the material taught once you are finished with the course.

Module 2: Design Rules

The second module covers some basics of operating the constraint manager such as adding properties and creating classes. The first lab will involve modifying or adding some environment variables. The easiest way to do this in my opinion is to simply launch the environment variable page by entering Environment Variables into the windows search bar, then selecting the "Edit the system environment variables" option. This will open a new system properties window, where at the bottom you will see a button which says Environment Variables... Click the button to edit your environment variables. From here add your CDS_SITE and HOME variables but be sure to save any existing environment variables of the same name by changing the name beforehand.

Next you will need to launch the Capture CIS software. In either the 22.1 or 17.4 software you will need to select the Allegro PCB Design CIS L product, as seen to the right. After this, the lab will walk you through using the constraint manager. Some small details to note: first when the lab has you using the differential pair automatic setup tool, on the 22.1 software if you simply enter _P and _N into the +Filter and -Filter fields, pressing Enter will automatically create the differential pair, instead of populating the fields as the lab has you do. Finally when the lab has you creating net classes, there is a step involving creating a class with the BNC2, BNC3, OUTA, and OUTB nets. If you are using the 22.1 software, do not worry about looking for the OUTA and OUTB nets as they are included in the BNC2 and BNC3 nets, thus you only need to include the two BNC nets in the net class.

Module 3: Rules Driven Layout

Module 3 involves the transition from design entry in Capture CIS to circuit board layout using the PCB Editor. If using the 22.1 Capture CIS software, you will find the *.brd file in the project manager within the layout folder. To launch the PCB Editor you can either double click on the *.brd file or you can right click the file then select Launch PCB Editor. In lab 3-4 for this section you will be asked to use the automatic router in the PCB Editor. If you have already done the Allegro Design Entry HDL Front-to-Back Flow course then you should be familiar with the issue that arises from this. Since we do not yet have access to the 22.1 routing license, you must use the 17.4 software to run the auto router. For instructions on how to install the 17.4 software, refer to the getting started guide section. Once this software has been installed, you can simply open the *.brd file you were working on in the 17.4 software, follow the lab instructions on running the auto router, then save the changes made to the file and reopen it in the 22.1 software. One of the biggest differences between the 22.1 and 17.4 software that shows up in the lab is the design synchronization tool. In the 22.1 software there is no one "Design Sync" button as there is in the 17.4 edition. Instead there are two options. If you have made changes in the schematic editor, then choose Update Layout to sync the PCB design. If you have made changes in the PCB Editor then choose the Update Schematic to sync the schematic design. Aside from this the update layout and update schematic windows should look very similar to the design sync window from the 17.4 software and should be easy to follow along with.

Module 4: Engineering Changes

The final module covers some more basics of design synchronization such as synchronizing changes to the constraint manager and regenerating a netlist. These labs will involve using the design sync tool as well as the auto router, so be sure to read the module 3 guide to understand how to deal with the issues arising from these tools. One other issue you may encounter in this lab is netlisting errors. If the netlist fails to generate then you will see the error message shown to the right. If this happens then open the session log window by choosing View > Session Log Window from the pull down menu. The session log will print out the errors the netlist generator is encountering, an example of which can be seen below. In this case there was a duplicate reference designation in the resistor 'R6', which could be fixed by editing the resistor properties and changing the resistor's name.

Resources

Allegro System Capture

Requirements

Introduction

This course introduces yet another schematic design application, the System Capture app. The unique aspect about this app is that it allows for users to import designs or libraries from other applications such as DE-HDL and OrCAD Capture. System Capture also gives users access to parts from external libraries. Using the System Capture software is fairly similar to using the previously discussed schematic design apps and this course will give a similar overview covering placing parts, drawing wires, generating netlists, etc...

Information

Module 1 and Database Downloads

As always begin by reading the course overview given in module 1 and download all the necessary files from the Database Downloads page. For instructions on how to manage the downloads refer to the Allegro Design Entry Using OrCAD Capture section of this guide page.

Module 2: Introduction to Allegro System Capture

The first learning module of the course gives a general overview of creating and opening projects as well as the user interface of the schematic editor. The first lab will require you to the set the CDS_SITE system variable. The OrCAD Capture Constraint Manager PCB Flow section of this guide page has some images and a short description to guide you through modifying system variables. Setting the CDS_SITE variable to the proper directory is important as this specifies different setup and layout settings and contains different libraries you  will need access to. If you cannot change the environment variables on your device then you will need to manually include the path to certain files.  When opening a project look to the Violations window for some clues as to which lines in the CDS.lib file need to be changed. If you need to find the base cds.lib file, you can usually find it in the base installation at Cadence/SPB22.1/share/cdssetup. Once you get around to launching the System Capture application you will be prompted to select a product. If you are using the 22.1 software use the Allegro System Capture Venture product. If you are using the 17.4 software then choose the PCB Designer product. When you first open or create a project try to use View>Panels>Unified Search to open the Unified Search window. This window may prompt you to sign in. You can sign in here to access the SamacSys tab which allows you to search for parts from external libraries. Make sure to uncheck the Ultra Librarian box when signing in. Additionally you can skip the sign in if you only need to search for or place parts from local libraries.

Module 3: Project Setup

The third module covers creating a new project and tailoring project settings. This includes graphics in the schematic editor such as modifying how the grid is displayed and changing the page setup as well as editing user preferences. This section is fairly straightforward but is critical to getting started.

Module 4: Working With Libraries

Module 4 dives into editing or creating libraries and library parts. It is important to note that when you are creating a library, the path name to the library does not contain any spaces in it as this will cause an error. Also keep in mind that if you change any directory names within the path that are also contained in the CDS_SITE path, the CDS_SITE variable will not update. Thus if you change a path name make sure to update the CDS_SITE variable as well.

Module 5: Creating a Schematic

This module goes over the basics of schematic design in the System Capture software. This includes placing parts, wires, buses, bus taps, etc. Module 5 also introduces Version Control, a unique feature which allows users to view and switch to previous versions of a design. If you encounter any issues when trying to commit a new version to the version history the most likely culprit is the Part Manager. Before committing the part manager may need to be updated. To do this go to Tools>Part Manager then in the part manager window choose Update. This should solve the issue, however if there are parts which need to be manually synced this can be more challenging. This issue will be discussed in the module 8 section of this guide.

Module 6: Creating a Hierarchical Design

Module 6 covers hierarchical designs as well as importing design files from other Cadence products and importing user-created libraries. The lab of this section will have you use the Project Manager and DE-HDL software. If you have never launched these products before then choose the Allegro Venture PCB Designer Suite product regardless of the software edition you are using.

Module 7: Design Rules

This module introduces the constraint manager once again. Using the constraint manager in System Capture is very similar to using it in OrCAD Capture or DE-HDL, so this module should seem pretty familiar at this point. Make sure to still be thorough when going through the labs as the changes made in the constraint manager are important for when the design is transferred to the PCB Editor.

Module 8: Rules Driven Layout

The final learning module covers transferring the design from the schematic editor to the PCB Editor as well as back annotating the schematic from the PCB Editor. This module's labs gave me quite a bit of issues, the first of which involved the part manager again. The first lab involves generating a netlist, however an error was prompted when trying to do this due to the part manager not being updated. However this time the part manager could not be auto updated because it needed a part to be manually updated. For this instance the part that needed updating was the RAM TC55B4257 part. To manually update a part there are two ways to go about it. First you can open the part manager and select Details. From here filter the list of parts by Manual Sync and then select the Select a part for replacement button for the part that needs to be manually synced. In my case this didn't work so I chose the second way to solve this issue. I simply used the unified search to find a library version of the chip I needed and replaced all the parts that needed to be manually synced.

The second issue involved placing parts in the PCB Editor. For some reason the DAAMP parts could not be placed as one group in a predetermined pattern as the lab said they could be. The workaround for this is easy. The lab manual has a picture of the layout so the parts can be placed manually by using the image as a guide for which parts to place and where to place them. Later the lab asks you to display rats nest lines using cross referencing between the two programs. This may cause some trouble so to display the rats nest lines using only the PCB Editor you can start by clicking Display>Show Rats>All. Next click Display>Blank Rats>All. After this open the constraint manager by choosing Setup>Constraints>Constraint Manager. Once open simply click on whatever net you'd like to display it's rats nest lines. The final issue is one that you may have encountered already. When the lab asks you to auto route the PCB design, this must be done in the 17.4 software as we do not have access to the auto routing license on the 22.1 software. For detailed instructions on how to do this refer to the Allegro Design Entry HDL Front-to-Back Flow section of this guide page.

Resources

Analog Simulation with PSpice Using System Capture

Requirements

Introduction

This course introduces some of the simulation abilities of the Cadence PSpice library and PSpice applications. It is important to have completed the System Capture course before beginning this one as you will need to know how to use the System Capture software. This course is only offered for the 17.4 software, but can be followed along with using the 22.1 software edition.

Information

Module 1 and Database Downloads

Module 1 will give a short overview of what to expect from this course while the Database Downloads page provides the necessary files to follow along with the course labs. For instructions on how to use the Database Downloads page refer to the Allegro Design Entry Using OrCAD Capture section of this guide page.

Module 2: Building a Design for Simulation

This first module covers setting up System Capture to use the PSpice products as well as how to place PSpice capable parts. When you first launch System Capture you will likely need to change the product you are using. This can be done by going to File>Change Product then selecting the Allegro System Capture Venture product and checking the PSpice checkbox. Once System Capture has been configured and a project is opened you will need to include the PSpice libraries. If you are having trouble doing this, I would recommend opening the project's CDS.lib file using the notebook application. This file can be found within the project directory. Once this has been opened insert the statement INCLUDE "C:\Cadence\SPB_22.1\share\canvaslibrary\pspice\canvaspsp_cds.lib" which will include the PSpice libraries. Please note that the path listed above may very and is simply the path to the canvaspsp_cds.lib file which should have appeared when extracting the pspicecanvaslib.exe file. Once this statement has been added save the file and restart System Capture. All the PSpice libraries should now be listed in the Available Libraries section of the preferences page. If you encounter any issues while placing parts during the lab be sure to select parts from the Library tab of the Unified Search window rather than the myparts tab.

Module 3: DC Bias Point Analysis

Module 3 teaches the first basic analysis tool offered by the PSpice product: a DC Bias Point analysis. This analysis will calculate the DC Bias Point based on any DC sources and initial conditions. The lab for this section is short and straightforward, just make sure that System Capture has been set up properly to avoid any issues.

Module 4: DC Sweep Analysis

The second analysis type, DC Sweep, will calculate the steady-state voltages and currents when sweeping a source, model parameter, global parameter, etc. As with the previous module this lab is very short and straightforward. Once again refer to the setup process for any issues accessing PSpice products in System Capture.

Module 5: AC Sweep Analysis

Another capability of the PSpice simulator, an AC Sweep analysis will find the small signal response when sweeping an AC source over a range of frequencies. This lab will require you to create a new file, do not forget to add the PSpice libraries to the cds.lib file in order to access PSpice parts. Refer to module 2 for instructions on how to do this.

Module 6: Simulating a Text Netlist

PSpice can also be used to simulate a circuit from an ASCII netlist file. This lab will use the PSpice AD product so be sure you have access to this program. Within the PSpice AD program you will need to plot a function. To do this first select the function from the Functions window (in this case the DB() function) then select the signal you would like to plot from the Simulation Output Variables window.

Module 7: Transient Analysis

This next analysis method will measure the circuit's response in the time domain. In this lab I had some troubles copying the project. If you encounter these same issues I would recommend simply using the original file to complete the lab, or restarting System Capture and trying to re-copy the project.

Module 8: Resolving Simulation Errors

This module will cover some errors that may be encountered during the simulation process, some of which you may have already seen. In one of the later labs you will be asked to place a LIMIT part to solve an error. When I tried to do this I encountered the error to the right which would not allow me to place the part even though the PSpice libraries were included in the project. If you run into this issue as well I would recommend manually adding the libraries by adding the same include statement mentioned in module 2 to the project's CDS.lib file.

Module 9: Transformers

This module covers creating and simulating several different types of transformers. As always, remember to include the PSpice libraries in each new project you create in order to access the proper parts and simulation models necessary.

Module 10: Parametric Analysis

Module 10 introduces a new kind of analysis, parametric, which involves using a parameter and viewing its effect on a circuit. This module only includes one lab which is fairly straightforward.

Module 11: Model Editing

This module covers editing the PSpice models of parts. You will need to use the PSpice Model Editor program for these labs so be sure that it is installed and operating on your computer. The first lab involves editing an existing PSpice model and viewing the behavior of the circuit before and after the edits. To edit a model you must select a part, right-click on the part, then choose Edit Model from the bottom of the list. Refer to the figure for Module 14: Monte Carlo Analysis for a depiction of where to find this option. The second lab will involve the creation of a PSpice model. This simply requires you to input some values into the model editor then place the part in a schematic. The final lab can be somewhat challenging, likely due to an issue with the pre-designed circuit from the lab database. If you encounter the error sequence shown to the left while trying to simulate your circuit, the best course of action in my opinion is to simply remake the circuit. This is unfortunately a very tedious process, but it is the best way to get the simulation to work.

Below this module paragraph, I have included images of the working circuit as well as the configuration for the simulation. For the circuit, there are a couple things to note. First, the voltage source V2 is a vsrc part for which you will need to assign the TRAN, AC and DC properties. Second, the part you see labeled Advanced Analysis Properties is a variables part from the pspice_elem library. Most of the properties will remain as the default but there are a few that need to be changed or added, so be sure to reference the below schematic and assign all the properties accordingly. Finally the reference designators and net names are very important to the simulation so copy them exactly as you see them below. For the simulation, the settings that need to be changed are pictured below, the rest of the settings will use the default. For the Stimulus page you will need to add the rf_amp.stl file. This file can be found using the following path: C:WhereverYourSysCapFileIsStored\SysCapPSpice\rf_amp\logic\rf_amp\worklib\rf_amp\psp_sim_1\profiles\rf_amp.stl. This can be added using the same process as you would add the STN0214.lib file to the Library section of the simulation profile. At this point the simulation should complete successfully, though it is important to note that the graph may not look exactly as it does in the lab manual, likely due to the polarity of some capacitors. I would not worry too much about this issue as the important part is generating a working simulation with an imported PSpice part.

Module 12: Adding New Parts

Module 12 introduces some aspects of hierarchical design, involving creating a circuit, designating it as a subcircuit and using it in another project. The first lab of this module is fairly straightforward, but the second requires some patience. First, when creating the new project, if there is a warning in the violation window regarding a syntax error in the CDS.lib file, double check the file to make sure the INCLUDE statement for the PSpice libraries and the DEFINE statement for the buffer_lib library are on different lines. When placing your buffer part it will appear in the MyParts window. If it does not show up be patient and wait for the MyParts window to load. Since this window needs to load in 28,000+ parts it may take a while to load in the buffer part, so wait for the window to say 28k+ at the top before searching for the part.

Module 13: Temperature Analysis

This module teaches how to perform a temperature analysis, which will calculate the circuit's response to different temperatures. This module only involves one lab. For this lab be sure to place the voltage probe after creating the simulation profile otherwise the probe will have no effect.

Module 14: Monte Carlo Analysis

A Monte Carlo analysis randomly changes the values of certain circuit components and calculates the circuit's response to the changes. This lab will cover creating a circuit then running a Monte Carlo analysis on the circuit. If you choose to construct the circuit yourself, be sure to update the part manager before simulating the circuit. In order to edit the PSpice model of a component, right click then select Edit Model which will be found at the bottom of the right mouse clicker menu. This will open the PSpice Model Editor as seen to the right.

Module 15: Hierarchical Blocks and Symbols

Module 15 covers using hierarchical blocks in a circuit and simulating said circuit. The labs involve building and simulating several circuits. In lab 15-2, if you are having trouble generating or finding the proper signals, I would recommend rebuilding and re-importing the clipper circuit as there may be some issues with the original. In the same lab the manual says to type in some functions and signals in the Trace Expression field. I would instead recommend clicking and choosing the functions and signals. This can be done by first selecting DB() from the Functions or Macros field, then choosing V(OUT) from the Simulation Output Variables field. Then repeat this for V(MID).

Module 16: Analog Behavioral Modeling

The 16th module goes over simulating circuits with analog signals. This module contains four short labs. These labs are fairly straightforward, but as always remember to add the proper libraries to the project. When doing the labs be sure to add the voltage probes to the circuit after creating the simulation profile, otherwise the probes will be removed. Also note that the simulation results from labs 16-1 and 16-2 should look the same.

Module 17: Simulating Digital Circuits

This module covers the process of simulating circuits that contain digital components. When placing parts for the circuit you may come across several pop-ups that are not mentioned in the lab. When placing the $D_HI and $D_LO parts the program may prompt you to select a voltage. I used 5V and 0V, respectively, which seemed to work fine. It should also be noted that the manual says to use the parts from the source library, however I used the parts from the dataconv library which seemed to have no effect. 

Later when placing the digstim1 part the program may prompt an error saying "implementation property missing", as seen to the right. At this point simply enter the name for the part mentioned in the manual then press ok to open the stimulus editor. Finally, in the simulation window the lab manual says to display the "DSTIM1:OUT" signal, however it may be difficult to find this value. Instead refer to your schematic and find the net name of the net shown below, then select this net as a trace in the simulation window. In my case the signal was named _N1, but yours may be different.

Module 18: Mixed Analog and Digital Simulation

As the title describes, this module involves simulating a circuit that contains both analog and digital elements. When performing these simulations the digital and analog signals will be shown side-by-side. This lab only has one part.

Module 19: Performance Analysis

Module 19 covers creating performance analysis graphs as well as generating functions to analyze a simulation. The second and third labs for this module require the use of the buffer project created earlier in the course. If you have lost this project or have modified it in any way, refer to the images below for the setup. When setting up the circuit make sure pin 2 for both capacitors is on top and be sure to flip the LF411 part horizontally when placing it (While placing the part right click then choose horizontal). The negative symbol should be on top and the positive symbol on the bottom. To set up the simulation, choose Time Domain (Transient), set the Run To Time as 5us and the Maximum Step Size to .01ns. Next check the Parametric Sweep box, choose Global Parameter, setting the parameter name as CVAL and give the sweep a start value of 100p, an end value of 700p, and an increment of 25p.

Module 20: Noise Analysis

Module 20 offers a way to analyze the noise of certain circuit elements. This is another short and succinct module plus lab, but as always pay close attention and be sure to follow along with the lab.

Resources

Using the Palmetto Cluster

Connecting to the Palmetto Cluster

Once you have been set up with access to the Palmetto Cluster (using the instructions from the Getting Started page) it is time to get started with using the Cluster. There are three easy ways to connect to the Cluster in my opinion. You can access a virtual machine on the OnDemand website by clicking on Interactive Apps > Palmetto Desktop then choosing settings and launching a session. I typically use 15GB and 4 Cores, but these numbers will obviously vary based on what you are trying to do. This is likely the easiest way to connect.

Another way to access the cluster via the OnDemand website is to open a terminal session. This can be done by choosing Clusters > Palmetto Shell Access. Once the terminal has been opened you will need to enter a command to start an interactive session and launch the Cadence applications. In the terminal, enter "qsub -I -l select=1:ncpus=(number of cpus you want):mem=(GB of memory you need)gb,walltime=hr:min:sec". Look to the images below for an example. Once the session has begun you can enter a couple commands to load or view programs. Enter "module avail" to get a list of all available programs on the cluster. Enter "module avail cadence" to view all the accessible cadence programs that can be run. Finally to load a program, for example the Xcelium 22 software, enter "module load cadence/Xcelium/22". Refer to the module avail command to view the names of other cadence apps and how they can be launched. To end the interactive session enter exit.

The final way I will recommend connecting is via ssh. This is easiest if you already have a virtual machine set up on your computer, or if you already run linux or mac. This can be done by opening a terminal session and entering "ssh username@login.palmetto.clemson.edu". After this you will be prompted to enter your Clemson password as well as a duo option. Once you've begun the ssh session you will need to follow the same steps as described above to start an interactive session using the qsub command. If you would like to have GUI access while connecting to the cluster via ssh, be sure to enable X11 forwarding by including the -X tag. When connecting, your ssh command should look like the following: "ssh -X username@login.palmetto.clemson.edu". Similarly, include -X in between the -I and -l flags when entering the qsub command.

Transferring Files

If you need to transfer files to the Palmetto cluster, there are once again several options to do so. For downloading files you can use the OnDemand virtual machine, however if you have files on your computer that need to be on the Cluster there are several ways to transfer them. On the OnDemand website, click on Files > Home Directory. From here this will take you to a file management screen where you can transfer files from the Cluster to your computer or vice versa.

If you operate on Linux or mac (or connect to the Cluster via ssh) then you can open a terminal session and use secure file transfer to send files to your Cluster profile. To do this, find the folder to send, then enter the command scp filename username@xfer01-ext.palmetto.clemson.edu:/home/username/destination. After this is entered you will be prompted to enter your password and choose a duo option. Once this is done the program will confirm the file has been transferred and return you to your home terminal.

Xcelium Simulator v22.09

Requirements

Introduction

The Xcelium simulator course introduces the Cadence Xcelium software. This software can be used to compile, elaborate, and simulate Verilog, VHDL, SystemVerilog, SystemC and other file types. To access this software you must use Clemson's Palmetto Cluster, instructions to request an account are found on the Getting Started page and instructions to access the cluster can be found above on this guide page. The Xcelium software installed on the Cluster is version 22.09, thus be sure to enroll in the 22.09 version of the course.

Information

Module 1 and Database Downloads

As always begin by downloading the required database and reading the introduction to the course. Since you will need the database file on the Palmetto Cluster Linux machine, you can either download the file from a web browser on the machine or transfer the file using the steps detailed above on this guide page. Once downloaded, the files will need to be uncompressed, steps for which are shown below.

Module 2: Introduction to Xcelium Simulation

The second module for this course gives an overview of the Xcelium Simulator, providing information such as which languages are supported, some of the different architectures and more. There are no labs for this section of the course, but be sure to take notes on the lecture.

Module 3: The xrun Utility

Module 3 introduces the most important command provided by the Xcelium software: xrun. This command can be used to compile, elaborate, and simulate HDL files. Xrun can also be run with various command-line arguments to modify its use and purpose. The lab will cover the various ways this command can be used.

Module 4: Xrun Use Models

This module covers the various ways in which the xrun command can be used to run the compilation, elaboration, and simulation processes individually. The lab once again will cover each way to do this, and is fairly straightforward.

Module 5: Incisive to Xcelium Single-Core Migration

Module 5 provides information on the Xcelium software's single core mode. There are once again no labs for this section of the course.

Module 6: The Xcelium Multi-Core Simulator

Similar to the previous module, this module provides information on the other operating mode for Xcelium: Multi-core simulation. The point of the lab for this module is to show the difference between running a simulation in single-core mode versus multi-core mode. Because of this, when running the simulation in single-core mode, it is important to be patient as the simulation may take a while (5 minutes or so). This section of the lab can be completed, however you may choose to stop at the "Simulating Design in Multi-Core Mode" section as we do not have access to the Xcelium Multi-Core Mode license and therefore cannot complete this section of the lab.

Module 7: The Xcelium and SimVision Interface

Module 7 introduces the SimVision user interface and is crucial to the simulation process. When launching SimVision on the Palmetto Cluster machines you must include the -64bit option in order for the program to work properly. This can be done in two ways, examples of each are shown below in the image carousel containing images of the Linux terminal

Later on in the lab, when looking for the "trace signals" side bar, look to the left side of the Register window and expand the tab by clicking the combinational logic looking symbol. Once the sidebar has been expanded click on either of the other logic-looking symbols to trace the selected signal. Look to the image above for a look at what the window looks like.

Module 8: Executing and Analyzing a Multi-Core Example with SimVision GUI and Indago Debug Analyzer

This module will provide an example of the debug process with the Xcelium software. This module does not come with a corresponding lab.

Module 9: Race Detector

Module 9 introduces the race detector feature of the Xcelium simulator. This feature will detect any race conditions that occur in an HDL-designed system. There is one lab for this module which is fairly straightforward.

Module 10: X-Propagation

The tenth module introduces the x-propagation features of the simulator and the accompanying labs show the effects of the x-prop features. The first three labs for this module can be completed easily, however there is an issue with one of the files for the fourth lab so don't worry about any issues the simulator may give you for this section.

Module 11: X-Pessimism Solution
This module provides an example of X-pessimism and shows how the Xcelium simulator can be used to solve this issue. There are once again no labs for this section of the course.

Module 12: SystemVerilog Support and Enhancement

Module 12 covers the Xcelium features which allow for the use and operation of SystemVerilog files. There are no labs corresponding to this module.

Module 13: The Xcelium Textual Interface

This module provides information on the Xcelium "terminal" where commands can be entered to modify the simulation process. There are a couple differences between what the lab manual says and how the commands should be entered. First, when removing a stop point, be sure to enter "stop -disable stop_3". Finally, to run a simulation for a set amount of time enter "run -timepoint 50ns". This will run the simulation for 50ns.

Module 14: Debugging with SimVision and Textual/Batch Commands

This module is another "example" module which walks through an example of using the textual interface to debug a program. There are no labs for this module.

Module 15: Latest Features and Updates

As described by the title, this module simply covers the most recent features that have been added to Xcelium. Once again there are no labs for this section of the course.

Module 16: Indago Debug Flow

The final module in this course, module 16 covers the Indago debug tool, shown below. This tool is incredibly useful for debugging HDL files and can be used for viewing simulation waveforms as well. Before using Indago on the Palmetto Cluster you must load the application by entering module load cadence/VDEBUG/2209 on the command line. If the issue persists even with VDEBUG loaded, then try setting the INDAGO_ROOT variable by entering export INDAGO_ROOT=/software/commercial/cadence/VDEBUG2209. If you start encountering a long list of errors when trying to compile the run.f file, it is likely an issue with the UVMHOME environment variable. Set this variable by entering export UVMHOME=/software/commercial/cadence/XCELIUM2209/tools/methodology/UVM/CDNS-1.1d/sv/ on the command line. This should allow the xrun command to run successfully. Later on in the lab, after running the ../scripts/run.csh & command there is a vague reference to an "xrun -f lab1.f ..." command. Don't worry about this, simply move on and enter indago & and continue with the lab.

Resources

Genus Synthesis Solution with Stylus Common UI v21.1

Requirements

Introduction

This course introduces Cadence's Genus Synthesis tool, which can be used to synthesize, place, and route designs. Most of this lab is done using the Genus "terminal". This tool is also used later in the Verilog Language and Application course, so it may be useful to complete this basics course before moving onto the Verilog work. Make sure to enroll in the v21.1 version of the course as this is the software edition we are licensed to use.

Information

Module 1 and Database Downloads

As always this course begins with an introduction in module 1. The final module is the database downloads page. Since Genus is a Linux-based application, the database must be downloaded and unzipped on a Linux system. The steps to do this can be found in the Xcelium Simulator course shown above on this guide page.

Module 2 - Module 4

The first 3 learning modules contain no labs and simply give an overview of the Genus application. This includes an overview of the application itself, some information on using the application, and finally an introduction to the Genus shell which will be used throughout the lab.

Module 5: Synthesis Flow in Genus

The fifth module introduces the Genus software and how to operate it by teaching some of the basic commands that are used. There are many different ways to use the set of commands with many command-line options covered throughout the course so take note of these uses. These labs require the use of a text editor, I would recommend using vim or gvim (vim with a GUI) on the Palmetto cluster, but the choice is yours (either can be launched using the vim or gvim command). The labs for module 5 require slightly more critical thinking than most courses and require you to do a lot of work on your own, however if you find yourself stuck there are solutions located in the appendices of the lab manual. During the first lab you are asked to solve an issue with the elaboration process. The manual mentions that you should see a "Done elaborating..." message, however if you are having trouble seeing this then simply run the command check_design -unresolved. This should show no errors or unresolved instances, as seen below.

Finally, labs 1-3 must be completed one after the other in one session. In other words if your Palmetto Cluster session ends, you must start again from lab 1. Lab 4 is independent of the first three, however the labs for the 6th and 7th modules also connect to labs 1-3 so it may be better to do the module 6 and 7 labs, then return to lab 5-4.

Module 6: Finding Information in the Design Hierarchy

The sixth module covers getting help while using the Genus software as well as searching for objects. As mentioned in the description of the previous module, the lab for module 6 picks up where lab 3 from module 5 ends. Therefore it is best to do the labs for modules 5 (1-3), 6, and 7 all together.

Module 7: Exploring Genus GUI

Module 7 explores the GUI that comes with the Genus software. This can be launched using the gui_show command in the Genus shell. As with lab 6, this lab must be done together with the labs from modules 5 and 6. Once the GUI is opened, look for the list showing Hier Cell - dtmf_recvr_core, x LeafCells, n Blocks on the left side. If this list in the design browser does not show this item, then right click the top item and select Top Page, as seen below. 

Later, if you encounter permission issues while trying to run the "Run" executable file, run the command chmod +x Run then simply run the file by entering ./Run Verilog and the file should execute successfully.

Modules 8-11

As with the first three modules, modules 8 through 11 do not contain any labs. The lectures for these modules cover editing a netlist, datapath synthesis, debugging and reducing runtime. These are some very important parts of the synthesis process with the Genus software so continue taking notes on these lectures.

Module 12: Genus Physical Synthesis

Before beginning the lab for module 12 you will need to load a new Cadence product. Since this lab involves the use of Innovus, enter module load cadence/DDIEXPORT/22 to load this software. Once this has been done you can begin the lab. This lab involves many steps and many different functions being used so be very careful to enter commands in properly. Once you have begun the lab, do not worry about the step to set the innovus executable path. If you have properly loaded the DDIEXPORT software then the path for the innovus executable will already be set. When you reach the step to read in the lef files, make sure you enter all of them in at once, as shown in the lab manual, otherwise you may encounter errors when trying to use the "read_def" command later on. An example of this can be seen below, do not worry about the warnings, but you should check through the messages for any errors.

Module 13: Low-Power Optimization

Module 13 covers the Genus tool for power optimization. As with the last lab there are a lot of commands to be entered so be cautious when following the lab as an incorrect command can cause errors later in the lab.

Module 14: Test Synthesis

This module covers some aspects of test synthesis such as scanning and running a dft check. Once again this lab involves many commands being entered so be cautious with this process.

Modules 15-16

These modules cover using the LEC and other tools as well as the flowkit tool, respectively. There are no labs for these modules, but it is still important to follow along with the lectures to understand these tools.

Resources

Virtuoso Layout Design Basics vIC6.1.8

Requirements

Introduction

Cadence's Virtuoso is another EDA tool which can be used for the analysis or design of electronic circuits or PCBs. This course introduces the Virtuoso design GUI and gives a general overview of using this software. On the Palmetto Cluster, we have access to the 618 version of the software, so be sure to enroll in the vIC6.1.8 edition of the course. To launch the software on the Cluster, use the command module load cadence/IC/618 then enter virtuoso & to launch the Virtuoso software.

Information

Module 1 & Database Downloads

As with the previous two courses, this course is Linux-based, therefore you must download the lab database on a Linux machine and unzip it. Instructions for how to do this can be seen in the Xcelium Simulator course on this guide page. Module 1 simply provides and introduction to the course.

Module 2: The Design Environment

Module 2 introduces the GUI of the Virtuoso software, how to set preferences, how to use each window and what each window does. If the software prompts you for a license, click the session button until the software finds the proper license. One of the labs will require you to find the gpdk090.tf file. If you are having trouble finding the file, it is located in the custom_oa22/pdk/libs.oa22/gpdk090 file. Finally, if you need to find the float icon for the palette side bar, look to the top right of the window, as seen below.

Module 3: The User Interface

The third module covers the palette and the windows displayed within it (for example the layout or objects windows), as well as some other aspects of the GUI. When you open the GUI the layout window should already be displayed in the palette. However, if it is not, change the workspace configuration to Classic and it should appear.

The workspace configuration option is the pull down menu in the top right of the GUI, as seen in the image to the left. One of the later labs will have you use the Log Filter option, which can be found in the CIW (command window) rather than the Virtuoso Layout Suite. Finally it is important to note that any commands entered in the command window cannot contain any spaces and must always have the parentheses afterwards regardless of if there are any inputs.

Module 4: Basic and Advance Layout Commands

This module covers all sorts of commands that can be used in the Layout Suite, such as creating or editing parts. The labs for this module are fairly straightforward, however it should be noted that you should be using the custom_oa22 directory unless otherwise specified as the lab manual does not directly mention that this is the directory to be using.

Module 5: Design Rule Driven, Hierarchical Design and XStream In and Out

The final module covers some basics of viewing hierarchy and the importing and exporting translator. Once again you will need to be operating in the custom_oa22 directory for these labs. One final note, the save variant button of the create via isn't labeled (though it is the standard floppy disk symbol), but for reference the image below shows where to find it in the middle of the window.

Verilog Language and Application

Requirements

Introduction

The Cadence Verilog Language and Application course offers a basic training in using the Verilog hardware description language. This course requires the use of the Xcelium and Genus software, so completing these courses first may be beneficial. The corresponding labs require you to design some modules using Verilog, so if you find yourself seriously stuck they do have a solutions directory within the lab folder. Before beginning any of the labs you must enter module load cadence/XCELIUM/2209 on the Palmetto Cluster terminal command line in order to use the Xcelium software.

Information

Module 1 & Database Downloads

Module 1 gives an overview of the course while the database downloads page provides the necessary files for completing the labs for this course. For instructions on unzipping or extracting the files from the database download zip file, look to the Xcelium Simulator guide page.

Module 2: Describing Verilog Applications

The first module in this course provides an introduction regarding what Verilog is, how it can be used, and what it can be used for. The only lab corresponding to this module does not involve any work, rather it requires you to review the design you will be tasked with creating in the upcoming labs.

Module 3: Verilog Introduction

Module 3 teaches the very basics of creating a "program" or a design in Verilog. You will use this knowledge to create a multiplexer in the first lab. These labs require a lot of work to be done on your own, so as mentioned in the introduction, the course offers solutions within the database download if you find yourself stuck.

Module 4: Choosing Between Verilog Data Types

The fourth module for this course covers all sorts of topics relating to Verilog data types. This includes declaring inputs and outputs, declaring net and register variables, using vectors or arrays, etc. The lab continues with building the RISC design by having you design a Data Driver.

Module 5: Using Verilog Operators

As the title describes this module dives into using Verilog operators, either arithmetic or logical. Fittingly the lab will involve creating an ALU for the RISC design. This lab should be fairly straightforward. Refer to the resources section for a complete list of Verilog operators.

Module 6: Making Procedural Statements

Module 6 introduces procedural statements, that is the always and initial statements. These are vital to using Verilog so pay close attention with this module. The lab for this module is somewhat odd. You are tasked with making a controller or state machine of sorts. The lab manual gives you a list of outputs, the best way to do this lab is to simply "decode" the input and set the outputs accordingly. This machine is not synchronous so do not use a clock with your always statement.

Module 7: Using Blocking and Nonblocking Assignments

Module 7 covers blocking and nonblocking assignments which are special assignment operators which control the order of execution. This lab is fairly straightforward and simply requires you to create a simple register.

Module 8: Using Continuous and Procedural Assignments

In Verilog there are rules regarding which variable can be assigned values outside or inside a procedural block. This module will cover some of this information. The lab is somewhat tricky as it requires you to use a bidirectional inout type port. I've included a website which provides an example of using this port type to make this less confusing.

Module 9: Understanding the Simulation Cycle

This module covers controlling the flow of a simulation. This involves using delay statements, blocking statements, etc. The lab furthers upon this by having you create a synchronous counter which will using blocking statements within a procedural block.

Module 10: Using Functions and Tasks

As the title describes, this module introduces creating your own functions and tasks in Verilog. There is one lab for each, functions and tasks, and both are somewhat more complicated than the prior labs. Once again I have included a website which provides more information on each structure and some examples as well. These websites can be found in the resources section below. Once you get started on the function lab, you may want to delete the cnt_out output from the in-out list as the compiler does not like this option. There are other ways to assign the output than this.

Module 11: Directing the Compiler

This module covers providing instructions or inputs on the command line for the compiler to use. The lab involves using an input text file to test the functionality of the RISC you have created for the last several labs. However the names of the files and directories in the file provided in the lab directory are incorrect. Change these so the simulation can run properly, the files.txt file should look similar to the one shown below.

Module 12:  Introducing the Process of Synthesis

The twelfth module introduces synthesizing an HDL design. This lab requires the use of the cadence Genus software which can be loaded by entering module load cadence/GENUS/211. If the lab prompts you with an error regarding the GENUSHOME system variable, set this by entering export GENUSHOME=/software/commercial/cadence/GENUS211 on the linux command line to fix this.

Module 13: Coding RTL for Synthesis

Module 13 teaches the best practices for coding Verilog with Synthesis in mind. Certain practices are best and can make a design easier to synthesize. The lab for this module is quite straightforward.

Module 14: Designing Finite State Machines

This module covers an important part of a computer circuit or design: a state machine. The lab description of what your task is can be rather vague for this module so once again solutions can be found in the main directory if need be.

Module 15: Avoiding Simulation Mismatches

The fifteenth module for this course explores some root causes for errors in simulation. There are no labs for this module but these are common issues that you are likely to see while using the Verilog language so pay close attention to the lecture.

Module 16: Managing the RTL Coding Process

The sixteenth module also introduces some good coding practices such as naming nets and keeping the design organized. Once again there is not a lab associated with this module however as always the lecture teaches some very important subjects so be sure to take notes.

Module 17: Managing the Logic Synthesis Process

This module gives an overview of the logic synthesis process, what is happening, what the steps are, and how to use it. As with the past two modules there are no labs with this module.

Module 18: Coding and Synthesizing an Example Verilog Design

This module provides an example of a Verilog design and has you test a design as the lab. After testing the design in the lab you will also use a shell script to synthesize the design. This requires the use of the Genus software so once again be sure to load it before starting the lab.

Module 19: Using Verification Constructs

This module, as it describes, covers certain verification constructs such as logical equality operators, loop statements, forks, waits, etc. For the lab you are to edit the test.v file. The description of the task is somewhat vague, but it is looking for you to use a fork operation to complete the lab at hand.

Module 20: Coding Design Behavior Algorithmically

The twentieth module for this course describes different forms of modeling such as RTL, behavioral, and sequential. There are no labs associated with this module.

Module 21: Using System Tasks and System Functions

Module 21 introduces some of the pre-built tasks and functions that are included with the basic Verilog library. These are incredibly important as you will likely end up using some of these in your own work. The lab is fairly straightforward and will have you use some functions such as $display and $monitor.

Module 22: Generating Test Stimulus

This module introduces several ways to go about creating stimulus to test a design. This will lead into the next module which covers test benches. There is a lab corresponding to this module, but it should be rather straightforward.

Module 23: Developing a Testbench

Testbenches are a crucial part of the design process and are the primary tool in testing a Verilog design, so this module is very important. This module will introduce what test benches are, what they seek to do and how they go about doing it. The lab for this module requires the use of command line inputs, so when you compile the design you must include the -access +rwc options in order to enter commands while the program runs.

Module 24: Example Verilog Testbench

The final module is another example module, this time for a testbench. There are two labs corresponding to the module, both of which are fairly straightforward. The first involves using Verilog 1995 constructs, while the other uses Verilog 2001.

Resources

Digital IC Design Fundamentals

Requirements

Introduction

The Digital IC Design Fundamentals course introduces some of the basics and methodologies of the digital circuit design process. This include practices, RTL implementation, and the theory behind it. The labs for this course only relate to the SystemVerilog section of the course, so this manual section will go lab by lab rather than module by module.

Information

Lab 1: Data Driver

Lab 1 involves creating a driver which can pass values on. This involves creating two smaller level drivers and having each instantiated in a top-level module which drives a single net. The design specifications are somewhat vague. Each buffer should pass its input value along when enabled, otherwise it should pass a high-impedance (z) signal. The output for the top-down system is the same bit width as the two instantiated
sub-modules, it is simply driven by both of the outputs of each sub-module.

The net data_out should also have a width of 4 bits

Lab 2: Multiplexer

For lab 2 you must design a simple multiplexer using a case statement. Be sure to include the timeunit and timeprecision directives. Since they are included in the testbench, they must also be included in the behavioral module. Check the testbench for guidance on how to implement these directives. The lab also requires you to use an always_comb procedural block, an example of how to use this can be seen below:

always_comb end

/* Code goes here */

end

Notice that there is no need for a sensitivity list or any synchronization since we are implementing purely combinational logic with this block.

Lab 3: ALU

As with the previous lab, remember to include the timeunit and timeprecision statements in order for the module to operate successfully. These statements can be found in the *_test.sv file for reference. For the module, the output ports should be declared as register ports. Since they are being assigned values within a procedural block, they need to be register variables in order to be driven correctly.

Lab 4: Simple Register

This lab introduces combinational logic and a new procedural block. Since we are implementing a register here, we need to use a synchronous, combinational circuit. This can be done using the always_ff procedural block. Since there is also an asynchronous, active-low reset, the negative edge of this input needs to be included in the sensitivity list of the procedural block. The block should look similar to the one seen below:

always_ff @ (posedge clk or negedge rst_) begin

/* Code goes here */

end

Lab 5: ALU Using SystemVerilog Packages

Lab 5 introduces the SystemVerilog feature of packages. These serve as a sort of directive for the compiler, pulling together multiple type definitions, functions, etc that can be imported and used in designs. They can be somewhat difficult to understand, so use the website listed below to learn more about them. This lab asks us to define the opcode enumeration type, then modify the existing case statement to use the enumeration definitions. The package containing the enumeration should be written at the top of the alu file, and no changes need to be made to the testbench file.

Lab 6: Simple Counter

This lab is very straightforward. It uses some constructs already covered in previous labs, such as the always_ff procedural block, to implement a special counter register. Remember to always include the timeunit and timeprecision directives which, as always, can be found within the testbench file for reference.

Lab 7: State Machine

For the final lab we are asked to create a controller for a simple processing system. To begin, the testbench for this file includes some hierarchical lookups needed for the test. If elements of the behavioral file are not named properly, they can cause errors. Be sure to check the testbench for reference of how elements of the behavioral module should be named.

Resources

Innovus Block Implementation With Stylus Common UI

Requirements

Introduction

The first Innovus course covered here involves the use of Cadence's Innovus software. The lecture section of this course will cover the use of the software as well as some of the key aspects of digital design and implementation. The labs will cover the use of the software through both the GUI as well as the Innovus terminal command line.

Information

Modules 1-4

The first four modules for this lab do not contain any labs.

Module 5: Floorplanning the Design

To begin, the Innovus software must be launched before beginning the lab. The Innovus software can be accessed from the Palmetto Cluster by first entering module load cadence/DDIEXPORT/22, then entering Innovus & or Innovus -stylus. Sometimes this will prompt the "illegal command" error. In this case, create another palmetto cluster interactive session in which the interconnect setting is set to either fdr or hdr, as seen below. After starting the program and importing the design the lab asks you to enter the following command: read_def DTMF_CHIP_io.def. In order to do this you must enter the command in the terminal you launched Innovus from. You'll notice that this terminal is running the Innovus software and has a command lone looking similar to Innovus > where you can enter this command.

Module 6: Power Planning

There are no labs for this module.

Module 7: Routing Power with Special Route

The labs corresponding to module 7 pick up where lab 5 leaves off. If you can, leave the floorplan or Innovus session from lab 5 open once finished, otherwise the setup should be re-imported using the same steps from part 1 of lab 5-1. During the lab you are asked to source a setup file. To do this, go to the Innovus terminal and enter the command source dtmf.setup in order to run the setup script. Later on when trying to view the power analysis log file, you will need to enter some commands in the Innovus terminal once again. Start by entering cd run1 to change to the "run1" directory. Then enter gvim DTMF_CHIP.rpt to open the analysis log file. Keep in mind you do not need to use gvim as your file viewer, this is just my preference. Other options include vim and more. Once you have closed the file enter cd ../ to return to the working directory.

Modules 8-9

There are no labs for modules 8 and 9.

Module 10: Analyzing Route Feasibility with the Early Global Router

Module 10 covers the basics of the key steps in IC design of Placement (determining where blocks will go on the IC) and Routing (connecting each of the blocks using nets). The first lab will cover the placement aspect of it and the second lab will cover the routing aspect. Be sure to save the design once complete as this design will be needed later on in module 12.

Module 11

There are no labs for module 11.

Module 12: Extracting Parasitics and Running Timing Analysis

This module covers another step in the VLSI design flow, timing analysis. This step comes after the blocks have been placed and the design has been routed. When first beginning the lab, you may need to open the pr.inn design which was saved during module 10. When opening this design via the Restore Design if you encounter issues, the saved editions of the Innovus files can be found in the main FPR directory under pr.inv.dat. I find it best to source this file via the command read_db ../saved/pr.inv.dat instead of the Restore Design feature as this seems to work better.

Module 13

There are no labs for Module 13.

Module 14: Implementing the Clock Tree

This lab covers creating and viewing the clock tree during clock tree synthesis. To begin the lab I would recommend following the steps given in the lab manual to load the pr.inv.dat file using the read_db command instead of loading the file saved during previous labs. This will help avoid any issues or complications arriving from the saved file. Later on, a routedExtracted.inv.dat file will need to be used. This file can simply be found within the "work" directory.

Module 15: Detail Routing for Signal Integrity, Timing, Power and Design for Yield

As with the previous lab, the best step in starting this lab is to use the read_db command. This command can be run as follows: read_db ../saved/postCTSopt.inv.dat. This should load the proper file and starting point for this lab. After this step the lab should be fairly straightforward.

Module 16: Wire Editing

Module 16 introduces drawing and editing wires within the Innovus software. To begin you must open the EditRoute.dat file stored within the EDIT_ROUTE directory. This should be rather straightforward as this should be the directory from which you launched the Innovus software. Prior to creating a wire and connecting two pins, you must first select the 'refclk' pin and copy that name into the field of the edit route form. To select this pin, draw a box around the entire pin using the left button on the mouse. Now the 'Copy From Selected' button in the edit route form can be used.

Later on, when editing which metal a net is, begin by selecting the net you wish to change. Next, click the pull down menu on the 'Change Layer' button. Then select the metal of your choice. Finally, click the middle of the 'Change Layer' button. The metal layer of the selected net should now be changed. Verify this by zooming in on the net until you can see the metal number.

Modules 17-18

There are no labs for these two modules.

Module 19: Verification

Module 19 contains fairly straightforward labs that teach how to perform various verification checks in the Innovus software. This includes design rules checking as well as checking connectivity. There is one optional step mentioned in which the lab manual asks the user to view a loop using the 3D viewer. In the Palmetto Cluster this cannot be done as there is no access to the software which is needed to run the 3D viewer within Innovus.

Module 20: Engineering Change Orders

Module 20 has yet another easy and straightforward lab. This lab involves using the eco route feature of Innovus and simply requires running a handful of commands.

Modules 21-22

There are no labs for modules 21 and 22.

Module 23: Innovus Database Access Commands

Similar to module 20, module 23 involves using a handful of commands. These commands will help with gathering information about the software and the design. Remember that when querying attributes for a singular cell use the singular function base_cell:*, rather than the plural (base_cells) as you would when querying multiple or all cells.

Module 24: Stylus Flow Generation

The final lab for this course, the flow generation involves creating a new flow and modifying some scripts. Towards the end of the lab, you must run the flowtool -reset function prior to trying to access the reports directory. This function can take a little while to complete running, so be patient with this step.

Resources

Innovus Hierarchical Implementation System with Stylus Common UI

Requirements

Introduction

Information

Module 1

Module 1 does not contain any labs as it simply serves to introduce the course.

Module 2: Innovus Implementation System Overview

There are no labs corresponding to module 2.

Module 3: Partitioning the Design

Lab 3 begins with moving some parts around on a loaded in design. To move parts around you must first select the move/resize/reshape option. If you cannot find the icon for this option, then you can either press shift+r or select move/resize/reshape from the edit drop down menu. The icon to select this option from the toolbar looks as such:

Later on the lab will require you to save the version of the DTMF_CHIP you are working on. In order to save it you must currently have the top-level design open in the Innovus window. The window should look similar to the one seen below.

Module 4: Placing Pins

There are no labs corresponding to module 4.

Module 5: Bus Planning

Module 5's lab is fairly straightforward. Later into the lab there is a step which requires you to use the F3 key. Be sure to hold down the function key while doing so, otherwise the program will not recognize the simple pressing of F3.

Module 6: Interface Logic Models

The lab associated with module 6 is fairly straightforward and simply requires that you run a handful of commands. Remember that you must first write the ilm directory for both the tdsp_core and the arb designs before reading them into the top-level DTMF_CHIP design. Also make sure that the directories are named correctly.

Module 7-9

There are no labs corresponding to modules 7 through 9.

Resources