vcs +define+ 简单用法

在vcs编译过程中可以通过+define+来进行传递参数或者一些控制操作,具体如下:

module test;

    `ifdef A
        parameter num = 123;
        //XXX
    `elsif B
        parameter num = 456;
        //XXX
    `else
        parameter num = 789;
        //XXX
    `endif

    initial begin
        $display("num is %0d",num);
    end
endmodule

在编译命令行中加入+define+A时,num打印值为123,+define+B时为456,定义其他或者不加+define+时打印789,XXX可以为自己的一些代码。通过这种方式,可以实现定义不同参数编译不同代码的功能。

module test;

    `ifdef A
        parameter num = 123;
        //XXX
    `elsif B
        parameter num = 456;
        //XXX
    `else
        parameter num = 789;
        //XXX
    `endif

    initial begin
        $display("num is %0d",num);
        $display("A is %0d",`A);
    end
endmodule

在编译命令中还可以+define+A=666,实现参数的传递,num打印123,A打印666,如果此时不加=666或者不加+define+,display就会报错,miss or empty argument,因为没有数据。

module test;

    `ifndef A
        `define A 100
    `else
        `define A 200
    `endif

    initial begin
        $display("A is %0d",`A);
    end
endmodule

如果+define+进行了对A的定义,代码内部又进行了对A的定义,情况会如何呢?

首先是不加+define+的情况,A的打印结果是100(用的是`ifndef,命令行没有定义A的话就进入这一条语句);然后试试+define+A,打印出错,miss or empty argument;再试试+define+A=300,打印结果是300。

这个结果说明,通过+define+定义的参数优先级最高,会覆盖代码内部的同名定义。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值