Skip to content
Pepijn de Vos edited this page Nov 19, 2024 · 5 revisions

CMSER

The CMSER (Configuration Memory Soft Error Recovery) primitive continuously monitors configuration memory, detects soft errors, attempts to correct them within its capabilities, reads the configuration memory frame by frame in the user design backend, performs ECC decoding and CRC, and programs corrected frame data back into SRAM.

This device is not yet supported in Apicula

Ports

Port Size Direction
ASRINC 1 output
ASRRESET 1 output
CLK 1 input
CRCDONE 1 output
CRCERR 1 output
DSRRD 1 output
DSRWR 1 output
ECCCORR 1 output
ECCDEC 1 output
ECCUNCORR 1 output
ERRINJECT 1 input
ERRINJLOC 7 input
ERRLOC 28 output
REFCLK 1 output
RUNNING 1 output
SEREN 3 input

Verilog Instantiation

CMSER cmser_inst (
    .ASRINC(ASRINC),
    .ASRRESET(ASRRESET),
    .CLK(CLK),
    .CRCDONE(CRCDONE),
    .CRCERR(CRCERR),
    .DSRRD(DSRRD),
    .DSRWR(DSRWR),
    .ECCCORR(ECCCORR),
    .ECCDEC(ECCDEC),
    .ECCUNCORR(ECCUNCORR),
    .ERRINJECT(ERRINJECT),
    .ERRINJLOC(ERRINJLOC),
    .ERRLOC(ERRLOC),
    .REFCLK(REFCLK),
    .RUNNING(RUNNING),
    .SEREN(SEREN)
);

CMSERA

The CMSERA (Configuration Memory Soft Error Recovery A) primitive continuously monitors configuration memory, detects soft errors, and attempts to correct them within its capabilities. This is done by reading the configuration memory frame by frame in the user design backend, performing ECC decoding and CRC, correcting a limited number of error bits, and programming the corrected frame data back into SRAM.

This device is not yet supported in Apicula

Ports

Port Size Direction
ASRINC 1 output
ASRRESET 1 output
CLK 1 input
CRCDONE 1 output
CRCERR 1 output
DSRRD 1 output
DSRWR 1 output
ECCCORR 1 output
ECCDEC 1 output
ECCUNCORR 1 output
ERR0INJECT 1 input
ERR0LOC 27 output
ERR1INJECT 1 input
ERR1LOC 27 output
ERRINJ0LOC 7 input
ERRINJ1LOC 7 input
REFCLK 1 output
RUNNING 1 output
SEREN 3 input

Verilog Instantiation

CMSERA cmsera_inst (
    .ASRINC(ASRINC),
    .ASRRESET(ASRRESET),
    .CLK(CLK),
    .CRCDONE(CRCDONE),
    .CRCERR(CRCERR),
    .DSRRD(DSRRD),
    .DSRWR(DSRWR),
    .ECCCORR(ECCCORR),
    .ECCDEC(ECCDEC),
    .ECCUNCORR(ECCUNCORR),
    .ERR0INJECT(ERR0INJECT),
    .ERR0LOC(ERR0LOC),
    .ERR1INJECT(ERR1INJECT),
    .ERR1LOC(ERR1LOC),
    .ERRINJ0LOC(ERRINJ0LOC),
    .ERRINJ1LOC(ERRINJ1LOC),
    .REFCLK(REFCLK),
    .RUNNING(RUNNING),
    .SEREN(SEREN)
);

CMSERB

This device is not yet supported in Apicula

Ports

Port Size Direction
ASRINC 1 output
ASRRESET 1 output
CLK 1 input
CRCDONE 1 output
CRCERR 1 output
DSRRD 1 output
DSRWR 1 output
ECCCORR 1 output
ECCDEC 1 output
ECCUNCORR 1 output
ERR0INJECT 1 input
ERR1INJECT 1 input
ERRINJ0LOC 7 input
ERRINJ1LOC 7 input
ERRLOC 13 output
REFCLK 1 output
RUNNING 1 output
SEREN 3 input

Verilog Instantiation

CMSERB cmserb_inst (
    .ASRINC(ASRINC),
    .ASRRESET(ASRRESET),
    .CLK(CLK),
    .CRCDONE(CRCDONE),
    .CRCERR(CRCERR),
    .DSRRD(DSRRD),
    .DSRWR(DSRWR),
    .ECCCORR(ECCCORR),
    .ECCDEC(ECCDEC),
    .ECCUNCORR(ECCUNCORR),
    .ERR0INJECT(ERR0INJECT),
    .ERR1INJECT(ERR1INJECT),
    .ERRINJ0LOC(ERRINJ0LOC),
    .ERRINJ1LOC(ERRINJ1LOC),
    .ERRLOC(ERRLOC),
    .REFCLK(REFCLK),
    .RUNNING(RUNNING),
    .SEREN(SEREN)
);
Clone this wiki locally