machxo2: Improve FACADE_FF simulation model.

This commit is contained in:
William D. Jones 2020-11-20 21:24:39 -05:00 committed by Marcelina Kościelnicka
parent 427fed23ee
commit cc52eb53cd
1 changed files with 20 additions and 12 deletions

View File

@ -24,7 +24,8 @@ module FACADE_FF #(
parameter LSRMUX = "LSR", parameter LSRMUX = "LSR",
parameter LSRONMUX = "LSRMUX", parameter LSRONMUX = "LSRMUX",
parameter SRMODE = "LSR_OVER_CE", parameter SRMODE = "LSR_OVER_CE",
parameter REGSET = "SET" parameter REGSET = "SET",
parameter REGMODE = "FF"
) ( ) (
input CLK, DI, LSR, CE, input CLK, DI, LSR, CE,
output reg Q output reg Q
@ -41,22 +42,29 @@ module FACADE_FF #(
endgenerate endgenerate
wire muxlsr = (LSRMUX == "INV") ? ~LSR : LSR; wire muxlsr = (LSRMUX == "INV") ? ~LSR : LSR;
wire muxlsron = (LSRONMUX == "LSRMUX") ? muxlsr : 1'b0;
wire muxclk = (CLKMUX == "INV") ? ~CLK : CLK; wire muxclk = (CLKMUX == "INV") ? ~CLK : CLK;
wire srval = (REGSET == "SET") ? 1'b1 : 1'b0; wire srval = (REGSET == "SET") ? 1'b1 : 1'b0;
generate generate
if (REGMODE == "FF") begin
if (SRMODE == "ASYNC") begin if (SRMODE == "ASYNC") begin
always @(posedge muxclk, posedge muxlsr) always @(posedge muxclk, posedge muxlsron)
if (muxlsr) if (muxlsron)
Q <= srval; Q <= srval;
else if (muxce) else if (muxce)
Q <= DI; Q <= DI;
end else begin end else begin
always @(posedge muxclk) always @(posedge muxclk)
if (muxlsr) if (muxlsron)
Q <= srval; Q <= srval;
else if (muxce) else if (muxce)
Q <= DI; Q <= DI;
end end
end else if (REGMODE == "LATCH") begin
ERROR_UNSUPPORTED_FF_MODE error();
end else begin
ERROR_UNKNOWN_FF_MODE error();
end
endgenerate endgenerate
endmodule endmodule