首页 > 其他 > 详细

xrun 编译错误:ICDPAV

时间:2020-09-01 14:16:10      阅读:116      评论:0      收藏:0      [点我收藏+]

xrun遇到一个如下的编译错误

xmelab: *E,ICDPAV  (......) Illegal combination of driver and procedural assignment to variable dmp_oob_aout detected (output clockvar found in clocking block .....)

assign  signal_1  = signal_2;

 

代码的示例如下:

interface xyz (input logic clock);

    logic    signal_1;

    ......

    clocking master_cb @(posedge clock);

        output    signal_1;

        .....

    endclocking: master_cb

 

    clocking slave_cb @(posedge clock);

        input    signal_1;

        .....

    endclocking: slave_cb

 

    clocking  monitor_cb @(posedge clock);

         input   signal_1;

         .....

     endclocking: monitor_cb

 

     modport   slave_mp  ( input   signal_1 ...... );

     modport   master_mp (output   signal_1 ......);

endinterface: xyz

 

在interface的clocking block中的output变量(logic)一般只能用过程语句赋值(initial/always/for),如果使用连续赋值(assign)的话,就会报这个error

xrun会检查这个ICDPAV ,而ncsim不会检查。

用-warn_multiple_drive这个选项可以将该error降格为warning。

而且vcs也不会检查这个问题,这样的代码用vcs编译是没有问题的。

 

另外,如果在interface中申明变量用wire而不是logic,也不会报这个error。

这时候我的理解是变量被理解为net,这时候信号强度会起作用?

 

题外话,这是很少见的用vcs编译没有问题,xrun却有问题的,很多代码都是xrun编译OK,用vcs编译就fail

总体来说,vcs对代码的语法要求更严格。

xrun 编译错误:ICDPAV

原文:https://www.cnblogs.com/damian-gong/p/13595757.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!