2015-05-18 3 views
0

Я хотел бы иметь простой_объект, связанный с несколькими VHDL std_logic_vectors. В частности, я хочу подключить 10-битный простой порт к двум 5-битным шинам, чтобы они оба построили 10-битный вектор, с которым я могу писать от Specman.Как подключить simple_port к конкатенации сигналов VHDL?

Я пытался сделать это в hdl_path(), но при компиляции VHDL-заглушки у меня возникла ошибка компилятора VHDL.

keep port.hdl_path="A & B" 

где A и B 5 бит std_logic_vectors.

+0

В VHDL порт фактического является либо имени сигнала или кусочек его, статическое выражение или значение, полученное из функции преобразования параметров одного сигнала , По существу, он должен быть связан с одним именованным объектом класса сигнала. Вход в анализатор VHDL (компилятор) будет рассказывать. – user1155120

ответ

2

Возможность подключения simple_port к конкатенации сигналов HDL поддерживается при использовании verilog с использованием атрибута порта hdl_expression(). Это даже появляется в документе 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

Однако атрибут порт hdl_expression() не поддерживается в портах, которые имеют VHDL агент. Способ обойти это путем определения двух простых портов, каждый с соответствующим размером вектора, как показано в следующем примере:

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