plat, vendor: systematically escape net and file names in Tcl.
authorwhitequark <whitequark@whitequark.org>
Sat, 2 May 2020 10:41:18 +0000 (10:41 +0000)
committerwhitequark <whitequark@whitequark.org>
Sat, 2 May 2020 10:41:18 +0000 (10:41 +0000)
commit6cee2804076b0cc5b670fd1334cf9c32d9dd7715
treecf4ceae80406ec78dd53c339ed17745b0886f64e
parent6e29fbcc61ed8e8ebdad8d64bda1ba52343fa296
plat, vendor: systematically escape net and file names in Tcl.

Before this commit, there was only occasional quoting of some names
used in any Tcl files. (I'm not sure what I was thinking.)

After this commit, any substs that may include Tcl special characters
are escaped. This does not include build names (which are explicitly
restricted to ASCII to avoid this problem), or attribute names (which
are chosen from a predefined set). Ideally we'd use a more principled
approach but Jinja2 does not support custom escaping mechanisms.

Note that Vivado restricts clock names to a more restrictive set that
forbids using Tcl special characters even when escaped.

Fixes #375.
nmigen/build/plat.py
nmigen/vendor/intel.py
nmigen/vendor/lattice_ecp5.py
nmigen/vendor/lattice_ice40.py
nmigen/vendor/lattice_machxo2.py
nmigen/vendor/xilinx_7series.py
nmigen/vendor/xilinx_ultrascale.py