首页 > 解决方案 > 使用已实例化模块的信号

问题描述

我有一些块,由另一个人(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];

如果这是不可能的,我应该怎么做?

标签: verilogsystem-verilog

解决方案


我不确定您要做什么,但听起来很像是您正在尝试将文件复制到 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)
    );

您仍然必须处理可以添加到此文件中的信号声明。


推荐阅读