olofk / fusesoc

Package manager and build abstraction tool for FPGA/ASIC development
BSD 2-Clause "Simplified" License
1.14k stars 235 forks source link

Exception raise by FuseSoC 2.0 for valid YAML #609

Closed shareefj closed 3 weeks ago

shareefj commented 1 year ago

There seems to be a couple of matching comments in the Gitter channel but no solutions and I can't find any matching tickets open. So here is one but feel free to close if it's a duplicate.

We've just updated to the latest release and am finding that at least one flow now falls over. I'm running Verilator with the following options:

  sim:
    <<: *default
    default_tool: verilator
    tools:
      verilator:
        mode: cc
        verilator_options:
          - '-CFLAGS "-DTOPLEVEL_NAME=chip_sim_tb"'
          - '-F common.args'
          - '-F trace.args'
          - '-F comms.args'

And FuseSoC spits out the following exception:

Traceback (most recent call last):
  File "/home/shareefj/git/genesee_asic_merging/.venv/bin/fusesoc", line 8, in <module>
    sys.exit(main())
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/main.py", line 740, in main
    fusesoc(args)
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/main.py", line 730, in fusesoc
    args.func(cm, args)
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/main.py", line 293, in run
    run_backend(
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/main.py", line 412, in run_backend
    edam = edalizer.run()
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/edalizer.py", line 104, in run
    self.create_edam()
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/edalizer.py", line 194, in create_edam
    self.flags["tool"]: core.get_tool_options(_flags)
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/capi2/core.py", line 404, in get_tool_options
    options[member] = self._parse_list(
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/capi2/core.py", line 741, in _parse_list
    _x = x.parse(flags)
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/capi2/core.py", line 67, in parse
    self.exprs = Exprs(str(self))
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/capi2/exprs.py", line 154, in __init__
    self.ast = _parse(string)
  File "/home/shareefj/git/genesee_asic_merging/.venv/lib/python3.8/site-packages/fusesoc/capi2/exprs.py", line 143, in _parse
    raise ValueError(
ValueError: Invalid syntax for string: Expected end of text, found '"'  (at char 8), (line:1, col:9). Parsed text was '-CFLAGS "-DTOPLEVEL_NAME=chip_sim_tb"'.
shareefj commented 1 year ago

Seems like the exprs.py:_get_parser() needs to be updated to cope with double quotes. See #610

olofk commented 1 year ago

Yes. #610 applied now. Can we close this?