- Primitive:
    name: Clash.Explicit.SimIO.mealyIO
    primType: Function
- BlackBox:
    name: Clash.Explicit.SimIO.display
    kind: Declaration
    renderVoid: RenderVoid
    template: $display(~ARG[0]);
- BlackBox:
    name: Clash.Explicit.SimIO.finish
    kind: Declaration
    renderVoid: RenderVoid
    template: |-
      `ifdef VERILATOR
      $c("std::exit(~LIT[0]);");
      `else
      // NOTE: $finish_and_return is an iverilog extension!
      $finish_and_return(~LIT[0]);
      `endif
- BlackBox:
    name: Clash.Explicit.SimIO.reg
    kind: Expression
    template: ~ARG[0]
- BlackBox:
    name: Clash.Explicit.SimIO.readReg
    kind: Expression
    template: ~ARG[0]
- BlackBox:
    name: Clash.Explicit.SimIO.writeReg
    kind: Declaration
    renderVoid: RenderVoid
    template: ~ARG[0] = ~ARG[1];
- BlackBox:
    name: Clash.Explicit.SimIO.openFile
    kind: Expression
    template: $fopen(~FILE[~LIT[0]],~LIT[1])
- BlackBox:
    name: Clash.Explicit.SimIO.closeFile
    kind: Declaration
    renderVoid: RenderVoid
    template: $fclose(~ARG[0]);
- BlackBox:
    name: Clash.Explicit.SimIO.getChar
    kind: Expression
    template: $fgetc(~ARG[0])
- BlackBox:
    name: Clash.Explicit.SimIO.putChar
    kind: Declaration
    renderVoid: RenderVoid
    template: $ungetc(~ARG[0],~ARG[1]);
- BlackBox:
    name: Clash.Explicit.SimIO.getLine
    kind: Declaration
    template: ~RESULT = $fgets(~ARG[2],~ARG[1]);
- BlackBox:
    name: Clash.Explicit.SimIO.isEOF
    kind: Expression
    template: $feof(~ARG[0])
- BlackBox:
    name: Clash.Explicit.SimIO.flush
    kind: Declaration
    renderVoid: RenderVoid
    template: $fflush(~ARG[0]);
- BlackBox:
    name: Clash.Explicit.SimIO.seek
    kind: Declaration
    template: ~RESULT = $fseek(~ARG[0],~ARG[1],~ARG[2]);
- BlackBox:
    name: Clash.Explicit.SimIO.rewind
    kind: Declaration
    template: ~RESULT = $rewind(~ARG[0]);
- BlackBox:
    name: Clash.Explicit.SimIO.tell
    kind: Expression
    template: $ftell(~ARG[0])
- Primitive:
    name: Clash.Explicit.SimIO.fmapSimIO#
    primType: Function
- Primitive:
    name: Clash.Explicit.SimIO.pureSimIO#
    primType: Function
- Primitive:
    name: Clash.Explicit.SimIO.apSimIO#
    primType: Function
- Primitive:
    name: Clash.Explicit.SimIO.bindSimIO#
    primType: Function
- Primitive:
    name: Clash.Explicit.SimIO.unSimIO
    primType: Function
