Too many positional options when parsing xxx

Vivado 2022.2

[Common 17-165] Too many positional options when parsing ‘Interface.srcs/utils_1/imports/synth_1/SPI_Master.dcp’, please type ‘read_checkpoint -help’ for usage info.

省流:检查一下工程文件和工程目录是否有空格

这一个错误在百度上搜,能搜到的内容很少
一开始搜到到的解决办法
解决方法:打开Sources->Utility Sources->utils,找到.dcp文件,remove后再编译。

来自 https://blog.youkuaiyun.com/qq_45899513/article/details/124528765

但是治标不治本,下次综合仍然会有这样的错误

于是去寻找有关dcp文件、和“checkpoint”的信息,在此过程中发现
从 Vivado 2019.1 开始,Vivado 综合引擎支持增量流。这使用户能够在设计更改较小时减少整体综合运行时间。
可以使用 Vivado IDE 启用此流程,也可以使用 Tcl 命令进行批处理模式。有关流程的更多详细信息,请参阅 (UG901)。

来自 https://support.xilinx.com/s/article/976545?language=en_US

于是在设置“setting”里找到与增量综合的设置,并试了一下
在这里插入图片描述

发现当关闭增量综合功能,并删掉dcp文件之后进行综合就不会再生成dcp文件了
在这里插入图片描述

但是如果需要用到这个功能呢?
于是尝试在bing上搜索了一下,发现有说是文件目录存在空格的原因,也可能是电脑的用户名存在空格,跟我的情况符合

Core inserter error – ERROR: [Common 17-165] Too many positional options when parsing
Applies to Exostiv for Xilinx netlist insertion / automatic insertion mode.
When setting up the Exostiv IP with the core inserter, the following error can be encountered when browsing the design for the nodes and clocks:
ERROR: [Common 17-165] Too many positional options when parsing…
Diagnostic: this error message is returned by Vivado when the user name on the machine contains ‘space’ characters (like User = “FirstName LastName”).
As for many instances, it is advised not to use special characters in user names, as they will affect the name of special temporary directories (like ‘Temp’ in Windows’).
Spaces in paths are sometimes not well supported by scripting interfaces such as this of Vivado.
Solution: use a user name without spaces or special characters in it.

来自 https://www.exostivlabs.com/knowledgebase/core-inserter-error-error-common-17-165-too-many-positional-options-when-parsing/

That space in the name is breaking the auto generated scripts created when running a simulation from the Vivado GUI. This kind of stuff is why I only use the GUI to generate a script to find all the simulation code for the IPs and then write my own simulation script.

来自 https://www.edaboard.com/threads/error-common-17-165-too-many-positional-options-when-parsing.371254/

最后创建了一个没有空格的工程,解决了

<think>好的,我现在需要解决用户在命令行中遇到的“too many positional options error”问题。首先,我得理解这个错误的含义。通常,命令行工具在解析参数时,位置参数(positional arguments)和选项参数(option arguments)有不同的处理方式。位置参数是没有用“-”或“--”开头的,而选项参数则是有的。当用户输入的位置参数数量超过了程序所期望的数量,就会抛出这个错误。 接下来,我需要考虑可能的原因。常见的情况包括:用户可能错误地将选项参数写成了位置参数,或者在命令中遗漏了必要的选项标志,导致后面的参数被误认为位置参数。另外,某些命令行解析库(如Python的argparse)有默认的位置参数处理方式,如果用户没有正确配置,也可能出现这个问题。 然后,我需要思考解决方案。首先,检查命令的语法是否正确,确保所有选项参数都有正确的标志,比如使用“-f”或“--file”来指定文件路径,而不是直接写路径。其次,查看帮助文档,确认程序支持的位置参数数量和用法。如果用户需要传递多个值,可能需要将它们放在引号中,或者使用选项参数来接收多个输入。此外,如果使用argparse库,可能需要调整参数定义,将nargs设置为“*”或“+”来接受多个值,或者使用“--”来分隔选项和位置参数,避免混淆。 还需要考虑其他可能性,比如是否有特殊字符导致解析错误,或者是否存在转义问题。例如,含有空格的文件名需要用引号包裹,否则会被解析为多个参数。另外,某些情况下,用户可能需要使用双连字符“--”来明确表示后续参数均为位置参数,避免被误解析为选项。 最后,总结步骤:验证命令格式,检查参数类型和数量,查阅文档确认限制,使用引号或转义字符处理特殊值,调整命令行解析代码(如适用)。同时,提供具体的示例帮助用户理解如何修改他们的命令,比如将“command input1 input2 --option value”改为“command --option value input1 input2”以确保位置参数数量正确。</think>### 命令行“too many positional options”错误解决方案 #### 错误原因分析 当命令行工具检测到传入的**位置参数数量超过程序定义的最大容量**时,会触发该错误。位置参数指不通过`-`或`--`标识的独立参数(例如`cp file1.txt file2.txt`中的`file1.txt`和`file2.txt`)[^1]。 #### 分步解决方案 1. **验证参数类型** ```bash # 错误示例(将选项值误作位置参数) myapp --input data.csv output.txt --verbose # 正确示例(明确标识选项参数) myapp --input=data.csv --output=output.txt --verbose ``` 2. **检查参数分隔符** 使用`--`显式分隔选项与位置参数: ```bash # 处理含特殊符号的文件名 myapp --output-dir=/path/ -- *.log ``` 3. **调整参数接收逻辑(开发者侧)** 在代码中配置参数解析器(以Python argparse为例): ```python import argparse parser = argparse.ArgumentParser() parser.add_argument("files", nargs="*") # 允许接收多个位置参数 parser.add_argument("--output", "-o") args = parser.parse_args() ``` #### 进阶排查技巧 - **参数引用规范**:对包含空格的值使用引号包裹 ```bash # 错误(被解析为两个参数) myapp --message Hello World # 正确(识别为单个参数) myapp --message "Hello World" ``` - **调试模式**:通过`set -x`查看参数解析过程 ```bash set -x myapp *.log ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值