Syl is hardware description with compile-time checks.

The compiler catches width mismatches, driver conflicts, and clock domain violations before simulation.

Chisel silently resolves conflicts with last-connect semantics. Verilog gives you X in simulation. Syl rejects it at compile time.

arbiter.syl
cell Arbiter(
    req_a: in Bit,
    req_b: in Bit,
) -> grant: Bit {
    grant := req_a
    grant := req_b
}
sylc
error[E_DRIVER_OVERLAP]: multiple drivers for signal 'grant'
  ┌─ arbiter.syl:5:5

5 │   grant := req_a
  │   ----- first driver here
6 │   grant := req_b
  │   ----- second driver here
Syl is in early development. Standard library and some features are still being built.