Systemverilog中的双向分配

Systemverilog中的双向分配,verilog,system-verilog,assign,Verilog,System Verilog,Assign,我需要创建与inout引脚一起工作的mux块。 我的模块有n个输入和n个输出,我希望能够切换 在不同的输出之间 我目前面临的问题是,我需要用 我没有插针。因此,如果我的输出引脚向下拉,则 mux将看到这一点。这不适用于常见的assign语句,因为 它只能朝一个方向写。我尝试了alias语句,它 工作原理类似于双向赋值,但我不能将其与mux的if语句结合使用 我想做的是: alias net_out = (config) ? net1 : net2; 我创造了一个例子 提前感谢,, Patric

我需要创建与inout引脚一起工作的mux块。 我的模块有n个输入和n个输出,我希望能够切换 在不同的输出之间

我目前面临的问题是,我需要用 我没有插针。因此,如果我的输出引脚向下拉,则 mux将看到这一点。这不适用于常见的assign语句,因为 它只能朝一个方向写。我尝试了alias语句,它 工作原理类似于双向赋值,但我不能将其与mux的if语句结合使用

我想做的是:

alias net_out = (config) ? net1 : net2;
我创造了一个例子

提前感谢,,
Patrick

您可以使用双向
tran
原语,这正是在MOS硬件中实现这一点的方式

tranif1(net_out, net1, config);
tranif0(net_out, net2, config);
如果你想在硬件上做到这一点,这必须是你的技术所支持的。大多数FPGA不支持这一点

但是,如果此
config
信号是一个参数而不是变量,则可以将
alias
语句与generate if一起使用

if(config)
  alias net_out = net1;
else
  alias net_out = net2;

您可以使用双向
tran
原语,这正是在MOS硬件中实现这一点的方式

tranif1(net_out, net1, config);
tranif0(net_out, net2, config);
如果你想在硬件上做到这一点,这必须是你的技术所支持的。大多数FPGA不支持这一点

但是,如果此
config
信号是一个参数而不是变量,则可以将
alias
语句与generate if一起使用

if(config)
  alias net_out = net1;
else
  alias net_out = net2;

依我看,你的问题和你的例子都不能清楚地解释你试图解决的问题。这意味着“输入”引脚外壳看到了吗?怎样?在您的示例中,您可以将'in1'与'out2'一起驱动,以获得tb代码中的'x'。你为什么不这么做?你能详细说明一下吗?x只在输出端可见,在输入端不可见。如果是双向连接,x也应在输入引脚处可见。示例中的代码是单向的,您在输入端看不到x。这是双向总线的示例。按照我的口味,您的问题和示例都没有清楚地解释您试图解决的问题。这意味着“输入”引脚外壳看到了吗?怎样?在您的示例中,您可以将'in1'与'out2'一起驱动,以获得tb代码中的'x'。你为什么不这么做?你能详细说明一下吗?x只在输出端可见,在输入端不可见。如果是双向连接,x也应在输入引脚处可见。示例中的代码是单向的,在输入端看不到x。