如何将simple_port连接到VHDL信号的串联?

时间:2015-05-18 11:35:51

标签: vhdl specman

我希望将simple_port绑定到多个VHDL std_logic_vectors。 更具体地说,我想将一个10位简单端口连接到两个5位总线,这样它们都构建了一个10位向量,我可以从Specman写入。

我试图在hdl_path()中这样做,但在编译VHDL存根时我遇到了VHDL编译器错误。

   keep port.hdl_path="A & B"

其中A和B为5位std_logic_vectors

1 个答案:

答案 0 :(得分:2)

使用verilog时,使用hdl_expression()端口属性支持将simple_port连接到HDL信号串联的功能。 这甚至出现在hdl_expression()文档中:

http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:DocumentViewer;src=pubs;q=/sn_integ/sn_integ14.1/vlog_hdl_expr_simple.html

但是,具有VHDL代理的端口不支持hdl_expression()端口属性。 解决这个问题的方法是定义两个简单的端口,每个端口都有适当的矢量大小,如下例所示:

p0: out simple_port of uint(bits:5) is instance;
p1: out simple_port of uint(bits:5) is instance;
keep p0.hdl_path()=="bus1"; 
keep p1.hdl_path()=="bus2"; 

p_top:uint(bits:10);

event write_to_p_top is change(p_top)@sys.any;

on write_to_p_top {
        p1$=p_top[4:0];
        p2$=p_top[9:5]
    };

在您的代码中,您需要做的就是为顶级变量'p_top'指定值。 这将触发具有适当值的实际端口的写入序列。

注意:这可以使用simple_port列表

推广到任意数量的端口