We need to design: - [ ] `Multiplexer` function: - [ ] `Multiplexer :: { inputs :: [I v], sel :: [I v], out :: O v }` - [ ] Multiplexer PU for it. Here we have a lot of options on internal design, depends from the protocol (we need to start with simplest one). Few examples: - Load selector and save it -> Load inputs and save only selected input (can be an extended FRAM) -> output saved value. - Load inputs and save all of them, Load selector and save it, output value by selector. Loading sequence not restricted. - Combination of them, depends from scheduling. - Multiple functions at one time. - How many options we provide? Simplest -- two. But what about switch? Maybe, it should be a part of comporator PU? - [ ] support in lua frontend `<`, `<=`, `==`, `>=`, `>`. - [ ] tests
We need to design:
Multiplexerfunction:Multiplexer :: { inputs :: [I v], sel :: [I v], out :: O v }<,<=,==,>=,>.