Final Project Report Risc
Final Project Report Risc
BATCH : BPD18
RISC-V
Objective: To take RISC V design through Physical design Stages- from RTL to GDS.
EDA tools: Synopsys Design Compiler and Synopsys IC Compiler 2.
1) DC Flow
Design Compiler takes RTL (Register Transfer Level) descriptions of digital circuits as input
and generates optimized gate-level netlists that represent the logical structure of the circuit.
The main objective of Design Compiler is to translate the high-level RTL description into a
gate-level representation while meeting specific design constraints such as timing, area,
power, and design rules.
>dc_shell -topo
->Execute the following script to do the synthesis flow
create_mw_lib $my_mw_lib \
-technology $tech_file \
-mw_reference_library $mw_ref_libs \
-open
set target_library {\
../../ref/DBs/saed32lvt_ss0p95v125c.db \
../../ref/DBs/saed32lvt_ss0p95v125c.db \
../../ref/DBs/saed32rvt_ss0p95v125c.db \
../../ref/DBs/saed32hvt_ss0p75v125c.db \
../../ref/DBs/saed32sramlp_ss0p95v125c_i0p95v.db}
set link_library {\
../../ref/DBs/saed32lvt_ss0p95v125c.db \
../../ref/DBs/saed32lvt_ss0p95v125c.db \
../../ref/DBs/saed32rvt_ss0p95v125c.db \
../../ref/DBs/saed32hvt_ss0p75v125c.db \
../../ref/DBs/saed32sramlp_ss0p95v125c_i0p95v.db}
set ref_libs {\
../../ref/DBs/saed32lvt_ss0p95v125c.db \
../../ref/DBs/saed32lvt_ss0p95v125c.db \
../../ref/DBs/saed32rvt_ss0p95v125c.db \
../../ref/DBs/saed32hvt_ss0p75v125c.db \
../../ref/DBs/saed32sramlp_ss0p95v125c_i0p95v.db}
set_tlu_plus_files\
-max_tluplus ../../ref/tech/saed32nm_1p9m_Cmax.lv.tluplus \
-min_tluplus ../../ref/tech/saed32nm_1p9m_Cmin.lv.tluplus
current_design msrv32_top
source ../constraints/risc_core.upf
### reading SDC ( synopsis design constraints ), mainly clock info ###
read_sdc ../constraints/constraints_file1.sdc
#set_wire_load_model -name wire_load.tcl
set_svf RISC_V.svf
### Command to sythesize the RTL and produce Gate level Netlist ###
compile_ultra -no_autoungroup -no_boundary_optimization
# dft constraints
set_dft_signal -view existing_dft -type ScanClock -port ms_riscv32_mp_clk_in -timing [list
45 55]
set_dft_signal -view existing_dft -type Reset -port ms_riscv32_mp_rst_in -active_state 1
set_scan_configuration -chain_count 4
create_test_protocol
dft_drc
preview_dft
insert_dft
### Output- SDF(Standard Delay format) file ,containing timing information of the
circuits ###
write_sdf ../reports/riscv.sdf
write_parasitics -output ../results/riscv_v_parastics_8_6
puts "Finished"
#exit
PLACE AND ROUTE USING IC Compiler II
ICC2 FLOW
ICC2 is used in the physical design phase of the IC design flow. It takes the gate-level netlist
generated by synthesis tools like Design Compiler and performs the physical
implementation of the design, including floorplanning, placement, and routing.
->Invoke ICC2
>icc2_shell
read_sdc ../constraints/riscv.sdc
#parasitic reading
read_parasitic_tech -name {new_model} -tlu
{../../ref/tech/saed32nm_1p9m_Cmin.lv.tluplus} -layermap \
{../../ref/tech/saed32nm_tf_itf_tluplus.map}
### Setting PVT corner for optimization ###
current_corner default
set_parasitic_parameters -early_spec new_model -late_spec new_model
set_process_number 0.99 -corners default
set_temperature 125 -corners default
set_voltage 0.75 -corners default
current_mode default
# power plan
source risc_v_pns1.tcl
connect_pg_net
create_pg_mesh_pattern top_layers \
-layers { \
{ {horizontal_layer: M7} {width: 1.104} {spacing: interleaving} {pitch: 13.376} {offset: 0.856} {trim : true}
}\
{ {vertical_layer: M8} {width: 4.64} {spacing: interleaving} {pitch: 19.456} {offset: 6.08} {trim : true} } \
}\
-via_rule { {intersection: adjacent} {via_master : pgvia_8x10} }
#{ {vertical_layer: M8} {width: 4.64 } {spacing: interleaving} {pitch: 19.456} {offset: 6.08} {trim : true} } \
create_pg_mesh_pattern m2_layer \
-layers { \
{ {vertical_layer: M2} {track_alignment : track} {width: 0.44 0.192} {spacing: 3.724 4.456} {pitch: 9.728}
{offset:2.216} {trim : true} } \
}
set_pg_strategy S_default_vddvss \
-core \
-pattern { {name: top_layers} {nets:{VSS VDD}} {offset_start: {4 4}} } \
-extension { {{stop:design_boundary_and_generate_pin}} }
set_pg_strategy S_m2_vddvss \
-core \
-pattern { {name: m2_layer} {nets: {VDD VSS}} {offset_start: {4 4}} } \
-extension { {{direction:BT} {stop:core_boundary}} }
set_pg_strategy_via_rule S_via_m2_m7 \
-via_rule { \
{ {{strategies: {S_m2_vddvss}} {layers: { M2 }} {nets: {VDD}} } \
{{strategies: {S_default_vddvss}} {layers: { M7 }} } \
{via_master: {default}} } \
{ {{strategies: {S_m2_vddvss}} {layers: { M2 }} {nets: {VSS}} } \
{{strategies: {S_default_vddvss}} {layers: { M7 }} } \
{via_master: {default}} } \
}
suppress_message PGR-599
set_pg_strategy S_std_cell_rail_VSS_VDD \
-core \
-pattern {{pattern: P_std_cell_rail}{nets: {VSS VDD}}} \
-extension { {{direction:BT} {stop:core_boundary}} }
#{{stop: outermost_ring}{direction: L B R T }}
set_pg_strategy_via_rule S_via_stdcellrail \
-via_rule {{intersection: adjacent}{via_master: default}}
check_pg_drc
### Placement stage ###
###check if the design is ready for placement ###
check_design -checks pre_placement_stage
### setting Options like blockages, and timing driven, congestion driven
placement & also the effort of the tool is increased considering future violations##
set_app_options -name plan.place.auto_create_blockages -value auto
create_placement -floorplan -timing_driven -congestion -effort medium
place_pins -self
place_opt
legalize_placement
save_block -as placement_done
check_pg_connectivity
###clock route###
### checking if the design is ready to go further for CTS ###
check_design -checks pre_clock_stage
set_app_options -name time.remove_clock_reconvergence_pessimism -value true
report_clock_settings
report_qor -summary
set_app_options -name place.coarse.continue_on_missing_scandef -value true
clock_opt
### setting application options to give timing and crosstalk driven trackassignment
and detailed routing ###
set_app_options -name route.track.timing_driven -value true
set_app_options -name route.track.crosstalk_driven -value true
set_app_options -name route.detail.timing_driven -value true
set_app_options -name route.detail.force_max_number_iterations -value true
route_opt
route_eco
Cell sizing
report_constraints
report_qor -summary
check_lvs
#script writing
write_script -force -format icc2 -output ../reports/riscv_spef
write_parasitics -output ../reports/riscv_spef_generation_1
write_sdf ../results/riscv_1.sdf
write_verilog ../results/riscv_1.v
write_gds ../results/riscv.gds
write_sdc -output ../results/riscv_v.sdc
Reports
Results
report_timing
report_utilization
report_power
report_design