关于for循环的疑问
时间:10-02
整理:3721RD
点击:
在一个模块中有多处用到了for循环,但使用相同的累计数变量,会怎么样呢?例如下面这样,定义了一个变量m,在两个for循环中使用。大概是按照C语言的思路来的,之前一直没有想过这个问题,觉得这个m也没有什么真实含义,就是赋值的时候写起来方便罢了。仿真和上板测试也都能够通过。今天看书的时候发现了这个问题,在想之前是不是太侥幸了,同一个变量不应该出现在多个过程块?
求达人指点!
求达人指点!
- integer m;
- always @ (posedge clk)
- begin
- if (!rst) begin
- ...
- end
- else begin
- for (m = 0; m < 4; m = m + 1)
- begin
- a[m] <= XXX;
- ......
- end
- end
- end
- always @ (posedge clk)
- begin
- if (!rst) begin
- ...
- end
- else begin
- for (m = 0; m < 4; m = m + 1)
- begin
- b[m] <= XXX;
- ......
- end
- end
- end
触发条件一模一样,无影响。如果不同就小心了。
比如一个条件是m<4,一个是m<8,就不可以,是吗?还是always@(),括号里的不一样?
我认为这个for循环如果在testbench中要小心用,特别是带时间参数的for语句,因为有执行时间的概念; 在综合代码中完全没必要太在意,for 语句只要没有上下两层for循环用相同的变量就没问题,for语句是要被替换为并行语句的,两个不同块中的同一for变量值不会交替执行增减,所以不会有问题,我的好多设计中都是一个变量在若干个块中用,没发现问题
感觉应该没事,每一个都是独立过程,而且都有初始化。
非常感谢!
