SystemVerilog: selección de bits sin almacenar el cálculo en la variable

0

¿Realmente no hay manera de seleccionar bits directamente de un cálculo sin darles un nombre y luego seleccionar los bits del nombre en SystemVerilog?

module testbench;
  logic signed [7:0] x = 8'b11100000;
  logic signed [7:0] y = 8'b00010100;
  logic [15:0] z;
  initial begin
    z = x*y;
    $display("%b", z[14:7]); // :)
    //$display("%b", (15'(x*y))[14:7]); // :(
    //$display("%b", 15'(x*y)[14:7]); // :(
    //$display("%b", {15'(x*y)}[14:7]); // :(
    //none of the above 3 works
  end
endmodule

Contexto: quiero asignar sin bloqueos los bits 14: 7 del producto de dos números de 8 bits firmados a otro número de 8 bits sin esperar el siguiente ciclo de reloj:

z <= 15'(x*y)[14:7];
    
pregunta PistoletPierre

1 respuesta

0

Tan cerca, usa una concatenación

Z <= {x*y}[14:7]

    
respondido por el dave_59

Lea otras preguntas en las etiquetas