byuccl / tincr

A Tcl-based CAD Tool Framework for Xilinx's Vivado Design Suite
GNU General Public License v2.0
39 stars 19 forks source link

Series 7 not detected for Zynq unless DCP first created #82

Open DallonTG opened 6 years ago

DallonTG commented 6 years ago

If you implement a design for a Zynq device in Vivado (link_design, synth, place, etc.) and then immediately call tincr::write_rscp, an invalid rscp is created.

Specifically, an invalid placement.xdc is created because tincr::parts::is_series7 returns 0 when it should return 1. This happens because get_design returns multiple designs instead of 1 and so then get_parts returns the same part multiple times. Then, the family variable actually becomes a list with multiple "zynq" entries. This unexpected output causes tincr::parts::is_series7 to return 0 instead of 1. The placement.xdc relies on knowing whether or not the design is for a Series 7 device or not.

This problem doesn't occur if you first save a DCP, open it, and then call tincr::write_rscp (only one design is returned by get_design if you use the saved DCP).

This can easily be fixed, probably by just checking if any of the detected families are zynq. But I have also noticed some other strange behaviors that occur if you do not first save and open a DCP. For example, trying to write a bitstream will result in Vivado telling you that the design hasn't been implemented yet. But once you save and open a DCP, it works fine.

If I recall correctly, these issues might not exist in newer versions of Vivado (newer than 2016.2).