verilog - 使用已实例化模块的信号
问题描述
我有一些块,由另一个人(core.sv 和其他人)设计,我无法修改,我需要两个不同文件的值。
我可以在(riscv_top_tb.sv 和 tracelog.sv)中实例化“core.sv”吗?
这是我的 TestBench 文件:riscv_top_tb.sv
genvar r;
generate
for (r = 1; r < 32; r++) begin : gen_mprf_assign
assign rv_vip_rf_if.x[r] = RISK_V.bancoDeRegistros.bancoReg[r];
end : gen_mprf_assign
endgenerate
//------------------------------------------------------------------------------
// Core instance
//------------------------------------------------------------------------------
core #(.RamSize(RamSize)) RISK_V
(
.CLK(CLK),
.RESET_N(RESET_N),
.IMEM_DIR(dir_rom),
.IMEM_DATA(data_rom),
.DMEM_DIR(dir_ram),
.DMEM_DATA_R(dataR_ram),
.DMEM_DATA_W(dataW_ram),
.I_READ(I_READ),
.D_READ(D_READ),
.D_WRITE(D_WRITE)
);
这是我的跟踪日志文件:tracelog.sv
core #(.RamSize(RamSize)) RISK_V
(
.CLK(CLK),
.RESET_N(RESET_N),
.IMEM_DIR(dir_rom),
.IMEM_DATA(data_rom),
.DMEM_DIR(dir_ram),
.DMEM_DATA_R(dataR_ram),
.DMEM_DATA_W(dataW_ram),
.I_READ(I_READ),
.D_READ(D_READ),
.D_WRITE(D_WRITE)
);
assign mprf_int_alias.INT_00_ZERO = '0;
assign mprf_int_alias.INT_01_RA = RISK_V.bancoDeRegistros.bancoReg[1];
assign mprf_int_alias.INT_02_SP = RISK_V.bancoDeRegistros.bancoReg[2];
如果这是不可能的,我应该怎么做?
解决方案
我不确定您要做什么,但听起来很像是您正在尝试将文件复制到 TB 和跟踪日志中。在这种情况下,你可以简单地做
`include "risk_v_instantiation.sv"
“risk_v_instantiation.sv”文件包含以下文本:
core #(.RamSize(RamSize)) RISK_V
(
.CLK(CLK),
.RESET_N(RESET_N),
.IMEM_DIR(dir_rom),
.IMEM_DATA(data_rom),
.DMEM_DIR(dir_ram),
.DMEM_DATA_R(dataR_ram),
.DMEM_DATA_W(dataW_ram),
.I_READ(I_READ),
.D_READ(D_READ),
.D_WRITE(D_WRITE)
);
您仍然必须处理可以添加到此文件中的信号声明。
推荐阅读
- python - Python, all combinations of element addition between two lists, with constraint
- python - 使用文本编辑和终端创建 os x 文件目录
- dart - 颤振将值设置为文本字段
- java -
尝试使用堆栈识别回文时出错? - spring - 同时使用@Document 和@Entity
- yocto - 是否可以在不构建整个核心的情况下对层进行 bitbake?
- python - 如何一次运行批处理 5 个文件,然后继续处理列表中的下 5 个文件?
- javafx - 任务有时会保持“锁定”状态
- checkbox - 如何在 Yii2 上的复选框中添加 onchange 侦听器以在更改时提交表单
- python-3.x - 杀死独立的python线程