Я хочу дать имя для сигналов в некоторых случаях явно. Это полезно в сильно параметризуемых кодах. Я понял, что настройка защищенного поля _name
может помочь в некоторых случаях. Но есть ли официальный способ?
Вот простой пример:
from myhdl import *
@block
def my_block(clock, reset, simple_signal, iface):
simple_signal._name = 'name_of_simple_signal'
iface.sig1._name = 'foo'
sig2 = iface.sig2
sig2._name = 'bar'
@always_seq(clock.posedge, reset)
def simple_seq():
iface.sig1.next = simple_signal
sig2.next = simple_signal
return instances()
class AwesomeInterface(dict):
def __init__(self, min=-2, max=2):
self.sig1 = Signal(intbv(0, min=min, max=max))
self.sig2 = Signal(intbv(0, min=min, max=max))
clock = Signal(bool(0))
reset = ResetSignal(0, active=1, isasync=False)
simple_signal = Signal(intbv(0)[32:])
iface = AwesomeInterface()
my_inst = my_block(clock, reset, simple_signal, iface)
my_inst .convert(hdl='Verilog')
Вот сгенерированный код Verilog:
// File: my_block.v
// Generated by MyHDL 0.11
// Date: Fri Apr 17 09:33:20 2020
`timescale 1ns/10ps
module my_block (
clock,
reset,
simple_signal,
foo,
bar
);
input clock;
input reset;
input [31:0] simple_signal;
output signed [1:0] foo;
reg signed [1:0] foo;
output signed [1:0] bar;
reg signed [1:0] bar;
always @(posedge clock) begin: MY_BLOCK_SIMPLE_SEQ
if (reset == 1) begin
bar <= 0;
foo <= 0;
end
else begin
foo <= simple_signal;
bar <= simple_signal;
end
end
endmodule
Есть ли официальный способ установить имя переменной, которая работает во всех случаях?