Commit c0a0320a authored by Tristan Gingold's avatar Tristan Gingold

xilinx.py: add all source files at once. Update baselines.

parent 4d6eef48
......@@ -110,12 +110,14 @@ endif""")
fileset_dict.update(self.SUPPORTED_FILES)
# Create files.tcl target
self.writeln('files.tcl:')
# Extra commands before source files.
if "files" in self._tcl_controls:
for command in self._tcl_controls["files"].split('\n'):
command_string = '\t\t@echo {0} >> $@'.format(command)
if shell.check_windows_commands():
command_string = command_string.replace("'", "")
self.writeln(command_string)
# Add each source file
for srcfile in self.fileset.sort():
command = fileset_dict.get(type(srcfile))
# Put the file in files.tcl only if it is supported.
......
......@@ -43,11 +43,11 @@ class ToolPlanAhead(ToolXilinx):
'synopsys', 'unimacro', 'unisim', 'XilinxCoreLib']
SUPPORTED_FILES = {
UCFFile: ToolXilinx._XILINX_SOURCE,
NGCFile: ToolXilinx._XILINX_SOURCE,
XMPFile: ToolXilinx._XILINX_SOURCE,
BMMFile: ToolXilinx._XILINX_SOURCE,
XCOFile: ToolXilinx._XILINX_SOURCE}
UCFFile: ToolXilinx._XILINX_ANY_SOURCE,
NGCFile: ToolXilinx._XILINX_ANY_SOURCE,
XMPFile: ToolXilinx._XILINX_ANY_SOURCE,
BMMFile: ToolXilinx._XILINX_ANY_SOURCE,
XCOFile: ToolXilinx._XILINX_ANY_SOURCE}
CLEAN_TARGETS = {'clean': ["planAhead_*", "planAhead.*",
".Xil", "$(PROJECT).cache", "$(PROJECT).data",
......
......@@ -48,26 +48,26 @@ class ToolVivado(ToolXilinx):
SYSTEM_LIBS = ['xilinx']
SUPPORTED_FILES = {
XDCFile: ToolXilinx._XILINX_SOURCE,
XCFFile: ToolXilinx._XILINX_SOURCE,
NGCFile: ToolXilinx._XILINX_SOURCE,
XMPFile: ToolXilinx._XILINX_SOURCE,
XCOFile: ToolXilinx._XILINX_SOURCE,
COEFile: ToolXilinx._XILINX_SOURCE,
BDFile: ToolXilinx._XILINX_SOURCE,
BMMFile: ToolXilinx._XILINX_SOURCE,
TCLFile: ToolXilinx._XILINX_SOURCE,
MIFFile: ToolXilinx._XILINX_SOURCE,
RAMFile: ToolXilinx._XILINX_SOURCE,
VHOFile: ToolXilinx._XILINX_SOURCE,
VEOFile: ToolXilinx._XILINX_SOURCE}
XDCFile: ToolXilinx._XILINX_ANY_SOURCE,
XCFFile: ToolXilinx._XILINX_ANY_SOURCE,
NGCFile: ToolXilinx._XILINX_ANY_SOURCE,
XMPFile: ToolXilinx._XILINX_ANY_SOURCE,
XCOFile: ToolXilinx._XILINX_ANY_SOURCE,
COEFile: ToolXilinx._XILINX_ANY_SOURCE,
BDFile: ToolXilinx._XILINX_ANY_SOURCE,
BMMFile: ToolXilinx._XILINX_ANY_SOURCE,
TCLFile: ToolXilinx._XILINX_ANY_SOURCE,
MIFFile: ToolXilinx._XILINX_ANY_SOURCE,
RAMFile: ToolXilinx._XILINX_ANY_SOURCE,
VHOFile: ToolXilinx._XILINX_ANY_SOURCE,
VEOFile: ToolXilinx._XILINX_ANY_SOURCE}
SUPPORTED_FILES.update(ToolXilinx.SUPPORTED_FILES)
HDL_FILES = {
VHDLFile: ToolXilinx._XILINX_SOURCE,
VerilogFile: ToolXilinx._XILINX_SOURCE,
SVFile: ToolXilinx._XILINX_SOURCE,
XCIFile: ToolXilinx._XILINX_SOURCE}
VHDLFile: ToolXilinx._XILINX_VHDL_SOURCE,
VerilogFile: ToolXilinx._XILINX_VERILOG_SOURCE,
SVFile: ToolXilinx._XILINX_VERILOG_SOURCE,
XCIFile: ToolXilinx._XILINX_ANY_SOURCE}
CLEAN_TARGETS = {'clean': [".Xil", "*.jou", "*.log", "*.pb", "*.dmp",
"$(PROJECT).cache", "$(PROJECT).data", "work",
......
......@@ -26,7 +26,8 @@
from __future__ import absolute_import
from .makefilesyn import MakefileSyn
from ..sourcefiles.srcfile import VHDLFile, VerilogFile, SVFile, TCLFile
from ..sourcefiles.srcfile import VHDLFile, VerilogFile, SVFile, TCLFile, SourceFile
from ..util import shell
import logging
......@@ -34,15 +35,18 @@ class ToolXilinx(MakefileSyn):
"""Class providing the interface for Xilinx Vivado synthesis"""
_XILINX_SOURCE = (
"add_files -norecurse {srcfile}; "
"set_property IS_GLOBAL_INCLUDE 1 [get_files {srcfile}]; "
_XILINX_ANY_SOURCE = ""
_XILINX_VHDL_SOURCE = (
"set_property LIBRARY {library} [get_files {srcfile}]")
_XILINX_VERILOG_SOURCE = (
"set_property IS_GLOBAL_INCLUDE 1 [get_files {srcfile}]; ")
HDL_FILES = {
VHDLFile: _XILINX_SOURCE,
VerilogFile: _XILINX_SOURCE,
SVFile: _XILINX_SOURCE}
VHDLFile: _XILINX_VHDL_SOURCE,
VerilogFile: _XILINX_VERILOG_SOURCE,
SVFile: _XILINX_VERILOG_SOURCE}
SUPPORTED_FILES = {TCLFile: 'source {srcfile}'}
......@@ -97,6 +101,39 @@ $(TCL_CLOSE)'''
properties.extend(syn_properties)
return properties
def _makefile_syn_files(self):
"""Write the files TCL section of the Makefile"""
fileset_dict = {}
fileset_dict.update(self.HDL_FILES)
fileset_dict.update(self.SUPPORTED_FILES)
# Create files.tcl target
self.writeln('files.tcl:')
# Xilinx has no extra commands before source files.
assert "files" not in self._tcl_controls
# Add all files at once.
q = '' if shell.check_windows_commands() else '"'
self.writeln('\techo add_files -norecurse {q}{{{q} >> $@'.format(q=q))
for srcfile in self.fileset.sort():
if type(srcfile) in fileset_dict:
self.writeln('\techo {q} {srcfile}{q} >> $@'.format(
q=q, srcfile=shell.tclpath(srcfile.rel_path())))
self.writeln('\techo {q}}}{q} >> $@'.format(q=q))
# Add each source file
for srcfile in self.fileset.sort():
command = fileset_dict.get(type(srcfile))
# Put the file in files.tcl only if it is supported.
if command is not None:
# Libraries are defined only for hdl files.
if isinstance(srcfile, SourceFile):
library = srcfile.library
else:
library = None
command = command.format(srcfile=shell.tclpath(srcfile.rel_path()),
library=library)
self.writeln('\techo {q}{cmd}{q} >> $@'.format(
q=q, cmd=command))
self.writeln()
def _makefile_syn_tcl(self):
"""Create a Xilinx synthesis project by TCL"""
prop_val = 'set_property "{0}" "{1}" [{2}]'
......
......@@ -28,7 +28,10 @@ endif
all: bitstream
files.tcl:
echo "add_files -norecurse ../files/gate.vhdl; set_property IS_GLOBAL_INCLUDE 1 [get_files ../files/gate.vhdl]; set_property LIBRARY work [get_files ../files/gate.vhdl]" >> $@
echo add_files -norecurse "{" >> $@
echo " ../files/gate.vhdl" >> $@
echo "}" >> $@
echo "set_property LIBRARY work [get_files ../files/gate.vhdl]" >> $@
SYN_PRE_PROJECT_CMD :=
SYN_POST_PROJECT_CMD :=
......
......@@ -28,7 +28,10 @@ endif
all: bitstream
files.tcl:
echo "add_files -norecurse ../files/gate.vhdl; set_property IS_GLOBAL_INCLUDE 1 [get_files ../files/gate.vhdl]; set_property LIBRARY work [get_files ../files/gate.vhdl]" >> $@
echo add_files -norecurse "{" >> $@
echo " ../files/gate.vhdl" >> $@
echo "}" >> $@
echo "set_property LIBRARY work [get_files ../files/gate.vhdl]" >> $@
SYN_PRE_PROJECT_CMD :=
SYN_POST_PROJECT_CMD :=
......
......@@ -28,7 +28,10 @@ endif
all: bitstream
files.tcl:
echo "add_files -norecurse ../files/gate.vhdl; set_property IS_GLOBAL_INCLUDE 1 [get_files ../files/gate.vhdl]; set_property LIBRARY work [get_files ../files/gate.vhdl]" >> $@
echo add_files -norecurse "{" >> $@
echo " ../files/gate.vhdl" >> $@
echo "}" >> $@
echo "set_property LIBRARY work [get_files ../files/gate.vhdl]" >> $@
SYN_PRE_PROJECT_CMD :=
SYN_POST_PROJECT_CMD :=
......
......@@ -28,7 +28,10 @@ endif
all: bitstream
files.tcl:
echo "add_files -norecurse ../files/gate.vhdl; set_property IS_GLOBAL_INCLUDE 1 [get_files ../files/gate.vhdl]; set_property LIBRARY work [get_files ../files/gate.vhdl]" >> $@
echo add_files -norecurse "{" >> $@
echo " ../files/gate.vhdl" >> $@
echo "}" >> $@
echo "set_property LIBRARY work [get_files ../files/gate.vhdl]" >> $@
SYN_PRE_PROJECT_CMD :=
SYN_POST_PROJECT_CMD :=
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment