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.
openpowerwtf 5c201c0027 convert clk2x arrays to clk1x 2 years ago
..
a2node add wishbone interface 2 years ago
a2node_verilator add wishbone interface 2 years ago
a2node_wb add wishbone interface 2 years ago
a2o_litex add wires 2 years ago
clkgating inits to disable cg 2 years ago
smt2 add dev 2 years ago
sweetpea add dev 2 years ago
trilib rewrite trilib 2 years ago
trilib_clk1x convert clk2x arrays to clk1x 2 years ago
unisims parm experiments and cleanup 2 years ago
unisims_synth add dev 2 years ago
work change verilator publics 2 years ago
readme.md convert clk2x arrays to clk1x 2 years ago

readme.md

RTL

fpga/sim arrays

  • created sim-only (not fpga?) clk1x versions in trilib_clk1x to eliminate any possible problems with iverilog and verilator dealing with multiple clocks
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

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
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(