URL
https://opencores.org/ocsvn/minsoc/minsoc/trunk
Subversion Repositories minsoc
Compare Revisions
- This comparison shows the changes necessary to convert path
/minsoc/trunk/bench/verilog
- from Rev 9 to Rev 10
- ↔ Reverse comparison
Rev 9 → Rev 10
/minsoc_bench.v
1,5 → 1,6
`include "minsoc_bench_defines.v" |
`include "minsoc_defines.v" |
`include "or1200_defines.v" |
|
module minsoc_bench(); |
|
54,6 → 55,10
reset = 1'b0; |
clock = 1'b0; |
|
//dual and two port rams from FPGA memory instances have to be initialized to |
//0 |
init_fpga_memory(); |
|
load_file = 1'b0; |
`ifdef INITIALIZE_MEMORY_MODEL |
load_file = 1'b1; |
456,5 → 461,316
//~MAC_DATA |
|
|
|
// |
// TASK to initialize instantiated FPGA dual and two port memory to 0 |
// |
task init_fpga_memory; |
integer i; |
begin |
`ifdef OR1200_RFRAM_TWOPORT |
`ifdef OR1200_XILINX_RAMB4 |
for ( i = 0; i < (1<<8); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.ramb4_s16_s16_0.mem[i] = 16'h0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.ramb4_s16_s16_1.mem[i] = 16'h0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.ramb4_s16_s16_0.mem[i] = 16'h0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.ramb4_s16_s16_1.mem[i] = 16'h0000; |
end |
`elsif OR1200_XILINX_RAMB16 |
for ( i = 0; i < (1<<9); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.ramb16_s36_s36.mem[i] = 32'h0000_0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.ramb16_s36_s36.mem[i] = 32'h0000_0000; |
end |
`elsif OR1200_ALTERA_LPM |
`ifndef OR1200_ALTERA_LPM_XXX |
$display("Definition OR1200_ALTERA_LPM in or1200_defines.v does not enable ALTERA memory for neither DUAL nor TWO port RFRAM"); |
$display("It uses GENERIC memory instead."); |
$display("Add '`define OR1200_ALTERA_LPM_XXX' under '`define OR1200_ALTERA_LPM' on or1200_defines.v to use ALTERA memory."); |
`endif |
`ifdef OR1200_ALTERA_LPM_XXX |
$display("...Using ALTERA memory for TWOPORT RFRAM!"); |
for ( i = 0; i < (1<<5); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.altqpram_component.mem[i] = 32'h0000_0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.altqpram_component.mem[i] = 32'h0000_0000; |
end |
`else |
$display("...Using GENERIC memory!"); |
for ( i = 0; i < (1<<5); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.mem[i] = 32'h0000_0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.mem[i] = 32'h0000_0000; |
end |
`endif |
`elsif OR1200_XILINX_RAM32X1D |
$display("Definition OR1200_XILINX_RAM32X1D in or1200_defines.v does not enable FPGA memory for TWO port RFRAM"); |
$display("It uses GENERIC memory instead."); |
$display("FPGA memory can be used if you choose OR1200_RFRAM_DUALPORT"); |
for ( i = 0; i < (1<<5); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.mem[i] = 32'h0000_0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.mem[i] = 32'h0000_0000; |
end |
`else |
for ( i = 0; i < (1<<5); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.mem[i] = 32'h0000_0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.mem[i] = 32'h0000_0000; |
end |
`endif |
`elsif OR1200_RFRAM_DUALPORT |
`ifdef OR1200_XILINX_RAMB4 |
for ( i = 0; i < (1<<8); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.ramb4_s16_0.mem[i] = 16'h0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.ramb4_s16_1.mem[i] = 16'h0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.ramb4_s16_0.mem[i] = 16'h0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.ramb4_s16_1.mem[i] = 16'h0000; |
end |
`elsif OR1200_XILINX_RAMB16 |
for ( i = 0; i < (1<<9); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.ramb16_s36_s36.mem[i] = 32'h0000_0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.ramb16_s36_s36.mem[i] = 32'h0000_0000; |
end |
`elsif OR1200_ALTERA_LPM |
`ifndef OR1200_ALTERA_LPM_XXX |
$display("Definition OR1200_ALTERA_LPM in or1200_defines.v does not enable ALTERA memory for neither DUAL nor TWO port RFRAM"); |
$display("It uses GENERIC memory instead."); |
$display("Add '`define OR1200_ALTERA_LPM_XXX' under '`define OR1200_ALTERA_LPM' on or1200_defines.v to use ALTERA memory."); |
`endif |
`ifdef OR1200_ALTERA_LPM_XXX |
$display("...Using ALTERA memory for DUALPORT RFRAM!"); |
for ( i = 0; i < (1<<5); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.altqpram_component.mem[i] = 32'h0000_0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.altqpram_component.mem[i] = 32'h0000_0000; |
end |
`else |
$display("...Using GENERIC memory!"); |
for ( i = 0; i < (1<<5); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.mem[i] = 32'h0000_0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.mem[i] = 32'h0000_0000; |
end |
`endif |
`elsif OR1200_XILINX_RAM32X1D |
`ifdef OR1200_USE_RAM16X1D_FOR_RAM32X1D |
for ( i = 0; i < (1<<4); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_0_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_0_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_0_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_0_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_0_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_0_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_0_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_0_7.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_1_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_1_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_1_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_1_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_1_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_1_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_1_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_1_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_0_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_0_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_0_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_0_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_0_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_0_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_0_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_0_7.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_1_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_1_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_1_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_1_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_1_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_1_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_1_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_1_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_0_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_0_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_0_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_0_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_0_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_0_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_0_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_0_7.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_1_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_1_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_1_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_1_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_1_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_1_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_1_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_1_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_0_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_0_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_0_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_0_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_0_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_0_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_0_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_0_7.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_1_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_1_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_1_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_1_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_1_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_1_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_1_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_1_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_0_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_0_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_0_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_0_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_0_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_0_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_0_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_0_7.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_1_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_1_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_1_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_1_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_1_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_1_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_1_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_1_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_0_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_0_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_0_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_0_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_0_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_0_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_0_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_0_7.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_1_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_1_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_1_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_1_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_1_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_1_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_1_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_1_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_0_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_0_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_0_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_0_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_0_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_0_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_0_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_0_7.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_1_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_1_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_1_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_1_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_1_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_1_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_1_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_1_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_0_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_0_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_0_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_0_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_0_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_0_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_0_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_0_7.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_1_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_1_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_1_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_1_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_1_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_1_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_1_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_1_7.mem[i] = 1'b0; |
end |
`else |
for ( i = 0; i < (1<<4); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_0.ram32x1d_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_1.ram32x1d_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_2.ram32x1d_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.xcv_ram32x8d_3.ram32x1d_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_0.ram32x1d_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_1.ram32x1d_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_2.ram32x1d_7.mem[i] = 1'b0; |
|
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_0.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_1.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_2.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_3.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_4.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_5.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_6.mem[i] = 1'b0; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.xcv_ram32x8d_3.ram32x1d_7.mem[i] = 1'b0; |
end |
`endif |
`else |
for ( i = 0; i < (1<<5); i = i + 1 ) begin |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_a.mem[i] = 32'h0000_0000; |
minsoc_top_0.or1200_top.or1200_cpu.or1200_rf.rf_b.mem[i] = 32'h0000_0000; |
end |
`endif |
`endif |
end |
endtask |
|
|
|
endmodule |
|
/sim_lib/fpga_memory_primitives.v
0,0 → 1,701
|
// |
//ALTERA_LPM |
// |
module lpm_ram_dq ( |
address, |
inclock, |
outclock, |
data, |
we, |
q |
); |
|
parameter lpm_width = 8; |
parameter lpm_widthad = 11; |
|
localparam dw = lpm_width; |
localparam aw = lpm_widthad; |
|
input [aw-1:0] address; |
input inclock; |
input outclock; |
input [dw-1:0] data; |
input we; |
output [dw-1:0] q; |
|
reg [dw-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg; // RAM address register |
|
// |
// Data output drivers |
// |
assign doq = mem[addr_reg]; |
|
// |
// RAM address register |
// |
always @(posedge inclock) |
addr_reg <= #1 address; |
|
// |
// RAM write |
// |
always @(posedge inclock) |
if (we) |
mem[address] <= #1 data; |
|
endmodule |
|
module altqpram ( |
wraddress_a, |
inclocken_a, |
wraddress_b, |
wren_a, |
inclocken_b, |
wren_b, |
inaclr_a, |
inaclr_b, |
inclock_a, |
inclock_b, |
data_a, |
data_b, |
q_a, |
q_b |
); |
|
parameter width_write_a = 8; |
parameter widthad_write_a = 11; |
parameter width_write_b = 8; |
parameter widthad_write_b = 11; |
|
localparam dw = width_write_a; |
localparam aw = widthad_write_a; |
|
input inclock_a, inaclr_a, inclocken_a, wren_a, inclock_b, inaclr_b, inclocken_b, wren_b; |
input [dw-1:0] data_a, data_b; |
output [dw-1:0] q_a, q_b; |
input [aw-1:0] wraddress_a, wraddress_b; |
|
reg [dw-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg_a; // RAM address register |
reg [aw-1:0] addr_reg_b; // RAM address register |
|
// |
// Data output drivers |
// |
assign q_a = mem[addr_reg_a][dw-1:0]; |
assign q_b = mem[addr_reg_b][dw-1:0]; |
|
// |
// RAM address register |
// |
always @(posedge inclock_a or posedge inaclr_a) |
if ( inaclr_a == 1'b1 ) |
addr_reg_a <= #1 {aw{1'b0}}; |
else if ( inclocken_a ) |
addr_reg_a <= #1 wraddress_a; |
|
always @(posedge inclock_b or posedge inaclr_b) |
if ( inaclr_b == 1'b1 ) |
addr_reg_b <= #1 {aw{1'b0}}; |
else if ( inclocken_b ) |
addr_reg_b <= #1 wraddress_b; |
|
// |
// RAM write |
// |
always @(posedge inclock_a) |
if (inclocken_a && wren_a) |
mem[wraddress_a] <= #1 data_a; |
|
always @(posedge inclock_b) |
if (inclocken_b && wren_b) |
mem[wraddress_b] <= #1 data_b; |
|
endmodule |
// |
// ~ALTERA_LPM |
// |
|
|
// |
//XILINX_RAMB16 |
// |
module RAMB16_S36_S36 ( |
CLKA, |
SSRA, |
ADDRA, |
DIA, |
DIPA, |
ENA, |
WEA, |
DOA, |
DOPA, |
|
CLKB, |
SSRB, |
ADDRB, |
DIB, |
DIPB, |
ENB, |
WEB, |
DOB, |
DOPB |
); |
|
parameter dw = 32; |
parameter dwp = 4; |
parameter aw = 9; |
|
input CLKA, SSRA, ENA, WEA, CLKB, SSRB, ENB, WEB; |
input [dw-1:0] DIA, DIB; |
output [dw-1:0] DOA, DOB; |
input [dwp-1:0] DIPA, DIPB; |
output [dwp-1:0] DOPA, DOPB; |
input [aw-1:0] ADDRA, ADDRB; |
|
reg [dw+dwp-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg_a; // RAM address register |
reg [aw-1:0] addr_reg_b; // RAM address register |
|
// |
// Data output drivers |
// |
assign DOA = mem[addr_reg_a][dw-1:0]; |
assign DOPA = mem[addr_reg_a][dwp+dw-1:dw]; |
assign DOB = mem[addr_reg_b][dw-1:0]; |
assign DOPB = mem[addr_reg_b][dwp+dw-1:dw]; |
|
// |
// RAM address register |
// |
always @(posedge CLKA or posedge SSRA) |
if ( SSRA == 1'b1 ) |
addr_reg_a <= #1 {aw{1'b0}}; |
else if ( ENA ) |
addr_reg_a <= #1 ADDRA; |
|
always @(posedge CLKB or posedge SSRB) |
if ( SSRB == 1'b1 ) |
addr_reg_b <= #1 {aw{1'b0}}; |
else if ( ENB ) |
addr_reg_b <= #1 ADDRB; |
|
// |
// RAM write |
// |
always @(posedge CLKA) |
if (ENA && WEA) |
mem[ADDRA] <= #1 { DIPA , DIA }; |
|
always @(posedge CLKB) |
if (ENB && WEB) |
mem[ADDRB] <= #1 { DIPB , DIB }; |
|
endmodule |
|
|
module RAMB16_S9 ( |
CLK, |
SSR, |
ADDR, |
DI, |
DIP, |
EN, |
WE, |
DO, |
DOP |
); |
|
parameter dw = 8; |
parameter dwp = 1; |
parameter aw = 11; |
|
input CLK, SSR, EN, WE; |
input [dw-1:0] DI; |
output [dw-1:0] DO; |
input [dwp-1:0] DIP; |
output [dwp-1:0] DOP; |
input [aw-1:0] ADDR; |
|
reg [dw+dwp-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg; // RAM address register |
|
// |
// Data output drivers |
// |
assign DO = mem[addr_reg][dw-1:0]; |
assign DOP = mem[addr_reg][dwp+dw-1:dw]; |
|
// |
// RAM address register |
// |
always @(posedge CLK or posedge SSR) |
if ( SSR == 1'b1 ) |
addr_reg <= #1 {aw{1'b0}}; |
else if ( EN ) |
addr_reg <= #1 ADDR; |
|
// |
// RAM write |
// |
always @(posedge CLK) |
if (EN && WE) |
mem[ADDR] <= #1 { DIP , DI }; |
|
endmodule |
|
|
module RAMB16_S36 ( |
CLK, |
SSR, |
ADDR, |
DI, |
DIP, |
EN, |
WE, |
DO, |
DOP |
); |
|
parameter dw = 32; |
parameter dwp = 4; |
parameter aw = 9; |
|
input CLK, SSR, EN, WE; |
input [dw-1:0] DI; |
output [dw-1:0] DO; |
input [dwp-1:0] DIP; |
output [dwp-1:0] DOP; |
input [aw-1:0] ADDR; |
|
reg [dw+dwp-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg; // RAM address register |
|
// |
// Data output drivers |
// |
assign DO = mem[addr_reg][dw-1:0]; |
assign DOP = mem[addr_reg][dwp+dw-1:dw]; |
|
// |
// RAM address register |
// |
always @(posedge CLK or posedge SSR) |
if ( SSR == 1'b1 ) |
addr_reg <= #1 {aw{1'b0}}; |
else if ( EN ) |
addr_reg <= #1 ADDR; |
|
// |
// RAM write |
// |
always @(posedge CLK) |
if (EN && WE) |
mem[ADDR] <= #1 { DIP , DI }; |
|
endmodule |
|
|
module RAMB16_S18 ( |
CLK, |
SSR, |
ADDR, |
DI, |
DIP, |
EN, |
WE, |
DO, |
DOP |
); |
|
parameter dw = 16; |
parameter dwp = 2; |
parameter aw = 10; |
|
input CLK, SSR, EN, WE; |
input [dw-1:0] DI; |
output [dw-1:0] DO; |
input [dwp-1:0] DIP; |
output [dwp-1:0] DOP; |
input [aw-1:0] ADDR; |
|
reg [dw+dwp-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg; // RAM address register |
|
// |
// Data output drivers |
// |
assign DO = mem[addr_reg][dw-1:0]; |
assign DOP = mem[addr_reg][dwp+dw-1:dw]; |
|
// |
// RAM address register |
// |
always @(posedge CLK or posedge SSR) |
if ( SSR == 1'b1 ) |
addr_reg <= #1 {aw{1'b0}}; |
else if ( EN ) |
addr_reg <= #1 ADDR; |
|
// |
// RAM write |
// |
always @(posedge CLK) |
if (EN && WE) |
mem[ADDR] <= #1 { DIP , DI }; |
|
endmodule |
// |
//~XILINX_RAMB16 |
// |
|
|
// |
//XILINX_RAMB4 |
// |
module RAMB4_S16_S16 ( |
CLKA, |
RSTA, |
ADDRA, |
DIA, |
ENA, |
WEA, |
DOA, |
|
CLKB, |
RSTB, |
ADDRB, |
DIB, |
ENB, |
WEB, |
DOB |
); |
|
parameter dw = 16; |
parameter aw = 8; |
|
input CLKA, RSTA, ENA, WEA, CLKB, RSTB, ENB, WEB; |
input [dw-1:0] DIA, DIB; |
output [dw-1:0] DOA, DOB; |
input [aw-1:0] ADDRA, ADDRB; |
|
reg [dw-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg_a; // RAM address register |
reg [aw-1:0] addr_reg_b; // RAM address register |
|
// |
// Data output drivers |
// |
assign DOA = mem[addr_reg_a][dw-1:0]; |
assign DOB = mem[addr_reg_b][dw-1:0]; |
|
// |
// RAM address register |
// |
always @(posedge CLKA or posedge RSTA) |
if ( RSTA == 1'b1 ) |
addr_reg_a <= #1 {aw{1'b0}}; |
else if ( ENA ) |
addr_reg_a <= #1 ADDRA; |
|
always @(posedge CLKB or posedge RSTB) |
if ( RSTB == 1'b1 ) |
addr_reg_b <= #1 {aw{1'b0}}; |
else if ( ENB ) |
addr_reg_b <= #1 ADDRB; |
|
// |
// RAM write |
// |
always @(posedge CLKA) |
if (ENA && WEA) |
mem[ADDRA] <= #1 DIA; |
|
always @(posedge CLKB) |
if (ENB && WEB) |
mem[ADDRB] <= #1 DIB; |
|
endmodule |
|
module RAMB4_S4 ( |
CLK, |
RST, |
ADDR, |
DI, |
EN, |
WE, |
DO, |
); |
|
parameter dw = 4; |
parameter aw = 10; |
|
input CLK, RST, EN, WE; |
input [dw-1:0] DI; |
output [dw-1:0] DO; |
input [aw-1:0] ADDR; |
|
reg [dw-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg; // RAM address register |
|
// |
// Data output drivers |
// |
assign DO = mem[addr_reg][dw-1:0]; |
|
// |
// RAM address register |
// |
always @(posedge CLK or posedge RST) |
if ( RST == 1'b1 ) |
addr_reg <= #1 {aw{1'b0}}; |
else if ( EN ) |
addr_reg <= #1 ADDR; |
|
// |
// RAM write |
// |
always @(posedge CLK) |
if (EN && WE) |
mem[ADDR] <= #1 DI; |
|
endmodule |
|
module RAMB4_S16 ( |
CLK, |
RST, |
ADDR, |
DI, |
EN, |
WE, |
DO |
); |
|
parameter dw = 16; |
parameter aw = 8; |
|
input CLK, RST, EN, WE; |
input [dw-1:0] DI; |
output [dw-1:0] DO; |
input [aw-1:0] ADDR; |
|
reg [dw-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg; // RAM address register |
|
// |
// Data output drivers |
// |
assign DO = mem[addr_reg][dw-1:0]; |
|
// |
// RAM address register |
// |
always @(posedge CLK or posedge RST) |
if ( RST == 1'b1 ) |
addr_reg <= #1 {aw{1'b0}}; |
else if ( EN ) |
addr_reg <= #1 ADDR; |
|
// |
// RAM write |
// |
always @(posedge CLK) |
if (EN && WE) |
mem[ADDR] <= #1 DI; |
|
endmodule |
|
module RAMB4_S2 ( |
CLK, |
RST, |
ADDR, |
DI, |
EN, |
WE, |
DO, |
); |
|
parameter dw = 2; |
parameter aw = 11; |
|
input CLK, RST, EN, WE; |
input [dw-1:0] DI; |
output [dw-1:0] DO; |
input [aw-1:0] ADDR; |
|
reg [dw-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg; // RAM address register |
|
// |
// Data output drivers |
// |
assign DO = mem[addr_reg][dw-1:0]; |
|
// |
// RAM address register |
// |
always @(posedge CLK or posedge RST) |
if ( RST == 1'b1 ) |
addr_reg <= #1 {aw{1'b0}}; |
else if ( EN ) |
addr_reg <= #1 ADDR; |
|
// |
// RAM write |
// |
always @(posedge CLK) |
if (EN && WE) |
mem[ADDR] <= #1 DI; |
|
endmodule |
|
module RAMB4_S8 ( |
CLK, |
RST, |
ADDR, |
DI, |
EN, |
WE, |
DO, |
); |
|
parameter dw = 8; |
parameter aw = 9; |
|
input CLK, RST, EN, WE; |
input [dw-1:0] DI; |
output [dw-1:0] DO; |
input [aw-1:0] ADDR; |
|
reg [dw-1:0] mem [(1<<aw)-1:0]; // RAM content |
reg [aw-1:0] addr_reg; // RAM address register |
|
// |
// Data output drivers |
// |
assign DO = mem[addr_reg][dw-1:0]; |
|
// |
// RAM address register |
// |
always @(posedge CLK or posedge RST) |
if ( RST == 1'b1 ) |
addr_reg <= #1 {aw{1'b0}}; |
else if ( EN ) |
addr_reg <= #1 ADDR; |
|
// |
// RAM write |
// |
always @(posedge CLK) |
if (EN && WE) |
mem[ADDR] <= #1 DI; |
|
endmodule |
// |
// ~XILINX_RAMB4 |
// |
|
|
// |
// XILINX_RAM32X1D |
// |
module RAM32X1D ( |
DPO, |
SPO, |
A0, |
A1, |
A2, |
A3, |
A4, |
D, |
DPRA0, |
DPRA1, |
DPRA2, |
DPRA3, |
DPRA4, |
WCLK, |
WE |
); |
|
parameter dw = 1; |
parameter aw = 5; |
|
output DPO, SPO; |
input DPRA0, DPRA1, DPRA2, DPRA3, DPRA4; |
input A0, A1, A2, A3, A4; |
input D; |
input WCLK; |
input WE; |
|
reg [dw-1:0] mem [(1<<aw)-1:0]; // RAM content |
|
// |
// Data output drivers |
// |
assign DPO = mem[{DPRA4 , DPRA3 , DPRA2 , DPRA1 , DPRA0}][dw-1:0]; |
assign SPO = mem[{A4 , A3 , A2 , A1 , A0}][dw-1:0]; |
|
// |
// RAM write |
// |
always @(posedge WCLK) |
if (WE) |
mem[{A4 , A3 , A2 , A1 , A0}] <= #1 D; |
|
endmodule |
// |
// XILINX_RAM32X1D |
// |
|
|
// |
// USE_RAM16X1D_FOR_RAM32X1D |
// |
module RAM16X1D ( |
DPO, |
SPO, |
A0, |
A1, |
A2, |
A3, |
D, |
DPRA0, |
DPRA1, |
DPRA2, |
DPRA3, |
WCLK, |
WE |
); |
|
parameter dw = 1; |
parameter aw = 4; |
|
output DPO, SPO; |
input DPRA0, DPRA1, DPRA2, DPRA3; |
input A0, A1, A2, A3; |
input D; |
input WCLK; |
input WE; |
|
reg [dw-1:0] mem [(1<<aw)-1:0]; // RAM content |
|
// |
// Data output drivers |
// |
assign DPO = mem[{DPRA3 , DPRA2 , DPRA1 , DPRA0}][dw-1:0]; |
assign SPO = mem[{A3 , A2 , A1 , A0}][dw-1:0]; |
|
// |
// RAM write |
// |
always @(posedge WCLK) |
if (WE) |
mem[{A3 , A2 , A1 , A0}] <= #1 D; |
|
endmodule |
// |
// USE_RAM16X1D_FOR_RAM32X1D |
// |