✅ 2.
Steps to Run This in Cadence Genus + Modus
You want to synthesize and prepare for DFT using Cadence. Here's how.
🧩 Step 1: Gather RTL Files
List all Verilog files (and submodules) in a file called riscv_file_list.tcl:
tcl
CopyEdit
ALU/ALU.v
ControlUnit/Control.v
DataMemory/DataMemory.v
Datapath/Datapath.v
InstructionMemory/InstructionMemory.v
RegisterFile/RegisterFile.v
Processor/Processor.v
(You do not include testbenches like Processor_tb.v for synthesis.)
🛠️Step 2: Prepare SDC Constraints
Create riscv_constraints.sdc with a clock:
sdc
CopyEdit
create_clock -name clk -period 10 [get_ports clk]
set_input_delay 2 -clock clk [all_inputs]
set_output_delay 2 -clock clk [all_outputs]
🧠 Step 3: Genus TCL Script (riscv_genus.tcl)
tcl
CopyEdit
# Load libraries
set_db library {your_lib_file.lib}
set_db lef_library {your_lef_file.lef}
# Read RTL
read_hdl -sv -f riscv_file_list.tcl
elaborate
read_sdc riscv_constraints.sdc
# Synthesis
synthesize -to_mapped
write_hdl > riscv_synth.v
write_sdf > [Link]
report_area > [Link]
report_timing > [Link]
Then run:
bash
CopyEdit
genus -files riscv_genus.tcl
🔍 Step 4: DFT Insertion (in Modus)
After synthesis, move to Cadence Modus for scan insertion:
tcl
CopyEdit
read_netlist riscv_synth.v
read_liberty -both your_lib.lib
read_sdc riscv_constraints.sdc
set_db design_name Processor
# Define scan signals
set_scan_configuration -style multiplexed_flipflop
set_dft_signal -type ScanEnable -port scan_en
set_dft_signal -type ScanIn -port scan_in
set_dft_signal -type ScanOut -port scan_out
create_test_structure -all
insert_dft
# Save netlist and reports
write_netlist -output riscv_dft.v
report_scan_chain > scan_chain.rpt
report_dft_coverage > [Link]
🧾 Summary of Files You Need
File Purpose
riscv_file_list.tcl List of Verilog RTL files
riscv_constraints.sdc Timing and I/O constraints
riscv_genus.tcl Synthesis script
riscv_dft.tcl Scan insertion script (optional)
✅ What’s Next?
Let me know if you want:
A full ready-made TCL script for your synthesis and DFT
To add scan ports to the Processor.v module
Help with testbench simulation using Xcelium
I can generate any of these for you.