olofk / edalize

An abstraction library for interfacing EDA tools
BSD 2-Clause "Simplified" License
622 stars 183 forks source link

Add VTR backend #263

Open jgoeders opened 3 years ago

jgoeders commented 3 years ago

I'm going to work on running VTR from edalize, and will track progress here.

mithro commented 3 years ago

@jgoeders - I'm pretty sure Antmicro has already added this work. @kgugala - Who was working on this?

mithro commented 3 years ago

See https://github.com/olofk/edalize/pulls?q=is%3Apr+vpr+is%3Aclosed

jgoeders commented 3 years ago

OK, those look like like nextpnr and Symbiflow backends. I thought in the VTR meeting we had discussed creating an Edalize backend specifically for VTR. Am I misunderstanding?

mithro commented 3 years ago

The SymbiFlow backend uses VPR, so I think the work is just making sure the SymbiFlow backend is usable for the VtR use cases?

kgugala commented 3 years ago

there is an ongoing work on having better wrappers in SymbiFlow (python based). Those should be more configurable than the ones we have now. I believe we can also use those (or adapt) for VtR use cases. @mkurc-ant is coordinating this work

mkurc-ant commented 3 years ago

IMO we should treat the Symbiflow backend and a "pure" VPR backend as separate. The reason is that Symbiflow architectures that use VPR rely on dedicated helper scripts that are run in between VPR stages. For example there is a Python script that generates IO constraints which has to be run after VPR packing and before placement. Not to mention the requirement of using specific VPR options.

Therefore I think that we should stick to the wrapper scripts that are used in Symbiflow because they take care of all the intricacies required for correct VPR utilization. Moreover, relevant changes can be added to them when needed without touching edealize. And yes there is an effort for the wrapper scripts enchancement, see this PR: https://github.com/SymbiFlow/symbiflow-arch-defs/pull/2225

mithro commented 3 years ago

@mkurc-ant - As we were discussing in https://github.com/SymbiFlow/symbiflow-arch-defs/pull/2225 it is unclear to me if using a wrapper script is the right approach here. It seems like for the generating IO constraints, this should be integrated into upstream VtR?

jgoeders commented 3 years ago

Basic backend added in #271 .

Will update original post with plan for future functionality.