Предположим, есть два разных модуля (first_module
, second_module
).Оба модуля синхронизированы с тактовым сигналом.first_module
имеет следующую структуру:
module first_module(
input clk,
input reset_n,
input in1,
output reg out1,
output reg out2
);
//******** some verilog codes *********
endmodule
И second_module
имеет аналогичную структуру:
module second_module(
input clk,
input reset_n,
input in1,
input in2,
output reg out1
);
//******** some verilog codes *********
endmodule
И затем существует модуль с именем top_module
, который использует экземпляры обоих модулей:
module top_module(
input clk,
input reset_n,
input insignal1,
input insignal2,
output outsignal1,
output outsignal2
);
first_module fm1(
.clk(clk),
.reset_n(reset_n),
.in1(insignal1),
.out1(outsignal1),
.out2(<connection1>) // to be connected to the connection2
);
second_module sm1(
.clk(clk),
.reset_n(reset_n),
.in1(insignal2),
.in2(<connection2>), // to be connected to the connection1
.out1(outsignal2)
);
endmodule
Целью является подключение connection1
к connection2
.Насколько я знаю (если это правильно), мы можем либо объявить один провод (пусть его имя будет connection
) и заменить его <connection1>
и <connection2>
, либо мы можем объявить два разных провода connection1
и connection2
, затем:
assign connection2 = connection1;
и соедините их соответственно.
- По-разному ли синтезированы эти два метода? Если ответ положительный, я был бы рад, если бы вы могли объяснить, как они синтезируются.
- Если ответ отрицательный, может ли один из методов быть лучше другого в других условиях? Не с точки зрения строк кода или простоты, а с точки зрения синтеза.