У меня есть ошибка в `определить на Verilog с для - PullRequest
0 голосов
/ 20 ноября 2018
...
'define ZERO_INIT2D(VECT,SD_WIDTH) for(integer i=0;i<(SD_WIDTH);i=i+1) (VECT)[i]=0;
...`

...
reg [31:0] rrr [7:0];
...
always @(negedge clk)
begin
        ZERO_INIT2D(rrr,8)
        //for(integer i=0;i<8;i=i+1) rrr[i]=0;// if using it. All works fine
        Buffer_reg = 111;
        Start_addr = 0;
        Counter=0;
...

Я хочу использовать точно определить!Мое определение не имеет ничего общего с регистром "Buffer_reg".Почему я получаю следующую ошибку?

ERROR:HDLCompiler:806 - "MEMORY_m.v" Line 170: Syntax error near "Buffer_reg".
ERROR:ProjectMgmt - 1 error(s) found while parsing design hierarchy.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Я сделал такие изменения, и все было синтезировано нормально: ...

... 'define ZERO_INIT2D(VECT,SD_WIDTH) for(integer i=0;i<SD_WIDTH;i=i+1) VECT[i]=0; ...

Я не знаю почему, но

(VECT) -> VECT

(SD_WIDTH) -> SD_WIDTH

, и это помогло, но это также нарушает синтаксис определения, ну, это работает.

0 голосов
/ 20 ноября 2018

В вашем коде есть несколько синтаксических ошибок.Вот MCVE с исправленными ими:

module M;

//|                                                                      |  
//V                                                                      V 
  `define ZERO_INIT2D(VECT,SD_WIDTH) for(integer i=0;i<(SD_WIDTH);i=i+1) VECT[i]=0;

  reg [31:0] rrr [7:0];

  always @*
    begin
//    |
//    V   
      `ZERO_INIT2D(rrr,8)
    end

endmodule

https://www.edaplayground.com/x/3Db3


Когда задаете вопрос, лучше подготовить MCVE самостоятельно, чеможидая тех, кто помогает вам сделать это.Мало того, что это спасает других от какой-то работы, это поможет более четко объяснить вашу проблему, и вы можете сами найти ответ во время его подготовки.

...