ICMake Help Page
last modified 4/20/00
This page gives a quick introduction to the icmake program. The program itself is
still under construction, as is this page...
Topics:
Program Overview
The purpose of the icmake program is to automate the design flow pictured in these Concept Slides. The entire flow is not yet implemented, and
each step in the slides is actually broken into several smaller steps, but the concept
remains the same. icmake is not actually a single program, but a collection of
about 15 Perl scripts which are invoked hierarchically.
Similar to the make program, icmake allows you to specify an arbitrary number of
targets which will be built in the order you specify. To use the program, follow
these simple steps:
- Source the setup script in /tools/cds99/local/setup/cds99st025_setup.csh
- Create a project directory
- Create a file called ICMakefile with the syntax described below
- Type "icmake [target name]" from the directory containing the ICMakefile
icmake will make the target you specify, or make the target all
if no target is specified. In the process, icmake creates a number of
directories and files:
- icmake.log - the log file (appended with the target name if specified
at the command line)
- design.edif - the netlist generated by the first step of the
design flow
- log/ - directory where all supplementary log files are kept
- mdl/ - directory where all MDL files are copied
- vhdl/ - directory where all VHDL files are copied/generated
- dfII/ - directory where all Cadence Design Framework II databases are
kept
- cdsrun/ - directory where icfb is invoked (which uses the
Design Framework II Database)
- dcrun/ - directory where Synopsys Design Compiler is invoked
- epicrun/ - directory where EPIC tools (TimeMill/PowerMill/PathMill) are
invoked
- clrun/ - directory where Calibre DRC and LVS are invoked
- pillar/ - directory where all Cadence Pillar databased are kept
- dprun/ - directory where areaPdp (the floorplanning tool) is
invoked (which uses the Pillar Database)
ICMakefile Syntax
Parameters
- LIBRARY - no longer used, provided for backwards
compatibility
- DESIGN - cell name of the top level design (same as the Simulink
subsystem name)
- SOURCEFILE - name of the top level MDL file
- LIBFILES - names of all referenced MDL files
- MDLPATH - search path for MDL files (the first entry in the path should
always be "/vol/hitz/vol1/designs/scr/icmake/lib/mdl/R11/precompiled" )
- TOLERANCE - if set to "low", icmake will halt upon
encountering the first error, if set to "high", then icmake will keep running
until the end of the flow unless a fatal error is encountered
Target Definition
- new_target: target1 [target2] ...
- new_target:
command1
[command2]
...
Built-In Targets
- netlist
- bcc - create the EDIF file from the Simulink files using Hayden So's bcc
program
- elaborate
- elab - create the dfII schematic hierarchies for
Macros of all types except Buffer (make symbols only for buffers)
- ein - read the EDIF file to create the dfII schematic hierarchy for the
rest of the chip
- buf - find the load attached to the output of all Buffer macros and
make the schematic hierarchies for the buffers
- abs - make the abstract views for all Block, Module, and Buffer macros
- floorplan merge
- pil - import the netlist and abstracts into Pillar to create the autoLayout
hierarchy (the skeleton floorplan)
- mrg - merge the autoLayout hierarchy with the
placement information in the floorplan hierarchy
Commands
- EPIC Simulation
- EPIC = testname libname cellname vector_dir - set up an EPIC
run in the directory epicrun/testname using Simulink test vectors from the
directory vector_dir with the prefix testname. The EPIC netlist is
generated from cell cellname in library libname.
- route & verify
- CALIBRE = libname - run Calibre DRC and LVS checks on every
cell in library libname
- CALIBRE = libname cellname - run Calibre DRC
and LVS checks on cell cellname in library libname
- ICC = libname cellname - run IC Craftsman on cell cellname
in library libname and import the result into dfII. This command assumes
that an autoLayout view exists in pillar with placed cells and boundary pins.
maintained by Rhett Davis
wrdavis@eecs.berkeley.edu