Synthesizing Verilog to the AMI05 Technology Using Leonardo

  1. Log into athena.cse.nd.edu

ssh -X athena.cse.nd.edu

 

  1. Set up the Mentor Graphics environment

source /home/mentor/.bstrc

 

  1. Go to your working directory and copy this Verilog file with a 4-bit ripple-carry adder to it:  ripple_tut.v
  2. Invoke leonardo

setenv MGC_WD .

leonardo &

Click OK in the popup to get a license LeonardoSpectrum level 3

 

  1. Select Tools->Flow Tabs from main menu
  2. Load the AMI05 technology library by typing the following into the Leonardo command window. (Window in bottom right corner with extremely small font.)

load_lib /home/mentor/adk3_0/technology/leonardo/ami05_typ

 

  1. Go to the Input flow tab.  Click the Open File button and open ripple_tut.v.  Highlight the file in the list window and click the Read button.
  2. Go to the Optimize flow tab. 

After optimization, a new design INTERFACE_XRTL should appear in the design list.

  1. Open the schematic for the synthesized design mapped to the AMI05 library by double-clicking on ripple4->INTERFACE.  It should contain full adder (fadd) blocks.  Double-click one of these to view the schematic for that.  (Note that INTERFACE_XRTL is the technology-independent RTL design.  You can also look at the schematic for this).
  2. Go to the Output flow tab.  Set the output file type as Verilog, and save the output as ripple_tut_ami05.v
  3. You can experiment with different synthesis optimization options, such as optimize for timing instead of area, or flattening the hierarchy, or mapping to an FPGA technology.  Note that if you want to restore hierarchy after you've flattened it, you need to go back to the Input tab and re-read the Verilog file.
  4. Close Leonardo and log out of athena when you're done.

Generating a Mentor Graphics EDDM Design Viewpoint for Layout

  1. Back on a Linux box, set the Mentor environment for ICStation

source /opt/und/mentor/.icflowrc

 

  1. Set the working directory to where your synthesized Verilog file is and invoke DesignArchitectect_IC

setenv MGC_WD .

da_ic &

 

  1. From the main menu, select File->Import Verilog.  In the popup, click on Netlist File(s) to get another popup and fill it in as follows, using the file browser buttons and Add-> buttons:

Click OK on both popup windows

  1. To view the schematic, select File->Open-Schematic from the main menu and browse to the ripple4 component.
  2. Exit da_ic by selecting MGC->Exit from the main menu.
  3. Back at the Linux prompt, list your working directory.  You should see new directories that correspond to the EDDM components for ripple4 and fadd (as well as some other files).
  4. Create design viewpoints from the EDDM component that you just created by typing:

adk_dve ripple4

Using ICStation for Automatic Placement and Routing

  1. Open ICStation by typing at the Linux prompt

adk_ic &

 

  1. Click on the Create button in the panel (on the right of the window) to create a new layout cell.  Fill in the popup as follows:

Click okay and don't worry about the warnings about read locks, etc.

  1. In the IC Palette, click the ADK Edit button at the bottom to switch to the ADK Edit palette.  In the ADK Edit palette, click on the P&R button to get the Place and Route Palette.
  2. Floorplan the design by clicking on the Autofp button.  Use the default values in the popup and click the OK button.  Some green bounding bars and boxes should appear in the cell.
  3. Place the cells in the design by clicking the StdCel button under the Auto Place heading in the palette and click OK in the popup.  You should see the cell placed in rows with yellow lines called "overflows" showing the connections between them.
  4. Place the ports by clicking the Ports button.  Accept default values (you might do otherwise later) and click OK.
  5. Now it's time to route the nets in metal.  VERY IMPORTANT: there is a bug in the ADK cell library that can cause the router to short metal lines together when it tries to route wires over the cells.  To avoid this, we'll need to restrict the router to only using metal 2 over the cells!!!!
  6. Click the Auto Route -> All button on the palette, then click on Options in the popup, then click on OCR Options (over cell routing) in that popup.  Here's the key step to saving you hours of debugging looking for shorts in your design:
  7. Most (maybe all) of the nets should be routed at this point, but some overflows (yellow lines) might remain.  You'll need to be very careful routing overflows that go horizontally across cells to make sure that they don't cause shorts!!! To route them:

Layout versus Schematic Check

  1. Still in ICStation we need to perform a layout versus schematic check to verify that the layout is actually a correctly placed-and-routed version of your netlist.
  2. Go back to the ADK Edit palette.  Near the bottom, click on the LVS button.  Fill in the popup with the following:

Click OK

  1. In the ADK Edit palette, click on the little triangular arrow next to Report (next to the LVS button) and select LVS from the popup.
  2. Look at the report that comes up.  Scroll down and you should see a smiley face (really!!) and a check mark if all is well.  If not:

Viewing the Insides of Cells

  1. With click and drag the mouse over the entire cell to select everything.
  2. From the main menu, select Context -> Hierarchy -> Peek.  In the popup, for number of levels enter at least 2.
  3. To turn the display of layers on and off, you need the Layer Palette.  To get it, from the main menu select Other -> Layers -> Show Layer Palette.  In the popup, enter the following into the layers dialog box before clicking OK:

2,3,41-51,61,62

  1. Clicking the middle mouse button on a layer in the palette will turn it's display on and off.