| `include "./logic_macro.sim.v" |
| `include "./c_frag_modes.sim.v" |
| `include "./q_frag_modes.sim.v" |
| `include "./f_frag.sim.v" |
| |
| (* FASM_FEATURES="LOGIC.LOGIC.Ipwr_gates.J_pwr_st" *) |
| (* MODES="MACRO;FRAGS" *) |
| module LOGIC (QST, QDS, TBS, TAB, TSL, TA1, TA2, TB1, TB2, BAB, BSL, BA1, BA2, BB1, BB2, QDI, QEN, QCK, QRT, F1, F2, FS, TZ, CZ, QZ, FZ, FAKE_CONST); |
| input wire QST; |
| input wire QDS; |
| input wire TBS; |
| input wire TAB; |
| input wire TSL; |
| input wire TA1; |
| input wire TA2; |
| input wire TB1; |
| input wire TB2; |
| input wire BAB; |
| input wire BSL; |
| input wire BA1; |
| input wire BA2; |
| input wire BB1; |
| input wire BB2; |
| input wire QDI; |
| input wire QEN; |
| input wire QCK; |
| input wire QRT; |
| input wire F1; |
| input wire F2; |
| input wire FS; |
| output wire TZ; |
| output wire CZ; |
| output wire QZ; |
| output wire FZ; |
| |
| // This is a synthetic pin that can be connected to the global const |
| // network bypassing the switchbox. |
| input wire FAKE_CONST; |
| |
| parameter MODE = "MACRO"; |
| |
| // LOGIC macro |
| generate if (MODE == "MACRO") begin |
| |
| (* FASM_PREFIX="LOGIC.LOGIC" *) |
| LOGIC_MACRO logic_macro ( |
| .TBS(TBS), |
| .TAB(TAB), |
| .TSL(TSL), |
| .TA1(TA1), |
| .TA2(TA2), |
| .TB1(TB1), |
| .TB2(TB2), |
| .BAB(BAB), |
| .BSL(BSL), |
| .BA1(BA1), |
| .BA2(BA2), |
| .BB1(BB1), |
| .BB2(BB2), |
| .TZ (TZ), |
| .CZ (CZ), |
| |
| .QCK(QCK), |
| .QST(QST), |
| .QRT(QRT), |
| .QEN(QEN), |
| .QDI(QDI), |
| .QDS(QDS), |
| .QZ (QZ), |
| |
| .F1 (F1), |
| .F2 (F2), |
| .FS (FS), |
| .FZ (FZ) |
| ); |
| |
| // LOGIC split into fragments |
| end else if (MODE == "FRAGS") begin |
| |
| // The C-Frag (with modes) |
| (* FASM_PREFIX="LOGIC.LOGIC" *) |
| C_FRAG_MODES c_frag_modes ( |
| .TBS(TBS), |
| .TAB(TAB), |
| .TSL(TSL), |
| .TA1(TA1), |
| .TA2(TA2), |
| .TB1(TB1), |
| .TB2(TB2), |
| .BAB(BAB), |
| .BSL(BSL), |
| .BA1(BA1), |
| .BA2(BA2), |
| .BB1(BB1), |
| .BB2(BB2), |
| .TZ (TZ), |
| .CZ (CZ) |
| ); |
| |
| // The Q-Frag (with modes) |
| (* FASM_PREFIX="LOGIC.LOGIC" *) |
| Q_FRAG_MODES q_frag_modes ( |
| .QCK(QCK), |
| .QST(QST), |
| .QRT(QRT), |
| .QEN(QEN), |
| .QDI(QDI), |
| .QDS(QDS), |
| .CZI(CZ), |
| .QZ (QZ), |
| |
| .FAKE_CONST (FAKE_CONST) |
| ); |
| |
| // The F-Frag |
| F_FRAG f_frag ( |
| .F1 (F1), |
| .F2 (F2), |
| .FS (FS), |
| .FZ (FZ) |
| ); |
| |
| end endgenerate |
| |
| endmodule |