CMOS Digital Design
From Applied Optics Wiki
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