vivado: make _build_files() a method and rename
authorRobert Jordens <jordens@gmail.com>
Fri, 3 Apr 2015 20:55:21 +0000 (14:55 -0600)
committerSebastien Bourdeauducq <sb@m-labs.hk>
Sat, 4 Apr 2015 10:59:50 +0000 (18:59 +0800)
mibuild/xilinx/vivado.py

index c2ff076c54cd6444102d0eaa5b328353c2b0b013..bb00def909561489f023ae5e2e2cd826640d164d 100644 (file)
@@ -46,34 +46,6 @@ def _build_xdc(named_sc, named_pc):
                r += "\n" + "\n\n".join(named_pc)
        return r
 
-def _build_files(device, sources, vincpaths, build_name, bitstream_commands, additional_commands):
-       tcl = []
-       for filename, language in sources:
-               tcl.append("add_files " + filename.replace("\\", "/"))
-
-       tcl.append("read_xdc %s.xdc" %build_name)
-       tcl.append("synth_design -top top -part %s -include_dirs {%s}" %(device, " ".join(vincpaths)))
-       tcl.append("report_utilization -hierarchical -file %s_utilization_hierarchical_synth.rpt" %(build_name))
-       tcl.append("report_utilization -file %s_utilization_synth.rpt" %(build_name))
-       tcl.append("place_design")
-       tcl.append("report_utilization -hierarchical -file %s_utilization_hierarchical_place.rpt" %(build_name))
-       tcl.append("report_utilization -file %s_utilization_place.rpt" %(build_name))
-       tcl.append("report_io -file %s_io.rpt" %(build_name))
-       tcl.append("report_control_sets -verbose -file %s_control_sets.rpt" %(build_name))
-       tcl.append("report_clock_utilization -file %s_clock_utilization.rpt" %(build_name))
-       tcl.append("route_design")
-       tcl.append("report_route_status -file %s_route_status.rpt" %(build_name))
-       tcl.append("report_drc -file %s_drc.rpt" %(build_name))
-       tcl.append("report_timing_summary -max_paths 10 -file %s_timing.rpt" %(build_name))
-       tcl.append("report_power -file %s_power.rpt" %(build_name))
-       for bitstream_command in bitstream_commands:
-               tcl.append(bitstream_command.format(build_name=build_name))
-       tcl.append("write_bitstream -force %s.bit " %build_name)
-       for additional_command in additional_commands:
-               tcl.append(additional_command.format(build_name=build_name))
-       tcl.append("quit")
-       tools.write_to_file(build_name + ".tcl", "\n".join(tcl))
-
 def _run_vivado(build_name, vivado_path, source, ver=None):
        if sys.platform == "win32" or sys.platform == "cygwin":
                build_script_contents = "REM Autogenerated by mibuild\n"
@@ -98,6 +70,34 @@ class XilinxVivadoToolchain:
                self.bitstream_commands = []
                self.additional_commands = []
 
+       def _build_batch(self, platform, sources, build_name):
+               tcl = []
+               for filename, language in sources:
+                       tcl.append("add_files " + filename.replace("\\", "/"))
+
+               tcl.append("read_xdc %s.xdc" %build_name)
+               tcl.append("synth_design -top top -part %s -include_dirs {%s}" %(platform.device, " ".join(platform.verilog_include_paths)))
+               tcl.append("report_utilization -hierarchical -file %s_utilization_hierarchical_synth.rpt" %(build_name))
+               tcl.append("report_utilization -file %s_utilization_synth.rpt" %(build_name))
+               tcl.append("place_design")
+               tcl.append("report_utilization -hierarchical -file %s_utilization_hierarchical_place.rpt" %(build_name))
+               tcl.append("report_utilization -file %s_utilization_place.rpt" %(build_name))
+               tcl.append("report_io -file %s_io.rpt" %(build_name))
+               tcl.append("report_control_sets -verbose -file %s_control_sets.rpt" %(build_name))
+               tcl.append("report_clock_utilization -file %s_clock_utilization.rpt" %(build_name))
+               tcl.append("route_design")
+               tcl.append("report_route_status -file %s_route_status.rpt" %(build_name))
+               tcl.append("report_drc -file %s_drc.rpt" %(build_name))
+               tcl.append("report_timing_summary -max_paths 10 -file %s_timing.rpt" %(build_name))
+               tcl.append("report_power -file %s_power.rpt" %(build_name))
+               for bitstream_command in self.bitstream_commands:
+                       tcl.append(bitstream_command.format(build_name=build_name))
+               tcl.append("write_bitstream -force %s.bit " %build_name)
+               for additional_command in self.additional_commands:
+                       tcl.append(additional_command.format(build_name=build_name))
+               tcl.append("quit")
+               tools.write_to_file(build_name + ".tcl", "\n".join(tcl))
+
        def build(self, platform, fragment, build_dir="build", build_name="top",
                        vivado_path="/opt/Xilinx/Vivado", source=True, run=True):
                tools.mkdir_noerror(build_dir)
@@ -111,8 +111,7 @@ class XilinxVivadoToolchain:
                v_file = build_name + ".v"
                tools.write_to_file(v_file, v_src)
                sources = platform.sources | {(v_file, "verilog")}
-               _build_files(platform.device, sources, platform.verilog_include_paths, build_name,
-                       self.bitstream_commands, self.additional_commands)
+               self._build_batch(platform, sources, build_name)
                tools.write_to_file(build_name + ".xdc", _build_xdc(named_sc, named_pc))
                if run:
                        _run_vivado(build_name, vivado_path, source)