Add: script
This commit is contained in:
parent
ae0d20b5e7
commit
93cb91f022
|
@ -5,7 +5,8 @@ if [ $# -lt 1 ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FILE_NAME=$1
|
TB_FILE_NAME=tb_$1
|
||||||
|
FILE_NAME=$(echo "$1" | sed 's/\([[:alnum:]_]*\)[-.].*/\1/')
|
||||||
|
|
||||||
echo 'puts "Simulation script for ModelSim"
|
echo 'puts "Simulation script for ModelSim"
|
||||||
' > ./sim/simu.do
|
' > ./sim/simu.do
|
||||||
|
@ -15,14 +16,14 @@ if [ ! -f "rtl/""$FILE_NAME"".v" ]; then
|
||||||
echo "Error: $FILE_NAME.v file not found!"
|
echo "Error: $FILE_NAME.v file not found!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [ ! -f "tb/tb_""$FILE_NAME"".v" ]; then
|
if [ ! -f "tb/""$TB_FILE_NAME"".v" ]; then
|
||||||
echo "Error: tb_$FILE_NAME.v file not found!"
|
echo "Error: ""$TB_FILE_NAME"".v file not found!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo 'vlib work
|
echo 'vlib work
|
||||||
vlog ../rtl/*.v
|
vlog ../rtl/*.v
|
||||||
vlog ../tb/tb_'"$FILE_NAME"'.v
|
vlog ../tb/'"$TB_FILE_NAME"'.v
|
||||||
' >> ./sim/simu.do
|
' >> ./sim/simu.do
|
||||||
|
|
||||||
echo 'vsim tb_'"$FILE_NAME"'
|
echo 'vsim tb_'"$FILE_NAME"'
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ ! command -v riscv32-unknown-elf-as &> /dev/null ] \
|
||||||
|
|| [ ! command -v riscv32-unknown-elf-ld &> /dev/null ] \
|
||||||
|
|| [ ! command -v riscv32-unknown-elf-objcopy &> /dev/null ]
|
||||||
|
then
|
||||||
|
echo "riscv32-unknown-elf could not be found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]
|
||||||
|
then
|
||||||
|
echo "Usage: $0 <file>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
NAME=$1
|
||||||
|
|
||||||
|
riscv32-unknown-elf-as -march=rv32i -mabi=ilp32 ${NAME}.S -o ${NAME}.o
|
||||||
|
riscv32-unknown-elf-ld -Ttext=0x1000 ${NAME}.o -o ${NAME}.elf
|
||||||
|
riscv32-unknown-elf-objcopy -O binary ${NAME}.elf ${NAME}.bin
|
|
@ -0,0 +1,77 @@
|
||||||
|
`timescale 1ns / 1ps
|
||||||
|
`include "tb_tools.vh"
|
||||||
|
|
||||||
|
module tb_risc_v_cpu ();
|
||||||
|
reg clk;
|
||||||
|
reg reset;
|
||||||
|
integer i;
|
||||||
|
wire [31:0] out;
|
||||||
|
|
||||||
|
/* File management variable */
|
||||||
|
integer bin_file_inputs;
|
||||||
|
reg [8:0] read_instruction_1;
|
||||||
|
reg [8:0] read_instruction_2;
|
||||||
|
reg [8:0] read_instruction_3;
|
||||||
|
reg [8:0] read_instruction_4;
|
||||||
|
|
||||||
|
risc_v_cpu risc_v_cpu (
|
||||||
|
.clock(clk),
|
||||||
|
.reset(reset),
|
||||||
|
.out(out)
|
||||||
|
);
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
/* Reset */
|
||||||
|
reset = 1'b1;
|
||||||
|
#10
|
||||||
|
reset = 1'b0;
|
||||||
|
|
||||||
|
clk = 1'b0;
|
||||||
|
|
||||||
|
/* Loading Test From File */
|
||||||
|
|
||||||
|
/* Loading Binary File */
|
||||||
|
bin_file_inputs = $fopen("/home/brice/Code/RISC-V_VERILOG/tb/test.bin", "r");
|
||||||
|
if (bin_file_inputs == 0) begin
|
||||||
|
$display("data_file handle was NULL");
|
||||||
|
$finish;
|
||||||
|
end
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (!$feof(bin_file_inputs))
|
||||||
|
begin
|
||||||
|
read_instruction_1 = $fgetc(bin_file_inputs);
|
||||||
|
read_instruction_2 = $fgetc(bin_file_inputs);
|
||||||
|
read_instruction_3 = $fgetc(bin_file_inputs);
|
||||||
|
read_instruction_4 = $fgetc(bin_file_inputs);
|
||||||
|
|
||||||
|
if (
|
||||||
|
read_instruction_1[8] != 1'b1 &&
|
||||||
|
read_instruction_2[8] != 1'b1 &&
|
||||||
|
read_instruction_3[8] != 1'b1 &&
|
||||||
|
read_instruction_4[8] != 1'b1
|
||||||
|
) begin
|
||||||
|
risc_v_cpu.uut_instruction.memory[i] = read_instruction_4[7:0];
|
||||||
|
risc_v_cpu.uut_instruction.memory[i+1] = read_instruction_3[7:0];
|
||||||
|
risc_v_cpu.uut_instruction.memory[i+2] = read_instruction_2[7:0];
|
||||||
|
risc_v_cpu.uut_instruction.memory[i+3] = read_instruction_1[7:0];
|
||||||
|
i = i + 4;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
`assert_no_wait("BUBBLE SORT - MEM[0]: 1", risc_v_cpu.uut_instruction.memory[0], 8'b00000000)
|
||||||
|
`assert_no_wait("BUBBLE SORT - MEM[0]: 1", risc_v_cpu.uut_instruction.memory[1], 8'b11000101)
|
||||||
|
`assert_no_wait("BUBBLE SORT - MEM[0]: 1", risc_v_cpu.uut_instruction.memory[2], 8'b10000111)
|
||||||
|
`assert_no_wait("BUBBLE SORT - MEM[0]: 1", risc_v_cpu.uut_instruction.memory[3], 8'b10110011)
|
||||||
|
|
||||||
|
for (i = 0; i < 1; i = i + 1) begin
|
||||||
|
`next_cycle
|
||||||
|
// run
|
||||||
|
end
|
||||||
|
|
||||||
|
// final test
|
||||||
|
`assert_no_wait("BUBBLE SORT - MEM[0]: 1", risc_v_cpu.memory.memory[0], 8'b00000000)
|
||||||
|
|
||||||
|
`end_message
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule : tb_risc_v_cpu
|
Loading…
Reference in New Issue