You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1957 lines
84 KiB
Verilog
1957 lines
84 KiB
Verilog
// © IBM Corp. 2020
|
|
// Licensed under the Apache License, Version 2.0 (the "License"), as modified by
|
|
// the terms below; you may not use the files in this repository except in
|
|
// compliance with the License as modified.
|
|
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Modified Terms:
|
|
//
|
|
// 1) For the purpose of the patent license granted to you in Section 3 of the
|
|
// License, the "Work" hereby includes implementations of the work of authorship
|
|
// in physical form.
|
|
//
|
|
// 2) Notwithstanding any terms to the contrary in the License, any licenses
|
|
// necessary for implementation of the Work that are available from OpenPOWER
|
|
// via the Power ISA End User License Agreement (EULA) are explicitly excluded
|
|
// hereunder, and may be obtained from OpenPOWER under the terms and conditions
|
|
// of the EULA.
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, the reference design
|
|
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
|
|
// for the specific language governing permissions and limitations under the License.
|
|
//
|
|
// Additional rights, including the ability to physically implement a softcore that
|
|
// is compliant with the required sections of the Power ISA Specification, are
|
|
// available at no cost under the terms of the OpenPOWER Power ISA EULA, which can be
|
|
// obtained (along with the Power ISA) here: https://openpowerfoundation.org.
|
|
|
|
`timescale 1 ns / 1 ns
|
|
|
|
// Description: LQ SFX Bypass Unit
|
|
//
|
|
//*****************************************************************************
|
|
|
|
`include "tri_a2o.vh"
|
|
|
|
|
|
|
|
module lq_byp(
|
|
clk,
|
|
rst,
|
|
vdd,
|
|
gnd,
|
|
d_mode_dc,
|
|
delay_lclkr_dc,
|
|
mpw1_dc_b,
|
|
mpw2_dc_b,
|
|
func_sl_force,
|
|
func_sl_thold_0_b,
|
|
func_slp_sl_force,
|
|
func_slp_sl_thold_0_b,
|
|
sg_0,
|
|
scan_in,
|
|
scan_out,
|
|
xu0_lq_ex3_act,
|
|
xu0_lq_ex3_abort,
|
|
xu0_lq_ex3_rt,
|
|
xu0_lq_ex4_rt,
|
|
xu0_lq_ex6_act,
|
|
xu0_lq_ex6_rt,
|
|
xu1_lq_ex3_act,
|
|
xu1_lq_ex3_abort,
|
|
xu1_lq_ex3_rt,
|
|
lq_xu_ex5_rt,
|
|
dec_byp_ex0_stg_act,
|
|
dec_byp_ex1_stg_act,
|
|
dec_byp_ex5_stg_act,
|
|
dec_byp_ex6_stg_act,
|
|
dec_byp_ex7_stg_act,
|
|
dec_byp_ex1_s1_vld,
|
|
dec_byp_ex1_s2_vld,
|
|
dec_byp_ex1_use_imm,
|
|
dec_byp_ex1_imm,
|
|
dec_byp_ex1_rs1_zero,
|
|
byp_ex2_req_aborted,
|
|
byp_dec_ex1_s1_abort,
|
|
byp_dec_ex1_s2_abort,
|
|
ctl_lsq_ex4_xu1_data,
|
|
ctl_lsq_ex6_ldh_dacrw,
|
|
lsq_ctl_ex5_fwd_val,
|
|
lsq_ctl_ex5_fwd_data,
|
|
lsq_ctl_rel2_data,
|
|
dcc_byp_rel2_stg_act,
|
|
dcc_byp_rel3_stg_act,
|
|
dcc_byp_ram_act,
|
|
dcc_byp_ex4_moveOp_val,
|
|
dcc_byp_stq6_moveOp_val,
|
|
dcc_byp_ex4_move_data,
|
|
dcc_byp_ex5_lq_req_abort,
|
|
dcc_byp_ex5_byte_mask,
|
|
dcc_byp_ex6_thrd_id,
|
|
dcc_byp_ex6_dvc1_en,
|
|
dcc_byp_ex6_dvc2_en,
|
|
dcc_byp_ex6_dacr_cmpr,
|
|
dat_ctl_ex5_load_data,
|
|
dat_ctl_stq6_axu_data,
|
|
dcc_byp_ram_sel,
|
|
byp_dir_ex2_rs1,
|
|
byp_dir_ex2_rs2,
|
|
spr_byp_spr_dvc1_dbg,
|
|
spr_byp_spr_dvc2_dbg,
|
|
spr_byp_spr_dbcr2_dvc1m,
|
|
spr_byp_spr_dbcr2_dvc1be,
|
|
spr_byp_spr_dbcr2_dvc2m,
|
|
spr_byp_spr_dbcr2_dvc2be,
|
|
rv_lq_ex0_s1_xu0_sel,
|
|
rv_lq_ex0_s2_xu0_sel,
|
|
rv_lq_ex0_s1_xu1_sel,
|
|
rv_lq_ex0_s2_xu1_sel,
|
|
rv_lq_ex0_s1_lq_sel,
|
|
rv_lq_ex0_s2_lq_sel,
|
|
rv_lq_ex0_s1_rel_sel,
|
|
rv_lq_ex0_s2_rel_sel,
|
|
lq_pc_ram_data,
|
|
rv_lq_gpr_ex1_r0d,
|
|
rv_lq_gpr_ex1_r1d,
|
|
lq_rv_gpr_ex6_wd,
|
|
lq_rv_gpr_rel_wd,
|
|
lq_xu_gpr_rel_wd,
|
|
lq_rv_ex2_s1_abort,
|
|
lq_rv_ex2_s2_abort
|
|
);
|
|
|
|
//-------------------------------------------------------------------
|
|
// Generics
|
|
//-------------------------------------------------------------------
|
|
//parameter EXPAND_TYPE = 2;
|
|
//parameter THREADS = 2;
|
|
//parameter `GPR_WIDTH_ENC = 6;
|
|
//parameter `STQ_DATA_SIZE = 64; // 64 or 128 Bit store data sizes supported
|
|
//parameter `LQ_LOAD_PIPE_START = 4;
|
|
//parameter `LQ_LOAD_PIPE_END = 8;
|
|
//parameter `LQ_REL_PIPE_START = 2;
|
|
//parameter `LQ_REL_PIPE_END = 4;
|
|
//parameter XU0_PIPE_START = 2;
|
|
//parameter XU0_PIPE_END = 12;
|
|
//parameter XU1_PIPE_START = 2;
|
|
//parameter XU1_PIPE_END = 7;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Clocks & Power
|
|
//-------------------------------------------------------------------
|
|
|
|
|
|
inout vdd;
|
|
inout gnd;
|
|
|
|
input clk;
|
|
input rst;
|
|
//-------------------------------------------------------------------
|
|
// Pervasive
|
|
//-------------------------------------------------------------------
|
|
input d_mode_dc;
|
|
input delay_lclkr_dc;
|
|
input mpw1_dc_b;
|
|
input mpw2_dc_b;
|
|
input func_sl_force;
|
|
input func_sl_thold_0_b;
|
|
input func_slp_sl_force;
|
|
input func_slp_sl_thold_0_b;
|
|
input sg_0;
|
|
|
|
(* pin_data="PIN_FUNCTION=/SCAN_IN/" *)
|
|
|
|
input scan_in;
|
|
|
|
(* pin_data="PIN_FUNCTION=/SCAN_OUT/" *)
|
|
|
|
output scan_out;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface with XU
|
|
//-------------------------------------------------------------------
|
|
input xu0_lq_ex3_act;
|
|
input xu0_lq_ex3_abort;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] xu0_lq_ex3_rt;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] xu0_lq_ex4_rt;
|
|
input xu0_lq_ex6_act;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] xu0_lq_ex6_rt;
|
|
input xu1_lq_ex3_act;
|
|
input xu1_lq_ex3_abort;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] xu1_lq_ex3_rt;
|
|
output [(128-`STQ_DATA_SIZE):127] lq_xu_ex5_rt;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface with DEC
|
|
//-------------------------------------------------------------------
|
|
input dec_byp_ex0_stg_act;
|
|
input dec_byp_ex1_stg_act;
|
|
input dec_byp_ex5_stg_act;
|
|
input dec_byp_ex6_stg_act;
|
|
input dec_byp_ex7_stg_act;
|
|
input dec_byp_ex1_s1_vld;
|
|
input dec_byp_ex1_s2_vld;
|
|
input dec_byp_ex1_use_imm;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] dec_byp_ex1_imm;
|
|
input dec_byp_ex1_rs1_zero;
|
|
output byp_ex2_req_aborted;
|
|
output byp_dec_ex1_s1_abort;
|
|
output byp_dec_ex1_s2_abort;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface with LQ Pipe
|
|
//-------------------------------------------------------------------
|
|
// Load Pipe
|
|
output [64-(2**`GPR_WIDTH_ENC):63] ctl_lsq_ex4_xu1_data;
|
|
output [0:3] ctl_lsq_ex6_ldh_dacrw;
|
|
input lsq_ctl_ex5_fwd_val;
|
|
input [(128-`STQ_DATA_SIZE):127] lsq_ctl_ex5_fwd_data;
|
|
input [0:127] lsq_ctl_rel2_data;
|
|
input dcc_byp_rel2_stg_act;
|
|
input dcc_byp_rel3_stg_act;
|
|
input dcc_byp_ram_act;
|
|
input dcc_byp_ex4_moveOp_val;
|
|
input dcc_byp_stq6_moveOp_val;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] dcc_byp_ex4_move_data;
|
|
input dcc_byp_ex5_lq_req_abort;
|
|
input [0:((2**`GPR_WIDTH_ENC)/8)-1] dcc_byp_ex5_byte_mask;
|
|
input [0:`THREADS-1] dcc_byp_ex6_thrd_id;
|
|
input dcc_byp_ex6_dvc1_en;
|
|
input dcc_byp_ex6_dvc2_en;
|
|
input [0:3] dcc_byp_ex6_dacr_cmpr;
|
|
input [(128-`STQ_DATA_SIZE):127] dat_ctl_ex5_load_data;
|
|
input [(128-`STQ_DATA_SIZE):127] dat_ctl_stq6_axu_data;
|
|
input dcc_byp_ram_sel;
|
|
|
|
output [64-(2**`GPR_WIDTH_ENC):63] byp_dir_ex2_rs1;
|
|
output [64-(2**`GPR_WIDTH_ENC):63] byp_dir_ex2_rs2;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface with SPR's
|
|
//-------------------------------------------------------------------
|
|
input [64-(2**`GPR_WIDTH_ENC):63] spr_byp_spr_dvc1_dbg;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] spr_byp_spr_dvc2_dbg;
|
|
input [0:(`THREADS*2)-1] spr_byp_spr_dbcr2_dvc1m;
|
|
input [0:(`THREADS*8)-1] spr_byp_spr_dbcr2_dvc1be;
|
|
input [0:(`THREADS*2)-1] spr_byp_spr_dbcr2_dvc2m;
|
|
input [0:(`THREADS*8)-1] spr_byp_spr_dbcr2_dvc2be;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface with Bypass Controller
|
|
//-------------------------------------------------------------------
|
|
input [2:12] rv_lq_ex0_s1_xu0_sel;
|
|
input [2:12] rv_lq_ex0_s2_xu0_sel;
|
|
input [2:7] rv_lq_ex0_s1_xu1_sel;
|
|
input [2:7] rv_lq_ex0_s2_xu1_sel;
|
|
input [4:8] rv_lq_ex0_s1_lq_sel;
|
|
input [4:8] rv_lq_ex0_s2_lq_sel;
|
|
input [2:3] rv_lq_ex0_s1_rel_sel;
|
|
input [2:3] rv_lq_ex0_s2_rel_sel;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface with PERVASIVE
|
|
//-------------------------------------------------------------------
|
|
output [64-(2**`GPR_WIDTH_ENC):63] lq_pc_ram_data;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface with GPR
|
|
//-------------------------------------------------------------------
|
|
input [64-(2**`GPR_WIDTH_ENC):63] rv_lq_gpr_ex1_r0d;
|
|
input [64-(2**`GPR_WIDTH_ENC):63] rv_lq_gpr_ex1_r1d;
|
|
output [64-(2**`GPR_WIDTH_ENC):64+(((2**`GPR_WIDTH_ENC)-1)/8)] lq_rv_gpr_ex6_wd;
|
|
output [64-(2**`GPR_WIDTH_ENC):64+(((2**`GPR_WIDTH_ENC)-1)/8)] lq_rv_gpr_rel_wd;
|
|
output [(128-`STQ_DATA_SIZE):128+((`STQ_DATA_SIZE-1)/8)] lq_xu_gpr_rel_wd;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Interface with RV
|
|
//-------------------------------------------------------------------
|
|
output lq_rv_ex2_s1_abort;
|
|
output lq_rv_ex2_s2_abort;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Signals
|
|
//-------------------------------------------------------------------
|
|
wire tiup;
|
|
wire tidn;
|
|
wire [0:4] ex1_rs1_byp_sel;
|
|
wire [1:3] ex1_rs1_abort_byp_sel;
|
|
wire [0:4] ex1_rs2_byp_sel;
|
|
wire [1:3] ex1_rs2_abort_byp_sel;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex3_xu0_rt;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex4_xu0_rt;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex5_xu0_rt;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex6_xu0_rt;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex7_xu0_rt;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex8_xu0_rt;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex3_xu1_rt;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex4_xu1_rt;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex5_xu1_rt;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] rel2_rel_rt;
|
|
wire ex1_s1_load_byp_val;
|
|
wire ex1_s1_load_abort_byp_val;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex1_s1_load_data;
|
|
wire ex1_s2_load_byp_val;
|
|
wire ex1_s2_load_abort_byp_val;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex1_s2_load_data;
|
|
wire ex1_s1_reload_byp_val;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex1_s1_reload_data;
|
|
wire ex1_s2_reload_byp_val;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex1_s2_reload_data;
|
|
wire ex1_s1_xu0_byp_val;
|
|
wire ex1_s1_xu0_abort_byp_val;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex1_s1_xu0_data;
|
|
wire ex1_s2_xu0_byp_val;
|
|
wire ex1_s2_xu0_abort_byp_val;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex1_s2_xu0_data;
|
|
wire ex1_s1_xu1_byp_val;
|
|
wire ex1_s1_xu1_abort_byp_val;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex1_s1_xu1_data;
|
|
wire ex1_s2_xu1_byp_val;
|
|
wire ex1_s2_xu1_abort_byp_val;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex1_s2_xu1_data;
|
|
wire ex3_xu0_stg_act;
|
|
wire ex3_xu1_stg_act;
|
|
wire ex4_move_data_sel;
|
|
wire [(128-`STQ_DATA_SIZE):127] ex5_load_move_data;
|
|
wire [(128-`STQ_DATA_SIZE):127] ex5_load_data;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex5_fx_ld_data;
|
|
wire [0:((2**`GPR_WIDTH_ENC)-1)/8] ex5_fx_ld_data_par;
|
|
reg [0:1] spr_dbcr2_dvc1m;
|
|
reg [0:1] spr_dbcr2_dvc2m;
|
|
reg [8-(2**`GPR_WIDTH_ENC)/8:7] spr_dbcr2_dvc1be;
|
|
reg [8-(2**`GPR_WIDTH_ENC)/8:7] spr_dbcr2_dvc2be;
|
|
wire [0:((2**`GPR_WIDTH_ENC)/8)-1] ex6_dvc1_cmp_d;
|
|
wire [0:((2**`GPR_WIDTH_ENC)/8)-1] ex6_dvc1_cmp_q;
|
|
wire [0:((2**`GPR_WIDTH_ENC)/8)-1] ex6_dvc2_cmp_d;
|
|
wire [0:((2**`GPR_WIDTH_ENC)/8)-1] ex6_dvc2_cmp_q;
|
|
wire ex6_dvc1r_cmpr;
|
|
wire ex6_dvc2r_cmpr;
|
|
wire [0:3] ex6_dacrw;
|
|
wire [0:(`STQ_DATA_SIZE-1)/8] rel2_data_par;
|
|
wire [64-(2**`GPR_WIDTH_ENC):64+(((2**`GPR_WIDTH_ENC)-1)/8)] rel2_rv_rel_data;
|
|
wire [(128-`STQ_DATA_SIZE):128+((`STQ_DATA_SIZE-1)/8)] rel2_xu_rel_data;
|
|
wire [0:1] spr_dbcr2_dvc1m_tid[0:`THREADS-1];
|
|
wire [0:7] spr_dbcr2_dvc1be_tid[0:`THREADS-1];
|
|
wire [0:1] spr_dbcr2_dvc2m_tid[0:`THREADS-1];
|
|
wire [0:7] spr_dbcr2_dvc2be_tid[0:`THREADS-1];
|
|
wire ex5_lq_req_abort;
|
|
wire ex3_xu0_req_abort;
|
|
wire ex3_xu1_req_abort;
|
|
wire ex1_s1_load_abort;
|
|
wire ex1_s2_load_abort;
|
|
wire ex1_s1_xu0_abort;
|
|
wire ex1_s2_xu0_abort;
|
|
wire ex1_s1_xu1_abort;
|
|
wire ex1_s2_xu1_abort;
|
|
wire ex2_req_aborted;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Latches
|
|
//-------------------------------------------------------------------
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex2_rs1_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex2_rs1_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex2_rs2_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex2_rs2_q;
|
|
wire ex1_s1_abort;
|
|
wire ex2_s1_abort_d;
|
|
wire ex2_s1_abort_q;
|
|
wire ex1_s2_abort;
|
|
wire ex2_s2_abort_d;
|
|
wire ex2_s2_abort_q;
|
|
wire [2:12] ex1_s1_xu0_sel_q;
|
|
wire [2:12] ex1_s2_xu0_sel_q;
|
|
wire [2:7] ex1_s1_xu1_sel_q;
|
|
wire [2:7] ex1_s2_xu1_sel_q;
|
|
wire [4:8] ex1_s1_lq_sel_q;
|
|
wire [4:8] ex1_s2_lq_sel_q;
|
|
wire [2:3] ex1_s1_rel_sel_q;
|
|
wire [2:3] ex1_s2_rel_sel_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex5_xu0_rt_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex6_xu0_rt_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex7_xu0_rt_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex7_xu0_rt_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex8_xu0_rt_q;
|
|
wire ex4_xu0_req_abort_d;
|
|
wire ex4_xu0_req_abort_q;
|
|
wire ex5_xu0_req_abort_d;
|
|
wire ex5_xu0_req_abort_q;
|
|
wire ex6_xu0_req_abort_d;
|
|
wire ex6_xu0_req_abort_q;
|
|
wire ex7_xu0_req_abort_d;
|
|
wire ex7_xu0_req_abort_q;
|
|
wire ex8_xu0_req_abort_d;
|
|
wire ex8_xu0_req_abort_q;
|
|
wire ex9_xu0_req_abort_d;
|
|
wire ex9_xu0_req_abort_q;
|
|
wire ex10_xu0_req_abort_d;
|
|
wire ex10_xu0_req_abort_q;
|
|
wire ex11_xu0_req_abort_d;
|
|
wire ex11_xu0_req_abort_q;
|
|
wire ex12_xu0_req_abort_d;
|
|
wire ex12_xu0_req_abort_q;
|
|
wire ex13_xu0_req_abort_d;
|
|
wire ex13_xu0_req_abort_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex4_xu1_rt_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex5_xu1_rt_q;
|
|
wire ex4_xu1_req_abort_d;
|
|
wire ex4_xu1_req_abort_q;
|
|
wire ex5_xu1_req_abort_d;
|
|
wire ex5_xu1_req_abort_q;
|
|
wire ex6_xu1_req_abort_d;
|
|
wire ex6_xu1_req_abort_q;
|
|
wire ex7_xu1_req_abort_d;
|
|
wire ex7_xu1_req_abort_q;
|
|
wire ex8_xu1_req_abort_d;
|
|
wire ex8_xu1_req_abort_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] rel3_rel_rt_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] rel3_rel_rt_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] rel4_rel_rt_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] rel4_rel_rt_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex6_fx_ld_data_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex6_fx_ld_data_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex7_fx_ld_data_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex7_fx_ld_data_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex8_fx_ld_data_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] ex8_fx_ld_data_q;
|
|
wire ex3_req_aborted_d;
|
|
wire ex3_req_aborted_q;
|
|
wire ex4_req_aborted_d;
|
|
wire ex4_req_aborted_q;
|
|
wire ex5_req_aborted_d;
|
|
wire ex5_req_aborted_q;
|
|
wire ex6_lq_req_abort_d;
|
|
wire ex6_lq_req_abort_q;
|
|
wire ex7_lq_req_abort_d;
|
|
wire ex7_lq_req_abort_q;
|
|
wire ex8_lq_req_abort_d;
|
|
wire ex8_lq_req_abort_q;
|
|
wire ex9_lq_req_abort_d;
|
|
wire ex9_lq_req_abort_q;
|
|
wire ex4_xu0_stg_act_d;
|
|
wire ex4_xu0_stg_act_q;
|
|
wire ex5_xu0_stg_act_d;
|
|
wire ex5_xu0_stg_act_q;
|
|
wire ex6_xu0_stg_act;
|
|
wire ex6_xu0_stg_act_d;
|
|
wire ex6_xu0_stg_act_q;
|
|
wire ex7_xu0_stg_act_d;
|
|
wire ex7_xu0_stg_act_q;
|
|
wire ex4_xu1_stg_act_d;
|
|
wire ex4_xu1_stg_act_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):64+(((2**`GPR_WIDTH_ENC)-1)/8)] ex6_gpr_wd0_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):64+(((2**`GPR_WIDTH_ENC)-1)/8)] ex6_gpr_wd0_q;
|
|
wire ex5_move_data_sel_d;
|
|
wire ex5_move_data_sel_q;
|
|
wire [(128-`STQ_DATA_SIZE):127] ex5_mv_rel_data_d;
|
|
wire [(128-`STQ_DATA_SIZE):127] ex5_mv_rel_data_q;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] lq_pc_ram_data_d;
|
|
wire [64-(2**`GPR_WIDTH_ENC):63] lq_pc_ram_data_q;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Scanchain
|
|
//-------------------------------------------------------------------
|
|
parameter ex2_rs1_offset = 0;
|
|
parameter ex2_rs2_offset = ex2_rs1_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex2_s1_abort_offset = ex2_rs2_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex2_s2_abort_offset = ex2_s1_abort_offset + 1;
|
|
parameter ex1_s1_xu0_sel_offset = ex2_s2_abort_offset + 1;
|
|
parameter ex1_s2_xu0_sel_offset = ex1_s1_xu0_sel_offset + 11;
|
|
parameter ex1_s1_xu1_sel_offset = ex1_s2_xu0_sel_offset + 11;
|
|
parameter ex1_s2_xu1_sel_offset = ex1_s1_xu1_sel_offset + 6;
|
|
parameter ex1_s1_lq_sel_offset = ex1_s2_xu1_sel_offset + 6;
|
|
parameter ex1_s2_lq_sel_offset = ex1_s1_lq_sel_offset + 5;
|
|
parameter ex1_s1_rel_sel_offset = ex1_s2_lq_sel_offset + 5;
|
|
parameter ex1_s2_rel_sel_offset = ex1_s1_rel_sel_offset + 2;
|
|
parameter ex5_xu0_rt_offset = ex1_s2_rel_sel_offset + 2;
|
|
parameter ex6_xu0_rt_offset = ex5_xu0_rt_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex7_xu0_rt_offset = ex6_xu0_rt_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex8_xu0_rt_offset = ex7_xu0_rt_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex4_xu0_req_abort_offset = ex8_xu0_rt_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex5_xu0_req_abort_offset = ex4_xu0_req_abort_offset + 1;
|
|
parameter ex6_xu0_req_abort_offset = ex5_xu0_req_abort_offset + 1;
|
|
parameter ex7_xu0_req_abort_offset = ex6_xu0_req_abort_offset + 1;
|
|
parameter ex8_xu0_req_abort_offset = ex7_xu0_req_abort_offset + 1;
|
|
parameter ex9_xu0_req_abort_offset = ex8_xu0_req_abort_offset + 1;
|
|
parameter ex10_xu0_req_abort_offset = ex9_xu0_req_abort_offset + 1;
|
|
parameter ex11_xu0_req_abort_offset = ex10_xu0_req_abort_offset + 1;
|
|
parameter ex12_xu0_req_abort_offset = ex11_xu0_req_abort_offset + 1;
|
|
parameter ex13_xu0_req_abort_offset = ex12_xu0_req_abort_offset + 1;
|
|
parameter ex4_xu1_rt_offset = ex13_xu0_req_abort_offset + 1;
|
|
parameter ex5_xu1_rt_offset = ex4_xu1_rt_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex4_xu1_req_abort_offset = ex5_xu1_rt_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex5_xu1_req_abort_offset = ex4_xu1_req_abort_offset + 1;
|
|
parameter ex6_xu1_req_abort_offset = ex5_xu1_req_abort_offset + 1;
|
|
parameter ex7_xu1_req_abort_offset = ex6_xu1_req_abort_offset + 1;
|
|
parameter ex8_xu1_req_abort_offset = ex7_xu1_req_abort_offset + 1;
|
|
parameter rel3_rel_rt_offset = ex8_xu1_req_abort_offset + 1;
|
|
parameter rel4_rel_rt_offset = rel3_rel_rt_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex6_fx_ld_data_offset = rel4_rel_rt_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex7_fx_ld_data_offset = ex6_fx_ld_data_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex8_fx_ld_data_offset = ex7_fx_ld_data_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex3_req_aborted_offset = ex8_fx_ld_data_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex4_req_aborted_offset = ex3_req_aborted_offset + 1;
|
|
parameter ex5_req_aborted_offset = ex4_req_aborted_offset + 1;
|
|
parameter ex6_lq_req_abort_offset = ex5_req_aborted_offset + 1;
|
|
parameter ex7_lq_req_abort_offset = ex6_lq_req_abort_offset + 1;
|
|
parameter ex8_lq_req_abort_offset = ex7_lq_req_abort_offset + 1;
|
|
parameter ex9_lq_req_abort_offset = ex8_lq_req_abort_offset + 1;
|
|
parameter ex6_gpr_wd0_offset = ex9_lq_req_abort_offset + 1;
|
|
parameter ex5_move_data_sel_offset = ex6_gpr_wd0_offset + 2**`GPR_WIDTH_ENC + (2**`GPR_WIDTH_ENC)/8;
|
|
parameter ex5_mv_rel_data_offset = ex5_move_data_sel_offset + 1;
|
|
parameter ex6_dvc1_cmp_offset = ex5_mv_rel_data_offset + `STQ_DATA_SIZE;
|
|
parameter ex6_dvc2_cmp_offset = ex6_dvc1_cmp_offset + (2**`GPR_WIDTH_ENC)/8;
|
|
parameter lq_pc_ram_data_offset = ex6_dvc2_cmp_offset + (2**`GPR_WIDTH_ENC)/8;
|
|
parameter ex4_xu0_stg_act_offset = lq_pc_ram_data_offset + 2**`GPR_WIDTH_ENC;
|
|
parameter ex5_xu0_stg_act_offset = ex4_xu0_stg_act_offset + 1;
|
|
parameter ex6_xu0_stg_act_offset = ex5_xu0_stg_act_offset + 1;
|
|
parameter ex7_xu0_stg_act_offset = ex6_xu0_stg_act_offset + 1;
|
|
parameter ex4_xu1_stg_act_offset = ex7_xu0_stg_act_offset + 1;
|
|
parameter scan_right = ex4_xu1_stg_act_offset + 1;
|
|
wire [0:scan_right-1] siv;
|
|
wire [0:scan_right-1] sov;
|
|
|
|
(* analysis_not_referenced="true" *)
|
|
|
|
wire unused;
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Misc Assignments
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
assign tiup = 1'b1;
|
|
assign tidn = 1'b0;
|
|
assign ex3_xu0_rt = xu0_lq_ex3_rt;
|
|
assign ex4_xu0_rt = xu0_lq_ex4_rt;
|
|
assign ex5_xu0_rt = ex5_xu0_rt_q;
|
|
assign ex6_xu0_rt = ex6_xu0_rt_q;
|
|
assign ex7_xu0_rt_d = xu0_lq_ex6_rt;
|
|
assign ex7_xu0_rt = ex7_xu0_rt_q;
|
|
assign ex8_xu0_rt = ex8_xu0_rt_q;
|
|
assign ex3_xu0_req_abort = xu0_lq_ex3_abort;
|
|
assign ex4_xu0_req_abort_d = ex3_xu0_req_abort;
|
|
assign ex5_xu0_req_abort_d = ex4_xu0_req_abort_q;
|
|
assign ex6_xu0_req_abort_d = ex5_xu0_req_abort_q;
|
|
assign ex7_xu0_req_abort_d = ex6_xu0_req_abort_q;
|
|
assign ex8_xu0_req_abort_d = ex7_xu0_req_abort_q;
|
|
assign ex9_xu0_req_abort_d = ex8_xu0_req_abort_q;
|
|
assign ex10_xu0_req_abort_d = ex9_xu0_req_abort_q;
|
|
assign ex11_xu0_req_abort_d = ex10_xu0_req_abort_q;
|
|
assign ex12_xu0_req_abort_d = ex11_xu0_req_abort_q;
|
|
assign ex13_xu0_req_abort_d = ex12_xu0_req_abort_q;
|
|
|
|
assign ex3_xu1_rt = xu1_lq_ex3_rt;
|
|
assign ex4_xu1_rt = ex4_xu1_rt_q;
|
|
assign ex5_xu1_rt = ex5_xu1_rt_q;
|
|
assign ex3_xu1_req_abort = xu1_lq_ex3_abort;
|
|
assign ex4_xu1_req_abort_d = ex3_xu1_req_abort;
|
|
assign ex5_xu1_req_abort_d = ex4_xu1_req_abort_q;
|
|
assign ex6_xu1_req_abort_d = ex5_xu1_req_abort_q;
|
|
assign ex7_xu1_req_abort_d = ex6_xu1_req_abort_q;
|
|
assign ex8_xu1_req_abort_d = ex7_xu1_req_abort_q;
|
|
|
|
assign rel2_rel_rt = lsq_ctl_rel2_data[128-(2**`GPR_WIDTH_ENC):127];
|
|
assign rel3_rel_rt_d = rel2_rel_rt;
|
|
assign rel4_rel_rt_d = rel3_rel_rt_q;
|
|
|
|
assign ex3_xu0_stg_act = xu0_lq_ex3_act;
|
|
assign ex4_xu0_stg_act_d = ex3_xu0_stg_act;
|
|
assign ex5_xu0_stg_act_d = ex4_xu0_stg_act_q;
|
|
assign ex6_xu0_stg_act_d = ex5_xu0_stg_act_q;
|
|
assign ex6_xu0_stg_act = xu0_lq_ex6_act | ex6_xu0_stg_act_q;
|
|
assign ex7_xu0_stg_act_d = ex6_xu0_stg_act;
|
|
|
|
assign ex3_xu1_stg_act = xu1_lq_ex3_act;
|
|
assign ex4_xu1_stg_act_d = ex3_xu1_stg_act;
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Load Data Muxing Update
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Move Data contains mffgpr,mftgpr,ditc and store_updates_forms
|
|
// dcc_byp_ex4_moveOp_val is valid for the following instructions coming down the LQ Pipeline mffgpr or store_update_forms
|
|
// dcc_byp_stq6_moveOp_val is valid for the following instructions coming down the COMMIT Pipeline mftgpr, mfdpf, or mfdpa
|
|
generate
|
|
if (`STQ_DATA_SIZE == 128) begin : stqDat128
|
|
assign ex5_mv_rel_data_d[(128-`STQ_DATA_SIZE):127-(2**`GPR_WIDTH_ENC)] = dat_ctl_stq6_axu_data[(128-`STQ_DATA_SIZE):127-(2**`GPR_WIDTH_ENC)];
|
|
assign ex5_mv_rel_data_d[128-(2**`GPR_WIDTH_ENC):127] = (dat_ctl_stq6_axu_data[128-(2**`GPR_WIDTH_ENC):127] & {(2**`GPR_WIDTH_ENC){dcc_byp_stq6_moveOp_val}}) |
|
|
( dcc_byp_ex4_move_data & {(2**`GPR_WIDTH_ENC){dcc_byp_ex4_moveOp_val}});
|
|
assign unused = tidn;
|
|
end
|
|
endgenerate
|
|
|
|
generate
|
|
if (`STQ_DATA_SIZE == 64) begin : stqDat64
|
|
if ((2 ** `GPR_WIDTH_ENC) == 64) begin : gpr64
|
|
assign ex5_mv_rel_data_d[128 - (2 ** `GPR_WIDTH_ENC):127] = (dat_ctl_stq6_axu_data[128-(2**`GPR_WIDTH_ENC):127] & {(2**`GPR_WIDTH_ENC){dcc_byp_stq6_moveOp_val}}) |
|
|
( dcc_byp_ex4_move_data & {(2**`GPR_WIDTH_ENC){dcc_byp_ex4_moveOp_val}});
|
|
end
|
|
|
|
if ((2 ** `GPR_WIDTH_ENC) == 32) begin : gpr32
|
|
assign ex5_mv_rel_data_d[(128-`STQ_DATA_SIZE):127-(2**`GPR_WIDTH_ENC)] = dat_ctl_stq6_axu_data[(128-`STQ_DATA_SIZE):127-(2**`GPR_WIDTH_ENC)];
|
|
assign ex5_mv_rel_data_d[128-(2**`GPR_WIDTH_ENC):127] = (dat_ctl_stq6_axu_data[128-(2**`GPR_WIDTH_ENC):127] & {(2**`GPR_WIDTH_ENC){dcc_byp_stq6_moveOp_val}}) |
|
|
( dcc_byp_ex4_move_data & {(2**`GPR_WIDTH_ENC){dcc_byp_ex4_moveOp_val}});
|
|
end
|
|
assign unused = tidn | |lsq_ctl_rel2_data[0:`STQ_DATA_SIZE-1];
|
|
end
|
|
endgenerate
|
|
|
|
assign ex4_move_data_sel = dcc_byp_ex4_moveOp_val | dcc_byp_stq6_moveOp_val;
|
|
assign ex5_move_data_sel_d = ex4_move_data_sel;
|
|
|
|
// FX Load Hit Data
|
|
// Mux Between load hit and Move Data
|
|
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
// Mux Between move data and load hit
|
|
assign ex5_load_move_data = (ex5_mv_rel_data_q & {(`STQ_DATA_SIZE){ ex5_move_data_sel_q}}) |
|
|
(dat_ctl_ex5_load_data & {(`STQ_DATA_SIZE){~ex5_move_data_sel_q}});
|
|
// Mux Between load hit/Move Data and Data Forward
|
|
assign ex5_load_data = (lsq_ctl_ex5_fwd_data & {(`STQ_DATA_SIZE){ lsq_ctl_ex5_fwd_val}}) |
|
|
(ex5_load_move_data & {(`STQ_DATA_SIZE){~lsq_ctl_ex5_fwd_val}});
|
|
|
|
// Fixed Point Data For bypass
|
|
assign lq_xu_ex5_rt = ex5_load_data;
|
|
assign ex5_fx_ld_data = ex5_load_data[128 - (2 ** `GPR_WIDTH_ENC):127];
|
|
assign ex6_fx_ld_data_d = ex5_fx_ld_data;
|
|
assign ex7_fx_ld_data_d = ex6_fx_ld_data_q;
|
|
assign ex8_fx_ld_data_d = ex7_fx_ld_data_q;
|
|
assign ex5_lq_req_abort = dcc_byp_ex5_lq_req_abort | ex5_req_aborted_q;
|
|
assign ex6_lq_req_abort_d = ex5_lq_req_abort;
|
|
assign ex7_lq_req_abort_d = ex6_lq_req_abort_q;
|
|
assign ex8_lq_req_abort_d = ex7_lq_req_abort_q;
|
|
assign ex9_lq_req_abort_d = ex8_lq_req_abort_q;
|
|
assign ex2_req_aborted = ex2_s1_abort_q | ex2_s2_abort_q;
|
|
assign ex3_req_aborted_d = ex2_req_aborted;
|
|
assign ex4_req_aborted_d = ex3_req_aborted_q;
|
|
assign ex5_req_aborted_d = ex4_req_aborted_q;
|
|
|
|
generate begin : ex5ParGen
|
|
genvar b;
|
|
for (b=0; b<=((2**`GPR_WIDTH_ENC)-1)/8; b=b+1) begin : ex5ParGen
|
|
assign ex5_fx_ld_data_par[b] = ^(ex5_fx_ld_data[(64-(2**`GPR_WIDTH_ENC))+(b*8):(64-(2**`GPR_WIDTH_ENC))+(b*8)+7]);
|
|
end
|
|
end
|
|
endgenerate
|
|
|
|
assign ex6_gpr_wd0_d = {ex5_fx_ld_data, ex5_fx_ld_data_par};
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Internal Load LQ Muxing
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Source 1 Bypass Control
|
|
assign ex1_s1_load_byp_val = |(ex1_s1_lq_sel_q[4:7]);
|
|
|
|
assign ex1_s1_load_data = (ex5_fx_ld_data & {(2**`GPR_WIDTH_ENC){ex1_s1_lq_sel_q[4]}}) |
|
|
(ex6_fx_ld_data_q & {(2**`GPR_WIDTH_ENC){ex1_s1_lq_sel_q[5]}}) |
|
|
(ex7_fx_ld_data_q & {(2**`GPR_WIDTH_ENC){ex1_s1_lq_sel_q[6]}}) |
|
|
(ex8_fx_ld_data_q & {(2**`GPR_WIDTH_ENC){ex1_s1_lq_sel_q[7]}});
|
|
|
|
assign ex1_s1_load_abort_byp_val = |(ex1_s1_lq_sel_q);
|
|
|
|
assign ex1_s1_load_abort = (ex5_lq_req_abort & ex1_s1_lq_sel_q[4]) |
|
|
(ex6_lq_req_abort_q & ex1_s1_lq_sel_q[5]) |
|
|
(ex7_lq_req_abort_q & ex1_s1_lq_sel_q[6]) |
|
|
(ex8_lq_req_abort_q & ex1_s1_lq_sel_q[7]) |
|
|
(ex9_lq_req_abort_q & ex1_s1_lq_sel_q[8]);
|
|
|
|
// Source 2 Bypass Control
|
|
assign ex1_s2_load_byp_val = |(ex1_s2_lq_sel_q[4:7]);
|
|
|
|
assign ex1_s2_load_data = (ex5_fx_ld_data & {(2**`GPR_WIDTH_ENC){ex1_s2_lq_sel_q[4]}}) |
|
|
(ex6_fx_ld_data_q & {(2**`GPR_WIDTH_ENC){ex1_s2_lq_sel_q[5]}}) |
|
|
(ex7_fx_ld_data_q & {(2**`GPR_WIDTH_ENC){ex1_s2_lq_sel_q[6]}}) |
|
|
(ex8_fx_ld_data_q & {(2**`GPR_WIDTH_ENC){ex1_s2_lq_sel_q[7]}});
|
|
|
|
assign ex1_s2_load_abort_byp_val = |(ex1_s2_lq_sel_q);
|
|
|
|
assign ex1_s2_load_abort = (ex5_lq_req_abort & ex1_s2_lq_sel_q[4]) |
|
|
(ex6_lq_req_abort_q & ex1_s2_lq_sel_q[5]) |
|
|
(ex7_lq_req_abort_q & ex1_s2_lq_sel_q[6]) |
|
|
(ex8_lq_req_abort_q & ex1_s2_lq_sel_q[7]) |
|
|
(ex9_lq_req_abort_q & ex1_s2_lq_sel_q[8]);
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Internal Reload LQ Muxing
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Source 1 Bypass Control
|
|
assign ex1_s1_reload_byp_val = |(ex1_s1_rel_sel_q);
|
|
|
|
assign ex1_s1_reload_data = (rel3_rel_rt_q & {(2**`GPR_WIDTH_ENC){ex1_s1_rel_sel_q[2]}}) |
|
|
(rel4_rel_rt_q & {(2**`GPR_WIDTH_ENC){ex1_s1_rel_sel_q[3]}});
|
|
|
|
// Source 2 Bypass Control
|
|
assign ex1_s2_reload_byp_val = |(ex1_s2_rel_sel_q);
|
|
|
|
assign ex1_s2_reload_data = (rel3_rel_rt_q & {(2**`GPR_WIDTH_ENC){ex1_s2_rel_sel_q[2]}}) |
|
|
(rel4_rel_rt_q & {(2**`GPR_WIDTH_ENC){ex1_s2_rel_sel_q[3]}});
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// xu0 Muxing
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Source 1 Bypass Control
|
|
assign ex1_s1_xu0_byp_val = |(ex1_s1_xu0_sel_q[2:7]);
|
|
|
|
assign ex1_s1_xu0_data = (ex3_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s1_xu0_sel_q[2]}}) |
|
|
(ex4_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s1_xu0_sel_q[3]}}) |
|
|
(ex5_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s1_xu0_sel_q[4]}}) |
|
|
(ex6_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s1_xu0_sel_q[5]}}) |
|
|
(ex7_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s1_xu0_sel_q[6]}}) |
|
|
(ex8_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s1_xu0_sel_q[7]}});
|
|
|
|
assign ex1_s1_xu0_abort_byp_val = |(ex1_s1_xu0_sel_q);
|
|
|
|
assign ex1_s1_xu0_abort = (ex3_xu0_req_abort & ex1_s1_xu0_sel_q[2]) |
|
|
(ex4_xu0_req_abort_q & ex1_s1_xu0_sel_q[3]) |
|
|
(ex5_xu0_req_abort_q & ex1_s1_xu0_sel_q[4]) |
|
|
(ex6_xu0_req_abort_q & ex1_s1_xu0_sel_q[5]) |
|
|
(ex7_xu0_req_abort_q & ex1_s1_xu0_sel_q[6]) |
|
|
(ex8_xu0_req_abort_q & ex1_s1_xu0_sel_q[7]) |
|
|
(ex9_xu0_req_abort_q & ex1_s1_xu0_sel_q[8]) |
|
|
(ex10_xu0_req_abort_q & ex1_s1_xu0_sel_q[9]) |
|
|
(ex11_xu0_req_abort_q & ex1_s1_xu0_sel_q[10]) |
|
|
(ex12_xu0_req_abort_q & ex1_s1_xu0_sel_q[11]) |
|
|
(ex13_xu0_req_abort_q & ex1_s1_xu0_sel_q[12]);
|
|
|
|
// Source 2 Bypass Control
|
|
assign ex1_s2_xu0_byp_val = |(ex1_s2_xu0_sel_q[2:7]);
|
|
|
|
assign ex1_s2_xu0_data = (ex3_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s2_xu0_sel_q[2]}}) |
|
|
(ex4_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s2_xu0_sel_q[3]}}) |
|
|
(ex5_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s2_xu0_sel_q[4]}}) |
|
|
(ex6_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s2_xu0_sel_q[5]}}) |
|
|
(ex7_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s2_xu0_sel_q[6]}}) |
|
|
(ex8_xu0_rt & {(2**`GPR_WIDTH_ENC){ex1_s2_xu0_sel_q[7]}});
|
|
|
|
assign ex1_s2_xu0_abort_byp_val = |(ex1_s2_xu0_sel_q);
|
|
|
|
assign ex1_s2_xu0_abort = (ex3_xu0_req_abort & ex1_s2_xu0_sel_q[2]) |
|
|
(ex4_xu0_req_abort_q & ex1_s2_xu0_sel_q[3]) |
|
|
(ex5_xu0_req_abort_q & ex1_s2_xu0_sel_q[4]) |
|
|
(ex6_xu0_req_abort_q & ex1_s2_xu0_sel_q[5]) |
|
|
(ex7_xu0_req_abort_q & ex1_s2_xu0_sel_q[6]) |
|
|
(ex8_xu0_req_abort_q & ex1_s2_xu0_sel_q[7]) |
|
|
(ex9_xu0_req_abort_q & ex1_s2_xu0_sel_q[8]) |
|
|
(ex10_xu0_req_abort_q & ex1_s2_xu0_sel_q[9]) |
|
|
(ex11_xu0_req_abort_q & ex1_s2_xu0_sel_q[10]) |
|
|
(ex12_xu0_req_abort_q & ex1_s2_xu0_sel_q[11]) |
|
|
(ex13_xu0_req_abort_q & ex1_s2_xu0_sel_q[12]);
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// xu1 Muxing
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Source 1 Bypass Control
|
|
assign ex1_s1_xu1_byp_val = |(ex1_s1_xu1_sel_q[2:4]);
|
|
|
|
assign ex1_s1_xu1_data = (ex3_xu1_rt & {(2**`GPR_WIDTH_ENC){ex1_s1_xu1_sel_q[2]}}) |
|
|
(ex4_xu1_rt & {(2**`GPR_WIDTH_ENC){ex1_s1_xu1_sel_q[3]}}) |
|
|
(ex5_xu1_rt & {(2**`GPR_WIDTH_ENC){ex1_s1_xu1_sel_q[4]}});
|
|
|
|
assign ex1_s1_xu1_abort_byp_val = |(ex1_s1_xu1_sel_q);
|
|
|
|
assign ex1_s1_xu1_abort = (ex3_xu1_req_abort & ex1_s1_xu1_sel_q[2]) |
|
|
(ex4_xu1_req_abort_q & ex1_s1_xu1_sel_q[3]) |
|
|
(ex5_xu1_req_abort_q & ex1_s1_xu1_sel_q[4]) |
|
|
(ex6_xu1_req_abort_q & ex1_s1_xu1_sel_q[5]) |
|
|
(ex7_xu1_req_abort_q & ex1_s1_xu1_sel_q[6]) |
|
|
(ex8_xu1_req_abort_q & ex1_s1_xu1_sel_q[7]);
|
|
|
|
// Source 2 Bypass Control
|
|
assign ex1_s2_xu1_byp_val = |(ex1_s2_xu1_sel_q[2:4]);
|
|
|
|
assign ex1_s2_xu1_data = (ex3_xu1_rt & {(2**`GPR_WIDTH_ENC){ex1_s2_xu1_sel_q[2]}}) |
|
|
(ex4_xu1_rt & {(2**`GPR_WIDTH_ENC){ex1_s2_xu1_sel_q[3]}}) |
|
|
(ex5_xu1_rt & {(2**`GPR_WIDTH_ENC){ex1_s2_xu1_sel_q[4]}});
|
|
|
|
assign ex1_s2_xu1_abort_byp_val = |(ex1_s2_xu1_sel_q);
|
|
|
|
assign ex1_s2_xu1_abort = (ex3_xu1_req_abort & ex1_s2_xu1_sel_q[2]) |
|
|
(ex4_xu1_req_abort_q & ex1_s2_xu1_sel_q[3]) |
|
|
(ex5_xu1_req_abort_q & ex1_s2_xu1_sel_q[4]) |
|
|
(ex6_xu1_req_abort_q & ex1_s2_xu1_sel_q[5]) |
|
|
(ex7_xu1_req_abort_q & ex1_s2_xu1_sel_q[6]) |
|
|
(ex8_xu1_req_abort_q & ex1_s2_xu1_sel_q[7]);
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Source 1 Mux Selects
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// GPR Source 1
|
|
assign ex1_rs1_byp_sel[0] = (~(|{ex1_s1_xu0_byp_val, ex1_s1_xu1_byp_val, ex1_s1_load_byp_val, ex1_s1_reload_byp_val})) & (~dec_byp_ex1_rs1_zero); // Use Array or use ZERO
|
|
assign ex1_rs1_byp_sel[1] = ex1_s1_xu0_byp_val & (~dec_byp_ex1_rs1_zero); // Use xu0 or use ZERO
|
|
assign ex1_rs1_byp_sel[2] = ex1_s1_xu1_byp_val & (~dec_byp_ex1_rs1_zero); // Use xu1 or use ZERO
|
|
assign ex1_rs1_byp_sel[3] = ex1_s1_load_byp_val & (~dec_byp_ex1_rs1_zero); // Use LQ LOAD or use ZERO
|
|
assign ex1_rs1_byp_sel[4] = ex1_s1_reload_byp_val & (~dec_byp_ex1_rs1_zero); // Use LQ RELOAD or use ZERO
|
|
|
|
assign ex2_rs1_d = (rv_lq_gpr_ex1_r0d & {(2**`GPR_WIDTH_ENC){ex1_rs1_byp_sel[0]}}) |
|
|
(ex1_s1_xu0_data & {(2**`GPR_WIDTH_ENC){ex1_rs1_byp_sel[1]}}) |
|
|
(ex1_s1_xu1_data & {(2**`GPR_WIDTH_ENC){ex1_rs1_byp_sel[2]}}) |
|
|
(ex1_s1_load_data & {(2**`GPR_WIDTH_ENC){ex1_rs1_byp_sel[3]}}) |
|
|
(ex1_s1_reload_data & {(2**`GPR_WIDTH_ENC){ex1_rs1_byp_sel[4]}});
|
|
|
|
// Abort Bypass for Source 1
|
|
assign ex1_rs1_abort_byp_sel[1] = ex1_s1_xu0_abort_byp_val & (~dec_byp_ex1_rs1_zero); // Use xu0 or use ZERO
|
|
assign ex1_rs1_abort_byp_sel[2] = ex1_s1_xu1_abort_byp_val & (~dec_byp_ex1_rs1_zero); // Use xu1 or use ZERO
|
|
assign ex1_rs1_abort_byp_sel[3] = ex1_s1_load_abort_byp_val & (~dec_byp_ex1_rs1_zero); // Use LQ LOAD or use ZERO
|
|
|
|
assign ex1_s1_abort = ((ex1_s1_xu0_abort & ex1_rs1_abort_byp_sel[1]) |
|
|
(ex1_s1_xu1_abort & ex1_rs1_abort_byp_sel[2]) |
|
|
(ex1_s1_load_abort & ex1_rs1_abort_byp_sel[3])) & dec_byp_ex1_s1_vld;
|
|
|
|
assign ex2_s1_abort_d = ex1_s1_abort;
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Source 2 Mux Selects
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// GPR Source 2
|
|
assign ex1_rs2_byp_sel[0] = (~(|{ex1_s2_xu0_byp_val, ex1_s2_xu1_byp_val, ex1_s2_load_byp_val, ex1_s2_reload_byp_val})) & (~dec_byp_ex1_use_imm); // Use Array or use IMMEDIATE
|
|
assign ex1_rs2_byp_sel[1] = ex1_s2_xu0_byp_val & (~dec_byp_ex1_use_imm); // Use xu0 or use IMMEDIATE
|
|
assign ex1_rs2_byp_sel[2] = ex1_s2_xu1_byp_val & (~dec_byp_ex1_use_imm); // Use xu1 or use IMMEDIATE
|
|
assign ex1_rs2_byp_sel[3] = ex1_s2_load_byp_val & (~dec_byp_ex1_use_imm); // Use LQ LOAD or use IMMEDIATE
|
|
assign ex1_rs2_byp_sel[4] = ex1_s2_reload_byp_val & (~dec_byp_ex1_use_imm); // Use LQ RELOAD or use IMMEDIATE
|
|
|
|
assign ex2_rs2_d = (rv_lq_gpr_ex1_r1d & {(2**`GPR_WIDTH_ENC){ex1_rs2_byp_sel[0]}}) |
|
|
(ex1_s2_xu0_data & {(2**`GPR_WIDTH_ENC){ex1_rs2_byp_sel[1]}}) |
|
|
(ex1_s2_xu1_data & {(2**`GPR_WIDTH_ENC){ex1_rs2_byp_sel[2]}}) |
|
|
(ex1_s2_load_data & {(2**`GPR_WIDTH_ENC){ex1_rs2_byp_sel[3]}}) |
|
|
(ex1_s2_reload_data & {(2**`GPR_WIDTH_ENC){ex1_rs2_byp_sel[4]}}) |
|
|
(dec_byp_ex1_imm & {(2**`GPR_WIDTH_ENC){dec_byp_ex1_use_imm}});
|
|
|
|
// Abort Bypass for Source 2
|
|
assign ex1_rs2_abort_byp_sel[1] = ex1_s2_xu0_abort_byp_val & (~dec_byp_ex1_use_imm); // Use xu0 or use IMMEDIATE
|
|
assign ex1_rs2_abort_byp_sel[2] = ex1_s2_xu1_abort_byp_val & (~dec_byp_ex1_use_imm); // Use xu1 or use IMMEDIATE
|
|
assign ex1_rs2_abort_byp_sel[3] = ex1_s2_load_abort_byp_val & (~dec_byp_ex1_use_imm); // Use LQ LOAD or use IMMEDIATE
|
|
|
|
assign ex1_s2_abort = ((ex1_s2_xu0_abort & ex1_rs2_abort_byp_sel[1]) |
|
|
(ex1_s2_xu1_abort & ex1_rs2_abort_byp_sel[2]) |
|
|
(ex1_s2_load_abort & ex1_rs2_abort_byp_sel[3])) & dec_byp_ex1_s2_vld;
|
|
|
|
assign ex2_s2_abort_d = ex1_s2_abort;
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Load Hit Debug Data Compare
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
// Load Hit Data Compare
|
|
generate begin : dvcCmpLH
|
|
genvar t;
|
|
for (t = 0; t <= ((2 ** `GPR_WIDTH_ENC)/8) - 1; t = t + 1) begin : dvcCmpLH
|
|
assign ex6_dvc1_cmp_d[t] = ( ex5_fx_ld_data[(64-(2**`GPR_WIDTH_ENC))+t*8:(64-(2**`GPR_WIDTH_ENC))+((t*8)+7)] ==
|
|
spr_byp_spr_dvc1_dbg[(64-(2**`GPR_WIDTH_ENC))+t*8:(64-(2**`GPR_WIDTH_ENC))+((t*8)+7)]) & dcc_byp_ex5_byte_mask[t];
|
|
assign ex6_dvc2_cmp_d[t] = ( ex5_fx_ld_data[(64-(2**`GPR_WIDTH_ENC))+t*8:(64-(2**`GPR_WIDTH_ENC))+((t*8)+7)] ==
|
|
spr_byp_spr_dvc2_dbg[(64-(2**`GPR_WIDTH_ENC))+t*8:(64-(2**`GPR_WIDTH_ENC))+((t*8)+7)]) & dcc_byp_ex5_byte_mask[t];
|
|
end
|
|
end
|
|
endgenerate
|
|
|
|
// Thread Select
|
|
generate begin : sprTid
|
|
genvar tid;
|
|
for (tid=0; tid<`THREADS; tid=tid+1) begin : sprTid
|
|
assign spr_dbcr2_dvc1m_tid[tid] = spr_byp_spr_dbcr2_dvc1m[(tid*2):((tid*2)+1)];
|
|
assign spr_dbcr2_dvc1be_tid[tid] = spr_byp_spr_dbcr2_dvc1be[tid*8:(tid*8)+7];
|
|
assign spr_dbcr2_dvc2m_tid[tid] = spr_byp_spr_dbcr2_dvc2m[tid*2:(tid*2)+1];
|
|
assign spr_dbcr2_dvc2be_tid[tid] = spr_byp_spr_dbcr2_dvc2be[tid*8:(tid*8)+7];
|
|
end
|
|
end
|
|
endgenerate
|
|
|
|
always @(*) begin: ldhTid
|
|
reg [0:1] dvc1m;
|
|
reg [0:1] dvc2m;
|
|
reg [8-(2**`GPR_WIDTH_ENC)/8:7] dvc1be;
|
|
reg [8-(2**`GPR_WIDTH_ENC)/8:7] dvc2be;
|
|
|
|
//(* analysis_not_referenced="true" *)
|
|
|
|
integer tid;
|
|
dvc1m = {2{1'b0}};
|
|
dvc2m = {2{1'b0}};
|
|
dvc1be = {((2**`GPR_WIDTH_ENC)/8){1'b0}};
|
|
dvc2be = {((2**`GPR_WIDTH_ENC)/8){1'b0}};
|
|
for (tid=0; tid<`THREADS; tid=tid+1) begin
|
|
dvc1m = (spr_dbcr2_dvc1m_tid[tid] & {2{dcc_byp_ex6_thrd_id[tid]}}) | dvc1m;
|
|
dvc2m = (spr_dbcr2_dvc2m_tid[tid] & {2{dcc_byp_ex6_thrd_id[tid]}}) | dvc2m;
|
|
dvc1be = (spr_dbcr2_dvc1be_tid[tid][8-((2**`GPR_WIDTH_ENC)/8):7] & {((2**`GPR_WIDTH_ENC)/8){dcc_byp_ex6_thrd_id[tid]}}) | dvc1be;
|
|
dvc2be = (spr_dbcr2_dvc2be_tid[tid][8-((2**`GPR_WIDTH_ENC)/8):7] & {((2**`GPR_WIDTH_ENC)/8){dcc_byp_ex6_thrd_id[tid]}}) | dvc2be;
|
|
end
|
|
spr_dbcr2_dvc1m = dvc1m;
|
|
spr_dbcr2_dvc2m = dvc2m;
|
|
spr_dbcr2_dvc1be = dvc1be;
|
|
spr_dbcr2_dvc2be = dvc2be;
|
|
end
|
|
|
|
lq_spr_dvccmp #(.REGSIZE(2**`GPR_WIDTH_ENC)) dvc1Ldh(
|
|
.en(dcc_byp_ex6_dvc1_en),
|
|
.en00(dcc_byp_ex6_dacr_cmpr[0]),
|
|
.cmp(ex6_dvc1_cmp_q),
|
|
.dvcm(spr_dbcr2_dvc1m),
|
|
.dvcbe(spr_dbcr2_dvc1be),
|
|
.dvc_cmpr(ex6_dvc1r_cmpr));
|
|
|
|
lq_spr_dvccmp #(.REGSIZE(2**`GPR_WIDTH_ENC)) dvc2Ldh(
|
|
.en(dcc_byp_ex6_dvc2_en),
|
|
.en00(dcc_byp_ex6_dacr_cmpr[1]),
|
|
.cmp(ex6_dvc2_cmp_q),
|
|
.dvcm(spr_dbcr2_dvc2m),
|
|
.dvcbe(spr_dbcr2_dvc2be),
|
|
.dvc_cmpr(ex6_dvc2r_cmpr));
|
|
|
|
assign ex6_dacrw = {ex6_dvc1r_cmpr, ex6_dvc2r_cmpr, dcc_byp_ex6_dacr_cmpr[2:3]};
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// RAM Data Muxing
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// RAM Data Update
|
|
|
|
assign lq_pc_ram_data_d = dcc_byp_ram_sel ? lsq_ctl_rel2_data[128-(2**`GPR_WIDTH_ENC):127] : ex6_gpr_wd0_q[64-(2**`GPR_WIDTH_ENC):63];
|
|
assign lq_pc_ram_data = lq_pc_ram_data_q;
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Reload Data Parity Generation
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
generate begin : relParGen
|
|
genvar b;
|
|
for (b = 0; b <= (`STQ_DATA_SIZE- 1)/8; b=b+1) begin : relParGen
|
|
assign rel2_data_par[b] = ^(lsq_ctl_rel2_data[(128-`STQ_DATA_SIZE) + b*8:((128-`STQ_DATA_SIZE))+(b*8)+7]);
|
|
end
|
|
end
|
|
endgenerate
|
|
|
|
assign rel2_rv_rel_data = {lsq_ctl_rel2_data[128-(2**`GPR_WIDTH_ENC):127],
|
|
rel2_data_par[((`STQ_DATA_SIZE-1)/8)-(((2**`GPR_WIDTH_ENC)-1)/8):(`STQ_DATA_SIZE-1)/8]};
|
|
assign rel2_xu_rel_data = {lsq_ctl_rel2_data[(128-`STQ_DATA_SIZE):127], rel2_data_par};
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Assign targets
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
assign byp_dir_ex2_rs1 = ex2_rs1_q;
|
|
assign byp_dir_ex2_rs2 = ex2_rs2_q;
|
|
assign byp_ex2_req_aborted = ex2_req_aborted;
|
|
assign lq_rv_gpr_ex6_wd = ex6_gpr_wd0_q;
|
|
assign lq_rv_gpr_rel_wd = rel2_rv_rel_data;
|
|
assign lq_xu_gpr_rel_wd = rel2_xu_rel_data;
|
|
assign ctl_lsq_ex4_xu1_data = ex4_xu1_rt_q;
|
|
assign ctl_lsq_ex6_ldh_dacrw = ex6_dacrw;
|
|
assign lq_rv_ex2_s1_abort = ex2_s1_abort_q;
|
|
assign lq_rv_ex2_s2_abort = ex2_s2_abort_q;
|
|
assign byp_dec_ex1_s1_abort = ex1_s1_abort;
|
|
assign byp_dec_ex1_s2_abort = ex1_s2_abort;
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
// Latches
|
|
//----------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex2_rs1_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex1_stg_act),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex2_rs1_offset:ex2_rs1_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex2_rs1_offset:ex2_rs1_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex2_rs1_d),
|
|
.dout(ex2_rs1_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex2_rs2_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex1_stg_act),
|
|
.force_t(func_slp_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_slp_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex2_rs2_offset:ex2_rs2_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex2_rs2_offset:ex2_rs2_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex2_rs2_d),
|
|
.dout(ex2_rs2_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex2_s1_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex2_s1_abort_offset]),
|
|
.scout(sov[ex2_s1_abort_offset]),
|
|
.din(ex2_s1_abort_d),
|
|
.dout(ex2_s1_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex2_s2_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex2_s2_abort_offset]),
|
|
.scout(sov[ex2_s2_abort_offset]),
|
|
.din(ex2_s2_abort_d),
|
|
.dout(ex2_s2_abort_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(11), .INIT(0), .NEEDS_SRESET(1)) ex1_s1_xu0_sel_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex0_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex1_s1_xu0_sel_offset:ex1_s1_xu0_sel_offset + (11) - 1]),
|
|
.scout(sov[ex1_s1_xu0_sel_offset:ex1_s1_xu0_sel_offset + (11) - 1]),
|
|
.din(rv_lq_ex0_s1_xu0_sel),
|
|
.dout(ex1_s1_xu0_sel_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(11), .INIT(0), .NEEDS_SRESET(1)) ex1_s2_xu0_sel_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex0_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex1_s2_xu0_sel_offset:ex1_s2_xu0_sel_offset + (11) - 1]),
|
|
.scout(sov[ex1_s2_xu0_sel_offset:ex1_s2_xu0_sel_offset + (11) - 1]),
|
|
.din(rv_lq_ex0_s2_xu0_sel),
|
|
.dout(ex1_s2_xu0_sel_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(6), .INIT(0), .NEEDS_SRESET(1)) ex1_s1_xu1_sel_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex0_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex1_s1_xu1_sel_offset:ex1_s1_xu1_sel_offset + (6) - 1]),
|
|
.scout(sov[ex1_s1_xu1_sel_offset:ex1_s1_xu1_sel_offset + (6) - 1]),
|
|
.din(rv_lq_ex0_s1_xu1_sel),
|
|
.dout(ex1_s1_xu1_sel_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(6), .INIT(0), .NEEDS_SRESET(1)) ex1_s2_xu1_sel_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex0_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex1_s2_xu1_sel_offset:ex1_s2_xu1_sel_offset + (6) - 1]),
|
|
.scout(sov[ex1_s2_xu1_sel_offset:ex1_s2_xu1_sel_offset + (6) - 1]),
|
|
.din(rv_lq_ex0_s2_xu1_sel),
|
|
.dout(ex1_s2_xu1_sel_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(5), .INIT(0), .NEEDS_SRESET(1)) ex1_s1_lq_sel_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex0_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex1_s1_lq_sel_offset:ex1_s1_lq_sel_offset + (5) - 1]),
|
|
.scout(sov[ex1_s1_lq_sel_offset:ex1_s1_lq_sel_offset + (5) - 1]),
|
|
.din(rv_lq_ex0_s1_lq_sel),
|
|
.dout(ex1_s1_lq_sel_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(5), .INIT(0), .NEEDS_SRESET(1)) ex1_s2_lq_sel_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex0_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex1_s2_lq_sel_offset:ex1_s2_lq_sel_offset + (5) - 1]),
|
|
.scout(sov[ex1_s2_lq_sel_offset:ex1_s2_lq_sel_offset + (5) - 1]),
|
|
.din(rv_lq_ex0_s2_lq_sel),
|
|
.dout(ex1_s2_lq_sel_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2), .INIT(0), .NEEDS_SRESET(1)) ex1_s1_rel_sel_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex0_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex1_s1_rel_sel_offset:ex1_s1_rel_sel_offset + (2) - 1]),
|
|
.scout(sov[ex1_s1_rel_sel_offset:ex1_s1_rel_sel_offset + (2) - 1]),
|
|
.din(rv_lq_ex0_s1_rel_sel),
|
|
.dout(ex1_s1_rel_sel_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2), .INIT(0), .NEEDS_SRESET(1)) ex1_s2_rel_sel_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex0_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex1_s2_rel_sel_offset:ex1_s2_rel_sel_offset + (2) - 1]),
|
|
.scout(sov[ex1_s2_rel_sel_offset:ex1_s2_rel_sel_offset + (2) - 1]),
|
|
.din(rv_lq_ex0_s2_rel_sel),
|
|
.dout(ex1_s2_rel_sel_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex5_xu0_rt_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(ex4_xu0_stg_act_q),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_xu0_rt_offset:ex5_xu0_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex5_xu0_rt_offset:ex5_xu0_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex4_xu0_rt),
|
|
.dout(ex5_xu0_rt_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex6_xu0_rt_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(ex5_xu0_stg_act_q),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_xu0_rt_offset:ex6_xu0_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex6_xu0_rt_offset:ex6_xu0_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex5_xu0_rt_q),
|
|
.dout(ex6_xu0_rt_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex7_xu0_rt_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(ex6_xu0_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex7_xu0_rt_offset:ex7_xu0_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex7_xu0_rt_offset:ex7_xu0_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex7_xu0_rt_d),
|
|
.dout(ex7_xu0_rt_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex8_xu0_rt_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(ex7_xu0_stg_act_q),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex8_xu0_rt_offset:ex8_xu0_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex8_xu0_rt_offset:ex8_xu0_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex7_xu0_rt_q),
|
|
.dout(ex8_xu0_rt_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex4_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_xu0_req_abort_offset]),
|
|
.scout(sov[ex4_xu0_req_abort_offset]),
|
|
.din(ex4_xu0_req_abort_d),
|
|
.dout(ex4_xu0_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex5_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_xu0_req_abort_offset]),
|
|
.scout(sov[ex5_xu0_req_abort_offset]),
|
|
.din(ex5_xu0_req_abort_d),
|
|
.dout(ex5_xu0_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex6_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_xu0_req_abort_offset]),
|
|
.scout(sov[ex6_xu0_req_abort_offset]),
|
|
.din(ex6_xu0_req_abort_d),
|
|
.dout(ex6_xu0_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex7_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex7_xu0_req_abort_offset]),
|
|
.scout(sov[ex7_xu0_req_abort_offset]),
|
|
.din(ex7_xu0_req_abort_d),
|
|
.dout(ex7_xu0_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex8_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex8_xu0_req_abort_offset]),
|
|
.scout(sov[ex8_xu0_req_abort_offset]),
|
|
.din(ex8_xu0_req_abort_d),
|
|
.dout(ex8_xu0_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex9_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex9_xu0_req_abort_offset]),
|
|
.scout(sov[ex9_xu0_req_abort_offset]),
|
|
.din(ex9_xu0_req_abort_d),
|
|
.dout(ex9_xu0_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex10_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex10_xu0_req_abort_offset]),
|
|
.scout(sov[ex10_xu0_req_abort_offset]),
|
|
.din(ex10_xu0_req_abort_d),
|
|
.dout(ex10_xu0_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex11_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex11_xu0_req_abort_offset]),
|
|
.scout(sov[ex11_xu0_req_abort_offset]),
|
|
.din(ex11_xu0_req_abort_d),
|
|
.dout(ex11_xu0_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex12_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex12_xu0_req_abort_offset]),
|
|
.scout(sov[ex12_xu0_req_abort_offset]),
|
|
.din(ex12_xu0_req_abort_d),
|
|
.dout(ex12_xu0_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex13_xu0_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex13_xu0_req_abort_offset]),
|
|
.scout(sov[ex13_xu0_req_abort_offset]),
|
|
.din(ex13_xu0_req_abort_d),
|
|
.dout(ex13_xu0_req_abort_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex4_xu1_rt_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(ex3_xu1_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_xu1_rt_offset:ex4_xu1_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex4_xu1_rt_offset:ex4_xu1_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(xu1_lq_ex3_rt),
|
|
.dout(ex4_xu1_rt_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex5_xu1_rt_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(ex4_xu1_stg_act_q),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_xu1_rt_offset:ex5_xu1_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex5_xu1_rt_offset:ex5_xu1_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex4_xu1_rt_q),
|
|
.dout(ex5_xu1_rt_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex4_xu1_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_xu1_req_abort_offset]),
|
|
.scout(sov[ex4_xu1_req_abort_offset]),
|
|
.din(ex4_xu1_req_abort_d),
|
|
.dout(ex4_xu1_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex5_xu1_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_xu1_req_abort_offset]),
|
|
.scout(sov[ex5_xu1_req_abort_offset]),
|
|
.din(ex5_xu1_req_abort_d),
|
|
.dout(ex5_xu1_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex6_xu1_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_xu1_req_abort_offset]),
|
|
.scout(sov[ex6_xu1_req_abort_offset]),
|
|
.din(ex6_xu1_req_abort_d),
|
|
.dout(ex6_xu1_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex7_xu1_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex7_xu1_req_abort_offset]),
|
|
.scout(sov[ex7_xu1_req_abort_offset]),
|
|
.din(ex7_xu1_req_abort_d),
|
|
.dout(ex7_xu1_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex8_xu1_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex8_xu1_req_abort_offset]),
|
|
.scout(sov[ex8_xu1_req_abort_offset]),
|
|
.din(ex8_xu1_req_abort_d),
|
|
.dout(ex8_xu1_req_abort_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) rel3_rel_rt_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dcc_byp_rel2_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[rel3_rel_rt_offset:rel3_rel_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[rel3_rel_rt_offset:rel3_rel_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(rel3_rel_rt_d),
|
|
.dout(rel3_rel_rt_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) rel4_rel_rt_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dcc_byp_rel3_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[rel4_rel_rt_offset:rel4_rel_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[rel4_rel_rt_offset:rel4_rel_rt_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(rel4_rel_rt_d),
|
|
.dout(rel4_rel_rt_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex6_fx_ld_data_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex5_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_fx_ld_data_offset:ex6_fx_ld_data_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex6_fx_ld_data_offset:ex6_fx_ld_data_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex6_fx_ld_data_d),
|
|
.dout(ex6_fx_ld_data_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex7_fx_ld_data_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex6_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex7_fx_ld_data_offset:ex7_fx_ld_data_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex7_fx_ld_data_offset:ex7_fx_ld_data_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex7_fx_ld_data_d),
|
|
.dout(ex7_fx_ld_data_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) ex8_fx_ld_data_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex7_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex8_fx_ld_data_offset:ex8_fx_ld_data_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[ex8_fx_ld_data_offset:ex8_fx_ld_data_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(ex8_fx_ld_data_d),
|
|
.dout(ex8_fx_ld_data_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex3_req_aborted_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex3_req_aborted_offset]),
|
|
.scout(sov[ex3_req_aborted_offset]),
|
|
.din(ex3_req_aborted_d),
|
|
.dout(ex3_req_aborted_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex4_req_aborted_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_req_aborted_offset]),
|
|
.scout(sov[ex4_req_aborted_offset]),
|
|
.din(ex4_req_aborted_d),
|
|
.dout(ex4_req_aborted_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex5_req_aborted_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_req_aborted_offset]),
|
|
.scout(sov[ex5_req_aborted_offset]),
|
|
.din(ex5_req_aborted_d),
|
|
.dout(ex5_req_aborted_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex6_lq_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_lq_req_abort_offset]),
|
|
.scout(sov[ex6_lq_req_abort_offset]),
|
|
.din(ex6_lq_req_abort_d),
|
|
.dout(ex6_lq_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex7_lq_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex7_lq_req_abort_offset]),
|
|
.scout(sov[ex7_lq_req_abort_offset]),
|
|
.din(ex7_lq_req_abort_d),
|
|
.dout(ex7_lq_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex8_lq_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex8_lq_req_abort_offset]),
|
|
.scout(sov[ex8_lq_req_abort_offset]),
|
|
.din(ex8_lq_req_abort_d),
|
|
.dout(ex8_lq_req_abort_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex9_lq_req_abort_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex9_lq_req_abort_offset]),
|
|
.scout(sov[ex9_lq_req_abort_offset]),
|
|
.din(ex9_lq_req_abort_d),
|
|
.dout(ex9_lq_req_abort_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH((2**`GPR_WIDTH_ENC)+(2**`GPR_WIDTH_ENC)/8), .INIT(0), .NEEDS_SRESET(1)) ex6_gpr_wd0_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex5_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_gpr_wd0_offset:ex6_gpr_wd0_offset + (2**`GPR_WIDTH_ENC)+(2**`GPR_WIDTH_ENC)/8 - 1]),
|
|
.scout(sov[ex6_gpr_wd0_offset:ex6_gpr_wd0_offset + (2**`GPR_WIDTH_ENC)+(2**`GPR_WIDTH_ENC)/8 - 1]),
|
|
.din(ex6_gpr_wd0_d),
|
|
.dout(ex6_gpr_wd0_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex5_move_data_sel_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_move_data_sel_offset]),
|
|
.scout(sov[ex5_move_data_sel_offset]),
|
|
.din(ex5_move_data_sel_d),
|
|
.dout(ex5_move_data_sel_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(`STQ_DATA_SIZE), .INIT(0), .NEEDS_SRESET(1)) ex5_mv_rel_data_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(ex4_move_data_sel),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_mv_rel_data_offset:ex5_mv_rel_data_offset + `STQ_DATA_SIZE - 1]),
|
|
.scout(sov[ex5_mv_rel_data_offset:ex5_mv_rel_data_offset + `STQ_DATA_SIZE - 1]),
|
|
.din(ex5_mv_rel_data_d),
|
|
.dout(ex5_mv_rel_data_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH((2**`GPR_WIDTH_ENC)/8), .INIT(0), .NEEDS_SRESET(1)) ex6_dvc1_cmp_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex5_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_dvc1_cmp_offset:ex6_dvc1_cmp_offset + (2**`GPR_WIDTH_ENC)/8 - 1]),
|
|
.scout(sov[ex6_dvc1_cmp_offset:ex6_dvc1_cmp_offset + (2**`GPR_WIDTH_ENC)/8 - 1]),
|
|
.din(ex6_dvc1_cmp_d),
|
|
.dout(ex6_dvc1_cmp_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH((2**`GPR_WIDTH_ENC)/8), .INIT(0), .NEEDS_SRESET(1)) ex6_dvc2_cmp_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dec_byp_ex5_stg_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_dvc2_cmp_offset:ex6_dvc2_cmp_offset + (2**`GPR_WIDTH_ENC)/8 - 1]),
|
|
.scout(sov[ex6_dvc2_cmp_offset:ex6_dvc2_cmp_offset + (2**`GPR_WIDTH_ENC)/8 - 1]),
|
|
.din(ex6_dvc2_cmp_d),
|
|
.dout(ex6_dvc2_cmp_q));
|
|
|
|
tri_rlmreg_p #(.WIDTH(2**`GPR_WIDTH_ENC), .INIT(0), .NEEDS_SRESET(1)) lq_pc_ram_data_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(dcc_byp_ram_act),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[lq_pc_ram_data_offset:lq_pc_ram_data_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.scout(sov[lq_pc_ram_data_offset:lq_pc_ram_data_offset + 2**`GPR_WIDTH_ENC - 1]),
|
|
.din(lq_pc_ram_data_d),
|
|
.dout(lq_pc_ram_data_q));
|
|
|
|
//------------------------------------
|
|
// ACTs
|
|
//------------------------------------
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex4_xu0_stg_act_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_xu0_stg_act_offset]),
|
|
.scout(sov[ex4_xu0_stg_act_offset]),
|
|
.din(ex4_xu0_stg_act_d),
|
|
.dout(ex4_xu0_stg_act_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex5_xu0_stg_act_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex5_xu0_stg_act_offset]),
|
|
.scout(sov[ex5_xu0_stg_act_offset]),
|
|
.din(ex5_xu0_stg_act_d),
|
|
.dout(ex5_xu0_stg_act_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex6_xu0_stg_act_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex6_xu0_stg_act_offset]),
|
|
.scout(sov[ex6_xu0_stg_act_offset]),
|
|
.din(ex6_xu0_stg_act_d),
|
|
.dout(ex6_xu0_stg_act_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex7_xu0_stg_act_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex7_xu0_stg_act_offset]),
|
|
.scout(sov[ex7_xu0_stg_act_offset]),
|
|
.din(ex7_xu0_stg_act_d),
|
|
.dout(ex7_xu0_stg_act_q));
|
|
|
|
tri_rlmlatch_p #(.INIT(0), .NEEDS_SRESET(1)) ex4_xu1_stg_act_latch(
|
|
.clk(clk),
|
|
.rst(rst),
|
|
.vd(vdd),
|
|
.gd(gnd),
|
|
.act(tiup),
|
|
.force_t(func_sl_force),
|
|
.d_mode(d_mode_dc),
|
|
.delay_lclkr(delay_lclkr_dc),
|
|
.mpw1_b(mpw1_dc_b),
|
|
.mpw2_b(mpw2_dc_b),
|
|
.thold_b(func_sl_thold_0_b),
|
|
.sg(sg_0),
|
|
.scin(siv[ex4_xu1_stg_act_offset]),
|
|
.scout(sov[ex4_xu1_stg_act_offset]),
|
|
.din(ex4_xu1_stg_act_d),
|
|
.dout(ex4_xu1_stg_act_q));
|
|
|
|
assign siv[0:scan_right-1] = {sov[1:scan_right-1], scan_in};
|
|
assign scan_out = sov[0];
|
|
|
|
endmodule
|