6. Programming model

The SiliconCompiler project includes a Python API and programming model to facilitate development of advanced hardware compilation flows. The basic programming model includes the following ordered steps.

6.1. Object Creation

Compilation is based on a single chip object that follows the design from start to finish. A chip object is created by calling the Core API class constructor.

import siliconcompiler

chip = siliconcompiler.Chip('topmodule')

6.2. Setup

Once the chip object has been created, functions and data are all contained within that object. A compilation is set up by accessing methods and parameters from the chip object. Parameters can generally be configured in any order during setup.

The snippet of code below shows the basic principles.

chip.set('input', 'rtl', 'verilog', '<file>.v')

6.3. Run

Once all the parameters have been setup, compilation is done by a single atomic call to run().

chip.run()

6.4. Inspection

Once the compilation has completed, chip object can be queried and another run() can be called.

chip.summary()
print(chip.get('metric', 'cellarea', step='syn', index='0'))
#..do something else

For complete information, see the Core API section of the reference manual.