多位时钟使用类型转换收敛到单个位

时间:2014-11-25 17:29:23

标签: verilog system-verilog

我尝试使用类型转换方法将多个位转换为单个位,但是lint检查器(LEDA)不允许[0:0]并将其指向错误。 [0:0]是否仍然表示数组?

使用的代码:

module xyz(
  input        x,
  input      rst,
  input      din,
  output reg dout
);

  logic [1:0] i_clk;
  logic [0:0]   clk;

  assign i_clk = logic'(x    );
  assign clk   = logic'(i_clk);

  always_ff @(posedge clk) begin 
    if (rst) 
      dout <= '0;
    else 
      dout <= din; 
  end

endmodule

LEDA Design checker命令行:

leda -top xyz filename.v -config leda_config.tcl +v2k -sverilog 

leda_config.tcl:

rule_deselect -all rule_select -rule W450 

错误看起来像:

 Multi-bit expression (e.g., a[2:0]) used as clock

1 个答案:

答案 0 :(得分:0)

许多工具在logic clklogic [0:0] clk方面存在问题。从技术上讲,前者是标量变量,后者是一个元素的数组,不幸的是,许多工具错误地允许您引用clk[0]clk[0:0],即使它被声明为{{1因此,工具对不同声明或引用的反应方式变得混乱。