source: XOpenSparcT1/trunk/T1-CPU/lsu/lsu_asi_decode.v @ 6

Revision 6, 17.0 KB checked in by pntsvt00, 13 years ago (diff)

versione iniziale opensparc

Line 
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T1 Processor File: lsu_asi_decode.v
4// Copyright (c) 2006 Sun Microsystems, Inc.  All Rights Reserved.
5// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
6//
7// The above named program is free software; you can redistribute it and/or
8// modify it under the terms of the GNU General Public
9// License version 2 as published by the Free Software Foundation.
10//
11// The above named program is distributed in the hope that it will be
12// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14// General Public License for more details.
15//
16// You should have received a copy of the GNU General Public
17// License along with this work; if not, write to the Free Software
18// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
19//
20// ========== Copyright Header End ============================================
21////////////////////////////////////////////////////////////////////////
22/*
23//      Description:    ASI Decode for LSU
24*/
25////////////////////////////////////////////////////////////////////////
26// Global header file includes
27////////////////////////////////////////////////////////////////////////
28`include        "sys.h" // system level definition file which contains the
29                                        // time scale definition
30
31////////////////////////////////////////////////////////////////////////
32// Local header file includes / local defines
33////////////////////////////////////////////////////////////////////////   
34
35module lsu_asi_decode (/*AUTOARG*/
36   // Outputs
37   asi_internal_d, nucleus_asi_d, primary_asi_d, secondary_asi_d, 
38   lendian_asi_d, nofault_asi_d, quad_asi_d, binit_quad_asi_d, 
39   dcache_byp_asi_d, tlb_lng_ltncy_asi_d, tlb_byp_asi_d, 
40   as_if_user_asi_d, atomic_asi_d, blk_asi_d, dc_diagnstc_asi_d, 
41   dtagv_diagnstc_asi_d, wr_only_asi_d, rd_only_asi_d, unimp_asi_d, 
42   ifu_nontlb_asi_d, recognized_asi_d, ifill_tlb_asi_d, 
43   dfill_tlb_asi_d, rd_only_ltlb_asi_d, wr_only_ltlb_asi_d, 
44   phy_use_ec_asi_d, phy_byp_ec_asi_d, mmu_rd_only_asi_d, 
45   intrpt_disp_asi_d, dmmu_asi58_d, immu_asi50_d, 
46   // Inputs
47   asi_d
48   );
49
50input   [7:0]   asi_d ;
51output          asi_internal_d ;
52output          nucleus_asi_d ;
53output          primary_asi_d ;
54output          secondary_asi_d ;
55output          lendian_asi_d ;
56output          nofault_asi_d ;
57output          quad_asi_d ;
58output          binit_quad_asi_d ;
59output          dcache_byp_asi_d ;
60output          tlb_lng_ltncy_asi_d ;
61output          tlb_byp_asi_d ;
62output          as_if_user_asi_d ;
63output          atomic_asi_d ;
64output          blk_asi_d ;
65//output                blk_cmt_asi_d ;
66output          dc_diagnstc_asi_d;
67output          dtagv_diagnstc_asi_d;
68output          wr_only_asi_d ;
69output          rd_only_asi_d ;
70output          unimp_asi_d ;
71output          ifu_nontlb_asi_d ;      // non-tlb asi's in ifu
72output          recognized_asi_d ;
73output          ifill_tlb_asi_d ;       // itlb fill asi
74output          dfill_tlb_asi_d ;       // dtlb fill asi
75output          rd_only_ltlb_asi_d ;    // read-only long-latency asi
76output          wr_only_ltlb_asi_d ;    // write-only long-latency asi
77output          phy_use_ec_asi_d ;
78output          phy_byp_ec_asi_d ;
79
80output          mmu_rd_only_asi_d ;     // does not include asi with va
81output          intrpt_disp_asi_d ;
82output          dmmu_asi58_d ;
83output    immu_asi50_d;
84   
85wire    quad_ldd_real, quad_ldd_real_little ;
86wire    asi_if_user_prim_all_d,asi_if_user_sec_all_d ;
87wire    asi_if_user_prim_d,asi_if_user_sec_d ;
88wire    nucleus_asi_exact_d ;
89wire    prim_asi_exact_d ;
90wire    phy_use_ec_asi ;
91wire    phy_byp_ec_asi ;
92wire    sec_asi_exact_d ;
93wire    idemap,ddemap,ddata_in,ddaccess ;
94wire    dtag_read,idata_in,idaccess,invld_all,itag_read ;
95wire    blk_asif_usr_plittle, blk_asif_usr_slittle ;
96wire    blk_plittle, blk_slittle ;
97wire    blk_asif_usr_p, blk_asif_usr_s ;
98wire    blk_cmt_p, blk_cmt_s; 
99wire    blk_p, blk_s ;
100wire    binit_nucleus_d, binit_nucleus_little_d ;
101wire    real_mem_little,real_io_little ;
102   wire unimp_CD_prm;
103   wire unimp_CD_sec;
104
105// Start decode in d-stage. Required late e-stage. The logic could
106// be moved to the e-stage to save staging flops.
107
108wire    dtsb_8k_ptr, dtsb_64k_ptr, dtsb_dir_ptr;
109wire    itsb_8k_ptr, itsb_64k_ptr;
110assign  dtsb_8k_ptr = (asi_d[7:0] == 8'h59) ;
111assign  dtsb_64k_ptr = (asi_d[7:0] == 8'h5A) ;
112assign  dtsb_dir_ptr = (asi_d[7:0] == 8'h5B) ;
113assign  itsb_8k_ptr = (asi_d[7:0] == 8'h51) ;
114assign  itsb_64k_ptr = (asi_d[7:0] == 8'h52) ;
115
116assign  mmu_rd_only_asi_d =
117        dtsb_8k_ptr | dtsb_64k_ptr | dtsb_dir_ptr | itsb_8k_ptr | itsb_64k_ptr ;
118
119assign intrpt_disp_asi_d = (asi_d[7:0] == 8'h73) ; // INTR_W
120
121assign  dmmu_asi58_d =  (asi_d[7:0] == 8'h58) ; 
122assign  immu_asi50_d =  (asi_d[7:0] == 8'h50) ;
123   
124// ASI Internal Registers - switches out thread among other things
125assign  asi_internal_d =
126        (asi_d[7:0] == 8'h40) | // streaming/ma
127        (asi_d[7:0] == 8'h45) | // LSU Control
128        (asi_d[7:0] == 8'h50) | // I-TSB Tag Target/SFSR/TSB/Tag-Access
129        itsb_8k_ptr           | // I-TSB 8K Ptr
130        itsb_64k_ptr          | // I-TSB 64K Ptr
131        dmmu_asi58_d |
132        //(asi_d[7:0] == 8'h58) | // D-TSB Tag Target/SFSR/SFAR/TSB/Tag-Access/VA-PA-Watchpt
133        (asi_d[7:0] == 8'h21) | // Primary/Secondary Context
134        (asi_d[7:0] == 8'h20) | // Scratchpad.
135        (asi_d[7:0] == 8'h25) | // Queue
136        (asi_d[7:0] == 8'h4F) | // Hyp Scratchpad
137        dtsb_8k_ptr           | // D-TSB 8K Ptr
138        dtsb_64k_ptr          | // D-TSB 64K Ptr
139        dtsb_dir_ptr          | // D-TSB Direct Ptr
140        (asi_d[7:0] == 8'h72) | // INTR_RECEIVE
141        intrpt_disp_asi_d     | // INTR_W
142        (asi_d[7:0] == 8'h74) | // INTR_R
143        (asi_d[7:0] == 8'h44) | // Self-Timed Margin Ctl
144        (asi_d[7:0] == 8'h31) | // dmmu_zctxt_ps0_tsb
145        (asi_d[7:0] == 8'h32) | // dmmu_zctxt_ps1_tsb
146        (asi_d[7:0] == 8'h39) | // dmmu_nzctxt_ps0_tsb
147        (asi_d[7:0] == 8'h3A) | // dmmu_nzctxt_ps1_tsb
148        (asi_d[7:0] == 8'h33) | // dmmu_zctxt_cfg_tsb
149        (asi_d[7:0] == 8'h3B) | // dmmu_nzctxt_cfg_tsb
150        (asi_d[7:0] == 8'h35) | // immu_zctxt_ps0_tsb
151        (asi_d[7:0] == 8'h36) | // immu_zctxt_ps1_tsb
152        (asi_d[7:0] == 8'h3D) | // immu_nzctxt_ps0_tsb
153        (asi_d[7:0] == 8'h3E) | // immu_nzctxt_ps1_tsb
154        (asi_d[7:0] == 8'h37) | // immu_zctxt_cfg_tsb
155        (asi_d[7:0] == 8'h3F) | // immu_nzctxt_cfg_tsb
156        dc_diagnstc_asi_d     | // Dcache Diagnostic
157        dtagv_diagnstc_asi_d  | // Dcache Diagnostic
158        tlb_lng_ltncy_asi_d   |
159        ifu_nontlb_asi_d      ; 
160
161assign  ifu_nontlb_asi_d = 
162        (asi_d[7:0] == 8'h42) | // instruction-mask
163        (asi_d[7:0] == 8'h43) | // error-inj
164        (asi_d[7:0] == 8'h4B) | // sparc-error-enable
165        (asi_d[7:0] == 8'h4C) | // sparc-error-status
166        (asi_d[7:0] == 8'h4D) | // sparc-error-address
167        (asi_d[7:0] == 8'h66) | // icache-instr
168        (asi_d[7:0] == 8'h67) ; // icache-tag
169
170assign  dc_diagnstc_asi_d = (asi_d[7:0] == 8'h46) ;
171assign  dtagv_diagnstc_asi_d = (asi_d[7:0] == 8'h47) ;
172
173assign  idemap = (asi_d[7:0] == 8'h57) ; // I-MMU Demap Operation
174assign  ddemap = (asi_d[7:0] == 8'h5F) ; // D-MMU Demap Operation
175assign  ddata_in = (asi_d[7:0] == 8'h5C) ; // D-TLB Data-In
176assign  ddaccess = (asi_d[7:0] == 8'h5D) ; // D-TLB Data-Access
177assign  dtag_read = (asi_d[7:0] == 8'h5E) ; // D-TLB Tag Read
178assign  idata_in = (asi_d[7:0] == 8'h54) ; // I-TLB Data-In
179assign  idaccess = (asi_d[7:0] == 8'h55) ; // I-TLB Data-Access
180assign  invld_all = (asi_d[7:0] == 8'h60) ; // I/D Invalidate All
181assign  itag_read = (asi_d[7:0] == 8'h56) ; // I-TLB Tag Read
182
183assign  tlb_lng_ltncy_asi_d = 
184        idemap          | ddemap        | ddata_in      | 
185        ddaccess        | dtag_read     | idata_in      | 
186        idaccess        | invld_all     | itag_read     ;
187
188assign  wr_only_ltlb_asi_d = 
189        ddata_in        |       idata_in        |
190        idemap          |       ddemap          |
191        invld_all ;
192
193assign  rd_only_ltlb_asi_d =
194        dtag_read       |       itag_read       ;
195
196assign  ifill_tlb_asi_d =       // itlb fill asi
197        idata_in        |       idaccess        ;
198
199assign  dfill_tlb_asi_d =       // i/d tlb fill asi
200        ddata_in        |       ddaccess        ;
201
202assign  nucleus_asi_exact_d =
203        (asi_d[7:0] == 8'h04) | // asi_nucleus
204        (asi_d[7:0] == 8'h0C) ; // asi_nucleus_little
205
206// Nucleus Ctxt
207assign  nucleus_asi_d =
208         nucleus_asi_exact_d |
209        (asi_d[7:0] == 8'h24) | // asi_nucleus_quad_ldd
210        (asi_d[7:0] == 8'h2C) ; // asi_nucleus_quad_ldd_little
211
212assign  asi_if_user_prim_d =
213        (asi_d[7:0] == 8'h10) | // asi_as_if_user_primary
214        (asi_d[7:0] == 8'h18) ; // asi_as_if_user_primary_little
215
216// asi_if_user primary asi
217assign  asi_if_user_prim_all_d =
218         asi_if_user_prim_d   |         
219        (asi_d[7:0] == 8'h22) | // asi_as_if_user_primary_quad_ldd (blk-init)
220        (asi_d[7:0] == 8'h2A) ; // asi_as_if_user_primary_quad_ldd_little (blk-init)
221
222assign  prim_asi_exact_d =
223        (asi_d[7:0] == 8'h80) | // asi_primary
224        (asi_d[7:0] == 8'h88) ; // asi_primary_little
225
226// Primary Ctxt
227assign  primary_asi_d =
228         asi_if_user_prim_all_d   |     
229         prim_asi_exact_d     | 
230        (asi_d[7:0] == 8'h82) | // asi_primary_no_fault
231        (asi_d[7:0] == 8'h8A) | // asi_primary_no_fault_little
232        (asi_d[7:0] == 8'hE2) | // asi_primary_quad_ldd (blk-init)
233        (asi_d[7:0] == 8'hEA) | // asi_primary_quad_ldd_little (blk-init)
234        blk_asif_usr_p | blk_asif_usr_plittle | 
235        blk_plittle | blk_p | // block primary asi
236        blk_cmt_p |     // Bug 4051
237  unimp_CD_prm ;  // Bug 4532
238   
239assign  asi_if_user_sec_d =
240        (asi_d[7:0] == 8'h11) | // asi_as_if_user_secondary
241        (asi_d[7:0] == 8'h19) ; // asi_as_if_user_secondary_little
242
243// asi_if_user secondary asi
244assign  asi_if_user_sec_all_d =
245         asi_if_user_sec_d   |         
246        (asi_d[7:0] == 8'h23) | // asi_as_if_user_secondary_quad_ldd (blk-init)
247        (asi_d[7:0] == 8'h2B) ; // asi_as_if_user_secondary_quad_ldd_little (blk-init)
248
249assign  as_if_user_asi_d = asi_if_user_prim_all_d | asi_if_user_sec_all_d |
250blk_asif_usr_p | blk_asif_usr_plittle | blk_asif_usr_s | blk_asif_usr_slittle ;
251
252assign  sec_asi_exact_d =
253        (asi_d[7:0] == 8'h81) | // asi_secondary
254        (asi_d[7:0] == 8'h89) ; // asi_secondary_little
255
256// Secondary Ctxt
257assign  secondary_asi_d =
258         asi_if_user_sec_all_d    |
259         sec_asi_exact_d      |         
260        (asi_d[7:0] == 8'h83) | // asi_secondary_no_fault
261        (asi_d[7:0] == 8'h8B) | // asi_secondary_no_fault_little
262        (asi_d[7:0] == 8'hE3) | // asi_secondary_quad_ldd (blk-init)
263        (asi_d[7:0] == 8'hEB) | // asi_secondary_quad_ldd_little (blk-init)
264        blk_asif_usr_s | blk_asif_usr_slittle | 
265        blk_slittle |  blk_s | // block secondary asi
266        blk_cmt_s |  // Bug 4051
267  unimp_CD_sec; // Bug 4532
268
269// Little Endian
270assign  lendian_asi_d =
271        (asi_d[7:0] == 8'h0C) | // asi_nucleus_little
272        (asi_d[7:0] == 8'h2C) | // asi_nucleus_quad_ldd_little
273        (asi_d[7:0] == 8'h18) | // asi_as_if_user_primary_little
274        (asi_d[7:0] == 8'h8A) | // asi_primary_no_fault_little
275        (asi_d[7:0] == 8'h8B) | // asi_secondary_no_fault_little
276        (asi_d[7:0] == 8'h2A) | // asi_as_if_user_primary_quad_ldd_little (blk-init)
277        (asi_d[7:0] == 8'hEA) | // asi_primary_quad_ldd_little (blk-init)
278        (asi_d[7:0] == 8'h19) | // asi_as_if_user_secondary_little
279        (asi_d[7:0] == 8'h89) | // asi_secondary_little
280        (asi_d[7:0] == 8'h88) | // asi_primary_little
281        (asi_d[7:0] == 8'h2B) | // asi_as_if_user_secondary_quad_ldd_little (blk-init)
282        (asi_d[7:0] == 8'hEB) | // asi_secondary_quad_ldd_little (blk-init)
283        real_mem_little |
284        real_io_little  |
285        //(asi_d[7:0] == 8'h1D) |       // asi_phys_bypass_ec_with_ebit_littl
286        //(asi_d[7:0] == 8'h1C) |       // asi_phys_bypass_ec_with_ebit_littl
287        blk_asif_usr_plittle  | blk_asif_usr_slittle |  // little
288        blk_plittle           | blk_slittle |           // little
289        quad_ldd_real_little  | // asi_quad_ldd_real_little
290        binit_nucleus_little_d ;// asi_nucleus_blk_init_st_quad_ldd_little
291
292// No Fault
293assign  nofault_asi_d =
294        (asi_d[7:0] == 8'h82) | // asi_primary_no_fault
295        (asi_d[7:0] == 8'h8A) | // asi_primary_no_fault_little
296        (asi_d[7:0] == 8'h83) | // asi_secondary_no_fault
297        (asi_d[7:0] == 8'h8B) ; // asi_secondary_no_fault_little
298
299assign  binit_nucleus_d =
300        (asi_d[7:0] == 8'h27) ; // asi_nucleus_blk_init_st_quad_ldd
301assign  binit_nucleus_little_d =
302        (asi_d[7:0] == 8'h2F) ; // asi_nucleus_blk_init_st_quad_ldd_little
303
304// Quad (These are duplicated - they can be shared)
305assign  binit_quad_asi_d =
306        binit_nucleus_d |       // asi_nucleus_blk_init_st_quad_ldd
307        binit_nucleus_little_d |// asi_nucleus_blk_init_st_quad_ldd_little
308        (asi_d[7:0] == 8'h22) | // asi_as_if_user_primary_quad_ldd (blk-init)
309        (asi_d[7:0] == 8'h2A) | // asi_as_if_user_primary_quad_ldd_little (blk-init)
310        (asi_d[7:0] == 8'h23) | // asi_as_if_user_secondary_quad_ldd (blk-init)
311        (asi_d[7:0] == 8'h2B) | // asi_as_if_user_secondary_quad_ldd_little (blk-init)
312        (asi_d[7:0] == 8'hE2) | // asi_primary_quad_ldd (blk-init)
313        (asi_d[7:0] == 8'hEA) | // asi_primary_quad_ldd_little (blk-init)
314        (asi_d[7:0] == 8'hE3) | // asi_secondary_quad_ldd (blk-init)
315        (asi_d[7:0] == 8'hEB) ; // asi_secondary_quad_ldd_little (blk-init)
316
317assign  quad_ldd_real = 
318        (asi_d[7:0] == 8'h26) ; // asi_quad_ldd_real
319assign  quad_ldd_real_little = 
320        (asi_d[7:0] == 8'h2E) ; // asi_quad_ldd_real_little
321
322assign  quad_asi_d =
323        binit_quad_asi_d      | // blk-init quad asi
324        quad_ldd_real         | // asi_quad_ldd_real
325        quad_ldd_real_little  | // asi_quad_ldd_real_little
326        (asi_d[7:0] == 8'h24) | // asi_nucleus_quad_ldd
327        (asi_d[7:0] == 8'h2C) ; // asi_nucleus_quad_ldd_little
328       
329// EC
330assign  real_io_little = (asi_d[7:0] == 8'h1D) ;
331assign  real_mem_little = (asi_d[7:0] == 8'h1C) ;
332       
333assign  phy_byp_ec_asi =
334        (asi_d[7:0] == 8'h15) | // asi_phys_bypass_ec_with_ebit(real_io)
335        real_io_little ;        // asi_phys_bypass_ec_with_ebit_little(real_io_little)
336        //(asi_d[7:0] == 8'h1D) ;       // asi_phys_bypass_ec_with_ebit_little(real_io_little)
337                                // asi assumed for io address specifically !!
338                                // asi assumed for io address specifically !!
339
340assign  phy_use_ec_asi =
341        (asi_d[7:0] == 8'h14) | // asi_phys_use_ec(real_mem)
342        real_mem_little ;       // asi_phys_use_ec_little(real_mem_little)
343        //(asi_d[7:0] == 8'h1C) ;       // asi_phys_use_ec_little(real_mem_little)
344
345assign  phy_use_ec_asi_d = phy_use_ec_asi ;
346assign  phy_byp_ec_asi_d = phy_byp_ec_asi ;
347
348// Physical Use - Always results in R->P xslation.
349assign  tlb_byp_asi_d = 
350                phy_byp_ec_asi | phy_use_ec_asi | 
351                quad_ldd_real  | quad_ldd_real_little ;
352
353// Atomic asi
354assign  atomic_asi_d = nucleus_asi_exact_d | prim_asi_exact_d | sec_asi_exact_d | 
355                asi_if_user_prim_d | asi_if_user_sec_d | phy_use_ec_asi ;
356
357assign  dcache_byp_asi_d = tlb_byp_asi_d ;
358
359// ASI causing Data Access Exceptions - (TBD)
360
361assign  rd_only_asi_d =
362        (asi_d[7:0] == 8'h82) | // asi_primary_no_fault
363        (asi_d[7:0] == 8'h8A) | // asi_primary_no_fault_little
364        (asi_d[7:0] == 8'h83) | // asi_secondary_no_fault
365        (asi_d[7:0] == 8'h8B) | // asi_secondary_no_fault_little
366        (asi_d[7:0] == 8'h74) ; // asi_swrvr_udb_intr_r !! Does not have to be done by intrpt blk !!
367
368assign  wr_only_asi_d =
369        (asi_d[7:0] == 8'h73) ; // asi_swrvr_udb_intr_w
370
371// Block Asi
372assign  blk_asif_usr_p = (asi_d[7:0] == 8'h16) ; // asi_block_as_if_user_primary
373assign  blk_asif_usr_plittle = (asi_d[7:0] == 8'h1E) ; // asi_block_as_if_user_primary_little
374assign  blk_asif_usr_s = (asi_d[7:0] == 8'h17) ; // asi_block_as_if_user_secondary
375assign  blk_asif_usr_slittle = (asi_d[7:0] == 8'h1F) ; // asi_block_as_if_user_secondary_little
376assign  blk_plittle = (asi_d[7:0] == 8'hF8) ; // asi_block_primary_little
377assign  blk_slittle = (asi_d[7:0] == 8'hF9) ; // asi_block_secondary_little
378assign  blk_cmt_p = (asi_d[7:0] == 8'hE0) ; // asi_block_commit_primary ?? behaviour
379assign  blk_cmt_s = (asi_d[7:0] == 8'hE1) ; // asi_block_commit_secondary ?? behaviour
380assign  blk_p = (asi_d[7:0] == 8'hF0) ; // asi_block_primary
381assign  blk_s = (asi_d[7:0] == 8'hF1) ; // asi_block_secondary
382
383//assign        blk_cmt_asi_d = blk_cmt_p | blk_cmt_s ;
384
385assign  blk_asi_d = 
386        blk_asif_usr_p  | blk_asif_usr_s |
387        blk_plittle     | blk_slittle    |
388        //blk_cmt_p     | blk_cmt_s      |
389        blk_p           | blk_s          |
390        blk_asif_usr_plittle  | blk_asif_usr_slittle |  // little
391        blk_plittle           | blk_slittle ;           // little
392
393// add to little-endian decode
394// add to use_real ...
395//assign      as_if_supv =
396//    (asi_d[7:0] == 8'h??) | // asi_if_supv_real
397//    (asi_d[7:0] == 8'h??) ; // asi_if_supv_real_little
398
399wire    unimp_C ;
400assign  unimp_C =
401        ((asi_d[7:4]==4'hC) & 
402                ~((asi_d[3:0]==4'h6) |
403                  (asi_d[3:0]==4'h7) |
404                  (asi_d[3:0]==4'hE) |
405                  (asi_d[3:0]==4'hF))) ;
406
407wire    unimp_D ;
408assign  unimp_D =
409        ((asi_d[7:4]==4'hD) & 
410                ~((asi_d[3:0]==4'h4) |
411                  (asi_d[3:0]==4'h5) |
412                  (asi_d[3:0]==4'h6) |
413                  (asi_d[3:0]==4'h7) |
414                  (asi_d[3:0]==4'hC) |
415                  (asi_d[3:0]==4'hD) |
416                  (asi_d[3:0]==4'hE) |
417                  (asi_d[3:0]==4'hF))) ;
418
419assign  unimp_CD_prm =
420(asi_d[7:0] == 8'hC0) |
421(asi_d[7:0] == 8'hC2) |
422(asi_d[7:0] == 8'hC4) |
423(asi_d[7:0] == 8'hC8) |
424(asi_d[7:0] == 8'hCA) |
425(asi_d[7:0] == 8'hCC) |
426(asi_d[7:0] == 8'hD0) |
427(asi_d[7:0] == 8'hD2) |
428(asi_d[7:0] == 8'hD8) |
429(asi_d[7:0] == 8'hDA) ;
430   
431assign  unimp_CD_sec = 
432(asi_d[7:0] == 8'hC1) |
433(asi_d[7:0] == 8'hC3) |
434(asi_d[7:0] == 8'hC5) |
435(asi_d[7:0] == 8'hC9) |
436(asi_d[7:0] == 8'hCB) |
437(asi_d[7:0] == 8'hCD) |
438(asi_d[7:0] == 8'hD1) |
439(asi_d[7:0] == 8'hD3) |
440(asi_d[7:0] == 8'hD9) |
441(asi_d[7:0] == 8'hDB) ;
442   
443   
444// Unimplemented asi
445assign  unimp_asi_d =
446// Bug 4692 - all unimplemented internal asi are now
447// illegal.
448//      (asi_d[7:0] == 8'h6E) | // asi_icache_pre_decode
449//      (asi_d[7:0] == 8'h6F) | // asi_icache_next_field
450//      (asi_d[7:0] == 8'h48) | // asi_intr_dispatch_status
451//      (asi_d[7:0] == 8'h49) | // asi_intr_receive
452//      (asi_d[7:0] == 8'h4A) | // asi_upa_config_register
453//      (asi_d[7:0] == 8'h4E) | // asi_ecache_tag_data
454//      dflush_asi_d |      //Bug 4580
455        unimp_C | unimp_D | // Bug 4438
456        blk_cmt_p | blk_cmt_s ;
457       
458// Set of recognized asi's
459assign  recognized_asi_d = 
460        asi_internal_d | nucleus_asi_d |  primary_asi_d | secondary_asi_d | lendian_asi_d |
461        nofault_asi_d | quad_asi_d | tlb_byp_asi_d | unimp_asi_d | blk_asi_d ;
462
463// Displacement Flush for L2
464//assign        dflush_asi_d =
465//      (asi_d[7:0] == 8'h30) ; // asi_direct_map_ecache
466
467endmodule
Note: See TracBrowser for help on using the repository browser.