|  | yosys -import | 
|  | if { [info procs getparam] == {} } { plugin -i params } | 
|  | yosys -import  ;# ingest plugin commands | 
|  |  | 
|  | 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 [test_output_path "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 -flatten -abc9 -nosrl -noclkbuf -nodsp -iopad -run prepare:check | 
|  |  | 
|  | # Map Xilinx tech library to 7-series VPR tech library. | 
|  | read_verilog -lib [file dirname $::env(DESIGN_TOP)]/techmaps/cells_sim.v | 
|  | techmap -map  [file dirname $::env(DESIGN_TOP)]/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 | 
|  |  | 
|  | # Clean processes before writing JSON. | 
|  | yosys proc | 
|  |  | 
|  | # Write the design in JSON format. | 
|  | write_json [test_output_path "pll.json"] | 
|  | write_blif -attr -param -cname -conn [test_output_path "pll.eblif"] |