Skip to content

Use FPGAs inside other FPGAs #25

Open
@chexo3

Description

@chexo3

Not sure if this is already possible. Basically, it'd be nice to be able to turn my FPGAs into gates to be used inside other FPGAs. There may be specific considerations for this, so for sub-gates may have to share the execution speed of the gate they're a part of, or trigger when inputs change.

One simple example I can think of for something I would use with this, is a clamped increment/decrement gate.

Inputs
A
Increment
Decrement
Min
Max
Reset

Outputs
Out

It may also be useful to have non-changing inputs. If you've ever done shader programming, it's the difference between a varying and a uniform, or a static variable in many other languages. Basically, these inputs would be set when the gate is created, rather than being able to change. This is convenient for setting stuff up, no messing with constant values.

As individual gates in the world, this would be set up with a menu in the FPGA spawner menu, generated from the inputs. In the node editor, you'd set these values by editing the node. And you can also set them to mock/dummy values within the editor for that node itself, so while you're designing a new gate, you can test it with different inputs. Mock/dummy values should also be useable for inputs that change during execution.

It may also be useful to design test suites for gates, similar to tests for higher level programming. Basically, a test is a truth table, with a given input and an expected output. And it should be able to test in multiple ticks, so that you can test that a gate doesn't have unintended side effects. For instance an increment/decrement system in a gate should be affected by the previous value, but another gate shouldn't remember what happened in previous ticks, maybe.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions