Difference between revisions of "CMOS Digital Design"
From Applied Optics Wiki
(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 | + | ## 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''' | + | #### 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 | ||
− | ### | + | ### Start Cadence |
− | ### | + | ### From the IFCB choose '''File''' >> '''Import''' >> '''Stream''' |
Latest revision as of 10: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
- 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.
- 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
- Copy the relevant vhdl/verilog files into the folder
- Run rc at command prompt in the folder. This will generate a subfolder that RC uses to keep track of your design
- 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
- Read in your hdl using read_hdl -vhdl filename.vhd
- To actually make sense of the design structure, elaborate your design. This converts the VHDL to an in-memory netlist. Type elaborate
- Verify the design with check_design -all
- 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
- Write your netlist to hdl as write_hdl > output.v
- Exit rc by typing exit.
- RTL to layout
- Run ams_encounter -tech c35b4 (generates required library files)
- Run encounter at the command prompt. This starts encounter for layout planning, power planning
- Choose File >> Import Design >> Load >> c35b4_std.conf
- Choose the veriloga file you've just exported
- Specify top or choose auto
- Save the design
- Now you can go through these steps to layout
- Floorplanning
- Floorplan >> Specify Floorplan
- Specify a width to length ratio. Aim for a utilization of 1. A good starting value is 0.8
- Power
- Add a ring around your core
- Power >> Power Planning >> Add ring
- The power rings we want are gnd! and vdd!.
- Click ... to choose nets (pulled from netlist)
- Specify layers and width/spacing
- Add stripes to connect the rings and distribute the power more evenly
- Save design
- Place end capacitors
- First place end-caps. These are fill cells that act as power decoupling/bypass capacitors.
- Do Place >> Physical Cell >> End Cap (R/L)
- Save design
- Edit pins
- 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.
- Click apply after each edit to save and update positions
- Save the design
- Place design
- Place >> Place >> Standard Cell
- This places your design in the floorplan
- Switch to Physical View (on top right of tooolbar) to view the design
- Save the design
- Save SDF/SDC data
- Do Timing >> Extract RC
- Specify a filename and save to file.
- Route Power
- Choose Route >> Special Route
- This connects the power supply to your cells
- Route design
- 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
- Save design
- Export the design
- The layout is complete now, and you can export it to GDS2.
- Click File >> Save >> GDS/Oasis
- Make sure to load gds.map
- Save as filename.gds
- Floorplanning
- Layout into Cadence
- Start Cadence
- From the IFCB choose File >> Import >> Stream