[][src]Function logicsim::circuits::rom

pub fn rom<T: Copy + 'static + Sized, S: Into<String>>(
    g: &mut GateGraphBuilder,
    read: GateIndex,
    address: &[GateIndex],
    data: &[T],
    name: S
) -> Vec<GateIndex>

Returns the output of a piece of addressable ROM filled with data. If data is not long enough to fill the entire address space, it will be filled with OFF.

Example

let address = WordInput::new(&mut g, 3, "address");
let out = rom(&mut g, ON, &address.bits(), &[3,9,1], "rom");

let output = g.output(&out, "result");

let ig = &mut g.init();
ig.run_until_stable(2);

assert_eq!(output.u8(ig), 3);

address.set_to(ig, 1);
ig.run_until_stable(2);
assert_eq!(output.u8(ig), 9);

address.set_to(ig, 2);
ig.run_until_stable(2);
assert_eq!(output.u8(ig), 1);

address.set_to(ig, 3);
ig.run_until_stable(2);
assert_eq!(output.u8(ig), 0);

Panics

Will panic if not enough address bits are provided to address every value in data.