尝试合成verilog代码时出错
我试图创建一个模块,该模块在msb为1时执行值的两个补。它在cadence中工作,但是当我尝试合成它时,我得到以下错误: 无法测试变量尝试合成verilog代码时出错,verilog,synthesis,Verilog,Synthesis,我试图创建一个模块,该模块在msb为1时执行值的两个补。它在cadence中工作,但是当我尝试合成它时,我得到以下错误: 无法测试变量X_parallel,因为它不在事件表达式中或极性错误 模块的代码如下所示: module xTwosComp (X_parallel, Clk, Reset, X_pos); input [13:0] X_parallel; input Clk, Reset; //wire X_msb; //was an attempt at fixing the proble
X_parallel
,因为它不在事件表达式中或极性错误
模块的代码如下所示:
module xTwosComp (X_parallel, Clk, Reset, X_pos);
input [13:0] X_parallel;
input Clk, Reset;
//wire X_msb; //was an attempt at fixing the problem
output [13:0] X_pos;
reg [13:0] X_pos;
//assign X_msb=X_parallel[13];//failled attempt at fixing
always @ (posedge Clk or posedge Reset)
begin
if (X_parallel[13]) begin
X_pos = ~(X_parallel) +1;
end else begin
X_pos = X_parallel;
end
end
endmodule
您缺少重置语句。不确定这是否修复了确切的错误,但合成器希望代码确定当存在多个边缘事件时哪些事件是异步的
如果(重置)开始X_pos缺少重置语句,则需要
。不确定这是否修复了确切的错误,但合成器希望代码确定当存在多个边缘事件时哪些事件是异步的
如果(重置)开始X_pos缺少重置语句,则需要。不确定这是否修复了确切的错误,但合成器希望代码确定当存在多个边缘事件时哪些事件是异步的
如果(重置)开始X_pos缺少重置语句,则需要。不确定这是否修复了确切的错误,但合成器希望代码确定当存在多个边缘事件时哪些事件是异步的
你需要一个if(Reset)begin X_pos,在我数小时后我才弄明白。这是因为我在always块中没有引用Clk或Reset
感谢所有考虑过这个问题的人
谢谢格雷格的回答,虽然我知道如何使它工作,但我很高兴你的回答,因为它澄清了为什么它现在工作。谢谢 经过无数个小时,我终于明白了。这是因为我在always块中没有引用Clk或Reset
感谢所有考虑过这个问题的人
谢谢格雷格的回答,虽然我知道如何使它工作,但我很高兴你的回答,因为它澄清了为什么它现在工作。谢谢 经过无数个小时,我终于明白了。这是因为我在always块中没有引用Clk或Reset
感谢所有考虑过这个问题的人
谢谢格雷格的回答,虽然我知道如何使它工作,但我很高兴你的回答,因为它澄清了为什么它现在工作。谢谢 经过无数个小时,我终于明白了。这是因为我在always块中没有引用Clk或Reset
感谢所有考虑过这个问题的人
谢谢格雷格的回答,虽然我知道如何使它工作,但我很高兴你的回答,因为它澄清了为什么它现在工作。谢谢