SymbiFlow / RapidWright

Build Customized FPGA Implementations for Vivado
http://www.rapidwright.io
Other
0 stars 0 forks source link

Some RAMB36E1 parameter modes aren't getting encoded properly. #2

Open litghost opened 3 years ago

litghost commented 3 years ago

After the most recent RapidWright patch to getPinMappingsP2L, some RAMB36E1 parameter modes aren't generating valid encodings in the FPGA interchange. Unclear if this a problem with the schema or the encoder.

The particular parameter set that is problematic is WRITE_WIDTH_A=0 RAM_MODE=TDP. Other WRITE_WIDTH_A values, and WRITE_WIDTH_A=0 RAM_MODE=SDP encode fine.

clavin-xlnx commented 3 years ago

My guess is that the Interchange needs to be augmented to include multiple parameters that affect a specific pin mapping: https://github.com/SymbiFlow/fpga-interchange-schema/blob/f537a57fd7af091aabb776cb888f103b2b29349b/interchange/DeviceResources.capnp#L278

In this case, for example, WEAU0 gets GND by default, but when WRITE_WIDTH_A=0 AND RAM_MODE=TDP are both set, then WEAU0 gets WEA[0].

GitHub
SymbiFlow/fpga-interchange-schema
Contribute to SymbiFlow/fpga-interchange-schema development by creating an account on GitHub.
litghost commented 3 years ago

My guess is that the Interchange needs to be augmented to include multiple parameters that affect a specific pin mapping: https://github.com/SymbiFlow/fpga-interchange-schema/blob/f537a57fd7af091aabb776cb888f103b2b29349b/interchange/DeviceResources.capnp#L278

I'd like to avoid multiple parameter matching like that if possible.

GitHub
SymbiFlow/fpga-interchange-schema
Contribute to SymbiFlow/fpga-interchange-schema development by creating an account on GitHub.