On Wed, Jul 28, 2021 at 12:55 PM Michal Simek <michal.simek@xxxxxxxxxx> wrote: > >>>>>> + - enum: > >>>>>> + - engleder,tsnep > >>>>> > >>>>> tsnep is pretty generic. Only 1 version ever? Or differences are/will > >>>>> be discoverable by other means. > >>>> > >>>> Differences shall be detected by flags in the registers; e.g., a flag for > >>>> gate control support. Anyway a version may make sense. Can you > >>>> point to a good reference binding with versions? I did not find a > >>>> network controller binding with versions. > >>> > >>> Some of the SiFive IP blocks have versions. Version numbers are the > >>> exception though. Ideally they would correspond to some version of > >>> your FPGA image. I just don't want to see 'v1' because that sounds > >>> made up. The above string can mean 'v1' or whatever version you want. > >>> I'm fine if you just add some description here about feature flag > >>> registers. > >> > >> Don't Xilinx design tool (vivado) force you to use IP version? > >> Normally all Xilinx IPs have certain version because that's the only way > >> how to manage it. > > > > Yes I use an IP version in the Xilinx design tool. I use it as a version of the > > VHDL code itself. In my case this version is not related to the > > hardware software > > interface. The goal is to keep the hardware software interface compatible, so > > the IP version should not be relevant. > > I expect this is goal for everybody but it fails over time. We normally > compose compatible string for PL based IP with IP version which is used. > And it is quite common that couple of HW version are SW compatible to > each other. > It means use the same HW version as you use now. When you reach the > point when your HW IP needs to be upgraded and will require SW alignment > you have versions around which can be used directly. I would like to follow the argument from Rob: "The above string can mean 'v1' or whatever version you want." If there ever is an incompatible new IP version, then a new compatible string can be added which means 'v2'. E.g. for 128bit physical address support I would choose the compatible string 'engleder,tsnep128'. I don't see an advantage in adding a version number to the compatible string. This IP will be used in products where compatible hardware is a must. An IP upgrade which requires SW alignment will result in heavy complaints from the customers. Such an IP upgrade would result in a new IP. Like for shared libraries, an incompatible API change is similar to a new library. Gerhard