blob: 3e52fbf39fbe150da753efca109134fc2d6098a4 [file] [log] [blame]
yosys -import
if { [info procs dsp_ff] == {} } { plugin -i dsp-ff }
yosys -import ;# ingest plugin commands
set DSP_RULES [file dirname $::env(DESIGN_TOP)]/../../nexus-dsp_rules.txt
read_verilog $::env(DESIGN_TOP).v
design -save read
set TOP "mult_ireg"
design -load read
hierarchy -top ${TOP}
synth_nexus -flatten
techmap -map +/nexus/cells_sim.v t:VLO t:VHI %u ;# Unmap VHI and VLO
equiv_opt -assert -async2sync -map +/nexus/cells_sim.v debug dsp_ff -rules ${DSP_RULES}
design -load postopt
yosys cd ${TOP}
stat
select -assert-count 1 t:MULT9X9
select -assert-count 0 t:FD1P3IX
set TOP "mult_oreg"
design -load read
hierarchy -top ${TOP}
synth_nexus -flatten
techmap -map +/nexus/cells_sim.v t:VLO t:VHI %u ;# Unmap VHI and VLO
equiv_opt -assert -async2sync -map +/nexus/cells_sim.v debug dsp_ff -rules ${DSP_RULES}
design -load postopt
yosys cd ${TOP}
stat
select -assert-count 1 t:MULT9X9
select -assert-count 0 t:FD1P3IX
set TOP "mult_all"
design -load read
hierarchy -top ${TOP}
synth_nexus -flatten
techmap -map +/nexus/cells_sim.v t:VLO t:VHI %u ;# Unmap VHI and VLO
equiv_opt -assert -async2sync -map +/nexus/cells_sim.v debug dsp_ff -rules ${DSP_RULES}
design -load postopt
yosys cd ${TOP}
stat
select -assert-count 1 t:MULT9X9
select -assert-count 0 t:FD1P3IX
# The test cannot be run because the equivalence check fails at some internal
# wires of the DSP simulation model which ends up dangling. So that's not a
# real issue but makes the test fail.
#set TOP "mult_ctrl"
#design -load read
#hierarchy -top ${TOP}
#synth_nexus -flatten
#techmap -map +/nexus/cells_sim.v t:VLO t:VHI %u ;# Unmap VHI and VLO
#equiv_opt -assert -async2sync -map +/nexus/cells_sim.v debug dsp_ff -rules ${DSP_RULES}
#design -load postopt
#yosys cd ${TOP}
#stat
#select -assert-count 1 t:MULT9X9
#select -assert-count 0 t:FD1P3IX