mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 09:40:10 +00:00
ЛР6. Обновление тб
Для проверки реализации stall-а, используется иерархическое подключение. Оно накладывает требования на нейминг нескольких сигналов, однако куда проще наложить требование на название одного контретного модуля.
This commit is contained in:
@@ -176,6 +176,7 @@ endmodule
|
||||
1. декодер
|
||||
2. дополнительные мультиплексоры и знакорасширители.
|
||||
3. Создайте в проекте новый `SystemSystemVerilog`-файл `riscv_unit.sv` и опишите в нем модуль `riscv_unit`, объединяющий ядро процессора (`riscv_core`) с памятями инструкция и данных.
|
||||
1. **При создании объекта модуля `riscv_core` в модуле `riscv_unit` вы должны использовать имя сущности `core` (т.е. создать объект в виде: `riscv_core core(...`)**
|
||||
3. После описания модуля, его необходимо проверить с помощью тестового окружения.
|
||||
1. Тестовое окружение находится [`здесь`](tb_riscv_unit.sv).
|
||||
2. Программа, которой необходимо проинициализировать память инструкций находится [`здесь`](program.txt).
|
||||
|
@@ -42,10 +42,12 @@ module tb_riscv_unit();
|
||||
end
|
||||
|
||||
stall_seq: assert property (
|
||||
@(posedge clk)
|
||||
disable iff ( !unit.mem_req )
|
||||
$past(unit.mem_req) |-> !$stable(unit.stall)
|
||||
|
||||
)else $error("\n================================================\nThe realisation of the STALL signal is INCORRECT\n================================================\n");
|
||||
@(posedge unit.core.clk_i) disable iff ( unit.core.rst_i )
|
||||
unit.core.mem_req_o |-> (unit.core.stall_i || $past(unit.core.stall_i))
|
||||
)else $error("\nincorrect implementation of stall signal\n");
|
||||
|
||||
stall_seq_fall: assert property (
|
||||
@(posedge unit.core.clk_i) disable iff ( unit.core.rst_i )
|
||||
(unit.core.stall_i) |=> !unit.core.stall_i
|
||||
)else $error("\nstall must fall exact one cycle after rising\n");
|
||||
endmodule
|
||||
|
Reference in New Issue
Block a user