|
|
|
# RTL
|
|
|
|
|
|
|
|
## fpga/sim arrays
|
|
|
|
|
|
|
|
* arrays that had 2x/4x clks
|
|
|
|
|
|
|
|
```
|
|
|
|
trilib/tri_144x78_2r4w.v
|
|
|
|
trilib/tri_64x72_1r1w.v
|
|
|
|
trilib/tri_cam_16x143_1r1w1c.v
|
|
|
|
trilib/tri_cam_32x143_1r1w1c.v
|
|
|
|
# these two should be checked with cycle counts, etc. vs originals - might not cause errors if wrong...
|
|
|
|
# at least one matches!
|
|
|
|
# BHT...test3: orig= [00014100] Passing IAR detected: 000007F0 new= [00014100] Passing IAR detected: 000007F0
|
|
|
|
# LRU won't be checked until doing TLB translates, and that logic will be rewritten for radix before that
|
|
|
|
trilib/tri_512x16_1r1w_1.v
|
|
|
|
trilib/tri_128x16_1r1w_1.v
|
|
|
|
```
|
|
|
|
|
|
|
|
* also got rid of reset_q usages (clk and reset in same nclk vector)
|
|
|
|
***i doubt reset is needed in any of the array components***
|
|
|
|
|
|
|
|
```
|
|
|
|
trilib/tri_128x16_1r1w_1.v: reg reset_q;
|
|
|
|
trilib/tri_512x16_1r1w_1.v: reg reset_q;
|
|
|
|
trilib/tri_64x72_1r1w.v: reg reset_q;
|
|
|
|
trilib/tri_cam_16x143_1r1w1c.v: reg sreset_q;
|
|
|
|
trilib/tri_cam_32x143_1r1w1c.v: reg sreset_q;
|
|
|
|
trilib/tri_iuq_cpl_arr.v: reg reset_q;
|
|
|
|
```
|
|
|
|
|
|
|
|
### arrays using clk4x
|
|
|
|
|
|
|
|
* 4W was done with clk4x
|
|
|
|
* should be built for fpga with 4 arrays and a 'valid' array pointing to last write per entry
|
|
|
|
|
|
|
|
```
|
|
|
|
grep "nclk\[3\]" trilib/*
|
|
|
|
trilib/tri_144x78_2r4w.v: .WCLK(nclk[3]), // Port A write clock input : clk4x
|
|
|
|
```
|
|
|
|
|
|
|
|
### arrays using clk2x
|
|
|
|
|
|
|
|
```
|
|
|
|
grep "nclk\[2\]" trilib/*
|
|
|
|
trilib/tri_128x16_1r1w_1.v: assign clk2x = nclk[2];
|
|
|
|
trilib/tri_128x16_1r1w_1.v: always @(posedge nclk[2])
|
|
|
|
trilib/tri_144x78_2r4w.v: assign wr_mux_ctrl = {nclk[0], nclk[2]};
|
|
|
|
trilib/tri_512x16_1r1w_1.v: assign clk2x = nclk[2];
|
|
|
|
trilib/tri_64x72_1r1w.v: assign clk2x = nclk[2];
|
|
|
|
trilib/tri_cam_16x143_1r1w1c.v: assign clk2x = nclk[2];
|
|
|
|
trilib/tri_cam_16x143_1r1w1c.v: always @(posedge nclk[2])
|
|
|
|
trilib/tri_cam_32x143_1r1w1c.v: assign clk2x = nclk[2];
|
|
|
|
trilib/tri_cam_32x143_1r1w1c.v: always @(posedge nclk[2])
|
|
|
|
```
|
|
|
|
|
|
|
|
* IERAT, DERAT (cams)
|
|
|
|
|
|
|
|
* BTB, SPR (1R,1W,read-before-write??)
|
|
|
|
|
|
|
|
```
|
|
|
|
grep tri_64x72 work/*
|
|
|
|
work/iuq_btb.v: tri_64x72_1r1w btb0(
|
|
|
|
work/xu_spr.v: tri_64x72_1r1w xu_spr_aspr(
|
|
|
|
```
|
|
|
|
|
|
|
|
* BHT (bitwrite)
|
|
|
|
|
|
|
|
```
|
|
|
|
grep tri_512x16_1r1w_1 trilib/*
|
|
|
|
trilib/tri_512x16_1r1w_1.v:module tri_512x16_1r1w_1(
|
|
|
|
trilib/tri_bht_1024x8_1r1w.v: tri_512x16_1r1w_1 bht0(
|
|
|
|
trilib/tri_bht_512x4_1r1w.v: tri_512x16_1r1w_1 bht0(
|
|
|
|
```
|
|
|
|
|
|
|
|
* MMU LRU (bitwrite)
|
|
|
|
|
|
|
|
```
|
|
|
|
grep tri_128x16_1r1w_1 work/*
|
|
|
|
work/mmq.v: //tri.tri_128x16_1r1w_1 #(.`EXPAND_TYPE(`EXPAND_TYPE)) lru_array0(
|
|
|
|
work/mmq.v: tri_128x16_1r1w_1 lru_array0(
|
|
|
|
```
|