你如何在verilog中分割长行代码?

时间:2016-03-28 03:44:00

标签: verilog

我刚开始使用verilog来编写FIFO和其他复杂逻辑。我想知道如何在verilog中拆分一长串代码(类似于在某些语言中使用C语言?)

我有以下代码行非常长 -

pushinl = (read_allow&(~pushinl))|(pushinl&read_allow&(~(stopout_a0&stopout_a1&stopout_a2))|(pushinl&read_allow&(stopout_a0&stopout_a1&stopout_a2));

我无法在网上找到任何有助于在verilog中解决此问题的答案。在verilog中是否使用了一个字符来分割上面的行?

编辑: 我使用vi作为我的主编。当我按原样编写这行代码时,我得到以下语法错误:

Error-[SE] Syntax error
  Following verilog source has syntax error :
  "fpam2.v", 150: token is ';'
                 |(pushinl&rctrl&(sout_a0&sout_a1&sout_a2));
                                                            ^

1 error
CPU time: .065 seconds to compile

希望这些额外的信息有助于:)

1 个答案:

答案 0 :(得分:4)

你可以给OR(SOP)操作符或AND(POS)操作符添加新行,这样可以提供更多的可读性和方便的调试。

pushinl = (read_allow & (~pushinl))
        | (pushinl & read_allow & (~(stopout_a0 & stopout_a1 & stopout_a2))
        | (pushinl & read_allow & (stopout_a0 & stopout_a1 & stopout_a2));

在verilog中没有像'\'这样的符号的特殊字符。

试试这个,

pushinl = (read_allow & (~pushinl))
        | (pushinl & read_allow & (~(stopout_a0 & stopout_a1 & stopout_a2)))
        | (pushinl & read_allow & (stopout_a0 & stopout_a1 & stopout_a2));

在第二行中缺少括号。