使用`define语句的assign语句

时间:2014-03-05 13:34:11

标签: verilog system-verilog

我正在使用verilog的assign语句在我的驱动程序模块中指定`define as。

`define  SPI_MASTER_P_IF spi_vif.spi_master_p.spi_master_p_cb

`define SPI_MASTER_N_IF spi_vif.spi_master_n.spi_master_n_cb

`define SPI_MASTER_IF

class my_driver extends uvm_driver;

  assign `SPI_MASTER_IF = (if_posedge)?`SPI_MASTER_P_IF: `SPI_MASTER_N_IF;

endclass

当我编译时,我面临错误“近”分配“:语法错误,意外分配,期待功能或任务”

执行此任务的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

您无法使用assign语句定义宏。你想要的是ifdef

`ifdef IF_POSEDGE
  `define SPI_MASTER_IF SPI_MASTER_P_IF
`else
  `define SPI_MASTER_IF SPI_MASTER_N_IF
`endif

1800-2012 standard第22.6节。

答案 1 :(得分:3)

定义SPI_MASTER_IF为空。 代码变为:

assign = (if_posedge)?spi_vif.spi_master_p.spi_master_p_cb:spi_vif.spi_master_n.spi_master_n_cb

这是非法的。

此处也可能不会使用assign, 请查看规范中的IEEE Std 1800-2012第8.3节(类语法)。