自动Verilog代码生成问题
我试图使FSM状态的生成参数化或自动化。 我尝试了很多方法,但似乎没有办法生成我需要的代码。 有人能帮忙吗 我需要生成的代码是FSM状态机的一部分,用于ST_DATA_CHECK状态:自动Verilog代码生成问题,verilog,system-verilog,Verilog,System Verilog,我试图使FSM状态的生成参数化或自动化。 我尝试了很多方法,但似乎没有办法生成我需要的代码。 有人能帮忙吗 我需要生成的代码是FSM状态机的一部分,用于ST_DATA_CHECK状态: always @(posedge ui_clk_sync_rst or posedge ui_clk) begin if (rst) begin s_app_cmd <= 3'b111; s_app_en <= 1'b0;
always @(posedge ui_clk_sync_rst or posedge ui_clk)
begin
if (rst) begin
s_app_cmd <= 3'b111;
s_app_en <= 1'b0;
end
end else begin
case (ddr3_state)
ST_INIT :
….
ST_DATA_CHECK : // This part of the code, needs to make parameteric
if (~dwfifo_ef[0]) begin
s_data_write_active[0] <= 1'b1 ;
end else if (~dwfifo_ef[1]) begin
s_data_write_active[1] <= 1'b1 ;
end else if (~dwfifo_ef[2]) begin
s_data_write_active[2] <= 1'b1 ;
end else if (~d_rfifo_ef[0]) begin
s_data_read_active[0] <= 1'b1 ;
end else if (~d_rfifo_ef[1]) begin
s_data_read_active[1] <= 1'b1 ;
end
ST_WRITE :
…
endcase
始终@(posedge用户界面时钟同步或posedge用户界面时钟)
开始
如果(rst)开始
s_app_cmd您想要一个for
循环,其中包含break
语句:
ST_DATA_CHECK :
for (int i=0;i<$bits(dwfifi_ef);i++)
if (~dwfifo_ef[i]) begin
s_data_write_active[i] <= 1'b1 ;
break;
end
ST_数据检查:
对于(int i=0;i您需要一个带有break
语句的for
循环:
ST_DATA_CHECK :
for (int i=0;i<$bits(dwfifi_ef);i++)
if (~dwfifo_ef[i]) begin
s_data_write_active[i] <= 1'b1 ;
break;
end
ST_数据检查:
对于(int i=0;i@dave\u 59刚刚解决了您的问题,但正如您所说的“在我的if语句中有两个信号s\u data\u write\u active和s\u data\u read\u active”,尝试类似的方法怎么样
ST_数据检查:
如果(| dwfifo_ef==1'b1)
对于(int i=0;i@dave\u 59刚刚解决了您的问题,但正如您所说的“在我的if语句中有两个信号s\u data\u write\u active和s\u data\u read\u active”,尝试类似的方法怎么样
ST_数据检查:
如果(| dwfifo_ef==1'b1)
对于(int i=0;答案为Dave,但您的解决方案有2项1)在我的if语句中有2个信号s_data_write_active和s_data_read_active 2)此外,我不确定是否为休息合成statement@haykpfor
循环是可合成的。循环参数需要是静态的-需要非常清楚循环的最大迭代次数。感谢Dave的回答,但是您的解决方案中有两项1)在我的if语句中有两个信号s_data_write_active和s_data_read_active 2),我也不确定for break是否可合成statement@haykpfor
循环是可合成的。循环参数需要是静态的-它需要非常清楚循环的最大迭代次数是多少。多亏了这可能会起作用,也就是说,对于模拟,它可以给出很好的结果。但是,合成和P&R呢?我将试着合成这个,看看是否为休息是合成的all@haykp正如我所说,它应该合成。让我们知道你进展如何。工作!我可以通过合成来合成它,非常感谢您的帮助。谢谢,这可能会起作用,也就是说,对于模拟,它可以给出很好的结果。但是,合成和P&R呢?我将试着合成这个,看看是否为休息是合成的all@haykp正如我所说,它应该合成。让我们知道你进展如何。工作!我可以通过合成合成来合成它非常感谢你的帮助