Skip to content

Net names are not escaped properly for vivado tcl #375

@rroohhh

Description

@rroohhh

It seems like net names are not properly escaped for vivado tcl scripts, atleast $ is causing problems.

This example:

from nmigen import *
from nmigen_boards.zturn_lite_z010 import *

class Test(Elaboratable):
    def elaborate(self, plat):
        m = Module()

        dummy1 = Signal()

        clk = Signal(name="clk$1")
        m.d.comb += dummy1.eq(clk)
        plat.add_clock_constraint(clk, 100_000_000)

        return m


plat = ZTurnLiteZ010Platform()

t = Test()

plat.build(t)

causes vivado to emit the following message:

Parsing XDC File [/data/projects/nmigen_bugs/build/top.xdc]
CRITICAL WARNING: [Common 17-1548] Command failed: can't read "1": no such variable
 [/data/projects/nmigen_bugs/build/top.xdc:2]
Finished Parsing XDC File [/data/projects/nmigen_bugs/build/top.xdc]

dummy1 is merely used to work around / avoid #374.

Vivado fails later due to the design being empty, but I don't think that matters for this bug.

Full build folder: build.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions