Verilog复制与宏

时间:2016-02-27 20:37:10

标签: verilog system-verilog

我有一个带宏的sys_defs.vh头文件:

`define REG_WIDTH 5

我正在尝试比较相同宽度的总线:

input [2:0][`REG_WIDTH-1:0]           aregs_in,
...
if(aregs_in[i] != {`REG_WIDTH{1}})
  //do stuff

但是当我尝试模拟

时,我收到以下警告
  

警告 - [CWUC]与未经过大小写的常量的连接。   在连接中使用未大小的常量“1”。未经证实的   常量将用作32位常量。

基本上我只是想把它与111111进行比较,其中一个是#的宏定义

2 个答案:

答案 0 :(得分:3)

在Verilog中1本身推断出一个32位小数,值为1。您想要1'b1一位。

input [2:0][`REG_WIDTH-1:0]           aregs_in,
...
if(aregs_in[i] != {`REG_WIDTH{1'b1}})
  //do stuff

答案 1 :(得分:3)

在Verilog你可以做到

function positionBoxes() {

  var leftValues = [];

  // Get the left value for each vis line
  $('.vis-line').each(function() {
    leftValues.push($(this).css('left'));
  });

  // Set the box's line's left value on the box
  $('.vis-box').each(function(index) {
    $(this).css('left', leftValues[index]);
  });
}

// Call positionBoxes anytime the timeline
// repositioned the boxes (window resize, zoom)
timeline.on('changed', positionBoxes)

在SystemVerilog中,这将更具描述性

   if(~&aregs_in[i]) //~& is the NAND operator
      // do stuff