Verilog分配语句结果检查

问题描述 投票:0回答:1

是Verilog的新手(当然,是SystemVerilog,但是我发现,对于非常基本的关键字,例如Assign和Initialize,我也可以从Verilog资源中学习)。我正在此链接chipverify example 2上关注示例2。很简单,所以我会写下来。我觉得他们好像犯了一个错误,但是由于我是新手,所以很难知道我的感觉是否正确。

module xyz (input [3:0] x, //let x='hC or x='b1100 for this example's purposes
            input       y, //y is a 1bit scalar y='h1 = 'b1
            output [4:0] z);
//case 8
assign z = {3{y}};

endmodule    

对于情况8,他们说z将导致z ='b00111。我认为这是不正确的!根据他们的情况3,z仅分配了[4:1]位,它表示扩孔位将不被驱动,从而导致高阻抗Z。情况8的结果不应该小于z ='bZZ111 而不是z ='b00111

让我知道,谢谢! =)

verilog system-verilog assign
1个回答
0
投票

从IEEE Std 1800-2017(SystemVerilog标准)的10.7节(赋值扩展和截断)中,>]

  • [当右侧求值的位数少于左侧时,右侧值将填充为左侧。

在您的情况下,{3 {y}}是一个无符号值,因此将其0填充为5位,即5'b00111,然后分配给z。

© www.soinside.com 2019 - 2024. All rights reserved.