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)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 31 Dec 2021 13:30:17 +0000 (13:30 +0000)
commit805772eea6291d158441ad0e808f8cbfe023cfcb
tree283b71f80fd5914a4bf3ce1b29b75fbf9c37d6b2
parent4b96083de4930cd9f3682ec8dcb865ba95b17af6
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