Verilog Web示例中的语法错误,是否有Verilog语法的多种变体?

时间:2016-01-09 23:03:56

标签: syntax module verilog

我正在尝试编译一些非常基本的Verilog文件,其中模块输入/输出由教师给出,我编写单个数据流分配,但是我在教师的部分得到了语法错误。这是源文件的精简版本:

var gulp = require('gulp')
var jade = require('gulp-jade')
var browserSync = require('browser-sync').create()

gulp.task('jade', function(){
  gulp.src('app/shit*/*.jade', {base: 'app'})
    .pipe(jade())
    .pipe(gulp.dest('build'))
})

gulp.task('watch', function() {
  gulp.watch('app/shit*/*.jade', ['jade'])
})

gulp.task('browser-sync', function() {
    browserSync.init({
        server: {
            baseDir: "build"
        }
    })

    gulp.watch("build/**/*.html", browserSync.reload)
    gulp.watch("build/**/*.css", browserSync.reload)
})

gulp.task('default', ['watch', 'browser-sync'])

我用module syntax1 ( input A, B, output C ); assign C = A && B; // Only line that I can modify endmodule 编译它并获得此输出:

verilog syntax1.v

如果我更改前三行(我希望不是我必须做的)并重新编译,它可以工作:

Host command: [path removed for stackoverflow]/verilog.exe
Command arguments:
    syntax1.v

Tool:   VERILOG-XL  08.20.001-d log file created Jan  9, 2016  17:56:34
Tool:   VERILOG-XL  08.20.001-d   Jan  9, 2016  17:56:34

[license is here]

Compiling source file "syntax1.v"

Error!    syntax error                                      [Verilog]          
          "syntax1.v", 2: input<-

Error!    Input, output or inout (C) not defined in port                       
          list                                              [Verilog-INOPL]    
          "syntax1.v", 3: 

Error!    syntax error                                      [Verilog]          
          "syntax1.v", 4: )<-

Error!    Identifier (A) not declared                       [Verilog-IDSND]    
          "syntax1.v", 6: 

Error!    Identifier (B) not declared                       [Verilog-IDSND]    
          "syntax1.v", 6: 
5 errors
End of Tool:    VERILOG-XL  08.20.001-d   Jan  9, 2016  17:56:34

Verilog输出:

module syntax2 (A, B, C);
  input A, B;
  output C;

  assign C = A && B;

endmodule

所以要么Verilog不喜欢参数列表中声明的输入和输出,要么我做错了。我看到网页示例就像在Host command: [path removed for stackoverflow]/verilog.exe Command arguments: syntax2.v Tool: VERILOG-XL 08.20.001-d log file created Jan 9, 2016 17:49:02 Tool: VERILOG-XL 08.20.001-d Jan 9, 2016 17:49:02 [license is here] Compiling source file "syntax2.v" Highest level modules: syntax2 0 simulation events (use +profile or +listcounts option to count) CPU time: 0.0 secs to compile + 0.0 secs to link + 0.0 secs in simulation End of Tool: VERILOG-XL 08.20.001-d Jan 9, 2016 17:49:03 中完成的那样,所以我认为这是我最终的配置问题。我是否有可能针对不同版本的Verilog进行编译?

1 个答案:

答案 0 :(得分:1)

您正在使用ANSI样式标题的示例代码,IEEE标准1364-2001(又名Verilog-2001)及更高版本支持该样式代码。根据维基百科的List of HDL sinulators,Verilog-XL仅支持IEEE Std 1364-1995(又名Verilog-1995)。也许Cadence添加了Verilog-2001支持,维基百科没有记录,查找或尝试-2001-v2k或类似的命令行选项。

你屏蔽了你的路径,所以我不知道你是不是单独或通过Cadence Incisive安装了Verilog-XL。如果您有敏锐内容,请尝试使用ncverilogirun代替verilog

您应该考虑更改为其他模拟器。现代模拟器不仅限于Verilog-1995。

如果要继续使用Verilog-XL,则需要将标题样式更改为非ANSI样式;以下示例。注意:Verilog-1995不支持@*,因此除非您使用脚本为您声明敏感度列表,否则FSM将更难编写。

module syntax1 ( A, B, C );
  input A;
  input B;
  output C;

  assign C = A && B; // Only line that I can modify

endmodule