; SPDX-License-Identifier: Apache-2.0
circuit ZeroWidthMem :
  module ZeroWidthMem :
    input clock : Clock
    input reset : UInt<1>
    input waddr : UInt<4>
    input in   : {0: UInt<10>, 1: UInt<0>}
    input raddr : UInt<4>
    output out : {0: UInt<10>, 1: UInt<0>}

    cmem ram : {0: UInt<10>, 1: UInt<0>}[16]
    infer mport ramin = ram[waddr], clock
    infer mport ramout = ram[raddr], clock

    cmem totallyEmptyRam : UInt<0>[16]
    infer mport emptyRamout = totallyEmptyRam[raddr], clock

    ramin.0 <= in.0
    ramin.1 <= in.1
    out.0   <= ramout.0
    out.1   <= ramout.1

    wire foo : UInt<32>
    foo <= UInt<32>("hdeadbeef")

    when not(reset) :
      when eq(foo, UInt<32>("hdeadbeef")) :
        stop(clock, UInt(1), 0) ; Success !
      else :
        printf(clock, UInt(1), "Assertion failed!\n")
        stop(clock, UInt(1), 1) ; Failure!

    when neq(emptyRamout, UInt<1>("h0")) :
      stop(clock, UInt(1), 1) ; Failure! empty mem should be zero

