sv compiler directive define

In Verilog, the ‘define macro text can include a backslash ( \ ) at the end of a line to show continuation on the next line.
In SystemVerilog, the macro text can also include

`",      `\`"     and     ``    .

An

`"

overrides the usual lexical meaning of ", and indicates that the expansion should include an actual quotation mark. This allows string literals to be constructed from macro arguments.
A \" indicates that the expansion should include the escape sequence ", e.g.

`define msg(x,y) `"x: `\`"y`\`"`"

This expands:

$display(`msg(left side,right side));

to:

$display("left side: \"right side\"");

A `` delimits lexical tokens without introducing white space, allowing identifiers to be constructed from arguments,
e.g.

`define foo(f) a_``f``_suffix

This expands:

‘foo(bar)

to:

a_bar_suffix

另一个实际的例子:

`define BUS_2_CFG(chl_num)  \
    begin     \
        case(ahb_trans.haddr[5:0])     \
            6'h00: i_chl_cfg.reg_cfg[``chl_num``].srcaddr  =  ahb_trans.hwdata;     \
            6'h04: i_chl_cfg.reg_cfg[``chl_num``].destaddr =  ahb_trans.hwdata;     \
        endcase  \
    end  \
    
case (ahb_trans.haddr[31:6])
    26'd00: `BUS_2_CFG(0)
endcase
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值