【发布时间】:2021-02-02 12:54:23
【问题描述】:
假设有一个TOP模块,一个逻辑(logic1)和一个测试逻辑(logic2),如左图所示。
我想排除右图中的测试逻辑(所有verilog形式)。
首先,如果我们假设所有逻辑(逻辑和测试逻辑)都在 TOP 模块内部实例化,
verilog 代码的左侧是这样的。 (假设a->蓝色,b->黄色,c->红色,d->绿色,信号b穿透测试逻辑)
module TOP (
input a1,
input b1,
input c1,
output d1
);
wire b2;
wire c2;
logic1 U_logic(
.A (a1),
.B (b2),
.C (c2),
.D (d1),
);
logic2 U_testlogic(
.B (b2),
.C_IN (c1),
.C (c2),
);
endmodule
verilog 代码的右侧是这样的。
module TOP (
input a1,
input b1,
input c1,
output d1
);
logic1 U_logic(
.A (a1),
.B (b1),
.C (c1),
.D (d1),
);
endmodule
如果逻辑和测试逻辑的数量超过100,并且手动排除所有测试逻辑很难,如何使用Python代码自动处理(逻辑和测试逻辑的数量相同) ?
主要目的是将测试逻辑(logic2)的端口信号转换为逻辑(logic1)的端口信号,并去除测试逻辑。 [前任。 c2->c1(.C口信号->.C_IN口信号),b2->b1(穿透信号->特定输入),去掉逻辑2]
【问题讨论】:
-
你不是在
test_logic中缺少.B_IN (b1)吗? -
您的问题也很广泛,也缺少细节。根据您在此处显示的内容,答案很简单:解析
U_logic的接口并将端口x2更改为x1。问题是更换的真正标准是什么 -
不,但很好。实际上我认为 b2 信号由其他缩写实例连接(当实际 TOP 模块时)。你可以无视信号B,如果那会是一个客串的话。
-
正如我提到的,你也说过,标准将改变端口信号 * -> *_IN 。并删除测试逻辑。我想你明白了,但我发现使用 python 很难解析它。
-
同样,您的问题可能非常简单,这完全取决于附加条件。我的意思是,如果假设所有输入都作为您的示例
a、b等。并且测试逻辑的输出是前缀/后缀,比如让我们说a_test、b_test等然后您需要做的就是为界面的每一行提供类似re.sub(r"(w+)_test", "\1", line)的内容