Difference between revisions of "CMOS Digital Design"

From Applied Optics Wiki
Jump to: navigation, search
(created a Digital IC design flow page)
 
m
 
(3 intermediate revisions by the same user not shown)
Line 6: Line 6:
 
# VHDL to RTL
 
# VHDL to RTL
 
## Write and test your VHDL code. You can do this with Xilinx or in any text editor. If you use a text editor you can simulate your code using NCLab.
 
## Write and test your VHDL code. You can do this with Xilinx or in any text editor. If you use a text editor you can simulate your code using NCLab.
 +
# Simulating with NCLab.
 +
## Use your favourite text editor to edit run.sh, eg: '''vi run.sh'''
 +
## At the prompt type '''./run.sh'''. This runs a little bash script that makes sure your paths, options and other parameters are correctly sent to Incisive.
 +
# VHDL to RTL
 
## Create a folder for the RTL compiler
 
## Create a folder for the RTL compiler
 
## Copy the relevant vhdl/verilog files into the folder
 
## Copy the relevant vhdl/verilog files into the folder
Line 15: Line 19:
 
## View the resulting RTL schematic by typing '''gui_show''', then '''gui_raise''' to move GUI window above. Use '''gui_sync''' to keep prompt and GUI window synchronised.
 
## View the resulting RTL schematic by typing '''gui_show''', then '''gui_raise''' to move GUI window above. Use '''gui_sync''' to keep prompt and GUI window synchronised.
 
## You can now synthesize your vhdl to a netlist that uses cells from your chosen library. Run '''synthesize'''. Run it 3 times to optimise
 
## You can now synthesize your vhdl to a netlist that uses cells from your chosen library. Run '''synthesize'''. Run it 3 times to optimise
## Write your netlist to hdl as write_hdl > output.v
+
## Write your netlist to hdl as '''write_hdl > output.v'''
## Exit rc by typing rc.
+
## Exit rc by typing '''exit'''.
 
# RTL to layout
 
# RTL to layout
 
## Run '''ams_encounter -tech c35b4''' (generates required library files)
 
## Run '''ams_encounter -tech c35b4''' (generates required library files)
 
## Run '''encounter''' at the command prompt. This starts encounter for layout planning, power planning
 
## Run '''encounter''' at the command prompt. This starts encounter for layout planning, power planning
# Choose '''File ''' >> '''Import Design''' >> '''Load''' >> '''c35b4_std.conf'''
+
## Choose '''File ''' >> '''Import Design''' >> '''Load''' >> '''c35b4_std.conf'''
 
## Choose the veriloga file you've just exported
 
## Choose the veriloga file you've just exported
 
## Specify '''top''' or choose '''auto'''
 
## Specify '''top''' or choose '''auto'''
Line 29: Line 33:
 
#### Specify a width to length ratio. Aim for a utilization of 1. A good starting value is 0.8
 
#### Specify a width to length ratio. Aim for a utilization of 1. A good starting value is 0.8
 
### Power
 
### Power
 +
#### Add a ring around your core
 
#### '''Power''' >> '''Power Planning''' >> '''Add ring'''
 
#### '''Power''' >> '''Power Planning''' >> '''Add ring'''
 
#### The power rings we want are gnd! and vdd!.  
 
#### The power rings we want are gnd! and vdd!.  
Line 40: Line 45:
 
#### Save design
 
#### Save design
 
### Edit pins
 
### Edit pins
#### Edit >> Pin editor
+
#### Click '''Edit''' >> '''Pin editor''' on the menubar
 
#### This allows you to determine the layout of the pins. You can specify which side of the silicon block to put pins, spacing, metal layer etc.
 
#### This allows you to determine the layout of the pins. You can specify which side of the silicon block to put pins, spacing, metal layer etc.
 
#### Click apply after each edit to save and update positions
 
#### Click apply after each edit to save and update positions
Line 56: Line 61:
 
#### This connects the power supply to your cells
 
#### This connects the power supply to your cells
 
### Route design
 
### Route design
#### Click '''Route''' >> '''Nano Route''' >>> '''Route'''
+
#### Click '''Route''' >> '''Nano Route''' >> '''Route'''
 
#### It is a good idea to specify which metal layers should be used. We usually use Metals 1 to 3 with the C35 process. Specify this in the Routing Control, bottom:top layers section
 
#### It is a good idea to specify which metal layers should be used. We usually use Metals 1 to 3 with the C35 process. Specify this in the Routing Control, bottom:top layers section
 
#### Save design
 
#### Save design
 
### Export the design  
 
### Export the design  
 
#### The layout is complete now, and you can export it to GDS2.
 
#### The layout is complete now, and you can export it to GDS2.
#### Click File>>Save>>GDS/Oasis
+
#### Click '''File''' >> '''Save''' >> '''GDS/Oasis'''
 
#### Make sure to load gds.map
 
#### Make sure to load gds.map
 
#### Save as filename.gds
 
#### Save as filename.gds
 
## Layout into Cadence
 
## Layout into Cadence
### asdfadsf
+
### Start Cadence
#### Add a ring around your core
+
### From the IFCB choose '''File''' >> '''Import''' >> '''Stream'''

Latest revision as of 11:06, 26 November 2013

This is a quick flow for digital IC design flow.

Please borrow the MSC/STFC Introduction to Digital IC Design Flows from Roger Light (x13233).

Platform: Cadence/Incisive/RTL Compiler/AMS C35

  1. VHDL to RTL
    1. Write and test your VHDL code. You can do this with Xilinx or in any text editor. If you use a text editor you can simulate your code using NCLab.
  2. Simulating with NCLab.
    1. Use your favourite text editor to edit run.sh, eg: vi run.sh
    2. At the prompt type ./run.sh. This runs a little bash script that makes sure your paths, options and other parameters are correctly sent to Incisive.
  3. VHDL to RTL
    1. Create a folder for the RTL compiler
    2. Copy the relevant vhdl/verilog files into the folder
    3. Run rc at command prompt in the folder. This will generate a subfolder that RC uses to keep track of your design
    4. At the rc prompt point to the correct process library setting attributes with: set_attribute library /eee/vlsi/DesignKits/AMS/v4.00/liberty/c35_3.3V/c35_CORELIB.lib
    5. Read in your hdl using read_hdl -vhdl filename.vhd
    6. To actually make sense of the design structure, elaborate your design. This converts the VHDL to an in-memory netlist. Type elaborate
    7. Verify the design with check_design -all
    8. View the resulting RTL schematic by typing gui_show, then gui_raise to move GUI window above. Use gui_sync to keep prompt and GUI window synchronised.
    9. You can now synthesize your vhdl to a netlist that uses cells from your chosen library. Run synthesize. Run it 3 times to optimise
    10. Write your netlist to hdl as write_hdl > output.v
    11. Exit rc by typing exit.
  4. RTL to layout
    1. Run ams_encounter -tech c35b4 (generates required library files)
    2. Run encounter at the command prompt. This starts encounter for layout planning, power planning
    3. Choose File >> Import Design >> Load >> c35b4_std.conf
    4. Choose the veriloga file you've just exported
    5. Specify top or choose auto
    6. Save the design
    7. Now you can go through these steps to layout
      1. Floorplanning
        1. Floorplan >> Specify Floorplan
        2. Specify a width to length ratio. Aim for a utilization of 1. A good starting value is 0.8
      2. Power
        1. Add a ring around your core
        2. Power >> Power Planning >> Add ring
        3. The power rings we want are gnd! and vdd!.
        4. Click ... to choose nets (pulled from netlist)
        5. Specify layers and width/spacing
        6. Add stripes to connect the rings and distribute the power more evenly
        7. Save design
      3. Place end capacitors
        1. First place end-caps. These are fill cells that act as power decoupling/bypass capacitors.
        2. Do Place >> Physical Cell >> End Cap (R/L)
        3. Save design
      4. Edit pins
        1. Click Edit >> Pin editor on the menubar
        2. This allows you to determine the layout of the pins. You can specify which side of the silicon block to put pins, spacing, metal layer etc.
        3. Click apply after each edit to save and update positions
        4. Save the design
      5. Place design
        1. Place >> Place >> Standard Cell
        2. This places your design in the floorplan
        3. Switch to Physical View (on top right of tooolbar) to view the design
        4. Save the design
      6. Save SDF/SDC data
        1. Do Timing >> Extract RC
        2. Specify a filename and save to file.
      7. Route Power
        1. Choose Route >> Special Route
        2. This connects the power supply to your cells
      8. Route design
        1. Click Route >> Nano Route >> Route
        2. It is a good idea to specify which metal layers should be used. We usually use Metals 1 to 3 with the C35 process. Specify this in the Routing Control, bottom:top layers section
        3. Save design
      9. Export the design
        1. The layout is complete now, and you can export it to GDS2.
        2. Click File >> Save >> GDS/Oasis
        3. Make sure to load gds.map
        4. Save as filename.gds
    8. Layout into Cadence
      1. Start Cadence
      2. From the IFCB choose File >> Import >> Stream