Professional Documents
Culture Documents
New Microsoft Word Document
New Microsoft Word Document
vh"
module cairoOtpStateMachine
(
input wire clk
, input wire resetn
, input wire [9:0] cairoPhase
, input wire cairoJtagMfgEnable
, output wire otpTestReady
, input wire otpTestStart
, input wire [1:0] otpTestMode
, output reg otpTestDone
, output reg otpTestSuccess
, input wire [15:0] regAddr
, input wire [3:0] regMask
, input wire regRead
, output reg [31:0] regReadData
, output reg regReadDone
, input wire regWrite
, input wire [31:0] regWriteData
, output reg regWriteDone
, output reg regSlaveError
, output reg [16:0] xpmA
, output reg xpmCeb
, output reg xpmCle
, output reg xpmCpumpen
, output reg xpmDin
, output reg xpmDle
, output reg xpmPgmen
, output reg xpmReaden
, output reg xpmRstb
, output reg xpmSeltdec
, output reg xpmWeb
, input wire [31:0] xpmD
);
@Wires ;
wire cairoPhaseEnable;
@Regs ;
@Waive no_sink otpTestMode;
@Waive no_sink regMask;
@Waive no_sink regWriteData;
// WIDTH PARAMETER
parameter XPM_STATE_CTR_WIDTH = 11;
// Functional Parameters
parameter T_CSRST = 206; // 1000
parameter T_RW = 5; // 20
parameter T_RS = 5; // 20
parameter T_RSRD = 5; // 20
parameter T_READEN = 210; // 1000
parameter T_ACC = 10; //45
parameter T_RWH = 105; //500
parameter T_CEW = 5; //20
parameter T_REW = 5; //20
parameter T_AS = 6; //25
parameter T_DS = 5; //20
parameter T_DLES = 5; //20
parameter T_WWL = 5; //20
parameter T_DH = 5; //20
parameter T_DLEH = 5; //20
parameter T_WWH = 11; //50
parameter T_DPD = 5; //20
parameter T_PES = 206; //1000
parameter T_CPS = 415; //4000 //800
parameter T_PW = 1000; //1050 //5000 //5000/4.76
parameter T_CPH = 310; //1500
parameter T_PGMVFY = 10; //45
parameter T_PEH = 206; //1000
parameter T_PGMAS = 21; //100
// test Parameters
parameter T_RSCLE = 5; //20
parameter T_TWS = 6; //25
parameter T_CLES = 5; //20
parameter T_CLEH = 5; //20
parameter T_TWH = 7; //24
parameter T_CPES = 21; //100
parameter T_CPRD = 206; //1000
parameter T_RDCP = 21; //100
parameter T_CDCD = 5; //20
parameter T_AAC = 310; //1500
parameter T_RRC = 525; // 2500 as per spec 300 but taken 500
parameter T_RDES = 21; // 100
parameter T_CPPW = 1645; // 8000
parameter T_PGM = 2055; //10000
parameter T_CDD = 5; //20
parameter T_READENT = 210; //1000
parameter T_ACCT = 10; //45
parameter T_BCREADEN = 520; //2500
parameter T_BCACC = 310; //1500
XPM_STATE_DFT_TEST: begin
stateTestStart = 1’b1;
if(stateTestDone == 1’b1) begin
otpTestDone = otpTestUpDone;
otpTestSuccess = otpTestUpSuccess;
stateTestStart = 1’b0;
stateNext = XPM_STATE_IDLE;
end
end
default: begin stateNext = XPM_STATE_IDLE; end
endcase
end
always@(*) begin
stateFunNext[XPM_STATE_FUN_REG_WIDTH-1:0] <= stateFun[XPM_STATE_FUN_REG_WIDTH - 1:0];
end
always@(*) begin
bitCtrNext[4:0] = bitCtr[4:0];
xpmBufferNext[31:0] = xpmBuffer[31:0];
xpmProgramErrorNext = xpmProgramError;
npCtrNext[4:0] = npCtr[4:0];
blAddrCtrNext[11:0] = blAddrCtr[11:0];
wrTestAddrCtrNext[4:0] = wrTestAddrCtr[4:0];
xpmCebNext = xpmCeb;
xpmRstbNext = xpmRstb;
xpmWebNext = xpmWeb;
xpmCleNext = xpmCle;
xpmCpumpenNext = xpmCpumpen;
xpmDinNext = xpmDin;
xpmDleNext = xpmDle;
xpmPgmenNext = xpmPgmen;
xpmReadenNext = xpmReaden;
xpmSeltdecNext = xpmSeltdec;
xpmANext[16:0] = xpmA[16:0];
stateCtrInit = 1'b0;
stateCtrIncr = 1'b0;
otpControllerInTestModeNext = otpControllerInTestMode;
otpTestInProgressNext = otpTestInProgress;
testFailureNext = testFailure;
testFailNext = testFail;
testFailNext1 = testFail1;
testFailNext2 = testFail2;
testSelectOutNext = testSelectOut;
testReadDataNext[31:0] = testReadData[31:0];
testProgramDoneNext = testProgramDone;
testProgramErrorNext = testProgramError;
testReadmodeNext = testReadmode;
xpmTestBufferNext[31:0] = xpmTestBuffer[31:0];