首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于SystemVerilog $error或$warning的阿尔代克里维埃拉-PRO破裂模拟

基于SystemVerilog $error或$warning的阿尔代克里维埃拉-PRO破裂模拟
EN

Stack Overflow用户
提问于 2015-09-13 16:29:43
回答 1查看 252关注 0票数 1

是否可以配置Aldec Riviera PRO模拟器来破坏$error$warning SystemVerilog调用上的模拟?如果是,那又是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-14 09:06:35

我不认为将$error$warning提升到Riviera的断点上有一个特定的配置选项,尽管值得与他们的支持进行检查。你确实有几个选择:

  • $error替换为$fatal
  • 编写VPI模块,用自定义C代码重载系统任务

第二种选择如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
#include "vpi_user.h"

// System function overload on $warning and $error to stop sim
static int system_function_overload(char *userdata)
{
    vpiHandle systfref, args_iter, argh;
    struct t_vpi_value argval;
    const char *msg = "*** NO MESSAGE PROVIDED ***";

    // Obtain a handle to the argument list
    systfref = vpi_handle(vpiSysTfCall, NULL);
    args_iter = vpi_iterate(vpiArgument, systfref);

    // Pull out the string passed in as the first argument
    if (args_iter) {
        argh = vpi_scan(args_iter);
        argval.format = vpiStringVal;
        vpi_get_value(argh, &argval);
        vpi_free_object(args_iter);
        msg = argval.value.str;
    }

    vpi_printf("BREAK sim from %s:%d with msg %s\n",
                vpi_get_str(vpiFile, systfref),
                vpi_get(vpiLineNo, systfref),
                msg);
    vpi_control(vpiStop);
    return 0;
}

static void register_system_functions(void)
{
    s_vpi_systf_data tfData = { vpiSysTask, vpiSysTask };

    tfData.sizetf       = NULL;
    tfData.compiletf    = system_function_compiletf;
    tfData.calltf       = system_function_overload;
    tfData.user_data    = NULL;
    tfData.tfname       = "$warning";
    vpi_register_systf( &tfData );
    tfData.tfname       = "$error";
    vpi_register_systf( &tfData );
}

void (*vlog_startup_routines[])(void) = {
    register_system_functions,
    0
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32551892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档