Copy the following files into your working directory by right-clicking the link, using "Save Link As...", and making sure to not change the filename from what is shown (even makefile or Makefile.txt instead of Makefile).
Makefile: contains all the commands needed for simulation and synthesis.
dc-template.tcl: template used to generate a customized command file Design Compiler
.synopsys_dc.setup: make sure the file begins with a period (the filename should begin with '.')
circ.v: example design with 2-bit and 32-bit multipliers and registers
def.v: submodule of circ.v with 2 FFs
circ.vfv: file that contains all source verilog files for simulation
circ.vfs: file that contains all source verilog files for synthesis
Type the following commands to run synthesis in default mode. The synthesis tool will generate the gate netlist circ.vg, which contains the gates to be placed and routed in Cadence Innovus.
make compilenc
The purpose of this step is to perform a simple compile with the ncverilog simulator to perform some simple checks. If you get an error, look at the messages and try to figure out what is wrong. DC is a very reliable tool that will work if you follow directions correctly and your account is in good shape (e.g., your disk space is not full). You can also try /software/Cadence/INCISIVE152/tools/bin/ncverilog -c -l circ.logv -f circ.vfv
make synth
This command runs Synopsys Design Compiler which synthesizes circ.v into the functionally-identical gate netlist circ.vg which you should take a look at. Look for cells with names beginning with DFF, NAND2, XOR2, OR3, and many others including the very useful or-and-invert OAI gate.
If you get an error saying "command not found", follow these instructions:
Open up a new terminal
Type "setup cadence" (without quotes) and press enter
Type "setup designcompiler" (without quotes) and press enter.
The tools should work once you close the current terminal window and open a new one.
Start Cadence Innovus by typing /software/Cadence/INNOVUS211/tools/bin/innovus . Do not run in the background (by following the command with an "&"). If the terminal window shows "command not found", try again on a different ECE machine.
Select File → Import Design from the menu bar.
In the Netlist > Verilog > Files section, click …, click the open button in “Netlist Files” window, expand the window by clicking “>>”, add your netlist file (circ.vg) by double-clicking, and close the “Netlist Files” window.
Check “LEF Files” radio button, click …, expand the window by clicking “>>” , add the LEF file /software/classtools/EEC116/nangate_45_2011_v2010.12/NangateOpenCellLibrary_PDKv1_3_v2010_12/Back_End/lef/NangateOpenCellLibrary.lef by double clicking, and close the “LEF Files” window.
Library Exchange Format (LEF) gives the abstract information such as the PR boundary, pin positions and metal layers of a cell.
Enter Power > Power Nets: VDD
Ground Nets: VSS.
Click OK.
Before placing the standard cells, specify the design dimensions.
Select Floorplan → Specify Floorplane... from the menu bar.
To distribute power around the chip, the core must be surrounded by power rings. To leave room for the power rings, set the core to IO boundary distance to 10 microns for all directions.
Set 10.0 for Core to Left, Core to Right, Core to Top and Core to Bottom.
Click OK.
Place the power rings (VDD and VSS) within the core to IO boundary space that was made available in Section 2.
Click Power → Power Planning → Add Ring
Enter Net(s): VDD VSS
Use horizontal metal layers for top and bottom and use vertical metal layers for left and right to ensure metal rings run parallel to the core.
In Ring Configuration, select metal9(9)H in the pull-down menu next to Top and Bottom, and select metal8(8)V in the pull-down menu next to Left and Right.
Click OK.
Place the vertical and horizontal power stripes so that power from the rings can reach the standard cells.
Click Power → Power Planning → Add Stripe
Enter Set Configuration > Net(s): VDD VSS
In Set Configuration > Layer, select metal4(4), and choose Width and Spacing using the values in the table below next to the last few digits from your SIS ID.
Enter Set Pattern > Set-to-set distance: 10
Click OK.
Click Power → Connect Global Nets...
Click Connect > Pin radio button if not already selected.
Enter Pin Name(s): VDD
Enter To Global Net: VDD
Click: Add to List
Enter Pin Name(s): GND
Enter To Global Net: VSS
Click: Add to List
Click: Apply
Click: Cancel
Select: Route → Special Route from the menu bar.
Enter Net(s): VDD VSS
Click OK.
After power planning is finished, place the standard cells that you synthesized (circ.vg).
Select: Place → Place Standard Cell...
Click: Mode...
Uncheck: Run Timing Driven Placement
Uncheck: Enable Clock Gating Awareness
Check: Place IO Pins
Click: OK.
Click: OK to close the "Place" window.
You should see placed standard cells. If you do not, press "f" to refresh the display to zoom the chip to fill the window.
Select: Route → NanoRoute → Route...
Leave everything default and click OK to run routing.
Select: Verify → Verify Connectivity
Click: OK
Check the results displayed in the terminal window to verify there are "0 Viols" (violations) and "0 Wrngs" (warnings)
Click "z" to zoom into an area, "Z" to zoom out, and "f" to fill the screen.
Screenshot of your final layout
Screenshot of your final layout zoomed into a section that shows the key dimensions of your power grid by using the ruler
Screenshot of your terminal window showing no violations and no warnings
Your innovus.cmd* files that are automatically generated by Innovus
2023/11/30 Posted 2023/12/02 Added some clarifications