-
Notifications
You must be signed in to change notification settings - Fork 14
Description
Lattice Nexus-family FPGAs include SEDC hardware for error detection and correction. A part of the sysCONFIG block, and documented here, it exposes a few inputs for configuration and a few outputs for status and error detection information. In Radiant, it can be instantiated from the IP Catalog, which seemingly mostly just generates a wrapper around an instantiated SEDC
primitive. The instantiation looks like this:
SEDC sedc (.SEDENABLE(sed_en_i),
.SEDCCOF(sedc_cof_i),
.SEDCENABLE(sedc_en_i),
.SEDCMODE(sedc_mode_i),
.OSCCLKSEDC(oscclk_sedc_w),
.RSTSEDC(sedc_rst_w),
.SEDCSTART(sedc_start_i),
.SEDCBUSY(sedc_busy_o),
.SEDCERR(sedc_err_o),
.SEDCERRC(sedc_errc_o),
.SEDCERRCRC(sedc_errcrc_o),
.SEDCERRM(sedc_errm_o),
.SEDCFRMERRLOC(sedc_frm_errloc_o),
.SEDCDSRERRLOCCIB(sedc_dsr_errloc_o)) ;
However, prjoxide does not seem to document this primitive, and it's seemingly not included anywhere in the source for prjoxide or nextpnr. Attempting to place and route this with nextpnr-nexus fails with ERROR: Cell type 'SEDC' instantiated as 'sedc' is not supported by this device.
It seems like prjoxide just hasn't documented how SEDC works yet. I'm not really familiar enough with the prjoxide fuzzing/development process to try to implement this myself, or really to determine how complex that would be. If I'm wrong and this has already been documented and implemented, how should the SEDC primitive be instantiated when using the yosys+nextpnr+prjoxide toolchain? If not, what's the status of work on SEDC documentation in prjoxide?