7. ASIC SynthesisΒΆ
This section will describe how the core-pipeline RTL can be synhtesized using PDK. For now synthesis scripts for the following tools are available :
Genus Synthesis (Cadence)
When synthesizing for an FPGA/ASIC, the top module should be mkchromite_axi4 (mkchromite_axi4.v)
as the top module.
The mkimem
and mkdmem
module include SRAM instances which implement the respective data
and tag arrays. These are implemented as BRAMs and thus require no changes for FPGAs.
However for an ASIC flow, it is strictly advised to replace the BRAMs with respective SRAMs. Hence,
we suggest first synthesizing just the pipeline using mkriscv
as the top module
In order to synthesize the core-pipeline, before performing the steps in Section 3 one should
change the following variables of the bsc_compile_options
node in sample_config/rv64imacsu/core.yaml
to the following:
top_module : mkriscv
top_dir : src
top_file : riscv
compile_target : asic
trace_dump : false
assertions : false
You can also change the asic parameters in the core.yaml accordingly:
asic_params:
tech_size: 65
frequency: 600
Once the build is done, you should see a file build/chromite_genus_synth.tcl generated. This file will include all the parameters that will be required by the genus synthesis tool. To invoke synthesis execute the following commands:
cd asic_synthesis/genus/run
make synth user_tcl=../../../build/chromite_genus_synth.tcl pd_tcl=<path to pd input tcl without the .tcl extension>
The pd_tcl file will have to be provided by the user similar to template shown in asic_synthesis/genus/samples/example_pd.tcl