Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

codegen should not emit dangling signals for nested procs w/ combo next body

Abierto
#4,635 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
52/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
cpp
Área
compilers

Línea de trabajo

Comienza en la ruta de codegen para los procs anidados que se resuelven en módulos combinacionales, usando el proc PlusOne y su Verilog generado como reproducción. Rastrea cómo se añaden y conectan las señales clk y rst, y verifica después que los procs anidados combinacionales ya no emitan señales no utilizadas ni las marquen como no leídas, mientras que los procs con estado conservan las señales requeridas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

codegen 🧦 sox

Describe the bug
When a proc resolves to a combinational module (either intentionally: pure forwarding procs, if I/O operation get optimized away, or if it has no state), codegen will still emit a clk and rst signals for the corresponding verilog module.

While top-level proc signals can easily be marked as unread, this is more of a problem for nested sub procs as their internal clock or reset signal would still be driven from the overall proc network connections but end up never being read, hence producing potential warning/error in downstream tools.

To Reproduce
Codegen the following proc:

proc PlusOne {
  ns: chan<u8> in;
  plusones: chan<u8> out;

  config(ns: chan<u8> in, plusones: chan<u8> out) {
    (ns, plusones)
  }

  init {}

  next(state: ()) {
    let (_, n) = recv(token(), ns);
    send(token(), plusones, n + 1);
  }
}

Result in the following verilog module:

module user_module(
  input wire clk,
  input wire [7:0] _ns_data,
  input wire _ns_valid,
  input wire _plusones_ready,
  output wire _ns_ready,
  output wire [7:0] _plusones_data,
  output wire _plusones_valid
);
  wire stage_outputs_valid_0;
  wire [7:0] add_59;
  assign stage_outputs_valid_0 = _ns_valid & _plusones_ready;
  assign add_59 = _ns_data + 8'h01;
  assign _ns_ready = stage_outputs_valid_0;
  assign _plusones_data = add_59;
  assign _plusones_valid = _ns_valid;
endmodule

Expected behavior
unused internal clk or rst signal would be not emited or marked as unread using a developer provided macro.

Lenguaje dominante
C++
Estrellas
1.9k
Forks
292
Merge medio
1 d 23 h
PR fusionados (30 d)
101

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de google/xls

Todos los issues de google/xls

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.