m-labs / migen

A Python toolbox for building complex digital hardware
https://m-labs.hk/migen
Other
1.23k stars 211 forks source link

Consistent I/O names on top level #40

Closed enjoy-digital closed 8 years ago

enjoy-digital commented 8 years ago

I/O names can change when little modifications are done to the code.

We should to to use name_override on I/Os to get consistent interfaces (useful when doing top level simulation with an external simulator or when building a core).

Here is a quick and dirty implementation: https://github.com/enjoy-digital/litex/commit/a716c562f07611c4a0eb9ff7afd3b29f17d70bf5

Do you see a better way to do this?

sbourdeauducq commented 8 years ago

Are you using the platform infrastructure when exporting cores?

enjoy-digital commented 8 years ago

Yes I'm using platform to export cores (I find it convenient, here the platform is simply our core interface).

But apart from that, when generating design with Migen somes of the I/Os can be prefixed with the name of the class, some not. For example with actual MiniSoC on KC705:

module top(
    input minisoc_serial_cts,
    input minisoc_serial_rts,
    output reg minisoc_serial_tx,
    input minisoc_serial_rx,
    input clk200_p,
    input clk200_n,
    input cpu_reset,
    output [15:0] ddram_a,
    output [2:0] ddram_ba,
    output ddram_ras_n,
    [...]
    input eth_col,
    input eth_crs
);

That would be better to have serial_yy instead of minisoc_serial_yy, ie that the I/O get the name given in the platform file. This way when you want to simulate for example the entire SoC with another simulator, you don't have to change your testbench wrapper when you change something in the design. And more generally your SoC will always have the same I/Os, wich is probably better.

enjoy-digital commented 8 years ago

Thanks.