yosys -import
plugin -i xdc
plugin -i params
# Import the commands from the plugins to the tcl interpreter
yosys -import

read_verilog $::env(DESIGN_TOP).v
read_verilog -specify -lib -D_EXPLICIT_CARRY +/xilinx/cells_sim.v
read_verilog -lib +/xilinx/cells_xtra.v
hierarchy -check -auto-top

# Check phase parameter values on bith PLLE2_ADV instances
set reference_phase [list 90 70]
set phase [getparam CLKOUT2_PHASE top/PLLE2_ADV_0 top/PLLE2_ADV]
if {[llength $phase] != 2} {
	error "Getparam should return a list with 2 elements"
}
set fp [open "pll.txt" "w"]
puts -nonewline $fp "Phase before: "
if {$phase == $reference_phase} {
	puts $fp "PASS"
} else {
	puts $fp "FAIL: $phase != $reference_phase"
}

# Modify the phase parameter value on one of the PLLE2_ADV instances
setparam -set CLKOUT2_PHASE [expr [lindex $phase 0] * 1000] top/PLLE2_ADV

# Verify that the parameter has been correctly updated on the chosen instance
set reference_phase [list 90000 70]
set phase [getparam CLKOUT2_PHASE top/PLLE2_ADV_0 top/PLLE2_ADV]
puts -nonewline $fp "Phase after: "
if {$phase == $reference_phase} {
	puts $fp "PASS"
} else {
	puts $fp "FAIL: $phase != $reference_phase"
}
close $fp

# Start flow after library reading
synth_xilinx -vpr -flatten -abc9 -nosrl -noclkbuf -nodsp -iopad -run prepare:check

# Map Xilinx tech library to 7-series VPR tech library.
read_verilog -lib ./techmaps/cells_sim.v
techmap -map  ./techmaps/cells_map.v

# opt_expr -undriven makes sure all nets are driven, if only by the $undef
# net.
opt_expr -undriven
opt_clean

setundef -zero -params
stat

# Write the design in JSON format.
write_json $::env(DESIGN_TOP).json
write_blif -attr -param -cname -conn pll.eblif
