procedural assignment to a non
时间: 2023-04-30 14:00:28 浏览: 119
verilog编程中,"procedural assignment to a non"是一种常见的错误提示,意思是在一个非寄存器类型的变量上使用了过程赋值语句。在Verilog中,过程赋值语句只能用于寄存器类型的变量,例如reg类型,而不能用于其他类型的变量,例如wire类型。因此,当你在wire类型的变量上使用过程赋值语句时,就会出现这个错误提示。解决方法是将这个变量的类型改为reg类型或使用赋值语句(如assign语句)进行赋值。
相关问题
[Synth 8-2576] procedural assignment to a non-register F is not permitted ["C:/Users/24932/Desktop/FPGA_A7/0-1text/vivado_project/text.srcs/sources_1/new/text.v":31]
回答: 错误信息"\[Synth 8-2576\] procedural assignment to a non-register F is not permitted"表示在代码的第31行,对一个非寄存器类型的信号F进行了过程赋值操作,这是不允许的。\[3\]根据引用\[3\]中的介绍,过程赋值使用的是非阻塞赋值"<= ",而非阻塞赋值只能用于时序逻辑中,对于组合逻辑应使用阻塞赋值"= "。因此,你需要检查代码中的第31行,确保对信号F使用的是阻塞赋值而不是非阻塞赋值。此外,还需要确保信号F的类型是寄存器类型(reg)而不是线类型(wire)。如果信号F的类型是wire类型,你需要将其更改为reg类型,例如使用"output reg F"来定义信号F。这样做可以解决这个错误。
#### 引用[.reference_title]
- *1* [FPGA-在ISE中错误总结(更新中)](https://blog.csdn.net/weixin_41445387/article/details/82873414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [vivado报错:procedural assignment to a non-register result is not permitted](https://blog.csdn.net/lanzhishao/article/details/123728948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
[Synth 8-2576] procedural assignment to a non-register zynq_out is not permitted ["C:/vivado_project/CH367_PCIE_trans/CH367_PCIE_trans.srcs/sources_1/new/CH367_PCIE_trans.v":81]
这个错误提示是因为你在尝试将一个非寄存器类型的变量 `zynq_out` 进行过程赋值操作,但是这是不被支持的。过程赋值操作只能用于寄存器类型的变量。你需要将 `zynq_out` 定义为寄存器类型,或者使用 assign 语句来对其进行赋值。具体操作方法取决于你的设计需求,你需要检查代码并找出正确的解决方法。如果你还需要进一步帮助,请贴出相关代码片段让我来帮你分析。